From 1a6286e778bbccfe8cbbf6b1864f89cb22139310 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Sun, 21 Oct 2018 22:14:16 +0200 Subject: [PATCH] AV1 parser: fix bug in sequence header parser The two header fields `delta_frame_id_length_minus2` and `additional_frame_id_length_minus1` are only present if `reduced_still_picture_header` is not set but `frame_id_numbers_present_flag` is. Part of the fix for #2410. --- NEWS.md | 9 +++++++++ src/common/av1.cpp | 3 ++- tests/results.txt | 6 +++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index f082cb3f7..886ad6684 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,12 @@ +# Version ? + +## Bug fixes + +* mkvmerge: AV1 parser: fixed an error in the sequence header parser if + neither the `reduced_still_picture_header` nor the + `frame_id_numbers_present_flag` is set. Part of the fix for #2410. + + # Version 28.0.0 "Voice In My Head" 2018-10-20 ## New features and enhancements diff --git a/src/common/av1.cpp b/src/common/av1.cpp index ff807bbf5..6c7969aff 100644 --- a/src/common/av1.cpp +++ b/src/common/av1.cpp @@ -316,7 +316,8 @@ parser_c::parse_sequence_header_obu(mtx::bits::reader_c &r) { if (!p->reduced_still_picture_header) { p->frame_id_numbers_present_flag = r.get_bit(); - r.skip_bits(4 + 3); // delta_frame_id_length_minus2, additional_frame_id_length_minus1 + if (p->frame_id_numbers_present_flag) + r.skip_bits(4 + 3); // delta_frame_id_length_minus2, additional_frame_id_length_minus1 } r.skip_bits(3); // use_12x128_superblock, enable_filter_intra, enable_intra_edge_filter diff --git a/tests/results.txt b/tests/results.txt index 58a32b697..c02ddc207 100644 --- a/tests/results.txt +++ b/tests/results.txt @@ -483,7 +483,7 @@ T_634dialog_normalization_gain_removal:9a438e39ffa72c89a1e9ed940ecf6a0a-5c7588e4 T_635propedit_update_doc_type_version:181040794c0287a418f558e46d598b7d-1+1-4+1:passed:20180310-135142:0.138196579 T_636flac_with_id3_tags:c8b37897660d88038c4e6f401fe6c94c:passed:20180310-182917:0.204964643 T_637mp4_8_channels_in_track_headers_but_7_in_codec_specific_config:true:passed:20180322-222201:0.012853536 -T_638av1_ivf_webm:8bc25389c16a33b9f812f89d49630c07-c1050864ce2c49a80ef39bee50da870b-2ea0d83015922f0798c502c4b3a4c1f6-520a971c2fafd9a00aa56ccab0a9aa90-d12b160c887cb4061535dc0467bf9c1b-2290cefb5b6e37c5bd927ff84326fac3:passed:20180401-164905:0.057717643 +T_638av1_ivf_webm:d429eca5062c7441d855fee9361c2499-c1050864ce2c49a80ef39bee50da870b-96396dd41a44c98f3fa1d586082a83b5-533a689b8739705a879e7a4f53aeea7d-d12b160c887cb4061535dc0467bf9c1b-3a85cfc4bf6606def216fc821542e72b:passed:20180401-164905:0.057717643 T_639vobsub_missing_duration_in_matroska:1da346761ddede951b1f2f5f11cd3f69:passed:20180401-193013:0.014669303 T_640no_date:20fbba5a79a436caa36582e7675c1038:passed:20180427-231324:0.011724657 T_641keep_display_unit:f3c2b4b8f52f2d29025052a6be092451-3+16x9-2392d8546623ab6265c1cdbc1cab4739-0+123x456:passed:20180609-123022:0.062045824 @@ -503,6 +503,6 @@ T_654text_subtitles_without_duration:ada9aaa1ae07ff6b20fb0618304d0820:passed:201 T_655mpeg_ts_teletext_subs_long_gap_until_end_of_display:6027ec285e5c03ec7fa84afea1d57f56:passed:20181005-212927:0.513727609 T_656mpeg_ts_bad_utf8_in_service_names2:544606778297772ea61146bdbd8f1186:passed:20181006-122753:0.020246407 T_657av1_from_mp4:08895840fd959294a31f7cbba8b2d9dd:passed:20181007-220646:0.040201275 -T_658X_av1:20347e54bac4d1b0fe82d1f2f6c17c4d+a111f92f14bf3e977bc225fb5c64414b:passed:20181007-225807:0.019174721 -T_659av1_timing_info_in_bitstream:e010fac10e3d5cbfe317759772e30632-4ca13d74c145c773a6868a1165b0293a:passed:20181007-235434:0.016544501 +T_658X_av1:20347e54bac4d1b0fe82d1f2f6c17c4d+2bdc874816ea1e781a533c2fc64fbe70:passed:20181007-225807:0.019174721 +T_659av1_timing_info_in_bitstream:a2b134d6d35b3011926d95b90667b606-55cc6918680c4e1eaf59ca6ccd3f93dd:passed:20181007-235434:0.016544501 T_660propedit_replace_one_byte_with_ebmlvoid_all_surrounding_elements_coded_size_length_8:a16d7aa5d00d120d20c4c3c718e1b00b:passed:20181020-160502:0.0