From ec2142bde61befb4882cea62baaba0af293af878 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 1 Jan 2014 22:15:59 +0100 Subject: [PATCH] QT/MP4 reader: don't special-case sample_size == 1 and empty sample_table Fixes #950. --- ChangeLog | 5 +++++ src/input/r_qtmp4.cpp | 2 +- tests/results.txt | 1 + tests/test-419mov_pcm_sample_size_1_sample_table_empty.rb | 5 +++++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100755 tests/test-419mov_pcm_sample_size_1_sample_table_empty.rb diff --git a/ChangeLog b/ChangeLog index d92f96d75..68d713380 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-01-01 Moritz Bunkus + + * mkvmerge: bug fix: Fixed reading uncompressed PCM audio tracks + from QuickTime/MP4 files in certain situations. Fixes #950. + 2013-12-31 Moritz Bunkus * mmg: enhancement: The »additional parts« dialog will now show diff --git a/src/input/r_qtmp4.cpp b/src/input/r_qtmp4.cpp index f087f5f26..34c9013e1 100644 --- a/src/input/r_qtmp4.cpp +++ b/src/input/r_qtmp4.cpp @@ -1817,7 +1817,7 @@ qtmp4_demuxer_c::update_tables(int64_t global_m_time_scale) { // workaround for fixed-size video frames (dv and uncompressed), but // also for audio with constant sample size - if (sample_table.empty() && sample_size) { + if (sample_table.empty() && (sample_size > 1)) { for (i = 0; i < s; ++i) { qt_sample_t sample; diff --git a/tests/results.txt b/tests/results.txt index d09f8aab3..dde214b70 100644 --- a/tests/results.txt +++ b/tests/results.txt @@ -264,3 +264,4 @@ T_415create_webm:c1447a8f67f47a0b2d8c21d4208a8f98-5e1abfc5e13a44989a6ff31e51e9ea T_416dts_in_mp4:77e4a560d93a9c1a1030318c07ee48e5-60d52627905d83b1e605119152d7bf4e:passed:20131218-231435:1.398112245 T_417mkvextract_tracks_at_end_of_file:b3bb67d316e20da12926d5c1d628f6e5:passed:20131229-122704:0.04690235 T_418ac3_frame_size_0:24f130019cb8781abe644d742c81487a:passed:20131230-233047:4.297033387 +T_419mov_pcm_sample_size_1_sample_table_empty:e8eed0fe262c9acdf877c011cb96e788:passed:20140101-221519:0.052961521 diff --git a/tests/test-419mov_pcm_sample_size_1_sample_table_empty.rb b/tests/test-419mov_pcm_sample_size_1_sample_table_empty.rb new file mode 100755 index 000000000..215e022f0 --- /dev/null +++ b/tests/test-419mov_pcm_sample_size_1_sample_table_empty.rb @@ -0,0 +1,5 @@ +#!/usr/bin/ruby -w + +# T_419mov_pcm_sample_size_1_sample_table_empty +describe "mkvmerge / MOV with PCM, sample_size == 1 and empty sample_table" +test_merge "-D data/pcm/sample-size-1-sample-table-empty.mov"