Message ID | 20240520020553.1155143-1-fei.w.wang@intel.com |
---|---|
State | Accepted |
Commit | 1c56263704106c86c5b072921c9ef7f70563624a |
Headers | show |
Series | [FFmpeg-devel,v1,1/2] lavc/qsvdec: Allow decoders to export crop information | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
On Ma, 2024-05-20 at 10:05 +0800, fei.w.wang-at-intel.com@ffmpeg.org wrote: > From: Fei Wang <fei.w.wang@intel.com> > > Signed-off-by: Fei Wang <fei.w.wang@intel.com> > --- > libavcodec/qsvdec.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c > index a51ddace62..12cf630593 100644 > --- a/libavcodec/qsvdec.c > +++ b/libavcodec/qsvdec.c > @@ -859,6 +859,10 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext > *q, > else > frame->flags &= ~AV_FRAME_FLAG_KEY; > } > + frame->crop_left = outsurf->Info.CropX; > + frame->crop_top = outsurf->Info.CropY; > + frame->crop_right = outsurf->Info.Width - (outsurf->Info.CropX + > outsurf->Info.CropW); > + frame->crop_bottom = outsurf->Info.Height - (outsurf->Info.CropY + > outsurf->Info.CropH); > > /* update the surface properties */ > if (avctx->pix_fmt == AV_PIX_FMT_QSV) > @@ -1148,7 +1152,7 @@ const FFCodec ff_##x##_qsv_decoder = { \ > .p.priv_class = &x##_qsv_class, \ > .hw_configs = qsv_hw_configs, \ > .p.wrapper_name = "qsv", \ > - .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, \ > + .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | > FF_CODEC_CAP_EXPORTS_CROPPING, \ > }; \ > > #define DEFINE_QSV_DECODER(x, X, bsf_name) DEFINE_QSV_DECODER_WITH_OPTION(x, > X, bsf_name, options) patchset LGTM, will apply Thanks Haihao
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index a51ddace62..12cf630593 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -859,6 +859,10 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext *q, else frame->flags &= ~AV_FRAME_FLAG_KEY; } + frame->crop_left = outsurf->Info.CropX; + frame->crop_top = outsurf->Info.CropY; + frame->crop_right = outsurf->Info.Width - (outsurf->Info.CropX + outsurf->Info.CropW); + frame->crop_bottom = outsurf->Info.Height - (outsurf->Info.CropY + outsurf->Info.CropH); /* update the surface properties */ if (avctx->pix_fmt == AV_PIX_FMT_QSV) @@ -1148,7 +1152,7 @@ const FFCodec ff_##x##_qsv_decoder = { \ .p.priv_class = &x##_qsv_class, \ .hw_configs = qsv_hw_configs, \ .p.wrapper_name = "qsv", \ - .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, \ + .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | FF_CODEC_CAP_EXPORTS_CROPPING, \ }; \ #define DEFINE_QSV_DECODER(x, X, bsf_name) DEFINE_QSV_DECODER_WITH_OPTION(x, X, bsf_name, options)