|
|
|
@ -1281,6 +1281,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
uint8_t *extradata = NULL; |
|
|
|
|
int extradata_size = 0; |
|
|
|
|
int extradata_offset = 0; |
|
|
|
|
uint32_t fourcc = 0; |
|
|
|
|
AVIOContext b; |
|
|
|
|
|
|
|
|
|
/* Apply some sanity checks. */ |
|
|
|
@ -1302,6 +1303,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
track->video.display_width = track->video.pixel_width; |
|
|
|
|
if (!track->video.display_height) |
|
|
|
|
track->video.display_height = track->video.pixel_height; |
|
|
|
|
fourcc = track->video.fourcc; |
|
|
|
|
} else if (track->type == MATROSKA_TRACK_TYPE_AUDIO) { |
|
|
|
|
if (!track->audio.out_samplerate) |
|
|
|
|
track->audio.out_samplerate = track->audio.samplerate; |
|
|
|
@ -1361,8 +1363,8 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
&& 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); |
|
|
|
|
fourcc = AV_RL32(track->codec_priv.data + 16); |
|
|
|
|
codec_id = ff_codec_get_id(ff_codec_bmp_tags, fourcc); |
|
|
|
|
extradata_offset = 40; |
|
|
|
|
} else if (!strcmp(track->codec_id, "A_MS/ACM") |
|
|
|
|
&& track->codec_priv.size >= 14 |
|
|
|
@ -1378,8 +1380,8 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
} else if (!strcmp(track->codec_id, "V_QUICKTIME") |
|
|
|
|
&& (track->codec_priv.size >= 86) |
|
|
|
|
&& (track->codec_priv.data != NULL)) { |
|
|
|
|
track->video.fourcc = AV_RL32(track->codec_priv.data); |
|
|
|
|
codec_id=ff_codec_get_id(codec_movvideo_tags, track->video.fourcc); |
|
|
|
|
fourcc = AV_RL32(track->codec_priv.data); |
|
|
|
|
codec_id = ff_codec_get_id(codec_movvideo_tags, fourcc); |
|
|
|
|
} else if (codec_id == CODEC_ID_PCM_S16BE) { |
|
|
|
|
switch (track->audio.bitdepth) { |
|
|
|
|
case 8: codec_id = CODEC_ID_PCM_U8; break; |
|
|
|
@ -1500,7 +1502,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
MatroskaTrackPlane *planes = track->operation.combine_planes.elem; |
|
|
|
|
|
|
|
|
|
st->codec->codec_type = AVMEDIA_TYPE_VIDEO; |
|
|
|
|
st->codec->codec_tag = track->video.fourcc; |
|
|
|
|
st->codec->codec_tag = fourcc; |
|
|
|
|
st->codec->width = track->video.pixel_width; |
|
|
|
|
st->codec->height = track->video.pixel_height; |
|
|
|
|
av_reduce(&st->sample_aspect_ratio.num, |
|
|
|
|