[x265] [PATCH] correct referring chroma subsampling as color space

mahesh at multicorewareinc.com mahesh at multicorewareinc.com
Mon Dec 28 20:13:45 CET 2015


# HG changeset patch
# User Mahesh Pittala <mahesh at multicorewareinc.com>
# Date 1451329853 -19800
#      Tue Dec 29 00:40:53 2015 +0530
# Node ID 80af9f9afa60c032ce27efacdabfde62f3102a62
# Parent  1471e4e433ccccf71f39a6eb93507c349fb8539e
correct referring chroma subsampling as color space

diff -r 1471e4e433cc -r 80af9f9afa60 doc/reST/cli.rst
--- a/doc/reST/cli.rst	Tue Dec 22 19:25:58 2015 +0530
+++ b/doc/reST/cli.rst	Tue Dec 29 00:40:53 2015 +0530
@@ -391,15 +391,15 @@
 
 .. option:: --input-csp <integer|string>
 
-	YUV only: Source color space. Only i420, i422, and i444 are
-	supported at this time. The internal color space is always the
-	same as the source color space (libx265 does not support any color
-	space conversions).
+	Chroma Subsampling (YUV only):  Only 4:0:0(monochrome), 4:2:0, 4:2:2, and 4:4:4 are supported at this time. 
+	The chroma subsampling format of your input must match your desired output chroma subsampling format 
+	(libx265 will not perform any chroma subsampling conversion), and it must be supported by the 
+	HEVC profile you have specified.
 
-	0. i400
-	1. i420 **(default)**
-	2. i422
-	3. i444
+	0. i400 (4:0:0 monochrome) - Not supported by Main or Main10 profiles
+	1. i420 (4:2:0 default)    - Supported by all HEVC profiles
+	2. i422 (4:2:2)            - Not supported by Main, Main10 and Main12 profiles
+	3. i444 (4:4:4)            - Supported by Main 4:4:4, Main 4:4:4 10, Main 4:4:4 12, Main 4:4:4 16 Intra profiles
 	4. nv12
 	5. nv16
 
diff -r 1471e4e433cc -r 80af9f9afa60 source/common/param.cpp
--- a/source/common/param.cpp	Tue Dec 22 19:25:58 2015 +0530
+++ b/source/common/param.cpp	Tue Dec 29 00:40:53 2015 +0530
@@ -1088,7 +1088,7 @@
     CHECK(param->sourceWidth < (int)param->maxCUSize || param->sourceHeight < (int)param->maxCUSize,
           "Picture size must be at least one CTU");
     CHECK(param->internalCsp < X265_CSP_I400 || X265_CSP_I444 < param->internalCsp,
-          "Color space must be i400, i420, i422 or i444");
+          "chroma subsampling must be i400 (4:0:0 monochrome), i420 (4:2:0 default), i422 (4:2:0), i444 (4:4:4)");
     CHECK(param->sourceWidth & !!CHROMA_H_SHIFT(param->internalCsp),
           "Picture width must be an integer multiple of the specified chroma subsampling");
     CHECK(param->sourceHeight & !!CHROMA_V_SHIFT(param->internalCsp),
diff -r 1471e4e433cc -r 80af9f9afa60 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp	Tue Dec 22 19:25:58 2015 +0530
+++ b/source/encoder/encoder.cpp	Tue Dec 29 00:40:53 2015 +0530
@@ -510,7 +510,7 @@
     {
         if (pic_in->colorSpace != m_param->internalCsp)
         {
-            x265_log(m_param, X265_LOG_ERROR, "Unsupported color space (%d) on input\n",
+            x265_log(m_param, X265_LOG_ERROR, "Unsupported chroma subsampling (%d) on input\n",
                      pic_in->colorSpace);
             return -1;
         }
@@ -1723,7 +1723,7 @@
 
     if (p->scalingLists && p->internalCsp == X265_CSP_I444)
     {
-        x265_log(p, X265_LOG_WARNING, "Scaling lists are not yet supported for 4:4:4 color space\n");
+        x265_log(p, X265_LOG_WARNING, "Scaling lists are not yet supported for 4:4:4 chroma subsampling\n");
         p->scalingLists = 0;
     }
 
diff -r 1471e4e433cc -r 80af9f9afa60 source/encoder/level.cpp
--- a/source/encoder/level.cpp	Tue Dec 22 19:25:58 2015 +0530
+++ b/source/encoder/level.cpp	Tue Dec 29 00:40:53 2015 +0530
@@ -463,7 +463,7 @@
     {
         if (param->internalCsp != X265_CSP_I420)
         {
-            x265_log(param, X265_LOG_ERROR, "%s profile not compatible with %s input color space.\n",
+            x265_log(param, X265_LOG_ERROR, "%s profile not compatible with %s input chroma subsampling.\n",
                      profile, x265_source_csp_names[param->internalCsp]);
             return -1;
         }
@@ -473,7 +473,7 @@
     {
         if (param->internalCsp != X265_CSP_I420 && param->internalCsp != X265_CSP_I422)
         {
-            x265_log(param, X265_LOG_ERROR, "%s profile not compatible with %s input color space.\n",
+            x265_log(param, X265_LOG_ERROR, "%s profile not compatible with %s input chroma subsampling.\n",
                      profile, x265_source_csp_names[param->internalCsp]);
             return -1;
         }
diff -r 1471e4e433cc -r 80af9f9afa60 source/output/y4m.cpp
--- a/source/output/y4m.cpp	Tue Dec 22 19:25:58 2015 +0530
+++ b/source/output/y4m.cpp	Tue Dec 29 00:40:53 2015 +0530
@@ -70,7 +70,7 @@
         x265_log(NULL, X265_LOG_WARNING, "y4m: forcing reconstructed pixels to 8 bits\n");
 #endif
 
-    X265_CHECK(pic.colorSpace == colorSpace, "invalid color space\n");
+    X265_CHECK(pic.colorSpace == colorSpace, "invalid chroma subsampling\n");
 
 #if HIGH_BIT_DEPTH
 
diff -r 1471e4e433cc -r 80af9f9afa60 source/output/yuv.cpp
--- a/source/output/yuv.cpp	Tue Dec 22 19:25:58 2015 +0530
+++ b/source/output/yuv.cpp	Tue Dec 29 00:40:53 2015 +0530
@@ -53,7 +53,7 @@
     uint64_t fileOffset = pic.poc;
     fileOffset *= frameSize;
 
-    X265_CHECK(pic.colorSpace == colorSpace, "invalid color space\n");
+    X265_CHECK(pic.colorSpace == colorSpace, "invalid chroma subsampling\n");
     X265_CHECK(pic.bitDepth == (int)depth, "invalid bit depth\n");
 
 #if HIGH_BIT_DEPTH
diff -r 1471e4e433cc -r 80af9f9afa60 source/x265cli.h
--- a/source/x265cli.h	Tue Dec 22 19:25:58 2015 +0530
+++ b/source/x265cli.h	Tue Dec 29 00:40:53 2015 +0530
@@ -263,7 +263,11 @@
     H0("   --fps <float|rational>        Source frame rate (float or num/denom), auto-detected if Y4M\n");
     H0("   --input-res WxH               Source picture size [w x h], auto-detected if Y4M\n");
     H1("   --input-depth <integer>       Bit-depth of input file. Default 8\n");
-    H1("   --input-csp <string>          Source color space: i420, i444 or i422, auto-detected if Y4M. Default: i420\n");
+    H1("   --input-csp <string>          Chroma subsampling, auto-detected if Y4M\n");
+    H1("                                 0 - i400 (4:0:0 monochrome)\n");
+    H1("                                 1 - i420 (4:2:0 default)\n");
+    H1("                                 2 - i422 (4:2:2)\n");
+    H1("                                 3 - i444 (4:4:4)\n");
     H0("-f/--frames <integer>            Maximum number of frames to encode. Default all\n");
     H0("   --seek <integer>              First frame to encode\n");
     H1("   --[no-]interlace <bff|tff>    Indicate input pictures are interlace fields in temporal order. Default progressive\n");


More information about the x265-devel mailing list