mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-20 21:00:41 +08:00
avcodec/nvenc: fix -Wenum-conversion on colorspace/pri/trc
SDK 12.0 defined enum types for colorspace/pri/trc, while lower versions use uint32_t.
This commit is contained in:
committed by
Timo Rothenpieler
parent
9b348aa60b
commit
cbc6134a4a
@@ -337,6 +337,16 @@ static void nvenc_print_driver_requirement(AVCodecContext *avctx, int level)
|
||||
av_log(avctx, level, "The minimum required Nvidia driver for nvenc is %s or newer\n", minver);
|
||||
}
|
||||
|
||||
#if NVENCAPI_CHECK_VERSION(12, 0)
|
||||
#define to_nv_color_matrix(n) (NV_ENC_VUI_MATRIX_COEFFS)(n)
|
||||
#define to_nv_color_pri(n) (NV_ENC_VUI_COLOR_PRIMARIES)(n)
|
||||
#define to_nv_color_trc(n) (NV_ENC_VUI_TRANSFER_CHARACTERISTIC)(n)
|
||||
#else
|
||||
#define to_nv_color_matrix(n) (uint32_t)(n)
|
||||
#define to_nv_color_pri(n) (uint32_t)(n)
|
||||
#define to_nv_color_trc(n) (uint32_t)(n)
|
||||
#endif
|
||||
|
||||
static av_cold int nvenc_load_libraries(AVCodecContext *avctx)
|
||||
{
|
||||
NvencContext *ctx = avctx->priv_data;
|
||||
@@ -1266,14 +1276,14 @@ static av_cold int nvenc_setup_h264_config(AVCodecContext *avctx)
|
||||
const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(ctx->data_pix_fmt);
|
||||
|
||||
if ((pixdesc->flags & AV_PIX_FMT_FLAG_RGB) && !IS_GBRP(ctx->data_pix_fmt)) {
|
||||
vui->colourMatrix = AVCOL_SPC_BT470BG;
|
||||
vui->colourPrimaries = avctx->color_primaries;
|
||||
vui->transferCharacteristics = avctx->color_trc;
|
||||
vui->colourMatrix = to_nv_color_matrix(AVCOL_SPC_BT470BG);
|
||||
vui->colourPrimaries = to_nv_color_pri(avctx->color_primaries);
|
||||
vui->transferCharacteristics = to_nv_color_trc(avctx->color_trc);
|
||||
vui->videoFullRangeFlag = 0;
|
||||
} else {
|
||||
vui->colourMatrix = IS_GBRP(ctx->data_pix_fmt) ? AVCOL_SPC_RGB : avctx->colorspace;
|
||||
vui->colourPrimaries = avctx->color_primaries;
|
||||
vui->transferCharacteristics = avctx->color_trc;
|
||||
vui->colourMatrix = to_nv_color_matrix(IS_GBRP(ctx->data_pix_fmt) ? AVCOL_SPC_RGB : avctx->colorspace);
|
||||
vui->colourPrimaries = to_nv_color_pri(avctx->color_primaries);
|
||||
vui->transferCharacteristics = to_nv_color_trc(avctx->color_trc);
|
||||
vui->videoFullRangeFlag = (avctx->color_range == AVCOL_RANGE_JPEG
|
||||
|| ctx->data_pix_fmt == AV_PIX_FMT_YUVJ420P || ctx->data_pix_fmt == AV_PIX_FMT_YUVJ422P || ctx->data_pix_fmt == AV_PIX_FMT_YUVJ444P);
|
||||
}
|
||||
@@ -1457,14 +1467,14 @@ static av_cold int nvenc_setup_hevc_config(AVCodecContext *avctx)
|
||||
const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(ctx->data_pix_fmt);
|
||||
|
||||
if ((pixdesc->flags & AV_PIX_FMT_FLAG_RGB) && !IS_GBRP(ctx->data_pix_fmt)) {
|
||||
vui->colourMatrix = AVCOL_SPC_BT470BG;
|
||||
vui->colourPrimaries = avctx->color_primaries;
|
||||
vui->transferCharacteristics = avctx->color_trc;
|
||||
vui->colourMatrix = to_nv_color_matrix(AVCOL_SPC_BT470BG);
|
||||
vui->colourPrimaries = to_nv_color_pri(avctx->color_primaries);
|
||||
vui->transferCharacteristics = to_nv_color_trc(avctx->color_trc);
|
||||
vui->videoFullRangeFlag = 0;
|
||||
} else {
|
||||
vui->colourMatrix = IS_GBRP(ctx->data_pix_fmt) ? AVCOL_SPC_RGB : avctx->colorspace;
|
||||
vui->colourPrimaries = avctx->color_primaries;
|
||||
vui->transferCharacteristics = avctx->color_trc;
|
||||
vui->colourMatrix = to_nv_color_matrix(IS_GBRP(ctx->data_pix_fmt) ? AVCOL_SPC_RGB : avctx->colorspace);
|
||||
vui->colourPrimaries = to_nv_color_pri(avctx->color_primaries);
|
||||
vui->transferCharacteristics = to_nv_color_trc(avctx->color_trc);
|
||||
vui->videoFullRangeFlag = (avctx->color_range == AVCOL_RANGE_JPEG
|
||||
|| ctx->data_pix_fmt == AV_PIX_FMT_YUVJ420P || ctx->data_pix_fmt == AV_PIX_FMT_YUVJ422P || ctx->data_pix_fmt == AV_PIX_FMT_YUVJ444P);
|
||||
}
|
||||
@@ -1655,14 +1665,14 @@ static av_cold int nvenc_setup_av1_config(AVCodecContext *avctx)
|
||||
const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(ctx->data_pix_fmt);
|
||||
|
||||
if ((pixdesc->flags & AV_PIX_FMT_FLAG_RGB) && !IS_GBRP(ctx->data_pix_fmt)) {
|
||||
av1->matrixCoefficients = AVCOL_SPC_BT470BG;
|
||||
av1->colorPrimaries = avctx->color_primaries;
|
||||
av1->transferCharacteristics = avctx->color_trc;
|
||||
av1->matrixCoefficients = to_nv_color_matrix(AVCOL_SPC_BT470BG);
|
||||
av1->colorPrimaries = to_nv_color_pri(avctx->color_primaries);
|
||||
av1->transferCharacteristics = to_nv_color_trc(avctx->color_trc);
|
||||
av1->colorRange = 0;
|
||||
} else {
|
||||
av1->matrixCoefficients = IS_GBRP(ctx->data_pix_fmt) ? AVCOL_SPC_RGB : avctx->colorspace;
|
||||
av1->colorPrimaries = avctx->color_primaries;
|
||||
av1->transferCharacteristics = avctx->color_trc;
|
||||
av1->matrixCoefficients = to_nv_color_matrix(IS_GBRP(ctx->data_pix_fmt) ? AVCOL_SPC_RGB : avctx->colorspace);
|
||||
av1->colorPrimaries = to_nv_color_pri(avctx->color_primaries);
|
||||
av1->transferCharacteristics = to_nv_color_trc(avctx->color_trc);
|
||||
av1->colorRange = (avctx->color_range == AVCOL_RANGE_JPEG
|
||||
|| ctx->data_pix_fmt == AV_PIX_FMT_YUVJ420P || ctx->data_pix_fmt == AV_PIX_FMT_YUVJ422P || ctx->data_pix_fmt == AV_PIX_FMT_YUVJ444P);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user