> 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".