mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2025-02-26 08:22:31 +00:00
MPEG TS: Use DTS instead of PTS for VC1 video tracks
This commit is contained in:
parent
e2bd541b8a
commit
3f9f39a96e
@ -997,15 +997,26 @@ mpeg_ts_reader_c::parse_start_unit_packet(mpeg_ts_track_ptr &track,
|
||||
|
||||
ts_payload_size = ((unsigned char *)ts_packet_header + TS_PACKET_SIZE) - (unsigned char *) ts_payload;
|
||||
|
||||
if (pes_data->get_pts_dts_flags() > 1) { // 10 and 11 mean PTS is present
|
||||
int64_t PTS = read_timestamp(&pes_data->pts_dts);
|
||||
int64_t pts = -1, dts = -1;
|
||||
if ((pes_data->get_pts_dts_flags() & 0x02) == 0x02) { // 10 and 11 mean PTS is present
|
||||
pts = read_timestamp(&pes_data->pts_dts);
|
||||
dts = pts;
|
||||
}
|
||||
|
||||
if ((-1 == m_global_timecode_offset) || (PTS < m_global_timecode_offset)) {
|
||||
mxverb(3, boost::format("global_timecode_offset %1%\n") % PTS);
|
||||
m_global_timecode_offset = PTS;
|
||||
if ((pes_data->get_pts_dts_flags() & 0x01) == 0x01) { // 01 and 11 mean DTS is present
|
||||
dts = read_timestamp(&pes_data->pts_dts + 5);
|
||||
}
|
||||
|
||||
if (!track->m_use_dts)
|
||||
dts = pts;
|
||||
|
||||
if (-1 != pts) {
|
||||
if ((-1 == m_global_timecode_offset) || (dts < m_global_timecode_offset)) {
|
||||
mxverb(3, boost::format("new global_timecode_offset %1%\n") % dts);
|
||||
m_global_timecode_offset = dts;
|
||||
}
|
||||
|
||||
if (PTS == track->timecode) {
|
||||
if (pts == track->timecode) {
|
||||
mxverb(3, boost::format(" Adding PES with same PTS as previous !!\n"));
|
||||
track->add_pes_payload(ts_payload, ts_payload_size);
|
||||
return false;
|
||||
@ -1013,9 +1024,9 @@ mpeg_ts_reader_c::parse_start_unit_packet(mpeg_ts_track_ptr &track,
|
||||
} else if ((0 != track->pes_payload->get_size()) && (INPUT_READ == input_status))
|
||||
track->send_to_packetizer();
|
||||
|
||||
track->timecode = PTS;
|
||||
track->timecode = dts;
|
||||
|
||||
mxverb(3, boost::format(" PTS found: %1%\n") % track->timecode);
|
||||
mxverb(3, boost::format(" PTS/DTS found: %1%\n") % track->timecode);
|
||||
}
|
||||
|
||||
// this condition is for ES probing when there is still not enough data for detection
|
||||
@ -1132,7 +1143,8 @@ mpeg_ts_reader_c::create_mpeg4_p10_es_video_packetizer(mpeg_ts_track_ptr &track)
|
||||
|
||||
void
|
||||
mpeg_ts_reader_c::create_vc1_video_packetizer(mpeg_ts_track_ptr &track) {
|
||||
track->ptzr = add_packetizer(new vc1_video_packetizer_c(this, m_ti));
|
||||
track->m_use_dts = true;
|
||||
track->ptzr = add_packetizer(new vc1_video_packetizer_c(this, m_ti));
|
||||
show_packetizer_info(m_ti.m_id, PTZR(track->ptzr));
|
||||
}
|
||||
|
||||
|
@ -294,7 +294,7 @@ public:
|
||||
dts_header_t a_dts_header;
|
||||
aac_header_t m_aac_header;
|
||||
|
||||
bool m_apply_dts_timecode_fix;
|
||||
bool m_apply_dts_timecode_fix, m_use_dts;
|
||||
|
||||
// general track parameters
|
||||
std::string language;
|
||||
@ -332,6 +332,7 @@ public:
|
||||
, a_bits_per_sample(0)
|
||||
, a_bsid(0)
|
||||
, m_apply_dts_timecode_fix(false)
|
||||
, m_use_dts(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ T_294vobsub_negative_delay:6e1c59551b7ad05fa570bed2ffc926fe:passed:20110523-2048
|
||||
T_295vc1_rederiving_frame_types:b44ddb45845f897b986582c112e9ef1e-9864da369d9cb828ad428bb7e35a0f80:passed:20110525-205715:8.761058959
|
||||
T_296video_frames_duration_0:5799836e2ff0742618d34a3e817f4c23:passed:20110709-143914:0.458765384
|
||||
T_297mpeg_transport_streams:5bf7b0adead3cbcae2737b878842dd5e-68a51f8c5cdefcca641c13d7db50a853:passed:20110913-112636:10.706480253
|
||||
T_298ts_language:9cdac29098316e9d9561598f55e5518e:passed:20110915-221140:10.526064317
|
||||
T_298ts_language:d600fae1d79a3fcb3d35066f938cd8c5:passed:20110915-221140:10.526064317
|
||||
T_299ts_ghost_entries_in_pmt:5716a012cd61366198ec92772fd216ea:passed:20110917-004553:0.348880316
|
||||
T_300ts_dts_duplicate_timestamps:20dc3a1cefa6b222f637d50a8e5009b0:passed:20110918-154508:1.230918853
|
||||
T_301ts_pgssub:288073767e64ed273d1c7f528c673d25:passed:20110918-154732:1.237027466
|
||||
|
Loading…
Reference in New Issue
Block a user