changeset 12662:42467a41224f draft stable

Merge with Release_3.4
author Aruna Matheswaran <aruna@multicorewareinc.com>
date Fri, 29 May 2020 23:16:18 +0530
parents 1848374cbc6e (current diff) d2e30da827f4 (diff)
children bde11a514f4e
files
diffstat 7 files changed, 42 insertions(+-), 4 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Wed May 06 14:59:56 2020 +0530
+++ b/.hgtags	Fri May 29 23:16:18 2020 +0530
@@ -40,3 +40,4 @@ 353572437201d551381002aebf20d244bd49ef17
 5ee3593ebd82b4d8957909bbc1b68b99b59ba773 3.3_RC1
 96a10df63c0b778b480330bdf3be8da7db8a5fb1 3.3_RC2
 057215961bc4b51b6260a584ff3d506e6d65cfd6 3.3
+ee92f36782800f145970131e01c79955a3ed5c10 3.4_RC1
--- a/doc/reST/releasenotes.rst	Wed May 06 14:59:56 2020 +0530
+++ b/doc/reST/releasenotes.rst	Fri May 29 23:16:18 2020 +0530
@@ -2,6 +2,32 @@
 Release Notes
 *************
 
+Version 3.4
+===========
+
+Release date - 29th May, 2020.
+
+New features
+------------
+1. **Edge-aware quadtree partitioning** to terminate CU depth recursion based on edge information. :option:`--rskip` level 2 enables the feature and  :option:`--rskip-edge-threshold` denotes the minimum expected edge-density percentage within the CU, below which the recursion is skipped. Experimental feature.
+2. Application-level feature :option:`--abr-ladder` for automating efficient ABR ladder generation. Shows ~65% savings in the over-all turn-around time required for the generation of a typical Apple HLS ladder in Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz over a sequential ABR-ladder generation approach that leverages save-load architecture.
+
+Enhancements to existing features
+---------------------------------
+1. Improved efficiency in 2-pass rate-control algorithm. The savings in the bitrate is ~1.72% with visual improvement in quality in the initial 1-2 secs.
+
+Encoder enhancements
+--------------------
+1. Faster ARM64 encodes enabled by ASM contributions from Huawei. The speed-up over no-asm version for 1080p encodes @ medium preset is ~15% in a 16 core H/W.
+2. Strict VBV conformance in zone encoding.
+
+Bug fixes
+---------
+1. Multi-pass encode failures with :option:`--frame-dup`.
+2. Corrupted bitstreams with :option:`--hist-scenecut` when input depth and internal bit-depth differ.
+3. Incorrect analysis propagation in multi-level save-load architecture.
+4. Failure in detecting NUMA packages installed in non-standard directories.
+
 Version 3.3
 ===========
 
--- a/source/abrEncApp.cpp	Wed May 06 14:59:56 2020 +0530
+++ b/source/abrEncApp.cpp	Fri May 29 23:16:18 2020 +0530
@@ -49,7 +49,7 @@ namespace X265_NS {
     {
         m_numEncodes = numEncodes;
         m_numActiveEncodes.set(numEncodes);
-        m_queueSize = X265_INPUT_QUEUE_SIZE;
+        m_queueSize = (numEncodes > 1) ? X265_INPUT_QUEUE_SIZE : 1;
         m_passEnc = X265_MALLOC(PassEncoder*, m_numEncodes);
 
         for (uint8_t i = 0; i < m_numEncodes; i++)
--- a/source/test/save-load-tests.txt	Wed May 06 14:59:56 2020 +0530
+++ b/source/test/save-load-tests.txt	Fri May 29 23:16:18 2020 +0530
@@ -18,4 +18,4 @@ crowd_run_1080p50.y4m,   --preset medium
 RaceHorses_416x240_30.y4m,   --preset slow --no-cutree --ctu 16 --analysis-save x265_analysis.dat --analysis-save-reuse-level 10 --scale-factor 2 --crf 22  --vbv-maxrate 1000 --vbv-bufsize 1000::RaceHorses_832x480_30.y4m,    --preset slow --no-cutree --ctu 32 --analysis-load x265_analysis.dat  --analysis-save x265_analysis_2.dat --analysis-load-reuse-level 10 --analysis-save-reuse-level 10 --scale-factor 2 --crf 16 --vbv-maxrate 4000 --vbv-bufsize 4000 --refine-intra 0 --refine-inter 1::RaceHorses_1664x960_30.y4m,   --preset slow --no-cutree --ctu 64 --analysis-load x265_analysis_2.dat  --analysis-load-reuse-level 10 --scale-factor 2 --crf 12 --vbv-maxrate 7000 --vbv-bufsize 7000 --refine-intra 2 --refine-inter 2
 crowd_run_540p50.y4m,   --preset veryslow --no-cutree --analysis-save x265_analysis_540.dat  --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 5000 --vbv-bufsize 15000 --vbv-maxrate 9000::crowd_run_1080p50.y4m,   --preset veryslow --no-cutree --analysis-save x265_analysis_1080.dat  --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 10000 --vbv-bufsize 30000 --vbv-maxrate 17500::crowd_run_1080p50.y4m,  --preset veryslow --no-cutree --analysis-save x265_analysis_1080.dat --analysis-load x265_analysis_540.dat --refine-intra 4 --dynamic-refine --analysis-load-reuse-level 10 --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 10000 --vbv-bufsize 30000 --vbv-maxrate 17500::crowd_run_2160p50.y4m,  --preset veryslow --no-cutree --analysis-save x265_analysis_2160.dat --analysis-load x265_analysis_1080.dat --refine-intra 3 --dynamic-refine --analysis-load-reuse-level 10 --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 24000 --vbv-bufsize 84000 --vbv-maxrate 49000::crowd_run_2160p50.y4m,  --preset veryslow --no-cutree --analysis-load x265_analysis_2160.dat --refine-intra 2 --dynamic-refine --analysis-load-reuse-level 10 --scale-factor 1 --bitrate 24000 --vbv-bufsize 84000 --vbv-maxrate 49000
 crowd_run_540p50.y4m,  --preset medium --no-cutree --analysis-save x265_analysis_540.dat  --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 5000 --vbv-bufsize 15000 --vbv-maxrate 9000::crowd_run_1080p50.y4m,  --preset medium --no-cutree --analysis-save x265_analysis_1080.dat  --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 10000 --vbv-bufsize 30000 --vbv-maxrate 17500::crowd_run_1080p50.y4m,  --preset medium --no-cutree --analysis-save x265_analysis_1080.dat --analysis-load x265_analysis_540.dat --refine-intra 4 --dynamic-refine --analysis-load-reuse-level 10 --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 10000 --vbv-bufsize 30000 --vbv-maxrate 17500::crowd_run_2160p50.y4m,  --preset medium --no-cutree --analysis-save x265_analysis_2160.dat --analysis-load x265_analysis_1080.dat --refine-intra 3 --dynamic-refine --analysis-load-reuse-level 10 --analysis-save-reuse-level 10 --scale-factor 2 --bitrate 24000 --vbv-bufsize 84000 --vbv-maxrate 49000::crowd_run_2160p50.y4m,  --preset medium --no-cutree --analysis-load x265_analysis_2160.dat --refine-intra 2 --dynamic-refine --analysis-load-reuse-level 10 --scale-factor 1 --bitrate 24000 --vbv-bufsize 84000 --vbv-maxrate 49000
-News-4k.y4m,  --preset medium --analysis-save x265_analysis_fdup.dat --frame-dup --hrd --bitrate 10000 --vbv-bufsize 15000 --vbv-maxrate 12000::News-4k.y4m --analysis-load x265_analysis_fdup.dat --frame-dup --hrd --bitrate 10000 --vbv-bufsize 15000 --vbv-maxrate 12000
+News-4k.y4m,  --preset medium --analysis-save x265_analysis_fdup.dat --frame-dup --hrd --bitrate 10000 --vbv-bufsize 15000 --vbv-maxrate 12000::News-4k.y4m, --analysis-load x265_analysis_fdup.dat --frame-dup --hrd --bitrate 10000 --vbv-bufsize 15000 --vbv-maxrate 12000
--- a/source/x265.cpp	Wed May 06 14:59:56 2020 +0530
+++ b/source/x265.cpp	Fri May 29 23:16:18 2020 +0530
@@ -173,7 +173,8 @@ static bool parseAbrConfig(FILE* abrConf
         char *id = strtok(header, ":");
         char *head[X265_HEAD_ENTRIES];
         cliopt[i].encId = i;
- 
+        cliopt[i].isAbrLadderConfig = true;
+
         while (id && (idCount <= X265_HEAD_ENTRIES))
         {
             head[idCount] = id;
@@ -195,7 +196,7 @@ static bool parseAbrConfig(FILE* abrConf
         char* token = strtok(start, " ");
         while (token)
         {
-            argv[argc++] = token;
+            argv[argc++] = strdup(token);
             token = strtok(NULL, " ");
         }
         argv[argc] = NULL;
--- a/source/x265cli.cpp	Wed May 06 14:59:56 2020 +0530
+++ b/source/x265cli.cpp	Fri May 29 23:16:18 2020 +0530
@@ -26,6 +26,7 @@
 #endif
 
 #include "x265cli.h"
+#include "svt.h"
 
 #define START_CODE 0x00000001
 #define START_CODE_BYTES 4
@@ -370,6 +371,13 @@ namespace X265_NS {
 
     void CLIOptions::destroy()
     {
+        if (isAbrLadderConfig)
+        {
+            for (int idx = 1; idx < argCnt; idx++)
+                free(argString[idx]);
+            free(argString);
+        }
+
         if (input)
             input->release();
         input = NULL;
--- a/source/x265cli.h	Wed May 06 14:59:56 2020 +0530
+++ b/source/x265cli.h	Fri May 29 23:16:18 2020 +0530
@@ -405,6 +405,7 @@ static const struct option long_options[
         char** argString;
 
         /* ABR ladder settings */
+        bool isAbrLadderConfig;
         bool enableScaler;
         char*    encName;
         char*    reuseName;
@@ -435,6 +436,7 @@ static const struct option long_options[
             startTime = x265_mdate();
             prevUpdateTime = 0;
             bDither = false;
+            isAbrLadderConfig = false;
             enableScaler = false;
             encName = NULL;
             reuseName = NULL;