diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-02-09 18:50:32 +0100 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-02-20 17:46:18 +0100 |
commit | 3293b1adca637c29d555b4980d4f0f9cfe7fba78 (patch) | |
tree | 715f6522b1ceece9bcf2086c6250e7f6f6c30912 /libavcodec | |
parent | 6e6bdeb137e1b89598f1be19a83a30fd8fb6b7f1 (diff) | |
download | ffmpeg-3293b1adca637c29d555b4980d4f0f9cfe7fba78.tar.gz |
lavc: set bit_rate in the decoder context, just after the init stage
Also move the get_bit_rate() function, in order to avoid an undefined
symbol reference in avcodec_open2().
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/utils.c | 49 | ||||
-rw-r--r-- | libavcodec/version.h | 2 |
2 files changed, 27 insertions, 24 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index de1274cfc8..c559fd7613 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -677,6 +677,29 @@ static void avcodec_get_subtitle_defaults(AVSubtitle *sub) sub->pts = AV_NOPTS_VALUE; } +static int get_bit_rate(AVCodecContext *ctx) +{ + int bit_rate; + int bits_per_sample; + + switch(ctx->codec_type) { + case AVMEDIA_TYPE_VIDEO: + case AVMEDIA_TYPE_DATA: + case AVMEDIA_TYPE_SUBTITLE: + case AVMEDIA_TYPE_ATTACHMENT: + bit_rate = ctx->bit_rate; + break; + case AVMEDIA_TYPE_AUDIO: + bits_per_sample = av_get_bits_per_sample(ctx->codec_id); + bit_rate = bits_per_sample ? ctx->sample_rate * ctx->channels * bits_per_sample : ctx->bit_rate; + break; + default: + bit_rate = 0; + break; + } + return bit_rate; +} + #if FF_API_AVCODEC_OPEN int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec) { @@ -889,6 +912,9 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVD } } + if (codec_is_decoder(avctx->codec) && !avctx->bit_rate) + avctx->bit_rate = get_bit_rate(avctx); + ret=0; end: entangled_thread_counter--; @@ -1602,29 +1628,6 @@ AVCodec *avcodec_find_decoder_by_name(const char *name) return NULL; } -static int get_bit_rate(AVCodecContext *ctx) -{ - int bit_rate; - int bits_per_sample; - - switch(ctx->codec_type) { - case AVMEDIA_TYPE_VIDEO: - case AVMEDIA_TYPE_DATA: - case AVMEDIA_TYPE_SUBTITLE: - case AVMEDIA_TYPE_ATTACHMENT: - bit_rate = ctx->bit_rate; - break; - case AVMEDIA_TYPE_AUDIO: - bits_per_sample = av_get_bits_per_sample(ctx->codec_id); - bit_rate = bits_per_sample ? ctx->sample_rate * ctx->channels * bits_per_sample : ctx->bit_rate; - break; - default: - bit_rate = 0; - break; - } - return bit_rate; -} - const char *avcodec_get_name(enum CodecID id) { AVCodec *codec; diff --git a/libavcodec/version.h b/libavcodec/version.h index 7694cb74a6..db4fbea44a 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -22,7 +22,7 @@ #define LIBAVCODEC_VERSION_MAJOR 54 #define LIBAVCODEC_VERSION_MINOR 3 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ |