The crop filter has no effect on scale_qsv:
-vf crop=100:100,scale_qsv=300x300
Hardware frames (AV_PIX_FMT_FLAG_HWACCEL) are expected to use the crop_*
properties,
as seen in the implementation vf_crop.c.
This patch is slightly different from the previously submitted patches
since qsv supports frame crop via the vpp_qsv filter. If no explicit crop
is detected via that filter, AVFrame.crop_* will be used instead.
Removal of vpp_qsv's crop argument may be warranted.
---
libavfilter/qsvvpp.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 0818ada117..05ce387bc3 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -467,6 +467,16 @@ static QSVFrame *submit_frame(QSVVPPContext *s,
AVFilterLink *inlink, AVFrame *p
else if (qsv_frame->frame->repeat_pict == 4)
qsv_frame->surface.Info.PicStruct |= MFX_PICSTRUCT_FRAME_TRIPLING;
+ // if crop arguments are not present from the vpp_qsv filter, use the
provided AVFrame
+ // crop_* members instead.
+ if (!qsv_frame->surface.Info.CropX && !qsv_frame->surface.Info.CropY
+ && qsv_frame->surface.Info.CropW == picref->width &&
qsv_frame->surface.Info.CropH == picref->height) {
+ qsv_frame->surface.Info.CropW = (mfxU16)((picref->width -
picref->crop_right) - picref->crop_left);
+ qsv_frame->surface.Info.CropH = (mfxU16)((picref->height -
picref->crop_bottom) - picref->crop_top);
+ qsv_frame->surface.Info.CropX = (mfxU16)picref->crop_left;
+ qsv_frame->surface.Info.CropY = (mfxU16)picref->crop_top;
+ }
+
return qsv_frame;
}
--
2.39.3 (Apple Git-146)
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".