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:
parent
bd31c61cf9
commit
8a62d2c28f
2 changed files with 75 additions and 19 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue