[FFmpeg-devel] [PATCH 1/2] avcodec: add an AVCodecContext flag to export PRFT side data on demand
James Almer
jamrial at gmail.com
Wed Jan 29 15:59:50 EET 2020
On 1/23/2020 5:25 PM, James Almer wrote:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> doc/APIchanges | 3 +++
> doc/codecs.texi | 2 ++
> libavcodec/avcodec.h | 8 +++++++-
> libavcodec/options_table.h | 1 +
> libavcodec/version.h | 2 +-
> 5 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 2977b00b60..2433083d55 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -15,6 +15,9 @@ libavutil: 2017-10-21
>
> API changes, most recent first:
>
> +2020-01-xx - xxxxxxxxxx - lavc 58.66.101 - avcodec.h
> + Add AV_CODEC_FLAG2_EXPORT_PRFT.
> +
> 2020-01-15 - xxxxxxxxxx - lavc 58.66.100 - avcodec.h
> Add AV_PKT_DATA_PRFT and AVProducerReferenceTime.
>
> diff --git a/doc/codecs.texi b/doc/codecs.texi
> index 15e55cca39..ebf7bab0fb 100644
> --- a/doc/codecs.texi
> +++ b/doc/codecs.texi
> @@ -779,6 +779,8 @@ Place global headers at every keyframe instead of in extradata.
> Frame data might be split into multiple chunks.
> @item showall
> Show all frames before the first keyframe.
> + at item export_prft
> +Export Producer Reference Time into packet side-data (see @code{AV_PKT_DATA_PRFT})
> @item export_mvs
> Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
> for codecs that support it. See also @file{doc/examples/export_mvs.c}.
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 774ed1e641..aae6e83568 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -955,6 +955,10 @@ typedef struct RcOverride{
> * Show all frames before the first keyframe
> */
> #define AV_CODEC_FLAG2_SHOW_ALL (1 << 22)
> +/**
> + * Export Producer Reference Time through packet side data
> + */
> +#define AV_CODEC_FLAG2_EXPORT_PRFT (1 << 27)
> /**
> * Export motion vectors through frame side data
> */
> @@ -1416,7 +1420,9 @@ enum AVPacketSideDataType {
> AV_PKT_DATA_AFD,
>
> /**
> - * Producer Reference Time data corresponding to the AVProducerReferenceTime struct.
> + * Producer Reference Time data corresponding to the AVProducerReferenceTime struct
> + * exported by some encoders (on demand through the export_prft flag set in the
> + * AVCodecContext flags2 field).
> */
> AV_PKT_DATA_PRFT,
>
> diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h
> index d4c0cdeb48..479a85071b 100644
> --- a/libavcodec/options_table.h
> +++ b/libavcodec/options_table.h
> @@ -75,6 +75,7 @@ static const AVOption avcodec_options[] = {
> {"local_header", "place global headers at every keyframe instead of in extradata", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_LOCAL_HEADER }, INT_MIN, INT_MAX, V|E, "flags2"},
> {"chunks", "Frame data might be split into multiple chunks", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_CHUNKS }, INT_MIN, INT_MAX, V|D, "flags2"},
> {"showall", "Show all frames before the first keyframe", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_SHOW_ALL }, INT_MIN, INT_MAX, V|D, "flags2"},
> +{"export_prft", "export Producer Reference Time through packet side data", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_EXPORT_PRFT}, INT_MIN, INT_MAX, A|V|E, "flags2"},
> {"export_mvs", "export motion vectors through frame side data", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_EXPORT_MVS}, INT_MIN, INT_MAX, V|D, "flags2"},
> {"skip_manual", "do not skip samples and export skip information as frame side data", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_SKIP_MANUAL}, INT_MIN, INT_MAX, A|D, "flags2"},
> {"ass_ro_flush_noop", "do not reset ASS ReadOrder field on flush", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_RO_FLUSH_NOOP}, INT_MIN, INT_MAX, S|D, "flags2"},
> diff --git a/libavcodec/version.h b/libavcodec/version.h
> index 6cf333eeb6..b438a09d6d 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -29,7 +29,7 @@
>
> #define LIBAVCODEC_VERSION_MAJOR 58
> #define LIBAVCODEC_VERSION_MINOR 66
> -#define LIBAVCODEC_VERSION_MICRO 100
> +#define LIBAVCODEC_VERSION_MICRO 101
>
> #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
> LIBAVCODEC_VERSION_MINOR, \
Will push this set soon if no one objects.
More information about the ffmpeg-devel
mailing list