diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-28 17:52:45 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-10-02 22:56:03 +0200 |
commit | 5082fcc0e2c899484534637544463effbf50d9d1 (patch) | |
tree | 43babc8647191221210ba46f0bb902560fea3bee /libavformat/utils.c | |
parent | f4aec348056cf9602fc853d2606835c49443d6df (diff) | |
download | ffmpeg-5082fcc0e2c899484534637544463effbf50d9d1.tar.gz |
avformat: add support to force specific AVCodecs
previously only codec_ids could be forced, which did not allow
forcing a specific implementation like libopenjpeg vs jpeg2000.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r-- | libavformat/utils.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index b47787a8ee..61405d7c97 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -98,12 +98,27 @@ static int64_t wrap_timestamp(AVStream *st, int64_t timestamp) } MAKE_ACCESSORS(AVStream, stream, AVRational, r_frame_rate) +MAKE_ACCESSORS(AVFormatContext, format, AVCodec *, video_codec) +MAKE_ACCESSORS(AVFormatContext, format, AVCodec *, audio_codec) +MAKE_ACCESSORS(AVFormatContext, format, AVCodec *, subtitle_codec) static AVCodec *find_decoder(AVFormatContext *s, AVStream *st, enum AVCodecID codec_id) { if (st->codec->codec) return st->codec->codec; + switch(st->codec->codec_type){ + case AVMEDIA_TYPE_VIDEO: + if(s->video_codec) return s->video_codec; + break; + case AVMEDIA_TYPE_AUDIO: + if(s->audio_codec) return s->audio_codec; + break; + case AVMEDIA_TYPE_SUBTITLE: + if(s->subtitle_codec) return s->subtitle_codec; + break; + } + return avcodec_find_decoder(codec_id); } |