summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/av1dec.c19
-rw-r--r--libavcodec/nvdec.c3
-rw-r--r--libavcodec/version.h2
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, \