Browse Source

lavf: factor codec id forcing out

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.0
Michael Niedermayer 13 years ago
parent
commit
a7fbc7d7b7
1 changed files with 17 additions and 11 deletions
  1. +17
    -11
      libavformat/utils.c

+ 17
- 11
libavformat/utils.c View File

@@ -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);


Loading…
Cancel
Save