+ if ( i > 1 && p[i] == 1 && (p[i+1] == ASDCP::MPEG2::SEQ_START || p[i+1] == ASDCP::MPEG2::PIC_START) )
+ {
+ type = ESS_MPEG2_VES;
+ }
+ else if ( memcmp(FB.RoData(), ASDCP::JP2K::Magic, sizeof(ASDCP::JP2K::Magic)) == 0 )
+ {
+ type = ESS_JPEG_2000;
+ }
+ else if(memcmp(FB.RoData(), AS_02::ACES::Magic, sizeof(AS_02::ACES::Magic)) == 0)
+ {
+ type = ESS_AS02_ACES;
+ }
+ else if ( std::string((const char*)FB.RoData() + 8, 4) == "WAVE" )
+ {
+ if ( std::string((const char*)FB.RoData(), 4) == "RIFF" )
+ {
+ result = WavHeader.ReadFromBuffer(FB.RoData(), read_count, &data_offset);
+
+ if ( ASDCP_SUCCESS(result) )
+ {
+ switch ( WavHeader.samplespersec )
+ {
+ case 48000: type = ESS_PCM_24b_48k; break;
+ case 96000: type = ESS_PCM_24b_96k; break;
+ default:
+ DefaultLogSink().Error("Unexpected sample rate: %d\n", WavHeader.samplespersec);
+ result = RESULT_FORMAT;
+ }
+ }
+ }
+ else
+ {
+ result = RF64Header.ReadFromBuffer(FB.RoData(), read_count, &data_offset);
+
+ if ( ASDCP_SUCCESS(result) )
+ {
+ switch ( RF64Header.samplespersec )
+ {
+ case 48000: type = ESS_PCM_24b_48k; break;
+ case 96000: type = ESS_PCM_24b_96k; break;
+ default:
+ DefaultLogSink().Error("Unexpected sample rate: %d\n", WavHeader.samplespersec);
+ result = RESULT_FORMAT;
+ }
+ }
+ }
+ }
+ else if ( ASDCP_SUCCESS(AIFFHeader.ReadFromBuffer(FB.RoData(), read_count, &data_offset)) )
+ {
+ type = ESS_PCM_24b_48k;
+ }
+ else if ( string_is_xml(FB) )
+ {
+ type = ESS_TIMED_TEXT;
+ }
+ else if ( ASDCP::ATMOS::IsDolbyAtmos(filename) )
+ {
+ type = ESS_DCDATA_DOLBY_ATMOS;
+ }