[FFmpeg-devel] [PATCH, v2] lavu/hwcontext_qsv: Fix the realign check for hwupload

Fu, Linjie linjie.fu at intel.com
Thu Apr 11 10:58:33 EEST 2019


> -----Original Message-----
> From: Li, Zhong
> Sent: Thursday, April 11, 2019 10:51
> To: FFmpeg development discussions and patches <ffmpeg-
> devel at ffmpeg.org>
> Cc: Fu, Linjie <linjie.fu at intel.com>
> Subject: RE: [FFmpeg-devel] [PATCH, v2] lavu/hwcontext_qsv: Fix the realign
> check for hwupload
> 
> > From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On
> Behalf
> > Of Linjie Fu
> > Sent: Wednesday, April 10, 2019 7:56 PM
> > To: ffmpeg-devel at ffmpeg.org
> > Cc: Fu, Linjie <linjie.fu at intel.com>
> > Subject: [FFmpeg-devel] [PATCH, v2] lavu/hwcontext_qsv: Fix the realign
> > check for hwupload
> >
> > Fix the aligned check in hwupload, input surface should be 16 aligned too.
> >
> > Fix #7830.
> >
> > Signed-off-by: Linjie Fu <linjie.fu at intel.com>
> > ---
> >
> >  libavutil/hwcontext_qsv.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index
> > b6d8bfe2bf..8b000fe636 100644
> > --- a/libavutil/hwcontext_qsv.c
> > +++ b/libavutil/hwcontext_qsv.c
> > @@ -892,7 +892,8 @@ static int
> > qsv_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst,
> >          return ret;
> >
> >
> > -    if (src->height & 16 || src->linesize[0] & 16) {
> > +    if (src->height & 15 || src->width & 15 ||
> > +                            src->linesize[0] & 15) {
> 
> Should be better to use FFALIGN()
> 
> Another question is it really necessary to check width alignment if we already
> checked linesize to fix this issue?
> (I guess it it not necessary, and if it is needed, many other places probably
> needed to be changed too.)

Checked the code in qsvvpp.c and qsvenc.c, it has the same check using &:

libavcodec/qsvenc.c:         if ((frame->height & 31 || frame->linesize[0] & (q->width_align - 1)) ||
libavfilter/qsvvpp.c:        if (picref->height & 31 || picref->linesize[0] & 31) {

These should be matched, so the FFALIGN is better for all?

For the width check, added for redundant check, can be removed to match the whole behavior.

Thanks for comments.
 


More information about the ffmpeg-devel mailing list