[FFmpeg-cvslog] vf_scale_vaapi: Crop input surface to active region
Mark Thompson
git at videolan.org
Mon Mar 20 17:46:08 EET 2017
ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Tue Sep 13 20:50:57 2016 +0100| [bdf7610eb266fd3de650040c97328791868abd82] | committer: Mark Thompson
vf_scale_vaapi: Crop input surface to active region
If the input has been decoded from a stream which uses edge cropping
then the whole surface need not be valid. This defines an input
region for the scaler so we only use the active area of the frame.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bdf7610eb266fd3de650040c97328791868abd82
---
libavfilter/vf_scale_vaapi.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vf_scale_vaapi.c b/libavfilter/vf_scale_vaapi.c
index 561e09c..704456d 100644
--- a/libavfilter/vf_scale_vaapi.c
+++ b/libavfilter/vf_scale_vaapi.c
@@ -259,6 +259,7 @@ static int scale_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame)
VASurfaceID input_surface, output_surface;
VAProcPipelineParameterBuffer params;
VABufferID params_id;
+ VARectangle input_region;
VAStatus vas;
int err;
@@ -292,8 +293,17 @@ static int scale_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame)
memset(¶ms, 0, sizeof(params));
+ // If there were top/left cropping, it could be taken into
+ // account here.
+ input_region = (VARectangle) {
+ .x = 0,
+ .y = 0,
+ .width = input_frame->width,
+ .height = input_frame->height,
+ };
+
params.surface = input_surface;
- params.surface_region = 0;
+ params.surface_region = &input_region;
params.surface_color_standard =
vaapi_proc_colour_standard(input_frame->colorspace);
More information about the ffmpeg-cvslog
mailing list