Merged 2362

This commit is contained in:
Moritz Bunkus 2004-10-16 18:31:13 +00:00
parent 96ccead7aa
commit 84a99509bd
4 changed files with 67 additions and 57 deletions

View File

@ -1,5 +1,8 @@
2004-10-16 Moritz Bunkus <moritz@bunkus.org>
* mkvmerge: bug fix: If LFE is on for DTS then the number of
channels is one more than what the DTS frame header says.
* mkvmerge: bug fix: Timecodes for Vorbis were wrong on rare
occasions (when reading laced Vorbis from a Matroska file and
changing the lacing, e.g. when splitting for the second and all

View File

@ -413,3 +413,59 @@ dts_14_to_dts_16(const unsigned short *src,
src += 8;
}
}
bool
operator!=(const dts_header_t &l,
const dts_header_t &r) {
//if (l.frametype != r.frametype) return true;
//if (l.deficit_sample_count != r.deficit_sample_count) return true;
if (l.crc_present != r.crc_present)
return true;
if (l.num_pcm_sample_blocks != r.num_pcm_sample_blocks)
return true;
if (l.frame_byte_size != r.frame_byte_size)
return true;
if (l.audio_channels != r.audio_channels)
return true;
if (l.core_sampling_frequency != r.core_sampling_frequency)
return true;
if (l.transmission_bitrate != r.transmission_bitrate)
return true;
if (l.embedded_down_mix != r.embedded_down_mix)
return true;
if (l.embedded_dynamic_range != r.embedded_dynamic_range)
return true;
if (l.embedded_time_stamp != r.embedded_time_stamp)
return true;
if (l.auxiliary_data != r.auxiliary_data)
return true;
if (l.hdcd_master != r.hdcd_master)
return true;
if (l.extension_audio_descriptor != r.extension_audio_descriptor)
return true;
if (l.extended_coding != r.extended_coding)
return true;
if (l.audio_sync_word_in_sub_sub != r.audio_sync_word_in_sub_sub)
return true;
if (l.lfe_type != r.lfe_type)
return true;
if (l.predictor_history_flag != r.predictor_history_flag)
return true;
if (l.multirate_interpolator != r.multirate_interpolator)
return true;
if (l.encoder_software_revision != r.encoder_software_revision)
return true;
if (l.copy_history != r.copy_history)
return true;
if (l.source_pcm_resolution != r.source_pcm_resolution)
return true;
if (l.source_surround_in_es != r.source_surround_in_es)
return true;
if (l.front_sum_difference != r.front_sum_difference)
return true;
if (l.surround_sum_difference != r.surround_sum_difference)
return true;
if (l.dialog_normalization_gain != r.dialog_normalization_gain)
return true;
return false;
}

View File

@ -173,4 +173,7 @@ inline double get_dts_packet_length_in_nanoseconds(const struct dts_header_s
void MTX_DLL_API dts_14_to_dts_16(const unsigned short *src,
unsigned long srcwords,
unsigned short *dst);
bool MTX_DLL_API operator!=(const dts_header_t &l, const dts_header_t &r);
#endif // __DTSCOMMON_H

View File

@ -26,62 +26,6 @@
using namespace libmatroska;
bool
operator!=(const dts_header_t &l,
const dts_header_t &r) {
//if (l.frametype != r.frametype) return true;
//if (l.deficit_sample_count != r.deficit_sample_count) return true;
if (l.crc_present != r.crc_present)
return true;
if (l.num_pcm_sample_blocks != r.num_pcm_sample_blocks)
return true;
if (l.frame_byte_size != r.frame_byte_size)
return true;
if (l.audio_channels != r.audio_channels)
return true;
if (l.core_sampling_frequency != r.core_sampling_frequency)
return true;
if (l.transmission_bitrate != r.transmission_bitrate)
return true;
if (l.embedded_down_mix != r.embedded_down_mix)
return true;
if (l.embedded_dynamic_range != r.embedded_dynamic_range)
return true;
if (l.embedded_time_stamp != r.embedded_time_stamp)
return true;
if (l.auxiliary_data != r.auxiliary_data)
return true;
if (l.hdcd_master != r.hdcd_master)
return true;
if (l.extension_audio_descriptor != r.extension_audio_descriptor)
return true;
if (l.extended_coding != r.extended_coding)
return true;
if (l.audio_sync_word_in_sub_sub != r.audio_sync_word_in_sub_sub)
return true;
if (l.lfe_type != r.lfe_type)
return true;
if (l.predictor_history_flag != r.predictor_history_flag)
return true;
if (l.multirate_interpolator != r.multirate_interpolator)
return true;
if (l.encoder_software_revision != r.encoder_software_revision)
return true;
if (l.copy_history != r.copy_history)
return true;
if (l.source_pcm_resolution != r.source_pcm_resolution)
return true;
if (l.source_surround_in_es != r.source_surround_in_es)
return true;
if (l.front_sum_difference != r.front_sum_difference)
return true;
if (l.surround_sum_difference != r.surround_sum_difference)
return true;
if (l.dialog_normalization_gain != r.dialog_normalization_gain)
return true;
return false;
}
dts_packetizer_c::dts_packetizer_c(generic_reader_c *nreader,
const dts_header_t &dtsheader,
track_info_c *nti)
@ -212,7 +156,11 @@ void
dts_packetizer_c::set_headers() {
set_codec_id(MKV_A_DTS);
set_audio_sampling_freq((float)first_header.core_sampling_frequency);
set_audio_channels(first_header.audio_channels);
if ((first_header.lfe_type == dts_header_t::lfe_64) ||
(first_header.lfe_type == dts_header_t::lfe_128))
set_audio_channels(first_header.audio_channels + 1);
else
set_audio_channels(first_header.audio_channels);
generic_packetizer_c::set_headers();
}