|
|
|
@@ -143,6 +143,7 @@ typedef struct { |
|
|
|
|
|
|
|
AVStream *stream; |
|
|
|
int64_t end_timecode; |
|
|
|
int ms_compat; |
|
|
|
} MatroskaTrack; |
|
|
|
|
|
|
|
typedef struct { |
|
|
|
@@ -1244,6 +1245,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") |
|
|
|
&& track->codec_priv.size >= 40 |
|
|
|
&& track->codec_priv.data != NULL) { |
|
|
|
track->ms_compat = 1; |
|
|
|
track->video.fourcc = AV_RL32(track->codec_priv.data + 16); |
|
|
|
codec_id = ff_codec_get_id(ff_codec_bmp_tags, track->video.fourcc); |
|
|
|
extradata_offset = 40; |
|
|
|
@@ -1698,6 +1700,9 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data, |
|
|
|
pkt->flags = is_keyframe; |
|
|
|
pkt->stream_index = st->index; |
|
|
|
|
|
|
|
if (track->ms_compat) |
|
|
|
pkt->dts = timecode; |
|
|
|
else |
|
|
|
pkt->pts = timecode; |
|
|
|
pkt->pos = pos; |
|
|
|
if (st->codec->codec_id == CODEC_ID_TEXT) |
|
|
|
|