> On Tue, Nov 19, 2019 at 4:24 PM Wangfei <fei.w.w...@intel.com> wrote:
> >
> > flags and value.type is needed when pass VASurfaceAttrib to driver.
> > Otherwise the attribute will be considered invalid in driver.
> >
> > Signed-off-by: Wangfei <fei.w.w...@intel.com>
> > ---
> >  libavcodec/vaapi_decode.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
> > index 69512e1d45..a93aba5a5d 100644
> > --- a/libavcodec/vaapi_decode.c
> > +++ b/libavcodec/vaapi_decode.c
> > @@ -350,6 +350,8 @@ static int
> > vaapi_decode_find_best_format(AVCodecContext *avctx,
> >
> >          ctx->pixel_format_attribute = (VASurfaceAttrib) {
> >              .type          = VASurfaceAttribPixelFormat,
> > +            .flags         = VA_SURFACE_ATTRIB_SETTABLE,
> > +            .value.type    = VAGenericValueTypeInteger,
> I can't found any description in libva about this part, do you have any other
> docs?
I checked the logic of vaCreateSurfaces implementation in media-driver, it will 
check flags and value.type in VASurfaceAttrib when using it. If leaks of the 
info, it will consider the attribute is invalid or assert(in this case, flags 
checked first, so no assert occurred.):
https://github.com/intel/media-driver/blob/8a8b8ae263a04cb5dd384d4625215cf296d2cc59/media_driver/linux/common/ddi/media_libva.cpp#L2149

On the other hand, there is another place in ffmpeg-vaapi that sets 
VASurfaceAttrib, and it filled flags and value.type:
https://github.com/FFmpeg/FFmpeg/blob/d73f06270600c37c74beeceac37f593838ced383/libavutil/hwcontext_vaapi.c#L527
So I believe here we need do the same thing.

> >              .value.value.i = best_fourcc,
> >          };
> >
> > --
> > 2.17.1
> >
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to