File tree 2 files changed +23
-1
lines changed
2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -4517,8 +4517,11 @@ fn read_mvhd<T: Read>(src: &mut BMFFBox<T>) -> Result<MovieHeaderBox> {
4517
4517
}
4518
4518
_ => unreachable ! ( "Should have returned Status::MvhdBadVersion" ) ,
4519
4519
} ;
4520
- // Skip remaining fields.
4520
+ // Skip remaining valid fields.
4521
4521
skip ( src, 80 ) ?;
4522
+
4523
+ // Padding could be added in some contents.
4524
+ skip_box_remain ( src) ?;
4522
4525
Ok ( MovieHeaderBox {
4523
4526
timescale,
4524
4527
duration,
Original file line number Diff line number Diff line change @@ -423,6 +423,25 @@ fn read_mvhd_unknown_duration() {
423
423
assert_eq ! ( parsed. duration, :: std:: u64 :: MAX ) ;
424
424
}
425
425
426
+ #[ test]
427
+ fn read_mvhd_v0_trailing_data ( ) {
428
+ let mut stream = make_fullbox ( BoxSize :: Short ( 110 ) , b"mvhd" , 0 , |s| {
429
+ s. B32 ( 0 )
430
+ . B32 ( 0 )
431
+ . B32 ( 1234 )
432
+ . B32 ( 5678 )
433
+ . append_repeated ( 0 , 80 )
434
+ . B16 ( 0 )
435
+ } ) ;
436
+ let mut iter = super :: BoxIter :: new ( & mut stream) ;
437
+ let mut stream = iter. next_box ( ) . unwrap ( ) . unwrap ( ) ;
438
+ assert_eq ! ( stream. head. name, BoxType :: MovieHeaderBox ) ;
439
+ assert_eq ! ( stream. head. size, 110 ) ;
440
+ let parsed = super :: read_mvhd ( & mut stream) . unwrap ( ) ;
441
+ assert_eq ! ( parsed. timescale, 1234 ) ;
442
+ assert_eq ! ( parsed. duration, 5678 ) ;
443
+ }
444
+
426
445
#[ test]
427
446
fn read_vpcc_version_0 ( ) {
428
447
let data_length = 12u16 ;
You can’t perform that action at this time.
0 commit comments