> -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of > Mark Thompson > Sent: Friday, September 13, 2019 07:48 > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH 4/6] lavu/hwcontext_vaapi: add > vaapi_format_map support for AYUV/Y210/Y410 > > On 10/09/2019 17:07, Linjie Fu wrote: > > There is no VA_RT_FORMAT_AYUV in defined in libva, and currently in > > media-driver, VA_FOURCC_AYUV is used to represent > VA_RT_FORMAT_AYUV. > > That doesn't make sense - VA_RT_FORMAT_* is a bit mask, so using > VA_FOURCC_AYUV looks like a random combination of other values. > > > > diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c > > index cf11764..724bbeb 100644 > > --- a/libavutil/hwcontext_vaapi.c > > +++ b/libavutil/hwcontext_vaapi.c > > @@ -116,6 +116,15 @@ static const VAAPIFormatDescriptor > vaapi_format_map[] = { > > #endif > > MAP(UYVY, YUV422, UYVY422, 0), > > MAP(YUY2, YUV422, YUYV422, 0), > > +#ifdef VA_FOURCC_Y210 > > + MAP(Y210, YUV422_10,Y210, 0), > > +#endif > > +#define VA_RT_FORMAT_AYUV VA_FOURCC_AYUV > > + MAP(AYUV, AYUV, AYUV, 0), > > +#undef VA_RT_FORMAT_AYUV > > +#ifdef VA_FOURCC_Y410 > > + MAP(Y410, YUV444_10,Y410, 0), > > That looks suspicious - you've defined Y410 as having an alpha channel, but > that render target format doesn't have one. >
Reconsider about these concerns and collect some information in driver. 1. VA_RT_FORMAT describes the sampling format, several fourcc may have the Same VA_RT_FORMAT. (NV12, YV12, I420 have VA_RT_FORMAT_YUV420) so YUV444 is good for AYUV, and YUV444_10 is good for Y410. (alpha channel is not relevant with the sampling format) 2. In media driver, mediaFMT is actually used for decode which is decided by expected_fourcc. DDI_MEDIA_FORMAT mediaFmt = DdiMedia_OsFormatToMediaFormat(expected_fourcc,format); https://github.com/intel/media-driver/blob/cf80fa0e3c81361696ada1285ea17a417114be47/media_driver/linux/common/ddi/media_libva.cpp#L2222 No declaring for a RT_FORMAT with alpha channel won't do harm to the decode procedure since mediaFMT is actually mapped by FourCC. 3. in CreateDecAttributes and MediaLibvaCaps::CheckEncRTFormat, VA_RT_FORMAT_YUV444 and VA_RT_FORMAT_YUV444_10 are used for MAIN444 and MAIN444_10 https://github.com/intel/media-driver/blob/cf80fa0e3c81361696ada1285ea17a417114be47/media_driver/linux/gen11/ddi/media_libva_caps_g11.cpp#L1189 https://github.com/intel/media-driver/blob/cf80fa0e3c81361696ada1285ea17a417114be47/media_driver/linux/common/ddi/media_libva_caps.cpp#L350 3. If no against, I would like to refine the patch for AYUV and Y410 as follow, and resend the patch. + MAP(AYUV, YUV444, AYUV, 0), +#ifdef VA_FOURCC_Y410 + MAP(Y410, YUV444_10, Y410, 0), +#endif Regards, - linjie _______________________________________________ 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".