ffmpeg | branch: master | Agatha Hu <a...@nvidia.com> | Fri Mar  4 17:00:48 
2016 +0800| [362e05f1ea05ef7f9892f0e888323136ba77dd94] | committer: Timo 
Rothenpieler

avcodec/nvenc: Fix H264 and HEVC vui info update

Signed-off-by: Timo Rothenpieler <t...@rothenpieler.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=362e05f1ea05ef7f9892f0e888323136ba77dd94
---

 libavcodec/nvenc.c |   27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index a3b02fa..5d78930 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -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;
 

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to