You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/nvenc: add support for new 10 bit MSB pixel formats
This commit is contained in:
@ -68,6 +68,7 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = {
|
|||||||
AV_PIX_FMT_P210,
|
AV_PIX_FMT_P210,
|
||||||
AV_PIX_FMT_P216,
|
AV_PIX_FMT_P216,
|
||||||
#endif
|
#endif
|
||||||
|
AV_PIX_FMT_YUV444P10MSB,
|
||||||
AV_PIX_FMT_YUV444P16, // Truncated to 10bits
|
AV_PIX_FMT_YUV444P16, // Truncated to 10bits
|
||||||
AV_PIX_FMT_0RGB32,
|
AV_PIX_FMT_0RGB32,
|
||||||
AV_PIX_FMT_RGB32,
|
AV_PIX_FMT_RGB32,
|
||||||
@ -76,6 +77,7 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = {
|
|||||||
AV_PIX_FMT_X2RGB10,
|
AV_PIX_FMT_X2RGB10,
|
||||||
AV_PIX_FMT_X2BGR10,
|
AV_PIX_FMT_X2BGR10,
|
||||||
AV_PIX_FMT_GBRP,
|
AV_PIX_FMT_GBRP,
|
||||||
|
AV_PIX_FMT_GBRP10MSB,
|
||||||
AV_PIX_FMT_GBRP16, // Truncated to 10bits
|
AV_PIX_FMT_GBRP16, // Truncated to 10bits
|
||||||
AV_PIX_FMT_CUDA,
|
AV_PIX_FMT_CUDA,
|
||||||
#if CONFIG_D3D11VA
|
#if CONFIG_D3D11VA
|
||||||
@ -98,9 +100,11 @@ const AVCodecHWConfigInternal *const ff_nvenc_hw_configs[] = {
|
|||||||
pix_fmt == AV_PIX_FMT_P016 || \
|
pix_fmt == AV_PIX_FMT_P016 || \
|
||||||
pix_fmt == AV_PIX_FMT_P210 || \
|
pix_fmt == AV_PIX_FMT_P210 || \
|
||||||
pix_fmt == AV_PIX_FMT_P216 || \
|
pix_fmt == AV_PIX_FMT_P216 || \
|
||||||
|
pix_fmt == AV_PIX_FMT_YUV444P10MSB || \
|
||||||
pix_fmt == AV_PIX_FMT_YUV444P16 || \
|
pix_fmt == AV_PIX_FMT_YUV444P16 || \
|
||||||
pix_fmt == AV_PIX_FMT_X2RGB10 || \
|
pix_fmt == AV_PIX_FMT_X2RGB10 || \
|
||||||
pix_fmt == AV_PIX_FMT_X2BGR10 || \
|
pix_fmt == AV_PIX_FMT_X2BGR10 || \
|
||||||
|
pix_fmt == AV_PIX_FMT_GBRP10MSB || \
|
||||||
pix_fmt == AV_PIX_FMT_GBRP16)
|
pix_fmt == AV_PIX_FMT_GBRP16)
|
||||||
|
|
||||||
#define IS_RGB(pix_fmt) (pix_fmt == AV_PIX_FMT_0RGB32 || \
|
#define IS_RGB(pix_fmt) (pix_fmt == AV_PIX_FMT_0RGB32 || \
|
||||||
@ -111,8 +115,10 @@ const AVCodecHWConfigInternal *const ff_nvenc_hw_configs[] = {
|
|||||||
pix_fmt == AV_PIX_FMT_X2BGR10)
|
pix_fmt == AV_PIX_FMT_X2BGR10)
|
||||||
|
|
||||||
#define IS_YUV444(pix_fmt) (pix_fmt == AV_PIX_FMT_YUV444P || \
|
#define IS_YUV444(pix_fmt) (pix_fmt == AV_PIX_FMT_YUV444P || \
|
||||||
|
pix_fmt == AV_PIX_FMT_YUV444P10MSB || \
|
||||||
pix_fmt == AV_PIX_FMT_YUV444P16 || \
|
pix_fmt == AV_PIX_FMT_YUV444P16 || \
|
||||||
pix_fmt == AV_PIX_FMT_GBRP || \
|
pix_fmt == AV_PIX_FMT_GBRP || \
|
||||||
|
pix_fmt == AV_PIX_FMT_GBRP10MSB || \
|
||||||
pix_fmt == AV_PIX_FMT_GBRP16 || \
|
pix_fmt == AV_PIX_FMT_GBRP16 || \
|
||||||
(ctx->rgb_mode == NVENC_RGB_MODE_444 && IS_RGB(pix_fmt)))
|
(ctx->rgb_mode == NVENC_RGB_MODE_444 && IS_RGB(pix_fmt)))
|
||||||
|
|
||||||
@ -121,6 +127,7 @@ const AVCodecHWConfigInternal *const ff_nvenc_hw_configs[] = {
|
|||||||
pix_fmt == AV_PIX_FMT_P216)
|
pix_fmt == AV_PIX_FMT_P216)
|
||||||
|
|
||||||
#define IS_GBRP(pix_fmt) (pix_fmt == AV_PIX_FMT_GBRP || \
|
#define IS_GBRP(pix_fmt) (pix_fmt == AV_PIX_FMT_GBRP || \
|
||||||
|
pix_fmt == AV_PIX_FMT_GBRP10MSB || \
|
||||||
pix_fmt == AV_PIX_FMT_GBRP16)
|
pix_fmt == AV_PIX_FMT_GBRP16)
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
@ -1991,7 +1998,9 @@ static NV_ENC_BUFFER_FORMAT nvenc_map_buffer_format(enum AVPixelFormat pix_fmt)
|
|||||||
case AV_PIX_FMT_YUV444P:
|
case AV_PIX_FMT_YUV444P:
|
||||||
return NV_ENC_BUFFER_FORMAT_YUV444;
|
return NV_ENC_BUFFER_FORMAT_YUV444;
|
||||||
case AV_PIX_FMT_GBRP16:
|
case AV_PIX_FMT_GBRP16:
|
||||||
|
case AV_PIX_FMT_GBRP10MSB:
|
||||||
case AV_PIX_FMT_YUV444P16:
|
case AV_PIX_FMT_YUV444P16:
|
||||||
|
case AV_PIX_FMT_YUV444P10MSB:
|
||||||
return NV_ENC_BUFFER_FORMAT_YUV444_10BIT;
|
return NV_ENC_BUFFER_FORMAT_YUV444_10BIT;
|
||||||
case AV_PIX_FMT_0RGB32:
|
case AV_PIX_FMT_0RGB32:
|
||||||
case AV_PIX_FMT_RGB32:
|
case AV_PIX_FMT_RGB32:
|
||||||
|
Reference in New Issue
Block a user