<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>From 63e81aa126caa5c9de263634a20af2a8eb85324a Mon Sep 17 00:00:00 2001</div><div>From: yaswanthsastry <<a href="mailto:yaswanth.sastry@multicorewareinc.com">yaswanth.sastry@multicorewareinc.com</a>></div><div>Date: Mon, 18 Nov 2024 20:49:25 +0530</div><div>Subject: [PATCH] Deprecating pmode and pme features</div><div><br></div><div>---</div><div> doc/reST/cli.rst                 | 30 +++++++++++++++---------------</div><div> source/test/regression-tests.txt |  6 ------</div><div> source/test/smoke-tests.txt      |  2 --</div><div> source/x265cli.cpp               | 10 ++++++++++</div><div> 4 files changed, 25 insertions(+), 23 deletions(-)</div><div><br></div><div>diff --git a/doc/reST/cli.rst b/doc/reST/cli.rst</div><div>index f9e7818ca..6bb99f92e 100755</div><div>--- a/doc/reST/cli.rst</div><div>+++ b/doc/reST/cli.rst</div><div>@@ -301,8 +301,8 @@ Performance Options</div><div> <span style="white-space:pre">    </span>in the system doesn't obey this constraint, we may spawn fewer threads</div><div> <span style="white-space:pre">  </span>than cores which has been empirically shown to be better for performance. </div><div> </div><div>-<span style="white-space:pre"> </span>If the four pool features: :option:`--wpp`, :option:`--pmode`,</div><div>-<span style="white-space:pre">       </span>:option:`--pme` and :option:`--lookahead-slices` are all disabled,</div><div>+<span style="white-space:pre">   </span>If the four pool features: :option:`--wpp`, :option:`--pmode(deprecated)`,</div><div>+<span style="white-space:pre">   </span>:option:`--pme(deprecated)` and :option:`--lookahead-slices` are all disabled,</div><div> <span style="white-space:pre">      </span>then :option:`--pools` is ignored and no thread pools are created.</div><div> </div><div> <span style="white-space:pre"> </span>If "none" is specified, then all four of the thread pool features are</div><div>@@ -344,7 +344,7 @@ Performance Options</div><div> </div><div> <span style="white-space:pre">      </span>Default: Enabled</div><div> </div><div>-.. option:: --pmode, --no-pmode</div><div>+.. option:: --pmode, --no-pmode ( deprecated from release 4.1 )</div><div> </div><div> <span style="white-space:pre">    </span>Parallel mode decision, or distributed mode analysis. When enabled</div><div> <span style="white-space:pre">  </span>the encoder will distribute the analysis work of each CU (merge,</div><div>@@ -354,31 +354,31 @@ Performance Options</div><div> <span style="white-space:pre">    </span>6 there is generally always enough work to distribute to warrant the</div><div> <span style="white-space:pre">        </span>overhead, assuming your CPUs are not already saturated.</div><div> <span style="white-space:pre">     </span></div><div>-<span style="white-space:pre">     </span>--pmode will increase utilization without reducing compression</div><div>+<span style="white-space:pre">       </span>--pmode(deprecated) will increase utilization without reducing compression</div><div> <span style="white-space:pre">  </span>efficiency. In fact, since the modes are all measured in parallel it</div><div> <span style="white-space:pre">        </span>makes certain early-outs impractical and thus you usually get</div><div> <span style="white-space:pre">       </span>slightly better compression when it is enabled (at the expense of</div><div> <span style="white-space:pre">   </span>not skipping improbable modes). This bypassing of early-outs can</div><div>-<span style="white-space:pre">     </span>cause pmode to slow down encodes, especially at faster presets.</div><div>+<span style="white-space:pre">      </span>cause pmode(deprecated) to slow down encodes, especially at faster presets.</div><div> </div><div> <span style="white-space:pre">        </span>This feature is implicitly disabled when no thread pool is present.</div><div> </div><div> <span style="white-space:pre">        </span>Default disabled</div><div> </div><div>-.. option:: --pme, --no-pme</div><div>+.. option:: --pme, --no-pme ( deprecated from release 4.1 )</div><div> </div><div> <span style="white-space:pre">    </span>Parallel motion estimation. When enabled the encoder will distribute</div><div> <span style="white-space:pre">        </span>motion estimation across multiple worker threads when more than two</div><div> <span style="white-space:pre"> </span>references require motion searches for a given CU. Only recommended</div><div>-<span style="white-space:pre">  </span>if x265 is not already saturating CPU cores. :option:`--pmode` is</div><div>+<span style="white-space:pre">    </span>if x265 is not already saturating CPU cores. :option:`--pmode(deprecated)` is</div><div> <span style="white-space:pre">       </span>much more effective than this option, since the amount of work it</div><div>-<span style="white-space:pre">    </span>distributes is substantially higher. With --pme it is not unusual</div><div>+<span style="white-space:pre">    </span>distributes is substantially higher. With --pme(deprecated) it is not unusual</div><div> <span style="white-space:pre">       </span>for the overhead of distributing the work to outweigh the</div><div> <span style="white-space:pre">   </span>parallelism benefits.</div><div> <span style="white-space:pre">       </span></div><div> <span style="white-space:pre">    </span>This feature is implicitly disabled when no thread pool is present.</div><div> </div><div>-<span style="white-space:pre"> </span>--pme will increase utilization on many core systems with no effect</div><div>+<span style="white-space:pre">  </span>--pme(deprecated) will increase utilization on many core systems with no effect</div><div> <span style="white-space:pre">     </span>on the output bitstream.</div><div> <span style="white-space:pre">    </span></div><div> <span style="white-space:pre">    </span>Default disabled</div><div>@@ -932,14 +932,14 @@ will not reuse analysis if slice type parameters do not match.</div><div> .. option:: --analysis-save <filename></div><div> </div><div> <span style="white-space:pre">   </span>Encoder outputs analysis information of each frame. Analysis data from save mode is</div><div>-<span style="white-space:pre">  </span>written to the file specified. Requires cutree, pmode to be off. Default disabled.</div><div>+<span style="white-space:pre">   </span>written to the file specified. Requires cutree, pmode(deprecated) to be off. Default disabled.</div><div> <span style="white-space:pre">      </span></div><div> <span style="white-space:pre">    </span>The amount of analysis data stored is determined by :option:`--analysis-save-reuse-level`.</div><div> <span style="white-space:pre">  </span></div><div> .. option:: --analysis-load <filename></div><div> </div><div> <span style="white-space:pre">      </span>Encoder reuses analysis information from the file specified. By reading the analysis data written by</div><div>-<span style="white-space:pre"> </span>an earlier encode of the same sequence, substantial redundant work may be avoided. Requires cutree, pmode</div><div>+<span style="white-space:pre">    </span>an earlier encode of the same sequence, substantial redundant work may be avoided. Requires cutree, pmode(deprecated)</div><div> <span style="white-space:pre">       </span>to be off. Default disabled.</div><div> </div><div> <span style="white-space:pre">       </span>The amount of analysis data reused is determined by :option:`--analysis-load-reuse-level`.</div><div>@@ -1845,8 +1845,8 @@ Quality, rate control and rate distortion options</div><div> <span style="white-space:pre">    </span>In pass 1 analysis information like motion vector, depth, reference and prediction</div><div> <span style="white-space:pre">  </span>modes of the final best CTU partition is stored for each CTU.</div><div> <span style="white-space:pre">       </span>Multipass analysis refinement cannot be enabled when :option:`--analysis-save`/:option:`--analysis-load`</div><div>-<span style="white-space:pre">     </span>is enabled and both will be disabled when enabled together. This feature requires :option:`--pmode`/:option:`--pme`</div><div>-<span style="white-space:pre">  </span>to be disabled and hence pmode/pme will be disabled when enabled at the same time.</div><div>+<span style="white-space:pre">   </span>is enabled and both will be disabled when enabled together. This feature requires :option:`--pmode(deprecated)`/:option:`--pme(deprecated)`</div><div>+<span style="white-space:pre">  </span>to be disabled and hence pmode/pme(deprecated) will be disabled when enabled at the same time.</div><div> </div><div> <span style="white-space:pre">     </span>Default: disabled.</div><div> </div><div>@@ -1857,8 +1857,8 @@ Quality, rate control and rate distortion options</div><div> <span style="white-space:pre">   </span>distortion get lower(negative)qp offsets and vice-versa for low distortion CTUs in pass 2.</div><div> <span style="white-space:pre">  </span>This helps to improve the subjective quality.</div><div> <span style="white-space:pre">       </span>Multipass refinement of qp cannot be enabled when :option:`--analysis-save`/:option:`--analysis-load`</div><div>-<span style="white-space:pre">        </span>is enabled and both will be disabled when enabled together. It requires :option:`--pmode`/:option:`--pme` to be</div><div>-<span style="white-space:pre">      </span>disabled and hence pmode/pme will be disabled when enabled along with it.</div><div>+<span style="white-space:pre">    </span>is enabled and both will be disabled when enabled together. It requires :option:`--pmode`(deprecated)/:option:`--pme(deprecated)` to be</div><div>+<span style="white-space:pre">      </span>disabled and hence pmode/pme(deprecated) will be disabled when enabled along with it.</div><div> </div><div> <span style="white-space:pre">      </span>Default: disabled.</div><div> </div><div>diff --git a/source/test/regression-tests.txt b/source/test/regression-tests.txt</div><div>index ed41b416d..875a4d2eb 100644</div><div>--- a/source/test/regression-tests.txt</div><div>+++ b/source/test/regression-tests.txt</div><div>@@ -22,12 +22,10 @@ BasketballDrive_1920x1080_50.y4m,--preset medium --analysis-save x265_analysis.d</div><div> BasketballDrive_1920x1080_50.y4m,--preset slow --nr-intra 100 -F4 --aq-strength 3 --qg-size 16 --limit-refs 1</div><div> BasketballDrive_1920x1080_50.y4m,--preset slower --lossless --chromaloc 3 --subme 0 --limit-tu 4</div><div> BasketballDrive_1920x1080_50.y4m,--preset slower --analysis-save x265_analysis.dat --analysis-save-reuse-level 10 --bitrate 7000 --limit-tu 0::--preset slower --analysis-load x265_analysis.dat --analysis-load-reuse-level 10 --bitrate 7000 --limit-tu 0</div><div>-BasketballDrive_1920x1080_50.y4m,--preset veryslow --crf 4 --cu-lossless --pmode --limit-refs 1 --aq-mode 3 --limit-tu 3</div><div> BasketballDrive_1920x1080_50.y4m,--preset veryslow --analysis-save x265_analysis.dat --analysis-save-reuse-level 5 --crf 18 --tskip-fast --limit-tu 2::--preset veryslow --analysis-load x265_analysis.dat  --analysis-load-reuse-level 5 --crf 18 --tskip-fast --limit-tu 2</div><div> BasketballDrive_1920x1080_50.y4m,--preset veryslow --recon-y4m-exec "ffplay -i pipe:0 -autoexit"</div><div> Coastguard-4k.y4m,--preset ultrafast --recon-y4m-exec "ffplay -i pipe:0 -autoexit"</div><div> Coastguard-4k.y4m,--preset superfast --tune grain --overscan=crop</div><div>-Coastguard-4k.y4m,--preset superfast --tune grain --pme --aq-strength 2 --merange 190</div><div> Coastguard-4k.y4m,--preset veryfast --no-cutree --analysis-save x265_analysis.dat --analysis-save-reuse-level 1 --qp 35::--preset veryfast --no-cutree --analysis-load x265_analysis.dat --analysis-load-reuse-level 1 --qp 35</div><div> Coastguard-4k.y4m,--preset medium --rdoq-level 1 --tune ssim --no-signhide --me umh --slices 2</div><div> Coastguard-4k.y4m,--preset slow --tune psnr --cbqpoffs -1 --crqpoffs 1 --limit-refs 1</div><div>@@ -60,14 +58,12 @@ FourPeople_1280x720_60.y4m,--preset medium --qp 38 --no-psy-rd</div><div> FourPeople_1280x720_60.y4m,--preset medium --recon-y4m-exec "ffplay -i pipe:0 -autoexit"</div><div> FourPeople_1280x720_60.y4m,--preset veryslow --numa-pools "none"</div><div> Keiba_832x480_30.y4m,--preset superfast --no-fast-intra --nr-intra 1000 -F4</div><div>-Keiba_832x480_30.y4m,--preset medium --pmode --tune grain</div><div> Keiba_832x480_30.y4m,--preset slower --fast-intra --nr-inter 500 -F4 --limit-refs 0</div><div> Kimono1_1920x1080_24_10bit_444.yuv,--preset superfast --weightb</div><div> Kimono1_1920x1080_24_10bit_444.yuv,--preset medium --min-cu-size 32</div><div> KristenAndSara_1280x720_60.y4m,--preset ultrafast --strong-intra-smoothing</div><div> KristenAndSara_1280x720_60.y4m,--preset superfast --min-cu-size 16 --qg-size 16 --limit-refs 1</div><div> KristenAndSara_1280x720_60.y4m,--preset medium --no-cutree --max-tu-size 16</div><div>-KristenAndSara_1280x720_60.y4m,--preset slower --pmode --max-tu-size 8 --limit-refs 0 --limit-modes --limit-tu 1</div><div> NebutaFestival_2560x1600_60_10bit_crop.yuv,--preset superfast --tune psnr</div><div> NebutaFestival_2560x1600_60_10bit_crop.yuv,--preset medium --tune grain --limit-refs 2</div><div> NebutaFestival_2560x1600_60_10bit_crop.yuv,--preset slow --no-cutree --analysis-save x265_analysis.dat --rd 5 --analysis-save-reuse-level 10 --bitrate 9000 --vbv-maxrate 9000 --vbv-bufsize 9000::--preset slow --no-cutree --analysis-load x265_analysis.dat --rd 5 --analysis-load-reuse-level 10 --bitrate 9000 --vbv-maxrate 9000 --vbv-bufsize 9000</div><div>@@ -76,13 +72,11 @@ News-4k.y4m,--preset superfast --lookahead-slices 6 --aq-mode 0</div><div> News-4k.y4m,--preset superfast --slices 4 --aq-mode 0 </div><div> News-4k.y4m,--preset medium --tune ssim --no-sao --qg-size 16</div><div> News-4k.y4m,--preset veryslow --rskip 0</div><div>-News-4k.y4m,--preset veryslow --pme --crf 40</div><div> OldTownCross_1920x1080_50_10bit_422.yuv,--preset superfast --weightp</div><div> OldTownCross_1920x1080_50_10bit_422.yuv,--preset medium --no-weightp</div><div> OldTownCross_1920x1080_50_10bit_422.yuv,--preset slower --tune fastdecode</div><div> ParkScene_1920x1080_24_10bit_444.yuv,--preset superfast --weightp --lookahead-slices 4</div><div> ParkScene_1920x1080_24.y4m,--preset medium --qp 40 --rdpenalty 2 --tu-intra-depth 3</div><div>-ParkScene_1920x1080_24.y4m,--preset medium --pme --tskip-fast --tskip --min-keyint 48 --weightb --limit-refs 3</div><div> ParkScene_1920x1080_24.y4m,--preset slower --no-weightp</div><div> ParkScene_1920x1080_24.y4m,--tune grain --aq-motion</div><div> RaceHorses_416x240_30.y4m,--preset superfast --no-cutree</div><div>diff --git a/source/test/smoke-tests.txt b/source/test/smoke-tests.txt</div><div>index a88a225b4..89f8ce452 100644</div><div>--- a/source/test/smoke-tests.txt</div><div>+++ b/source/test/smoke-tests.txt</div><div>@@ -8,10 +8,8 @@ big_buck_bunny_360p24.y4m,--preset=medium --bitrate 1000 -F4 --cu-lossless --sca</div><div> big_buck_bunny_360p24.y4m,--preset=slower --no-weightp --qg-size 16</div><div> washdc_422_ntsc.y4m,--preset=faster --no-strong-intra-smoothing --keyint 1 --qg-size 16</div><div> washdc_422_ntsc.y4m,--preset=medium --qp 40 --nr-inter 400 -F4</div><div>-washdc_422_ntsc.y4m,--preset=veryslow --pmode --tskip --rdoq-level 0</div><div> old_town_cross_444_720p50.y4m,--preset=ultrafast --weightp --keyint -1</div><div> old_town_cross_444_720p50.y4m,--preset=fast --keyint 20 --min-cu-size 16</div><div>-old_town_cross_444_720p50.y4m,--preset=slow --sao-non-deblock --pmode --qg-size 32</div><div> RaceHorses_416x240_30_10bit.yuv,--preset=veryfast --max-tu-size 8</div><div> RaceHorses_416x240_30_10bit.yuv,--preset=slower --bitrate 500 -F4 --rdoq-level 1</div><div> CrowdRun_1920x1080_50_10bit_444.yuv,--preset=ultrafast --constrained-intra --min-keyint 5 --keyint 10</div><div>diff --git a/source/x265cli.cpp b/source/x265cli.cpp</div><div>index a7d5f492a..7a892d043 100755</div><div>--- a/source/x265cli.cpp</div><div>+++ b/source/x265cli.cpp</div><div>@@ -787,6 +787,16 @@ namespace X265_NS {</div><div>                     if (!this->qpfile)</div><div>                         x265_log_file(param, X265_LOG_ERROR, "%s qpfile not found or error in opening qp file\n", optarg);</div><div>                 }</div><div>+                OPT("pme")</div><div>+                {</div><div>+                    x265_log_file(param, X265_LOG_ERROR, " pme feature is deprecated from release 4.1 \n", optarg);</div><div>+                    return true;</div><div>+                }</div><div>+                OPT("pmode")</div><div>+                {</div><div>+                    x265_log_file(param, X265_LOG_ERROR, " pmode feature is deprecated from release 4.1 \n", optarg);</div><div>+                    return true;</div><div>+                }</div><div>                 OPT("dolby-vision-rpu")</div><div>                 {</div><div>                     this->dolbyVisionRpu = x265_fopen(optarg, "rb");</div><div>-- </div><div>2.37.3.windows.1</div><div><br></div></div></div></div>