mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-17 20:17:55 +02:00
Merge commit '5b145290df2998a9836a93eb925289c6c8b63af0'
* commit '5b145290df2998a9836a93eb925289c6c8b63af0': lavc: Add support for increasing hardware frame pool sizes Merged-by: Mark Thompson <sw@jkqxz.net>
This commit is contained in:
commit
d23fff0d8a
@ -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().
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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},
|
||||
};
|
||||
|
||||
|
@ -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, \
|
||||
|
Loading…
x
Reference in New Issue
Block a user