@@ -1060,6 +1060,35 @@ fn read_esds_aac_type5() {
1060
1060
assert_eq ! ( es. decoder_specific_data, aac_dc_descriptor) ;
1061
1061
}
1062
1062
1063
+ #[ test]
1064
+ fn read_esds_mpeg2_aac_lc ( ) {
1065
+ // Recognize MPEG-2 AAC LC (ISO 13818-7) object type as AAC.
1066
+ // Extracted from BMO #1722497 sdasdasdasd_001.mp4 using Bento4.
1067
+ // "mp4extract --payload-only moov/trak[1]/mdia/minf/stbl/stsd/mp4a/esds sdasdasdasd_001.mp4 /dev/stdout | xxd -i -c 15"
1068
+ let aac_esds = vec ! [
1069
+ 0x03 , 0x19 , 0x00 , 0x00 , 0x00 , 0x04 , 0x11 , 0x67 , 0x15 , 0x00 , 0x02 , 0x38 , 0x00 , 0x01 , 0x0f ,
1070
+ 0xd0 , 0x00 , 0x00 , 0xf5 , 0x48 , 0x05 , 0x02 , 0x13 , 0x90 , 0x06 , 0x01 , 0x02 ,
1071
+ ] ;
1072
+ let aac_dc_descriptor = & aac_esds[ 22 ..24 ] ;
1073
+
1074
+ let mut stream = make_box ( BoxSize :: Auto , b"esds" , |s| {
1075
+ s. B32 ( 0 ) // reserved
1076
+ . append_bytes ( aac_esds. as_slice ( ) )
1077
+ } ) ;
1078
+ let mut iter = super :: BoxIter :: new ( & mut stream) ;
1079
+ let mut stream = iter. next_box ( ) . unwrap ( ) . unwrap ( ) ;
1080
+
1081
+ let es = super :: read_esds ( & mut stream) . unwrap ( ) ;
1082
+
1083
+ assert_eq ! ( es. audio_codec, super :: CodecType :: AAC ) ;
1084
+ assert_eq ! ( es. audio_object_type, Some ( 2 ) ) ;
1085
+ assert_eq ! ( es. extended_audio_object_type, None ) ;
1086
+ assert_eq ! ( es. audio_sample_rate, Some ( 22050 ) ) ;
1087
+ assert_eq ! ( es. audio_channel_count, Some ( 2 ) ) ;
1088
+ assert_eq ! ( es. codec_esds, aac_esds) ;
1089
+ assert_eq ! ( es. decoder_specific_data, aac_dc_descriptor) ;
1090
+ }
1091
+
1063
1092
#[ test]
1064
1093
fn read_stsd_mp4v ( ) {
1065
1094
let mp4v = vec ! [
0 commit comments