@@ -1078,6 +1078,35 @@ fn read_esds_aac_type5() {
1078
1078
assert_eq ! ( es. decoder_specific_data, aac_dc_descriptor) ;
1079
1079
}
1080
1080
1081
+ #[ test]
1082
+ fn read_esds_mpeg2_aac_lc ( ) {
1083
+ // Recognize MPEG-2 AAC LC (ISO 13818-7) object type as AAC.
1084
+ // Extracted from BMO #1722497 sdasdasdasd_001.mp4 using Bento4.
1085
+ // "mp4extract --payload-only moov/trak[1]/mdia/minf/stbl/stsd/mp4a/esds sdasdasdasd_001.mp4 /dev/stdout | xxd -i -c 15"
1086
+ let aac_esds = vec ! [
1087
+ 0x03 , 0x19 , 0x00 , 0x00 , 0x00 , 0x04 , 0x11 , 0x67 , 0x15 , 0x00 , 0x02 , 0x38 , 0x00 , 0x01 , 0x0f ,
1088
+ 0xd0 , 0x00 , 0x00 , 0xf5 , 0x48 , 0x05 , 0x02 , 0x13 , 0x90 , 0x06 , 0x01 , 0x02 ,
1089
+ ] ;
1090
+ let aac_dc_descriptor = & aac_esds[ 22 ..24 ] ;
1091
+
1092
+ let mut stream = make_box ( BoxSize :: Auto , b"esds" , |s| {
1093
+ s. B32 ( 0 ) // reserved
1094
+ . append_bytes ( aac_esds. as_slice ( ) )
1095
+ } ) ;
1096
+ let mut iter = super :: BoxIter :: new ( & mut stream) ;
1097
+ let mut stream = iter. next_box ( ) . unwrap ( ) . unwrap ( ) ;
1098
+
1099
+ let es = super :: read_esds ( & mut stream) . unwrap ( ) ;
1100
+
1101
+ assert_eq ! ( es. audio_codec, super :: CodecType :: AAC ) ;
1102
+ assert_eq ! ( es. audio_object_type, Some ( 2 ) ) ;
1103
+ assert_eq ! ( es. extended_audio_object_type, None ) ;
1104
+ assert_eq ! ( es. audio_sample_rate, Some ( 22050 ) ) ;
1105
+ assert_eq ! ( es. audio_channel_count, Some ( 2 ) ) ;
1106
+ assert_eq ! ( es. codec_esds, aac_esds) ;
1107
+ assert_eq ! ( es. decoder_specific_data, aac_dc_descriptor) ;
1108
+ }
1109
+
1081
1110
#[ test]
1082
1111
fn read_stsd_mp4v ( ) {
1083
1112
let mp4v = vec ! [
0 commit comments