mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-12-25 04:11:44 +00:00
AC3 packetizer: set changed track headers after reading the first AC3 packet
This causes the channel and sampling frequency information to be updated from the bitstream as well, e.g. if the source container provided invalid values. The default duration has to be re-calculated as well.
This commit is contained in:
parent
e6caab27e7
commit
67bba78d14
@ -1,3 +1,10 @@
|
||||
2014-02-15 Moritz Bunkus <moritz@bunkus.org>
|
||||
|
||||
* mkvmerge: bug fix: The AC3 packetizer will re-derive the
|
||||
sampling frequency and the number of channels from the
|
||||
bitstream. This way obviously invalid information from the source
|
||||
container like a sampling frequency of 0 Hz will be fixed.
|
||||
|
||||
2014-02-05 Moritz Bunkus <moritz@bunkus.org>
|
||||
|
||||
* mkvmerge: enhancements: AVI reader: audio chunks with obvious
|
||||
|
@ -163,17 +163,23 @@ ac3_packetizer_c::adjust_header_values(ac3::frame_c &ac3_header) {
|
||||
if (0 != m_packetno)
|
||||
return;
|
||||
|
||||
m_first_ac3_header = ac3_header;
|
||||
if (m_first_ac3_header.m_sample_rate != ac3_header.m_sample_rate)
|
||||
set_audio_sampling_freq((float)ac3_header.m_sample_rate);
|
||||
|
||||
if (m_first_ac3_header.is_eac3())
|
||||
if (m_first_ac3_header.m_channels != ac3_header.m_channels)
|
||||
set_audio_channels(ac3_header.m_channels);
|
||||
|
||||
if (ac3_header.is_eac3())
|
||||
set_codec_id(MKV_A_EAC3);
|
||||
|
||||
if (1536 != m_first_ac3_header.m_samples) {
|
||||
m_s2tc.set(1000000000ll * m_first_ac3_header.m_samples, m_first_ac3_header.m_sample_rate);
|
||||
if ((1536 != ac3_header.m_samples) || (m_first_ac3_header.m_sample_rate != ac3_header.m_sample_rate)) {
|
||||
m_s2tc.set(1000000000ll * ac3_header.m_samples, ac3_header.m_sample_rate);
|
||||
m_single_packet_duration = 1 * m_s2tc;
|
||||
set_track_default_duration(m_single_packet_duration);
|
||||
}
|
||||
|
||||
m_first_ac3_header = ac3_header;
|
||||
|
||||
rerender_track_headers();
|
||||
}
|
||||
|
||||
|
@ -122,7 +122,7 @@ T_273pgssup:5221af5f55b59427f095737dfa70e12d-5221af5f55b59427f095737dfa70e12d-db
|
||||
T_274h264_in_nalus_in_avi:95df132ed351cb715432aeca9b9f7f94:passed:20100629-090725:0.046335705
|
||||
T_275srt_mixed_eol_styles:44c2aeed77f2d4b506461f3c469770ab:passed:20100706-090848:0.206637187
|
||||
T_276h264_without_nalus_in_avi:6d9df8a7261d5964c1e331c1a05f87bb:passed:20100706-224102:0.331406412
|
||||
T_277display_dimensions_fixing_aspect_ratio_usage:73cc005a16e9e10ccf0a35a7e5dbbfc8-782d35c5cf1d29e553aa874522490bc7-c981cff9e12162dd270f94727296f7cd:passed:20100718-201627:2.064719998
|
||||
T_277display_dimensions_fixing_aspect_ratio_usage:73cc005a16e9e10ccf0a35a7e5dbbfc8-782d35c5cf1d29e553aa874522490bc7-c981cff9e12162dd270f94727296f7cd:failed:20100718-201627:2.064719998
|
||||
T_278turning_off_compression:a8a5753017e1b72afe45f08537dbed07-a8a5753017e1b72afe45f08537dbed07:passed:20100728-121842:0.662304078
|
||||
T_279packet_queue_not_empty_ivf:00ca3f89058edd776e06a215ad00c81e:passed:20100805-230439:0.107456716
|
||||
T_280replace_one_byte_with_ebmlvoid:9cfa2af2712e48f43f35497f4e9bec24:passed:20100824-201249:0.21509374
|
||||
@ -267,3 +267,4 @@ T_418ac3_frame_size_0:24f130019cb8781abe644d742c81487a:passed:20131230-233047:4.
|
||||
T_419mov_pcm_sample_size_1_sample_table_empty:e8eed0fe262c9acdf877c011cb96e788:passed:20140101-221519:0.052961521
|
||||
T_420matroska_attachment_no_fileuid:e4bdf15fe633ad37e6b7860bbb8f7a67-552b6bfab098f531c54131dfc76eadaa-6fe0517dd519d6adf37c0769354b8ed6:passed:20140111-200918:0.092631489
|
||||
T_421svq3_from_mov:4947c2a51a12097cf2b3d002eff2e9df:passed:20140112-124559:0.195365669
|
||||
T_422ac3_rederive_track_parameters_from_bitstream:7cf40379f451c604c8b6fce1f66b52b3:passed:20140215-162358:0.231506136
|
||||
|
5
tests/test-422ac3_rederive_track_parameters_from_bitstream.rb
Executable file
5
tests/test-422ac3_rederive_track_parameters_from_bitstream.rb
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/ruby -w
|
||||
|
||||
# T_422ac3_rederive_track_parameters_from_bitstream
|
||||
describe "mkvmerge / AC3: re-derive track parameters from the bitstream"
|
||||
test_merge "data/ac3/wrong-sampling-frequency-in-header.mkv", :args => "--no-video"
|
Loading…
Reference in New Issue
Block a user