diff options
author | Philip Langdale <philipl@overt.org> | 2022-07-23 11:24:33 -0700 |
---|---|---|
committer | Philip Langdale <philipl@overt.org> | 2022-08-03 14:10:55 -0700 |
commit | d3f48e68b3236bc3fbf75cc489d53e9f397f5e0a (patch) | |
tree | f3602adbb12695b7aa46a269cfbd98ffc77c2920 | |
parent | 2b720676e070c9920391ef29d35d8ca6a79bf0c6 (diff) |
lavc/vaapi: Declare support for decoding 8bit 4:4:4 content
Now that we have a combination of capable hardware (new enough Intel)
and a mutually understood format ("AYUV"), we can declare support for
decoding 8bit 4:4:4 content via VAAPI.
This requires listing AYUV as a supported format, and then adding VAAPI
as a supported hwaccel for the relevant codecs (HEVC and VP9). I also
had to add VP9Profile1 to the set of supported profiles for VAAPI as it
was never relevant before.
-rw-r--r-- | Changelog | 1 | ||||
-rw-r--r-- | libavcodec/hevcdec.c | 3 | ||||
-rw-r--r-- | libavcodec/vaapi_decode.c | 2 | ||||
-rw-r--r-- | libavcodec/version.h | 2 | ||||
-rw-r--r-- | libavcodec/vp9.c | 5 |
5 files changed, 12 insertions, 1 deletions
@@ -8,6 +8,7 @@ version <next>: - ffmpeg now requires threading to be built - ffmpeg now runs every muxer in a separate thread - Add new mode to cropdetect filter to detect crop-area based on motion vectors and edges +- VAAPI hwaccel for 8bit 444 HEVC and VP9 version 5.1: diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 9b14fa50f9..539b656c65 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -453,6 +453,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif break; case AV_PIX_FMT_YUV444P: +#if CONFIG_HEVC_VAAPI_HWACCEL + *fmt++ = AV_PIX_FMT_VAAPI; +#endif #if CONFIG_HEVC_VDPAU_HWACCEL *fmt++ = AV_PIX_FMT_VDPAU; #endif diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c index a7abddb06b..db48efc3ed 100644 --- a/libavcodec/vaapi_decode.c +++ b/libavcodec/vaapi_decode.c @@ -267,6 +267,7 @@ static const struct { MAP(422V, YUV440P), // 4:4:4 MAP(444P, YUV444P), + MAP(AYUV, VUYA), // 4:2:0 10-bit #ifdef VA_FOURCC_P010 MAP(P010, P010), @@ -410,6 +411,7 @@ static const struct { MAP(VP9, VP9_0, VP9Profile0 ), #endif #if VA_CHECK_VERSION(0, 39, 0) + MAP(VP9, VP9_1, VP9Profile1 ), MAP(VP9, VP9_2, VP9Profile2 ), #endif #if VA_CHECK_VERSION(1, 8, 0) diff --git a/libavcodec/version.h b/libavcodec/version.h index 4a1205c718..751f0d2645 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #include "version_major.h" #define LIBAVCODEC_VERSION_MINOR 41 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index bd2951c92e..db06acd748 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -234,6 +234,11 @@ static int update_size(AVCodecContext *avctx, int w, int h) *fmtp++ = AV_PIX_FMT_VDPAU; #endif break; + case AV_PIX_FMT_YUV444P: +#if CONFIG_VP9_VAAPI_HWACCEL + *fmtp++ = AV_PIX_FMT_VAAPI; +#endif + break; } *fmtp++ = s->pix_fmt; |