diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 351e3720f5c985661de5efe27217a3819489f315..f739acd8ca1a0a1ebcdeb8737fe3fd9e1f2fbffb 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 d9ad10f0210a59b8413ff95d2b7e9f41007cf3b8..90df647db714b13c557a14b62809c885a91a07a7 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 8f07291b51c17d1184a31071fbb6d76dbb264f06..c877fe90a9031386e6b6880525737f66bd1ce3d8 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, \