diff --git a/doc/APIchanges b/doc/APIchanges
index 0ed7433eb38c52c3a7c162f82bb84b333880a75e..a76b0b605b7566a75930df3ef7c750e5dcb77e3d 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil:     2012-10-22
 
 API changes, most recent first:
 
+2014-04-xx - xxxxxxx - lavc 55.54.0 - avcodec.h
+  Add AVCodecContext.side_data_only_packets to allow encoders to output packets
+  with only side data. This option may become mandatory in the future, so all
+  users are recommended to update their code and enable this option.
+
 2014-xx-xx - xxxxxxx - lavu 53.16.0 - frame.h, pixfmt.h
   Move all color-related enums (AVColorPrimaries, AVColorSpace, AVColorRange,
   AVColorTransferCharacteristic, and AVChromaLocation) inside lavu.
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 463fc04a6e3870d2b9a131634020d80b0f88ba97..d52f24506076eeb5c91fc3ed62ec5bc9a678beb5 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2930,6 +2930,21 @@ typedef struct AVCodecContext {
      */
     uint64_t vbv_delay;
 
+    /**
+     * Encoding only. Allow encoders to output packets that do not contain any
+     * encoded data, only side data.
+     *
+     * Some encoders need to output such packets, e.g. to update some stream
+     * parameters at the end of encoding.
+     *
+     * All callers are strongly recommended to set this option to 1 and update
+     * their code to deal with such packets, since this behaviour may become
+     * always enabled in the future (then this option will be deprecated and
+     * later removed). To avoid ABI issues when this happens, the callers should
+     * use AVOptions to set this field.
+     */
+    int side_data_only_packets;
+
     /**
      * Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
      * Code outside libavcodec should access this field using:
diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h
index f115ea718fc1d27f660cd86ff19a700141331598..ba007eda00b77b6fa0049bf6a825e9f633ff9329 100644
--- a/libavcodec/options_table.h
+++ b/libavcodec/options_table.h
@@ -407,6 +407,7 @@ static const AVOption avcodec_options[] = {
 {"auto",        NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_SUB_CHARENC_MODE_AUTOMATIC},   INT_MIN, INT_MAX, S|D, "sub_charenc_mode"},
 {"pre_decoder", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_SUB_CHARENC_MODE_PRE_DECODER}, INT_MIN, INT_MAX, S|D, "sub_charenc_mode"},
 {"refcounted_frames", NULL, OFFSET(refcounted_frames), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, A|V|D },
+{"side_data_only_packets", NULL, OFFSET(side_data_only_packets), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, A|V|E },
 {"skip_alpha", "Skip processing alpha", OFFSET(skip_alpha), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, V|D },
 {"field_order", "Field order", OFFSET(field_order), AV_OPT_TYPE_INT, {.i64 = AV_FIELD_UNKNOWN }, 0, 5, V|D|E, "field_order" },
 {"progressive", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_FIELD_PROGRESSIVE }, 0, 0, V|D|E, "field_order" },
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 4454bf1cde9d0cace753ba2e6b9056acdf84e756..d16e1402714d2bd02039a0c129a8208500068bb8 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 #include "libavutil/version.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 55
-#define LIBAVCODEC_VERSION_MINOR  65
+#define LIBAVCODEC_VERSION_MINOR  66
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \