avcodec/libx264: Set colorspace details correctly
authorTorsten Jager <t.jager@gmx.de>
Mon, 16 Dec 2013 15:59:02 +0000 (16:59 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 16 Dec 2013 15:59:02 +0000 (16:59 +0100)
After adding colorspace support to xine-lib, I insist in proper
settings within media files at least when they do not follow
that implicit SD/HD routine.

libavcodec/libx264.c

index 7f393089b4569d212c0b8b511d14ed718769b143..8da18707ebaea353e3592bf50b2cfe4c0c6cfa0d 100644 (file)
@@ -574,7 +574,15 @@ static av_cold int X264_init(AVCodecContext *avctx)
 
     x4->params.vui.b_fullrange = avctx->pix_fmt == AV_PIX_FMT_YUVJ420P ||
                                  avctx->pix_fmt == AV_PIX_FMT_YUVJ422P ||
-                                 avctx->pix_fmt == AV_PIX_FMT_YUVJ444P;
+                                 avctx->pix_fmt == AV_PIX_FMT_YUVJ444P ||
+                                 avctx->color_range == AVCOL_RANGE_JPEG;
+
+    if (avctx->colorspace != AVCOL_SPC_UNSPECIFIED)
+        x4->params.vui.i_colmatrix = avctx->colorspace;
+    if (avctx->color_primaries != AVCOL_PRI_UNSPECIFIED)
+        x4->params.vui.i_colorprim = avctx->color_primaries;
+    if (avctx->color_trc != AVCOL_TRC_UNSPECIFIED)
+        x4->params.vui.i_transfer  = avctx->color_trc;
 
     if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER)
         x4->params.b_repeat_headers = 0;