[vlc-devel] [PATCH 2/4] x264: do colorspace/transfer/primaries mapping

Ilkka Ollakka ileoo at videolan.org
Sat Apr 16 17:38:56 CEST 2016


---
 modules/codec/x264.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/modules/codec/x264.c b/modules/codec/x264.c
index 34ffa2d..ccbd503 100644
--- a/modules/codec/x264.c
+++ b/modules/codec/x264.c
@@ -922,6 +922,55 @@ static int  Open ( vlc_object_t *p_this )
     p_sys->param.i_height = p_enc->fmt_in.video.i_visible_height;
     p_sys->param.vui.b_fullrange = fullrange;
 
+    switch( p_enc->fmt_in.video.space )
+    {
+        case COLOR_SPACE_BT601:
+        case COLOR_SPACE_BT601_FULL:
+            p_sys->param.vui.i_colmatrix = 5; /* bt470bg*/
+            break;
+        case COLOR_SPACE_BT709:
+        case COLOR_SPACE_BT709_FULL:
+            p_sys->param.vui.i_colmatrix = 1; /* bt709*/
+            break;
+        case COLOR_SPACE_BT2020_LIMITED:
+            p_sys->param.vui.i_colmatrix = 10; /* bt2020c*/
+            break;
+        default:
+            break;
+    }
+
+    switch( p_enc->fmt_in.video.transfer )
+    {
+        case TRANSFER_FUNC_LINEAR:
+            p_sys->param.vui.i_transfer = 7; /* linear*/
+            break;
+        case TRANSFER_FUNC_SRGB:
+        case TRANSFER_FUNC_BT709:
+            p_sys->param.vui.i_transfer = 1; /* bt709*/
+            break;
+        default:
+            break;
+    }
+
+    switch( p_enc->fmt_in.video.primaries )
+    {
+        case COLOR_PRIMARIES_BT601_625:
+            p_sys->param.vui.i_colorprim = 5; /* BT470BG */
+            break;
+        case COLOR_PRIMARIES_BT601_525:
+            p_sys->param.vui.i_colorprim = 6; /* SMPTE170M */
+            break;
+        case COLOR_PRIMARIES_BT709:
+            p_sys->param.vui.i_colorprim = 1; /* BT.709 */
+            break;
+        case COLOR_PRIMARIES_BT2020:
+            p_sys->param.vui.i_colorprim = 9; /* BT.2020 */
+            break;
+        default:
+            break;
+    }
+
+
     if( fabs(var_GetFloat( p_enc, SOUT_CFG_PREFIX "qcomp" ) - 0.60) > 0.005 )
        p_sys->param.rc.f_qcompress = var_GetFloat( p_enc, SOUT_CFG_PREFIX "qcomp" );
 
-- 
2.6.6



More information about the vlc-devel mailing list