mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-21 06:20:09 +01:00
vaapi_encode: Maintain a pool of bitstream output buffers
Previously we would allocate a new one for every frame. This instead maintains an AVBufferPool of them to use as-needed. Also makes the maximum size of an output buffer adapt to the frame size - the fixed upper bound was a bit too easy to hit when encoding large pictures at high quality.
This commit is contained in:
@@ -39,7 +39,6 @@ enum {
|
||||
MAX_PARAM_BUFFERS = 16,
|
||||
MAX_REORDER_DELAY = 16,
|
||||
MAX_PARAM_BUFFER_SIZE = 1024,
|
||||
MAX_OUTPUT_BUFFER_SIZE = 1024 * 1024,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -84,6 +83,7 @@ typedef struct VAAPIEncodePicture {
|
||||
int nb_param_buffers;
|
||||
VABufferID param_buffers[MAX_PARAM_BUFFERS];
|
||||
|
||||
AVBufferRef *output_buffer_ref;
|
||||
VABufferID output_buffer;
|
||||
|
||||
void *priv_data;
|
||||
@@ -130,6 +130,8 @@ typedef struct VAAPIEncodeContext {
|
||||
AVBufferRef *recon_frames_ref;
|
||||
AVHWFramesContext *recon_frames;
|
||||
|
||||
AVBufferPool *output_buffer_pool;
|
||||
|
||||
VAConfigAttrib config_attributes[MAX_CONFIG_ATTRIBUTES];
|
||||
int nb_config_attributes;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user