diff options
-rw-r--r-- | libavcodec/av1dec.c | 19 | ||||
-rw-r--r-- | libavcodec/nvdec.c | 3 | ||||
-rw-r--r-- | libavcodec/version.h | 2 |
3 files changed, 20 insertions, 4 deletions
diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index d7b2ac9d46..bc897af9cf 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -387,9 +387,12 @@ static int get_pixel_format(AVCodecContext *avctx) av_log(avctx, AV_LOG_WARNING, "Unknown AV1 pixel format.\n"); } } else { - if (seq->color_config.subsampling_x == 1 && - seq->color_config.subsampling_y == 1) - pix_fmt = AV_PIX_FMT_YUV440P; + if (bit_depth == 8) + pix_fmt = AV_PIX_FMT_GRAY8; + else if (bit_depth == 10) + pix_fmt = AV_PIX_FMT_GRAY10; + else if (bit_depth == 12) + pix_fmt = AV_PIX_FMT_GRAY12; else av_log(avctx, AV_LOG_WARNING, "Unknown AV1 pixel format.\n"); } @@ -432,6 +435,16 @@ static int get_pixel_format(AVCodecContext *avctx) *fmtp++ = AV_PIX_FMT_VAAPI; #endif break; + case AV_PIX_FMT_GRAY8: +#if CONFIG_AV1_NVDEC_HWACCEL + *fmtp++ = AV_PIX_FMT_CUDA; +#endif + break; + case AV_PIX_FMT_GRAY10: +#if CONFIG_AV1_NVDEC_HWACCEL + *fmtp++ = AV_PIX_FMT_CUDA; +#endif + break; } *fmtp++ = s->pix_fmt; diff --git a/libavcodec/nvdec.c b/libavcodec/nvdec.c index 48281293ce..23c84d9acf 100644 --- a/libavcodec/nvdec.c +++ b/libavcodec/nvdec.c @@ -83,6 +83,9 @@ static int map_chroma_format(enum AVPixelFormat pix_fmt) { int shift_h = 0, shift_v = 0; + if (av_pix_fmt_count_planes(pix_fmt) == 1) + return cudaVideoChromaFormat_Monochrome; + av_pix_fmt_get_chroma_sub_sample(pix_fmt, &shift_h, &shift_v); if (shift_h == 1 && shift_v == 1) diff --git a/libavcodec/version.h b/libavcodec/version.h index 4ee221b7f2..1c10d105f6 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 115 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ |