Mercurial > x265
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;