mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-15 11:51:33 +00:00
vf_hwupload/hwmap: Support setting a fixed pool size
These filters do not directly know whether the API they are using will support dynamic frame pools, so this is somewhat tricky. If the user sets extra_hw_frames, we assume that they are aware of the problem and set a fixed size based on that. If not, most cases use dynamic sizing just like they did previously. The hardware-reverse-mapping case for hwmap previously had a large fixed size (64) here, primarily as a hack for QSV use - this is removed and extra_hw_frames will need to be set for QSV to work since it requires fixed-size pools (as the other cases do, and which didn't work before).
This commit is contained in:
parent
e4cdef0026
commit
c6bc18bc12
@ -138,7 +138,9 @@ static int hwmap_config_output(AVFilterLink *outlink)
|
||||
frames->sw_format = hwfc->sw_format;
|
||||
frames->width = hwfc->width;
|
||||
frames->height = hwfc->height;
|
||||
frames->initial_pool_size = 64;
|
||||
|
||||
if (avctx->extra_hw_frames >= 0)
|
||||
frames->initial_pool_size = 2 + avctx->extra_hw_frames;
|
||||
|
||||
err = av_hwframe_ctx_init(ctx->hwframes_ref);
|
||||
if (err < 0) {
|
||||
@ -218,6 +220,9 @@ static int hwmap_config_output(AVFilterLink *outlink)
|
||||
hwfc->width = inlink->w;
|
||||
hwfc->height = inlink->h;
|
||||
|
||||
if (avctx->extra_hw_frames >= 0)
|
||||
hwfc->initial_pool_size = 2 + avctx->extra_hw_frames;
|
||||
|
||||
err = av_hwframe_ctx_init(ctx->hwframes_ref);
|
||||
if (err < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Failed to create frame "
|
||||
|
@ -133,6 +133,9 @@ static int hwupload_config_output(AVFilterLink *outlink)
|
||||
ctx->hwframes->width = inlink->w;
|
||||
ctx->hwframes->height = inlink->h;
|
||||
|
||||
if (avctx->extra_hw_frames >= 0)
|
||||
ctx->hwframes->initial_pool_size = 2 + avctx->extra_hw_frames;
|
||||
|
||||
err = av_hwframe_ctx_init(ctx->hwframes_ref);
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
|
Loading…
Reference in New Issue
Block a user