aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2014-04-29 15:06:45 +0200
committerAnton Khirnov <anton@khirnov.net>2014-06-01 08:26:43 +0200
commit0957b274e312e985d69cb490bee2a7ff820acaa6 (patch)
tree3c299d8ab7cee48d9e8fe187529cde33b38fa0de
parenteb800f120d2d42590fde2302fe828c847e41e773 (diff)
downloadffmpeg-0957b274e312e985d69cb490bee2a7ff820acaa6.tar.gz
lavc: add an option to enable side data-only packets during encoding
Some encoders (e.g. flac) need to send side data when there is no more data to be output. This enables them to output a packet with no data in it, only side data.
-rw-r--r--doc/APIchanges5
-rw-r--r--libavcodec/avcodec.h15
-rw-r--r--libavcodec/options_table.h1
-rw-r--r--libavcodec/version.h2
4 files changed, 22 insertions, 1 deletions
diff --git a/doc/APIchanges b/doc/APIchanges
index 367f8e1dd3..952ee51556 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,11 @@ libavutil: 2013-12-xx
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 431041940a..0396ea5614 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2730,6 +2730,21 @@ typedef struct AVCodecContext {
* - decoding: unused.
*/
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;
} AVCodecContext;
/**
diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h
index 6825e6274a..f018b214d7 100644
--- a/libavcodec/options_table.h
+++ b/libavcodec/options_table.h
@@ -399,6 +399,7 @@ static const AVOption avcodec_options[] = {
{"fltp", "32-bit float planar", 0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_FLTP }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
{"dblp", "64-bit double planar", 0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_DBLP }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
{"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 },
{NULL},
};
diff --git a/libavcodec/version.h b/libavcodec/version.h
index d72f8eddfa..c02540a7e2 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 53
+#define LIBAVCODEC_VERSION_MINOR 54
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \