mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-16 20:31:32 +00:00
avformat/matroskadec: adjust the cluster time to the track timebase
The Block timestamp read in matroska_parse_block() is in track timebase and is passed on as such to the AVPacket which uses this timebase. In the normal case the Cluster and Track timebases are the same because the track->time_scale is 1.0. But when it is not the case, the values in Cluster timebase need to be transformed in Track timebase so they can be added together. Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
b00d2210e4
commit
3a2b786db0
@ -3581,7 +3581,8 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, AVBufferRef *buf
|
||||
|
||||
if (cluster_time != (uint64_t) -1 &&
|
||||
(block_time >= 0 || cluster_time >= -block_time)) {
|
||||
timecode = cluster_time + block_time - track->codec_delay_in_track_tb;
|
||||
uint64_t timecode_cluster_in_track_tb = (double) cluster_time / track->time_scale;
|
||||
timecode = timecode_cluster_in_track_tb + block_time - track->codec_delay_in_track_tb;
|
||||
if (track->type == MATROSKA_TRACK_TYPE_SUBTITLE &&
|
||||
timecode < track->end_timecode)
|
||||
is_keyframe = 0; /* overlapping subtitles are not key frame */
|
||||
|
Loading…
Reference in New Issue
Block a user