[FFmpeg-devel] [PATCH 1/4] vaapi: define a single pixel format for VA-API (AV_PIX_FMT_VAAPI).
wm4
nfxjfg at googlemail.com
Mon Aug 17 21:53:14 CEST 2015
On Mon, 17 Aug 2015 19:17:50 +0200
Gwenole Beauchesne <gb.devel at gmail.com> wrote:
> Deprecate older VA pixel formats (MOCO, IDCT) as it is now very unlikely
> to ever be useful in the future. Only keep plain AV_PIX_FMT_VAAPI format
> that is aliased to the older VLD variant.
>
> Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
> ---
> libavcodec/h263dec.c | 2 +-
> libavcodec/h264_slice.c | 2 +-
> libavcodec/mpeg12dec.c | 2 +-
> libavcodec/vaapi_h264.c | 2 +-
> libavcodec/vaapi_mpeg2.c | 2 +-
> libavcodec/vaapi_mpeg4.c | 4 ++--
> libavcodec/vaapi_vc1.c | 4 ++--
> libavcodec/vc1dec.c | 2 +-
> libavutil/pixdesc.c | 9 +++++++++
> libavutil/pixfmt.h | 11 +++++++++++
> libavutil/version.h | 3 +++
> 11 files changed, 33 insertions(+), 10 deletions(-)
>
> diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
> index 7fa7090..e647e40 100644
> --- a/libavcodec/h263dec.c
> +++ b/libavcodec/h263dec.c
> @@ -718,7 +718,7 @@ frame_end:
>
> const enum AVPixelFormat ff_h263_hwaccel_pixfmt_list_420[] = {
> #if CONFIG_H263_VAAPI_HWACCEL || CONFIG_MPEG4_VAAPI_HWACCEL
> - AV_PIX_FMT_VAAPI_VLD,
> + AV_PIX_FMT_VAAPI,
> #endif
> #if CONFIG_H263_VDPAU_HWACCEL || CONFIG_MPEG4_VDPAU_HWACCEL
> AV_PIX_FMT_VDPAU,
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index 48f501b..7b35c08 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -943,7 +943,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
> *fmt++ = AV_PIX_FMT_D3D11VA_VLD;
> #endif
> #if CONFIG_H264_VAAPI_HWACCEL
> - *fmt++ = AV_PIX_FMT_VAAPI_VLD;
> + *fmt++ = AV_PIX_FMT_VAAPI;
> #endif
> #if CONFIG_H264_VDA_HWACCEL
> *fmt++ = AV_PIX_FMT_VDA_VLD;
> diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
> index c7a5701..d2bedbc 100644
> --- a/libavcodec/mpeg12dec.c
> +++ b/libavcodec/mpeg12dec.c
> @@ -1209,7 +1209,7 @@ static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = {
> AV_PIX_FMT_D3D11VA_VLD,
> #endif
> #if CONFIG_MPEG2_VAAPI_HWACCEL
> - AV_PIX_FMT_VAAPI_VLD,
> + AV_PIX_FMT_VAAPI,
> #endif
> #if CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL
> AV_PIX_FMT_VIDEOTOOLBOX,
> diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c
> index 151aca9..55ee2fc 100644
> --- a/libavcodec/vaapi_h264.c
> +++ b/libavcodec/vaapi_h264.c
> @@ -359,7 +359,7 @@ AVHWAccel ff_h264_vaapi_hwaccel = {
> .name = "h264_vaapi",
> .type = AVMEDIA_TYPE_VIDEO,
> .id = AV_CODEC_ID_H264,
> - .pix_fmt = AV_PIX_FMT_VAAPI_VLD,
> + .pix_fmt = AV_PIX_FMT_VAAPI,
> .start_frame = vaapi_h264_start_frame,
> .end_frame = vaapi_h264_end_frame,
> .decode_slice = vaapi_h264_decode_slice,
> diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c
> index 87fab89..27c69cd 100644
> --- a/libavcodec/vaapi_mpeg2.c
> +++ b/libavcodec/vaapi_mpeg2.c
> @@ -138,7 +138,7 @@ AVHWAccel ff_mpeg2_vaapi_hwaccel = {
> .name = "mpeg2_vaapi",
> .type = AVMEDIA_TYPE_VIDEO,
> .id = AV_CODEC_ID_MPEG2VIDEO,
> - .pix_fmt = AV_PIX_FMT_VAAPI_VLD,
> + .pix_fmt = AV_PIX_FMT_VAAPI,
> .start_frame = vaapi_mpeg2_start_frame,
> .end_frame = ff_vaapi_mpeg_end_frame,
> .decode_slice = vaapi_mpeg2_decode_slice,
> diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c
> index 9b283f7..5b2e9d4 100644
> --- a/libavcodec/vaapi_mpeg4.c
> +++ b/libavcodec/vaapi_mpeg4.c
> @@ -141,7 +141,7 @@ AVHWAccel ff_mpeg4_vaapi_hwaccel = {
> .name = "mpeg4_vaapi",
> .type = AVMEDIA_TYPE_VIDEO,
> .id = AV_CODEC_ID_MPEG4,
> - .pix_fmt = AV_PIX_FMT_VAAPI_VLD,
> + .pix_fmt = AV_PIX_FMT_VAAPI,
> .start_frame = vaapi_mpeg4_start_frame,
> .end_frame = ff_vaapi_mpeg_end_frame,
> .decode_slice = vaapi_mpeg4_decode_slice,
> @@ -153,7 +153,7 @@ AVHWAccel ff_h263_vaapi_hwaccel = {
> .name = "h263_vaapi",
> .type = AVMEDIA_TYPE_VIDEO,
> .id = AV_CODEC_ID_H263,
> - .pix_fmt = AV_PIX_FMT_VAAPI_VLD,
> + .pix_fmt = AV_PIX_FMT_VAAPI,
> .start_frame = vaapi_mpeg4_start_frame,
> .end_frame = ff_vaapi_mpeg_end_frame,
> .decode_slice = vaapi_mpeg4_decode_slice,
> diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c
> index 7ef9f2a..63d514d 100644
> --- a/libavcodec/vaapi_vc1.c
> +++ b/libavcodec/vaapi_vc1.c
> @@ -339,7 +339,7 @@ AVHWAccel ff_wmv3_vaapi_hwaccel = {
> .name = "wmv3_vaapi",
> .type = AVMEDIA_TYPE_VIDEO,
> .id = AV_CODEC_ID_WMV3,
> - .pix_fmt = AV_PIX_FMT_VAAPI_VLD,
> + .pix_fmt = AV_PIX_FMT_VAAPI,
> .start_frame = vaapi_vc1_start_frame,
> .end_frame = ff_vaapi_mpeg_end_frame,
> .decode_slice = vaapi_vc1_decode_slice,
> @@ -350,7 +350,7 @@ AVHWAccel ff_vc1_vaapi_hwaccel = {
> .name = "vc1_vaapi",
> .type = AVMEDIA_TYPE_VIDEO,
> .id = AV_CODEC_ID_VC1,
> - .pix_fmt = AV_PIX_FMT_VAAPI_VLD,
> + .pix_fmt = AV_PIX_FMT_VAAPI,
> .start_frame = vaapi_vc1_start_frame,
> .end_frame = ff_vaapi_mpeg_end_frame,
> .decode_slice = vaapi_vc1_decode_slice,
> diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
> index abaa0b4..992ca96 100644
> --- a/libavcodec/vc1dec.c
> +++ b/libavcodec/vc1dec.c
> @@ -1101,7 +1101,7 @@ static const enum AVPixelFormat vc1_hwaccel_pixfmt_list_420[] = {
> AV_PIX_FMT_D3D11VA_VLD,
> #endif
> #if CONFIG_VC1_VAAPI_HWACCEL
> - AV_PIX_FMT_VAAPI_VLD,
> + AV_PIX_FMT_VAAPI,
> #endif
> #if CONFIG_VC1_VDPAU_HWACCEL
> AV_PIX_FMT_VDPAU,
> diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
> index eb0dc9d..eb52113 100644
> --- a/libavutil/pixdesc.c
> +++ b/libavutil/pixdesc.c
> @@ -1208,6 +1208,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
> },
> .flags = AV_PIX_FMT_FLAG_RGB,
> },
> +#if FF_API_VAAPI
> [AV_PIX_FMT_VAAPI_MOCO] = {
> .name = "vaapi_moco",
> .log2_chroma_w = 1,
> @@ -1226,6 +1227,14 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
> .log2_chroma_h = 1,
> .flags = AV_PIX_FMT_FLAG_HWACCEL,
> },
> +#else
> + [AV_PIX_FMT_VAAPI] = {
> + .name = "vaapi",
> + .log2_chroma_w = 1,
> + .log2_chroma_h = 1,
> + .flags = AV_PIX_FMT_FLAG_HWACCEL,
> + },
> +#endif
> [AV_PIX_FMT_YUV420P9LE] = {
> .name = "yuv420p9le",
> .nb_components = 3,
> diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
> index 5cdbeb9..399e466 100644
> --- a/libavutil/pixfmt.h
> +++ b/libavutil/pixfmt.h
> @@ -121,9 +121,20 @@ enum AVPixelFormat {
> AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined
> AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined
>
> +#if FF_API_VAAPI
> + /** @name Deprecated pixel formats */
> + /**@{*/
> AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
> AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
> AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
> + /**@}*/
> +#endif
> +
> + /**
> + * Hardware acceleration through VA-API, data[3] contains a
> + * VASurfaceID.
> + */
> + AV_PIX_FMT_VAAPI = AV_PIX_FMT_VAAPI_VLD,
>
> AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
> AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
> diff --git a/libavutil/version.h b/libavutil/version.h
> index 653f530..3af71cd 100644
> --- a/libavutil/version.h
> +++ b/libavutil/version.h
> @@ -107,6 +107,9 @@
> #ifndef FF_API_AVFRAME_LAVC
> #define FF_API_AVFRAME_LAVC (LIBAVUTIL_VERSION_MAJOR < 55)
> #endif
> +#ifndef FF_API_VAAPI
> +#define FF_API_VAAPI (LIBAVUTIL_VERSION_MAJOR < 55)
> +#endif
> #ifndef FF_API_VDPAU
> #define FF_API_VDPAU (LIBAVUTIL_VERSION_MAJOR < 55)
> #endif
Seems fine, although I don't see the immediate need to rename the VAAPI
pixfmt. (We also have AV_PIX_FMT_D3D11VA_VLD etc.)
More information about the ffmpeg-devel
mailing list