mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2025-02-26 08:22:31 +00:00
Don't tell DTS packetizer first frame is not available if it actually is
Fix for bug 705.
This commit is contained in:
parent
c133003e00
commit
26565c724f
@ -1,3 +1,10 @@
|
||||
2012-01-23 Moritz Bunkus <moritz@bunkus.org>
|
||||
|
||||
* mkvmerge: bug fix: Appending AVI, Matroska or MPEG program
|
||||
stream files with DTS audio tracks will not result in a warning
|
||||
that the appended DTS tracks might not be compatible. Fix for bug
|
||||
705.
|
||||
|
||||
2012-01-13 Moritz Bunkus <moritz@bunkus.org>
|
||||
|
||||
* mkvextract: bug fix for the "timecodes_v2" mode: mkvextract will
|
||||
|
@ -681,7 +681,7 @@ avi_reader_c::create_dts_packetizer(int aid) {
|
||||
|
||||
AVI_set_audio_position_index(m_avi, audio_position);
|
||||
|
||||
return new dts_packetizer_c(this, m_ti, dtsheader, true);
|
||||
return new dts_packetizer_c(this, m_ti, dtsheader);
|
||||
|
||||
} catch (...) {
|
||||
mxerror_tid(m_ti.m_fname, aid + 1, Y("Could not find valid DTS headers in this track's first frames.\n"));
|
||||
|
@ -1559,7 +1559,7 @@ kax_reader_c::create_dts_audio_packetizer(kax_track_t *t,
|
||||
if (-1 == position)
|
||||
throw false;
|
||||
|
||||
set_track_packetizer(t, new dts_packetizer_c(this, nti, dtsheader, true));
|
||||
set_track_packetizer(t, new dts_packetizer_c(this, nti, dtsheader));
|
||||
show_packetizer_info(t->tnum, t->ptzr_ptr);
|
||||
|
||||
} catch (...) {
|
||||
|
@ -1166,7 +1166,7 @@ mpeg_ps_reader_c::create_packetizer(int64_t id) {
|
||||
show_packetizer_info(id, PTZR(track->ptzr));
|
||||
|
||||
} else if (FOURCC('D', 'T', 'S', ' ') == track->fourcc) {
|
||||
track->ptzr = add_packetizer(new dts_packetizer_c(this, m_ti, track->dts_header, true));
|
||||
track->ptzr = add_packetizer(new dts_packetizer_c(this, m_ti, track->dts_header));
|
||||
show_packetizer_info(id, PTZR(track->ptzr));
|
||||
|
||||
} else if (FOURCC('T', 'R', 'H', 'D') == track->fourcc) {
|
||||
|
@ -24,13 +24,11 @@ using namespace libmatroska;
|
||||
|
||||
dts_packetizer_c::dts_packetizer_c(generic_reader_c *p_reader,
|
||||
track_info_c &p_ti,
|
||||
const dts_header_t &dtsheader,
|
||||
bool get_first_header_later)
|
||||
const dts_header_t &dtsheader)
|
||||
: generic_packetizer_c(p_reader, p_ti)
|
||||
, m_samples_written(0)
|
||||
, m_bytes_written(0)
|
||||
, m_packet_buffer(128 * 1024)
|
||||
, m_get_first_header_later(get_first_header_later)
|
||||
, m_first_header(dtsheader)
|
||||
, m_previous_header(dtsheader)
|
||||
, m_skipping_is_normal(false)
|
||||
@ -63,22 +61,11 @@ dts_packetizer_c::get_dts_packet(dts_header_t &dtsheader) {
|
||||
buf_size = m_packet_buffer.get_size();
|
||||
}
|
||||
|
||||
pos = find_dts_header(buf, buf_size, &dtsheader, m_get_first_header_later ? false : !m_first_header.dts_hd);
|
||||
pos = find_dts_header(buf, buf_size, &dtsheader, !m_first_header.dts_hd);
|
||||
|
||||
if ((0 > pos) || (static_cast<int>(pos + dtsheader.frame_byte_size) > buf_size))
|
||||
return NULL;
|
||||
|
||||
if (m_get_first_header_later) {
|
||||
m_first_header = dtsheader;
|
||||
m_previous_header = dtsheader;
|
||||
m_get_first_header_later = false;
|
||||
|
||||
if (!m_reader->m_appending)
|
||||
set_headers();
|
||||
|
||||
rerender_track_headers();
|
||||
}
|
||||
|
||||
if ((1 < verbose) && (dtsheader != m_previous_header)) {
|
||||
mxinfo(Y("DTS header information changed! - New format:\n"));
|
||||
print_dts_header(&dtsheader);
|
||||
@ -156,9 +143,6 @@ dts_packetizer_c::can_connect_to(generic_packetizer_c *src,
|
||||
if (NULL == dsrc)
|
||||
return CAN_CONNECT_NO_FORMAT;
|
||||
|
||||
if (m_get_first_header_later)
|
||||
return CAN_CONNECT_MAYBE_CODECPRIVATE;
|
||||
|
||||
connect_check_a_samplerate(m_first_header.core_sampling_frequency, dsrc->m_first_header.core_sampling_frequency);
|
||||
connect_check_a_channels(m_first_header.audio_channels, dsrc->m_first_header.audio_channels);
|
||||
|
||||
|
@ -27,14 +27,13 @@ private:
|
||||
|
||||
byte_buffer_c m_packet_buffer;
|
||||
|
||||
bool m_get_first_header_later;
|
||||
dts_header_t m_first_header, m_previous_header;
|
||||
bool m_skipping_is_normal;
|
||||
|
||||
std::deque<int64_t> m_available_timecodes;
|
||||
|
||||
public:
|
||||
dts_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, const dts_header_t &dts_header, bool get_first_header_later = false);
|
||||
dts_packetizer_c(generic_reader_c *p_reader, track_info_c &p_ti, const dts_header_t &dts_header);
|
||||
virtual ~dts_packetizer_c();
|
||||
|
||||
virtual int process(packet_cptr packet);
|
||||
|
Loading…
Reference in New Issue
Block a user