On 15/04/16 09:50, Anton Khirnov wrote:
> The reasoning is the same as for the previous commit.
> ---
>  libavfilter/vf_hwdownload.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/libavfilter/vf_hwdownload.c b/libavfilter/vf_hwdownload.c
> index 0ba1d98..0c0d630 100644
> --- a/libavfilter/vf_hwdownload.c
> +++ b/libavfilter/vf_hwdownload.c
> @@ -141,7 +141,8 @@ static int hwdownload_filter_frame(AVFilterLink *link, 
> AVFrame *input)
>          goto fail;
>      }
>  
> -    output = ff_get_video_buffer(outlink, outlink->w, outlink->h);
> +    output = ff_get_video_buffer(outlink, ctx->hwframes->width,
> +                                 ctx->hwframes->height);
>      if (!output) {
>          err = AVERROR(ENOMEM);
>          goto fail;
> @@ -153,6 +154,9 @@ static int hwdownload_filter_frame(AVFilterLink *link, 
> AVFrame *input)
>          goto fail;
>      }
>  
> +    output->width  = outlink->w;
> +    output->height = outlink->h;
> +
>      err = av_frame_copy_props(output, input);
>      if (err < 0)
>          goto fail;
> 

This kills hwdownload from vaapi for cropped frames because that uses
av_frame_copy() in av_hwframe_transfer_data() which ensures that the sizes 
match.

For example:

./avconv -vaapi_device /dev/dri/card0 -hwaccel vaapi -hwaccel_output_format
vaapi -i test1080p.mp4 -an -vf 'format=vaapi|nv12,hwupload,hwdownload' out.mp4

Patch 2/3 will also do this, but I don't see an easy example.

Probably easier to fix on the vaapi side by messing with the sizes somehow
before the copy?

- Mark

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to