From da74e883f14469a1aad7c07c9aa7629a554bbceb Mon Sep 17 00:00:00 2001 From: Michael Niedermayer <michaelni@gmx.at> Date: Sat, 11 Aug 2012 16:07:28 +0200 Subject: [PATCH] lavc: add codec_descriptor field to AVCodecContext. This can be used to avoid a time consuming lookup of the descriptor Signed-off-by: Michael Niedermayer <michaelni@gmx.at> --- libavcodec/avcodec.h | 12 ++++++++++++ libavcodec/utils.c | 2 ++ libavcodec/version.h | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 351e3720f5c..f739acd8ca1 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3035,6 +3035,15 @@ typedef struct AVCodecContext { */ AVRational pkt_timebase; + /** + * AVCodecDescriptor + * Code outside libavcodec should access this field using: + * avcodec_get_codec_descriptior(avctx) + * - encoding: unused. + * - decoding: set by libavcodec. + */ + AVCodecDescriptor *codec_descriptor; + /** * Current statistics for PTS correction. * - decoding: maintained and used by libavcodec, not intended to be used by user apps @@ -3049,6 +3058,9 @@ typedef struct AVCodecContext { AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx); void av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val); +AVCodecDescriptor *av_codec_get_codec_descriptor(const AVCodecContext *avctx); +void av_codec_set_codec_descriptor(AVCodecContext *avctx, AVCodecDescriptor *desc); + /** * AVProfile. */ diff --git a/libavcodec/utils.c b/libavcodec/utils.c index d9ad10f0210..90df647db71 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -712,6 +712,7 @@ MAKE_ACCESSORS(AVFrame, frame, AVDictionary *, metadata) MAKE_ACCESSORS(AVFrame, frame, int, decode_error_flags) MAKE_ACCESSORS(AVCodecContext, codec, AVRational, pkt_timebase) +MAKE_ACCESSORS(AVCodecContext, codec, AVCodecDescriptor*, codec_descriptor) static void avcodec_get_subtitle_defaults(AVSubtitle *sub) { @@ -860,6 +861,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVD goto free_and_end; } avctx->frame_number = 0; + avctx->codec_descriptor = avcodec_descriptor_get(avctx->codec_id); if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && (!avctx->time_base.num || !avctx->time_base.den)) { diff --git a/libavcodec/version.h b/libavcodec/version.h index 8f07291b51c..c877fe90a90 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -27,7 +27,7 @@ */ #define LIBAVCODEC_VERSION_MAJOR 54 -#define LIBAVCODEC_VERSION_MINOR 51 +#define LIBAVCODEC_VERSION_MINOR 52 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ -- GitLab