[FFmpeg-devel] [PATCH v5 1/2] vaapi: support VAProfileH264High10 decoding
Xiang, Haihao
haihao.xiang at intel.com
Thu Apr 6 10:06:51 EEST 2023
On Vr, 2023-03-31 at 19:54 +0800, jianfeng.zheng wrote:
> see https://github.com/intel/libva/pull/664
>
> Signed-off-by: jianfeng.zheng <jianfeng.zheng at mthreads.com>
> ---
> libavcodec/h264_slice.c | 9 ++++++++-
> libavcodec/vaapi_decode.c | 5 +++++
> 2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index 7767e16cf1..d05b83a121 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -809,8 +809,15 @@ static enum AVPixelFormat get_pixel_format(H264Context
> *h, int force_callback)
> *fmt++ = AV_PIX_FMT_YUV444P10;
> } else if (CHROMA422(h))
> *fmt++ = AV_PIX_FMT_YUV422P10;
> - else
> + else {
> +#if CONFIG_H264_VAAPI_HWACCEL
> + // Just add as candidate. Whether VAProfileH264High10 usable or
> + // not is decided by vaapi_decode_make_config() defined in FFmpeg
> + // and vaQueryCodingProfile() defined in libva.
> + *fmt++ = AV_PIX_FMT_VAAPI;
> +#endif
> *fmt++ = AV_PIX_FMT_YUV420P10;
> + }
> break;
> case 12:
> if (CHROMA444(h)) {
> diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
> index ab8c12e364..dd55cbd6f1 100644
> --- a/libavcodec/vaapi_decode.c
> +++ b/libavcodec/vaapi_decode.c
> @@ -398,6 +398,11 @@ static const struct {
> MAP(MPEG4, MPEG4_ADVANCED_SIMPLE,
> MPEG4AdvancedSimple),
> MAP(MPEG4, MPEG4_MAIN, MPEG4Main ),
> +#if VA_CHECK_VERSION(1, 18, 0)
> + MAP(H264, H264_HIGH_10_INTRA,
> + H264High10 ),
> + MAP(H264, H264_HIGH_10, H264High10 ),
> +#endif
> MAP(H264, H264_CONSTRAINED_BASELINE,
> H264ConstrainedBaseline),
> MAP(H264, H264_MAIN, H264Main ),
Pathset LGTM, but I wonder high 10 and high 10 intra are supported for decoding
however only high 10 is supported for encoding. does high 10 intra not work as
expected for encoding ?
Thanks
Haihao
More information about the ffmpeg-devel
mailing list