|
|
|
@ -712,6 +712,21 @@ no_packet: |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void force_codec_ids(AVFormatContext *s, AVStream *st) |
|
|
|
|
{ |
|
|
|
|
switch(st->codec->codec_type){ |
|
|
|
|
case AVMEDIA_TYPE_VIDEO: |
|
|
|
|
if(s->video_codec_id) st->codec->codec_id= s->video_codec_id; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_AUDIO: |
|
|
|
|
if(s->audio_codec_id) st->codec->codec_id= s->audio_codec_id; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_SUBTITLE: |
|
|
|
|
if(s->subtitle_codec_id)st->codec->codec_id= s->subtitle_codec_id; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int ff_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
{ |
|
|
|
|
int ret, i; |
|
|
|
@ -765,17 +780,8 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
|
|
|
|
|
st= s->streams[pkt->stream_index]; |
|
|
|
|
|
|
|
|
|
switch(st->codec->codec_type){ |
|
|
|
|
case AVMEDIA_TYPE_VIDEO: |
|
|
|
|
if(s->video_codec_id) st->codec->codec_id= s->video_codec_id; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_AUDIO: |
|
|
|
|
if(s->audio_codec_id) st->codec->codec_id= s->audio_codec_id; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_SUBTITLE: |
|
|
|
|
if(s->subtitle_codec_id)st->codec->codec_id= s->subtitle_codec_id; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
force_codec_ids(s, st); |
|
|
|
|
|
|
|
|
|
/* TODO: audio: time filter; video: frame reordering (pts != dts) */ |
|
|
|
|
if (s->use_wallclock_as_timestamps) |
|
|
|
|
pkt->dts = pkt->pts = av_rescale_q(av_gettime(), AV_TIME_BASE_Q, st->time_base); |
|
|
|
|