[x265] [PATCH SCC 01/09] Add cli for intrablockcopy to enable scc extension using IBC method

Anusuya Kumarasamy anusuya.kumarasamy at multicorewareinc.com
Wed Aug 7 17:18:56 UTC 2024


>From b080b6569cebd5faa1de77423777e9b36a58dcd4 Mon Sep 17 00:00:00 2001
From: AnusuyaKumarasamy <anusuya.kumarasamy at multicorewareinc.com>
Date: Thu, 18 Jul 2024 15:30:03 +0530
Subject: [PATCH 1/9] Add cli for intrablockcopy to enable scc extension
using
 IBC method

---
 source/CMakeLists.txt   | 2 +-
 source/common/param.cpp | 6 ++++++
 source/x265.h           | 3 +++
 source/x265cli.cpp      | 1 +
 source/x265cli.h        | 1 +
 5 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index f25bc8b84..9abf607d4 100755
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -31,7 +31,7 @@ option(NATIVE_BUILD "Target the build CPU" OFF)
 option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)
 mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)
 # X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 211)
+set(X265_BUILD 212)
 configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
                "${PROJECT_BINARY_DIR}/x265.def")
 configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
diff --git a/source/common/param.cpp b/source/common/param.cpp
index 084743ee9..2f4f8084d 100755
--- a/source/common/param.cpp
+++ b/source/common/param.cpp
@@ -409,6 +409,9 @@ void x265_param_default(x265_param* param)
     param->format = 0;

     param->numLayers = 1;
+
+    /* SCC */
+    param->bEnableSCC = 0;
 }

 int x265_param_default_preset(x265_param* param, const char* preset, const
char* tune)
@@ -1473,6 +1476,7 @@ int x265_param_parse(x265_param* p, const char* name,
const char* value)
             p->numViews = atoi(value);
         }
 #endif
+        OPT("scc") p->bEnableSCC = atoi(value);
         else
             return X265_PARAM_BAD_NAME;
     }
@@ -2397,6 +2401,7 @@ char *x265_param2string(x265_param* p, int padx, int
pady)
     s += sprintf(s, " num-views=%d", p->numViews);
     s += sprintf(s, " format=%d", p->format);
 #endif
+    s += sprintf(s, "scc=%d", p->bEnableSCC);
     BOOL(p->bEnableSBRC, "sbrc");
 #undef BOOL
     return buf;
@@ -2927,6 +2932,7 @@ void x265_copy_params(x265_param* dst, x265_param*
src)
     dst->format = src->format;
 #endif
     dst->numLayers = src->numLayers;
+    dst->bEnableSCC = src->bEnableSCC;

     if (src->videoSignalTypePreset) dst->videoSignalTypePreset =
strdup(src->videoSignalTypePreset);
     else dst->videoSignalTypePreset = NULL;
diff --git a/source/x265.h b/source/x265.h
index 7b5144ec2..530ae4d81 100644
--- a/source/x265.h
+++ b/source/x265.h
@@ -2310,6 +2310,9 @@ typedef struct x265_param
     int      format;

     int      numLayers;
+
+    /*Screen Content Coding*/
+    int     bEnableSCC;
 } x265_param;

 /* x265_param_alloc:
diff --git a/source/x265cli.cpp b/source/x265cli.cpp
index a4ce6d272..2e02b1e44 100755
--- a/source/x265cli.cpp
+++ b/source/x265cli.cpp
@@ -382,6 +382,7 @@ namespace X265_NS {
         H0("   --format                      Format of the input video 0 :
normal, 1 : side-by-side, 2 : over-under  Default %d\n", param->format);
         H0("   --multiview-config            Configuration file for
Multiview Encoding\n");
 #endif
+        H0("   --scc <integer>               Enable screen content coding.
0: Diabled, 1:Intrablockcopy fast search with 1x2 CTUs search range, 2:
Intrablockcopy Full search. Default %d\n", param->bEnableSCC);
 #ifdef SVT_HEVC
         H0("   --[no]svt                     Enable SVT HEVC encoder
%s\n", OPT(param->bEnableSvtHevc));
         H0("   --[no-]svt-hme                Enable Hierarchial motion
estimation(HME) in SVT HEVC encoder \n");
diff --git a/source/x265cli.h b/source/x265cli.h
index 7ae9877d7..654356287 100644
--- a/source/x265cli.h
+++ b/source/x265cli.h
@@ -366,6 +366,7 @@ static const struct option long_options[] =
     { "multiview-config", required_argument, NULL, 0 },
     { "format", required_argument, NULL, 0 },
 #endif
+    { "scc",        required_argument, NULL, 0 },
 #ifdef SVT_HEVC
     { "svt",     no_argument, NULL, 0 },
     { "no-svt",  no_argument, NULL, 0 },
-- 
2.36.0.windows.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20240807/d524d351/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-cli-for-intrablockcopy-to-enable-scc-extension-u.patch
Type: application/octet-stream
Size: 4095 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20240807/d524d351/attachment.obj>


More information about the x265-devel mailing list