|
|
|
@ -868,14 +868,19 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) |
|
|
|
|
|
|
|
|
|
switch (avctx->codec->id) { |
|
|
|
|
case AV_CODEC_ID_H264: |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.colourDescriptionPresentFlag = 1; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.videoSignalTypePresentFlag = 1; |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.colourMatrix = avctx->colorspace; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.colourPrimaries = avctx->color_primaries; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.transferCharacteristics = avctx->color_trc; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.videoFullRangeFlag = (avctx->color_range == AVCOL_RANGE_JPEG |
|
|
|
|
|| avctx->pix_fmt == AV_PIX_FMT_YUVJ420P || avctx->pix_fmt == AV_PIX_FMT_YUVJ422P || avctx->pix_fmt == AV_PIX_FMT_YUVJ444P); |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.colourDescriptionPresentFlag = |
|
|
|
|
(avctx->colorspace != 2 || avctx->color_primaries != 2 || avctx->color_trc != 2); |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.videoFullRangeFlag = avctx->color_range == AVCOL_RANGE_JPEG; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.videoSignalTypePresentFlag = |
|
|
|
|
(ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.colourDescriptionPresentFlag |
|
|
|
|
|| ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.videoFormat != 5 |
|
|
|
|
|| ctx->encode_config.encodeCodecConfig.h264Config.h264VUIParameters.videoFullRangeFlag != 0); |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.sliceMode = 3; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.h264Config.sliceModeData = 1; |
|
|
|
@ -944,6 +949,20 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) |
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
case AV_CODEC_ID_H265: |
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.colourMatrix = avctx->colorspace; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.colourPrimaries = avctx->color_primaries; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.transferCharacteristics = avctx->color_trc; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.videoFullRangeFlag = (avctx->color_range == AVCOL_RANGE_JPEG |
|
|
|
|
|| avctx->pix_fmt == AV_PIX_FMT_YUVJ420P || avctx->pix_fmt == AV_PIX_FMT_YUVJ422P || avctx->pix_fmt == AV_PIX_FMT_YUVJ444P); |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.colourDescriptionPresentFlag = |
|
|
|
|
(avctx->colorspace != 2 || avctx->color_primaries != 2 || avctx->color_trc != 2); |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.videoSignalTypePresentFlag = |
|
|
|
|
(ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.colourDescriptionPresentFlag |
|
|
|
|
|| ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.videoFormat != 5 |
|
|
|
|
|| ctx->encode_config.encodeCodecConfig.hevcConfig.hevcVUIParameters.videoFullRangeFlag != 0); |
|
|
|
|
|
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.sliceMode = 3; |
|
|
|
|
ctx->encode_config.encodeCodecConfig.hevcConfig.sliceModeData = 1; |
|
|
|
|
|
|
|
|
|