From: Torsten J. <t....@gm...> - 2012-04-26 11:15:43
|
# HG changeset patch # User Torsten Jager <t....@gm...> # Date 1335438877 -10800 # Node ID cb3aa2dcc6e62e51f40cfa3472d3b351f9a16118 # Branch default # Parent 485e0f1ab0dd8c1972b96d7e5cbf2233b5b203e1 Fixed demux_qt for the pts < dts case diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -2020,9 +2020,11 @@ /* offset pts for reordered video */ if (ptsoffs_index < trak->timeoffs_to_sample_count) { - trak->frames[frame_counter].ptsoffs = 90000 * - trak->timeoffs_to_sample_table[ptsoffs_index].duration / - trak->timescale; + /* TJ. this is 32 bit signed. All casts necessary for my gcc 4.5.0 */ + int i = trak->timeoffs_to_sample_table[ptsoffs_index].duration; + if ((sizeof (int) > 4) && (i & 0x80000000)) + i |= ~0xffffffffL; + trak->frames[frame_counter].ptsoffs = (int)90000 * i / (int)trak->timescale; ptsoffs_index_countdown--; /* time to refresh countdown? */ if (!ptsoffs_index_countdown) { |