aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorStefano Sabatini <stefasab@gmail.com>2012-02-09 18:50:32 +0100
committerStefano Sabatini <stefasab@gmail.com>2012-02-20 17:46:18 +0100
commit3293b1adca637c29d555b4980d4f0f9cfe7fba78 (patch)
tree715f6522b1ceece9bcf2086c6250e7f6f6c30912 /libavcodec
parent6e6bdeb137e1b89598f1be19a83a30fd8fb6b7f1 (diff)
downloadffmpeg-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.c49
-rw-r--r--libavcodec/version.h2
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, \