[FFmpeg-cvslog] Merge commit '5b145290df2998a9836a93eb925289c6c8b63af0'

Mark Thompson git at videolan.org
Tue Feb 13 00:21:05 EET 2018


ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Mon Feb 12 22:19:38 2018 +0000| [d23fff0d8a0e7df170c67a9dd5c1f7c1fc0da489] | committer: Mark Thompson

Merge commit '5b145290df2998a9836a93eb925289c6c8b63af0'

* commit '5b145290df2998a9836a93eb925289c6c8b63af0':
  lavc: Add support for increasing hardware frame pool sizes

Merged-by: Mark Thompson <sw at jkqxz.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d23fff0d8a0e7df170c67a9dd5c1f7c1fc0da489
---

 doc/APIchanges             |  3 +++
 libavcodec/avcodec.h       | 14 ++++++++++++++
 libavcodec/decode.c        |  9 +++++++++
 libavcodec/options_table.h |  1 +
 libavcodec/version.h       |  2 +-
 5 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 91f41a5020..e5c392ead5 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil:     2017-10-21
 
 API changes, most recent first:
 
+2018-02-xx - xxxxxxx - lavc 58.11.100 - avcodec.h
+  Add AVCodecContext.extra_hw_frames.
+
 2018-02-06 - 0fd475704e - lavd 58.1.100 - avdevice.h
   Deprecate use of av_input_audio_device_next(), av_input_video_device_next(),
   av_output_audio_device_next(), av_output_video_device_next().
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index ad0b48a839..bc0eacd66b 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -3255,6 +3255,20 @@ typedef struct AVCodecContext {
      * (with the display dimensions being determined by the crop_* fields).
      */
     int apply_cropping;
+
+    /*
+     * Video decoding only.  Sets the number of extra hardware frames which
+     * the decoder will allocate for use by the caller.  This must be set
+     * before avcodec_open2() is called.
+     *
+     * Some hardware decoders require all frames that they will use for
+     * output to be defined in advance before decoding starts.  For such
+     * decoders, the hardware frame pool must therefore be of a fixed size.
+     * The extra frames set here are on top of any number that the decoder
+     * needs internally in order to operate normally (for example, frames
+     * used as reference pictures).
+     */
+    int extra_hw_frames;
 } AVCodecContext;
 
 #if FF_API_CODEC_GET_SET
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index f67b214759..e984d9754e 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1229,6 +1229,15 @@ int avcodec_get_hw_frames_parameters(AVCodecContext *avctx,
 
     ret = hwa->frame_params(avctx, frames_ref);
     if (ret >= 0) {
+        AVHWFramesContext *frames_ctx = (AVHWFramesContext*)frames_ref->data;
+
+        if (frames_ctx->initial_pool_size) {
+            // If the user has requested that extra output surfaces be
+            // available then add them here.
+            if (avctx->extra_hw_frames > 0)
+                frames_ctx->initial_pool_size += avctx->extra_hw_frames;
+        }
+
         *out_frames_ref = frames_ref;
     } else {
         av_buffer_unref(&frames_ref);
diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h
index d89f58d540..ac9ce4b301 100644
--- a/libavcodec/options_table.h
+++ b/libavcodec/options_table.h
@@ -476,6 +476,7 @@ static const AVOption avcodec_options[] = {
 {"ignore_level", "ignore level even if the codec level used is unknown or higher than the maximum supported level reported by the hardware driver", 0, AV_OPT_TYPE_CONST, { .i64 = AV_HWACCEL_FLAG_IGNORE_LEVEL }, INT_MIN, INT_MAX, V | D, "hwaccel_flags" },
 {"allow_high_depth", "allow to output YUV pixel formats with a different chroma sampling than 4:2:0 and/or other than 8 bits per component", 0, AV_OPT_TYPE_CONST, {.i64 = AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH }, INT_MIN, INT_MAX, V | D, "hwaccel_flags"},
 {"allow_profile_mismatch", "attempt to decode anyway if HW accelerated decoder's supported profiles do not exactly match the stream", 0, AV_OPT_TYPE_CONST, {.i64 = AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH }, INT_MIN, INT_MAX, V | D, "hwaccel_flags"},
+{"extra_hw_frames", "Number of extra hardware frames to allocate for the user", OFFSET(extra_hw_frames), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, V|D },
 {NULL},
 };
 
diff --git a/libavcodec/version.h b/libavcodec/version.h
index e36cea30b5..3597a1a380 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -28,7 +28,7 @@
 #include "libavutil/version.h"
 
 #define LIBAVCODEC_VERSION_MAJOR  58
-#define LIBAVCODEC_VERSION_MINOR  10
+#define LIBAVCODEC_VERSION_MINOR  11
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \


======================================================================

diff --cc doc/APIchanges
index 91f41a5020,d62f7674f3..e5c392ead5
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@@ -15,89 -13,13 +15,92 @@@ libavutil:     2017-10-2
  
  API changes, most recent first:
  
 -2018-02-xx - xxxxxxx - lavc 58.9.0 - avcodec.h
++2018-02-xx - xxxxxxx - lavc 58.11.100 - avcodec.h
+   Add AVCodecContext.extra_hw_frames.
+ 
 -2017-xx-xx - xxxxxxx - lavc 58.8.0 - avcodec.h
 +2018-02-06 - 0fd475704e - lavd 58.1.100 - avdevice.h
 +  Deprecate use of av_input_audio_device_next(), av_input_video_device_next(),
 +  av_output_audio_device_next(), av_output_video_device_next().
 +  Add av_indev_iterate(), and av_outdev_iterate().
 +
 +2018-xx-xx - xxxxxxx - lavf 58.9.100 - avformat.h
 +  Deprecate use of av_register_input_format(), av_register_output_format(),
 +  av_register_all(), av_iformat_next(), av_oformat_next().
 +  Add av_demuxer_iterate(), and av_muxer_iterate().
 +
 +2018-xx-xx - xxxxxxx - lavc 58.10.100 - avcodec.h
 +  Deprecate use of avcodec_register(), avcodec_register_all(),
 +  av_codec_next(), av_register_codec_parser(), and av_parser_next().
 +  Add av_codec_iterate() and av_parser_iterate().
 +
 +2018-02-xx - xxxxxxx - lavf 58.8.100 - avformat.h
 +  Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
 +  options. Introduce "listen_timeout" as replacement for the current "timeout"
 +  option, and "user_agent" as replacement for "user-agent". Once the deprecation
 +  is over, the old "timeout" option will be removed, and "stimeout" will be
 +  renamed to "stimeout" (the "timeout" option will essentially change semantics).
 +
 +2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
 +  Deprecate AVFormatContext filename field which had limited length, use the
 +  new dynamically allocated url field instead.
 +
 +2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
 +  Add url field to AVFormatContext and add ff_format_set_url helper function.
 +
 +2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
 +  Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
 +
 +2018-xx-xx - xxxxxxx - lavu 56.9.100 - aes_ctr.h
 +  Add method to set the 16-byte IV.
 +
 +2018-01-xx - xxxxxxx - lavf 58.5.100 - avformat.h
 +  Explicitly make avformat_network_init() and avformat_network_deinit() optional.
 +  If these are not called, network initialization and deinitialization is
 +  automatic, and unlike in older versions, fully supported, unless libavformat
 +  is linked to ancient GnuTLS and OpenSSL.
 +
 +2018-01-xx - xxxxxxx - lavf 58.4.100 - avformat.h
 +  Deprecate AVStream.recommended_encoder_configuration. It was useful only for
 +  FFserver, which has been removed.
 +
 +2018-01-xx - xxxxxxx - lavfi 7.11.101 - avfilter.h
 +  Deprecate avfilter_link_get_channels(). Use av_buffersink_get_channels().
 +
 +2017-xx-xx - xxxxxxx - lavr 4.0.0 - avresample.h
 +  Deprecate the entire library. Merged years ago to provide compatibility
 +  with Libav, it remained unmaintained by the FFmpeg project and duplicated
 +  functionality provided by libswresample.
 +
 +  In order to improve consistency and reduce attack surface, it has been deprecated.
 +  Users of this library are asked to migrate to libswresample, which, as well as
 +  providing more functionality, is faster and has higher accuracy.
 +
 +2017-xx-xx - xxxxxxx - lavc 58.9.100 - avcodec.h
 +  Deprecate av_lockmgr_register(). You need to build FFmpeg with threading
 +  support enabled to get basic thread-safety (which is the default build
 +  configuration).
 +
 +2017-12-xx - xxxxxxx - lavu 56.7.100 - cpu.h
 +  AVX-512 flags added.
 +
 +2017-xx-xx - xxxxxxx - lavc 58.8.100 - avcodec.h
 +  The MediaCodec decoders now support AVCodecContext.hw_device_ctx.
 +
 +2017-xx-xx - xxxxxxx - lavu 56.6.100 - hwcontext.h hwcontext_mediacodec.h
 +  Add AV_HWDEVICE_TYPE_MEDIACODEC and a new installed header with
 +  MediaCodec-specific hwcontext definitions.
 +
 +2017-xx-xx - xxxxxxc - lavc 58.7.100 - avcodec.h
 +  Add AV_CODEC_CAP_HARDWARE, AV_CODEC_CAP_HYBRID, and AVCodec.wrapper_name,
 +  and mark all AVCodecs accordingly.
 +
 +2017-xx-xx - xxxxxxx - lavu 56.4.100 / 56.7.0 - stereo3d.h
 +  Add view field to AVStereo3D structure and AVStereo3DView enum.
 +
 +2017-xx-xx - xxxxxxx - lavc 58.6.100 - avcodec.h
    Add const to AVCodecContext.hwaccel.
  
 -2017-xx-xx - xxxxxxx - lavc 58.7.0 - avcodec.h
 +2017-11-xx - xxxxxxx - lavc 58.5.100 - avcodec.h
    Deprecate user visibility of the AVHWAccel structure and the functions
    av_register_hwaccel() and av_hwaccel_next().
  
diff --cc libavcodec/avcodec.h
index ad0b48a839,03a3d5bd6d..bc0eacd66b
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@@ -3230,69 -2741,20 +3230,83 @@@ typedef struct AVCodecContext 
      int hwaccel_flags;
  
      /**
 +     * Video decoding only. Certain video codecs support cropping, meaning that
 +     * only a sub-rectangle of the decoded frame is intended for display.  This
 +     * option controls how cropping is handled by libavcodec.
 +     *
 +     * When set to 1 (the default), libavcodec will apply cropping internally.
 +     * I.e. it will modify the output frame width/height fields and offset the
 +     * data pointers (only by as much as possible while preserving alignment, or
 +     * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
 +     * the frames output by the decoder refer only to the cropped area. The
 +     * crop_* fields of the output frames will be zero.
 +     *
 +     * When set to 0, the width/height fields of the output frames will be set
 +     * to the coded dimensions and the crop_* fields will describe the cropping
 +     * rectangle. Applying the cropping is left to the caller.
 +     *
 +     * @warning When hardware acceleration with opaque output frames is used,
 +     * libavcodec is unable to apply cropping from the top/left border.
 +     *
 +     * @note when this option is set to zero, the width/height fields of the
 +     * AVCodecContext and output AVFrames have different meanings. The codec
 +     * context fields store display dimensions (with the coded dimensions in
 +     * coded_width/height), while the frame fields store the coded dimensions
 +     * (with the display dimensions being determined by the crop_* fields).
 +     */
 +    int apply_cropping;
++
++    /*
+      * Video decoding only.  Sets the number of extra hardware frames which
+      * the decoder will allocate for use by the caller.  This must be set
+      * before avcodec_open2() is called.
+      *
+      * Some hardware decoders require all frames that they will use for
+      * output to be defined in advance before decoding starts.  For such
+      * decoders, the hardware frame pool must therefore be of a fixed size.
+      * The extra frames set here are on top of any number that the decoder
+      * needs internally in order to operate normally (for example, frames
+      * used as reference pictures).
+      */
+     int extra_hw_frames;
  } AVCodecContext;
  
 +#if FF_API_CODEC_GET_SET
 +/**
 + * Accessors for some AVCodecContext fields. These used to be provided for ABI
 + * compatibility, and do not need to be used anymore.
 + */
 +attribute_deprecated
 +AVRational av_codec_get_pkt_timebase         (const AVCodecContext *avctx);
 +attribute_deprecated
 +void       av_codec_set_pkt_timebase         (AVCodecContext *avctx, AVRational val);
 +
 +attribute_deprecated
 +const AVCodecDescriptor *av_codec_get_codec_descriptor(const AVCodecContext *avctx);
 +attribute_deprecated
 +void                     av_codec_set_codec_descriptor(AVCodecContext *avctx, const AVCodecDescriptor *desc);
 +
 +attribute_deprecated
 +unsigned av_codec_get_codec_properties(const AVCodecContext *avctx);
 +
 +#if FF_API_LOWRES
 +attribute_deprecated
 +int  av_codec_get_lowres(const AVCodecContext *avctx);
 +attribute_deprecated
 +void av_codec_set_lowres(AVCodecContext *avctx, int val);
 +#endif
 +
 +attribute_deprecated
 +int  av_codec_get_seek_preroll(const AVCodecContext *avctx);
 +attribute_deprecated
 +void av_codec_set_seek_preroll(AVCodecContext *avctx, int val);
 +
 +attribute_deprecated
 +uint16_t *av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx);
 +attribute_deprecated
 +void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val);
 +#endif
 +
  /**
   * AVProfile.
   */
diff --cc libavcodec/options_table.h
index d89f58d540,4b0a8344d0..ac9ce4b301
--- a/libavcodec/options_table.h
+++ b/libavcodec/options_table.h
@@@ -439,43 -403,23 +439,44 @@@ static const AVOption avcodec_options[
  {"em", "Emergency",          0, AV_OPT_TYPE_CONST, {.i64 = AV_AUDIO_SERVICE_TYPE_EMERGENCY },         INT_MIN, INT_MAX, A|E, "audio_service_type"},
  {"vo", "Voice Over",         0, AV_OPT_TYPE_CONST, {.i64 = AV_AUDIO_SERVICE_TYPE_VOICE_OVER },        INT_MIN, INT_MAX, A|E, "audio_service_type"},
  {"ka", "Karaoke",            0, AV_OPT_TYPE_CONST, {.i64 = AV_AUDIO_SERVICE_TYPE_KARAOKE },           INT_MIN, INT_MAX, A|E, "audio_service_type"},
 -{"request_sample_fmt", NULL, OFFSET(request_sample_fmt), AV_OPT_TYPE_INT, {.i64 = AV_SAMPLE_FMT_NONE }, AV_SAMPLE_FMT_NONE, INT_MAX, A|D, "request_sample_fmt"},
 -{"u8" , "8-bit unsigned integer", 0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_U8  }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"s16", "16-bit signed integer",  0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_S16 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"s32", "32-bit signed integer",  0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_S32 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"flt", "32-bit float",           0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_FLT }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"dbl", "64-bit double",          0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_DBL }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"u8p" , "8-bit unsigned integer planar", 0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_U8P  }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"s16p", "16-bit signed integer planar",  0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_S16P }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"s32p", "32-bit signed integer planar",  0, AV_OPT_TYPE_CONST, {.i64 = AV_SAMPLE_FMT_S32P }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"},
 -{"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 },
 +{"request_sample_fmt", "sample format audio decoders should prefer", OFFSET(request_sample_fmt), AV_OPT_TYPE_SAMPLE_FMT, {.i64=AV_SAMPLE_FMT_NONE}, -1, INT_MAX, A|D, "request_sample_fmt"},
 +{"pkt_timebase", NULL, OFFSET(pkt_timebase), AV_OPT_TYPE_RATIONAL, {.dbl = 0 }, 0, INT_MAX, 0},
 +{"sub_charenc", "set input text subtitles character encoding", OFFSET(sub_charenc), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, S|D},
 +{"sub_charenc_mode", "set input text subtitles character encoding mode", OFFSET(sub_charenc_mode), AV_OPT_TYPE_FLAGS, {.i64 = FF_SUB_CHARENC_MODE_AUTOMATIC}, -1, INT_MAX, S|D, "sub_charenc_mode"},
 +{"do_nothing",  NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_SUB_CHARENC_MODE_DO_NOTHING},  INT_MIN, INT_MAX, S|D, "sub_charenc_mode"},
 +{"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"},
 +#if FF_API_ASS_TIMING
 +{"sub_text_format", "set decoded text subtitle format", OFFSET(sub_text_format), AV_OPT_TYPE_INT, {.i64 = FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS}, 0, 1, S|D, "sub_text_format"},
 +#else
 +{"sub_text_format", "set decoded text subtitle format", OFFSET(sub_text_format), AV_OPT_TYPE_INT, {.i64 = FF_SUB_TEXT_FMT_ASS}, 0, 1, S|D, "sub_text_format"},
 +#endif
 +{"ass",              NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_SUB_TEXT_FMT_ASS},              INT_MIN, INT_MAX, S|D, "sub_text_format"},
 +#if FF_API_ASS_TIMING
 +{"ass_with_timings", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS}, INT_MIN, INT_MAX, S|D, "sub_text_format"},
 +#endif
 +{"refcounted_frames", NULL, OFFSET(refcounted_frames), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, A|V|D },
  #if FF_API_SIDEDATA_ONLY_PKT
 -{"side_data_only_packets", NULL, OFFSET(side_data_only_packets), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, A|V|E },
 +{"side_data_only_packets", NULL, OFFSET(side_data_only_packets), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, A|V|E },
  #endif
 -{"apply_cropping", NULL, OFFSET(apply_cropping), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, V | D },
 +{"apply_cropping", NULL, OFFSET(apply_cropping), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, V | D },
 +{"skip_alpha", "Skip processing alpha", OFFSET(skip_alpha), AV_OPT_TYPE_BOOL, {.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" },
 +{"tt", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_FIELD_TT }, 0, 0, V|D|E, "field_order" },
 +{"bb", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_FIELD_BB }, 0, 0, V|D|E, "field_order" },
 +{"tb", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_FIELD_TB }, 0, 0, V|D|E, "field_order" },
 +{"bt", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_FIELD_BT }, 0, 0, V|D|E, "field_order" },
 +{"dump_separator", "set information dump field separator", OFFSET(dump_separator), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, A|V|S|D|E},
 +{"codec_whitelist", "List of decoders that are allowed to be used", OFFSET(codec_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN, CHAR_MAX, A|V|S|D },
 +{"pixel_format", "set pixel format", OFFSET(pix_fmt), AV_OPT_TYPE_PIXEL_FMT, {.i64=AV_PIX_FMT_NONE}, -1, INT_MAX, 0 },
 +{"video_size", "set video size", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str=NULL}, 0, INT_MAX, 0 },
 +{"max_pixels", "Maximum number of pixels", OFFSET(max_pixels), AV_OPT_TYPE_INT64, {.i64 = INT_MAX }, 0, INT_MAX, A|V|S|D|E },
 +{"hwaccel_flags", NULL, OFFSET(hwaccel_flags), AV_OPT_TYPE_FLAGS, {.i64 = AV_HWACCEL_FLAG_IGNORE_LEVEL }, 0, UINT_MAX, V|D, "hwaccel_flags"},
 +{"ignore_level", "ignore level even if the codec level used is unknown or higher than the maximum supported level reported by the hardware driver", 0, AV_OPT_TYPE_CONST, { .i64 = AV_HWACCEL_FLAG_IGNORE_LEVEL }, INT_MIN, INT_MAX, V | D, "hwaccel_flags" },
 +{"allow_high_depth", "allow to output YUV pixel formats with a different chroma sampling than 4:2:0 and/or other than 8 bits per component", 0, AV_OPT_TYPE_CONST, {.i64 = AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH }, INT_MIN, INT_MAX, V | D, "hwaccel_flags"},
 +{"allow_profile_mismatch", "attempt to decode anyway if HW accelerated decoder's supported profiles do not exactly match the stream", 0, AV_OPT_TYPE_CONST, {.i64 = AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH }, INT_MIN, INT_MAX, V | D, "hwaccel_flags"},
+ {"extra_hw_frames", "Number of extra hardware frames to allocate for the user", OFFSET(extra_hw_frames), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, V|D },
  {NULL},
  };
  
diff --cc libavcodec/version.h
index e36cea30b5,36a014959e..3597a1a380
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@@ -27,9 -27,9 +27,9 @@@
  
  #include "libavutil/version.h"
  
 -#define LIBAVCODEC_VERSION_MAJOR 58
 -#define LIBAVCODEC_VERSION_MINOR  9
 -#define LIBAVCODEC_VERSION_MICRO  0
 +#define LIBAVCODEC_VERSION_MAJOR  58
- #define LIBAVCODEC_VERSION_MINOR  10
++#define LIBAVCODEC_VERSION_MINOR  11
 +#define LIBAVCODEC_VERSION_MICRO 100
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \



More information about the ffmpeg-cvslog mailing list