[FFmpeg-devel] [PATCH 2/2] lavf: use a video frame pool for each link of the filtergraph
Clément Bœsch
u at pkh.me
Fri Dec 11 14:04:08 CET 2015
On Fri, Dec 11, 2015 at 01:32:47PM +0100, Matthieu Bouron wrote:
[...]
> diff --git a/libavfilter/video.c b/libavfilter/video.c
> index 0274fc1..5b0b7f9 100644
> --- a/libavfilter/video.c
> +++ b/libavfilter/video.c
> @@ -32,6 +32,8 @@
> #include "internal.h"
> #include "video.h"
>
> +#define BUFFER_ALIGN 32
> +
> AVFrame *ff_null_get_video_buffer(AVFilterLink *link, int w, int h)
> {
> return ff_get_video_buffer(link->dst->outputs[0], w, h);
> @@ -42,21 +44,35 @@ AVFrame *ff_null_get_video_buffer(AVFilterLink *link, int w, int h)
> * alloc & free cycle currently implemented. */
Pasting the whole comment for context:
/* TODO: set the buffer's priv member to a context structure for the whole
* filter chain. This will allow for a buffer pool instead of the constant
* alloc & free cycle currently implemented. */
Is this comment still relevant?
> AVFrame *ff_default_get_video_buffer(AVFilterLink *link, int w, int h)
> {
> - AVFrame *frame = av_frame_alloc();
> - int ret;
> + int pool_width = 0;
> + int pool_height = 0;
> + int pool_align = 0;
> + enum AVPixelFormat pool_format = AV_PIX_FMT_NONE;
>
> - if (!frame)
> - return NULL;
> + if (!link->video_frame_pool) {
> + link->video_frame_pool = av_video_frame_pool_init(av_buffer_allocz, w, h,
> + link->format, BUFFER_ALIGN);
> + if (!link->video_frame_pool)
> + return NULL;
> + } else {
> + if (av_video_frame_pool_get_config(link->video_frame_pool,
> + &pool_width, &pool_height,
> + &pool_format, &pool_align) < 0) {
> + return NULL;
> + }
>
> - frame->width = w;
> - frame->height = h;
> - frame->format = link->format;
> + if (pool_width != w || pool_height != h ||
> + pool_format != link->format || pool_align != BUFFER_ALIGN) {
If pool_align > BUFFER_ALIGN it can also work, no?
Same question if the pool_width and height are actually larger? Maybe you want
to shrink the memory requirement in this case though.
[...]
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151211/87b35d02/attachment.sig>
More information about the ffmpeg-devel
mailing list