From 3935f4bf31ee774177d9300341bbbaf5b6116500 Mon Sep 17 00:00:00 2001 From: Yannis Guyon Date: Mon, 6 Jul 2026 08:05:30 +0200 Subject: [PATCH 001/205] Apply Zizmor (#5079) See https://github.com/zizmorcore/zizmor. We pin GitHub Actions used in CI workflows to git hashes instead of version tags. Similar change was also made to libavif's CI workflows in PR AOMediaCodec/libavif#1515 at the suggestion of Google's security team. The rationale is described in issue AOMediaCodec/libavif#1514.
zizmor --fix=all --gh-token=$(gh auth token) .github/workflows output ``` INFO zizmor: \U0001f308 zizmor v1.25.2 WARN collect_inputs: zizmor::registry::input: failed to validate file://.github/workflows/pull_request.yaml as workflow: input does not match expected validation schema WARN collect_inputs: zizmor::registry::input: failed to validate file://.github/workflows/nightly.yaml as workflow: input does not match expected validation schema INFO audit: zizmor: \U0001f308 completed .github/workflows/build-job-reusable.yaml INFO audit: zizmor: \U0001f308 completed .github/workflows/common-builds-reusable.yaml INFO audit: zizmor: \U0001f308 completed .github/workflows/common-test-data-reusable.yaml INFO audit: zizmor: \U0001f308 completed .github/workflows/sanitizer-job-reusable.yaml warning[artipacked]: credential persistence through GitHub Actions artifacts --> .github/workflows/build-job-reusable.yaml:61:9 | 61 | - uses: actions/checkout@v5 | _________^ 62 | | with: 63 | | fetch-depth: 50 64 | | lfs: true | |___________________^ does not set persist-credentials: false | = note: audit confidence \u2192 Low = note: this finding has an auto-fix error[template-injection]: code injection via template expansion --> .github/workflows/build-job-reusable.yaml:72:18 | 72 | run: ${{ inputs.before-script }} | --- ^^^^^^^^^^^^^^^^^^^^ may expand into attacker-controllable code | | | this run block | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/build-job-reusable.yaml:61:15 | 61 | - uses: actions/checkout@v5 | ^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/build-job-reusable.yaml:74:15 | 74 | - uses: actions/cache/restore@v5 | ^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/build-job-reusable.yaml:182:15 | 182 | - uses: actions/cache/save@v5 | ^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/build-job-reusable.yaml:188:15 | 188 | uses: actions/upload-artifact@v7 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-images]: unpinned image references --> .github/workflows/build-job-reusable.yaml:51:18 | 51 | image: ${{ inputs.container-image }} | ^^^^^^^^^^^^^^^^^^^^^^ container image may be unpinned | = note: audit confidence \u2192 Low warning[artipacked]: credential persistence through GitHub Actions artifacts --> .github/workflows/common-builds-reusable.yaml:305:9 | 305 | - uses: actions/checkout@v5 | _________^ 306 | | with: 307 | | fetch-depth: 50 308 | | lfs: true | |___________________^ does not set persist-credentials: false | = note: audit confidence \u2192 Low = note: this finding has an auto-fix warning[artipacked]: credential persistence through GitHub Actions artifacts --> .github/workflows/common-builds-reusable.yaml:356:9 | 356 | - uses: actions/checkout@v5 | _________^ 357 | | with: 358 | | fetch-depth: 50 359 | | lfs: true | |___________________^ does not set persist-credentials: false | = note: audit confidence \u2192 Low = note: this finding has an auto-fix warning[artipacked]: credential persistence through GitHub Actions artifacts --> .github/workflows/common-builds-reusable.yaml:468:9 | 468 | - uses: actions/checkout@v5 | _________^ 469 | | with: 470 | | fetch-depth: 50 471 | | fetch-tags: true 472 | | lfs: true | |___________________^ does not set persist-credentials: false | = note: audit confidence \u2192 Low = note: this finding has an auto-fix warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:23:3 | 23 | / build-generic-gnu: 24 | | name: Build (generic-gnu) 25 | | uses: ./.github/workflows/build-job-reusable.yaml 26 | | if: (!cancelled()) ... | 45 | | - inspection-accounting 46 | | - no-examples | | ^ | | | | |_______________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:48:3 | 48 | / build-x86_64-linux-gcc: 49 | | name: Build (x86_64-linux-gcc) 50 | | uses: ./.github/workflows/build-job-reusable.yaml 51 | | if: (!cancelled()) ... | 72 | | - debug 73 | | - enable-12bit-profile | | ^ | | | | |________________________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:75:3 | 75 | / build-entropy-stats: 76 | | name: Build (entropy-stats) 77 | | uses: ./.github/workflows/build-job-reusable.yaml 78 | | if: (!cancelled()) ... | 90 | | avm-build-config: 91 | | - entropy-stats | | ^ | | | | |_________________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:93:3 | 93 | / build-bitstream-mismatch-debug: 94 | | name: Build (bitstream-mismatch-debug) 95 | | uses: ./.github/workflows/build-job-reusable.yaml 96 | | if: (!cancelled()) ... | 105 | | avm-build-config: 106 | | - bitstream-mismatch-debug | | ^ | | | | |____________________________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:108:3 | 108 | / build-enable-12bit-profile: 109 | | name: Build (enable-12bit-profile) 110 | | uses: ./.github/workflows/build-job-reusable.yaml 111 | | if: (!cancelled()) ... | 120 | | avm-build-config: 121 | | - enable-12bit-profile | | ^ | | | | |________________________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:123:3 | 123 | / build-x86-linux-gcc: 124 | | name: Build (x86-linux-gcc) 125 | | uses: ./.github/workflows/build-job-reusable.yaml 126 | | if: (!cancelled()) ... | 147 | | - no-examples 148 | | - debug | | ^ | | | | |_________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:150:3 | 150 | / build-aarch64-linux-gcc: 151 | | name: Build (aarch64-linux-gcc) 152 | | uses: ./.github/workflows/build-job-reusable.yaml 153 | | if: (!cancelled()) ... | 173 | | - inspection-accounting 174 | | - no-examples | | ^ | | | | |_______________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:176:3 | 176 | / build-armv7-linux-gcc: 177 | | name: Build (armv7-linux-gcc) 178 | | uses: ./.github/workflows/build-job-reusable.yaml 179 | | if: (!cancelled()) ... | 199 | | - inspection-accounting 200 | | - no-examples | | ^ | | | | |_______________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:202:3 | 202 | / build-ppc-linux-gcc: 203 | | name: Build (ppc-linux-gcc) 204 | | uses: ./.github/workflows/build-job-reusable.yaml 205 | | if: (!cancelled()) ... | 226 | | - no-examples 227 | | - debug | | ^ | | | | |_________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:229:3 | 229 | / build-x86-mingw-gcc: 230 | | name: Build (x86-mingw-gcc) 231 | | uses: ./.github/workflows/build-job-reusable.yaml 232 | | if: (!cancelled()) ... | 251 | | - nasm 252 | | - no-examples | | ^ | | | | |_______________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:254:3 | 254 | / build-x86_64-mingw-gcc: 255 | | name: Build (x86_64-mingw-gcc) 256 | | uses: ./.github/workflows/build-job-reusable.yaml 257 | | if: (!cancelled()) ... | 276 | | - nasm 277 | | - no-examples | | ^ | | | | |_______________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium warning[excessive-permissions]: overly broad permissions --> .github/workflows/common-builds-reusable.yaml:279:3 | 279 | / build-x86_64-clang: 280 | | name: Build (x86_64-clang) 281 | | uses: ./.github/workflows/build-job-reusable.yaml 282 | | if: (!cancelled()) ... | 294 | | - debug 295 | | - release | | ^ | | | | |___________________this job | default permissions used due to no permissions: block | = note: audit confidence \u2192 Medium error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:305:15 | 305 | - uses: actions/checkout@v5 | ^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:329:15 | 329 | uses: actions/upload-artifact@v7 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:356:15 | 356 | - uses: actions/checkout@v5 | ^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:363:15 | 363 | - uses: actions/cache/restore@v5 | ^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:430:15 | 430 | - uses: actions/cache/save@v5 | ^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:436:15 | 436 | uses: actions/upload-artifact@v7 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:468:15 | 468 | - uses: actions/checkout@v5 | ^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:476:15 | 476 | - uses: actions/cache/restore@v5 | ^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:505:15 | 505 | - uses: actions/cache/save@v5 | ^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-builds-reusable.yaml:511:15 | 511 | uses: actions/upload-artifact@v7 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-images]: unpinned image references --> .github/workflows/common-builds-reusable.yaml:303:18 | 303 | image: ${{ inputs.container-image }} | ^^^^^^^^^^^^^^^^^^^^^^ container image may be unpinned | = note: audit confidence \u2192 Low error[unpinned-images]: unpinned image references --> .github/workflows/common-builds-reusable.yaml:342:18 | 342 | image: ${{ inputs.container-image }} | ^^^^^^^^^^^^^^^^^^^^^^ container image may be unpinned | = note: audit confidence \u2192 Low error[unpinned-images]: unpinned image references --> .github/workflows/common-builds-reusable.yaml:462:18 | 462 | image: ${{ inputs.container-image }} | ^^^^^^^^^^^^^^^^^^^^^^ container image may be unpinned | = note: audit confidence \u2192 Low warning[artipacked]: credential persistence through GitHub Actions artifacts --> .github/workflows/common-test-data-reusable.yaml:29:9 | 29 | - uses: actions/checkout@v5 | _________^ 30 | | with: 31 | | fetch-depth: 50 32 | | lfs: true | |___________________^ does not set persist-credentials: false | = note: audit confidence \u2192 Low = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-test-data-reusable.yaml:29:15 | 29 | - uses: actions/checkout@v5 | ^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/common-test-data-reusable.yaml:42:15 | 42 | uses: actions/upload-artifact@v7 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-images]: unpinned image references --> .github/workflows/common-test-data-reusable.yaml:25:18 | 25 | image: ${{ inputs.container-image }} | ^^^^^^^^^^^^^^^^^^^^^^ container image may be unpinned | = note: audit confidence \u2192 Low warning[artipacked]: credential persistence through GitHub Actions artifacts --> .github/workflows/sanitizer-job-reusable.yaml:64:9 | 64 | - uses: actions/checkout@v5 | _________^ 65 | | with: 66 | | fetch-depth: 50 67 | | lfs: true | |___________________^ does not set persist-credentials: false | = note: audit confidence \u2192 Low = note: this finding has an auto-fix error[template-injection]: code injection via template expansion --> .github/workflows/sanitizer-job-reusable.yaml:98:18 | 98 | run: ${{ inputs.before-script }} | --- ^^^^^^^^^^^^^^^^^^^^ may expand into attacker-controllable code | | | this run block | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/sanitizer-job-reusable.yaml:64:15 | 64 | - uses: actions/checkout@v5 | ^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/sanitizer-job-reusable.yaml:75:15 | 75 | uses: actions/download-artifact@v8 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/sanitizer-job-reusable.yaml:80:15 | 80 | uses: actions/download-artifact@v8 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-uses]: unpinned action reference --> .github/workflows/sanitizer-job-reusable.yaml:230:15 | 230 | uses: actions/upload-artifact@v7 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ action is not pinned to a hash (required by blanket policy) | = note: audit confidence \u2192 High = note: this finding has an auto-fix error[unpinned-images]: unpinned image references --> .github/workflows/sanitizer-job-reusable.yaml:51:18 | 51 | image: ${{ inputs.container-image }} | ^^^^^^^^^^^^^^^^^^^^^^ container image may be unpinned | = note: audit confidence \u2192 Low 60 findings (14 suppressed, 28 unsafe fixes): 0 informational, 0 low, 18 medium, 28 high Fix Summary Successfully applied fixes to 4 files: .github/workflows/common-builds-reusable.yaml: 13 fixes .github/workflows/sanitizer-job-reusable.yaml: 6 fixes .github/workflows/build-job-reusable.yaml: 6 fixes .github/workflows/common-test-data-reusable.yaml: 3 fixes ```
--- .github/workflows/build-job-reusable.yaml | 9 ++++---- .github/workflows/common-builds-reusable.yaml | 23 +++++++++++-------- .../workflows/common-test-data-reusable.yaml | 5 ++-- .github/workflows/sanitizer-job-reusable.yaml | 9 ++++---- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build-job-reusable.yaml b/.github/workflows/build-job-reusable.yaml index 522fdbf98b..f005842f67 100644 --- a/.github/workflows/build-job-reusable.yaml +++ b/.github/workflows/build-job-reusable.yaml @@ -58,10 +58,11 @@ jobs: AVM_BUILD_CONFIG: ${{ inputs.avm-build-config }} PARENT_JOB_NAME: ${{ inputs.parent-job-name }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 50 lfs: true + persist-credentials: false - uses: ./.github/actions/common-setup with: @@ -71,7 +72,7 @@ jobs: - name: Run before-script run: ${{ inputs.before-script }} - - uses: actions/cache/restore@v5 + - uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5 with: path: ccache key: non-existent @@ -179,13 +180,13 @@ jobs: run: | ccache --show-stats - - uses: actions/cache/save@v5 + - uses: actions/cache/save@caa296126883cff596d87d8935842f9db880ef25 # v5 with: path: ccache key: ${{ inputs.parent-job-name }}-${{ inputs.avm-build-config }}-${{ github.run_id }} - name: Upload artifacts - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 if: ${{ success() && inputs.artifact-paths != '' }} with: name: ${{ inputs.parent-job-name }}-${{ inputs.avm-build-config }} diff --git a/.github/workflows/common-builds-reusable.yaml b/.github/workflows/common-builds-reusable.yaml index 3eded932d5..862eb5c8c1 100644 --- a/.github/workflows/common-builds-reusable.yaml +++ b/.github/workflows/common-builds-reusable.yaml @@ -302,10 +302,11 @@ jobs: container: image: ${{ inputs.container-image }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 50 lfs: true + persist-credentials: false - uses: ./.github/actions/common-setup @@ -326,7 +327,7 @@ jobs: cmake --build avm_docs_build --target docs - name: Upload artifacts - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 if: success() with: name: documentation @@ -353,14 +354,15 @@ jobs: CCACHE_COMPILERCHECK: content steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 50 lfs: true + persist-credentials: false - uses: ./.github/actions/common-setup - - uses: actions/cache/restore@v5 + - uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5 with: path: ccache key: non-existent @@ -427,13 +429,13 @@ jobs: run: | ccache --show-stats - - uses: actions/cache/save@v5 + - uses: actions/cache/save@caa296126883cff596d87d8935842f9db880ef25 # v5 with: path: ccache key: ${{ github.job }}-${{ matrix.avm-sanitizer-type }}-${{ github.run_id }} - name: Upload artifacts - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 if: always() with: name: avm-sanitizers-${{ matrix.avm-sanitizer-type }} @@ -465,15 +467,16 @@ jobs: CCACHE_DIR: ${{ github.workspace }}/ccache CCACHE_COMPILERCHECK: content steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 50 fetch-tags: true lfs: true + persist-credentials: false - uses: ./.github/actions/common-setup - - uses: actions/cache/restore@v5 + - uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5 with: path: ccache key: non-existent @@ -502,13 +505,13 @@ jobs: run: | ccache --show-stats - - uses: actions/cache/save@v5 + - uses: actions/cache/save@caa296126883cff596d87d8935842f9db880ef25 # v5 with: path: ccache key: ${{ github.job }}-${{ github.run_id }} - name: Upload artifacts - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 if: success() with: name: example-build diff --git a/.github/workflows/common-test-data-reusable.yaml b/.github/workflows/common-test-data-reusable.yaml index 4aa36acf18..89e66ce9e5 100644 --- a/.github/workflows/common-test-data-reusable.yaml +++ b/.github/workflows/common-test-data-reusable.yaml @@ -26,10 +26,11 @@ jobs: env: LIBAVM_TEST_DATA_PATH: ${{ github.workspace }}/libavm-test-data steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 50 lfs: true + persist-credentials: false - uses: ./.github/actions/common-setup @@ -39,7 +40,7 @@ jobs: cmake --build avm_testdata --target testdata - name: Upload artifacts - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 if: success() with: name: "${{ github.job }}" diff --git a/.github/workflows/sanitizer-job-reusable.yaml b/.github/workflows/sanitizer-job-reusable.yaml index 34cf126bf9..fa5bfcaa25 100644 --- a/.github/workflows/sanitizer-job-reusable.yaml +++ b/.github/workflows/sanitizer-job-reusable.yaml @@ -61,10 +61,11 @@ jobs: AVM_SANITIZER_TYPE: ${{ inputs.avm-sanitizer-type }} USE_LARGE_TESTS: ${{ inputs.use-large-tests }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 50 lfs: true + persist-credentials: false - uses: ./.github/actions/common-setup with: @@ -72,12 +73,12 @@ jobs: extra-env-vars: ${{ inputs.extra-env-vars }} - name: Get sanitizer build - uses: actions/download-artifact@v8 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: name: avm-sanitizers-${{ inputs.avm-sanitizer-type }} - name: Get test data - uses: actions/download-artifact@v8 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: name: test-data path: libavm-test-data @@ -227,7 +228,7 @@ jobs: exit ${exit_code} - name: Upload logs - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 if: ${{ always() }} with: name: sanitizer-${{ inputs.avm-sanitizer-type }}-logs From 24648fa353c2ff6a32de28f871abed8d16e23cc1 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Tue, 7 Jul 2026 10:44:51 -0700 Subject: [PATCH 002/205] Fix MSAN use-of-uninitialized-value in av2_rd_pick_inter_mode_sb(). (#5083) Initialize `ref_costs_single` for INTRA and TIP frame indices to `INT_MAX` when they are not allowed. Previously, these elements were left uninitialized in `estimate_ref_frame_costs` if the respective modes were not allowed, but they were still being read and passed to other functions in `av2_rd_pick_inter_mode_sb`, triggering MSAN warnings. Fixes #5081 --- av2/encoder/rdopt.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 2aea4203a3..35e43132f1 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -602,6 +602,8 @@ static AVM_INLINE void estimate_ref_frame_costs( ref_costs_single[INTRA_FRAME_INDEX] = base_cost + mode_costs->intra_inter_cost[intra_inter_ctx][0]; base_cost += mode_costs->intra_inter_cost[intra_inter_ctx][1]; + } else { + ref_costs_single[INTRA_FRAME_INDEX] = INT_MAX; } if (xd->mi[0]->sb_type[PLANE_TYPE_Y] == BLOCK_4X4) { ref_costs_single[INTRA_FRAME_INDEX] = 0; @@ -612,6 +614,8 @@ static AVM_INLINE void estimate_ref_frame_costs( ref_costs_single[TIP_FRAME_INDEX] = base_cost + mode_costs->tip_cost[tip_ctx][1]; base_cost += mode_costs->tip_cost[tip_ctx][0]; + } else { + ref_costs_single[TIP_FRAME_INDEX] = INT_MAX; } for (int i = 0; i < INTER_REFS_PER_FRAME; ++i) From 826dde84f1de74cd187bfb4729f9124eb74fe72a Mon Sep 17 00:00:00 2001 From: Andrew Segall <149011933+asegallamz@users.noreply.github.com> Date: Tue, 7 Jul 2026 22:59:48 -0700 Subject: [PATCH 003/205] Conformance check for multistream atlas OBUs (#5086) Adds Section 6.9.1 conformance check. Fixes #5085 --- av2/decoder/obu_atlas.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/av2/decoder/obu_atlas.c b/av2/decoder/obu_atlas.c index 0c610aa77d..f097656e4a 100644 --- a/av2/decoder/obu_atlas.c +++ b/av2/decoder/obu_atlas.c @@ -301,11 +301,29 @@ uint32_t av2_read_atlas_segment_info_obu(struct AV2Decoder *pbi, atlas_params->ats_nominal_width_minus1 = avm_rb_read_uvlc(rb); atlas_params->ats_nominal_height_minus1 = avm_rb_read_uvlc(rb); } else if (atlas_params->atlas_segment_mode_idc == MULTISTREAM_ATLAS) { + // A multistream atlas is a global construct and must be carried at + // GLOBAL_XLAYER_ID. Reject any other xlayer as a non-conformant bitstream. + if (obu_xLayer_id != GLOBAL_XLAYER_ID) { + avm_internal_error( + &pbi->common.error, AVM_CODEC_UNSUP_BITSTREAM, + "MULTISTREAM_ATLAS must be signaled at GLOBAL_XLAYER_ID (%d), but " + "was received at xlayer_id %d", + GLOBAL_XLAYER_ID, obu_xLayer_id); + } read_ats_multistream_atlas_info(pbi, atlas_params->ats_basic_info, obu_xLayer_id, xAId, rb); num_segments = atlas_params->ats_basic_info->ats_num_atlas_segments_minus_1 + 1; } else if (atlas_params->atlas_segment_mode_idc == MULTISTREAM_ALPHA_ATLAS) { + // A multistream (alpha) atlas is a global construct and must be carried at + // GLOBAL_XLAYER_ID. Reject any other xlayer as a non-conformant bitstream. + if (obu_xLayer_id != GLOBAL_XLAYER_ID) { + avm_internal_error( + &pbi->common.error, AVM_CODEC_UNSUP_BITSTREAM, + "MULTISTREAM_ALPHA_ATLAS must be signaled at GLOBAL_XLAYER_ID (%d), " + "but was received at xlayer_id %d", + GLOBAL_XLAYER_ID, obu_xLayer_id); + } read_ats_multistream_alpha_atlas_info(pbi, atlas_params->ats_basic_info, rb); num_segments = From 919d0c2f4d894a54eb8e8f595b6f6056019a2f90 Mon Sep 17 00:00:00 2001 From: Andrew Segall <149011933+asegallamz@users.noreply.github.com> Date: Wed, 8 Jul 2026 12:47:36 -0700 Subject: [PATCH 004/205] Add 7.4.4 constraints on the OrderHint for OLK and RAS frames (CWG-G089) (#5087) Fixes #1477 --- av2/decoder/decodeframe.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index fe6f17ff92..40f86360ff 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -8239,6 +8239,34 @@ static int read_uncompressed_header(AV2Decoder *pbi, OBU_TYPE obu_type, current_frame->display_order_hint_restricted = current_frame->display_order_hint; + // Conformance (7.4.4): if long_term_frame_id_bits is greater than 0, the + // OrderHint of an OLK shall be less than (1 << OrderHintBits). + if (obu_type == OBU_OPEN_LOOP_KEY && + seq_params->number_of_bits_for_lt_frame_id > 0 && + current_frame->display_order_hint >= + (1u << (seq_params->order_hint_info.order_hint_bits_minus_1 + + 1))) { + avm_internal_error(&cm->error, AVM_CODEC_UNSUP_BITSTREAM, + "OrderHint of an OLK must be less than " + "(1 << OrderHintBits) when " + "long_term_frame_id_bits is greater than 0"); + } + + // Conformance (7.4.4): if long_term_frame_id_bits is greater than 0, the + // OrderHint of a RAS frame with restricted_prediction_switch equal to 0 + // shall be less than (1 << OrderHintBits). + if (obu_type == OBU_RAS_FRAME && !cm->restricted_prediction_switch && + seq_params->number_of_bits_for_lt_frame_id > 0 && + current_frame->display_order_hint >= + (1u << (seq_params->order_hint_info.order_hint_bits_minus_1 + + 1))) { + avm_internal_error(&cm->error, AVM_CODEC_UNSUP_BITSTREAM, + "OrderHint of a RAS frame with " + "restricted_prediction_switch equal to 0 must be " + "less than (1 << OrderHintBits) when " + "long_term_frame_id_bits is greater than 0"); + } + // DOH constraint checks const int msdo_doh = pbi->common.msdo_params.msdo_doh_constraint_flag; const int lcr_doh = From 1aa25f35a1d5b7c1b838120ef7f66c0c69fcb927 Mon Sep 17 00:00:00 2001 From: marpan-max Date: Thu, 9 Jul 2026 10:14:29 -0700 Subject: [PATCH 005/205] Comment fix for disable_ml_partition_speed_features (#5090) The default value for this feature is 1, fix the comment. --- av2/arg_defs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/arg_defs.c b/av2/arg_defs.c index 962efff8d7..9df0368685 100644 --- a/av2/arg_defs.c +++ b/av2/arg_defs.c @@ -383,7 +383,7 @@ const av2_codec_arg_definitions_t g_av2_codec_arg_defs = { .disable_ml_partition_speed_features = ARG_DEF(NULL, "disable-ml-partition-speed-features", 1, "Disable ML partition speed features " - "(0: false (default), 1: true)"), + "(0: false, 1: true (default))"), .erp_pruning_level = ARG_DEF(NULL, "erp-pruning-level", 1, "Set the level of aggressiveness for erp pruning." From f90506229f93218ab4c72b9a8e6b34f03b119d14 Mon Sep 17 00:00:00 2001 From: marpan-max Date: Fri, 10 Jul 2026 10:50:39 -0700 Subject: [PATCH 006/205] Fix reset in av2_disable_ml_based_partition_sf (#5093) prune_split_with_ml/prune_none_with_ml should be reset to 0. Set prune_split_ml_level/prune_split_ml_level_inter to - 1. --- av2/encoder/speed_features.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 44b6464207..997ced107b 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -846,7 +846,12 @@ static void av2_disable_ml_based_partition_sf( part_sf->simple_motion_search_split = 0; part_sf->simple_motion_search_prune_rect = 0; part_sf->simple_motion_search_early_term_none = 0; - +#if CONFIG_ML_PART_SPLIT + part_sf->prune_split_with_ml = 0; + part_sf->prune_none_with_ml = 0; + part_sf->prune_split_ml_level = -1; + part_sf->prune_split_ml_level_inter = -1; +#endif for (int i = 0; i < PARTITION_BLOCK_SIZES; ++i) { part_sf->ml_partition_search_breakout_thresh[i] = -1; } From 344bc7c50848b30f08894e2dacdef107550607b4 Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Fri, 10 Jul 2026 11:15:59 -0700 Subject: [PATCH 007/205] Mark error-resilient switch frames as restricted (#5094) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the encoder is run in error-resilient mode (`--global-error-resilient=1`), switch frames are emitted without their reference frames being marked as restricted. This produces a bitstream that is not AV2-compliant and that decoders reject. This MR sets `restricted_prediction_switch` for error-resilient switch frames as well, so switch frames generated in that mode carry the correct restricted-reference semantics. In error-resilient mode (`--global-error-resilient=1`), the current AVM encoder converts alt-ref–type frames (which are reordered/future frames) into switch frames. When such a switch is left unconstrained (non-restricted), the encoder can assign it a low display order hint (e.g. 1) while a frame with a higher display order hint (e.g. 4) has already been output, producing a non-monotonic output order. Because a non-restricted switch does not reset the OrderHint counter, this violates the conformance constraint below (AV2 spec §7.3.6, "Coded extended layer unit"): `` If monotonic_output_order_flag is equal to 0, it is a requirement of bitstream conformance that within a coded video sequence, for a given value of obu_xlayer_id and obu_mlayer_id, if a coded output frame unit X has an associated OrderHint value equal to ohX, there shall not be a coded output frame unit Y in the same extended layer and embedded layer that appears later than X in output order and has an associated OrderHint value less than or equal to ohX, unless a switch frame with restricted_prediction_switch equal to 1 appears between X and Y in coding order. `` `` NOTE: The value of OrderHint is reset at the start of a new coded video sequence and at a switch frame with restricted_prediction_switch equal to 1. In both cases, the OrderHint counter is effectively restarted, allowing OrderHint values to be reused in subsequent coded output frame units. `` --- av2/encoder/encode_strategy.c | 3 ++- av2/encoder/encoder.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/av2/encoder/encode_strategy.c b/av2/encoder/encode_strategy.c index fa786e6a87..ff6c99dd31 100644 --- a/av2/encoder/encode_strategy.c +++ b/av2/encoder/encode_strategy.c @@ -1277,7 +1277,8 @@ int av2_encode_strategy(AV2_COMP *const cpi, size_t *const size, set_ext_overrides(cm, &frame_params, ext_flags); cm->restricted_prediction_switch = - cpi->oxcf.kf_cfg.enable_sframe && cpi->oxcf.kf_cfg.sframe_mode == 0; + (cpi->oxcf.kf_cfg.enable_sframe && cpi->oxcf.kf_cfg.sframe_mode == 0) || + cpi->oxcf.tool_cfg.g_error_resilient_mode; av2_configure_buffer_updates(cpi, frame_update_type); diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index d051a2cdd5..c4af0b4cba 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -5100,7 +5100,8 @@ int av2_encode(AV2_COMP *const cpi, uint8_t *const dest, current_frame->tlayer_id = cm->tlayer_id; current_frame->mlayer_id = cm->mlayer_id; cm->restricted_prediction_switch = - cpi->oxcf.kf_cfg.enable_sframe && cpi->oxcf.kf_cfg.sframe_mode == 0; + (cpi->oxcf.kf_cfg.enable_sframe && cpi->oxcf.kf_cfg.sframe_mode == 0) || + cpi->oxcf.tool_cfg.g_error_resilient_mode; if (current_frame->frame_type == KEY_FRAME) { for (int i = 0; i < cm->seq_params.ref_frames; i++) { if (cm->ref_frame_map[i] != NULL) From 160c6a734a0bbf255e7b0c0f9e0a1cfd0da251fe Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Mon, 13 Jul 2026 22:44:47 +0530 Subject: [PATCH 008/205] Clean up unused ref_frame_sign_bias[] in `AV2Common` structure (#5097) The `ref_frame_sign_bias` array in the `AV2Common` structure is populated in `av2_setup_frame_sign_bias()` but never used. This patch cleans up the unused array and the associated code. --- av2/common/av2_common_int.h | 6 ------ av2/common/mvref_common.c | 9 --------- av2/common/mvref_common.h | 1 - av2/decoder/decodeframe.c | 2 -- av2/encoder/encode_strategy.c | 1 - av2/encoder/encodeframe.c | 1 - 6 files changed, 20 deletions(-) diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index e64aaaba11..544b7800fe 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -2828,15 +2828,9 @@ typedef struct AV2Common { * function. */ int tpl_mvs_mem_size_col; - /*! - * ref_frame_sign_bias[k] is 1 if relative distance between reference 'k' and - * current frame is positive; and 0 otherwise. - */ - int ref_frame_sign_bias[INTER_REFS_PER_FRAME]; /*! * ref_frame_side[k] is 1 if relative distance between reference 'k' and * current frame is positive, -1 if relative distance is 0; and 0 otherwise. - * TODO(jingning): This can be combined with sign_bias later. */ int8_t ref_frame_side[INTER_REFS_PER_FRAME]; /*! diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 6eeb113610..09cdcee0c8 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -2939,15 +2939,6 @@ void av2_setup_frame_buf_refs(AV2_COMMON *cm) { } } -void av2_setup_frame_sign_bias(AV2_COMMON *cm) { - memset(&cm->ref_frame_sign_bias, 0, sizeof(cm->ref_frame_sign_bias)); - for (int ref_frame = 0; ref_frame < cm->ref_frames_info.num_future_refs; - ++ref_frame) { - const int index = cm->ref_frames_info.future_refs[ref_frame]; - cm->ref_frame_sign_bias[index] = 1; - } -} - // Get the temporal distance of start_frame to its closest ref frame // that has interpolation property relative to current frame. Interpolation // means start_frame and its ref frame are on two sides of current frame diff --git a/av2/common/mvref_common.h b/av2/common/mvref_common.h index caceea8c2f..a33cbbcf38 100644 --- a/av2/common/mvref_common.h +++ b/av2/common/mvref_common.h @@ -501,7 +501,6 @@ static AVM_INLINE void get_mv_projection(MV *output, MV ref, int num, int den) { } void av2_setup_frame_buf_refs(AV2_COMMON *cm); -void av2_setup_frame_sign_bias(AV2_COMMON *cm); void av2_setup_skip_mode_allowed(AV2_COMMON *cm); void av2_setup_motion_field(AV2_COMMON *cm); void av2_setup_ref_frame_sides(AV2_COMMON *cm); diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index 40f86360ff..1e5bb11ffb 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -9043,8 +9043,6 @@ static int read_uncompressed_header(AV2Decoder *pbi, OBU_TYPE obu_type, av2_setup_frame_buf_refs(cm); - av2_setup_frame_sign_bias(cm); - cm->cur_frame->frame_type = current_frame->frame_type; cm->cur_frame->is_restricted_switch_frame = (current_frame->frame_type == S_FRAME && diff --git a/av2/encoder/encode_strategy.c b/av2/encoder/encode_strategy.c index ff6c99dd31..6e6eb63d39 100644 --- a/av2/encoder/encode_strategy.c +++ b/av2/encoder/encode_strategy.c @@ -966,7 +966,6 @@ static int denoise_and_encode(AV2_COMP *const cpi, uint8_t *const dest, av2_set_speed_features_framesize_dependent(cpi, oxcf->speed); av2_set_rd_speed_thresholds(cpi); av2_setup_frame_buf_refs(cm); - av2_setup_frame_sign_bias(cm); av2_frame_init_quantizer(cpi); av2_setup_past_independence(cm); diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 1804edd1f7..69b109efe2 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -2388,7 +2388,6 @@ void av2_encode_frame(AV2_COMP *cpi) { av2_setup_frame_buf_refs(cm); enforce_max_ref_frames(cpi, &cm->ref_frame_flags); set_rel_frame_dist(cm, &cpi->ref_frame_dist_info, cm->ref_frame_flags); - av2_setup_frame_sign_bias(cm); cpi->palette_pixel_num = 0; #if CONFIG_MISMATCH_DEBUG mismatch_reset_frame(num_planes); From 5716c9f52e1cc19c8d961ef9c570e310753ec8d1 Mon Sep 17 00:00:00 2001 From: marpan-max Date: Tue, 14 Jul 2026 00:58:13 -0700 Subject: [PATCH 009/205] Fix settings in multi_layers tests (#5105) For tests with dynamic layer dropping: CDF_AVERAGING should be set to 0/off, to avoid DPB desync. Also for the MultiLayerTest2Embedded2TemporaSframe test enable_explicit_ref_frame_map_ should be set to true. Failures were seen at the lower speed settings (e.g., speed 2), not at the speed 5 setting used in the test. --- test/multi_layer_test.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/multi_layer_test.cc b/test/multi_layer_test.cc index 30199e1bc9..57f7bd123d 100644 --- a/test/multi_layer_test.cc +++ b/test/multi_layer_test.cc @@ -94,6 +94,7 @@ class MultiLayerTest : public ::libavm_test::CodecTestWithParam, start_decoding_tl1_ > 0)) { encoder->Control(AV2E_SET_ENABLE_REF_FRAME_MVS, 0); encoder->Control(AV2E_SET_ALLOW_REF_FRAME_MVS, 0); + encoder->Control(AV2E_SET_ENABLE_CDF_AVERAGING, 0); } if (cfg_.g_lag_in_frames > 0) { int gop_size = (cfg_.g_lag_in_frames - 1) / num_embedded_layers_; @@ -591,7 +592,7 @@ TEST_P(MultiLayerTest, MultiLayerTest2Embedded2TemporaSframe) { num_embedded_layers_ = 2; decode_base_only_ = false; drop_tl2_ = false; - enable_explicit_ref_frame_map_ = false; + enable_explicit_ref_frame_map_ = true; enable_buffer_refresh_test_ = true; enable_s_frame_ = true; cfg_.enable_sframe = 1; From 4c2775938b498671b5b6f27cd9f338508030a414 Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Tue, 14 Jul 2026 19:47:59 +0530 Subject: [PATCH 010/205] Invoke av2_setup_ref_frame_sides() unconditionally (#5096) In the reference commit, `cm->ref_frame_side[]` and `cm->ref_frame_relative_dist[]` were computed in two separate paths: either inside `av2_setup_motion_field()` when `allow_ref_frame_mvs` is true, or in `av2_setup_ref_frame_sides()`. In this patch, `av2_setup_ref_frame_sides()` is called unconditionally to populate these reference frame arrays, thus removing the duplicate computations inside `av2_setup_motion_field()`. --- av2/common/mvref_common.c | 50 +-------------------------------------- av2/decoder/decodeframe.c | 6 ++--- av2/encoder/encodeframe.c | 3 +-- 3 files changed, 4 insertions(+), 55 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 09cdcee0c8..204816ce8b 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3993,8 +3993,6 @@ static void fill_id_offset_sample_gap(AV2_COMMON *cm) { void av2_setup_motion_field(AV2_COMMON *cm) { const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; - memset(cm->ref_frame_side, 0, sizeof(cm->ref_frame_side)); - memset(cm->ref_frame_relative_dist, 0, sizeof(cm->ref_frame_relative_dist)); if (order_hint_info->order_hint_bits_minus_1 < 0) return; TPL_MV_REF *tpl_mvs_base = cm->tpl_mvs; @@ -4008,56 +4006,9 @@ void av2_setup_motion_field(AV2_COMMON *cm) { tpl_mvs_base[idx].ref_frame_offset = 0; } - const RefCntBuffer *ref_buf[INTER_REFS_PER_FRAME]; - - for (int i = 0; i < INTER_REFS_PER_FRAME; i++) { - ref_buf[i] = NULL; - cm->ref_frame_side[i] = 0; - cm->ref_frame_relative_dist[i] = 0; - } - for (int i = 0; i < cm->ref_frames_info.num_total_refs; i++) { - if (get_ref_frame_buf(cm, i)->is_restricted) { - cm->ref_frame_relative_dist[i] = INT_MAX; - } - } - for (int index = 0; index < cm->ref_frames_info.num_past_refs; index++) { - const int ref_frame = cm->ref_frames_info.past_refs[index]; - cm->ref_frame_side[ref_frame] = 0; - const RefCntBuffer *const buf = get_ref_frame_buf(cm, ref_frame); - assert(!buf->is_restricted); - ref_buf[ref_frame] = buf; - const int relative_dist = - get_relative_dist(order_hint_info, buf->display_order_hint, - cm->cur_frame->display_order_hint); - cm->ref_frame_relative_dist[ref_frame] = abs(relative_dist); - } - for (int index = 0; index < cm->ref_frames_info.num_future_refs; index++) { - const int ref_frame = cm->ref_frames_info.future_refs[index]; - cm->ref_frame_side[ref_frame] = 1; - const RefCntBuffer *const buf = get_ref_frame_buf(cm, ref_frame); - assert(!buf->is_restricted); - ref_buf[ref_frame] = buf; - const int relative_dist = - get_relative_dist(order_hint_info, buf->display_order_hint, - cm->cur_frame->display_order_hint); - cm->ref_frame_relative_dist[ref_frame] = abs(relative_dist); - } - for (int index = 0; index < cm->ref_frames_info.num_cur_refs; index++) { - const int ref_frame = cm->ref_frames_info.cur_refs[index]; - cm->ref_frame_side[ref_frame] = -1; - const RefCntBuffer *const buf = get_ref_frame_buf(cm, ref_frame); - assert(!buf->is_restricted); - ref_buf[ref_frame] = buf; - const int relative_dist = - get_relative_dist(order_hint_info, buf->display_order_hint, - cm->cur_frame->display_order_hint); - cm->ref_frame_relative_dist[ref_frame] = abs(relative_dist); - } - cm->has_both_sides_refs = (cm->ref_frames_info.num_future_refs > 0) && (cm->ref_frames_info.num_past_refs > 0); - (void)ref_buf; if (cm->seq_params.enable_mv_traj) { for (int rf = 0; rf < INTER_REFS_PER_FRAME; rf++) { for (int i = 0; i < mvs_rows * mvs_cols; i++) { @@ -4153,6 +4104,7 @@ void av2_setup_motion_field(AV2_COMMON *cm) { cm->tip_ref.ref_frame[0] = sort_ref[cur_frame_sort_idx]; cm->tip_ref.ref_frame[1] = sort_ref[cur_frame_sort_idx + 1]; } else if (cm->ref_frames_info.num_past_refs >= 2) { + assert(cur_frame_sort_idx > 0); cm->tip_ref.ref_frame[0] = sort_ref[cur_frame_sort_idx]; cm->tip_ref.ref_frame[1] = sort_ref[cur_frame_sort_idx - 1]; } diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index 1e5bb11ffb..aadcd34032 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -9694,10 +9694,8 @@ int32_t av2_read_tilegroup_header( av2_setup_block_planes(xd, cm->seq_params.subsampling_x, cm->seq_params.subsampling_y, av2_num_planes(cm)); - if (cm->features.allow_ref_frame_mvs) - av2_setup_motion_field(cm); - else - av2_setup_ref_frame_sides(cm); + av2_setup_ref_frame_sides(cm); + if (cm->features.allow_ref_frame_mvs) av2_setup_motion_field(cm); if (cm->bru.frame_inactive_flag || cm->bridge_frame_info.is_bridge_frame) { for (int plane = 0; plane < av2_num_planes(cm); plane++) { diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 69b109efe2..8adf93a66d 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -2239,6 +2239,7 @@ static AVM_INLINE void encode_frame_internal(AV2_COMP *cpi) { cm->tmvp_sample_step = 1; cm->tmvp_sample_stepl2 = 0; + av2_setup_ref_frame_sides(cm); if (features->allow_ref_frame_mvs) { cm->tmvp_sample_step = -1; av2_setup_motion_field(cm); @@ -2246,8 +2247,6 @@ static AVM_INLINE void encode_frame_internal(AV2_COMP *cpi) { cm->tmvp_sample_step = 1; cm->tmvp_sample_stepl2 = 0; } - } else { - av2_setup_ref_frame_sides(cm); } #if CONFIG_COLLECT_COMPONENT_TIMING end_timing(cpi, av2_setup_motion_field_time); From 93fcbc01296b8795c0322b80f4dd3eab2ebb5a92 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Tue, 14 Jul 2026 21:30:23 +0530 Subject: [PATCH 011/205] Github CI Bugfixes for Enc/Dec Run Jobs (#5107) (1) Add checkout step + common setup. This resolves the issue where the 'Compare hashes' step fails with 'fatal: not a git repository' because the git command was run without checking out the repository. (2) Use `github.event.pull_request.head.sha` to get base commit SHA instead of `github.sha` which is the SHA for the "temporary merge commit". This ensures that the `git log` command to find commits containing `STATS_CHANGED` keyword works correctly. Fixes #5106 --- .github/workflows/pull_request.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 69f0a7f88b..dd495589af 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -336,6 +336,12 @@ jobs: " steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 50 + + - uses: ./.github/actions/common-setup + - name: Configure AVM encoder run: | if [ -z "${AVMENC_OUTPUT}" ]; then @@ -484,7 +490,7 @@ jobs: ALLOW_FAIL=0 FAILED=0 - if [ -n "$(git --no-pager log --grep STATS_CHANGED --format=format:"%H" "${{ github.event.pull_request.base.sha }}..${{ github.sha }}")" ]; then + if [ -n "$(git --no-pager log --grep STATS_CHANGED --format=format:"%H" "${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}")" ]; then ALLOW_FAIL=1 fi @@ -507,7 +513,7 @@ jobs: echo " commits contain the STATS_CHANGED keyword, so mismatch" echo " of encode outputs is allowed." echo "Commits containing STATS_CHANGED added in this MR:" - git --no-pager log --grep STATS_CHANGED --format=format:"%h: %s; \"%aN\" <%aE>" "${{ github.event.pull_request.base.sha }}..${{ github.sha }}" + git --no-pager log --grep STATS_CHANGED --format=format:"%h: %s; \"%aN\" <%aE>" "${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}" echo "" exit 0 fi From e15ae006a006d1e04c7ef9401e89e1d7b82247ab Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Wed, 15 Jul 2026 07:39:56 -0700 Subject: [PATCH 012/205] Fix the cast for the BITSTREAM_PROFILE profile var (#5113) In the av2_check_profile_interop_conformance() function, the local variable `profile` is of the BITSTREAM_PROFILE type, so it is redundant to cast `profile` to BITSTREAM_PROFILE. I suspect the intended cast is `int`, to match the %d printf format specifier. Alternatively, we can simply remove the BITSTREAM_PROFILE casts. --- av2/common/annexA.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/av2/common/annexA.c b/av2/common/annexA.c index f03a44d5dc..c358df374c 100644 --- a/av2/common/annexA.c +++ b/av2/common/annexA.c @@ -218,7 +218,7 @@ int av2_check_profile_interop_conformance( is_decoder ? AVM_CODEC_UNSUP_BITSTREAM : AVM_CODEC_INVALID_PARAM, "Profile %d only supports YUV 4:0:0 and YUV 4:2:0 color formats, " "but color format YUV %s was provided.", - (BITSTREAM_PROFILE)profile, is_422 ? "4:2:2" : "4:4:4"); + (int)profile, is_422 ? "4:2:2" : "4:4:4"); } break; case MAIN_422_10_IP1: @@ -232,7 +232,7 @@ int av2_check_profile_interop_conformance( is_decoder ? AVM_CODEC_UNSUP_BITSTREAM : AVM_CODEC_INVALID_PARAM, "Profile %d only supports YUV 4:0:0, YUV 4:2:0 and YUV 4:2:2 color " "formats, but color format YUV 4:4:4 was provided.", - (BITSTREAM_PROFILE)profile); + (int)profile); } break; case MAIN_444_10_IP1: @@ -246,7 +246,7 @@ int av2_check_profile_interop_conformance( is_decoder ? AVM_CODEC_UNSUP_BITSTREAM : AVM_CODEC_INVALID_PARAM, "Profile %d only supports YUV 4:0:0, YUV 4:2:0 and YUV 4:4:4 color " "formats, but color format YUV 4:2:2 was provided.", - (BITSTREAM_PROFILE)profile); + (int)profile); } break; case CONFIGURABLE: { From 4b7dfb11706460e4b51ac40df7632c318ca693aa Mon Sep 17 00:00:00 2001 From: sonwman <3725799+snowman20230101@users.noreply.github.com> Date: Wed, 15 Jul 2026 13:51:22 -0400 Subject: [PATCH 013/205] Fixed an error that occurred when compiling the executable file (#5068) (#5069) This fixes app-only builds where ENABLE_APPS=ON but ENABLE_TESTS, ENABLE_EXAMPLES, and ENABLE_TOOLS are OFF. avmdec/avmenc still need libyuv/webm include paths and object sources. Verified locally: ``` cmake --build build_fast --target avmdec -j8 cmake --build build_fast --target avmenc -j8 ``` Fixes #5068 --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 75f715a34c..368c9f27fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -911,7 +911,8 @@ foreach(avm_app ${AVM_APP_TARGETS}) target_link_libraries(${avm_app} ${AVM_LIB_LINK_TYPE} avm) endforeach() -if(ENABLE_EXAMPLES +if(ENABLE_APPS + OR ENABLE_EXAMPLES OR ENABLE_TESTS OR ENABLE_TOOLS) if(CONFIG_LIBYUV) From 7802259d54a845f0cf17fde071fc0e0c4a658dd2 Mon Sep 17 00:00:00 2001 From: marpan-max Date: Thu, 16 Jul 2026 07:49:26 -0700 Subject: [PATCH 014/205] Fix setting in multi_layers tests (#5117) Update enable_explicit_ref_frame_map_ setting, and remove duplicate tests (since we should set enable_explicit_ref_frame_map_ = true for these tests). Failures were seen at the lower speed settings (e.g., speed 2), not at the speed 5 setting used in the test. --- test/multi_layer_test.cc | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/test/multi_layer_test.cc b/test/multi_layer_test.cc index 57f7bd123d..0d1d2bdb03 100644 --- a/test/multi_layer_test.cc +++ b/test/multi_layer_test.cc @@ -464,17 +464,6 @@ TEST_P(MultiLayerTest, MultiLayerTest2Embedded) { EXPECT_EQ(num_mismatch_, 0); } -TEST_P(MultiLayerTest, MultiLayerTest2EmbeddedDecodeBaseOnlyImplicit) { - ::libavm_test::Y4mVideoSource video_nonsc("park_joy_90p_8_420.y4m", 0, 20); - num_temporal_layers_ = 1; - num_embedded_layers_ = 2; - decode_base_only_ = true; - drop_tl2_ = false; - enable_explicit_ref_frame_map_ = false; - ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); - EXPECT_EQ(num_mismatch_, 0); -} - TEST_P(MultiLayerTest, MultiLayerTest2EmbeddedDecodeBaseOnlyExplicit) { ::libavm_test::Y4mVideoSource video_nonsc("park_joy_90p_8_420.y4m", 0, 20); num_temporal_layers_ = 1; @@ -497,17 +486,6 @@ TEST_P(MultiLayerTest, MultiLayerTest3Embedded) { EXPECT_EQ(num_mismatch_, 0); } -TEST_P(MultiLayerTest, MultiLayerTest3EmbeddedDecodeBaseOnlyImplicit) { - ::libavm_test::Y4mVideoSource video_nonsc("park_joy_90p_8_420.y4m", 0, 20); - num_temporal_layers_ = 1; - num_embedded_layers_ = 3; - decode_base_only_ = true; - drop_sl2_ = false; - enable_explicit_ref_frame_map_ = false; - ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); - EXPECT_EQ(num_mismatch_, 0); -} - TEST_P(MultiLayerTest, MultiLayerTest3EmbeddedDecodeBaseOnlyExplicit) { ::libavm_test::Y4mVideoSource video_nonsc("park_joy_90p_8_420.y4m", 0, 20); num_temporal_layers_ = 1; @@ -620,7 +598,7 @@ TEST_P(MultiLayerTest, MultiLayerTest3Embedded3TemporalDropTL2) { decode_base_only_ = false; drop_tl2_ = true; drop_sl2_ = false; - enable_explicit_ref_frame_map_ = false; + enable_explicit_ref_frame_map_ = true; enable_buffer_refresh_test_ = false; ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); EXPECT_EQ(num_mismatch_, 0); @@ -633,7 +611,7 @@ TEST_P(MultiLayerTest, MultiLayerTest3Embedded3TemporalDropSL2) { decode_base_only_ = false; drop_tl2_ = false; drop_sl2_ = true; - enable_explicit_ref_frame_map_ = false; + enable_explicit_ref_frame_map_ = true; enable_buffer_refresh_test_ = false; ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); EXPECT_EQ(num_mismatch_, 0); From 229f4f93bd61c194be96800a730662ce8f15179f Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Wed, 1 Jul 2026 16:31:21 +0530 Subject: [PATCH 015/205] Fix typo during checks for allowing extended sdp As extended sdp is allowed only for partition type less than uneven 4 way search partition, this change has no effect on stats. This is done for consistency. --- av2/encoder/partition_search.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 8f71bdf126..adbad1bab3 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3096,7 +3096,7 @@ static void rd_pick_rect_partition( if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, pc_tree->parent->block_size, parent_partition) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ)) + is_bsize_allowed_for_extended_sdp(bsize, partition_type)) sum_rdc->rate += part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, 0); @@ -5076,7 +5076,7 @@ static void search_partition_horz_4b( is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, pc_tree->parent->block_size, pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ_4A)) + is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ_4B)) sum_rdc.rate += part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); From 168270197d0a8b94933218bf63202e1080474583 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Thu, 9 Jul 2026 13:48:48 +0530 Subject: [PATCH 016/205] Unify extended partition search functions This change unifies uneven 4way partition search functions and h partition search functions into one function No stats changed. --- av2/common/blockd.h | 12 + av2/encoder/context_tree.c | 86 ++++ av2/encoder/context_tree.h | 9 + av2/encoder/partition_search.c | 773 +++++---------------------------- 4 files changed, 211 insertions(+), 669 deletions(-) diff --git a/av2/common/blockd.h b/av2/common/blockd.h index 53b43ca551..3805e61707 100644 --- a/av2/common/blockd.h +++ b/av2/common/blockd.h @@ -1012,6 +1012,18 @@ static AVM_INLINE RECT_PART_TYPE get_rect_part_type(PARTITION_TYPE partition) { return NUM_RECT_PARTS; } +/*!\brief Returns whether the current partition is 4a or 4b. */ +static AVM_INLINE UNEVEN_4WAY_PART_TYPE +get_4way_part_type(PARTITION_TYPE partition) { + if (partition == PARTITION_HORZ_4A || partition == PARTITION_VERT_4A) { + return UNEVEN_4A; + } else if (partition == PARTITION_HORZ_4B || partition == PARTITION_VERT_4B) { + return UNEVEN_4B; + } + assert(0 && "Uneven 4 way partition expected!"); + return NUM_RECT_PARTS; +} + static INLINE int has_second_ref(const MB_MODE_INFO *mbmi) { return is_inter_ref_frame(mbmi->ref_frame[1]); } diff --git a/av2/encoder/context_tree.c b/av2/encoder/context_tree.c index 2684087c0d..33fc4420ff 100644 --- a/av2/encoder/context_tree.c +++ b/av2/encoder/context_tree.c @@ -20,6 +20,92 @@ static const BLOCK_SIZE square[MAX_SB_SIZE_LOG2 - 1] = { BLOCK_64X64, BLOCK_128X128, BLOCK_256X256, }; +static const int subblock_count[ALL_PARTITION_TYPES] = { 0, 2, 2, 4, 4, + 4, 4, 4, 4, 4 }; + +static const int step_multiplier[ALL_PARTITION_TYPES][4][2] = { + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_NONE + { { 0, 0 }, { 4, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_HORZ + { { 0, 0 }, { 0, 4 }, { 0, 0 }, { 0, 0 } }, // PARTITION_VERT + { { 0, 0 }, { 2, 0 }, { 2, 4 }, { 6, 0 } }, // PARTITION_HORZ_3 + { { 0, 0 }, { 0, 2 }, { 4, 2 }, { 0, 6 } }, // PARTITION_VERT_3 + { { 0, 0 }, { 1, 0 }, { 3, 0 }, { 7, 0 } }, // PARTITION_HORZ_4A + { { 0, 0 }, { 1, 0 }, { 5, 0 }, { 7, 0 } }, // PARTITION_HORZ_4B + { { 0, 0 }, { 0, 1 }, { 0, 3 }, { 0, 7 } }, // PARTITION_VERT_4A + { { 0, 0 }, { 0, 1 }, { 0, 5 }, { 0, 7 } }, // PARTITION_VERT_4B + { { 0, 0 }, { 0, 4 }, { 4, 0 }, { 4, 4 } }, // PARTITION_SPLIT +}; + +/*!\brief Retrieves the array of child PC_TREE nodes corresponding to a specific + * partition type and region. */ +PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, + PARTITION_TYPE partition, REGION_TYPE region, + int *num_sub_parts) { + PC_TREE *const *child_nodes = NULL; + + switch (partition) { + case PARTITION_NONE: break; + case PARTITION_HORZ: child_nodes = pc_tree->horizontal[region]; break; + case PARTITION_VERT: child_nodes = pc_tree->vertical[region]; break; + case PARTITION_HORZ_3: child_nodes = pc_tree->horizontal3[region]; break; + case PARTITION_VERT_3: child_nodes = pc_tree->vertical3[region]; break; + case PARTITION_HORZ_4A: child_nodes = pc_tree->horizontal4a[region]; break; + case PARTITION_HORZ_4B: child_nodes = pc_tree->horizontal4b[region]; break; + case PARTITION_VERT_4A: child_nodes = pc_tree->vertical4a[region]; break; + case PARTITION_VERT_4B: child_nodes = pc_tree->vertical4b[region]; break; + case PARTITION_SPLIT: child_nodes = pc_tree->split[region]; break; + default: assert(0 && "Unexpected partition type"); break; + } + *num_sub_parts = subblock_count[partition]; + + return child_nodes; +} + +/*!\brief Computes the layout (coordinates and sizes) of subblocks resulting + * from a partition. */ +void get_partition_subblock_layout(PARTITION_TYPE partition_type, + BLOCK_SIZE bsize, int mi_row, int mi_col, + BLOCK_SIZE sub_sizes[4], int mi_rows[4], + int mi_cols[4]) { + assert(partition_type <= PARTITION_SPLIT); + const int eighth_step_h = block_size_high[bsize] / 8; + const int eighth_step_w = block_size_wide[bsize] / 8; + const BLOCK_SIZE part_subsize = get_partition_subsize(bsize, partition_type); + + for (int sub_idx = 0; sub_idx < subblock_count[partition_type]; ++sub_idx) { + mi_rows[sub_idx] = mi_row + step_multiplier[partition_type][sub_idx][0] * + eighth_step_h / 4; + mi_cols[sub_idx] = mi_col + step_multiplier[partition_type][sub_idx][1] * + eighth_step_w / 4; + sub_sizes[sub_idx] = part_subsize; + } + if (partition_type == PARTITION_HORZ_3 || + partition_type == PARTITION_VERT_3) { + const BLOCK_SIZE sml_subsize = + get_h_partition_subsize(bsize, 0, partition_type); + const BLOCK_SIZE big_subsize = + get_h_partition_subsize(bsize, 1, partition_type); + sub_sizes[0] = sub_sizes[3] = sml_subsize; + sub_sizes[1] = sub_sizes[2] = big_subsize; + } else if (partition_type == PARTITION_HORZ_4A || + partition_type == PARTITION_VERT_4A || + partition_type == PARTITION_HORZ_4B || + partition_type == PARTITION_VERT_4B) { + const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); + const UNEVEN_4WAY_PART_TYPE uneven_type = + get_4way_part_type(partition_type); + const PARTITION_TYPE p_type = + (rect_type == HORZ) ? PARTITION_HORZ : PARTITION_VERT; + const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, p_type); + assert(big_subsize != BLOCK_INVALID); + const BLOCK_SIZE med_subsize = subsize_lookup[p_type][big_subsize]; + assert(med_subsize != BLOCK_INVALID); + assert(part_subsize == subsize_lookup[p_type][med_subsize]); + sub_sizes[1] = (uneven_type == UNEVEN_4A ? med_subsize : big_subsize); + sub_sizes[2] = (uneven_type == UNEVEN_4A ? big_subsize : med_subsize); + } +} + void av2_copy_tree_context(PICK_MODE_CONTEXT *dst_ctx, PICK_MODE_CONTEXT *src_ctx, int num_planes) { dst_ctx->mic = src_ctx->mic; diff --git a/av2/encoder/context_tree.h b/av2/encoder/context_tree.h index a3f4de2452..61a965c894 100644 --- a/av2/encoder/context_tree.h +++ b/av2/encoder/context_tree.h @@ -144,6 +144,15 @@ void av2_free_sms_tree(struct ThreadData *td); void av2_setup_sms_bufs(struct AV2Common *cm, struct ThreadData *td); void av2_free_sms_bufs(struct ThreadData *td); +PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, + PARTITION_TYPE partition, REGION_TYPE region, + int *num_sub_parts); + +void get_partition_subblock_layout(PARTITION_TYPE partition_type, + BLOCK_SIZE bsize, int mi_row, int mi_col, + BLOCK_SIZE sub_sizes[4], int mi_rows[4], + int mi_cols[4]); + #ifdef __cplusplus } // extern "C" #endif diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index adbad1bab3..f58db39d7d 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -4907,578 +4907,135 @@ static AVM_INLINE void prune_ext_partitions_4way( } } -static const int cum_step_multipliers_4a[4] = { 0, 1, 3, 7 }; -static const int cum_step_multipliers_4b[4] = { 0, 1, 5, 7 }; - -static void search_partition_horz_4a( +/*!\brief Performs rdopt on extended partitions */ +static void search_extended_partition( PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition) { + CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition, + PARTITION_TYPE partition_type) { const AV2_COMMON *const cm = &cpi->common; MACROBLOCK *const x = &td->mb; const int num_planes = av2_num_planes(cm); MACROBLOCKD *const xd = &x->e_mbd; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - + const int ss_x = xd->plane[AVM_PLANE_U].subsampling_x; + const int ss_y = xd->plane[AVM_PLANE_U].subsampling_y; const PartitionBlkParams *blk_params = &search_state->part_blk_params; const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; const BLOCK_SIZE bsize = blk_params->bsize; - if (is_part_pruned_by_forced_partition(part_search_state, - PARTITION_HORZ_4A) || - !part_search_state->partition_4a_allowed[HORZ] || - part_search_state->prune_partition_4a[HORZ]) { - return; - } - - if (search_state->terminate_partition_search || !blk_params->has_rows || - !is_partition_valid(bsize, PARTITION_HORZ_4A) || - !(search_state->do_rectangular_split || - av2_active_h_edge(cpi, mi_row, blk_params->mi_step_h))) { - return; - } + assert(partition_type >= PARTITION_HORZ_3 && + partition_type <= PARTITION_VERT_4B); - const int part_h4a_rate = search_state->partition_cost[PARTITION_HORZ_4A]; - if (part_h4a_rate == INT_MAX || - RDCOST(x->rdmult, part_h4a_rate, 0) >= best_rdc->rdcost) { + if (is_part_pruned_by_forced_partition(part_search_state, partition_type)) return; - } - RD_STATS sum_rdc; - av2_init_rd_stats(&sum_rdc); - const int eighth_step = mi_size_high[bsize] / 8; - - sum_rdc.rate = search_state->partition_cost[PARTITION_HORZ_4A]; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && - is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, - pc_tree->parent->block_size, - pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ_4A)) - sum_rdc.rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; - sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - - const BLOCK_SIZE sml_subsize = - get_partition_subsize(bsize, PARTITION_HORZ_4A); - const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE med_subsize = subsize_lookup[PARTITION_HORZ][big_subsize]; - assert(sml_subsize == subsize_lookup[PARTITION_HORZ][med_subsize]); - - const BLOCK_SIZE subblock_sizes[4] = { sml_subsize, med_subsize, big_subsize, - sml_subsize }; - - REGION_TYPE cur_region_type = pc_tree->region_type; - - for (int idx = 0; idx < 4; idx++) { - if (pc_tree->horizontal4a[cur_region_type][idx]) { - av2_free_pc_tree_recursive(pc_tree->horizontal4a[cur_region_type][idx], - num_planes, 0, 0); - pc_tree->horizontal4a[cur_region_type][idx] = NULL; - } - const int this_mi_row = mi_row + eighth_step * cum_step_multipliers_4a[idx]; - pc_tree->horizontal4a[cur_region_type][idx] = av2_alloc_pc_tree_node( - xd->tree_type, this_mi_row, mi_col, cm->sb_size, subblock_sizes[idx], - pc_tree, PARTITION_HORZ_4A, idx, idx == 3, ss_x, ss_y); - } - for (int i = 0; i < 4; ++i) - pc_tree->horizontal4a[cur_region_type][i]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition; - bool skippable = true; - for (int i = 0; i < 4; ++i) { - const int this_mi_row = mi_row + eighth_step * cum_step_multipliers_4a[i]; - - if (i > 0 && this_mi_row >= cm->mi_params.mi_rows) { - av2_mark_block_as_pseudo_coded(xd, this_mi_row, mi_col, subblock_sizes[i], - cm->sb_size); - continue; - } - - SUBBLOCK_RDO_DATA rdo_data = { pc_tree->horizontal4a[cur_region_type][i], - get_partition_subtree_const(ptree_luma, i), - get_partition_subtree_const(template_tree, - i), - this_mi_row, - mi_col, - subblock_sizes[i], - PARTITION_HORZ_4A }; - if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, - &sum_rdc, multi_pass_mode, &skippable, - max_recursion_depth)) { - av2_invalid_rd_stats(&sum_rdc); - break; - } - } - - av2_rd_cost_update(x->rdmult, &sum_rdc); - if (sum_rdc.rdcost < best_rdc->rdcost) { - update_best_level_banks(level_banks, &x->e_mbd); - *best_rdc = sum_rdc; - search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_HORZ_4A; - pc_tree->skippable = skippable; - } - - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); - restore_level_banks(&x->e_mbd, level_banks); -} - -static void search_partition_horz_4b( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, - SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition) { - const AV2_COMMON *const cm = &cpi->common; - MACROBLOCK *const x = &td->mb; - const int num_planes = av2_num_planes(cm); - MACROBLOCKD *const xd = &x->e_mbd; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - - const PartitionBlkParams *blk_params = &search_state->part_blk_params; - const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; - const BLOCK_SIZE bsize = blk_params->bsize; - - REGION_TYPE cur_region_type = pc_tree->region_type; - - if (is_part_pruned_by_forced_partition(part_search_state, - PARTITION_HORZ_4B) || - !part_search_state->partition_4b_allowed[HORZ] || - part_search_state->prune_partition_4b[HORZ]) { - return; - } - - if (search_state->terminate_partition_search || !blk_params->has_rows || - !is_partition_valid(bsize, PARTITION_HORZ_4B) || - !(search_state->do_rectangular_split || - av2_active_h_edge(cpi, mi_row, blk_params->mi_step_h))) { - return; - } - - const int part_h4b_rate = search_state->partition_cost[PARTITION_HORZ_4B]; - if (part_h4b_rate == INT_MAX || - RDCOST(x->rdmult, part_h4b_rate, 0) >= best_rdc->rdcost) { - return; - } - RD_STATS sum_rdc; - av2_init_rd_stats(&sum_rdc); - const int eighth_step = mi_size_high[bsize] / 8; - - sum_rdc.rate = search_state->partition_cost[PARTITION_HORZ_4B]; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && - is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, - pc_tree->parent->block_size, - pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ_4B)) - sum_rdc.rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; - sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - - const BLOCK_SIZE sml_subsize = - get_partition_subsize(bsize, PARTITION_HORZ_4B); - const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE med_subsize = subsize_lookup[PARTITION_HORZ][big_subsize]; - assert(sml_subsize == subsize_lookup[PARTITION_HORZ][med_subsize]); - - const BLOCK_SIZE subblock_sizes[4] = { sml_subsize, big_subsize, med_subsize, - sml_subsize }; - - for (int idx = 0; idx < 4; idx++) { - if (pc_tree->horizontal4b[cur_region_type][idx]) { - av2_free_pc_tree_recursive(pc_tree->horizontal4b[cur_region_type][idx], - num_planes, 0, 0); - pc_tree->horizontal4b[cur_region_type][idx] = NULL; - } - const int this_mi_row = mi_row + eighth_step * cum_step_multipliers_4b[idx]; - pc_tree->horizontal4b[cur_region_type][idx] = av2_alloc_pc_tree_node( - xd->tree_type, this_mi_row, mi_col, cm->sb_size, subblock_sizes[idx], - pc_tree, PARTITION_HORZ_4B, idx, idx == 3, ss_x, ss_y); - } - for (int i = 0; i < 4; ++i) - pc_tree->horizontal4b[cur_region_type][i]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition; - bool skippable = true; - for (int i = 0; i < 4; ++i) { - const int this_mi_row = mi_row + eighth_step * cum_step_multipliers_4b[i]; - - if (i > 0 && this_mi_row >= cm->mi_params.mi_rows) { - av2_mark_block_as_pseudo_coded(xd, this_mi_row, mi_col, subblock_sizes[i], - cm->sb_size); - continue; - } - - SUBBLOCK_RDO_DATA rdo_data = { pc_tree->horizontal4b[cur_region_type][i], - get_partition_subtree_const(ptree_luma, i), - get_partition_subtree_const(template_tree, - i), - this_mi_row, - mi_col, - subblock_sizes[i], - PARTITION_HORZ_4B }; - if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, - &sum_rdc, multi_pass_mode, &skippable, - max_recursion_depth)) { - av2_invalid_rd_stats(&sum_rdc); - break; - } - } - - av2_rd_cost_update(x->rdmult, &sum_rdc); - if (sum_rdc.rdcost < best_rdc->rdcost) { - update_best_level_banks(level_banks, &x->e_mbd); - *best_rdc = sum_rdc; - search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_HORZ_4B; - pc_tree->skippable = skippable; - } - - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); - restore_level_banks(&x->e_mbd, level_banks); -} - -static void search_partition_vert_4a( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, - SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition) { - const AV2_COMMON *const cm = &cpi->common; - MACROBLOCK *const x = &td->mb; - const int num_planes = av2_num_planes(cm); - MACROBLOCKD *const xd = &x->e_mbd; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - - const PartitionBlkParams *blk_params = &search_state->part_blk_params; - const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; - const BLOCK_SIZE bsize = blk_params->bsize; - - REGION_TYPE cur_region_type = pc_tree->region_type; - - if (is_part_pruned_by_forced_partition(part_search_state, - PARTITION_VERT_4A) || - !part_search_state->partition_4a_allowed[VERT] || - part_search_state->prune_partition_4a[VERT]) { - return; - } - - if (search_state->terminate_partition_search || !blk_params->has_cols || - !is_partition_valid(bsize, PARTITION_VERT_4A) || - !(search_state->do_rectangular_split || - av2_active_v_edge(cpi, mi_col, blk_params->mi_step_w))) { - return; - } - - const int part_v4a_rate = search_state->partition_cost[PARTITION_VERT_4A]; - if (part_v4a_rate == INT_MAX || - RDCOST(x->rdmult, part_v4a_rate, 0) >= best_rdc->rdcost) { - return; - } - RD_STATS sum_rdc; - av2_init_rd_stats(&sum_rdc); - const int eighth_step = mi_size_wide[bsize] / 8; - - sum_rdc.rate = search_state->partition_cost[PARTITION_VERT_4A]; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && - is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, - pc_tree->parent->block_size, - pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_VERT_4A)) - sum_rdc.rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; - sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - - const BLOCK_SIZE sml_subsize = - get_partition_subsize(bsize, PARTITION_VERT_4A); - const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE med_subsize = subsize_lookup[PARTITION_VERT][big_subsize]; - assert(sml_subsize == subsize_lookup[PARTITION_VERT][med_subsize]); - - const BLOCK_SIZE subblock_sizes[4] = { sml_subsize, med_subsize, big_subsize, - sml_subsize }; - - for (int idx = 0; idx < 4; idx++) { - if (pc_tree->vertical4a[cur_region_type][idx]) { - av2_free_pc_tree_recursive(pc_tree->vertical4a[cur_region_type][idx], - num_planes, 0, 0); - pc_tree->vertical4a[cur_region_type][idx] = NULL; + if (search_state->terminate_partition_search) return; + if (!is_partition_valid(bsize, partition_type)) return; + + const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); + const bool is_h_partition = + partition_type == PARTITION_HORZ_3 || partition_type == PARTITION_VERT_3; + if (is_h_partition) { + if (!part_search_state->partition_3_allowed[rect_type] || + part_search_state->prune_partition_3[rect_type]) + return; + } else { + const UNEVEN_4WAY_PART_TYPE uneven_type = + get_4way_part_type(partition_type); + bool skip_search; + if (uneven_type == UNEVEN_4A) { + skip_search = (!part_search_state->partition_4a_allowed[rect_type] || + part_search_state->prune_partition_4a[rect_type]); + } else { + skip_search = (!part_search_state->partition_4b_allowed[rect_type] || + part_search_state->prune_partition_4b[rect_type]); } - const int this_mi_col = mi_col + eighth_step * cum_step_multipliers_4a[idx]; - pc_tree->vertical4a[cur_region_type][idx] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row, this_mi_col, cm->sb_size, subblock_sizes[idx], - pc_tree, PARTITION_VERT_4A, idx, idx == 3, ss_x, ss_y); + if (skip_search) return; } - for (int i = 0; i < 4; ++i) - pc_tree->vertical4a[cur_region_type][i]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition; - bool skippable = true; - for (int i = 0; i < 4; ++i) { - const int this_mi_col = mi_col + eighth_step * cum_step_multipliers_4a[i]; - - if (i > 0 && this_mi_col >= cm->mi_params.mi_cols) { - av2_mark_block_as_pseudo_coded(xd, mi_row, this_mi_col, subblock_sizes[i], - cm->sb_size); - continue; + if (rect_type == HORZ) { + if (!blk_params->has_rows) return; + if (!(search_state->do_rectangular_split || + av2_active_h_edge(cpi, mi_row, blk_params->mi_step_h))) + return; + if (is_h_partition) { + if (mi_col + (mi_size_wide[bsize] >> 1) >= cm->mi_params.mi_cols) return; } - - SUBBLOCK_RDO_DATA rdo_data = { pc_tree->vertical4a[cur_region_type][i], - get_partition_subtree_const(ptree_luma, i), - get_partition_subtree_const(template_tree, - i), - mi_row, - this_mi_col, - subblock_sizes[i], - PARTITION_VERT_4A }; - if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, - &sum_rdc, multi_pass_mode, &skippable, - max_recursion_depth)) { - av2_invalid_rd_stats(&sum_rdc); - break; + } else { + if (!blk_params->has_cols) return; + if (!(search_state->do_rectangular_split || + av2_active_v_edge(cpi, mi_col, blk_params->mi_step_w))) + return; + if (is_h_partition) { + if (mi_row + (mi_size_high[bsize] >> 1) >= cm->mi_params.mi_rows) return; } } - av2_rd_cost_update(x->rdmult, &sum_rdc); - if (sum_rdc.rdcost < best_rdc->rdcost) { - update_best_level_banks(level_banks, &x->e_mbd); - *best_rdc = sum_rdc; - search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_VERT_4A; - pc_tree->skippable = skippable; - } - - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); - restore_level_banks(&x->e_mbd, level_banks); -} - -static void search_partition_vert_4b( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, - SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition) { - const AV2_COMMON *const cm = &cpi->common; - MACROBLOCK *const x = &td->mb; - const int num_planes = av2_num_planes(cm); - MACROBLOCKD *const xd = &x->e_mbd; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - - const PartitionBlkParams *blk_params = &search_state->part_blk_params; - const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; - const BLOCK_SIZE bsize = blk_params->bsize; - - REGION_TYPE cur_region_type = pc_tree->region_type; - - if (is_part_pruned_by_forced_partition(part_search_state, - PARTITION_VERT_4B) || - !part_search_state->partition_4b_allowed[VERT] || - part_search_state->prune_partition_4b[VERT]) { + const int part_rate = search_state->partition_cost[partition_type]; + if (part_rate == INT_MAX || + RDCOST(x->rdmult, part_rate, 0) >= best_rdc->rdcost) { return; } - if (search_state->terminate_partition_search || !blk_params->has_cols || - !is_partition_valid(bsize, PARTITION_VERT_4B) || - !(search_state->do_rectangular_split || - av2_active_v_edge(cpi, mi_col, blk_params->mi_step_w))) { - return; - } - - const int part_v4b_rate = search_state->partition_cost[PARTITION_VERT_4B]; - if (part_v4b_rate == INT_MAX || - RDCOST(x->rdmult, part_v4b_rate, 0) >= best_rdc->rdcost) { - return; - } RD_STATS sum_rdc; av2_init_rd_stats(&sum_rdc); - const int eighth_step = mi_size_wide[bsize] / 8; - - sum_rdc.rate = search_state->partition_cost[PARTITION_VERT_4B]; + sum_rdc.rate = search_state->partition_cost[partition_type]; if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, pc_tree->parent->block_size, pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_VERT_4B)) + is_bsize_allowed_for_extended_sdp(bsize, partition_type)) sum_rdc.rate += part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - const BLOCK_SIZE sml_subsize = - get_partition_subsize(bsize, PARTITION_VERT_4B); - const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE med_subsize = subsize_lookup[PARTITION_VERT][big_subsize]; - assert(sml_subsize == subsize_lookup[PARTITION_VERT][med_subsize]); - - const BLOCK_SIZE subblock_sizes[4] = { sml_subsize, big_subsize, med_subsize, - sml_subsize }; - - for (int idx = 0; idx < 4; idx++) { - if (pc_tree->vertical4b[cur_region_type][idx]) { - av2_free_pc_tree_recursive(pc_tree->vertical4b[cur_region_type][idx], - num_planes, 0, 0); - pc_tree->vertical4b[cur_region_type][idx] = NULL; - } - const int this_mi_col = mi_col + eighth_step * cum_step_multipliers_4b[idx]; - pc_tree->vertical4b[cur_region_type][idx] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row, this_mi_col, cm->sb_size, subblock_sizes[idx], - pc_tree, PARTITION_VERT_4B, idx, idx == 3, ss_x, ss_y); - } - for (int i = 0; i < 4; ++i) - pc_tree->vertical4b[cur_region_type][i]->is_cfl_allowed_for_this_chroma = + int num_sub_parts = 0; + PC_TREE **child_nodes = (PC_TREE **)get_child_pc_trees( + pc_tree, partition_type, pc_tree->region_type, &num_sub_parts); + assert(num_sub_parts == 4); + + int mi_rows[4], mi_cols[4]; + BLOCK_SIZE subblock_sizes[4]; + get_partition_subblock_layout(partition_type, bsize, mi_row, mi_col, + subblock_sizes, mi_rows, mi_cols); + + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + if (child_nodes[sub_idx]) { + av2_free_pc_tree_recursive(child_nodes[sub_idx], num_planes, 0, 0); + child_nodes[sub_idx] = NULL; + } + child_nodes[sub_idx] = av2_alloc_pc_tree_node( + xd->tree_type, mi_rows[sub_idx], mi_cols[sub_idx], cm->sb_size, + subblock_sizes[sub_idx], pc_tree, partition_type, sub_idx, + sub_idx == (num_sub_parts - 1), ss_x, ss_y); + + child_nodes[sub_idx]->is_cfl_allowed_for_this_chroma = pc_tree->is_cfl_allowed_for_this_chroma | is_cfl_allowed_for_this_chroma_partition; - bool skippable = true; - for (int i = 0; i < 4; ++i) { - const int this_mi_col = mi_col + eighth_step * cum_step_multipliers_4b[i]; - - if (i > 0 && this_mi_col >= cm->mi_params.mi_cols) { - av2_mark_block_as_pseudo_coded(xd, mi_row, this_mi_col, subblock_sizes[i], - cm->sb_size); - continue; - } - - SUBBLOCK_RDO_DATA rdo_data = { pc_tree->vertical4b[cur_region_type][i], - get_partition_subtree_const(ptree_luma, i), - get_partition_subtree_const(template_tree, - i), - mi_row, - this_mi_col, - subblock_sizes[i], - PARTITION_VERT_4B }; - if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, - &sum_rdc, multi_pass_mode, &skippable, - max_recursion_depth)) { - av2_invalid_rd_stats(&sum_rdc); - break; - } } - - av2_rd_cost_update(x->rdmult, &sum_rdc); - if (sum_rdc.rdcost < best_rdc->rdcost) { - update_best_level_banks(level_banks, &x->e_mbd); - *best_rdc = sum_rdc; - search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_VERT_4B; - pc_tree->skippable = skippable; - } - - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); - restore_level_banks(&x->e_mbd, level_banks); -} - -/*!\brief Performs rdopt on PARTITION_HORZ_3. */ -static INLINE void search_partition_horz_3( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, - SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition) { - const AV2_COMMON *const cm = &cpi->common; - MACROBLOCK *const x = &td->mb; - const int num_planes = av2_num_planes(cm); - MACROBLOCKD *const xd = &x->e_mbd; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - - const PartitionBlkParams *blk_params = &search_state->part_blk_params; - const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; - const BLOCK_SIZE bsize = blk_params->bsize; - - REGION_TYPE cur_region_type = pc_tree->region_type; - - if (is_part_pruned_by_forced_partition(part_search_state, PARTITION_HORZ_3) || - !part_search_state->partition_3_allowed[HORZ] || - part_search_state->prune_partition_3[HORZ]) { - return; - } - - if (search_state->terminate_partition_search || !blk_params->has_rows || - !is_partition_valid(bsize, PARTITION_HORZ_3) || - !(search_state->do_rectangular_split || - av2_active_h_edge(cpi, mi_row, blk_params->mi_step_h))) { - return; - } - // TODO(yuec): set default partition modes for the edge directly by ruling out - // h partitions from the syntax if the 2nd middle block is not in the frame. - if (mi_col + (mi_size_wide[bsize] >> 1) >= cm->mi_params.mi_cols) return; - - const int part_h3_rate = search_state->partition_cost[PARTITION_HORZ_3]; - if (part_h3_rate == INT_MAX || - RDCOST(x->rdmult, part_h3_rate, 0) >= best_rdc->rdcost) { - return; - } - RD_STATS sum_rdc; - av2_init_rd_stats(&sum_rdc); - const int quarter_step = mi_size_high[bsize] / 4; - - sum_rdc.rate = search_state->partition_cost[PARTITION_HORZ_3]; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && - is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, - pc_tree->parent->block_size, - pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ_3)) - sum_rdc.rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; - sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - - const BLOCK_SIZE sml_subsize = - get_h_partition_subsize(bsize, 0, PARTITION_HORZ_3); - const BLOCK_SIZE big_subsize = - get_h_partition_subsize(bsize, 1, PARTITION_HORZ_3); - const BLOCK_SIZE subblock_sizes[4] = { sml_subsize, big_subsize, big_subsize, - sml_subsize }; - const int offset_mr[4] = { 0, quarter_step, quarter_step, 3 * quarter_step }; - const int offset_mc[4] = { 0, 0, mi_size_wide[bsize] / 2, 0 }; - - for (int idx = 0; idx < 4; idx++) { - if (pc_tree->horizontal3[cur_region_type][idx]) { - av2_free_pc_tree_recursive(pc_tree->horizontal3[cur_region_type][idx], - num_planes, 0, 0); - pc_tree->horizontal3[cur_region_type][idx] = NULL; - } - - pc_tree->horizontal3[cur_region_type][idx] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row + offset_mr[idx], mi_col + offset_mc[idx], - cm->sb_size, subblock_sizes[idx], pc_tree, PARTITION_HORZ_3, idx, - idx == 3, ss_x, ss_y); - } - for (int i = 0; i < 4; ++i) - pc_tree->horizontal3[cur_region_type][i]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition; bool skippable = true; - for (int i = 0; i < 4; ++i) { - const int this_mi_row = mi_row + offset_mr[i]; - const int this_mi_col = mi_col + offset_mc[i]; + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + const int this_mi_row = mi_rows[sub_idx]; + const int this_mi_col = mi_cols[sub_idx]; - if (i > 0 && this_mi_row >= cm->mi_params.mi_rows) { + if (sub_idx > 0 && (this_mi_row >= cm->mi_params.mi_rows || + this_mi_col >= cm->mi_params.mi_cols)) { av2_mark_block_as_pseudo_coded(xd, this_mi_row, this_mi_col, - subblock_sizes[i], cm->sb_size); + subblock_sizes[sub_idx], cm->sb_size); continue; } - SUBBLOCK_RDO_DATA rdo_data = { pc_tree->horizontal3[cur_region_type][i], - get_partition_subtree_const(ptree_luma, i), - get_partition_subtree_const(template_tree, - i), - this_mi_row, - this_mi_col, - subblock_sizes[i], - PARTITION_HORZ_3 }; + SUBBLOCK_RDO_DATA rdo_data = { + child_nodes[sub_idx], + get_partition_subtree_const(ptree_luma, sub_idx), + get_partition_subtree_const(template_tree, sub_idx), + this_mi_row, + this_mi_col, + subblock_sizes[sub_idx], + partition_type + }; if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, &sum_rdc, multi_pass_mode, &skippable, max_recursion_depth)) { @@ -5492,7 +5049,7 @@ static INLINE void search_partition_horz_3( update_best_level_banks(level_banks, &x->e_mbd); *best_rdc = sum_rdc; search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_HORZ_3; + pc_tree->partitioning = partition_type; pc_tree->skippable = skippable; } @@ -5500,128 +5057,6 @@ static INLINE void search_partition_horz_3( restore_level_banks(&x->e_mbd, level_banks); } -/*!\brief Performs rdopt on PARTITION_VERT_3. */ -static INLINE void search_partition_vert_3( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, - SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition) { - const AV2_COMMON *const cm = &cpi->common; - MACROBLOCK *const x = &td->mb; - const int num_planes = av2_num_planes(cm); - MACROBLOCKD *const xd = &x->e_mbd; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - - const PartitionBlkParams *blk_params = &search_state->part_blk_params; - const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; - const BLOCK_SIZE bsize = blk_params->bsize; - - REGION_TYPE cur_region_type = pc_tree->region_type; - - if (is_part_pruned_by_forced_partition(part_search_state, PARTITION_VERT_3) || - !part_search_state->partition_3_allowed[VERT] || - part_search_state->prune_partition_3[VERT]) { - return; - } - - if (search_state->terminate_partition_search || !blk_params->has_cols || - !is_partition_valid(bsize, PARTITION_VERT_3) || - !(search_state->do_rectangular_split || - av2_active_v_edge(cpi, mi_col, blk_params->mi_step_w))) { - return; - } - // TODO(yuec): set default partition modes for the edge directly by ruling out - // h partitions from the syntax if the 2nd middle block is not in the frame. - if (mi_row + (mi_size_high[bsize] >> 1) >= cm->mi_params.mi_rows) return; - - const int part_v3_rate = search_state->partition_cost[PARTITION_VERT_3]; - if (part_v3_rate == INT_MAX || - RDCOST(x->rdmult, part_v3_rate, 0) >= best_rdc->rdcost) { - return; - } - - RD_STATS sum_rdc; - av2_init_rd_stats(&sum_rdc); - const int quarter_step = mi_size_wide[bsize] / 4; - - sum_rdc.rate = search_state->partition_cost[PARTITION_VERT_3]; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && - is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, - pc_tree->parent->block_size, - pc_tree->parent->partitioning) && - is_bsize_allowed_for_extended_sdp(bsize, PARTITION_VERT_3)) - sum_rdc.rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; - sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - - const BLOCK_SIZE sml_subsize = - get_h_partition_subsize(bsize, 0, PARTITION_VERT_3); - const BLOCK_SIZE big_subsize = - get_h_partition_subsize(bsize, 1, PARTITION_VERT_3); - const BLOCK_SIZE subblock_sizes[4] = { sml_subsize, big_subsize, big_subsize, - sml_subsize }; - const int offset_mr[4] = { 0, 0, mi_size_high[bsize] / 2, 0 }; - const int offset_mc[4] = { 0, quarter_step, quarter_step, 3 * quarter_step }; - - for (int idx = 0; idx < 4; idx++) { - if (pc_tree->vertical3[cur_region_type][idx]) { - av2_free_pc_tree_recursive(pc_tree->vertical3[cur_region_type][idx], - num_planes, 0, 0); - pc_tree->vertical3[cur_region_type][idx] = NULL; - } - - pc_tree->vertical3[cur_region_type][idx] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row + offset_mr[idx], mi_col + offset_mc[idx], - cm->sb_size, subblock_sizes[idx], pc_tree, PARTITION_VERT_3, idx, - idx == 3, ss_x, ss_y); - } - for (int i = 0; i < 4; ++i) - pc_tree->vertical3[cur_region_type][i]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition; - bool skippable = true; - for (int i = 0; i < 4; ++i) { - const int this_mi_row = mi_row + offset_mr[i]; - const int this_mi_col = mi_col + offset_mc[i]; - - if (i > 0 && this_mi_col >= cm->mi_params.mi_cols) { - av2_mark_block_as_pseudo_coded(xd, this_mi_row, this_mi_col, - subblock_sizes[i], cm->sb_size); - continue; - } - - SUBBLOCK_RDO_DATA rdo_data = { pc_tree->vertical3[cur_region_type][i], - get_partition_subtree_const(ptree_luma, i), - get_partition_subtree_const(template_tree, - i), - this_mi_row, - this_mi_col, - subblock_sizes[i], - PARTITION_VERT_3 }; - if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, - &sum_rdc, multi_pass_mode, &skippable, - max_recursion_depth)) { - av2_invalid_rd_stats(&sum_rdc); - break; - } - } - - av2_rd_cost_update(x->rdmult, &sum_rdc); - if (sum_rdc.rdcost < best_rdc->rdcost) { - update_best_level_banks(level_banks, &x->e_mbd); - *best_rdc = sum_rdc; - search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_VERT_3; - pc_tree->skippable = skippable; - } - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); - restore_level_banks(&x->e_mbd, level_banks); -} - static AVM_INLINE int get_partition_depth(const PC_TREE *pc_tree, int curr_depth) { if (pc_tree == NULL) return curr_depth; @@ -6274,29 +5709,29 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); // PARTITION_HORZ_3 - search_partition_horz_3(&part_search_state, cpi, td, tile_data, tp, &best_rdc, - pc_tree, track_ptree_luma ? ptree_luma : NULL, - template_tree, &x_ctx, &part_search_state, - &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_horz3); + search_extended_partition( + &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, + track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, + &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, + is_cfl_allowed_for_this_chroma_partition_horz3, PARTITION_HORZ_3); // PARTITION_VERT_3 - search_partition_vert_3(&part_search_state, cpi, td, tile_data, tp, &best_rdc, - pc_tree, track_ptree_luma ? ptree_luma : NULL, - template_tree, &x_ctx, &part_search_state, - &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_vert3); + search_extended_partition( + &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, + track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, + &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, + is_cfl_allowed_for_this_chroma_partition_vert3, PARTITION_VERT_3); if ((pc_tree->region_type != INTRA_REGION || frame_is_intra_only(cm))) { prune_ext_partitions_4way(cpi, pc_tree, &part_search_state, partition_boundaries); // PARTITION_HORZ_4A - search_partition_horz_4a( + search_extended_partition( &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_horz4a); + is_cfl_allowed_for_this_chroma_partition_horz4a, PARTITION_HORZ_4A); if (cpi->sf.part_sf.prune_part_4b_with_part_4a) { if (part_search_state.partition_4a_allowed[HORZ] && @@ -6308,18 +5743,18 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, } // PARTITION_HORZ_4B - search_partition_horz_4b( + search_extended_partition( &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_horz4b); + is_cfl_allowed_for_this_chroma_partition_horz4b, PARTITION_HORZ_4B); // PARTITION_VERT_4A - search_partition_vert_4a( + search_extended_partition( &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_vert4a); + is_cfl_allowed_for_this_chroma_partition_vert4a, PARTITION_VERT_4A); if (cpi->sf.part_sf.prune_part_4b_with_part_4a) { if (part_search_state.partition_4a_allowed[VERT] && @@ -6331,11 +5766,11 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, } // PARTITION_VERT_4B - search_partition_vert_4b( + search_extended_partition( &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_vert4b); + is_cfl_allowed_for_this_chroma_partition_vert4b, PARTITION_VERT_4B); } if (bsize == cm->sb_size && !part_search_state.found_best_partition && From 7821330d084efc303c5b57eb19c32fe9b2c142bf Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Thu, 9 Jul 2026 14:01:05 +0530 Subject: [PATCH 017/205] Refactor ext partition search in av2_rd_pick_partition - Search across ext partitions is rolled into a loop No stats changed --- av2/encoder/partition_search.c | 159 +++++++++++++++------------------ 1 file changed, 71 insertions(+), 88 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index f58db39d7d..57d2544a39 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -4386,7 +4386,8 @@ static AVM_INLINE void prune_part_4_with_partition_boundary( } } -// Pruning logic for PARTITION_HORZ_3 and PARTITION_VERT_3. +/*!\brief Pruning logic for PARTITION_HORZ_3 and PARTITION_VERT_3 based on + * non-ext partitions search results. */ static AVM_INLINE void prune_ext_partitions_3way( AV2_COMP *const cpi, PC_TREE *pc_tree, PartitionSearchState *part_search_state, bool *partition_boundaries) { @@ -4672,7 +4673,8 @@ static INLINE void search_intra_region_partitioning( restore_level_banks(&x->e_mbd, level_banks); } -// Pruning logic for PARTITION_HORZ_4A/B and PARTITION_VERT_4A/B. +/*!\brief Pruning logic for PARTITION_HORZ_4A/B and PARTITION_VERT_4A/B based on + * non-ext and 3 way partitions search results.*/ static AVM_INLINE void prune_ext_partitions_4way( AV2_COMP *const cpi, PC_TREE *pc_tree, PartitionSearchState *part_search_state, bool *partition_boundaries) { @@ -5243,6 +5245,49 @@ static AVM_INLINE void prune_none_with_rect_results( } } +/*!\brief Prune next uneven 4 way partitions based on search results of current + * / past uneven 4 way partitions. */ +static AVM_INLINE void prune_4way_partitions_based_on_4way_search( + const PARTITION_SPEED_FEATURES *const part_sf, const PC_TREE *const pc_tree, + PartitionSearchState *const part_search_state, + PARTITION_TYPE partition_type) { + if (partition_type == PARTITION_HORZ_4A) { + if (part_sf->prune_part_4b_with_part_4a) { + if (part_search_state->partition_4a_allowed[HORZ] && + !part_search_state->prune_partition_4a[HORZ] && + part_search_state->found_best_partition && + pc_tree->partitioning != PARTITION_HORZ_4A) { + part_search_state->prune_partition_4b[HORZ] = true; + } + } + } else if (partition_type == PARTITION_VERT_4A) { + if (part_sf->prune_part_4b_with_part_4a) { + if (part_search_state->partition_4a_allowed[VERT] && + !part_search_state->prune_partition_4a[VERT] && + part_search_state->found_best_partition && + pc_tree->partitioning != PARTITION_VERT_4A) { + part_search_state->prune_partition_4b[VERT] = true; + } + } + } +} + +static AVM_INLINE int get_ext_partitions_recur_depth( + const PARTITION_SPEED_FEATURES *const part_sf, BLOCK_SIZE bsize) { + const int level = part_sf->ext_recur_depth_level; + + if (level == 0) { + return INT_MAX; + } else if (level == 1) { + const uint16_t bw = block_size_wide[bsize]; + const uint16_t bh = block_size_high[bsize]; + return (bw * bh) > 1024 ? 2 : INT_MAX; + } else { + assert(level == 2); + return 1; + } +} + /*!\brief AV2 block partition search (full search). * * \ingroup partition_search @@ -5675,102 +5720,40 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, none_rd, &part_none_rd, &level_banks, ptree_luma); } - bool partition_boundaries[MAX_MIB_SQUARE] = { 0 }; - prune_ext_partitions_3way(cpi, pc_tree, &part_search_state, - partition_boundaries); - int ext_recur_depth_val = 0; - - if (cpi->sf.part_sf.ext_recur_depth_level == 0) { - ext_recur_depth_val = INT_MAX; - } else if (cpi->sf.part_sf.ext_recur_depth_level == 1) { - const uint16_t bw = block_size_wide[bsize]; - const uint16_t bh = block_size_high[bsize]; - ext_recur_depth_val = (bw * bh) > 1024 ? 2 : INT_MAX; - } else { - assert(cpi->sf.part_sf.ext_recur_depth_level == 2); - ext_recur_depth_val = 1; - } - + // Search extended partitions. const int ext_recur_depth = - AVMMIN(max_recursion_depth - 1, ext_recur_depth_val); - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_vert3 = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_VERT_3, bsize); - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_horz3 = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_HORZ_3, bsize); - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_vert4a = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_VERT_4A, bsize); - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_vert4b = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_VERT_4B, bsize); - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_horz4a = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_HORZ_4A, bsize); - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_horz4b = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_HORZ_4B, bsize); + AVMMIN(max_recursion_depth - 1, + get_ext_partitions_recur_depth(&cpi->sf.part_sf, bsize)); const bool track_ptree_luma = is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); + bool partition_boundaries[MAX_MIB_SQUARE] = { 0 }; - // PARTITION_HORZ_3 - search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_horz3, PARTITION_HORZ_3); - - // PARTITION_VERT_3 - search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_vert3, PARTITION_VERT_3); - - if ((pc_tree->region_type != INTRA_REGION || frame_is_intra_only(cm))) { - prune_ext_partitions_4way(cpi, pc_tree, &part_search_state, - partition_boundaries); - - // PARTITION_HORZ_4A - search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_horz4a, PARTITION_HORZ_4A); - - if (cpi->sf.part_sf.prune_part_4b_with_part_4a) { - if (part_search_state.partition_4a_allowed[HORZ] && - !part_search_state.prune_partition_4a[HORZ] && - part_search_state.found_best_partition && - pc_tree->partitioning != PARTITION_HORZ_4A) { - part_search_state.prune_partition_4b[HORZ] = true; - } - } - - // PARTITION_HORZ_4B - search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_horz4b, PARTITION_HORZ_4B); - - // PARTITION_VERT_4A + prune_ext_partitions_3way(cpi, pc_tree, &part_search_state, + partition_boundaries); + for (PARTITION_TYPE partition_type = PARTITION_HORZ_3; + partition_type <= PARTITION_VERT_3; ++partition_type) { search_extended_partition( &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_vert4a, PARTITION_VERT_4A); + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize), + partition_type); + } - if (cpi->sf.part_sf.prune_part_4b_with_part_4a) { - if (part_search_state.partition_4a_allowed[VERT] && - !part_search_state.prune_partition_4a[VERT] && - part_search_state.found_best_partition && - pc_tree->partitioning != PARTITION_VERT_4A) { - part_search_state.prune_partition_4b[VERT] = true; - } + if ((pc_tree->region_type != INTRA_REGION || frame_is_intra_only(cm))) { + prune_ext_partitions_4way(cpi, pc_tree, &part_search_state, + partition_boundaries); + for (PARTITION_TYPE partition_type = PARTITION_HORZ_4A; + partition_type <= PARTITION_VERT_4B; ++partition_type) { + search_extended_partition( + &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, + track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, + &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize), + partition_type); + prune_4way_partitions_based_on_4way_search( + &cpi->sf.part_sf, pc_tree, &part_search_state, partition_type); } - - // PARTITION_VERT_4B - search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_this_chroma_partition_vert4b, PARTITION_VERT_4B); } if (bsize == cm->sb_size && !part_search_state.found_best_partition && From 431c17fed3ed56e125a3bfb69a4c5fa2134dafd5 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Fri, 3 Jul 2026 12:28:20 +0530 Subject: [PATCH 018/205] Refactor av2_rd_pick_partition() - Moved pruning using ml results logic to a function - Removed duplicate/unused initializations - Handled a case where none partition search gets skipped if search_none_after_rect is false and search_none_after_split is true and search none is delayed to after rect based on split results - Moved terminate partition search after none search into none search function so that it gets called correctly after none evaluation - Restored rdmult original in an early return case --- av2/encoder/partition_search.c | 520 +++++++++++++++++---------------- 1 file changed, 264 insertions(+), 256 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 57d2544a39..0da3735c21 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3766,6 +3766,16 @@ static void none_partition_search( part_search_state, best_rdc, pb_source_variance); } } + if (cpi->sf.part_sf.end_part_search_after_consec_failures && x->is_whole_sb && + !frame_is_intra_only(cm) && + part_search_state->forced_partition == PARTITION_INVALID && + pc_tree->parent && pc_tree->parent->parent && + pc_tree->none_rd.rate == INT_MAX && + pc_tree->parent->none_rd.rate == INT_MAX && + pc_tree->parent->parent->none_rd.rate == INT_MAX && + best_rdc->rdcost < INT64_MAX) { + part_search_state->terminate_partition_search = 1; + } av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, av2_num_planes(cm)); restore_level_banks(&x->e_mbd, level_banks); } @@ -5210,41 +5220,58 @@ static AVM_INLINE bool try_none_after_rect( return false; } -/*!\brief Prune PARTITION_NONE search if rect partitions split deeper. - */ -static AVM_INLINE void prune_none_with_rect_results( +/*!\brief Prune partition none based on split, rect results */ +static AVM_INLINE void prune_none_after_rect( PartitionSearchState *part_search_state, const PC_TREE *pc_tree) { - if (!part_search_state->found_best_partition) { - return; - } + if (!part_search_state->found_best_partition) return; const PARTITION_TYPE cur_best_partition = pc_tree->partitioning; PC_TREE *const *tree = NULL; int num_sub_parts = 0; - if (cur_best_partition == PARTITION_SPLIT) { - tree = pc_tree->split[pc_tree->region_type]; - num_sub_parts = SUB_PARTITIONS_SPLIT; - } else if (cur_best_partition == PARTITION_HORZ) { - tree = pc_tree->horizontal[pc_tree->region_type]; - num_sub_parts = NUM_RECT_PARTS; - } else if (cur_best_partition == PARTITION_VERT) { - tree = pc_tree->vertical[pc_tree->region_type]; - num_sub_parts = NUM_RECT_PARTS; + if (cur_best_partition == PARTITION_SPLIT || + cur_best_partition == PARTITION_HORZ || + cur_best_partition == PARTITION_VERT) { + tree = get_child_pc_trees(pc_tree, cur_best_partition, pc_tree->region_type, + &num_sub_parts); } else { assert(0 && "Unexpected best partition type in prune_none_with_rect_results."); } // Give up on PARTITION_NONE if either of the subtrees decided to split // further. - for (int idx = 0; idx < num_sub_parts; idx++) { - if (!tree[idx]) { - break; - } + for (int idx = 0; idx < num_sub_parts && tree[idx]; ++idx) { part_search_state->prune_partition_none |= tree[idx]->partitioning != PARTITION_NONE; } } +/*!\brief Prune partitions based on split results */ +static void prune_partitions_after_split( + const AV2_COMP *const cpi, const PC_TREE *pc_tree, + PartitionSearchState *part_search_state) { + const AV2_COMMON *const cm = &cpi->common; + if (cpi->sf.part_sf.prune_rect_with_split_depth && !frame_is_intra_only(cm) && + part_search_state->forced_partition == PARTITION_INVALID && + pc_tree->split[pc_tree->region_type][0] && + pc_tree->split[pc_tree->region_type][1] && + pc_tree->split[pc_tree->region_type][2] && + pc_tree->split[pc_tree->region_type][3]) { + int min_depth = INT_MAX; + int max_depth = 0; + for (int idx = 0; idx < SUB_PARTITIONS_SPLIT; ++idx) { + const int depth = + get_partition_depth(pc_tree->split[pc_tree->region_type][idx], 0); + min_depth = AVMMIN(min_depth, depth); + max_depth = AVMMAX(max_depth, depth); + } + if (min_depth > 4) { + part_search_state->prune_rect_part[HORZ] = true; + part_search_state->prune_rect_part[VERT] = true; + } + (void)max_depth; + } +} + /*!\brief Prune next uneven 4 way partitions based on search results of current * / past uneven 4 way partitions. */ static AVM_INLINE void prune_4way_partitions_based_on_4way_search( @@ -5272,6 +5299,16 @@ static AVM_INLINE void prune_4way_partitions_based_on_4way_search( } } +static AVM_INLINE void set_sms_tree_partitioning( + SIMPLE_MOTION_DATA_TREE *sms_tree, PARTITION_TYPE partition) { + if (sms_tree != NULL) sms_tree->partitioning = partition; +} + +static AVM_INLINE bool is_intra_child_of_mixed_region(const PC_TREE *pc_tree) { + return pc_tree->parent && pc_tree->region_type == INTRA_REGION && + pc_tree->parent->region_type == MIXED_INTER_INTRA_REGION; +} + static AVM_INLINE int get_ext_partitions_recur_depth( const PARTITION_SPEED_FEATURES *const part_sf, BLOCK_SIZE bsize) { const int level = part_sf->ext_recur_depth_level; @@ -5288,69 +5325,137 @@ static AVM_INLINE int get_ext_partitions_recur_depth( } } -/*!\brief AV2 block partition search (full search). -* -* \ingroup partition_search -* \callgraph -* Searches for the best partition pattern for a block based on the -* rate-distortion cost, and returns a bool value to indicate whether a valid -* partition pattern is found. The partition can recursively go down to the -* smallest block size. -* -* \param[in] cpi Top-level encoder structure -* \param[in] td Pointer to thread data -* \param[in] tile_data Pointer to struct holding adaptive -data/contexts/models for the tile during -encoding -* \param[in] tp Pointer to the starting token -* \param[in] mi_row Row coordinate of the block in a step size -of MI_SIZE -* \param[in] mi_col Column coordinate of the block in a step -size of MI_SIZE -* \param[in] bsize Current block size -* \param[in] parent_partition Partition of the parent block -* \param[in] rd_cost Pointer to the final rd cost of the block -* \param[in] best_rdc Upper bound of rd cost of a valid partition -* \param[in] pc_tree Pointer to the PC_TREE node storing the -picked partitions and mode info for the -current block -* \param[in] ptree_luma Pointer to the luma partition tree so that the -* encoder can estimate the partition type for chroma. -* \param[in] template_tree A partial tree that contains the partition -* structure to be used as a template. -* \param[in] max_recursion_depth The maximum level of recursion allowed -* \param[in] sms_tree Pointer to struct holding simple motion -search data for the current block -* \param[in] none_rd Pointer to the rd cost in the case of not -splitting the current block -* \param[in] multi_pass_mode SB_SINGLE_PASS/SB_DRY_PASS/SB_WET_PASS -* \param[in] rect_part_win_info Pointer to struct storing whether horz/vert -* partition outperforms previously tested partitions -* -* \return A bool value is returned indicating if a valid partition is found. -* The pc_tree struct is modified to store the picked partition and modes. -* The rd_cost struct is also updated with the RD stats corresponding to the -* best partition found. -*/ - #if CONFIG_ML_PART_SPLIT -enum { PRUNE_OTHER = 0, PRUNE_VERT = 1, PRUNE_HORZ = 2 }; +enum { PRUNE_OTHER = 0, PRUNE_VERT = 1, PRUNE_HORZ = 2, MAX_PRUNE_TYPES = 3 }; + +static void prune_partitions_using_ml_results( + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, int mi_row, + int mi_col, BLOCK_SIZE bsize, PartitionSearchState *part_search_state, + int search_none_after_rect, const int force_prune_flags[MAX_PRUNE_TYPES], + int next_force_prune_flags[NUM_RECT_PARTS][MAX_PRUNE_TYPES]) { + const AV2_COMMON *const cm = &cpi->common; + MACROBLOCK *const x = &td->mb; + TileInfo *const tile_info = &tile_data->tile_info; + + part_search_state->prune_partition_none |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_partition_3[HORZ] |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_partition_3[VERT] |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_partition_4a[HORZ] |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_partition_4a[VERT] |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_partition_4b[HORZ] |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_partition_4b[VERT] |= force_prune_flags[PRUNE_OTHER]; + part_search_state->prune_rect_part[HORZ] |= force_prune_flags[PRUNE_HORZ]; + part_search_state->prune_rect_part[VERT] |= force_prune_flags[PRUNE_VERT]; + + // Don't want to run ML in the second stage of the forced split. Want the + // force split to carry out without interference. + // Note1: might still be some interference during prune split. + // Note2: prune split doesn't mean prune both splits on l2, it means + // prune either one or both. + if (!force_prune_flags[PRUNE_OTHER]) { + bool prune_list[2]; + int ml_result = + av2_ml_part_split_infer(cpi, x, mi_row, mi_col, bsize, tile_info, td, + search_none_after_rect, prune_list); + if (ml_result == ML_PART_FORCE_NONE || ml_result == ML_PART_FORCE_SPLIT) { + part_search_state->prune_partition_3[HORZ] = true; + part_search_state->prune_partition_3[VERT] = true; + part_search_state->prune_partition_4a[HORZ] = true; + part_search_state->prune_partition_4a[VERT] = true; + part_search_state->prune_partition_4b[HORZ] = true; + part_search_state->prune_partition_4b[VERT] = true; + } + if (ml_result == ML_PART_FORCE_NONE) { + part_search_state->prune_rect_part[VERT] = true; + part_search_state->prune_rect_part[HORZ] = true; + } else if (ml_result == ML_PART_FORCE_SPLIT) { + part_search_state->prune_partition_none = true; + if (is_square_split_eligible(bsize, cm->sb_size)) { + part_search_state->prune_rect_part[VERT] = true; + part_search_state->prune_rect_part[HORZ] = true; + } else { + next_force_prune_flags[HORZ][PRUNE_OTHER] = true; + next_force_prune_flags[VERT][PRUNE_OTHER] = true; + next_force_prune_flags[HORZ][PRUNE_HORZ] = true; + next_force_prune_flags[VERT][PRUNE_VERT] = true; + } + } else { + if (prune_list[PT_NONE]) { + part_search_state->prune_partition_none = true; + } + if (prune_list[PT_SPLIT]) { + if (is_square_split_eligible(bsize, cm->sb_size)) { + part_search_state->prune_partition_split = true; + } else { + next_force_prune_flags[HORZ][PRUNE_VERT] = true; + next_force_prune_flags[VERT][PRUNE_HORZ] = true; + } + } + } + } +} #endif // CONFIG_ML_PART_SPLIT -bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, int mi_row, - int mi_col, BLOCK_SIZE bsize, - PARTITION_TYPE parent_partition, RD_STATS *rd_cost, - RD_STATS best_rdc, PC_TREE *pc_tree, - const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, - int max_recursion_depth, - SIMPLE_MOTION_DATA_TREE *sms_tree, int64_t *none_rd, - SB_MULTI_PASS_MODE multi_pass_mode, - RD_RECT_PART_WIN_INFO *rect_part_win_info +/*!\brief AV2 block partition search (full search). + * + * \ingroup partition_search + * \callgraph + * Searches for the best partition pattern for a block based on the + * rate-distortion cost, and returns a bool value to indicate whether a valid + * partition pattern is found. The partition can recursively go down to the + * smallest block size. + * + * \param[in] cpi Top-level encoder structure + * \param[in] td Pointer to thread data + * \param[in] tile_data Pointer to struct holding adaptive + * data/contexts/models for the tile during + * encoding + * \param[in] tp Pointer to the starting token + * \param[in] mi_row Row coordinate of the block in a step size + * of MI_SIZE + * \param[in] mi_col Column coordinate of the block in a step + * size of MI_SIZE + * \param[in] bsize Current block size + * \param[in] parent_partition Partition of the parent block + * \param[in] rd_cost Pointer to the final rd cost of the block + * \param[in] best_rdc Upper bound of rd cost of a valid partition + * \param[in] pc_tree Pointer to the PC_TREE node storing the + * picked partitions and mode info for the + * current block + * \param[in] ptree_luma Pointer to the luma partition tree so that + * the encoder can estimate the partition type + * for chroma. + * \param[in] template_tree A partial tree that contains the partition + * structure to be used as a template. + * \param[in] max_recursion_depth The maximum level of recursion allowed + * \param[in] sms_tree Pointer to struct holding simple motion + * search data for the current block + * \param[in] none_rd Pointer to the rd cost in the case of not + * splitting the current block + * \param[in] multi_pass_mode SB_SINGLE_PASS/SB_DRY_PASS/SB_WET_PASS + * \param[in] rect_part_win_info Pointer to struct storing whether horz/vert + * partition outperforms previously tested + * partitions + * \param[in] force_prune_flags Prune partitions based on ML results + * [Only if CONFIG_ML_PART_SPLIT is defined]. + * + * \return A bool value is returned indicating if a valid partition is found. + * The pc_tree struct is modified to store the picked partition and modes. The + * rd_cost struct is also updated with the RD stats corresponding to the best + * partition found. + */ +bool av2_rd_pick_partition( + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, + TokenExtra **tp, const int mi_row, const int mi_col, const BLOCK_SIZE bsize, + const PARTITION_TYPE parent_partition, RD_STATS *rd_cost, RD_STATS best_rdc, + PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, + const PARTITION_TREE *template_tree, const int max_recursion_depth, + SIMPLE_MOTION_DATA_TREE *sms_tree, int64_t *none_rd, + const SB_MULTI_PASS_MODE multi_pass_mode, + RD_RECT_PART_WIN_INFO *rect_part_win_info #if CONFIG_ML_PART_SPLIT - , - int force_prune_flags[3] + , + int force_prune_flags[MAX_PRUNE_TYPES] #endif // CONFIG_ML_PART_SPLIT ) { const AV2_COMMON *const cm = &cpi->common; @@ -5361,29 +5466,33 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, RD_SEARCH_MACROBLOCK_CONTEXT x_ctx; const TokenExtra *const tp_orig = *tp; PartitionSearchState part_search_state; + + (void)*tp_orig; assert(pc_tree != NULL); + assert(bsize < BLOCK_SIZES_ALL); - if (frame_is_intra_only(cm)) { - pc_tree->region_type = INTRA_REGION; - } + if (frame_is_intra_only(cm)) pc_tree->region_type = INTRA_REGION; if (bsize == cm->sb_size) pc_tree->is_cfl_allowed_for_this_chroma = CFL_DISALLOWED_FOR_CHROMA; + // Initialization of state variables used in partition search. init_partition_search_state_params( x, cpi, &part_search_state, pc_tree, ptree_luma, template_tree, max_recursion_depth, mi_row, mi_col, bsize); PartitionBlkParams blk_params = part_search_state.part_blk_params; - if (sms_tree != NULL) sms_tree->partitioning = PARTITION_NONE; + + set_sms_tree_partitioning(sms_tree, PARTITION_NONE); + if (best_rdc.rdcost < 0) { av2_invalid_rd_stats(rd_cost); return part_search_state.found_best_partition; } - // Check whether there is a counterpart pc_tree node with the same size // and the same neighboring context at the same location but from a // different partition path. If yes directly copy the RDO decision made for // the counterpart. - if (bru_is_sb_active(cm, mi_col, mi_row)) { + int bru_blk_active = bru_is_sb_active(cm, mi_col, mi_row); + if (bru_blk_active) { PC_TREE *counterpart_block = av2_look_for_counterpart_block(pc_tree); if (counterpart_block && (pc_tree->region_type == counterpart_block->region_type && @@ -5396,7 +5505,10 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, num_planes); *rd_cost = pc_tree->rd_cost; assert(bsize != cm->sb_size); - if (bsize == cm->sb_size) exit(0); + if (bsize == cm->sb_size) { + avm_internal_error(&cpi->common.error, AVM_CODEC_ERROR, + "Superblock is already coded?"); + } if (!pc_tree->is_last_subblock) { encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, DRY_RUN_NORMAL, @@ -5411,14 +5523,10 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, } } - if ((bsize == cm->sb_size) && bru_is_sb_active(cm, mi_col, mi_row)) - x->must_find_valid_partition = 0; - if (bsize == cm->sb_size) - pc_tree->is_cfl_allowed_for_this_chroma = CFL_DISALLOWED_FOR_CHROMA; + if (bsize == cm->sb_size && bru_blk_active) x->must_find_valid_partition = 0; // Override skipping rectangular partition operations for edge blocks. if (none_rd) *none_rd = 0; - (void)*tp_orig; #if CONFIG_COLLECT_PARTITION_STATS int partition_decisions[EXT_PARTITION_TYPES] = { 0 }; @@ -5431,13 +5539,6 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, #endif #endif - // Disable rectangular partitions for inner blocks when the current block is - // forced to only use square partitions. - if (is_bsize_gt(bsize, cpi->sf.part_sf.use_square_partition_only_threshold)) { - part_search_state.partition_rect_allowed[HORZ] &= !blk_params.has_rows; - part_search_state.partition_rect_allowed[VERT] &= !blk_params.has_cols; - } - #ifndef NDEBUG // Nothing should rely on the default value of this array (which is just // leftover from encoding the previous block). Setting it to fixed pattern @@ -5451,24 +5552,10 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, } #endif // NDEBUG - assert(bsize < BLOCK_SIZES_ALL); - // Set buffers and offsets. av2_set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize, &pc_tree->chroma_ref_info); - bool search_none_after_split = false; - bool search_none_after_rect = false; - if (part_search_state.forced_partition == PARTITION_INVALID && - bru_is_sb_active(cm, mi_col, mi_row)) { - if (cpi->sf.part_sf.adaptive_partition_search_order) { - search_none_after_rect = - try_none_after_rect(xd, &cm->mi_params, bsize, mi_row, mi_col); - } - // For 256X256, always search the subblocks first. - search_none_after_split |= bsize == BLOCK_256X256; - } - // Save rdmult before it might be changed, so it can be restored later. const int orig_rdmult = x->rdmult; setup_block_rdmult(cpi, x, mi_row, mi_col, bsize, NO_AQ, NULL); @@ -5485,35 +5572,53 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, ); av2_save_context(x, &x_ctx, mi_row, mi_col, bsize, num_planes); + + // Non ext partitions search order. + bool search_none_after_split = false; + bool search_none_after_rect = false; + if (part_search_state.forced_partition == PARTITION_INVALID && + bru_blk_active) { + if (cpi->sf.part_sf.adaptive_partition_search_order) { + search_none_after_rect = + try_none_after_rect(xd, &cm->mi_params, bsize, mi_row, mi_col); + } + // For 256X256, always search the subblocks first. + search_none_after_split |= bsize == BLOCK_256X256; + } + if (!frame_is_intra_only(cm) && pc_tree->region_type == INTRA_REGION) { + search_none_after_rect &= (xd->tree_type != CHROMA_PART); + } + + // Pruning: Disable rectangular partitions for inner blocks when the current + // block is forced to only use square partitions. + if (is_bsize_gt(bsize, cpi->sf.part_sf.use_square_partition_only_threshold)) { + part_search_state.partition_rect_allowed[HORZ] &= !blk_params.has_rows; + part_search_state.partition_rect_allowed[VERT] &= !blk_params.has_cols; + } + LevelBanksRDO level_banks = { x->e_mbd.ref_mv_bank, /* curr_level_bank*/ x->e_mbd.ref_mv_bank, /* best_level_bank*/ x->e_mbd.warp_param_bank, /* curr_level_warp_bank*/ x->e_mbd.warp_param_bank, /* best_level_warp_bank*/ }; - - { - SimpleMotionData *sms_data = - av2_get_sms_data_entry(x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, - (int8_t)pc_tree->region_type); - sms_tree = sms_data->old_sms; - } - - int *partition_horz_allowed = &part_search_state.partition_rect_allowed[HORZ]; - int *partition_vert_allowed = &part_search_state.partition_rect_allowed[VERT]; + SimpleMotionData *sms_data = + av2_get_sms_data_entry(x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, + (int8_t)pc_tree->region_type); + sms_tree = sms_data->old_sms; + // Pruning: before searching any partition type, using source and simple + // motion search results to prune out unlikely partitions. if (part_search_state.forced_partition == PARTITION_INVALID && is_bsize_gt(bsize, x->sb_enc.min_partition_size)) { - bool *prune_horz = &part_search_state.prune_rect_part[HORZ]; - bool *prune_vert = &part_search_state.prune_rect_part[VERT]; int do_square_split = true; - int *sqr_split_ptr = &do_square_split; - // Pruning: before searching any partition type, using source and simple - // motion search results to prune out unlikely partitions. av2_prune_partitions_before_search( cpi, x, mi_row, mi_col, bsize, sms_tree, - &part_search_state.partition_none_allowed, partition_horz_allowed, - partition_vert_allowed, &part_search_state.do_rectangular_split, - sqr_split_ptr, prune_horz, prune_vert, pc_tree); + &part_search_state.partition_none_allowed, + &part_search_state.partition_rect_allowed[HORZ], + &part_search_state.partition_rect_allowed[VERT], + &part_search_state.do_rectangular_split, &do_square_split, + &part_search_state.prune_rect_part[HORZ], + &part_search_state.prune_rect_part[VERT], pc_tree); } // Pruning: eliminating partition types leading to coding block sizes @@ -5522,10 +5627,9 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, &x->sb_enc, bsize, blk_params.has_rows && blk_params.has_cols, &part_search_state, NULL); - int luma_split_flag = 0; - // Partition search BEGIN_PARTITION_SEARCH: + // If a valid partition is required, usually when the first round cannot // find a valid one under the cost limit after pruning, reset the // limitations on partition types. @@ -5549,145 +5653,58 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, #endif // CONFIG_ML_PART_SPLIT } - // Partition block source pixel variance. - unsigned int pb_source_variance = UINT_MAX; #if CONFIG_ML_PART_SPLIT - int next_force_prune_flags[2][3] = { { 0, 0, 0 }, { 0, 0, 0 } }; + // Pruning: using ML results. + int next_force_prune_flags[NUM_RECT_PARTS][MAX_PRUNE_TYPES] = { { 0 } }; // Don't use ML pruning if this is the second attempt to find a valid // partition. - if (cpi->sf.part_sf.prune_split_with_ml && + if (cpi->sf.part_sf.prune_split_with_ml && force_prune_flags && part_search_state.forced_partition == PARTITION_INVALID && !x->must_find_valid_partition && is_partition_point(bsize)) { - part_search_state.prune_partition_none |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_partition_3[0] |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_partition_3[1] |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_partition_4a[0] |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_partition_4a[1] |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_partition_4b[0] |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_partition_4b[1] |= force_prune_flags[PRUNE_OTHER]; - part_search_state.prune_rect_part[HORZ] |= force_prune_flags[PRUNE_HORZ]; - part_search_state.prune_rect_part[VERT] |= force_prune_flags[PRUNE_VERT]; - - // Don't want to run ML in the second stage of the forced split. Want the - // force split to carry out without interference. - // Note1: might still be some interference during prune split. - // Note2: prune split doesn't mean prune both splits on l2, it means - // prune either one or both. - if (!force_prune_flags[PRUNE_OTHER]) { - bool prune_list[2]; - int ml_result = - av2_ml_part_split_infer(cpi, x, mi_row, mi_col, bsize, tile_info, td, - search_none_after_rect, prune_list); - if (ml_result == ML_PART_FORCE_NONE || ml_result == ML_PART_FORCE_SPLIT) { - part_search_state.prune_partition_3[0] = 1; - part_search_state.prune_partition_3[1] = 1; - part_search_state.prune_partition_4a[0] = 1; - part_search_state.prune_partition_4a[1] = 1; - part_search_state.prune_partition_4b[0] = 1; - part_search_state.prune_partition_4b[1] = 1; - } - if (ml_result == ML_PART_FORCE_NONE) { - part_search_state.prune_rect_part[VERT] = 1; - part_search_state.prune_rect_part[HORZ] = 1; - } else if (ml_result == ML_PART_FORCE_SPLIT) { - part_search_state.prune_partition_none = 1; - if (is_square_split_eligible(bsize, cm->sb_size)) { - part_search_state.prune_rect_part[VERT] = 1; - part_search_state.prune_rect_part[HORZ] = 1; - } else { - next_force_prune_flags[HORZ][PRUNE_OTHER] = 1; - next_force_prune_flags[VERT][PRUNE_OTHER] = 1; - next_force_prune_flags[HORZ][PRUNE_HORZ] = 1; - next_force_prune_flags[VERT][PRUNE_VERT] = 1; - } - } else { - if (prune_list[PT_NONE]) { - part_search_state.prune_partition_none = 1; - } - if (prune_list[PT_SPLIT]) { - if (is_square_split_eligible(bsize, cm->sb_size)) { - part_search_state.prune_partition_split = 1; - } else { - next_force_prune_flags[HORZ][PRUNE_VERT] = 1; - next_force_prune_flags[VERT][PRUNE_HORZ] = 1; - } - } - } - } - // td->prune_tot[bsize] += 1; + prune_partitions_using_ml_results( + cpi, td, tile_data, mi_row, mi_col, bsize, &part_search_state, + search_none_after_rect, force_prune_flags, next_force_prune_flags); } #endif // CONFIG_ML_PART_SPLIT - // PARTITION_NONE search stage. - int64_t part_none_rd = INT64_MAX; + + // Search partition none. int partition_none_allowed = part_search_state.partition_none_allowed; - if (pc_tree->parent && pc_tree->region_type == INTRA_REGION && - pc_tree->parent->region_type == MIXED_INTER_INTRA_REGION && - xd->tree_type != CHROMA_PART) + if (is_intra_child_of_mixed_region(pc_tree) && xd->tree_type != CHROMA_PART) partition_none_allowed = 0; - if (!frame_is_intra_only(cm) && pc_tree->region_type == INTRA_REGION) - search_none_after_rect &= (xd->tree_type != CHROMA_PART); + unsigned int pb_source_variance = UINT_MAX; + int64_t part_none_rd = INT64_MAX; if (!search_none_after_rect && !search_none_after_split && partition_none_allowed) { none_partition_search(cpi, td, tile_data, x, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } - if (pc_tree->parent && pc_tree->region_type == INTRA_REGION && - pc_tree->parent->region_type == MIXED_INTER_INTRA_REGION && - xd->tree_type == CHROMA_PART) { + if (is_intra_child_of_mixed_region(pc_tree) && xd->tree_type == CHROMA_PART) { *rd_cost = best_rdc; + x->rdmult = orig_rdmult; return part_search_state.found_best_partition; } - if (cpi->sf.part_sf.end_part_search_after_consec_failures && x->is_whole_sb && - !frame_is_intra_only(cm) && - part_search_state.forced_partition == PARTITION_INVALID && - pc_tree->parent && pc_tree->parent->parent) { - if (pc_tree->none_rd.rate == INT_MAX && - pc_tree->parent->none_rd.rate == INT_MAX && - pc_tree->parent->parent->none_rd.rate == INT_MAX && - part_search_state.partition_none_allowed && - best_rdc.rdcost < INT64_MAX) { - part_search_state.terminate_partition_search = 1; - } - } - - // PARTITION_SPLIT search stage. + // Search partition split. int64_t part_split_rd = INT64_MAX; split_partition_search(cpi, td, tile_data, tp, x, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, multi_pass_mode, &part_split_rd, &level_banks, ptree_luma, template_tree, max_recursion_depth - 1); - + prune_partitions_after_split(cpi, pc_tree, &part_search_state); + // Based on split result, decide if we want to further delay the search to + // after rect if (search_none_after_split && pc_tree->partitioning == PARTITION_SPLIT) { - // Based on split result, decide if we want to further delay the search to - // after rect - for (int idx = 0; idx < 4; idx++) { + for (int idx = 0; idx < SUB_PARTITIONS_SPLIT; idx++) { const int depth = get_partition_depth(pc_tree->split[pc_tree->region_type][idx], 0); - search_none_after_split &= depth == 0; - } - } - if (cpi->sf.part_sf.prune_rect_with_split_depth && !frame_is_intra_only(cm) && - part_search_state.forced_partition == PARTITION_INVALID && - pc_tree->split[pc_tree->region_type][0] && - pc_tree->split[pc_tree->region_type][1] && - pc_tree->split[pc_tree->region_type][2] && - pc_tree->split[pc_tree->region_type][3]) { - int min_depth = INT_MAX, max_depth = 0; - for (int idx = 0; idx < 4; idx++) { - const int depth = - get_partition_depth(pc_tree->split[pc_tree->region_type][idx], 0); - min_depth = AVMMIN(min_depth, depth); - max_depth = AVMMAX(max_depth, depth); - } - if (min_depth > 4) { - part_search_state.prune_rect_part[HORZ] = - part_search_state.prune_rect_part[VERT] = true; + if (depth != 0) { + search_none_after_split = false; + search_none_after_rect = true; + break; + } } - (void)max_depth; } - if (part_search_state.forced_partition == PARTITION_INVALID && partition_none_allowed && search_none_after_split) { none_partition_search(cpi, td, tile_data, x, pc_tree, sms_tree, &x_ctx, @@ -5695,7 +5712,7 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, none_rd, &part_none_rd, &level_banks, ptree_luma); } - // Rectangular partitions search stage. + // Search partition horz and vert. rectangular_partition_search( cpi, td, tile_data, tp, x, pc_tree, &x_ctx, &part_search_state, &best_rdc, multi_pass_mode, ptree_luma, template_tree, max_recursion_depth - 1, @@ -5705,16 +5722,10 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, next_force_prune_flags #endif // CONFIG_ML_PART_SPLIT ); - - if (pb_source_variance == UINT_MAX) { - av2_setup_src_planes(x, cpi->source, mi_row, mi_col, num_planes, NULL); - pb_source_variance = av2_high_get_sby_perpixel_variance( - cpi, &x->plane[0].src, bsize, xd->bd); - } - if (search_none_after_rect && !search_none_after_split && partition_none_allowed) { - prune_none_with_rect_results(&part_search_state, pc_tree); + // Prune partitions based on rect results. + prune_none_after_rect(&part_search_state, pc_tree); none_partition_search(cpi, td, tile_data, x, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); @@ -5756,6 +5767,7 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, } } + // Check if partition search needs to be re-done. if (bsize == cm->sb_size && !part_search_state.found_best_partition && ((!frame_is_intra_only(cm) && pc_tree->region_type == MIXED_INTER_INTRA_REGION) || @@ -5768,12 +5780,12 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, // Did not find a valid partition, go back and search again, with less // constraint on which partition types to search. x->must_find_valid_partition = 1; - #if CONFIG_COLLECT_PARTITION_STATS == 2 part_stats->partition_redo += 1; #endif goto BEGIN_PARTITION_SEARCH; } + #if !defined(NDEBUG) if (template_tree && template_tree->partition != PARTITION_INVALID && pc_tree->partitioning != template_tree->partition) { @@ -5827,11 +5839,7 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, // Also record the best partition in simple motion data tree because it is // necessary for the related speed features. - if (sms_tree) sms_tree->partitioning = pc_tree->partitioning; - - if (luma_split_flag > 3) { - assert(pc_tree->partitioning == PARTITION_SPLIT); - } + set_sms_tree_partitioning(sms_tree, pc_tree->partitioning); #if CONFIG_COLLECT_PARTITION_STATS if (best_rdc.rate < INT_MAX && best_rdc.dist < INT64_MAX) { From 636fcda84b06650b6b61493b4bf7337a9b102235 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Mon, 6 Jul 2026 17:23:11 +0530 Subject: [PATCH 019/205] Fix partition timing data collection The code under CONFIG_COLLECT_PARTITION_DATA is stale. This commit restores its functionality. --- av2/encoder/encodeframe_utils.h | 26 ++++ av2/encoder/encoder.c | 7 +- av2/encoder/encoder.h | 61 ++++----- av2/encoder/partition_search.c | 214 +++++++++++++++++++++----------- cmake/avm_config_defaults.cmake | 2 +- 5 files changed, 197 insertions(+), 113 deletions(-) diff --git a/av2/encoder/encodeframe_utils.h b/av2/encoder/encodeframe_utils.h index dad85ce6df..d8f1b5b922 100644 --- a/av2/encoder/encodeframe_utils.h +++ b/av2/encoder/encodeframe_utils.h @@ -14,6 +14,7 @@ #define AVM_AV2_ENCODER_ENCODEFRAME_UTILS_H_ #include "avm_ports/system_state.h" +#include "avm_ports/avm_timer.h" #include "av2/common/reconinter.h" @@ -99,6 +100,27 @@ typedef struct PartitionBlkParams { BLOCK_SIZE subsize; } PartitionBlkParams; +#if CONFIG_COLLECT_PARTITION_STATS +typedef struct PartitionTimingStats { + // Tracks the number of partition decision made in the current call to \ref + // av2_rd_pick_partition + int partition_decisions[ALL_PARTITION_TYPES]; + // Tracks the partition types evaluated in the current call to \ref + // av2_rd_pick_partition. + int partition_attempts[ALL_PARTITION_TYPES]; + // Tracks the time spent evaluating a partition type in the current call to + // \ref av2_rd_pick_partition. + int64_t partition_times[ALL_PARTITION_TYPES]; + // Tracks the rdcost spent on each partition search in the current call to + // \ref av1_rd_pick_partition + int64_t partition_rdcost[ALL_PARTITION_TYPES]; + // Timer used to time the partitions. + struct avm_usec_timer timer; + // Whether the timer is on + int timer_is_on; +} PartitionTimingStats; +#endif // CONFIG_COLLECT_PARTITION_STATS + // Structure holding state variables for partition search. typedef struct PartitionSearchState { // Intra partitioning related info. @@ -160,6 +182,10 @@ typedef struct PartitionSearchState { // This flag will be set if best partition is found from the search. bool found_best_partition; + +#if CONFIG_COLLECT_PARTITION_STATS + PartitionTimingStats part_timing_stats; +#endif // CONFIG_COLLECT_PARTITION_STATS } PartitionSearchState; static AVM_INLINE void update_wedge_mode_cdf(FRAME_CONTEXT *fc, diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index c4af0b4cba..aa9c53fb8e 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1751,7 +1751,7 @@ AV2_COMP *av2_create_compressor(AV2EncoderConfig *oxcf, BufferPool *const pool, #if CONFIG_COLLECT_PARTITION_STATS == 2 av2_zero(cpi->partition_stats); -#endif +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 highbd_set_var_fns(cpi); @@ -1963,9 +1963,10 @@ void av2_remove_compressor(AV2_COMP *cpi) { #if CONFIG_COLLECT_PARTITION_STATS == 2 if (!is_stat_generation_stage(cpi)) { - av2_print_partition_stats(&cpi->partition_stats); + av2_print_fr_partition_timing_stats(&cpi->partition_stats, + "fr_part_timing_data.csv"); } -#endif +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 } TplParams *const tpl_data = &cpi->tpl_data; diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index 6e487b260a..15df43f57f 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -1864,14 +1864,14 @@ typedef struct { /*!\cond */ #if CONFIG_COLLECT_PARTITION_STATS == 2 -typedef struct PartitionStats { - int partition_decisions[6][EXT_PARTITION_TYPES]; - int partition_attempts[6][EXT_PARTITION_TYPES]; - int64_t partition_times[6][EXT_PARTITION_TYPES]; +typedef struct FramePartitionTimingStats { + int partition_decisions[BLOCK_SIZES_ALL][ALL_PARTITION_TYPES]; + int partition_attempts[BLOCK_SIZES_ALL][ALL_PARTITION_TYPES]; + int64_t partition_times[BLOCK_SIZES_ALL][ALL_PARTITION_TYPES]; int partition_redo; -} PartitionStats; -#endif +} FramePartitionTimingStats; +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 #if CONFIG_COLLECT_COMPONENT_TIMING #include "avm_ports/avm_timer.h" @@ -2781,8 +2781,11 @@ typedef struct AV2_COMP { int is_screen_content_type; #if CONFIG_COLLECT_PARTITION_STATS == 2 - PartitionStats partition_stats; -#endif + /*! + * Accumulates the partition timing stat over the whole frame. + */ + FramePartitionTimingStats partition_stats; +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 #if CONFIG_COLLECT_COMPONENT_TIMING /*! @@ -3517,57 +3520,41 @@ static AVM_INLINE int is_psnr_calc_enabled(const AV2_COMP *cpi) { } #if CONFIG_COLLECT_PARTITION_STATS == 2 -static INLINE void av2_print_partition_stats(PartitionStats *part_stats) { - FILE *f = fopen("partition_stats.csv", "w"); +static INLINE void av2_print_fr_partition_timing_stats( + const FramePartitionTimingStats *part_stats, const char *filename) { + FILE *f = fopen(filename, "w"); if (!f) { return; } fprintf(f, "bsize,redo,"); - for (int part = 0; part < EXT_PARTITION_TYPES; part++) { + for (int part = 0; part < ALL_PARTITION_TYPES; part++) { fprintf(f, "decision_%d,", part); } - for (int part = 0; part < EXT_PARTITION_TYPES; part++) { + for (int part = 0; part < ALL_PARTITION_TYPES; part++) { fprintf(f, "attempt_%d,", part); } - for (int part = 0; part < EXT_PARTITION_TYPES; part++) { + for (int part = 0; part < ALL_PARTITION_TYPES; part++) { fprintf(f, "time_%d,", part); } fprintf(f, "\n"); - const int bsizes[6] = { 128, 64, 32, 16, 8, 4 }; - - for (int bsize_idx = 0; bsize_idx < 6; bsize_idx++) { - fprintf(f, "%d,%d,", bsizes[bsize_idx], part_stats->partition_redo); - for (int part = 0; part < EXT_PARTITION_TYPES; part++) { + for (int bsize_idx = 0; bsize_idx < BLOCK_SIZES_ALL; bsize_idx++) { + fprintf(f, "%d,%d,", bsize_idx, part_stats->partition_redo); + for (int part = 0; part < ALL_PARTITION_TYPES; part++) { fprintf(f, "%d,", part_stats->partition_decisions[bsize_idx][part]); } - for (int part = 0; part < EXT_PARTITION_TYPES; part++) { + for (int part = 0; part < ALL_PARTITION_TYPES; part++) { fprintf(f, "%d,", part_stats->partition_attempts[bsize_idx][part]); } - for (int part = 0; part < EXT_PARTITION_TYPES; part++) { - fprintf(f, "%ld,", part_stats->partition_times[bsize_idx][part]); + for (int part = 0; part < ALL_PARTITION_TYPES; part++) { + fprintf(f, "%" PRId64 ",", part_stats->partition_times[bsize_idx][part]); } fprintf(f, "\n"); } fclose(f); } - -static INLINE int av2_get_bsize_idx_for_part_stats(BLOCK_SIZE bsize) { - assert(bsize == BLOCK_128X128 || bsize == BLOCK_64X64 || - bsize == BLOCK_32X32 || bsize == BLOCK_16X16 || bsize == BLOCK_8X8 || - bsize == BLOCK_4X4); - switch (bsize) { - case BLOCK_128X128: return 0; - case BLOCK_64X64: return 1; - case BLOCK_32X32: return 2; - case BLOCK_16X16: return 3; - case BLOCK_8X8: return 4; - case BLOCK_4X4: return 5; - default: assert(0 && "Invalid bsize for partition_stats."); return -1; - } -} -#endif +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 #if CONFIG_COLLECT_COMPONENT_TIMING static INLINE void start_timing(AV2_COMP *cpi, int component) { diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 0da3735c21..32fce7f1f0 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2871,6 +2871,93 @@ static AVM_INLINE PARTITION_TYPE get_forced_partition_type( return PARTITION_INVALID; } +#if CONFIG_COLLECT_PARTITION_STATS +static void init_partition_block_timing_stats( + PartitionTimingStats *part_timing_stats) { + av2_zero(*part_timing_stats); +} + +static INLINE void start_partition_block_timer( + PartitionTimingStats *part_timing_stats, PARTITION_TYPE partition_type) { + assert(!part_timing_stats->timer_is_on); + part_timing_stats->partition_attempts[partition_type] += 1; + avm_usec_timer_start(&part_timing_stats->timer); + part_timing_stats->timer_is_on = 1; +} + +static INLINE void end_partition_block_timer( + PartitionTimingStats *part_timing_stats, PARTITION_TYPE partition_type, + int64_t rdcost) { + if (part_timing_stats->timer_is_on) { + avm_usec_timer_mark(&part_timing_stats->timer); + const int64_t time = avm_usec_timer_elapsed(&part_timing_stats->timer); + part_timing_stats->partition_times[partition_type] += time; + part_timing_stats->partition_times[partition_type] = rdcost; + part_timing_stats->timer_is_on = 0; + } +} + +static INLINE void print_partition_timing_stats_with_rdcost( + const PartitionTimingStats *part_timing_stats, int bsize, int mi_row, + int mi_col, const RD_STATS *best_rdc, const char *filename) { + FILE *f = fopen(filename, "a"); + fprintf(f, "%d,%d,%d,%d,%" PRId64 ",%" PRId64 ",", bsize, mi_row, mi_col, + best_rdc->rate, best_rdc->dist, best_rdc->rdcost); + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + fprintf(f, "%d,", part_timing_stats->partition_decisions[idx]); + } + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + fprintf(f, "%d,", part_timing_stats->partition_attempts[idx]); + } + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + fprintf(f, "%" PRId64 ",", part_timing_stats->partition_times[idx]); + } + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + if (part_timing_stats->partition_rdcost[idx] == INT64_MAX) { + fprintf(f, "%d,", -1); + } else { + fprintf(f, "%" PRId64 ",", part_timing_stats->partition_rdcost[idx]); + } + } + fprintf(f, "\n"); + fclose(f); +} + +static INLINE void print_partition_timing_stats( + const PartitionTimingStats *part_timing_stats, int bsize, int mi_row, + int mi_col, const char *filename) { + FILE *f = fopen(filename, "a"); + fprintf(f, "%d,%d,%d,", bsize, mi_row, mi_col); + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + fprintf(f, "%d,", part_timing_stats->partition_decisions[idx]); + } + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + fprintf(f, "%d,", part_timing_stats->partition_attempts[idx]); + } + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + fprintf(f, "%" PRId64 ",", part_timing_stats->partition_times[idx]); + } + fprintf(f, "\n"); + fclose(f); +} + +#if CONFIG_COLLECT_PARTITION_STATS == 2 +static INLINE void accumulate_partition_timing_stats( + FramePartitionTimingStats *fr_part_timing_stats, + const PartitionTimingStats *part_timing_stats, const BLOCK_SIZE bsize) { + int *agg_attempts = fr_part_timing_stats->partition_attempts[bsize]; + int *agg_decisions = fr_part_timing_stats->partition_decisions[bsize]; + int64_t *agg_times = fr_part_timing_stats->partition_times[bsize]; + for (int idx = 0; idx < ALL_PARTITION_TYPES; idx++) { + agg_attempts[idx] += part_timing_stats->partition_attempts[idx]; + agg_decisions[idx] += part_timing_stats->partition_decisions[idx]; + agg_times[idx] += part_timing_stats->partition_times[idx]; + } +} +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 + +#endif // CONFIG_COLLECT_PARTITION_STATS + static AVM_INLINE void init_allowed_partitions( PartitionSearchState *part_search_state, const PartitionCfg *part_cfg, const int bru_skip, const bool *partition_allowed) { @@ -2950,6 +3037,10 @@ static AVM_INLINE void init_allowed_partitions( assert(part_search_state->partition_none_allowed || part_search_state->partition_rect_allowed[VERT] || part_search_state->partition_rect_allowed[HORZ]); + +#if CONFIG_COLLECT_PARTITION_STATS + init_partition_block_timing_stats(&part_search_state->part_timing_stats); +#endif // CONFIG_COLLECT_PARTITION_STATS } // Initialize state variables of partition search used in @@ -3369,6 +3460,11 @@ static void rectangular_partition_search( bsize) && partition_type == sdp_chroma_part_from_luma(bsize, ptree_luma->partition, ss_x, ss_y); +#if CONFIG_COLLECT_PARTITION_STATS + PartitionTimingStats *part_timing_stats = + &part_search_state->part_timing_stats; + start_partition_block_timer(part_timing_stats, partition_type); +#endif // CONFIG_COLLECT_PARTITION_STATS rd_pick_rect_partition( cpi, td, tile_data, tp, x, pc_tree, part_search_state, best_rdc, i, mi_pos_rect, blk_params.subsize, is_not_edge_block, multi_pass_mode, @@ -3380,13 +3476,9 @@ static void rectangular_partition_search( #endif // CONFIG_ML_PART_SPLIT ); #if CONFIG_COLLECT_PARTITION_STATS - if (partition_timer_on) { - avm_usec_timer_mark(&partition_timer); - int64_t time = avm_usec_timer_elapsed(&partition_timer); - partition_times[partition_type] += time; - partition_timer_on = 0; - } -#endif + end_partition_block_timer(part_timing_stats, partition_type, + sum_rdc->rdcost); +#endif // CONFIG_COLLECT_PARTITION_STATS // Update HORZ / VERT best partition. if (sum_rdc->rdcost < best_rdc->rdcost) { sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, sum_rdc->dist); @@ -3685,12 +3777,12 @@ static void none_partition_search( #if CONFIG_COLLECT_PARTITION_STATS // Timer start for partition None. - if (best_remain_rdcost >= 0) { - partition_attempts[PARTITION_NONE] += 1; - avm_usec_timer_start(&partition_timer); - partition_timer_on = 1; + PartitionTimingStats *part_timing_stats = + &part_search_state->part_timing_stats; + if (best_remain_rdcost.rdcost >= 0) { + start_partition_block_timer(part_timing_stats, PARTITION_NONE); } -#endif +#endif // CONFIG_COLLECT_PARTITION_STATS SimpleMotionData *sms_data = av2_get_sms_data_entry( x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, (int8_t)cur_region_type); // Skip the SMS mode cache when retrying partition search @@ -3717,14 +3809,9 @@ static void none_partition_search( av2_rd_cost_update(x->rdmult, this_rdc); #if CONFIG_COLLECT_PARTITION_STATS - // Timer end for partition None. - if (partition_timer_on) { - avm_usec_timer_mark(&partition_timer); - int64_t time = avm_usec_timer_elapsed(&partition_timer); - partition_times[PARTITION_NONE] += time; - partition_timer_on = 0; - } -#endif + end_partition_block_timer(part_timing_stats, PARTITION_NONE, + this_rdc->rdcost); +#endif // CONFIG_COLLECT_PARTITION_STATS *pb_source_variance = x->source_variance; if (none_rd) *none_rd = this_rdc->rdcost; @@ -3840,12 +3927,12 @@ static void split_partition_search( int idx; #if CONFIG_COLLECT_PARTITION_STATS + PartitionTimingStats *part_timing_stats = + &part_search_state->part_timing_stats; if (best_rdc->rdcost - sum_rdc.rdcost >= 0) { - partition_attempts[PARTITION_SPLIT] += 1; - avm_usec_timer_start(&partition_timer); - partition_timer_on = 1; + start_partition_block_timer(part_timing_stats, PARTITION_SPLIT); } -#endif +#endif // CONFIG_COLLECT_PARTITION_STATS // Recursive partition search on 4 sub-blocks. for (idx = 0; idx < SUB_PARTITIONS_SPLIT && sum_rdc.rdcost < best_rdc->rdcost; ++idx) { @@ -3911,13 +3998,8 @@ static void split_partition_search( av2_rd_cost_update(x->rdmult, &sum_rdc); } #if CONFIG_COLLECT_PARTITION_STATS - if (partition_timer_on) { - avm_usec_timer_mark(&partition_timer); - int64_t time = avm_usec_timer_elapsed(&partition_timer); - partition_times[PARTITION_SPLIT] += time; - partition_timer_on = 0; - } -#endif + end_partition_block_timer(part_timing_stats, PARTITION_SPLIT, sum_rdc.rdcost); +#endif // CONFIG_COLLECT_PARTITION_STATS const int reached_last_index = (idx == SUB_PARTITIONS_SPLIT); // Calculate the total cost and update the best partition. @@ -4990,7 +5072,10 @@ static void search_extended_partition( RDCOST(x->rdmult, part_rate, 0) >= best_rdc->rdcost) { return; } - +#if CONFIG_COLLECT_PARTITION_STATS + PartitionTimingStats *part_timing_stats = &search_state->part_timing_stats; + start_partition_block_timer(part_timing_stats, partition_type); +#endif // CONFIG_COLLECT_PARTITION_STATS RD_STATS sum_rdc; av2_init_rd_stats(&sum_rdc); sum_rdc.rate = search_state->partition_cost[partition_type]; @@ -5064,7 +5149,9 @@ static void search_extended_partition( pc_tree->partitioning = partition_type; pc_tree->skippable = skippable; } - +#if CONFIG_COLLECT_PARTITION_STATS + end_partition_block_timer(part_timing_stats, partition_type, sum_rdc.rdcost); +#endif // CONFIG_COLLECT_PARTITION_STATS av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); restore_level_banks(&x->e_mbd, level_banks); } @@ -5529,15 +5616,16 @@ bool av2_rd_pick_partition( if (none_rd) *none_rd = 0; #if CONFIG_COLLECT_PARTITION_STATS - int partition_decisions[EXT_PARTITION_TYPES] = { 0 }; - int partition_attempts[EXT_PARTITION_TYPES] = { 0 }; - int64_t partition_times[EXT_PARTITION_TYPES] = { 0 }; - struct avm_usec_timer partition_timer = { 0 }; - int partition_timer_on = 0; + // Stats at the current quad tree + PartitionTimingStats *part_timing_stats = + &part_search_state.part_timing_stats; + #if CONFIG_COLLECT_PARTITION_STATS == 2 - PartitionStats *part_stats = &cpi->partition_stats; -#endif -#endif + // Stats aggregated at frame level + FramePartitionTimingStats *fr_part_timing_stats = &cpi->partition_stats; +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 + +#endif // CONFIG_COLLECT_PARTITION_STATS #ifndef NDEBUG // Nothing should rely on the default value of this array (which is just @@ -5781,8 +5869,8 @@ bool av2_rd_pick_partition( // constraint on which partition types to search. x->must_find_valid_partition = 1; #if CONFIG_COLLECT_PARTITION_STATS == 2 - part_stats->partition_redo += 1; -#endif + fr_part_timing_stats->partition_redo += 1; +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 goto BEGIN_PARTITION_SEARCH; } @@ -5843,43 +5931,25 @@ bool av2_rd_pick_partition( #if CONFIG_COLLECT_PARTITION_STATS if (best_rdc.rate < INT_MAX && best_rdc.dist < INT64_MAX) { - partition_decisions[pc_tree->partitioning] += 1; + part_timing_stats->partition_decisions[pc_tree->partitioning] += 1; } -#endif - -#if CONFIG_COLLECT_PARTITION_STATS == 1 // If CONFIG_COLLECT_PARTITION_STATS is 1, then print out the stats for each // prediction block. - FILE *f = fopen("data.csv", "a"); - fprintf(f, "%d,%d,%d,", bsize, cm->immediate_output_picture, - frame_is_intra_only(cm)); - for (int idx = 0; idx < EXT_PARTITION_TYPES; idx++) { - fprintf(f, "%d,", partition_decisions[idx]); - } - for (int idx = 0; idx < EXT_PARTITION_TYPES; idx++) { - fprintf(f, "%d,", partition_attempts[idx]); + print_partition_timing_stats_with_rdcost( + part_timing_stats, bsize, mi_row, mi_col, &best_rdc, "part_timing.csv"); + const bool print_timing_stats = false; + if (print_timing_stats) { + print_partition_timing_stats(part_timing_stats, bsize, mi_row, mi_col, + "part_timing_data.csv"); } - for (int idx = 0; idx < EXT_PARTITION_TYPES; idx++) { - fprintf(f, "%ld,", partition_times[idx]); - } - fprintf(f, "\n"); - fclose(f); -#endif - #if CONFIG_COLLECT_PARTITION_STATS == 2 // If CONFIG_COLLECTION_PARTITION_STATS is 2, then we print out the stats // for the whole clip. So we need to pass the information upstream to the // encoder. - const int bsize_idx = av2_get_bsize_idx_for_part_stats(bsize); - int *agg_attempts = part_stats->partition_attempts[bsize_idx]; - int *agg_decisions = part_stats->partition_decisions[bsize_idx]; - int64_t *agg_times = part_stats->partition_times[bsize_idx]; - for (int idx = 0; idx < EXT_PARTITION_TYPES; idx++) { - agg_attempts[idx] += partition_attempts[idx]; - agg_decisions[idx] += partition_decisions[idx]; - agg_times[idx] += partition_times[idx]; - } -#endif + accumulate_partition_timing_stats(fr_part_timing_stats, part_timing_stats, + bsize); +#endif // CONFIG_COLLECT_PARTITION_STATS == 2 +#endif // CONFIG_COLLECT_PARTITION_STATS // Reset the PC_TREE deallocation flag. int pc_tree_dealloc = 0; diff --git a/cmake/avm_config_defaults.cmake b/cmake/avm_config_defaults.cmake index 5c055f79ac..395f9ae210 100644 --- a/cmake/avm_config_defaults.cmake +++ b/cmake/avm_config_defaults.cmake @@ -122,7 +122,7 @@ set_avm_config_var(CONFIG_BITSTREAM_DEBUG 0 set_avm_config_var(CONFIG_RD_DEBUG 0 "AV2 experiment flag.") set_avm_config_var(CONFIG_SHARP_SETTINGS 0 "AV2 experiment flag.") set_avm_config_var(CONFIG_COLLECT_PARTITION_STATS 0 - "Collect stats on partition decisions.") + "Collect partition timing stats. Can be 1 or 2.") set_avm_config_var(CONFIG_COLLECT_COMPONENT_TIMING 0 "Collect encoding component timing information.") set_avm_config_var(CONFIG_NN_V2 0 "Fully-connected neural nets ver.2.") From 63be7278689dcff55a60fa94e02feb4a67daaa8b Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 27 Jul 2026 14:59:51 -0700 Subject: [PATCH 020/205] Check the requirement on is_first_tile_group (#5143) Check the requirement of bitstream conformance that SeenFrameHeader is not equal to is_first_tile_group. If this requirement is not met, the decoder may skip the read_uncompressed_header() call in av2_read_tilegroup_header(), which eventually leads to a null pointer dereference. Fixes https://github.com/AOMediaCodec/avm/issues/5142. --- av2/decoder/decodeframe.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index aadcd34032..2c227c4a0d 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -9606,6 +9606,14 @@ int32_t av2_read_tilegroup_header( send_first_tile_group_indication &= obu_type != OBU_BRIDGE_FRAME; if (send_first_tile_group_indication) is_first_tile_group = avm_rb_read_bit(rb); + // It is a requirement of bitstream conformance that SeenFrameHeader is not + // equal to is_first_tile_group. + if (pbi->seen_frame_header == is_first_tile_group) { + avm_internal_error( + &cm->error, AVM_CODEC_CORRUPT_FRAME, + "SeenFrameHeader (%d) is equal to is_first_tile_group (%d)", + pbi->seen_frame_header, is_first_tile_group); + } *first_tile_group_in_frame = is_first_tile_group; if (is_first_tile_group) { From 2ed883d4906d5f07370b93952307d38ce44e187b Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Sat, 1 Aug 2026 15:28:49 -0700 Subject: [PATCH 021/205] Assert MAX_PROFILES & PROFILE_BITS are consistent (#5182) --- av2/common/enums.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/av2/common/enums.h b/av2/common/enums.h index 3c4e82bbc1..8e92b46260 100644 --- a/av2/common/enums.h +++ b/av2/common/enums.h @@ -13,6 +13,8 @@ #ifndef AVM_AV2_COMMON_ENUMS_H_ #define AVM_AV2_COMMON_ENUMS_H_ +#include + #include "config/avm_config.h" #include "avm/avm_codec.h" @@ -280,6 +282,8 @@ enum { MAX_PROFILES, } SENUM1BYTE(BITSTREAM_PROFILE); +static_assert(MAX_PROFILES == (1 << PROFILE_BITS), ""); + #define BUFFER_POOL_MAX_SIZE 18 // Max VBI slots (16) + 2 extra #define MAX_NUM_TLAYERS 4 From 48a7a186136814b7928e7827b90f03719b64bc44 Mon Sep 17 00:00:00 2001 From: James Zern Date: Sat, 1 Aug 2026 15:31:29 -0700 Subject: [PATCH 022/205] Add the void cast to the tp_orig variable itself (#5174) The void cast is used to ignore the tp_orig variable in Release builds because tp_orig is only used in an assert(). So the void cast should be applied to the variable itself rather than the expression *tp_orig. This is a port from libaom: fd74e18c14 Add the void cast to the tp_orig variable itself Co-authored-by: Wan-Teh Chang --- av2/encoder/partition_search.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 32fce7f1f0..5f27120720 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -5554,7 +5554,7 @@ bool av2_rd_pick_partition( const TokenExtra *const tp_orig = *tp; PartitionSearchState part_search_state; - (void)*tp_orig; + (void)tp_orig; assert(pc_tree != NULL); assert(bsize < BLOCK_SIZES_ALL); From 3efe9fa8edadf5d1cbbf92e02b4ac8c3582c1e03 Mon Sep 17 00:00:00 2001 From: James Zern Date: Sat, 1 Aug 2026 15:33:14 -0700 Subject: [PATCH 023/205] extract_proto.cc: prefer std::size over ABSL_ARRAYSIZE (#5175) --- tools/extract_proto/extract_proto.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/extract_proto/extract_proto.cc b/tools/extract_proto/extract_proto.cc index 16b8085730..334efb29ee 100644 --- a/tools/extract_proto/extract_proto.cc +++ b/tools/extract_proto/extract_proto.cc @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -284,8 +285,8 @@ int PopulatePartitionTree(insp_frame_data *frame_data, insp_sb_data *sb_data, int coding_unit_end = coding_unit_start; int child_coding_unit_start = coding_unit_start; - int i = 0; - for (; i < (int)ABSL_ARRAYSIZE(tree->sub_tree); ++i) { + size_t i = 0; + for (; i < std::size(tree->sub_tree); ++i) { if (tree->sub_tree[i] == nullptr) { break; } From 94d3c8e6cc7399f6b0f039f442ac0a1adc21209b Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Fri, 31 Jul 2026 15:10:45 -0700 Subject: [PATCH 024/205] Remove unneeded filtering of avmdec and avmenc avmdec and avmenc are no longer added to AVM_EXAMPLE_TARGETS, so we don't need to filter out avmdec and avmenc in ${AVM_EXAMPLE_TARGETS}. --- CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 368c9f27fb..3c9299d4eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1016,10 +1016,8 @@ if(ENABLE_EXAMPLES AND "${CMAKE_GENERATOR}" MATCHES "Makefiles$") file(MAKE_DIRECTORY "${AVM_CONFIG_DIR}/examples") foreach(target ${AVM_EXAMPLE_TARGETS}) - if(NOT "${target}" MATCHES "avmdec\|avmenc") - set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - "${AVM_CONFIG_DIR}/examples") - endif() + set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + "${AVM_CONFIG_DIR}/examples") endforeach() if(ENABLE_TOOLS AND AVM_TOOL_TARGETS) From ec3b746a8ea33c4922087ce84f3076fe4c51d2d6 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Fri, 31 Jul 2026 16:15:11 -0700 Subject: [PATCH 025/205] Declare two fuctions static The read_tile_syntax_info() and read_sequence_tile_info() functions are defined and only used in av2/decoder/decodeframe.c. --- av2/decoder/decodeframe.c | 9 +++++---- av2/decoder/decodeframe.h | 4 ---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index 2c227c4a0d..e308fcc9e0 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -5928,8 +5928,8 @@ void av2_read_conformance_window(struct avm_read_bit_buffer *rb, } } -void read_tile_syntax_info(TileInfoSyntax *tile_params, - struct avm_read_bit_buffer *rb) { +static void read_tile_syntax_info(TileInfoSyntax *tile_params, + struct avm_read_bit_buffer *rb) { tile_params->allow_tile_info_change = avm_rb_read_bit(rb); CommonTileParams *tile_info = &tile_params->tile_info; tile_info->uniform_spacing = avm_rb_read_bit(rb); @@ -5989,8 +5989,9 @@ void read_tile_syntax_info(TileInfoSyntax *tile_params, av2_calculate_tile_rows(tile_info); } -void read_sequence_tile_info(struct SequenceHeader *seq_params, - struct avm_read_bit_buffer *rb) { +// Reads the tile information in the sequence header +static void read_sequence_tile_info(struct SequenceHeader *seq_params, + struct avm_read_bit_buffer *rb) { av2_get_seq_tile_limits(&seq_params->tile_params, seq_params->max_frame_height, seq_params->max_frame_width, diff --git a/av2/decoder/decodeframe.h b/av2/decoder/decodeframe.h index d67ade2eaf..aa6dd12f7a 100644 --- a/av2/decoder/decodeframe.h +++ b/av2/decoder/decodeframe.h @@ -61,10 +61,6 @@ void copy_fgm_from_list(AV2_COMMON *cm, avm_film_grain_t *pars, void av2_read_sequence_header(struct avm_read_bit_buffer *rb, SequenceHeader *seq_params); -// Reads the tile information in the sequence header -void read_sequence_tile_info(struct SequenceHeader *seq_params, - struct avm_read_bit_buffer *rb); - int read_obu_extension_bits(const uint8_t *obu_payload, size_t payload_size, size_t bits_read_before_extension, struct avm_internal_error_info *error_info); From e838568f9142fc90484d18230e3abd323d68fb45 Mon Sep 17 00:00:00 2001 From: jjustiss-apple Date: Mon, 3 Aug 2026 11:11:23 -0700 Subject: [PATCH 026/205] Add NEON for highbd warp affine filter (#5169) av2_highbd_warp_affine and av2_ext_highbd_warp_affine are called frequently during inter prediction at encoder speed 1. Adds NEON intrinsics for both functions, achieving 3-5x speedup over C at the kernel level. Micro-benchmark results (Apple M2 Ultra): | Kernel | C (ns) | NEON (ns) | Speedup | |--------|--------|-----------|---------| | warp 32x32 | 9209 | 1741 | 5.3x | | warp 16x16 | 2323 | 483 | 4.8x | | warp 8x8 | 589 | 153 | 3.8x | | ext_warp 16x16 | 1851 | 441 | 4.2x | | ext_warp 8x8 | 453 | 158 | 2.9x | CTC Results (RA, cpu-used=1, 33 frames, classes A4+A5): | Metric | Delta | |--------|-------| | Encode time | -5.5% | | BD-rate Y | 0.000% | | BD-rate Cb | 0.000% | | BD-rate Cr | 0.000% | Unit tests updated. --- av2/av2.cmake | 1 + av2/common/arm/highbd_warp_affine_neon.c | 722 +++++++++++++++++++++++ av2/common/av2_rtcd_defs.pl | 4 +- test/warp_filter_test.cc | 41 +- test/warp_filter_test_util.cc | 123 +++- test/warp_filter_test_util.h | 2 + 6 files changed, 879 insertions(+), 14 deletions(-) create mode 100644 av2/common/arm/highbd_warp_affine_neon.c diff --git a/av2/av2.cmake b/av2/av2.cmake index 2738bda86f..57f639be12 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -440,6 +440,7 @@ list( "${AVM_ROOT}/av2/common/arm/convolve_neon.c" "${AVM_ROOT}/av2/common/arm/convolve_neon.h" "${AVM_ROOT}/av2/common/arm/reconinter_neon.c" + "${AVM_ROOT}/av2/common/arm/highbd_warp_affine_neon.c" "${AVM_ROOT}/av2/common/cdef_block_neon.c") list(APPEND AVM_AV2_ENCODER_INTRIN_SSE4_2 diff --git a/av2/common/arm/highbd_warp_affine_neon.c b/av2/common/arm/highbd_warp_affine_neon.c new file mode 100644 index 0000000000..f16dd21a93 --- /dev/null +++ b/av2/common/arm/highbd_warp_affine_neon.c @@ -0,0 +1,722 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include +#include + +#include "config/av2_rtcd.h" + +#include "av2/common/warped_motion.h" +#include "avm_dsp/arm/sum_neon.h" +#include "avm_dsp/arm/transpose_neon.h" +#include "avm_dsp/avm_dsp_common.h" + +static INLINE int32x4_t round_shift_s32(int32x4_t v, int bits) { + return vrshlq_s32(v, vdupq_n_s32(-bits)); +} + +static INLINE int32x4_t trunc_shift_s32(int32x4_t v, int bits) { + return vshlq_s32(v, vdupq_n_s32(-bits)); +} + +static INLINE int16x8_t load_filter(int sx) { + const int offs = ROUND_POWER_OF_TWO(sx, WARPEDDIFF_PREC_BITS) + + 3 * WARPEDPIXEL_PREC_SHIFTS; + assert(offs >= 0 && offs <= WARPEDPIXEL_PREC_SHIFTS * 7); + return vld1q_s16(av2_warped_filter[offs]); +} + +static INLINE void load_filters_8(int16x8_t f[8], int sx, int stride) { + f[0] = load_filter(sx + stride * 0); + f[1] = load_filter(sx + stride * 1); + f[2] = load_filter(sx + stride * 2); + f[3] = load_filter(sx + stride * 3); + f[4] = load_filter(sx + stride * 4); + f[5] = load_filter(sx + stride * 5); + f[6] = load_filter(sx + stride * 6); + f[7] = load_filter(sx + stride * 7); +} + +// Core horizontal filter: takes two source vectors (16 int16 pixels) and +// pre-loaded 8-tap filters, produces 8 filtered int16 outputs via vext +// sliding window + per-pixel dot product. +static INLINE int16x8_t warp_horiz_apply_neon(int16x8_t src_lo, + int16x8_t src_hi, + const int16x8_t f[8], + int32x4_t round_v, + int reduce_bits_horiz) { + int16x8_t rv; + + int32x4_t m0 = vmull_s16(vget_low_s16(f[0]), vget_low_s16(src_lo)); + m0 = vmlal_s16(m0, vget_high_s16(f[0]), vget_high_s16(src_lo)); + rv = vextq_s16(src_lo, src_hi, 1); + int32x4_t m1 = vmull_s16(vget_low_s16(f[1]), vget_low_s16(rv)); + m1 = vmlal_s16(m1, vget_high_s16(f[1]), vget_high_s16(rv)); + rv = vextq_s16(src_lo, src_hi, 2); + int32x4_t m2 = vmull_s16(vget_low_s16(f[2]), vget_low_s16(rv)); + m2 = vmlal_s16(m2, vget_high_s16(f[2]), vget_high_s16(rv)); + rv = vextq_s16(src_lo, src_hi, 3); + int32x4_t m3 = vmull_s16(vget_low_s16(f[3]), vget_low_s16(rv)); + m3 = vmlal_s16(m3, vget_high_s16(f[3]), vget_high_s16(rv)); + rv = vextq_s16(src_lo, src_hi, 4); + int32x4_t m4 = vmull_s16(vget_low_s16(f[4]), vget_low_s16(rv)); + m4 = vmlal_s16(m4, vget_high_s16(f[4]), vget_high_s16(rv)); + rv = vextq_s16(src_lo, src_hi, 5); + int32x4_t m5 = vmull_s16(vget_low_s16(f[5]), vget_low_s16(rv)); + m5 = vmlal_s16(m5, vget_high_s16(f[5]), vget_high_s16(rv)); + rv = vextq_s16(src_lo, src_hi, 6); + int32x4_t m6 = vmull_s16(vget_low_s16(f[6]), vget_low_s16(rv)); + m6 = vmlal_s16(m6, vget_high_s16(f[6]), vget_high_s16(rv)); + rv = vextq_s16(src_lo, src_hi, 7); + int32x4_t m7 = vmull_s16(vget_low_s16(f[7]), vget_low_s16(rv)); + m7 = vmlal_s16(m7, vget_high_s16(f[7]), vget_high_s16(rv)); + + const int32x4_t m0123[] = { m0, m1, m2, m3 }; + const int32x4_t m4567[] = { m4, m5, m6, m7 }; + int32x4_t res0 = horizontal_add_4d_s32x4(m0123); + int32x4_t res1 = horizontal_add_4d_s32x4(m4567); + + res0 = vaddq_s32(res0, round_v); + res1 = vaddq_s32(res1, round_v); + + res0 = trunc_shift_s32(res0, reduce_bits_horiz); + res1 = trunc_shift_s32(res1, reduce_bits_horiz); + + return vcombine_s16(vmovn_s32(res0), vmovn_s32(res1)); +} + +static INLINE int16x8_t warp_horiz_filter_neon(int16x8_t src_lo, + int16x8_t src_hi, int sx, + int alpha, int32x4_t round_v, + int reduce_bits_horiz) { + int16x8_t f[8]; + load_filters_8(f, sx, alpha); + return warp_horiz_apply_neon(src_lo, src_hi, f, round_v, reduce_bits_horiz); +} + +// Alpha==0: all 8 pixels use the same filter. Broadcast coefficients via +// vmull_lane, producing results directly without horizontal_add_4d. +static INLINE int16x8_t warp_horiz_uniform_neon(int16x8_t src_lo, + int16x8_t src_hi, + int16x8_t filt, + int32x4_t round_v, + int reduce_bits_horiz) { + const int16x4_t f_lo = vget_low_s16(filt); + const int16x4_t f_hi = vget_high_s16(filt); + + int32x4_t a_lo = vmull_lane_s16(vget_low_s16(src_lo), f_lo, 0); + int32x4_t a_hi = vmull_lane_s16(vget_high_s16(src_lo), f_lo, 0); + int16x8_t sv; + + sv = vextq_s16(src_lo, src_hi, 1); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_lo, 1); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_lo, 1); + sv = vextq_s16(src_lo, src_hi, 2); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_lo, 2); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_lo, 2); + sv = vextq_s16(src_lo, src_hi, 3); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_lo, 3); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_lo, 3); + sv = vextq_s16(src_lo, src_hi, 4); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_hi, 0); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_hi, 0); + sv = vextq_s16(src_lo, src_hi, 5); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_hi, 1); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_hi, 1); + sv = vextq_s16(src_lo, src_hi, 6); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_hi, 2); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_hi, 2); + sv = vextq_s16(src_lo, src_hi, 7); + a_lo = vmlal_lane_s16(a_lo, vget_low_s16(sv), f_hi, 3); + a_hi = vmlal_lane_s16(a_hi, vget_high_s16(sv), f_hi, 3); + + a_lo = vaddq_s32(a_lo, round_v); + a_hi = vaddq_s32(a_hi, round_v); + a_lo = trunc_shift_s32(a_lo, reduce_bits_horiz); + a_hi = trunc_shift_s32(a_hi, reduce_bits_horiz); + + return vcombine_s16(vmovn_s32(a_lo), vmovn_s32(a_hi)); +} + +// Vertical filter for 8 output pixels with per-pixel varying coefficients. +// tmp[0..7] are 8 consecutive rows from the intermediate buffer, each holding +// 8 int16 values (one per output column). Transpose so each register holds +// one tap across all 8 pixels, then dot-product with per-pixel filters. +static INLINE void warp_vert_8x1_neon(const int16x8_t *tmp, int sy, int gamma, + int32x4_t offset_v, int reduce_bits_vert, + int bd, int is_compound, + ConvolveParams *conv_params, + uint16_t *pred_row, + CONV_BUF_TYPE *comp_row, + int use_wtd_comp_avg, int32x4_t max_v) { + int32x4_t sum_lo, sum_hi; + + if (gamma == 0) { + // Uniform filter: all 8 pixels use the same coefficients. + // Use vmlal_lane to broadcast each tap, avoiding transpose. + const int16x8_t filt = load_filter(sy); + const int16x4_t f_lo = vget_low_s16(filt); + const int16x4_t f_hi = vget_high_s16(filt); + + sum_lo = vmull_lane_s16(vget_low_s16(tmp[0]), f_lo, 0); + sum_hi = vmull_lane_s16(vget_high_s16(tmp[0]), f_lo, 0); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[1]), f_lo, 1); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[1]), f_lo, 1); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[2]), f_lo, 2); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[2]), f_lo, 2); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[3]), f_lo, 3); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[3]), f_lo, 3); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[4]), f_hi, 0); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[4]), f_hi, 0); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[5]), f_hi, 1); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[5]), f_hi, 1); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[6]), f_hi, 2); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[6]), f_hi, 2); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(tmp[7]), f_hi, 3); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(tmp[7]), f_hi, 3); + } else { + // Per-tap accumulation: transpose filter coefficients so tap_m[i] holds + // tap m for pixel i, then element-wise multiply by tmp[m] and accumulate. + int16x8_t f[8]; + load_filters_8(f, sy, gamma); + transpose_elems_inplace_s16_8x8(&f[0], &f[1], &f[2], &f[3], &f[4], &f[5], + &f[6], &f[7]); + // After transpose: f[m] = [tap_m for pixel 0..7] + // tmp[m] = [value at row m for pixels 0..7] + sum_lo = vmull_s16(vget_low_s16(tmp[0]), vget_low_s16(f[0])); + sum_hi = vmull_s16(vget_high_s16(tmp[0]), vget_high_s16(f[0])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[1]), vget_low_s16(f[1])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[1]), vget_high_s16(f[1])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[2]), vget_low_s16(f[2])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[2]), vget_high_s16(f[2])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[3]), vget_low_s16(f[3])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[3]), vget_high_s16(f[3])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[4]), vget_low_s16(f[4])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[4]), vget_high_s16(f[4])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[5]), vget_low_s16(f[5])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[5]), vget_high_s16(f[5])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[6]), vget_low_s16(f[6])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[6]), vget_high_s16(f[6])); + sum_lo = vmlal_s16(sum_lo, vget_low_s16(tmp[7]), vget_low_s16(f[7])); + sum_hi = vmlal_s16(sum_hi, vget_high_s16(tmp[7]), vget_high_s16(f[7])); + } + + sum_lo = vaddq_s32(sum_lo, offset_v); + sum_hi = vaddq_s32(sum_hi, offset_v); + + if (is_compound) { + const int offset_bits = bd + 2 * FILTER_BITS - conv_params->round_0; + const int round_bits = + 2 * FILTER_BITS - conv_params->round_0 - conv_params->round_1; + + sum_lo = round_shift_s32(sum_lo, reduce_bits_vert); + sum_hi = round_shift_s32(sum_hi, reduce_bits_vert); + + if (conv_params->do_average) { + int32x4_t p_lo = vreinterpretq_s32_u32(vmovl_u16(vld1_u16(comp_row))); + int32x4_t p_hi = vreinterpretq_s32_u32(vmovl_u16(vld1_u16(comp_row + 4))); + + if (use_wtd_comp_avg) { + p_lo = vmulq_n_s32(p_lo, conv_params->fwd_offset); + p_lo = vmlaq_n_s32(p_lo, sum_lo, conv_params->bck_offset); + p_lo = vshrq_n_s32(p_lo, DIST_PRECISION_BITS); + p_hi = vmulq_n_s32(p_hi, conv_params->fwd_offset); + p_hi = vmlaq_n_s32(p_hi, sum_hi, conv_params->bck_offset); + p_hi = vshrq_n_s32(p_hi, DIST_PRECISION_BITS); + } else { + p_lo = vhaddq_s32(p_lo, sum_lo); + p_hi = vhaddq_s32(p_hi, sum_hi); + } + + const int res_sub_const = (1 << (offset_bits - conv_params->round_1)) + + (1 << (offset_bits - conv_params->round_1 - 1)); + p_lo = vsubq_s32(p_lo, vdupq_n_s32(res_sub_const)); + p_hi = vsubq_s32(p_hi, vdupq_n_s32(res_sub_const)); + + p_lo = round_shift_s32(p_lo, round_bits); + p_hi = round_shift_s32(p_hi, round_bits); + + p_lo = vminq_s32(p_lo, max_v); + p_hi = vminq_s32(p_hi, max_v); + vst1_u16(pred_row, vqmovun_s32(p_lo)); + vst1_u16(pred_row + 4, vqmovun_s32(p_hi)); + } else { + vst1_u16(comp_row, vqmovun_s32(sum_lo)); + vst1_u16(comp_row + 4, vqmovun_s32(sum_hi)); + } + } else { + sum_lo = round_shift_s32(sum_lo, reduce_bits_vert); + sum_hi = round_shift_s32(sum_hi, reduce_bits_vert); + + sum_lo = vminq_s32(sum_lo, max_v); + sum_hi = vminq_s32(sum_hi, max_v); + vst1_u16(pred_row, vqmovun_s32(sum_lo)); + vst1_u16(pred_row + 4, vqmovun_s32(sum_hi)); + } +} + +void av2_highbd_warp_affine_neon(const int32_t *mat, const uint16_t *ref, + int width, int height, int stride, + uint16_t *pred, int p_col, int p_row, + int p_width, int p_height, int p_stride, + int subsampling_x, int subsampling_y, int bd, + ConvolveParams *conv_params, int16_t alpha, + int16_t beta, int16_t gamma, int16_t delta) { + const int left_limit = 0; + const int right_limit = width - 1; + const int top_limit = 0; + const int bottom_limit = height - 1; + const int reduce_bits_horiz = conv_params->round_0; + const int reduce_bits_vert = conv_params->is_compound + ? conv_params->round_1 + : 2 * FILTER_BITS - reduce_bits_horiz; + const int offset_bits_horiz = bd + FILTER_BITS - 1; + const int offset_bits_vert = bd + 2 * FILTER_BITS - reduce_bits_horiz; + const int use_wtd_comp_avg = is_uneven_wtd_comp_avg(conv_params); + assert(IMPLIES(conv_params->is_compound, conv_params->dst != NULL)); + assert(bd + FILTER_BITS + 2 - conv_params->round_0 <= 16); + + const int32_t round_add = + (1 << offset_bits_horiz) + ((1 << reduce_bits_horiz) >> 1); + const int32x4_t round_v = vdupq_n_s32(round_add); + const int pixel_max = (1 << bd) - 1; + const int32x4_t max_v = vdupq_n_s32(pixel_max); + + // For non-compound: fold res_sub_const into the vertical offset so that + // round_shift produces the final result without a separate subtract. + // round_shift(sum + offset_v, rbv) - rsc == round_shift(sum + combined, rbv) + // where combined = offset_v - (rsc << rbv). + int32_t vert_offset_scalar = 1 << offset_bits_vert; + if (!conv_params->is_compound) { + const int res_sub_const = (1 << (bd - 1)) + (1 << bd); + vert_offset_scalar -= res_sub_const << reduce_bits_vert; + } + const int32x4_t vert_offset_v = vdupq_n_s32(vert_offset_scalar); + + for (int i = p_row; i < p_row + p_height; i += 8) { + for (int j = p_col; j < p_col + p_width; j += 8) { + const int32_t src_x = (j + 4) << subsampling_x; + const int32_t src_y = (i + 4) << subsampling_y; + const int64_t dst_x = + (int64_t)mat[2] * src_x + (int64_t)mat[3] * src_y + (int64_t)mat[0]; + const int64_t dst_y = + (int64_t)mat[4] * src_x + (int64_t)mat[5] * src_y + (int64_t)mat[1]; + const int64_t x4 = dst_x >> subsampling_x; + const int64_t y4 = dst_y >> subsampling_y; + + const int32_t ix4 = (int32_t)(x4 >> WARPEDMODEL_PREC_BITS); + int32_t sx4 = x4 & ((1 << WARPEDMODEL_PREC_BITS) - 1); + const int32_t iy4 = (int32_t)(y4 >> WARPEDMODEL_PREC_BITS); + int32_t sy4 = y4 & ((1 << WARPEDMODEL_PREC_BITS) - 1); + + sx4 += alpha * (-4) + beta * (-4); + sy4 += gamma * (-4) + delta * (-4); + + sx4 &= ~((1 << WARP_PARAM_REDUCE_BITS) - 1); + sy4 &= ~((1 << WARP_PARAM_REDUCE_BITS) - 1); + + const int horiz_in_bounds = + (ix4 - 7 >= left_limit) && (ix4 + 8 <= right_limit); + int16x8_t tmp[15]; + + const int vert_in_bounds = + (iy4 - 7 >= top_limit) && (iy4 + 8 <= bottom_limit); + + if (alpha == 0 && beta == 0) { + const int16x8_t filt = load_filter(sx4); + if (horiz_in_bounds) { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const uint16_t *row = &ref[iy * stride + ix4 - 7]; + const int16x8_t src_lo = vreinterpretq_s16_u16(vld1q_u16(row)); + const int16x8_t src_hi = vreinterpretq_s16_u16(vld1q_u16(row + 8)); + tmp[k + 7] = warp_horiz_uniform_neon(src_lo, src_hi, filt, round_v, + reduce_bits_horiz); + } + } else { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + int16_t src_buf[16]; + for (int m = 0; m < 16; ++m) { + int ix = clamp(ix4 - 7 + m, left_limit, right_limit); + src_buf[m] = (int16_t)ref[iy * stride + ix]; + } + const int16x8_t src_lo = vld1q_s16(src_buf); + const int16x8_t src_hi = vld1q_s16(src_buf + 8); + tmp[k + 7] = warp_horiz_uniform_neon(src_lo, src_hi, filt, round_v, + reduce_bits_horiz); + } + } + } else if (alpha == 0) { + if (horiz_in_bounds) { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const int sx = sx4 + beta * (k + 4); + const int16x8_t filt = load_filter(sx); + const uint16_t *row = &ref[iy * stride + ix4 - 7]; + const int16x8_t src_lo = vreinterpretq_s16_u16(vld1q_u16(row)); + const int16x8_t src_hi = vreinterpretq_s16_u16(vld1q_u16(row + 8)); + tmp[k + 7] = warp_horiz_uniform_neon(src_lo, src_hi, filt, round_v, + reduce_bits_horiz); + } + } else { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const int sx = sx4 + beta * (k + 4); + const int16x8_t filt = load_filter(sx); + int16_t src_buf[16]; + for (int m = 0; m < 16; ++m) { + int ix = clamp(ix4 - 7 + m, left_limit, right_limit); + src_buf[m] = (int16_t)ref[iy * stride + ix]; + } + const int16x8_t src_lo = vld1q_s16(src_buf); + const int16x8_t src_hi = vld1q_s16(src_buf + 8); + tmp[k + 7] = warp_horiz_uniform_neon(src_lo, src_hi, filt, round_v, + reduce_bits_horiz); + } + } + } else if (beta == 0) { + int16x8_t f[8]; + load_filters_8(f, sx4, alpha); + if (horiz_in_bounds) { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const uint16_t *row = &ref[iy * stride + ix4 - 7]; + const int16x8_t src_lo = vreinterpretq_s16_u16(vld1q_u16(row)); + const int16x8_t src_hi = vreinterpretq_s16_u16(vld1q_u16(row + 8)); + tmp[k + 7] = warp_horiz_apply_neon(src_lo, src_hi, f, round_v, + reduce_bits_horiz); + } + } else { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + int16_t src_buf[16]; + for (int m = 0; m < 16; ++m) { + int ix = clamp(ix4 - 7 + m, left_limit, right_limit); + src_buf[m] = (int16_t)ref[iy * stride + ix]; + } + const int16x8_t src_lo = vld1q_s16(src_buf); + const int16x8_t src_hi = vld1q_s16(src_buf + 8); + tmp[k + 7] = warp_horiz_apply_neon(src_lo, src_hi, f, round_v, + reduce_bits_horiz); + } + } + } else if (horiz_in_bounds) { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const int sx = sx4 + beta * (k + 4); + const uint16_t *row = &ref[iy * stride + ix4 - 7]; + const int16x8_t src_lo = vreinterpretq_s16_u16(vld1q_u16(row)); + const int16x8_t src_hi = vreinterpretq_s16_u16(vld1q_u16(row + 8)); + tmp[k + 7] = warp_horiz_filter_neon(src_lo, src_hi, sx, alpha, + round_v, reduce_bits_horiz); + } + } else { + for (int k = -7; k < 8; ++k) { + const int iy = vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const int sx = sx4 + beta * (k + 4); + int16_t src_buf[16]; + for (int m = 0; m < 16; ++m) { + int ix = clamp(ix4 - 7 + m, left_limit, right_limit); + src_buf[m] = (int16_t)ref[iy * stride + ix]; + } + const int16x8_t src_lo = vld1q_s16(src_buf); + const int16x8_t src_hi = vld1q_s16(src_buf + 8); + tmp[k + 7] = warp_horiz_filter_neon(src_lo, src_hi, sx, alpha, + round_v, reduce_bits_horiz); + } + } + + // Vertical filter: up to 8 output rows. + const int vert_rows = AVMMIN(4, p_row + p_height - i - 4); + + if (!conv_params->is_compound && delta == 0 && gamma == 0) { + // Uniform filter for all pixels and all rows. Load once, broadcast. + const int16x8_t filt = load_filter(sy4); + const int16x4_t f_lo = vget_low_s16(filt); + const int16x4_t f_hi = vget_high_s16(filt); + for (int k = -4; k < vert_rows; ++k) { + const int16x8_t *t = &tmp[k + 4]; + int32x4_t s_lo = vmull_lane_s16(vget_low_s16(t[0]), f_lo, 0); + int32x4_t s_hi = vmull_lane_s16(vget_high_s16(t[0]), f_lo, 0); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[1]), f_lo, 1); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[1]), f_lo, 1); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[2]), f_lo, 2); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[2]), f_lo, 2); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[3]), f_lo, 3); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[3]), f_lo, 3); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[4]), f_hi, 0); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[4]), f_hi, 0); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[5]), f_hi, 1); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[5]), f_hi, 1); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[6]), f_hi, 2); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[6]), f_hi, 2); + s_lo = vmlal_lane_s16(s_lo, vget_low_s16(t[7]), f_hi, 3); + s_hi = vmlal_lane_s16(s_hi, vget_high_s16(t[7]), f_hi, 3); + s_lo = vaddq_s32(s_lo, vert_offset_v); + s_hi = vaddq_s32(s_hi, vert_offset_v); + s_lo = round_shift_s32(s_lo, reduce_bits_vert); + s_hi = round_shift_s32(s_hi, reduce_bits_vert); + s_lo = vminq_s32(s_lo, max_v); + s_hi = vminq_s32(s_hi, max_v); + uint16_t *pr = &pred[(i - p_row + k + 4) * p_stride + (j - p_col)]; + vst1_u16(pr, vqmovun_s32(s_lo)); + vst1_u16(pr + 4, vqmovun_s32(s_hi)); + } + } else if (!conv_params->is_compound && delta == 0) { + // Same filter set for all rows (gamma!=0 so per-pixel varying). + // Hoist filter load + transpose once. + int16x8_t f[8]; + load_filters_8(f, sy4, gamma); + transpose_elems_inplace_s16_8x8(&f[0], &f[1], &f[2], &f[3], &f[4], + &f[5], &f[6], &f[7]); + for (int k = -4; k < vert_rows; ++k) { + const int16x8_t *t = &tmp[k + 4]; + int32x4_t s_lo = vmull_s16(vget_low_s16(t[0]), vget_low_s16(f[0])); + int32x4_t s_hi = vmull_s16(vget_high_s16(t[0]), vget_high_s16(f[0])); + for (int m = 1; m < 8; ++m) { + s_lo = vmlal_s16(s_lo, vget_low_s16(t[m]), vget_low_s16(f[m])); + s_hi = vmlal_s16(s_hi, vget_high_s16(t[m]), vget_high_s16(f[m])); + } + s_lo = vaddq_s32(s_lo, vert_offset_v); + s_hi = vaddq_s32(s_hi, vert_offset_v); + s_lo = round_shift_s32(s_lo, reduce_bits_vert); + s_hi = round_shift_s32(s_hi, reduce_bits_vert); + s_lo = vminq_s32(s_lo, max_v); + s_hi = vminq_s32(s_hi, max_v); + uint16_t *pr = &pred[(i - p_row + k + 4) * p_stride + (j - p_col)]; + vst1_u16(pr, vqmovun_s32(s_lo)); + vst1_u16(pr + 4, vqmovun_s32(s_hi)); + } + } else { + for (int k = -4; k < vert_rows; ++k) { + int sy = sy4 + delta * (k + 4); + uint16_t *pred_row = + &pred[(i - p_row + k + 4) * p_stride + (j - p_col)]; + CONV_BUF_TYPE *comp_row = + conv_params->is_compound + ? &conv_params + ->dst[(i - p_row + k + 4) * conv_params->dst_stride + + (j - p_col)] + : NULL; + warp_vert_8x1_neon(&tmp[k + 4], sy, gamma, vert_offset_v, + reduce_bits_vert, bd, conv_params->is_compound, + conv_params, pred_row, comp_row, use_wtd_comp_avg, + max_v); + } + } + } + } +} + +// Extended warp: 6-tap filter, 4x4 blocks, uniform filter per block. +void av2_ext_highbd_warp_affine_neon( + const int32_t *mat, const uint16_t *ref, int width, int height, int stride, + uint16_t *pred, int p_col, int p_row, int p_width, int p_height, + int p_stride, int subsampling_x, int subsampling_y, int bd, + ConvolveParams *conv_params, int use_warp_bd_box, PadBlock *warp_bd_box) { + const int reduce_bits_horiz = conv_params->round_0; + const int reduce_bits_vert = conv_params->is_compound + ? conv_params->round_1 + : 2 * FILTER_BITS - reduce_bits_horiz; + const int offset_bits_horiz = bd + FILTER_BITS - 1; + const int offset_bits_vert = bd + 2 * FILTER_BITS - reduce_bits_horiz; + const int offset_bits = bd + 2 * FILTER_BITS - conv_params->round_0; + const int round_bits = + 2 * FILTER_BITS - conv_params->round_0 - conv_params->round_1; + const int use_wtd_comp_avg = is_uneven_wtd_comp_avg(conv_params); + assert(IMPLIES(conv_params->is_compound, conv_params->dst != NULL)); + assert(bd + FILTER_BITS + 2 - conv_params->round_0 <= 16); + + int left_limit = 0; + int right_limit = width - 1; + int top_limit = 0; + int bottom_limit = height - 1; + int warp_bd_box_mem_stride = MAX_WARP_BD_SIZE; + + const int taps = EXT_WARP_TAPS; + const int taps_half = taps >> 1; + + const int32_t horiz_round = + (1 << offset_bits_horiz) + ((1 << reduce_bits_horiz) >> 1); + const int32x4_t horiz_round_v = vdupq_n_s32(horiz_round); + int32_t ext_vert_offset = 1 << offset_bits_vert; + if (!conv_params->is_compound) { + const int res_sub_const = (1 << (bd - 1)) + (1 << bd); + ext_vert_offset -= res_sub_const << reduce_bits_vert; + } + const int32x4_t vert_offset_v = vdupq_n_s32(ext_vert_offset); + const int pixel_max = (1 << bd) - 1; + const int32x4_t px_max = vdupq_n_s32(pixel_max); + + for (int i = p_row; i < p_row + p_height; i += 4) { + for (int j = p_col; j < p_col + p_width; j += 4) { + if (use_warp_bd_box) { + int x_loc = j - p_col; + int y_loc = i - p_row; + int box_idx = (x_loc >> 3) + (y_loc >> 3) * warp_bd_box_mem_stride; + left_limit = warp_bd_box[box_idx].x0; + right_limit = warp_bd_box[box_idx].x1 - 1; + top_limit = warp_bd_box[box_idx].y0; + bottom_limit = warp_bd_box[box_idx].y1 - 1; + } + + const int32_t src_x = (j + 2) << subsampling_x; + const int32_t src_y = (i + 2) << subsampling_y; + const int64_t dst_x = + (int64_t)mat[2] * src_x + (int64_t)mat[3] * src_y + (int64_t)mat[0]; + const int64_t dst_y = + (int64_t)mat[4] * src_x + (int64_t)mat[5] * src_y + (int64_t)mat[1]; + const int64_t x4 = dst_x >> subsampling_x; + const int64_t y4 = dst_y >> subsampling_y; + + const int32_t ix4 = (int32_t)(x4 >> WARPEDMODEL_PREC_BITS); + int32_t sx4 = x4 & ((1 << WARPEDMODEL_PREC_BITS) - 1); + const int32_t iy4 = (int32_t)(y4 >> WARPEDMODEL_PREC_BITS); + int32_t sy4 = y4 & ((1 << WARPEDMODEL_PREC_BITS) - 1); + + // Horizontal filter: single filter for entire block. + const int offs_x = ROUND_POWER_OF_TWO(sx4, EXT_WARP_ROUND_BITS); + assert(offs_x >= 0 && offs_x <= EXT_WARP_PHASES); + const int16_t *coeffs_x = av2_ext_warped_filter[offs_x]; + + const int16x4_t fx_lo = vld1_s16(coeffs_x); + const int16x4_t fx_hi = vld1_s16(coeffs_x + 4); + + const int ext_horiz_in_bounds = + (ix4 - 4 >= left_limit) && (ix4 + 4 <= right_limit); + const int ext_vert_in_bounds = (iy4 - (taps_half + 1) >= top_limit) && + (iy4 + taps_half + 1 <= bottom_limit); + + // Keep intermediate rows in registers to avoid store/load round-trip. + int16x4_t im[9]; + + if (ext_horiz_in_bounds) { + for (int k = -(taps_half + 1); k < taps_half + 2; ++k) { + const int iy = ext_vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + const uint16_t *row = &ref[iy * stride + ix4 - 4]; + int16x8_t src_q = vreinterpretq_s16_u16(vld1q_u16(row)); + int16x4_t s_last = vreinterpret_s16_u16(vld1_u16(row + 5)); + int16x4_t s0 = vget_low_s16(src_q); + int16x4_t s1 = vget_low_s16(vextq_s16(src_q, src_q, 1)); + int16x4_t s2 = vget_low_s16(vextq_s16(src_q, src_q, 2)); + int16x4_t s3 = vget_low_s16(vextq_s16(src_q, src_q, 3)); + int16x4_t s4 = vget_high_s16(src_q); + int32x4_t acc = vmull_lane_s16(s0, fx_lo, 0); + acc = vmlal_lane_s16(acc, s1, fx_lo, 1); + acc = vmlal_lane_s16(acc, s2, fx_lo, 2); + acc = vmlal_lane_s16(acc, s3, fx_lo, 3); + acc = vmlal_lane_s16(acc, s4, fx_hi, 0); + acc = vmlal_lane_s16(acc, s_last, fx_hi, 1); + acc = vaddq_s32(acc, horiz_round_v); + acc = trunc_shift_s32(acc, reduce_bits_horiz); + im[k + (taps_half + 1)] = vmovn_s32(acc); + } + } else { + int16_t im_scalar[9 * 4]; + for (int k = -(taps_half + 1); k < taps_half + 2; ++k) { + const int iy = ext_vert_in_bounds + ? (iy4 + k) + : clamp(iy4 + k, top_limit, bottom_limit); + for (int l = -2; l < 2; ++l) { + int ix_base = ix4 + l - (taps_half - 1); + int16_t src_buf[8]; + for (int m = 0; m < taps; ++m) { + int sample_x = clamp(ix_base + m, left_limit, right_limit); + src_buf[m] = (int16_t)ref[iy * stride + sample_x]; + } + src_buf[6] = 0; + src_buf[7] = 0; + int16x4_t s0 = vld1_s16(src_buf); + int16x4_t s1 = vld1_s16(src_buf + 4); + int32x4_t prod = vmull_s16(s0, fx_lo); + prod = vmlal_s16(prod, s1, fx_hi); + int32x2_t sum2 = vadd_s32(vget_low_s32(prod), vget_high_s32(prod)); + sum2 = vpadd_s32(sum2, sum2); + int32_t sum = vget_lane_s32(sum2, 0) + horiz_round; + im_scalar[(k + (taps_half + 1)) * 4 + (l + 2)] = + (int16_t)(sum >> reduce_bits_horiz); + } + } + for (int idx = 0; idx < 9; ++idx) + im[idx] = vld1_s16(&im_scalar[idx * 4]); + } + + // Vertical filter: uniform filter, use register-resident intermediates. + const int offs_y = ROUND_POWER_OF_TWO(sy4, WARPEDDIFF_PREC_BITS); + assert(offs_y >= 0 && offs_y <= WARPEDPIXEL_PREC_SHIFTS); + const int16_t *coeffs_y = av2_ext_warped_filter[offs_y]; + const int16x4_t fy_lo = vld1_s16(coeffs_y); + const int16x4_t fy_hi = vld1_s16(coeffs_y + 4); + + for (int k = -2; k < AVMMIN(2, p_row + p_height - i - 2); ++k) { + const int rb = (k + 2); + int32x4_t acc = vmull_lane_s16(im[rb + 0], fy_lo, 0); + acc = vmlal_lane_s16(acc, im[rb + 1], fy_lo, 1); + acc = vmlal_lane_s16(acc, im[rb + 2], fy_lo, 2); + acc = vmlal_lane_s16(acc, im[rb + 3], fy_lo, 3); + acc = vmlal_lane_s16(acc, im[rb + 4], fy_hi, 0); + acc = vmlal_lane_s16(acc, im[rb + 5], fy_hi, 1); + acc = vaddq_s32(acc, vert_offset_v); + + if (conv_params->is_compound) { + CONV_BUF_TYPE *p = + &conv_params->dst[(i - p_row + k + 2) * conv_params->dst_stride + + (j - p_col)]; + acc = round_shift_s32(acc, reduce_bits_vert); + if (conv_params->do_average) { + uint16_t *dst16 = + &pred[(i - p_row + k + 2) * p_stride + (j - p_col)]; + int32x4_t p_vec = vreinterpretq_s32_u32(vmovl_u16(vld1_u16(p))); + if (use_wtd_comp_avg) { + p_vec = vmulq_n_s32(p_vec, conv_params->fwd_offset); + p_vec = vmlaq_n_s32(p_vec, acc, conv_params->bck_offset); + p_vec = vshrq_n_s32(p_vec, DIST_PRECISION_BITS); + } else { + p_vec = vhaddq_s32(p_vec, acc); + } + const int res_sub_const = + (1 << (offset_bits - conv_params->round_1)) + + (1 << (offset_bits - conv_params->round_1 - 1)); + p_vec = vsubq_s32(p_vec, vdupq_n_s32(res_sub_const)); + p_vec = round_shift_s32(p_vec, round_bits); + p_vec = vminq_s32(p_vec, px_max); + vst1_u16(dst16, vqmovun_s32(p_vec)); + } else { + vst1_u16(p, vqmovun_s32(acc)); + } + } else { + uint16_t *p_out = &pred[(i - p_row + k + 2) * p_stride + (j - p_col)]; + acc = round_shift_s32(acc, reduce_bits_vert); + acc = vminq_s32(acc, px_max); + vst1_u16(p_out, vqmovun_s32(acc)); + } + } + } + } +} diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index b57fddbd9b..fa092d2ede 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -405,10 +405,10 @@ () # WARPED_MOTION / GLOBAL_MOTION functions add_proto qw/void av2_highbd_warp_affine/, "const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta"; -specialize qw/av2_highbd_warp_affine sse4_1 avx2/; +specialize qw/av2_highbd_warp_affine sse4_1 avx2 neon/; add_proto qw/void av2_ext_highbd_warp_affine/, "const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int use_warp_bd_box, PadBlock *warp_bd_box"; -specialize qw/av2_ext_highbd_warp_affine sse4_1/; +specialize qw/av2_ext_highbd_warp_affine sse4_1 neon/; # CONVOLVE_ROUND/COMPOUND_ROUND functions diff --git a/test/warp_filter_test.cc b/test/warp_filter_test.cc index 3417b15b59..129c0a6e77 100644 --- a/test/warp_filter_test.cc +++ b/test/warp_filter_test.cc @@ -27,32 +27,59 @@ TEST_P(AV2HighbdWarpFilterTest, CheckOutput) { TEST_P(AV2HighbdWarpFilterTest, DISABLED_Speed) { RunSpeedTest(std::get<4>(GET_PARAM(0))); } +TEST_P(AV2HighbdWarpFilterTest, ExtremesAllZero) { + RunBoundaryCheck(std::get<4>(GET_PARAM(0)), 0); +} +TEST_P(AV2HighbdWarpFilterTest, ExtremesAllMax) { + RunBoundaryCheck(std::get<4>(GET_PARAM(0)), 1); +} +TEST_P(AV2HighbdWarpFilterTest, BitDepthMidpoint) { + RunBoundaryCheck(std::get<4>(GET_PARAM(0)), 2); +} -#if HAVE_SSE4_1 -INSTANTIATE_TEST_SUITE_P(SSE4_1, AV2HighbdWarpFilterTest, - libavm_test::AV2HighbdWarpFilter::BuildParams( - av2_highbd_warp_affine_sse4_1)); -#endif // HAVE_SSE4_1 TEST_P(AV2ExtHighbdWarpFilterTest, CheckOutput) { RunCheckOutput(::testing::get<4>(GET_PARAM(0))); } TEST_P(AV2ExtHighbdWarpFilterTest, DISABLED_Speed) { RunSpeedTest(::testing::get<4>(GET_PARAM(0))); } +TEST_P(AV2ExtHighbdWarpFilterTest, ExtremesAllZero) { + RunBoundaryCheck(::testing::get<4>(GET_PARAM(0)), 0); +} +TEST_P(AV2ExtHighbdWarpFilterTest, ExtremesAllMax) { + RunBoundaryCheck(::testing::get<4>(GET_PARAM(0)), 1); +} +TEST_P(AV2ExtHighbdWarpFilterTest, BitDepthMidpoint) { + RunBoundaryCheck(::testing::get<4>(GET_PARAM(0)), 2); +} + #if HAVE_SSE4_1 +INSTANTIATE_TEST_SUITE_P(SSE4_1, AV2HighbdWarpFilterTest, + libavm_test::AV2HighbdWarpFilter::BuildParams( + av2_highbd_warp_affine_sse4_1)); + INSTANTIATE_TEST_SUITE_P(SSE4_1, AV2ExtHighbdWarpFilterTest, libavm_test::AV2ExtHighbdWarpFilter::BuildParams( av2_ext_highbd_warp_affine_sse4_1)); #endif // HAVE_SSE4_1 -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2ExtHighbdWarpFilterTest); - #if HAVE_AVX2 INSTANTIATE_TEST_SUITE_P( AVX2, AV2HighbdWarpFilterTest, libavm_test::AV2HighbdWarpFilter::BuildParams(av2_highbd_warp_affine_avx2)); #endif // HAVE_AVX2 +#if HAVE_NEON +INSTANTIATE_TEST_SUITE_P( + NEON, AV2HighbdWarpFilterTest, + libavm_test::AV2HighbdWarpFilter::BuildParams(av2_highbd_warp_affine_neon)); + +INSTANTIATE_TEST_SUITE_P(NEON, AV2ExtHighbdWarpFilterTest, + libavm_test::AV2ExtHighbdWarpFilter::BuildParams( + av2_ext_highbd_warp_affine_neon)); +#endif // HAVE_NEON + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2HighbdWarpFilterTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2ExtHighbdWarpFilterTest); } // namespace diff --git a/test/warp_filter_test_util.cc b/test/warp_filter_test_util.cc index 4bed729a67..5a53e704be 100644 --- a/test/warp_filter_test_util.cc +++ b/test/warp_filter_test_util.cc @@ -94,6 +94,66 @@ void generate_warped_model(libavm_test::ACMRandom *rnd, int32_t *mat, } } +namespace { +template +void RunBoundaryCheckImpl(int out_w, int out_h, int bd, int is_alpha_zero, + int is_beta_zero, int is_gamma_zero, + int is_delta_zero, int mode, + libavm_test::ACMRandom *rnd, RefFn ref_fn, + TestFn test_fn) { + const int w = 128, h = 128; + const int border = 16; + const int stride = w + 2 * border; + const int mask = (1 << bd) - 1; + + int output_n = ((out_w + 7) & ~7) * out_h; + uint16_t *input_ = new uint16_t[h * stride]{}; + uint16_t *input = input_ + border; + uint16_t *output = new uint16_t[output_n]{}; + uint16_t *output2 = new uint16_t[output_n]{}; + int32_t mat[8]; + int16_t alpha, beta, gamma, delta; + + generate_warped_model(rnd, mat, &alpha, &beta, &gamma, &delta, is_alpha_zero, + is_beta_zero, is_gamma_zero, is_delta_zero); + + uint16_t fill_val = 0; + if (mode == 0) + fill_val = 0; + else if (mode == 1) + fill_val = mask; + else + fill_val = (1 << (bd - 1)); + + for (int r = 0; r < h; ++r) + for (int c = 0; c < w; ++c) input[r * stride + c] = fill_val; + for (int r = 0; r < h; ++r) { + for (int c = 0; c < border; ++c) { + input[r * stride - border + c] = fill_val; + input[r * stride + w + c] = fill_val; + } + } + + ConvolveParams conv_params = get_conv_params(0, 0, bd); + + ref_fn(mat, input, w, h, stride, output, out_w, out_h, bd, &conv_params, + alpha, beta, gamma, delta); + test_fn(mat, input, w, h, stride, output2, out_w, out_h, bd, &conv_params, + alpha, beta, gamma, delta); + + for (int j = 0; j < out_w * out_h; ++j) { + ASSERT_EQ(output[j], output2[j]) + << "mismatch at index " << j << " = (" << (j % out_w) << ", " + << (j / out_w) << ") w=" << out_w << " h=" << out_h << " bd=" << bd + << " mode=" << mode; + } + + delete[] input_; + delete[] output; + delete[] output2; +} +} // namespace + namespace AV2HighbdWarpFilter { ::testing::internal::ParamGenerator BuildParams( highbd_warp_affine_func filter) { @@ -260,9 +320,10 @@ void AV2HighbdWarpFilterTest::RunCheckOutput( conv_params.fwd_offset = quant_dist_lookup_table[jj][ii]; conv_params.bck_offset = quant_dist_lookup_table[jj][1 - ii]; } - test_impl(mat, input, w, h, stride, output2, p_col, p_row, out_w, - out_h, out_w, sub_x, sub_y, bd, &conv_params, alpha, - beta, gamma, delta); + ASM_REGISTER_STATE_CHECK( + test_impl(mat, input, w, h, stride, output2, p_col, p_row, + out_w, out_h, out_w, sub_x, sub_y, bd, &conv_params, + alpha, beta, gamma, delta)); if (use_no_round) { for (j = 0; j < out_w * out_h; ++j) @@ -294,6 +355,32 @@ void AV2HighbdWarpFilterTest::RunCheckOutput( delete[] dsta; delete[] dstb; } + +void AV2HighbdWarpFilterTest::RunBoundaryCheck( + highbd_warp_affine_func test_impl, int mode) { + HighbdWarpTestParam param = GET_PARAM(0); + const int out_w = std::get<0>(param), out_h = std::get<1>(param); + const int bd = std::get<3>(param); + RunBoundaryCheckImpl( + out_w, out_h, bd, GET_PARAM(1), GET_PARAM(2), GET_PARAM(3), GET_PARAM(4), + mode, &rnd_, + [](const int32_t *mat, const uint16_t *input, int w, int h, int stride, + uint16_t *output, int out_w, int out_h, int bd, + ConvolveParams *conv_params, int16_t alpha, int16_t beta, + int16_t gamma, int16_t delta) { + av2_highbd_warp_affine_c(mat, input, w, h, stride, output, 32, 32, + out_w, out_h, out_w, 0, 0, bd, conv_params, + alpha, beta, gamma, delta); + }, + [test_impl](const int32_t *mat, const uint16_t *input, int w, int h, + int stride, uint16_t *output, int out_w, int out_h, int bd, + ConvolveParams *conv_params, int16_t alpha, int16_t beta, + int16_t gamma, int16_t delta) { + ASM_REGISTER_STATE_CHECK( + test_impl(mat, input, w, h, stride, output, 32, 32, out_w, out_h, + out_w, 0, 0, bd, conv_params, alpha, beta, gamma, delta)); + }); +} } // namespace AV2HighbdWarpFilter namespace AV2ExtHighbdWarpFilter { @@ -451,8 +538,9 @@ void AV2ExtHighbdWarpFilterTest::RunCheckOutput( } conv_params.fwd_offset = quant_dist_lookup_table[ii][0]; conv_params.bck_offset = quant_dist_lookup_table[ii][1]; - test_impl(mat, input, w, h, stride, output2, 32, 32, out_w, out_h, - out_w, sub_x, sub_y, bd, &conv_params, 0, NULL); + ASM_REGISTER_STATE_CHECK(test_impl( + mat, input, w, h, stride, output2, 32, 32, out_w, out_h, out_w, + sub_x, sub_y, bd, &conv_params, 0, NULL)); if (use_no_round) { for (j = 0; j < out_w * out_h; ++j) @@ -480,5 +568,30 @@ void AV2ExtHighbdWarpFilterTest::RunCheckOutput( delete[] dsta; delete[] dstb; } + +void AV2ExtHighbdWarpFilterTest::RunBoundaryCheck( + ext_highbd_warp_affine_func test_impl, int mode) { + ExtHighbdWarpTestParam param = GET_PARAM(0); + const int out_w = ::testing::get<0>(param), out_h = ::testing::get<1>(param); + const int bd = ::testing::get<3>(param); + RunBoundaryCheckImpl( + out_w, out_h, bd, GET_PARAM(1), GET_PARAM(2), GET_PARAM(3), GET_PARAM(4), + mode, &rnd_, + [](const int32_t *mat, const uint16_t *input, int w, int h, int stride, + uint16_t *output, int out_w, int out_h, int bd, + ConvolveParams *conv_params, int16_t, int16_t, int16_t, int16_t) { + av2_ext_highbd_warp_affine_c(mat, input, w, h, stride, output, 32, 32, + out_w, out_h, out_w, 0, 0, bd, conv_params, + 0, NULL); + }, + [test_impl](const int32_t *mat, const uint16_t *input, int w, int h, + int stride, uint16_t *output, int out_w, int out_h, int bd, + ConvolveParams *conv_params, int16_t, int16_t, int16_t, + int16_t) { + ASM_REGISTER_STATE_CHECK(test_impl(mat, input, w, h, stride, output, 32, + 32, out_w, out_h, out_w, 0, 0, bd, + conv_params, 0, NULL)); + }); +} } // namespace AV2ExtHighbdWarpFilter } // namespace libavm_test diff --git a/test/warp_filter_test_util.h b/test/warp_filter_test_util.h index 5080add4d1..cb4ec8ca12 100644 --- a/test/warp_filter_test_util.h +++ b/test/warp_filter_test_util.h @@ -100,6 +100,7 @@ class AV2HighbdWarpFilterTest protected: void RunCheckOutput(highbd_warp_affine_func test_impl); void RunSpeedTest(highbd_warp_affine_func test_impl); + void RunBoundaryCheck(highbd_warp_affine_func test_impl, int mode); libavm_test::ACMRandom rnd_; }; @@ -132,6 +133,7 @@ class AV2ExtHighbdWarpFilterTest protected: void RunCheckOutput(ext_highbd_warp_affine_func test_impl); void RunSpeedTest(ext_highbd_warp_affine_func test_impl); + void RunBoundaryCheck(ext_highbd_warp_affine_func test_impl, int mode); libavm_test::ACMRandom rnd_; }; From 1633b4aff9c188ad2b32dfd0abf7837ef3d9a363 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Thu, 30 Jul 2026 17:18:22 -0700 Subject: [PATCH 027/205] Remove unneeded av2_get_chroma_format_idc() calls Some av2_get_chroma_format_idc() calls in av2/common/level.c and av2/common/timing.c can be omitted because the callers don't use the output argument chroma_format_idc. After these unneeded av2_get_chroma_format_idc() calls are removed, the subsampling_x, subsampling_y, monochrome parameters of some functions become unused and need to be removed. --- av2/common/level.c | 54 +++++++++--------------------------- av2/common/level.h | 2 -- av2/common/timing.c | 6 +--- av2/common/timing.h | 4 +-- av2/decoder/obu.c | 7 ++--- av2/encoder/encoder.c | 4 +-- av2/encoder/pass2_strategy.c | 3 +- av2/encoder/rc_utils.h | 4 +-- 8 files changed, 21 insertions(+), 63 deletions(-) diff --git a/av2/common/level.c b/av2/common/level.c index 8b8f2e2c65..8a0e2c9a73 100644 --- a/av2/common/level.c +++ b/av2/common/level.c @@ -498,8 +498,7 @@ static const char level_string[SEQ_LEVEL_MAX + 1][9] = { }; static double get_max_bitrate(const AV2LevelSpec *const level_spec, int tier, - BITSTREAM_PROFILE profile, int subsampling_x, - int subsampling_y, int monochrome, + BITSTREAM_PROFILE profile, double multistream_scalling_x) { if (level_spec->level < SEQ_LEVEL_4_0) tier = 0; const double scale = @@ -507,9 +506,6 @@ static double get_max_bitrate(const AV2LevelSpec *const level_spec, int tier, const double bitrate_basis = (tier ? level_spec->high_mbps / scale : level_spec->main_mbps / scale) * 1e6; - uint32_t chroma_format_idc = CHROMA_FORMAT_420; - av2_get_chroma_format_idc(subsampling_x, subsampling_y, monochrome, - &chroma_format_idc); const int profile_scaling_factor = get_profile_scaling_factor(profile); double bitrate_profile_factor = bitrate_profile_factor_table[profile_scaling_factor]; @@ -520,16 +516,11 @@ static double get_max_bitrate(const AV2LevelSpec *const level_spec, int tier, static double get_max_compressed_size(const AV2LevelSpec *const level_spec, int tier, BITSTREAM_PROFILE profile, int luma_sample_count, - double frame_parsing_time, - int subsampling_x, int subsampling_y, - int monochrome) { + double frame_parsing_time) { if (level_spec->level < SEQ_LEVEL_4_0) tier = 0; const double min_comp_basis = (tier ? level_spec->high_cr : level_spec->main_cr); - uint32_t chroma_format_idc = CHROMA_FORMAT_420; - av2_get_chroma_format_idc(subsampling_x, subsampling_y, monochrome, - &chroma_format_idc); const int profile_scaling_factor = get_profile_scaling_factor(profile); double picture_size_profile_factor = picture_size_profile_factor_table[profile_scaling_factor]; @@ -550,16 +541,11 @@ static double get_max_compressed_size(const AV2LevelSpec *const level_spec, static double get_max_frame_symbol_count(const AV2LevelSpec *const level_spec, int tier, BITSTREAM_PROFILE profile, double frame_parsing_time, - int subsampling_x, int subsampling_y, - int monochrome, double multi_stream_scaling_x) { if (level_spec->level < SEQ_LEVEL_4_0) tier = 0; const double min_comp_basis = (tier ? level_spec->high_cr : level_spec->main_cr); - uint32_t chroma_format_idc = CHROMA_FORMAT_420; - av2_get_chroma_format_idc(subsampling_x, subsampling_y, monochrome, - &chroma_format_idc); const int profile_scaling_factor = get_profile_scaling_factor(profile); double picture_size_profile_factor = picture_size_profile_factor_table[profile_scaling_factor]; @@ -572,12 +558,9 @@ static double get_max_frame_symbol_count(const AV2LevelSpec *const level_spec, double av2_get_max_bitrate_for_level(AV2_LEVEL level_index, int tier, BITSTREAM_PROFILE profile, - int subsampling_x, int subsampling_y, - int monochrome, double multi_stream_scaling_x) { assert(is_valid_seq_level_idx(level_index)); return get_max_bitrate(&av2_level_defs[level_index], tier, profile, - subsampling_x, subsampling_y, monochrome, multi_stream_scaling_x); } @@ -797,8 +780,7 @@ void av2_decoder_model_init(const AV2_COMP *const cpi, AV2_LEVEL level, const SequenceHeader *const seq_params = &cm->seq_params; decoder_model->bit_rate = get_max_bitrate( av2_level_defs + level, cpi->tier[op_index], seq_params->seq_profile_idc, - seq_params->subsampling_x, seq_params->subsampling_y, - seq_params->monochrome, cpi->level_params.multi_stream_scaling_x); + cpi->level_params.multi_stream_scaling_x); // TODO(huisu or anyone): implement SCHEDULE_MODE. decoder_model->mode = RESOURCE_MODE; @@ -941,18 +923,16 @@ static void av2_decoder_model_start_frame_decode( AV2_LEVEL level = decoder_model->level; - double compressed_size_limit = get_max_compressed_size( - av2_level_defs + level, cpi->tier[0], seq_params->seq_profile_idc, - luma_pic_size, dt, seq_params->subsampling_x, seq_params->subsampling_y, - seq_params->monochrome); + double compressed_size_limit = + get_max_compressed_size(av2_level_defs + level, cpi->tier[0], + seq_params->seq_profile_idc, luma_pic_size, dt); decoder_model->compressed_size_satisfy = decoder_model->compressed_size_satisfy && ((coded_bits >> 3) <= compressed_size_limit); double frame_symbol_count_limit = get_max_frame_symbol_count( av2_level_defs + level, cpi->tier[0], seq_params->seq_profile_idc, dt, - seq_params->subsampling_x, seq_params->subsampling_y, - seq_params->monochrome, multi_stream_scaling_x); + multi_stream_scaling_x); decoder_model->frame_symbol_count_satisfy = decoder_model->frame_symbol_count_satisfy && (cm->features.frame_symbol_count <= frame_symbol_count_limit); @@ -1281,7 +1261,7 @@ static void get_temporal_parallel_params(int scalability_mode_idc, static TARGET_LEVEL_FAIL_ID check_level_constraints( const AV2_COMP *const cpi, const AV2LevelInfo *const level_info, AV2_LEVEL level, int tier, int is_still_picture, BITSTREAM_PROFILE profile, - int check_bitrate, int subsampling_x, int subsampling_y, int monochrome) { + int check_bitrate) { const DECODER_MODEL *const decoder_model = &level_info->decoder_models[level]; const DECODER_MODEL_STATUS decoder_model_status = decoder_model->status; if (decoder_model_status != DECODER_MODEL_OK && @@ -1426,9 +1406,9 @@ static TARGET_LEVEL_FAIL_ID check_level_constraints( if (check_bitrate) { // Check average bitrate instead of max_bitrate. - const double bitrate_limit = get_max_bitrate( - target_level_spec, tier, profile, subsampling_x, subsampling_y, - monochrome, cpi->level_params.multi_stream_scaling_x); + const double bitrate_limit = + get_max_bitrate(target_level_spec, tier, profile, + cpi->level_params.multi_stream_scaling_x); const double avg_bitrate = level_stats->total_compressed_size * 8.0 / level_stats->total_time_encoded; if (avg_bitrate > bitrate_limit) { @@ -1604,11 +1584,7 @@ double av2_get_compression_ratio(const AV2_COMMON *const cm, const int luma_pic_size = upscaled_width * height; const SequenceHeader *const seq_params = &cm->seq_params; const BITSTREAM_PROFILE profile = seq_params->seq_profile_idc; - uint32_t chroma_format_idc = CHROMA_FORMAT_420; - av2_get_chroma_format_idc(cm->seq_params.subsampling_x, - cm->seq_params.subsampling_y, - cm->seq_params.monochrome, &chroma_format_idc); const int profile_scaling_factor = get_profile_scaling_factor(profile); const int picture_size_profile_factor = (int)picture_size_profile_factor_table[profile_scaling_factor]; @@ -1722,9 +1698,7 @@ void av2_update_level_info(AV2_COMP *cpi, size_t size, int64_t ts_start, assert(is_valid_seq_level_idx(target_level)); const int tier = cpi->tier[i]; const TARGET_LEVEL_FAIL_ID fail_id = check_level_constraints( - cpi, level_info, target_level, tier, is_still_picture, profile, 0, - cm->seq_params.subsampling_x, cm->seq_params.subsampling_y, - cm->seq_params.monochrome); + cpi, level_info, target_level, tier, is_still_picture, profile, 0); if (fail_id != TARGET_LEVEL_OK) { avm_internal_error(&cm->error, AVM_CODEC_ERROR, "Failed to encode to the target level %s. %s", @@ -1751,9 +1725,7 @@ avm_codec_err_t av2_get_seq_level_idx(const AV2_COMP *cpi, for (int level = 0; level < SEQ_LEVELS; ++level) { if (!is_valid_seq_level_idx(level)) continue; const TARGET_LEVEL_FAIL_ID fail_id = check_level_constraints( - cpi, level_info, level, tier, is_still_picture, profile, 1, - seq_params->subsampling_x, seq_params->subsampling_y, - seq_params->monochrome); + cpi, level_info, level, tier, is_still_picture, profile, 1); if (fail_id == TARGET_LEVEL_OK) { seq_level_idx[op] = level; break; diff --git a/av2/common/level.h b/av2/common/level.h index bdd907a082..caaa89f4a2 100644 --- a/av2/common/level.h +++ b/av2/common/level.h @@ -247,8 +247,6 @@ void av2_decoder_model_check_output_frame_for_operating_points( // Return max bitrate(bps) for given level. double av2_get_max_bitrate_for_level(AV2_LEVEL level_index, int tier, BITSTREAM_PROFILE profile, - int subsampling_x, int subsampling_y, - int monochrome, double multi_stream_scaling_x); // Get max number of tiles and tile columns for given level. diff --git a/av2/common/timing.c b/av2/common/timing.c index 93847a0ce7..88f17feab1 100644 --- a/av2/common/timing.c +++ b/av2/common/timing.c @@ -56,13 +56,9 @@ static int bitrate_profile_factor[1 << PROFILE_BITS] = { }; int64_t av2_max_level_bitrate(BITSTREAM_PROFILE seq_profile, int seq_level_idx, - int seq_tier, int subsampling_x, - int subsampling_y, int monochrome) { + int seq_tier) { int64_t bitrate; - uint32_t chroma_format_idc = CHROMA_FORMAT_420; - av2_get_chroma_format_idc(subsampling_x, subsampling_y, monochrome, - &chroma_format_idc); int profile_scaling_factor = get_profile_scaling_factor(seq_profile); if (seq_tier) { diff --git a/av2/common/timing.h b/av2/common/timing.h index 665f9996f6..51610b1e3d 100644 --- a/av2/common/timing.h +++ b/av2/common/timing.h @@ -48,8 +48,6 @@ void av2_set_resource_availability_parameters( avm_dec_model_op_parameters_t *op_params); int64_t av2_max_level_bitrate(BITSTREAM_PROFILE seq_profile_idc, - int seq_level_idx, int seq_tier, - int subsampling_x, int subsampling_y, - int monochrome); + int seq_level_idx, int seq_tier); #endif // AVM_AV2_COMMON_TIMING_H_ diff --git a/av2/decoder/obu.c b/av2/decoder/obu.c index 66ed285e97..7f2f0c2808 100644 --- a/av2/decoder/obu.c +++ b/av2/decoder/obu.c @@ -644,10 +644,9 @@ static uint32_t read_sequence_header_obu(AV2Decoder *pbi, int xlayer_id, } // Configurable profile does not define bitrate and buffer size constraints if (seq_params->seq_profile_idc != CONFIGURABLE) { - int64_t seq_bitrate = av2_max_level_bitrate( - seq_params->seq_profile_idc, seq_params->seq_max_level_idx, - seq_params->seq_tier, seq_params->subsampling_x, - seq_params->subsampling_y, seq_params->monochrome); + int64_t seq_bitrate = av2_max_level_bitrate(seq_params->seq_profile_idc, + seq_params->seq_max_level_idx, + seq_params->seq_tier); if (seq_bitrate == 0) avm_internal_error(&cm->error, AVM_CODEC_UNSUP_BITSTREAM, "AV2 does not support this combination of " diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index aa9c53fb8e..f82294e99e 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -413,9 +413,7 @@ static void set_bitstream_level_tier(AV2_COMP *cpi, AV2_COMMON *cm, int width, // Set the maximum parameters for bitrate and buffer size for this profile, // level, and tier seq_params->op_params[i].bitrate = av2_max_level_bitrate( - cm->seq_params.seq_profile_idc, cpi->level_idx[i], cpi->tier[i], - cm->seq_params.subsampling_x, cm->seq_params.subsampling_y, - cm->seq_params.monochrome); + cm->seq_params.seq_profile_idc, cpi->level_idx[i], cpi->tier[i]); // Level with seq_level_idx = 31 returns a high "dummy" bitrate to pass the // check if (seq_params->op_params[i].bitrate == 0) diff --git a/av2/encoder/pass2_strategy.c b/av2/encoder/pass2_strategy.c index 8418bffc07..0792038c80 100644 --- a/av2/encoder/pass2_strategy.c +++ b/av2/encoder/pass2_strategy.c @@ -793,8 +793,7 @@ static int adjust_boost_bits_for_target_level(const AV2_COMP *const cpi, const double level_bitrate_limit = av2_get_max_bitrate_for_level( target_level, seq_params->seq_tier, seq_params->seq_profile_idc, - seq_params->subsampling_x, seq_params->subsampling_y, - seq_params->monochrome, cpi->level_params.multi_stream_scaling_x); + cpi->level_params.multi_stream_scaling_x); const int target_bits_per_frame = (int)(level_bitrate_limit / cpi->framerate); if (frame_type == 0) { diff --git a/av2/encoder/rc_utils.h b/av2/encoder/rc_utils.h index 9d45209946..e07a0ef3d9 100644 --- a/av2/encoder/rc_utils.h +++ b/av2/encoder/rc_utils.h @@ -46,9 +46,7 @@ static AVM_INLINE void config_target_level(AV2_COMP *const cpi, // Adjust target bitrate to be no larger than 70% of level limit. const BITSTREAM_PROFILE profile = seq_params->seq_profile_idc; const double level_bitrate_limit = av2_get_max_bitrate_for_level( - target_level, tier, profile, seq_params->subsampling_x, - seq_params->subsampling_y, seq_params->monochrome, - cpi->level_params.multi_stream_scaling_x); + target_level, tier, profile, cpi->level_params.multi_stream_scaling_x); const int64_t max_bitrate = (int64_t)(level_bitrate_limit * 0.70); rc_cfg->target_bandwidth = AVMMIN(rc_cfg->target_bandwidth, max_bitrate); // Also need to update cpi->twopass.bits_left. From fa5e6f526b85aaf6f11451585b49d94fec7e8e37 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Thu, 30 Jul 2026 16:18:47 -0700 Subject: [PATCH 028/205] av2_get_chroma_format_idc: more monochrome checks In AV2, monochrome requires subsampling_x == 1 && subsampling_y == 1. (This somewhat arbitrary constraint comes from AV1.) Also check the return value of av2_get_chroma_format_idc() at a few call sites. --- av2/common/annexA.c | 8 +++++++- av2/common/av2_common_int.h | 6 +++++- av2/encoder/bitstream_fgm.c | 11 ++++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/av2/common/annexA.c b/av2/common/annexA.c index c358df374c..b9f9095631 100644 --- a/av2/common/annexA.c +++ b/av2/common/annexA.c @@ -192,7 +192,13 @@ int av2_check_profile_interop_conformance( avm_codec_err_t err = av2_get_chroma_format_idc( seq_params->subsampling_x, seq_params->subsampling_y, monochrome, &chroma_format_idc); - (void)err; + if (err != AVM_CODEC_OK) { + avm_internal_error( + error_info, + is_decoder ? AVM_CODEC_UNSUP_BITSTREAM : AVM_CODEC_INVALID_PARAM, + "Unsupported subsampling_x = %d, subsampling_y = %d.", + seq_params->subsampling_x, seq_params->subsampling_y); + } const int is_420 = (chroma_format_idc == CHROMA_FORMAT_420); const int is_422 = (chroma_format_idc == CHROMA_FORMAT_422); diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index 544b7800fe..e90a00f57b 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -3075,7 +3075,11 @@ static INLINE avm_codec_err_t av2_get_chroma_format_idc(int subsampling_x, int subsampling_y, int monochrome, uint32_t *seq_chroma_format_idc) { if (monochrome) { - *seq_chroma_format_idc = CHROMA_FORMAT_400; + if (subsampling_x == 1 && subsampling_y == 1) { + *seq_chroma_format_idc = CHROMA_FORMAT_400; + } else { + return AVM_CODEC_UNSUP_BITSTREAM; + } } else if (subsampling_x == 1 && subsampling_y == 1) { *seq_chroma_format_idc = CHROMA_FORMAT_420; } else if (subsampling_x == 1 && subsampling_y == 0) { diff --git a/av2/encoder/bitstream_fgm.c b/av2/encoder/bitstream_fgm.c index bb0aca1d0c..869710154c 100644 --- a/av2/encoder/bitstream_fgm.c +++ b/av2/encoder/bitstream_fgm.c @@ -175,9 +175,14 @@ int write_fgm_obu(AV2_COMP *cpi, struct film_grain_model *fgm, int fgm_bit_map = 1 << (fgm->fgm_id); avm_wb_write_literal(&wb, fgm_bit_map, MAX_FGM_NUM); uint32_t chroma_format_idc = CHROMA_FORMAT_420; - av2_get_chroma_format_idc(cm->seq_params.subsampling_x, - cm->seq_params.subsampling_y, - cm->seq_params.monochrome, &chroma_format_idc); + avm_codec_err_t err = av2_get_chroma_format_idc( + cm->seq_params.subsampling_x, cm->seq_params.subsampling_y, + cm->seq_params.monochrome, &chroma_format_idc); + if (err != AVM_CODEC_OK) { + avm_internal_error( + &cm->error, err, "Unsupported subsampling_x = %d, subsampling_y = %d.", + cm->seq_params.subsampling_x, cm->seq_params.subsampling_y); + } avm_wb_write_uvlc(&wb, chroma_format_idc); for (int fgm_pos = 0; fgm_pos < 1; fgm_pos++) { From 3c93d30ba7e50ce75fb6f1017d552bb7cf72ae74 Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Tue, 4 Aug 2026 16:04:00 -0700 Subject: [PATCH 029/205] Add 12-bit profile (Main_444C_12_IP2) (#5112) This PR enables the 12-bit profile by default and brings its implementation into conformance with AV2 Spec Draft with 12-bit support: https://github.com/AOMediaCodec/av2-spec-internal/pull/776. 1. Enable CONFIG_TESTONLY_12BIT_SUPPORT by default - Flips the 12-bit config default from 0 to 1 so 12-bit encode/decode is built in by default. (Superseded by the rename below; the flag is now CONFIG_12BIT_PROFILE.) 2. Align MAIN_4xx_12_IP2 profile with AV2 spec Annex A - Renames CONFIG_TESTONLY_12BIT_SUPPORT to CONFIG_12BIT_PROFILE, and the profile enum TEST_ONLY_12BIT_PROFILE to Main_444C_12_IP2 (spec Main_444C_12_IP2, seq_profile_idc = 5). - Accepts 8/10/12-bit and all chroma formats (4:0:0/4:2:0/4:2:2/4:4:4) for profile 5, per Table A.1 (previously 8/10-bit were rejected). - Sets the max embedded-layer count for profile 5 to 3, matching its IOP2 limit (Table A.3). - Gives profile 5 its own PicSize/Bitrate factor row (36 / 3.0) per Table A.2. - Updates the in-code Annex A profile/config tables (A.1/A.2/A.5/A.6) and comments, including the bit_depth_idc mapping. --- .github/workflows/build-job-reusable.yaml | 3 - .github/workflows/common-builds-reusable.yaml | 16 --- apps/avmenc.c | 6 +- av2/av2_cx_iface.c | 19 ++-- av2/common/annexA.c | 97 +++++++++++++------ av2/common/annexA.h | 6 +- av2/common/enums.h | 8 +- av2/common/level.c | 21 ++-- av2/common/quant_common.c | 6 +- av2/common/quant_common.h | 7 +- av2/common/timing.c | 18 ++-- av2/decoder/decodemv.c | 2 +- av2/encoder/aq_cyclicrefresh.c | 8 +- av2/encoder/encodeframe_utils.c | 2 +- av2/encoder/encoder.c | 6 +- av2/encoder/firstpass.c | 2 +- av2/encoder/ratectrl.c | 2 +- av2/encoder/rd.c | 14 +-- cmake/avm_config_defaults.cmake | 5 +- test/end_to_end_test.cc | 10 +- 20 files changed, 147 insertions(+), 111 deletions(-) diff --git a/.github/workflows/build-job-reusable.yaml b/.github/workflows/build-job-reusable.yaml index f005842f67..eb1d6626a4 100644 --- a/.github/workflows/build-job-reusable.yaml +++ b/.github/workflows/build-job-reusable.yaml @@ -125,9 +125,6 @@ jobs: bitstream-mismatch-debug) CMAKE_FLAGS="${CMAKE_FLAGS} -DCONFIG_BITSTREAM_DEBUG=1 -DCONFIG_MISMATCH_DEBUG=1" ;; - enable-12bit-profile) - CMAKE_FLAGS="${CMAKE_FLAGS} -DCONFIG_TESTONLY_12BIT_SUPPORT=1" - ;; nasm) CMAKE_FLAGS="${CMAKE_FLAGS} -DENABLE_NASM=1" ;; diff --git a/.github/workflows/common-builds-reusable.yaml b/.github/workflows/common-builds-reusable.yaml index 862eb5c8c1..3812d60635 100644 --- a/.github/workflows/common-builds-reusable.yaml +++ b/.github/workflows/common-builds-reusable.yaml @@ -70,7 +70,6 @@ jobs: - nasm - no-examples - debug - - enable-12bit-profile build-entropy-stats: name: Build (entropy-stats) @@ -105,21 +104,6 @@ jobs: avm-build-config: - bitstream-mismatch-debug - build-enable-12bit-profile: - name: Build (enable-12bit-profile) - uses: ./.github/workflows/build-job-reusable.yaml - if: (!cancelled()) - with: - avm-build-config: ${{ matrix.avm-build-config }} - parent-job-name: build-enable-12bit-profile - runner: ${{ inputs.runner }} - container-image: ${{ inputs.container-image }} - show-github-context: true - strategy: - matrix: - avm-build-config: - - enable-12bit-profile - build-x86-linux-gcc: name: Build (x86-linux-gcc) uses: ./.github/workflows/build-job-reusable.yaml diff --git a/apps/avmenc.c b/apps/avmenc.c index 05f2441dc0..435639dcb3 100644 --- a/apps/avmenc.c +++ b/apps/avmenc.c @@ -2159,12 +2159,12 @@ int main(int argc, const char **argv_) { } } -#if CONFIG_TESTONLY_12BIT_SUPPORT +#if CONFIG_12BIT_PROFILE if (stream->config.cfg.g_bit_depth > 10) { - stream->config.cfg.g_profile = TEST_ONLY_12BIT_PROFILE; + stream->config.cfg.g_profile = MAIN_444C_12_IP2; profile_updated = 1; } -#endif // CONFIG_TESTONLY_12BIT_SUPPORT +#endif // CONFIG_12BIT_PROFILE // Force encoder to use 16-bit pipeline for 8-bit video/image if (profile_updated && !global.quiet) { diff --git a/av2/av2_cx_iface.c b/av2/av2_cx_iface.c index 089fc9e154..06a08cb5ba 100644 --- a/av2/av2_cx_iface.c +++ b/av2/av2_cx_iface.c @@ -666,13 +666,13 @@ static avm_codec_err_t validate_config(avm_codec_alg_priv_t *ctx, RANGE_CHECK(cfg, g_timebase.num, 1, cfg->g_timebase.den); RANGE_CHECK_HI(cfg, g_profile, MAX_PROFILES - 1); -#if !CONFIG_TESTONLY_12BIT_SUPPORT +#if !CONFIG_12BIT_PROFILE RANGE_CHECK(cfg, g_bit_depth, AVM_BITS_8, AVM_BITS_10); RANGE_CHECK(cfg, g_input_bit_depth, AVM_BITS_8, AVM_BITS_10); #else RANGE_CHECK(cfg, g_bit_depth, AVM_BITS_8, AVM_BITS_12); RANGE_CHECK(cfg, g_input_bit_depth, AVM_BITS_8, AVM_BITS_12); -#endif // !CONFIG_TESTONLY_12BIT_SUPPORT +#endif // !CONFIG_12BIT_PROFILE const int min_quantizer = (-(int)(cfg->g_bit_depth - AVM_BITS_8) * MAXQ_OFFSET); @@ -860,10 +860,6 @@ static avm_codec_err_t validate_config(avm_codec_alg_priv_t *ctx, static avm_codec_err_t validate_img(avm_codec_alg_priv_t *ctx, const avm_image_t *img) { -#if CONFIG_TESTONLY_12BIT_SUPPORT - if (ctx->cfg.g_profile == TEST_ONLY_12BIT_PROFILE) return AVM_CODEC_OK; -#endif // CONFIG_TESTONLY_12BIT_SUPPORT - switch (img->fmt) { case AVM_IMG_FMT_YV12: case AVM_IMG_FMT_I420: @@ -871,15 +867,22 @@ static avm_codec_err_t validate_img(avm_codec_alg_priv_t *ctx, case AVM_IMG_FMT_I42016: break; case AVM_IMG_FMT_I444: case AVM_IMG_FMT_I44416: - // MAIN_444_10_IP1 is the only profile that support 444 + // MAIN_444_10_IP1 and MAIN_444C_12_IP2 are the profiles that support 444 if (ctx->cfg.g_profile != (unsigned int)MAIN_444_10_IP1 && +#if CONFIG_12BIT_PROFILE + ctx->cfg.g_profile != (unsigned int)MAIN_444C_12_IP2 && +#endif // CONFIG_12BIT_PROFILE !ctx->cfg.monochrome) { ERROR("Invalid image format. I444 images not supported in profile."); } break; case AVM_IMG_FMT_I422: case AVM_IMG_FMT_I42216: - if (ctx->cfg.g_profile != (unsigned int)MAIN_422_10_IP1) { + if (ctx->cfg.g_profile != (unsigned int)MAIN_422_10_IP1 +#if CONFIG_12BIT_PROFILE + && ctx->cfg.g_profile != (unsigned int)MAIN_444C_12_IP2 +#endif // CONFIG_12BIT_PROFILE + ) { ERROR("Invalid image format. I422 images not supported in profile."); } break; diff --git a/av2/common/annexA.c b/av2/common/annexA.c index b9f9095631..d23b3447c4 100644 --- a/av2/common/annexA.c +++ b/av2/common/annexA.c @@ -27,7 +27,8 @@ * 0 | C_Main_420_10 | Main | 8, 10 | 4:0:0, 4:2:0 * 1 | C_Main_422_10 | Main | 8, 10 | 4:0:0, 4:2:0, 4:2:2 * 2 | C_Main_444_10 | Main | 8, 10 | 4:0:0, 4:2:0, 4:4:4 - * 3-63 | Reserved | - | - | + * 3 | C_Main_444C_12 | Main | 8, 10, 12 | 4:0:0, 4:2:0, 4:2:2, 4:4:4 + * 4-63 | Reserved | - | - | * * Notes: * - ConfigurationID: Identifies the multi-sequence configuration (6-bit value) @@ -37,9 +38,10 @@ /* clang-format on */ typedef enum { - C_MAIN_420_10 = 0, // Main toolset, 8/10-bit, 4:0:0/4:2:0 - C_MAIN_422_10 = 1, // Main toolset, 8/10-bit, 4:0:0/4:2:0/4:2:2 - C_MAIN_444_10 = 2, // Main toolset, 8/10-bit, 4:0:0/4:2:0/4:4:4 + C_MAIN_420_10 = 0, // Main toolset, 8/10-bit, 4:0:0/4:2:0 + C_MAIN_422_10 = 1, // Main toolset, 8/10-bit, 4:0:0/4:2:0/4:2:2 + C_MAIN_444_10 = 2, // Main toolset, 8/10-bit, 4:0:0/4:2:0/4:4:4 + C_MAIN_444C_12 = 3, // Main toolset, 8/10/12-bit, 4:0:0/4:2:0/4:2:2/4:4:4 } AV2_CONFIGURATION_LABEL; /* clang-format off */ @@ -49,9 +51,18 @@ typedef enum { //=========================================================================== * Configuration Label | seq_profile_idc | chroma_format_idc | bit_depth_idc * ------------------------|----------------------|-------------------------|--------------- - * C_Main_420_10 | 0..2, 31 | 0 or 1 | 0 or 1 - * C_Main_422_10 | 0..3, 31 | 0, 1, 3 | 0 or 1 - * C_Main_444_10 | 0..2, 4, 31 | 0, 1, 2 | 0 or 1 + * C_Main_420_10 | 0..2, 31 | CHROMA_FORMAT_400, | 0 or 1 + * | | CHROMA_FORMAT_420 | + * C_Main_422_10 | 0..3, 31 | CHROMA_FORMAT_400, | 0 or 1 + * | | CHROMA_FORMAT_420, | + * | | CHROMA_FORMAT_422 | + * C_Main_444_10 | 0..2, 4, 31 | CHROMA_FORMAT_400, | 0 or 1 + * | | CHROMA_FORMAT_420, | + * | | CHROMA_FORMAT_444 | + * C_Main_444C_12 | 0..5, 31 | CHROMA_FORMAT_400, | 0..2 + * | | CHROMA_FORMAT_420, | + * | | CHROMA_FORMAT_422, | + * | | CHROMA_FORMAT_444 | * * Notes: * - seq_profile_idc: Allowed profile values @@ -82,14 +93,10 @@ typedef enum { } INTEROP_POINTS; static const int seq_profile_max_mlayer_cnt[MAX_PROFILES] = { - 1, - 2, + 1, 2, 3, 2, 2, +#if CONFIG_12BIT_PROFILE 3, - 2, - 2, -#if CONFIG_TESTONLY_12BIT_SUPPORT - MAX_NUM_MLAYERS, -#endif // CONFIG_TESTONLY_12BIT_SUPPORT +#endif // CONFIG_12BIT_PROFILE }; /* clang-format off */ @@ -117,7 +124,12 @@ static const int seq_profile_max_mlayer_cnt[MAX_PROFILES] = { * CHROMA_FORMAT_420 * CHROMA_FORMAT_444 * --------------------------------------------------------------------------------------------------------------------- - * Reserved 5-30 + * Main_444C_12_IP2 5 CHROMA_FORMAT_400 0, 1, or 2 2 + * CHROMA_FORMAT_420 + * CHROMA_FORMAT_422 + * CHROMA_FORMAT_444 + * --------------------------------------------------------------------------------------------------------------------- + * Reserved 6-30 * --------------------------------------------------------------------------------------------------------------------- * Configurable 31 CHROMA_FORMAT_400 0 or 1 - * CHROMA_FORMAT_420 @@ -143,11 +155,19 @@ static INLINE int av2_get_max_mlayer_cnt_from_profile(int seq_profile_idc) { return seq_profile_max_mlayer_cnt[seq_profile_idc]; } -static int check_bit_depth_8_10(int bit_depth) { - if (bit_depth != AVM_BITS_8 && bit_depth != AVM_BITS_10) { - return 0; +static int check_bit_depth(int bit_depth, BITSTREAM_PROFILE profile) { + (void)profile; + // All profiles support 8-bit and 10-bit. Profile MAIN_444C_12_IP2 + // additionally supports 12-bit. + if (bit_depth == AVM_BITS_8 || bit_depth == AVM_BITS_10) { + return 1; } - return 1; +#if CONFIG_12BIT_PROFILE + if (profile == MAIN_444C_12_IP2 && bit_depth == AVM_BITS_12) { + return 1; + } +#endif // CONFIG_12BIT_PROFILE + return 0; } static avm_codec_err_t check_chroma_format(int monochrome, int is_420, @@ -184,10 +204,6 @@ int av2_check_profile_interop_conformance( const uint8_t monochrome = seq_params->monochrome; const int seq_max_mcount = seq_params->seq_max_mlayer_cnt; -#if CONFIG_TESTONLY_12BIT_SUPPORT - if (profile == TEST_ONLY_12BIT_PROFILE && bit_depth == AVM_BITS_12) return 1; -#endif // CONFIG_TESTONLY_12BIT_SUPPORT - uint32_t chroma_format_idc = CHROMA_FORMAT_420; avm_codec_err_t err = av2_get_chroma_format_idc( seq_params->subsampling_x, seq_params->subsampling_y, monochrome, @@ -204,8 +220,7 @@ int av2_check_profile_interop_conformance( const int is_422 = (chroma_format_idc == CHROMA_FORMAT_422); const int is_444 = (chroma_format_idc == CHROMA_FORMAT_444); - // All profiles support 8-bit and 10-bit only - int is_valid_bit_depth = check_bit_depth_8_10(bit_depth); + int is_valid_bit_depth = check_bit_depth(bit_depth, profile); if (!is_valid_bit_depth) { return 0; } @@ -255,14 +270,20 @@ int av2_check_profile_interop_conformance( (int)profile); } break; +#if CONFIG_12BIT_PROFILE + case MAIN_444C_12_IP2: + // Supports all chroma formats (4:0:0/4:2:0/4:2:2/4:4:4) at 8/10/12-bit + break; +#endif // CONFIG_12BIT_PROFILE case CONFIGURABLE: { // Supports all chroma formats } break; default: - // Profile 5+ - reserved/unsupported + // Reserved/unsupported return 0; } - // Check if Max mlayer count is valid for IP profiles (seq_profile_idc <=2) + // Check that the max mlayer count is within the profile's interoperability + // point limit err = check_mlayer_count(profile, seq_max_mcount); if (err != AVM_CODEC_OK) { avm_internal_error( @@ -287,12 +308,26 @@ int av2_check_profile_interop_conformance( * ------------------------------------------------------------------------------------------------------------------ * 4 | 2 | 30 | 2.5 | * ------------------------------------------------------------------------------------------------------------------ + * 5 | 2 | 36 | 3.0 | + * ------------------------------------------------------------------------------------------------------------------ * 31 | - | - | - | * ------------------------------------------------------------------------------------------------------------------ */ /* clang-format on */ -int get_profile_scaling_factor(int seq_profile_idc) { +// Returns the row index used to look up a profile's factors in the +// PicSize/Bitrate factor tables (see bitrate_profile_factor_table[] and +// picture_size_profile_factor_table[] in level.c, and bitrate_profile_factor[] +// in timing.c). +// +// NOTE: This is a table row index, NOT the spec's ProfileScalingFactor from +// Table A.2. The two coincide for profiles 0..4 (0, 0, 0, 1, 2), but profile +// MAIN_444C_12_IP2 (idc 5) has spec ProfileScalingFactor 2 -- the same as +// profile MAIN_444_10_IP1 (idc 4) -- while requiring DIFFERENT PicSize and +// Bitrate factors (36 / 3.0 vs 30 / 2.5). Since one ProfileScalingFactor value +// cannot select two different factor rows, profile 5 is given its own row +// index (3) here. +int get_profile_factor_table_row_index(int seq_profile_idc) { if (seq_profile_idc == MAIN_420_10_IP0 || seq_profile_idc == MAIN_420_10_IP1 || seq_profile_idc == MAIN_420_10_IP2) { @@ -307,6 +342,12 @@ int get_profile_scaling_factor(int seq_profile_idc) { return 2; } +#if CONFIG_12BIT_PROFILE + if (seq_profile_idc == MAIN_444C_12_IP2) { + return 3; + } +#endif // CONFIG_12BIT_PROFILE + // Default for invalid combinations and Configurable profile return 0; } diff --git a/av2/common/annexA.h b/av2/common/annexA.h index f6ea4601ab..3b0b5fe4f0 100644 --- a/av2/common/annexA.h +++ b/av2/common/annexA.h @@ -46,8 +46,10 @@ int av2_check_profile_interop_conformance( //========================================== // Profile Scaling and Bitrate Functions //=========================================== -// Gets profile scaling factor CWG-G004 -int get_profile_scaling_factor(int seq_profile_idc); +// Gets the row index for a profile's PicSize/Bitrate factors (Table A.2, +// CWG-G004). See the definition in annexA.c for why this is not the spec's +// ProfileScalingFactor. +int get_profile_factor_table_row_index(int seq_profile_idc); #ifdef __cplusplus } // extern "C" diff --git a/av2/common/enums.h b/av2/common/enums.h index 8e92b46260..7aaee8f46a 100644 --- a/av2/common/enums.h +++ b/av2/common/enums.h @@ -273,10 +273,10 @@ enum { MAIN_420_10_IP2 = 2, MAIN_422_10_IP1 = 3, MAIN_444_10_IP1 = 4, -#if CONFIG_TESTONLY_12BIT_SUPPORT - // Fake profile value only for testing 12-bit. Not defined in AV2 spec. - TEST_ONLY_12BIT_PROFILE, -#endif // CONFIG_TESTONLY_12BIT_SUPPORT +#if CONFIG_12BIT_PROFILE + // 12-bit profile: all chroma formats (4:0:0/4:2:0/4:2:2/4:4:4), IP2 + MAIN_444C_12_IP2 = 5, +#endif // CONFIG_12BIT_PROFILE RESERVED_PROFILES_START, CONFIGURABLE = 31, MAX_PROFILES, diff --git a/av2/common/level.c b/av2/common/level.c index 8a0e2c9a73..fd0394bc9c 100644 --- a/av2/common/level.c +++ b/av2/common/level.c @@ -485,8 +485,9 @@ static const char *level_fail_messages[TARGET_LEVEL_FAIL_IDS] = { "The presentation interval is too small.", }; -static const double bitrate_profile_factor_table[] = { 1.0, 1.667, 2.5 }; -static const double picture_size_profile_factor_table[] = { 15.0, 20.0, 30.0 }; +static const double bitrate_profile_factor_table[] = { 1.0, 1.667, 2.5, 3.0 }; +static const double picture_size_profile_factor_table[] = { 15.0, 20.0, 30.0, + 36.0 }; static const char level_string[SEQ_LEVEL_MAX + 1][9] = { "2.0", "2.1", "3.0", "3.1", "4.0", "4.1", @@ -506,9 +507,9 @@ static double get_max_bitrate(const AV2LevelSpec *const level_spec, int tier, const double bitrate_basis = (tier ? level_spec->high_mbps / scale : level_spec->main_mbps / scale) * 1e6; - const int profile_scaling_factor = get_profile_scaling_factor(profile); + const int profile_factor_row = get_profile_factor_table_row_index(profile); double bitrate_profile_factor = - bitrate_profile_factor_table[profile_scaling_factor]; + bitrate_profile_factor_table[profile_factor_row]; return bitrate_basis * bitrate_profile_factor; } @@ -521,9 +522,9 @@ static double get_max_compressed_size(const AV2LevelSpec *const level_spec, const double min_comp_basis = (tier ? level_spec->high_cr : level_spec->main_cr); - const int profile_scaling_factor = get_profile_scaling_factor(profile); + const int profile_factor_row = get_profile_factor_table_row_index(profile); double picture_size_profile_factor = - picture_size_profile_factor_table[profile_scaling_factor]; + picture_size_profile_factor_table[profile_factor_row]; double max_compressed_size = ((long long)(frame_parsing_time * level_spec->max_decode_rate * @@ -546,9 +547,9 @@ static double get_max_frame_symbol_count(const AV2LevelSpec *const level_spec, const double min_comp_basis = (tier ? level_spec->high_cr : level_spec->main_cr); - const int profile_scaling_factor = get_profile_scaling_factor(profile); + const int profile_factor_row = get_profile_factor_table_row_index(profile); double picture_size_profile_factor = - picture_size_profile_factor_table[profile_scaling_factor]; + picture_size_profile_factor_table[profile_factor_row]; double scale = multi_stream_scaling_x == 0 ? 1 : multi_stream_scaling_x; double max_frame_symbol_count = frame_parsing_time * (level_spec->max_decode_rate / scale) * @@ -1585,9 +1586,9 @@ double av2_get_compression_ratio(const AV2_COMMON *const cm, const SequenceHeader *const seq_params = &cm->seq_params; const BITSTREAM_PROFILE profile = seq_params->seq_profile_idc; - const int profile_scaling_factor = get_profile_scaling_factor(profile); + const int profile_factor_row = get_profile_factor_table_row_index(profile); const int picture_size_profile_factor = - (int)picture_size_profile_factor_table[profile_scaling_factor]; + (int)picture_size_profile_factor_table[profile_factor_row]; encoded_frame_size = (encoded_frame_size > 129 ? encoded_frame_size - 128 : 1); const size_t uncompressed_frame_size = diff --git a/av2/common/quant_common.c b/av2/common/quant_common.c index d74a5cdf4c..ed86343ca7 100644 --- a/av2/common/quant_common.c +++ b/av2/common/quant_common.c @@ -101,7 +101,7 @@ int av2_q_clamped(int qindex, int delta, int base_dc_delta_q, q_clamped = clamp(qindex + base_dc_delta_q + delta, 1, bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); return q_clamped; } // Add the deltaq offset value @@ -145,7 +145,7 @@ static int32_t get_q(int qindex, int delta, avm_bit_depth_t bit_depth) { const int q_clamped = clamp(qindex + delta, 1, bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); return qlookup(q_clamped); } @@ -168,7 +168,7 @@ int av2_get_qindex(const struct segmentation *seg, int segment_id, return clamp(seg_qindex, 0, bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); } else { return base_qindex; } diff --git a/av2/common/quant_common.h b/av2/common/quant_common.h index 47648ad8b4..9fe5b0e15b 100644 --- a/av2/common/quant_common.h +++ b/av2/common/quant_common.h @@ -34,11 +34,14 @@ extern "C" { #define QINDEX_BITS_UNEXT 8 #define MAXQ_8_BITS 255 #define MAXQ_OFFSET 24 -#define MAXQ (255 + 4 * MAXQ_OFFSET) -#define MAXQ_10_BITS (255 + 2 * MAXQ_OFFSET) +#define MAXQ_10_BITS (MAXQ_8_BITS + 2 * MAXQ_OFFSET) +#define MAXQ_12_BITS (MAXQ_8_BITS + 4 * MAXQ_OFFSET) +// Maximum quantizer irrespective of the bit depth (spec: MAXQ_BITS). +#define MAXQ MAXQ_12_BITS #define QINDEX_RANGE (MAXQ - MINQ + 1) #define QINDEX_RANGE_8_BITS (MAXQ_8_BITS - MINQ + 1) #define QINDEX_RANGE_10_BITS (MAXQ_10_BITS - MINQ + 1) +#define QINDEX_RANGE_12_BITS (MAXQ_12_BITS - MINQ + 1) // Total number of QM sets stored #define QM_LEVEL_BITS 4 diff --git a/av2/common/timing.c b/av2/common/timing.c index 88f17feab1..f852ba1977 100644 --- a/av2/common/timing.c +++ b/av2/common/timing.c @@ -50,23 +50,27 @@ static int32_t high_kbps[1 << LEVEL_BITS] = { UNDEFINED_RATE, UNDEFINED_RATE, UNDEFINED_RATE, UNDEFINED_RATE }; -/* BitrateProfileFactor */ +/* BitrateProfileFactor, indexed by the profile's factor table row + * (see get_profile_factor_table_row_index() in annexA.c). + * A zero entry indicates an unsupported profile. */ static int bitrate_profile_factor[1 << PROFILE_BITS] = { - 1, 2, 3, 0, 0, 0, 0, 0 + 1, 2, 3, 3, 0, 0, 0, 0 }; +// Callers treat a zero bitrate as "profile, level, and tier combination not +// supported". int64_t av2_max_level_bitrate(BITSTREAM_PROFILE seq_profile, int seq_level_idx, int seq_tier) { int64_t bitrate; - int profile_scaling_factor = get_profile_scaling_factor(seq_profile); + int profile_factor_row = get_profile_factor_table_row_index(seq_profile); if (seq_tier) { - bitrate = high_kbps[seq_level_idx] * - bitrate_profile_factor[profile_scaling_factor]; + bitrate = + high_kbps[seq_level_idx] * bitrate_profile_factor[profile_factor_row]; } else { - bitrate = main_kbps[seq_level_idx] * - bitrate_profile_factor[profile_scaling_factor]; + bitrate = + main_kbps[seq_level_idx] * bitrate_profile_factor[profile_factor_row]; } return bitrate * 1000; diff --git a/av2/decoder/decodemv.c b/av2/decoder/decodemv.c index 4df0d8b7a4..03dc9055e3 100644 --- a/av2/decoder/decodemv.c +++ b/av2/decoder/decodemv.c @@ -1499,7 +1499,7 @@ static void read_delta_q_params(AV2_COMMON *const cm, MACROBLOCKD *const xd, clamp(xd->current_base_qindex, 1, cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); } } diff --git a/av2/encoder/aq_cyclicrefresh.c b/av2/encoder/aq_cyclicrefresh.c index 4c9eae0f6b..b94a0e90e7 100644 --- a/av2/encoder/aq_cyclicrefresh.c +++ b/av2/encoder/aq_cyclicrefresh.c @@ -43,10 +43,10 @@ CYCLIC_REFRESH *av2_cyclic_refresh_alloc(int mi_rows, int mi_cols, assert(bit_depth == AVM_BITS_8 ? (MAXQ_8_BITS <= (QINDEX_RANGE_8_BITS - 1)) : bit_depth == AVM_BITS_10 ? (MAXQ_10_BITS <= (QINDEX_RANGE_10_BITS - 1)) - : (MAXQ <= (QINDEX_RANGE - 1))); + : (MAXQ_12_BITS <= (QINDEX_RANGE_12_BITS - 1))); const uint16_t qinit = bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ; + : MAXQ_12_BITS; for (int i = 0; i < mi_rows * mi_cols; ++i) cr->last_coded_q_map[i] = qinit; cr->avg_frame_low_motion = 0.0; @@ -430,7 +430,7 @@ void av2_cyclic_refresh_setup(AV2_COMP *const cpi) { cr->last_coded_q_map[i] = cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ; + : MAXQ_12_BITS; cr->sb_index = 0; } @@ -480,7 +480,7 @@ void av2_cyclic_refresh_setup(AV2_COMP *const cpi) { 0, cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); cr->rdmult = av2_compute_rd_mult(cpi, qindex2); diff --git a/av2/encoder/encodeframe_utils.c b/av2/encoder/encodeframe_utils.c index 3fa33cabdc..64df5e5c7d 100644 --- a/av2/encoder/encodeframe_utils.c +++ b/av2/encoder/encodeframe_utils.c @@ -1080,7 +1080,7 @@ int av2_get_q_for_deltaq_objective(AV2_COMP *const cpi, BLOCK_SIZE bsize, qindex = AVMMIN(qindex, cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); qindex = AVMMAX(qindex, MINQ); return qindex; diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index f82294e99e..e0d0376d4d 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1028,11 +1028,11 @@ static void init_config(struct AV2_COMP *cpi, AV2EncoderConfig *oxcf) { } else if (seq_params->seq_profile_idc == MAIN_444_10_IP1) { seq_params->subsampling_x = 0; seq_params->subsampling_y = 0; -#if CONFIG_TESTONLY_12BIT_SUPPORT - } else if (seq_params->seq_profile_idc == TEST_ONLY_12BIT_PROFILE) { +#if CONFIG_12BIT_PROFILE + } else if (seq_params->seq_profile_idc == MAIN_444C_12_IP2) { seq_params->subsampling_x = oxcf->input_cfg.chroma_subsampling_x; seq_params->subsampling_y = oxcf->input_cfg.chroma_subsampling_y; -#endif // CONFIG_TESTONLY_12BIT_SUPPORT +#endif // CONFIG_12BIT_PROFILE } else { assert(0 && "Invalid seq_params->seq_profile_idc"); } diff --git a/av2/encoder/firstpass.c b/av2/encoder/firstpass.c index 2e5762fbf4..475d70c939 100644 --- a/av2/encoder/firstpass.c +++ b/av2/encoder/firstpass.c @@ -273,7 +273,7 @@ static int find_fp_qindex(avm_bit_depth_t bit_depth) { return av2_find_qindex(FIRST_PASS_Q, bit_depth, 0, bit_depth == AVM_BITS_8 ? QINDEX_RANGE_8_BITS - 1 : bit_depth == AVM_BITS_10 ? QINDEX_RANGE_10_BITS - 1 - : QINDEX_RANGE - 1); + : QINDEX_RANGE_12_BITS - 1); } static double raw_motion_error_stdev(int *raw_motion_err_list, diff --git a/av2/encoder/ratectrl.c b/av2/encoder/ratectrl.c index a3581edfb6..6e580daedf 100644 --- a/av2/encoder/ratectrl.c +++ b/av2/encoder/ratectrl.c @@ -1080,7 +1080,7 @@ static int apply_tcq_qp_offset(const AV2_COMP *cpi, int qp_tcq) { } int max_qp = bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ; + : MAXQ_12_BITS; return clamp(qp_tcq + tcq_qp_offset_shift, 0, max_qp); } diff --git a/av2/encoder/rd.c b/av2/encoder/rd.c index 69e5356e21..6fc74a995c 100644 --- a/av2/encoder/rd.c +++ b/av2/encoder/rd.c @@ -646,7 +646,7 @@ static void init_me_luts_bd(int *bit16lut, int range, void av2_init_me_luts(void) { init_me_luts_bd(sad_per_bit_lut_8, QINDEX_RANGE_8_BITS, AVM_BITS_8); init_me_luts_bd(sad_per_bit_lut_10, QINDEX_RANGE_10_BITS, AVM_BITS_10); - init_me_luts_bd(sad_per_bit_lut_12, QINDEX_RANGE, AVM_BITS_12); + init_me_luts_bd(sad_per_bit_lut_12, QINDEX_RANGE_12_BITS, AVM_BITS_12); } static const int rd_boost_factor[16] = { 64, 32, 32, 32, 24, 16, 12, 12, @@ -700,6 +700,10 @@ int av2_get_deltaq_offset(const AV2_COMP *cpi, int qindex, double beta) { cpi->common.seq_params.bit_depth); int newq = (int)rint(q / sqrt(beta)); int orig_qindex = qindex; + const int max_qindex = + cpi->common.seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS + : cpi->common.seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS + : MAXQ_12_BITS; if (newq < q) { do { qindex--; @@ -711,11 +715,7 @@ int av2_get_deltaq_offset(const AV2_COMP *cpi, int qindex, double beta) { qindex++; q = av2_dc_quant_QTX(qindex, 0, cpi->common.seq_params.base_y_dc_delta_q, cpi->common.seq_params.bit_depth); - } while (newq > q && - (qindex < - (cpi->common.seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cpi->common.seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ))); + } while (newq > q && qindex < max_qindex); } return qindex - orig_qindex; } @@ -814,7 +814,7 @@ static void set_block_thresholds(const AV2_COMMON *cm, RD_OPT *rd) { 0, cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ); + : MAXQ_12_BITS); const int q = compute_rd_thresh_factor( qindex, cm->seq_params.base_y_dc_delta_q, cm->seq_params.bit_depth); diff --git a/cmake/avm_config_defaults.cmake b/cmake/avm_config_defaults.cmake index 395f9ae210..1a8dcedd14 100644 --- a/cmake/avm_config_defaults.cmake +++ b/cmake/avm_config_defaults.cmake @@ -108,8 +108,9 @@ set_avm_config_var(DECODE_WIDTH_LIMIT 0 "Set limit for decode width.") set_avm_config_var(CONFIG_TUNE_VMAF 0 "Enable encoding tuning for VMAF.") # 12 - bit support. -set_avm_config_var(CONFIG_TESTONLY_12BIT_SUPPORT 0 - "Enables 12-bit test-only profile not yet supported in AV2.") +set_avm_config_var( + CONFIG_12BIT_PROFILE 1 + "Enables the 12-bit profile (Main_444C_12_IP2) from AV2 Annex A.") # AV2 experiment flags. set_avm_config_var(CONFIG_SPEED_STATS 0 "AV2 experiment flag.") diff --git a/test/end_to_end_test.cc b/test/end_to_end_test.cc index 2230e81e19..4d127561f9 100644 --- a/test/end_to_end_test.cc +++ b/test/end_to_end_test.cc @@ -76,14 +76,14 @@ const TestVideoParam kTestVectors[] = { MAIN_422_10_IP1 }, { "park_joy_90p_10_444.y4m", 10, AVM_IMG_FMT_I44416, AVM_BITS_10, MAIN_444_10_IP1 }, -#if CONFIG_TESTONLY_12BIT_SUPPORT +#if CONFIG_12BIT_PROFILE { "park_joy_90p_12_420.y4m", 12, AVM_IMG_FMT_I42016, AVM_BITS_12, - TEST_ONLY_12BIT_PROFILE }, + MAIN_444C_12_IP2 }, { "park_joy_90p_12_422.y4m", 12, AVM_IMG_FMT_I42216, AVM_BITS_12, - TEST_ONLY_12BIT_PROFILE }, + MAIN_444C_12_IP2 }, { "park_joy_90p_12_444.y4m", 12, AVM_IMG_FMT_I44416, AVM_BITS_12, - TEST_ONLY_12BIT_PROFILE }, -#endif // CONFIG_TESTONLY_12BIT_SUPPORT + MAIN_444C_12_IP2 }, +#endif // CONFIG_12BIT_PROFILE }; // Encoding modes tested From 7a4706b3cbda89eedf0dd2895fc4eff2560b584f Mon Sep 17 00:00:00 2001 From: Andrey Norkin <40504168+andrey-norkin@users.noreply.github.com> Date: Tue, 4 Aug 2026 16:08:07 -0700 Subject: [PATCH 030/205] Fix for timing info rounding due to integer division (#5201) Fixing issue #5200 --- av2/common/level.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/common/level.c b/av2/common/level.c index fd0394bc9c..2c33bc62d3 100644 --- a/av2/common/level.c +++ b/av2/common/level.c @@ -826,7 +826,8 @@ void av2_decoder_model_init(const AV2_COMP *const cpi, AV2_LEVEL level, decoder_model->num_ticks_per_picture = cm->ci_params_encoder.timing_info.num_ticks_per_elemental_duration; decoder_model->display_clock_tick = - cm->ci_params_encoder.timing_info.num_ticks_per_elemental_duration / + (double) + cm->ci_params_encoder.timing_info.num_ticks_per_elemental_duration / cm->ci_params_encoder.timing_info.time_scale; } else { decoder_model->num_ticks_per_picture = 1; From ff9fe10a005a2210beeb610aaf945e8a1787a91e Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Wed, 5 Aug 2026 10:59:44 -0700 Subject: [PATCH 031/205] Simplify and rename reconstruct_tile_info_max_tile (#5190) reconstruct_tile_info_max_tile() is called after read_tile_syntax_info(). So it can copy the tile_info->col_start_sb[] and tile_info->row_start_sb[] arrays and their sizes tile_info->cols and tile_info->rows directly. Rename the function to reuse_tile_info(). --- av2/decoder/decodeframe.c | 44 +++++++++++---------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index e308fcc9e0..ce26cfb4fe 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -4124,51 +4124,31 @@ static AVM_INLINE void setup_frame_size_with_refs( &cm->error); } -// Reconstructs the tile information -static void reconstruct_tile_info_max_tile( - AV2_COMMON *const cm, const TileInfoSyntax *const tile_params) { - CommonTileParams *const tiles = &cm->tiles; +// Reuses the tile information +static void reuse_tile_params(CommonTileParams *tiles, + const TileInfoSyntax *tile_params) { const CommonTileParams *const tile_info = &tile_params->tile_info; - int width_sb = tile_info->sb_cols; - int height_sb = tile_info->sb_rows; tiles->uniform_spacing = tile_info->uniform_spacing; - // Read tile columns + // Reuse tile columns if (tiles->uniform_spacing) { tiles->log2_cols = tile_info->log2_cols; } else { - int i; - int start_sb; - for (i = 0, start_sb = 0; width_sb > 0 && i < MAX_TILE_COLS; i++) { - const int size_sb = - tile_info->col_start_sb[i + 1] - tile_info->col_start_sb[i]; - tiles->col_start_sb[i] = start_sb; - start_sb += size_sb; - width_sb -= size_sb; + for (int i = 0; i <= tile_info->cols; i++) { + tiles->col_start_sb[i] = tile_info->col_start_sb[i]; } - tiles->cols = i; - tiles->col_start_sb[i] = start_sb + width_sb; - assert(width_sb == 0); + tiles->cols = tile_info->cols; } av2_calculate_tile_cols(tiles); - // Read tile rows + // Reuse tile rows if (tiles->uniform_spacing) { - // tiles->log2_rows = tile_params->log2_rows + 1; tiles->log2_rows = tile_info->log2_rows; } else { - int i; - int start_sb; - for (i = 0, start_sb = 0; height_sb > 0 && i < MAX_TILE_ROWS; i++) { - const int size_sb = - tile_info->row_start_sb[i + 1] - tile_info->row_start_sb[i]; - tiles->row_start_sb[i] = start_sb; - start_sb += size_sb; - height_sb -= size_sb; + for (int i = 0; i <= tile_info->rows; i++) { + tiles->row_start_sb[i] = tile_info->row_start_sb[i]; } - tiles->rows = i; - tiles->row_start_sb[i] = start_sb + height_sb; - assert(height_sb == 0); + tiles->rows = tile_info->rows; } av2_calculate_tile_rows(tiles); } @@ -4251,7 +4231,7 @@ static AVM_INLINE void read_tile_info(AV2Decoder *const pbi, reuse = 1; } if (reuse) { - reconstruct_tile_info_max_tile(cm, tile_params); + reuse_tile_params(&cm->tiles, tile_params); } else { read_tile_info_max_tile(cm, rb); } From 1a325a8e76d232d21c1e92da4cfd1b94c9e4a3d7 Mon Sep 17 00:00:00 2001 From: Yannis Guyon Date: Wed, 5 Aug 2026 20:00:25 +0200 Subject: [PATCH 032/205] Check i If uniform_tile_spacing_flag is equal to 0, it is a requirement of bitstream conformance that startSb is equal to sbCols when the loop writing sbColStarts exits. > > Note: The requirements on startSb ensure that the sizes of each tile add up to the full size of the frame when measured in superblocks. So the `width_sb == 0` assertion at line 5959 makes sense. However, the related code in https://av2.aomedia.org/v1.0.0/index.html#tile_params_syntax has no bound on `i`: ```py widestTileSb = 1 startSb = 0 for ( i = 0; startSb < sbCols; i++ ) { sbColStarts[ i ] = startSb n = Min(sbCols - startSb, maxTileWidthSb) width_in_sbs_minus_1 # ns(n) sizeSb = width_in_sbs_minus_1 + 1 widestTileSb = Max( sizeSb, widestTileSb ) startSb += sizeSb } tileCols = i tileColsLog2 = tile_log2(1, tileCols) ``` whereas the implementation only loops as long as `i < MAX_TILE_COLS`. --- This was found with a libavif fuzz target (b/540849406). --- av2/decoder/decodeframe.c | 96 ++++++++++----------------------------- 1 file changed, 23 insertions(+), 73 deletions(-) diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index ce26cfb4fe..4b785a8d36 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -4153,12 +4153,8 @@ static void reuse_tile_params(CommonTileParams *tiles, av2_calculate_tile_rows(tiles); } -static AVM_INLINE void read_tile_info_max_tile( - AV2_COMMON *const cm, struct avm_read_bit_buffer *const rb) { - CommonTileParams *const tiles = &cm->tiles; - int width_sb = tiles->sb_cols; - int height_sb = tiles->sb_rows; - +static void read_tile_params(CommonTileParams *tiles, + struct avm_read_bit_buffer *rb) { tiles->uniform_spacing = avm_rb_read_bit(rb); // Read tile columns @@ -4173,15 +4169,22 @@ static AVM_INLINE void read_tile_info_max_tile( } else { int i; int start_sb; - for (i = 0, start_sb = 0; width_sb > 0 && i < MAX_TILE_COLS; i++) { + int width_sb = tiles->sb_cols; + for (i = 0, start_sb = 0; width_sb > 0; i++) { + if (i >= MAX_TILE_COLS) { + rb->error_handler(rb->error_handler_data, AVM_CODEC_CORRUPT_FRAME, + "tileCols cannot be greater than MAX_TILE_COLS"); + } const int size_sb = 1 + rb_read_uniform(rb, AVMMIN(width_sb, tiles->max_width_sb)); tiles->col_start_sb[i] = start_sb; start_sb += size_sb; width_sb -= size_sb; } + assert(width_sb == 0); + assert(start_sb == tiles->sb_cols); tiles->cols = i; - tiles->col_start_sb[i] = start_sb + width_sb; + tiles->col_start_sb[i] = start_sb; } av2_calculate_tile_cols(tiles); @@ -4197,15 +4200,22 @@ static AVM_INLINE void read_tile_info_max_tile( } else { int i; int start_sb; - for (i = 0, start_sb = 0; height_sb > 0 && i < MAX_TILE_ROWS; i++) { + int height_sb = tiles->sb_rows; + for (i = 0, start_sb = 0; height_sb > 0; i++) { + if (i >= MAX_TILE_ROWS) { + rb->error_handler(rb->error_handler_data, AVM_CODEC_CORRUPT_FRAME, + "tileRows cannot be greater than MAX_TILE_ROWS"); + } const int size_sb = 1 + rb_read_uniform(rb, AVMMIN(height_sb, tiles->max_height_sb)); tiles->row_start_sb[i] = start_sb; start_sb += size_sb; height_sb -= size_sb; } + assert(height_sb == 0); + assert(start_sb == tiles->sb_rows); tiles->rows = i; - tiles->row_start_sb[i] = start_sb + height_sb; + tiles->row_start_sb[i] = start_sb; } av2_calculate_tile_rows(tiles); } @@ -4233,7 +4243,7 @@ static AVM_INLINE void read_tile_info(AV2Decoder *const pbi, if (reuse) { reuse_tile_params(&cm->tiles, tile_params); } else { - read_tile_info_max_tile(cm, rb); + read_tile_params(&cm->tiles, rb); } if (cm->bru.enabled) { @@ -5908,67 +5918,6 @@ void av2_read_conformance_window(struct avm_read_bit_buffer *rb, } } -static void read_tile_syntax_info(TileInfoSyntax *tile_params, - struct avm_read_bit_buffer *rb) { - tile_params->allow_tile_info_change = avm_rb_read_bit(rb); - CommonTileParams *tile_info = &tile_params->tile_info; - tile_info->uniform_spacing = avm_rb_read_bit(rb); - - // Read tile columns - if (tile_info->uniform_spacing) { - tile_info->log2_cols = tile_info->min_log2_cols; - while (tile_info->log2_cols < tile_info->max_log2_cols) { - if (!avm_rb_read_bit(rb)) { - break; - } - tile_info->log2_cols++; - } - } else { - int i; - int start_sb; - int width_sb = tile_info->sb_cols; - for (i = 0, start_sb = 0; width_sb > 0 && i < MAX_TILE_COLS; i++) { - const int size_sb = - 1 + rb_read_uniform(rb, AVMMIN(width_sb, tile_info->max_width_sb)); - tile_info->col_start_sb[i] = start_sb; - start_sb += size_sb; - width_sb -= size_sb; - } - tile_info->cols = i; - tile_info->col_start_sb[i] = start_sb + width_sb; - assert(width_sb == 0); - } - tile_info->min_log2_rows = - AVMMAX(tile_info->min_log2 - tile_info->log2_cols, 0); - av2_calculate_tile_cols(tile_info); - - // Read tile rows - if (tile_info->uniform_spacing) { - tile_info->log2_rows = tile_info->min_log2_rows; - while (tile_info->log2_rows < tile_info->max_log2_rows) { - if (!avm_rb_read_bit(rb)) { - break; - } - tile_info->log2_rows++; - } - } else { - int i; - int start_sb; - int height_sb = tile_info->sb_rows; - for (i = 0, start_sb = 0; height_sb > 0 && i < MAX_TILE_ROWS; i++) { - const int size_sb = - 1 + rb_read_uniform(rb, AVMMIN(height_sb, tile_info->max_height_sb)); - tile_info->row_start_sb[i] = start_sb; - start_sb += size_sb; - height_sb -= size_sb; - } - tile_info->rows = i; - tile_info->row_start_sb[i] = start_sb + height_sb; - assert(height_sb == 0); - } - av2_calculate_tile_rows(tile_info); -} - // Reads the tile information in the sequence header static void read_sequence_tile_info(struct SequenceHeader *seq_params, struct avm_read_bit_buffer *rb) { @@ -5977,7 +5926,8 @@ static void read_sequence_tile_info(struct SequenceHeader *seq_params, seq_params->max_frame_width, seq_params->mib_size_log2, seq_params->mib_size_log2, seq_params->seq_max_level_idx, seq_params->seq_tier); - read_tile_syntax_info(&seq_params->tile_params, rb); + seq_params->tile_params.allow_tile_info_change = avm_rb_read_bit(rb); + read_tile_params(&seq_params->tile_params.tile_info, rb); } static void read_sequence_tile_config(struct SequenceHeader *seq_params, From 1d89973a82ef13adf146f0863d9a99d48ef86f01 Mon Sep 17 00:00:00 2001 From: jjustiss-apple Date: Wed, 5 Aug 2026 11:04:45 -0700 Subject: [PATCH 033/205] Add NEON for highbd convolve8, convolve_copy, and upsampled_pred (#5204) This adds NEON intrinsics for convolve8_horiz (11x speedup), convolve8_vert (13x speedup), convolve_copy, and the upsampled_pred dispatch that enables the convolve8 NEON path to be reached from the motion estimation variance computation. CTC results (RA, cpu-used=1, 33 frames, A5): | Metric | Delta | |--------|-------| | Encode time | -11.02% | | BD-rate Y | 0.000% | | BD-rate Cb | 0.000% | | BD-rate Cr | 0.000% | Bit-exact confirmed (all PSNR values identical). Unit tests included. --- avm_dsp/arm/highbd_convolve_neon.c | 490 +++++++++++++++++++++++++++++ avm_dsp/arm/highbd_variance_neon.c | 87 +++++ avm_dsp/avm_convolve.c | 12 +- avm_dsp/avm_convolve_common.h | 30 ++ avm_dsp/avm_dsp.cmake | 11 +- avm_dsp/avm_dsp_rtcd_defs.pl | 9 +- avm_dsp/variance.c | 43 ++- avm_dsp/x86/highbd_variance_sse2.c | 76 ----- test/comp_avg_pred_test.cc | 6 + test/convolve_test.cc | 23 ++ 10 files changed, 671 insertions(+), 116 deletions(-) create mode 100644 avm_dsp/arm/highbd_convolve_neon.c create mode 100644 avm_dsp/arm/highbd_variance_neon.c create mode 100644 avm_dsp/avm_convolve_common.h diff --git a/avm_dsp/arm/highbd_convolve_neon.c b/avm_dsp/arm/highbd_convolve_neon.c new file mode 100644 index 0000000000..ab4dff23f3 --- /dev/null +++ b/avm_dsp/arm/highbd_convolve_neon.c @@ -0,0 +1,490 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause + * Clear License was not distributed with this source code in the LICENSE file, + * you can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. + * If the Alliance for Open Media Patent License 1.0 was not distributed with + * this source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +// NEON implementations for highbd convolve 8-tap horiz/vert. + +#include "config/avm_dsp_rtcd.h" + +#include +#include + +#include "avm_dsp/avm_convolve_common.h" +#include "avm_dsp/avm_dsp_common.h" +#include "avm_dsp/avm_filter.h" + +static INLINE void highbd_convolve_copy_neon(const uint16_t *src, + ptrdiff_t src_stride, + uint16_t *dst, + ptrdiff_t dst_stride, int w, + int h) { + const size_t row_bytes = (size_t)w * sizeof(uint16_t); + for (int y = 0; y < h; ++y) { + memcpy(dst, src, row_bytes); + src += src_stride; + dst += dst_stride; + } +} + +// Horizontal 2-tap bilinear filter (only taps 3,4 active). +static void highbd_convolve_horiz_2tap_neon(const uint16_t *src, + ptrdiff_t src_stride, uint16_t *dst, + ptrdiff_t dst_stride, + const int16_t *filter, int w, int h, + int bd) { + const int16x4_t f3 = vdup_n_s16(filter[3]); + const int16x4_t f4 = vdup_n_s16(filter[4]); + const uint16x8_t max_val = vdupq_n_u16((1 << bd) - 1); + + for (int y = 0; y < h; ++y) { + int x = 0; + for (; x + 8 <= w; x += 8) { + const int16x8_t s0 = vreinterpretq_s16_u16(vld1q_u16(&src[x + 0])); + const int16x8_t s1 = vreinterpretq_s16_u16(vld1q_u16(&src[x + 1])); + + int32x4_t lo = vmull_s16(vget_low_s16(s0), f3); + lo = vmlal_s16(lo, vget_low_s16(s1), f4); + int32x4_t hi = vmull_s16(vget_high_s16(s0), f3); + hi = vmlal_s16(hi, vget_high_s16(s1), f4); + uint16x8_t res = + vcombine_u16(vqrshrun_n_s32(lo, 7), vqrshrun_n_s32(hi, 7)); + vst1q_u16(&dst[x], vminq_u16(res, max_val)); + } + for (; x + 4 <= w; x += 4) { + const int16x4_t s0 = vreinterpret_s16_u16(vld1_u16(&src[x + 0])); + const int16x4_t s1 = vreinterpret_s16_u16(vld1_u16(&src[x + 1])); + + int32x4_t acc = vmull_s16(s0, f3); + acc = vmlal_s16(acc, s1, f4); + uint16x4_t res = vqrshrun_n_s32(acc, 7); + vst1_u16(&dst[x], vmin_u16(res, vget_low_u16(max_val))); + } + for (; x < w; ++x) { + int sum = (int)src[x] * filter[3] + (int)src[x + 1] * filter[4]; + dst[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd); + } + src += src_stride; + dst += dst_stride; + } +} + +// Horizontal 4-tap filter for widths >= 8 (taps 2-5 active). +static void highbd_convolve_horiz_4tap_neon(const uint16_t *src, + ptrdiff_t src_stride, uint16_t *dst, + ptrdiff_t dst_stride, + const int16_t *filter, int w, int h, + int bd) { + // Only taps 2,3,4,5 are non-zero. + const int16x4_t f2 = vdup_n_s16(filter[2]); + const int16x4_t f3 = vdup_n_s16(filter[3]); + const int16x4_t f4 = vdup_n_s16(filter[4]); + const int16x4_t f5 = vdup_n_s16(filter[5]); + const uint16x8_t max_val = vdupq_n_u16((1 << bd) - 1); + + // Taps 0,1 are zero, so effective offset is -(4/2-1) + 2 = +1 from base. + // But the caller already offsets src by -3, so relative to that: src+2. + src -= 3; // standard 8-tap offset + const uint16_t *s = src + 2; + + for (int y = 0; y < h; ++y) { + int x = 0; + for (; x + 8 <= w; x += 8) { + const int16x8_t s0 = vreinterpretq_s16_u16(vld1q_u16(&s[x + 0])); + const int16x8_t s1 = vreinterpretq_s16_u16(vld1q_u16(&s[x + 1])); + const int16x8_t s2 = vreinterpretq_s16_u16(vld1q_u16(&s[x + 2])); + const int16x8_t s3 = vreinterpretq_s16_u16(vld1q_u16(&s[x + 3])); + + int32x4_t lo = vmull_s16(vget_low_s16(s0), f2); + lo = vmlal_s16(lo, vget_low_s16(s1), f3); + lo = vmlal_s16(lo, vget_low_s16(s2), f4); + lo = vmlal_s16(lo, vget_low_s16(s3), f5); + int32x4_t hi = vmull_s16(vget_high_s16(s0), f2); + hi = vmlal_s16(hi, vget_high_s16(s1), f3); + hi = vmlal_s16(hi, vget_high_s16(s2), f4); + hi = vmlal_s16(hi, vget_high_s16(s3), f5); + uint16x8_t res = + vcombine_u16(vqrshrun_n_s32(lo, 7), vqrshrun_n_s32(hi, 7)); + vst1q_u16(&dst[x], vminq_u16(res, max_val)); + } + for (; x + 4 <= w; x += 4) { + const int16x4_t s0 = vreinterpret_s16_u16(vld1_u16(&s[x + 0])); + const int16x4_t s1 = vreinterpret_s16_u16(vld1_u16(&s[x + 1])); + const int16x4_t s2 = vreinterpret_s16_u16(vld1_u16(&s[x + 2])); + const int16x4_t s3 = vreinterpret_s16_u16(vld1_u16(&s[x + 3])); + + int32x4_t acc = vmull_s16(s0, f2); + acc = vmlal_s16(acc, s1, f3); + acc = vmlal_s16(acc, s2, f4); + acc = vmlal_s16(acc, s3, f5); + uint16x4_t res = vqrshrun_n_s32(acc, 7); + vst1_u16(&dst[x], vmin_u16(res, vget_low_u16(max_val))); + } + for (; x < w; ++x) { + int sum = (int)s[x + 0] * filter[2] + (int)s[x + 1] * filter[3] + + (int)s[x + 2] * filter[4] + (int)s[x + 3] * filter[5]; + dst[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd); + } + s += src_stride; + dst += dst_stride; + } +} + +// Horizontal 8-tap filter for widths >= 8 (all taps active). +static void highbd_convolve_horiz_8tap_neon(const uint16_t *src, + ptrdiff_t src_stride, uint16_t *dst, + ptrdiff_t dst_stride, + const int16_t *filter, int w, int h, + int bd) { + const int16x8_t f = vld1q_s16(filter); + const uint16x8_t max_val = vdupq_n_u16((1 << bd) - 1); + + src -= 3; + + for (int y = 0; y < h; ++y) { + const int16_t *sp = (const int16_t *)src; + int x = 0; + for (; x + 8 <= w; x += 8) { + const int16x8_t s0 = vld1q_s16(sp + x + 0); + const int16x8_t s1 = vld1q_s16(sp + x + 1); + const int16x8_t s2 = vld1q_s16(sp + x + 2); + const int16x8_t s3 = vld1q_s16(sp + x + 3); + const int16x8_t s4 = vld1q_s16(sp + x + 4); + const int16x8_t s5 = vld1q_s16(sp + x + 5); + const int16x8_t s6 = vld1q_s16(sp + x + 6); + const int16x8_t s7 = vld1q_s16(sp + x + 7); + + int32x4_t lo = vmull_lane_s16(vget_low_s16(s0), vget_low_s16(f), 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s1), vget_low_s16(f), 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s2), vget_low_s16(f), 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s3), vget_low_s16(f), 3); + lo = vmlal_lane_s16(lo, vget_low_s16(s4), vget_high_s16(f), 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s5), vget_high_s16(f), 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s6), vget_high_s16(f), 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s7), vget_high_s16(f), 3); + int32x4_t hi = vmull_lane_s16(vget_high_s16(s0), vget_low_s16(f), 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s1), vget_low_s16(f), 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s2), vget_low_s16(f), 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s3), vget_low_s16(f), 3); + hi = vmlal_lane_s16(hi, vget_high_s16(s4), vget_high_s16(f), 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s5), vget_high_s16(f), 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s6), vget_high_s16(f), 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s7), vget_high_s16(f), 3); + uint16x8_t res = + vcombine_u16(vqrshrun_n_s32(lo, 7), vqrshrun_n_s32(hi, 7)); + vst1q_u16(&dst[x], vminq_u16(res, max_val)); + } + for (; x + 4 <= w; x += 4) { + const int16x4_t s0 = vld1_s16(sp + x + 0); + const int16x4_t s1 = vld1_s16(sp + x + 1); + const int16x4_t s2 = vld1_s16(sp + x + 2); + const int16x4_t s3 = vld1_s16(sp + x + 3); + const int16x4_t s4 = vld1_s16(sp + x + 4); + const int16x4_t s5 = vld1_s16(sp + x + 5); + const int16x4_t s6 = vld1_s16(sp + x + 6); + const int16x4_t s7 = vld1_s16(sp + x + 7); + + int32x4_t acc = vmull_lane_s16(s0, vget_low_s16(f), 0); + acc = vmlal_lane_s16(acc, s1, vget_low_s16(f), 1); + acc = vmlal_lane_s16(acc, s2, vget_low_s16(f), 2); + acc = vmlal_lane_s16(acc, s3, vget_low_s16(f), 3); + acc = vmlal_lane_s16(acc, s4, vget_high_s16(f), 0); + acc = vmlal_lane_s16(acc, s5, vget_high_s16(f), 1); + acc = vmlal_lane_s16(acc, s6, vget_high_s16(f), 2); + acc = vmlal_lane_s16(acc, s7, vget_high_s16(f), 3); + uint16x4_t res = vqrshrun_n_s32(acc, 7); + vst1_u16(&dst[x], vmin_u16(res, vget_low_u16(max_val))); + } + for (; x < w; ++x) { + int sum = 0; + for (int k = 0; k < 8; ++k) sum += sp[x + k] * filter[k]; + dst[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd); + } + src += src_stride; + dst += dst_stride; + } +} + +void avm_highbd_convolve8_horiz_neon(const uint16_t *src, ptrdiff_t src_stride, + uint16_t *dst, ptrdiff_t dst_stride, + const int16_t *filter_x, int x_step_q4, + const int16_t *filter_y, int y_step_q4, + int w, int h, int bd) { + const InterpKernel *const filters_x = get_filter_base(filter_x); + const int x0_q4 = get_filter_offset(filter_x, filters_x); + (void)filter_y; + (void)y_step_q4; + + if (x_step_q4 == 16) { + if (filter_x[3] == 128) { + highbd_convolve_copy_neon(src, src_stride, dst, dst_stride, w, h); + return; + } + const int16_t *f = filters_x[x0_q4 & SUBPEL_MASK]; + if ((f[0] | f[1] | f[6] | f[7]) == 0) { + if ((f[2] | f[5]) == 0) { + highbd_convolve_horiz_2tap_neon(src, src_stride, dst, dst_stride, f, w, + h, bd); + } else { + highbd_convolve_horiz_4tap_neon(src, src_stride, dst, dst_stride, f, w, + h, bd); + } + return; + } + highbd_convolve_horiz_8tap_neon(src, src_stride, dst, dst_stride, f, w, h, + bd); + return; + } + avm_highbd_convolve8_horiz_c(src, src_stride, dst, dst_stride, filter_x, + x_step_q4, filter_y, y_step_q4, w, h, bd); +} + +// Vertical 2-tap bilinear filter (only taps 3,4 active). +static void highbd_convolve_vert_2tap_neon(const uint16_t *src, + ptrdiff_t src_stride, uint16_t *dst, + ptrdiff_t dst_stride, + const int16_t *filter, int w, int h, + int bd) { + const int16x4_t f3 = vdup_n_s16(filter[3]); + const int16x4_t f4 = vdup_n_s16(filter[4]); + const uint16x8_t max_val = vdupq_n_u16((1 << bd) - 1); + + for (int x = 0; x + 8 <= w; x += 8) { + const uint16_t *sp = src + x; + uint16_t *dp = dst + x; + int16x8_t r0 = vreinterpretq_s16_u16(vld1q_u16(sp)); + int y = 0; + for (; y + 2 <= h; y += 2) { + const int16x8_t r1 = vreinterpretq_s16_u16(vld1q_u16(sp + src_stride)); + const int16x8_t r2 = + vreinterpretq_s16_u16(vld1q_u16(sp + 2 * src_stride)); + + int32x4_t lo0 = vmull_s16(vget_low_s16(r0), f3); + lo0 = vmlal_s16(lo0, vget_low_s16(r1), f4); + int32x4_t hi0 = vmull_s16(vget_high_s16(r0), f3); + hi0 = vmlal_s16(hi0, vget_high_s16(r1), f4); + uint16x8_t res0 = + vcombine_u16(vqrshrun_n_s32(lo0, 7), vqrshrun_n_s32(hi0, 7)); + vst1q_u16(dp, vminq_u16(res0, max_val)); + + int32x4_t lo1 = vmull_s16(vget_low_s16(r1), f3); + lo1 = vmlal_s16(lo1, vget_low_s16(r2), f4); + int32x4_t hi1 = vmull_s16(vget_high_s16(r1), f3); + hi1 = vmlal_s16(hi1, vget_high_s16(r2), f4); + uint16x8_t res1 = + vcombine_u16(vqrshrun_n_s32(lo1, 7), vqrshrun_n_s32(hi1, 7)); + vst1q_u16(dp + dst_stride, vminq_u16(res1, max_val)); + + r0 = r2; + sp += 2 * src_stride; + dp += 2 * dst_stride; + } + for (; y < h; ++y) { + const int16x8_t r1 = vreinterpretq_s16_u16(vld1q_u16(sp + src_stride)); + int32x4_t lo = vmull_s16(vget_low_s16(r0), f3); + lo = vmlal_s16(lo, vget_low_s16(r1), f4); + int32x4_t hi = vmull_s16(vget_high_s16(r0), f3); + hi = vmlal_s16(hi, vget_high_s16(r1), f4); + uint16x8_t res = + vcombine_u16(vqrshrun_n_s32(lo, 7), vqrshrun_n_s32(hi, 7)); + vst1q_u16(dp, vminq_u16(res, max_val)); + r0 = r1; + sp += src_stride; + dp += dst_stride; + } + } + for (int x = (w & ~7); x < w; ++x) { + const uint16_t *sp = src + x; + uint16_t *dp = dst + x; + for (int y = 0; y < h; ++y) { + int sum = (int)sp[0] * filter[3] + (int)sp[src_stride] * filter[4]; + *dp = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd); + sp += src_stride; + dp += dst_stride; + } + } +} + +// Vertical 4-tap filter (taps 2-5 active). +static void highbd_convolve_vert_4tap_neon(const uint16_t *src, + ptrdiff_t src_stride, uint16_t *dst, + ptrdiff_t dst_stride, + const int16_t *filter, int w, int h, + int bd) { + const int16x4_t f2 = vdup_n_s16(filter[2]); + const int16x4_t f3 = vdup_n_s16(filter[3]); + const int16x4_t f4 = vdup_n_s16(filter[4]); + const int16x4_t f5 = vdup_n_s16(filter[5]); + const uint16x8_t max_val = vdupq_n_u16((1 << bd) - 1); + + // Standard 8-tap offset adjusted for 4-tap: active taps start at index 2. + src -= src_stride * 3; + const uint16_t *s = src + 2 * src_stride; + + for (int x = 0; x + 8 <= w; x += 8) { + const uint16_t *sp = s + x; + uint16_t *dp = dst + x; + + int16x8_t r0 = vreinterpretq_s16_u16(vld1q_u16(sp + 0 * src_stride)); + int16x8_t r1 = vreinterpretq_s16_u16(vld1q_u16(sp + 1 * src_stride)); + int16x8_t r2 = vreinterpretq_s16_u16(vld1q_u16(sp + 2 * src_stride)); + sp += 3 * src_stride; + + for (int y = 0; y < h; ++y) { + int16x8_t r3 = vreinterpretq_s16_u16(vld1q_u16(sp)); + + int32x4_t lo = vmull_s16(vget_low_s16(r0), f2); + lo = vmlal_s16(lo, vget_low_s16(r1), f3); + lo = vmlal_s16(lo, vget_low_s16(r2), f4); + lo = vmlal_s16(lo, vget_low_s16(r3), f5); + int32x4_t hi = vmull_s16(vget_high_s16(r0), f2); + hi = vmlal_s16(hi, vget_high_s16(r1), f3); + hi = vmlal_s16(hi, vget_high_s16(r2), f4); + hi = vmlal_s16(hi, vget_high_s16(r3), f5); + uint16x8_t res = + vcombine_u16(vqrshrun_n_s32(lo, 7), vqrshrun_n_s32(hi, 7)); + res = vminq_u16(res, max_val); + vst1q_u16(dp, res); + + r0 = r1; + r1 = r2; + r2 = r3; + sp += src_stride; + dp += dst_stride; + } + } + // Handle remaining columns < 8 wide. + for (int x = (w & ~7); x < w; ++x) { + const uint16_t *sp = s + x; + uint16_t *dp = dst + x; + for (int y = 0; y < h; ++y) { + int sum = (int)sp[0 * src_stride] * filter[2] + + (int)sp[1 * src_stride] * filter[3] + + (int)sp[2 * src_stride] * filter[4] + + (int)sp[3 * src_stride] * filter[5]; + *dp = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd); + sp += src_stride; + dp += dst_stride; + } + } +} + +static INLINE int16x8_t highbd_convolve8_8_v(int16x8_t s0, int16x8_t s1, + int16x8_t s2, int16x8_t s3, + int16x8_t s4, int16x8_t s5, + int16x8_t s6, int16x8_t s7, + int16x8_t f, int16x8_t max_val) { + int32x4_t lo = vmull_lane_s16(vget_low_s16(s0), vget_low_s16(f), 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s1), vget_low_s16(f), 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s2), vget_low_s16(f), 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s3), vget_low_s16(f), 3); + lo = vmlal_lane_s16(lo, vget_low_s16(s4), vget_high_s16(f), 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s5), vget_high_s16(f), 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s6), vget_high_s16(f), 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s7), vget_high_s16(f), 3); + int32x4_t hi = vmull_lane_s16(vget_high_s16(s0), vget_low_s16(f), 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s1), vget_low_s16(f), 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s2), vget_low_s16(f), 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s3), vget_low_s16(f), 3); + hi = vmlal_lane_s16(hi, vget_high_s16(s4), vget_high_s16(f), 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s5), vget_high_s16(f), 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s6), vget_high_s16(f), 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s7), vget_high_s16(f), 3); + uint16x8_t res = vcombine_u16(vqrshrun_n_s32(lo, 7), vqrshrun_n_s32(hi, 7)); + return vreinterpretq_s16_u16(vminq_u16(res, vreinterpretq_u16_s16(max_val))); +} + +// Vertical 8-tap filter (all taps active). +static void highbd_convolve_vert_8tap_neon(const uint16_t *src, + ptrdiff_t src_stride, uint16_t *dst, + ptrdiff_t dst_stride, + const int16_t *filter, int w, int h, + int bd) { + const int16x8_t f = vld1q_s16(filter); + const int16x8_t max_val = vdupq_n_s16((1 << bd) - 1); + + src -= src_stride * 3; + + for (int x = 0; x + 8 <= w; x += 8) { + const uint16_t *sp = src + x; + uint16_t *dp = dst + x; + + int16x8_t s0 = vreinterpretq_s16_u16(vld1q_u16(sp + 0 * src_stride)); + int16x8_t s1 = vreinterpretq_s16_u16(vld1q_u16(sp + 1 * src_stride)); + int16x8_t s2 = vreinterpretq_s16_u16(vld1q_u16(sp + 2 * src_stride)); + int16x8_t s3 = vreinterpretq_s16_u16(vld1q_u16(sp + 3 * src_stride)); + int16x8_t s4 = vreinterpretq_s16_u16(vld1q_u16(sp + 4 * src_stride)); + int16x8_t s5 = vreinterpretq_s16_u16(vld1q_u16(sp + 5 * src_stride)); + int16x8_t s6 = vreinterpretq_s16_u16(vld1q_u16(sp + 6 * src_stride)); + sp += 7 * src_stride; + + for (int y = 0; y < h; ++y) { + int16x8_t s7 = vreinterpretq_s16_u16(vld1q_u16(sp)); + int16x8_t res = + highbd_convolve8_8_v(s0, s1, s2, s3, s4, s5, s6, s7, f, max_val); + vst1q_u16(dp, vreinterpretq_u16_s16(res)); + + s0 = s1; + s1 = s2; + s2 = s3; + s3 = s4; + s4 = s5; + s5 = s6; + s6 = s7; + sp += src_stride; + dp += dst_stride; + } + } + for (int x = (w & ~7); x < w; ++x) { + const uint16_t *sp = src + x; + uint16_t *dp = dst + x; + for (int y = 0; y < h; ++y) { + int sum = 0; + for (int k = 0; k < 8; ++k) sum += sp[k * src_stride] * filter[k]; + *dp = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd); + sp += src_stride; + dp += dst_stride; + } + } +} + +void avm_highbd_convolve8_vert_neon(const uint16_t *src, ptrdiff_t src_stride, + uint16_t *dst, ptrdiff_t dst_stride, + const int16_t *filter_x, int x_step_q4, + const int16_t *filter_y, int y_step_q4, + int w, int h, int bd) { + const InterpKernel *const filters_y = get_filter_base(filter_y); + const int y0_q4 = get_filter_offset(filter_y, filters_y); + (void)filter_x; + (void)x_step_q4; + + if (y_step_q4 == 16) { + if (filter_y[3] == 128) { + highbd_convolve_copy_neon(src, src_stride, dst, dst_stride, w, h); + return; + } + const int16_t *f = filters_y[y0_q4 & SUBPEL_MASK]; + if ((f[0] | f[1] | f[6] | f[7]) == 0) { + if ((f[2] | f[5]) == 0) { + highbd_convolve_vert_2tap_neon(src, src_stride, dst, dst_stride, f, w, + h, bd); + } else { + highbd_convolve_vert_4tap_neon(src, src_stride, dst, dst_stride, f, w, + h, bd); + } + return; + } + highbd_convolve_vert_8tap_neon(src, src_stride, dst, dst_stride, f, w, h, + bd); + return; + } + avm_highbd_convolve8_vert_c(src, src_stride, dst, dst_stride, filter_x, + x_step_q4, filter_y, y_step_q4, w, h, bd); +} diff --git a/avm_dsp/arm/highbd_variance_neon.c b/avm_dsp/arm/highbd_variance_neon.c new file mode 100644 index 0000000000..63beb3a8ed --- /dev/null +++ b/avm_dsp/arm/highbd_variance_neon.c @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include +#include + +#include "config/avm_config.h" +#include "config/avm_dsp_rtcd.h" + +#include "avm_dsp/avm_dsp_common.h" + +#include "av2/common/av2_common_int.h" + +#if CONFIG_AV2_ENCODER + +void avm_highbd_comp_avg_upsampled_pred_neon( + MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, + const MV *const mv, uint16_t *comp_pred, const uint16_t *pred, int width, + int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, + int ref_stride, int bd, int subpel_search, int is_scaled_ref) { + avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred, width, + height, subpel_x_q3, subpel_y_q3, ref, ref_stride, + bd, subpel_search, is_scaled_ref); + assert(!(width * height & 7)); + const int n = width * height; + int i = 0; + for (; i + 8 <= n; i += 8) { + const uint16x8_t s = vld1q_u16(comp_pred + i); + const uint16x8_t p = vld1q_u16(pred + i); + vst1q_u16(comp_pred + i, vrhaddq_u16(s, p)); + } + for (; i < n; ++i) { + comp_pred[i] = ROUND_POWER_OF_TWO(pred[i] + comp_pred[i], 1); + } +} + +void avm_highbd_dist_wtd_comp_avg_upsampled_pred_neon( + MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, + const MV *const mv, uint16_t *comp_pred, const uint16_t *pred, int width, + int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, + int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, + int subpel_search, int is_scaled_ref) { + avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred, width, + height, subpel_x_q3, subpel_y_q3, ref, ref_stride, + bd, subpel_search, is_scaled_ref); + assert(!(width * height & 7)); + const int fwd_offset = jcp_param->fwd_offset; + const int bck_offset = jcp_param->bck_offset; + const int16x4_t fwd = vdup_n_s16((int16_t)fwd_offset); + const int16x4_t bck = vdup_n_s16((int16_t)bck_offset); + const int32x4_t round = vdupq_n_s32(1 << (DIST_PRECISION_BITS - 1)); + const int n = width * height; + int i = 0; + for (; i + 8 <= n; i += 8) { + const int16x8_t sv = vreinterpretq_s16_u16(vld1q_u16(comp_pred + i)); + const int16x8_t pv = vreinterpretq_s16_u16(vld1q_u16(pred + i)); + + int32x4_t lo = vmull_s16(vget_low_s16(pv), bck); + lo = vmlal_s16(lo, vget_low_s16(sv), fwd); + lo = vshrq_n_s32(vaddq_s32(lo, round), DIST_PRECISION_BITS); + + int32x4_t hi = vmull_s16(vget_high_s16(pv), bck); + hi = vmlal_s16(hi, vget_high_s16(sv), fwd); + hi = vshrq_n_s32(vaddq_s32(hi, round), DIST_PRECISION_BITS); + + const uint16x8_t result = + vcombine_u16(vmovn_u32(vreinterpretq_u32_s32(lo)), + vmovn_u32(vreinterpretq_u32_s32(hi))); + vst1q_u16(comp_pred + i, result); + } + for (; i < n; ++i) { + int tmp = pred[i] * bck_offset + comp_pred[i] * fwd_offset; + comp_pred[i] = (uint16_t)ROUND_POWER_OF_TWO(tmp, DIST_PRECISION_BITS); + } +} + +#endif // CONFIG_AV2_ENCODER diff --git a/avm_dsp/avm_convolve.c b/avm_dsp/avm_convolve.c index b9b47eb16f..b3c211210f 100644 --- a/avm_dsp/avm_convolve.c +++ b/avm_dsp/avm_convolve.c @@ -17,19 +17,11 @@ #include "config/avm_dsp_rtcd.h" #include "avm/avm_integer.h" +#include "avm_dsp/avm_convolve_common.h" #include "avm_dsp/avm_dsp_common.h" #include "avm_dsp/avm_filter.h" #include "avm_ports/mem.h" -static const InterpKernel *get_filter_base(const int16_t *filter) { - // NOTE: This assumes that the filter table is 256-byte aligned. - return (const InterpKernel *)(((intptr_t)filter) & ~((intptr_t)0xFF)); -} - -static int get_filter_offset(const int16_t *f, const InterpKernel *base) { - return (int)((const InterpKernel *)(intptr_t)f - base); -} - static INLINE int highbd_vert_scalar_product(const uint16_t *a, ptrdiff_t a_stride, const int16_t *b) { @@ -161,7 +153,7 @@ void avm_highbd_convolve_copy_c(const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, int w, int h) { for (int y = 0; y < h; ++y) { - memmove(dst, src, w * sizeof(src[0])); + memcpy(dst, src, w * sizeof(src[0])); src += src_stride; dst += dst_stride; } diff --git a/avm_dsp/avm_convolve_common.h b/avm_dsp/avm_convolve_common.h new file mode 100644 index 0000000000..5017564bd2 --- /dev/null +++ b/avm_dsp/avm_convolve_common.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#ifndef AVM_DSP_AVM_CONVOLVE_COMMON_H_ +#define AVM_DSP_AVM_CONVOLVE_COMMON_H_ + +#include + +#include "avm_dsp/avm_dsp_common.h" +#include "avm_dsp/avm_filter.h" + +static INLINE const InterpKernel *get_filter_base(const int16_t *filter) { + return (const InterpKernel *)(((intptr_t)filter) & ~((intptr_t)0xFF)); +} + +static INLINE int get_filter_offset(const int16_t *f, + const InterpKernel *base) { + return (int)((const InterpKernel *)(intptr_t)f - base); +} + +#endif // AVM_DSP_AVM_CONVOLVE_COMMON_H_ diff --git a/avm_dsp/avm_dsp.cmake b/avm_dsp/avm_dsp.cmake index b56425402a..0da0ed2f6f 100644 --- a/avm_dsp/avm_dsp.cmake +++ b/avm_dsp/avm_dsp.cmake @@ -120,6 +120,7 @@ list( AVM_DSP_COMMON_INTRIN_NEON "${AVM_ROOT}/avm_dsp/arm/avm_convolve_copy_neon.c" "${AVM_ROOT}/avm_dsp/arm/fwd_txfm_neon.c" + "${AVM_ROOT}/avm_dsp/arm/highbd_convolve_neon.c" "${AVM_ROOT}/avm_dsp/arm/loopfilter_neon.c" "${AVM_ROOT}/avm_dsp/arm/intrapred_neon.c" "${AVM_ROOT}/avm_dsp/arm/subtract_neon.c" @@ -269,9 +270,13 @@ if(CONFIG_AV2_ENCODER) "${AVM_ROOT}/avm_dsp/x86/highbd_variance_sse4.c" "${AVM_ROOT}/avm_dsp/x86/sse_sse4.c") - list(APPEND AVM_DSP_ENCODER_INTRIN_NEON "${AVM_ROOT}/avm_dsp/arm/avg_neon.c" - "${AVM_ROOT}/avm_dsp/arm/sse_neon.c" - "${AVM_ROOT}/avm_dsp/arm/sum_squares_neon.c") + list( + APPEND + AVM_DSP_ENCODER_INTRIN_NEON + "${AVM_ROOT}/avm_dsp/arm/avg_neon.c" + "${AVM_ROOT}/avm_dsp/arm/highbd_variance_neon.c" + "${AVM_ROOT}/avm_dsp/arm/sse_neon.c" + "${AVM_ROOT}/avm_dsp/arm/sum_squares_neon.c") list( APPEND diff --git a/avm_dsp/avm_dsp_rtcd_defs.pl b/avm_dsp/avm_dsp_rtcd_defs.pl index d1e97b5721..78144569d4 100644 --- a/avm_dsp/avm_dsp_rtcd_defs.pl +++ b/avm_dsp/avm_dsp_rtcd_defs.pl @@ -167,10 +167,10 @@ () specialize qw/avm_highbd_convolve_copy sse2 avx2/; add_proto qw/void avm_highbd_convolve8_horiz/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bd"; -specialize qw/avm_highbd_convolve8_horiz sse2 avx2/; +specialize qw/avm_highbd_convolve8_horiz sse2 avx2 neon/; add_proto qw/void avm_highbd_convolve8_vert/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bd"; -specialize qw/avm_highbd_convolve8_vert sse2 avx2/; +specialize qw/avm_highbd_convolve8_vert sse2 avx2 neon/; # # Loopfilter @@ -585,19 +585,18 @@ () const MV *const mv, uint16_t *comp_pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, int ref_stride, int bd, int subpel_search, int is_scaled_ref"; - specialize qw/avm_highbd_upsampled_pred sse2/; add_proto qw/void avm_highbd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, int ref_stride, int bd, int subpel_search, int is_scaled_ref"; - specialize qw/avm_highbd_comp_avg_upsampled_pred sse2/; + specialize qw/avm_highbd_comp_avg_upsampled_pred sse2 neon/; add_proto qw/void avm_highbd_dist_wtd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search, int is_scaled_ref"; - specialize qw/avm_highbd_dist_wtd_comp_avg_upsampled_pred sse2/; + specialize qw/avm_highbd_dist_wtd_comp_avg_upsampled_pred sse2 neon/; add_proto qw/void avm_highbd_comp_mask_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, diff --git a/avm_dsp/variance.c b/avm_dsp/variance.c index f262962604..798da810a6 100644 --- a/avm_dsp/variance.c +++ b/avm_dsp/variance.c @@ -536,39 +536,38 @@ void avm_highbd_upsampled_pred_c(MACROBLOCKD *xd, } const InterpFilterParams *filter = av2_get_filter(subpel_search); - + int filter_taps = (subpel_search <= USE_4_TAPS) ? 4 : SUBPEL_TAPS; if (!subpel_x_q3 && !subpel_y_q3) { - for (int i = 0; i < height; i++) { - memcpy(comp_pred, ref, width * sizeof(*comp_pred)); - comp_pred += width; - ref += ref_stride; - } + avm_highbd_convolve_copy(ref, ref_stride, comp_pred, width, width, height); } else if (!subpel_y_q3) { const int16_t *const kernel = av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); - avm_highbd_convolve8_horiz_c(ref, ref_stride, comp_pred, width, kernel, 16, - NULL, -1, width, height, bd); + avm_highbd_convolve8_horiz(ref, ref_stride, comp_pred, width, kernel, 16, + NULL, -1, width, height, bd); } else if (!subpel_x_q3) { const int16_t *const kernel = av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); - avm_highbd_convolve8_vert_c(ref, ref_stride, comp_pred, width, NULL, -1, - kernel, 16, width, height, bd); + avm_highbd_convolve8_vert(ref, ref_stride, comp_pred, width, NULL, -1, + kernel, 16, width, height, bd); } else { - DECLARE_ALIGNED(16, uint16_t, - temp[((MAX_SB_SIZE + 16) + 16) * MAX_SB_SIZE]); + uint16_t *temp = comp_pred; const int16_t *const kernel_x = av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); const int16_t *const kernel_y = av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); + const uint16_t *ref_start = ref - ref_stride * ((filter_taps >> 1) - 1); + uint16_t *temp_start_horiz = (subpel_search <= USE_4_TAPS) + ? temp + (filter_taps >> 1) * MAX_SB_SIZE + : temp; + uint16_t *temp_start_vert = temp + MAX_SB_SIZE * ((filter->taps >> 1) - 1); const int intermediate_height = - (((height - 1) * 8 + subpel_y_q3) >> 3) + filter->taps; + (((height - 1) * 8 + subpel_y_q3) >> 3) + filter_taps; assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16); - avm_highbd_convolve8_horiz_c(ref - ref_stride * ((filter->taps >> 1) - 1), - ref_stride, (temp), MAX_SB_SIZE, kernel_x, 16, - NULL, -1, width, intermediate_height, bd); - avm_highbd_convolve8_vert_c( - (temp + MAX_SB_SIZE * ((filter->taps >> 1) - 1)), MAX_SB_SIZE, - comp_pred, width, NULL, -1, kernel_y, 16, width, height, bd); + avm_highbd_convolve8_horiz(ref_start, ref_stride, temp_start_horiz, + MAX_SB_SIZE, kernel_x, 16, NULL, -1, width, + intermediate_height, bd); + avm_highbd_convolve8_vert(temp_start_vert, MAX_SB_SIZE, comp_pred, width, + NULL, -1, kernel_y, 16, width, height, bd); } } @@ -620,9 +619,9 @@ void avm_highbd_dist_wtd_comp_avg_upsampled_pred_c( int i, j; const int fwd_offset = jcp_param->fwd_offset; const int bck_offset = jcp_param->bck_offset; - avm_highbd_upsampled_pred_c(xd, cm, mi_row, mi_col, mv, comp_pred, width, - height, subpel_x_q3, subpel_y_q3, ref, ref_stride, - bd, subpel_search, is_scaled_ref); + avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred, width, + height, subpel_x_q3, subpel_y_q3, ref, ref_stride, + bd, subpel_search, is_scaled_ref); for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { diff --git a/avm_dsp/x86/highbd_variance_sse2.c b/avm_dsp/x86/highbd_variance_sse2.c index 36fdfa51d9..bcbc8f0a53 100644 --- a/avm_dsp/x86/highbd_variance_sse2.c +++ b/avm_dsp/x86/highbd_variance_sse2.c @@ -724,82 +724,6 @@ FNS(sse2); #undef FNS #undef FN -void avm_highbd_upsampled_pred_sse2(MACROBLOCKD *xd, - const struct AV2Common *const cm, - int mi_row, int mi_col, const MV *const mv, - uint16_t *comp_pred, int width, int height, - int subpel_x_q3, int subpel_y_q3, - const uint16_t *ref, int ref_stride, int bd, - int subpel_search, int is_scaled_ref) { - // expect xd == NULL only in tests - if (xd != NULL) { - const MB_MODE_INFO *mi = xd->mi[0]; - const int ref_num = 0; - const int is_intrabc = is_intrabc_block(mi, xd->tree_type); - const struct scale_factors *const sf = - (is_intrabc || is_scaled_ref) ? &cm->sf_identity - : xd->block_ref_scale_factors[ref_num]; - - const int is_scaled = av2_is_scaled(sf); - - if (is_scaled) { - int plane = 0; - const int mi_x = mi_col * MI_SIZE; - const int mi_y = mi_row * MI_SIZE; - const struct macroblockd_plane *const pd = &xd->plane[plane]; - const struct buf_2d *const dst_buf = &pd->dst; - const struct buf_2d *const pre_buf = - is_intrabc ? dst_buf : &pd->pre[ref_num]; - - InterPredParams inter_pred_params; - inter_pred_params.conv_params = get_conv_params(0, plane, xd->bd); - const InterpFilter filters = EIGHTTAP_REGULAR; - av2_init_inter_params( - &inter_pred_params, width, height, mi_y >> pd->subsampling_y, - mi_x >> pd->subsampling_x, pd->subsampling_x, pd->subsampling_y, - xd->bd, is_intrabc, sf, pre_buf, filters); - av2_enc_build_one_inter_predictor(comp_pred, width, mv, - &inter_pred_params); - return; - } - } - - const InterpFilterParams *filter = av2_get_filter(subpel_search); - int filter_taps = (subpel_search <= USE_4_TAPS) ? 4 : SUBPEL_TAPS; - if (!subpel_x_q3 && !subpel_y_q3) { - avm_highbd_convolve_copy(ref, ref_stride, comp_pred, width, width, height); - } else if (!subpel_y_q3) { - const int16_t *const kernel = - av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); - avm_highbd_convolve8_horiz(ref, ref_stride, comp_pred, width, kernel, 16, - NULL, -1, width, height, bd); - } else if (!subpel_x_q3) { - const int16_t *const kernel = - av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); - avm_highbd_convolve8_vert(ref, ref_stride, comp_pred, width, NULL, -1, - kernel, 16, width, height, bd); - } else { - uint16_t *temp = comp_pred; - const int16_t *const kernel_x = - av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); - const int16_t *const kernel_y = - av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); - const uint16_t *ref_start = ref - ref_stride * ((filter_taps >> 1) - 1); - uint16_t *temp_start_horiz = (subpel_search <= USE_4_TAPS) - ? temp + (filter_taps >> 1) * MAX_SB_SIZE - : temp; - uint16_t *temp_start_vert = temp + MAX_SB_SIZE * ((filter->taps >> 1) - 1); - const int intermediate_height = - (((height - 1) * 8 + subpel_y_q3) >> 3) + filter_taps; - assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16); - avm_highbd_convolve8_horiz(ref_start, ref_stride, (temp_start_horiz), - MAX_SB_SIZE, kernel_x, 16, NULL, -1, width, - intermediate_height, bd); - avm_highbd_convolve8_vert((temp_start_vert), MAX_SB_SIZE, comp_pred, width, - NULL, -1, kernel_y, 16, width, height, bd); - } -} - void avm_highbd_comp_avg_upsampled_pred_sse2( MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred16, const uint16_t *pred, int width, diff --git a/test/comp_avg_pred_test.cc b/test/comp_avg_pred_test.cc index 39f5da574b..98dfaabd4a 100644 --- a/test/comp_avg_pred_test.cc +++ b/test/comp_avg_pred_test.cc @@ -51,4 +51,10 @@ INSTANTIATE_TEST_SUITE_P(SSE2, AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest, avm_highbd_dist_wtd_comp_avg_upsampled_pred_sse2)); #endif +#if HAVE_NEON +INSTANTIATE_TEST_SUITE_P(NEON, AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest, + libavm_test::AV2DISTWTDCOMPAVG::BuildParams( + avm_highbd_dist_wtd_comp_avg_upsampled_pred_neon)); +#endif + } // namespace diff --git a/test/convolve_test.cc b/test/convolve_test.cc index 5ad24f32a0..b2f6dae732 100644 --- a/test/convolve_test.cc +++ b/test/convolve_test.cc @@ -566,6 +566,15 @@ WRAP(convolve8_horiz_avx2, 12) WRAP(convolve8_vert_avx2, 12) #endif // HAVE_AVX2 +#if HAVE_NEON +WRAP(convolve8_horiz_neon, 8) +WRAP(convolve8_vert_neon, 8) +WRAP(convolve8_horiz_neon, 10) +WRAP(convolve8_vert_neon, 10) +WRAP(convolve8_horiz_neon, 12) +WRAP(convolve8_vert_neon, 12) +#endif // HAVE_NEON + #undef WRAP const ConvolveFunctions wrap_convolve8_c(wrap_convolve8_horiz_c_8, @@ -611,4 +620,18 @@ INSTANTIATE_TEST_SUITE_P(AVX2, ConvolveTest, ::testing::ValuesIn(kArray_Convolve8_avx2)); #endif // HAVE_AVX2 +#if HAVE_NEON +const ConvolveFunctions wrap_convolve8_neon(wrap_convolve8_horiz_neon_8, + wrap_convolve8_vert_neon_8, 8); +const ConvolveFunctions wrap_convolve10_neon(wrap_convolve8_horiz_neon_10, + wrap_convolve8_vert_neon_10, 10); +const ConvolveFunctions wrap_convolve12_neon(wrap_convolve8_horiz_neon_12, + wrap_convolve8_vert_neon_12, 12); +const ConvolveParam kArrayConvolve_neon[] = { ALL_SIZES(wrap_convolve8_neon), + ALL_SIZES(wrap_convolve10_neon), + ALL_SIZES(wrap_convolve12_neon) }; +INSTANTIATE_TEST_SUITE_P(NEON, ConvolveTest, + ::testing::ValuesIn(kArrayConvolve_neon)); +#endif // HAVE_NEON + } // namespace From 4b04e73d7880beb2e848fd31fcb661090a1c7ded Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Thu, 6 Aug 2026 09:55:46 -0700 Subject: [PATCH 034/205] Refactor write_tile_info_max_tile (#5221) This PR ports the read_tile_params() changes in PR #5187 to the encoder side. write_tile_info_max_tile() does not need to recalculate width_sb and height_sb. They are equal to tiles->sb_cols and tiles->sb_rows, respectively. See av2_get_tile_limits(). Rename write_tile_info_max_tile() to write_tile_params(). Replace write_tile_syntax_info() by write_tile_params(). --- av2/encoder/bitstream.c | 75 +++++++++-------------------------------- 1 file changed, 15 insertions(+), 60 deletions(-) diff --git a/av2/encoder/bitstream.c b/av2/encoder/bitstream.c index 8a85ead1ae..869aac73cf 100644 --- a/av2/encoder/bitstream.c +++ b/av2/encoder/bitstream.c @@ -4216,14 +4216,8 @@ static AVM_INLINE void write_frame_interp_filter( avm_wb_write_literal(wb, filter, LOG_SWITCHABLE_FILTERS); } -static AVM_INLINE void write_tile_info_max_tile( - const CommonTileParams *const tiles, struct avm_write_bit_buffer *wb) { - int width_mi = ALIGN_POWER_OF_TWO(tiles->mi_cols, tiles->mib_size_log2); - int height_mi = ALIGN_POWER_OF_TWO(tiles->mi_rows, tiles->mib_size_log2); - int width_sb = width_mi >> tiles->mib_size_log2; - int height_sb = height_mi >> tiles->mib_size_log2; - int size_sb, i; - +static AVM_INLINE void write_tile_params(const CommonTileParams *const tiles, + struct avm_write_bit_buffer *wb) { avm_wb_write_bit(wb, tiles->uniform_spacing); if (tiles->uniform_spacing) { @@ -4244,20 +4238,27 @@ static AVM_INLINE void write_tile_info_max_tile( avm_wb_write_bit(wb, 0); } } else { + int size_sb, i; + // Explicit tiles with configurable tile widths and heights // columns + int width_sb = tiles->sb_cols; for (i = 0; i < tiles->cols; i++) { size_sb = tiles->col_start_sb[i + 1] - tiles->col_start_sb[i]; - wb_write_uniform(wb, AVMMIN(width_sb, tiles->max_width_sb), size_sb - 1); + const int n = AVMMIN(width_sb, tiles->max_width_sb); + assert(size_sb >= 1 && size_sb <= n); + wb_write_uniform(wb, n, size_sb - 1); width_sb -= size_sb; } assert(width_sb == 0); // rows + int height_sb = tiles->sb_rows; for (i = 0; i < tiles->rows; i++) { size_sb = tiles->row_start_sb[i + 1] - tiles->row_start_sb[i]; - wb_write_uniform(wb, AVMMIN(height_sb, tiles->max_height_sb), - size_sb - 1); + const int n = AVMMIN(height_sb, tiles->max_height_sb); + assert(size_sb >= 1 && size_sb <= n); + wb_write_uniform(wb, n, size_sb - 1); height_sb -= size_sb; } assert(height_sb == 0); @@ -4307,7 +4308,7 @@ static AVM_INLINE void write_tile_info(AV2_COMMON *const cm, } assert(IMPLIES(reuse, check_tile_equivalence(tile_params, &cm->tiles))); } - if (!reuse) write_tile_info_max_tile(&cm->tiles, wb); + if (!reuse) write_tile_params(&cm->tiles, wb); *saved_wb = *wb; if (cm->tiles.rows * cm->tiles.cols > 1 && cm->features.tip_frame_mode != TIP_FRAME_AS_OUTPUT) { @@ -4466,58 +4467,12 @@ void av2_write_timing_info_header(const avm_timing_info_t *const timing_info, } } -// Writes tile syntax -void write_tile_syntax_info(const TileInfoSyntax *tile_params, - struct avm_write_bit_buffer *wb) { - avm_wb_write_bit(wb, tile_params->allow_tile_info_change); - const CommonTileParams *tiles = &tile_params->tile_info; - int size_sb, i; - int tile_width_sb = tiles->sb_cols; - int tile_height_sb = tiles->sb_rows; - avm_wb_write_bit(wb, tiles->uniform_spacing); - - if (tiles->uniform_spacing) { - int ones = tiles->log2_cols - tiles->min_log2_cols; - while (ones--) { - avm_wb_write_bit(wb, 1); - } - if (tiles->log2_cols < tiles->max_log2_cols) { - avm_wb_write_bit(wb, 0); - } - // rows - ones = tiles->log2_rows - tiles->min_log2_rows; - while (ones--) { - avm_wb_write_bit(wb, 1); - } - if (tiles->log2_rows < tiles->max_log2_rows) { - avm_wb_write_bit(wb, 0); - } - } else { - // Explicit tiles with configurable tile widths and heights - // columns - for (i = 0; i < tiles->cols; i++) { - size_sb = tiles->col_start_sb[i + 1] - tiles->col_start_sb[i]; - wb_write_uniform(wb, AVMMIN(tile_width_sb, tiles->max_width_sb), - size_sb - 1); - tile_width_sb -= size_sb; - } - assert(tile_width_sb == 0); - // rows - for (i = 0; i < tiles->rows; i++) { - size_sb = tiles->row_start_sb[i + 1] - tiles->row_start_sb[i]; - wb_write_uniform(wb, AVMMIN(tile_height_sb, tiles->max_height_sb), - size_sb - 1); - tile_height_sb -= size_sb; - } - assert(tile_height_sb == 0); - } -} - static AVM_INLINE void write_sequence_tile_config( const SequenceHeader *const seq_params, struct avm_write_bit_buffer *wb) { avm_wb_write_bit(wb, seq_params->seq_tile_info_present_flag); if (seq_params->seq_tile_info_present_flag) { - write_tile_syntax_info(&seq_params->tile_params, wb); + avm_wb_write_bit(wb, seq_params->tile_params.allow_tile_info_change); + write_tile_params(&seq_params->tile_params.tile_info, wb); } } From 12ab7c6260569921b3f1663d11e12e57311a0b18 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Thu, 6 Aug 2026 12:50:29 -0700 Subject: [PATCH 035/205] Simplify the second parameter of reuse_tile_params (#5223) This change should have been made in PR #5190. --- av2/decoder/decodeframe.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index 4b785a8d36..f56533e75a 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -4126,9 +4126,7 @@ static AVM_INLINE void setup_frame_size_with_refs( // Reuses the tile information static void reuse_tile_params(CommonTileParams *tiles, - const TileInfoSyntax *tile_params) { - const CommonTileParams *const tile_info = &tile_params->tile_info; - + const CommonTileParams *tile_info) { tiles->uniform_spacing = tile_info->uniform_spacing; // Reuse tile columns @@ -4241,7 +4239,7 @@ static AVM_INLINE void read_tile_info(AV2Decoder *const pbi, reuse = 1; } if (reuse) { - reuse_tile_params(&cm->tiles, tile_params); + reuse_tile_params(&cm->tiles, &tile_params->tile_info); } else { read_tile_params(&cm->tiles, rb); } From 2969f22b78c07ea6a2eedcabc0236d2700808513 Mon Sep 17 00:00:00 2001 From: jjustiss-apple Date: Thu, 6 Aug 2026 15:34:20 -0700 Subject: [PATCH 036/205] Add NEON for highbd inv_txfm (#5205) Add NEON intrinsics for the full inv_txfm pipeline covering all 1D kernels (DCT, ADST, FDST, IDTX) for sizes 4-32, using matrix-multiply for sizes 4/8/16 and loop-based for size 32. CTC Results (RA, cpu-used=1, 33 frames, A5): | Metric | Delta | |--------|-------| | Encode time | -1.18% | | BD-rate Y | 0.000% | | BD-rate Cb | 0.000% | | BD-rate Cr | 0.000% | Bit-exact confirmed (all PSNR values identical). Unit tests included. --- av2/av2.cmake | 1 + av2/common/arm/highbd_inv_txfm_neon.c | 1087 +++++++++++++++++++++++++ av2/common/av2_rtcd_defs.pl | 4 +- test/inv_txfm_variant_test.cc | 204 +++++ test/test.cmake | 3 +- 5 files changed, 1296 insertions(+), 3 deletions(-) create mode 100644 av2/common/arm/highbd_inv_txfm_neon.c create mode 100644 test/inv_txfm_variant_test.cc diff --git a/av2/av2.cmake b/av2/av2.cmake index 57f639be12..6087b88661 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -439,6 +439,7 @@ list( "${AVM_ROOT}/av2/common/arm/cfl_neon.c" "${AVM_ROOT}/av2/common/arm/convolve_neon.c" "${AVM_ROOT}/av2/common/arm/convolve_neon.h" + "${AVM_ROOT}/av2/common/arm/highbd_inv_txfm_neon.c" "${AVM_ROOT}/av2/common/arm/reconinter_neon.c" "${AVM_ROOT}/av2/common/arm/highbd_warp_affine_neon.c" "${AVM_ROOT}/av2/common/cdef_block_neon.c") diff --git a/av2/common/arm/highbd_inv_txfm_neon.c b/av2/common/arm/highbd_inv_txfm_neon.c new file mode 100644 index 0000000000..5b16e9bd5b --- /dev/null +++ b/av2/common/arm/highbd_inv_txfm_neon.c @@ -0,0 +1,1087 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause + * Clear License was not distributed with this source code in the LICENSE file, + * you can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. + * If the Alliance for Open Media Patent License 1.0 was not distributed with + * this source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "config/av2_rtcd.h" + +#include "av2/common/av2_txfm.h" +#include "av2/common/common_data.h" +#include "av2/common/idct.h" +#include "av2/common/txb_common.h" +#include "avm_dsp/arm/transpose_neon.h" + +// IDTX scale factors indexed by size_index (0=4, 1=8, 2=16, 3=32). +static const int idtx_scale[4] = { 128, 181, 256, 362 }; +static const int idtx_size[4] = { 4, 8, 16, 32 }; + +// Round-shift-clamp helper: vrshlq_s32 does add+(1<<(n-1)) then >>n in one +// insn. +static INLINE int32x4_t round_shift_clamp(int32x4_t v, int32x4_t neg_shift_v, + int32x4_t min_v, int32x4_t max_v) { + v = vrshlq_s32(v, neg_shift_v); + v = vmaxq_s32(v, min_v); + v = vminq_s32(v, max_v); + return v; +} + +// --------------------------------------------------------------------------- +// IDTX 1D NEON: dst[j*line+i] = clamp((src[i*N+j]*scale + add) >> shift) +// Processes 4 rows at a time for tx1d_size=4, per-row for larger. +// For power-of-2 scales (128, 256), the multiply is fused into the shift. +// --------------------------------------------------------------------------- +static void inv_txfm_idtx_neon(const int *src, int *dst, int shift, int line, + int skip_line, const int coef_min, + const int coef_max, int size_index) { + const int nz_line = line - skip_line; + const int tx1d_size = idtx_size[size_index]; + const int scale = idtx_scale[size_index]; + const int32x4_t min_v = vdupq_n_s32(coef_min); + const int32x4_t max_v = vdupq_n_s32(coef_max); + + if (tx1d_size == 4) { + // scale=128=2^7: fuse multiply into shift (shift-7). + const int32x4_t neg_shift_v = vdupq_n_s32(7 - shift); + int i = 0; + for (; i + 3 < nz_line; i += 4) { + int32x4_t r0 = vld1q_s32(src + 0); + int32x4_t r1 = vld1q_s32(src + 4); + int32x4_t r2 = vld1q_s32(src + 8); + int32x4_t r3 = vld1q_s32(src + 12); + r0 = round_shift_clamp(r0, neg_shift_v, min_v, max_v); + r1 = round_shift_clamp(r1, neg_shift_v, min_v, max_v); + r2 = round_shift_clamp(r2, neg_shift_v, min_v, max_v); + r3 = round_shift_clamp(r3, neg_shift_v, min_v, max_v); + transpose_elems_inplace_s32_4x4(&r0, &r1, &r2, &r3); + vst1q_s32(dst + 0 * line + i, r0); + vst1q_s32(dst + 1 * line + i, r1); + vst1q_s32(dst + 2 * line + i, r2); + vst1q_s32(dst + 3 * line + i, r3); + src += 16; + } + for (; i < nz_line; i++) { + for (int j = 0; j < 4; j++) { + dst[j * line + i] = + clamp((int)(src[j] * scale + (1 << (shift - 1))) >> shift, coef_min, + coef_max); + } + src += 4; + } + return; + } + + if (tx1d_size == 8) { + // scale=181: not power-of-2, need multiply. + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + int i = 0; + for (; i + 3 < nz_line; i += 4) { + int32x4_t r0a = vmulq_n_s32(vld1q_s32(src + 0), scale); + int32x4_t r0b = vmulq_n_s32(vld1q_s32(src + 4), scale); + int32x4_t r1a = vmulq_n_s32(vld1q_s32(src + 8), scale); + int32x4_t r1b = vmulq_n_s32(vld1q_s32(src + 12), scale); + int32x4_t r2a = vmulq_n_s32(vld1q_s32(src + 16), scale); + int32x4_t r2b = vmulq_n_s32(vld1q_s32(src + 20), scale); + int32x4_t r3a = vmulq_n_s32(vld1q_s32(src + 24), scale); + int32x4_t r3b = vmulq_n_s32(vld1q_s32(src + 28), scale); + transpose_elems_inplace_s32_4x4(&r0a, &r1a, &r2a, &r3a); + transpose_elems_inplace_s32_4x4(&r0b, &r1b, &r2b, &r3b); + vst1q_s32(dst + 0 * line + i, + round_shift_clamp(r0a, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 1 * line + i, + round_shift_clamp(r1a, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 2 * line + i, + round_shift_clamp(r2a, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 3 * line + i, + round_shift_clamp(r3a, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 4 * line + i, + round_shift_clamp(r0b, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 5 * line + i, + round_shift_clamp(r1b, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 6 * line + i, + round_shift_clamp(r2b, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + 7 * line + i, + round_shift_clamp(r3b, neg_shift_v, min_v, max_v)); + src += 32; + } + for (; i < nz_line; i++) { + for (int j = 0; j < 8; j++) { + int val = src[j] * scale + (1 << (shift - 1)); // NOLINT + dst[j * line + i] = clamp(val >> shift, coef_min, coef_max); + } + src += 8; + } + return; + } + + if (tx1d_size == 16) { + // scale=256=2^8: fuse multiply into shift (shift-8). + const int32x4_t neg_shift_v = vdupq_n_s32(8 - shift); + int i = 0; + for (; i + 3 < nz_line; i += 4) { + for (int g = 0; g < 4; g++) { + int32x4_t t0 = vld1q_s32(src + 0 * 16 + g * 4); + int32x4_t t1 = vld1q_s32(src + 1 * 16 + g * 4); + int32x4_t t2 = vld1q_s32(src + 2 * 16 + g * 4); + int32x4_t t3 = vld1q_s32(src + 3 * 16 + g * 4); + transpose_elems_inplace_s32_4x4(&t0, &t1, &t2, &t3); + vst1q_s32(dst + (g * 4 + 0) * line + i, + round_shift_clamp(t0, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + (g * 4 + 1) * line + i, + round_shift_clamp(t1, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + (g * 4 + 2) * line + i, + round_shift_clamp(t2, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + (g * 4 + 3) * line + i, + round_shift_clamp(t3, neg_shift_v, min_v, max_v)); + } + src += 64; + } + for (; i < nz_line; i++) { + for (int j = 0; j < 16; j++) { + int val = src[j] * scale + (1 << (shift - 1)); // NOLINT + dst[j * line + i] = clamp(val >> shift, coef_min, coef_max); + } + src += 16; + } + return; + } + + // Size 32: scale=362, not power-of-2, need multiply. + { + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + int i = 0; + for (; i + 3 < nz_line; i += 4) { + for (int g = 0; g < 8; g++) { + int32x4_t t0 = vmulq_n_s32(vld1q_s32(src + 0 * 32 + g * 4), scale); + int32x4_t t1 = vmulq_n_s32(vld1q_s32(src + 1 * 32 + g * 4), scale); + int32x4_t t2 = vmulq_n_s32(vld1q_s32(src + 2 * 32 + g * 4), scale); + int32x4_t t3 = vmulq_n_s32(vld1q_s32(src + 3 * 32 + g * 4), scale); + transpose_elems_inplace_s32_4x4(&t0, &t1, &t2, &t3); + vst1q_s32(dst + (g * 4 + 0) * line + i, + round_shift_clamp(t0, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + (g * 4 + 1) * line + i, + round_shift_clamp(t1, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + (g * 4 + 2) * line + i, + round_shift_clamp(t2, neg_shift_v, min_v, max_v)); + vst1q_s32(dst + (g * 4 + 3) * line + i, + round_shift_clamp(t3, neg_shift_v, min_v, max_v)); + } + src += 128; + } + for (; i < nz_line; i++) { + for (int j = 0; j < 32; j++) { + int val = src[j] * scale + (1 << (shift - 1)); // NOLINT + dst[j * line + i] = clamp(val >> shift, coef_min, coef_max); + } + src += 32; + } + } +} + +// --------------------------------------------------------------------------- +// DCT2 size 4 NEON butterfly, processes 4 rows at a time. +// --------------------------------------------------------------------------- +static void inv_txfm_dct2_size4_neon(const int *src, int *dst, int shift, + int line, int skip_line, + const int coef_min, const int coef_max) { + const int nz_line = line - skip_line; + const int *tx_mat = tx_kernel_dct2_size4[INV_TXFM][0]; + const int M00 = tx_mat[0 * 4 + 0], M01 = tx_mat[0 * 4 + 1]; + const int M10 = tx_mat[1 * 4 + 0], M11 = tx_mat[1 * 4 + 1]; + const int M20 = tx_mat[2 * 4 + 0], M21 = tx_mat[2 * 4 + 1]; + const int M30 = tx_mat[3 * 4 + 0], M31 = tx_mat[3 * 4 + 1]; + + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + const int32x4_t min_v = vdupq_n_s32(coef_min); + const int32x4_t max_v = vdupq_n_s32(coef_max); + + int j = 0; + for (; j + 3 < nz_line; j += 4) { + int32x4_t r0 = vld1q_s32(src + 0); + int32x4_t r1 = vld1q_s32(src + 4); + int32x4_t r2 = vld1q_s32(src + 8); + int32x4_t r3 = vld1q_s32(src + 12); + transpose_elems_inplace_s32_4x4(&r0, &r1, &r2, &r3); + // r0=col0(even), r1=col1(odd), r2=col2(even), r3=col3(odd) + int32x4_t a0 = vaddq_s32(vmulq_n_s32(r0, M00), vmulq_n_s32(r2, M20)); + int32x4_t a1 = vaddq_s32(vmulq_n_s32(r0, M01), vmulq_n_s32(r2, M21)); + int32x4_t b0 = vaddq_s32(vmulq_n_s32(r1, M10), vmulq_n_s32(r3, M30)); + int32x4_t b1 = vaddq_s32(vmulq_n_s32(r1, M11), vmulq_n_s32(r3, M31)); + int32x4_t o0 = + round_shift_clamp(vaddq_s32(a0, b0), neg_shift_v, min_v, max_v); + int32x4_t o1 = + round_shift_clamp(vaddq_s32(a1, b1), neg_shift_v, min_v, max_v); + int32x4_t o2 = + round_shift_clamp(vsubq_s32(a1, b1), neg_shift_v, min_v, max_v); + int32x4_t o3 = + round_shift_clamp(vsubq_s32(a0, b0), neg_shift_v, min_v, max_v); + vst1q_s32(dst + 0 * line + j, o0); + vst1q_s32(dst + 1 * line + j, o1); + vst1q_s32(dst + 2 * line + j, o2); + vst1q_s32(dst + 3 * line + j, o3); + src += 16; + } + // Scalar tail for remaining rows. + const int add = 1 << (shift - 1); + for (; j < nz_line; j++) { + int a[2], b[2]; + b[0] = tx_mat[1 * 4 + 0] * src[1] + tx_mat[3 * 4 + 0] * src[3]; + b[1] = tx_mat[1 * 4 + 1] * src[1] + tx_mat[3 * 4 + 1] * src[3]; + a[0] = tx_mat[0 * 4 + 0] * src[0] + tx_mat[2 * 4 + 0] * src[2]; + a[1] = tx_mat[0 * 4 + 1] * src[0] + tx_mat[2 * 4 + 1] * src[2]; + dst[0 * line + j] = clamp((a[0] + b[0] + add) >> shift, coef_min, coef_max); + dst[1 * line + j] = clamp((a[1] + b[1] + add) >> shift, coef_min, coef_max); + dst[2 * line + j] = clamp((a[1] - b[1] + add) >> shift, coef_min, coef_max); + dst[3 * line + j] = clamp((a[0] - b[0] + add) >> shift, coef_min, coef_max); + src += 4; + } +} + +// --------------------------------------------------------------------------- +// DCT2 size 8 NEON butterfly, processes 4 rows at a time. +// For each row: 8 inputs -> 8 outputs via 3-level butterfly. +// --------------------------------------------------------------------------- +static void inv_txfm_dct2_size8_neon(const int *src, int *dst, int shift, + int line, int skip_line, + const int coef_min, const int coef_max) { + const int nz_line = line - skip_line; + const int *tx_mat = tx_kernel_dct2_size8[INV_TXFM][0]; + + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + const int32x4_t min_v = vdupq_n_s32(coef_min); + const int32x4_t max_v = vdupq_n_s32(coef_max); + + // Process 4 rows at a time. For size 8, each row is 8 values. + // We extract columns by processing pairs of int32x4_t per row. + int j = 0; + for (; j + 3 < nz_line; j += 4) { + // Load 4 rows (8 values each = 2 int32x4_t per row). + int32x4_t r0a = vld1q_s32(src + 0); + int32x4_t r0b = vld1q_s32(src + 4); + int32x4_t r1a = vld1q_s32(src + 8); + int32x4_t r1b = vld1q_s32(src + 12); + int32x4_t r2a = vld1q_s32(src + 16); + int32x4_t r2b = vld1q_s32(src + 20); + int32x4_t r3a = vld1q_s32(src + 24); + int32x4_t r3b = vld1q_s32(src + 28); + + // Transpose low halves (cols 0-3) and high halves (cols 4-7). + transpose_elems_inplace_s32_4x4(&r0a, &r1a, &r2a, &r3a); + transpose_elems_inplace_s32_4x4(&r0b, &r1b, &r2b, &r3b); + // Now r0a=col0, r1a=col1, r2a=col2, r3a=col3 + // r0b=col4, r1b=col5, r2b=col6, r3b=col7 + + // Butterfly level 1: b[k] from odd indices (1,3,5,7). + int32x4_t b[4]; + for (int k = 0; k < 4; k++) { + b[k] = vmulq_n_s32(r1a, tx_mat[1 * 8 + k]); + b[k] = vmlaq_n_s32(b[k], r3a, tx_mat[3 * 8 + k]); + b[k] = vmlaq_n_s32(b[k], r1b, tx_mat[5 * 8 + k]); + b[k] = vmlaq_n_s32(b[k], r3b, tx_mat[7 * 8 + k]); + } + + // Butterfly level 2: d[] from indices 2,6; c[] from indices 0,4. + int32x4_t d0 = vaddq_s32(vmulq_n_s32(r2a, tx_mat[2 * 8 + 0]), + vmulq_n_s32(r2b, tx_mat[6 * 8 + 0])); + int32x4_t d1 = vaddq_s32(vmulq_n_s32(r2a, tx_mat[2 * 8 + 1]), + vmulq_n_s32(r2b, tx_mat[6 * 8 + 1])); + int32x4_t c0 = vaddq_s32(vmulq_n_s32(r0a, tx_mat[0 * 8 + 0]), + vmulq_n_s32(r0b, tx_mat[4 * 8 + 0])); + int32x4_t c1 = vaddq_s32(vmulq_n_s32(r0a, tx_mat[0 * 8 + 1]), + vmulq_n_s32(r0b, tx_mat[4 * 8 + 1])); + + // Butterfly level 3: a[] = c +/- d. + int32x4_t a[4]; + a[0] = vaddq_s32(c0, d0); + a[3] = vsubq_s32(c0, d0); + a[1] = vaddq_s32(c1, d1); + a[2] = vsubq_s32(c1, d1); + + // Output: out[k] = a[k]+b[k], out[k+4] = a[3-k]-b[3-k]. + for (int k = 0; k < 4; k++) { + int32x4_t ok = + round_shift_clamp(vaddq_s32(a[k], b[k]), neg_shift_v, min_v, max_v); + vst1q_s32(dst + k * line + j, ok); + } + for (int k = 0; k < 4; k++) { + int32x4_t ok = round_shift_clamp(vsubq_s32(a[3 - k], b[3 - k]), + neg_shift_v, min_v, max_v); + vst1q_s32(dst + (k + 4) * line + j, ok); + } + src += 32; + } + + // Scalar tail. + const int add = 1 << (shift - 1); + for (; j < nz_line; j++) { + int a[4], bv[4], c[2], d[2]; + for (int k = 0; k < 4; k++) { + bv[k] = tx_mat[1 * 8 + k] * src[1] + tx_mat[3 * 8 + k] * src[3] + + tx_mat[5 * 8 + k] * src[5] + tx_mat[7 * 8 + k] * src[7]; + } + d[0] = tx_mat[2 * 8 + 0] * src[2] + tx_mat[6 * 8 + 0] * src[6]; + d[1] = tx_mat[2 * 8 + 1] * src[2] + tx_mat[6 * 8 + 1] * src[6]; + c[0] = tx_mat[0 * 8 + 0] * src[0] + tx_mat[4 * 8 + 0] * src[4]; + c[1] = tx_mat[0 * 8 + 1] * src[0] + tx_mat[4 * 8 + 1] * src[4]; + a[0] = c[0] + d[0]; + a[3] = c[0] - d[0]; + a[1] = c[1] + d[1]; + a[2] = c[1] - d[1]; + for (int k = 0; k < 4; k++) { + dst[k * line + j] = + clamp((a[k] + bv[k] + add) >> shift, coef_min, coef_max); + dst[(k + 4) * line + j] = + clamp((a[3 - k] - bv[3 - k] + add) >> shift, coef_min, coef_max); + } + src += 8; + } +} + +// --------------------------------------------------------------------------- +// Generic NxN matrix multiply NEON for dense kernel transforms (ADST, DST7, +// DCT8, DDTX, FDDT). Processes 4 rows at a time. Output column index can +// optionally be reversed (for FDDT: j -> tx1d_size-1-j). +// --------------------------------------------------------------------------- +static void inv_txfm_matmul_neon(const int *src, int *dst, int shift, int line, + int skip_line, const int coef_min, + const int coef_max, const int *tx_mat, + int tx1d_size, int reverse_cols) { + const int nz_line = line - skip_line; + + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + const int32x4_t min_v = vdupq_n_s32(coef_min); + const int32x4_t max_v = vdupq_n_s32(coef_max); + + if (tx1d_size == 4) { + int i = 0; + for (; i + 3 < nz_line; i += 4) { + int32x4_t r0 = vld1q_s32(src + 0); + int32x4_t r1 = vld1q_s32(src + 4); + int32x4_t r2 = vld1q_s32(src + 8); + int32x4_t r3 = vld1q_s32(src + 12); + transpose_elems_inplace_s32_4x4(&r0, &r1, &r2, &r3); + // r0=col0, r1=col1, r2=col2, r3=col3 (each lane = one row). + for (int j = 0; j < 4; j++) { + int oj = reverse_cols ? (3 - j) : j; + int32x4_t sum = vmulq_n_s32(r0, tx_mat[0 * 4 + oj]); + sum = vmlaq_n_s32(sum, r1, tx_mat[1 * 4 + oj]); + sum = vmlaq_n_s32(sum, r2, tx_mat[2 * 4 + oj]); + sum = vmlaq_n_s32(sum, r3, tx_mat[3 * 4 + oj]); + sum = round_shift_clamp(sum, neg_shift_v, min_v, max_v); + vst1q_s32(dst + j * line + i, sum); + } + src += 16; + } + const int add = 1 << (shift - 1); + for (; i < nz_line; i++) { + for (int j = 0; j < 4; j++) { + int oj = reverse_cols ? (3 - j) : j; + int sum = 0; + for (int k = 0; k < 4; k++) + sum += + src[k] * + tx_mat + [k * 4 + + oj]; // NOLINT(clang-analyzer-core.UndefinedBinaryOperatorResult) + dst[j * line + i] = clamp((sum + add) >> shift, coef_min, coef_max); + } + src += 4; + } + } else if (tx1d_size == 8) { + int i = 0; + for (; i + 3 < nz_line; i += 4) { + int32x4_t r0a = vld1q_s32(src + 0); + int32x4_t r0b = vld1q_s32(src + 4); + int32x4_t r1a = vld1q_s32(src + 8); + int32x4_t r1b = vld1q_s32(src + 12); + int32x4_t r2a = vld1q_s32(src + 16); + int32x4_t r2b = vld1q_s32(src + 20); + int32x4_t r3a = vld1q_s32(src + 24); + int32x4_t r3b = vld1q_s32(src + 28); + transpose_elems_inplace_s32_4x4(&r0a, &r1a, &r2a, &r3a); // cols 0-3 + transpose_elems_inplace_s32_4x4(&r0b, &r1b, &r2b, &r3b); // cols 4-7 + for (int j = 0; j < 8; j++) { + int oj = reverse_cols ? (7 - j) : j; + int32x4_t sum = vmulq_n_s32(r0a, tx_mat[0 * 8 + oj]); + sum = vmlaq_n_s32(sum, r1a, tx_mat[1 * 8 + oj]); + sum = vmlaq_n_s32(sum, r2a, tx_mat[2 * 8 + oj]); + sum = vmlaq_n_s32(sum, r3a, tx_mat[3 * 8 + oj]); + sum = vmlaq_n_s32(sum, r0b, tx_mat[4 * 8 + oj]); + sum = vmlaq_n_s32(sum, r1b, tx_mat[5 * 8 + oj]); + sum = vmlaq_n_s32(sum, r2b, tx_mat[6 * 8 + oj]); + sum = vmlaq_n_s32(sum, r3b, tx_mat[7 * 8 + oj]); + sum = round_shift_clamp(sum, neg_shift_v, min_v, max_v); + vst1q_s32(dst + j * line + i, sum); + } + src += 32; + } + const int add = 1 << (shift - 1); + for (; i < nz_line; i++) { + for (int j = 0; j < 8; j++) { + int oj = reverse_cols ? (7 - j) : j; + int sum = 0; + for (int k = 0; k < 8; k++) + sum += + src[k] * + tx_mat + [k * 8 + + oj]; // NOLINT(clang-analyzer-core.UndefinedBinaryOperatorResult) + dst[j * line + i] = clamp((sum + add) >> shift, coef_min, coef_max); + } + src += 8; + } + } else { + int i = 0; + for (; i + 3 < nz_line; i += 4) { + int32x4_t r0a = vld1q_s32(src + 0); + int32x4_t r0b = vld1q_s32(src + 4); + int32x4_t r0c = vld1q_s32(src + 8); + int32x4_t r0d = vld1q_s32(src + 12); + int32x4_t r1a = vld1q_s32(src + 16); + int32x4_t r1b = vld1q_s32(src + 20); + int32x4_t r1c = vld1q_s32(src + 24); + int32x4_t r1d = vld1q_s32(src + 28); + int32x4_t r2a = vld1q_s32(src + 32); + int32x4_t r2b = vld1q_s32(src + 36); + int32x4_t r2c = vld1q_s32(src + 40); + int32x4_t r2d = vld1q_s32(src + 44); + int32x4_t r3a = vld1q_s32(src + 48); + int32x4_t r3b = vld1q_s32(src + 52); + int32x4_t r3c = vld1q_s32(src + 56); + int32x4_t r3d = vld1q_s32(src + 60); + transpose_elems_inplace_s32_4x4(&r0a, &r1a, &r2a, &r3a); // cols 0-3 + transpose_elems_inplace_s32_4x4(&r0b, &r1b, &r2b, &r3b); // cols 4-7 + transpose_elems_inplace_s32_4x4(&r0c, &r1c, &r2c, &r3c); // cols 8-11 + transpose_elems_inplace_s32_4x4(&r0d, &r1d, &r2d, &r3d); // cols 12-15 + for (int j = 0; j < 16; j++) { + int oj = reverse_cols ? (15 - j) : j; + int32x4_t sum = vmulq_n_s32(r0a, tx_mat[0 * 16 + oj]); + sum = vmlaq_n_s32(sum, r1a, tx_mat[1 * 16 + oj]); + sum = vmlaq_n_s32(sum, r2a, tx_mat[2 * 16 + oj]); + sum = vmlaq_n_s32(sum, r3a, tx_mat[3 * 16 + oj]); + sum = vmlaq_n_s32(sum, r0b, tx_mat[4 * 16 + oj]); + sum = vmlaq_n_s32(sum, r1b, tx_mat[5 * 16 + oj]); + sum = vmlaq_n_s32(sum, r2b, tx_mat[6 * 16 + oj]); + sum = vmlaq_n_s32(sum, r3b, tx_mat[7 * 16 + oj]); + sum = vmlaq_n_s32(sum, r0c, tx_mat[8 * 16 + oj]); + sum = vmlaq_n_s32(sum, r1c, tx_mat[9 * 16 + oj]); + sum = vmlaq_n_s32(sum, r2c, tx_mat[10 * 16 + oj]); + sum = vmlaq_n_s32(sum, r3c, tx_mat[11 * 16 + oj]); + sum = vmlaq_n_s32(sum, r0d, tx_mat[12 * 16 + oj]); + sum = vmlaq_n_s32(sum, r1d, tx_mat[13 * 16 + oj]); + sum = vmlaq_n_s32(sum, r2d, tx_mat[14 * 16 + oj]); + sum = vmlaq_n_s32(sum, r3d, tx_mat[15 * 16 + oj]); + sum = round_shift_clamp(sum, neg_shift_v, min_v, max_v); + vst1q_s32(dst + j * line + i, sum); + } + src += 64; + } + const int add = 1 << (shift - 1); + for (; i < nz_line; i++) { + for (int j = 0; j < 16; j++) { + int oj = reverse_cols ? (15 - j) : j; + int sum = 0; + for (int k = 0; k < 16; k++) + sum += + src[k] * + tx_mat + [k * 16 + + oj]; // NOLINT(clang-analyzer-core.UndefinedBinaryOperatorResult) + dst[j * line + i] = clamp((sum + add) >> shift, coef_min, coef_max); + } + src += 16; + } + } +} + +// --------------------------------------------------------------------------- +// DCT2 size 16 NEON butterfly, processes 4 rows at a time. +// 4-level butterfly: b[8] from odd, d[4] from even-odd, e/f from doubly-even. +// --------------------------------------------------------------------------- +static void inv_txfm_dct2_size16_neon(const int *src, int *dst, int shift, + int line, int skip_line, + const int coef_min, const int coef_max) { + const int nz_line = line - skip_line; + const int *tx_mat = tx_kernel_dct2_size16[INV_TXFM][0]; + + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + const int32x4_t min_v = vdupq_n_s32(coef_min); + const int32x4_t max_v = vdupq_n_s32(coef_max); + + int j = 0; + for (; j + 3 < nz_line; j += 4) { + // Load 4 rows of 16 values each (4 int32x4_t per row). + int32x4_t r0a = vld1q_s32(src + 0); + int32x4_t r0b = vld1q_s32(src + 4); + int32x4_t r0c = vld1q_s32(src + 8); + int32x4_t r0d = vld1q_s32(src + 12); + int32x4_t r1a = vld1q_s32(src + 16); + int32x4_t r1b = vld1q_s32(src + 20); + int32x4_t r1c = vld1q_s32(src + 24); + int32x4_t r1d = vld1q_s32(src + 28); + int32x4_t r2a = vld1q_s32(src + 32); + int32x4_t r2b = vld1q_s32(src + 36); + int32x4_t r2c = vld1q_s32(src + 40); + int32x4_t r2d = vld1q_s32(src + 44); + int32x4_t r3a = vld1q_s32(src + 48); + int32x4_t r3b = vld1q_s32(src + 52); + int32x4_t r3c = vld1q_s32(src + 56); + int32x4_t r3d = vld1q_s32(src + 60); + + // Transpose each group of 4 columns to get column vectors. + transpose_elems_inplace_s32_4x4(&r0a, &r1a, &r2a, &r3a); // col0-3 + transpose_elems_inplace_s32_4x4(&r0b, &r1b, &r2b, &r3b); // col4-7 + transpose_elems_inplace_s32_4x4(&r0c, &r1c, &r2c, &r3c); // col8-11 + transpose_elems_inplace_s32_4x4(&r0d, &r1d, &r2d, &r3d); // col12-15 + // After transpose: r0a=col0, r1a=col1, r2a=col2, r3a=col3 + // r0b=col4, r1b=col5, r2b=col6, r3b=col7 + // r0c=col8, r1c=col9, r2c=col10, r3c=col11 + // r0d=col12, r1d=col13, r2d=col14, r3d=col15 + + // Level 1: b[k] from odd columns (1,3,5,7,9,11,13,15). + // Column-major: process one input column at a time across all 8 outputs. + int32x4_t b[8]; + for (int k = 0; k < 8; k++) b[k] = vmulq_n_s32(r1a, tx_mat[1 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r3a, tx_mat[3 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r1b, tx_mat[5 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r3b, tx_mat[7 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r1c, tx_mat[9 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r3c, tx_mat[11 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r1d, tx_mat[13 * 16 + k]); + for (int k = 0; k < 8; k++) + b[k] = vmlaq_n_s32(b[k], r3d, tx_mat[15 * 16 + k]); + + // Level 2: d[k] from columns 2,6,10,14. + int32x4_t d[4]; + for (int k = 0; k < 4; k++) { + d[k] = vmulq_n_s32(r2a, tx_mat[2 * 16 + k]); + d[k] = vmlaq_n_s32(d[k], r2b, tx_mat[6 * 16 + k]); + d[k] = vmlaq_n_s32(d[k], r2c, tx_mat[10 * 16 + k]); + d[k] = vmlaq_n_s32(d[k], r2d, tx_mat[14 * 16 + k]); + } + + // Level 3: e/f from columns 0,4,8,12 (like DCT4). + int32x4_t f0 = vaddq_s32(vmulq_n_s32(r0b, tx_mat[4 * 16 + 0]), + vmulq_n_s32(r0d, tx_mat[12 * 16 + 0])); + int32x4_t e0 = vaddq_s32(vmulq_n_s32(r0a, tx_mat[0 * 16 + 0]), + vmulq_n_s32(r0c, tx_mat[8 * 16 + 0])); + int32x4_t f1 = vaddq_s32(vmulq_n_s32(r0b, tx_mat[4 * 16 + 1]), + vmulq_n_s32(r0d, tx_mat[12 * 16 + 1])); + int32x4_t e1 = vaddq_s32(vmulq_n_s32(r0a, tx_mat[0 * 16 + 1]), + vmulq_n_s32(r0c, tx_mat[8 * 16 + 1])); + + // Level 4: combine butterfly. + int32x4_t c[4]; + c[0] = vaddq_s32(e0, f0); + c[1] = vaddq_s32(e1, f1); + c[2] = vsubq_s32(e1, f1); + c[3] = vsubq_s32(e0, f0); + + int32x4_t a[8]; + for (int k = 0; k < 4; k++) { + a[k] = vaddq_s32(c[k], d[k]); + a[k + 4] = vsubq_s32(c[3 - k], d[3 - k]); + } + + // Output: out[k] = a[k]+b[k], out[k+8] = a[7-k]-b[7-k]. + for (int k = 0; k < 8; k++) { + int32x4_t ok = + round_shift_clamp(vaddq_s32(a[k], b[k]), neg_shift_v, min_v, max_v); + vst1q_s32(dst + k * line + j, ok); + } + for (int k = 0; k < 8; k++) { + int32x4_t ok = round_shift_clamp(vsubq_s32(a[7 - k], b[7 - k]), + neg_shift_v, min_v, max_v); + vst1q_s32(dst + (k + 8) * line + j, ok); + } + src += 64; + } + + // Scalar tail. + const int add = 1 << (shift - 1); + for (; j < nz_line; j++) { + int av[8], bv[8], cv[4], dv[4], ev[2], fv[2]; + for (int k = 0; k < 8; k++) { + bv[k] = tx_mat[1 * 16 + k] * src[1] + tx_mat[3 * 16 + k] * src[3] + + tx_mat[5 * 16 + k] * src[5] + tx_mat[7 * 16 + k] * src[7] + + tx_mat[9 * 16 + k] * src[9] + tx_mat[11 * 16 + k] * src[11] + + tx_mat[13 * 16 + k] * src[13] + tx_mat[15 * 16 + k] * src[15]; + } + for (int k = 0; k < 4; k++) { + dv[k] = tx_mat[2 * 16 + k] * src[2] + tx_mat[6 * 16 + k] * src[6] + + tx_mat[10 * 16 + k] * src[10] + tx_mat[14 * 16 + k] * src[14]; + } + fv[0] = tx_mat[4 * 16] * src[4] + tx_mat[12 * 16] * src[12]; + ev[0] = tx_mat[0] * src[0] + tx_mat[8 * 16] * src[8]; + fv[1] = tx_mat[4 * 16 + 1] * src[4] + tx_mat[12 * 16 + 1] * src[12]; + ev[1] = tx_mat[0 * 16 + 1] * src[0] + tx_mat[8 * 16 + 1] * src[8]; + for (int k = 0; k < 2; k++) { + cv[k] = ev[k] + fv[k]; + cv[k + 2] = ev[1 - k] - fv[1 - k]; + } + for (int k = 0; k < 4; k++) { + av[k] = cv[k] + dv[k]; + av[k + 4] = cv[3 - k] - dv[3 - k]; + } + for (int k = 0; k < 8; k++) { + dst[k * line + j] = + clamp((av[k] + bv[k] + add) >> shift, coef_min, coef_max); + dst[(k + 8) * line + j] = + clamp((av[7 - k] - bv[7 - k] + add) >> shift, coef_min, coef_max); + } + src += 16; + } +} + +// --------------------------------------------------------------------------- +// DCT2 size 32 NEON butterfly, processes 4 rows at a time. +// 5-level butterfly: b[16] from odd, d[8] from even-odd, f[4], g/h. +// Uses stack buffer for transposed columns since 32 > register count. +// --------------------------------------------------------------------------- +static void inv_txfm_dct2_size32_neon(const int *src, int *dst, int shift, + int line, int skip_line, + const int coef_min, const int coef_max) { + const int nz_line = line - skip_line; + const int *tx_mat = tx_kernel_dct2_size32[INV_TXFM][0]; + + const int32x4_t neg_shift_v = vdupq_n_s32(-shift); + const int32x4_t min_v = vdupq_n_s32(coef_min); + const int32x4_t max_v = vdupq_n_s32(coef_max); + + int j = 0; + for (; j + 3 < nz_line; j += 4) { + // Transpose 4 rows of 32 values into 32 column vectors on stack. + int32x4_t col[32]; + for (int g = 0; g < 8; g++) { + int32x4_t t0 = vld1q_s32(src + 0 * 32 + g * 4); + int32x4_t t1 = vld1q_s32(src + 1 * 32 + g * 4); + int32x4_t t2 = vld1q_s32(src + 2 * 32 + g * 4); + int32x4_t t3 = vld1q_s32(src + 3 * 32 + g * 4); + transpose_elems_inplace_s32_4x4(&t0, &t1, &t2, &t3); + col[g * 4 + 0] = t0; + col[g * 4 + 1] = t1; + col[g * 4 + 2] = t2; + col[g * 4 + 3] = t3; + } + + // Level 1: b[k] from 16 odd columns. + // Iterate over input columns for better data reuse (each column loaded + // once). + int32x4_t b[16]; + for (int k = 0; k < 16; k++) b[k] = vmulq_n_s32(col[1], tx_mat[1 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[3], tx_mat[3 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[5], tx_mat[5 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[7], tx_mat[7 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[9], tx_mat[9 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[11], tx_mat[11 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[13], tx_mat[13 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[15], tx_mat[15 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[17], tx_mat[17 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[19], tx_mat[19 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[21], tx_mat[21 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[23], tx_mat[23 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[25], tx_mat[25 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[27], tx_mat[27 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[29], tx_mat[29 * 32 + k]); + for (int k = 0; k < 16; k++) + b[k] = vmlaq_n_s32(b[k], col[31], tx_mat[31 * 32 + k]); + + // Level 2: d[k] from 8 even-odd columns (2,6,10,14,18,22,26,30). + int32x4_t d[8]; + for (int k = 0; k < 8; k++) d[k] = vmulq_n_s32(col[2], tx_mat[2 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[6], tx_mat[6 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[10], tx_mat[10 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[14], tx_mat[14 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[18], tx_mat[18 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[22], tx_mat[22 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[26], tx_mat[26 * 32 + k]); + for (int k = 0; k < 8; k++) + d[k] = vmlaq_n_s32(d[k], col[30], tx_mat[30 * 32 + k]); + + // Level 3: f[k] from columns 4,12,20,28. + int32x4_t f[4]; + for (int k = 0; k < 4; k++) { + f[k] = vmulq_n_s32(col[4], tx_mat[4 * 32 + k]); + f[k] = vmlaq_n_s32(f[k], col[12], tx_mat[12 * 32 + k]); + f[k] = vmlaq_n_s32(f[k], col[20], tx_mat[20 * 32 + k]); + f[k] = vmlaq_n_s32(f[k], col[28], tx_mat[28 * 32 + k]); + } + + // Level 4: g/h from columns 0,8,16,24. + int32x4_t h0 = vaddq_s32(vmulq_n_s32(col[8], tx_mat[8 * 32 + 0]), + vmulq_n_s32(col[24], tx_mat[24 * 32 + 0])); + int32x4_t h1 = vaddq_s32(vmulq_n_s32(col[8], tx_mat[8 * 32 + 1]), + vmulq_n_s32(col[24], tx_mat[24 * 32 + 1])); + int32x4_t g0 = vaddq_s32(vmulq_n_s32(col[0], tx_mat[0 * 32 + 0]), + vmulq_n_s32(col[16], tx_mat[16 * 32 + 0])); + int32x4_t g1 = vaddq_s32(vmulq_n_s32(col[0], tx_mat[0 * 32 + 1]), + vmulq_n_s32(col[16], tx_mat[16 * 32 + 1])); + + // Level 5: combine butterfly. + int32x4_t e[4]; + e[0] = vaddq_s32(g0, h0); + e[1] = vaddq_s32(g1, h1); + e[2] = vsubq_s32(g1, h1); + e[3] = vsubq_s32(g0, h0); + + int32x4_t c[8]; + for (int k = 0; k < 4; k++) { + c[k] = vaddq_s32(e[k], f[k]); + c[k + 4] = vsubq_s32(e[3 - k], f[3 - k]); + } + + int32x4_t a[16]; + for (int k = 0; k < 8; k++) { + a[k] = vaddq_s32(c[k], d[k]); + a[k + 8] = vsubq_s32(c[7 - k], d[7 - k]); + } + + // Output: out[k] = a[k]+b[k], out[k+16] = a[15-k]-b[15-k]. + for (int k = 0; k < 16; k++) { + int32x4_t ok = + round_shift_clamp(vaddq_s32(a[k], b[k]), neg_shift_v, min_v, max_v); + vst1q_s32(dst + k * line + j, ok); + } + for (int k = 0; k < 16; k++) { + int32x4_t ok = round_shift_clamp(vsubq_s32(a[15 - k], b[15 - k]), + neg_shift_v, min_v, max_v); + vst1q_s32(dst + (k + 16) * line + j, ok); + } + src += 128; + } + + // Scalar tail. + const int add = 1 << (shift - 1); + for (; j < nz_line; j++) { + int av[16], bv[16], cv[8], dv[8], ev[4], fv[4], gv[2], hv[2]; + for (int k = 0; k < 16; k++) { + bv[k] = 0; + for (int m = 0; m < 16; m++) + bv[k] += tx_mat[(2 * m + 1) * 32 + k] * src[2 * m + 1]; + } + for (int k = 0; k < 8; k++) { + dv[k] = tx_mat[2 * 32 + k] * src[2] + tx_mat[6 * 32 + k] * src[6] + + tx_mat[10 * 32 + k] * src[10] + tx_mat[14 * 32 + k] * src[14] + + tx_mat[18 * 32 + k] * src[18] + tx_mat[22 * 32 + k] * src[22] + + tx_mat[26 * 32 + k] * src[26] + tx_mat[30 * 32 + k] * src[30]; + } + for (int k = 0; k < 4; k++) { + fv[k] = tx_mat[4 * 32 + k] * src[4] + tx_mat[12 * 32 + k] * src[12] + + tx_mat[20 * 32 + k] * src[20] + tx_mat[28 * 32 + k] * src[28]; + } + hv[0] = tx_mat[8 * 32 + 0] * src[8] + tx_mat[24 * 32 + 0] * src[24]; + hv[1] = tx_mat[8 * 32 + 1] * src[8] + tx_mat[24 * 32 + 1] * src[24]; + gv[0] = tx_mat[0 * 32 + 0] * src[0] + tx_mat[16 * 32 + 0] * src[16]; + gv[1] = tx_mat[0 * 32 + 1] * src[0] + tx_mat[16 * 32 + 1] * src[16]; + ev[0] = gv[0] + hv[0]; + ev[1] = gv[1] + hv[1]; + ev[2] = gv[1] - hv[1]; + ev[3] = gv[0] - hv[0]; + for (int k = 0; k < 4; k++) { + cv[k] = ev[k] + fv[k]; + cv[k + 4] = ev[3 - k] - fv[3 - k]; + } + for (int k = 0; k < 8; k++) { + av[k] = cv[k] + dv[k]; + av[k + 8] = cv[7 - k] - dv[7 - k]; + } + for (int k = 0; k < 16; k++) { + dst[k * line + j] = + clamp((av[k] + bv[k] + add) >> shift, coef_min, coef_max); + dst[(k + 16) * line + j] = + clamp((av[15 - k] - bv[15 - k] + add) >> shift, coef_min, coef_max); + } + src += 32; + } +} + +// --------------------------------------------------------------------------- +// 1D dispatch for NEON-supported types. +// --------------------------------------------------------------------------- +static void inv_transform_1d_neon(const int *src, int *dst, int shift, int line, + int skip_line, int zero_line, + const int coef_min, const int coef_max, + const int tx_type_index, + const int size_index) { + (void)zero_line; + switch (tx_type_index) { + case DCT2: + if (size_index == 0) + inv_txfm_dct2_size4_neon(src, dst, shift, line, skip_line, coef_min, + coef_max); + else if (size_index == 1) + inv_txfm_dct2_size8_neon(src, dst, shift, line, skip_line, coef_min, + coef_max); + else if (size_index == 2) + inv_txfm_dct2_size16_neon(src, dst, shift, line, skip_line, coef_min, + coef_max); + else + inv_txfm_dct2_size32_neon(src, dst, shift, line, skip_line, coef_min, + coef_max); + break; + case IDT: + inv_txfm_idtx_neon(src, dst, shift, line, skip_line, coef_min, coef_max, + size_index); + break; + case DST7: { + static const int *const adst_kernels[] = { + tx_kernel_adst_size4[INV_TXFM][0], + tx_kernel_adst_size8[INV_TXFM][0], + tx_kernel_adst_size16[INV_TXFM][0], + }; + static const int sizes[] = { 4, 8, 16 }; + inv_txfm_matmul_neon(src, dst, shift, line, skip_line, coef_min, coef_max, + adst_kernels[size_index], sizes[size_index], 0); + break; + } + case DCT8: { + static const int *const fdst_kernels[] = { + tx_kernel_fdst_size4[INV_TXFM][0], + tx_kernel_fdst_size8[INV_TXFM][0], + tx_kernel_fdst_size16[INV_TXFM][0], + }; + static const int sizes[] = { 4, 8, 16 }; + inv_txfm_matmul_neon(src, dst, shift, line, skip_line, coef_min, coef_max, + fdst_kernels[size_index], sizes[size_index], 0); + break; + } + case DDTX: { + static const int *const ddtx_kernels[] = { + tx_kernel_ddtx_size4[INV_TXFM][0], + tx_kernel_ddtx_size8[INV_TXFM][0], + tx_kernel_ddtx_size16[INV_TXFM][0], + }; + static const int sizes[] = { 4, 8, 16 }; + inv_txfm_matmul_neon(src, dst, shift, line, skip_line, coef_min, coef_max, + ddtx_kernels[size_index], sizes[size_index], 0); + break; + } + case FDDT: { + static const int *const ddtx_kernels[] = { + tx_kernel_ddtx_size4[INV_TXFM][0], + tx_kernel_ddtx_size8[INV_TXFM][0], + tx_kernel_ddtx_size16[INV_TXFM][0], + }; + static const int sizes[] = { 4, 8, 16 }; + inv_txfm_matmul_neon(src, dst, shift, line, skip_line, coef_min, coef_max, + ddtx_kernels[size_index], sizes[size_index], 1); + break; + } + default: assert(0 && "Unsupported tx_type in NEON path"); break; + } +} + +// Check whether both axes can be handled by the NEON 1D implementations. +static int neon_path_supported(int tx_type_row, int tx_type_col, + int tx_wide_index, int tx_high_index) { + // IDTX is supported at all sizes. + // DCT2 supported at all sizes (4,8,16,32). + // DST7/DCT8/DDTX/FDDT supported at sizes 4,8,16 (size_index <= 2). + const int row_ok = (tx_type_row == IDT) || (tx_type_row == DCT2) || + ((tx_type_row == DST7 || tx_type_row == DCT8 || + tx_type_row == DDTX || tx_type_row == FDDT) && + tx_wide_index <= 2); + const int col_ok = (tx_type_col == IDT) || (tx_type_col == DCT2) || + ((tx_type_col == DST7 || tx_type_col == DCT8 || + tx_type_col == DDTX || tx_type_col == FDDT) && + tx_high_index <= 2); + return row_ok && col_ok; +} + +// --------------------------------------------------------------------------- +// 2D entry point. +// --------------------------------------------------------------------------- +void inv_txfm_neon(const tran_low_t *input, uint16_t *dest, int stride, + const TxfmParam *txfm_param) { + const TX_SIZE tx_size = txfm_param->tx_size; + const TX_TYPE tx_type = txfm_param->tx_type; + + // Lossless: delegate to C (uses WHT, not DCT). + if (txfm_param->lossless) { + inv_txfm_c(input, dest, stride, txfm_param); + return; + } + + int width = AVMMIN(MAX_TX_SIZE >> 1, tx_size_wide[tx_size]); + int height = AVMMIN(MAX_TX_SIZE >> 1, tx_size_high[tx_size]); + const uint32_t tx_wide_index = + AVMMIN(MAX_TX_SIZE_LOG2 - 1, tx_size_wide_log2[tx_size]) - 2; + const uint32_t tx_high_index = + AVMMIN(MAX_TX_SIZE_LOG2 - 1, tx_size_high_log2[tx_size]) - 2; + + int tx_type_row = g_hor_tx_type[tx_type]; + int tx_type_col = g_ver_tx_type[tx_type]; + + // Apply DDT substitution (same logic as inv_txfm_c). + if (txfm_param->use_ddt) { + const int use_ddt_row = (width == 4 && REPLACE_ADST4) || + (width == 8 && REPLACE_ADST8) || + (width == 16 && REPLACE_ADST16); + if (use_ddt_row && (tx_type_row == DST7 || tx_type_row == DCT8)) + tx_type_row = (tx_type_row == DST7) ? DDTX : FDDT; + const int use_ddt_col = (height == 4 && REPLACE_ADST4) || + (height == 8 && REPLACE_ADST8) || + (height == 16 && REPLACE_ADST16); + if (use_ddt_col && (tx_type_col == DST7 || tx_type_col == DCT8)) + tx_type_col = (tx_type_col == DST7) ? DDTX : FDDT; + } + + // Check if we can handle both axes in NEON. + if (!neon_path_supported(tx_type_row, tx_type_col, tx_wide_index, + tx_high_index)) { + inv_txfm_c(input, dest, stride, txfm_param); + return; + } + + const int intermediate_bitdepth = txfm_param->bd + 8; + const int rng_min = -(1 << (intermediate_bitdepth - 1)); + const int rng_max = (1 << (intermediate_bitdepth - 1)) - 1; + const int col_rng_min = -(1 << txfm_param->bd); + const int col_rng_max = (1 << txfm_param->bd) - 1; + + const int log2width = tx_size_wide_log2[tx_size]; + const int log2height = tx_size_high_log2[tx_size]; + const int do_sqrt2 = ((log2width + log2height) & 1) ? 1 : 0; + + int block[MAX_TX_SQUARE]; + int tmp[MAX_TX_SQUARE]; + const int n = AVMMIN(1024, width * height); + + // Load input with optional sqrt2 scaling, then clamp to intermediate + // bitdepth. + const int32x4_t cmin = vdupq_n_s32(rng_min); + const int32x4_t cmax = vdupq_n_s32(rng_max); + if (do_sqrt2) { + int i = 0; + for (; i + 3 < n; i += 4) { + int32x4_t v = vld1q_s32(input + i); + int64x2_t lo = vmull_s32(vget_low_s32(v), vdup_n_s32(NewInvSqrt2)); + int64x2_t hi = vmull_s32(vget_high_s32(v), vdup_n_s32(NewInvSqrt2)); + int32x2_t lo_s = + vmovn_s64(vshrq_n_s64(vaddq_s64(lo, vdupq_n_s64(1 << 11)), 12)); + int32x2_t hi_s = + vmovn_s64(vshrq_n_s64(vaddq_s64(hi, vdupq_n_s64(1 << 11)), 12)); + v = vcombine_s32(lo_s, hi_s); + v = vmaxq_s32(vminq_s32(v, cmax), cmin); + vst1q_s32(block + i, v); + } + for (; i < n; i++) { + int val = round_shift((int64_t)input[i] * NewInvSqrt2, NewSqrt2Bits); + block[i] = clamp(val, rng_min, rng_max); + } + } else { + int i = 0; + for (; i + 3 < n; i += 4) { + int32x4_t v = vld1q_s32(input + i); + v = vmaxq_s32(vminq_s32(v, cmax), cmin); + vst1q_s32(block + i, v); + } + for (; i < n; i++) block[i] = clamp_value(input[i], intermediate_bitdepth); + } + + const int shift_1st = inv_tx_shift[tx_size][0]; + const int shift_2nd = inv_tx_shift[tx_size][1]; + + // Row pass (horizontal 1D transform). + inv_transform_1d_neon(block, tmp, shift_1st, height, 0, 0, rng_min, rng_max, + tx_type_row, tx_wide_index); + + // Column pass (vertical 1D transform). + inv_transform_1d_neon(tmp, block, shift_2nd, width, 0, 0, col_rng_min, + col_rng_max, tx_type_col, tx_high_index); + + // Width expansion (32->64). + if (width < tx_size_wide[tx_size]) { + memcpy(tmp, block, width * height * sizeof(*block)); + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + block[y * 2 * width + 2 * x] = tmp[y * width + x]; + block[y * 2 * width + 2 * x + 1] = tmp[y * width + x]; + } + } + width = tx_size_wide[tx_size]; + } + + // Height expansion (32->64). + if (height < tx_size_high[tx_size]) { + memcpy(tmp, block, width * height * sizeof(*block)); + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + block[2 * y * width + x] = tmp[y * width + x]; + block[(2 * y + 1) * width + x] = tmp[y * width + x]; + } + } + height = tx_size_high[tx_size]; + } + + // Write output with NEON: vaddw_s16 + vqmovun_s32 (saturating narrow clamps + // negatives to 0 for free, then vmin handles the bd_max upper bound). + const uint16x8_t bd_max_u16 = vdupq_n_u16((1 << txfm_param->bd) - 1); + for (int y = 0; y < height; y++) { + int x = 0; + for (; x + 7 < width; x += 8) { + uint16x8_t dw = vld1q_u16(dest + y * stride + x); + int32x4_t coeff_lo = vld1q_s32(block + y * width + x); + int32x4_t coeff_hi = vld1q_s32(block + y * width + x + 4); + int16x8_t dest_s16 = vreinterpretq_s16_u16(dw); + int32x4_t sum_lo = vaddw_s16(coeff_lo, vget_low_s16(dest_s16)); + int32x4_t sum_hi = vaddw_s16(coeff_hi, vget_high_s16(dest_s16)); + uint16x4_t out_lo = vqmovun_s32(sum_lo); + uint16x4_t out_hi = vqmovun_s32(sum_hi); + uint16x8_t result = vminq_u16(vcombine_u16(out_lo, out_hi), bd_max_u16); + vst1q_u16(dest + y * stride + x, result); + } + for (; x + 3 < width; x += 4) { + uint16x4_t d = vld1_u16(dest + y * stride + x); + int32x4_t coeff = vld1q_s32(block + y * width + x); + int32x4_t sum = vaddw_s16(coeff, vreinterpret_s16_u16(d)); + uint16x4_t out = vqmovun_s32(sum); + vst1_u16(dest + y * stride + x, vmin_u16(out, vget_low_u16(bd_max_u16))); + } + for (; x < width; x++) { + dest[y * stride + x] = highbd_clip_pixel_add( + dest[y * stride + x], block[y * width + x], txfm_param->bd); + } + } +} + +void av2_highbd_inv_txfm_add_neon(const tran_low_t *input, uint16_t *dest, + int stride, const TxfmParam *txfm_param) { + assert(av2_ext_tx_used[txfm_param->tx_set_type][txfm_param->tx_type]); + inv_txfm_neon(input, dest, stride, txfm_param); +} diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index fa092d2ede..d49aa62a33 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -139,10 +139,10 @@ () add_proto qw/void inv_stxfm/ , "tran_low_t *src, tran_low_t *dst, const PREDICTION_MODE mode, const uint8_t stx_idx, const int size, const int bd"; specialize qw/inv_stxfm sse4_1 avx2/; add_proto qw/void av2_highbd_inv_txfm_add/, "const tran_low_t *input, uint16_t *dest, int stride, const TxfmParam *txfm_param"; -specialize qw/av2_highbd_inv_txfm_add sse4_1 avx2/; +specialize qw/av2_highbd_inv_txfm_add sse4_1 avx2 neon/; add_proto qw/void inv_txfm/, "const tran_low_t *input, uint16_t *dest, int stride, const TxfmParam *txfm_param"; -specialize qw/inv_txfm avx2/; +specialize qw/inv_txfm avx2 neon/; add_proto qw/void av2_highbd_inv_txfm_add_vert/, "const tran_low_t *input, uint16_t *dest, int stride, const TxfmParam *txfm_param"; add_proto qw/void av2_highbd_inv_txfm_add_horz/, "const tran_low_t *input, uint16_t *dest, int stride, const TxfmParam *txfm_param"; diff --git a/test/inv_txfm_variant_test.cc b/test/inv_txfm_variant_test.cc new file mode 100644 index 0000000000..70c29ba86b --- /dev/null +++ b/test/inv_txfm_variant_test.cc @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause + * Clear License was not distributed with this source code in the LICENSE file, + * you can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. + * If the Alliance for Open Media Patent License 1.0 was not distributed with + * this source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "third_party/googletest/src/googletest/include/gtest/gtest.h" + +#include "config/av2_rtcd.h" + +#include "av2/common/common_data.h" +#include "av2/common/idct.h" +#include "avm_dsp/txfm_common.h" +#include "avm_ports/mem.h" +#include "test/acm_random.h" + +using libavm_test::ACMRandom; + +namespace { + +struct InvTxfmParam { + TX_SIZE tx_size; + TX_TYPE tx_type; + int bd; + int seed; + int use_ddt; +}; + +class InvTxfmVariantTest : public ::testing::TestWithParam {}; + +TEST_P(InvTxfmVariantTest, BitExact) { + const InvTxfmParam &p = GetParam(); + const int txw = tx_size_wide[p.tx_size]; + const int txh = tx_size_high[p.tx_size]; + const int num_coeffs = txw * txh; + const int max_pixel = (1 << p.bd) - 1; + const int stride = txw + 8; + const int buf_size = stride * txh; + + ACMRandom rng(p.seed); + + DECLARE_ALIGNED(32, tran_low_t, input[64 * 64]); + DECLARE_ALIGNED(16, uint16_t, ref_dest[72 * 64]); + DECLARE_ALIGNED(16, uint16_t, opt_dest[72 * 64]); + + memset(input, 0, sizeof(input)); + for (int k = 0; k < num_coeffs; k++) { + int r = rng.Rand16() & 0x3FF; + if (r < 100) { + int val = rng.Rand15Signed() % (1 << (p.bd + 2)); + input[k] = (rng.Rand16() & 1) ? val : -val; + } + } + + for (int k = 0; k < buf_size; k++) { + ref_dest[k] = rng.Rand16() & max_pixel; + opt_dest[k] = ref_dest[k]; + } + + TxfmParam txfm_param; + memset(&txfm_param, 0, sizeof(txfm_param)); + txfm_param.tx_size = p.tx_size; + txfm_param.tx_type = p.tx_type; + txfm_param.bd = p.bd; + txfm_param.lossless = 0; + txfm_param.use_ddt = p.use_ddt; + + inv_txfm_c(input, ref_dest, stride, &txfm_param); + inv_txfm(input, opt_dest, stride, &txfm_param); + + for (int y = 0; y < txh; y++) { + for (int x = 0; x < txw; x++) { + ASSERT_EQ(ref_dest[y * stride + x], opt_dest[y * stride + x]) + << "mismatch at (" << x << "," << y << ")" << " tx_size=" << p.tx_size + << " tx_type=" << p.tx_type << " bd=" << p.bd << " seed=" << p.seed + << " use_ddt=" << p.use_ddt; + } + } +} + +static bool is_valid_inv_txfm_combo(TX_SIZE sz, TX_TYPE ty) { + if (ty == DCT_DCT || ty == IDTX) return true; + const int w = tx_size_wide[sz]; + const int h = tx_size_high[sz]; + const int row_needs_adst = (ty == DCT_ADST || ty == ADST_ADST); + const int col_needs_adst = (ty == ADST_DCT || ty == ADST_ADST); + if (row_needs_adst && w > 16) return false; + if (col_needs_adst && h > 16) return false; + return true; +} + +static std::vector GenerateParams() { + std::vector params; + const int seeds[] = { 1, 42, 100, 255, 1000, 2023, 3141, 5678, 7777, 9999 }; + const int bds[] = { 8, 10, 12 }; + const TX_SIZE sizes[] = { TX_4X4, TX_8X8, TX_16X16, TX_32X32, TX_4X8, + TX_8X4, TX_8X16, TX_16X8, TX_16X32, TX_32X16 }; + const TX_TYPE types[] = { DCT_DCT, ADST_DCT, DCT_ADST, ADST_ADST, IDTX }; + + for (int use_ddt = 0; use_ddt <= 1; use_ddt++) + for (auto bd : bds) + for (auto sz : sizes) + for (auto ty : types) + if (is_valid_inv_txfm_combo(sz, ty)) + for (auto seed : seeds) + params.push_back({ sz, ty, bd, seed, use_ddt }); + + return params; +} + +INSTANTIATE_TEST_SUITE_P(Variants, InvTxfmVariantTest, + ::testing::ValuesIn(GenerateParams())); + +TEST(InvTxfmVariantExtreme, AllZero) { + const TX_SIZE sizes[] = { TX_4X4, TX_8X8, TX_16X16, TX_32X32 }; + const int bds[] = { 8, 10, 12 }; + + for (auto bd : bds) { + for (auto sz : sizes) { + const int txw = tx_size_wide[sz]; + const int txh = tx_size_high[sz]; + const int stride = txw + 8; + const int buf_size = stride * txh; + + DECLARE_ALIGNED(32, tran_low_t, input[64 * 64]); + DECLARE_ALIGNED(16, uint16_t, ref_dest[72 * 64]); + DECLARE_ALIGNED(16, uint16_t, opt_dest[72 * 64]); + + memset(input, 0, sizeof(input)); + for (int k = 0; k < buf_size; k++) { + ref_dest[k] = (1 << bd) / 2; + opt_dest[k] = ref_dest[k]; + } + + TxfmParam txfm_param; + memset(&txfm_param, 0, sizeof(txfm_param)); + txfm_param.tx_size = sz; + txfm_param.tx_type = DCT_DCT; + txfm_param.bd = bd; + + inv_txfm_c(input, ref_dest, stride, &txfm_param); + inv_txfm(input, opt_dest, stride, &txfm_param); + + for (int i = 0; i < buf_size; i++) { + ASSERT_EQ(ref_dest[i], opt_dest[i]) + << "all-zero mismatch at i=" << i << " sz=" << sz << " bd=" << bd; + } + } + } +} + +TEST(InvTxfmVariantExtreme, DcOnly) { + const TX_SIZE sizes[] = { TX_4X4, TX_8X8, TX_16X16, TX_32X32 }; + const int bds[] = { 8, 10, 12 }; + + for (auto bd : bds) { + for (auto sz : sizes) { + const int txw = tx_size_wide[sz]; + const int txh = tx_size_high[sz]; + const int stride = txw + 8; + const int buf_size = stride * txh; + + DECLARE_ALIGNED(32, tran_low_t, input[64 * 64]); + DECLARE_ALIGNED(16, uint16_t, ref_dest[72 * 64]); + DECLARE_ALIGNED(16, uint16_t, opt_dest[72 * 64]); + + memset(input, 0, sizeof(input)); + input[0] = (1 << (bd + 2)) - 1; + + for (int k = 0; k < buf_size; k++) { + ref_dest[k] = 0; + opt_dest[k] = 0; + } + + TxfmParam txfm_param; + memset(&txfm_param, 0, sizeof(txfm_param)); + txfm_param.tx_size = sz; + txfm_param.tx_type = DCT_DCT; + txfm_param.bd = bd; + + inv_txfm_c(input, ref_dest, stride, &txfm_param); + inv_txfm(input, opt_dest, stride, &txfm_param); + + for (int y = 0; y < txh; y++) { + for (int x = 0; x < txw; x++) { + ASSERT_EQ(ref_dest[y * stride + x], opt_dest[y * stride + x]) + << "dc-only mismatch at (" << x << "," << y << ")" << " sz=" << sz + << " bd=" << bd; + } + } + } + } +} + +} // namespace diff --git a/test/test.cmake b/test/test.cmake index 3f68ac459f..b212feb0ea 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -103,7 +103,8 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/scan_test.cc" "${AVM_ROOT}/test/simd_cmp_impl.h" "${AVM_ROOT}/test/simd_impl.h" - "${AVM_ROOT}/test/gdf_test.cc") + "${AVM_ROOT}/test/gdf_test.cc" + "${AVM_ROOT}/test/inv_txfm_variant_test.cc") if(CONFIG_ACCOUNTING) list(APPEND AVM_UNIT_TEST_COMMON_SOURCES From 98498835e8c682282ecb91037955d9daf7c0acdf Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 10 Aug 2026 16:00:00 -0700 Subject: [PATCH 037/205] Have write_tile_params() call avm_internal_error() (#5225) Need to pass `struct avm_internal_error_info *error_info` from the callers to write_tile_params(). Also need to change one top-level caller, av2_get_global_headers(), to call setjmp(). --- av2/encoder/bitstream.c | 38 ++++++++++++++++++++++++-------------- av2/encoder/bitstream.h | 5 +++-- av2/encoder/encoder.c | 12 ++++++++++-- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/av2/encoder/bitstream.c b/av2/encoder/bitstream.c index 869aac73cf..b1ec302e72 100644 --- a/av2/encoder/bitstream.c +++ b/av2/encoder/bitstream.c @@ -4216,8 +4216,9 @@ static AVM_INLINE void write_frame_interp_filter( avm_wb_write_literal(wb, filter, LOG_SWITCHABLE_FILTERS); } -static AVM_INLINE void write_tile_params(const CommonTileParams *const tiles, - struct avm_write_bit_buffer *wb) { +static AVM_INLINE void write_tile_params( + const CommonTileParams *const tiles, struct avm_write_bit_buffer *wb, + struct avm_internal_error_info *error_info) { avm_wb_write_bit(wb, tiles->uniform_spacing); if (tiles->uniform_spacing) { @@ -4246,7 +4247,10 @@ static AVM_INLINE void write_tile_params(const CommonTileParams *const tiles, for (i = 0; i < tiles->cols; i++) { size_sb = tiles->col_start_sb[i + 1] - tiles->col_start_sb[i]; const int n = AVMMIN(width_sb, tiles->max_width_sb); - assert(size_sb >= 1 && size_sb <= n); + if (size_sb < 1 || size_sb > n) { + avm_internal_error(error_info, AVM_CODEC_ERROR, + "Invalid width_in_sbs_minus_1"); + } wb_write_uniform(wb, n, size_sb - 1); width_sb -= size_sb; } @@ -4257,7 +4261,10 @@ static AVM_INLINE void write_tile_params(const CommonTileParams *const tiles, for (i = 0; i < tiles->rows; i++) { size_sb = tiles->row_start_sb[i + 1] - tiles->row_start_sb[i]; const int n = AVMMIN(height_sb, tiles->max_height_sb); - assert(size_sb >= 1 && size_sb <= n); + if (size_sb < 1 || size_sb > n) { + avm_internal_error(error_info, AVM_CODEC_ERROR, + "Invalid height_in_sbs_minus_1"); + } wb_write_uniform(wb, n, size_sb - 1); height_sb -= size_sb; } @@ -4308,7 +4315,7 @@ static AVM_INLINE void write_tile_info(AV2_COMMON *const cm, } assert(IMPLIES(reuse, check_tile_equivalence(tile_params, &cm->tiles))); } - if (!reuse) write_tile_params(&cm->tiles, wb); + if (!reuse) write_tile_params(&cm->tiles, wb, &cm->error); *saved_wb = *wb; if (cm->tiles.rows * cm->tiles.cols > 1 && cm->features.tip_frame_mode != TIP_FRAME_AS_OUTPUT) { @@ -4468,11 +4475,12 @@ void av2_write_timing_info_header(const avm_timing_info_t *const timing_info, } static AVM_INLINE void write_sequence_tile_config( - const SequenceHeader *const seq_params, struct avm_write_bit_buffer *wb) { + const SequenceHeader *const seq_params, struct avm_write_bit_buffer *wb, + struct avm_internal_error_info *error_info) { avm_wb_write_bit(wb, seq_params->seq_tile_info_present_flag); if (seq_params->seq_tile_info_present_flag) { avm_wb_write_bit(wb, seq_params->tile_params.allow_tile_info_change); - write_tile_params(&seq_params->tile_params.tile_info, wb); + write_tile_params(&seq_params->tile_params.tile_info, wb, error_info); } } @@ -4847,7 +4855,8 @@ void write_sequence_segment_tool_flags(const SequenceHeader *const seq_params, } static AVM_INLINE void write_sequence_header( - const SequenceHeader *const seq_params, struct avm_write_bit_buffer *wb) { + const SequenceHeader *const seq_params, struct avm_write_bit_buffer *wb, + struct avm_internal_error_info *error_info) { write_sequence_partition_group_tool_flags(seq_params, wb); write_sequence_segment_tool_flags(seq_params, wb); write_sequence_intra_group_tool_flags(seq_params, wb); @@ -4855,7 +4864,7 @@ static AVM_INLINE void write_sequence_header( write_sequence_scc_group_tool_flags(seq_params, wb); write_sequence_transform_quant_entropy_group_tool_flags(seq_params, wb); write_sequence_filter_group_tool_flags(seq_params, wb); - write_sequence_tile_config(seq_params, wb); + write_sequence_tile_config(seq_params, wb, error_info); } static void write_frame_max_drl_bits(AV2_COMMON *const cm, @@ -5940,8 +5949,9 @@ static void av2_write_mlayer_dependency_info(struct avm_write_bit_buffer *wb, } } -uint32_t av2_write_sequence_header_obu(const SequenceHeader *seq_params, - uint8_t *const dst) { +uint32_t av2_write_sequence_header_obu( + const SequenceHeader *seq_params, uint8_t *const dst, + struct avm_internal_error_info *error_info) { struct avm_write_bit_buffer wb = { dst, 0 }; uint32_t size = 0; @@ -6018,7 +6028,7 @@ uint32_t av2_write_sequence_header_obu(const SequenceHeader *seq_params, } } - write_sequence_header(seq_params, &wb); + write_sequence_header(seq_params, &wb, error_info); avm_wb_write_bit(&wb, seq_params->film_grain_params_present); avm_wb_write_bit(&wb, seq_params->seq_extension_present_flag); @@ -6993,8 +7003,8 @@ static int av2_pack_bitstream_internal(AV2_COMP *const cpi, uint8_t *dst, obu_header_size = av2_write_obu_header(OBU_SEQUENCE_HEADER, 0, 0, data); if (cm->seq_params.seq_seg_info_present_flag) av2_set_seq_seg_info(&cm->seq_params, &cm->seg); - obu_payload_size = - av2_write_sequence_header_obu(&cm->seq_params, data + obu_header_size); + obu_payload_size = av2_write_sequence_header_obu( + &cm->seq_params, data + obu_header_size, &cm->error); size_t length_field_size = obu_memmove(obu_header_size, obu_payload_size, data); if (av2_write_uleb_obu_size(obu_header_size, obu_payload_size, data) != diff --git a/av2/encoder/bitstream.h b/av2/encoder/bitstream.h index 58f2238b02..2e5c235d79 100644 --- a/av2/encoder/bitstream.h +++ b/av2/encoder/bitstream.h @@ -40,8 +40,9 @@ int write_fgm_obu(AV2_COMP *cpi, struct film_grain_model *fgm, // Writes only the OBU Sequence Header payload, and returns the size of the // payload written to 'dst'. This function does not write the OBU header, the // optional extension, or the OBU size to 'dst'. -uint32_t av2_write_sequence_header_obu(const SequenceHeader *seq_params, - uint8_t *const dst); +uint32_t av2_write_sequence_header_obu( + const SequenceHeader *seq_params, uint8_t *const dst, + struct avm_internal_error_info *error_info); // Writes the OBU header byte, and the OBU header extension byte when // obu_type is not OBU_MULTI_STREAM_DECODER_OPERATION and obu_layer is non-zero. diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index e0d0376d4d..df551c3cfc 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -5664,9 +5664,17 @@ void av2_apply_encoding_flags(AV2_COMP *cpi, avm_enc_frame_flags_t flags) { avm_fixed_buf_t *av2_get_global_headers(AV2_COMP *cpi) { if (!cpi) return NULL; + AV2_COMMON *const cm = &cpi->common; uint8_t header_buf[512] = { 0 }; - const uint32_t sequence_header_size = - av2_write_sequence_header_obu(&cpi->common.seq_params, &header_buf[0]); + + if (setjmp(cm->error.jmp)) { + cm->error.setjmp = 0; + return NULL; + } + cm->error.setjmp = 1; + const uint32_t sequence_header_size = av2_write_sequence_header_obu( + &cm->seq_params, &header_buf[0], &cm->error); + cm->error.setjmp = 0; assert(sequence_header_size <= sizeof(header_buf)); if (sequence_header_size == 0) return NULL; From 2423eb429797c7670f75f2717abdeff2f771fb5f Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Mon, 10 Aug 2026 16:00:54 -0700 Subject: [PATCH 038/205] Fix encoder test-decode failure when S-frames are enabled (#5210) With --enable-sframe=1, the encoder aborts during test decoding with "Failed to get decoder reference frame". Frames reaching the implicit-output suppression are hidden altrefs, so implicit output is their only route to being output, and gating it on enable_sframe cleared it while overlays still used show_existing_frame and emitted zero bytes, leaving nothing to output those display orders. The suppression is only needed when the overlay is fully coded instead, which happens only in global error resilient mode, so gate on g_error_resilient_mode alone at both sites. That mode already had enable_sframe 0, so its output is bit-identical. Fixes issue #5209. --- av2/encoder/encode_strategy.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/av2/encoder/encode_strategy.c b/av2/encoder/encode_strategy.c index 6e6eb63d39..aa91fe5060 100644 --- a/av2/encoder/encode_strategy.c +++ b/av2/encoder/encode_strategy.c @@ -500,11 +500,11 @@ static struct lookahead_entry *choose_frame_source( cm->allow_direct_use = 0; cm->implicit_output_picture = cm->allow_direct_use; - // When S-frames prevent show_existing_frame for overlays, the hidden - // altref must not be implicitly output to avoid duplicate frames. + // Suppress implicit output only in global error resilient mode, where + // every inter frame becomes an S-frame so allow_show_existing() always + // returns 0 and the overlay outputs that display order itself. if (cm->implicit_output_picture && - (cm->current_frame.frame_type == S_FRAME || - cpi->oxcf.tool_cfg.g_error_resilient_mode)) { + cpi->oxcf.tool_cfg.g_error_resilient_mode) { cm->implicit_output_picture = 0; } } @@ -1017,13 +1017,13 @@ static int denoise_and_encode(AV2_COMP *const cpi, uint8_t *const dest, if (cpi->oxcf.ref_frm_cfg.add_sef_for_hidden_frames) { cm->implicit_output_picture = 0; } - // When S-frames prevent show_existing_frame for overlays, the overlay - // will be fully coded and produce its own output. The hidden altref - // must not be implicitly output, otherwise the decoder outputs both - // the evicted altref and the overlay, causing duplicate frames. + // Frames reaching this point are hidden altrefs, so implicit output is + // their only way to be output. Clear it only in global error resilient + // mode, where every inter frame becomes an S-frame so the fully coded + // overlay outputs that display order itself; elsewhere overlays emit + // zero-byte SEFs and clearing this orphans those display orders. if (cm->implicit_output_picture && - (cpi->oxcf.kf_cfg.enable_sframe || - cpi->oxcf.tool_cfg.g_error_resilient_mode)) { + cpi->oxcf.tool_cfg.g_error_resilient_mode) { cm->implicit_output_picture = 0; } From 2efcd354cd0c99eedebbad78f6d34af54177f10a Mon Sep 17 00:00:00 2001 From: Andrey Norkin <40504168+andrey-norkin@users.noreply.github.com> Date: Mon, 10 Aug 2026 16:14:27 -0700 Subject: [PATCH 039/205] Fix incorrect display_clock_tick calculation (#5215) This is a fix to issue #5214. --- av2/common/level.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/av2/common/level.c b/av2/common/level.c index 2c33bc62d3..d3374e1ed1 100644 --- a/av2/common/level.c +++ b/av2/common/level.c @@ -826,8 +826,7 @@ void av2_decoder_model_init(const AV2_COMP *const cpi, AV2_LEVEL level, decoder_model->num_ticks_per_picture = cm->ci_params_encoder.timing_info.num_ticks_per_elemental_duration; decoder_model->display_clock_tick = - (double) - cm->ci_params_encoder.timing_info.num_ticks_per_elemental_duration / + (double)cm->ci_params_encoder.timing_info.num_units_in_display_tick / cm->ci_params_encoder.timing_info.time_scale; } else { decoder_model->num_ticks_per_picture = 1; From 4831498c933bccbd5a20d25788543cfd2bbaea70 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Tue, 11 Aug 2026 08:55:34 -0700 Subject: [PATCH 040/205] av2_set_seq_tile_info,av2_set_tile_info detect err (#5224) Port Yannis's PR #5187 to the encoder, part 2. Detect errors in av2_set_seq_tile_info() and av2_set_tile_info() with assertions. These two functions return void, and although they have or can be given access to cm->error, some of their callers have not called setjmp(), so they can't call avm_internal_error(). Do not recalculate sb_cols and sb_rows in av2_set_tile_info(). They are already calculated by the av2_get_tile_limits() call and saved in tiles->sb_cols and tiles->sb_rows. Although av2_set_seq_tile_info() and av2_set_tile_info() are quite similar, they are different enough that it is hard to merge them into a single function. --- av2/encoder/encoder_utils.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/av2/encoder/encoder_utils.h b/av2/encoder/encoder_utils.h index d049f379dd..d6012ba3e4 100644 --- a/av2/encoder/encoder_utils.h +++ b/av2/encoder/encoder_utils.h @@ -1007,6 +1007,7 @@ static AVM_INLINE void av2_set_seq_tile_info(SequenceHeader *const seq_params, if (j >= tile_cfg->tile_width_count) j = 0; start_sb += AVMMIN(size_sb, tiles->max_width_sb); } + assert(start_sb == sb_cols); tiles->cols = i; tiles->col_start_sb[i] = sb_cols; } @@ -1025,6 +1026,7 @@ static AVM_INLINE void av2_set_seq_tile_info(SequenceHeader *const seq_params, if (j >= tile_cfg->tile_height_count) j = 0; start_sb += AVMMIN(size_sb, tiles->max_height_sb); } + assert(start_sb == sb_rows); tiles->rows = i; tiles->row_start_sb[i] = sb_rows; } @@ -1037,7 +1039,7 @@ static AVM_INLINE void av2_set_tile_info(AV2_COMMON *const cm, CommonTileParams *const tiles = &cm->tiles; int i, start_sb; - av2_get_tile_limits(&cm->tiles, mi_params->mi_rows, mi_params->mi_cols, + av2_get_tile_limits(tiles, mi_params->mi_rows, mi_params->mi_cols, cm->mib_size_log2, cm->seq_params.mib_size_log2, cm->seq_params.seq_max_level_idx, cm->seq_params.seq_tier); @@ -1064,8 +1066,7 @@ static AVM_INLINE void av2_set_tile_info(AV2_COMMON *const cm, tiles->log2_cols = AVMMAX(tile_cfg->tile_columns, tiles->min_log2_cols); tiles->log2_cols = AVMMIN(tiles->log2_cols, tiles->max_log2_cols); } else { - int mi_cols = ALIGN_POWER_OF_TWO(mi_params->mi_cols, cm->mib_size_log2); - int sb_cols = mi_cols >> cm->mib_size_log2; + int sb_cols = tiles->sb_cols; int size_sb, j = 0; tiles->uniform_spacing = 0; for (i = 0, start_sb = 0; start_sb < sb_cols && i < MAX_TILE_COLS; i++) { @@ -1074,6 +1075,7 @@ static AVM_INLINE void av2_set_tile_info(AV2_COMMON *const cm, if (j >= tile_cfg->tile_width_count) j = 0; start_sb += AVMMIN(size_sb, tiles->max_width_sb); } + assert(start_sb == sb_cols); tiles->cols = i; tiles->col_start_sb[i] = sb_cols; } @@ -1087,8 +1089,7 @@ static AVM_INLINE void av2_set_tile_info(AV2_COMMON *const cm, tiles->log2_rows = AVMMIN(tiles->log2_rows, tiles->max_log2_rows); } } else { - int mi_rows = ALIGN_POWER_OF_TWO(mi_params->mi_rows, cm->mib_size_log2); - int sb_rows = mi_rows >> cm->mib_size_log2; + int sb_rows = tiles->sb_rows; int size_sb, j = 0; for (i = 0, start_sb = 0; start_sb < sb_rows && i < MAX_TILE_ROWS; i++) { tiles->row_start_sb[i] = start_sb; @@ -1096,6 +1097,7 @@ static AVM_INLINE void av2_set_tile_info(AV2_COMMON *const cm, if (j >= tile_cfg->tile_height_count) j = 0; start_sb += AVMMIN(size_sb, tiles->max_height_sb); } + assert(start_sb == sb_rows); tiles->rows = i; tiles->row_start_sb[i] = sb_rows; } From 5c6aa87a3206563a54a667b7b48e270e09ad3227 Mon Sep 17 00:00:00 2001 From: RyanLei-Meta Date: Tue, 11 Aug 2026 12:14:26 -0700 Subject: [PATCH 041/205] add CTC result for AVM v14.0.0 and v15.0.0 release (#5244) 1. add AV2 CTC result for v14.0.0 and v15.0.0 release 2. update the overall bdrate result 3. some code cleanup 4. add some code to plot more charts for reporting AV2 progress --- .../RDResults_aom_av2_AI_Preset_0.csv | 547 ++++++++ .../RDResults_aom_av2_AS_Preset_0.csv | 289 ++++ .../RDResults_aom_av2_LD_Preset_0.csv | 337 +++++ .../RDResults_aom_av2_RA_Preset_0.csv | 547 ++++++++ .../RDResults_aom_av2_STILL_Preset_0.csv | 343 +++++ .../RDResults_aom_av2_AI_Preset_0.csv | 547 ++++++++ .../RDResults_aom_av2_AS_Preset_0.csv | 289 ++++ .../RDResults_aom_av2_LD_Preset_0.csv | 337 +++++ .../RDResults_aom_av2_RA_Preset_0.csv | 547 ++++++++ .../RDResults_aom_av2_STILL_Preset_0.csv | 343 +++++ .../AverageBdrateByTag-Summary-AV1-vs-AV2.csv | 20 +- ...ageBdrateByTagClass-Summary-AV1-vs-AV2.csv | 116 +- .../ctc_result/Bdrate-Summary-AV1-vs-AV2.csv | 1212 ++++++++--------- .../PerVideoBdrate-Summary-AV1-vs-AV2.csv | 1212 ++++++++--------- .../src/AV2CTCProgress.py | 289 +++- tools/convexhull_framework/src/AV2CTCTest.py | 9 +- .../convexhull_framework/src/CheckEncoding.py | 168 ++- .../src/ConvexHullTest.py | 16 +- tools/convexhull_framework/src/Utils.py | 12 + 19 files changed, 5760 insertions(+), 1420 deletions(-) create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AI_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AS_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_LD_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_RA_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_STILL_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AI_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AS_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_LD_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_RA_Preset_0.csv create mode 100644 tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_STILL_Preset_0.csv diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AI_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AI_Preset_0.csv new file mode 100644 index 0000000000..38fb0379b0 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AI_Preset_0.csv @@ -0,0 +1,547 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,170400.863137,44.306073,49.737276,49.790530,15.562237,22.751907,99.860239,99.820283,46.501359,44.574455,44.306045,49.737222,49.790504,0.011340,960978.49,20.71,5257138305031291,86892582489,2458152965805996,55915356098,36f476c2b2c2b300fb93315c6713f7e0, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,61079.704296,41.943344,47.386410,47.161709,13.759445,19.750879,99.774555,98.818127,41.894633,42.420775,41.943318,47.386293,47.161683,1.106898,711417.53,18.85,3828305366216218,86803732322,1841659254286991,52084809105,10b68a6b7952b0fc40f357af3cf99669, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,30220.211788,40.020836,45.010521,44.853069,12.849223,17.874362,93.899351,91.595124,38.461988,40.605946,40.020817,45.010260,44.853017,1.295247,495720.76,16.68,2646953675820618,81597516598,1287616105964712,46226362936,49d9ffd956b199c0ec6bedd202fd21ab, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,14909.106893,37.406686,42.327215,42.329753,11.704693,15.548122,80.876100,78.097660,34.534325,38.356565,37.406645,42.326629,42.329314,1.274740,257829.91,15.48,1394202080461326,76003526242,671856174720611,43066891317,c99cf3b2283c338e3c8cb5fed6ce4fbe, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,7005.058941,34.243074,39.436574,39.577366,10.380487,12.906962,61.789902,58.762358,30.491029,35.700806,34.242911,39.435500,39.576041,1.150251,124370.09,12.73,652372809925249,62800123699,322617062325955,35933752579,54a3fba4fd99fc3a6b1e6dc54c9a3fd0, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,3117.970030,30.923903,36.562919,36.617078,9.116780,10.334748,40.221822,37.590599,26.728067,32.943051,30.923727,36.561154,36.615544,0.783571,56230.58,10.90,287786151252330,58249006588,149998687538931,30857409644,4f4f95b3bffb8ee022d3f03dbb05276a, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,67785.718282,43.668644,49.519302,52.895587,14.067710,21.370684,99.061793,97.708889,45.297441,44.400594,43.668303,49.519057,52.895245,0.020335,640292.94,13.12,3568283045684479,47837216278,1645129289075648,35558465660,4f3a05ae09d7cd837aa4672dd9776fe6, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,21424.607393,42.701544,48.482147,51.665214,13.434505,19.814273,94.350901,92.596164,42.782217,43.452806,42.699199,48.481777,51.664772,0.248035,307633.38,13.58,1592327512946234,56932153702,786075956045328,38133865136,f025402a5db654d5d3fc33539e9ec8fb, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,10514.717283,41.740904,47.279136,49.898790,13.065098,18.504344,85.913135,83.734617,40.559467,42.425103,41.734972,47.278723,49.898152,0.314289,173555.16,11.30,894705863472855,54570408744,442572830225374,31754673969,fdca74fc5249e0c771101ff8101a791d, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,5367.320679,40.200591,45.410639,47.475769,12.630769,16.686284,71.170202,68.706104,37.774159,40.830838,40.191422,45.409819,47.475108,0.300896,78375.77,11.54,396062435233201,60783985665,200959263342942,32608138830,3665a789d703c59b0e3fb75f2226c427, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,2746.229770,37.950777,42.890373,44.543822,12.168116,14.494638,50.389968,48.107398,34.672063,38.543748,37.941238,42.888986,44.542037,0.243079,32756.60,10.32,161314735186641,59450878870,84883772899930,29262168593,b37d04b664407f9ceaff308c0ea4ca12, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,1393.054945,35.042440,40.091388,41.262348,11.656002,12.147635,27.464790,25.730197,31.383092,35.671208,35.034652,40.087267,41.253287,0.219177,17881.33,9.11,85737518395310,56767458852,48431848948567,25918091947,19ff910e543bccc01f8958c1f7af73cc, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,153400.119880,45.259890,50.807823,51.077973,16.952933,24.247494,99.814941,99.766665,47.475008,46.002515,45.259809,50.807551,51.077631,0.005563,866911.30,17.70,4761778915430244,69809888681,2238222026970482,48014954100,365a23bfc88c656f9c03daa0946e2c60, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,75487.456543,43.035426,47.913125,48.181690,15.367524,21.230526,99.685396,99.621234,42.421395,43.537418,43.035350,47.912627,48.180990,0.007822,588390.79,15.73,4062596759800670,75758182679,1985208238882846,56917006420,ebd26c05b0d29f75be5a1fef4ada8167, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,38653.634366,40.279911,45.042822,45.207741,13.590838,17.870681,97.854510,95.505830,37.672986,40.826445,40.279535,45.041975,45.206005,0.010558,501805.74,14.94,2668801104475091,62220541709,1296215397828348,41592867847,cae90172aa775c838c15436ca5c1c737, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,19029.930070,36.954763,42.144092,42.194892,11.538594,14.288794,78.799571,76.492262,33.224009,37.782394,36.953862,42.142296,42.190126,0.018121,267291.41,13.74,1447308147817901,58984191417,691956748847188,38399364323,6e9888f1c736f5e6b167cc3cfa971101, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,8679.656344,33.420267,39.181827,39.179513,9.535278,10.905708,53.638096,51.837716,29.175574,34.560290,33.419132,39.180049,39.175908,0.054227,125284.57,12.94,646371636273580,61474057990,323754364048671,36476186260,9a8e18c3092212f3e679b8110e735cfe, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,3645.762238,30.040197,36.409540,36.256195,8.036935,8.080731,31.234182,30.335540,25.672952,31.520847,30.039696,36.406796,36.251536,0.108180,48063.07,11.38,247813005935321,57224217081,128048316657499,32211242921,6664d01f00f15875279d08d7ff4c7bfd, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,85,77134.977023,47.909398,51.925279,51.561068,20.005634,25.838254,99.878304,99.841211,48.448086,49.716670,47.902040,51.912443,51.512836,0.885463,670319.60,19.27,3616115434649746,83048593515,1733614259632808,53086514428,935252fc2d9c0b38a6c6eee9162b03bd, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,110,35674.197802,44.108804,48.646208,48.150157,17.375592,21.819114,99.789309,99.739183,43.331931,46.513135,44.095042,48.634296,48.098516,1.110080,644643.48,18.19,3420279412666717,82157379786,1669848751948126,50228058814,b716a488b40f3faa43ac46e9aaa00b09, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,135,16391.312687,40.932552,45.366369,44.809104,15.593581,19.015607,98.637421,97.381554,39.264167,43.609127,40.916153,45.356439,44.756587,1.612882,448175.36,16.96,2405731900644623,87076949779,1166309457572346,47164218130,bbba2ff4b78c6efa0f35b0883dea376f, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,160,8011.260739,37.968353,41.905186,41.332342,14.019443,16.463344,87.974673,85.462604,35.163639,40.772841,37.949731,41.894052,41.270151,1.832666,218109.04,14.30,1523604569350351,81665530747,748752751726133,52070454071,f8fde16bbd80c7dcb902583e6b8ba8ab, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,185,3856.823177,34.717859,38.369112,37.627450,12.425196,13.683727,69.677179,66.948401,30.945124,37.663198,34.698302,38.353976,37.549924,1.752660,123138.84,11.60,863705502676806,65418839548,425352574860171,42638457135,ea83d2cf19fa622b95a1c237be2b3ece, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,210,1727.584416,31.295427,34.849165,33.826522,10.984749,10.937926,47.154569,45.025481,26.935149,34.388432,31.275538,34.829357,33.729137,1.199850,79488.54,11.43,443831944632403,68805042963,213379885047633,32970660338,5446ccf2e6106416a6d03943ceca3f16, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,85,165014.816000,49.202978,46.202503,50.134212,21.233189,25.057181,99.273844,97.530484,47.627823,47.199723,49.202310,46.201960,50.132883,0.221517,667392.71,21.79,3427328515517719,93118321420,1713541950457886,59514472634,4e8b6e26d4f47fb76374acfaf85d126e, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,110,75738.784000,45.125364,42.839851,47.494247,17.740270,20.644473,93.965483,91.634369,41.975866,43.855381,45.124599,42.838856,47.493101,0.498188,675055.78,18.93,3443392859331974,81590575268,1732213125973554,52382382775,0721858b21019e3de8c7993c239c84dc, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,135,32825.232000,41.147790,40.381678,45.412438,14.594845,16.476377,81.020889,78.598307,37.082062,41.107512,41.147078,40.380184,45.411258,0.603301,425354.07,14.89,2190809414057703,62047287525,1089071267130037,41306099377,a6b01219f39b2560c7ce64adab5faf74, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,160,13393.648000,37.350160,38.383185,43.433115,11.993184,12.582923,56.612047,54.928235,32.857492,38.515251,37.349520,38.381849,43.431874,0.947535,216322.39,15.13,1119464207167354,64909629453,555186702887297,42190517399,f7d9bac3a1db16e58935cfea2b103414, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,185,4451.152000,33.851676,36.368019,41.416930,10.099082,9.242953,30.352262,29.673950,29.238883,35.931237,33.850919,36.366841,41.416006,1.043705,84882.35,11.40,426798508962182,59196669183,218937904833116,32212583778,ed58398d449463b39348406d061ee8c7, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,210,922.048000,31.054839,34.779334,39.637254,9.019446,6.946778,8.137245,7.977072,26.509137,33.935552,31.054154,34.777774,39.634574,1.835590,23680.64,9.74,114653031390534,58598587456,63664531954251,28278248980,3c6eae9e928892f1a68acc9c568f3324, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,85,49291.243416,46.820810,49.295430,47.026256,18.669628,25.674168,99.846791,99.807607,47.961632,46.789354,46.814956,49.287784,47.021796,0.000310,481167.80,17.81,2601693477893726,80421734235,1248094247764532,49194694120,f976b645149cbedbf07ed0bba5b3749b, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,110,22665.439872,44.894476,47.283277,45.264450,17.556552,23.544977,99.756522,99.116411,44.599623,45.158397,44.881269,47.271583,45.253646,0.002417,437596.80,13.51,2477564257336792,64550824764,1225252321731533,40100204256,c78c2724683144d30395e6c534a1fd31, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,135,11237.423328,42.362636,45.015574,43.628457,16.172172,20.954502,94.255951,92.138378,40.389021,43.368374,42.342834,45.004536,43.616687,0.005407,339531.08,13.17,1851498174896657,64789765164,885468043007221,36983996069,c560715d373b166b3e4c4dcb10d83f6c, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,160,5436.669888,39.168124,42.268418,41.586097,14.396902,17.923755,80.807079,78.356616,35.804388,41.094505,39.145639,42.258171,41.574911,0.012026,174754.22,12.86,950324123022446,66978523242,454815132113101,36049172022,41fc04320224bfffbdb77a63fee87c24, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,185,2479.973544,35.704063,39.338998,39.352139,12.524503,14.778596,59.477797,57.072312,31.515343,38.421503,35.683745,39.331486,39.342065,0.028337,83669.04,10.64,432825024903779,57042723182,217252506784621,30282730550,8634ea5fb5631fe34277a4ba132348f1, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,210,1038.328632,32.214957,36.276603,37.074805,10.813659,11.715081,33.681312,31.619412,27.679406,35.434775,32.198206,36.268728,37.062835,0.051382,36292.08,9.63,179903455104812,53830369855,97584976843244,27439073189,ebf63f01cc602206425e10afddfe98c3, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,185522.829171,42.561891,50.328212,49.352402,13.439918,21.623818,99.775000,99.735016,46.149279,44.231537,42.561767,50.328010,49.347916,0.001959,928033.26,13.79,6528107558458195,70735068528,2591652498111649,38557978804,90671999a8ef9f69c5a5db09c3f5f525, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,38679.528472,40.353723,49.341732,47.501534,11.442061,18.134968,97.845221,96.145762,41.090550,42.443733,40.353491,49.341523,47.496606,0.311005,594975.98,15.33,3200712920904506,68016712740,1531119056527803,42698357401,a0344686fed3bddea5d832ee34bc319b, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,18450.957043,39.341113,47.916007,45.555673,10.994127,16.674961,90.034715,87.927792,38.450154,41.269668,39.340986,47.915769,45.552515,0.470483,318474.60,14.32,1676548451868997,65853015071,817361088018252,40058719450,495d450904ad903718e8dc94f9471522, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,9299.436563,37.778707,45.853999,43.002695,10.479878,14.880594,75.740735,73.389251,35.419554,39.604965,37.778580,45.852759,43.000758,0.529851,157867.41,14.82,818723807791277,76662699003,405097149052219,41232059004,7113d81811de0f467535f9404ba192dc, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,4627.132867,35.508007,43.166066,40.088002,9.864532,12.771907,55.816839,53.532114,32.122373,37.360633,35.507820,43.163926,40.087398,0.483894,71949.90,11.11,373593908612286,60798224597,185595787927372,31224838044,f1423cbf96218058dfc4f23573ef5d84, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,2250.005994,32.679038,40.099665,36.996525,9.210701,10.578175,34.643685,32.840005,28.801135,34.615825,32.678768,40.095548,36.995319,0.304928,27906.01,9.00,172486025421084,61622866328,77940558721817,25143632918,4fd114c4f9f9a8cbf9ba3f4c4f2d53c1, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,213993.222777,45.379634,50.166117,51.898269,18.240163,25.827397,97.026939,95.615548,49.058816,45.802825,45.368573,50.164877,51.869491,0.005367,913410.09,20.06,5069252814790215,87746659599,2369896975768594,54494312172,7942a24eb6884d9ab0cb17f7156a0199, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,98499.740260,42.103623,47.283158,49.354820,15.434379,21.594890,93.523897,91.603057,42.919282,42.954597,42.087956,47.281823,49.330042,0.007818,897417.70,17.21,5282186854563671,78149209561,2514681305261493,50891662211,a7a0f793a070e6e2c5a5cbc6d688710f, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,44616.167832,38.765968,44.786204,46.851148,12.698926,17.445430,85.225312,82.734820,37.143747,40.139723,38.749236,44.785107,46.833186,0.011424,750538.55,14.92,4088389304958970,62742865460,1955860023373844,41321942144,f98f969551695340f0245bb07b101eff, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,18703.680320,35.428579,42.409677,44.320529,10.342552,13.638152,68.239050,65.603291,32.301666,37.309071,35.408188,42.408548,44.312391,0.014871,405384.89,13.49,2260235806328115,60708120214,1064804986640348,37639830422,63c8f49ec52aad913f701d11ae31e7c2, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,7452.627373,32.323222,39.896843,41.775075,8.655331,10.510554,46.279430,43.854584,28.477132,34.433109,32.298300,39.896098,41.772850,0.012067,135085.25,12.50,710561119771099,61466245237,349054862165632,35502512104,45ec891f54aaa9558e897c5d15efb144, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,2881.598402,29.455079,37.031793,39.095747,7.506484,8.148897,27.574143,25.531473,25.317240,31.576662,29.428693,37.029340,39.087970,0.008857,47717.65,9.06,297353521025489,58167738682,166930490185700,33405935753,a3227399bf3f023f89a8946b277533ba, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,137122.189810,43.393100,44.938845,45.192808,16.770948,24.919031,99.527429,98.175827,48.759245,41.101789,43.379157,44.935758,45.188880,0.000115,409618.07,7.53,2978276577036420,37474308788,1393977659355938,26587883456,27a24b5cb7e1752f996946d1063ed110, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,63418.693307,38.866427,42.460990,43.124845,12.551263,19.418854,94.995201,93.094775,41.024583,37.869961,38.827475,42.457155,43.120872,0.000921,635716.59,6.60,3581664176572379,28380697650,1657965231562801,17960386013,c71b503b2f292735ac2c5ad278f44699, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,26358.441558,34.943472,40.405227,41.274363,9.181822,14.743362,83.603068,81.496473,34.387939,35.004027,34.900678,40.402689,41.271199,0.005291,560276.82,5.63,3189714121796660,24541158269,1467586707154732,15487068892,9fae4a39a8d09786d3e1a3a1b9a05604, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,10061.330669,31.651808,38.561151,39.602355,6.771034,10.919881,61.395465,59.517103,29.203971,32.479344,31.620795,38.559267,39.600260,0.014008,215950.65,4.32,1341821846499995,19614456684,609216264505041,12756777774,bc9616d3a3b88c159d05ee1de4417997, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,3527.336663,28.826999,36.831873,37.906557,5.215747,7.814608,33.372803,32.373573,25.295229,30.152238,28.809801,36.830512,37.903702,0.049946,69476.94,3.41,377103071842713,14901080821,179361380137293,9582358381,b2ba9402c463c2471d208c1d9caf0ee5, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,1187.884116,26.432273,35.188045,36.047936,4.350297,5.595071,13.157055,12.938489,22.468799,28.068880,26.423586,35.185984,36.043852,0.101939,22048.93,3.17,116611718401763,17037810714,58319307194682,9118467538,9578d58fed1e1a19889c445769f94d95, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,178806.297702,43.918301,45.837760,46.779592,20.586171,29.021853,99.866587,99.817681,51.219870,43.407794,43.918286,45.837714,46.779561,0.172605,414814.39,9.77,2447027887453684,43016315163,1094950513128172,26311425097,79924bb6e9c222e518a198f8ebf115fc, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,97640.631369,38.872851,43.111065,44.043445,15.826471,23.460774,99.314359,97.588259,43.683368,39.833424,38.872822,43.111004,44.043378,0.182414,477425.65,5.97,3622761365789624,32397197190,1636225640086445,21165619495,0962ca28448ffe196e938c01ceb82e96, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,49558.649351,34.277210,40.842303,41.512561,11.544973,18.175828,91.395277,89.363373,36.067263,36.386496,34.277185,40.842198,41.512444,0.194158,812853.22,6.24,4805363072811209,27933097272,2138251741140475,17054165748,bf3826563bf68d11c3aa66702400d549, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,22773.946054,30.078231,38.083337,38.453044,7.946441,13.380062,73.619950,71.658260,29.303093,32.779306,30.078188,38.083096,38.452718,0.197863,459026.63,4.59,2679777615105006,20956109958,1203983328605893,12691392530,353a31acc9b1170b106906d4481e4747, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,8994.317682,26.331321,34.981560,34.836611,5.334155,9.374280,45.994042,44.470102,23.768807,29.330561,26.331272,34.980807,34.835784,0.169085,191698.44,3.80,1056911037665685,16742458399,498768854667719,10544927420,1eec8a2c1e0edebd2094cf56bd88461c, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,2946.445554,23.147766,31.717015,31.523239,3.647487,6.233542,17.789868,17.143330,19.457218,26.195083,23.147641,31.716173,31.521144,0.112609,60662.24,3.13,325504303461539,15707606758,159150861673291,8771190083,73eb7bcb8b6946934546c36d5a38d9b3, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,85,202065.986667,42.298214,42.543454,43.103447,16.400995,25.161372,99.873764,99.823954,49.119710,39.778916,42.298028,42.543342,43.103324,0.000275,415101.84,11.93,2465858168189199,52566053742,1091685751107020,31474822234,bb2aef6c9fb00ce3a79222998f329b19, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,102129.933333,37.502290,39.227175,39.939867,12.385864,20.084830,99.773049,99.619066,42.143956,36.368895,37.501613,39.226983,39.939685,0.001015,605639.30,9.26,3574901447361175,41672934519,1594707464972340,24951529358,6d45d936f86ce7beaf7c6f30e677d94f, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,48829.360000,33.280499,36.624552,37.193703,9.434606,15.988802,93.683955,91.384735,35.539405,33.457890,33.279545,36.624370,37.193426,0.002320,685225.99,5.55,4918331891546449,31575056762,1913392901143259,15471918430,14ad561e7e3195647e19fd989cc18b7c, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,21317.426667,29.378183,34.126630,34.470649,6.973074,12.094646,75.316183,73.068318,29.350236,30.637155,29.377274,34.126461,34.470259,0.008025,517796.47,5.65,3006780578286539,26329021673,1358895841018995,15535154418,6b7a8e0706513823a8ac9afc7c3b06cc, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,7992.213333,25.800257,31.851770,32.012241,5.082519,9.019174,47.584767,46.026106,24.068820,27.913219,25.799539,31.851483,32.011881,0.043676,212637.90,4.35,1220513202111937,21812987175,553950320578360,12078015209,93be90bc72d9dbc561186b57b5ff0f18, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,2372.480000,22.740077,30.109264,29.960858,3.600569,6.307835,19.019019,18.320094,19.617374,25.373051,22.739449,30.108802,29.960109,0.041200,63118.08,3.25,341180867447543,16035118864,166281197413962,9190605113,2260261f35ce827ec3f73107954041ef, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,85,52597.746254,42.299941,43.936060,47.855335,13.374632,21.355004,94.223469,93.177341,46.001419,41.166384,42.299925,43.935921,47.855150,0.023801,581627.64,7.07,3132419441580577,30568301021,1475020309501306,18753140719,f241c554e22c3f04e1c5985dbd748a63, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,110,4285.658342,37.691056,40.910980,46.079418,8.586308,15.013660,85.348831,84.124325,38.390158,37.984596,37.690833,40.910755,46.079173,1.548808,190717.21,2.97,1348365589948187,15047279946,641902910896135,10780241385,72df6f77672b9c1feac43c0eadaa5fc9, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,135,1095.040959,37.189865,40.097589,45.491196,8.306337,14.117934,77.591023,75.952840,36.887213,37.315261,37.189716,40.097240,45.491040,3.265315,66209.31,2.76,342841875833895,14406774661,167584130333778,7767817142,68196257f08ad52c2d19b264bf605ba3, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,160,552.719281,36.651585,39.800876,44.621634,8.172621,13.419142,64.425883,62.752601,35.592428,36.887092,36.651529,39.800576,44.621072,3.016590,27549.43,2.72,137471430155396,15587051074,69271808927017,7787240638,cb6a9cc7c0cbb00801ef94706e25a8a7, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,185,279.456543,35.583078,39.260560,43.284397,7.975569,12.251243,45.897041,44.188990,33.577546,36.123808,35.582929,39.260112,43.281634,2.786911,9884.63,2.79,47302718598159,16526705126,25318421335853,8065106146,ea8e40439e7dac8214d377229fbe3cb7, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,210,141.538462,33.832747,38.155688,41.431428,7.727079,10.727759,26.707552,25.286659,31.018889,34.839968,33.832189,38.148016,41.413206,2.461408,4875.69,2.49,22941199778364,15678104121,13249861503750,7267370382,5fb781c0f1fbf674be8e870ddee3529c, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,93142.681319,42.537896,45.665210,46.228349,14.351033,22.800643,99.840187,99.791595,47.128331,41.778030,42.537851,45.665057,46.228222,0.025963,530658.42,7.79,2977557865699478,30847397522,1375197856488209,21038512397,eabf49f4e945cd9adb49308d6c0a0137, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,32034.253746,39.255778,43.817420,44.574562,11.371947,18.191661,98.910129,97.107457,40.728793,39.397969,39.255536,43.817112,44.574099,0.202864,442368.68,5.21,2393159685701641,21141416316,1146139996132162,14307484278,ce1e034c8ca26a5726d81cecd1eafa51, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,13837.250749,36.787872,42.252403,42.816831,9.677727,14.911452,88.987933,86.738736,35.854624,37.531919,36.787063,42.251946,42.814991,0.299688,287842.44,4.25,1614838433241630,16753826883,749404212798986,11733990638,1be9bca6965deac94d44c5049f3ef0f9, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,5630.145854,34.083419,40.546873,40.718883,8.112422,11.748562,69.788033,67.527967,31.470892,35.465135,34.082320,40.545907,40.713357,0.511385,89386.55,3.70,647335588636019,16388068648,301852911374659,13356208853,349ed1ea752f2607f476397685d13105, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,2115.772228,31.403794,38.455579,38.318994,6.900163,9.041238,47.801958,45.858325,27.807287,33.237814,31.402930,38.453847,38.310031,0.748029,29965.17,2.13,207151287784829,15086870193,83697035088920,5937093014,3a36d0bdf74d8f067b463887ba221657, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,807.880120,29.043695,36.359054,35.933875,6.150327,7.119280,31.180707,29.844508,25.044829,31.140037,29.042930,36.350401,35.921689,0.534857,14303.96,2.84,72086471051783,16215884214,37833533816818,8123440030,955fa1a780e7d115e39d35ec5863e62a, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,85,57575.624000,44.252209,49.682027,48.970087,18.173932,25.885704,99.851819,99.809543,49.028394,45.266814,44.215666,49.628165,48.933686,0.104357,331755.58,7.10,2426859608041324,37444932116,1129460611429789,25115770321,72712db0147d529a39d6e62832a72d43, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,110,28895.120000,39.951323,46.222622,45.225924,14.678581,21.340686,99.737256,99.679643,42.147616,41.474786,39.880474,46.167546,45.179019,0.109077,513768.86,6.20,2874409001384125,29411985815,1341035692256716,16879199913,3eddca2ddb95474f7c9991aa76858890, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,135,13478.184000,36.032123,42.936007,41.797871,11.557853,17.112780,99.442741,99.371986,35.954423,37.960880,35.939925,42.877702,41.743178,0.113072,497413.23,5.65,2855136410107549,23584987753,1303227394863174,15535963964,a7aaf33a35f1b38418b44a2a6a2c3f12, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,160,5769.408000,32.375361,39.802585,38.854529,8.815395,13.121660,86.721565,84.704738,30.500980,34.654004,32.272543,39.741415,38.800527,0.108510,258831.88,4.45,1511709779414872,20267980097,677709500157529,12291558940,860a44244955eaf22de81d31dac785fe, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,185,2222.544000,29.063723,36.866572,36.243463,6.697029,9.482231,60.532925,58.949184,25.963154,31.578077,28.964425,36.801398,36.206356,0.125049,84401.81,3.26,471837040879473,16218045160,217668955962052,9041161202,c3935bce860692069651236c3ecf43b4, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,210,769.944000,26.174933,34.358038,33.614397,5.324222,6.474404,36.582477,35.704027,22.383456,28.801785,26.092837,34.305698,33.595772,0.122774,22268.88,2.49,153948399640274,17014996700,62189737491545,6974473397,ad30e7d6c04ad811d2cdcafb2588e8ee, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,85,28481.230769,43.580680,46.845287,53.060606,14.329117,22.395274,96.560286,95.248318,46.753195,43.724168,43.580645,46.845266,53.060417,0.829964,288412.68,4.67,1586301521068252,19545237676,745301982229310,12740376829,11e0b725baa0912dd273a34cdc5fc6fa, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,110,9945.414585,41.960835,46.162201,51.404476,13.188169,20.130242,93.443180,91.609800,43.206081,42.621085,41.960646,46.162150,51.404222,0.919647,181563.90,4.47,969905420931615,15305093505,468832089895891,12150403870,b452a76b1e5ef8edd01f6089d9c9dcd9, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,135,4404.443556,40.254665,45.226309,49.286636,12.288203,17.845611,85.997148,83.757873,39.657439,41.384139,40.254332,45.226136,49.285974,0.959237,75754.45,2.87,521660095742895,16913788472,211577130030301,8003202273,25042b0903a660002c72f2cf79af830f, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,160,2013.538462,38.174581,43.800442,46.556289,11.414615,15.374689,72.555827,69.736411,36.122142,39.764879,38.174273,43.799702,46.555045,0.999064,40960.23,2.97,216418038459099,15381172295,105228597351499,8385252043,8ada70149d452940b02880b976fd28c9, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,185,939.108891,35.719801,41.932119,43.979914,10.640195,12.931836,53.193112,50.524476,32.739918,37.761076,35.719454,41.928992,43.973369,0.531221,16424.77,2.83,85193724044245,14908567025,42330992221613,7911974548,9abe1b35e4dc7cdc303964fbe635f1a6, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,210,454.569431,32.938262,39.654559,41.238055,9.938593,10.707815,33.800234,31.588842,29.369420,35.152882,32.938052,39.649158,41.226164,0.351583,6029.85,2.21,39563284789518,16776849839,16840477844211,6182074179,e764bdc926a74b5aaf201059265ad02a, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,75308.328000,45.092006,46.588996,47.142237,20.832188,27.494315,99.869195,99.827989,49.084980,44.668157,45.090193,46.587888,47.139795,0.015436,272409.68,10.36,1611783878835836,46126720275,717755441819707,27969969793,8f2a461aa1c53ae0d49af03718a1d7d4, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,44362.496000,40.171059,42.845386,43.767635,17.402248,23.443355,99.784296,99.722081,43.265498,40.960181,40.169864,42.843557,43.763466,0.038731,279629.80,6.85,2111773114451817,38320072818,957155012141895,24327870552,e443c7b67530b45e2d0a3b8449041b53, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,23832.848000,35.377834,39.540921,40.932027,13.918893,19.368203,99.534487,99.459662,37.337030,37.384617,35.376631,39.539217,40.927741,0.103529,532575.00,6.70,3122321860287233,30866493001,1395972625458213,18330726523,4493dccd6db091b74f664b92451715b2, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,11244.232000,30.735460,36.593203,38.366703,10.446218,15.159749,88.703134,86.227823,31.337371,33.838708,30.733503,36.591388,38.362726,0.148584,432357.06,5.34,2500966871153745,22979304968,1132717124368290,14523852318,db87dddb916b41561a6b6f3c322c775d, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,4199.944000,26.487396,33.956796,35.944579,7.341067,11.005019,63.613790,61.312610,25.466304,30.370858,26.484801,33.954296,35.941346,0.177274,199335.01,4.29,1125783611522808,18567372914,519249921913163,11945353852,e51e7d8388032fbf61875bc412cb5983, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1293.160000,23.316894,31.385467,33.240810,5.295003,7.529631,35.722613,33.934018,20.695273,27.222210,23.314809,31.382312,33.237083,0.057844,53499.53,3.81,288463477042555,15740580688,140353246379955,10672303067,947c2112bb5a1e22065d58ba6f1d624d, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,85,161024.826667,42.194949,41.441877,42.649279,15.128848,23.537881,99.194306,97.517713,47.776440,37.813748,42.194915,41.441859,42.649257,0.000001,583108.46,10.73,3324957242248168,46282007548,1521561565360534,28483814126,62154a0fbb21bedf14c69e734a840bbb, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,44324.986667,36.748916,39.094798,41.181771,9.566305,17.260333,95.207643,93.318692,40.553587,34.855565,36.748801,39.094765,41.181709,0.000583,442586.89,5.19,3365687909728759,27444628409,1511475353937119,18490849052,9e18901edea5d945a32eb26a7899de2e, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,18878.826667,34.450132,38.391492,39.596156,8.403299,15.451623,85.952895,83.796956,36.218668,33.566073,34.449963,38.391440,39.595811,0.012036,412089.05,3.93,3092252146209315,23704766198,1409293530108289,14070738505,f8fa662dc394a2df5ccd78327a8bd225, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,7985.893333,31.756897,37.454732,37.826019,6.996791,12.842499,66.730393,64.604972,31.003415,32.027139,31.756700,37.454677,37.825837,0.038844,197987.12,2.81,1431037167515382,18587801535,552904934219902,7832882166,d4e3e989ba4b14d860f8b9f507cba41e, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,2853.693333,28.814905,36.323736,36.139204,5.476549,9.647235,37.668570,36.222903,26.219686,30.207569,28.814678,36.323553,36.138755,0.031137,70869.41,2.82,417343814394867,15049136467,198651886022563,8498016824,f6e7772feabafcc33a7d1694bfcaf6a8, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,797.706667,26.179797,35.035004,34.834688,4.336114,6.655206,7.631332,7.157511,22.594083,28.212488,26.179596,35.032970,34.833904,0.031363,19234.50,2.52,108522018024114,13917682303,54822244198305,7589363484,c5cba0bfcd327033258647a99ecf28ff, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,85,15815.160000,43.989471,47.681777,50.022216,15.251740,23.106469,99.817203,99.773684,47.066470,42.895604,43.988951,47.680775,50.018789,0.232534,263354.93,4.09,1813387400174396,21302446840,735480583117660,11402684346,2213668c2b1d1535413a1230673a8f34, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,6806.400000,42.155092,45.904353,47.787067,14.009466,20.827454,99.710728,99.639841,42.933332,41.288917,42.152636,45.903199,47.779531,0.352703,245978.84,4.21,1297822070766453,18599946125,635627006087523,11548232337,2034204d99dccf274b8723d94e436d10, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,3366.313333,40.046266,43.928009,45.277917,12.883606,18.516538,94.641129,92.534090,38.807493,39.511890,40.038676,43.922915,45.266089,0.486993,123511.22,3.09,832877601512071,18750332811,344963198233499,8664925170,e91ae8812c3c622414a0716fd81548ea, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,1690.766667,37.333030,41.648358,42.476378,11.537650,15.838637,79.453480,76.983674,34.567299,37.254135,37.323782,41.639828,42.463885,0.600069,80286.06,3.66,454499020004773,17985808541,208263383678137,10228934174,f149f11b360bec96ea9308719301d0f9, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,819.913333,34.139053,38.852898,39.313065,10.096825,12.914550,56.765326,54.250019,30.410719,34.468902,34.128180,38.836089,39.298215,0.657195,27438.98,2.86,153760257293236,14862312721,76617015601301,8625942693,cf9aab5f2a58861be4672a0e19d3b472, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,366.220000,30.650784,36.127663,36.358714,8.704549,9.847455,28.629562,27.359253,26.476896,31.526406,30.638922,36.111877,36.341572,0.430249,9219.98,2.27,61512256971570,14842427385,25756125306353,6337960868,4fd6896ae2d6ae7adc607f46a83b8e98, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,28551.640360,48.547359,51.003162,52.033739,20.319920,26.616293,99.804148,99.592025,49.513597,49.741835,48.523533,50.979422,51.998441,0.343415,178940.73,4.93,1068019801853802,23845147353,502893430772705,14494495077,978e3a4b310eee97f36b8002dd0cb574, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,15138.733267,45.585744,48.636449,49.221405,18.556006,23.754049,99.216903,98.243007,45.065842,47.280027,45.553823,48.604910,49.176810,0.422856,193919.51,4.54,1076634738961945,21902647347,505251817913503,12539092647,fcf8834e45417fb78de06014c9ed861e, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,7739.476523,42.071045,45.963279,46.243397,16.372899,20.406520,93.922052,91.516400,40.124074,44.301067,42.032502,45.922040,46.192849,0.446619,129307.30,3.32,961706362621005,19010785205,442199206879341,11980022748,6fb589d2f08a714ff3f236f94ee6eb4e, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,3794.045954,38.358460,43.262304,43.271890,14.139860,16.931031,80.418455,77.448676,35.319954,40.958086,38.309664,43.217227,43.224640,0.529956,86546.74,3.66,490598272458322,17371404248,226702264682276,10026984406,9b3ceec51de47ea9c99dce4a0f303f22, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,1795.564436,34.719259,40.702469,40.555036,12.190833,13.774300,59.882292,56.661058,30.986036,38.131045,34.662577,40.652560,40.510102,0.616144,34398.86,2.63,184420269573500,14300934044,89194173208739,7372445612,5d52e167a221ea914f526a509eebb8f9, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,813.634366,31.216832,38.376749,37.726379,10.618387,10.958953,34.664498,32.055136,27.091742,35.112946,31.154276,38.317618,37.700691,0.334393,11042.47,2.50,75466181359471,16289594611,30842342642214,6989771435,4af513848f01eed567de3a268e5f1364, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,85,37540.780000,43.308781,46.226791,48.299652,16.200071,24.827474,99.815532,99.765750,48.809292,41.398585,43.308754,46.226669,48.299095,0.000000,488720.72,6.57,2731563442837567,28632151033,1268754521527148,17681886400,8a19fcf30f63d0cfb5beb8ba008fcabe, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,16751.666667,40.177331,42.892878,45.449736,13.567399,20.757717,99.672129,99.609476,41.582490,38.367824,40.177217,42.892554,45.448699,0.000002,351669.30,4.66,2492489001205879,26954534727,1192574111374147,16621143443,fd076bc6e7d988b4a764d0a0ee27c9d5, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,7932.406667,37.022310,40.687054,43.864574,11.141055,16.840877,97.112806,94.909872,35.694482,35.999590,37.022048,40.686472,43.863716,0.000037,350623.59,4.64,1949940003224783,21999935174,913861287362915,12754149045,78b92dff9282515a6f61a655dc27bb8b, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,3629.033333,33.648731,38.729882,42.277857,8.775457,12.944460,75.113989,73.042813,30.653094,33.514659,33.648340,38.729001,42.277029,0.000500,128944.07,3.25,915200057118450,20521595239,360138173211435,9090464578,fdefab317dc805dbb9aaa2e776625fc9, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,1509.180000,30.282548,37.003826,40.244229,6.761481,9.372058,46.314736,44.876165,26.411618,30.892466,30.282008,37.002954,40.242143,0.002404,57624.97,3.23,309043306639951,15353911553,148670869020925,9073713312,db13c9040ae0cd5a4de6f9ccf5e483a3, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,561.993333,27.165354,35.718799,39.338706,5.322397,6.366596,23.687670,23.172286,22.982101,28.487483,27.164875,35.714257,39.334788,0.016596,20295.99,3.19,106860589808040,17550059622,53526604028331,9158642339,b05d0dbe7c99e139c75dbe039d261b31, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,85,72175.192807,45.641332,47.337226,48.293974,20.517516,27.740022,99.872464,99.803581,50.327694,43.001117,45.641140,47.336378,48.293343,0.001224,296391.74,6.83,2147787504421489,33175832734,1008487882750604,23642028068,3c7a7a333e2ba5776872dd95cc9383eb, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,110,37154.981019,39.709686,43.171515,44.260135,14.404343,20.879926,98.177516,96.388003,42.058072,38.486367,39.708937,43.171405,44.260016,0.005460,479256.82,6.31,2909395183232419,28593604233,1345737715220591,18244615015,634f46fabcf067116e2c6f545505ba81, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,135,17596.243756,35.525242,40.293725,41.493278,11.386617,16.512154,89.502493,87.473900,35.742513,35.413684,35.525200,40.293540,41.493164,0.028211,580349.97,5.99,3309170257505279,27617307188,1514478173771031,16444348029,a20064aec038c5e5ead7844549cc03ca, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,160,8461.098901,31.853761,37.546811,38.990088,9.120425,13.166187,72.346192,70.092539,30.334843,32.655521,31.853737,37.546638,38.989731,0.237127,367237.72,4.71,2072190415308433,21507698681,958849925193981,13074094809,c56ba939aba16bcb5543199c52c15575, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,185,3688.943057,28.082243,34.979514,36.446595,6.941245,10.061755,48.362468,46.604599,25.215916,29.914756,28.082183,34.979038,36.446119,0.388412,144898.43,3.83,803104434496191,18023789437,374780868739419,10751332819,13566fcbdd13ff1bb25e55de687eb2e5, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,210,1259.932068,24.431974,32.437954,34.141742,5.019046,6.651746,24.353071,23.567159,20.621229,27.017323,24.431891,32.435576,34.140709,0.323965,50043.55,3.09,271051667414791,15466472318,131187751919427,8566191319,d48f97c7d8391b8c7bf15eb2d0eab7cc, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,85,5081.992000,50.744876,57.516977,57.910554,21.996628,27.769892,99.812910,99.766544,50.586340,50.855672,50.689754,57.509375,57.880930,0.834534,152825.17,3.79,813393659890670,16590623729,395433415099137,10526227377,b8c73d5acccc5b6049dd814a62673cab, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,110,2469.208000,48.433487,54.836737,55.392700,20.513655,24.879166,99.604641,98.927904,46.836036,48.636717,48.314918,54.825099,55.366952,0.873097,115783.64,3.64,599544167991229,16909537140,299863380972303,10161469231,3530296e1ccccc747e164ca446c064e9, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,135,1222.696000,45.743514,51.639978,52.407805,19.036604,21.842627,94.382792,92.213965,43.011789,46.013371,45.566473,51.614480,52.379645,0.963310,45157.55,2.26,298515448456272,15097205332,126108750099841,6350244855,e028cfda1851867182e5e8061338c6db, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,160,616.736000,42.759746,48.062314,49.084465,17.752614,18.835375,81.524559,78.860045,39.269686,42.993930,42.584396,48.034866,49.063873,0.960863,23345.83,2.19,175019967165763,15419175802,80863820363253,8103766192,39c58497be5ad71b1d01bd1ed0388aa0, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,185,318.256000,39.548245,44.464607,45.402970,16.646775,16.017413,62.689897,59.758623,35.671233,39.671874,39.433018,44.432831,45.369589,0.561622,11646.50,2.15,92547195140354,16577587591,32525338675556,6015215807,1ee7935a5e2c00b66426e0da49176b66, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,210,168.696000,36.065543,40.899384,41.846476,15.494449,13.320863,40.637833,37.833292,32.079126,36.269734,36.001683,40.856785,41.807480,0.305627,6284.02,2.14,46460147563465,16532615854,17555198565884,5954484480,e554467e0203c7e401899a8ff0e7b2d2, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,85,49833.958042,43.057268,47.012333,45.318676,17.718421,25.992496,99.858869,99.804801,49.332763,40.896932,43.057140,47.012194,45.318532,0.033358,203399.40,4.73,1467866587921347,28143313908,568028893145970,13231147623,fe9044b12cf53370a6ca048ff2480b52, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,110,24853.058941,38.031107,45.473062,43.775164,13.118451,20.500113,99.732515,99.668416,42.230419,38.059775,38.030814,45.472658,43.774813,0.057266,399267.37,4.42,2306575320100483,20997653911,1046169732665353,11947694512,5dea4b3c4242c504bfdd72db15d4ca00, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,135,10586.005994,33.648966,43.872053,42.253883,9.185972,15.373756,97.952410,95.811603,35.034324,35.127751,33.648625,43.871442,42.252988,0.118936,431983.46,3.53,2534596869733543,15885664097,1132753339092338,9646615310,0a721723fea3e92cb0cd5d54ed7f6c06, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,160,3924.499500,30.079714,42.172373,40.500370,6.358236,11.093749,76.644577,74.700258,29.131356,32.438295,30.079368,42.171153,40.498959,0.238492,144906.66,1.98,1028639544964928,12079661906,404604901164145,5517637215,4b8c1f6fc7dc8d8321a0aa4dd93a23a4, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,185,1324.891109,27.273583,40.117713,38.062678,4.676296,8.056401,48.889826,47.551715,24.771553,30.028164,27.273291,40.114643,38.059273,0.286464,44854.30,1.30,318203385952210,8877674308,125262928009516,3628759477,25935f44c6d49f7e030051252742ebec, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,210,452.491508,24.963929,38.254677,37.084992,3.666960,5.909002,25.428271,24.882606,21.541297,27.763820,24.963678,38.248077,37.076924,0.187295,17581.19,1.70,95884719356277,8361357246,46148101956025,4792600926,c76af55495f7ed9dc1561a5f5a9c75db, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,150421.064000,42.806520,44.779656,46.404141,20.881791,28.615781,99.869481,99.824932,50.589003,44.586567,42.804310,44.764319,46.395667,0.000176,242565.59,10.15,1838911161818365,55506755821,677430395653444,28465098243,7703214522c353ac8bd294b46a915498, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,94478.624000,37.333468,40.817075,43.574877,16.373164,23.518909,99.775812,99.718963,43.866225,39.963942,37.329997,40.790108,43.562684,0.000533,628656.16,9.86,3816928389439193,45184026222,1667244225289304,26631931427,202558a37081935ac0f378d90512ca28, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,51644.472000,31.954698,37.396725,41.611595,11.917949,18.217293,99.256158,99.029479,36.394681,35.306900,31.948903,37.359562,41.599457,0.002003,807729.08,5.76,6287856989314280,33714953387,2777553164853623,20355377872,4321ec25ee620d7fe398b1caadbb2e90, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,22705.496000,26.947795,34.782255,39.978052,7.727391,13.021227,88.673602,86.228521,29.071912,30.851454,26.938677,34.736312,39.972684,0.007395,772006.18,5.44,4567251841385124,24850356390,2030369166048577,14867827313,9932e1fd67bcc9e7103eb7862a20343e, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,5866.880000,22.588774,32.986556,38.145971,3.904161,7.692791,59.995264,57.980460,22.216785,26.869000,22.575815,32.948804,38.143500,0.029981,283130.39,3.55,1627380391996125,14890196185,737523557607473,9821828988,567c065f0bac7a8714626b6f67acf89e, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,942.632000,20.471007,31.615395,35.905329,2.218139,4.133550,39.256488,37.880967,18.454410,24.610201,20.443267,31.586982,35.900101,0.082304,55193.75,3.22,296702433934507,15146884018,144320126457044,9062132291,71cc47c96a37afb531f71e2d3cdca9ae, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,81583.488511,44.052230,48.294290,50.307738,17.707283,25.532911,99.883892,99.850557,48.689584,44.447204,44.048818,48.290453,50.304187,0.011494,290947.16,5.89,2060864358822244,32061758474,812573912177664,16462547714,98a264b1d64935deb656884693c2ce7f, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,39910.073926,40.438347,46.195535,48.847196,15.089601,22.157040,99.828087,99.777578,43.448957,41.802090,40.432167,46.191245,48.843833,0.027259,320039.07,4.49,2257927882333835,24168175767,893736285013451,12533022813,3d9d7512ecaa8da536f5b6e3c8219021, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,18823.064935,36.998295,44.289933,47.315397,12.868903,19.287940,99.680441,99.608431,38.142376,39.280922,36.992041,44.286980,47.312835,0.029998,417299.05,4.75,2397139835717420,20351200450,1093537499921069,13108681380,be2c6fd744eed0363d0c0f4492eee7c2, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,9590.729271,33.765849,42.128227,45.289619,11.336032,17.041343,99.351480,99.262412,33.014281,36.741012,33.761772,42.122968,45.275745,0.024446,233344.44,4.00,1334625512368517,14679947245,609469614254722,10939174245,dd133931764185b45890ff894f1249f3, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,5119.040959,30.305641,39.706650,42.393931,9.704014,14.297443,89.849863,87.004978,28.081176,33.818234,30.304141,39.703021,42.386573,0.014562,112435.07,3.17,682271869178896,13888311151,315607309781944,9471646061,242e1a4242ddcca5602fc44e3fac6943, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,2574.513487,26.393911,36.510546,40.126189,7.729743,10.929299,66.992713,64.332062,23.039191,30.351755,26.392879,36.485325,40.095349,0.006673,56110.66,2.97,310607815136062,12152324006,147602454530200,8162796534,165a269aea5760eebf905d6d626d9685, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,85,27239.544456,47.089959,49.499529,50.616888,20.844975,27.650202,99.493370,98.863047,49.405961,47.276044,47.085172,49.485922,50.607169,0.010571,239617.99,6.04,1340603397496272,27706640504,624410294545517,16435843479,9bda132965bba33f10eb0ca05266a5e7, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,110,14892.003996,43.565472,46.184052,47.818435,18.380954,24.135197,97.677805,96.108320,43.970540,44.176147,43.563376,46.178154,47.811454,0.020466,280746.94,5.33,1559096970338336,25602181678,733238765586236,14658808858,d2a91507c79aca14b804511f81ec9391, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,135,7951.440559,39.782541,42.517777,44.819266,15.600304,20.334581,90.781010,88.361342,38.328044,40.709560,39.781271,42.515479,44.811605,0.032492,265212.88,4.35,1656049168872558,21390120818,749176654012764,12838963625,6ca62c249833d632bfcb402eb1003707, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,160,4067.324675,35.814210,38.692425,41.985653,12.782732,16.460333,75.890835,73.167064,32.995726,37.019462,35.813175,38.691346,41.971246,0.073328,129994.31,3.20,925581991937825,20936784006,363048563414549,8974822502,2fd67a46b761922010bdee323b20f455, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,185,1934.505495,31.874409,35.411934,39.022926,10.257030,12.772846,53.157383,50.792230,28.197297,33.506962,31.873676,35.410867,38.979002,0.082659,52835.35,2.96,386361539226194,16884411423,178526503389109,10795652652,9c69a1c5261c450fe250e829a2470aa8, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,210,823.616384,28.055273,32.809096,35.693065,8.211097,9.270275,25.707544,24.592376,23.901545,30.109135,28.054561,32.807379,35.532381,0.061070,26253.35,2.94,144990164057024,17762196933,69210235922349,8428103683,8e90e6bf1825d588ec7475800684a8cb, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,85,14993.928000,48.465825,52.120070,52.008710,21.321856,27.273171,99.870494,99.829983,49.209455,47.981463,48.461353,52.112828,52.004625,0.378175,367792.26,5.87,2064428789746776,25245769845,960613863233673,16144030580,745ee5c30eda5f023ae052cb7c49caf7, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,7898.104000,45.301869,49.663535,49.597137,19.143276,23.835445,99.659842,98.870854,44.599620,45.503316,45.294640,49.658294,49.593475,0.405284,345986.94,4.71,1904195054033136,22482335380,904688066028312,12968978993,8128ce10f75d2980e1e801d9924f708c, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,4235.768000,41.762840,47.018579,46.939490,16.701189,20.209132,95.083302,92.592429,39.846985,42.774883,41.752378,47.015006,46.935919,0.452238,188859.55,3.45,1372590321696117,21732815285,527445433958701,9602656613,b3c43d3dd8da6d85c1970af9bd7503ee, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,2192.688000,37.988629,44.074846,43.736100,14.190113,16.528549,82.928163,79.680896,35.116019,39.680413,37.977318,44.071218,43.732165,0.423899,129980.40,3.14,1017237745207818,19630295241,363012051270166,8785531474,200b81fd422e6d916764442ca7652d67, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,1083.864000,34.200614,40.618419,40.331871,12.018019,13.124018,64.762211,61.128166,30.659536,36.244375,34.190959,40.615334,40.328617,0.475223,95958.85,3.65,616857833676665,15302434883,259009910160528,10213683667,80bf5bed80a03612eef1c782a3a62b5b, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,523.048000,30.544676,37.111893,36.927104,10.414522,10.413535,43.762190,40.456090,26.653471,32.773698,30.534560,37.105849,36.916620,0.200895,46209.96,3.27,302228707598337,17198364267,125692926711780,9391316983,a99726b3660fb2ad09a103f4e46143c2, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,85,38447.136000,44.162598,49.271081,48.817102,19.364893,27.171046,97.484639,96.289916,48.171910,43.895798,44.161945,49.269808,48.815340,0.734592,154326.72,2.89,1116049279141242,14935435502,430927363783576,8067912667,ed86947b8e99ea41ae4d2036941b20f2, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,22326.976000,39.380691,46.564415,46.180623,15.718004,22.686485,95.021408,93.305992,42.925833,40.312073,39.380140,46.563301,46.179060,0.754199,230117.98,3.23,1347545001380602,13274332907,603035069932231,8699481165,dd7be0c34503d1a93c927f951bf830ca, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,11481.696000,34.612437,43.823459,43.647884,11.870866,17.929300,87.821744,85.769562,36.573976,36.629403,34.612074,43.822475,43.646834,0.766449,274930.98,2.50,1678473820347973,12660054501,773344295348186,7316378479,85c1f432e10ff89f3ebb693506cade6a, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,4809.936000,30.118466,41.187034,41.269774,8.139616,13.167202,71.761789,69.635221,30.019419,33.010291,30.118160,41.186159,41.268717,0.742554,180643.58,2.07,1027880689411274,9640106968,469503382708344,5724791568,1dd9b65dafc45179fc8e9fe22c74dbbc, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,1583.232000,26.512348,38.645588,38.502141,5.465012,9.055595,47.801852,46.056533,24.580289,29.878713,26.512094,38.643361,38.500828,0.906981,53600.04,1.25,367786649221515,7594138429,149704804282527,3499280039,d208a10f651f4aa87e55b56e06ab4769, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,471.112000,23.917802,36.005628,36.148270,4.080519,6.286581,26.071877,24.894714,20.881450,27.295637,23.917611,36.001910,36.140649,1.366667,19515.27,1.49,106398850076738,7853810399,50971463834054,4171691600,51e4f82315ab1ac87c7e8b5a442981ad, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,85,67518.177822,43.536606,46.122332,45.203645,17.555526,25.715358,99.731344,98.968910,48.992736,41.582603,43.536061,46.122103,45.202990,0.000569,205491.83,4.18,1162582892302483,17127938634,536348184673212,11240393223,b70e9a3a2df4e571d33b698a65d65355, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,33753.654346,38.751057,43.248347,43.238279,13.641417,20.716807,97.798467,96.190170,42.563163,38.615283,38.748881,43.248046,43.237373,0.026607,205744.33,2.43,1460642279565995,14031607526,574573315740030,6798978895,402d38b275cae1e7f3775c4fbe0d4945, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,15357.026973,34.555561,40.695876,41.510118,11.065960,17.797439,91.592663,89.516817,37.075398,35.856808,34.553143,40.695621,41.509209,0.439037,200172.30,1.95,1430600423257452,12113395212,559012658345009,5435816639,befdaedde9f53f9f677d0f5e11dd5779, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,6166.201798,30.896273,38.409850,39.654979,8.619757,14.560398,77.747185,75.376005,31.152155,33.196429,30.893862,38.409384,39.654424,0.617698,142957.14,1.96,786069055158741,9204365259,371397258343504,5473294865,f755a818cca1228f7111d9281c161c5a, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,2334.417582,27.848676,36.080166,37.693812,6.694153,11.314490,55.476495,53.178975,26.024603,30.656825,27.847293,36.079290,37.692585,0.495151,51931.05,1.55,285644369208950,7151532879,133958979366681,4309433573,c8819cdab09eb1611fc04f79ff5a1bba, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,909.330669,25.250549,33.862849,35.677617,5.301075,8.414496,30.609282,28.873286,22.100993,28.216024,25.250040,33.861257,35.675112,0.163517,17349.47,1.40,91803420027877,7438853746,45331974671754,3994655394,d6a65f0c3524b2bc7b1c53d3c296da29, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,85,20754.336000,45.007278,49.191784,49.745799,16.549776,23.618703,97.406647,96.369497,45.280963,45.106230,45.007198,49.191676,49.745748,9.502258,154363.67,2.30,851095007512988,9259811050,400359787613135,6123465206,9fd51f89620c0e99d2172e74faf7b337, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,9296.608000,42.449528,47.640610,48.096782,14.921148,21.330043,95.573853,94.076147,42.608344,43.350902,42.449274,47.640400,48.096416,11.005633,80853.52,1.72,574438633876552,9382678668,225815707159804,4845769610,2a298826069a912bb9114d385ea48582, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,4504.912000,39.841243,45.436621,45.743209,13.382900,19.082110,90.930381,88.894133,39.209465,41.447311,39.840927,45.436353,45.742440,10.598486,85801.87,1.81,530294443137884,7616134477,241274946700471,5400243464,f3e4eaeb9e62889af64bface29e472d9, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,2265.040000,36.864928,42.665967,43.220880,11.581320,16.487138,81.529373,78.792778,35.163068,39.185068,36.864606,42.665017,43.218858,10.755402,50487.05,1.45,295969536802548,7063612888,131819593020421,4032166346,734e835db4c5241e428f3d02534ac542, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,1112.896000,33.601504,39.412607,39.866705,9.817161,13.820955,65.196215,62.095132,30.826155,36.489260,33.601155,39.409325,39.861716,10.204252,25526.03,1.31,146496508553749,7260744428,66679826240448,3756104569,ecaa9b491bf0b465be0545f14e621f5b, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,558.512000,30.418251,35.780777,36.589502,8.738846,11.719738,42.694567,39.528026,26.755430,33.483611,30.416829,35.778055,36.583808,9.134077,9304.47,1.25,49758268587105,7498230392,24453558728712,3585897804,2459318827148a73283a1ce40311fb38, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,85,22372.064000,45.481300,48.763699,49.546760,17.175453,24.246252,97.591779,96.560178,45.507584,44.502756,45.481286,48.763560,49.546677,7.330597,141068.50,2.37,782441077696246,9660202616,365642672502460,6345781438,374adf9471f2bacf0172587c0a8e94fc, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,11370.448000,42.864518,46.933324,47.781505,15.702554,22.034508,95.819382,94.212848,42.836822,42.771787,42.864426,46.933138,47.781245,8.792349,74411.19,1.73,529531481159103,10254279806,207812856139825,4847497940,c5dcd007c9c899faa5ed9727daccad7e, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,5892.240000,39.817576,44.775101,45.510930,14.109572,19.415600,90.888449,88.624878,39.054274,40.814421,39.817286,44.774469,45.509788,8.580352,91217.40,1.92,524236062986455,9623066800,237358732481396,5305683991,da1ed7b122392dd1e52575a10b62f133, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,3045.456000,36.433084,42.082286,42.756524,12.383784,16.460477,80.665239,77.490918,34.649909,38.424160,36.432653,42.080559,42.754955,8.217624,42923.00,1.48,301947242295939,8231572829,119870125544142,4107021156,67888bc8c8ee796bda0dde2726110e87, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,1532.928000,32.708442,39.162535,39.707286,10.487523,13.370952,63.848698,60.271616,30.006347,35.558025,32.708072,39.159537,39.705554,6.630314,28647.95,1.27,158365831646580,7000923672,74019840825144,3549434874,76918137044b779f69fc9ed0f590594f, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,727.200000,29.050266,35.440390,36.206567,8.835951,10.530042,43.434902,39.795738,25.530990,32.383591,29.049801,35.436831,36.203318,6.237432,12741.57,1.33,71148942530672,7315848549,33451667977457,3740967580,0b13469d73ecd19936b41ee198cb788f, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,85,35100.803197,45.946438,46.820269,47.040400,19.619937,27.027675,99.855781,99.811135,49.595645,44.044138,45.944736,46.818013,47.038145,0.121157,296526.10,2.83,1679604812704812,12092486769,773319463362318,7598254923,bbf8c76d818fd5e8d01a5a39b99ce9cd, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,17424.527473,41.706513,43.576384,44.507709,15.909544,22.498448,99.753603,99.282589,43.304485,41.134527,41.701476,43.572106,44.504385,0.182904,242105.61,1.95,1641280557766145,10947646626,676130510568860,5451060330,21db7b26c568fc0cdde04cb67cde1801, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,8243.036963,37.820826,40.426176,41.885963,12.776414,18.324732,93.186631,90.934088,37.189289,38.185010,37.812469,40.421135,41.881390,0.227287,166403.00,1.49,1213275957084599,8825756557,464700208600625,4153859960,1377b70ffe4cfb7af3ef471194450c83, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,3843.420579,34.219383,37.340749,39.577702,10.290367,14.813720,76.950481,74.385549,31.849218,35.310858,34.211715,37.332604,39.569853,0.189660,126706.32,1.85,773171711255055,8316895974,335895501739369,5041747478,7608d6a74a1710c54d76011cbcf52ec2, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,1623.256743,30.679353,34.430709,37.437224,8.072477,11.310499,51.271219,48.838112,27.062229,32.483897,30.672784,34.421728,37.426069,0.136477,61280.68,1.34,390667839225324,7049847057,164077518378833,3766106300,3bf991323684faf47763fe5052603dc4, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,633.510490,27.490196,31.587997,35.348577,6.474424,8.268397,22.233666,20.955825,23.226322,29.732669,27.485950,31.571393,35.339036,0.079446,26244.02,1.82,168754262142334,7692477312,71143778303324,4890729839,1617316780c06c6cda59734dc712c232, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,85,22928.512000,45.497786,49.905508,49.704215,17.939568,24.818606,98.165265,96.708678,45.883726,44.352903,45.486723,49.905403,49.703892,2.222171,137383.03,1.81,949670319235414,10363823667,383679248029845,5054198318,873c9edf7ee52f66d2eeda59cb8d6fa5, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,11694.160000,42.814605,48.702150,47.812591,16.569506,22.473705,95.342702,93.422494,43.090737,42.577715,42.803343,48.701895,47.812067,2.909377,95784.40,1.72,686076649878288,9896252550,267505059109123,4791424077,e1b2c8a53061e0fb7daaf7046e9dc6b8, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,6345.984000,39.726183,47.026742,45.572713,14.951450,19.756709,88.825425,86.381911,39.181187,40.478114,39.723089,47.026077,45.572121,3.229296,93347.25,1.56,697734687226018,8596667090,317749920850306,5597224899,a7d2300c1ef04c71ac837f013fa0bc6f, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,3265.216000,35.943870,44.799596,42.729397,12.648721,16.264951,74.819166,71.988346,34.043717,37.720707,35.943223,44.796680,42.727931,3.201430,59461.47,1.27,429375563626317,6935248116,166061330242483,3604435127,11372a87e4f529a23277a55663905a15, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,1410.160000,31.780955,41.689286,39.831659,9.953753,12.082071,51.612309,48.702202,28.687790,34.392654,31.780193,41.683215,39.828153,2.864297,27371.12,1.08,210423686875777,6563899894,93666443678069,3866183927,e5c5f50e6f859693f5c7a2b52aaf35fd, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,474.576000,28.057281,39.169748,37.557765,7.841104,8.382123,24.313555,22.341658,24.298946,31.214631,28.056329,39.160226,37.548889,2.504475,6890.94,1.04,47482845192408,6550346195,19243759782977,2953690313,39cd3799d289fddc8b7e751e9a0ba8ae, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,85,23093.728000,45.639422,49.886930,50.066407,17.620440,25.084305,98.433645,97.299300,46.444072,44.539738,45.635246,49.886818,50.066029,1.960869,141808.72,1.84,969311003635141,10219795038,396084686972295,5142520531,20f474f3ec616e9d6aed8eb44768884e, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,10554.608000,42.515074,48.325557,48.390434,15.083690,21.432538,96.339437,94.647211,42.421766,42.475985,42.509676,48.325324,48.389562,2.134191,88739.12,1.58,611873583381092,9662230110,247847481880807,4404655956,13b8ad8b4c1be8a19aef81da3a0bbd82, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,5027.344000,39.500869,46.200018,46.107843,13.011686,18.043816,90.607158,88.283471,38.065722,40.197713,39.496249,46.199132,46.105006,2.087445,67038.17,1.73,480356152114174,8978727544,226212639068131,6241626143,f64ac7c6af6b8d96f3bf48e26bd6b019, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,2424.608000,36.431607,43.780496,43.232760,11.342560,15.222883,79.117866,76.072797,34.021974,37.707375,36.428370,43.779436,43.230022,2.106627,44713.93,1.58,241942472297488,7451509822,115014900105041,4369376583,97a5d06b493853831b8874c4be76e3da, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,1192.480000,33.222830,40.619396,39.953611,9.942586,12.903092,61.879284,58.525043,30.014264,34.914179,33.220828,40.616295,39.948359,2.247975,16020.88,1.12,110429982225344,6747896848,53613357821795,4078054018,eb09f37c2edde92fa6773a358a37d064, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,555.312000,29.758180,37.981892,36.945964,8.539531,10.294650,40.334557,37.213749,26.013849,32.032104,29.757524,37.972072,36.937913,2.071642,6727.73,1.23,47551630802835,7735492830,23112375669385,4536254614,16528a13aa92e1e0c1964ce2d78d7193, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,85,21488.152000,45.541848,50.593002,52.131207,20.093789,28.151148,99.895577,99.860692,49.349937,47.621612,45.540837,50.592355,52.130688,0.173403,139334.00,2.32,977304460742178,12204661130,389109127365775,6493837522,9951886cd00f64654fd2b943667200be, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,11756.256000,41.222848,48.704956,50.168254,17.054472,24.229851,99.852413,99.792551,44.467046,44.304966,41.217896,48.703765,50.167719,0.256893,188779.92,2.61,1123047620088047,11079007863,495334876953916,7056457394,01242d8940822619fe07a75a30b8088c, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,6114.616000,36.988356,46.983836,48.292728,13.846448,19.929855,99.692317,99.183034,38.433823,40.934396,36.981774,46.980818,48.290536,0.493271,219114.38,2.30,1287628576106575,9487720170,575814870974083,6296240390,cc83045fd2bfd6f4abdf9cb4f22a5fcc, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,2904.648000,32.775973,45.214393,46.304429,10.566770,15.458288,89.620825,86.635193,32.262505,37.302041,32.768782,45.203183,46.292495,1.125022,112542.82,1.32,846709668186024,7455259148,314293884934422,3697133165,493f7241819b89b83a5399834c3718d0, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,1229.328000,28.880487,42.701636,43.472542,7.809431,11.148054,69.817133,66.742004,26.760244,33.721476,28.873185,42.694917,43.456053,2.402694,74140.73,1.48,461334638448823,6887681169,196386953820285,4068713956,5b821d6e55cf1c5bd0409c706c01e25d, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,582.872000,25.563915,40.438466,40.990975,6.236832,7.930655,48.353325,45.937127,22.748841,30.604137,25.557781,40.402721,40.939620,2.404142,28837.20,1.02,224969680897957,6856546295,80530456708220,2869031595,061ff5adb9692aa341a7e99fe3a741e9, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,85,7268.700000,45.679896,45.207932,46.581496,21.773968,28.783261,99.876934,99.833574,50.841698,45.318961,45.679703,45.207549,46.580596,0.037395,17543.25,0.79,116690534305853,4466939680,49008036387157,2220198744,be4fe69c2f2794a6932d933ca5c93e13, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,110,4234.246667,40.728942,40.405423,43.527888,18.575023,25.283060,99.791408,99.735128,45.580282,41.689735,40.728747,40.405006,43.527394,0.084037,26100.26,0.63,174819000461421,3575344419,72893065067400,1768270126,5bf02e4f789295bd6abf8baf381c5714, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,135,2309.620000,35.785059,37.689302,41.762599,14.970195,21.244799,96.029716,93.971354,39.448329,38.716610,35.784949,37.688537,41.760866,0.127126,28149.63,0.48,200124242894429,2771327352,95014029232496,1678611883,1587cf691286b2cab9dcebcf137b6005, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,160,1121.886667,30.908591,35.591012,39.575699,11.408540,16.993337,80.957519,78.932218,32.839468,35.473678,30.908073,35.589507,39.570784,0.171101,24659.68,0.39,165272959882584,2261325859,68872205852613,1108660767,f6350d86956ec7d465b13efcc724d886, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,185,441.193333,26.475238,33.557789,37.594050,8.280313,12.375915,53.328351,51.729792,26.104607,31.983604,26.473168,33.556030,37.589416,0.214437,17273.18,0.34,92403754906226,1818338293,44316678396271,919432592,320b902190987c7dd15c580300087338, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,210,127.333333,22.883156,31.932362,35.546822,6.087888,8.657196,16.488393,15.815722,20.416313,28.783975,22.880730,31.925864,35.536073,0.213641,4314.38,0.26,28878236552353,1751175472,12048529304509,725235543,534c1a5b3b4eee5158f3b786c202b8f1, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,85,10522.917083,43.429544,46.540924,51.027399,17.507415,25.189506,99.829503,99.780703,48.888761,43.147577,43.427985,46.536971,51.024276,0.215079,40465.65,0.89,285192465689620,5125578932,136654741866640,3122983423,43fa080e6517583346de13fa19cf8ccf, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,110,5885.802198,38.197661,43.839556,49.573297,13.519855,20.479837,99.673267,99.615226,42.395084,39.619357,38.194920,43.829222,49.566928,0.225661,55062.31,0.77,368331118933960,4171056576,153793948222307,2151044899,3c2c269a778ab1974a6f652064b2a726, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,135,2611.412587,33.175549,41.626610,47.605839,9.776600,16.066018,94.597740,92.597186,36.113112,36.203887,33.170889,41.611276,47.592215,0.211796,46357.03,0.54,313866958190493,3204959926,129455079543834,1484673707,16de1ac43fb51655a89c31cb9d46a9aa, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,160,822.129870,29.082377,39.467146,45.776571,6.791424,12.146970,70.800452,69.129354,30.500617,33.143433,29.068463,39.448696,45.740414,0.204633,30865.80,0.57,169180464800867,2142928216,79120889457973,1534561783,f8b3a4fd01b908161d243b99dafb0b50, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,185,213.250749,26.419542,37.543546,43.252861,5.003543,8.966031,38.960449,37.772350,25.948670,30.675264,26.397089,37.526043,43.157961,0.195367,8233.04,0.34,43400067547992,1821868248,20910129995132,954715559,52a2e15d750674798b4dfc717bff31ef, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,210,78.217782,24.915665,35.380164,40.055981,4.311590,6.766215,13.997850,13.605378,22.948013,28.547687,24.895368,35.334259,39.835912,0.173734,2440.98,0.31,13020237419285,1799242102,6359007234614,873945769,7e00f089dac1ea21f559701fa6e71e34, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,85,13260.795205,44.030831,47.647238,48.952537,20.759869,28.553390,96.843925,95.593314,50.891686,43.526976,44.030769,47.647033,48.952363,1.274476,40222.85,1.11,210995662175694,5054652737,104481434521060,2949446873,fbbf895a5768b32304c1043d2238e474, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,110,8643.060939,38.309170,45.599386,47.219361,16.094950,23.846320,94.603441,92.772005,45.226209,40.268296,38.309140,45.598372,47.218135,1.170735,49843.46,0.74,335828114060884,4324792695,139202306110524,2065593183,a918f09b8a9fd8155e29881531f6bd14, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,135,4891.132867,32.827985,43.651789,45.587864,11.779284,18.853197,87.622106,85.469315,38.283776,36.553297,32.827943,43.651223,45.587072,1.084720,67282.83,0.73,364563693848589,3437928988,174153601757115,1979547319,3c1b0bbe43691b029ff5156ae6dafeab, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,160,2042.125874,27.668054,41.614237,43.370958,8.524572,14.473605,70.462863,68.117207,31.283830,32.694191,27.667956,41.607055,43.365758,0.939137,58238.86,0.56,312714355489838,2507423570,150609363079059,1506928829,f821c8c54ebcad45ce894ff1499c33ed, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,185,664.759241,23.801828,39.711907,41.488284,6.105893,10.860631,41.860332,40.236127,25.054356,29.446059,23.801758,39.704287,41.476451,0.470388,33363.53,0.43,185527383420274,2061888846,86007148927420,1167724387,0042dfb572f0d159c60ea9d7e6f49a37, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,210,178.661339,21.044959,37.620469,38.822287,4.373256,7.761084,11.081054,10.478755,20.001742,26.808838,21.044759,37.611486,38.781176,0.237270,9877.65,0.32,55364865366451,1718690569,25764139516051,878979543,8212f7cbbc63af463dd8742156e95f9d, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,85,2317.602398,47.026330,49.772890,51.333986,19.137679,26.202601,99.855484,99.659876,48.882591,45.488906,47.021968,49.771888,51.326468,0.080011,22652.50,0.48,148334207105748,2730444172,63258715420421,1319555652,f5087b5caa9bac93ca6d4cfe2f8ffe08, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,110,1204.827173,43.705096,47.341676,49.098751,17.466976,23.313522,99.214479,98.308821,44.304132,43.301787,43.700636,47.338833,49.089517,0.118800,24741.83,0.51,127533463407910,2329232887,63521646928570,1363008004,d31046e9145e6175512f38e5bb5ca1dd, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,135,574.401598,40.060194,44.395556,46.484940,15.539389,20.170134,94.766906,92.385188,39.512081,40.650458,40.053908,44.383840,46.469148,0.129239,15932.41,0.44,84225566920162,2097870760,40739957084829,1206207065,b6cde2ab8824c809dd6849a3d899967b, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,160,292.515485,36.861741,41.309090,43.650207,13.780287,17.051430,80.428623,77.529945,34.939347,37.851055,36.852756,41.299315,43.624474,0.165335,8969.82,0.36,45814774204786,1698273955,22865371658860,971833603,d99f7b258a8464ea68fd291406fd1515, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,185,152.215784,33.380743,38.360597,40.848898,11.824439,13.678622,58.209530,55.316269,30.402783,34.703121,33.373427,38.345727,40.786264,0.166942,3948.91,0.31,20300071872127,1591494218,9983164387634,867445520,c08b630e9012a12b9ce7931585f81862, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,210,77.674326,29.677372,35.193819,38.330544,9.918821,10.651510,30.933733,28.993238,26.090975,31.194248,29.655057,35.171314,38.253423,0.086677,1377.27,0.23,9274811953842,1659116697,3846116455452,656872858,ca077dd9b238664da5ea31298ea07270, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,85,21981.906094,42.598448,45.702899,45.215155,17.044134,26.234435,99.852545,98.513215,50.108592,41.322441,42.598409,45.702689,45.214980,0.002294,39753.57,1.00,269695816024392,5445916891,111013245448374,2773203722,939a8df81bd543819dbaeee0f7687fdf, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,110,11439.664336,37.795094,43.004858,42.414161,13.339409,21.475948,96.436161,94.380016,43.180229,38.106702,37.795040,43.004659,42.413877,0.024550,67887.77,1.02,371329661827766,4448185663,175528676859149,2734851426,febb53ee34baff852017e258d1450969, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,135,5405.794206,33.366596,40.742459,40.000383,10.120814,17.264918,87.066886,84.617411,36.400881,35.016455,33.366476,40.742018,39.999620,0.039263,51485.66,0.57,332545446967827,3396143141,143777958664179,1609084932,f62ba8bd8fe1d4d3f0f01ceef5f76131, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,160,2154.005994,29.319564,38.531795,37.909195,7.097525,12.896371,66.958630,64.480226,30.020199,31.923672,29.319308,38.530772,37.908447,0.050318,31589.50,0.41,211411566841843,2269022069,88194059173465,1152308646,99540e7925abf063aa8bc4aa1e63d48c, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,185,677.674326,25.942123,36.402943,36.105066,4.751519,8.799069,36.782134,34.991064,24.634276,29.138098,25.941484,36.399478,36.102883,0.052512,10555.21,0.29,70506505936696,1681387584,29483865743816,812094381,4fd40f5a5ba682c26344d2a57b5354f6, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,210,197.882118,23.538400,34.797522,34.556620,3.362701,5.634613,6.858450,6.452174,20.899235,26.732390,23.537511,34.790804,34.551084,0.062614,3464.53,0.28,18367793243328,1516847387,9008473717696,792357429,2f1621ad6d41bae98dfacf730365cdcc, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,85,10376.719281,42.325662,47.616112,47.909505,15.340480,23.853136,97.845087,96.323796,48.930437,42.204883,42.325565,47.615437,47.908940,0.000007,54006.79,0.88,364933229495420,5039246765,150838927931201,2472959403,c07be193d161506bdd994183512684f4, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,110,4254.897103,36.978586,45.458403,45.609980,9.942300,17.428806,94.756873,92.712848,40.810221,38.147689,36.976665,45.456971,45.608333,0.000145,84921.76,0.82,468270399355106,3905888457,219244594284627,2202251095,565a3c4825abbde64aacb432cc639506, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,135,1514.437562,33.467298,43.247810,42.738373,6.872929,12.484591,84.702136,82.591012,34.019724,35.201372,33.464155,43.245526,42.734398,0.020254,30813.13,0.50,205785110844412,2814099676,86049562508303,1396720536,65ad27ed8051d5f60852d061cc6127da, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,160,566.817183,30.967962,41.053125,39.305148,5.691937,9.601826,64.564299,62.674279,30.087781,33.128961,30.965842,41.046399,39.300497,0.962040,18288.81,0.44,97383897013534,2018236897,46741407792868,1192524009,18ab197a204631e48bd6b6d80a9bfdcd, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,185,229.938062,28.656637,39.242410,37.055943,5.135191,8.573120,47.815459,46.288199,27.124750,31.624585,28.655069,39.239722,37.049477,0.973235,6712.98,0.34,44679133715142,1825168245,18748967690258,939460051,8960a09d2085d21d67d6a711296d67b7, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,210,86.377622,26.009856,37.770559,35.748315,4.505753,6.871389,25.303515,24.534881,23.318095,29.923237,26.008286,37.755482,35.730909,0.729462,2388.54,0.25,16066592778801,1802801529,6674730708261,701215169,77922d0545bc448cd7382cbc796abe98, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,85,10142.384000,44.817072,46.707469,47.611817,20.453653,28.996912,97.033390,95.945345,48.644034,43.077657,44.816994,46.707273,47.611442,2.172487,20190.30,0.59,106246056216850,2542628576,52303692390016,1567240005,0e2b01df4d23758294c2c7428cd87b77, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,110,6101.520000,40.150768,43.704658,44.512915,17.273705,25.186426,94.954810,93.323679,44.040440,39.997916,40.150699,43.704040,44.512377,1.910125,20234.12,0.53,106439114537018,2501075647,52216647825767,1437999621,383314f6615827182f11b0d28388c137, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,135,3355.024000,35.311483,40.678597,41.354677,13.605595,20.817405,89.509324,87.292267,38.060972,36.588497,35.311414,40.677875,41.353650,1.723978,28620.53,0.51,148752053418534,2063263063,73775490257704,1391400790,5622aa03aa4e676a78203fa8839ecdca, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,160,1557.728000,30.606526,37.009321,37.884516,9.773436,15.962222,77.206928,74.268718,31.395230,32.951483,30.606302,37.006573,37.881629,1.359406,17084.90,0.27,114271400844815,1483572345,47711899560140,742182764,5deb2af4a63b77359869eb759138d2fb, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,185,605.552000,26.565938,34.633737,35.101702,6.710477,11.618224,56.161343,53.249245,25.490843,29.647717,26.565820,34.632133,35.099519,0.974103,10350.41,0.24,55062924844621,1146491293,26438400399775,665273530,c7aa654c740a8096eb10bc17d8bb327f, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,210,220.704000,23.540188,32.930470,33.246816,4.719556,7.934851,29.137799,27.201712,20.864487,26.715624,23.539829,32.928533,33.243533,1.261205,2739.05,0.17,18904841777167,1134507066,9314574366846,610706737,f41de4b8e2cf6f30af119a9c027e9678, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,85,12977.320000,44.140219,44.577574,45.336568,19.013799,26.004154,99.863459,99.819507,47.296493,43.138771,44.133750,44.562732,45.318912,1.883733,23738.34,0.59,128123208375903,2509911663,61415375965377,1579996552,977f43cdf96660f6b47018176e937094, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,110,7688.493333,38.659199,40.154175,42.191721,14.920700,21.543024,99.755254,99.545947,42.488145,39.065520,38.645901,40.131678,42.174468,4.036702,24056.86,0.51,131472804774060,2232373636,62077305108670,1367711864,ee14bdae2bd6af7213c0f030bb7c3768, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,135,3973.306667,33.359162,37.075035,40.006572,11.039599,17.294250,93.898735,91.766536,36.771507,35.351681,33.336653,37.052068,39.994180,4.803171,24897.94,0.34,168018885185191,1980786521,69530800567590,960125705,84a130d98677037a363e01cd1cdc0cb8, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,160,1525.840000,28.459689,34.831672,38.235715,7.663670,13.227467,74.757582,72.725158,30.596687,31.787017,28.426483,34.812100,38.225583,4.545612,23279.21,0.29,123208035587109,1384291350,59970580951302,776509059,ca3a91f02a172104c2e4f230de5bec0c, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,185,394.813333,24.890547,32.852599,36.557137,5.267250,9.517912,42.904193,41.502673,24.856279,28.871416,24.851258,32.831799,36.544959,4.541954,6956.64,0.20,45780437433252,1146759244,19427298601634,556255889,59941400c7630d6d977437b1534afcd7, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,210,118.666667,22.957800,31.218177,34.962053,4.170274,6.908800,13.285749,12.629957,21.056712,26.739737,22.929307,31.192976,34.928668,3.705464,1715.78,0.15,11499953851710,990757932,4791378815088,404259258,a29e48bd33be0c2750b22e79124043f5, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,85,10321.934066,43.009810,49.594537,47.207928,17.291052,24.953636,97.092696,95.688717,49.142831,43.048967,43.009735,49.593734,47.207277,0.304355,30496.48,0.56,161498729142011,2479590250,78825514115132,1509103973,6297bee70f3e82407a8fe1ef1fa93edf, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,110,4901.802198,37.993284,46.867884,44.129508,12.814357,19.575924,93.269891,91.426835,41.975550,39.366557,37.993096,46.866527,44.128755,0.283522,27746.79,0.34,187768742517798,1812996594,77484168645926,937225374,944c38ed6c1fb03b3245a1821fe685e6, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,135,2139.668332,34.034529,44.498338,41.323994,9.878822,15.667623,83.807301,81.692432,36.077211,36.246417,34.034251,44.495648,41.321725,0.300443,20008.65,0.27,132004539045852,1332659391,55876239381893,790336386,24b239bfe91486e1b509643a10d071fe, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,160,878.289710,30.559982,41.902626,38.455841,7.529158,12.636676,66.474436,64.223353,31.308795,33.331046,30.559456,41.893453,38.453050,0.261795,13097.65,0.28,71481923163586,1045524929,33578903078105,718525813,0d5791f69f8dad5e9b7b72771506d0db, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,185,304.239760,27.365100,39.524996,35.756123,5.169914,9.557100,41.375413,39.577760,26.837036,30.397375,27.364727,39.511783,35.750854,0.300245,4547.93,0.17,26440083329472,747760402,12535814009846,465979402,d99e18e40c88d06cf08d740a647c8a8e, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,210,102.857143,24.940639,37.128806,33.097895,3.694759,6.891402,13.037363,12.446732,23.113441,27.857787,24.940266,37.028685,33.089597,0.380604,1604.19,0.18,8583326822729,967020355,4172538721660,480022407,9ec7f4f2da76779fc685aad86b999986, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,85,3666.597403,45.151003,53.375846,52.864067,18.856418,26.370514,97.661082,96.225762,47.856615,46.894806,45.149790,53.370029,52.855565,0.392548,29618.96,0.39,160251998440832,1624890971,76402921651883,1040642870,a44b6334e424aea18317dd77181d69d8, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,110,1931.764236,40.129496,51.024821,50.778166,14.703135,21.528798,94.368436,92.400103,42.738884,42.739352,40.128496,51.016794,50.770849,0.617790,22801.14,0.35,121407232501757,1432585230,58749325800100,942650776,7093ee8b926c6c99c7bb40a6eda43b74, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,135,775.672328,35.372986,48.722259,48.081840,10.655174,16.819053,86.547194,83.963440,37.118095,38.818272,35.370613,48.716374,48.071676,0.503401,16967.24,0.21,113636948137451,1131876893,47415872025019,589698177,c32a7d3b0db48e11edf61035e3b0c6ba, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,160,183.320679,31.724049,46.471414,45.138738,7.272269,11.712876,71.158011,68.243182,31.325827,35.658560,31.719433,46.449571,45.126374,0.677851,6817.20,0.17,45526609123338,991819071,19045321349287,468783551,40c662d53f7ce94356b2bfc43fbbabe5, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,185,83.212787,30.246832,43.012443,42.353493,6.596861,10.089554,51.669568,48.232668,28.743740,33.720476,30.244230,42.975866,42.304090,1.384878,3272.71,0.18,16986391534099,933938956,8372342740623,499454111,221f7226a95a9d009d07cce69f0e50ab, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,210,43.020979,28.204838,39.323519,39.859240,5.944526,8.320244,23.337458,21.047362,25.752135,31.449485,28.203209,39.259397,39.818368,1.269353,1405.76,0.15,7435920249868,888075864,3663655314906,431776424,8a5f3806f4a51968e66058ba7a803572, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,85,40027.456000,42.400751,47.165582,48.367247,14.845863,23.824821,99.844706,99.795905,48.414854,44.368407,42.400463,47.163071,48.362908,0.327016,402089.20,6.04,2961282719477905,29089437257,1366134642391638,21268589378,7af3190af71c7c702dbf2fc33eeb8000, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,110,15394.553600,38.519977,44.243297,45.841506,11.527468,19.533127,98.933678,97.147286,41.991903,41.154288,38.517300,44.241310,45.836486,0.364328,552080.07,5.24,3012844801575501,21447724343,1411253381137700,14282906071,e28e1c288da817d537813e755e8e941f, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,135,6811.603200,35.746229,41.888741,43.575032,9.575231,15.928606,88.930910,86.523371,36.390901,38.727774,35.738659,41.886334,43.570537,0.408973,265076.92,3.03,1905631340021758,18181639107,740257705638580,8444739476,46f558217b1c2a11c4366b4308e5cec1, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,160,2915.929600,32.762499,39.918069,41.548119,7.490196,11.958231,67.855103,65.724916,31.071684,36.020047,32.756420,39.915152,41.546027,0.436839,153787.94,3.35,887192780135040,15988753688,402876193390115,9263112684,2f306c0fdd93f210f95eb9aeb5c200ef, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,185,1061.523200,29.697440,37.717417,39.389617,5.671520,8.437830,41.649223,40.330776,26.641546,33.145482,29.694118,37.715824,39.386493,0.643584,40859.60,2.09,282975263510402,12837884813,114128087372491,5862634323,1a1fd7d5957933f3af430cc98c2b410f, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,210,316.934400,26.991524,35.728308,37.499274,4.475085,5.973201,23.032513,22.507657,23.237528,30.607282,26.988998,35.724875,37.494009,1.108816,12824.18,1.87,86581143865952,13184793719,35822402482665,5222096526,cf2fc2c116110b21b6de4792db1d623d, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,85,218637.792000,42.757179,46.385416,46.731915,18.053192,26.728661,99.866418,99.827160,50.279606,42.818140,42.757157,46.385385,46.731888,0.013277,331745.93,8.88,2443570774076785,49955152185,926464250803178,24741878565,f5f5edb26af4bf177fe627fc22488547, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,110,110200.096000,37.171901,43.611735,44.336883,12.819258,20.761297,99.783850,99.723236,42.568276,38.581235,37.171864,43.611677,44.336807,0.026105,578835.15,6.97,4148835691785910,38175052068,1616523417067439,19436774536,81e52634d6c275feb0fc33912cfab446, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,135,46134.096000,32.696925,40.976583,41.993939,8.914957,15.602119,94.376441,92.120422,35.189587,34.847194,32.696895,40.976402,41.993766,0.099373,662811.07,5.04,4787649672620261,28249657542,1851107085929601,14065761157,e4a465085e5718418a08454fb2cee771, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,160,16394.848000,29.110070,38.159281,39.522234,5.991712,11.191187,77.881496,75.311952,28.912702,31.649975,29.110039,38.158935,39.521499,0.123025,304378.13,3.73,2164584299941773,21747585901,850055426816556,10398238048,da15de4caf367bcb2082b8bf488f52e2, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,185,5218.624000,26.343024,35.352168,37.168120,4.231784,7.982087,55.412371,53.079653,24.319060,29.007840,26.342986,35.351677,37.167158,0.157409,175146.55,2.99,1360101160204003,17489539400,489135162243556,8354309131,9cc97a6ce09bb61f6ecb6bb46518112b, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,210,1639.088000,24.138871,32.681957,34.272024,3.265900,5.619035,36.528473,34.495639,21.093651,26.744531,24.138827,32.680809,34.268317,0.065139,31246.08,2.61,221427116042811,14907794069,107841341673267,9609314837,7648949ce4849631720cb787c89baf9a, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,85,13546.739200,49.519300,51.791539,53.237390,24.477474,32.343019,98.969574,98.426880,53.611230,51.565582,49.518692,51.782423,53.229293,4.371272,288766.61,6.43,1707341833557588,26421477183,762453449554401,17431687241,5dcbbdf3e111780f3f77b9c1158868b7, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,110,7708.313600,45.651600,48.519973,49.878371,22.080882,28.869071,98.550339,97.226120,49.175591,48.781847,45.650729,48.504622,49.861411,2.524165,254373.59,4.45,1895345524829301,23815267400,872777675821591,15953881399,a35e1f8ec86e3e4faf9abb7282a06dfe, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,135,4294.246400,41.476235,45.285941,46.441780,18.770970,24.573664,96.379723,93.794365,43.445026,45.812264,41.475233,45.254392,46.413030,2.209642,223329.76,3.54,1632604370861924,21627525563,623733861477632,9862605657,f461e24964f2d60f2a25083bde93c249, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,160,2280.057600,36.994295,41.778755,42.681482,14.889449,19.428035,89.363718,85.192638,36.866153,42.044134,36.993221,41.740103,42.640649,1.951765,170725.18,3.29,1304607642351783,19830945594,476819634268501,9162695048,28111b95b862d7fe2c1245124d4cb92f, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,185,1100.032000,32.538020,37.735461,38.878003,11.285657,14.207827,72.922590,68.461992,30.899981,37.544072,32.536625,37.690780,38.823418,1.176866,99272.05,2.85,798904882082212,17258960543,277228042610247,7960728710,b0644411ad9dc1a25ab5304d722839a6, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,210,462.329600,28.773294,33.568700,34.695267,8.822941,10.072548,50.920261,46.729420,25.940328,33.241335,28.771325,33.505129,34.622192,0.449651,57420.82,2.75,374065073985200,13583549026,156013108738808,7766720598,2ef046ed6905c02cbf7cbbc17d04592a, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,85,58215.920000,43.801971,49.226233,48.550199,16.788007,24.990258,99.863998,98.883263,48.992048,45.518495,43.801899,49.225910,48.549929,0.212044,311455.24,6.13,2233849658000076,32852892426,869793534243493,17116223479,1aee008ab4fdc58a0533dbd90d6717f7, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,110,25876.448000,39.024516,46.288988,45.595984,12.448757,19.961897,97.329316,95.734888,42.521420,41.665415,39.024461,46.288528,45.595581,0.229597,469011.33,6.16,2693991062176497,25554729734,1224250822252330,16755333822,029982270f2c836b77de3c5f50dfb5be, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,135,8568.680000,35.201331,43.305468,42.386137,8.935024,15.269929,90.674532,88.611881,36.509623,38.396793,35.201255,43.304731,42.385747,0.285480,272056.74,4.69,2000370606989374,23437917736,927459400199836,16847852922,a068011eee186878df875d38a7a1c834, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,160,4063.272000,33.092697,40.221588,39.079532,8.064177,13.370394,78.059581,75.335593,32.805598,36.093275,33.092522,40.220777,39.078687,0.300080,171934.31,3.45,1277404944380541,20774484028,480208893196479,9625324279,fdd16e5bbcb6ce6ded65664698f5ed2f, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,185,2004.936000,30.505679,36.679017,35.502515,7.237527,11.509978,59.689682,56.623712,28.706560,33.443974,30.505268,36.676993,35.501632,0.327404,70430.40,2.79,499098262917182,16621684293,196678354965454,7780205790,937e28bde430f02f357240b870862a87, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,210,899.256000,27.354810,33.297960,31.878365,6.206498,9.091735,37.059676,34.161386,24.227046,30.416395,27.354311,33.294905,31.876889,0.146521,32137.48,3.19,176574113141933,16179938448,84879280192789,9067982691,58df20432daa4a9ad2641c0b1e432fd2, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,85,124876.752000,45.844128,48.027069,47.670142,21.096406,28.241352,99.870356,99.830864,51.451049,45.768934,45.737935,47.986589,47.588777,0.405697,550499.22,6.44,4140877461579771,29925923630,1891383741393890,22414093759,cea4e1b300a7b7b63e5b2797d4496451, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,110,75073.968000,40.243769,45.206356,44.345212,15.568397,22.418627,99.796151,99.737610,43.910055,41.842831,40.099141,45.171275,44.266199,0.299604,709517.17,5.32,5112214936908071,28036531033,1981443729225054,14869255528,5e093b3effb03339524454311f5c9169, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,135,33775.968000,34.578867,42.542853,41.281901,10.224367,16.402910,97.552316,95.505904,36.302579,37.335972,34.452981,42.518031,41.211123,0.255761,635200.90,4.27,4738933423145333,22137813645,1773879115011143,11893452487,68783093ec5bcf555b834864058da65b, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,160,11061.872000,30.380399,39.544729,38.344420,6.708922,11.377262,79.163379,76.699227,30.109170,33.421605,30.293552,39.529360,38.289243,0.198361,436467.47,4.13,2695233713886484,15504277506,1165602840424744,11413602095,eaaa92fa394368acd3dafd4cfc8ee6a4, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,185,3901.632000,27.866989,36.608343,35.582264,5.010822,7.851903,56.251715,54.223307,25.849459,30.530921,27.801007,36.595623,35.546954,0.224975,165209.14,2.23,1387982042773792,12285872242,461371538063399,6197952646,ddf7d337b81ebea9c5b0c758aae8c48d, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,210,1061.152000,25.229248,34.323514,33.192721,4.118169,5.511087,30.391632,29.336793,22.683590,28.101453,25.197911,34.320311,33.168755,0.370360,83577.25,3.47,556250909241084,14923189548,228675042276958,9608543814,42d6bfc7720004b6a768b8d9f81fa755, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,54482.368000,45.481850,49.765640,50.263368,18.675410,25.176306,99.142081,98.815281,48.444900,44.988366,45.348051,49.654544,50.145060,0.259671,290670.02,5.64,1961305336244875,29987209563,811723192129878,15737043430,28274b7edfa03db14bd7ca96d356b36e, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,27345.728000,40.535043,46.291914,47.006675,14.337088,20.096028,98.302058,97.848005,42.085838,41.316942,40.255972,46.195422,46.889209,0.273302,318645.17,4.91,2216763277248200,28316516146,889856479141225,13710032935,0819a6a2274ae05d9962cc2a2034fe24, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,12341.088000,36.378718,44.006087,44.823014,11.097385,15.729016,93.265750,91.178259,36.534399,38.448875,35.962157,43.910838,44.693027,0.508637,278931.81,4.00,1984805821703802,23068779333,779037353990093,11183460486,4db81904765e3f0825d9acecee840e0e, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,4877.160000,32.627160,41.785619,42.577458,8.771704,12.185964,75.580509,72.991416,31.875947,35.714389,32.166103,41.725266,42.479041,0.713887,187753.77,4.29,1090359139423182,19845579376,490505685074992,11897589761,00674186bc273cc27ef4e73f6fdb6587, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,1322.440000,29.291694,39.349977,40.060358,7.138988,9.410602,52.925957,50.598163,27.901913,33.032893,28.803058,39.326789,39.992260,1.086202,97165.18,3.08,591346798072975,15301976014,257208542945858,8661532584,193ff58af0d21d60a314c4e4a44a8429, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,398.536000,27.186045,37.003170,37.467042,6.278962,7.332904,30.389840,29.004201,24.825293,30.776733,26.852960,36.986111,37.402147,0.679519,20157.74,2.04,151975776159539,14613460969,56303823640964,5700718337,51a63a19a4915db5514a80e96d870f3f, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,85,14680.307200,43.948369,47.388061,48.468556,14.777253,22.434404,99.688325,99.636814,46.629287,47.470046,43.896412,47.375350,48.409151,0.204790,294460.48,3.80,2001113292917800,21387629482,822314795135299,10618318691,93d70895ee3722cb6aaf37c0165cc1f8, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,4734.822400,41.879163,45.776740,46.274379,13.195520,19.520244,99.453769,99.393130,41.957240,45.544980,41.807221,45.771117,46.208611,0.240856,230271.63,4.25,1207467345438195,20159343034,593794164882722,11726213384,0529d47d4fe7a30227f2cdddf94d37b6, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,2205.766400,40.268727,43.598499,43.592145,12.433952,17.089766,88.625167,86.898775,38.235624,43.756354,40.215250,43.593435,43.500777,0.253399,91556.03,2.86,597287160170293,18179492437,255678791941321,7980573959,28fa8540c8329af57dbdc775dd63521d, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1021.772800,38.102709,40.983726,40.652223,11.662248,14.492860,64.375113,62.894506,34.705318,41.464749,38.064083,40.976247,40.519157,0.253242,37616.10,2.48,258476671230839,16023368900,105059688975361,6914045642,d65ff478c08a0277a34c1fc00def701b, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,463.123200,35.571636,38.340820,37.597792,10.972672,12.053873,34.593619,33.773601,31.494717,38.800881,35.540064,38.329853,37.437927,0.254374,10431.50,2.13,71776257696956,16468721555,29150506225360,5989582177,c879c9d337b54b1f3fc5001838059535, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,216.556800,32.882888,35.796055,34.902587,10.403663,9.919931,17.104848,16.943228,28.637244,36.022472,32.860260,35.789232,34.808324,0.165214,4528.61,2.06,30847659057204,16893990987,12646404409870,5758332467,9ad67fa575c58e9a229ddcd14069c23c, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,85,16256.684800,47.471204,48.331739,46.813194,20.210050,26.492037,97.617762,95.437234,49.967854,47.327941,47.471174,48.331664,46.813161,0.000000,366283.80,4.91,2560869945621086,25406270427,1241591314709287,17487061300,034ebd1fbcefccfdbbf2b01d707a1b2f, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,8179.795200,43.613776,47.423017,45.515912,16.697786,22.098152,91.864544,89.253914,44.589410,45.382528,43.613741,47.422740,45.515684,0.000000,502165.81,5.08,2687014009378850,22147182261,1303723978331035,13984479263,bd742a004a4e4cc349c1308283dfa1e9, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,3693.305600,39.328545,46.108870,43.676663,12.736373,17.281294,79.571445,76.373471,38.901170,42.752153,39.328450,46.108232,43.676154,0.000000,311281.55,4.43,1781778461776655,17580456399,817223669379928,12247622201,d2c713c9b0a408c9b7f02ee58e5187b5, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1253.932800,35.275314,44.228377,41.267800,9.129587,12.587475,55.454792,52.694160,33.558756,39.756508,35.274992,44.227032,41.267341,0.000001,165231.36,3.12,1048473893206150,13132317019,446197895946741,8634152356,b74f43e6710b88d37d14e7700221384b, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,332.262400,32.494950,42.472888,38.931093,7.213031,9.121925,22.498208,21.412876,29.623225,37.296293,32.494275,42.467315,38.929396,0.000000,60195.44,2.39,409058504563072,12392576783,165585705510058,6737665937,83d3b32897bd67a5682d97d25569b4ed, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,108.492800,30.899253,40.716279,36.816860,6.807087,7.379554,3.332458,3.231297,27.567496,35.454096,30.898532,40.696574,36.811967,0.000000,13197.04,1.65,110829888373380,13027938602,47225502086057,6237205784,6e825f9364704fce89ea605ffe921d21, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,85,88272.560000,45.413502,50.460166,51.116741,19.267115,26.067654,99.014681,98.635746,49.697434,45.776693,45.413487,50.460039,51.116637,0.513555,290193.46,7.86,1724119853808273,32938889552,765729443430512,21251888207,487c8c50170d32a55bdce3ae42a317e2, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,110,47823.776000,40.850881,46.811667,47.690883,15.666965,21.604838,98.049776,96.844870,43.708691,42.587553,40.850865,46.811473,47.690751,0.705201,362329.19,6.63,2078568190118329,28728320937,952352881205035,18029117981,4ae84ca12f6c6390fb2523f6aaf165db, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,135,23309.568000,36.424337,43.295925,44.266182,12.399385,17.550035,91.628479,89.034886,37.960667,39.262499,36.424310,43.295699,44.266016,0.991441,389180.31,5.72,2308828441369791,24801999162,1025391735072868,15671432633,e866b87c743621c285aceb21c9e8c7be, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,160,10334.752000,32.427447,39.747417,40.772171,9.566809,13.709884,76.471949,73.519751,32.530315,35.957617,32.427393,39.746493,40.771556,1.150250,198918.38,3.37,1442798198258588,18998511822,555494364842461,9447135235,ec8d303773c2d885b650488b92e694f9, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,185,4234.112000,28.961395,36.675454,37.550774,7.500021,10.346325,53.817541,51.199252,27.670382,32.853763,28.961300,36.674923,37.549754,1.280242,168965.92,3.23,1169237302501867,15201728680,488611571125945,9704171346,a4669ffe11c2d21f00a3d5113722cf12, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,210,1556.240000,25.769829,33.835452,34.402433,6.099775,7.650114,29.510895,27.624715,23.422092,29.916576,25.769591,33.833696,34.400545,1.438524,97762.14,2.77,656201552433880,13938043143,267802440990319,7840869436,8a34f477b18b2b21782ebb8b4e5f69fc, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,85,120288.784000,43.353755,48.093298,48.643516,15.467064,22.768054,99.212965,98.093896,47.544744,43.238680,43.351329,48.089181,48.641408,0.182472,371159.22,6.18,2624333181477443,32929691752,1261428051485192,21722149459,070f973ea1551f7d3acc4ad981aafd43, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,110,48001.200000,38.536551,46.401389,46.332098,11.028782,17.341593,95.072684,92.977702,40.695148,39.977630,38.531452,46.397371,46.329521,0.460867,530995.91,5.63,2990260256048082,24868251494,1385020218260236,15312687066,50988dbda16cdd822f78ecba6bf481be, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,135,13560.560000,34.888779,44.716757,43.835919,7.945634,12.970118,83.227928,80.904472,35.161948,37.169302,34.883839,44.710843,43.833094,0.986415,323346.58,3.87,1890295967471623,17756395192,850307696950224,10660716678,8078f8e4cad65aa37df6a82acb0b0fb1, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,160,3400.704000,32.645891,43.023509,41.724233,6.499513,10.017144,62.210974,60.477610,31.482244,35.230844,32.642454,43.012595,41.720705,1.866269,127970.44,2.92,777718923150283,12962936873,342002201592274,8145162130,896134031b851b10f1e50694aa5370b7, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,185,1250.896000,31.115755,41.268010,39.928895,6.097276,8.629299,44.087631,42.816488,29.366723,33.896355,31.113652,41.253984,39.925198,3.035372,80394.91,2.61,534104068846252,14200564314,219777836426940,7408015710,3b83b513b407bcac0772e8e9ecba3c73, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,210,353.792000,29.110902,39.312179,37.592512,5.727932,7.420796,22.169006,21.614239,26.787504,32.396902,29.109242,39.287309,37.586855,3.120519,22562.23,1.94,194502045408922,15043958756,63008183874376,5414984968,16156686100d7b8e5ded29dd0e2e9572, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,85,41278.784000,50.101222,52.394043,52.367851,25.095056,30.904428,96.396309,95.307019,52.087174,51.270799,50.101180,52.393678,52.367211,0.127433,336631.31,5.28,1950823474712070,19956175442,886175927039299,14433255539,ee88dff27319295c2c49d81f1822a897, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,110,26231.360000,45.347258,48.315577,48.140821,21.617107,26.502197,94.374725,92.729332,46.203489,46.873365,45.347195,48.315094,48.139347,0.207933,358819.86,4.48,2046850861253933,17864908696,943190134067797,12267974557,e10ee5b19dd45af3bb7558827cd16699, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,135,15222.400000,40.211121,44.303901,44.131101,17.303616,21.648335,88.698185,86.434055,40.360177,42.425041,40.211062,44.303662,44.130118,0.406844,232369.98,3.61,1724357524652414,20580450547,648910456828919,10068979268,1341b5380ba8aef99f9c82051e2f7c7f, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,160,8383.408000,35.442129,40.672635,40.389308,13.898758,17.561007,77.909078,74.603780,34.960919,38.360980,35.442027,40.672350,40.388727,0.577982,240070.51,4.06,1490547318878312,19936187121,640848305416836,11287179585,36c8adc9c0bd84085dd5c9c6f4620d88, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,185,3901.808000,30.797243,37.390950,36.868435,10.727724,13.613566,60.178896,55.770563,29.544166,34.376237,30.797148,37.390388,36.867315,0.630271,154584.65,3.47,978307867679006,14944375798,414817080410511,9731940804,c65d3bac6cdaf6ad3d266695008f240f, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,210,1420.256000,26.790352,34.470362,33.877912,8.339453,9.910652,35.952275,31.355380,24.581189,30.590115,26.790287,34.469375,33.875904,0.563409,52335.71,2.03,429638944391807,13335679795,146148470269392,5684302895,747432e218881318173214f638eac90f, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,85,8926.488000,53.925061,52.808713,53.388469,37.181233,43.208094,97.329230,96.534170,59.426347,56.231781,53.919112,52.795104,53.353101,0.064123,174634.39,3.10,1132145067495853,10580925708,470799446816363,8503680568,a78e42e3eb389eb61f99e305d6cfef14, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,6203.312000,47.938399,49.421292,49.581833,30.444240,36.370668,96.553235,95.212868,54.331729,52.195256,47.932147,49.404529,49.543137,0.353012,165785.95,3.31,1098465516118048,13538780298,447071249943033,9117492330,924c478b5893ba0bc7be77d0f184ea15, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,4331.936000,42.184264,46.514144,45.938007,24.369630,29.657094,94.639744,92.165786,47.380441,47.647043,42.179161,46.496010,45.893606,0.793303,168471.68,2.99,1346897349174259,17242716829,470500506936201,8340409278,ad17f7cc2417a154dff6252518a171b4, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,3004.416000,36.582278,42.891197,41.413429,18.781442,22.865206,87.862243,84.215754,39.095878,41.767596,36.575200,42.867319,41.375541,3.395522,207934.88,3.80,1355562082321865,17426313128,558699751517341,10624556393,9d75e04e9166a414f31c5a9b9a980cb8, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,1836.648000,31.051348,38.131435,35.829000,12.899793,15.414772,68.747272,65.115387,30.734567,36.472799,31.043719,38.096040,35.811681,5.610612,185754.17,3.44,1247175589636254,16776354925,503760842866236,9682394250,cf4c30c27dcaa37fa6036264755b5e54, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,742.888000,25.542944,32.899405,32.609881,8.576311,9.946805,33.637397,31.403263,23.349007,31.223835,25.540447,32.880527,32.582709,6.082892,109950.21,2.40,763455299357674,13555386882,300033628066092,6766633147,1b96b78867ee0a112a9d8173c7f777e4, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,85,59234.256000,48.516298,48.329831,49.034181,25.923736,32.529215,97.543495,96.887578,52.754983,48.550113,48.485324,48.318168,49.021550,0.376171,419374.19,6.08,2586371471266263,22231436131,1116958195939808,16531257271,cc790c43327c0c82048f987de7cc2fdd, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,110,36054.224000,43.466249,44.097031,45.612096,22.850479,28.702158,96.477041,95.471198,47.513792,44.657637,43.437538,44.079588,45.597643,0.355096,474560.68,5.55,2857047986725613,19351392079,1258121879709256,15246450821,04f9e5d3e25b0fc532f97806c7edc8e5, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,135,21667.120000,38.284267,40.877509,42.945533,19.381768,24.572044,93.915794,92.284189,41.814627,40.938828,38.260477,40.855244,42.931318,0.358084,391823.88,4.06,2601489667514783,18016520664,1119846567867917,11901213618,52fccb7035a2c39924816620f6f0befc, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,160,13038.272000,32.978972,38.169861,40.177581,15.601970,20.225913,87.290237,84.353427,35.402236,37.006426,32.967103,38.155953,40.170876,0.351209,385222.59,4.29,2416869368980149,17681626243,1030021944307728,11872118489,500f2c0996c31f743e8d92e8b43b6922, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,185,7270.384000,27.579643,35.175549,37.005097,11.545609,15.461670,69.631511,65.823922,28.539760,32.705783,27.576541,35.172255,37.001844,0.264992,253605.60,3.28,2099602395469745,16730094333,885795630532607,11901269860,4f825412e816db33c9fc5948faf9ccd1, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,210,2614.048000,22.395573,31.286524,33.614223,7.491047,10.325724,41.005655,37.487149,21.949189,27.959928,22.356255,31.278875,33.608976,0.213303,193382.25,3.52,1296257580408036,14817502270,524703261295583,9852960190,5d6570901cc2fec544f4468f5dbb7c98, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,85,3609.596000,54.926808,65.524958,65.534759,43.108734,50.547692,99.909469,99.893964,63.763613,70.030966,54.924145,65.501578,65.505661,0.003697,238458.63,2.83,1587553261649840,9454999471,648283185396905,7831643181,c571dbff964041add05300e9b2d8721a, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,110,2689.600000,48.530004,61.560817,61.063674,36.619485,43.680855,99.899409,99.868250,57.904365,62.490965,48.528012,61.550109,61.039179,0.004006,181919.94,3.33,1517152625108509,19955866110,508085160486158,9309576216,2be1bb41fe061f58c58ce6539faebf78, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,135,1877.184000,42.504573,57.652228,57.951172,30.636901,37.170563,99.850003,99.798352,51.501690,55.724618,42.503092,57.640344,57.931080,0.003093,237548.70,4.12,1666276642207919,20534702454,688073836102228,12309153716,9ac2859d33a3e732deca69f9cbdb521e, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,160,1269.216000,36.917741,51.793415,52.996531,24.867419,30.666283,99.746359,99.651172,43.464774,46.076862,36.914179,51.714949,52.785643,0.002288,253374.70,4.64,1658490107940890,21022629331,684107099061303,12965603978,6ff17c43040a22b9419463f56e25d7e2, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,185,881.940000,32.143576,46.508198,49.446632,19.767119,23.714885,98.630939,96.062170,35.147422,40.354824,32.139194,46.419194,49.331818,0.001391,213781.16,4.45,1440960024802786,20961250158,581857884117600,12641576470,db37f8ed83de7dd4b0faff5ffe0881fa, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,210,621.856000,27.253759,40.771302,44.050086,14.862618,17.960681,79.857767,75.909038,27.109318,35.273330,27.249165,40.738108,43.983959,0.000646,134809.44,3.23,1174480224855613,20453542868,376496409312149,9045593526,2ac48762f4bba76a6a757b90295c4890, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,85,5195.032000,52.761304,57.973780,57.684287,31.458285,38.582985,97.185629,96.290488,57.388425,61.790010,52.741841,57.950305,57.653669,0.133114,193631.59,3.04,1219044156668686,10297223414,516803067846174,8210884709,9fbcddd81057f6fceff33af244d46749, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,110,3585.104000,47.306243,54.058541,54.048269,27.621272,33.630043,96.209636,94.717635,52.147700,56.333646,47.296012,54.047375,54.027112,0.127615,133834.55,2.47,1051369919561581,10374997464,373747691117912,6894644993,f2f08efe105b53b555399ae01a546e36, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,135,2362.988000,41.744469,49.385729,49.641136,23.468597,28.444241,94.014371,91.453665,46.029641,49.719562,41.740475,49.379775,49.632044,0.083156,204241.00,3.08,1265796791840667,13112262035,542519369932337,8510653289,98ee1656d6c6b61cd8caf9c53bdb2923, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,160,1487.472000,36.248752,44.817344,45.398201,18.720353,23.174016,86.947731,83.677843,39.091006,43.445532,36.247285,44.814125,45.391730,0.090244,149218.75,2.37,1185218282692616,12513424671,416705833325825,6618040849,cbc06ef277bac39a23d86b43c3899daa, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,185,892.256000,30.978182,40.056183,40.582461,14.296640,17.363622,69.977525,65.623087,31.665122,37.631235,30.977534,40.054940,40.577109,0.073116,129399.68,2.31,1076392033515480,13842384235,361340461381281,6475161222,63b5ea43e217ae98093fbd6cda54f88e, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,210,387.752000,25.203684,35.694485,35.291093,9.916885,11.761215,34.266640,30.861461,24.067542,33.033448,25.203490,35.693204,35.289559,0.068320,112017.41,2.72,769445549099639,12914813760,306250520000810,7733820606,b491536235243f1510d190da0940ea60, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,85,13804.544000,54.087278,55.039754,55.204200,38.512720,45.046562,98.573619,97.954958,60.619466,62.728521,54.085759,55.005025,55.194266,0.004170,208182.59,2.68,1669999589976317,11864494923,581394341960801,7498010565,9285b811a6f3daee0ac6de3baec456b6, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,10221.848000,47.157501,51.350477,52.078633,31.771274,38.099410,98.009664,96.870202,54.998228,56.950637,47.156933,51.323199,52.067900,0.005186,240923.91,4.09,1581502655911787,15163707096,647749626708587,11223769577,ba5d40dafbb6845b4fcc61c15ded735a, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,6815.664000,40.926583,46.465620,47.582988,25.676214,31.257874,96.096135,94.132744,47.765054,50.166418,40.924667,46.439598,47.575341,0.002993,315436.49,4.50,1965520650943547,19859497513,841028806826445,12377586833,e7474702a4ae291a2bd6753309aba341, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,4336.928000,35.175497,41.042438,42.341554,19.805740,24.071636,89.895909,86.459082,38.936917,43.269737,35.171826,41.020283,42.334980,0.002194,241579.82,3.23,1943183781387477,19740971298,674668285657379,9050532956,c8745e4ffdd404faa37b344239542e5e, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,2779.040000,30.032698,35.607984,36.851824,14.632831,17.750440,74.245421,70.390224,30.813813,37.638537,30.028213,35.585423,36.835082,0.001037,262471.24,4.28,1724281423396418,19089837245,706117712774489,11912917569,0c70c9181fc0f4e6e1523651675061e1, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,1523.896000,24.641724,30.005989,31.313367,9.243067,10.407927,45.015853,42.190818,22.709172,31.578955,24.636868,29.944669,31.294058,0.000425,153521.14,2.42,1287854359443719,14313861330,428754798654664,6752061473,236e46bef91489f57b7f2508277e02ca, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,85,3574.760000,61.790292,64.854994,64.663408,39.718789,45.359653,97.375469,96.897261,64.111462,78.977948,59.042734,61.837148,61.282978,0.000101,67303.93,1.83,454919107309054,7694428666,184002833693302,5124037045,a8f64672b4210096a0db9a88aa579de0, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,2398.600000,56.708771,60.622120,60.631224,35.263959,40.299376,97.023360,96.248971,59.520109,73.978067,53.751336,57.070400,56.695162,0.005113,45718.68,1.48,395329489608284,8549056437,127685257523803,4138214765,b3349214b12b2161bd08b9cce1b71a13, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,1538.320000,51.579247,57.164364,57.310891,31.054963,35.270612,95.912372,94.726260,54.111096,69.424631,48.582130,52.685509,52.366804,0.047716,52437.21,1.70,437550015957392,10035188286,146435565766729,4760057082,b6577ecb1d3b58e0d28f7e76497dc511, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,960.712000,46.456317,55.214441,55.076851,27.189546,30.427185,93.689407,91.469119,48.087844,65.001427,43.345162,49.793705,48.544209,0.037064,47114.37,1.76,404079951759198,11723302703,131573322708489,4897822702,a22f1b9a324fa5f5a380d82939a951c8, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,589.216000,41.430580,53.019275,52.288930,23.520130,25.778379,87.475738,84.265687,41.606715,59.445975,38.222517,46.474895,43.580412,0.007893,51934.04,2.14,355549626655609,11325023445,142237147271546,6047548089,86bc234652a528fda2d9585ab077caee, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,310.208000,36.297548,50.982872,50.395526,19.674875,20.942325,73.197868,69.105624,35.144470,53.539512,32.746778,42.879281,40.025330,0.045161,36632.48,2.18,251862635906075,11565266026,100926134662553,6124962726,2701aa1b0d43c300dbd6fbd5b21bcf25, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,85,15697.800000,50.796592,56.781009,56.671573,34.552361,41.376940,98.072362,97.475453,57.780161,58.836282,50.793319,56.774782,56.662872,0.062381,226834.05,2.98,1754258411009358,12909715179,633477042966040,8362112291,84506db02a099f212836252977b9c78b, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,110,10115.296000,45.154731,52.756742,52.447280,28.745251,35.164079,97.526062,96.457511,52.247856,52.927692,45.151790,52.749707,52.439947,0.066557,203229.45,3.05,1585604673424095,14616059660,567464098478746,8521302524,352930d91125a36bd198f2a877481977, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,135,6348.432000,39.855955,48.204682,48.166088,23.522110,29.247020,96.085743,94.314607,45.733250,46.678544,39.853514,48.199148,48.162085,0.060668,307532.85,4.49,1886882487429408,17609089369,815103483777754,12435833524,1ffe233c77c77eace3d4acf89957bcbc, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,160,3955.352000,34.755624,43.851071,44.130566,18.201430,23.160293,91.680593,89.299324,38.082808,40.825879,34.753095,43.845036,44.120826,0.045370,280732.83,3.92,1754720614160411,17354645014,748291037868304,10902968459,89a9c4392e3fc32f9e6396dbecb34cf5, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,185,2537.152000,29.924499,39.311791,39.216697,12.373051,16.640617,78.884704,74.711530,30.572482,35.492535,29.921354,39.294734,39.209931,0.038978,194043.95,2.90,1536853076621321,16325605111,541876250201631,8131418231,3a5f45cfc00147c74eeeaf90c773d174, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,210,1517.352000,24.573213,35.122732,34.672854,8.472046,11.105542,49.262958,46.201141,23.177698,30.540701,24.571375,35.110474,34.667187,0.019919,171236.07,3.08,1223719429115937,15313612162,496419793472958,9275808648,91f1fa30e30d1bb7e3d29a05361edeb4, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,85,10713.168000,49.463992,54.066266,54.507807,21.979283,29.231684,97.533163,96.801168,49.270216,54.332523,49.463954,54.066033,54.507386,0.900660,194225.73,2.25,1503961318882125,9906723890,542385127372139,6278858070,b4bff70e33963154f1c41046e7634e58, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,110,7955.288000,46.067874,51.370998,51.935599,21.379130,28.051201,96.816584,95.621558,47.847420,51.260516,46.067698,51.370340,51.935466,0.838004,194478.17,3.97,1225447950605634,17766348673,519498268292054,11137068851,16245efbe5dd62781d0cb6ab50190890, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,135,5829.168000,41.416378,48.046403,48.401013,20.147030,25.798994,94.850783,92.953588,44.638112,46.939177,41.416084,48.045173,48.399781,0.828460,189401.43,2.75,1434969723456754,13933777602,528923342154080,7714275992,477d649d7330e8905bc811e721f7038a, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,160,4149.264000,35.979162,43.883228,44.894824,17.979474,22.179867,88.976113,85.614019,39.356680,41.793004,35.977563,43.882589,44.888312,0.914014,176464.58,2.46,1425548907123279,14631833882,492835959628608,6896555275,c2a4122000c4ceca12d5c9b9a3dc1267, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,185,2840.280000,30.507740,39.121384,40.577187,14.804489,17.980580,73.348261,69.274139,32.463987,37.255579,30.506716,39.120172,40.575958,0.724498,220069.56,3.55,1492349408189057,15106490414,595846140242085,9917145494,3527167cd429ba65d44f7f67a5956dc7, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,210,1303.216000,24.319097,34.981079,36.961595,9.766255,12.329515,40.216541,37.109353,24.390630,32.467062,24.318762,34.979398,36.960442,0.470930,170726.94,2.82,1163852436410168,14072294454,465615191776175,7975971922,958eab3c23457206c7c68471bfbe53ca, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,85,110379.140859,43.712483,45.989959,54.813562,14.195860,21.122759,93.578716,92.058260,45.787494,40.916379,43.712476,45.989953,54.813316,0.033433,735326.67,11.78,5062399861591396,66296500491,2053538541991212,32926216771,c7c9e6524c5231093e3000abb31241f0, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,41463.800200,42.071068,45.521767,54.021790,13.004322,18.229658,87.646891,85.679537,41.327380,40.045915,42.071027,45.521728,54.021349,0.093735,384651.28,10.40,2591422241303295,41505605714,1286120586681209,37207030647,b0c1f9d3e061888986f0759d3b035d07, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,16904.199800,40.174507,44.971704,52.734306,11.957230,15.461104,74.153116,72.258776,37.659556,39.005623,40.174365,44.971596,52.732829,0.701458,200786.46,6.88,1264079512403323,33909134949,560734956585049,19238058298,293148776473ed9afb7ddfc1b49b85f7, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,6260.715285,37.975899,44.137383,50.943354,10.986739,12.789969,51.550598,50.330820,34.517234,37.670552,37.975642,44.137056,50.940422,1.566317,101802.51,10.52,495961412102637,52579672335,258115112175334,29523675157,04826948c1cda0d64f79604d155f6d3f, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,2155.460539,35.785827,42.967620,49.548874,10.293827,10.555071,30.843013,30.272590,32.000249,36.158229,35.785588,42.966550,49.536856,1.592238,26863.76,8.78,174232284418530,65015410744,75024693194053,24570562387,710b756fb3a5441195d69752b18eedae, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,725.210789,33.706772,41.445829,46.816348,9.873283,8.926091,16.061580,15.711282,29.899410,34.496076,33.706394,41.440676,46.613974,1.916334,16881.93,7.91,76716866435742,51335195646,46152140822057,22896743748,8d1d991465772c7d2b8b3b3ad49c14e2, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,85,104865.088000,50.271779,49.478353,56.488913,22.271836,25.351852,97.734862,95.744218,47.954089,48.316073,50.270841,49.477815,56.487742,0.597084,434173.12,14.99,2806439537408912,84770387738,1212521803561215,41847257265,9322edcb14e5403800ba1326e731e763, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,51222.672000,46.284906,47.395781,54.985654,18.915946,21.157612,91.841595,89.570686,42.942100,45.720601,46.284069,47.394799,54.984646,0.955047,563419.84,15.95,2883041201832973,64317409759,1443335510420233,44167043123,8a960a1f613b7163b292c83ec04884a5, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,23531.568000,42.169902,45.714713,53.525607,15.659189,16.878559,78.373790,76.008591,38.117300,43.115274,42.169149,45.713648,53.524451,0.824380,274238.53,10.16,1732992445072903,54905423756,765867520001533,28387598843,daa9f00e2afc044307098d79fdf6502f, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,9258.624000,38.300327,43.671309,51.051592,13.003565,12.905335,52.727516,51.205527,33.894371,40.201290,38.299622,43.670069,51.045088,1.231175,131112.18,9.88,861447093733199,61079260144,366161770056932,27541907905,eb8a3e58fea9218a57b2ec3e56919e7b, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,2561.568000,34.849683,41.558961,48.892126,11.175352,9.571309,25.395310,24.852435,30.387914,37.530868,34.848555,41.557674,48.858395,1.396604,54824.44,10.18,289315506358789,54053395250,143783007523546,28887310097,2c8ffd3a5a944f965c8a8d7cafefc2c8, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,561.760000,32.801825,40.370831,47.545563,10.515805,7.984779,6.364064,6.157085,28.465091,35.755907,32.801114,40.369129,47.523472,1.797007,20713.90,7.43,106711173500751,48305811487,56892945757765,21505114143,3d7d87f0075f996639dfc009039f81d3, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,85,107029.008000,49.560957,48.137216,52.817630,20.548736,26.029977,93.225082,92.324270,49.596424,49.108479,49.560730,48.136871,52.816211,3.368409,501654.82,18.46,2564598876249549,72491598630,1263547644564581,49973798543,8d0dbd8c2124d1b3cba643f959683a29, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,25661.184000,44.823124,45.416021,51.892605,16.075105,20.385419,84.860167,83.983289,43.266148,45.941878,44.821969,45.415051,51.890634,1.999098,373780.53,9.72,2371125783454819,61494459045,1043824230026445,27186205141,88adaca62cf3f969f09a484e7db86e63, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,4731.760000,42.199254,44.338290,51.127041,13.872309,17.087814,68.988352,68.279448,39.386349,44.625140,42.197468,44.337336,51.125098,2.516579,109618.95,4.36,692518364993905,24191333250,306153182270944,12194568780,6064f7fa1ba53f54fa7daeb7969a9ae4, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,912.656000,41.058817,43.597089,50.317904,13.263036,15.558221,53.373117,52.877595,37.736357,43.572227,41.057057,43.596571,50.314737,3.714638,44386.80,10.25,226293065101903,61592717621,116134910446279,29865683477,39e9beca753408cd91d801a368b77ad5, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,453.440000,40.419875,42.737228,49.023119,13.153613,15.021963,45.895139,45.343363,36.950813,42.345303,40.418273,42.736418,49.015613,5.077730,21738.81,8.12,112660399624578,48581402900,59834349497061,23557854210,78e3b187e6aad76bf0c0d841e23b0746, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,246.032000,39.212762,41.283810,47.062853,12.964044,14.235787,36.562606,35.931642,35.577942,40.379166,39.210663,41.274638,47.029463,4.897392,12391.76,7.58,53699216543810,47950098448,35378913615965,22146718036,d8cc4efb3daa71932e0320a2e673ce58, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,85,260383.408591,44.617903,48.018598,47.344195,16.953155,23.896239,99.815379,99.765314,47.929232,43.876741,44.606951,47.988043,47.337112,0.004138,811693.04,22.36,5595613624041098,108401144053,2266364666745849,62414757870,dbf67ef76ddaf73e9e611020a3fd462e, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,110,99828.075924,41.383287,45.312694,44.663629,14.254854,19.426985,99.591786,99.318919,41.747071,41.129232,41.367708,45.296167,44.656543,0.010625,678825.05,17.33,4790133582189472,93732164594,2301608257158796,61893295966,a149ddf6d37924609102de18108d03d9, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,135,44390.489510,38.575251,44.007107,43.510504,12.449166,16.161328,93.514778,91.321462,37.204243,39.139628,38.557747,43.998689,43.502596,0.255168,650088.87,17.90,3566329068768182,82713499142,1692593863324330,49229036418,e2fe2050421c67984e4f091cdd2a2ca4, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,160,20537.622378,35.636442,42.641132,42.482829,10.790760,13.748849,76.548479,74.112042,33.274717,37.081193,35.602286,42.637960,42.473068,1.203606,363390.43,15.76,1960414217780264,78479440798,944138638646257,43967386084,909c412e02321e6d60b9c7c543621178, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,185,8929.118881,32.402921,40.711110,40.860444,8.992189,11.092420,53.251635,50.967939,29.177891,34.654083,32.343360,40.704498,40.846224,1.175967,168487.71,15.57,872441504016007,72040524602,435678737220121,43837327756,9c80b34d6fc2897f1deaa7cfcaa76c6a, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,210,3278.401598,29.065363,38.372008,39.055177,7.327259,8.164984,26.229010,24.912313,25.225948,31.980315,28.985856,38.354526,39.032206,1.039987,68047.72,11.49,334764675856495,61010794274,181456786170339,32762932200,298f6e2f639decdf25091a26eeda6ca3, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,85,10521.632000,46.138638,50.616146,51.306979,17.509351,25.561389,96.474089,95.088746,48.584277,46.732914,46.138406,50.616010,51.306855,0.080815,199193.58,3.51,1349460455444345,21324304965,556264086582107,9803498968,de0cf7b3abfeffdf9d49f8b59cdfc5bd, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,5555.321600,44.216377,47.049995,47.624905,16.487194,22.783133,92.411997,90.601047,43.640014,44.180171,44.216258,47.049787,47.624672,0.114897,184661.22,3.78,989531491387471,17125278491,478072616843521,10327023985,cf26befe8943ac074c8130a7f24d7f7c, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,2894.720000,41.497403,43.480119,43.925692,15.080134,19.455009,82.774100,80.684906,38.826327,41.173451,41.497339,43.479888,43.925393,0.177397,103447.36,3.61,568706744579001,17982321480,267787065457422,10012913400,eedcc78f3b308cdaeed212515a5dc9b4, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,1421.849600,38.139182,40.183807,40.166239,13.256730,15.787587,63.891338,61.898052,34.299237,37.914113,38.138973,40.183420,40.165850,0.239436,50469.07,2.99,264784611266355,14821497980,130215741058289,8499219150,56301288ab3c557ac5b2a2e507d08ddb, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,651.840000,34.676442,37.433654,36.861060,11.490349,12.361848,38.379252,36.901298,30.324207,34.825463,34.676150,37.432327,36.859972,0.315090,19678.76,2.65,104231260169997,14461746454,50666491957477,7557605378,70079c855bf078486420a91a2f92180f, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,296.345600,31.336266,34.944847,34.045151,10.130228,9.505031,14.316567,13.680134,26.875881,31.866976,31.336018,34.942713,34.043379,0.159915,8613.87,2.36,44071561644356,14418429543,23018929480728,6805058297,4582619714f23c6c47d3c1a0c65befc1, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,85,39264.473600,43.794576,46.939813,49.883431,16.874058,25.393348,99.827603,99.769023,49.480682,44.151590,43.793366,46.934243,49.878567,0.203356,382183.88,6.76,2230394166103317,28279634542,999358873302907,17987070839,7ffd1cdd6a0a4a92f813193c9d15510c, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,19389.657600,39.583787,43.936140,47.531088,13.903207,21.352015,97.479429,95.448858,43.199836,41.055432,39.581780,43.931350,47.526664,0.202759,426590.72,4.79,3174713495998751,21420788808,1460094352534113,17070976346,dbc624f6bb4e284486dd4218f29195fc, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,7719.712000,35.333862,41.750197,45.280280,10.340434,16.546571,84.575074,82.140592,36.526039,37.966660,35.320999,41.744878,45.275607,0.244740,423590.41,4.11,2505028196382348,19276820265,1115490957436617,11288524886,245c3b2aa993acace7292889e7d68794, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,2994.515200,32.121328,40.014788,43.235037,7.776205,12.125127,60.119351,58.057467,30.677500,35.026203,32.100578,40.010180,43.231979,0.249861,150137.15,3.12,925910327174042,16424524068,423364731997518,9243838603,7a41ce2199d8836ce05e825a30344376, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,952.064000,29.124879,37.956858,41.023420,5.668181,8.067777,29.601728,28.661896,26.019118,32.056216,29.111043,37.952911,41.020397,0.267904,45461.05,2.47,245377403843886,12090204623,117300067990913,6945414921,4c3100cded0dd5008e5aab7ca42c1de6, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,242.406400,26.764273,35.915677,39.158589,4.542903,5.210196,12.129534,12.017610,23.015582,29.493293,26.753872,35.913748,39.146500,0.567544,10732.11,1.81,73120382656778,13284238715,29970452720723,5062363355,8e3d15314ec9511c5d3b5c4976b1c13e, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,85,54888.535465,44.777675,51.040655,55.796693,16.383313,23.215010,95.263761,93.654846,47.502379,44.341649,44.777649,51.040600,55.796497,0.171093,264791.78,4.54,1828188840069542,27004162036,739460236682697,12693088979,6ec980e7b8f94da68c0c873606dae590, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,23916.611389,41.385142,50.112551,54.685199,13.865601,19.487374,90.115716,88.123509,42.324391,42.418522,41.385125,50.112446,54.684922,0.287791,308371.32,4.64,1731289082969489,22464686110,802303176463165,12738905571,6ebb30d42424ba53f1b12bab68cdcc53, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,9280.255744,38.155303,48.835377,52.833676,11.568279,16.153499,77.887611,75.802187,37.574423,40.305461,38.155274,48.835075,52.831744,0.522218,232166.83,3.44,1310262573388266,15946079256,607397038146364,9507764847,3a2c3e9d39db2a18ab5d531930b7fe6e, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,3220.795205,35.305073,47.136455,50.768239,9.609703,13.134843,56.910173,54.999217,33.324526,38.065460,35.305026,47.135087,50.759653,1.039338,69280.30,2.70,488099410847615,16176120948,193478943217117,7548412355,54a7e79d6bd1eb1d6e65d91765c5c823, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,1092.347652,32.920777,45.740693,48.687691,8.297405,10.557104,30.679289,29.349817,29.893694,35.958083,32.920694,45.732156,48.618864,1.134263,21248.57,2.79,112179231483101,14225246013,54578247910132,7804283311,2ed4acabcf7bd8df44e95a8d4e0a7660, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,413.138861,30.910501,45.050209,49.297120,7.631015,8.634356,7.659676,7.220216,27.388352,34.369854,30.910317,45.047224,49.294807,1.040145,5896.88,2.16,39218076707626,16278742877,16467169072574,6019245524,6da3d0939e3f61031ac29cd185e9de4d, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,85,15306.437562,46.504435,52.692437,58.881390,17.147616,23.808599,95.784809,94.442484,47.726856,45.903090,46.504373,52.692409,58.880954,1.056094,162048.49,3.88,871438457725095,17744726832,416874758827242,10691988960,0b717ee7752141e35f02afd93d52f99c, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,6862.961039,44.760987,51.789146,57.103372,16.025343,21.508854,92.411724,90.585938,44.323995,44.769209,44.760775,51.789012,57.102531,1.117953,120078.32,3.12,631080047873138,12851435341,308135830918162,8603016082,b526a2797da4765acbc4bb1a8828e1ab, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,3135.280719,42.562531,50.250448,54.881190,14.787398,18.814707,84.461815,82.183817,40.597048,43.162913,42.562240,50.249783,54.878996,1.149307,47447.21,2.81,319790886636725,16250979093,158669656949939,10340141006,c8f7dc59b989b2e4099d6421ad5ae378, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,1458.461538,40.045525,48.443335,52.430293,13.678102,16.103332,70.323182,67.610349,37.090367,41.176339,40.045311,48.441031,52.413169,1.255737,26679.52,3.37,133476235119444,16653387003,68446903926819,9606860381,4f9b48bc710d22784bd8221a778798c3, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,702.577423,37.297753,47.080727,50.544424,12.729713,13.612331,50.578849,48.061742,33.801535,39.181718,37.297302,47.071011,50.473639,0.542999,8101.09,2.19,54297257146660,15832761496,22624591061780,6117003582,0d157e0f00a018ea585f81d3aa93a4a6, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,350.593407,34.182680,43.052771,48.197519,11.773135,11.201762,26.560816,24.553434,30.395056,35.783236,34.182368,43.012253,47.927783,0.446727,4265.84,2.16,27975833486996,16646900634,11915007542547,6032267224,6a1375b670dc584a9b735785cb352fc7, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,85,5409.971200,48.078151,51.032735,54.763026,18.878240,24.565475,99.752006,99.712329,47.860972,49.475027,47.876055,51.020477,54.623505,0.187656,178861.85,3.78,930520163293286,18716945048,460661436584388,10401333344,f7999ce7831fa10390de020d18a21340, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,2474.060800,46.299071,49.352455,52.351597,17.921004,21.937530,97.641797,96.376299,44.242281,47.774967,46.131208,49.341585,52.244231,0.203519,95703.98,2.75,601389980536893,16989451634,267277379815193,7674634237,006aeb15fdb40800b58c3220485543e7, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,1184.198400,44.048538,47.163778,49.631371,16.966349,19.185571,84.753989,83.192670,40.805997,45.667102,43.922219,47.153083,49.537393,0.202553,58908.45,2.72,300915503466144,13862808274,151787226211195,7570435347,016255725ee1fa0ba9a2630c1f06178b, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,549.683200,41.307643,44.572899,46.717313,15.996944,16.408938,61.386484,60.021785,37.448971,43.130523,41.200665,44.561159,46.643982,0.240056,19622.66,2.91,103240349021849,16510613569,50413334762744,8377552643,5fa7844d02e80913ef4402d013a01eaa, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,259.251200,38.465600,41.872108,43.726269,15.187865,13.949873,35.361487,34.409118,34.389552,40.324691,38.358293,41.856400,43.661362,0.192482,8061.81,2.66,42922244922959,16718285579,21097112448098,7699475709,ee097d09547bb9acade008431afad080, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,122.585600,35.474596,39.094732,40.792081,14.488693,11.740323,16.422065,15.997180,31.418063,37.315548,35.366262,39.077684,40.748332,0.190374,3285.68,1.66,22088744001117,13467599263,9175647849900,4646431015,a40cab055907f23b11b7894d27a942a7, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,85,10170.841600,49.495852,55.556288,56.740064,21.534752,26.727911,95.401006,93.307136,50.865045,50.657321,49.495810,55.555908,56.739091,0.004857,334247.70,4.96,1766805493398408,20945898891,864200685284486,13603380810,ee236989c1afdc5647ae99882700ccbf, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,5065.446400,45.239021,54.200609,55.024856,17.524488,22.024842,89.349457,86.790211,45.173707,47.795261,45.238939,54.199876,55.023881,0.004459,332299.84,4.34,1755478672188901,19163348350,859209802385401,12027422372,09c3b65433a91121ad85f019b7d5bd7b, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,2092.217600,40.848827,52.120131,52.494943,13.375552,17.148304,75.586235,72.893353,39.515939,44.326473,40.848560,52.115873,52.491842,0.005430,155631.44,3.08,924187349095557,14507459445,438150494630652,9206048418,c505da644219238fd9e3452044cf3dee, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,613.920000,37.188933,49.998944,49.222066,10.200696,12.854153,49.265195,47.273213,34.645862,41.066280,37.188507,49.990283,49.204380,0.004305,81637.32,2.99,505126055989609,13410361808,220683069313964,8380452000,674d05d6954628d7b1b2f4a486182c19, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,165.356800,35.034148,48.413160,46.836420,9.083747,10.284480,18.211539,17.494938,31.804383,38.924858,35.033486,48.367236,46.799699,0.005315,27371.92,2.32,180671186298759,14823969230,75037519949415,6691722854,042406ae75e787f6e3c117e223e4437c, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,59.219200,33.565290,46.061330,43.926545,8.871834,8.945464,3.003452,2.866130,30.149646,36.902010,33.564609,45.957022,43.875625,0.007314,7415.08,1.63,47270774713522,10536895042,20573457204331,4681630260,157305b07294232bb6c18bcba00b8f0a, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,85,69024.079920,45.572075,50.533833,50.532615,18.007322,25.016546,95.981273,94.306569,49.040038,44.605989,45.572059,50.533532,50.532389,0.529247,479988.13,4.29,3276044293597052,22909584891,1340479703246751,11980324239,da10110e3437fbc719e096cb99fba514, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,110,30858.597403,41.310799,49.388260,49.700446,14.239393,20.209164,91.207836,89.201000,42.868672,42.263668,41.310782,49.387936,49.700169,0.676103,490507.28,3.55,3288883521164714,20518871778,1369848968714375,9950767240,41872e45e44125a33bdd1704648a9d1f, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,135,11675.188811,37.564076,48.128336,48.802558,11.054413,15.796329,79.988420,77.738953,36.975379,39.830723,37.564040,48.127864,48.801828,0.693899,299012.16,3.01,2193423440321568,16256846826,835027195512767,8396835447,aeadb529f2cf565287352fea0e6ada4d, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,160,3859.772228,34.570992,46.429240,47.408607,8.947582,12.257763,58.561813,56.528936,32.443006,37.502181,34.570924,46.428417,47.405956,0.739274,198031.11,3.53,1281733355358449,17003527326,536020951538350,9841774977,5a7f75bceccec34dee66280f6eb625c4, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,185,1255.352647,32.219529,44.271191,46.130073,7.799536,9.800843,32.990860,31.462554,29.140698,35.314215,32.219500,44.268160,46.102881,0.665640,64706.43,2.15,543452033563725,14561383582,180726116074369,6012881443,b4df8d590d17f2ae0bb6931fc75ca73c, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,210,434.589411,30.262190,42.209622,44.846822,7.210171,8.173138,9.730310,8.999197,26.709268,33.287656,30.262103,42.186733,44.806728,0.392531,26887.85,2.74,177214913749823,16949643122,74243417479067,7914022023,f49c35f58df1311a784985c9c9f854cb, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,85,28458.893333,46.612072,54.813286,53.934473,19.700878,26.439594,99.870649,99.832233,47.966347,48.712622,46.605976,54.754537,53.743838,0.013744,366380.97,5.38,2038169434845706,22445655798,952375311491892,14387365834,920a95a0e48c0747ba89afd3d6f49978, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,15344.573333,42.602042,51.664040,50.597621,16.440968,21.745652,99.790591,99.732374,42.305520,44.620772,42.589658,51.627455,50.275183,0.039890,232906.71,3.83,1620323589368180,21746666654,650417422219560,10687265079,608f666dffb833290a15b4243811bc8f, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,7487.460000,38.507591,48.934640,47.763285,13.015294,16.823403,96.938475,95.183442,36.418817,40.818928,38.497422,48.907028,47.333571,0.229424,328905.27,4.81,1861186254516989,22796916567,857533590540505,13295290792,16afbdac29cad1e5fd225e94b140fd9c, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,3167.126667,34.552219,46.081967,44.918085,10.018031,12.274520,80.907846,78.683071,31.227010,37.189947,34.540338,46.055474,44.539487,1.831042,138126.98,3.17,970003759192251,20180807959,385759883703630,8864362020,d731308cbe83bcca30786ad0c4ac45b1, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,1351.160000,31.434397,42.838165,41.665557,8.457645,9.967862,62.205239,60.198977,27.699431,34.339454,31.419579,42.807211,41.367877,2.827543,58590.86,2.75,421985930627430,17247030835,163622636023220,7662511492,c282faebe092d8b3fbaa33f18487c184, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,607.226667,28.496415,38.995166,38.043704,7.332167,8.247050,44.625087,42.899188,24.475303,31.425740,28.476269,38.934866,37.835157,2.929749,27678.78,3.05,151164702748257,15330452907,73193966331589,8617102642,fc972b0002b02fc00b84a0424224e819, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,85,38892.787213,46.387401,48.510547,50.048233,22.437677,29.601386,99.879489,99.792916,49.870896,47.536222,46.360144,48.481791,50.023786,0.373637,367973.71,5.83,2059775383034226,23366521618,961048101343633,15393332090,04532e021cc1af06286539ae2fbc7918, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,110,18719.344655,42.298808,44.566657,46.314638,18.920888,25.151333,99.430101,98.273549,44.299410,43.385370,42.259878,44.510514,46.263240,0.311588,223443.97,4.02,1570078660742785,21806189272,623998346934065,11272237957,7b2ec19abf1c013bf07bfdf2dedbed8b, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,135,9823.256743,39.010278,41.608262,43.558824,16.254778,21.471629,94.773952,92.329430,39.079128,40.378194,38.969979,41.550170,43.496899,0.424851,353836.20,4.81,2024830592156900,21885877576,928551197861109,13208980135,386716e563661bfaec973658527a080e, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,160,5314.941059,35.374763,38.746417,40.779731,13.336654,17.537344,83.327863,80.199349,33.803010,37.269679,35.325124,38.697983,40.731463,0.713257,185064.18,3.14,1345837914454043,18882208704,516819016883231,8765621490,0096a543398ae8dd881897849352f0ae, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,185,2721.422577,31.319085,35.655117,37.615534,10.141900,13.374059,64.661770,61.386714,28.602813,33.780588,31.259327,35.610165,37.577550,0.694870,128286.24,3.66,771413332563390,16579768505,338707454419503,10088970839,87b64dba193b65fa0b668795389b764e, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,210,1225.614386,27.071628,32.494532,34.313385,6.334141,8.973010,43.284347,40.619511,23.572065,29.884914,27.013821,32.465544,34.283911,1.202455,57840.07,3.51,345261332132702,16799963069,153724117108062,9830699235,ccfc3d6e7ed5f630921d773f6942d4f7, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,85,9411.324675,49.310500,49.660787,51.493095,23.010218,28.874848,98.973543,98.433264,48.548191,51.819271,49.233109,49.650879,51.484338,4.867328,174794.57,2.19,971502555387015,7914530714,455513009947353,5799939875,43abd36046509625b30ae0e4d010d7d8, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,4291.492507,45.011083,46.013981,48.186431,19.783389,24.427650,97.924738,96.749788,44.210766,47.485019,44.902847,46.007838,48.180019,5.140895,97028.73,1.61,690946610078009,9087607335,270956883555066,4486861682,22736122605baecbc60bc84034a78dad, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,1982.241758,41.403134,43.341576,45.677896,16.860918,20.469259,94.655969,92.876580,39.937745,44.256757,41.290911,43.337552,45.672330,4.954385,103337.11,1.76,609048625693704,8517338414,271176613542497,4896588198,2a0c582c5f6c2affcb37014a196580a7, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,947.180819,37.941346,40.458432,43.113551,14.081215,16.812693,87.971169,84.683575,35.739092,41.126133,37.828776,40.449749,43.103484,4.773595,63866.31,1.51,393494528671848,7045317423,169056240531443,4202424372,b9a69f9516bf726bb473bae937d7449a, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,503.760240,34.690798,37.145346,39.899431,11.929384,13.999216,75.655526,70.927486,31.993684,37.871991,34.622093,37.127066,39.879136,4.298999,37724.83,1.27,237855765686538,6320399204,100759061720876,3545819643,9c5cb518f57c4aef5d2ee09edd7c54ae, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,277.250749,31.296230,33.703600,36.601883,9.998101,11.582094,58.773197,53.429625,28.075460,34.567695,31.242875,33.678092,36.558395,3.937388,22137.30,1.15,142699853496945,6768433243,59750388086520,3224810785,33ce48b332ee57feacec0b0bece8f16d, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,85,21702.033966,46.365076,47.606083,48.090275,20.039209,27.233426,99.853837,99.810429,48.030229,48.531673,46.341208,47.573144,48.059311,2.570873,199657.95,2.41,1086720912239335,9377664837,518861715356165,6309378746,98aaf0a7bf08f4cbe3f2f693e2ff38fa, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,10237.906094,41.572421,43.637763,44.393616,15.980598,22.515789,99.733324,99.638428,42.837319,44.183549,41.562109,43.623227,44.369687,2.610361,181127.65,2.29,1012121748077224,9546967513,471147855832775,6136787706,e0f647020d479970df93ff6e26cb029e, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,4512.383616,37.531571,40.898321,42.137324,12.909590,18.491684,96.292464,94.052539,37.620843,40.834534,37.518387,40.881435,42.112807,2.144258,171896.90,2.14,965087645043538,9350964228,447365044031663,5854894851,d2c0aeacfb0471619f3322dc187cb88f, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,2072.767233,33.939089,38.348174,39.735703,10.293675,14.529287,82.277702,79.617146,32.494016,37.724793,33.925594,38.335876,39.719891,2.093913,90146.90,1.81,514968552495812,8127103601,234449520544598,4994566903,800ef439084d47433269597dce91425b, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,921.934066,30.535055,35.498666,36.781580,8.172236,11.006802,61.690695,59.061026,27.810618,34.555071,30.505439,35.488248,36.763757,1.988444,32669.37,1.20,230144695873913,6978059666,91233836484185,3360645968,09fab315b5b00cece5aed0edec5fb666, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,407.752248,27.458946,32.777710,33.844739,6.768448,8.326220,39.682747,37.984036,23.861385,31.519835,27.414835,32.770512,33.829219,2.437503,17162.10,1.42,97629636065623,7718054214,45323243655560,4060400869,c703ad8abed8ea116a4ab3e4cd48b4f1, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,71832.336000,45.218164,48.022757,47.825686,20.480925,27.815006,99.610014,99.485167,48.226307,44.112043,45.202965,48.013686,47.819138,0.300302,315924.12,9.61,1783623893309701,39098825289,828029868091181,25748608593,eac09694a4ad75f8c647e41b92a60f21, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,40218.896000,40.409466,44.831564,44.541432,16.685272,23.072622,99.327231,99.145655,42.543165,40.464282,40.382769,44.817997,44.530965,0.352368,291652.24,5.92,2091782916667029,33807844872,814473285404184,16543579554,ad7b932b2002553a1845fd1bf5b15fd7, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,20551.768000,35.920387,41.919064,41.404772,13.074468,18.508911,98.544519,98.332208,36.528167,37.076531,35.876454,41.906565,41.393697,0.390789,632316.57,6.15,3664678663834113,28838921198,1656729584647778,16815309645,354996baa6998680c6a3bc49778d8008, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,9594.256000,31.680573,39.195162,38.362008,9.714956,14.065074,92.976422,91.398672,30.672206,33.755173,31.617635,39.189709,38.354847,0.419130,330081.19,4.03,2315354615618751,23087710726,921368639546946,11017123722,b52bd8595ac4068472999d1e02bfe20a, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,3775.512000,27.732207,36.593436,35.507173,6.898270,10.074493,70.165268,68.142197,25.361422,30.494424,27.658718,36.589029,35.501656,0.579529,141655.27,3.09,1023639365648817,18724189659,395607532202925,8651215754,bbdd6199a88bfd663603259e32e8d659, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1224.376000,24.484078,33.737264,32.897821,4.957029,6.770634,46.177132,44.893929,21.046816,27.410014,24.420953,33.722688,32.884311,0.767500,43187.09,2.63,308675462517861,15760633481,120610605915075,7381509466,ae04986da1c3b7b560a351769114b8ec, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,85,43595.802597,45.118126,45.619801,47.131183,17.233124,24.791601,97.879221,96.924555,47.633673,44.503651,45.117735,45.619205,47.128917,0.011931,373107.59,4.74,2556128602939151,26753675337,1041959722236927,13220218258,e3fcc066ff9cbf7d05739af04bb3c0bc, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,110,14243.120080,39.744034,41.351325,45.636447,11.642173,18.123417,95.889186,94.696399,40.830602,40.238045,39.743358,41.348693,45.608090,0.014812,267078.43,4.00,1863271974995392,23922817105,745822473965339,11193476426,bd81841608ee39093971001c1ad50342, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,135,2713.887712,36.652729,39.569973,44.474792,8.864119,13.683754,91.212646,89.558316,35.431778,38.019233,36.646677,39.554632,44.407881,0.100926,176731.66,3.24,1291389210702658,18088268529,602466587939373,11692477681,f50cc9cc6b06df3faaabef4b0f4271ab, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,160,948.606593,35.337139,38.626744,42.858563,8.338306,12.565708,82.653932,80.705280,33.310520,37.018661,35.330139,38.607194,42.748362,0.452343,110646.88,3.09,657955396768183,15398568491,292950181072125,8763624427,dcfa46c71425658e89ada7fad36b5233, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,185,455.672328,34.000901,37.420734,40.578067,8.066115,11.887939,72.994057,70.548546,31.322582,35.877460,33.997867,37.402717,40.458402,0.364927,39422.59,2.11,302773824244233,13682175786,110107915195047,5925209611,ae6832ebf918018e5a0a686dbdaada51, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,210,260.852747,32.178368,35.846852,38.215334,7.817635,11.382541,62.731151,59.337493,28.917144,34.463209,32.159273,35.838353,38.156134,0.740417,11906.62,2.27,83373122277342,13092613348,33250075905538,6394912846,543cddc06c7cfe5be45b42068b439b9f, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,85,13186.563836,46.089218,53.774345,53.523132,17.459655,24.125888,99.636688,99.048674,46.705506,49.662129,46.015868,53.726797,53.502995,1.655302,204590.50,1.73,1376882311535162,9500353800,571348107487362,4833416020,a0be16fc9f7b868680993ef9d20bfeff, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,110,2128.233367,40.017025,50.643944,49.821183,11.184618,17.788063,98.544891,97.076806,40.384541,43.701054,39.691363,50.632409,49.804774,6.490825,83877.53,1.42,514110472198327,6207266581,233868911419211,4158320029,27249a6423594d4e7826013409f2bcd2, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,135,790.991409,38.948152,48.557312,47.148408,10.757843,16.623723,95.720208,93.458155,38.712011,42.415114,38.754152,48.548520,47.127775,4.481231,38991.66,1.19,274462074975734,7198042966,108920417806566,3329365141,5ece66d8ac09f9026097653313c4c306, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,160,451.893706,37.844755,45.792519,43.623201,10.448821,15.968138,91.198012,88.017859,37.093867,41.016023,37.718775,45.786701,43.596824,3.734396,26284.12,1.36,147452978333922,7665959868,67924174131218,3824856021,77eb6de498d6d7278146b82ff7c6f353, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,185,272.636164,35.724559,42.185466,39.459585,9.854761,14.791481,81.259262,77.165832,33.987020,38.938474,35.668181,42.176124,39.426192,2.842607,10451.21,1.00,74970467297730,6161054998,35429943813311,3663644095,b1cfc05a45f6f9c23f85de5445db035a, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,210,154.814785,32.520833,38.451584,34.614133,8.870682,12.783091,58.293377,54.941545,29.432434,35.852987,32.496180,38.436415,34.593804,2.082187,6559.27,1.18,37115666909790,6577193997,17413350112612,3361730526,2161448c4d0fe1db17af0497e0a57bc8, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,85,84849.408000,45.537320,61.988822,65.116621,16.604118,23.057008,87.646919,86.465289,46.829827,49.799107,45.478817,61.873237,65.013033,0.054207,388007.55,4.19,2579746899714471,22673199381,1083419954517736,11700123200,0bc85eaceee6a83e035b5e9f4ce20fa8, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,110,21079.904000,39.982740,56.136044,60.126237,10.995927,16.453098,72.924650,71.818857,39.695037,43.707448,39.875984,56.114934,60.089411,0.822961,165210.15,2.54,1119717709289030,14640100753,461372161523351,7103337713,2d622a53496093d000c05fc3cd5b2714, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,135,870.848000,37.525900,53.696081,57.658438,8.778899,12.794054,44.665098,43.879337,35.395265,41.071016,37.394921,53.676705,57.629308,2.366410,52382.00,1.42,350985186522399,6876135229,146275638981745,3953234323,e7e87edaed6a84fdaa32c7ec3adaf234, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,160,372.880000,37.292338,51.669351,54.017386,8.732458,12.551400,37.021346,35.990848,35.031230,40.411086,37.175111,51.655421,53.986382,2.265681,21890.53,1.36,155216938565955,8752977132,61142420302932,3771830383,ada8b4e33e542f6f36a75e6326fe5b2b, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,185,208.128000,36.901999,48.681901,52.241883,8.703522,12.282294,29.980729,28.781544,34.499400,39.381095,36.806719,48.647909,52.206617,2.003162,8633.23,1.98,46373513938033,12426799732,22775776136627,5703127603,d61bdbfb2a09910efc993bc5cbf38737, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,210,123.984000,36.031303,45.508527,49.550588,8.677824,11.889015,26.020958,24.201135,33.375989,37.785294,35.967799,45.460920,49.356442,1.794837,4179.05,1.95,21409590144451,12199629652,11548440045994,5702969900,f568d3f9e193947725ba74115905b4a2, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,85,275418.466667,42.846789,48.544902,51.809382,18.916039,24.873806,99.780669,99.299952,48.759939,44.969667,42.846640,48.544815,51.808974,0.049845,574773.36,8.14,4429617299124015,38953576976,1976353647507999,28202876835,ddd7ba0697e73edce2ff8fe8c4a40fe8, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,110,163581.920000,36.620683,45.640427,46.761227,12.506259,18.548180,97.525100,96.227825,41.688608,39.161279,36.620626,45.640071,46.760765,0.110627,693527.83,8.16,4616009265644739,38533757870,1972643950267947,23448196958,76ac987251899927bee67438cfd1adc2, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,135,46575.306667,30.096681,42.617306,41.697053,4.862296,11.460662,89.967310,88.276105,34.046992,32.813666,30.096613,42.616544,41.696510,2.107532,831207.72,4.44,6036119700344210,23639636631,2321380811744981,12389001318,4884cd2035aae0e057b49f10ca31355e, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,160,8438.080000,27.910710,39.821397,37.056016,2.898247,9.139387,78.865871,76.735020,31.175651,30.535813,27.910699,39.820370,37.055655,9.802283,188114.58,3.14,1421813980490063,18152838199,643243028126467,11386514367,a5a6e67ae3a0d72e8268fec547f96669, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,185,3339.240000,26.781081,37.222475,33.333200,2.729825,8.661614,64.331855,61.951055,28.553586,29.650519,26.781066,37.221677,33.331659,8.636309,124880.34,3.16,707670853612651,15408724980,325997001123189,8949004781,a8204c7b3d8f0fc2afc3bc714b58c705, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,210,1205.000000,25.120975,34.732885,30.993192,2.461974,7.748000,41.812539,40.069870,24.450307,28.528897,25.120883,34.728356,30.990175,6.467952,42078.72,2.75,230847161902814,13622704849,110883216730629,7848081723,2431473ec9733fa379d24d06c6b8a794, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,85,75564.931069,49.219132,51.105931,50.944204,20.389663,25.618517,99.772254,99.735230,46.214941,49.865881,49.074005,51.025273,50.866807,5.582773,600931.87,13.90,3130416061065332,49610228112,1542798369394072,37291367173,1b2bff3d1072ace5317a0ed32e01a784, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,110,27399.160839,46.911997,48.080214,47.927362,18.897778,22.925381,99.442226,99.272707,43.138447,46.784226,46.817362,48.008994,47.894059,8.487419,257620.85,9.89,1343915281786207,35808507127,664851666600420,26909096273,45a2cdb4f8c56d9d1b42243c572dfb5a, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,135,13115.220779,45.030225,45.998081,45.844239,18.075632,21.182662,97.233048,96.546823,40.743610,44.799552,44.902985,45.850620,45.793384,8.742669,160565.11,7.09,1029812084408303,39080846532,448433637696618,19833066785,b036699d635a36cb647ecffcf4d6b40c, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,160,7105.438561,42.702410,43.655353,43.507442,17.291454,19.243987,89.102369,87.430323,38.036416,42.570556,42.491717,43.410055,43.411225,8.584668,119356.59,10.92,634880379931400,54313156550,313973163020046,30933921699,d956b7757bb980ffe56b87c0d0def21e, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,185,3887.392607,39.715704,40.558244,40.346441,16.389544,16.921986,72.012491,70.217127,34.853933,39.743274,39.406898,40.236441,40.215656,7.786428,53752.78,6.66,381256153326440,41397278769,150131786864574,18581328841,a7c6ff1734316391607fd4e5469154fa, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,210,2081.806194,36.103836,37.091209,36.838161,15.259135,14.220972,52.730797,51.136117,31.284072,36.464338,35.736207,36.771962,36.736439,7.253639,28779.80,6.35,209191457125764,43784150492,80369304993661,17760087486,d72584a428e7e08b21565c7957875246, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,85,26621.634366,52.487821,56.834040,56.042998,23.971008,27.827639,98.854433,98.674329,48.195661,55.700510,52.387723,56.122551,55.293632,5.811457,295536.36,10.49,1912425847008918,53701706884,825326094659074,29287399552,45b59ee66e329afc37abf91b8a608fe2, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,110,10638.353646,49.117019,52.087485,51.565754,22.083709,23.549891,97.081311,96.626970,44.329782,49.544440,49.033448,51.581361,51.051967,9.458194,140920.00,9.69,903586997314070,55690131678,393560771839447,27074098940,2020d886fc939269a5692184edbf7a83, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,135,4339.492507,46.262251,49.578678,49.152212,20.814345,20.473465,92.294539,91.070267,41.547621,46.435004,46.152537,48.928052,48.569390,11.943561,142461.29,11.78,734584450084826,56535379548,370123570158759,32941678200,20e10737b8deb0cbfd75356b8ce58e22, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,160,2016.943057,43.918803,47.194629,46.960332,19.929157,18.565068,84.231490,82.452198,39.336199,44.113352,43.662407,46.330362,46.274911,12.711813,66836.26,8.21,443893782425315,54391900892,186663684149786,22959106959,e55c5860a7fea20f1e5171e8f9dbd8c2, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,185,993.006993,41.353676,44.174841,44.181866,18.973607,16.917335,72.764756,70.757060,36.799647,41.445870,40.813681,43.188474,43.457113,12.647851,47264.76,9.65,258801015725210,58954848492,127065099336863,27777117018,6e6e016280c5954229b3eb15db079b31, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,210,476.731269,38.253302,41.010218,40.990276,17.898406,15.175919,56.258146,54.428483,33.712867,38.465514,37.444243,39.937628,40.136604,13.460102,27018.13,9.33,145579741010654,59069203705,74108323449285,27070129567,12537474c7dd934c4548392c80436def, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,85,53498.416000,45.919938,56.785454,56.754781,21.853424,28.788134,99.867305,99.829764,49.185611,49.107599,45.916577,56.704428,56.662898,0.374960,366541.48,6.45,2164072538840094,26588164628,964085044351271,17317727688,850ea576f5ba4593a9a33568b8e13922, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,110,32367.528000,41.354049,53.209534,53.209831,18.487580,24.444189,99.788289,99.735159,44.307478,44.440351,41.345772,53.178634,53.161742,0.527824,369049.90,6.13,2199634385730863,23309184013,972551134675662,16559988909,69d8077aafdf7358ec1f024d25f90993, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,135,18313.952000,36.809528,50.199605,50.262701,14.886947,20.065591,99.578837,99.508946,38.573371,40.338093,36.798654,50.179480,50.220075,0.741194,572088.36,5.03,3347731889821046,22154843369,1501259810629345,13579374242,76635d40c0a8f8e3dcda41e55d92059f, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,160,9084.128000,32.247222,47.307531,47.054049,11.247437,15.659112,95.485242,93.249647,32.187802,36.249345,32.241073,47.297175,47.020458,0.953187,327002.29,3.56,2365696380879873,21543130135,913188152182013,9920244392,50d6dd73c8745094c6199496aac5bde4, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,185,3681.272000,28.159850,44.486372,43.466405,8.188003,11.602421,70.882545,68.869541,26.184653,32.474898,28.155127,44.467905,43.432416,1.075129,196971.25,3.61,1147314078944288,17138943329,515351262154231,10082618276,d732ada46615c2b7e8e9b958f22ddcfd, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,210,1288.744000,24.779191,42.751918,41.046611,6.018785,8.159784,45.255634,43.834688,21.483375,29.422171,24.775332,42.688025,40.972507,1.063433,60855.07,2.47,453046114304901,15237949112,169945760400775,6898907578,ff481ec52f796e1956d31aa88a610006, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,85,47757.240000,45.181475,54.747258,55.660092,19.871775,27.114884,99.820108,99.767288,49.141794,47.671744,45.139521,54.680028,55.587958,0.168407,278532.70,5.48,1964812921619198,29039711940,777847008577934,15292557302,6d7aa8b7835fecc16dd251bda499579b, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,27022.113333,40.760818,51.235946,52.130092,16.144596,22.278905,99.666134,99.599278,43.203573,43.208483,40.683035,51.192390,52.088136,0.180682,289999.16,4.14,2066834124798610,23651859537,809865410274580,11584416346,8a33b39817ce54ab73f985e05b6d2238, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,13440.593333,36.248753,47.903189,48.894349,12.172475,17.293334,99.304078,99.209691,36.836406,38.984633,36.147749,47.872760,48.872042,0.192696,537972.74,5.00,3080653939243958,19488484530,1403514168346295,13532016129,db2c9247dd7ebb0e72328ace8739c4c4, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,5671.613333,32.221886,44.785807,45.810194,8.659824,12.591299,84.983980,82.793925,30.994084,35.201329,32.052340,44.750205,45.773574,0.214673,216959.61,2.79,1496175832388016,16469108303,605917428126315,7815192392,ec171b2d27a82a7129f5d0e0c323e848, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,2052.546667,28.737171,41.732505,42.769664,6.139453,8.691199,60.249098,58.523629,26.167032,31.966238,28.562461,41.692391,42.723777,0.469614,79287.09,2.56,537629213854445,15644762871,221422565087936,7157768468,9fefe40f271e1acb9b4652d948b107c2, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,680.686667,25.969026,38.527901,39.761394,4.812190,6.366859,39.476416,38.462936,22.573272,29.287097,25.812240,38.463858,39.682305,1.224397,33015.70,3.04,179478328125202,16292831504,86578993992736,8617070541,f9ce1f230beffecbf059d73d761705e7, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,85,29010.093906,49.284024,51.241082,51.224909,21.700656,28.045121,99.839925,99.806965,47.740009,49.908141,49.264980,51.228635,51.212007,2.428736,267521.90,3.66,1863462490691738,15668490088,905064339994549,12881521087,3c9ab7d67ea88975681df138266a4ab4, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,110,13582.609391,46.177730,48.174931,48.167770,19.643688,24.584135,99.746860,99.693378,43.606292,46.265805,46.151652,48.167818,48.158858,2.446242,142450.92,3.82,1012582929008229,15200477885,483014708741625,13495757572,854585560449ae27448ec5ce3be78b67, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,135,7011.324675,43.237572,45.434726,45.370451,17.955223,21.520123,97.055092,94.945097,39.697298,43.411309,43.204861,45.425671,45.359836,2.327272,125710.49,2.77,856802965495189,17290675704,351057912087621,7747149388,6341588a94e3df485771d1d52ecd2177, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,160,3824.479520,39.969076,42.615344,42.422017,16.148608,18.387521,84.241057,81.617304,35.791736,40.474318,39.930730,42.603723,42.410276,2.029079,73040.57,3.00,558564433925855,14811830824,251322481380818,10910195723,f7c7dffee860758e1b12194e2a7f0e98, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,185,2065.630370,36.266124,39.315187,39.102788,14.204924,15.170929,64.715410,61.869257,31.785406,37.135362,36.229198,39.306560,39.085670,1.726066,49852.29,3.61,313763544824870,15134301540,133784785189192,10136230649,fc1a6b7cb16ed6dce8d66229931e9451, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,210,1075.660340,32.350555,35.799329,35.663279,12.240378,11.924162,41.089411,38.700746,27.803850,33.518510,32.320377,35.790916,35.646994,1.760444,18846.58,2.33,151145712704893,16723953969,52636451365453,6523094994,25aa2bb6f8811677f0a29aea09e89511, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,85,104826.032000,43.526164,46.013713,45.875568,18.845040,27.580202,99.860097,99.820951,49.172872,43.714031,43.525037,46.009326,45.867927,0.000005,549647.16,7.82,3933344529228609,41760952649,1535046752481918,21789317155,b085fc437ff5651f97c00553ebb23a8a, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,110,51214.400000,38.221430,41.849908,42.303956,13.993779,21.801239,99.769777,99.717825,42.610236,39.378231,38.219822,41.844008,42.293988,0.000905,637560.52,7.15,3834987240821681,32520975962,1676215847746086,19188162797,f4dab964fa830e9f8c6ad53ae513836b, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,135,20277.496000,33.844192,38.405903,40.248566,10.046333,16.580903,98.548330,97.597114,35.694405,35.879006,33.843018,38.399346,40.239363,0.092580,617793.39,4.16,4480795952163219,23827814056,1725322998675866,11631736863,e3a332054aa3a4d5c9afd8c8bde005ae, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,160,8387.352000,30.707644,35.532602,38.797566,7.852379,13.503306,84.492495,82.421621,30.260232,33.204684,30.706204,35.526452,38.790163,0.147431,336865.43,3.41,2468345804406627,19461428731,940800256259375,9519383945,9853d9c8c9ff0cbc43aa8ec1dac505ec, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,185,3397.448000,27.659439,33.096829,37.224357,5.929506,10.491719,59.481146,57.639674,25.280406,30.580749,27.657540,33.090403,37.218243,0.168215,188135.95,3.47,1122852533389754,16687624130,496828427570055,9716977734,8c0467e229f645bb2bb226884e9fb4c5, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,210,1244.480000,24.744937,31.041985,35.130819,4.370626,7.568795,31.940346,30.776181,21.148216,27.975441,24.741739,31.035587,35.124953,0.281057,74276.08,3.53,460751534047653,14997015873,199106047991287,9939141505,525bb873ad19243c0aafe87c75c7e2b4, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,85,55625.712000,45.476360,46.399908,48.297235,20.551745,28.282663,99.868573,99.830474,48.615659,45.873228,45.474183,46.383898,48.289710,0.010285,384839.94,7.78,2200684657552767,32689777470,1006560656533383,20765715474,51fe349087c99a7e4c9e82d9d12942c3, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,29302.608000,41.255135,42.975854,45.106691,17.078649,23.839206,99.787966,99.545048,43.047307,42.213120,41.253040,42.954964,45.095719,0.011407,301844.34,5.29,2165663678293102,29042784375,842930329261348,14780662301,5c4d6fbb10225c9ee2e931df925eaaa9, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,14977.032000,37.158590,39.964509,42.000685,13.662221,19.501713,97.498040,95.735631,37.007106,38.801833,37.155221,39.949606,41.992062,0.012810,457665.02,4.53,3235732202798109,26126622927,1278223658472659,12666886632,2c90c95b71358609667d3e33c32757f4, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,7280.216000,33.090876,36.904335,38.750638,10.362571,15.248186,82.845540,80.250875,31.164697,35.343576,33.085022,36.895473,38.745462,0.017884,334711.77,5.48,1975985086174748,23088481923,877812100434833,15056367949,99a8c8a469947d0e64dddc049c0a94d3, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,3238.432000,29.191516,33.750127,35.471395,7.526229,11.231613,58.572301,56.146017,25.960177,31.915237,29.184674,33.744848,35.468147,0.024655,132026.80,2.92,939019356746293,16808255588,368708355502095,8155280878,34b206f1fd99de2f8a860563583b0749, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,1238.528000,25.648936,30.488692,32.357446,5.395606,7.706281,31.757853,30.228048,21.587239,28.567105,25.642506,30.484877,32.354556,0.028792,58454.17,3.31,346336169512803,16215004245,155677139204497,9355916983,9a9b87b72be6cae98c6a5eab4498a274, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AS_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AS_Preset_0.csv new file mode 100644 index 0000000000..d137c2bd65 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_AS_Preset_0.csv @@ -0,0 +1,289 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,110,18698.144932,42.398909,48.726414,48.730037,13.975178,20.339794,99.974870,99.916243,43.030639,43.266299,42.347852,48.701124,48.704233,0.949451,,,,,,,bbef275cef307f6239117e5172ebfee1, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,135,6626.312764,41.573745,47.544940,47.468593,13.574910,19.569443,99.634603,97.784643,41.500338,42.399181,41.558854,47.532766,47.454712,1.181964,,,,,,,5090bae62cd567751ac7c35d523ca066, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,160,2748.024898,40.302340,45.978915,45.809845,13.047371,18.450339,95.187997,92.780491,39.168184,41.218028,40.287914,45.966135,45.797331,1.236379,,,,,,,cd8abe4df095bc0cca0d6a0240f2306c, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,185,1320.628910,38.277972,43.975278,43.716367,12.215143,16.686019,85.938395,83.201898,35.926258,39.555254,38.257199,43.962788,43.705768,1.267856,,,,,,,8930d7fb487e07887304cbe9a36225d9, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,210,637.083532,35.576577,41.544790,41.349178,11.117021,14.425912,71.203989,68.152619,32.267836,37.402984,35.550552,41.531979,41.333414,1.316835,,,,,,,986f8d1cc360eda6e88eda5cc0d00e72, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,235,294.473526,32.413764,38.811171,38.787917,9.877806,11.913835,51.599668,48.622341,28.518344,34.766047,32.386579,38.798631,38.777026,1.261357,,,,,,,c9d61a4cf8c1663cf34d21740de8ce32, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,110,9344.386075,41.590640,47.088492,47.208809,13.642786,19.873624,99.923230,98.330623,42.124052,42.442367,41.576045,47.078266,47.195709,1.199956,,,,,,,285c16cd662d20fbe1cbde6baa735451, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,135,3853.164681,40.715100,46.069447,46.039954,13.243703,19.008389,97.271097,94.896647,40.300148,41.600915,40.704462,46.060039,46.028109,1.232402,,,,,,,bba4a8786d2d227cf0a1f7b17339ac92, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,160,1797.309152,39.138966,44.555120,44.416379,12.577953,17.553568,90.512542,87.778606,37.443793,40.289421,39.122616,44.543889,44.404193,1.305440,,,,,,,d69775b991f1db6ca997ec39fa27851c, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,185,863.505725,36.798534,42.607978,42.406538,11.615907,15.513364,78.484265,75.416170,33.940001,38.456025,36.775620,42.595891,42.393953,1.377264,,,,,,,b678fcf0b335bc4b079dd1de9af34d52, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,210,405.637439,33.888879,40.258021,40.105475,10.441556,13.093098,60.935023,57.791112,30.246266,36.207783,33.862720,40.247393,40.092168,1.364545,,,,,,,7c9ac697e91d6c9d53b6de34da6b49b1, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,235,186.404365,30.745335,37.842956,37.734113,9.279805,10.676485,40.786172,37.940785,26.709334,33.660561,30.718939,37.833094,37.727386,1.176494,,,,,,,d6074c878f9cd9d89a6634062fe02dbd, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,110,6257.801276,40.677991,45.922681,45.802428,13.275658,19.395804,98.034918,95.683511,41.135925,41.742756,40.669811,45.916334,45.792512,1.261087,,,,,,,6da717fd276123424c5860fa59af5d97, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,135,2812.431876,39.735700,44.983796,44.747327,12.840844,18.401235,93.919439,91.289801,39.061919,40.862266,39.725351,44.976876,44.736115,1.331494,,,,,,,2f9a45683eccc4d90b4619db05758e1f, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,160,1332.115269,38.026192,43.536547,43.200057,12.102906,16.735159,85.200434,82.337488,35.964901,39.468467,38.008534,43.527127,43.188235,1.446962,,,,,,,24a5ada422b3f87ff3cfbf5bb9558bc6, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,185,630.657957,35.572966,41.656173,41.342458,11.097000,14.555576,70.876000,67.816275,32.413261,37.598650,35.549102,41.643113,41.331538,1.513525,,,,,,,63b69127660318ebb082e24ba8c23abd, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,210,291.854607,32.667639,39.374641,39.208601,9.960043,12.164622,52.661622,49.563554,28.850040,35.244649,32.642314,39.364200,39.195880,1.501015,,,,,,,975efe04e24cdb034be28fba4d00fa5d, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,235,128.994698,29.527357,37.080757,36.929765,8.858161,9.809746,32.194393,29.652338,25.424350,32.799803,29.502571,37.073937,36.923534,1.378575,,,,,,,017df679074a2b44772ea6225e4a0350, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,110,3660.106048,38.417549,44.480213,43.852138,12.250202,18.111569,90.766439,88.182260,37.637670,40.446518,38.412982,44.475632,43.843755,1.360323,,,,,,,7120c8fafde4666974524fb1bac1f80e, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,135,1807.759010,37.557136,43.591149,42.959162,11.830679,17.015565,84.802774,82.079285,35.888806,39.552592,37.548554,43.585335,42.949398,1.432517,,,,,,,5bd35a9833f332ea892ba52831f0cd79, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,160,861.930685,35.954238,42.186901,41.614067,11.142048,15.267389,73.331436,70.508578,33.215936,38.135182,35.938402,42.178519,41.603956,1.550810,,,,,,,fa21575822a17b5d464780dcdf0058fd, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,185,402.527934,33.628776,40.370804,39.929356,10.233974,13.093462,56.969293,54.185635,30.064287,36.258494,33.605919,40.360371,39.917177,1.550281,,,,,,,47bd5c0b62bf96372f1221b489578203, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,210,182.505495,30.843518,38.160287,37.872052,9.257476,10.815189,38.518996,35.977332,26.834909,33.906721,30.818599,38.151789,37.862758,1.548413,,,,,,,2b9e747c175b0f31e841aa83431d3d75, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,235,79.297933,27.880567,36.332131,36.082883,8.355081,8.703425,20.091274,18.244355,23.769995,31.566253,27.856649,36.326119,36.077610,1.527073,,,,,,,f25e2e8841cf7a4ce7a9335511808c5d, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,110,2618.144932,36.288080,43.397267,42.527753,11.190903,16.495568,79.721458,76.961062,33.843654,39.232098,36.284432,43.393077,42.520231,1.444084,,,,,,,ef829c8db9f699a3250474384acdada8, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,135,1306.162146,35.582156,42.545353,41.699887,10.855245,15.516891,72.633423,69.834313,32.711319,38.374843,35.575429,42.539768,41.691118,1.513809,,,,,,,9ffb6edc38203ba88cbd2732c5ff8755, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,160,622.834396,34.228896,41.210748,40.503959,10.314855,13.954451,60.221211,57.521168,30.807107,37.045718,34.215266,41.202302,40.494658,1.589754,,,,,,,85b2546e9e7093a65f4154098c675c94, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,185,287.457773,32.137537,39.460649,38.935261,9.579291,11.966793,43.928507,41.461622,28.247053,35.144224,32.116886,39.451510,38.922721,1.678782,,,,,,,97d1fb22f3f8ef6800ed8a9407039ea1, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,210,128.603704,29.527883,37.305469,37.035615,8.765622,9.881680,27.163552,25.065477,25.403641,32.910070,29.503622,37.297405,37.028643,1.649911,,,,,,,40b7ad555f7e997e2e1f0c6322d4727a, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,235,55.602244,26.728864,35.691534,35.455782,8.020758,7.943731,10.599686,9.430719,22.637154,30.622353,26.702973,35.682364,35.451715,1.522101,,,,,,,20877f53770758065c9ebbb5cdc0eec6, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,110,1567.969262,33.254845,41.937696,41.019312,9.730196,13.860748,53.560988,51.354939,29.266971,37.304370,33.252111,41.933341,41.012609,1.481134,,,,,,,afbb128e2037f8aa3a093b65d04e98ba, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,135,797.730270,32.762809,41.162007,40.324059,9.529334,13.147489,46.602815,44.452925,28.693954,36.589644,32.757943,41.156354,40.317748,1.573591,,,,,,,10d673da4a87018565987dc382ae845b, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,160,380.263429,31.737111,39.909783,39.178222,9.191663,11.956479,35.655020,33.682197,27.566447,35.364109,31.726822,39.902215,39.170410,1.599000,,,,,,,eebfed2e7e123cba7f94ea253e7b051f, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,185,175.349574,30.010471,38.247426,37.747265,8.704312,10.333589,22.739841,21.186311,25.780129,33.634179,29.993404,38.239827,37.740896,1.706507,,,,,,,f5e76433f1902834392eae092ead3a74, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,210,78.029048,27.734326,36.484359,36.203309,8.161114,8.606247,10.272464,9.249782,23.555574,31.587460,27.713475,36.474875,36.199416,1.726466,,,,,,,826224b01633ae4b5b349b06e8800976, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,235,34.466457,25.178690,35.223577,34.939001,7.630808,6.961774,0.260851,0.153100,21.168967,29.308176,25.154111,35.217298,34.929292,1.644907,,,,,,,8971bd8a4ccb1d943ed909018d06b536, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,110,17142.278030,42.792326,48.817039,52.279670,13.526836,20.071718,95.550367,93.751624,43.159387,43.705936,42.752250,48.802598,52.269670,0.314978,,,,,,,783b1edc5438707e86f21fc0259673c8, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,135,5346.657035,42.131836,48.161779,51.340155,13.216791,19.203589,91.122211,89.016500,41.609517,43.053940,42.122558,48.157030,51.331892,0.364939,,,,,,,abfa7a264d1675e02c726cfbb7d4fdd5, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,160,2271.805733,41.079463,47.162608,49.921457,12.880922,17.946414,82.940772,80.560236,39.454238,42.068453,41.058596,47.155741,49.907411,0.382870,,,,,,,1db6fde3445246e838ba7cba28c0078e, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,185,1056.173365,39.457742,45.752296,47.976921,12.457361,16.257370,69.881678,67.404281,36.844747,40.628501,39.418285,45.741326,47.956593,0.413666,,,,,,,1d1da8b177c649f1f8fbbe8a0138e3d9, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,210,498.505802,37.202535,43.695373,45.558467,11.953346,14.230477,52.274778,49.944161,33.916579,38.603752,37.144037,43.678597,45.532830,0.454383,,,,,,,d9cdc8c1d6426c8e48ff8f2e5c45a644, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,235,231.966188,34.352506,41.438325,42.868343,11.359943,11.967713,31.552737,29.945752,30.748117,36.067171,34.281392,41.428066,42.838267,0.377525,,,,,,,a1772e759c0766b086410a88a35578e0, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,110,8274.428341,42.414139,48.458742,51.790530,13.326553,19.593112,93.370056,91.328263,42.312100,43.341870,42.403201,48.452177,51.782637,0.338614,,,,,,,7878dd21d4280b149e34abc669d74b06, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,135,3215.848767,41.626428,47.701489,50.677718,13.038248,18.591505,87.296545,85.018912,40.525135,42.586014,41.612780,47.695863,50.666402,0.345364,,,,,,,499169daf5f54aa2a630a67ea1dde1c3, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,160,1441.482825,40.294934,46.527926,49.017241,12.661185,17.113368,76.512476,74.082839,38.122726,41.404342,40.264474,46.518970,48.999830,0.389048,,,,,,,8457720dfe625caf9a06c0429a917082, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,185,671.033582,38.367162,44.908459,46.895337,12.205393,15.260209,61.200880,58.735910,35.369854,39.726398,38.317965,44.896106,46.874445,0.400769,,,,,,,ebc48612c6d8a8489665e765a53ffdbd, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,210,314.440022,35.832544,42.769400,44.428039,11.665970,13.130502,41.561716,39.507895,32.351622,37.490193,35.765706,42.753659,44.397352,0.439832,,,,,,,5210dad487d3ba75397f9418177e5162, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,235,144.767233,32.876979,40.336439,41.602334,11.079480,10.913645,22.876843,21.320362,29.227526,34.812926,32.804133,40.323458,41.566543,0.524957,,,,,,,d8ecc361538f732e118295bb5fe0dc49, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,110,5293.326981,42.106306,48.139241,51.382901,13.198195,19.197054,91.215873,88.982491,41.592704,43.044736,42.097166,48.134421,51.373883,0.360324,,,,,,,c0755f90cbbc1e79dadaef71338d39cc, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,135,2323.177131,41.166948,47.296954,50.152012,12.894114,18.066266,83.738446,81.302191,39.635048,42.190174,41.148036,47.290693,50.139000,0.389003,,,,,,,5bc53782b69dc1121678b730ba49afab, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,160,1047.748559,39.621053,45.990376,48.305624,12.489991,16.442673,71.114767,68.613267,37.092123,40.831951,39.583756,45.979987,48.282569,0.449790,,,,,,,5bb7f71d0e6910b4e43b014ec0c44ad6, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,185,487.867824,37.484033,44.233677,46.150117,12.014772,14.494361,54.180961,51.790824,34.271415,38.993964,37.428150,44.217140,46.121829,0.503292,,,,,,,31095f54e0fac84ffc7720a09dfbac87, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,210,226.540229,34.795645,42.049915,43.523746,11.463723,12.336965,34.250798,32.467043,31.231070,36.638008,34.726842,42.034535,43.495413,0.579254,,,,,,,e81181c66f99f53224838f80c65cb5b9, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,235,102.989933,31.808682,39.509341,40.756731,10.894742,10.223218,17.263523,16.248814,28.161844,33.903121,31.734211,39.491765,40.716957,0.672687,,,,,,,a378b43343ba101b9806ea439fbc0a1e, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,110,3123.150081,41.522190,47.573186,50.681446,12.974584,18.514834,86.311647,83.950050,40.363976,42.528709,41.509373,47.566542,50.670568,0.387048,,,,,,,ffe07fdfc3175ec4d61a8863eae075a4, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,135,1472.666411,40.349347,46.571201,49.238948,12.650311,17.193497,76.732803,74.209521,38.217385,41.501588,40.322405,46.561511,49.221528,0.432833,,,,,,,77fea6e53215e778ddd70e0f6952bca3, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,160,669.041728,38.510187,45.072397,47.247898,12.226338,15.409994,61.895143,59.430709,35.553438,39.907005,38.463226,45.058304,47.222287,0.504937,,,,,,,d5290c97d3b43789cf15419323f50f71, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,185,309.943595,36.103001,43.114838,44.787721,11.725240,13.366647,43.150352,41.044857,32.656721,37.797841,36.036959,43.096297,44.747842,0.600401,,,,,,,c5508261cc907a30304ae539917a1eee, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,210,142.554061,33.290513,40.960257,42.284070,11.180904,11.255217,24.169048,22.746374,29.665782,35.317417,33.217222,40.942285,42.228929,0.744525,,,,,,,8ca5e1e72df5653d9d821c515c92b6b3, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,235,64.200415,30.290003,38.437121,39.312768,10.629597,9.302008,10.388988,9.762781,26.667083,32.482953,30.225919,38.422317,39.263949,0.918703,,,,,,,bc2ed53bbbf675c024220ff5d1fa08f8, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,110,2230.323523,40.902144,47.065931,50.025651,12.747048,17.853043,80.310563,77.833877,39.159234,42.044119,40.883593,47.056628,50.010137,0.432488,,,,,,,25f7cae54cfa38e011a4ba9246cc2186, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,135,1066.973642,39.592561,45.955238,48.444707,12.433894,16.455227,69.432393,66.862755,37.031004,40.873789,39.558409,45.943921,48.422557,0.484990,,,,,,,6b08c8eb72d13b116a88d2d9e8260d76, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,160,487.399370,37.576812,44.372189,46.322122,12.010374,14.600211,53.576153,51.187557,34.368200,39.150049,37.520842,44.354502,46.292862,0.580725,,,,,,,62f85991312e11b0f2a9f0cf7a6740d3, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,185,224.452471,35.028238,42.359001,43.902517,11.507219,12.544721,34.618845,32.780314,31.479159,36.913257,34.960476,42.338905,43.866972,0.720961,,,,,,,c870487ea0bd437ab725a1669523bd83, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,210,102.510413,32.152932,40.109768,41.288842,10.971780,10.491212,17.274965,16.206474,28.517638,34.322159,32.084919,40.094752,41.249268,0.939015,,,,,,,ee28d3bb8a4676263c666fb0b6a3e5ad, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,235,45.738877,29.173627,37.437503,38.370444,10.438940,8.681445,5.914524,5.497044,25.573370,31.464076,29.108456,37.406248,38.253545,1.108193,,,,,,,615514e11fc137ae538c593f31853b4c, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,110,1384.733420,39.637510,46.190303,48.912575,12.338322,16.646787,65.314521,62.967057,36.956190,41.159032,39.603833,46.174785,48.891819,0.470273,,,,,,,394199f0953dd3f766630be011842887, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,135,676.046415,38.232609,44.978826,47.216384,12.067681,15.240163,53.595758,51.237852,35.088743,39.857532,38.186536,44.960875,47.188211,0.534470,,,,,,,d02d64fb477a235f97b6a769282882bc, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,160,309.537847,36.068331,43.253633,45.022116,11.667912,13.361857,37.543108,35.557300,32.575723,37.901221,36.003719,43.232132,44.995827,0.667523,,,,,,,5d56548993851b95ad87419a4a56ffab, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,185,141.004841,33.435737,41.124766,42.625715,11.191396,11.375042,21.803951,20.432460,29.804228,35.534113,33.360181,41.102886,42.574648,0.859860,,,,,,,c282f680cf891fcaa6b3d9b44ef42685, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,210,63.820487,30.604207,38.807270,40.052038,10.695790,9.507630,8.338284,7.691483,26.985389,32.927625,30.537043,38.789600,39.998164,1.174219,,,,,,,f8153f7006e866427d22acebc00aba96, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,235,29.324522,27.722007,36.578322,37.385529,10.192234,7.942785,0.587215,0.564354,24.174938,30.172682,27.661118,36.555966,37.297044,1.313260,,,,,,,b5fc703ec5437c56b1564c8d42b664f8, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,110,24896.201645,43.191753,49.111596,49.323006,15.940789,22.924430,99.970096,99.961796,44.767457,44.214090,43.094777,49.017830,49.223606,0.009696,,,,,,,c42e21b5122b0794177b3fc644aa523d, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,135,10657.047568,41.768817,47.284686,47.411764,14.985665,21.106031,99.956362,99.944951,41.646090,42.703800,41.696428,47.206894,47.318019,0.011908,,,,,,,a8d684aa19914a8ad0a21be0d3dc88b7, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,160,4790.689925,39.422692,44.896153,44.949069,13.467955,18.363611,98.852515,96.704773,37.494980,40.459987,39.340303,44.815503,44.844808,0.013783,,,,,,,95623f4c591a19b62b75fafae66d2392, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,185,2183.123953,36.447850,42.295219,42.270380,11.577724,15.176810,84.666284,82.205047,33.242834,37.768269,36.356349,42.211981,42.154105,0.017961,,,,,,,7d1e78792dc8ee4b7df8d957bcaf8ecc, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,210,976.687313,33.228195,39.737380,39.600048,9.639173,12.017621,63.917620,61.696360,29.299791,34.891605,33.132556,39.653570,39.494867,0.028356,,,,,,,bcb5c2cf8fba02769a05071ec075bf4f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,235,404.663644,29.940516,37.096923,36.866229,7.879904,9.045424,41.153269,39.797557,25.679940,31.918979,29.841489,37.001936,36.749650,0.070148,,,,,,,5cd9f8a61a245fb1a3a93fffa58798f0, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,110,14749.909783,42.320779,47.786470,47.829641,15.362053,21.908635,99.962553,99.950866,42.991145,43.241656,42.247709,47.688745,47.712215,0.011131,,,,,,,a5529305cca664522b2f87bd6497ad2f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,135,6861.749942,40.535454,45.856981,45.870755,14.184989,19.691245,99.942319,99.754529,39.422934,41.483516,40.458788,45.769918,45.758015,0.013632,,,,,,,333cde7731a4000d0f6f23ac045f897c, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,160,3074.475063,37.811983,43.426147,43.383038,12.430208,16.653439,92.276650,89.721218,35.134365,39.002487,37.721938,43.339842,43.268365,0.016512,,,,,,,8644fd77662c8d1d8362b82218bbe7f8, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,185,1368.245293,34.679169,40.874843,40.787206,10.496487,13.430160,73.683149,71.295977,31.027159,36.213415,34.581057,40.788623,40.668355,0.023242,,,,,,,fcc525397fe130d3fc549e741e0bdb53, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,210,591.333589,31.458179,38.408166,38.221904,8.669823,10.404290,51.278720,49.465418,27.316284,33.354899,31.356907,38.323741,38.105412,0.055428,,,,,,,dc8b54e654ed96c4cbfabfb47e548f9e, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,235,234.017060,28.296475,36.059031,35.718503,7.146385,7.679701,30.761926,29.921102,23.998484,30.518160,28.192728,35.973198,35.602957,0.139959,,,,,,,884fb14881050fb951219569930c8e49, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,110,10652.436794,41.289658,46.419818,46.428261,14.687958,20.866397,99.950368,99.936598,41.334950,42.216540,41.209456,46.308008,46.276117,0.013539,,,,,,,b5e504137beab1818ce5aed27a01681d, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,135,5029.291939,39.342414,44.555034,44.528941,13.395026,18.452477,99.022529,96.789165,37.626012,40.355090,39.258846,44.459045,44.394019,0.016256,,,,,,,99a21ec047ba392a797ee32f5ed16291, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,160,2229.512026,36.519116,42.226458,42.167792,11.595552,15.345809,85.536357,82.921136,33.418947,37.834054,36.424986,42.133917,42.042628,0.022264,,,,,,,f61c0f1f9fc14b7add19d9a6d944de0d, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,185,974.584800,33.379735,39.800148,39.705121,9.717302,12.202666,64.820563,62.541213,29.491582,35.055801,33.277459,39.704653,39.574519,0.050206,,,,,,,ecdb599ceda13f727d23ca58f8af4b03, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,210,408.355952,30.223495,37.548105,37.264612,8.031929,9.311353,42.529599,41.079368,25.987596,32.287366,30.117702,37.459597,37.135722,0.120413,,,,,,,920eade5d7c1172c457cb77b1b0a212e, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,235,156.544993,27.194362,35.287618,34.850735,6.719078,6.816784,24.641207,24.031877,22.908888,29.536746,27.092314,35.199319,34.729702,0.198660,,,,,,,32f9c7d0980965eddf6077c402166166, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,110,6592.768462,38.729027,44.069360,44.270505,12.953709,18.571927,98.470545,96.301298,37.376746,40.137835,38.563144,43.931708,44.071925,0.012796,,,,,,,f9f73750372b9e5cb1e28df75581bcbf, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,135,3144.208407,37.030184,42.459228,42.570568,11.834618,16.310683,89.422024,86.832100,34.438072,38.394052,36.903154,42.344940,42.407178,0.017919,,,,,,,5fb0e18cdba940e944aa4d2fff784e49, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,160,1389.196650,34.462972,40.452796,40.483770,10.260457,13.400145,72.146201,69.761146,30.870158,36.044002,34.355413,40.345401,40.333050,0.032514,,,,,,,8862cc125a4edd0ee68781d93595646f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,185,594.199647,31.499228,38.415751,38.231444,8.633701,10.493508,50.300164,48.542357,27.374194,33.442685,31.392642,38.311501,38.089633,0.095787,,,,,,,33fe5d4af08741637b0a7c3b3f558bea, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,210,238.679474,28.509091,36.391775,35.937970,7.229979,7.874248,31.104652,30.167334,24.212896,30.777398,28.402466,36.298311,35.790728,0.220898,,,,,,,48af34090637ed4c41954aabb4fd6121, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,235,87.984631,25.665705,34.180578,33.636356,6.212032,5.695986,17.281667,17.037775,21.439845,28.157699,25.567994,34.082772,33.512534,0.297464,,,,,,,d2f658e4ef8169afbd588b72a2a60836, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,110,4633.433029,36.207099,42.402903,42.729219,11.177898,16.073365,87.864412,85.356484,33.339389,38.231200,35.964242,42.252407,42.515515,0.013217,,,,,,,8d2253e83b85dde576d78822f7b0e504, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,135,2206.657343,34.913566,41.021444,41.233230,10.377951,14.317350,77.001018,74.534645,31.478229,36.748286,34.736691,40.896963,41.063435,0.022507,,,,,,,859149ed5049a6c7a0f55514ca25d459, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,160,974.094213,32.792869,39.235131,39.296729,9.195545,11.882475,59.075215,57.012816,28.821381,34.652743,32.665300,39.119607,39.150534,0.049556,,,,,,,d84380975f0fb0f228b36a60186e8192, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,185,409.130562,30.111410,37.397325,37.224165,7.876674,9.287406,39.005912,37.649753,25.847378,32.232319,29.995787,37.293492,37.080718,0.156910,,,,,,,d88d2e6c7a05cf5a828e7986ea9f46a5, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,210,159.905325,27.319108,35.415283,34.960305,6.743868,6.939175,23.336836,22.791833,23.019170,29.671286,27.213789,35.318855,34.830657,0.308015,,,,,,,c8c072385af727d555b5d8d8335da752, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,235,58.136325,24.659934,33.607862,32.749857,5.919835,5.014688,12.517244,12.459556,20.496207,27.216220,24.564135,33.497520,32.620625,0.379944,,,,,,,311eabad900adf9dabd36d98894b6d59, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,110,2684.392531,32.781889,40.312736,40.644845,8.973168,12.640602,61.529401,59.620136,28.580981,35.503531,32.477193,40.164672,40.432091,0.011433,,,,,,,9bf18ad79239b79ce267f3f38dd27d1c, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,135,1273.676477,31.942693,39.199815,39.404837,8.545536,11.522358,51.269318,49.522553,27.634346,34.379439,31.708110,39.077858,39.242559,0.030076,,,,,,,69c86f0bd03d2a394537a1e7bf2c0ee9, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,160,566.062860,30.414356,37.713002,37.716872,7.855285,9.789947,36.914974,35.622837,26.022762,32.699911,30.253977,37.605100,37.570556,0.097741,,,,,,,2dfa86a57c07a7e10305705b854abe9d, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,185,235.289633,28.214546,36.147223,35.858359,6.987877,7.721344,23.205305,22.557562,23.837014,30.585423,28.087710,36.042547,35.714918,0.217072,,,,,,,b68b9382639b406ad319a5e35ef07600, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,210,89.954353,25.758718,34.391197,33.752371,6.200329,5.783038,13.896428,13.787457,21.507892,28.274166,25.654924,34.288904,33.616988,0.397895,,,,,,,18e719392c2a39f87748d2ab7ab1956f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,235,32.699608,23.305472,32.811255,31.951812,5.608891,4.224614,7.950206,8.031747,19.264544,25.981365,23.217421,32.715232,31.865964,0.516171,,,,,,,a04be9b309da63350bf2474a419f57d5, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,110,37759.222316,44.756860,48.617912,47.936933,18.208114,22.506010,99.976332,99.971354,43.690573,46.631384,44.665374,48.475838,47.785683,0.948392,,,,,,,87b3db3f19bb9d89a9c83f5a3c78f728, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,135,16608.099593,41.616169,45.875371,45.035424,16.420566,19.772255,99.352872,98.610792,39.917053,44.085402,41.498346,45.798996,44.929737,1.215416,,,,,,,ded370c089a6ef79b1fe2c0808715808, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,160,7233.662338,38.753114,42.868797,41.837287,14.889608,17.397421,91.602323,89.399285,36.114387,41.537854,38.639695,42.777314,41.701223,1.426319,,,,,,,d98fa16f82ed917268b37b49d25ad88d, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,185,3304.298163,35.814849,39.722854,38.423861,13.413212,14.953739,76.232551,73.653032,32.263297,38.821672,35.690864,39.596671,38.234319,1.520829,,,,,,,5092f35310ea4651787a8f523998b9f5, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,210,1481.690617,32.665511,36.512347,34.921984,11.985303,12.382930,56.667088,54.277736,28.484938,35.839823,32.531899,36.362093,34.684243,1.732563,,,,,,,a332eaeb6dcf9c3c59444b20561c47fc, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,235,629.250749,29.487757,33.303784,31.381570,10.686666,9.943208,34.143188,32.627374,24.968340,32.713832,29.366476,33.145161,31.116107,1.876953,,,,,,,e6f6b32cca7688ada0f8d966ce2c63f9, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,110,22200.219473,42.196464,47.025166,46.191146,16.894799,20.748149,99.901005,99.616762,41.372512,44.932821,42.145951,46.938354,46.083122,1.123516,,,,,,,bcd07e8b090223a5a896deb42fa4630e, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,135,10184.116806,39.827040,44.332676,43.328802,15.505677,18.466278,96.304643,94.539530,37.840634,42.699094,39.746129,44.255329,43.215564,1.358518,,,,,,,009fddf40053ebbc91039799be0753b0, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,160,4609.807423,37.110207,41.279464,40.073408,14.073581,16.122457,83.686032,81.197577,34.019800,40.153735,37.005160,41.171178,39.914868,1.489017,,,,,,,e8733a9ea68cb2e52e8784bbc2e95a8f, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,185,2080.814570,34.089445,38.100112,36.651721,12.633105,13.601928,65.792398,63.212116,30.189328,37.342400,33.965058,37.959943,36.440327,1.650885,,,,,,,ef625eedefb8d9a9427a7186b296f2ca, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,210,905.050642,30.993228,34.952793,33.190200,11.310570,11.117328,44.947103,42.894973,26.617715,34.371196,30.869130,34.800320,32.936427,1.789558,,,,,,,e73d875745a9e9d0e70a87527949c8a6, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,235,370.684085,27.944422,31.981671,29.853993,10.154895,8.891802,22.641699,21.542388,23.374617,31.334241,27.834715,31.827929,29.581916,1.842029,,,,,,,9b1bb40733bef1b13b3060e26eb3e288, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,110,15458.976716,40.592961,45.885768,44.903505,16.068436,19.670968,98.909364,97.754623,39.743520,43.837663,40.554708,45.813759,44.805437,1.299003,,,,,,,c019284799d06675aefa4d33b3cf4563, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,135,7355.121187,38.516847,43.147455,41.998422,14.829390,17.555271,91.694593,89.312883,36.286726,41.684865,38.448998,43.060869,41.873307,1.508452,,,,,,,733bd677db36c4533b45fa6433fcb151, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,160,3348.985783,35.829319,40.054572,38.712938,13.446042,15.159813,76.362347,73.756160,32.459013,39.084617,35.727933,39.935070,38.540389,1.676513,,,,,,,eae83a13780021782c46671df741786b, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,185,1486.408361,32.835804,36.901932,35.320508,12.084047,12.637933,57.375112,54.885283,28.738385,36.257669,32.714668,36.756362,35.098167,1.797046,,,,,,,1a1595d06b40f8391d5c655895b9017a, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,210,631.314532,29.845416,33.836890,31.954443,10.860513,10.282528,36.318556,34.565062,25.373121,33.302654,29.731171,33.684706,31.702865,1.849051,,,,,,,fe3e9bd2088323188166f8968d3a5306, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,235,247.939753,26.848433,31.078807,28.839589,9.812566,8.169075,15.070887,14.275754,22.284381,30.359005,26.744637,30.931353,28.576142,1.971785,,,,,,,6fc17b592b0d8033d4debc991a52c24d, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,110,9301.256897,37.772861,43.774649,42.404447,14.523569,18.025464,91.268309,88.985449,36.187186,42.002263,37.743754,43.718089,42.322757,1.501104,,,,,,,7f62fad046ece44ba5fa5c0b81a59406, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,135,4593.992469,36.169853,41.130156,39.695327,13.563406,16.064431,79.646253,77.092122,33.388768,39.968474,36.121908,41.037998,39.563874,1.686484,,,,,,,946ef5497532a785523668ab91ee06a2, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,160,2082.533467,33.787881,38.135076,36.562589,12.420563,13.711979,62.656007,60.181979,30.019405,37.403745,33.705524,38.010681,36.382265,1.878171,,,,,,,c1169a6945fb99f892a4a031e497ca8b, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,185,904.668870,31.029822,35.152357,33.377626,11.282318,11.311625,43.290678,41.252267,26.698452,34.616083,30.926029,35.005686,33.153960,2.056833,,,,,,,5ef76f3d8a2529b021d9b68976a3132b, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,210,372.181664,28.207020,32.354532,30.238670,10.256153,9.128495,23.304112,22.147905,23.654849,31.767899,28.105192,32.211867,29.985250,2.008137,,,,,,,6041e4797ffbd176f31419c3feae81bf, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,235,137.683240,25.355646,29.844026,27.433200,9.380420,7.242138,5.295921,5.017736,20.828107,28.990147,25.263302,29.703730,27.172039,1.953130,,,,,,,9669cc9bc7893394b9908f25ca96df09, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,110,6500.257896,35.603663,41.941840,40.192347,13.235413,16.486610,79.046724,76.602104,32.834245,40.483418,35.574456,41.893391,40.119736,1.637863,,,,,,,51935c9e39b13ab42ff45042478d65d4, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,135,3243.766080,34.331945,39.507331,37.847135,12.528484,14.743847,66.763732,64.317299,30.857030,38.578152,34.293678,39.419962,37.726102,1.858343,,,,,,,83207704d2a2fb8db3017b08c4f5607e, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,160,1458.009683,32.266108,36.681511,34.957382,11.640200,12.566232,50.088519,47.923317,28.141908,36.128310,32.200065,36.562431,34.784786,2.097707,,,,,,,0777510ff0ba10e4aa537c9eb0a9b6b4, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,185,626.251902,29.760223,33.909295,31.956719,10.721376,10.368509,32.268425,30.707985,25.274533,33.435215,29.672362,33.771819,31.741025,2.197835,,,,,,,943b36f9588e6d5c0c6123cd7dc19592, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,210,251.065857,27.050706,31.324273,29.125150,9.853370,8.345277,14.433206,13.651216,22.481610,30.698994,26.957653,31.187833,28.877997,2.327505,,,,,,,5b0d2b3337a6a7552f09c81f810346bd, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,235,88.628295,24.319519,29.045095,26.549803,9.100685,6.656109,1.867615,1.798069,19.848002,27.946175,24.233184,28.911779,26.286069,2.361850,,,,,,,5b9529fb598519f4d5eae24ddc5d297f, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,110,3874.531007,32.796308,39.175475,37.039080,11.666494,14.205748,53.477845,51.565557,28.721043,38.197021,32.766495,39.128453,36.964027,1.738952,,,,,,,a2c2b7f16b3980ebe50298460dda49f7, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,135,1944.354107,31.856158,37.153378,35.198982,11.242309,12.789748,42.545219,40.786558,27.540483,36.509717,31.824269,37.071454,35.084385,1.961796,,,,,,,0b0602cc9bbbbdef1e9e2d34558a1af9, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,160,864.938754,30.184576,34.684160,32.765275,10.662607,10.971095,28.857999,27.515890,25.643396,34.275726,30.134320,34.571337,32.598277,2.230168,,,,,,,84cb757b818451ff38c0d4461ef3becb, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,185,364.057481,27.983441,32.262867,30.106103,10.000762,9.089838,15.213145,14.438063,23.358921,31.791688,27.912709,32.136867,29.896219,2.419495,,,,,,,8b0fb5c0a87dbe9257a8694ad7d491e0, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,210,138.319527,25.447752,30.000670,27.643104,9.347828,7.334733,3.282977,3.132592,20.905892,29.168886,25.365462,29.872548,27.404610,2.528583,,,,,,,7e0cd2cb6ae22f6cfd7d1ae738bf6b7c, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,235,45.583955,22.996315,27.973362,25.420007,8.768959,5.929573,0.214680,0.214129,18.616919,26.643864,22.925922,27.852694,25.165301,2.606649,,,,,,,bddbf828ad799b5fdb06afb6b4176973, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,110,45569.505231,46.337652,43.789927,48.879647,19.104762,21.848498,93.565658,91.513844,43.361011,44.968480,46.259601,43.729281,48.830073,0.599605,,,,,,,fe2607239cb783d5a4c7b66947a47c58, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,135,19374.365538,43.245142,41.996831,47.430390,16.674565,18.777333,85.014308,82.660591,39.572900,42.921243,43.168217,41.964176,47.400187,0.843456,,,,,,,c869d7e6ba8cfd1c77adba8c4d3bf5d8, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,160,7880.030769,40.003203,40.344403,45.860049,14.333499,15.628320,69.491978,67.053965,35.846213,40.888313,39.912581,40.322347,45.836959,0.928777,,,,,,,705789f7aa7ebd308ef39bd510df6d8b, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,185,3065.250462,36.728908,38.664537,44.221989,12.111653,12.405655,47.409502,45.680652,32.278795,38.794567,36.626992,38.642123,44.202594,1.031677,,,,,,,bedb2c0d5cd5729a99cff021d45abc70, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,210,926.832000,33.610758,36.977976,42.645292,10.366922,9.356698,23.947539,23.262813,29.064167,36.645923,33.516940,36.957415,42.633797,1.388456,,,,,,,7a96a4534dfe1b48853252a2646237ad, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,235,197.926154,31.573756,35.693670,41.009070,9.575283,7.570215,9.008294,8.800219,27.091369,34.896867,31.533082,35.684884,41.001292,1.588506,,,,,,,83ef20d3f362fb6c3b23f763a48cfcf5, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,110,27939.123692,44.513892,42.445254,47.850420,17.638541,20.023639,89.343386,87.109199,41.105816,43.607156,44.444283,42.412468,47.815518,0.813153,,,,,,,6ae9177d764a7197ef2f34d3a3872474, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,135,11812.726154,41.425578,40.975239,46.549703,15.327938,17.003403,77.187977,74.841137,37.460441,41.740517,41.346496,40.953372,46.525442,0.968614,,,,,,,ae60f4e05b0182852e2d5fc63050b5c3, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,160,4681.502769,38.187162,39.437499,44.992294,13.078424,13.869576,57.582934,55.565153,33.853718,39.753347,38.093101,39.416924,44.970671,1.076616,,,,,,,65c11f190e97d31377d940bacd3a65ec, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,185,1605.286154,34.981143,37.786531,43.419562,11.077092,10.704932,34.179453,33.038543,30.456326,37.664658,34.882495,37.764120,43.401575,1.336466,,,,,,,39587e4f6132cc8261bc5d8ce9f58f5d, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,210,394.667077,32.338819,36.311890,41.931373,9.833787,8.205549,14.850067,14.403594,27.823649,35.706388,32.271356,36.294888,41.918348,1.949327,,,,,,,d96dc2167cd72852e4071e214418da16, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,235,77.604923,30.986517,35.327723,40.332414,9.429390,7.177941,5.838238,5.647010,26.558755,34.349871,30.963890,35.320467,40.326253,2.106679,,,,,,,b77dd0104bedbb0cbeff5120c7021fba, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,110,19715.364923,43.184536,41.170203,46.864302,16.605825,18.711927,85.216491,82.781913,39.487204,42.507451,43.116848,41.150175,46.837333,0.902712,,,,,,,ddbb75bf3d8735d6afb6624b88fcc2eb, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,135,8324.182154,40.131705,40.031064,45.707639,14.398246,15.745553,70.434182,68.035040,35.988209,40.815504,40.051691,40.013386,45.686270,1.029251,,,,,,,68c12b1f9a64de2512701f9f61ac3c7d, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,160,3134.429538,36.858925,38.647226,44.284639,12.209370,12.560262,48.138684,46.422230,32.419381,38.873864,36.761359,38.626744,44.265599,1.264032,,,,,,,893a9147e3f0593b61aeb7f0d1c4908f, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,185,942.062769,33.807146,37.152809,42.890577,10.467063,9.580397,25.082913,24.306215,29.263819,36.871976,33.716375,37.131431,42.878267,1.684624,,,,,,,1a639affa7b80c43882e67680fe64fd4, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,210,208.541538,31.743437,35.946053,41.452254,9.634901,7.706863,10.450288,10.172012,27.259809,35.237669,31.698618,35.931470,41.443121,2.411159,,,,,,,cc2db1fe6604133d422c8f8c667183d1, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,235,42.288000,30.629406,35.055662,39.868613,9.359825,6.991482,3.640088,3.493425,26.241201,33.941396,30.613055,35.049597,39.858351,2.736755,,,,,,,e4decb989a52462c8a3bdc65cdaa67b6, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,110,11589.792000,41.096191,39.234323,45.368051,14.956602,16.769319,75.755332,73.402389,37.057213,40.862576,41.041191,39.216741,45.343749,0.874688,,,,,,,ece8b26844647bf72cf7096274c9c307, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,135,4848.875077,38.181361,38.514305,44.457896,13.008813,13.878436,57.513701,55.403640,33.814901,39.405692,38.100449,38.497764,44.437540,1.060964,,,,,,,8afb757f788b27ebfe2517457fb46c71, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,160,1628.798769,35.038009,37.501653,43.415323,11.116365,10.787428,33.546341,32.421401,30.503296,37.626465,34.943652,37.482918,43.400737,1.515049,,,,,,,a9901c6a646cc7b068e1e3e3eeaee1a9, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,185,398.115692,32.458399,36.391089,42.143875,9.876846,8.330296,14.606473,14.192026,27.937184,35.886526,32.390908,36.374316,42.132227,2.219492,,,,,,,601a55c79e57c9863f28a817b41f7416, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,210,79.990154,31.147981,35.516663,40.683627,9.474894,7.289504,6.885315,6.659225,26.708938,34.563272,31.125137,35.508069,40.673443,3.094080,,,,,,,5bcd00a96831527ca5d792c98afc08fb, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,235,23.305846,30.093011,34.644807,39.019591,9.279370,6.777199,0.552612,0.525016,25.767354,33.310175,30.079278,34.641541,39.005154,3.434030,,,,,,,84681470c4c263005ef8b31961c75838, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,110,7627.089231,39.165492,38.120132,44.501539,13.404257,14.972137,64.028614,61.940770,34.828658,39.666432,39.124537,38.102622,44.478861,0.832386,,,,,,,04b860753c5061aaece64c822cedfa10, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,135,3076.419692,36.635455,37.559805,43.764230,11.917751,12.387647,44.772922,43.209287,32.113084,38.384322,36.564568,37.542844,43.745398,1.143907,,,,,,,3e86170e36adb1e962195af3ddb56c99, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,160,921.463385,33.805644,36.811547,42.830830,10.451077,9.606891,23.168401,22.417870,29.239716,36.780049,33.721170,36.794829,42.817277,1.853647,,,,,,,ae1106f53fadc3ee6f8c916426717c88, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,185,205.388308,31.799099,35.971038,41.617556,9.645460,7.770545,9.295876,9.038097,27.309099,35.297433,31.754119,35.958081,41.608045,2.715501,,,,,,,63500ea709d15c3ca33ab4d738383bc9, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,210,43.366154,30.766179,35.249297,40.288942,9.392976,7.073896,3.779849,3.645541,26.369416,34.194900,30.749948,35.240628,40.279187,3.542557,,,,,,,453f5a5678a4e76e09905982892b793c, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,235,16.833231,29.634358,34.314517,38.323288,9.228340,6.644271,0.022942,0.021164,25.366754,32.858858,29.620503,34.312435,38.310965,3.774674,,,,,,,be64e96aa8a03ed3fc7053843786b21b, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,110,3762.989538,36.182215,37.056162,43.656343,11.288257,12.163772,39.015231,37.655446,31.464002,38.025307,36.148203,37.038886,43.636543,0.772326,,,,,,,13136e8aa5d04ae2eaee950a4645eefc, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,135,1343.298462,34.377175,36.676446,43.037756,10.523254,10.233397,23.069484,22.284797,29.710967,37.007064,34.325702,36.660756,43.021962,1.376956,,,,,,,c077ea801bec49302d2d90c6b3659883, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,160,331.539692,32.351309,36.163998,42.090587,9.790227,8.272730,9.790898,9.489532,27.804783,35.752904,32.299186,36.150036,42.079135,2.370005,,,,,,,fe14739a8f9c3efef2d08e47152a226c, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,185,79.377231,31.179892,35.566986,40.877361,9.465699,7.324733,3.542771,3.437777,26.734581,34.681960,31.156277,35.558448,40.868885,3.227419,,,,,,,275d67699f9318f577fa52c1bcfbd46b, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,210,23.804308,30.235790,34.811792,39.450910,9.308698,6.839505,0.297615,0.282607,25.898577,33.543243,30.222267,34.803423,39.439449,3.809053,,,,,,,0f6ff20a173a865727726383fea0b2ea, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,235,11.124923,28.968522,33.799261,37.899991,9.168257,6.462472,0.000000,0.000000,24.792508,32.157055,28.952829,33.794581,37.891498,4.056408,,,,,,,f7944038147738705cba06165390bfcc, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,110,10447.577042,44.571016,47.201304,44.596808,16.966094,23.327520,99.541116,98.764406,44.901366,44.150446,44.427223,47.113341,44.500075,0.000360,,,,,,,8bb056e338739244842e09c9f32ee86e, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,135,3475.252961,42.873905,46.201768,43.828619,15.740487,21.164898,97.858144,96.306533,42.077320,43.107896,42.634397,46.111798,43.736474,0.000895,,,,,,,fb9d9bab30504119c2f966a0c2de8b0c, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,160,1130.315322,40.692653,44.909027,42.984192,14.323790,18.681128,92.386286,90.305384,38.837256,41.767423,40.386242,44.822735,42.893818,0.003057,,,,,,,42abd25b4c5f6d0059e36c591e70049f, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,185,387.406052,38.295309,43.126282,41.767185,12.906050,16.375011,82.821546,80.556691,35.599500,40.124949,38.005913,43.062788,41.692066,0.011656,,,,,,,59ec9331ee85adfde789fbcdec0c5d99, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,210,141.740579,35.729825,40.783434,40.040848,11.482309,14.177157,68.480261,66.054441,32.301525,38.136790,35.515816,40.744375,39.983535,0.032769,,,,,,,4898e7f0664a7503aaa9fe266e497c96, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,235,54.541711,32.979350,38.099757,38.093308,10.103520,11.956580,48.838932,46.439228,28.973111,35.786644,32.841759,38.076106,38.057103,0.074127,,,,,,,01254d1c2028df01c3b8d038d433f770, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,110,5299.937219,43.262099,46.192663,43.417787,16.112342,22.038733,98.555606,97.308934,43.219064,43.140819,43.012859,46.076979,43.278710,0.000651,,,,,,,6df51958bdfc8b6921bcd8d8436efc91, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,135,1827.865689,41.531716,45.221566,42.841613,14.891545,19.802040,95.222639,93.169033,40.289666,42.142230,41.215188,45.111610,42.711433,0.001755,,,,,,,945d63b092e1f2f5696e19e782c50e9b, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,160,604.256062,39.330641,43.794398,42.026707,13.511481,17.397633,87.630979,85.407117,37.056796,40.775518,39.005410,43.707686,41.919303,0.006876,,,,,,,2be73482dd00a2a470929dfde504b324, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,185,215.422516,36.919958,41.871421,40.766298,12.129158,15.222675,75.746672,73.329524,33.844535,39.078675,36.660656,41.812642,40.689723,0.021235,,,,,,,d516a3ed0fbee76fa6ad9a4678ef79b1, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,210,81.009371,34.296066,39.525478,39.074824,10.743349,13.047119,58.720231,56.180656,30.554543,37.025411,34.114829,39.488263,39.019673,0.066739,,,,,,,1d9cb75ef268b2f8231d93d7c329433e, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,235,31.877014,31.519418,37.067943,37.366722,9.465045,10.841820,37.194562,35.017037,27.336008,34.721368,31.409359,37.049652,37.333455,0.137308,,,,,,,3ff4574dd4ced084c5422f82fdd34520, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,110,3232.093902,41.586646,45.011517,42.593891,15.114048,20.804878,96.141539,94.154281,41.577999,42.130568,41.162139,44.879853,42.442624,0.001464,,,,,,,619875589cbc8797be2f363fc0ffc3df, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,135,1135.283887,40.109321,44.115332,42.113577,14.047852,18.699074,91.321004,89.109276,38.782958,41.220198,39.693246,43.996484,41.977372,0.003790,,,,,,,d48d2ac5421d088c4ecd12f846f265c0, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,160,389.785209,38.126893,42.731152,41.304174,12.812252,16.459536,82.403978,80.114658,35.688263,39.910880,37.777584,42.648231,41.199277,0.014171,,,,,,,8698a44f70515363c1448b4dd121ee52, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,185,144.800286,35.814463,40.845734,40.001029,11.515489,14.365018,69.004858,66.529462,32.525459,38.239143,35.564078,40.794534,39.928270,0.052374,,,,,,,0f714fb91a66c1513eb07b9eb8e9dc52, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,210,54.554622,33.183420,38.676647,38.454146,10.205141,12.198067,49.886418,47.507289,29.264874,36.212416,33.024099,38.647764,38.409805,0.129115,,,,,,,edba04bd9f8f797b92c09e9d1d197330, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,235,21.274089,30.445401,36.245288,36.874791,9.018489,10.004971,27.652577,25.838277,26.180404,33.879964,30.351222,36.232422,36.844569,0.209845,,,,,,,992ef50f7a753abbf233cbe623dbe41f, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,110,1535.830632,38.298366,42.940153,41.531286,13.000434,18.338853,87.427705,85.093964,37.015419,40.316938,37.774833,42.831609,41.397857,0.001753,,,,,,,52a1869a8f9a0b41043b55c9d8d44a99, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,135,560.335719,37.370244,42.223233,41.100305,12.330359,16.736272,81.360767,78.985299,35.297873,39.582565,36.898779,42.131706,40.985073,0.006692,,,,,,,11523c3708afcb6051aae029c5007bf6, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,160,207.770483,35.966694,41.046594,40.243656,11.492852,14.946799,71.157687,68.798208,33.054456,38.477607,35.602930,40.977474,40.158080,0.024803,,,,,,,6376d398a16145574f78cbc0ac8731ed, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,185,81.273107,34.009197,39.361915,39.003567,10.498571,13.052637,56.084956,53.645684,30.362751,36.939668,33.778787,39.319517,38.944645,0.088688,,,,,,,779456275ceae5aa19ee2f10d52d4511, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,210,31.583769,31.595427,37.404901,37.567901,9.440251,10.995905,36.104261,34.068765,27.460933,34.974133,31.464464,37.378651,37.526714,0.207664,,,,,,,dc1fd436c8d04eae9f825aba4fa76049, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,235,12.626130,29.007826,35.033008,36.259781,8.443587,8.851147,14.241903,12.981889,24.674675,32.699461,28.941810,35.014932,36.232813,0.302298,,,,,,,bcb6005fec975aee686963c84a7a82d4, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,110,884.594520,35.733354,41.331615,40.735632,11.331714,16.018354,74.193240,71.906552,32.806956,38.835849,35.316932,41.254461,40.627120,0.003521,,,,,,,d30b4874d1056f77753146770c61c71f, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,135,337.340476,35.146885,40.749228,40.337615,10.942399,14.950114,68.047496,65.770337,31.927279,38.242562,34.762337,40.680683,40.243382,0.012002,,,,,,,f5679da3c03efff23b91721426a0d3db, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,160,133.848786,34.170471,39.765979,39.541777,10.421197,13.611512,57.784856,55.586737,30.564492,37.319432,33.856157,39.713610,39.472802,0.048834,,,,,,,1021544f6df63d7783b2e8cf5fd0231b, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,185,53.676731,32.528591,38.294254,38.353833,9.682274,11.941977,42.107932,40.103851,28.500037,35.886022,32.328882,38.261535,38.302026,0.136610,,,,,,,3ff8310368309b029496750acbc40587, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,210,21.475119,30.371326,36.527622,37.017706,8.870264,10.027029,23.110128,21.631894,26.080298,34.066223,30.258276,36.509886,36.980250,0.256009,,,,,,,d25af1b2f275b863493db3a3e6250381, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,235,8.777060,27.952193,34.468609,35.598870,8.080367,8.027672,4.351392,3.484986,23.615282,31.798901,27.901021,34.453650,35.574755,0.317558,,,,,,,bae2d96642aaffeadf9132d231e61315, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,110,400.530146,32.474897,39.487703,39.662028,9.458518,12.924863,43.254276,41.525122,28.177106,36.769683,32.245448,39.437360,39.580943,0.006148,,,,,,,4fe0a13d73ea8071891a23cd019f313e, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,135,163.287626,32.167567,39.035558,39.284888,9.297352,12.364187,38.256399,36.614154,27.824063,36.338680,31.946144,38.989568,39.213811,0.022475,,,,,,,d4c21c87454c9f4528777757c797a6a8, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,160,69.716675,31.581430,38.203341,38.521953,9.052906,11.530298,29.999356,28.466498,27.174061,35.589605,31.390135,38.166204,38.466148,0.098065,,,,,,,d2a3a09076fdf134b04aea1e8b5fe19a, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,185,29.276540,30.437911,36.960503,37.485207,8.654893,10.287968,17.688730,16.400502,25.976752,34.390610,30.300900,36.933590,37.445630,0.187162,,,,,,,3e23fe6e8e3d7a33603fe9f810ba16c3, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,210,12.131856,28.730674,35.230612,36.239476,8.165167,8.705695,4.148468,3.296787,24.292225,32.670949,28.650793,35.214942,36.207010,0.271967,,,,,,,5aa5b9bb5138cc8f07618cfd49e8c5c1, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,235,5.483127,26.689598,33.377416,35.116589,7.700398,7.054682,0.000000,0.000000,22.388514,30.643257,26.644651,33.366251,35.096317,0.393438,,,,,,,d6a5b7d470e9386eefab0b0d0fc2878b, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,110,27173.857527,40.437185,49.745781,48.009021,11.478710,18.275921,97.421427,95.736501,41.386267,42.581636,40.373205,49.736539,47.986265,0.314726,,,,,,,09b9c65defd9af51acb9c1d49696dbed, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,135,8899.328364,39.825745,49.105501,46.960207,11.159808,17.422118,93.527700,91.457447,39.805303,41.923563,39.816765,49.101961,46.947438,0.512514,,,,,,,675bc08a2e3850d3d1e0c924cd77da4e, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,160,3513.594098,38.898777,48.035432,45.351906,10.835830,16.277945,85.837612,83.429355,37.650995,40.945677,38.892086,48.029306,45.335365,0.566933,,,,,,,9694630bff202d64778b423fdb89236a, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,185,1695.990164,37.381903,46.446083,43.168734,10.406521,14.684652,72.954742,70.413880,34.937581,39.482837,37.366461,46.436246,43.146004,0.604477,,,,,,,c878a487c4f9e43204105fe7143999d2, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,210,816.118036,35.196987,44.425688,40.601824,9.865932,12.747680,55.969391,53.590178,31.902589,37.531046,35.169178,44.409725,40.576193,0.769608,,,,,,,cd9fcb6799a1f279b487e6dfc36add2a, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,235,374.055483,32.424914,41.838122,37.859118,9.240871,10.609757,37.736908,35.762482,28.696262,35.035580,32.387516,41.820401,37.831982,0.779216,,,,,,,7fa3c9a7686612a2ed184601937423a9, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,110,12609.909475,40.056859,49.386100,47.359903,11.254786,17.762617,95.434195,93.477813,40.463428,42.181105,40.045965,49.381852,47.345627,0.438217,,,,,,,5c80d1f2926f3e3fccc4d885fc35995f, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,135,4996.086990,39.377642,48.597653,46.121168,10.986557,16.856925,90.061405,87.780967,38.713283,41.436376,39.373218,48.593176,46.107057,0.493420,,,,,,,a3f7f13b0afc17c12ac93546c8d6b991, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,160,2288.588950,38.160484,47.315999,44.268404,10.618425,15.483885,79.637184,77.102743,36.247198,40.239431,38.149969,47.308118,44.248652,0.629194,,,,,,,d6a6403f1dc55fd3b203ceef8ef9dbd0, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,185,1092.340275,36.297089,45.494128,41.879981,10.135304,13.707224,64.588814,61.912497,33.352613,38.534359,36.275850,45.479896,41.856403,0.743259,,,,,,,b4ad5ddb59191f8330ac6387fb487afd, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,210,514.215631,33.831453,43.328419,39.252809,9.557895,11.681956,46.714699,44.422245,30.270019,36.380914,33.799091,43.310244,39.225352,0.844104,,,,,,,6508ba84f3f65dd4ac8901bd407c60e8, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,235,232.139553,30.963424,40.798505,36.569471,8.956963,9.645580,29.249651,27.612816,27.168084,33.813492,30.924201,40.780528,36.542780,0.884974,,,,,,,f3f48a627baae9fd446ccce3b184cf7d, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,110,8345.504342,39.781698,49.063784,46.731152,11.133738,17.398018,93.404982,91.246943,39.751359,41.860142,39.776383,49.060033,46.718413,0.504851,,,,,,,00af7f6532dd099b97b3b013c0076803, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,135,3646.317990,38.955204,48.155989,45.351284,10.847004,16.368324,86.568867,84.075302,37.791328,40.998958,38.949441,48.150354,45.334619,0.582773,,,,,,,c47ee7071fd9c3009382500de5306fe9, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,160,1691.010528,37.492808,46.730501,43.374589,10.436027,14.823429,73.948742,71.429441,35.130442,39.630897,37.478401,46.720412,43.352167,0.751434,,,,,,,830f63f573d420b8178655ee5a825b05, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,185,799.740567,35.411362,44.812839,40.945213,9.924292,12.953735,57.552585,55.031927,32.185976,37.780015,35.385957,44.797314,40.918927,0.915540,,,,,,,fedcb9ae7d1160a68568877180be328a, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,210,368.430339,32.805104,42.538088,38.307128,9.337950,10.913863,40.491208,38.282481,29.123841,35.502495,32.769992,42.514534,38.279491,1.053105,,,,,,,6151591e639b696b3238c0b4ba2e4805, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,235,163.545992,29.935038,40.153078,35.609869,8.768466,9.004007,24.808398,23.343373,26.127837,32.886603,29.894154,40.141975,35.581966,1.066449,,,,,,,120eb5e87323e952f16e189c7abffd90, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,110,4971.218320,39.191224,48.394743,45.500451,10.907730,16.732151,88.291236,85.927836,38.398408,41.234306,39.187111,48.389784,45.486032,0.566873,,,,,,,833deaea07e23abfd5500a4a0d8fc48e, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,135,2381.748713,38.110791,47.327756,43.970315,10.581783,15.490057,78.798342,76.262853,36.197110,40.186746,38.101046,47.320461,43.950777,0.678360,,,,,,,bbebc550aac2c5a2de910f791bde7833, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,160,1106.058249,36.340027,45.685522,41.902970,10.128136,13.777199,64.025789,61.555272,33.422769,38.602442,36.319927,45.671657,41.878093,0.891435,,,,,,,c5b11ff76899106bd86bc9cf18ecb11c, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,185,510.681933,34.001919,43.592279,39.463628,9.593226,11.843535,47.263569,44.965790,30.471479,36.569257,33.971646,43.567639,39.434848,1.093529,,,,,,,320d64f8e02d09bc019f8463f75a6fe6, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,210,229.077999,31.278670,41.330750,36.888173,9.028632,9.878231,30.688243,28.996055,27.499148,34.144449,31.240649,41.307465,36.859502,1.262952,,,,,,,ccbbd4f9bcdd3859d8d62bd4dc56c0d8, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,235,98.751710,28.405098,39.047073,34.260155,8.497443,8.149780,12.889052,12.043306,24.605832,31.498157,28.364023,39.030453,34.236544,1.230057,,,,,,,59056db89379e8275440573d57f68634, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,110,3629.258126,38.487890,47.716644,44.320809,10.659262,16.043663,81.184399,78.800232,36.922192,40.579508,38.481991,47.710207,44.304718,0.641535,,,,,,,7dbf44e694a38c0b719f6c8d54196c3d, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,135,1758.040114,37.266301,46.552371,42.762875,10.325626,14.713096,70.007507,67.597447,34.766165,39.438522,37.252727,46.543724,42.741330,0.781209,,,,,,,367805e64ae583ade28bd1f84b9432b2, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,160,809.858449,35.345387,44.834083,40.735914,9.867808,12.956066,54.765396,52.458493,32.077827,37.744683,35.321039,44.818569,40.706823,1.019295,,,,,,,7c72ff40a6075649f2ec7f9d6728586a, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,185,367.091370,32.881591,42.733338,38.384699,9.334681,11.001449,38.483320,36.506151,29.195404,35.588418,32.848188,42.710730,38.356143,1.249933,,,,,,,9b35b44457943cb9698f9cc0f5b5941d, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,210,162.483670,30.184103,40.331458,35.953477,8.817438,9.192639,22.863136,21.695502,26.376386,33.174884,30.145642,40.316565,35.931711,1.423087,,,,,,,b1fa6f832f52ec3e2e7e6f765603acb6, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,235,69.353416,27.313057,38.037765,33.164305,8.313353,7.573392,5.748199,5.355585,23.528948,30.446180,27.271918,38.015228,33.133476,1.403531,,,,,,,b542645cd610eac125517f4f99e25ff4, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,110,2322.996388,36.856972,46.457972,42.373131,10.134694,14.623487,61.750534,59.673015,33.947970,39.299097,36.848993,46.449920,42.354241,0.715491,,,,,,,66b704abaf5e8718ce42c6c51f7bda53, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,135,1135.840160,35.611506,45.291193,40.922018,9.843649,13.348373,50.146546,48.129136,32.264688,38.108776,35.595216,45.281402,40.896238,0.913392,,,,,,,62003fd636e85928bf8f3b357823f3d8, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,160,516.388227,33.663545,43.498799,39.067007,9.434385,11.661222,35.654716,34.009290,29.978218,36.367342,33.636425,43.483176,39.036102,1.163416,,,,,,,afe490d38dace6050e04d5c5d336e9d3, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,185,229.439484,31.243485,41.282896,36.840515,8.974434,9.894779,22.245072,21.048401,27.415987,34.153633,31.208190,41.253921,36.808554,1.468460,,,,,,,4ac0db49d8aa69d040b755405ade2c85, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,210,98.836548,28.611126,39.230397,34.451440,8.525236,8.296555,9.398375,8.847740,24.797947,31.718658,28.572189,39.213694,34.425192,1.589245,,,,,,,098260efead6917d986749b67f7b3f7b, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,235,41.585491,25.802438,37.100782,31.834492,8.051875,6.861952,0.144819,0.130657,22.069321,28.998114,25.761286,37.088343,31.809019,1.496157,,,,,,,7a5b5f78d89f6b68e8ae0f96d596dc36, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,110,27016.914163,43.632715,49.656724,51.457869,16.709727,23.356035,95.136639,93.443427,45.284547,44.763459,43.540445,49.634470,51.383752,0.009170,,,,,,,ac6ee6f5ea95b30cdcc276bb31cd8f0b, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,135,9753.730577,41.704354,48.005682,49.699566,15.199282,20.905212,92.225289,90.242461,41.639319,43.146352,41.637719,47.996450,49.658461,0.007727,,,,,,,af21d089a8fef7821ed36a4076a9e893, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,160,3513.203105,39.438187,46.005298,47.516637,13.482359,18.141706,86.409050,84.096212,37.839537,41.144044,39.374686,45.998923,47.495066,0.006812,,,,,,,04030d47412aba14c0e65c5f80e764ae, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,185,1313.723815,36.954951,43.895690,45.240089,11.650883,15.316065,76.650344,74.034541,34.256433,38.906682,36.886668,43.889967,45.223877,0.009042,,,,,,,57f478b0fa513c4352741e42b913d774, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,210,481.379544,34.326688,41.758808,42.966162,9.930440,12.504989,61.717612,59.118318,30.868980,36.494284,34.247952,41.751550,42.954572,0.014085,,,,,,,da472f27143852460b48671159f05422, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,235,170.716668,31.653484,39.431472,40.532882,8.531670,9.931261,43.910507,41.658334,27.763060,33.897606,31.568245,39.425958,40.517462,0.016452,,,,,,,860e8dcc800d254a163e1aeeb5b4f2eb, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,110,14034.546377,42.025510,48.315624,50.141350,15.595722,21.850141,93.097818,91.031177,43.074246,43.446430,41.958333,48.304353,50.084133,0.010524,,,,,,,4626f54b027dd3488c341f17107400aa, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,135,5412.067317,40.236145,46.721529,48.446386,14.149646,19.369208,89.039921,86.705444,39.496723,41.890464,40.173040,46.715276,48.410674,0.007616,,,,,,,1a04f198f695b3aba06cd6306a38fe02, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,160,2007.261661,37.978085,44.785997,46.302965,12.415467,16.589396,81.282485,78.732674,35.843142,39.867000,37.912431,44.780031,46.282899,0.009705,,,,,,,9bc94dfe464cb298e410ed91b87082ec, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,185,741.836625,35.472232,42.728055,44.134408,10.644419,13.763992,68.810416,66.172089,32.366376,37.606423,35.398273,42.722383,44.119936,0.012664,,,,,,,0c79088af531678f4433724f09c682c2, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,210,264.798586,32.860336,40.650345,42.029247,9.123558,11.087919,51.845014,49.298895,29.158375,35.220922,32.777484,40.643311,42.015480,0.017572,,,,,,,09bd23a6928a46141228f64f7666497e, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,235,94.672097,30.292280,38.576567,39.650978,7.985855,8.800337,35.107170,33.076336,26.298474,32.721309,30.200630,38.570702,39.630129,0.024026,,,,,,,d2a167b61c92578ab8dc75ad2752c5e2, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,110,8954.960117,40.404822,47.094858,49.059102,14.431313,20.451785,90.142414,87.783379,41.151887,42.185128,40.334174,47.087399,49.024292,0.013404,,,,,,,013d7e8206121ebd869d505d6e52d5a1, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,135,3542.132944,38.849750,45.596123,47.447129,13.147971,18.107887,85.023171,82.493873,37.836006,40.726614,38.783577,45.591426,47.423915,0.013533,,,,,,,39d674b97f4842d364f4959ed4a0f969, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,160,1330.318912,36.767067,43.788115,45.481868,11.552119,15.417595,75.873098,73.164861,34.378448,38.814761,36.696996,43.783359,45.467178,0.018753,,,,,,,89a8adb7171725408421d7b808d2572e, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,185,485.654653,34.345544,41.899573,43.354751,9.924213,12.646204,61.521025,58.904451,31.029148,36.610371,34.266741,41.893386,43.339632,0.021932,,,,,,,ca1ad9a43cb648317d2e8ccf4b4b6028, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,210,172.892953,31.839738,39.887533,41.218671,8.614093,10.154099,44.516117,42.205017,28.015365,34.273802,31.752464,39.880841,41.199031,0.027701,,,,,,,20bd3d0b502e92e5c336581e2c77d3fd, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,235,63.790978,29.329337,37.767488,38.857308,7.621495,8.107020,28.595256,26.835038,25.273912,31.807195,29.235476,37.764522,38.817186,0.042773,,,,,,,526fb35cfe92952255b69c30a68414ee, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,110,4450.975486,37.178900,45.276238,47.509476,11.952987,17.530675,80.500745,78.080577,36.109565,39.870805,37.091011,45.269113,47.496400,0.012845,,,,,,,4736e187b878cd390b1d630efd907585, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,135,1855.744256,36.210274,43.958756,46.027799,11.187171,15.826716,73.964269,71.514862,34.253527,38.702102,36.130363,43.954402,46.016782,0.017791,,,,,,,1aa9d25d54ba66723a032c3357233831, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,160,725.271037,34.640957,42.326641,44.233870,10.061724,13.545549,62.884641,60.474958,31.741560,37.047527,34.560479,42.322926,44.222871,0.021894,,,,,,,91a233a93f8b2c071f7603c1d6efbdae, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,185,264.901867,32.580419,40.570250,42.297661,8.859359,11.084542,47.242764,45.162538,28.980047,35.060252,32.492975,40.564809,42.282626,0.026132,,,,,,,ece833e2fe5df8c72cd8ae218e5fd27f, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,210,95.450396,30.318680,38.793101,40.206664,7.913877,8.914709,32.037790,30.389152,26.365324,32.919530,30.226854,38.787021,40.185737,0.041475,,,,,,,a04d109296389e31c0e4e1c2b618eeb9, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,235,36.602167,27.997032,36.852131,38.110941,7.163605,7.195151,19.016815,17.723046,23.911648,30.643564,27.907235,36.844927,38.070625,0.077034,,,,,,,886796ddf1ebc4570c6e1046baa0c3dc, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,110,2628.332898,34.680747,43.842002,46.275152,10.069306,14.913680,67.636858,65.128908,31.965263,37.986588,34.581258,43.833990,46.268775,0.015699,,,,,,,93572f1e9e1af0c3d6a7ad9d86ff7cf3, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,135,1134.220856,34.063213,42.687968,44.951410,9.633602,13.790229,60.634666,58.194645,31.020246,37.051188,33.971396,42.683160,44.944369,0.022762,,,,,,,e3671bd04b5af112b5f71f25c6b11529, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,160,457.263352,32.919230,41.240484,43.275802,8.915577,12.031410,49.358935,47.052154,29.431084,35.665072,32.829029,41.237206,43.267636,0.027548,,,,,,,235692f3a69f4379820f1dbdab1918ff, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,185,169.739184,31.226683,39.708451,41.455149,8.112377,9.976971,34.697874,32.884159,27.363145,33.914460,31.136672,39.704835,41.443110,0.037250,,,,,,,007363f14188ae8494095ecebfc1d009, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,210,63.311458,29.231813,37.929146,39.262655,7.439215,8.126474,22.288707,20.891959,25.159080,31.896950,29.138674,37.923769,39.229861,0.062768,,,,,,,a864ee0107c4d0810c3e0cb4d69c904f, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,235,25.753938,27.088664,36.086368,37.678768,6.879289,6.576406,11.639962,10.689602,22.990572,29.822501,27.002634,36.075958,37.615299,0.117071,,,,,,,a694aebd327682ede8bfc46ba031f770, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,110,1228.690079,32.065572,42.427694,44.880588,8.345871,12.111925,43.061023,40.938345,28.107731,35.863943,31.964087,42.421397,44.865975,0.017986,,,,,,,2d4eb3553cb6fe9c4ff9befd7a75616f, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,135,562.252517,31.690412,41.414364,43.693637,8.156011,11.436829,36.991111,35.065424,27.665452,35.159225,31.594811,41.410543,43.681972,0.023952,,,,,,,89b7609a949825a2831e944741731439, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,160,235.492507,30.877798,40.074989,42.172912,7.791715,10.190351,27.387761,25.833910,26.756404,34.001594,30.785459,40.070211,42.157505,0.028497,,,,,,,193ea6b97fa4527a85914f5893d6c408, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,185,90.979789,29.541717,38.572230,40.313510,7.338434,8.607820,17.947567,16.729300,25.355221,32.441189,29.449609,38.566168,40.292185,0.042623,,,,,,,96e1ff476ba29eeb5cae1c5eab962fb4, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,210,35.794359,27.824417,36.806710,38.528975,6.916147,7.121841,10.424737,9.599803,23.654027,30.559889,27.733151,36.801347,38.464833,0.094362,,,,,,,57d7f9a0ca20166d65a18c0e9335d7df, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,235,15.846308,25.830632,35.299326,36.664747,6.531661,5.823794,3.788813,3.067038,21.759431,28.557488,25.746844,35.295672,36.619066,0.206588,,,,,,,2d011093d7da7a6b86c2fd8125693fdb, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_LD_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_LD_Preset_0.csv new file mode 100644 index 0000000000..6db2498ef4 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_LD_Preset_0.csv @@ -0,0 +1,337 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,8479.995082,42.188165,44.790226,44.688997,15.891908,23.391980,96.859005,95.048485,45.689717,40.670398,41.991883,44.746676,44.643683,0.000006,427440.10,12.36,2461663081366968,59723090383,1109653932283017,33915363073,fb127f44b550375cece073ad17f67fbb, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,3060.864059,39.627985,43.395369,43.663319,13.687134,20.414970,92.664307,90.543357,41.214949,38.910413,39.358515,43.357438,43.629981,0.000018,336350.80,9.73,1947606521806539,50261865305,871950713500001,26810938289,6cf9f2e36512418e3401a774c6e15e54, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1117.426573,36.623158,41.725273,42.396262,11.037965,16.797105,83.711692,81.490493,36.239605,36.718822,36.323050,41.690649,42.363998,0.002361,229815.23,6.30,1715394474833640,43901765190,641165775282248,17604818669,1d0a18f3ffc0bd755029b3c13c3d2b34, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,399.790978,33.607171,39.964839,40.852075,8.526545,13.157459,67.923874,65.795488,31.597088,34.361399,33.372380,39.937697,40.828261,0.012984,136368.68,5.51,1058616213393518,35934588147,464170829351656,20450005188,a6d220e4df8a8c7b56c1f2af6dc6e440, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,143.446707,30.813948,38.228423,39.367812,6.606772,9.978089,45.618105,44.025640,27.664095,32.086923,30.666156,38.208566,39.350376,0.047248,66974.67,3.55,536619985130080,26996750376,187024751356397,9902306426,42b4b38908378e503e443a3e56f0e119, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,54.012449,28.249351,36.649075,37.884459,5.320125,7.312530,22.595334,21.815837,24.454682,29.901469,28.174553,36.634701,37.876529,0.085443,43201.23,4.16,280994293432176,24732812936,114740420980247,11695454409,2888cb01281d04cb6d1be72173f49cfe, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,23854.214708,41.743526,44.956218,46.724444,19.417970,27.337310,99.976141,99.789374,48.018833,42.272817,41.623992,44.911128,46.684173,0.126874,504831.16,18.45,2863678728755247,81624429428,1309857277624696,50079695002,2c6db5e36cd3e11b2fd97d93bc5a196c, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,11093.318989,37.851867,43.186032,44.659304,16.102029,23.268700,97.480552,95.638590,41.505145,39.609687,37.732204,43.158733,44.630043,0.155550,700481.89,15.09,3886821668784382,70054123520,1814987122175259,41244283976,0b49361b36a25f9954efefef1601d0f3, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,4920.204718,33.670635,41.298955,42.324595,12.360996,18.710196,87.806649,85.727111,34.627384,36.501872,33.548885,41.277012,42.297262,0.173851,571809.45,8.98,4127884199398800,54660592513,1596943786787161,25104841477,f0f237af0e2d4bd8b94fbb23133e0fc1, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,2014.008146,29.716812,39.099838,39.904291,8.878765,14.242514,70.113132,68.155868,28.573074,33.220260,29.601546,39.073327,39.871765,0.210526,338878.71,6.58,2457730249717569,42664677147,946456259490801,18372315080,4c3ec53d2d1b12fdd0ca7b4fa344ad8a, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,710.269423,26.209396,36.686217,37.460728,6.028861,10.201332,45.886642,44.444775,23.616683,30.027136,26.105206,36.658112,37.441737,0.193339,222355.73,6.47,1305892713612765,33340482503,578713444242915,18359301368,bbd1f811ad45317a71e40944798f46c3, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,209.288558,23.382298,34.277391,34.581554,4.109556,7.014548,22.164477,21.370309,19.908524,27.250105,23.316612,34.264880,34.575949,0.146124,105364.67,5.60,636923682663877,30962348806,275088643352932,15734193708,3dfb19144edc6a175a39d243d1222dde, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,57117.996923,38.794439,40.270842,41.137092,13.447206,21.330504,99.976408,99.966517,43.961875,37.382839,38.592501,40.171059,41.052043,0.000385,1064954.73,32.38,6441855254040218,152947546344,2976581902812905,94197889469,147b935043850dec5549eb15df288e0d, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,23287.907692,35.112462,37.959446,38.661834,11.233032,18.536662,96.942731,94.925876,38.524652,34.901509,34.987825,37.904174,38.600893,0.000632,1363407.40,0.00,9500569975632924,3526153,3807433238035558,2407427,608556fb7152ba7b21b0eb8f2a510f57, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,9468.723077,31.420558,35.811400,36.278969,8.901792,15.309126,84.114356,81.838501,32.461224,32.419035,31.313492,35.768451,36.227767,0.000818,1733242.78,0.00,9605882818397920,3616120,4497244463705301,3552532,73e7f0e743db151ec56dbbf62d690165, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,3663.406154,27.971490,33.861515,34.083566,6.627040,11.855509,62.235196,60.251869,26.986585,29.966382,27.878178,33.826329,34.042405,0.002449,747092.96,9.71,5329646106604861,65753784359,2086477069158553,27140017592,aae916ea9c359bf32eb175bdc87f26c3, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,1229.563077,24.862703,32.102405,32.192538,4.736768,8.570291,36.209791,34.947744,22.400711,27.546597,24.790667,32.076537,32.163164,0.014288,417578.75,9.70,2468679243334591,53774470294,1086230487216770,27600196970,266d168a613fafda99c899041bd3c07c, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,340.166154,22.259548,30.596078,30.596271,3.475905,5.901515,14.115283,13.662757,18.906822,25.292252,22.211665,30.584248,30.581347,0.062870,126289.63,4.79,1005339255317209,37447549679,352720161234011,13355388518,a099e4cbe5c10dc692736a7ee668de6c, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,110,12825.994313,38.969981,41.881282,46.532249,9.916513,16.935838,90.184010,88.892925,40.643678,38.889728,38.785515,41.790010,46.485920,0.825661,893643.93,14.25,6523072598887604,79837547565,2495628169428799,39753188675,e9e6fd8372651ca90166432f532e93aa, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,135,1152.959041,37.634477,40.369287,45.949261,8.718509,14.788463,84.273781,82.491836,37.637471,37.668451,37.607975,40.345402,45.942465,3.072821,411713.46,8.82,2402223712729764,48508266514,1065334952535756,24970535846,f803f9d05bfd1420964adbab2982bead, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,160,129.715823,37.259343,40.080280,45.617172,8.549315,14.313488,78.588171,76.482092,36.728117,37.367461,37.257145,40.077335,45.615731,3.350111,167891.65,5.85,1089521014281000,35835167571,470633403518479,17918304738,376b7813a0bc7bee5c343f7924274ebb, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,185,46.862061,36.667183,39.892169,45.105646,8.418832,13.703781,68.678268,66.279861,35.449792,36.999985,36.662961,39.890009,45.103793,3.311490,74219.56,4.67,462804653925817,25834912003,194934436959819,13342155431,2257a2ddbc84d2871221fa0939292e38, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,210,23.714132,35.551123,39.493565,44.120383,8.224520,12.691001,53.851699,51.233655,33.474844,36.327568,35.534579,39.488460,44.116410,2.614959,29301.73,4.32,176116427777965,25455457106,77794872538846,12158904189,5d6ea94ccd012a4935f94d3371ffd78b, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,235,11.862599,33.654534,38.833409,42.676448,7.940313,11.151932,32.909048,31.070373,30.809301,35.234180,33.610218,38.826893,42.665888,3.171105,10408.18,3.16,75141141169168,22029150565,29072734210588,8805208139,646525a1611a0e20b7bb3df980d7be62, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,18455.736264,39.937283,44.305090,45.223930,11.962837,19.097508,99.715879,98.617679,42.079060,39.987742,39.801388,44.259342,45.194158,0.101325,824510.09,16.88,4783630483281099,81318769903,2139131433231031,46473555669,3acb81299c5316afcb12e2a6a76920c4, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,4590.460616,38.038050,43.150778,44.216469,10.643207,16.755635,94.709220,92.491651,38.322969,38.613457,37.986369,43.131744,44.203674,0.144035,571647.57,12.25,3274685422642139,63087225295,1480622195227975,34322186612,eddddc7111aeae2e4c0c8ce78f8f715a, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1541.529240,35.954072,41.791257,42.864833,9.346004,14.278256,83.815906,81.364448,34.532818,37.074643,35.896045,41.763078,42.842597,0.284156,430631.81,9.99,2519330610504050,56230361340,1118827730655668,28211580074,b4c2331f847a7d50a48ec48303ad1e6b, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,587.523246,33.550593,40.378110,41.321446,7.995834,11.541339,66.035780,63.770557,30.798272,35.336117,33.485917,40.332878,41.290363,0.510768,208919.02,7.97,1262730779525864,43441919659,544688396174711,22256811339,1b11e8a736ea94d3d4809e0a279beb16, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,217.639591,31.112573,38.717579,39.646589,6.897686,9.044270,47.473511,45.453348,27.558645,33.418041,31.056384,38.654960,39.612577,0.860182,88994.92,5.32,612853473790773,33847159523,252547982899310,16137261225,20fa0df2fdea712674c8dff2d283a626, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,79.891801,28.814033,37.088686,37.860004,6.179700,7.127175,32.581944,31.051914,24.923422,31.491222,28.768015,37.031365,37.834952,1.105525,42304.46,4.32,279358082318545,24953320420,113319599620382,12311892362,b2711653a368358a03fc26b2a6dfc298, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,110,26449.312615,40.489978,47.233825,46.877799,15.023025,22.282574,99.974926,99.968683,43.986850,42.059833,40.279799,46.966972,46.650933,0.072397,839855.42,29.15,4651245502559722,129381550903,2175703802644907,79293012586,7d869ff96a2c7bd65496ed6d7ec1d16f, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,135,10647.851077,36.797491,44.244898,43.890233,12.168901,18.445583,99.967630,99.948830,38.039482,38.911241,36.612662,43.927640,43.645088,0.070637,964000.15,20.08,5270455445763310,94740160545,2493068092459926,55223934713,be8b85b7b05b6a3716bb85602e8ae734, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,160,4184.052923,33.360578,41.291215,41.004505,9.546768,14.730749,94.614639,92.672715,32.611413,35.890504,33.181222,40.932412,40.745009,0.074154,1063161.18,14.82,5902259642079458,74091304043,2756551859637257,41172795486,86a3b325ee51a03a7a0789785e4bfecd, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,185,1552.366154,30.174366,38.601180,38.421322,7.288752,11.228521,73.884578,71.734866,27.930015,33.035677,29.992997,38.238212,38.199237,0.073976,570069.73,11.92,3251142340689054,63104701634,1479115414415433,33421001235,a6917fcdf98391f09e13cdf8a3553576, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,210,519.336000,27.416096,36.231547,36.346527,5.762447,8.252433,50.828983,49.234399,24.176501,30.483678,27.243290,35.872954,36.161097,0.078930,242211.65,9.46,1445092398101475,61804545380,632419795356954,26847859856,21410e40bdd1b5bceab591134bc70e88, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,235,168.528000,25.102763,34.190307,34.339913,4.855430,5.961627,34.670283,33.618798,21.397580,28.120496,24.979799,33.850522,34.225680,0.184236,72689.42,6.77,592719255293240,52323426086,202996601831394,18952368565,336f43c516f19a5f7d8a3870e6d5726c, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,110,5551.224160,42.636488,46.591807,52.682749,13.665219,21.115600,94.992723,93.404525,44.735055,43.151748,42.588599,46.583744,52.673011,0.759003,282012.40,7.23,2146464233290004,44982684393,787612667586729,20162820940,0304bcbc75cc32215e0756fa7bdbd96e, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,135,1289.028510,41.539338,46.196104,51.716569,13.032511,19.609588,91.614715,89.682737,42.226537,42.459249,41.527109,46.193553,51.702863,0.837279,213752.47,7.55,1254040418565009,39612679087,554133479619335,21429904200,fa960b43f77d22a65ee442fea65363cc, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,160,420.661185,40.121950,45.547566,50.261539,12.378383,17.789937,85.241413,82.905815,39.357920,41.525959,40.104102,45.542980,50.245078,0.901999,132324.27,6.25,782968259722040,35528816828,344900818559472,17867936219,7a673a44fc00a4e240899fd33070c309, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,185,157.607316,38.319242,44.588736,48.376344,11.664215,15.713790,74.711714,72.184018,36.370774,40.253796,38.293881,44.581473,48.358863,1.015589,58478.23,4.57,357055308115295,24991992572,153533225920866,13066187335,7b22787a8a94ebcb859ba444b8d9b698, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,210,63.167602,36.181918,43.352469,46.174168,10.991335,13.592754,61.276933,58.364345,33.407131,38.664042,36.146367,43.342794,46.156556,1.103669,19890.61,2.67,157871936070491,19585763162,55549472088031,7490008193,1ae02a8f629cdad01a0d55bbd85f14d8, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,235,26.318297,33.731996,41.583086,43.987758,10.335375,11.582850,45.692595,42.601663,30.433143,36.678525,33.684827,41.577819,43.982886,1.077416,14272.88,3.96,85730339827980,21588014104,38566905964508,11248023011,3f19d45576b19ef60544b4663f0d61c5, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,46929.744000,41.438839,43.626078,44.527159,18.503263,24.705102,99.977234,99.971292,44.788781,41.761752,41.238848,43.496244,44.418005,0.029972,922686.50,40.25,4935257895591908,170390279280,2391055135129167,109000456946,2f0037f32a89ae3cf015a8aabb3e8d44, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,24693.618462,36.596097,40.183338,41.526528,15.023921,20.688331,99.970403,99.961286,38.962152,38.192749,36.391092,40.070957,41.440082,0.059646,911896.05,25.97,6199523262143521,137200919810,3086784815409259,92673896077,4b01325ccbc8990256236e34df94b45a, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,11193.409846,31.892980,37.155298,38.884536,11.529062,16.532610,95.252235,93.363052,32.925217,34.710344,31.706315,37.065804,38.816750,0.092923,1507340.62,0.00,10401173583208726,3474764,4209158609777521,2375069,087207b8cfd69befe798a7f541e63b54, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,4198.822154,27.733668,34.629238,36.643377,8.393786,12.483295,73.927642,71.639905,27.175250,31.461173,27.573082,34.555792,36.585962,0.107010,1022532.61,12.16,7079528395696142,81117173912,2855645648901127,33915521600,9f12f6096709f25b887aadb63c2152c9, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1231.857231,24.465274,32.408365,34.729401,6.084197,8.844664,47.922834,46.072676,22.281638,28.555206,24.357211,32.343835,34.684585,0.119206,531433.41,11.92,3080553987598259,71004755461,1383761138081204,33955529644,bc3f0defd620f63c5fdbf9b84cb6fec8, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,338.230154,22.170755,30.549004,32.937131,4.795206,6.127341,27.254199,26.113320,19.025510,26.093472,22.105834,30.487987,32.889567,0.135184,185641.78,11.52,1149079468947150,69426380577,487004709582928,33331854285,d5528ee199e32a507e04b64a80e851ac, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,30292.547692,37.958595,39.710082,42.167405,10.721370,18.573259,96.390439,94.648934,42.243656,35.651006,37.704957,39.612577,42.135673,0.000089,1079163.73,18.68,7887213717241991,116739510458,3013814864107269,52250694000,2869e0b9f1a9aa905972452fb0ce5b2a, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,3817.415385,35.986407,39.123755,41.300441,9.297635,16.808883,92.136683,90.271015,39.255873,34.597590,35.938225,39.117574,41.293539,0.000214,496419.32,8.58,3621341192346076,60236278882,1386276070655389,23903575711,5c3542f9a27e06e5e7b708786680b4b3, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,821.030769,34.631070,38.779461,40.541700,8.631976,15.717626,85.954015,83.754823,36.416876,33.895954,34.615738,38.778697,40.535347,0.001763,387906.45,7.66,2231980024384563,43574153639,1005170920415066,21616304305,d97460205006683ec231f42b2d9ce931, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,311.544615,32.825697,38.222365,39.276899,7.739151,14.065189,74.561120,72.125890,32.782119,32.906686,32.799204,38.221582,39.272203,0.008143,141424.42,4.22,1066615056186225,30434942472,394958286618193,11799421733,5889be76063739f2b780d71421573032, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,123.596923,30.450523,37.351964,37.651064,6.501832,11.661794,54.616851,52.424738,28.696472,31.489821,30.422003,37.351036,37.648944,0.024755,86726.51,4.79,533510871440613,28843812229,226631717866753,13384973953,f704796fb41c83f80a200beea124ad6a, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,45.252308,27.897453,36.280417,36.294067,5.210895,8.852666,28.551370,27.232923,24.898001,29.756540,27.876512,36.279122,36.293667,0.024800,42616.47,4.08,264683894265141,23631285241,112638357650313,11386015520,1dd59de93019f189f25e24bcf4e0bc35, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,4262.978462,42.563363,46.765637,48.541867,14.477749,21.777269,99.663239,98.854962,44.543540,41.590636,42.497301,46.727637,48.496586,0.135747,386174.04,11.46,2851382055856589,61557245978,1308507247887744,41278080800,76f27cd7f4306d307a648a24653b6861, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,1586.720000,40.707879,45.319695,46.729015,13.158544,19.413506,96.624335,94.587290,40.676105,40.134598,40.672095,45.298115,46.694430,0.167354,365651.98,11.07,2056926429275986,54911938278,944832253571644,30757423007,0e47246bf48840687ae3f447d46296ea, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,719.672308,38.384608,43.413131,44.408708,11.798195,16.728669,86.217000,83.805416,36.542429,38.331957,38.336031,43.381901,44.366488,0.235987,291289.09,9.81,1659146690244592,51062017545,755699777887968,27625427566,61a0458848d06eba96fdef6ccf30942e, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,342.653846,35.688779,41.261566,41.874400,10.448453,14.086681,69.185765,66.579696,32.681273,36.174713,35.632335,41.223697,41.828862,0.372456,142672.04,8.56,842836889959224,43879327355,371922108473388,24193437928,e6c58af102095d249584ce24ae2998f4, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,158.824615,32.625722,38.901815,39.173912,9.067252,11.313111,46.804347,44.464831,28.923609,33.680830,32.566307,38.856404,39.118414,0.500796,66660.92,6.51,413982649998213,35775834176,176092699849707,18587906552,68297e72d39e23d673f16481f038c003, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,71.475385,29.419867,36.648118,36.839519,7.801348,8.621885,23.272416,22.048928,25.444666,30.995591,29.356157,36.606928,36.787245,0.566698,32494.14,5.34,207315985220411,30148450695,87505847228637,15347324276,393e8a980ba95813468ef4d73ed3d0ce, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,8457.428110,46.504455,49.502911,50.356613,19.134460,24.805824,99.516637,98.369718,46.684350,48.082965,46.422297,49.449042,50.280927,0.256794,297662.93,15.16,1703213376845337,73090596227,772660331725456,42190681322,104568225155c424f980951e4ea69367, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,4163.270576,43.474167,47.254260,47.676891,17.277974,21.915743,95.735767,93.513557,42.241068,45.648202,43.365736,47.188467,47.588035,0.275182,299400.30,12.47,1674345001395694,64937709148,775459632467535,34697523867,f773dbb27662b6c31b142d4a1d9bd1b6, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1974.023515,39.971276,44.674655,44.814306,15.086553,18.589090,85.582319,82.846518,37.466716,42.790618,39.848360,44.603699,44.722917,0.358178,288632.49,10.83,1635939318272594,56303020246,750392332543680,30698889400,45ad901e9a129c5537c1852b0fa79fec, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,913.737340,36.447335,42.346085,42.107827,12.992647,15.333955,68.396841,65.500037,33.066123,39.863282,36.320435,42.272892,42.022828,0.444999,163437.49,9.83,964578189631739,56208166863,426522305154280,27732803083,07a621466915d5b96e143a4407112768, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,394.387151,32.983050,40.211073,39.629121,11.211482,12.322439,45.615205,43.018700,29.089049,36.811496,32.854846,40.148709,39.554499,0.495526,67180.04,6.87,527097897189038,48919280767,187624486403021,19206891126,16551c6b620ce473fef5af4fdefd7ab2, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,157.821256,29.734247,38.560832,37.509050,9.868249,9.726578,21.679217,19.680926,25.627285,34.059802,29.608349,38.512118,37.455780,0.453039,41743.78,6.95,259880912293130,39037161572,111704479912875,19908870695,b41388dbfb893113bf8362aa6965573e, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,21414.063077,41.107212,43.834059,46.064198,14.339721,21.971535,99.972194,99.964077,43.546464,39.267087,40.999076,43.727310,45.977637,0.000002,877159.32,19.64,6095442575049789,124814732708,2449593416728106,54833741592,4487b6d1603b395be7369db61898a994, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,9937.575385,38.044148,41.448464,44.064562,11.935363,18.132272,99.883355,98.763704,37.439515,36.816184,37.956949,41.394027,44.024749,0.000014,1052613.81,19.99,6118314344736397,108094423557,2926160426291971,59153638749,88cd6c4481be14d70e451e9fd5bdbd4c, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,4453.769231,34.707620,39.438657,42.422604,9.539369,14.208394,82.866284,80.822725,32.124945,34.353542,34.615226,39.404198,42.399082,0.000069,1112679.13,15.17,6169648872233676,93276549411,2875532541857517,42104526951,be53702ca19d87820ab74573e9af4945, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,1858.007692,31.369680,37.717839,41.024277,7.438722,10.581386,55.739590,54.078203,27.719136,31.822937,31.276559,37.691949,41.002955,0.000511,417902.27,11.10,3021240200056471,82252305244,1167053863923977,31029142014,be70048a08dc7c99b893e4d5240feb71, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,681.915385,28.206699,36.726236,40.192124,5.843917,7.435609,31.326299,30.451364,24.109274,29.548801,28.123759,36.716165,40.182882,0.005315,208752.41,10.87,1260471955292356,64208886596,546546142072035,30841262299,e01d6f02a4a7f23d5a06d5034f454e9f, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,215.844615,25.382936,35.984055,39.636045,4.798353,4.976356,17.070151,16.776687,21.227146,27.309149,25.319328,35.977428,39.631734,0.041619,58700.50,7.71,471992687331387,58345434092,163822127545677,21519515228,3e07c6b2e9f11a679b9ae9e9f279a5db, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,110,25506.717897,41.018720,43.916910,45.160761,15.630347,22.443777,99.319029,97.902261,44.001317,39.377245,40.784883,43.797529,45.055945,0.004032,716348.29,24.06,5064753229423791,122965786487,2427189751875048,84878770213,3f6ea16d95cc79003464215f9e3d4999, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,135,7755.705218,36.876154,41.563820,43.073156,12.836574,19.052130,93.233253,91.286063,38.464969,36.704730,36.732114,41.505130,43.026383,0.005829,1054770.91,21.56,5770871345283423,95286385734,2730261526815614,59419767705,2d55f622ff99e8b33daf4b5d550b1dfb, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,160,3024.534850,33.727867,39.412495,41.121609,10.721847,15.753754,80.873513,78.788167,33.167232,34.447395,33.642847,39.364496,41.087026,0.017701,904139.43,16.37,5032509690696210,83694838856,2346308216722473,45678254510,67a41261094a0061d3a92abb0b4fde0c, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,185,1244.021824,30.419392,37.336539,39.245263,8.579572,12.314968,61.361731,59.455182,28.230782,32.034427,30.332219,37.291277,39.214159,0.084716,357674.05,9.08,2605375941419211,57763937048,998885808220182,25361467705,4865c8a9d8500fa4c253c67654cd1fbc, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,210,453.148697,27.093709,35.454948,37.387340,6.663283,9.119645,39.432591,38.066044,23.875330,29.583617,27.004775,35.421802,37.363335,0.281536,201315.56,7.12,1210555828204791,38180976589,525248864871396,20217673617,18a12dc243d200f892969b44e2a13f77, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,235,138.367479,24.115857,33.531600,35.580455,5.161901,6.381644,20.539101,19.898439,20.335410,27.160769,24.050204,33.510247,35.569349,0.425241,64853.68,3.80,517668753091724,25113874145,181123614596598,10583549979,245c4c894fdbbd5bac093b6762f539db, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,110,2290.530462,49.029685,55.636125,55.959777,20.730079,25.623211,99.870766,99.536418,47.835992,49.299859,48.845407,55.573557,55.887885,0.678803,279550.76,11.54,1610688557437009,58431815959,727263529042030,32329638395,46a58a677e38122890c2c4eee90db4e8, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,135,949.277538,46.575397,53.083438,53.545143,19.295404,22.800902,97.656835,96.022428,44.185333,47.065492,46.287782,53.002222,53.450999,0.707781,217537.99,10.31,1267939026685528,57663146279,566292728643796,29110606375,e824885776783586d2cab232d7b90d0f, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,160,383.363077,43.747299,50.221848,50.834963,17.957329,19.856971,87.805301,85.017771,40.501300,44.490828,43.432448,50.112461,50.711199,0.728508,129548.40,9.29,768110006625561,52318504402,339134068667458,26302467543,9b2b2e5fdaa82c1bf41f7f8fbf577a86, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,185,166.469538,40.773076,47.136634,47.955804,16.896435,17.130670,72.063826,68.881722,37.089397,41.605254,40.527717,46.998553,47.794798,0.720506,66508.74,7.50,413152725628730,41872312081,176186004285881,21124929832,5cce20611bf31753631b8728ce461a62, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,210,74.442462,37.529534,44.466644,45.408714,15.877244,14.508316,50.875543,47.930299,33.720698,38.756618,37.339677,44.269916,45.184459,0.632916,37520.37,6.82,226944646963277,36910832031,100921561401921,19491639890,7dae04818b8a8f444a94b17c4f807474, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,235,35.045538,34.166425,41.717901,42.654334,14.791992,12.086042,29.236543,26.982236,30.371360,35.740230,34.017817,41.574072,42.466541,0.653948,17236.55,3.83,135604964473462,26795598961,48132622132197,10683128780,a4fca1a57f0a268f14f95fa22cab587e, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,110,27219.349266,39.682454,45.853845,44.124864,14.631584,22.347669,99.974690,99.967602,44.348451,39.032080,39.495656,45.826126,44.086761,0.077501,733689.42,23.48,4020827993087253,99280495689,1898569356740678,63270492960,b2837e882e72501a22403dadb110287f, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,135,12295.451011,35.281419,44.380902,42.574189,10.762586,17.456196,99.626153,98.533485,37.526375,36.325963,35.120612,44.362762,42.552110,0.119217,820633.11,14.10,5641673233992771,77233112903,2291717199556581,39375419593,cc9e59422d6576daa49c33b7277789cb, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,160,4621.841543,31.494525,42.718424,40.870135,7.641148,13.015715,84.499688,82.488454,31.296120,33.690703,31.385834,42.695045,40.845589,0.162732,962813.62,9.34,6775880142330517,59615349393,2688760320948070,26101496280,6293295da7618734af8464f058ba5d91, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,185,1586.185507,28.546285,41.047607,38.986846,5.671805,9.688744,60.529461,58.680084,26.591048,31.414523,28.474187,41.023616,38.957080,0.239942,424383.19,7.24,3059936487440243,48464245054,1437401714339822,26394539926,11cfae6b8c79735c4877463d2220ffc3, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,210,508.712211,26.110567,39.681483,37.619620,4.473262,7.360918,36.273568,35.058703,23.035630,29.316095,26.060020,39.649508,37.604954,0.318085,154421.85,5.57,1163427524474296,39652326950,431227264122004,15588652902,e59f5d44c7500ade2b6ba4cc7b38248b, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,235,144.433413,23.903229,38.646132,36.934007,3.681799,5.472175,18.023679,17.380865,20.255970,27.429684,23.865446,38.623291,36.928875,0.359762,51764.55,4.49,418147031307367,34866691314,144556280341571,12576768776,8a3f9e04f411ad068e6136e193e47ce8, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,52908.437538,38.904345,42.777394,45.222305,17.320928,24.765511,99.976733,99.970284,45.885896,41.191373,38.674362,42.616045,45.146164,0.000056,905526.85,28.82,6443385806511402,170379242675,2528757785736031,80478403091,4045c0ef3b11bf0fa4a9a8000d547447, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,18762.134769,33.732377,40.182172,43.276610,13.096609,19.663415,99.935341,99.838049,38.604496,36.887130,33.500571,40.044325,43.226168,0.000058,1184337.14,19.14,8365692518140685,115185458922,3307330864090685,53482782437,c7309213d2f93ad3f258335c82eb42be, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,5199.550154,29.476237,37.890570,41.424831,9.616961,15.457515,96.735248,94.929200,32.265165,33.196984,29.282695,37.785796,41.384027,0.000340,1108755.98,10.44,7996253439320456,66443094301,3093540301600367,29152394028,f9cbb1ddc046a1ca42e11f427fe78969, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,1800.804923,26.224017,35.830487,39.766310,6.643370,11.558109,81.342364,79.072535,27.036519,30.217035,26.072704,35.751797,39.729453,0.008088,703750.90,8.90,4337404712654917,47808710955,1968449664387318,26471832496,462ac152a5e66714e94d4799940d9b5b, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,564.199385,23.301985,34.032915,38.199763,4.057808,7.721549,59.693676,57.918527,22.389306,27.436013,23.193004,33.979530,38.154551,0.039096,375989.32,7.03,2201249303861985,37888824750,978060677909117,19829202013,553816b237eef31812c9fad4fab6664e, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,137.536615,21.236740,32.379243,36.462107,2.507554,4.935260,40.811306,39.613235,19.141095,25.330308,21.180589,32.333543,36.402336,0.118704,145895.72,5.80,969402255044743,35479388793,412004158726289,17905357846,bdab1aa8e9b467561c602853cf87218f, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,19083.845385,41.811964,46.890483,49.639281,16.725549,24.280526,99.978455,99.973654,45.990643,42.918536,41.704008,46.850669,49.620770,0.004718,556191.15,21.13,3138021679627704,97610350399,1443305740805867,58294106477,509f5b2cbe288fb3be4b429b899ea8e2, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,7605.272266,38.716473,45.256090,48.280703,14.595451,21.404636,99.973808,99.966421,40.806228,40.692741,38.617186,45.223399,48.257418,0.005683,554870.67,15.80,3061523672681173,79049112945,1436745598323768,43900598367,563a096ce203d43f0dd8c9bff4a1cc32, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,3089.236917,35.553875,43.401984,46.589987,12.399766,18.382012,99.961215,99.950237,35.460932,38.233295,35.465587,43.358529,46.558001,0.008393,369649.12,9.64,2677583387020725,65744985424,1032381852787263,26953358898,9a9df97135177c9b07caeb15260a8e72, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,1405.160993,32.609751,41.597720,45.132363,10.968318,16.260848,99.020875,97.357412,31.033194,35.938804,32.530088,41.552324,45.102210,0.009023,247499.72,10.51,1435374809588427,57419954302,644207636792618,29405497586,f1336c0cad013b2f4c9d1293241c67a7, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,677.805886,29.475718,39.772866,43.449004,9.532724,13.848785,84.592552,81.828951,26.786278,33.375614,29.387841,39.734383,43.414730,0.009680,102689.06,8.47,774466441540978,53357515819,352784316511294,31269918948,b9569bf381e54cc96bf0fdbb3aa6b130, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,326.070237,26.097128,38.134117,41.103479,7.897327,11.055702,65.152770,62.506212,22.655415,30.502313,26.005873,38.119405,41.082675,0.003731,72464.59,8.49,460474554569756,46204964729,192210986545260,23193850998,931001215749f85cacff41b3fd6d4a41, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,110,3309.416122,45.428068,48.562127,49.688830,20.342081,26.715404,98.745242,97.420480,47.135129,46.536228,45.339591,48.470716,49.600302,0.036888,226359.17,11.39,1690901597515015,69481926735,768868172446590,41434072313,67f72c7f5f5ba1c292894474e4e7d785, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,135,1204.929839,42.782373,46.399967,47.757798,18.619240,24.191045,95.742312,93.604801,43.028563,44.362023,42.723175,46.345607,47.707294,0.083623,224300.80,10.13,1288880891628274,57023237172,582111783263625,28550702366,cbc314bbb3c5ebbbcd38988aa09667d2, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,160,513.053716,39.723922,43.698844,45.293480,16.483503,21.138964,88.970467,86.422535,38.419541,41.650849,39.666059,43.654040,45.232153,0.153854,189095.65,8.98,1102680079853074,49437690981,492099680190218,25446241568,d3a25357573485f3a85ea1a62ac84bff, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,185,237.290709,36.419991,40.855975,42.506585,14.121177,17.791505,77.189546,74.391765,33.883346,38.600037,36.357178,40.826434,42.438865,0.295354,112873.23,6.68,668332289312157,35676817297,294704692401582,19097608591,b292c4e7b57fdb9a96bc092dd8a7db10, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,210,107.827557,32.888843,37.762250,39.568137,11.724345,14.325747,59.651522,57.007621,29.519667,35.315136,32.828465,37.748418,39.475517,0.280952,49253.77,4.79,384365532838331,29274772112,169618074816196,17616819342,515492028b0d93965f2e55b60e0d9f09, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,235,47.223546,29.452925,35.008423,36.028803,9.628115,11.041492,38.839484,36.969612,25.584103,32.051741,29.397542,35.002258,35.864948,0.252030,32605.39,3.36,204545463174186,19601519806,86520262030030,9604556819,c847af2575de2836190df8023d69f3ea, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,4733.721231,46.281679,50.625266,50.562061,19.834924,24.880011,99.946922,99.493581,46.038288,46.488782,46.191149,50.551530,50.494858,0.270508,534413.33,17.14,3035916179383407,86076764146,1390566059903179,47527599710,009898267250c4c87ade13020fd54e02, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,2130.319385,43.277217,48.564586,48.639697,17.910098,21.840337,97.613654,95.511387,41.974338,44.329413,43.189809,48.511229,48.597523,0.282639,513886.98,13.96,2978992437364092,75667137929,1336456921818793,39151180639,f43d2446be695d98749c35a31d9c07da, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,986.911385,39.839244,46.147084,46.297221,15.667000,18.473870,88.770454,85.816902,37.562600,41.710131,39.746992,46.094543,46.251241,0.336734,343875.88,11.92,1984661113765623,66114637557,894881876659014,33775114497,238105ff1d96a3637ba75593f88c3b80, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,472.290462,36.343919,43.658127,43.731012,13.523860,15.218203,74.294271,70.808905,33.314329,38.912967,36.256057,43.599094,43.686360,0.346632,193657.28,10.22,1164730486870421,60599047451,505710453965721,29171973084,a720529ed412d64aafeca045425021e4, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,221.564308,32.846998,41.181032,40.915739,11.724137,12.258648,55.426434,51.936152,29.319267,35.988105,32.761710,41.108485,40.854177,0.347185,104195.19,9.98,649148209149679,60740362368,274777857956398,28519371959,71e24936f146394f7dfa50ffb2d58bab, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,235,100.611692,29.414647,38.529533,37.959025,10.315481,9.821665,34.924819,32.190355,25.590793,32.927364,29.338625,38.461252,37.890948,0.399440,47121.54,6.71,384379108980112,52169001347,131583603022026,18723091763,10ad384c1d93ea3d5f32f2fb0dcf767e, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,4210.133538,42.571447,48.652912,47.605925,17.160564,23.600763,97.007180,95.493148,44.267518,43.290452,42.114395,48.588873,47.491978,1.252592,417548.12,6.70,2212149702647183,29322077507,1077221663403106,18091214182,9bab43e125911ce3402c9735a7b09cf0, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,1735.995692,39.567601,46.914684,45.462300,15.053431,20.382182,91.469375,89.525898,40.033981,40.879644,39.047172,46.860773,45.328345,1.297556,218627.92,4.95,1174013006200674,25064584739,563582381654260,13595637679,8fb59f00da8dd19fbd24b629f78e71c6, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,711.121846,36.412973,44.773181,42.998448,12.829518,17.036731,79.838599,77.719656,35.549533,38.214621,35.848642,44.711839,42.821841,1.443236,129987.87,3.17,921088187862013,19618904365,439593035824958,11554631747,c27d36f049db2929fe389ae89f58e1a5, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,292.379077,33.324337,42.429022,40.316826,10.661329,13.873551,63.658961,61.608118,31.477317,35.462596,32.761267,42.360896,40.063925,1.600518,64141.05,2.09,457244986083440,14388884623,179115487991115,5843507698,58184236c453ffbbdf131022d3bbbdd1, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,108.583385,30.188816,39.896360,37.732344,8.536609,10.782169,44.486677,42.882014,27.636748,32.568205,29.605302,39.828968,37.363116,1.924777,35559.34,2.48,203952643804107,14096647429,92586496973106,7059154777,9d4e91229734883fef61fb33a84dca4d, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,36.326769,27.315154,37.096456,35.069270,6.903573,8.030828,27.713055,26.600031,24.122836,29.738748,26.726105,36.979748,34.588172,2.237129,14779.91,2.27,86891469674455,13334929664,38937134358623,6558888616,93d5fcc7a17eb2e97d1f38592d568c96, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,8787.895182,40.984823,45.035661,44.192632,16.341788,24.571361,99.155880,97.987440,46.504852,40.305209,40.841048,44.982461,44.158094,0.000566,521508.36,6.49,3660696448828131,39079303415,1456430483591617,18130347567,a387103ff46184fa9b7e60ac97fdf6f3, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,3346.219319,37.389660,43.173154,43.039699,13.529034,21.013610,95.825117,94.128275,41.258738,38.150112,37.265579,43.112923,43.014673,0.027900,301024.01,5.15,2098977019707682,32747548442,840678665335098,14399494110,a3d9a60f35d0f631dc300d151a7c1496, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,1229.962653,33.989254,41.096167,41.589289,11.090204,17.807341,88.452183,86.365554,35.816403,35.864892,33.882762,41.013940,41.544600,0.232010,307296.07,4.88,1734572030145902,26240756592,796498664499143,13754811344,c916b47c56e70b7e96ab4d507e16044b, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,463.729501,30.931696,39.149919,40.084093,8.922298,14.855063,75.501565,73.100209,30.864666,33.545436,30.847570,39.075745,40.029722,0.383478,166862.24,3.29,938548673326171,20324926727,432917891007039,9358330657,4d4426fd7eece61adf35d0361cb52a81, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,179.156228,28.137032,37.128951,38.503913,7.032721,11.783987,56.918575,54.526516,26.396359,31.241460,28.070448,37.073501,38.449167,0.402287,74920.92,2.40,446438265410889,13785359174,195154560871123,6820100632,adc6ae68314f33207783401970705891, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,70.810420,25.512994,35.211155,36.940809,5.567168,8.918099,35.096584,33.015673,22.544509,28.854428,25.451399,35.158574,36.893590,0.233959,26928.65,1.95,220348702918455,15666479004,75211518017304,5454314086,eaac72ec55af1314dad55846139d0a8f, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,2375.128615,43.439927,48.783832,49.429566,15.575899,22.336921,96.619677,95.265331,43.841613,44.234986,43.379439,48.775325,49.422480,9.495510,328893.54,3.92,1842438539691144,17223363906,850934306691542,10767173580,c3ac732220e0be10be3e83ed7a2e511a, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,585.972923,41.982915,47.921328,48.531593,14.745165,21.090139,94.953008,93.237346,42.094990,43.307645,41.962786,47.914441,48.523901,11.021892,110886.73,2.75,647548894511108,13193633218,287341295613866,7682805397,5dbfdd8aace18951adc89f89f64a0059, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,218.592000,40.271571,46.582856,47.026506,13.807848,19.620225,91.580450,89.450355,39.703643,42.129784,40.253175,46.574428,47.016864,10.942881,54106.58,2.22,325147265825824,11358530373,140895070737791,6238627887,8787a5ebe6869e232237eea5b806d2a6, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,103.536000,37.967728,44.788255,45.105021,12.527801,17.695181,85.024381,82.439371,36.576986,40.468375,37.943415,44.781631,45.099199,10.838700,28335.28,1.83,171784879724490,9864688162,74190011271605,5221555326,e7e015e913045cc3b7ca58891bb3b5a5, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,50.580923,35.034731,42.247722,42.781900,10.849892,15.227418,73.690416,70.529775,32.760119,38.202321,35.008492,42.242105,42.776934,11.355032,11859.51,1.17,95955799099835,8715565181,33119652455388,3290142383,23d463d65bc1cd0d0e07b5728ef3c877, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,23.922462,31.884262,39.283437,39.607873,9.325415,12.765403,57.252433,53.661092,28.795554,35.595982,31.854094,39.280496,39.604164,11.059466,8529.30,1.56,55492651563037,8881319271,22788916051456,4418821664,9872297ad78ddd6d9a94f62c72938d5c, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,2452.260923,43.962693,48.323041,49.224055,16.276558,22.906129,96.779844,95.475734,43.960913,43.710745,43.909080,48.311577,49.215100,7.689420,291175.90,4.39,1639950851538808,20110315003,752986067900794,11979924534,dfffbd2b406f81651f595fcd78e1d781, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,730.648615,42.188434,47.261426,48.160782,15.308405,21.237465,94.956636,93.236720,41.740448,42.627936,42.157876,47.250283,48.151064,8.618327,104145.43,3.70,647515557242085,16481025228,290938206458240,11152653399,951d8f8e0ffde172b4e11aa60a3781a2, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,290.440615,39.997508,45.615670,46.465000,14.169317,19.181684,90.983300,88.773909,38.781695,41.200184,39.963930,45.601846,46.452421,8.845234,64815.24,2.80,377290476399884,15053741993,168762857230605,7823284945,cea72d6383983fd5c41045ed9c57cea8, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,135.703385,37.371007,43.644960,44.529473,12.851446,16.875032,83.252586,80.646566,35.417403,39.369070,37.334164,43.626613,44.514565,8.669385,28068.41,1.94,220580650378533,11584395946,95921223556307,7181913991,5668e240982bb59af81a7969a2e36a0d, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,63.924923,34.263948,40.967473,42.021269,11.347709,14.349327,71.946504,68.609260,31.613713,37.083895,34.224422,40.949687,42.008887,8.225632,19283.60,1.86,119611096985094,10990274841,50906989104297,5225067733,939e2a337a89041ffb63765f428945de, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,30.480000,30.829858,38.305182,39.251464,9.666323,11.671533,55.999704,52.532342,27.623334,34.301448,30.794698,38.283888,39.244791,7.099945,9809.30,1.54,62855495781329,8465114337,26243498701611,4389530770,402225f075d48c46dd28110f8f954062, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,4893.790517,44.123776,45.837955,46.333071,18.608572,25.756014,99.975784,99.966302,47.098870,43.429460,44.042354,45.782994,46.300469,0.026403,563257.08,6.53,3080491840240900,32867105245,1460139290159259,17856717409,70221abd8c1a7615e8df5a628bba16c6, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,2125.655268,40.701221,43.096911,44.248606,15.749205,22.189920,98.904988,97.160993,41.707604,41.003610,40.630741,43.027513,44.205294,0.049644,245160.26,4.10,1729539543218275,26866730149,684624230827336,11473137288,3b867677165a89d888e647e13e1da033, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,925.688465,37.140768,39.964145,41.783209,12.799281,18.396905,89.780491,87.361901,36.200600,38.249094,37.068128,39.873696,41.710118,0.089525,179326.14,2.89,1273021931902140,22854513694,500821613277128,8074188638,ab8ebae81d1717b89c3f5a1e61c2981f, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,415.567202,33.786521,36.906744,39.366613,10.309353,14.785509,72.424703,69.939163,31.255446,35.484030,33.712357,36.802777,39.283120,0.124374,119669.12,3.29,705887770956050,18957458975,311455431761232,9221303790,cfa58c6e1c9f98c2203b93a64f5b6816, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,182.000154,30.499319,34.117828,37.131321,8.227118,11.447817,49.043639,46.696661,26.899807,32.674499,30.426032,34.003943,37.038554,0.119530,59403.14,2.54,372536006642142,14892312547,155686341599483,7165436210,f56b0bd92517c82a0f72ff50c593fc78, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,76.122032,27.359435,31.489245,35.116188,6.595127,8.468319,23.440329,21.954288,23.215416,29.950552,27.292774,31.364384,35.006753,0.109873,30390.66,2.17,202440718772669,13077390152,80551466635043,6144468515,8928c5e50d5479f242567375537e8a44, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,3029.671385,44.062554,49.338501,49.286014,17.657732,24.283899,96.116513,94.349440,45.020820,43.586239,44.004617,49.329557,49.274144,1.950916,204036.03,3.22,1460083978819310,17654608183,690229431116490,11469545103,60930687a5c306fbb0715c6ae1090384, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,925.200000,41.906972,48.546735,48.198899,16.659357,22.643990,93.101938,90.932454,42.646192,42.361326,41.874428,48.537606,48.192494,2.064960,110444.92,2.97,629185836106050,15091580248,286022498684741,8309562361,720ae2cb60aac16bad1f1b86999007bd, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,364.777846,39.516223,47.395430,46.769960,15.525288,20.719520,87.947762,85.363640,39.334166,40.912845,39.484544,47.383647,46.762621,2.865816,69287.11,2.45,390764642482874,12247566306,179995634313858,6915533076,75beaf8a37599fb409e9308832556733, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,177.984000,36.526493,45.899277,44.804879,13.803390,18.113457,78.154323,75.419259,35.090319,38.951144,36.482381,45.884248,44.797246,3.496602,30309.71,1.52,226877805655549,10714204581,84640359826114,4275403429,02180d12854ec28427c9ccaf332df620, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,85.092923,32.960926,44.174290,42.294474,11.422898,14.657998,61.040156,58.107865,30.328686,36.277157,32.919248,44.165801,42.291418,3.357300,23661.45,1.94,144139389108989,10856101564,61985435310997,5268925276,6a3bbbad375262c44d516a1e5b4ddb8d, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,36.498462,29.386339,41.888337,39.742826,9.036216,10.872904,37.966853,35.389397,25.919860,33.358137,29.350390,41.887159,39.741683,3.048922,10788.26,1.20,88243262382173,9485419705,30126449489703,3341848255,e4a2a9a502a7c6510b568c738d671ad9, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,3293.881846,43.598252,49.133841,49.482400,16.425774,23.470301,97.026820,95.458963,44.515554,43.500137,43.506422,49.120841,49.470080,1.521775,248662.62,3.73,1736022385812473,20390806581,694336527423065,10406114065,82ebacb364fb68581a1a3dd131578dcb, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,937.085538,41.453565,48.103531,48.461253,14.969738,21.225222,94.596121,92.520081,41.568766,42.194662,41.389880,48.082614,48.440214,1.748706,125761.69,3.37,715089946216485,16441475424,325535015577525,9302735629,3f45b1e136f9b75f5061ef43f6abd5d6, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,361.827692,39.164965,46.631967,46.923771,13.450328,18.703016,89.855388,87.315103,38.118158,40.583299,39.097696,46.600181,46.881477,1.987298,74986.41,2.56,428502899788859,13582386624,194697166640851,7239857206,021253d3247166b9d7a6d1fc8953ea56, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,165.548308,36.458703,44.713003,44.858216,11.874593,16.029310,81.269009,78.320912,34.385926,38.505852,36.376285,44.680469,44.796396,2.200434,40451.51,2.09,243314677585952,11217809726,105498793797691,5964246080,60d9a5a724142d9e60c77c3642f3b4fc, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,76.508308,33.377121,42.455331,42.198385,10.200228,13.318895,67.836733,64.386065,30.425992,35.980903,33.275607,42.412838,42.123949,2.143029,20556.81,1.70,129060946158321,9115790116,54131709422695,4842663216,b7659d96bd78aa130d511efbe5b74cf8, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,35.121231,30.323905,39.772539,39.161628,8.875168,10.808172,50.259107,46.523438,26.754712,33.153864,30.229932,39.734096,39.086500,2.295233,11118.28,1.58,72371460922990,9146567879,29618079817309,4483175833,f7060ae35744299040c486dcfb41ff2e, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,9068.178462,42.681449,49.614819,51.142883,17.121223,24.440460,99.978580,99.974522,45.359985,45.355876,42.531198,49.573707,51.106983,0.185521,437253.59,6.56,2958026436499198,38559990641,1221150210489637,18304296821,3907d4b6664ef23ab87928b9e887f090, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,4286.699077,38.841781,47.865200,49.266910,13.990748,20.205620,99.975980,99.968363,39.615132,42.289080,38.694821,47.822625,49.236071,0.209446,404760.85,5.56,2734280944967385,34877655687,1130641279239027,15568437858,14876533e6c7cdcfbea95e8569c522bf, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,1732.838769,34.986464,46.038589,47.611170,10.920621,15.797793,96.634376,94.729324,33.737594,39.067631,34.841946,45.987178,47.581142,0.467530,502605.06,6.20,2773031473306111,29595486082,1301262421473735,17279634160,8c1858b03b2f4f4dd6cefab51c69b336, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,603.520615,31.593950,43.787398,46.268858,8.556835,11.850706,82.593025,80.318861,28.923954,35.963102,31.455238,43.727148,46.233894,0.859187,220478.36,4.12,1251039237408047,21622038992,571728474653691,11539462469,d919bb8f7e4f4dd10136ca29e0d83f9f, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,188.627077,28.838703,41.762076,44.765910,7.157343,8.800185,66.974906,64.715651,25.565285,33.067553,28.731642,41.703227,44.745439,1.573765,62932.37,2.29,490805342043191,18078986542,175745432401087,6396687216,0bd642abc07e587b5ead491d4b6fa3ac, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,58.938462,26.397735,39.270770,41.912131,6.400731,6.638867,55.314011,52.899634,23.113909,30.539112,26.322918,39.222455,41.889879,1.906139,27442.41,2.38,179982193402928,13565011621,72852702725012,6768092211,4590b8c343816fb8200d68379c00f8f2, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,110,1156.916923,41.768665,42.715451,45.079684,20.102297,27.209283,99.977122,99.971380,48.425253,42.277053,41.504789,42.447279,44.913295,0.030756,123783.66,2.07,868690530984277,11695807913,419426701300593,7326787946,a8e7c9c31162d2a3e2e7e36fc9e36d3f, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,135,424.701538,37.682800,39.856013,42.783989,17.251770,23.940128,99.781973,98.967525,42.954013,39.492925,37.411659,39.643902,42.671018,0.069958,70190.69,1.45,498974703439094,9599477730,196015522753751,4031787791,9095739d0376b0be9b10f3c3ddbb6695, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,160,158.238462,33.881013,36.999486,40.453883,14.262016,20.431285,93.479838,91.483872,37.068188,36.771866,33.627544,36.826671,40.357130,0.114187,66119.90,1.23,371412292592592,7330385783,171394445570746,3386376860,c0da8229ba8617415f10a7b9152fc159, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,185,63.876923,30.173819,34.769425,38.222239,11.353769,16.909717,81.301428,79.148267,31.657470,34.042602,29.919873,34.632050,38.103236,0.212698,31192.62,0.71,216757255503715,4945165381,105773755771809,2521447280,3ea0fbe5a9422c3c16121da83b7a3e8a, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,210,26.941538,26.584175,32.806670,36.346491,8.664884,13.272587,62.899192,60.950937,26.341120,31.283866,26.367569,32.639406,36.219476,0.125951,16189.97,0.55,122777030700641,4117238228,45211298299514,1547899280,56b6933ae2bbb175e66e4d6dd363ce15, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,235,10.736923,23.217066,31.484855,35.036635,6.271760,9.459320,39.378171,37.916064,21.430456,28.463367,23.028871,31.338086,34.881092,0.186636,9134.50,0.43,72018735287620,3236660975,25512329006124,1240343006,c04864a29c5cf661238cbb34b87873d0, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,110,6681.640206,39.897628,44.606382,49.247057,14.531162,21.543499,99.973858,99.965799,43.957842,40.435878,39.689108,44.524096,49.184301,0.246382,297782.56,4.54,1575747331125439,19371139271,769496781902190,12155867191,b9e507714230560ac6df509739b25810, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,135,3348.556059,35.051729,42.105237,47.413859,10.998606,17.174997,96.991088,95.254647,37.778769,37.087454,34.818253,42.036697,47.317399,0.231502,215250.11,3.37,1150454428280704,15674662281,555700384637321,9070633411,84f53e1e535eb9f7c0cbbb22d91b1fe9, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,160,1217.637132,30.613938,39.761329,45.577740,7.943135,13.240863,77.011016,75.170980,32.096959,33.909386,30.404916,39.704811,45.458568,0.203353,302953.58,2.11,2064330899074049,11951427042,846060933037822,5890670993,9b35d04abc33676a5417d0d8f124cb99, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,185,327.064320,27.384494,38.075568,44.218433,5.795927,9.920981,47.291923,45.995004,27.296631,31.418439,27.248253,38.029655,43.972458,0.266134,115857.07,1.21,828087321771217,8290348697,391913086078471,4353735520,f98b25ce093909c8b7b4c49825d90be8, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,210,83.855222,25.438051,36.327460,42.387119,4.758603,7.393165,18.818461,18.229452,23.701938,29.346465,25.362331,36.271775,41.972243,0.209546,29730.39,1.04,215498851210568,7565913267,83026897580822,2893492556,b52ceb0505c392619fc4e1587ef3e33d, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,235,25.136095,23.859001,34.873328,40.259109,4.259564,5.547406,5.008752,4.986721,21.231122,27.449366,23.800745,34.776703,39.948107,0.215816,7656.11,0.63,59188045409353,4216702379,21379592915959,1776728927,d552edb6738e31cf6bce3d720bab05bc, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,110,571.761777,41.468796,48.975302,49.936985,20.103147,27.193951,95.272444,93.739189,49.104413,43.005446,41.331533,48.972880,49.935414,1.179305,107507.93,0.97,601407446122440,3757059018,278650600721706,2613139303,530908e2731c352ff26554a71da2c751, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,135,182.282333,38.612974,47.408779,48.806206,17.785906,24.697824,92.902179,91.150985,45.309968,41.118717,38.561011,47.408161,48.805671,1.191067,33927.45,0.48,189254642938451,2111106564,87836323333969,1328137219,50ce9e4610059e78e1b1fe8995aa929c, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,160,82.200876,35.549706,45.603798,47.278387,14.921581,21.634733,89.096451,87.015161,40.917232,38.823105,35.530930,45.603532,47.277930,1.259395,20298.17,0.39,109199174783584,1969661350,52604445487253,1071108832,896bfbb68077c5ea80faf2e21c6c4bb9, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,185,44.493968,31.988637,43.748281,45.730297,11.595199,17.959039,81.676483,79.550905,36.095011,35.999578,31.983369,43.748198,45.730168,1.042505,14165.38,0.31,78924735029529,1804171909,36702771034313,872604040,6dc8736ab7974c4c4c2588dfe168e37a, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,210,19.512795,27.589204,41.598428,43.377410,8.526638,14.112146,66.527479,64.336319,30.594669,32.505095,27.588371,41.598368,43.377296,1.027293,8179.87,0.25,59388444104569,1511557793,27816917029804,928301602,1f8f0513571cc555a91ebcd830cf3783, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,235,7.664950,23.881227,39.847013,41.368533,6.216018,10.756121,42.044747,39.874215,24.951247,29.428698,23.880908,39.846971,41.368455,0.716605,4929.14,0.26,36973426261662,1805859597,16820508441286,1005148047,5511a33288b950f3e257190281604dfa, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,110,264.416814,46.707930,50.061298,51.742700,19.741787,26.417113,97.844478,96.426371,48.446611,45.679211,46.577715,50.009329,51.669236,0.015790,42816.07,1.15,232426425108842,5271912480,110597655991538,3171150935,3d2e65139003604b2eb028099690782c, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,135,121.914393,44.174352,48.172784,50.276625,18.313289,23.938892,95.630786,93.564587,44.565856,43.976479,43.985329,48.092028,50.139197,0.057596,21871.47,0.92,119945439606663,4895783703,56508986701384,2505048941,a1d7bf7c30be0ea34f9d762697e0cf71, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,160,58.886959,41.170251,45.795630,48.039364,16.741921,21.107697,89.927423,86.978509,40.301908,41.782251,40.965974,45.699638,47.841530,0.077179,11690.62,0.62,86221983435104,4061922029,39607876540253,2241914282,a29e827bd0bd0562006a9e061a34bd38, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,185,29.665719,37.931233,42.900469,45.659960,14.949230,18.134723,79.331414,75.816119,36.070385,39.052651,37.717919,42.798554,45.437331,0.075090,7971.47,0.64,46078405569538,3302623975,20726831446682,1755835675,303d52047e02fbafb3419922ae130526, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,210,15.969876,34.715564,40.210366,43.038016,13.194759,15.049385,62.869237,59.295777,31.924361,36.187348,34.486072,40.113192,42.704031,0.064938,3696.69,0.44,22182313897793,2511523556,9696087453562,1277317131,dde99eb835b4d9b56efd93dc4ed74b71, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,235,9.046338,30.932306,37.461844,40.017117,11.212765,11.966665,41.432792,38.424053,27.617387,32.906175,30.703775,37.387257,39.692197,0.135689,1244.92,0.33,9596152216506,2155167712,4330022425275,1224389421,794a23f07bd9c6070ef664e13794930b, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,110,1518.903251,40.044257,45.917073,45.421028,15.350377,24.199210,99.501575,97.875536,47.681757,40.366720,39.916887,45.886562,45.403334,0.000071,166522.01,1.40,928988864113864,7668152063,431176500218437,3768357518,bee1cbed27a427a0861b461805987827, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,135,481.689388,37.707834,44.128342,43.779333,13.771980,22.099877,97.341224,95.367790,43.971327,38.598024,37.666810,44.097547,43.762328,0.006253,54622.54,1.01,396656507030476,5913986984,184938475586794,3548450481,be6ebfccf92ed1b9344450f07d9d074d, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,160,200.100207,34.974257,41.796013,41.457906,11.881915,19.576157,92.806524,90.555125,39.187581,36.433971,34.937545,41.764720,41.439414,0.032843,36101.53,0.79,252540505362512,5261601847,100818666864125,2202153550,0b5cc37cc8bb5e8efef41d0dd0a1cb94, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,185,90.983478,31.601896,39.767707,39.253875,9.367424,16.144535,82.856405,80.056253,33.683073,33.918293,31.567027,39.739034,39.235795,0.055021,25582.75,0.56,148810825171342,3396377667,66284889239774,1525321072,5659810d6eb153948fee60e882b9c309, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,210,38.287866,28.048385,37.588403,37.156229,6.678025,12.167989,63.016303,59.993281,28.066327,31.019366,28.025480,37.553451,37.136261,0.056689,13710.51,0.54,80166819215943,3154372622,35600178627952,1506792742,464069dd126a7dce0c284857032bb97b, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,235,15.366787,24.944988,36.059880,35.694365,4.564004,8.485068,34.301859,32.322090,23.316432,28.446749,24.927098,36.033813,35.679362,0.044017,4437.59,0.33,34818574578185,2296711021,12392552997930,924413680,1030d07535c9eea35c7c6dfb783554e4, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,110,859.274879,41.899426,47.540812,47.470345,15.949774,24.217154,96.859118,94.928630,48.174656,42.270364,41.822482,47.509706,47.437735,0.000000,93667.42,1.29,663536857302536,8466605568,261621235995875,3622205494,32cdfab14afa22844f0d80f57fbda981, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,135,380.270806,38.565526,45.511845,45.136673,13.214663,21.063936,93.224196,90.865886,43.021677,39.899318,38.495915,45.482200,45.091033,0.000042,58097.36,1.10,417168798926124,7101925517,162246359529336,3102656926,4d81d20e32e0173f664645e4f427233d, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,160,155.571198,34.718814,43.603081,42.732775,9.498738,16.388754,84.414898,81.898306,36.846672,36.899546,34.667187,43.573411,42.683303,0.002029,50880.71,0.89,368798361395619,6063963677,142152094239088,2467788460,424e81d7e7ddac5e995c87f4dc388d74, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,185,62.177207,31.318661,42.086460,40.367884,6.648450,11.778633,68.011794,65.595795,31.181001,34.228741,31.282813,42.070314,40.332025,0.019065,36724.09,0.88,214508871839609,5133105922,95223082825639,2472936793,3e4ef65c098dd7db8ef96d3ef76f06cf, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,210,25.172981,28.611156,40.241901,38.436375,5.522649,9.000540,46.241560,44.518343,27.011982,32.208207,28.575988,40.229781,38.417568,0.969031,15992.84,0.58,95524384803337,3394787498,41634641017352,1653410054,5be4a54e5b593c0c90be44d146f4f5c2, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,235,9.529547,25.964070,38.500862,36.788885,4.894633,7.537545,22.879868,21.954016,23.319211,30.487262,25.925063,38.494063,36.778182,1.268853,5791.93,0.46,46552058596848,3525158614,16178230273751,1285072611,695cda6033649d1d33cfe9e5779ea306, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,110,601.044923,43.823479,47.155762,48.189220,20.161205,28.637318,96.727824,95.459187,47.910944,43.156191,43.726841,47.124125,48.148675,1.765349,35643.73,0.70,189481552777621,2505974742,92121954630654,1910606102,da0d000392fcc218f408f70ebada27ee, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,135,298.600615,40.385486,44.991425,45.771891,17.826673,25.706675,94.735832,93.137622,43.786356,40.909352,40.275223,44.958436,45.728211,2.010524,21664.24,0.49,119634992988745,2241527766,56101893540609,1385105722,69154de2e6b32b6f8fba9c01a2d90165, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,160,146.001231,36.560660,42.534293,43.151943,14.875805,21.983944,90.162080,88.071243,38.381564,38.241715,36.459266,42.507981,43.118024,2.195687,19241.61,0.37,106885381922818,1692426116,49850356799639,995232940,c372c2f71cbca90e69fc6f8a43d8d1d6, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,185,72.694154,32.738139,40.066696,40.490146,11.857700,18.111284,81.602859,78.989049,33.065167,35.256991,32.666431,40.053560,40.474396,1.563892,11152.48,0.34,61442434788187,1736727709,28880804088158,929569679,62c591030e4e09789099965557978ca7, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,210,31.358769,28.751578,36.765071,37.527028,8.680591,13.750352,66.051317,63.148190,27.655604,31.783507,28.706775,36.759227,37.517787,1.899646,5608.35,0.26,31772007767943,1435919314,14566476066432,712455562,95065c5930b38f95f598e546d411d724, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,235,13.181538,25.213610,34.157943,34.700576,6.140395,10.055404,46.149667,43.496594,23.038764,28.842419,25.186819,34.154664,34.696949,1.896637,2507.39,0.22,14567208905330,1239753256,6545178885936,636455932,064b30b94f453477299bfb18e5da4f04, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,110,5244.304615,38.930862,40.371714,42.441305,16.735128,24.755939,99.290576,98.245353,45.545903,38.528564,38.630848,40.107126,42.262669,0.718771,136279.56,1.84,923562504321254,9397084489,380592762605373,5164653969,18a5ca322bcb849c71d383b1f07c65f8, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,135,2348.541538,33.523723,37.066523,40.133131,12.331292,19.927653,94.177602,92.123029,39.069400,34.564361,33.203211,36.868432,40.020882,1.133496,129028.57,1.34,904257737717438,7811241028,360389668503421,3765893849,215c3b483ef7473c0e592e5e7a65b336, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,160,815.464615,28.694385,34.599510,38.416058,8.289451,15.031811,79.946906,77.678897,32.244549,30.954146,28.378308,34.470204,38.329389,1.479066,172483.77,0.88,1181063065595679,5845010882,481806271614030,2481063543,2d4913d58780b0f83ea4928da95c3723, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,185,248.504615,25.250116,32.781817,37.274513,5.453783,10.943472,57.021262,55.176141,26.670995,28.253251,25.011913,32.682465,37.215749,1.739573,78051.11,0.58,553621022844655,3960768593,217966347502320,1633399557,389732f8d5ceedfbe3c8fce2ea47780f, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,210,62.947692,22.820992,31.345262,36.260204,3.587928,7.631120,31.475936,30.459446,22.441469,26.053276,22.672880,31.279982,36.212140,1.803349,29373.32,0.44,166731040380538,2311426312,76085649327882,1239480473,3dd55ec46f8e93fff9766060f09e85f6, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,235,18.523077,21.169276,29.874385,35.040926,2.642643,5.331683,13.177105,12.751600,19.409109,24.294075,21.074760,29.816477,35.016018,2.029279,6674.55,0.28,39735556844942,1572165969,17362972512401,771810741,dcdd45f02041feb4a48e4ca98e93a350, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,110,2445.038039,40.889689,48.993414,46.869365,17.211071,24.148516,96.004013,94.142396,46.835884,41.968340,40.743396,48.926751,46.798835,0.150456,87031.71,1.15,601122287838894,6091240821,294869618395288,4002886551,fed8864025fa8b120d2eff4a4f8b1218, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,135,965.507108,36.686329,47.026646,44.535290,13.686725,20.027676,90.571859,88.255594,40.794296,38.934984,36.543553,46.967131,44.471880,0.187280,62660.36,0.86,439525655378387,4850826098,174986373467551,2422391254,3197705396f2f3931c0ff708403dc454, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,160,335.004073,33.085896,44.856274,42.212445,10.411354,16.058227,80.044545,77.398839,35.244768,36.073762,32.964480,44.807865,42.152411,0.167215,59871.10,0.60,410000871578686,3651501692,167199518339635,1698795332,f1d24c201fc5d5fc7eebac016dbe2b17, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,185,117.165296,30.064973,43.018786,40.014823,7.935406,12.611575,64.125518,61.282759,30.617375,33.529534,29.961372,42.986598,39.983974,0.181170,32256.78,0.40,198637356606919,2044096318,90074857969362,1157416959,13cdf4809b33b515f86810d11d9edef8, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,210,38.697303,27.340423,40.794086,37.671509,5.993655,9.655904,42.759258,40.344955,26.728961,31.060874,27.252277,40.776926,37.652730,0.136090,9602.98,0.22,71973193603682,1321070086,32605211377413,807105883,dedbab0d5bfb953c41e6da991168ad24, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,235,12.220395,24.921452,39.323598,35.206132,4.171840,7.036113,21.328806,19.898125,23.460443,28.743165,24.854464,39.313339,35.186699,0.138877,4455.39,0.27,27785902037153,1520796371,11604100603286,726469525,df56c2548a9a94235224a414a52a36b4, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,110,759.459003,41.978641,50.739821,50.459976,16.842454,23.978218,97.873824,96.588252,44.690479,44.028279,41.767731,50.537831,50.303793,0.336933,93105.17,0.93,669719914330302,5430297375,260020821334524,2597433972,14fcb126c62ed50ef51e84d514c23af6, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,135,280.445708,37.846852,48.757375,48.358882,13.201130,19.874701,93.987379,91.713045,39.888044,40.851017,37.607540,48.476478,48.173051,0.479302,76194.62,0.95,430608189102956,4517782736,197475014484058,2600104481,52b176637efab51e95a57f3f8e6b04e1, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,160,104.295704,34.359064,46.475687,46.332172,10.020120,15.567067,84.437120,81.786126,34.730492,37.821738,34.162419,46.053541,46.069475,0.632976,46123.11,0.65,266329827791966,3932247161,119584201174558,1771276360,9ebb7999e7cb885d32822348e908db9c, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,185,37.817567,31.740453,44.540400,44.401408,8.072966,12.381346,69.690681,66.676423,30.735750,35.462550,31.630770,43.862113,44.003432,0.773372,19890.56,0.57,114857539431407,3443438849,51622308727719,1586488811,5676fd4cf4a482a4dd3d4f6e5b1cf26b, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,210,14.431722,29.530225,42.576136,42.244166,7.040056,10.309571,51.195387,48.098290,27.548206,33.306343,29.421975,41.880741,41.948755,0.941105,7596.77,0.55,47070395453452,3177822883,19827417308917,1465397026,e26a68106767cfc7b468701d42b54d2d, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,235,7.013909,27.069792,39.957275,40.307276,6.156533,8.399983,27.725153,25.388625,24.310356,30.968092,26.845442,39.509329,39.986383,0.809080,2573.16,0.30,21383350858209,2355721909,7188042843198,836964434,a5c7803d675a6ee8b932724b16d39675, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,110,14815.867569,40.290445,45.368499,47.459185,13.469200,21.805734,99.550560,98.590195,44.682398,42.877061,40.106240,45.273163,47.385699,0.352898,1143730.89,16.76,8052821728188289,97794192650,3194082798671849,46803072748,3cb35cbab28b76072b1420d86edcbc42, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,135,5837.043692,37.278528,43.039280,45.579700,11.494979,18.711694,94.089755,92.000915,39.591427,40.359908,37.192036,42.965282,45.523905,0.620886,677157.41,13.70,4742059487754061,77993954945,2297173405555880,49524968418,004582ed560e4e9fde2a17117ba19b6a, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,160,2128.255015,34.110759,41.153928,43.853825,9.626508,15.397069,79.588726,77.317318,34.290239,37.775564,34.022275,41.104164,43.807123,0.654562,742849.66,11.92,4215486004776435,64804206335,1928757727580220,33196929085,63d18de73f2629a5a5f399319cf33577, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,185,644.165908,31.025578,39.547322,42.266040,7.669220,11.913674,56.221079,54.326930,29.366961,35.270794,30.936690,39.512112,42.221256,0.737856,294081.18,7.42,2180653887109263,53557429147,821319477979655,20694393638,de73d7659b6318ee4638f739156e3f50, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,210,158.292185,28.460828,37.952198,40.925107,6.130742,8.888889,31.916410,30.718587,25.565273,33.015165,28.392118,37.914356,40.887783,0.822015,144499.10,6.69,882045132957506,40480085006,377622958123828,19084765875,87a6116bb9015be79d75443d4b8a1cb6, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,235,38.117908,26.631790,36.408809,39.315909,5.203087,6.803257,14.611355,14.169283,23.160796,30.991270,26.599013,36.379691,39.267837,0.800115,51428.78,4.54,327053056542710,25840249736,136079201917083,13034854703,2cc791251072c6673bd6e2ea6e6fdc13, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,110,79673.874462,38.942740,44.322540,45.938389,14.634003,22.840639,99.976544,99.970625,45.137790,40.122898,38.716547,44.258549,45.890822,0.016343,1106839.86,41.71,6214321051572326,168405245111,2869968548623760,112862697242,fc842bd161ea90884ca01c4866d05f06, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,135,26486.754462,34.523754,42.026626,43.889494,10.944363,18.241281,98.156663,96.192594,38.277339,36.730313,34.372075,41.981737,43.852228,0.026172,1340997.43,0.00,9467428322381812,3502155,3744905704592232,2617844,1f22a0248fee30c46d2dfd1a7dbd4ed1, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,160,7141.794462,31.114581,39.963071,42.008328,8.185305,14.366444,87.203625,84.691222,32.430108,33.963305,31.036475,39.921056,41.966466,0.053242,1147960.61,11.43,8293827209246632,72881224522,3205877866083702,31932660709,f293b39032a93b1e76438904b36e266d, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,185,1890.808615,28.475566,38.034609,40.134274,6.061308,11.031130,70.880480,68.357057,27.795575,31.611756,28.429246,37.988786,40.090296,0.113206,609933.37,9.46,3532732400704097,52209374861,1583938659136302,26696089409,7788a15e8aba60b5171c6cef7787154d, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,210,522.398769,26.308281,36.159208,38.301662,4.570450,8.307851,53.373668,50.963011,24.256865,29.502825,26.275403,36.123422,38.262247,0.123610,176755.04,5.79,1373630927428824,40098599267,493612571713769,16174017456,ade96a57cfea60ed6fcc9e7a2caac5cc, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,235,152.555077,24.407235,34.205315,36.206929,3.649791,6.163288,37.419646,35.491073,21.521778,27.503660,24.382443,34.182173,36.168099,0.112044,83018.47,4.90,532240147005282,28033338432,218680308310971,13917874663,12c9f450b3aa919ce87d4611facde465, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,110,4895.979323,48.649247,49.047738,49.296139,24.651241,32.333212,99.170588,98.108636,52.592518,51.247491,48.277980,48.474018,48.384545,2.616228,337085.57,12.66,1868122008890805,53397479628,881753174720285,34964414527,d9ba2e48cab5669573b25c73f55dd188, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,135,2685.078646,44.728494,45.129009,45.375755,22.277171,29.065468,97.942289,96.053151,48.169774,48.348470,44.197669,44.371178,44.198028,1.517076,397165.05,11.82,2758832086401646,50858370419,1316994629583034,32934779373,92651920dacd4b331eb4f5982275acb9, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,160,1361.576862,40.477618,41.322959,41.627807,19.149900,25.083043,94.133422,91.344133,42.592118,45.280104,39.846170,40.308343,40.160601,1.350393,458395.01,10.13,2549451910149145,46629494504,1198735350147632,28422119097,636a6dc39599a830983aa2caf3996d5b, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,185,665.712738,36.341786,37.785803,38.168318,15.806572,20.646824,85.230382,81.772228,36.669444,41.925805,35.704831,36.697513,36.617886,1.382879,259203.73,6.93,1855400768720987,42689377432,723884709269719,19332736358,56d5831b780e75016e4d0f26eee16cdf, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,210,292.361354,32.212921,34.399285,34.591644,12.421920,15.893867,67.217347,63.515245,30.699774,38.224654,31.665856,33.427820,33.043430,1.290222,185375.86,8.57,1054601132361087,46938220524,485610626770834,24781965172,26d8827cdefcdaff29b9ae72c1fc082f, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,235,109.200738,28.272272,30.948195,31.054573,9.423854,11.203406,38.661415,35.630191,25.288470,33.907594,27.889707,30.223738,29.557674,0.985996,78847.62,6.32,475591860532723,34720872463,208078295229894,18407520765,4e3db2aeca5cb58e0cbe93c0221ea023, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,110,8869.740923,43.182084,48.445808,47.995048,17.362909,25.649959,99.209695,97.888297,47.930860,45.346956,43.076298,48.402306,47.948080,0.308829,389058.83,18.35,2189337859556697,79714128093,1010884694430736,50808310779,0ecd5233dc9413ecef5963815c28e937, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,135,3467.826462,39.504225,45.717196,45.423324,14.349480,22.070022,96.265208,94.424977,42.869565,42.273166,39.435049,45.659281,45.362020,0.309761,490047.65,13.86,2728520198869159,65001494059,1271480564031173,38668366155,a070d7c16ebc04fcfa3dbf5ba0a88d5f, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,160,1397.499692,35.893954,42.968165,42.635410,11.094433,17.951771,89.796479,87.334407,37.439160,39.036539,35.847498,42.895911,42.557024,0.321035,360202.37,9.54,2614064156566864,55629383960,1006037713244392,26738384404,fb3e05def6ca473f269f07728f142ec4, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,185,578.187692,32.608642,40.104477,39.584461,8.241297,13.958379,76.798282,73.799061,32.349171,36.036294,32.568558,40.014866,39.496070,0.406787,203557.40,8.43,1522328672069349,57659006269,568510016728180,23576006439,f1622db1ff442ac253d20e3ea270e8a1, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,210,259.584000,29.912394,37.112657,36.511012,7.221707,11.588532,57.548689,54.374675,28.038756,33.634206,29.845963,37.004252,36.418070,0.442037,98212.06,8.02,766202290954299,56697852861,274263213907627,22374914813,6be7f13ff9f5b84744e6d418702d4e1d, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,235,109.945846,26.966711,34.136930,33.496083,6.301854,9.249293,37.198757,34.152687,23.941479,30.963596,26.880333,34.026067,33.420520,0.348855,64478.70,6.30,404121007375362,37153487131,170435062692430,18055348343,92ca79c43ecf0bfedc56740492d027d5, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,110,55725.385846,41.771754,45.072162,45.026532,17.097782,24.247765,99.837599,99.606772,46.113403,42.571375,41.448917,44.872881,44.811935,0.189617,923755.55,25.29,6466766456268576,126180760602,2579518665337167,70638368466,a5089a5aa28e969f7f45fb805dbce1c2, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,135,24708.240000,36.465859,42.862011,42.653786,12.191784,19.043263,98.929784,97.998416,39.437568,38.947878,36.132402,42.704083,42.485237,0.190932,1702813.43,22.36,11647092358449068,109302799424,5804520984623813,80080247700,9c65e4bbe8397dda207cb4d0e86bb46b, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,160,7598.300308,32.266482,40.824718,40.387098,8.569373,14.458422,89.176058,86.689782,33.462752,35.554909,31.984802,40.708278,40.252817,0.232545,1302314.50,0.00,9299641971881380,3430291,3636472416253526,2368578,4c6351d0c80b7a70f94ef1274f3a7828, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,185,2487.921231,29.532162,38.606273,38.051545,6.420791,10.784951,69.772565,67.396169,28.924450,32.828019,29.320452,38.510992,37.945063,0.255876,595425.89,8.35,4312542142419093,55269815841,1662912644960926,23311433629,649d20ff5b6d87215dfbd90b0276094f, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,210,608.067692,27.047915,36.445174,36.004508,5.038734,7.739834,46.087256,44.397557,25.312604,30.361713,26.876029,36.374912,35.921097,0.281395,304412.32,8.44,1877069647401756,53143260995,796786780858974,24122298604,40d074167aa446172412f7d0813b2b28, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,235,170.270769,25.214270,34.318255,34.100146,4.309648,5.557030,30.931485,29.917409,22.644917,28.235080,25.100091,34.280136,34.050033,0.461695,113334.57,5.29,735280549127034,28613202766,300044529645506,14796480682,b26cf4021346e119c951c0652b0b5d4d, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,52410.339692,40.176282,45.586143,46.254973,15.885688,22.661907,99.736208,99.641204,44.370330,41.015834,39.745396,45.238787,45.937600,0.118085,660923.35,29.59,4508516532253681,155733760563,1845681376505141,82681181265,54ebc4af20c2a74f177b53db9b1c8886, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,26650.633846,35.417958,43.173679,43.923552,11.816224,17.839550,97.865869,96.551331,38.115231,37.604030,34.863061,42.778393,43.587825,0.120868,957472.95,23.29,6541097671695805,123308537041,2669752285998289,65027769882,594ad9eea3e7f147de2ec611ce379477, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,11244.103385,30.980463,41.069440,41.870485,8.485758,13.358967,83.622223,81.434302,32.296007,34.318126,30.301993,40.664609,41.557982,0.174925,1513721.05,0.00,10538594362525422,3517439,4227234982852498,2296434,11de8c28dfa7cfb21717a5ab471f61a7, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,2893.290462,27.065657,39.246130,40.046639,6.059160,9.769150,59.869408,58.004780,27.451126,31.365915,26.292141,38.850417,39.734836,0.361222,946689.68,10.55,6767046318216734,65242857171,2643761291950604,29469952670,3e4fa62a40fb275351de5527cebc7314, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,495.773538,24.713867,37.810725,38.430891,4.721702,7.221146,36.161675,34.900223,23.873111,29.233073,24.008337,37.494089,38.162049,0.664598,394529.02,9.31,2347913434439754,57355287091,1028321600878459,26697632272,66c814c56970ea248c1255356319add9, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,101.621538,23.307454,36.046661,36.510817,4.069134,5.518038,20.234684,19.416890,21.467730,27.543167,22.725879,35.823423,36.307583,0.841438,96645.94,6.20,768491228889384,46298054263,269913173538990,17327143648,ac1cb2da1dd38b096a30aa176c724f99, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,6621.269169,42.310430,46.942618,46.771530,13.346603,20.218189,99.383255,98.690203,43.388630,45.355139,42.001350,46.816480,46.453022,0.226325,600027.86,16.76,3326782369136262,81648179839,1547446255512573,46459962441,4f2e0545f11ed388db39c5fc80fa1161, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,2646.306462,40.784513,44.853264,44.458992,12.413535,18.051735,92.348094,90.630300,39.839054,43.746434,40.452276,44.696848,44.075984,0.302665,330538.68,11.44,2277351726060052,78843903158,923066349584808,31968586323,487b0fc79247e5dbd7298330bea2ba5c, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1134.281354,38.963790,42.313105,41.774178,11.697433,15.748453,73.836028,72.007817,36.332888,41.809513,38.588591,42.134764,41.355323,0.309802,233224.42,9.27,1634656872350541,64930928263,651296157883937,25941704907,306694aa5320e4ab519c809d8e1e5fb4, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,488.489354,36.734787,39.637713,38.995106,11.090527,13.427194,47.886676,46.526446,33.090610,39.490991,36.354915,39.463324,38.594512,0.334918,95815.52,7.28,677577420583877,53747543473,267595630627100,20341891497,01927c1b6025c9573e377a8f821d11ce, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,207.290585,34.169408,36.880189,36.118163,10.586414,11.257942,24.151814,23.459960,30.059801,36.774383,33.837931,36.727888,35.761095,0.368329,47546.69,9.68,272292035579825,55739808494,125392774433857,27496970950,1e510d6553ee404265864e6bc75d288f, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,88.702523,31.329986,34.020140,33.224746,10.125424,9.295847,13.343102,13.167352,27.102438,33.773329,31.068408,33.895935,32.932708,0.489081,18934.19,7.61,102431437786866,49772160573,51201832062813,22159562914,925bf62f73078823e5de18d1ff5bcdcf, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,12104.112738,44.638184,46.785206,44.747240,18.346796,23.826147,95.887763,94.091329,46.034123,45.735345,44.370099,46.373704,44.276134,0.016283,1126789.05,22.81,6381431238899528,109056089876,2924402130410371,62319467799,3854ce05391ce23a78b33747650ada25, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,5833.348431,40.732731,45.366889,42.775125,14.926173,19.562061,88.706546,86.188102,40.709585,43.378171,40.329761,44.626210,41.801675,0.015925,1100457.22,15.14,7707641513122375,87358434169,3073186953845443,42255034773,eae9031aecf78af45b85a733e85f94f2, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,2393.009723,36.704887,43.634614,40.661053,11.417857,15.045464,70.308312,67.626499,35.320007,40.604904,36.191288,42.317927,39.338119,0.014049,958309.41,15.16,5430016495457244,72828437856,2488489692753714,42604119165,4fe28296f047c94fb6cb22303b66e90c, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,780.952615,33.219418,41.931596,38.654610,8.622969,11.000278,43.369545,41.559811,30.707094,37.928467,32.561616,39.726743,37.151547,0.013017,330809.95,9.97,2474788863459216,62056449996,1124896351652205,36911087740,b6af12dad1377583ae7d40ef7bdee329, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,174.842585,30.620929,40.338115,36.973417,7.061502,8.019743,17.073881,16.554456,27.369415,35.651056,29.711339,37.192984,35.410702,0.011714,123170.37,6.90,962284967263514,52255851470,344004429100506,19286131428,2fd945ab5db508d8f4cb17b2b4369aac, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,33.402092,29.060943,38.788844,35.328324,6.626191,6.554283,2.139973,2.109837,25.535679,33.923852,27.918420,35.247030,33.914107,0.011692,46511.76,5.41,283801996680078,31508243875,123989174183115,15800398460,394868e6cfdcd63a5f2c092f07b70c73, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,110,8065.222154,44.826592,50.370110,51.575940,19.402624,26.543532,97.236568,96.248574,49.721958,46.128417,44.707215,50.303892,51.549161,0.423203,119573.14,7.11,857133457466085,40249282596,333917240063289,19888837688,0ce97e8b7e3f5a2caf6b5916d4839b0a, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,135,3583.916308,41.037808,47.686967,49.026381,16.491553,22.982284,95.406777,93.849074,44.513295,43.693991,40.942940,47.651796,49.010006,0.548341,200050.71,7.54,1106119653510489,32823994017,519217717358852,21123827927,a51bac42746b9c41067b9fbc1356648c, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,160,1402.648615,37.284100,44.925524,46.191374,13.513352,19.181102,90.381527,88.239853,39.245861,40.910527,37.225561,44.909916,46.180624,0.830241,210908.87,6.02,1199715028582518,28057971513,548556621198520,17149057834,2ad076513de75eadf9122200fe140e42, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,185,509.390769,33.956526,42.167286,43.240620,10.987266,15.610862,79.892537,77.256086,34.432920,38.034864,33.928114,42.157756,43.234500,1.153376,122932.30,4.88,701019283143913,25539224225,319817052746094,14070282565,f9214dcc5813a3a195661c6e3bb126ef, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,210,187.085538,30.950208,39.203780,40.341344,8.861569,12.330740,63.505784,60.804785,30.094576,35.199843,30.936259,39.199601,40.337700,1.470918,42511.85,2.60,322114061622378,17784277749,118712672176624,7297494225,b246c8a5c66250e038ae5fdfe0c41bb8, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,235,70.899692,28.002364,36.596620,37.303776,7.170621,9.391504,42.472288,40.233778,26.171322,32.371243,27.994058,36.592209,37.302431,1.177896,25329.35,2.74,144017184836194,13638536963,67163419179932,7935394430,41403602dddefb4cd3e46e1ce1c51714, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,110,30219.692308,41.795392,48.709756,48.022888,14.079724,20.142434,98.085585,96.448152,43.439951,42.471574,41.277042,48.520987,47.856400,0.233245,546792.83,20.00,3940145388885834,92861596311,1852910904070847,71945624348,65671eaf23b61a792ceb150dca7d73ec, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,135,9348.908308,38.252912,47.148666,45.943541,11.099230,16.067532,90.775140,88.560221,38.259917,39.911783,37.753538,47.011916,45.833954,0.427907,697415.01,14.33,3918818041303804,67407893961,1804897774891998,39114921327,3bd1b1007f8bde3925f6b1414f11f682, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,160,2390.377846,35.536486,45.675833,43.917485,9.082482,12.781390,76.141311,73.997739,34.179455,37.730647,35.184241,45.582856,43.832458,0.861410,414400.46,6.45,3082166106951881,48497561921,1157295716826767,18014072486,4ab11fb2a659d3c6c273880399e156b8, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,185,631.137231,33.567081,44.239192,42.134829,7.977168,10.395988,59.252408,57.508929,31.322231,35.982619,33.370097,44.166840,42.052365,1.457093,201397.90,6.79,1206513770247310,37508317087,524086925689353,19276727674,620db2a3b86c01b1ed74720445fa9da8, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,210,181.458462,31.901961,42.625984,40.488612,7.446374,8.768064,45.732287,44.191507,29.245763,34.459497,31.805436,42.574717,40.375073,2.545303,69603.43,5.82,437012931026228,33368802678,184099750437496,16726908313,e68f1e9cacebbfa6be2f642d35d606cf, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,235,60.771692,30.148110,41.008854,38.638837,7.096691,7.698602,32.178013,31.101549,27.347260,32.979933,30.101573,40.954707,38.504310,3.419240,22520.80,3.24,135346463325898,17490617632,60138480759342,9412579872,7c8e2aa80e527849d75ed81a95347a18, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,110,1710.675692,51.123292,53.813996,53.451375,25.107601,30.905871,96.529857,95.553029,51.944593,52.889603,51.028137,53.731865,53.364915,0.116501,63679.42,3.73,460245545484503,21041259457,177830823789071,10488341141,7369abe3dbd9a9c900df3fdcd17bdc45, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,135,968.030769,46.905278,50.204571,49.769424,21.882952,26.799085,94.930451,93.463558,46.537270,49.134125,46.802296,50.127072,49.689033,0.120481,78943.12,4.88,433288206424280,19524312095,206747268005597,13835402379,13d16dfe7f022fac0754da92c39e2702, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,160,529.735385,42.529044,46.388905,45.863756,18.677253,22.726561,90.575488,88.556506,41.355647,44.880136,42.445138,46.323618,45.794637,0.158198,47171.97,3.12,333482321236458,18958411082,131730113287120,8727630791,1503c5e1da774856cbd70f5cca2a1760, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,185,292.626462,38.225375,42.629406,42.089126,15.627835,18.883740,81.610038,79.243615,36.612493,40.714829,38.161383,42.571189,42.029051,0.265485,36545.27,2.95,256345283149613,17012247836,125945931834807,11118528492,60588b37480543b9855ad95447b9c921, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,210,157.107692,33.815731,39.400407,38.545051,12.743797,15.154584,66.456042,63.562060,31.959027,36.962107,33.762186,39.351827,38.473410,0.630014,34956.35,3.40,197889692794822,14893263210,93055283436138,9846725025,c1aae59831a1b6d1b70bff393b94f220, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,235,74.706462,29.446330,36.244140,35.377227,9.953557,11.466568,47.486568,43.594868,27.265076,32.947933,29.408120,36.206528,35.310293,0.536944,22454.34,2.74,125609326632582,13336992510,60432915419991,8031162898,7b07212d66debb9d289c5db981cbdbdd, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,269.366769,57.176112,53.909023,55.073966,39.092974,45.075064,97.353353,96.752737,60.253600,57.440848,56.906373,53.755143,54.967379,0.038809,15153.88,1.77,113214984984654,10469833213,42316444423110,4944689695,c331bfb1662d84ef19f0c1830ee55f16, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,175.421538,51.593378,50.386248,51.175829,33.319957,39.182462,96.900619,95.945093,56.055336,53.755738,51.404472,50.277055,51.104823,0.147154,17312.60,2.24,122834969845436,10983735664,48353088238749,6446042105,4253191df5d0844cd30c1c645207ed7d, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,121.796308,46.141185,46.935542,47.263370,27.975340,33.248638,95.906526,94.278744,50.515854,49.910972,45.999260,46.812754,47.186197,0.432530,17458.93,1.95,124494790083264,11348874581,48754526967983,5530933248,9a0bcbf762ec1e16f504090fceed6e65, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,86.381538,40.801631,43.793247,43.478086,22.733157,27.080702,92.858351,90.326606,43.767322,46.082845,40.677548,43.667415,43.386083,1.144115,19471.28,2.20,139734327907177,13808079028,54375744059472,6112874561,3adb74c0f1db92d394a4cf80061a447f, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,59.586462,35.264315,40.290221,38.958518,17.303233,20.646373,84.415038,80.842394,36.131440,40.254669,35.134897,40.186455,38.849669,3.320892,19593.64,2.40,142643746473563,16442711621,54728095579420,6718164338,979fd97ac5cc0ac302c15470f53a076e, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,34.648615,29.930596,36.162944,34.389260,12.007441,13.833823,62.001993,59.200533,28.704835,35.654780,29.821049,36.096767,34.338734,7.030411,22088.47,3.10,126285223498693,16121653330,59570465494091,9111051786,e01d46d6ca9056f2efc63ef0e7d83044, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,110,3653.424000,47.258208,50.690758,51.482294,21.704075,28.623014,96.821479,95.905003,50.924635,48.347877,46.820970,50.473425,51.363851,0.440368,93434.03,4.34,672926607065096,24983873515,260953943228114,12123177695,466fb0dfcd6084c74a5adcb56e330161, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,135,1824.963692,42.966880,46.989919,48.331329,18.440499,24.648075,95.441942,94.076234,45.658170,45.085337,42.516684,46.871968,48.291913,0.387001,111624.76,3.19,809866579846371,19639725556,311752222557724,8842797325,93f951c62e8047d90d6c8aa6ae85314a, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,160,818.625231,38.664119,43.584530,45.445965,15.460300,20.889019,91.671000,89.804764,40.570752,41.710278,38.266945,43.560172,45.427856,0.743641,93740.92,3.06,672246050498062,18407066511,261792765623840,8598445402,8a955b49b3ff3f02dba5a038bc868555, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,185,382.995692,34.832844,41.064386,42.604866,13.560649,18.278042,84.754215,82.157600,36.157443,38.781197,34.593757,41.048668,42.594199,0.816574,67651.90,3.19,488007678472150,16793861605,232061054479556,11959103294,3bbbed771aee4ff3e3385829bba23422, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,210,196.851692,31.267547,38.589066,39.739332,11.714330,15.783011,73.516262,70.178914,31.689801,35.714658,31.184932,38.564046,39.727699,0.819453,45566.90,2.95,340166472613485,18380319950,152995338048148,8441745394,a2ce7f4af134053581e253770d0372b2, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,235,111.489231,26.917390,35.267884,36.650102,9.196305,12.448311,53.378287,49.772471,26.294559,31.877380,26.868826,35.250857,36.626205,0.689766,30817.43,3.60,230748332188589,17440015784,109165131644247,10470067356,0c7805998b5a9ad22eaa61c2c35d3fa6, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,110,67.786154,59.855491,62.516292,64.751951,47.991444,55.216876,99.326777,99.253082,66.725421,74.270035,59.798056,61.258917,63.988056,0.001558,21001.10,3.04,118210971966068,11546107167,57362620396414,8864990654,add6a662ecf7a5d1f64a9d86940c876a, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,135,52.732615,53.908918,58.972725,61.449958,42.115262,48.996461,99.292022,99.156442,62.527298,68.194043,53.881493,58.362281,60.995650,0.002988,20977.14,2.98,114646552031357,11789544910,57601225839136,8675174726,7127e46a1d33e0085d930e3bee604fc2, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,160,41.752615,47.708619,55.807518,57.980054,35.839966,42.377549,99.150778,98.907851,56.915461,62.064272,47.683195,55.405781,57.720192,0.005803,21085.79,3.04,114703414417342,12839217374,57708813039029,8896258034,e32eca67fb50f4dd0b91a6bcf12f5e5b, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,185,32.703692,42.130709,52.982557,55.081547,30.038385,35.885999,98.721913,98.302170,49.993520,56.262064,42.113302,52.600739,54.847705,0.003645,22748.63,3.62,122026904365817,17460032940,61820252685211,10553792747,f8a2e4c4d438cf1162c6d53ae7cf4aa5, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,210,24.310154,36.668615,46.801546,50.714263,24.194225,28.646843,97.509216,96.803574,41.496486,46.504155,36.655952,46.505122,50.449616,0.003602,24336.72,4.28,131912781597341,19118023597,66149100528113,12320930484,975629eb6cf9ff363a0738266ddb2299, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,235,17.893846,31.862402,43.765746,47.670307,19.318553,21.908891,94.058713,91.410608,33.425372,41.499432,31.850458,43.524487,47.424501,0.001448,21365.95,4.29,118362183569781,20576684199,58485847429114,12381558686,2ae1f9ee43eedcc7350032abcc409afb, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,110,195.891692,55.036057,59.495907,58.626976,30.992648,38.289852,97.326909,96.756499,57.706401,65.013023,54.921154,59.335451,58.357709,0.127678,45023.61,3.72,259180377077046,16157426570,118904623552518,10825274239,26ec32d0f31c0f7b5aa768910c4a4187, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,135,94.586769,51.057216,56.453395,55.660705,28.437184,34.914386,96.946244,95.974002,53.614194,60.440165,50.997098,56.252406,55.345784,0.138056,30788.73,3.37,230191266674796,14060176254,108005393357486,9655302375,5c537d6ec951dd07b2e7f16488810606, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,160,52.529538,46.552023,53.243060,52.183894,25.887934,31.546448,95.883894,94.276588,49.123626,55.532293,46.523745,53.088121,51.872862,0.134426,28302.70,3.27,158826968731719,12827226559,75544237368503,9478659493,3fa836714189787eaf9ffe1075d49f34, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,185,32.079692,41.608013,48.883539,48.184234,22.579939,27.074258,92.745613,90.589249,43.872127,49.761760,41.593155,48.789760,47.963898,0.114833,23720.05,2.90,136006955787290,12873430345,63521145696700,8220150040,94fb217f4acbf7cbf05740b751960f97, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,210,19.762154,36.356479,44.388774,44.250263,18.528743,22.513029,85.217230,82.135468,37.714053,42.852228,36.345754,44.348004,44.058440,0.124387,20938.59,3.65,112498211466183,19826409762,56540197570775,10659082176,2c44bc487f69d4486a525e0ed1edd450, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,235,11.658462,31.104845,40.182863,40.028202,14.497130,17.586451,69.156063,65.106867,31.403407,38.375425,31.089084,40.172636,39.968202,0.039636,19564.17,2.96,106107719466930,13781824585,53164975706041,8602538559,7c44802a8488e2ad4b7a57182f60de7e, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,852.164308,54.402864,56.078279,55.440113,36.493394,41.434974,98.192503,97.400375,57.608990,63.852617,54.068102,53.043564,53.514048,0.007163,60017.93,6.41,337045787386992,26871149844,158927333918254,18192105568,99dfd07185298354f65ae1f8158ff46c, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,471.472615,49.751158,52.544660,51.905640,32.251129,36.839203,97.321682,96.095831,52.751649,58.995147,49.368865,49.223219,49.987208,0.014756,70582.02,5.67,397621391661074,26900265858,186031817200240,16081720973,711151ba04e51f1bcbb64668c50383e8, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,267.971077,44.878600,49.037409,48.384174,27.717869,31.689771,95.017181,93.243563,47.127280,53.634153,44.372779,45.339680,46.457418,0.029130,60923.60,6.80,326670075142841,30678103719,161000644668163,19184443355,643a69b11300739514778a4083197a89, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,158.099077,40.294983,45.807040,44.925287,23.365739,26.526871,90.071656,87.574423,41.308995,49.371793,39.642429,41.883540,43.035273,0.037122,53032.17,6.47,289339285555752,34049730482,140479246905770,18645155424,4721725ec191f86f62ae3f18891f7c71, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,94.670769,35.614782,41.030005,41.892447,18.807598,21.063228,78.876458,75.491957,35.013361,42.023891,34.711156,37.863393,39.275296,0.029950,43468.94,6.07,240913119009804,35528675427,116114943075685,17674902149,c34f401a9788d507989588fbfe240006, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,55.371692,31.216451,39.280970,38.807617,14.880075,15.948301,60.110093,55.949546,29.299494,40.986993,29.958946,34.053713,35.625403,0.015790,33499.35,5.38,185822417930884,27341601264,89477072199807,15069759548,b1f62a86af542deafed342c5d1918889, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,1739.305846,52.311782,54.295264,54.395367,30.609079,36.788533,98.120386,97.494138,55.860866,62.108683,49.442512,49.973738,50.292585,0.001245,104260.71,7.13,571363540139575,30447078641,273252999493018,20123523330,92d2f9627b6ab3dac48c6b480f7369db, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,931.940308,47.491722,50.225695,50.446188,26.634770,32.009213,97.047976,96.016928,50.264332,56.647456,45.127328,46.088286,46.504709,0.002877,131868.48,6.74,728176249873438,31916235634,344399226555601,19232260313,066f3cbb6da9445db9c1e4a9b94dee76, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,477.228923,42.468873,46.548904,46.822799,22.570872,27.045781,93.872699,92.413247,44.248473,51.258024,40.445197,42.294342,42.700901,0.005110,122617.74,7.05,665062044153234,34120545767,320300695871393,20413949442,c46c8e88629f3d258bb5cf4a2ac15275, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,255.673846,37.799484,43.846599,43.934148,19.055340,22.490560,87.182044,85.252298,38.649615,47.772657,35.992282,39.125842,39.404195,0.023903,90978.66,6.65,491922525674119,36057572156,237914334971182,19129878784,7775269eb964fc0af3d4ab590712a6c6, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,133.582154,33.120025,41.542796,41.677018,15.723238,18.073497,74.936139,72.557870,32.875070,44.423012,31.413519,36.310115,36.345836,0.013954,50596.24,6.74,333587447899085,38875914220,175123313824591,25393880235,5b5f2a7b242b7db62be6d6860246612f, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,64.969846,28.286164,38.576732,39.038964,12.483834,13.768862,55.185136,52.682232,27.019663,37.997188,26.510688,33.604570,33.234810,0.032441,42956.06,5.68,237689228427363,33234855283,114137776686266,16429421289,3155691c962a6dc73cf4d58ba0370eac, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,110,682.783385,50.572276,55.400456,55.018487,33.867464,40.761864,97.311933,96.389959,57.063487,58.085165,50.245379,55.130826,54.751659,0.054914,45798.31,4.07,251203452532906,17937463791,121568793928674,11595381402,8b0ddc26e0d5fca90525c3f918a77b5e, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,135,344.171077,46.656775,52.131832,51.753723,30.040805,36.570508,96.785164,95.504782,53.046449,53.662274,46.397874,51.864140,51.549890,0.054298,44920.63,3.58,237792112022785,16973185844,118848037607510,10272357093,682139fcac8bc97039c47cb6da5b2bdb, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,160,193.949538,42.466614,48.757458,48.822183,25.818341,31.834057,95.468422,93.724537,48.028383,49.442221,42.258959,48.496294,48.668150,0.053891,34225.93,4.30,212639128226849,15967370249,119611706519133,16181217820,9881bffeef9fb3e588211babe60ec37e, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,185,121.984615,38.176844,45.252722,45.863467,21.048705,26.462316,92.325497,89.995511,41.960329,44.806875,38.010635,44.998683,45.732554,0.054637,32833.40,3.96,204396591672931,16834522367,114635645598048,15104702089,18fa60a4b9f821e60a863f70d6934438, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,210,81.162462,33.320585,41.000414,42.760968,15.424528,20.241466,84.748895,81.447620,34.739760,39.733434,33.156755,40.751642,42.687820,0.061211,34996.35,4.08,189221219626763,18903853528,93406803061168,11940765681,d76e510eaef9ee28db108493165d2639, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,235,54.856615,28.337799,37.419857,38.160858,11.264543,15.027087,67.859917,64.030770,27.661478,34.287431,28.149430,37.273296,38.127591,0.056573,30945.91,3.76,165653408960127,18989885690,83041873955628,10949311353,f0246604dd17826d8fa4e645bc3bf8da, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,110,400.980923,51.574283,53.651887,54.649818,23.339392,31.216576,98.663200,98.326784,50.657391,55.675129,51.537637,53.270018,54.408935,0.027603,44659.15,3.39,240253927084121,12494775049,118496624421703,9848725383,74c6eff4b34e5e70d55389a8e7390d39, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,135,227.857846,48.410092,51.053328,52.159607,21.662109,28.836778,98.472934,97.888219,48.536089,52.558741,48.339819,50.420517,51.704771,0.914191,27916.03,3.16,182091205858028,14727875562,97565708044491,12057135205,80729bd10dd76945aa864ecb55d5816d, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,160,156.203077,44.679430,48.075111,49.424760,20.783465,27.375822,97.802967,96.891304,46.369832,49.159575,44.543479,47.508269,48.899061,0.921892,32746.00,3.49,173790799167006,15088824602,87472561927278,10213948596,a3af828b562a83cdda205b0045653d64, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,185,113.846769,40.129063,45.110957,46.317180,19.276933,24.821296,96.074968,94.402253,42.553234,45.154692,39.971087,44.652093,45.840832,0.930008,34088.04,3.64,181175948150958,16643901155,90941091851465,10556364028,ce96d770882cd6e262423d8d44d25ed5, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,210,83.523692,35.018040,41.809779,43.017221,16.930974,21.097255,89.621687,86.297333,37.045249,40.914977,34.837565,41.493775,42.683759,0.960210,27214.10,3.63,173657312969550,17899358837,95648484840804,13843393992,a31a0bc24c1c6ed08cdc41bd200db018, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,235,57.360000,29.426230,37.969279,39.727846,13.540480,16.188175,68.889952,65.006232,29.907031,36.604900,29.143620,37.864371,39.516235,0.743324,30489.06,4.16,166404971639646,19463124588,81895632963795,11840863688,28395316aebe832d37ab67c14bb3a1b0, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_RA_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_RA_Preset_0.csv new file mode 100644 index 0000000000..e0cb76030a --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_RA_Preset_0.csv @@ -0,0 +1,547 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,18698.144932,42.398909,48.726414,48.730037,13.975178,20.339794,99.974870,99.916243,43.030639,43.266299,42.347852,48.701124,48.704233,0.949451,,,,,,,bbef275cef307f6239117e5172ebfee1, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,6626.312764,41.573745,47.544940,47.468593,13.574910,19.569443,99.634603,97.784643,41.500338,42.399181,41.558854,47.532766,47.454712,1.181964,,,,,,,5090bae62cd567751ac7c35d523ca066, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,2748.024898,40.302340,45.978915,45.809845,13.047371,18.450339,95.187997,92.780491,39.168184,41.218028,40.287914,45.966135,45.797331,1.236379,,,,,,,cd8abe4df095bc0cca0d6a0240f2306c, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1320.628910,38.277972,43.975278,43.716367,12.215143,16.686019,85.938395,83.201898,35.926258,39.555254,38.257199,43.962788,43.705768,1.267856,,,,,,,8930d7fb487e07887304cbe9a36225d9, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,637.083532,35.576577,41.544790,41.349178,11.117021,14.425912,71.203989,68.152619,32.267836,37.402984,35.550552,41.531979,41.333414,1.316835,,,,,,,986f8d1cc360eda6e88eda5cc0d00e72, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,294.473526,32.413764,38.811171,38.787917,9.877806,11.913835,51.599668,48.622341,28.518344,34.766047,32.386579,38.798631,38.777026,1.261357,,,,,,,c9d61a4cf8c1663cf34d21740de8ce32, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,17142.278030,42.792326,48.817039,52.279670,13.526836,20.071718,95.550367,93.751624,43.159387,43.705936,42.752250,48.802598,52.269670,0.314978,,,,,,,783b1edc5438707e86f21fc0259673c8, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,5346.657035,42.131836,48.161779,51.340155,13.216791,19.203589,91.122211,89.016500,41.609517,43.053940,42.122558,48.157030,51.331892,0.364939,,,,,,,abfa7a264d1675e02c726cfbb7d4fdd5, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,2271.805733,41.079463,47.162608,49.921457,12.880922,17.946414,82.940772,80.560236,39.454238,42.068453,41.058596,47.155741,49.907411,0.382870,,,,,,,1db6fde3445246e838ba7cba28c0078e, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1056.173365,39.457742,45.752296,47.976921,12.457361,16.257370,69.881678,67.404281,36.844747,40.628501,39.418285,45.741326,47.956593,0.413666,,,,,,,1d1da8b177c649f1f8fbbe8a0138e3d9, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,498.505802,37.202535,43.695373,45.558467,11.953346,14.230477,52.274778,49.944161,33.916579,38.603752,37.144037,43.678597,45.532830,0.454383,,,,,,,d9cdc8c1d6426c8e48ff8f2e5c45a644, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,231.966188,34.352506,41.438325,42.868343,11.359943,11.967713,31.552737,29.945752,30.748117,36.067171,34.281392,41.428066,42.838267,0.377525,,,,,,,a1772e759c0766b086410a88a35578e0, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,24896.201645,43.191753,49.111596,49.323006,15.940789,22.924430,99.970096,99.961796,44.767457,44.214090,43.094777,49.017830,49.223606,0.009696,,,,,,,c42e21b5122b0794177b3fc644aa523d, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,10657.047568,41.768817,47.284686,47.411764,14.985665,21.106031,99.956362,99.944951,41.646090,42.703800,41.696428,47.206894,47.318019,0.011908,,,,,,,a8d684aa19914a8ad0a21be0d3dc88b7, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,4790.689925,39.422692,44.896153,44.949069,13.467955,18.363611,98.852515,96.704773,37.494980,40.459987,39.340303,44.815503,44.844808,0.013783,,,,,,,95623f4c591a19b62b75fafae66d2392, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,2183.123953,36.447850,42.295219,42.270380,11.577724,15.176810,84.666284,82.205047,33.242834,37.768269,36.356349,42.211981,42.154105,0.017961,,,,,,,7d1e78792dc8ee4b7df8d957bcaf8ecc, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,976.687313,33.228195,39.737380,39.600048,9.639173,12.017621,63.917620,61.696360,29.299791,34.891605,33.132556,39.653570,39.494867,0.028356,,,,,,,bcb5c2cf8fba02769a05071ec075bf4f, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,404.663644,29.940516,37.096923,36.866229,7.879904,9.045424,41.153269,39.797557,25.679940,31.918979,29.841489,37.001936,36.749650,0.070148,,,,,,,5cd9f8a61a245fb1a3a93fffa58798f0, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,110,37759.222316,44.756860,48.617912,47.936933,18.208114,22.506010,99.976332,99.971354,43.690573,46.631384,44.665374,48.475838,47.785683,0.948392,,,,,,,87b3db3f19bb9d89a9c83f5a3c78f728, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,135,16608.099593,41.616169,45.875371,45.035424,16.420566,19.772255,99.352872,98.610792,39.917053,44.085402,41.498346,45.798996,44.929737,1.215416,,,,,,,ded370c089a6ef79b1fe2c0808715808, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,160,7233.662338,38.753114,42.868797,41.837287,14.889608,17.397421,91.602323,89.399285,36.114387,41.537854,38.639695,42.777314,41.701223,1.426319,,,,,,,d98fa16f82ed917268b37b49d25ad88d, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,185,3304.298163,35.814849,39.722854,38.423861,13.413212,14.953739,76.232551,73.653032,32.263297,38.821672,35.690864,39.596671,38.234319,1.520829,,,,,,,5092f35310ea4651787a8f523998b9f5, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,210,1481.690617,32.665511,36.512347,34.921984,11.985303,12.382930,56.667088,54.277736,28.484938,35.839823,32.531899,36.362093,34.684243,1.732563,,,,,,,a332eaeb6dcf9c3c59444b20561c47fc, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,235,629.250749,29.487757,33.303784,31.381570,10.686666,9.943208,34.143188,32.627374,24.968340,32.713832,29.366476,33.145161,31.116107,1.876953,,,,,,,e6f6b32cca7688ada0f8d966ce2c63f9, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,110,45569.505231,46.337652,43.789927,48.879647,19.104762,21.848498,93.565658,91.513844,43.361011,44.968480,46.259601,43.729281,48.830073,0.599605,,,,,,,fe2607239cb783d5a4c7b66947a47c58, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,135,19374.365538,43.245142,41.996831,47.430390,16.674565,18.777333,85.014308,82.660591,39.572900,42.921243,43.168217,41.964176,47.400187,0.843456,,,,,,,c869d7e6ba8cfd1c77adba8c4d3bf5d8, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,160,7880.030769,40.003203,40.344403,45.860049,14.333499,15.628320,69.491978,67.053965,35.846213,40.888313,39.912581,40.322347,45.836959,0.928777,,,,,,,705789f7aa7ebd308ef39bd510df6d8b, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,185,3065.250462,36.728908,38.664537,44.221989,12.111653,12.405655,47.409502,45.680652,32.278795,38.794567,36.626992,38.642123,44.202594,1.031677,,,,,,,bedb2c0d5cd5729a99cff021d45abc70, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,210,926.832000,33.610758,36.977976,42.645292,10.366922,9.356698,23.947539,23.262813,29.064167,36.645923,33.516940,36.957415,42.633797,1.388456,,,,,,,7a96a4534dfe1b48853252a2646237ad, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,235,197.926154,31.573756,35.693670,41.009070,9.575283,7.570215,9.008294,8.800219,27.091369,34.896867,31.533082,35.684884,41.001292,1.588506,,,,,,,83ef20d3f362fb6c3b23f763a48cfcf5, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,110,10447.577042,44.571016,47.201304,44.596808,16.966094,23.327520,99.541116,98.764406,44.901366,44.150446,44.427223,47.113341,44.500075,0.000360,,,,,,,8bb056e338739244842e09c9f32ee86e, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,135,3475.252961,42.873905,46.201768,43.828619,15.740487,21.164898,97.858144,96.306533,42.077320,43.107896,42.634397,46.111798,43.736474,0.000895,,,,,,,fb9d9bab30504119c2f966a0c2de8b0c, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,160,1130.315322,40.692653,44.909027,42.984192,14.323790,18.681128,92.386286,90.305384,38.837256,41.767423,40.386242,44.822735,42.893818,0.003057,,,,,,,42abd25b4c5f6d0059e36c591e70049f, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,185,387.406052,38.295309,43.126282,41.767185,12.906050,16.375011,82.821546,80.556691,35.599500,40.124949,38.005913,43.062788,41.692066,0.011656,,,,,,,59ec9331ee85adfde789fbcdec0c5d99, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,210,141.740579,35.729825,40.783434,40.040848,11.482309,14.177157,68.480261,66.054441,32.301525,38.136790,35.515816,40.744375,39.983535,0.032769,,,,,,,4898e7f0664a7503aaa9fe266e497c96, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,235,54.541711,32.979350,38.099757,38.093308,10.103520,11.956580,48.838932,46.439228,28.973111,35.786644,32.841759,38.076106,38.057103,0.074127,,,,,,,01254d1c2028df01c3b8d038d433f770, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,27173.857527,40.437185,49.745781,48.009021,11.478710,18.275921,97.421427,95.736501,41.386267,42.581636,40.373205,49.736539,47.986265,0.314726,,,,,,,09b9c65defd9af51acb9c1d49696dbed, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,8899.328364,39.825745,49.105501,46.960207,11.159808,17.422118,93.527700,91.457447,39.805303,41.923563,39.816765,49.101961,46.947438,0.512514,,,,,,,675bc08a2e3850d3d1e0c924cd77da4e, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,3513.594098,38.898777,48.035432,45.351906,10.835830,16.277945,85.837612,83.429355,37.650995,40.945677,38.892086,48.029306,45.335365,0.566933,,,,,,,9694630bff202d64778b423fdb89236a, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1695.990164,37.381903,46.446083,43.168734,10.406521,14.684652,72.954742,70.413880,34.937581,39.482837,37.366461,46.436246,43.146004,0.604477,,,,,,,c878a487c4f9e43204105fe7143999d2, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,816.118036,35.196987,44.425688,40.601824,9.865932,12.747680,55.969391,53.590178,31.902589,37.531046,35.169178,44.409725,40.576193,0.769608,,,,,,,cd9fcb6799a1f279b487e6dfc36add2a, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,374.055483,32.424914,41.838122,37.859118,9.240871,10.609757,37.736908,35.762482,28.696262,35.035580,32.387516,41.820401,37.831982,0.779216,,,,,,,7fa3c9a7686612a2ed184601937423a9, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,27016.914163,43.632715,49.656724,51.457869,16.709727,23.356035,95.136639,93.443427,45.284547,44.763459,43.540445,49.634470,51.383752,0.009170,,,,,,,ac6ee6f5ea95b30cdcc276bb31cd8f0b, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,9753.730577,41.704354,48.005682,49.699566,15.199282,20.905212,92.225289,90.242461,41.639319,43.146352,41.637719,47.996450,49.658461,0.007727,,,,,,,af21d089a8fef7821ed36a4076a9e893, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,3513.203105,39.438187,46.005298,47.516637,13.482359,18.141706,86.409050,84.096212,37.839537,41.144044,39.374686,45.998923,47.495066,0.006812,,,,,,,04030d47412aba14c0e65c5f80e764ae, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1313.723815,36.954951,43.895690,45.240089,11.650883,15.316065,76.650344,74.034541,34.256433,38.906682,36.886668,43.889967,45.223877,0.009042,,,,,,,57f478b0fa513c4352741e42b913d774, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,481.379544,34.326688,41.758808,42.966162,9.930440,12.504989,61.717612,59.118318,30.868980,36.494284,34.247952,41.751550,42.954572,0.014085,,,,,,,da472f27143852460b48671159f05422, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,170.716668,31.653484,39.431472,40.532882,8.531670,9.931261,43.910507,41.658334,27.763060,33.897606,31.568245,39.425958,40.517462,0.016452,,,,,,,860e8dcc800d254a163e1aeeb5b4f2eb, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,8721.459464,43.087709,45.151045,44.989818,16.614008,24.505332,98.215159,96.383570,47.471516,41.188962,42.951750,45.110839,44.948106,0.000010,,,,,,,b60a2045b8a8ce2054f0f78ac088bc8e, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,3627.491278,40.527038,43.692337,43.924596,14.200426,21.336199,95.562163,93.492513,43.089087,39.359248,40.298564,43.655571,43.891071,0.000395,,,,,,,81fb3ac2d6c164eadb11d024b6f6c67f, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1368.197341,37.253434,41.950340,42.579297,11.210316,17.276958,88.808848,86.575669,37.496551,36.985567,36.922545,41.919639,42.550406,0.001834,,,,,,,bc9596ca2b2a21ce67afbc21c205a4e4, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,487.266580,33.987925,40.124566,41.053449,8.563115,13.412555,73.994584,71.739744,32.233951,34.520826,33.695664,40.102832,41.030649,0.006255,,,,,,,afe23ad5afd45ec19f4afc50b755f6f9, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,174.811035,31.132149,38.318110,39.514278,6.634384,10.155247,50.875287,49.122410,28.052792,32.227914,30.961704,38.303918,39.499136,0.033582,,,,,,,8c8124c7fbead85d33bd8f8a06936225, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,62.547914,28.556006,36.781825,37.852629,5.357698,7.441356,25.898543,25.089047,24.766920,30.094062,28.473872,36.773741,37.845568,0.083679,,,,,,,8eeb6b12603534fd450e65afadc41e19, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,20359.085837,42.052660,45.583519,47.591859,19.662384,27.543019,99.975287,99.836479,48.366517,42.787333,41.977263,45.555506,47.572167,0.126608,,,,,,,07dfacfe825dff7c5ffb56b0cd68f08a, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,10180.998079,38.786121,43.751740,45.356007,16.814419,24.194837,98.740986,96.873683,42.926190,40.353791,38.719977,43.738609,45.345825,0.161746,,,,,,,d4cbe375239e3e89f38606d726896953, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,4727.990778,34.897019,41.795113,43.000184,13.201006,19.914739,91.918595,89.748942,36.584827,37.383559,34.836368,41.785588,42.992773,0.178419,,,,,,,88238caa4624e92ba95154628d6f876a, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,2063.306540,31.057250,39.648876,40.588365,9.639655,15.458413,78.489988,76.326711,30.630865,34.188577,31.006661,39.639642,40.581582,0.179652,,,,,,,b2d5880a2b0cb36c996a6ff33ad3cae7, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,808.058403,27.531303,37.220169,37.859073,6.625702,11.315987,56.694695,54.936513,25.503705,30.995826,27.494616,37.214074,37.854823,0.177536,,,,,,,102c247ee373d898fde9eadb78270915, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,260.099285,24.426328,34.396076,34.443288,4.490170,7.823241,30.257522,29.220825,21.223978,27.951048,24.401351,34.391532,34.442292,0.179483,,,,,,,ced1955484d1f1c00bd47b47da4d8151, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,46836.464615,38.307145,40.606462,41.578660,13.247039,21.115002,99.975854,99.795940,43.558758,37.428039,38.171650,40.534329,41.515881,0.000532,,,,,,,1d4ee59b59a0cb231b3c0ad5e75a60eb, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,20913.181538,35.311560,38.670550,39.435426,11.487029,18.899149,97.013740,94.984074,38.882173,35.334929,35.201448,38.635254,39.397975,0.000626,,,,,,,c3f91d3ac430a4c6c96679af93043768, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,8791.252308,31.969717,36.681787,37.227708,9.305301,15.878453,85.979300,83.698684,33.188507,33.040454,31.872360,36.659180,37.199877,0.001169,,,,,,,bb782d7fc37c7101ec02e434b985a493, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,3478.196923,28.698595,34.714461,35.002511,7.045879,12.471934,67.260050,65.163373,27.944280,30.642355,28.622038,34.698450,34.981535,0.002733,,,,,,,85eed50a6e28f5f46876e8e8596597dc, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,1240.418462,25.680869,32.769328,32.894250,5.152230,9.221646,43.416035,41.923145,23.521610,28.240735,25.626648,32.759289,32.881349,0.012765,,,,,,,8f099c8f27a5586eb5cd4dad3bbb3cd8, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,370.449231,23.006550,30.962239,30.956642,3.785732,6.586004,20.317943,19.648279,19.885450,25.909940,22.972369,30.957639,30.951529,0.061773,,,,,,,a4ae307402586197a8b98a2d38d68abd, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,110,5814.680089,38.218342,41.251032,46.446150,9.172270,15.734868,88.481379,87.028902,39.109469,38.327927,38.111590,41.187063,46.412985,1.267289,,,,,,,7ae70f1b392890659ae39025c1294246, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,135,900.864059,37.652704,40.377692,46.177792,8.713811,14.797386,85.268420,83.447608,37.698967,37.707371,37.626090,40.359090,46.170997,3.070167,,,,,,,f19547bd4b06e55140f2a193ef2a61ca, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,160,115.512795,37.387597,40.167533,45.827776,8.580498,14.456127,81.231954,79.124572,37.053717,37.480566,37.385435,40.164665,45.825924,2.912263,,,,,,,e400184bb3d5aafa7d207484940c1644, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,185,45.738877,36.982536,40.048977,45.347412,8.475077,13.999031,73.782370,71.339175,36.100450,37.187027,36.980296,40.047434,45.346230,2.679894,,,,,,,2e62677f6a09066785859f4d8434b2cd, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,210,23.052025,36.169174,39.741318,44.403415,8.309753,13.162893,61.127819,58.473997,34.477447,36.671332,36.162569,39.739734,44.401274,2.604493,,,,,,,8db8dc54bba1b877626cf52f8eab3b53, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,235,11.906862,34.717832,39.024076,42.831242,8.066282,11.806176,44.057473,41.393929,32.154134,35.708260,34.700570,39.021648,42.826617,2.656412,,,,,,,aaa620eea87be1a00b8ea53815185325, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,11963.792515,39.710727,44.563399,45.524696,11.793347,18.820094,99.544424,98.129331,41.661407,40.025004,39.630028,44.531727,45.503053,0.115149,,,,,,,ad33b15b7f93d9260326b4469abdd617, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,4311.527242,38.455706,43.657348,44.709271,10.922377,17.310202,96.439049,94.243288,39.162223,39.040271,38.425010,43.649139,44.704330,0.146723,,,,,,,6160fc8d353a096a3cd2cf7d133cf931, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1578.013371,36.680989,42.555927,43.589894,9.790558,15.132984,88.450306,85.929224,35.780581,37.746771,36.653737,42.549075,43.583965,0.219868,,,,,,,81d991baa5987c04320e9ebd3124d13f, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,624.925843,34.447240,41.201123,42.032074,8.463732,12.479734,73.480143,71.039786,32.102387,36.092131,34.417627,41.191915,42.021634,0.332875,,,,,,,bea47d3e80984bed59df60af1f02edaa, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,236.270806,32.025116,39.514416,40.260016,7.245139,9.833157,54.033042,51.975776,28.697926,34.185997,31.999176,39.501849,40.240731,0.546942,,,,,,,87fe295202a8d3d745c291b4351144e2, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,85.435795,29.693963,37.598929,38.317435,6.387008,7.687720,38.251893,36.542048,25.868850,32.180353,29.675519,37.587453,38.281498,0.788733,,,,,,,3d7cae83d1536ba63c3c0471d5d54248, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,110,23193.286154,39.951058,47.357162,46.955554,14.684519,21.787469,99.974556,99.967745,43.066511,41.847369,39.749894,47.072058,46.729212,0.067806,,,,,,,7b774e4b4e59e695bd1394b2311dcaee, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,135,10005.840000,36.782595,44.685773,44.334143,12.274970,18.518409,99.964540,99.921341,37.961523,39.132168,36.592936,44.340188,44.077835,0.067679,,,,,,,73a166fd4ee893a230e03410e4249525, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,160,4071.810462,33.571521,41.854071,41.630050,9.851089,15.075970,94.716521,92.949173,32.908968,36.321741,33.386180,41.453935,41.360425,0.086453,,,,,,,60cc0aa746385de899b42f7f962a3ecc, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,185,1553.538462,30.498972,39.203761,39.151959,7.650226,11.704659,76.191043,74.114935,28.385594,33.578726,30.308773,38.791291,38.911564,0.093892,,,,,,,94a14680133ba82d181f9eeec1018a00, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,210,543.967385,27.777983,36.863582,36.968826,6.021443,8.713149,54.397898,52.745353,24.675914,30.999626,27.603499,36.482917,36.802032,0.097121,,,,,,,ded9107b38a157b83c042bcc92688cdd, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,235,178.187077,25.450845,34.680577,34.936966,5.009376,6.291059,37.199753,36.070839,21.820133,28.600641,25.322008,34.328889,34.820048,0.200435,,,,,,,460cf5e1fa1cbfd89dba1895faf921e6, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,110,4089.435488,42.596412,46.682354,53.048261,13.635318,21.042355,94.832575,93.218301,44.599259,43.193697,42.557491,46.673008,53.043496,0.740896,,,,,,,f21b3894bf86e68135e2f6b4c01cc78d, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,135,1128.820718,41.735115,46.335604,52.121092,13.140995,19.816757,92.111077,90.211437,42.535568,42.617859,41.728810,46.334552,52.118306,0.789092,,,,,,,5786e05802f91e594c1ecc9b13b8d88b, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,160,408.569892,40.491975,45.746390,50.631703,12.541075,18.190890,86.918647,84.559371,39.991968,41.769698,40.483131,45.745430,50.626226,0.798083,,,,,,,ccc33387f858f0b45df3975498925690, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,185,159.112272,38.815937,44.809449,48.486778,11.801643,16.198541,77.134383,74.700409,37.127531,40.553232,38.805045,44.806951,48.484095,0.888778,,,,,,,699f72bddc61580d224e97c20cace3e9, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,210,66.207024,36.808317,43.284940,46.061682,11.090345,14.063016,63.691111,60.879455,34.183280,38.888265,36.796104,43.282464,46.049606,1.015992,,,,,,,5ae88c1e19b4c2573ff9d1795eb1317a, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,235,29.612234,34.506732,41.774294,43.768555,10.431644,11.962698,46.985499,44.608010,31.265327,36.966353,34.493780,41.771998,43.767791,1.004305,,,,,,,6c2b2cf5411c007fe78b9315f805d5ca, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,44098.591385,40.690144,43.348962,44.252854,17.951074,23.959448,99.976935,99.970547,43.708568,41.320361,40.439439,43.205628,44.144657,0.037971,,,,,,,42a707f38eec39eae51266d800a9c580, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,23002.582154,36.144185,40.310269,41.668600,14.747908,20.314843,99.968224,99.957037,38.436299,38.081776,35.829915,40.174027,41.572916,0.075909,,,,,,,9754346a91fba4d199307ea179ce9a69, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,10241.525538,31.636563,37.597938,39.366057,11.435813,16.397625,94.125444,92.144119,32.672443,34.834618,31.335461,37.490142,39.292282,0.112018,,,,,,,c8ecabe220692f27371002bc20d67d61, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,3828.158769,27.667991,35.205635,37.257299,8.451763,12.506549,73.881440,71.668490,27.043715,31.734030,27.425798,35.119424,37.194809,0.132104,,,,,,,c183b15f0f83ad70850ced437cd11200, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1207.152000,24.635188,33.121901,35.324065,6.293393,9.085750,50.312402,48.466504,22.495237,28.968114,24.486732,33.056619,35.275467,0.130270,,,,,,,3191c8fc9350205625abb3dff0e1c83d, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,341.272615,22.396848,31.191169,33.382261,4.968610,6.438750,30.349589,29.120050,19.343540,26.511102,22.314142,31.138343,33.329241,0.130702,,,,,,,cef306a688c0943a696b3af1b25b1647, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,12003.960000,37.198374,39.686766,42.436400,9.988745,17.762087,96.113779,94.351079,41.477341,35.409389,37.077048,39.619592,42.403232,0.000047,,,,,,,5a8292e3ec266276f43eb93241c018e0, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,3424.716923,36.307352,39.283712,41.723352,9.427586,17.038130,94.123491,92.216799,40.006834,34.822136,36.267186,39.277590,41.721022,0.000138,,,,,,,f65c3263dfad6e54f045780b654bb9d4, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,937.840000,35.210903,38.874214,40.757009,8.879266,16.170003,89.578909,87.374146,37.691898,34.156358,35.203233,38.873265,40.755305,0.001088,,,,,,,93d3597093f7937571cb633d5b9a344b, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,386.286154,33.502654,38.267340,39.377530,8.022688,14.656298,79.753294,77.362892,34.126618,33.178248,33.494104,38.266634,39.376424,0.004399,,,,,,,156c43aebfab36bd9d5d2d0432fc31ab, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,153.901538,31.022003,37.365865,37.694045,6.719826,12.175292,59.997337,57.752366,29.629160,31.726226,31.013676,37.365334,37.692753,0.016079,,,,,,,93251ba83b7f93b59bddb4d2c220ea00, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,53.692308,28.262061,36.219814,36.093624,5.305152,9.109942,31.939166,30.573771,25.369570,29.977021,28.256836,36.218393,36.092956,0.021897,,,,,,,5b514ed409bd988f175f6cdfdde49870, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,3759.006154,42.497686,46.857951,48.673789,14.453797,21.677897,99.648436,98.716747,44.259839,41.622286,42.434568,46.822527,48.633559,0.116062,,,,,,,36750a4fc0e6f4e4c3316c605eaf3379, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,1551.263077,40.973360,45.628943,47.111298,13.441081,19.801647,96.844042,94.790785,41.017621,40.426388,40.948549,45.608384,47.083174,0.132509,,,,,,,a2743836d334328c1747478cadccb9b6, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,708.147692,38.820576,43.950813,45.005011,12.160307,17.301036,87.787488,85.405825,37.159841,38.795263,38.785926,43.926091,44.973272,0.190673,,,,,,,277e2fc1a7bd24c0ae26a9631401a6e1, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,335.150769,36.216585,41.942890,42.627022,10.835485,14.679921,72.855399,70.303193,33.377528,36.745244,36.170060,41.916026,42.589979,0.301424,,,,,,,6e5ec1bf881f5b6bae32f4c5eeb4afdf, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,155.384615,33.256916,39.728867,40.059787,9.462055,11.984632,52.906263,50.544128,29.712795,34.401577,33.202771,39.698774,40.020627,0.390550,,,,,,,e198c49233e366bfad442af770430de3, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,67.847692,30.008676,37.337620,37.328583,8.094585,9.239078,30.025134,28.410706,26.112542,31.610310,29.949980,37.317452,37.291281,0.373517,,,,,,,b3bb814eb8e80ffddef6d1bf13ce1915, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,7972.293553,46.490100,49.859683,50.713383,19.275901,24.854170,99.525635,98.194709,46.506932,48.260513,46.428004,49.819040,50.648848,0.231670,,,,,,,190f332e8eeb77afce6cf0186ea112aa, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,3975.763314,43.757352,47.839927,48.364176,17.611360,22.279939,96.028990,93.761186,42.558575,46.143723,43.677554,47.781475,48.287399,0.244304,,,,,,,f06ab29469f91a7bfd69aa3eac73ef9e, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1886.706524,40.427937,45.534358,45.721160,15.520082,19.137103,86.966982,84.203478,38.052094,43.465346,40.318129,45.463759,45.630435,0.341183,,,,,,,eb98d5a95bc2e53eb376bf80df67d780, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,868.160762,36.991035,43.245937,43.043513,13.426902,15.949395,71.599624,68.587751,33.743096,40.549241,36.863220,43.169299,42.942106,0.385202,,,,,,,6eb754fc6f2453eebb2b06117a561a29, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,379.669561,33.651966,41.133007,40.698538,11.611644,12.998147,51.048747,47.977468,29.859687,37.822505,33.516045,41.060612,40.607255,0.440444,,,,,,,7018b2b372daf14c3f901ba4f96c0ba5, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,152.483824,30.415264,39.258458,38.299854,10.166735,10.330639,27.835835,25.394208,26.346374,34.906356,30.277052,39.205786,38.204334,0.418552,,,,,,,7fa673c6add3f31f512723233fcd0f0e, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,19618.073846,40.500461,43.288072,45.633561,13.842391,21.072539,99.970509,99.962482,41.972285,38.756075,40.401703,43.207902,45.561169,0.000007,,,,,,,63412149bf64393d631f00f18d3999cf, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,9239.553846,37.555732,41.180612,43.930487,11.557440,17.480629,98.361639,96.842555,36.540989,36.485866,37.449483,41.128389,43.890142,0.000020,,,,,,,0b03ad1e86f20978c2a652a82338d285, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,4094.681538,34.234248,39.248425,42.349753,9.218508,13.647447,79.126983,77.082620,31.469664,34.029620,34.087566,39.205646,42.318176,0.000105,,,,,,,7bc08e8e0a548674da48ccfb6a447385, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,1693.507692,30.953637,37.674049,41.059913,7.225414,10.147177,51.913303,50.404836,27.244453,31.575472,30.791035,37.642589,41.035374,0.000754,,,,,,,ee3ecd5fb7c26f43c58f304f0f3a2d3f, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,623.373846,27.908438,36.682194,40.311682,5.755920,7.196151,29.524361,28.724438,23.814052,29.310293,27.761137,36.667273,40.301873,0.005696,,,,,,,7b734fae945e4e08ffe50c02ff816015, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,196.592308,25.185033,35.990622,39.649432,4.766721,4.885040,15.718656,15.487786,21.045697,27.186665,25.073221,35.984399,39.644012,0.031509,,,,,,,97651f7f20b0be917d4f3d7fd50c15b0, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,110,17894.391147,39.696579,43.969206,45.291891,14.718797,21.566357,98.313612,96.671595,42.786830,38.894036,39.547595,43.893179,45.226283,0.006327,,,,,,,3e4aea6ab090b59e0311bbe9173cad9d, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,135,6335.452240,36.858952,42.194852,43.667526,12.828170,18.974144,92.975876,91.023396,38.434279,36.933384,36.750171,42.153559,43.636025,0.005832,,,,,,,a28395e566242c8768c03f3fb016ac6f, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,160,2702.452010,34.259836,40.272156,41.829602,11.019227,16.042199,83.078799,80.952069,33.835696,34.972500,34.192673,40.248449,41.813198,0.011811,,,,,,,d0ef6fbc1cc7e7e6a3b6b8e8224592cf, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,185,1139.399677,31.277716,38.182610,39.905275,9.062684,12.828713,66.913822,64.896119,29.302295,32.745410,31.218598,38.163132,39.892029,0.080498,,,,,,,06720886d408100e14fa028cafbc4172, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,210,446.571890,28.147702,36.066051,37.794999,7.216059,9.864441,46.845438,45.320253,25.166259,30.385946,28.096554,36.051953,37.786175,0.298884,,,,,,,01c4dc9d4ad4ee5e0316d7cf6a40130f, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,235,150.016138,25.121790,33.855630,35.675086,5.553734,7.144549,27.727862,26.799915,21.494085,27.868169,25.088314,33.846574,35.672048,0.338373,,,,,,,32b827cca0344a927eba10193cf06038, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,110,2094.561231,48.506098,55.638180,56.044484,20.375192,25.045600,99.719956,99.171113,47.089959,49.159297,48.289439,55.581011,55.968201,0.682253,,,,,,,3e29272968b1e2c7ebc45d11377468d3, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,135,864.404308,46.323885,53.524740,54.081433,19.120737,22.619553,97.046740,95.212719,43.927108,47.295030,46.029489,53.447537,53.990485,0.704111,,,,,,,945fb39258410e85369f7555ee5a2828, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,160,359.843077,43.758954,51.039004,51.720853,17.941044,20.009163,87.562958,84.808592,40.602037,44.992372,43.447370,50.930134,51.586620,0.728278,,,,,,,b6016f93f51df1a6390531b79f000153, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,185,161.082462,41.067963,48.347012,49.127707,16.993651,17.567886,72.853025,69.851462,37.484311,42.445564,40.800296,48.227131,48.970680,0.692077,,,,,,,bdb72fc3e28792dc6065b653ae75468e, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,210,76.163077,38.159624,45.377346,46.257165,16.079383,15.180650,53.642341,50.754398,34.376252,39.531772,37.938387,45.255168,46.119801,0.510250,,,,,,,d6428ad00898d1bdc43d4cea265d5dfa, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,235,37.046769,35.025793,42.332829,43.331753,15.059047,12.772007,32.472266,29.902081,31.188003,36.459821,34.845175,42.248998,43.246850,0.532417,,,,,,,ac561cb6b432ed53818691661fdb0c9f, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,110,24844.614462,38.934322,45.840594,44.047715,13.915791,21.349868,99.974335,99.966796,43.026487,38.717648,38.738102,45.808204,44.005313,0.085991,,,,,,,3025823fd02eb2c9907266b238e2609f, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,135,11223.055099,34.835581,44.498824,42.602352,10.384301,16.860354,98.428640,96.975741,36.693434,36.157883,34.616853,44.473587,42.570928,0.113037,,,,,,,4c1a6766123665b372bd4a86ea33b5b3, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,160,4234.326289,31.200569,42.869156,40.809633,7.478257,12.678514,81.760942,79.823881,30.772575,33.592422,31.023362,42.838951,40.761544,0.139340,,,,,,,444e4f6fa7afa92de9a20416fb8b7093, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,185,1467.072620,28.349028,41.377880,38.991952,5.628255,9.559043,58.065773,56.332652,26.279771,31.368673,28.224670,41.355127,38.938925,0.216944,,,,,,,3aa1c55687a5f18c7dc6a9248c632e0e, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,210,474.092677,25.983612,40.142121,37.947665,4.484806,7.328307,35.762819,34.541449,22.870533,29.409393,25.894655,40.126303,37.923227,0.282476,,,,,,,1cf95c7c1fb313d86c20b6bd07df8e02, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,235,134.558979,23.881313,39.006847,37.087761,3.741082,5.536203,18.128595,17.588110,20.249403,27.545329,23.816833,38.988601,37.072205,0.234716,,,,,,,45fd5ee82456d205828726d73df0b227, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,45616.200000,38.063413,43.191089,45.829448,16.673460,23.887474,99.976419,99.969523,44.866547,40.766073,37.756955,43.001883,45.752626,0.000078,,,,,,,fe768f1db590c3580f85b7bac3c1b939, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,15437.032615,33.605038,41.070650,44.101110,13.361189,19.953275,99.917335,99.818623,38.760113,37.044321,33.304760,40.932803,44.061893,0.000041,,,,,,,1c16623bbe010d4ada15d6e1cca760b5, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,5522.754462,30.486177,38.790583,42.211847,10.713447,16.835100,99.031081,97.960136,33.938016,34.250540,30.318220,38.689844,42.191750,0.000186,,,,,,,96d69a0cf9015810d610d8f00a516b4c, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,2252.909538,27.485885,36.572087,40.464049,7.806298,13.132011,89.228464,86.779102,29.027262,31.416024,27.404716,36.484076,40.450853,0.000877,,,,,,,6c608a75ade344f14a30e323e95ad591, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,777.406154,24.230246,34.684959,38.791292,4.809307,9.011551,67.928770,65.903143,23.943692,28.343568,24.183909,34.613946,38.773847,0.018872,,,,,,,2cf05e7a501c5fe88a0be6efdb9d2c1b, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,180.203077,21.627248,33.076153,37.016022,2.664470,5.331314,45.115590,43.826273,19.746934,25.790712,21.591675,33.030344,36.994583,0.075715,,,,,,,2f6ea5cb7ff6f52a0c9b20ea1d4c2dfb, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,16440.223161,41.965011,47.671636,50.106739,16.896187,24.455742,99.977821,99.972975,45.974475,43.305060,41.898250,47.648075,50.096364,0.005454,,,,,,,b6e71eaeb9c3c10a36b5c90ae5e04113, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,7175.138707,39.403636,46.281078,49.060587,14.980823,21.879375,99.973180,99.964951,41.532933,41.425355,39.343143,46.265392,49.050283,0.005047,,,,,,,1d6ca448decf209327c52c021ae9b397, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,3022.222086,36.576377,44.725532,47.728259,12.838769,18.963356,99.959141,99.947045,36.753548,39.250876,36.523369,44.711789,47.717881,0.007665,,,,,,,f2f5a47f07103acb3f5580aae74357f9, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,1359.042189,33.912598,42.917860,46.213150,11.492947,17.022530,99.921192,99.905879,32.698560,37.139064,33.874036,42.901396,46.197969,0.007804,,,,,,,007cd78fe15a5709b6fdfb4a669a767f, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,684.640898,31.050684,40.942813,44.324808,10.218441,14.935538,93.523981,90.818690,28.755319,34.773345,31.016806,40.925220,44.298225,0.006596,,,,,,,7523796489c2c8f5ef6b6bab3a58cad6, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,357.936218,27.722287,38.957031,42.070571,8.630042,12.220449,75.676991,73.051482,24.572273,31.940452,27.688517,38.933135,42.063538,0.003375,,,,,,,256e52147780010fe9455fa7126d450f, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,110,2964.294167,45.703911,49.272506,50.230190,20.700232,27.181114,98.873405,97.542944,47.648686,47.031286,45.645805,49.198743,50.158785,0.012072,,,,,,,c93cd7abca5343b4f9926f080f0fc45c, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,135,1210.186122,43.407813,47.178204,48.306674,19.101430,24.876474,96.866399,94.724614,43.983952,45.024402,43.365456,47.139653,48.268095,0.030153,,,,,,,dc5830f8caf3ecd69b57678d40560636, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,160,548.543764,40.651582,44.559143,45.982038,17.107229,22.045834,91.566167,89.120889,39.694640,42.521293,40.611013,44.530827,45.943771,0.081085,,,,,,,e956c858cf2248c49cb795e2b8e6b802, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,185,261.287021,37.418003,41.461837,43.259709,14.714662,18.732275,81.572230,78.895863,35.123502,39.480262,37.380642,41.445707,43.223019,0.204466,,,,,,,7cd75483d937d8d1b488105c6cd706a2, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,210,122.810728,33.876864,38.124943,40.433022,12.228754,15.246892,65.450655,62.639088,30.651827,36.121276,33.846345,38.118065,40.388565,0.258036,,,,,,,363b0aaeafbc544d9edfc5e46fb6ab7b, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,235,54.788903,30.323056,35.028309,37.192024,9.975441,11.867221,43.953823,41.833114,26.505319,32.714438,30.300875,35.026229,37.117464,0.170346,,,,,,,c3fa8c52b5eb5f551ada8c24f0c8c07b, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,4278.930462,46.066930,51.021061,50.797993,19.886460,24.840607,99.919654,99.307311,45.890263,46.629523,46.007261,50.974721,50.753408,0.277949,,,,,,,56c7d3a2f5c30940d1a27dcb81c60927, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,1996.844308,43.482105,49.393753,49.228847,18.266838,22.254967,97.866023,95.727345,42.437977,44.813325,43.413520,49.366203,49.203043,0.297954,,,,,,,5309956abc5a89dec0ed1115e83cc7a4, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,936.203077,40.370404,47.345523,47.225184,16.245383,19.194697,90.370380,87.514620,38.380028,42.513934,40.287169,47.319761,47.197171,0.341431,,,,,,,337867f621e4d79913453a40d5c3aeac, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,451.015385,37.080968,45.016488,44.742581,14.154262,16.098140,77.824473,74.466637,34.283080,39.893469,36.998753,44.987813,44.710894,0.368378,,,,,,,9977afd5bad354caacd2d9feaafd4452, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,214.992000,33.728990,42.364096,41.900026,12.256792,13.173829,60.710317,57.228434,30.335120,36.993275,33.654057,42.332044,41.857163,0.372964,,,,,,,14483499d8ae4e4d7a2a316f953595e9, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,235,99.666462,30.402960,39.578752,38.961748,10.708640,10.603953,40.822055,38.017349,26.643273,34.026717,30.339956,39.546197,38.910652,0.348340,,,,,,,e1d9f052e091c651880843a183594c13, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,3923.285538,42.739997,48.834913,47.651595,17.336434,23.536978,96.666530,95.087790,44.081050,43.451354,42.455403,48.770477,47.491790,1.324429,,,,,,,91435a38fe04da8baa556d1ccc9d5077, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,1758.022154,39.949592,47.118232,45.535978,15.372739,20.581648,91.140473,89.241833,40.275466,41.146821,39.610889,47.082409,45.371210,1.356526,,,,,,,04384c7d591acfc5fa65f451c118a174, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,784.410462,36.856229,45.020876,43.086818,13.179113,17.371115,80.436707,78.393328,36.074633,38.528501,36.460380,44.991612,42.870716,1.457450,,,,,,,07aa749bf0d8a6310d208cc55ee94ff9, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,337.253538,33.609855,42.624902,40.520339,10.856590,14.134515,64.601545,62.732255,31.935882,35.685773,33.148749,42.584770,40.235346,1.519293,,,,,,,f5c19a8d903a5dd52470d4669e5e5b7b, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,127.524923,30.341322,40.078844,38.005754,8.602468,10.993084,46.251135,44.693163,27.932777,32.743686,29.784193,40.021977,37.605912,1.676973,,,,,,,507fd5fe7f6bd8d0918bb4124627750b, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,42.585231,27.477641,37.728942,35.404495,6.924305,8.208934,28.383205,27.388197,24.343661,30.026350,26.853349,37.638312,35.003814,2.053074,,,,,,,95b10bdb2936ec18ae560da8225c6e9c, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,7161.579344,41.600426,45.824359,44.637830,17.078489,25.478878,99.550878,98.429524,47.634879,40.887732,41.524438,45.799472,44.615878,0.000317,,,,,,,3a3ab7117d3062d9b7d0c797df79d2db, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,3063.811266,38.500212,44.014615,43.559115,14.331882,22.095708,97.645326,95.974487,43.050311,38.963368,38.440424,43.993406,43.550391,0.002978,,,,,,,8f64966ea01d7753619e20bcabdaad58, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,1241.666641,35.273415,41.940391,42.150322,11.891735,18.883299,92.785200,90.790206,37.996549,36.773257,35.225181,41.917285,42.138965,0.061039,,,,,,,c4f472b8b4126be2d0dc14e28fb8bdd6, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,485.680473,32.107836,39.784221,40.618701,9.621553,15.998552,83.279351,80.867286,32.966614,34.419567,32.068760,39.762389,40.600342,0.181419,,,,,,,4284c64a368c8236087b6bf9a69d69d2, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,184.368247,29.200754,37.595030,38.885884,7.601923,12.883583,66.197952,63.690920,28.130489,31.989395,29.173858,37.577733,38.870432,0.208381,,,,,,,5e031c7b290894f3e1a86d88bda323b8, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,71.219857,26.559844,35.582778,37.227016,6.007825,9.850033,43.984939,41.854822,23.981818,29.642188,26.539171,35.570079,37.211382,0.201462,,,,,,,186b7651ec7afe5b50f209f4e4a30e1f, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,1892.137846,43.494314,49.029618,49.743722,15.647988,22.490036,96.756516,95.362047,44.085428,44.360361,43.448457,49.023319,49.739440,10.515818,,,,,,,943c926e54cde9890f575d0c6df99a3e, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,588.900923,42.299279,48.229928,48.878084,14.936330,21.416379,95.519704,93.846373,42.646473,43.528782,42.285231,48.226769,48.874864,11.143804,,,,,,,0a688b6f39ba973ad0a6242e4e956077, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,247.598769,40.776409,46.778203,47.362100,14.078613,20.089929,92.787597,90.823095,40.519641,42.376463,40.767703,46.773636,47.356830,11.098724,,,,,,,84248fb74723774de4349ef22c72ef47, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,116.267077,38.504241,44.849128,45.128065,12.767951,18.152430,87.032342,84.457049,37.386929,40.656986,38.495398,44.845543,45.122537,10.981287,,,,,,,b50257da3d3efdc60f69db644def3444, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,56.761846,35.672042,42.112661,42.779704,11.067127,15.664498,76.152610,73.216493,33.592360,38.499940,35.662354,42.109345,42.776473,11.188040,,,,,,,7eb40ec4f35709542ff54570aac52763, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,27.758769,32.438557,38.937579,39.385758,9.386861,13.042541,58.526421,55.408280,29.413504,35.809586,32.427661,38.936532,39.383580,11.138172,,,,,,,6bc8007ba20df88f8d17ed00059197ff, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,2018.813538,43.987443,48.607969,49.593309,16.335722,23.092892,96.854725,95.521376,44.209550,43.888961,43.948157,48.599935,49.588563,8.261319,,,,,,,d3c3ef436f0e72b2290fff03517f2d39, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,730.039385,42.567172,47.640229,48.557881,15.554423,21.785632,95.564774,93.897551,42.476208,42.948614,42.551351,47.636350,48.554788,8.344511,,,,,,,45dcdbe75fad03237e32eb37cf59cad0, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,323.220923,40.616322,46.053181,46.942272,14.542642,19.978955,92.420216,90.395428,39.872067,41.595309,40.600954,46.048635,46.937883,8.370846,,,,,,,4ac898e26860284257d52d1bf290ce19, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,154.020923,38.050702,44.033492,44.778471,13.219509,17.665000,85.833840,83.191231,36.506726,39.794024,38.036263,44.026602,44.772714,7.964599,,,,,,,85e47fa476a00b508255d25cb7ab340d, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,75.323077,34.968901,41.332516,42.092922,11.683196,15.082424,74.121794,70.958849,32.630603,37.462899,34.953369,41.326268,42.086642,7.879840,,,,,,,a6d5338e19de7a937edaa465d7c80bb3, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,37.140923,31.598026,38.579790,39.220806,9.991178,12.374643,58.110881,54.821061,28.586953,34.681009,31.586886,38.575611,39.217846,6.777418,,,,,,,a6218425f5057a0d3d3759f891aff06f, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,4513.608238,44.388169,46.570218,46.998546,18.955951,26.260811,99.974980,99.966132,47.677632,43.955241,44.327463,46.540602,46.978679,0.029980,,,,,,,46ae0ebb083d4e4ab1e0de85910626df, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,2059.647429,41.459010,44.208300,45.227646,16.462590,23.126275,99.739648,98.580504,42.956680,41.848443,41.407115,44.179339,45.213483,0.068241,,,,,,,2b5d29ad7e0c6d8dae117c8662784a1e, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,915.563206,38.156572,41.369833,42.901808,13.621974,19.507360,93.529674,91.090842,37.763038,39.285295,38.111167,41.336758,42.881730,0.099240,,,,,,,c0524031ada9d930a648daba4769a925, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,410.580189,34.916854,38.359454,40.418459,11.093610,15.953101,79.704934,77.120748,32.885611,36.566509,34.877892,38.320985,40.393081,0.132752,,,,,,,4ebacfef2c63ab3b753401158b18d23f, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,182.804273,31.736361,35.463564,38.124053,8.953622,12.661770,58.693800,56.265777,28.496661,33.840998,31.701571,35.426380,38.090645,0.092867,,,,,,,6aa21418ae495dfd300ff80e6d2bb682, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,77.331899,28.563237,32.680073,35.888680,7.095129,9.465678,33.151330,31.257140,24.564972,31.082957,28.532397,32.626897,35.845368,0.041921,,,,,,,4670cbe9d04dbb443179575386c0b5e7, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,2455.340308,44.024521,49.678793,49.609860,17.755835,24.544809,96.207821,94.341275,45.349348,43.764526,43.980028,49.673518,49.599281,1.761966,,,,,,,67f8eda69855d954998e6df22de613b3, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,897.943385,42.438861,49.019455,48.585715,16.949006,23.127791,94.229512,91.999277,43.414314,42.756765,42.418176,49.016088,48.577531,2.130406,,,,,,,939502ddd4cc37dc65c34cf4ada07daf, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,400.312615,40.363883,47.931531,47.182173,15.873880,21.218622,90.096362,87.520789,40.453407,41.391031,40.336261,47.925795,47.177139,2.818323,,,,,,,79ec0a4e4487410ec51e287b9bcb560f, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,197.774769,37.526814,46.328177,45.019654,14.246020,18.618133,81.738006,78.820470,36.413120,39.420894,37.488420,46.319573,45.014727,2.985856,,,,,,,6e5a42b9cd59db09338962cc816d679b, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,94.545231,33.999705,44.114340,42.242862,11.899506,15.192609,65.651671,62.685894,31.658855,36.714043,33.958226,44.108104,42.240494,3.350801,,,,,,,3dca5545b6fcc78eb73fe4f08a97acb0, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,41.080615,30.276853,41.452638,39.598595,9.386797,11.277325,42.649157,40.010319,26.992266,33.593405,30.243373,41.451454,39.596038,3.162327,,,,,,,e7fd93d8a10669b52422975349f44ad3, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,2622.424615,43.579495,49.483841,49.754886,16.474119,23.633970,96.974526,95.425165,44.742409,43.664433,43.504140,49.475439,49.744079,1.435398,,,,,,,7014fd589cf63aa0c605cf3e7180f9e5, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,943.229538,41.921187,48.570715,48.801549,15.300548,21.843541,95.201641,93.262092,42.417790,42.544540,41.885522,48.563566,48.789886,1.688651,,,,,,,834aaac8fee8bd4cb5a0cacd4415e059, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,401.756308,39.806716,47.097710,47.276849,13.819531,19.422335,91.323051,88.975830,39.151591,40.966851,39.776491,47.082737,47.259726,1.757516,,,,,,,6390680a9cd919e0f6617a8c3ea01c47, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,184.201846,37.205457,45.216016,45.102278,12.181629,16.684672,83.845153,81.048255,35.450483,38.924606,37.169616,45.202939,45.079439,1.848129,,,,,,,01b8175d6a147c4cb192ccd03bd4f56d, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,84.409846,34.187881,42.624599,42.323132,10.522005,13.961806,70.076538,67.022265,31.481648,36.333822,34.145424,42.596944,42.291020,2.255364,,,,,,,f8b5a64272145ce51ff5f9e59652a3ce, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,39.670154,31.060149,39.946572,39.247456,9.039472,11.434920,52.651318,49.126997,27.609873,33.701985,31.017564,39.935258,39.221312,2.402816,,,,,,,9bc84d6b47ede87a84e77bddad7584d1, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,8450.305846,42.026884,49.451835,51.023690,16.600635,23.698611,99.978337,99.973995,44.393082,44.892774,41.866523,49.410554,50.985456,0.197379,,,,,,,d98f74c5020f158ab13f7c0a7d4a088f, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,3957.212308,38.337550,47.847523,49.365976,13.578059,19.599660,99.975338,99.967147,38.806701,41.950056,38.147495,47.806837,49.330487,0.218333,,,,,,,6f80b8a8aa3db9bc11cf1056b12956a1, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,1574.320615,34.617584,46.258965,47.858587,10.668351,15.334802,94.826027,93.002265,33.168230,38.849530,34.414404,46.213306,47.826621,0.329410,,,,,,,299462c2af0d14ca32ce89c2123e0317, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,553.118769,31.395101,44.500876,46.513952,8.509185,11.626331,80.773823,78.504872,28.696586,35.914233,31.221846,44.445613,46.483484,0.572880,,,,,,,7726223562dcfeaf82eaf437b8e25774, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,180.075692,28.796343,42.976090,45.196879,7.200321,8.796934,66.384233,64.103975,25.588760,33.105848,28.677468,42.942433,45.173884,1.525582,,,,,,,c4953ca9c6ceb32f932c35896f9d85a7, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,58.766769,26.488898,41.181472,43.207720,6.440797,6.752247,55.266249,52.954785,23.241322,30.903304,26.414117,41.133938,43.188381,1.532126,,,,,,,8eb6974eca24cd33f69b8b737a91edf9, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,110,908.115385,42.395837,43.877336,46.103326,20.980429,28.189982,99.976792,99.970689,49.593620,43.110467,42.218460,43.713092,46.002722,0.015596,,,,,,,53914b1e28025eee81adbef8d46d6f12, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,135,397.441538,38.977841,40.926663,43.706650,18.415143,25.298112,99.972263,99.760078,44.919165,40.511983,38.801737,40.793213,43.624576,0.052367,,,,,,,1702d72e619a53468e5adae0cdb4354d, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,160,170.783077,35.364214,37.924507,41.478734,15.442974,21.797804,97.163385,95.264016,39.340392,37.793444,35.204077,37.815264,41.416749,0.108931,,,,,,,e88d841a1070c039bdd755273edf4edb, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,185,75.780000,31.708775,35.760421,39.569619,12.448116,18.308954,87.182067,84.947408,33.938756,35.279960,31.570512,35.683630,39.520925,0.140293,,,,,,,6bbe821411107b325ef75b6e4e80244c, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,210,32.726154,27.978740,33.960841,37.983330,9.476728,14.440195,70.615637,68.675614,28.686953,32.562579,27.869016,33.889511,37.926376,0.182245,,,,,,,d7cb63ab2d4f6949c4d7cbd0d5b014a5, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,235,12.826154,24.259752,32.265336,35.934281,6.786128,10.392126,45.640241,44.142899,23.142772,29.416628,24.178866,32.208766,35.886135,0.303353,,,,,,,eb11b03d5c3d92c780c9aee420d5928d, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,110,6322.453546,39.237529,44.242094,49.165124,13.910920,20.650977,99.972582,99.933106,42.707157,39.970485,38.966056,44.142953,49.105663,0.258168,,,,,,,778e6440881197ac12d7d206b55bcc3f, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,135,3094.065319,34.525098,41.950927,47.521337,10.576785,16.583314,94.849759,93.153773,37.003328,36.767803,34.162521,41.859535,47.447903,0.258248,,,,,,,0d27768965061e42c3807c27c51206f5, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,160,1104.835472,30.198721,39.803820,46.029651,7.648276,12.791727,73.068334,71.406762,31.502885,33.739042,29.871308,39.723461,45.952138,0.239572,,,,,,,497431b788f48a4269c1af9127c3ff5b, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,185,300.384539,27.154435,38.319429,44.681819,5.678767,9.595373,42.839846,41.715271,26.832375,31.365036,26.951133,38.254681,44.494511,0.311709,,,,,,,cb3fb603f9b71efbf6f2a3f60ff7f4e2, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,210,78.318604,25.343071,37.001477,43.077390,4.759201,7.296512,18.268757,17.756058,23.574155,29.497206,25.239657,36.935827,42.784668,0.215485,,,,,,,ef29ebe5d0dffc0d6acfc861279a0378, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,235,22.467379,23.852095,35.653676,40.677026,4.283190,5.554605,6.210682,6.135180,21.251925,27.731266,23.773390,35.569226,40.367193,0.261199,,,,,,,657080dd4b2930ac428ee285549d82ee, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,110,549.242757,41.952521,48.934723,49.922759,20.419523,27.770632,95.609486,94.171267,50.039471,43.254239,41.874359,48.931536,49.920800,1.149903,,,,,,,eb0e219df071bd30cfb20e6edc55f034, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,135,265.444094,39.087973,47.211907,48.656747,17.983695,25.383820,93.936692,92.290971,46.760022,41.295778,39.052821,47.211119,48.656474,1.248380,,,,,,,20ad11660afbc56b4142c74fd99f7f09, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,160,140.634135,35.585653,45.524997,47.064786,14.725670,21.965087,90.273887,88.347691,42.000082,38.805911,35.568084,45.524899,47.064378,1.108378,,,,,,,e767864ccfb8f182daf4432542bcc8b8, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,185,76.433720,31.697095,43.525877,45.464376,11.261327,17.974677,82.755332,80.726212,36.436126,35.774159,31.693441,43.525278,45.464225,1.188469,,,,,,,d19e5d11b6281222991f62bc003328b9, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,210,31.834627,27.178358,41.419475,43.186625,8.283708,14.008885,65.225498,63.260623,30.335230,32.282280,27.177971,41.418668,43.185989,0.995691,,,,,,,17274a83cfc2704e83dc80ad38a6e9f2, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,235,11.580420,23.551158,39.753844,41.892308,5.970873,10.604793,38.466856,36.976786,24.544394,29.241324,23.551104,39.732082,41.882490,0.710330,,,,,,,68b80d14814bbf0afd7716ae3c80f21b, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,110,257.266426,46.742093,50.243595,51.911095,19.783929,26.680733,97.935032,96.597403,48.660842,45.783556,46.613814,50.199245,51.843669,0.018491,,,,,,,12d33592dbeab4a706116bbbec62b7d3, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,135,122.670560,44.404052,48.379713,50.387382,18.428060,24.380835,96.083334,94.171752,45.070293,44.164798,44.220167,48.319126,50.276065,0.044827,,,,,,,c42ea10a137620935b8f99e4ef3f5d09, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,160,59.528779,41.481763,45.790887,48.156360,16.904736,21.639268,91.189083,88.399165,40.895566,41.928764,41.268480,45.728424,48.027286,0.093944,,,,,,,f1aab9bc03f8fb03112dd67b53cb5339, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,185,29.831707,38.315066,43.057817,45.576385,15.125560,18.613327,80.114155,77.048692,36.576750,39.364318,38.092800,42.994018,45.416461,0.113209,,,,,,,2672e5b709dea8c595a4d99b16ca8d56, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,210,16.049182,35.131448,40.126428,42.909511,13.330970,15.481821,63.516543,60.655391,32.411254,36.529337,34.902547,40.081794,42.744683,0.111495,,,,,,,fb99172442312fe9ff78178535c284d0, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,235,8.878506,31.375536,37.603481,40.371819,11.200870,12.041328,40.924432,38.187989,27.960763,33.162382,31.168212,37.557657,40.156037,0.156700,,,,,,,67109d4439946f282b7e5b5bef3c24cd, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,110,1272.577269,40.555686,46.548051,45.899039,15.757996,24.900974,99.796213,98.447627,49.001601,40.869889,40.490045,46.534069,45.887686,0.000110,,,,,,,9b15f3e937a964c573db341842bec8dc, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,135,529.021747,38.338422,44.550494,44.108040,14.139890,22.685558,98.219883,96.355697,45.265026,39.048385,38.311668,44.541564,44.103732,0.004605,,,,,,,3ba0a42dfbbcd3fd4b96d6fb9d30bec6, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,160,240.062707,35.705251,42.251623,41.767717,12.223858,20.077475,94.515423,92.250205,40.523158,36.887814,35.691022,42.241565,41.763885,0.034135,,,,,,,f462a6bdd0c2de766420d93495438224, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,185,109.220011,32.172929,40.015488,39.437634,9.598359,16.562220,85.054671,82.213979,34.756261,34.230161,32.162456,40.004998,39.434154,0.040344,,,,,,,d3b8c3b07fbe64113ee4319b1cb05466, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,210,45.384769,28.487319,37.891265,37.447884,6.767209,12.389368,64.819986,62.065940,28.794009,31.267459,28.480859,37.885513,37.443790,0.049006,,,,,,,491203550a56a01a1a669aeb8f82d4f1, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,235,16.864366,25.240902,36.005252,35.624396,4.531860,8.392866,34.329874,32.691577,23.658461,28.580722,25.235119,35.997939,35.622116,0.060426,,,,,,,e64aedb95320026a8a444d9f7478dc0d, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,110,854.306309,41.907481,48.174545,48.043884,15.919749,24.317880,96.876536,95.024906,48.705644,42.478458,41.825333,48.152186,48.020144,0.000000,,,,,,,e0c790589d84b2a5fe754cf6a85097cc, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,135,401.257204,38.845385,46.371575,46.089172,13.140789,21.151468,94.374245,92.035531,43.940485,40.189064,38.775911,46.351770,46.055569,0.000001,,,,,,,423dc3e1c6e54fc807eb2d5836f663fe, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,160,165.189272,35.160864,44.434632,43.886069,9.366099,16.356911,87.658763,85.114055,37.675829,37.172124,35.101215,44.411562,43.843203,0.000305,,,,,,,d90c78375f5b68293b24a63a071deef7, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,185,65.096749,32.050457,42.576307,41.351420,6.772423,11.956641,73.884066,71.406941,32.036147,34.608408,31.997760,42.561409,41.324474,0.029476,,,,,,,093ed68772d02cdd18a5222de96f5edd, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,210,26.502728,29.560916,40.693812,38.917909,5.747702,9.389372,53.327033,51.607741,28.245402,32.701780,29.512952,40.675941,38.905731,0.958087,,,,,,,c15a7429058451c24751e456e9448811, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,235,10.831630,27.140541,38.884115,36.869347,5.166347,8.192368,34.693395,33.569890,24.935017,31.079012,27.096195,38.878680,36.862857,0.981788,,,,,,,932ce707a238b8c466010f7c02cbe38f, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,110,622.781538,44.418390,47.563624,48.712367,20.567545,29.221362,97.104163,95.860385,48.683788,43.523131,44.361130,47.549304,48.695297,1.857044,,,,,,,625b2da62aa4a5ddff7bc0df1b8ccc3e, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,135,330.313846,41.221524,45.373260,46.355439,18.389654,26.530843,95.567432,94.058061,45.149313,41.332272,41.162876,45.362545,46.337163,2.029630,,,,,,,392f9ee6cb4935416b43965d219368fb, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,160,169.366154,37.373826,42.811851,43.589284,15.469723,22.879118,91.811673,89.874984,39.984786,38.586977,37.326316,42.802944,43.577842,1.853386,,,,,,,5fff3999bb730ac830f288c99d4c2c72, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,185,84.498462,33.346200,40.091646,40.614805,12.191385,18.804787,84.109426,81.720522,34.401561,35.504250,33.316916,40.083176,40.601998,1.972027,,,,,,,ebe6115ca6d6b5f3a301396b173391a4, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,210,37.916308,29.239979,36.467494,37.381194,8.866720,14.364651,69.019638,66.236425,28.722868,31.978429,29.225957,36.464285,37.372942,1.931837,,,,,,,7b200c110cfd5de685e7c53bcdf53f21, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,235,16.711385,25.599002,34.392270,34.907701,6.188940,10.465797,46.967602,44.421215,23.767257,28.909382,25.590522,34.390596,34.903917,1.674532,,,,,,,036bf8741dcf273005d1ab8eee3a8f20, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,110,4355.393846,38.501113,41.608291,43.775434,16.886905,25.339452,99.320757,98.287482,46.545673,38.978735,38.203016,41.459103,43.689413,0.573435,,,,,,,e93d2999d99ec0101aa27904c031a33d, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,135,1903.476923,33.937662,38.390905,41.247341,13.141801,21.179796,95.843839,93.852544,40.782815,35.404262,33.666855,38.295571,41.171068,0.952075,,,,,,,aca1b15b03ac596ea45174a1291cd539, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,160,760.132308,29.855881,35.643235,39.346961,9.446681,16.703004,86.219210,83.928577,34.424635,32.161717,29.639757,35.564740,39.283044,1.370038,,,,,,,706cbc287354cbdd9cf02e91a91c239a, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,185,280.735385,26.525020,33.856218,37.916704,6.462738,12.615811,69.200770,67.025587,28.870369,29.417145,26.385943,33.786726,37.869335,1.316949,,,,,,,35108d5bba3d0add194b7b17748f6146, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,210,76.821538,23.699571,32.232932,36.790780,4.192853,8.922921,43.196074,41.714915,24.093189,26.920954,23.598423,32.179780,36.762762,1.623560,,,,,,,ecb6293cecee3d972d0b1ad3960b3d7e, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,235,19.350769,21.738423,30.705152,35.474243,2.910210,6.087134,19.470356,18.877548,20.446888,25.034555,21.668130,30.659126,35.434125,1.910295,,,,,,,71e3a19be250f80f6002b2d6db640585, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,110,2134.555906,40.691109,49.774613,47.508455,17.199084,24.187589,96.099119,94.302908,47.119030,42.213652,40.550262,49.734822,47.462689,0.097083,,,,,,,be012d7d19f87f453d4a5f0779d8d247, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,135,873.826481,36.896302,47.749010,45.133003,13.822766,20.306784,91.657192,89.508497,41.459440,39.342293,36.735944,47.720792,45.101970,0.149029,,,,,,,14335483f5844ceb1c6e257bd9933660, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,160,323.491893,33.546230,45.528605,42.700817,10.592851,16.444510,83.069885,80.654773,36.121589,36.544960,33.424631,45.497594,42.674750,0.178817,,,,,,,055676ffdc31724d1a42d0cab12f5238, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,185,117.626374,30.652181,43.302063,40.347431,8.227432,13.138981,69.083988,66.432352,31.579473,34.027260,30.558331,43.276691,40.328811,0.196130,,,,,,,bac02877edecdd56241164954280b73d, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,210,42.773227,28.017550,41.231361,37.985594,6.316828,10.372055,49.320578,47.137580,27.843404,31.609419,27.953189,41.207404,37.974304,0.224679,,,,,,,46d9dc88691275a2713796e4714a0f60, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,235,13.504034,25.371484,39.801093,35.434995,4.259197,7.641004,25.013196,23.693521,24.307974,28.981308,25.329148,39.792788,35.413095,0.204252,,,,,,,5ce96fad9f55ee947624b1ee84540aac, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,110,652.422654,41.817706,51.725095,51.441638,16.881954,24.061074,98.074235,96.679520,44.827502,44.453462,41.609171,51.582972,51.332782,0.358717,,,,,,,937f26488120ae40967e20bab9c7e443, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,135,286.974564,38.672761,49.925608,49.847381,14.065171,20.904155,95.787389,93.392367,41.017564,41.835667,38.508030,49.756732,49.749738,0.380042,,,,,,,e272e58a6c13142ef6d6854b5c74b4b0, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,160,119.385845,35.405885,47.917359,47.754294,11.033021,17.109492,89.122760,86.436220,36.353589,39.004803,35.276962,47.690556,47.609728,0.495306,,,,,,,0384c2bcd0ea9cd6c8a71276edd1283d, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,185,40.903097,32.505947,46.086786,45.515026,8.502873,13.174016,75.873841,73.193982,31.858524,36.430939,32.427317,45.782041,45.344363,0.541090,,,,,,,01dd4a41a668a5fd332a48c294a71b42, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,210,14.155076,30.370227,43.839283,43.133337,7.359908,10.963474,58.441846,55.497164,28.670197,34.314110,30.315867,43.622341,43.067741,0.814951,,,,,,,d1f59c1ad0c022d29330df43a9217e44, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,235,6.803658,28.305461,40.308909,40.535045,6.572467,9.334102,39.214232,36.206795,25.860936,32.020910,28.160697,40.143893,40.495962,0.607743,,,,,,,f8443a789c46afb3d28192cfbc8dd152, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,110,12190.664862,39.687032,45.966554,48.263767,12.981844,21.282840,99.332523,98.131778,44.143796,42.876473,39.553815,45.879738,48.193579,0.363756,,,,,,,23c2adf84bcc5940cd7a5a4bd230b5a5, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,135,5168.832000,37.081696,43.897094,46.564594,11.501214,18.831316,93.749624,91.661792,39.680546,40.727115,36.978239,43.827858,46.491871,0.556768,,,,,,,892bd0b445a53d0b298c1a3427a3bc6c, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,160,1858.124308,34.102187,42.125906,44.834741,9.787167,15.767051,79.906113,77.656288,34.465958,38.338101,33.980552,42.060813,44.754043,0.618954,,,,,,,0787e15daef33425a9cd40a066371279, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,185,596.347569,31.326589,40.482233,43.155084,7.985731,12.528625,59.238510,57.354388,29.859003,35.992628,31.220322,40.415769,43.075497,0.641823,,,,,,,8d078b112b98fe0152db7b5a2e17bde0, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,210,172.148677,29.025884,38.902871,41.471824,6.483558,9.637956,37.614065,36.256038,26.370292,33.814033,28.955740,38.853583,41.402845,0.650402,,,,,,,3ee99437b2bcdc4245a4fe4f8f90a9ed, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,235,44.445046,27.224376,37.221232,40.013585,5.467058,7.413573,19.658011,19.010559,23.899042,31.781207,27.186634,37.185514,39.964275,0.765741,,,,,,,1fd778ecfab592d6f28296df40843832, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,110,64938.088615,38.113321,45.095102,46.717728,14.038508,22.124171,99.975972,99.969768,44.232376,39.954769,37.943840,45.047205,46.694558,0.013346,,,,,,,dbfd56c25b97578d8f37b0e0fcd72a61, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,135,22199.963077,34.459209,43.011456,44.695871,11.183870,18.510139,97.913592,96.015085,38.424462,37.085704,34.315391,42.982347,44.682452,0.020785,,,,,,,70a3a03f16d6cb2eb2819b5efd9be8d6, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,160,6661.174154,31.545814,40.982086,42.808444,8.763040,15.144436,89.061223,86.765461,33.278084,34.641558,31.468257,40.957263,42.796730,0.039743,,,,,,,1c4c053910a8efeac28fb86e5c23cb31, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,185,1996.829538,29.179843,39.041210,40.897449,6.657878,12.020507,76.894611,74.400379,29.023140,32.400105,29.147359,39.018771,40.887741,0.086858,,,,,,,b70bcdb5f8abcb3ad6cd9c0c9b700f5b, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,210,594.435692,27.048551,36.963332,38.794657,4.950483,9.137806,60.736806,58.386046,25.413456,30.215451,27.034706,36.951743,38.786278,0.093705,,,,,,,ee1da99eec15572224ab4379c4f24548, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,235,168.129231,25.055017,34.650533,36.546901,3.844137,6.733920,43.935453,41.708101,22.382339,28.113344,25.046467,34.643857,36.538398,0.107449,,,,,,,4d0f82f35be15d4cc5ba42dc746f126e, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,110,4838.311385,48.562681,49.125920,49.444398,24.635518,32.295933,99.216058,98.194129,52.569666,51.238863,48.157252,48.544379,48.460176,2.226854,,,,,,,9c50d68238b3fa5ca677914c2d02b315, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,135,2651.958646,44.765800,45.392987,45.775573,22.316104,29.235625,98.141990,96.326209,48.452828,48.450795,44.185414,44.560951,44.428373,1.452884,,,,,,,fc641fc27e5931b8ef8381340e1590f8, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,160,1345.770831,40.673615,41.718038,42.129392,19.318027,25.419874,94.792759,92.092593,43.062141,45.534615,39.977751,40.578360,40.515911,1.237416,,,,,,,b41e03fa58572926f63b42088dbbd20f, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,185,660.409108,36.531353,38.282643,38.693853,15.908128,20.960068,86.530429,83.179984,37.069864,42.216098,35.854567,37.068519,37.009085,1.321570,,,,,,,de32dbad77bfa390a3f8d0ed02db2b51, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,210,296.338708,32.443527,34.888555,35.187346,12.415084,16.052750,69.753709,66.168644,31.069612,38.520841,31.864963,33.880429,33.526162,1.340832,,,,,,,197e2f9511ed68f08774f826f2c5ae71, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,235,114.433477,28.572881,31.471711,31.586567,9.432245,11.301006,43.811371,40.882848,25.748218,34.352828,28.182155,30.720205,30.118022,1.077580,,,,,,,db7938ca3a39eba6132ea403d37e9030, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,110,7736.785846,42.832736,49.117091,48.735811,17.198035,25.637630,99.291883,97.848331,48.076342,45.622008,42.754207,49.084151,48.700111,0.260120,,,,,,,c7dfa24d7f291e29e1eb66af20b3a54f, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,135,3228.769846,39.619960,46.647977,46.462554,14.403998,22.334364,96.905572,95.114711,43.613153,42.769990,39.562511,46.612928,46.418289,0.244880,,,,,,,e669e9d875d486903114f353e0825b60, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,160,1315.787077,36.236391,44.030034,43.803699,11.091793,18.206532,91.944491,89.717768,38.435717,39.691041,36.198245,43.991798,43.758122,0.333698,,,,,,,2d8ea90c754197d5fff14d647f612af7, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,185,534.996923,33.242050,41.214785,40.853110,8.373564,14.231030,81.405907,78.678921,33.475910,36.917181,33.208103,41.174372,40.811868,0.454939,,,,,,,49821012fd507e030c1a1a2755b76389, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,210,246.659077,30.936112,38.300607,37.732177,7.537610,12.237264,65.534764,62.308855,29.559083,34.701654,30.878029,38.246091,37.695154,0.330747,,,,,,,9e7fc7fb26cbb930462ff88f45ccef5c, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,235,106.728000,28.137625,35.013060,34.478584,6.662782,10.044255,45.948049,42.580577,25.436236,31.979848,28.057675,34.959704,34.454842,0.301915,,,,,,,0f87d6c738e8bc0f9506b5e8c3568d16, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,110,51780.428308,41.297577,45.630442,45.631026,16.532024,23.926368,99.869309,99.645329,46.039253,42.875400,40.924778,45.422351,45.427903,0.235314,,,,,,,1860fd29cbb172ad48abd7bd95c0aa37, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,135,22650.557538,36.466180,43.658516,43.487660,12.305645,19.283941,99.118890,98.340552,39.831737,39.535174,36.058506,43.496763,43.335461,0.215464,,,,,,,70c5a7ee1dc77e2317e60a76554ae937, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,160,7678.360615,32.658619,41.634826,41.218872,9.082925,15.168779,91.081691,88.689947,34.226146,36.293626,32.337974,41.509745,41.097650,0.239889,,,,,,,6f94f496e48ffa55b4815079311d7774, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,185,2597.172923,29.898132,39.510428,38.838329,6.886609,11.652510,72.932169,70.586706,29.798068,33.538064,29.678237,39.406173,38.738051,0.234436,,,,,,,0da9c0d59f3e9886aa26c0f1c1478b1a, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,210,723.182769,27.529049,37.265141,36.680117,5.316979,8.482107,50.934094,49.160784,26.109746,31.032559,27.352199,37.185242,36.601470,0.251472,,,,,,,49eb5e366c2675051ab7978529b2bd5b, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,235,216.428308,25.670175,35.049467,34.558335,4.427019,6.034082,35.299084,34.112752,23.289175,28.760837,25.540163,35.001016,34.511533,0.343266,,,,,,,ba9761cfe0e56cba08f46526d88e7165, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,49414.840615,39.630480,45.795398,46.489640,15.358495,22.124747,99.728208,99.611072,43.803526,40.892330,39.111481,45.444890,46.171763,0.118140,,,,,,,fd93b0e831c9c648f35aa331ce1f2c6c, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,25431.044308,35.249054,43.805296,44.581262,11.804567,17.815172,97.567289,96.190349,38.125823,37.797101,34.603654,43.480970,44.305383,0.124210,,,,,,,4ed85c6df401cbacf075562dface6887, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,10505.970462,30.889708,41.963784,42.771467,8.668712,13.607198,83.820418,81.743107,32.508297,34.644314,30.110084,41.664382,42.537567,0.186242,,,,,,,dbb44bddc06e810bcfdf9ac95332cd20, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,2859.601846,27.214641,40.187024,40.977432,6.328875,10.179574,61.695873,59.816341,27.832232,31.805658,26.422755,39.881359,40.749923,0.357296,,,,,,,513125a5dafbf85ea72249ec37c98bc5, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,644.610462,25.121074,38.492273,39.130260,4.987682,7.741958,40.548866,39.172851,24.572193,29.748574,24.446095,38.215996,38.921164,0.632707,,,,,,,5e16e07ca7137d461d68efa553599095, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,133.855385,23.634654,36.711113,37.168820,4.200148,5.905390,24.362114,23.343623,22.057629,28.021809,23.089017,36.504619,37.004145,0.775341,,,,,,,a4e22346e58645d55eda5724d9d1c554, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,5883.835569,42.115869,46.529651,46.377035,13.260205,19.892357,98.759330,97.851421,42.708436,45.113758,41.809023,46.406240,46.053935,0.236518,,,,,,,24d6b28f9cd881eee4c954ecee70db61, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,2430.720000,40.587260,44.524810,44.161374,12.335180,17.783647,90.341039,88.614846,39.373904,43.551783,40.242749,44.365575,43.780558,0.299602,,,,,,,7b2751c38eee7c4ad1fa9848e16e9146, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1034.596431,38.733350,42.048691,41.578040,11.626788,15.495065,71.157246,69.469623,35.979172,41.647459,38.345382,41.856084,41.163503,0.312325,,,,,,,4d8019fd17f84cbd9d8c93e8fb5c35ed, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,441.664985,36.499214,39.438604,38.895041,11.049431,13.231949,45.435459,44.184090,32.827427,39.375478,36.102242,39.251478,38.515351,0.343325,,,,,,,e29aa1f7ac979cf28ae144ad3b3893c6, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,188.685785,34.006389,36.839515,36.155204,10.574868,11.166410,24.634856,23.963886,29.926189,36.778789,33.659307,36.680473,35.836345,0.376390,,,,,,,66a9f21fb8f9ea0c1736909d5060c4c7, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,80.369723,31.280954,34.159334,33.417542,10.125985,9.294616,14.047337,13.841266,27.091361,33.926416,31.002004,34.016171,33.140213,0.421757,,,,,,,d636380c4d7e751e9792dd97bf605baf, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,11261.658092,43.948056,46.773722,44.684264,17.742716,23.008385,94.909412,93.070451,44.986571,45.485509,43.697761,46.311737,44.172097,0.017322,,,,,,,568aae42030c7811a94a852f0754b57c, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,5387.683938,40.359309,45.544967,42.963520,14.611333,19.125781,87.422127,84.927941,40.178887,43.342328,39.927817,44.700009,41.898716,0.018313,,,,,,,e27b49153786c7c361133d9290b0bb12, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,2179.374277,36.555314,44.029091,41.077061,11.330571,14.883037,69.297917,66.860448,35.114745,40.759186,35.948076,42.557863,39.651298,0.017921,,,,,,,7a9681f0befd8c74ce8708ec5ecd8eeb, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,714.152862,33.278273,42.364702,39.183317,8.701761,11.098475,44.250724,42.609451,30.786373,38.215065,32.504687,40.039913,37.630186,0.013822,,,,,,,798683ca4e5b695f8f72409a108253a2, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,177.830400,30.894916,40.845905,37.555908,7.180074,8.344444,20.191815,19.629160,27.727294,36.088266,29.940230,37.754975,35.989407,0.011808,,,,,,,d4133e5f45de2ed2e6e72148e21bd238, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,36.652800,29.409519,39.437728,36.138408,6.664606,6.833731,5.406943,5.350325,25.937241,34.470186,28.262365,35.995937,34.663350,0.016049,,,,,,,295cae9757489c59f1860b771c4d55d2, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,110,8242.515692,45.364251,51.096874,52.149749,19.814015,27.144487,97.394513,96.492609,50.586137,46.544423,45.151201,50.982546,52.109210,0.397571,,,,,,,3659d6e7fcef78f73410a322b9d6a2b6, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,135,3828.443077,41.698321,48.331346,49.501353,16.954075,23.597443,95.963504,94.521594,45.572078,44.078265,41.540033,48.273098,49.475581,0.541750,,,,,,,45da360004923e2ee828e5d7020efeaf, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,160,1598.832000,37.947043,45.390327,46.581843,13.977257,19.777968,91.649507,89.615486,40.278107,41.264315,37.863521,45.362628,46.562391,0.682305,,,,,,,1c9ea9fadd882787475c09942eebd31c, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,185,630.568615,34.480561,42.408773,43.473870,11.287068,16.082126,81.985465,79.451510,35.248699,38.282765,34.447995,42.397477,43.467174,0.987836,,,,,,,4ea1193b205246908d2d102dfe765a11, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,210,241.702154,31.286953,39.314024,40.363347,8.986406,12.683751,65.628216,63.012717,30.683427,35.292242,31.274259,39.308476,40.359194,1.242800,,,,,,,4bc52075444cda08d7bab1fc61872021, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,235,92.780308,28.286711,36.398276,37.165840,7.226488,9.645239,45.059144,42.760389,26.558667,32.390852,28.278282,36.393539,37.157841,1.289835,,,,,,,37d4a7fd6bb8db3a8615484113d4e194, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,110,25312.371692,41.321983,48.860988,48.231564,13.728697,19.731087,97.220940,95.476799,42.885100,42.404182,40.814301,48.673353,48.073036,0.236944,,,,,,,4cd372eda15a445dfc1c933328c88724, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,135,8322.498462,38.281066,47.429936,46.335576,11.203260,16.256464,90.100486,88.029019,38.418813,40.148167,37.764944,47.287740,46.212166,0.431217,,,,,,,75bed5b32a64e769342441bf2ca902b5, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,160,2400.166154,35.790482,45.981455,44.398705,9.328089,13.225647,77.110724,75.109200,34.639290,38.079599,35.410515,45.877037,44.302108,0.834166,,,,,,,bb7197604960cbdf2273930d53800893, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,185,681.888000,33.795883,44.499561,42.597185,8.128477,10.782882,61.070007,59.272677,31.716177,36.312754,33.574967,44.408320,42.519817,1.442759,,,,,,,7650a060ff7133022ce71806f48ed328, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,210,204.590769,32.109276,42.978661,40.964405,7.507226,9.040102,46.530447,44.939350,29.543272,34.839979,32.001762,42.914086,40.879571,2.427101,,,,,,,b50a1a7da26872513d816d2fc7c3b741, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,235,68.599385,30.289966,41.322889,39.024239,7.114707,7.848750,32.678274,31.594787,27.545866,33.368999,30.243021,41.262550,38.925993,3.293186,,,,,,,adde245fe93e9033c0e672c0d06dea23, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,110,2209.284923,51.808032,54.769871,54.425255,25.811100,31.955641,96.697010,95.759909,53.454576,53.564161,51.770252,54.740350,54.393593,0.123778,,,,,,,53a160c60e78e3eadca3dee17e777ea0, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,135,1292.141538,47.823512,51.029307,50.675612,22.837907,28.078114,95.410824,94.085946,48.212561,49.856753,47.783004,51.006182,50.653560,0.101102,,,,,,,bec258a5bc93d1c9577b220de8e9463b, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,160,728.440615,43.331858,47.118818,46.682827,19.505012,23.955646,92.120167,90.261753,42.928244,45.402153,43.298002,47.093807,46.664121,0.173248,,,,,,,47c0a00544e1caf9b7a428e8c411dfac, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,185,399.998769,38.784811,43.364614,42.958648,16.162489,19.893321,84.540899,82.016045,37.900962,41.494889,38.762937,43.344998,42.943167,0.409672,,,,,,,f1e048eb522f496e7670697b9471f630, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,210,215.412923,34.253244,39.849527,39.328766,13.096881,16.104097,70.789785,67.692833,33.006729,37.371634,34.238746,39.835313,39.314416,0.502119,,,,,,,c17df43f1419167e897be3f1bd205134, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,235,100.929231,29.777384,36.700576,35.912775,10.182770,12.300616,51.098811,47.290115,27.987148,33.443605,29.767542,36.691081,35.900508,0.648535,,,,,,,38cdaa19bccfa82578a2593c01c6182c, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,386.942769,57.783934,54.720250,55.732479,39.967659,46.074956,97.400819,96.814762,61.055834,57.892471,57.688573,54.672587,55.692194,0.032504,,,,,,,2427eff1628215f0d69ce4ee2776c4c1, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,263.438769,52.190988,51.189303,51.766997,34.365222,40.286901,96.981448,96.066100,57.362311,54.017041,52.129017,51.146778,51.734721,0.114469,,,,,,,75ab0a43654b772df1894eb43cc05abc, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,177.092308,46.399847,47.683782,47.764020,28.255711,33.897301,96.028815,94.514391,51.904333,50.144258,46.348048,47.636553,47.721297,0.415249,,,,,,,08225e0126eb2430ad7a961c9b5467c6, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,122.407385,40.777152,44.532771,43.912920,22.776501,27.466195,93.154371,90.558983,44.650624,45.599258,40.729008,44.482657,43.864335,1.468062,,,,,,,a803cbf52fdd4c58a9a48b4e60435754, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,84.132923,35.385068,40.774776,39.301944,17.383804,20.937929,84.510510,81.177685,36.704222,40.055106,35.359017,40.742530,39.275262,5.109420,,,,,,,95dd6082274dbef1733c4a959701a0e0, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,48.865846,29.806560,36.662318,34.542188,11.735996,13.790259,63.182292,60.125650,28.805660,35.391632,29.768591,36.637797,34.517934,6.159941,,,,,,,58cff39452922d6c4a6cd5c91ece88ad, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,110,4283.040000,48.997738,52.351839,53.054795,23.115827,30.311940,97.090940,96.349404,52.993266,49.739288,48.539158,51.969613,52.788075,0.488984,,,,,,,3ed9c8cf8b84c3d032030ae5cdde50c9, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,135,2308.925538,44.834078,48.413351,49.446049,19.908661,26.397672,96.206468,95.074236,47.842390,46.376955,44.360211,48.154555,49.289451,0.440468,,,,,,,14c8a11b8a3d3f8b86bd2d9f0a3b9cfa, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,160,1139.357538,40.414534,44.675417,46.284092,16.609058,22.448757,93.786661,92.184440,42.675727,42.871317,40.006412,44.520679,46.183005,0.538050,,,,,,,5994468fdbc8b4f2a61c55beebedac8f, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,185,570.468923,36.248057,41.786659,43.371290,14.193713,19.314195,88.605369,86.277032,37.994390,39.701215,36.042321,41.672508,43.307011,0.925197,,,,,,,4b39eb9c2217c488be1421ef7475ffc5, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,210,282.561231,32.119995,38.913331,40.430127,12.101438,16.520764,78.433306,75.401280,33.099256,36.401529,32.063090,38.858539,40.402172,0.942818,,,,,,,24bca7a481e29fb2039ebf192e94fe69, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,235,135.504000,27.892571,35.579461,37.109815,9.740581,13.433306,60.807667,57.248732,27.664708,32.640754,27.862384,35.555553,37.076357,0.654137,,,,,,,831e1e012e7149daa0fb46c72919467e, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,110,91.814769,60.805843,64.286253,66.500026,49.228218,56.399581,99.323394,99.256040,67.705434,75.150069,60.792944,62.626968,65.548235,0.002297,,,,,,,42f0c842e4fdfab63ff5a6ed1297fe80, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,135,69.714462,54.566432,60.182645,62.701454,42.901429,49.852639,99.303755,99.172190,63.329120,68.543004,54.551133,58.780840,61.625577,0.004676,,,,,,,62a7e00259dff213dee194bd6b6fa986, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,160,52.556308,48.274097,57.522682,60.082086,36.614247,43.163737,99.187509,98.945002,57.620803,62.163952,48.259975,56.468589,59.199017,0.005529,,,,,,,5bf9d369f1f7a3908fa1df1ec6462f13, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,185,40.281231,42.515086,54.701428,57.197792,30.491335,36.313063,98.816492,98.417682,51.188273,56.690127,42.503181,53.936220,56.549541,0.003565,,,,,,,5abcbbbb8b0da0ea680da9f12b6e07a5, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,210,29.390769,37.212469,50.689497,51.607056,24.920130,29.373950,97.881793,97.235377,42.594006,46.352478,37.187515,50.188155,51.468834,0.004093,,,,,,,40fd41424a015373c73e7b34a1dfc01d, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,235,21.480000,32.354160,45.481389,48.189882,19.853489,22.729149,94.376522,92.249299,34.521954,41.477029,32.333807,44.565996,47.356939,0.002064,,,,,,,ce8bfa3dec05b458ef87068914aa09dd, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,110,227.009538,54.884861,59.519872,58.725852,31.210096,38.544007,97.349198,96.710385,57.876096,64.771119,54.792268,59.409888,58.437982,0.127826,,,,,,,7aac8a5919ca09dca9ac01813ec410a2, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,135,128.011385,50.988617,56.628395,55.613419,28.984970,35.630289,96.957577,95.885595,54.239308,60.153275,50.947576,56.487750,55.227046,0.135700,,,,,,,2bc17dcc83249e98bcc14c953b7741e7, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,160,76.577538,46.342210,53.032699,52.265828,26.036170,31.781734,95.798198,94.178536,49.469117,55.187414,46.323862,52.905936,51.961196,0.122640,,,,,,,0c500538a41438bef2fb6591fb3bafa3, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,185,47.333538,41.187015,48.762561,48.152428,22.533045,27.356977,92.679685,90.241048,44.114686,49.287514,41.180399,48.704606,47.978399,0.094471,,,,,,,edfff3b8938f3f3d3b1ee769637aaa6c, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,210,29.427692,36.091252,44.286169,44.315419,18.339473,22.559849,84.682770,81.737071,37.909721,43.352629,36.087518,44.266591,44.197414,0.070786,,,,,,,4b9e5bbb1c7ce8e925130bf0ade23123, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,235,18.071077,30.680083,40.062194,39.791089,14.034719,16.823140,67.254453,63.221035,31.181048,37.742931,30.677222,40.056671,39.765927,0.078003,,,,,,,9b763bec2b5648ad232d2cf7623b50fa, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,781.427077,56.216171,57.453227,57.315959,38.234735,43.458204,98.343814,97.659657,59.470627,66.094634,55.763397,54.961856,55.531215,0.003942,,,,,,,84a27d60b2ddbd3907414216bdeb02c6, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,463.323692,51.937421,54.273460,54.050374,34.255956,39.067161,97.926332,96.858302,55.289910,61.436518,51.375947,51.367090,52.041029,0.009571,,,,,,,12965b5c7535b510e2cb632a3d308b48, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,265.715077,47.030230,50.366853,50.105853,29.661348,34.029121,96.525680,94.978613,50.183426,56.269206,46.293477,47.466039,48.294094,0.018527,,,,,,,0c8c91e671cadbd5052cf1534e7b4a38, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,154.918154,42.127663,47.289177,46.349252,25.058052,28.712495,93.156672,90.927859,44.223309,51.043911,41.207891,43.520389,44.374896,0.028692,,,,,,,95c05e390cd94acbd092fc6ca31bc82c, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,89.455385,37.185147,44.071574,43.071355,20.351244,23.027720,85.128243,81.989664,37.572971,46.482961,36.005891,39.519218,40.634777,0.011177,,,,,,,eebbdb36bc8aa3e1ef21f182ad217026, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,53.665846,32.609119,40.399173,39.984664,15.976901,17.566488,69.405315,65.293108,31.310777,41.183260,31.133127,35.335374,36.898717,0.026555,,,,,,,2ec9ad0dff2b1ee9fce038efbef268fc, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,1482.288000,54.174390,57.037550,57.067304,31.719542,37.937411,98.264863,97.806596,57.468615,64.401371,51.288961,52.170739,52.559368,0.001014,,,,,,,7bc442af224ecad42615234e5c4b4e7d, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,810.627692,49.915729,52.923649,53.026729,28.273378,33.777206,97.702885,96.966916,52.889292,59.995967,47.432829,48.431734,48.888534,0.001729,,,,,,,6ff65fa5648ab82d090eebc2ed42de6d, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,432.679385,45.337684,48.753374,49.009567,24.751438,29.488897,96.069036,94.849680,47.615052,54.984770,43.156244,44.467813,45.034718,0.004426,,,,,,,14e4baec25eb7d563256665a6f1e12c1, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,239.743385,40.937946,45.583125,45.885311,21.449661,25.238573,92.043868,90.353024,42.374995,50.744036,38.942435,41.136030,41.597046,0.016669,,,,,,,195feed6ff8acb6835aceb9ee8a4b7bd, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,128.121231,36.096507,43.295781,43.367441,17.964939,20.856243,83.079092,80.867028,36.610451,45.838491,34.325118,38.083754,38.364409,0.025490,,,,,,,c1ea3df54018b58fd015d23876a929bd, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,67.576615,31.213779,40.882956,40.618850,14.342991,16.246758,68.774064,65.752179,30.503312,40.788852,29.476975,35.295592,35.012256,0.020433,,,,,,,2c55de0381ea1657b32690d5d759b0f2, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,110,1000.187077,52.292879,56.255513,56.066159,35.556826,42.357674,97.400429,96.642940,58.366161,59.366384,52.150855,56.049486,55.830604,0.054957,,,,,,,396a20a2b7c1c81a5eefe96c7e161bc3, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,135,558.648000,47.873229,53.122609,52.778965,31.097439,37.765061,96.927553,95.757846,54.359790,54.852663,47.761930,52.921036,52.603051,0.051516,,,,,,,f816ffc0246ef4f1e3454d36411eb1ba, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,160,310.739077,43.262362,49.427510,49.536215,26.719494,32.773006,95.744631,94.044423,49.353612,50.061165,43.167734,49.232414,49.409159,0.061683,,,,,,,8a0ab2760f8fe3898ab9d0f868b67961, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,185,184.750154,38.596815,45.632293,45.846752,21.788863,27.154306,92.607073,90.259499,43.007389,45.045297,38.541185,45.494882,45.757209,0.053438,,,,,,,d3cb3e01ce42ec434d3c60c894bd8645, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,210,117.795692,33.915126,41.631219,42.761328,16.364116,21.262296,85.662478,82.466731,36.007865,39.897904,33.872440,41.542108,42.724618,0.050124,,,,,,,2a87014cac174cb6cd9895a86334c3b7, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,235,76.135385,29.035398,37.314860,38.206476,11.385410,15.258609,68.927455,65.198778,28.814201,34.766249,28.993808,37.262519,38.187743,0.067829,,,,,,,92ab280950b0d4645a6e49e5fe0d452e, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,110,470.808000,51.541881,54.292494,55.177137,22.903792,30.654686,98.656173,98.358897,50.379585,55.884583,51.537647,54.043482,55.042124,0.157485,,,,,,,c74d588c56821128e308da91b7273164, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,135,279.803077,48.974799,52.026214,53.114247,21.732854,28.869027,98.538157,98.018699,48.781195,53.201164,48.965827,51.580643,52.837735,0.918739,,,,,,,9c59eb5a469f2c62f218bbf672386b78, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,160,194.383385,45.487858,49.069237,50.434076,20.986145,27.583105,97.998426,97.136325,47.039550,50.059651,45.468799,48.634850,50.093608,0.890626,,,,,,,373173a6e07e7a6250c6d80663bccf9e, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,185,138.812308,40.870183,46.182191,47.292865,19.508303,25.175153,96.346467,95.019038,43.607951,46.308457,40.840478,45.847287,47.026452,0.876065,,,,,,,e7b84b63296aaa37414f1f582f0edc9a, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,210,100.907077,35.796458,42.579057,43.747695,17.408124,21.614118,91.558995,87.989421,38.396486,41.348203,35.722533,42.385489,43.553703,0.910449,,,,,,,4bc5a08afd010dd2d7472e057a4ccc75, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,235,70.039385,30.368971,38.610517,40.770223,14.411938,17.313643,73.794887,69.812642,31.600325,37.289454,30.280677,38.525708,40.659050,0.893587,,,,,,,d486a7886276bf9f176568dad726c08a, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,14649.074003,42.654256,45.950370,54.876488,13.468820,19.178678,88.900874,86.995239,42.679821,40.490980,42.610725,45.946435,54.875661,0.090451,,,,,,,024f8fd745b046da84ced9c1ac52dc19, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,3888.479520,41.829398,45.695296,54.434059,12.966108,17.913757,84.338748,82.225282,40.812522,40.030821,41.823352,45.694978,54.432585,0.127916,,,,,,,24b37f09b6e10fe78b242406feccd8d4, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,1424.127872,40.605630,45.332671,53.562064,12.316209,16.161397,75.934560,73.751330,38.455484,39.365353,40.598928,45.332063,53.559787,0.418647,,,,,,,d37accecaff17ddbcc381f72affa307d, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,529.032813,38.894327,44.813856,52.481604,11.497189,13.991018,61.369013,59.545925,35.829118,38.386377,38.886605,44.812899,52.479228,0.733081,,,,,,,470c777692c8f8bd51bbde388b13808c, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,188.289249,36.977865,44.009234,50.933059,10.745973,11.867125,42.633126,41.554309,33.406133,37.171315,36.971044,44.008948,50.929021,0.983190,,,,,,,739001a0deae807683597c25184f6aa7, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,235,65.579959,34.971404,42.989977,49.588066,10.184754,9.986421,25.708633,25.233592,31.229952,35.812676,34.963917,42.988954,49.582729,1.301218,,,,,,,c78e936cf3a8c93452d49d63bb8eb66f, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,25722.151385,48.096031,48.404520,56.706871,21.097162,23.013011,92.521416,90.410913,44.943454,47.081908,48.032192,48.367119,56.695843,1.177222,,,,,,,8c0ebbec04ffaff661202333c9c8365f, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,12122.665846,44.982317,47.170727,55.671337,18.568260,19.952987,84.817567,82.352484,41.345262,45.340668,44.914490,47.148860,55.664660,1.292730,,,,,,,bb37039f76165aeab973858e8fb35ff0, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,5168.200615,41.414851,45.780761,54.526513,15.753698,16.382217,69.271663,66.832506,37.327679,43.210771,41.326663,45.759449,54.521746,1.304899,,,,,,,9f95bfcdd90483159414d51213f45e36, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,1873.222154,37.911593,44.200725,53.026933,13.267822,12.839767,45.787480,44.159696,33.547363,40.844236,37.816017,44.180937,53.023682,1.436447,,,,,,,3783ca480e105f968c69ce5fe225c319, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,481.739077,35.015429,42.651238,50.887167,11.663849,10.001952,22.422243,21.733327,30.603673,38.565664,34.947507,42.636648,50.878646,1.808364,,,,,,,466e4a89d9d5e1286ec5ba7697fd1bed, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,235,100.386462,33.464767,41.411294,48.786591,11.107922,8.740554,9.613243,9.360756,29.142173,37.011670,33.448355,41.401255,48.779598,2.062637,,,,,,,1e436fe0fb4f36bf1be3ad7a821d6f9a, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,43741.783385,44.304857,45.195606,50.616166,15.731042,20.228795,88.265602,86.960505,43.067445,45.620298,44.139078,45.126222,50.474401,2.372730,,,,,,,71f60bf86d4d67a446b0dc636498f029, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,10851.943385,41.571556,44.068481,50.109335,13.329629,16.748154,77.932111,76.639889,39.037165,44.184697,41.417755,44.030724,49.971586,2.218284,,,,,,,8f4ac7987589abd906bec7c47e43c4ec, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,1260.649846,39.993524,43.503491,49.791234,12.237842,14.596525,66.490835,65.320843,36.758983,43.233631,39.857250,43.473816,49.643198,3.002733,,,,,,,ffa2503d8fd33eb30e1633d4783fabd5, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,223.942154,39.583564,43.132115,49.325690,12.078645,14.180458,61.572912,60.264246,36.219964,42.788626,39.457976,43.098286,49.177228,3.145677,,,,,,,9be44465bd59dc5b0e6572aad3a1b26b, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,71.073231,39.072165,42.536293,48.438017,11.952479,13.790930,54.803613,53.541263,35.586520,41.936549,38.929472,42.500551,48.320942,3.446462,,,,,,,336e82d31990d2fc93176e01ec1a3b76, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,235,33.249231,38.111434,41.648932,47.343184,11.770483,13.149615,43.196834,42.179864,34.490258,40.785301,37.942939,41.608842,47.204594,3.408171,,,,,,,154634cd9b3faa609ebcea0a467ad776, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,110,89729.734881,41.965706,45.933045,45.083782,14.318094,19.626928,98.629477,97.377357,42.182090,41.532106,41.872732,45.845034,45.010932,0.022631,,,,,,,986788fab6d720b0c88ecce4a9a8b4a5, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,135,36645.191117,39.637808,44.763505,44.012834,12.794010,16.831128,92.305074,90.218033,38.346825,39.935103,39.552486,44.708836,43.979318,0.079277,,,,,,,efcffb8d9e1f366786ffce14dadc87c3, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,160,15925.432106,37.133888,43.595557,43.273453,11.367228,14.722425,78.483621,76.136061,34.902095,38.277957,37.003308,43.548515,43.245851,0.593410,,,,,,,6a2f5872cd5f4e63471a89db15222cbb, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,185,6782.876201,34.328162,42.129735,42.334642,9.854505,12.314665,58.326003,56.074950,31.249338,36.381844,34.122145,42.079848,42.301622,0.842915,,,,,,,3d39e4dcb97e3e5b0563093619fc1f27, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,210,2553.284254,31.440542,40.618496,41.307073,8.510919,9.740460,34.816972,33.120802,27.770589,34.381946,31.161318,40.563947,41.266599,1.264690,,,,,,,aea138ef3ebb50cfbdc70bdfa51081c6, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,235,679.960040,28.740350,38.921963,40.092512,7.548535,7.380734,9.769626,9.048198,24.779548,32.270028,28.427054,38.851535,40.034909,1.213867,,,,,,,0f525a577b832a884453236201ca3672, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,1334.924308,44.985155,51.516579,52.181128,16.368491,24.176024,95.435792,93.708040,46.905719,46.559115,44.857827,51.431902,52.080648,0.046666,,,,,,,f7ebbdbbd5e7cbb817e84f286f28ef26, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,557.278523,43.807242,48.986864,49.431558,15.832183,22.481687,91.720699,89.614101,43.750825,44.928682,43.713117,48.891477,49.319135,0.055447,,,,,,,568a7daec964eaadcc65ddba956928b6, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,259.078892,41.928886,45.931935,46.202341,15.048726,20.069330,83.823455,81.401761,39.972361,42.641584,41.841459,45.837684,46.089894,0.083913,,,,,,,5031bdef51e495930976f1897dcabca9, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,123.788308,39.361834,42.787346,42.960610,13.977304,17.185858,70.298093,67.665013,36.108866,39.908694,39.260203,42.702538,42.867884,0.149199,,,,,,,f453ba27d0fba4b509b3650df55d04a1, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,57.605908,36.294465,39.930886,39.749218,12.669081,14.088762,50.776302,48.423021,32.350830,36.970537,36.184341,39.868005,39.677097,0.221387,,,,,,,4e331394f409a1bc9d23e563f9d17515, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,235,24.946708,33.020274,37.334749,36.566114,11.387142,11.175862,27.298607,25.871157,28.800898,33.983017,32.926533,37.286059,36.528303,0.381825,,,,,,,5aeda7c4c7f2b6a9e619afde12d4c32c, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,12544.414523,40.671689,46.142076,49.610708,14.802248,22.610978,97.079125,95.276528,45.114800,43.223387,40.509903,46.037554,49.526256,0.665500,,,,,,,5336db5c7ccdf7c93414866d418ecd87, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,4156.808862,37.074028,44.309233,48.030298,11.862284,18.794595,88.203416,86.064032,39.451942,40.600538,36.930237,44.214363,47.950898,0.648208,,,,,,,8583a943d764d42390714e3ae6b636c7, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,1354.558523,34.440474,42.665897,46.457521,9.877232,15.357347,72.364923,70.209530,34.398402,38.174528,34.338660,42.563905,46.371891,0.690481,,,,,,,51efbecc1afcb80408c2c59b28e677b1, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,413.182523,32.118512,41.207746,44.821087,8.171901,12.188168,50.736115,49.017531,30.331137,35.986204,32.031509,41.104733,44.740837,0.660005,,,,,,,1bb110f3fc5b9ca3b7ce5c2ddd3ce378, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,116.846769,30.103924,39.683336,43.218138,6.808901,9.470346,28.433801,27.383422,27.222644,33.878785,30.016423,39.608079,43.160547,0.619354,,,,,,,34e4fc1019dcd96541ef9fc71e6aedfd, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,235,30.176492,28.357339,37.954813,41.478429,5.864145,7.202852,11.025493,10.655190,24.863994,31.783469,28.272522,37.885984,41.415762,0.534563,,,,,,,ad2f5349541ca8762a1e7ab5ee1d8230, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,8453.001767,43.043776,51.219662,56.045543,15.305286,21.771781,92.600709,90.786354,45.108500,43.675524,42.996115,51.218238,56.043565,0.151410,,,,,,,f0a3cbfdbfe20acc0182fb27dda87401, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,3091.188196,40.666608,50.583996,55.215909,13.503214,19.341100,87.780393,85.730499,41.360577,42.344825,40.626252,50.582684,55.212480,0.198631,,,,,,,ac7d13b3800ea1d174a4c08d92d0c5af, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,1016.509644,38.163013,49.716664,54.110256,11.600402,16.492763,78.174076,76.051712,37.399275,40.740808,38.124684,49.714065,54.103568,0.392093,,,,,,,e4a0796e11b017f46965309c52ac84a0, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,317.542150,35.925184,48.530453,52.535855,10.019159,13.891327,63.160623,61.164049,34.075747,39.015712,35.901906,48.528620,52.532494,0.791183,,,,,,,57dfba53527afbe5f28d11914e899d38, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,95.229079,33.938791,47.183067,50.764358,8.837666,11.640495,43.710009,41.931217,31.240985,37.224343,33.926456,47.181754,50.742685,1.324301,,,,,,,dfc2c10504c1a290708dc3778d610b37, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,235,31.146699,32.081240,45.941052,47.871340,8.074587,9.764798,22.024160,20.859276,28.776736,35.475032,32.071675,45.939530,47.863287,1.525517,,,,,,,cf7c41ecf96a0eab70778fdd4e4401ba, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,1918.148313,45.965751,52.832364,59.441243,16.838229,22.913980,94.683818,93.103953,46.327859,45.742363,45.954390,52.831715,59.439267,0.940826,,,,,,,c722cbe97b1178f44b1a7365a3e46c14, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,659.418120,44.841688,52.244972,58.140212,16.191947,21.420924,92.139256,90.269028,44.169138,45.027681,44.834153,52.244082,58.137372,1.010119,,,,,,,963db73c5208ccd5e4e7a7dcac7095b2, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,255.909014,43.153637,51.245133,56.362590,15.294573,19.392003,86.819639,84.593136,41.414387,43.890215,43.143400,51.243053,56.355747,1.053849,,,,,,,ef83022ce28c3bf1753f3dadc27c8cdf, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,102.613694,41.099223,49.832912,54.243095,14.317336,17.137929,77.492811,74.915684,38.469638,42.352469,41.088084,49.829776,54.238493,1.089400,,,,,,,6879be7f58628fcc5e71143100ceb3cf, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,44.783524,38.732050,48.216303,52.011747,13.404318,14.851091,63.174713,60.477475,35.501763,40.476038,38.723092,48.213500,52.005909,1.251568,,,,,,,47b6d2890bfe2da28303f85623c5765d, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,235,20.763237,36.127092,47.108394,49.426124,12.532825,12.632696,47.040528,44.197974,32.548384,38.549190,36.115917,47.107328,49.133906,1.269745,,,,,,,bb82cb9b5d0a08366e1abfc1076f8c7b, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,3025.406031,45.729604,49.109021,51.835635,17.143590,21.958471,96.682271,95.365458,44.379974,46.892077,45.140867,48.946102,51.430032,0.192144,,,,,,,3e8ccd58ec9c02bdb65846fe4f50e23c, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,1342.565908,43.914485,47.358157,49.702604,16.267659,19.626552,87.139482,85.514617,41.331573,45.231344,43.325242,47.222172,49.302081,0.230721,,,,,,,6c9beb3ac379b74bac22c84dd2e492dd, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,574.526031,41.576021,45.016764,47.237766,15.470374,17.089072,68.545430,67.013691,38.138651,43.127435,41.005906,44.881921,46.867762,0.248687,,,,,,,a8b4d38181c9154487cbe1f570f8778a, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,240.639508,38.997434,42.504542,44.580887,14.808922,14.739184,44.205722,43.064502,35.143833,40.691888,38.482897,42.363665,44.272709,0.258107,,,,,,,f91d0dba0f0e1eda028acc4072ec3e26, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,103.101046,36.307657,39.853064,41.913270,14.240793,12.672710,26.696056,25.961973,32.335457,37.987300,35.900017,39.698574,41.664692,0.291262,,,,,,,d9cf9a406b98ade4c8f3c5907ee5b9c8, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,235,43.177846,33.398383,37.199901,39.199937,13.678736,10.770028,15.160559,14.767780,29.461234,35.058299,33.060699,37.015736,38.962172,0.352068,,,,,,,b178e63c0bfa6240fb8df7cc5d92e1a0, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,6477.354831,45.605221,53.335078,53.720251,18.473140,22.851062,92.444739,90.341049,45.649642,47.716296,45.271298,52.390647,52.298536,0.056763,,,,,,,578d8a93f1d6e6bffb1b99466f344293, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,2971.402338,41.968971,51.882157,52.073935,15.170143,18.877202,82.492341,80.164694,40.871275,45.109966,41.473754,50.401534,50.523927,0.061570,,,,,,,af7168acf81c48894c8985530b97867b, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,1070.416246,38.323752,50.069593,50.104233,11.981888,14.762963,62.556795,60.636000,36.085101,42.163031,37.669024,47.697483,48.448942,0.058286,,,,,,,aa38a785d8302fb5a875c191f8aae803, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,296.854154,35.483011,48.354333,48.134993,9.824861,11.480280,37.126903,36.081070,32.446828,39.606686,34.685254,45.040093,46.498474,0.059584,,,,,,,20ece4d75d933db7136ab5454781471c, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,64.386462,33.652955,46.756243,46.540314,8.882479,9.468566,15.042230,14.743947,30.227668,37.741676,32.687812,42.995875,44.937621,0.067654,,,,,,,dc9163389c11c3151e6dfd1bb7511bb7, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,235,13.850585,32.460759,44.508015,44.329229,8.668744,8.441493,3.264453,3.187332,28.927712,36.083143,31.439180,41.143415,43.012327,0.112754,,,,,,,f13162faf3dca5edb9a4cb30b49d937a, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,110,5237.348498,44.447477,50.600580,50.465850,17.001877,23.067815,94.308012,92.457555,46.084279,44.345704,44.404681,50.595612,50.459736,0.587152,,,,,,,c11a68de47103d2c3a2fa7cdef185b52, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,135,1832.598171,42.138142,49.984025,50.097196,15.062663,20.606489,91.081934,88.973512,42.938492,43.037703,42.119184,49.982612,50.095693,0.588354,,,,,,,201850d6ad6fbcbd89802e74590bf6fa, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,160,658.237762,39.454864,49.067992,49.535325,12.865793,17.909904,85.049566,82.580341,39.518098,41.282141,39.445350,49.066317,49.534691,0.570596,,,,,,,a55293cf7ca2cd2ef84d070909dbc3f4, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,185,237.808960,36.541197,47.865014,48.721775,10.477005,14.753358,73.321274,70.640110,35.412139,39.164265,36.536189,47.862639,48.720997,0.618784,,,,,,,3e456dd77b3ac9af8c503e66c1c0054c, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,210,82.366864,33.864757,46.307809,47.592288,8.631663,11.643661,51.488289,49.256880,31.500669,37.017759,33.861667,46.307106,47.591861,0.665962,,,,,,,161360c419a8a3a1fa750ac92ce9a265, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,235,30.405287,31.667864,44.112628,46.080991,7.614531,9.393217,26.604069,25.212421,28.482307,34.849824,31.664730,44.111385,46.068172,0.928325,,,,,,,5b3c470c092eb8680a5075b7dc39b671, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,14085.980000,42.909268,51.949400,51.256887,16.362047,21.392251,99.962054,99.938546,42.110098,44.865476,42.756006,51.694840,51.083599,0.031971,,,,,,,157710afcda22d5e44105740204c5f3f, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,6653.470769,38.997731,49.224413,48.341958,13.075773,16.639615,98.161788,96.805198,36.535278,41.090295,38.835860,48.923810,48.140974,0.184487,,,,,,,34acbd2aebe6a181474f63db4b472429, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,2359.555385,35.133991,47.168632,46.118018,10.151586,12.207011,81.952806,80.009137,31.565138,37.741694,34.948049,46.813942,45.920078,1.333499,,,,,,,48f4f141ebf5824978a7a1cd81e2f2a8, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,791.176923,32.541863,44.955885,43.830122,8.794929,10.062088,66.094562,64.261346,28.613342,35.510328,32.417364,44.523608,43.594872,2.894524,,,,,,,f808fc254da4293080fc5448bc812f78, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,319.155385,30.433133,42.661550,41.193018,8.013142,8.884905,52.613442,50.931310,26.360055,33.625881,30.341181,42.089041,40.960301,3.386706,,,,,,,877812806563d097ecce515fba7c5422, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,235,135.413846,27.914949,39.901746,38.308192,7.208415,7.509382,37.369117,36.193786,23.730434,31.357953,27.816014,39.192750,38.068716,3.385701,,,,,,,90e90ed83c23ff6b1ee3dbdab8b5f76d, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,110,10539.459925,42.845789,45.331165,46.878724,19.263636,25.692096,99.619069,98.993413,44.793106,43.851875,42.602857,44.980619,46.274999,0.309838,,,,,,,7101aa6074c3f4729e9a0685a9a40508, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,135,3807.754092,40.127540,42.899113,44.595326,17.054120,22.714951,98.016313,97.019683,40.672893,41.355104,39.858604,42.430142,43.704282,0.310383,,,,,,,37a0e198917ce497a80a83e851a76c85, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,160,1573.966956,37.778585,41.229242,43.111004,15.359289,20.313075,95.079678,93.844854,37.118163,39.539126,37.499180,40.857509,42.330020,0.318746,,,,,,,dfd5a978c6ee1682caa6f581c3819e88, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,185,751.198340,35.108146,39.545479,41.615685,13.455895,17.683761,89.794695,88.067662,33.351950,37.566129,34.786299,39.252324,40.952422,0.465260,,,,,,,e232df7da3f82e5ed3c4d583944cab5e, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,210,345.051871,31.755175,37.413087,39.503565,11.004043,14.381597,79.295828,76.422258,29.146732,35.007471,31.429155,37.168341,38.960251,0.526270,,,,,,,2ee0f6dc0c24727b663b12b2feb1d4f4, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,235,130.569738,28.108296,34.897431,36.891505,8.299148,10.790081,62.173161,59.681578,25.033442,32.041890,27.833654,34.667724,36.450207,0.554700,,,,,,,6d6d5f233b18307b3d009190d966e690, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,2276.643357,45.463889,46.765182,49.116933,20.325696,24.879520,97.592907,96.232311,44.672210,48.020387,45.296559,46.687643,49.043957,5.050378,,,,,,,5eee9dee46df46b71e10afb4d710da04, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,917.521863,42.771688,44.572267,47.026134,18.292588,21.958297,95.295718,93.303524,41.490071,45.346044,42.623569,44.523605,46.978665,4.822429,,,,,,,47b4be3d710c62ebd8daa1354eee69c6, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,384.335664,40.029381,42.259566,44.888085,16.224333,19.056964,90.160031,87.213157,38.113274,42.791613,39.913581,42.202975,44.848709,4.278847,,,,,,,f5cdad3263ba70bed4507cff9a859853, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,172.699301,37.067992,39.752441,42.565764,14.044865,16.077507,81.055648,77.202298,34.568166,40.066438,36.974619,39.664032,42.517857,3.880204,,,,,,,74fa0b5d58b3ab8428ff1d47804fe9b3, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,78.475371,34.082004,37.035996,39.934967,12.033230,13.349267,68.102980,63.641610,31.213000,37.121712,34.022172,36.912328,39.877532,3.602028,,,,,,,abf986dc7763230417b3f1df20192edc, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,235,36.200108,30.971641,34.062514,37.184540,10.020785,10.989135,54.872898,49.969633,27.920255,34.023448,30.909599,33.862512,37.104805,2.848548,,,,,,,f480250ca171ec61a2ebdb9e7c0b06f8, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,7216.906786,42.393166,44.466360,45.079813,17.004470,23.581740,99.384731,98.902962,43.503641,45.397163,42.153679,44.280200,44.921244,2.956744,,,,,,,c34b2c2c6f94a97e12e7fbccfd0e9739, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,2785.112119,39.012167,42.172017,43.011936,14.633605,20.406801,97.003690,95.273047,39.211145,42.640895,38.711631,41.979885,42.889563,2.680739,,,,,,,9f114bbc8cfea2d9be1685a231e21b19, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,1121.852916,36.071300,40.121144,41.065400,12.585938,17.223846,87.386359,85.026571,34.878268,40.103995,35.775236,39.941675,40.975675,2.483540,,,,,,,298344509095d8a2e46833eb92dc82a0, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,470.791362,33.086733,38.039414,38.965643,10.568106,13.995229,72.293013,69.782608,30.717458,37.466434,32.796869,37.850485,38.882154,2.320572,,,,,,,695b31aa5b8b3a9b449c0ed953003e45, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,189.298087,29.976047,35.795993,36.571660,8.634172,10.845181,54.068058,51.804825,26.799714,34.581994,29.703229,35.605802,36.499652,1.996929,,,,,,,76e8b38134cc2037b05a330a8e9c0f93, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,235,70.906324,27.001137,33.624624,34.224713,7.177380,8.185871,35.739715,34.155885,23.304400,31.744751,26.768577,33.439958,34.171273,1.482533,,,,,,,710c61ade737cb19d7325afaa7fbb43e, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,46555.746462,40.358253,44.733221,44.544886,17.111409,23.665286,99.876122,99.841850,42.868362,40.589933,39.983042,44.508470,44.362375,0.319483,,,,,,,20046feb4ab82cb2b8345b2d14af11a9, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,23597.761846,35.832016,42.055377,41.732427,13.571786,19.336038,99.756082,99.712987,37.217834,37.258205,35.383480,41.806141,41.545482,0.318933,,,,,,,0db3a2d622fd3b654a329e6d6fc8cfe8, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,10317.991385,31.547461,39.494383,38.980850,10.251724,15.090359,97.061498,95.622926,31.384979,33.957234,31.101788,39.244791,38.803618,0.316737,,,,,,,b2b9b3a633b42d4536d53577c756093d, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,4020.419077,27.813745,37.229318,36.512361,7.455034,11.192033,79.021524,77.017282,26.138980,30.930217,27.398431,36.992379,36.351170,0.377927,,,,,,,e1a2be29f20087600e854fd57b645c19, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1358.918769,24.737975,35.101564,34.349249,5.376697,7.767026,59.599211,57.903097,21.878811,28.138225,24.401310,34.901790,34.227345,0.538437,,,,,,,22ceba614dceb55a1716dbbb88df3a6d, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,418.000615,22.378202,33.045060,32.389473,4.138702,5.169649,45.661013,44.482352,18.876974,25.697973,22.132308,32.887345,32.291981,0.878562,,,,,,,b50d3cd70832413db85f8bc9ffadf974, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,110,11645.601906,39.803292,41.722704,46.149385,11.535430,17.784741,95.816403,94.598872,40.522207,40.483463,39.574314,41.588811,46.111430,0.018600,,,,,,,11e183e236866d7d8fc5c96af5330321, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,135,1982.443895,37.280101,40.038434,45.514878,9.214791,14.137734,92.008235,90.551809,36.225618,38.580447,37.203062,39.991102,45.491149,0.017880,,,,,,,d1eee5469c7f8d3d4274515c28cd679c, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,160,598.268931,36.245367,39.403397,44.603884,8.749814,13.164924,86.443972,84.773050,34.633272,37.852531,36.205569,39.382026,44.555231,0.038297,,,,,,,7f2a92269ac6173c93327c0cf59dad7c, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,185,199.110182,35.187044,38.721411,43.458448,8.489498,12.560849,78.924187,77.030072,33.054869,37.174175,35.144041,38.695677,43.374250,0.158331,,,,,,,2d6dd9380b498492c876ac8729781591, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,210,85.664489,33.849096,37.891707,42.098352,8.294412,12.080273,70.044755,67.818533,31.167735,36.360913,33.792838,37.866744,42.007565,0.580551,,,,,,,b853f380759c36863cd4ac424b95fd46, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,235,41.206301,31.981117,36.728901,40.246652,8.055141,11.554816,59.251439,56.532513,28.713793,35.219050,31.892652,36.711533,40.176301,0.964169,,,,,,,3845476295d35c7a0cf3277c2f784a15, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,110,2486.121878,41.280779,51.276371,49.282098,12.420337,18.623630,97.473493,96.294405,41.118784,45.703401,40.643155,51.151146,49.035994,8.613944,,,,,,,351c073105bd58305dfdecc4b413938b, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,135,520.238408,39.770558,49.877302,47.410092,11.127626,17.160159,95.748517,94.014817,39.509488,44.138681,39.502916,49.833461,47.214148,9.780311,,,,,,,19b9e992b7bb727be665389db0b2a3e4, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,160,116.632660,39.245980,49.018483,45.742176,10.918503,16.745268,93.648049,91.607142,38.758350,43.522167,39.028503,48.979153,45.518918,8.664289,,,,,,,c1070562ab9bdb62f17cf3da24b26f74, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,185,60.716145,38.467797,47.690792,43.089857,10.743311,16.203268,89.198700,86.862669,37.434733,42.581355,38.272471,47.650207,42.743210,8.967502,,,,,,,3574dcf728e3c5b68f365d2b80acce67, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,210,32.543948,36.905565,45.607083,39.269436,10.326309,15.043987,80.074667,77.134878,34.791172,41.001418,36.728579,45.549162,38.862482,7.248939,,,,,,,5f4536f9ed4666836fd99d822966efcd, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,235,16.352386,34.537193,42.569131,35.809119,9.745956,13.329982,65.058445,61.649554,31.405980,38.834463,34.284184,42.424610,35.409324,6.072899,,,,,,,4595fd45ec05fb27862a79da646654be, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,110,14000.529231,41.188994,57.411399,60.935032,12.229699,17.890055,75.760234,74.687692,41.236430,45.020875,40.867769,57.034865,60.544834,0.478575,,,,,,,ddbeb99de4f2ae9a578895a4f4432bdd, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,135,2104.678154,38.260777,55.204594,58.996985,9.470029,13.756557,52.644042,51.842708,36.486821,42.001185,37.983837,55.073237,58.835148,1.722361,,,,,,,51170bd837f068bfdbb05c46ab8428cb, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,160,309.323077,37.608339,54.073111,57.719672,8.941410,12.874253,42.055139,41.353262,35.443147,41.195010,37.452004,54.016835,57.627560,2.266796,,,,,,,305ac4a4e7f9c6f7d47e33ecbbfb3ae4, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,185,43.668923,37.366463,52.795825,55.698768,8.839568,12.603729,35.915388,35.190847,35.064977,40.726843,37.234026,52.753884,55.587379,2.009142,,,,,,,48947f80d98be258e00e07ec5783e580, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,210,21.441231,37.058983,50.892980,53.036973,8.815121,12.407359,29.985933,29.149560,34.649594,39.983353,36.948814,50.835944,52.935103,1.663804,,,,,,,cd20f3a71447126c14b6c4bcb0874cca, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,235,11.885538,36.487979,47.615023,50.803176,8.787158,12.152695,26.537771,25.493303,33.924118,38.829408,36.404342,47.571129,50.654499,1.170005,,,,,,,55664002a627549e3a694bd2c75a4ab1, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,110,143305.809231,36.856646,46.823587,48.246029,12.585895,18.787029,97.681094,96.475554,42.065157,39.537943,36.561710,46.759037,48.030555,0.057175,,,,,,,2700d72c99b02c1cd30ef0b0c7ade6f7, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,135,40018.932308,30.856077,44.983224,43.948277,5.784604,12.542253,91.450759,89.984938,35.376751,33.737422,30.503021,44.947562,43.724168,0.117156,,,,,,,7b8a45f974ed435ad8d98e949e219e86, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,160,6805.406154,28.512473,42.968212,40.765912,3.374728,10.116100,84.239614,82.447120,32.556220,31.362924,28.428884,42.948150,40.649148,0.984269,,,,,,,749b966e17a71a34fcdb8b1d218f680e, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,185,1323.064615,27.608453,40.891469,38.247580,2.923216,9.289794,74.319325,72.352016,30.573718,30.589383,27.599048,40.878048,38.204612,5.719598,,,,,,,81c075a5bf6e483a87f766c1b99190a8, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,210,344.129231,26.820569,38.758232,35.409199,2.760308,8.761569,61.473421,59.472567,28.461777,29.956257,26.816100,38.748854,35.367433,10.400122,,,,,,,bb213886fd39034c7b41edc464bf0e4d, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,235,114.073846,25.690840,36.601643,32.877040,2.579532,8.084276,44.700881,42.909830,25.583307,29.150533,25.685823,36.597065,32.857266,8.838869,,,,,,,9eb84e4664de5ac90082aca87fb71d5d, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,110,24878.654884,44.952975,47.243997,47.431755,16.862668,21.714481,99.808849,99.696503,42.481035,45.230743,44.669906,47.105989,47.308421,7.044508,,,,,,,e3f2af14759a709bc76575b76ba4daed, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,135,8473.691232,43.598171,46.091795,46.291044,16.275445,20.661657,99.038974,98.392729,40.749298,44.043461,43.184157,45.963715,46.191646,7.679019,,,,,,,523f3a0d2ea8c73539cf833ff85740e7, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,160,3340.409744,42.036676,44.765608,44.942182,15.699219,19.489932,94.837281,93.094828,38.690835,42.711760,41.386379,44.608152,44.826647,7.970148,,,,,,,3788c67547c60a7ee3b67194d308aa22, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,185,1511.883808,40.060364,42.911902,42.981960,15.065544,18.043464,84.644015,82.735536,36.215830,40.997039,39.117740,42.691151,42.809954,8.258070,,,,,,,529b07412bb43f0c92ae32e36347bae7, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,210,706.259894,37.470853,40.339403,40.335893,14.290506,16.291500,69.157973,67.374085,33.250180,38.723995,36.294076,40.055021,40.123492,7.909548,,,,,,,380ef34b9edfdbea561834b849c23c1f, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,235,323.484515,34.309144,37.340985,37.202185,13.318194,14.076217,49.945000,48.396164,29.906023,35.958553,33.066075,37.078674,37.010363,7.623489,,,,,,,d5dd9b0c96136039b5cb31906bb73488, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,110,8108.226543,48.568119,52.907471,52.303281,20.962517,22.519597,87.637641,87.136447,43.595024,48.362338,48.454976,52.554590,51.959041,10.005807,,,,,,,8fd629945e42cf239d2f09ea84eba1a8, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,135,2893.631292,46.323462,51.172090,50.517930,19.955965,19.894046,78.252285,77.656801,41.358335,46.023491,46.218425,50.818457,50.213907,13.541140,,,,,,,acb5995b4a9d86030110433c2372aa12, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,160,1004.069776,44.396869,49.681927,48.993989,19.336570,18.105735,66.574068,65.929834,39.622148,44.267199,44.242432,49.147032,48.599590,15.252362,,,,,,,89dde24f6dba0931fe743ed8e59fa660, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,185,408.311688,42.691330,47.937915,47.474340,18.931392,16.968363,58.098684,57.391543,38.108598,42.605530,42.405529,47.090479,46.823135,15.838823,,,,,,,b8645f1d25e0da5948433185b44f1f36, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,210,177.599631,40.644969,46.153138,45.891494,18.497355,15.935213,49.924708,49.227720,36.297671,40.883271,40.135045,44.847431,44.811316,15.673523,,,,,,,e93796ecb8259584663cf6d40c4b5108, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,235,81.057404,38.201068,43.951553,44.210375,17.987876,14.889579,42.075789,41.420108,34.085953,38.798473,37.451938,42.319540,42.542069,15.386867,,,,,,,90db46b209d8f4c3c0852a56b11df23c, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,110,29027.676923,41.732637,52.795040,52.469261,18.669542,24.473223,99.976224,99.970199,44.129008,44.555886,41.533189,52.691235,52.332240,0.395759,,,,,,,1f70e82752fe646fe893601a3fc5b509, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,135,16940.361231,37.402657,50.069306,49.725625,15.340846,20.549704,99.968480,99.959798,38.969135,40.740868,37.148618,49.961664,49.582685,0.507227,,,,,,,f15b9379d113021cdc06ba365ea5e70c, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,160,8144.259692,32.745218,47.693676,47.323772,11.795119,16.424430,95.852313,93.957501,32.807873,36.883722,32.464119,47.602203,47.187167,0.593698,,,,,,,9570aeb757f45abb2c779ef0849ea891, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,185,3218.510769,28.842017,46.110884,45.460170,8.926254,12.679465,74.874398,72.876852,27.176174,33.628511,28.606450,46.053302,45.324921,0.714867,,,,,,,c5a89da84f70f0508a069b0a33c84ea2, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,210,1141.332923,25.791527,44.486782,43.291918,6.882765,9.488700,53.219835,51.561079,22.845142,30.842600,25.638004,44.436770,43.153937,1.013471,,,,,,,ac1bc008f5fad31b7847dba3faf40a6a, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,235,378.033231,23.271727,42.810573,40.995810,5.446687,6.886331,34.813329,33.855950,19.640132,28.260711,23.176126,42.771445,40.842882,0.899111,,,,,,,cf98d10dbcf9ef13f9a7c686c9013698, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,20830.073846,41.577395,51.494400,51.841742,16.671839,22.684994,99.971729,99.962313,43.459311,43.898719,41.298109,51.352546,51.700491,0.631894,,,,,,,f56de68c1733b629c86f3c36822ee5e1, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,9801.392308,37.136678,48.439972,48.761050,12.838170,17.935637,99.615715,98.901784,37.551303,39.826411,36.778889,48.278368,48.610464,0.649321,,,,,,,fd123a323878693c5a976d0c18f1141f, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,3442.584615,33.221521,45.851343,46.326774,9.581989,13.572119,85.642020,83.579118,31.984951,36.326443,32.848044,45.690288,46.204667,0.615767,,,,,,,e17403569cd37a564c6cd49acecea9ab, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,1151.989231,30.313025,43.931176,44.474686,7.446710,10.433963,66.451337,64.472503,27.940629,33.789547,29.994416,43.802156,44.392509,0.661293,,,,,,,8d1e411c7a7724fa2408938b9e00e2d2, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,377.560000,27.963624,41.888014,42.560706,6.011928,7.957044,48.462715,46.947229,24.825892,31.660231,27.707045,41.774275,42.492857,0.883631,,,,,,,385794952d7b799ccabee6ef687d30fb, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,235,121.016923,25.976739,39.544947,40.117476,5.190458,6.231302,33.460546,32.561723,22.390436,29.694240,25.767404,39.407723,40.054038,1.458433,,,,,,,5fcff89fa920a6909ca290a60a7b95d3, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,110,11513.655575,46.251042,48.562696,48.728922,20.130720,24.846258,99.347151,98.645042,43.918329,46.466414,46.024970,48.470752,48.647335,4.617128,,,,,,,1170acecc04f1fe199c29c9ab8984584, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,135,4986.330592,43.543423,46.143856,46.382972,18.520168,22.166530,95.722548,93.778942,40.473685,43.897621,43.253675,46.068705,46.311322,4.781338,,,,,,,8c1825dccdc11effca2146f50c1bb1df, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,160,2162.242680,40.685299,43.903382,44.157835,16.976709,19.709001,85.384012,82.939780,36.998556,41.588317,40.318873,43.828652,44.084136,4.781705,,,,,,,019a378a507fbec9ee147ddeea21dc7e, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,185,983.301007,37.647428,41.789940,41.865187,15.404228,17.253312,70.626564,67.981004,33.544626,39.277545,37.209065,41.716002,41.783429,4.809246,,,,,,,ed49ff948411629f1e2c326744e7184c, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,210,441.966649,34.344969,39.586575,39.452446,13.719729,14.555510,51.435299,48.857777,30.060440,36.745384,33.903122,39.515771,39.374563,4.217280,,,,,,,0f2451cff199d5dad717a54d3fcaf7a4, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,235,185.629755,30.886312,37.111631,36.844617,12.025964,11.737502,29.232319,27.511279,26.606679,33.811165,30.522629,37.047104,36.772672,3.266229,,,,,,,069136b5d8eb8f28a9e908fbf78de842, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,110,39049.356923,38.351165,42.103231,42.596637,13.948810,21.838679,99.975126,99.968965,42.626224,39.736849,38.113948,41.924491,42.483626,0.000961,,,,,,,5fe27e7d4424ecb3607b654549705306, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,135,11713.386462,34.502008,39.350275,40.892246,10.484992,17.314819,99.680887,99.218710,36.610700,36.786951,34.336359,39.217475,40.840043,0.039481,,,,,,,fca68dc9b5141e6b47e5b556e2224b25, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,160,3842.368615,32.133364,37.077387,39.997564,8.874037,15.090971,94.374052,92.494039,32.410271,34.866487,32.039616,36.969159,39.973775,0.063792,,,,,,,82d9db8f5e399faa4265073e5b2babb3, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,185,1429.427077,29.863829,34.899086,39.011976,7.556090,13.008077,79.225516,77.147197,28.447859,32.983192,29.787416,34.798807,38.995206,0.072251,,,,,,,1a66be6aa9e832863f811c05932035c4, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,210,539.904000,27.374121,32.841730,37.875438,6.154428,10.593843,58.230435,56.484897,24.630106,30.906924,27.298029,32.754654,37.860258,0.106859,,,,,,,735e4f5781cb24d999d7817ceaaa8019, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,235,197.699077,24.854447,31.037380,36.409206,4.801575,8.086443,36.428981,35.296062,21.284173,28.644887,24.785860,30.959220,36.393774,0.093388,,,,,,,bdb4add218df787dd8ebc923dcf2b0fb, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,9869.200615,42.805730,44.443611,46.829743,19.127665,26.429391,99.931503,99.736251,45.411471,43.978642,42.682573,44.295277,46.715235,0.018812,,,,,,,4b98da8aa28186a67527a9b12ff7e4af, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,4000.030154,39.892347,42.051414,44.487340,16.814019,23.444044,99.348843,98.444370,41.195717,41.509119,39.812043,41.960727,44.416739,0.019551,,,,,,,22dd389a44ca9681308e242affb8a917, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,1725.177231,36.978183,39.806945,42.130177,14.525981,20.468525,95.557496,93.177702,36.673954,39.167267,36.912173,39.746763,42.085350,0.018188,,,,,,,9fd8fe564869438e62097a8578c0aa94, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,778.637538,33.783856,37.414899,39.567698,11.934549,17.107306,84.359678,81.677638,31.983079,36.516038,33.726133,37.373633,39.534523,0.017380,,,,,,,a4375a03b775eadd2b2d6ea9c0e35ebf, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,336.046154,30.333388,34.658855,36.599968,9.201377,13.426770,65.866680,63.204082,27.324433,33.470906,30.288178,34.627236,36.572763,0.025207,,,,,,,4480f45dbff5656cdcce31e82ef4ca84, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,235,131.940923,26.919201,31.826857,33.682862,6.776964,9.787316,42.001425,39.919616,23.116741,30.298690,26.887063,31.803992,33.661159,0.038013,,,,,,,83097086a608fcd1909c9a946b755f99, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_STILL_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_STILL_Preset_0.csv new file mode 100644 index 0000000000..f013d58a08 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v14.0.0/RDResults_aom_av2_STILL_Preset_0.csv @@ -0,0 +1,343 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,60,5590225,48.600737,49.500725,50.883898,24.995518,34.440522,96.988825,96.328703,54.215622,47.759820,48.600737,49.500725,50.883898,0.000001,28101.75,1.94,198240671659226,10060355665,78483507000566,5402836431,75c9f3dbfdb45e8ae1dfd1d9448d1875, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,85,3690846,42.675071,45.906325,48.340230,18.958471,28.423596,96.228866,95.227134,49.596428,43.319692,42.675071,45.906325,48.340230,0.000006,34071.44,1.78,242767087589002,9660626381,95147193826826,4987332851,a23ffec03a0eaa92e62cab183bef72c6, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,110,1979392,36.665051,42.762950,45.924244,13.016765,22.104939,94.223746,92.737601,43.048745,38.723182,36.665051,42.762950,45.924244,0.000307,47891.98,1.54,369214917557405,8148884413,164303073227909,5399227291,f822f80cde28bdcaadaf7ac3f9158afb, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,135,861533,32.052600,40.124609,43.635902,9.520101,17.491391,88.066247,86.148769,36.197874,34.905028,32.052600,40.124609,43.635902,0.001613,104943.73,1.44,600262825770678,6315645927,274697635028840,4029284363,bf2379a4a03629e003167d04a6ee56d5, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,160,394183,28.657639,37.541305,41.393713,7.507283,14.081355,73.277370,71.126358,29.979081,31.881765,28.657639,37.541305,41.393713,0.008297,58686.65,0.86,406673131684809,5259459558,163908128809221,2456438852,f94242fa2115b1a5f4b2d9e7cef289dd, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,185,172766,25.293854,35.034193,39.273406,5.479370,10.497827,49.218717,47.338656,24.234355,28.806463,25.293854,35.034193,39.273406,0.017989,43488.52,1.04,243052860934556,4610622736,113573076949878,2960218254,ab537d79194f1ef18ddee3ac4d7a5c75, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,60,3830752,48.722374,50.599357,50.965624,22.275520,31.408735,96.590759,95.818997,52.646807,48.069829,48.722374,50.599357,50.965624,0.000002,50325.62,1.80,284930996066401,8023623836,131369906129122,4762375646,c3acdeb79d9ef7ada130fcecbe2141ff, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,85,2137580,42.900486,48.393899,48.742096,16.645788,25.420587,95.275296,94.186668,47.819624,44.184953,42.900486,48.393899,48.742096,0.001254,60679.59,1.64,341933828985220,6917816981,158384932034920,4386591016,b32408aeff43f3196fcd617a955659a9, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,110,883376,37.746861,46.190141,46.743276,11.866938,19.664120,92.205001,90.551489,41.391763,40.460994,37.746861,46.190141,46.743276,0.252000,48768.42,0.91,352153548920426,4857306980,136208788121910,2497148061,29d292c317391134893afa12cead812a, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,135,319228,34.216208,44.194156,44.815777,8.764166,15.209807,84.008831,81.913072,34.983945,37.606908,34.216208,44.194156,44.815777,1.147144,62036.57,0.75,432069358135750,4504293631,173248908758456,2102503114,beec76c7e9746fa3b2afffdd62d348d4, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,160,134211,31.727296,42.491401,42.844744,7.010062,12.167167,67.165566,64.861188,30.040618,35.359470,31.727296,42.491401,42.844744,1.776246,30442.20,0.68,209650643975246,3545141219,85015781585221,1917303132,10b0972427f2f8d051f9455211df1734, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,185,59093,29.154208,40.636482,40.398142,5.653918,9.600043,42.523741,40.994660,25.984089,32.894919,29.154208,40.636482,40.398142,1.885778,13545.91,0.61,93269311934799,3812135732,37827655372799,1716621318,372b16a03494214d009d7d6bb514e272, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,60,1030073,51.271610,55.502551,56.093985,22.597818,29.325651,96.434377,95.352342,50.750894,54.094888,51.271610,55.502551,56.093985,0.015119,39681.81,0.83,266233255633587,4451197872,110837658895036,2307211658,ba182337dce0bdf73c7af8de032dbf7b, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,85,521403,47.566842,53.191578,53.875816,19.316735,24.752508,95.164563,93.768313,46.381345,50.026808,47.566842,53.191578,53.875816,0.039341,40169.27,0.91,211104744969166,3815338789,103526411367009,2439625932,97354df3114b515ffc7adec956b7e678, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,110,248977,43.796011,50.882172,51.835623,16.192845,20.323536,91.760730,89.880451,41.404312,46.516216,43.796011,50.882172,51.835623,0.146893,25449.50,0.73,135763907873495,3048718438,65620856649959,1971755463,d951dd6d21c23c2530ecd7709557bf92, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,135,104222,40.101860,48.361592,49.522618,13.414719,16.230058,82.431147,80.388710,36.619478,43.121741,40.101860,48.361592,49.522618,0.523275,18286.71,0.69,126076369350237,3992014962,61778787687818,2503871199,26479e9e302a5eb59bcf40f903a4b543, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,160,41441,37.024753,45.536979,46.724875,11.625242,13.279090,65.184039,63.210886,33.023341,40.168183,37.024753,45.536979,46.724875,0.816188,10254.26,0.60,66817032036758,3662590099,28638643019906,1653096382,cae9256504b0e5548fe316e447f94a79, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,185,17920,34.378520,42.395553,43.514658,10.512661,11.151439,47.049437,45.193188,30.154006,37.437725,34.378520,42.395553,43.514658,1.237059,6592.60,0.62,33386238005228,2943422528,17202063545751,1883859394,2fdf31ae30d3338b5977fde60f34639b, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,60,2745093,48.849972,52.766607,53.544679,21.211282,29.419622,97.247852,96.629908,50.136647,50.049389,48.849972,52.766607,53.544679,1.066352,37322.03,1.29,259438406237116,6419270957,104236924469571,3600774928,d43842b192bbca667e747adfdd2db65b, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,85,1435187,43.731285,50.602873,51.307530,16.544420,24.496057,96.853322,95.902983,46.441949,46.069081,43.731285,50.602873,51.307530,7.469448,30295.49,1.27,172089171920642,4808564682,78885586306255,3383554974,879a24312bb1edc55de875289f6826c2, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,110,743697,39.841014,48.420222,49.236183,14.502993,22.147308,95.419864,94.010947,43.575920,43.220986,39.841014,48.420222,49.236183,11.306905,22239.51,1.14,130433071349679,5064125169,58420787410998,3164113006,00917bb187e4fc64bf671a96cce4eb6f, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,135,370679,36.128744,46.242359,47.204813,13.435305,20.494584,91.366197,89.303788,40.146439,40.651562,36.128744,46.242359,47.204813,11.072531,31246.84,0.79,222553510560177,4387896183,87259333899917,2215715175,9c60a9eb4866db5cb18bf97b15e6868b, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,160,170309,32.260136,44.001085,44.850171,12.112182,18.174706,82.172118,79.246178,35.160058,37.896918,32.260136,44.001085,44.850171,10.603724,23317.08,0.56,166561136732519,3295812264,65114724142154,1604381514,75c517abd179f2dcbcbafd0685f1e677, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,185,72192,28.509074,41.366070,42.367929,10.359787,15.016252,65.992350,62.550922,29.353225,34.875886,28.509074,41.366070,42.367929,8.353604,20314.95,0.70,113882789055119,3175488301,53046536004588,1996110065,c52cf7c0505a911af1270716bcd3135b, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,60,6064443,48.365826,50.761242,50.648523,28.412097,37.776046,97.070904,96.357209,55.127567,47.040300,48.365826,50.761242,50.648523,0.002241,19132.23,2.42,110123349943453,10648877999,50574453924506,6381521831,92ee98885259a31a6e85170476766471, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,85,4214638,42.574358,47.921251,47.745937,22.531611,31.749247,96.389448,95.266719,50.784926,42.909685,42.574358,47.921251,47.745937,0.004070,19896.63,1.93,144385075836907,10184341950,55564386689080,5390811926,799d11800359c9fe91f3a75320b4823f, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,110,2610699,36.796528,45.475732,45.103646,17.340129,25.864135,94.387419,92.763761,44.994092,38.717536,36.796528,45.475732,45.103646,0.005150,51373.48,1.91,309366149327398,8590914197,136346430905218,5150427754,710697e1aedfd88fb3d5b56cae8f2bdb, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,135,1354594,31.596207,43.046033,42.540866,13.164928,20.627086,88.926661,86.745243,37.846066,34.650051,31.596207,43.046033,42.540866,0.012028,111654.02,1.73,650964177208611,7180092452,292819069452825,4727939602,2a744d6b969a6c3d413a1ad70b2e6eb9, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,160,620896,27.198183,40.619593,39.985085,9.624269,15.797508,74.048255,71.877556,30.107016,30.873374,27.198183,40.619593,39.985085,0.032744,92853.74,1.35,538517019285548,5696222435,243087914578916,3735092360,bbd66950c60594896656ba985802f5f0, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,185,258902,23.476288,38.348346,37.718664,6.601688,11.500439,49.510467,47.503209,23.381369,27.374516,23.476288,38.348346,37.718664,0.062069,47937.58,0.81,347043378930447,4121548194,163127737336252,3076828996,bbf53e5a6713c000aab92cdc30593e15, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,60,1773999,51.303051,52.105431,52.156329,22.166949,28.906794,96.385889,95.480203,49.233651,51.804603,51.303051,52.105431,52.156329,0.555511,78699.75,1.59,523949035903720,7788764117,219806446652428,4433447570,c76858023c2e251a6a84c85ddf9d1ffc, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,85,703830,47.876310,49.759828,49.926349,19.476312,24.918896,94.719677,93.430654,45.798179,48.586032,47.876310,49.759828,49.926349,1.548506,43786.18,1.37,290266601605260,7144005300,122275207209620,3870637402,a20b2a2f04c078bde63fd0f3a8c0be2d, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,110,321344,45.178207,47.414372,47.929357,17.652686,21.895019,90.857562,89.091697,42.595341,46.146269,45.178207,47.414372,47.929357,2.041370,29624.52,1.72,159075605657289,8134553254,76274755911087,4800038575,f139f017b760d07f0ce0060a3e5b7595, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,135,148849,42.163223,44.911857,45.730269,15.642937,18.667224,82.053246,79.878570,38.816781,43.638600,42.163223,44.911857,45.730269,2.468980,31362.78,1.55,168475109219985,7680040184,81064593254270,4359775973,c61de7dbae66022de1e89b3902db2448, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,160,65405,38.895642,42.083270,43.287834,13.559391,15.344632,65.685653,63.268650,34.891171,40.873137,38.895642,42.083270,43.287834,3.145488,15824.30,0.97,90313564005481,3869402215,44937129426913,2922111538,6e5233ad951a789e1e650f8141bebe11, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,185,26394,35.653139,39.166790,40.593381,11.730596,12.229513,43.024627,40.891257,31.274118,37.986954,35.653139,39.166790,40.593381,4.205817,8317.67,1.20,44786822983213,6823518684,23644277426388,3627196179,9cf22548368843fe98934e07ab962581, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,60,4127419,48.945782,54.881889,53.268470,22.173947,30.205985,96.426656,95.766146,53.254049,52.047457,48.945782,54.881889,53.268470,0.000009,47290.19,1.40,319855318106826,7475319798,132068172363941,3943385169,0c2927a275076bfcd672d5d0c895bb3f, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,85,2478598,42.882522,52.792250,51.690852,16.073892,24.053010,94.977626,94.021835,48.275659,47.551506,42.882522,52.792250,51.690852,0.000042,61644.99,1.64,350563774024091,7207262640,160125684245385,4400701014,d5e1c0a018065057b7f61b4f131e5c02, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,110,988067,36.994115,50.372114,49.834488,10.020359,17.489524,91.691547,90.216247,40.954924,42.783169,36.994115,50.372114,49.834488,0.000994,64834.34,1.37,376582700383842,5940699225,168566634058058,3813772941,892d6b12d096acfe071a66da6185821d, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,135,192233,32.935102,47.585810,47.435455,5.697847,11.261192,82.376399,80.892998,33.643371,38.996715,32.935102,47.585810,47.435455,0.336571,59332.23,0.89,334329293671961,3716129779,154160374754473,2503624871,f41e16ace8955c7bfe0dc35e1a373d50, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,160,42985,31.462431,44.705263,44.564521,4.641066,8.594914,66.767277,65.329041,30.262177,37.393831,31.462431,44.705263,44.564521,12.108857,11719.80,0.44,80124940524505,2617800361,32728998658380,1229876831,00c40c870fb85d939af6262b97347b4c, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,185,19071,30.617394,41.948409,41.105279,4.444853,8.038222,52.590508,51.376363,28.678863,36.188904,30.617394,41.948409,41.105279,14.070239,7863.33,0.57,40994150616396,2963150097,20289466254785,1626389390,72887bc43d906738aba91d1fd99d77f2, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,60,1209752,51.377437,51.149937,51.562780,23.761613,32.139567,96.805891,96.018606,52.640365,53.252248,51.377437,51.149937,51.562780,0.003342,36981.25,0.88,199181062424815,3435692649,95798527974463,2322131725,0334b7ff912134fa29c9377e3212a523, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,85,637125,47.383217,46.916734,47.531234,20.436255,27.531978,95.705592,94.579667,47.686683,48.708147,47.383217,46.916734,47.531234,0.004805,32109.77,0.78,171331535516092,3099591954,83215506725858,2125408415,31e767f26e9ff5e817e940c8c30d84c1, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,110,328977,43.753087,43.096602,43.998338,17.880167,23.799660,92.844821,91.227914,42.507153,45.169460,43.753087,43.096602,43.998338,0.005599,21754.67,0.71,131252919356018,3335379985,60937037621876,2078945629,d24fc74049ff657a216429f70667d069, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,135,170390,40.130073,39.527990,40.555950,15.413297,20.092230,85.631587,83.568549,37.224687,41.712399,40.130073,39.527990,40.555950,0.004260,27064.67,0.68,148708644038250,2981915326,70360644977272,1894894324,8001f7dfde6e95b6b555296d56e96e34, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,160,87117,36.328485,35.974054,37.144664,12.905443,16.377830,70.099307,67.847142,32.280364,38.093532,36.328485,35.974054,37.144664,0.005299,13099.90,0.50,89479874269794,2641534557,44500561533113,1875296704,b612c9cb33eaa6d6d32df289633fa034, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,185,42572,32.484401,32.810420,33.564433,10.561868,12.913128,46.824847,45.067955,27.820905,34.523296,32.484401,32.810420,33.564433,0.018320,8337.72,0.54,45886217740734,2564471162,21688477775184,1531472033,be870e362dcc4303508115740fdfac86, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,60,5113154,48.544565,49.691743,51.060886,23.659542,33.359069,97.083074,96.446361,53.931341,48.594065,48.544565,49.691743,51.060886,0.009130,33232.89,2.11,205796288273978,9883063839,93942464077982,6008927830,57d529de3c8f641134f7d02c07cd3714, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,85,3205499,42.705289,45.516177,47.732248,17.950984,27.355208,96.355319,95.387586,48.956217,43.792522,42.705289,45.516177,47.732248,0.014379,41951.20,2.10,244280220451351,8926055972,110218470863103,5625739599,2b2d8a10c02127d12325f18926ec1429, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,110,1774010,37.559355,41.921655,44.475788,13.902604,22.376399,94.415073,92.944742,42.740942,39.577380,37.559355,41.921655,44.475788,0.026852,50227.49,1.81,293472997327957,7959627254,132104182702169,4907841462,997493f146d162214e3ab132e98ad30f, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,135,903244,33.142335,38.828349,41.423535,11.139804,18.425732,88.815614,86.690163,36.397467,35.896482,33.142335,38.828349,41.423535,0.043881,95200.51,1.52,540928372653500,6883769482,249581240083780,4160193773,41aa047362737fad4126b8b15494da52, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,160,424879,29.150308,35.717021,38.490252,8.509710,14.433478,74.425980,72.083137,30.093856,32.434723,29.150308,35.717021,38.490252,0.084426,71179.95,1.27,401817013930513,5634403687,186297689146208,3581867479,9fad02965d79b7e325741efcbbfe26e4, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,185,190650,25.518692,32.484622,35.530955,6.107825,10.562611,51.363325,49.405055,24.231653,29.095963,25.518692,32.484622,35.530955,0.137549,45990.69,1.02,255306937061666,4800598947,120088912900764,2858020766,99a7b39da61386421ef830c3296e5f12, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,60,3954523,48.525304,51.774232,53.072094,23.680695,33.751234,97.100101,96.556761,54.089473,48.986023,48.525304,51.774232,53.072094,0.000170,34824.49,1.63,244896530077735,8549903319,97254658135943,4575429740,dc98f849f70989024dfb46f26ec3da4c, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,85,2292552,42.918254,49.162988,50.715728,18.499514,27.898661,96.349528,95.585472,49.201996,44.461787,42.918254,49.162988,50.715728,0.000264,48773.92,1.83,279715192106020,7865255472,127985693317449,4958367037,8a88184f2ef4c0dfda30a34a5b35e470, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,110,1122695,38.059143,46.511960,48.173295,14.500679,22.839569,94.876797,93.531301,42.754373,40.421164,38.059143,46.511960,48.173295,0.000771,56438.38,1.49,331743957010265,5941753609,148467945709419,4109192654,37ee925ffc54612b2e6172cad3057552, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,135,518237,34.262835,43.658544,45.465625,11.629041,18.877862,90.008350,88.129351,36.249659,37.067810,34.262835,43.658544,45.465625,0.015037,90301.45,1.12,510194026519454,5254598121,236800351857798,3074247512,bb4e6b0aa9a98936dbb4f9d2b17dc655, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,160,254054,30.987829,40.845156,42.774831,9.200017,15.210420,77.640406,75.411687,30.305908,34.017922,30.987829,40.845156,42.774831,0.052496,47363.73,0.87,334914483835030,4789554172,132267184276059,2424491263,51dfe6c49b8b141c9bb1322c1da79bcd, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,185,123203,27.583959,38.090845,39.925914,6.869726,11.532823,57.895192,55.733411,25.058022,30.875933,27.583959,38.090845,39.925914,0.063947,33757.62,0.92,188926992167444,4259872976,88054062822832,2556088478,983b1f3697b261630103c8bda4d64b17, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,60,2944491,48.573980,53.177350,54.252714,20.837627,29.945116,97.027434,96.312601,52.327497,50.720704,48.573980,53.177350,54.252714,0.000364,58240.28,1.66,326023769229882,7156375067,151156583154983,4362262915,b1a1d4bf9f2689e70504e58c597672b9, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,85,1416894,43.263529,50.637179,52.158031,15.735039,23.878775,96.266814,95.248877,47.039243,46.023829,43.263529,50.637179,52.158031,0.004951,46486.01,1.22,323290423237624,6016744201,129833417911197,3396301047,c787f895e8f107c7d6fa06ee26df9e98, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,110,590558,39.127008,48.014400,49.912625,12.039270,18.585655,94.241071,92.742543,40.585261,42.304307,39.127008,48.014400,49.912625,0.036771,44342.02,1.18,247585605089175,5158605290,115334258655669,3284523680,a32b4df8a98704c90477824f46551707, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,135,228214,35.952190,45.205418,47.489819,9.696590,15.252517,87.870402,85.787984,35.524276,39.400153,35.952190,45.205418,47.489819,0.143294,41264.74,0.75,278500466306184,4487443211,115249568623510,2109992071,3e31c3b0351ad427af10b9bb85ca9906, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,160,96785,33.313520,42.174776,44.782348,8.255186,12.726508,73.826610,71.538238,31.465894,36.919781,33.313520,42.174776,44.782348,0.332321,27348.28,0.88,145435512623153,3869886009,71341345070305,2454139943,007ca738abd5a3f9e5978f50d94616a8, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,185,40636,30.526503,38.958614,41.614315,6.943813,10.093862,54.910078,52.824253,27.546528,34.248422,30.526503,38.958614,41.614315,1.060304,10187.55,0.58,67617514589562,3261868531,28456637342988,1601013906,18cb0c2235c8173be9e75a182a6f6b41, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,60,6976580,48.957344,52.037808,52.639243,21.617996,30.237578,96.638429,95.706777,52.103851,51.455057,48.957344,52.037808,52.639243,0.000113,133874.03,3.84,747753898326509,15926502703,348109354577331,10155060257,f610ca89133dc38711c871e22856a11e, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,85,3740684,43.476840,49.358116,50.120030,16.247026,24.430692,95.523026,94.188728,47.353376,46.554202,43.476840,49.358116,50.120030,0.000649,127274.44,3.86,728633436561896,17148220768,331010544195142,10448569463,2cdee35ad21d9e57f83d2f337ecd9300, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,110,1387408,38.452437,46.596973,47.452670,11.392491,18.715757,92.309411,90.622472,41.192234,41.979354,38.452437,46.596973,47.452670,0.001674,79424.16,2.81,591459089934651,12616273470,270100793232852,10110526571,4d87beaf68b6838b213bebe60e0eb664, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,135,415466,35.292864,43.694511,44.552936,8.828707,15.212437,84.693664,82.599311,36.166410,38.930422,35.292864,43.694511,44.552936,0.484915,83069.22,1.71,584033919436489,9889349776,231999225011143,4815892838,cc947be02f97013580b979b53d39cf91, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,160,184583,33.386834,40.456550,41.362478,7.909184,13.271855,69.891554,67.546766,32.204492,36.922030,33.386834,40.456550,41.362478,0.610747,52247.33,1.95,289419906650314,8977132369,136357254783656,5439682652,b9ebff347a638308740a5905b09e76f6, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,185,79768,30.939459,37.152698,38.034728,6.874824,10.864288,47.466145,45.297501,28.094406,34.489202,30.939459,37.152698,38.034728,0.507837,26831.09,1.84,142027945052253,8474518913,70006053532186,5246421115,c5c1c8f75e52aa68f5286cae8cf7a60f, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,60,5248189,48.917913,55.893006,55.530669,19.700727,27.901869,96.337804,95.521777,50.057539,50.398347,48.917913,55.893006,55.530669,0.152106,120910.69,2.85,825981062879321,14167524280,337715647140663,8015832295,1121e2246ff265c103408f111ceb6a1f, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,85,1862959,43.462302,53.990306,53.464155,14.182381,21.744085,95.242349,94.072616,45.130309,45.407710,43.462302,53.990306,53.464155,0.940725,124766.39,2.37,708910511850378,9367111936,321534606909640,6411007156,9c345414d8a218c7c628c21c4c46929b, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,110,361851,40.481261,52.013065,51.312637,11.373329,17.986191,92.257929,90.736917,41.114715,42.567543,40.481261,52.013065,51.312637,5.730665,38948.39,1.94,215052111268935,7738783340,100555934120181,5671734142,0238e26941d3dd10f6d4d7913d3e180f, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,135,143878,39.133360,49.888543,49.217019,10.650030,16.346959,84.382821,82.553471,38.421050,41.287705,39.133360,49.888543,49.217019,5.807580,29938.54,1.27,201587557139532,6950136925,83604708795485,3587259782,a4950a9d73f943c739989e02163023cd, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,160,57774,37.466245,47.565589,46.846934,9.980826,14.455474,68.880467,67.127870,35.470134,39.866539,37.466245,47.565589,46.846934,5.869561,19741.74,1.77,101170762952356,8428816330,51261843333417,4927843898,6e17c1cafdd0db31851a3cb02356d1d2, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,185,22182,35.504788,44.583310,43.885525,9.440157,12.422104,46.650027,45.366846,32.536941,37.986503,35.504788,44.583310,43.885525,5.996277,7716.98,1.24,49292167641097,8511638836,26609025673955,4603438986,0fdbf1b26eef8f1bd92fe72ca663d57b, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,60,4187062,48.723691,50.924371,51.836332,22.919114,32.133611,96.930678,96.280402,53.435542,49.639308,48.723691,50.924371,51.836332,0.000001,42291.97,1.98,240233073961017,8420565095,110676178666766,5249306243,adf15dbad663c8ad76a2a178d3303302, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,85,2531225,43.125328,47.624255,48.895345,17.518070,26.273426,96.128165,95.140577,48.457487,44.787406,43.125328,47.624255,48.895345,0.000034,49820.72,1.92,283794434919255,8255191888,130419345750768,5094727899,556f81c7d3121b3bb4f5f33640c08234, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,110,1259332,37.940787,44.402848,45.824552,12.771377,20.613598,94.095667,92.533643,41.918836,40.306033,37.940787,44.402848,45.824552,0.012890,53502.29,1.53,311299167246326,7084178905,140063356670616,4177217449,adb2d8b280e9c524cd2e2cac3c08e5e5, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,135,592053,34.099248,41.327157,42.787756,10.171687,16.886202,87.127763,85.335076,35.886678,36.888396,34.099248,41.327157,42.787756,0.051193,76165.66,1.25,467379830302920,5881539889,214789426064416,3662159624,69d53987c79c0cdcbd2c199393a739c1, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,160,281480,30.659087,38.357730,39.938233,8.186662,13.541214,71.564290,69.698736,30.287938,33.871561,30.659087,38.357730,39.938233,0.117924,45275.32,0.79,319466901366461,4440334873,126435457696607,2170651012,690bc86efb297ec32634bde91fe4380a, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,185,125971,27.134689,35.385452,37.014541,6.267860,10.193199,48.652128,46.989184,25.003048,30.768433,27.134689,35.385452,37.014541,0.305648,33237.94,0.87,186063946171702,3787494776,86899016856569,2471906848,ab8774ba1e833b703e021ae474801af0, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,60,2755259,49.392766,53.328564,53.895404,22.428469,30.339966,96.967322,96.216650,51.128879,50.457620,49.392766,53.328564,53.895404,0.994914,33208.00,1.21,230377123100737,6266774617,92752721186673,3393287415,c683a85e7b785c35a8c76a022adba137, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,85,1619377,44.320096,51.127044,51.695721,18.115124,25.376361,96.185350,95.102755,47.141260,46.362403,44.320096,51.127044,51.695721,3.007353,37173.36,1.31,211840277063220,5593968570,96857733463852,3493149108,fb75f65094a88182ff6923ff0dd695b7, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,110,825395,39.576091,48.888563,49.616545,14.391730,21.102548,94.123566,92.530665,42.456075,42.732250,39.576091,48.888563,49.616545,3.408879,29664.82,0.94,213107858113461,5432649188,82840867266838,2612649181,8e516baa5ba71956a4c0d9312eb39c03, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,135,380659,35.567997,46.593720,47.589181,11.659429,17.520148,87.814272,85.848046,37.212601,39.528746,35.567997,46.593720,47.589181,3.358513,56955.53,1.00,318304882894391,4714919673,149040805258633,2782565535,004d3762a2fbd8d741fc0bfe311df8c6, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,160,172594,32.091049,44.092228,45.173609,9.389957,14.246717,73.732011,71.557797,31.843748,36.574179,32.091049,44.092228,45.173609,3.498833,29343.94,0.67,207109554418436,4156816477,81953733772598,1881109764,dae5257396b8c657da048106f2cf9768, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,185,72789,28.722537,41.261276,42.326361,7.435210,11.197761,52.173574,50.213954,26.759162,33.595021,28.722537,41.261276,42.326361,3.727534,16182.59,0.46,112339660151297,2500802659,45190794559073,1275884871,75054b680657d931d198ac939a736f22, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,60,1516780,50.557961,56.823551,57.718122,22.907975,29.663818,96.923167,96.008995,51.320992,52.828813,50.557961,56.823551,57.718122,0.000005,42697.29,1.10,236056483954635,4853170359,110445899266501,2926878928,47e46805b9b90d2282bb6816f1d1c23a, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,85,859320,46.471300,54.685975,55.457797,19.374446,24.784490,96.165290,94.840161,46.782801,48.691842,46.471300,54.685975,55.457797,0.000034,29636.05,0.75,203702062578330,4110102242,82767506895361,2124456705,d1593e2321556310d1206863f6a0dcb9, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,110,456268,42.246011,52.620818,53.423294,15.920652,20.120476,93.802866,91.968941,41.509286,45.056604,42.246011,52.620818,53.423294,0.000183,25858.17,0.93,156490680190989,4648694018,72487888280738,2736721271,2f5522a00dea7cfe4b74dc4a34487890, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,135,223626,38.222937,50.380391,51.301837,12.947965,16.216721,86.746526,84.605562,36.478730,41.614114,38.222937,50.380391,51.301837,0.025933,38693.88,0.83,212670863105005,4115795498,100605224111789,2306924313,667ecc7d50c4771238fd8810b0f65795, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,160,104620,34.498953,47.890059,48.835256,10.446792,13.105835,70.711831,68.518395,31.833674,38.258669,34.498953,47.890059,48.835256,0.176042,23501.46,0.75,130246500539157,3851163738,61274300711822,2093033461,f92e04a4b112304d66d83002d04bc092, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,185,44838,31.019714,45.315391,46.397552,8.451412,10.136881,47.986019,46.559062,27.514439,35.213467,31.019714,45.315391,46.397552,0.744402,9897.04,0.52,68349046467821,3600459500,27650510763506,1479878341,4f10b3529889b01c825adbba1e9df596, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,60,2502779,49.429739,54.235934,55.751044,21.866683,29.721572,96.910156,96.132506,50.152827,50.922971,49.429739,54.235934,55.751044,1.180559,30009.57,1.07,208652850920056,5620730330,83803660717458,3008961335,d45f507c06e0ed9942623c8002ca1727, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,85,1461001,44.513162,52.229468,54.031203,17.889567,25.641527,95.931640,94.835995,47.287755,47.128502,44.513162,52.229468,54.031203,1.309793,24992.99,0.88,178378372916016,4428230631,69798922374675,2469606592,87c44f79224280d5f3f9c5960f12e81a, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,110,623884,39.327513,50.258309,52.244258,13.308511,20.936688,93.430011,91.877419,43.062743,43.305387,39.327513,50.258309,52.244258,1.234907,33782.02,0.97,196440435190661,4591439733,88231608585469,2686264453,a1211927430e5c5a340d57457f23fcd7, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,135,239959,35.823857,48.452855,50.513051,10.710523,16.996853,86.314645,84.393261,37.639722,40.473406,35.823857,48.452855,50.513051,1.345355,44518.18,0.82,253582286427745,4085102394,116331708447402,2267376815,963ae969360d7ae9a3f51971e4d84fd3, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,160,98512,33.070896,46.573761,48.350663,9.125855,13.860544,70.662464,68.436387,32.792597,38.084102,33.070896,46.573761,48.350663,1.429971,23492.82,0.69,132136217608050,3068303011,61426437813441,2009930248,28ce8efec8a59988e5ada86fceb09079, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,185,37789,30.303130,44.098667,45.719564,7.757691,11.121953,49.103242,46.966812,28.542067,35.504301,30.303130,44.098667,45.719564,1.846600,11033.38,0.59,58903253622379,2962014866,28638074844577,1691613717,c37677e4f3b79bef541fa806d1d5bd2e, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,60,4901494,48.766560,49.000083,50.835306,23.199935,31.328097,96.506795,95.608267,53.053635,46.890350,48.766560,49.000083,50.835306,0.006539,54587.68,2.10,308822247041064,9306410183,143195878217089,5497015035,3ca73f3eaf1f80ad847c5beadcebb4f4, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,85,3043769,42.851919,45.692476,48.962729,17.214932,25.212205,94.873687,93.726327,48.375732,42.816346,42.851919,45.692476,48.962729,0.007813,66037.99,1.81,378281165314313,7774978093,173281200935109,4813451941,aef8e52e8ba4bfaa0267e3445c35f974, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,110,1490507,36.972579,44.225210,47.706436,11.500654,18.964218,91.444110,89.734717,41.715314,39.317714,36.972579,44.225210,47.706436,0.024407,56420.47,1.20,411638648868744,6819231533,157557073236536,3360084372,9340d930abc056b35199e66657211499, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,135,488118,32.198336,42.922192,46.384747,6.874853,12.895076,81.508571,79.487477,34.242127,35.899428,32.198336,42.922192,46.384747,0.515013,82316.73,0.77,569881028122602,4316081205,229876081282167,2171264259,6a137f969316c5ae074dcc84460a10e2, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,160,95363,29.033507,41.538103,44.741727,3.888954,8.022864,62.495477,60.796127,28.242760,33.256451,29.033507,41.538103,44.741727,4.296747,30838.75,0.64,172134421814019,2424363571,79909557843502,1772668598,d63c737a6dd7c7fef2c1c4af91bdef43, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,185,26857,27.759601,40.123802,42.847092,3.226318,6.448923,44.001149,42.720165,25.838778,31.953195,27.759601,40.123802,42.847092,7.386023,8049.70,0.54,54503929169330,3524380392,22480161870849,1508406350,e2d74b9d0f030791a6a85a1e019f4db7, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,60,2926983,49.036988,53.087078,53.240738,21.355498,29.814160,96.881731,95.963413,50.885904,50.016274,49.036988,53.087078,53.240738,0.526308,47784.35,1.72,270585559339199,6785349947,124170799860801,4518204115,ed926233c1d7e247388b01378da228d9, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,85,1605498,43.709631,51.378380,51.590860,16.568704,24.655273,95.830999,94.551182,46.972783,45.940855,43.709631,51.378380,51.590860,0.658666,42186.69,1.38,240598073510670,5654099763,109795989535295,3709700096,a5e76b4a1627e0b39f0295f743c9c165, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,110,695745,38.908306,49.677274,49.980992,12.606079,20.178581,93.040079,91.242700,42.196951,42.231440,38.908306,49.677274,49.980992,0.679684,35150.67,1.13,219608884343570,5435639545,99089164815959,3303967779,e485ac4ca120f6ee03df94385084b8ed, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,135,277097,35.509720,47.877371,48.205261,10.310697,16.697796,85.026243,82.802343,37.044296,39.466339,35.509720,47.877371,48.205261,0.704644,50501.86,0.99,279348990390324,4586794474,131559914825185,2730279501,868d2cf6c0325ef451305b72686c3996, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,160,116394,32.569678,45.825954,46.128070,8.536563,13.492780,67.969679,65.688052,32.107496,36.946072,32.569678,45.825954,46.128070,0.722999,22627.80,0.68,157159465234745,4093047744,63198179688358,1888941368,372a111605c2a5d6fca764be877e1c2c, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,185,45371,29.524419,43.075512,43.540331,6.898505,10.300997,44.022440,42.077943,27.485033,34.228738,29.524419,43.075512,43.540331,0.906875,11046.77,0.54,72461019946380,3234779222,30853503030305,1527655218,d6d4e6b48bce7becf9ed719a685c56a9, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,60,3193691,48.856039,51.147834,52.880923,21.009956,29.617779,97.069785,96.449117,51.142642,50.292262,48.856039,51.147834,52.880923,0.433586,44436.75,1.68,246911529323705,7208585541,115441510449803,4415714070,6c3d6bd60c7de883b735db8a63654c39, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,85,1750061,43.580706,48.187340,50.082922,16.177123,24.032016,96.305529,95.417858,46.807788,46.400529,43.580706,48.187340,50.082922,1.837918,42803.97,1.41,244724501398476,5815855564,111362752839713,3846499606,88808c89de7cf8c7ce5d9ea45b46402d, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,110,856400,39.090689,45.532713,47.419046,12.695268,19.138180,94.482579,93.131679,41.242978,42.948258,39.090689,45.532713,47.419046,5.524825,27088.52,0.93,194017866227199,5038355942,75646626796260,2607567633,f01f62491080a72aecf7f34e4b79df2d, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,135,389375,35.302250,42.960973,44.954926,10.654352,16.483804,89.535431,87.404403,36.816617,39.897256,35.302250,42.960973,44.954926,10.071915,42396.85,0.77,298799879815265,4418763017,118403917776472,2169561560,49a22d79db47ea6044696f5b497b1219, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,160,173762,31.952016,40.681920,42.545161,9.033535,14.359035,76.178458,73.866307,32.053998,37.130038,31.952016,40.681920,42.545161,10.082729,35299.74,0.95,200726182724264,3984115345,92235434964225,2614891492,7c660e75fa27f7f40a78a7ca6b59cb9a, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,185,75569,28.727052,38.424534,40.106437,7.325549,11.762747,55.079291,52.945968,27.067936,34.244832,28.727052,38.424534,40.106437,8.896698,20255.45,0.71,111942968063248,3204172138,52948160005712,2160247534,c51c04dc5de1b204223ef2386d0f91c6, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,60,6491248,48.775509,51.227214,51.577328,21.649710,29.965811,96.505462,95.502344,51.366156,49.599525,48.775509,51.227214,51.577328,0.000019,78479.02,2.70,545397361072700,14143122360,219157560251452,7564394209,7f54770d245e753a23e64c3e159694da, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,85,3555669,43.683377,47.747272,48.437278,16.930111,24.543714,95.264125,93.795010,46.975131,44.960685,43.683377,47.747272,48.437278,0.012679,71364.85,2.31,504502419034244,12667872899,199295506752815,6492774634,9b67c0ab883806af50d7ea2050b627a6, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,110,1635937,39.163983,44.426151,45.518309,13.079281,19.723819,91.537763,89.719051,41.666387,40.986917,39.163983,44.426151,45.518309,0.406970,64431.30,1.65,464642623223634,9332758973,179911800346526,4640825292,f3471bb2d8fc68db2d5d8b48874a70fa, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,135,776292,35.582689,41.299540,42.863881,10.799175,16.413852,82.370208,80.397503,36.420461,37.904886,35.582689,41.299540,42.863881,0.787606,93596.65,1.36,661258642742759,7549375493,261404148038858,3854218381,aceea3f327172da358091dc19025047b, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,160,327182,31.844835,38.462198,40.588841,8.422029,12.887448,62.307208,60.533173,30.756431,34.806137,31.844835,38.462198,40.588841,1.140864,61623.85,1.17,437928019516970,6404996487,172135186464650,3250649958,5c2c1c96f46a03b00b4718f1f98371f2, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,185,110074,28.364039,36.159934,38.711507,6.281107,9.459327,32.696564,31.532520,25.672621,31.846459,28.364039,36.159934,38.711507,1.424233,26252.00,1.14,185759727702387,5765531949,89738862217738,4248226051,2e7e75059f859f5e34cfe00078a78247, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,60,4803178,48.853146,56.902313,57.171196,19.326167,27.583868,96.785724,96.125184,49.778155,50.791203,48.853146,56.902313,57.171196,0.000007,126613.52,2.59,870570336450738,13743954701,353590628850241,7237414468,a7615f2ca15bb2ab0adbed9266aa2297, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,85,1288122,43.318944,55.252797,55.543171,13.719417,21.113416,96.448474,95.506541,44.540502,45.436133,43.318944,55.252797,55.543171,0.852797,93490.02,2.08,658064620385588,12413117351,261067981002226,5845595580,51069ba7cb732c8205f72c5288075559, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,110,204180,41.050662,53.329507,53.677417,11.681714,17.855485,94.989647,93.644013,40.941815,43.164071,41.050662,53.329507,53.677417,7.355060,23307.24,1.98,126367690556976,8767300199,59911095124881,5661570750,08b9d86b5d737220b5b9ccd40ccd8191, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,135,79826,40.205657,50.989949,51.375922,11.355343,16.793576,91.052633,89.239080,39.379396,42.264930,40.205657,50.989949,51.375922,9.704876,19274.02,1.30,129271084093479,6700603856,53822528818437,3642581598,91ce27a3abfad86794043a0af91d8801, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,160,37554,39.104047,48.085935,48.512702,11.095556,15.936016,82.952637,80.690022,37.559962,41.177035,39.104047,48.085935,48.512702,10.248425,9865.64,1.06,65923852264985,6536084992,33258245551771,3953122706,76a03cad0b8151123cde6d95a1f72f20, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,185,17614,37.388851,44.533439,45.149518,10.754503,14.874964,69.316692,66.766384,34.934700,39.540619,37.388851,44.533439,45.149518,9.692013,7459.65,1.34,36859263225448,6879084797,19411758207710,4094872853,276d92a65d712c1b2e1f14b81d4622ff, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,60,2392094,48.807721,52.927994,53.764472,19.607148,28.261358,95.811867,94.790264,50.018713,48.405442,48.807721,52.927994,53.764472,0.000140,100742.95,1.95,563487189097396,8100369906,260037000734673,5148259779,c7cd5209d2ca86663a3f7c14ddea109a, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,85,606371,44.199529,50.360579,51.705793,15.089338,22.338098,94.009877,92.467643,44.966931,44.549969,44.199529,50.360579,51.705793,0.187928,65946.11,1.35,371449931547639,5320469492,169790897095819,3676770554,e4de5efa4fd3e6d110d8106f6db4991a, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,110,259571,42.725212,47.615030,49.842188,14.156500,20.139580,90.324289,88.273812,41.788129,42.863545,42.725212,47.615030,49.842188,0.489201,20124.53,0.96,136096212563568,5009669103,56195263214921,2672154070,827a9823a7761311f085f677d32860ee, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,135,127374,40.841681,44.713668,47.887151,13.255519,17.916439,81.820498,79.357697,38.329457,41.012472,40.841681,44.713668,47.887151,0.718331,21797.98,0.87,149773094036079,4488169833,73619120884386,3183769894,f1f20fcdf74440ad5766a011722a6fd6, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,160,60154,38.147581,41.826071,45.881366,12.009367,15.289208,65.114391,62.696124,34.498733,38.724004,38.147581,41.826071,45.881366,1.004067,16219.99,0.88,91184582966382,4219340825,45538642688947,2701549436,44354c9a479a5a0ee287c2e538ad03c9, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,185,26848,35.024224,39.114182,43.657833,10.666223,12.486986,41.203501,39.356220,30.817987,36.037486,35.024224,39.114182,43.657833,1.339335,9395.04,0.90,46168680401179,4240425209,24748634999079,2627344854,cc64e5d264b6c5356d6dbe6104946863, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,60,2457035,48.920076,54.017674,53.454799,19.469365,27.856034,96.330362,95.424417,49.524641,51.212453,48.920076,54.017674,53.454799,0.403365,114876.60,2.29,644139381017986,8817637479,296307246232884,6065308569,76394c5d1193bb4d942b0898e9139306, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,85,585269,44.498078,51.867202,51.263786,15.205848,22.320632,94.825533,93.558452,44.881499,47.056316,44.498078,51.867202,51.263786,2.616801,48587.45,1.47,350869986689182,7975779045,163415658355191,5292900915,03f36182cb73640aaa7c192c71eb00ca, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,110,232173,43.027949,49.727613,48.863857,14.256690,20.466974,91.028614,89.396455,42.331741,45.372946,43.027949,49.727613,48.863857,3.016338,19401.89,1.15,130605906204446,6631428956,54185350142889,3265883025,53aea89a2d6f280e12b23a8539d85928, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,135,109905,41.337102,47.404452,46.098264,13.449670,18.497282,82.765886,80.718089,39.365951,43.604217,41.337102,47.404452,46.098264,3.097205,19438.76,0.94,130611258064941,5264908722,54288305299278,2596757436,eb07ac1c4592d6d44ae36565eb46af24, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,160,50923,39.021305,44.621760,42.924906,12.499504,16.076025,66.931579,64.825679,35.903962,41.269456,39.021305,44.621760,42.924906,3.303524,11507.81,0.99,70993899005228,5140143005,39432949632161,3674238143,d6861808821349bc7da3730b93b3d794, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,185,23163,36.374368,41.598214,39.462779,11.660646,13.625711,43.759060,41.422536,32.511272,38.491694,36.374368,41.598214,39.462779,3.709712,6276.97,1.11,32471039266920,5851970997,16447855269722,3130108860,62ff1c2bfe8a04fb1957a6d0126aebb4, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,60,4335820,48.731159,52.496224,52.705138,20.889990,29.818665,96.603734,95.749005,51.648060,49.060228,48.731159,52.496224,52.705138,0.000000,91323.18,2.56,513478087552047,10572189857,237119406721159,6786046939,41566d26bba5a3be92f1f958ab56ec09, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,85,1999287,43.136765,49.600162,49.997751,15.320060,23.588033,95.456567,94.167989,46.483100,44.460509,43.136765,49.600162,49.997751,0.162183,94004.52,2.05,539003576748621,9066387986,244233177398891,5481391914,55485c43d5d2b054df2a2347db47ed25, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,110,682208,39.192499,46.700069,47.364948,11.858789,18.934602,92.115734,90.438372,41.002646,41.048491,39.192499,46.700069,47.364948,1.166650,44121.59,1.26,312304349423386,6884051449,123217034073191,3541284024,ac07ef9c14d56c912b114e457b1be381, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,135,311427,36.778067,43.822868,44.688909,10.512961,16.741115,84.583012,82.469766,36.802758,38.817587,36.778067,43.822868,44.688909,1.339051,53167.44,1.03,370987971891235,5976157114,148472144011442,2903353903,cf8380d38d65b247f7aa71974f87934f, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,160,137836,33.940105,40.937010,41.755563,8.978951,14.010376,68.827332,66.403409,32.027161,36.306322,33.940105,40.937010,41.755563,1.538310,36957.57,1.00,209070257814155,4068656793,96397933412635,2825476936,170ae46aad53748e3ffd34b2e4047f76, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,185,56084,30.872785,38.086232,38.843890,7.438501,10.989663,44.293876,42.044882,27.568596,33.568032,30.872785,38.086232,38.843890,1.600869,17688.69,1.05,95047681977225,4480360607,46140114134927,3056203323,7b25e307448b85a57a5ef69d27741fcc, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,60,3560592,48.687137,53.424480,54.037099,20.954458,29.303159,96.831761,96.049793,51.931951,50.482825,48.687137,53.424480,54.037099,0.000000,45585.96,1.30,313100309109419,6998940421,127302027267490,3637176546,fbf6daf22e0a5b05642ba2c97856e09c, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,85,1954773,42.935798,50.816073,51.617601,15.194653,23.203810,96.078377,94.948319,46.726389,45.804659,42.935798,50.816073,51.617601,0.000010,47641.10,1.12,326576378183877,6195069113,133041923099615,3136843981,c486b308ec63a7154a8d8356e8e6bd7f, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,110,667101,37.517804,48.697981,49.635952,9.709827,16.736612,94.173816,92.564863,39.988175,41.473606,37.517804,48.697981,49.635952,0.000494,39331.48,0.98,245834393689319,4474861759,110092222401624,2826000930,389f60a77d32fed3db7e4302722beced, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,135,205192,34.789097,46.807664,48.152444,7.766155,13.912196,87.243454,85.465347,35.950917,39.151591,34.789097,46.807664,48.152444,0.037103,42742.93,0.87,240975721218728,4176495432,110970782068109,2432877983,a5aeffccb2aeb94154acdbd548368350, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,160,92169,32.901779,44.758718,46.490550,7.106761,12.478763,72.911966,71.112708,32.543032,37.455463,32.901779,44.758718,46.490550,0.038458,18559.96,0.57,129463767463563,3313256433,51829927648083,1581491292,4df7df486f525228a42f47b9417ed189, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,185,41208,30.554914,42.441016,44.290968,6.445219,10.721624,52.766216,51.012907,28.614671,35.411810,30.554914,42.441016,44.290968,0.078919,12238.62,0.64,67178443015948,3177656615,31830345800991,1825331695,d145b7d8084436836178f72ed5d1be0d, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,60,3231232,49.075338,52.324743,52.313928,22.376483,31.329145,96.802073,95.998077,52.585859,47.956852,49.075338,52.324743,52.313928,0.000182,65996.35,2.15,371375915012890,8871594784,171831262910219,5828669316,f544b63b6509b136b3b59e90c68f94c9, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,85,1726787,44.671023,49.348486,49.333151,18.764813,26.332185,95.784164,94.562174,47.872799,44.247387,44.671023,49.348486,49.333151,0.001123,62832.71,1.83,355581742333469,7874584229,163748534638562,4974981980,c664760608a8e25da7d15e7f3246cc67, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,110,898781,40.780673,46.243217,46.460760,15.498468,21.579148,92.940910,91.240679,42.045514,40.997848,40.780673,46.243217,46.460760,0.004005,44713.62,1.27,317229025434338,7325790560,124863666169754,3558627074,e4136210d155bfd12ec16e0bc9197086, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,135,455264,36.945751,43.139513,43.949458,12.271400,16.976221,85.468485,83.331150,36.043803,37.772617,36.945751,43.139513,43.949458,0.018665,78173.10,1.41,439207045831176,6285904184,204191278259764,4027485348,c6f3bfcc533f07b05f02118a8e466f43, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,160,215260,33.019787,40.430779,41.981973,9.343814,12.742211,68.742880,66.550565,30.572057,34.561710,33.019787,40.430779,41.981973,0.104633,39585.44,0.90,276615699720708,4870748248,110559428490665,2525894250,4f477e83b9e95a59e2e8ea374edd6fd7, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,185,91254,29.270994,38.128233,40.015314,7.086904,9.257675,45.218589,43.642747,25.861703,31.541224,29.270994,38.128233,40.015314,0.420085,26023.00,0.95,143382163270358,4353477109,67840487044274,2673900685,5f5c119aabd96b7c2429c25121dfb4f9, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,60,3377196,48.645241,50.628398,51.403825,21.613002,31.214985,96.539858,95.646170,53.181170,48.787925,48.645241,50.628398,51.403825,0.001103,45740.05,1.41,318045504738517,7711509874,127738162679216,3951359151,d498bbf91ccb6b209f6146bfe7358000, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,85,1666596,42.920208,47.937807,48.883905,16.057153,25.193262,94.931718,93.767755,47.762719,44.354722,42.920208,47.937807,48.883905,0.010791,62614.83,1.41,356609568324026,5916856891,162784863818779,3757541461,f3b7cfdfc426053804b06329eedcbea0, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,110,634050,38.601624,45.025993,46.262880,12.288895,20.250562,91.264213,89.619197,41.209714,40.694189,38.601624,45.025993,46.262880,0.022090,42952.69,0.86,303086373806526,4676143320,119953891532008,2387984620,d78c0367b55193e1ad22040968e94c52, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,135,273462,35.911868,41.827220,43.511406,10.404266,16.947146,81.898329,79.857602,35.743561,38.082866,35.911868,41.827220,43.511406,0.046725,58144.09,0.89,326407175358471,4021549563,151938387307006,2461900661,824eb232790430ca7e63f69941c43fa9, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,160,129761,33.315994,38.417811,40.695115,8.767566,13.653261,62.759640,60.821024,30.898696,35.446322,33.315994,38.417811,40.695115,0.070092,30595.47,0.80,170245556469163,3622698236,80032020795113,2246087168,92799b0c170045974fd36ea1272d3d11, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,185,56826,30.215531,35.178922,37.973600,7.025280,10.166673,34.537939,33.426350,26.468199,32.525080,30.215531,35.178922,37.973600,0.210206,13644.38,0.68,75585735298392,3212862027,35566994581406,1937882642,1082d1f03ec5665d7fde145c7dc4f993, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,60,556072,48.442688,52.345083,53.722449,29.628863,36.595702,97.047305,96.150674,54.251842,47.914272,48.442688,52.345083,53.722449,0.003536,2738.95,0.21,21267702103464,1012845844,7648757525805,593303257,dbd6f8d58ff46aa60016598871190aa1, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,85,424812,42.838734,51.910630,53.246324,25.681713,30.959544,96.055371,94.837884,51.897042,44.424662,42.838734,51.910630,53.246324,0.000900,4375.65,0.20,28020569573721,794570088,11751017958597,529779924,086f9fd836d282a93799b8fb0165e8e6, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,110,300637,36.917260,51.359494,52.623416,20.462610,24.925727,93.526542,91.988330,46.685322,39.904271,36.917260,51.359494,52.623416,0.004851,5759.01,0.14,45033295018240,753891701,16084785200580,414309093,84df56d43448ce5a35c47b5c718ac993, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,135,187798,31.136007,50.474601,51.518113,15.003744,18.843911,87.069260,85.102179,38.290440,34.863719,31.136007,50.474601,51.518113,0.008633,16626.89,0.13,124325690947348,656503600,46431964066447,352138462,a2fc036da4a9c0fa2293c18bd03846a2, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,160,93366,25.489213,47.691150,51.222168,9.525006,13.277287,70.508638,68.390759,29.982482,29.522977,25.489213,47.691150,51.222168,0.004206,14448.85,0.11,104947283425081,538550170,40349492407483,279637809,bbb9da6cd53f2dd708979740b4cb2e06, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,185,26059,20.448891,46.547805,47.478257,4.370069,8.254804,40.377819,38.823977,22.856974,24.531458,20.448891,46.547805,47.478257,0.004721,8509.09,0.07,60607982788062,364530744,23764044956963,193868386,b4353cabf0a301a84bd0cc3379ba4ce3, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,60,129413,49.259010,50.263566,50.057747,21.154249,29.757042,96.921492,96.231707,50.016196,48.177779,49.259010,50.263566,50.057747,3.015435,6645.04,0.11,45424922477561,520474989,18561482250745,295072136,aa3ebc3af95edac4d034c4afb4538c8b, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,85,70674,46.659387,47.575956,48.428057,19.820567,27.510997,95.923754,94.846572,47.499546,45.778303,46.659387,47.575956,48.428057,3.403426,3705.63,0.10,25540624643067,504822636,10348672116917,273309505,934e549be67e711188306af743041fdb, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,110,39807,43.580522,44.338426,46.489906,18.337671,24.979106,93.604128,91.988557,43.945409,43.149649,43.580522,44.338426,46.489906,3.241103,4342.91,0.11,25221049322582,523750695,11348796280186,316366469,3a122ebc6615058758a6716893320490, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,135,22009,39.827721,40.795816,44.338958,16.225188,21.686549,87.501957,85.335083,39.110834,40.050861,39.827721,40.795816,44.338958,2.917927,4313.40,0.08,30704075673953,450669729,12047087953922,225311854,301cf08158d3b7821633914b3fb19a83, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,160,11664,35.763514,37.430052,41.985557,13.576079,17.871715,73.782558,71.387630,33.774454,36.724920,35.763514,37.430052,41.985557,2.590659,2675.68,0.07,18999376770699,389307141,7471707832434,195562476,cf86acc75e0c842a3f3b8cc162546c61, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,185,5745,31.626205,33.841030,39.910748,10.893741,13.990464,51.681804,49.302937,28.529154,33.144323,31.626205,33.841030,39.910748,1.537521,1324.03,0.06,9391009023278,353407471,3697459409969,170926228,931c7a96d44e52b5013602d2f54ccf36, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,60,604143,48.390154,52.413513,53.890624,30.322361,36.725278,96.959839,95.821419,53.679657,47.436051,48.390154,52.413513,53.890624,0.000072,3597.99,0.23,27297294011341,1061840381,10048418725589,629973858,120bce46530201d593c15920c0dd1a57, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,85,460655,42.935289,52.091828,53.430450,27.691442,31.733366,95.813368,94.288043,52.012561,44.204598,42.935289,52.091828,53.430450,0.000176,5206.44,0.23,33579609900539,964673623,13968087645791,619276635,e72ca9ef4849d12b56bc38cd00525c0c, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,110,323847,37.074190,51.543481,52.642631,23.282874,26.073147,92.951240,90.899524,47.963221,39.901470,37.074190,51.543481,52.642631,0.000092,7804.91,0.21,49849902622351,829353312,20776644785012,543483668,c8ed7b663851ded21de81f5f0b38c9b7, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,135,201515,31.371833,50.474459,51.704705,17.970942,19.984276,85.275139,82.690311,39.708071,35.032152,31.371833,50.474459,51.704705,0.000014,18201.59,0.13,135046962726506,682052940,50829362929475,368308475,97b9b56fa7d103c0069de76f4ca724e7, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,160,98435,25.673901,49.855949,52.000400,12.015222,14.005142,66.963387,64.477674,30.758497,29.896382,25.673901,49.855949,52.000400,0.000012,19518.80,0.13,117385524965910,563930083,51193867691886,358592960,cc94079c02dfb77e7208769c020899e2, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,185,28923,20.835203,48.908825,49.657313,6.601619,8.435726,39.796758,38.177137,23.256439,25.122277,20.835203,48.908825,49.657313,0.000014,8894.61,0.08,64829694394903,401241214,24839109605777,213087633,38f4059dfc11bbdd5ee3b97cdec2f82e, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,60,101200,49.757476,51.139656,50.703017,20.609415,28.145268,96.849559,95.951635,48.496734,46.460321,49.757476,51.139656,50.703017,2.326215,6566.33,0.08,47217758552617,385142920,22192145437319,299613564,753521b12cc30aa81a0909ef59641e5c, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,85,49524,46.776256,49.692021,48.731855,18.567623,24.732333,95.577838,94.409486,45.816147,44.658487,46.776256,49.692021,48.731855,7.506161,3501.66,0.06,24023820122672,313998690,9778750650853,199728251,6d75c7dc1da7a52e94322da2a700e390, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,110,24354,43.518711,47.878526,46.669647,16.446313,21.625182,92.248637,90.774157,42.710016,42.892230,43.518711,47.878526,46.669647,8.701295,2926.44,0.09,18008405821194,370578620,8218019376242,244683144,e8d1b749a3dfd0e5a71af58a4f0c0634, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,135,11323,40.066690,45.611691,44.289915,14.231900,18.637843,84.672549,82.803269,38.988959,40.912156,40.066690,45.611691,44.289915,8.819860,2284.98,0.06,17042855509702,246245124,7768208256852,204826703,87ae3a892723ccb7ea58cdea24aa475f, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,160,4836,36.600916,43.160046,41.617426,12.117857,15.568821,70.068598,67.647804,34.870861,38.635854,36.600916,43.160046,41.617426,8.736169,1168.74,0.04,8430346290611,204029932,3263817417656,117978774,c6241f79b6e8f69efb5338738b40fb75, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,185,1857,33.410087,40.791363,39.438027,10.385747,12.557978,46.586517,44.954861,30.814184,36.253201,33.410087,40.791363,39.438027,8.866984,445.60,0.05,3197274694028,256260131,1244394734486,124737826,c1b70802daddd420c9ab9de37b6a4b80, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,60,98966,48.691117,48.283833,48.721474,19.022463,27.511421,96.936348,96.064621,48.432357,47.000709,48.691117,48.283833,48.721474,0.029990,12161.91,0.11,87918279258474,483735772,41101684077584,371494229,f4f691936c099b35570257c27ec9e287, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,85,22898,46.087613,46.330920,47.479542,16.724034,23.386080,96.090524,94.905886,44.723615,44.868563,46.087613,46.330920,47.479542,2.316567,5140.82,0.09,27410637486998,353454982,13242728358350,244478697,bbbbfab14adb3318bd927e15557bda9f, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,110,9362,44.657105,45.596173,46.735961,15.944405,21.281009,93.969531,92.218304,42.422025,43.850560,44.657105,45.596173,46.735961,4.519632,1975.93,0.08,10664425589532,359810208,5068122781530,231537266,7b5bb68cb117b2c8db894e3f61195590, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,135,4667,43.023792,44.535361,45.626901,15.329623,19.574623,89.190029,86.698993,40.221373,42.696937,43.023792,44.535361,45.626901,5.423839,1108.48,0.06,7557645867091,374929400,3095782720288,180101394,665e0e731e9ab35660eeadc906c53d5f, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,160,2496,40.749594,42.800433,44.041174,14.526279,17.595586,80.369241,77.049772,37.423703,41.011460,40.749594,42.800433,44.041174,5.112435,627.39,0.07,3373608473068,339112341,1610007714707,192690561,b29bf12b459b77caae0fc2c2274ac04e, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,185,1361,37.677928,40.486757,41.961552,13.478396,15.287987,67.785746,62.674447,33.940258,38.737186,37.677928,40.486757,41.961552,4.508345,233.62,0.06,1533492263972,338060053,788957921011,220943725,5203c6a9560f429a8f585295bb1bc699, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,60,198296,48.682029,48.841783,50.312445,19.291154,27.585511,96.919998,96.140442,48.547434,45.610062,48.682029,48.841783,50.312445,2.152491,12872.52,0.15,72562912070224,612005699,33384369604597,400210184,5eae545ca7e22b63bc74c0a50804c0ea, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,85,66671,44.351076,46.239932,48.162865,15.400226,23.318309,96.081707,94.960419,45.466648,42.965293,44.351076,46.239932,48.162865,11.657739,7747.99,0.11,44589542448212,519041215,20103829621990,321812667,80ae640acf40667f113c00e8d1c32af9, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,110,22080,41.830430,44.858640,46.542375,13.540539,20.360044,93.279999,91.879851,42.120597,41.517018,41.830430,44.858640,46.542375,11.748162,3652.50,0.09,20954926246291,406602164,9511764227127,262820139,3a4d8658534894493a579d237c1ecb34, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,135,10012,40.040123,43.216220,44.567759,12.911410,18.957708,87.424924,85.538066,39.490897,40.309321,40.040123,43.216220,44.567759,11.622590,3281.30,0.08,18645244257176,349840313,8563993415795,224992534,d560192935070356195d4094f35167f7, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,160,5015,37.891484,41.151970,42.402792,12.276819,17.468401,77.042351,74.602036,36.219123,38.834936,37.891484,41.151970,42.402792,10.912708,1695.61,0.07,9790895638762,348853421,4433136736930,208612576,058f25fe92d015c5095eedf4921eebf2, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,185,2604,35.009391,38.769218,39.844599,11.327190,15.275745,58.831839,56.049409,32.027603,36.856174,35.009391,38.769218,39.844599,9.364482,675.45,0.06,4845491040384,382246936,1886491458871,169220287,3116459a129b1fa0b5e45e977f643c7c, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,60,546215,48.955228,49.270862,49.121631,24.194502,32.517330,96.880055,95.919700,52.720803,46.611735,48.955228,49.270862,49.121631,0.009507,7053.69,0.25,44244388039368,1116561253,18894433870897,679879679,02fa40facb24119c045a30a86e82bbe5, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,85,371942,43.610846,44.751000,45.153488,20.069676,27.885471,95.679435,94.428709,48.680124,42.076290,43.610846,44.751000,45.153488,0.027914,7866.91,0.23,47683060150303,984027481,20918554926812,615621222,c09f0ade5628322b7a02158ed6c76083, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,110,233710,37.914372,41.115599,42.390064,15.661419,23.109717,92.505434,90.973345,43.243860,37.912448,37.914372,41.115599,42.390064,0.063398,8378.96,0.16,64367361226429,864326526,23398780020365,471360316,12c8e1fb195b24146a75feef0659069f, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,135,121971,32.046413,38.764341,40.396219,10.914078,18.028677,84.220269,82.467501,36.603752,33.791360,32.046413,38.764341,40.396219,0.091491,16495.46,0.12,121670640017906,703612195,46065489782997,350032920,2c360909accd739358338317d861805e, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,160,38687,26.859938,36.834515,38.406352,6.455226,12.843413,65.266800,63.233913,29.544245,29.782563,26.859938,36.834515,38.406352,0.053165,11402.44,0.09,82657689640740,454950590,31844578506684,239631843,dcc2179a253d3193c96230a58ef3ebd8, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,185,10486,23.988923,35.133742,36.665514,4.128058,8.743810,35.001538,33.644246,23.686327,27.237450,23.988923,35.133742,36.665514,0.147915,3497.54,0.06,24947169726887,338471395,9768341401094,172228701,a04bda5627ab28a01498e406a818c2c8, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,60,400589,48.763052,50.192082,50.521068,23.600012,32.420735,96.701715,95.724501,52.934268,45.682089,48.763052,50.192082,50.521068,0.022871,3860.07,0.17,27218205329494,874590351,10779702672160,483108423,5ed053182c064b56b21fd84441589023, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,85,270033,43.149725,48.444446,48.924996,18.555449,26.926047,95.190330,93.901068,48.726286,42.457274,43.149725,48.444446,48.924996,0.109262,5080.48,0.14,37605450552322,746879495,17476932585502,504297774,7877a6e964ee45e335bc583f7af3c911, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,110,161880,37.555511,46.783934,47.405995,13.656609,21.340423,91.327926,89.735336,42.655555,38.711376,37.555511,46.783934,47.405995,0.145780,9776.04,0.13,58951088910738,551419314,25681667940607,365132936,2b4ce0c801ea18cd4598a2169914f2e4, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,135,80171,32.244462,45.163186,45.862394,9.530434,16.247866,81.415639,79.623996,35.768813,34.680875,32.244462,45.163186,45.862394,0.174424,14695.22,0.11,87261743764732,506891601,38494409165211,317799587,89383a59a1c2dd3f310091aa5a98a373, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,160,24383,27.442409,42.821587,44.154247,5.771661,11.552360,59.022726,57.387338,29.229209,30.674997,27.442409,42.821587,44.154247,0.345635,7136.62,0.06,51491101017536,355901790,19929691424351,182308204,e8c71e0722166bf1ab6fe033d98b5d87, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,185,6401,24.827495,40.764305,41.936130,3.850902,7.863262,27.762809,26.836671,23.952644,28.130143,24.827495,40.764305,41.936130,0.621707,2341.75,0.06,13297493847079,309862633,6079102838919,189590265,895f302e15902d39b76497f6fe492c98, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,60,320695,49.130360,49.602449,50.191456,22.883469,31.592894,96.995969,96.232288,51.561714,46.653202,49.130360,49.602449,50.191456,0.027407,6202.47,0.18,39183880412251,775412975,17529129972321,502279752,61598c31a2e419cd97c3d60fed8ea8bb, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,85,196921,44.337091,46.351325,47.113831,19.314811,27.538121,96.147490,95.042429,48.124470,43.048809,44.337091,46.351325,47.113831,0.102524,6611.14,0.18,38098061673573,704293017,17390607345341,480233162,e9701d4c8ccbe9d37246ad52d1ee1051, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,110,109771,39.350913,43.285320,44.171025,15.449115,23.113866,93.589002,92.126175,43.077630,39.619233,39.350913,43.285320,44.171025,0.168010,8186.96,0.15,49580949840727,605280109,21568792539667,411498706,972386d6f41e86a7d6cc3ea6390a2f85, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,135,54273,34.661725,40.464866,41.192991,11.901111,18.827197,87.712434,85.718063,37.120554,36.230048,34.661725,40.464866,41.192991,0.181732,10832.58,0.12,69674182969422,581512018,30591176763477,360721787,e60e683750e12320a13e5ca38b7af4d6, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,160,23520,30.491163,37.801836,38.618573,8.899906,14.763616,73.563571,71.253192,31.150845,32.986228,30.491163,37.801836,38.618573,0.177963,6150.29,0.07,43869269512061,465897669,17175223972572,229649991,3975926d0feb668a23d951cdea17cbef, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,185,8929,26.961458,35.119079,35.852272,6.486021,10.912885,51.117298,48.929023,25.630570,29.938385,26.961458,35.119079,35.852272,0.179933,3227.59,0.08,18200266185286,324787237,8365119803333,250518963,71c891ccf7de7fbc35ef8cf5abcf8527, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,60,350987,48.705018,48.972907,49.277549,20.789487,29.520964,96.737903,95.784752,50.663031,49.972509,48.705018,48.972907,49.277549,0.000675,11026.57,0.19,63994777175231,831996372,28849116623024,497236703,60def5442ec9b00a1249f58f6973abc4, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,85,188411,43.453575,46.724254,45.450237,16.155077,23.974050,95.592406,94.294265,46.158404,45.386230,43.453575,46.724254,45.450237,2.362938,7389.51,0.15,44392770495708,587490032,19420203656126,396056032,efd91889489fc2af8325cce1fa826644, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,110,93681,38.831497,44.731128,42.182814,13.197292,20.703367,92.333409,90.662924,42.370787,41.841131,38.831497,44.731128,42.182814,5.024283,7721.91,0.11,61126610854935,562738660,26526345158886,380174158,d089c44af2ca0474e1d321138155237e, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,135,37314,34.548383,42.644425,39.427971,10.080943,16.892044,84.080643,81.881842,36.778434,38.605445,34.548383,42.644425,39.427971,5.318863,8489.35,0.08,66079587959343,463416031,29067798121382,287133845,1c2b92a363472070546ac277b720418e, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,160,12877,31.233653,40.342512,36.845760,7.567500,13.033929,64.392559,62.460317,31.028344,35.909251,31.233653,40.342512,36.845760,5.941250,4911.67,0.09,27789599797697,401407511,12862688054344,277204908,af4a346c7d8823eb7b9c722f868720b4, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,185,4209,28.686891,37.388500,34.349592,5.981665,9.896171,37.390407,35.822597,26.571402,33.582453,28.686891,37.388500,34.349592,5.469359,1131.91,0.05,7988430887979,308424237,3161236858304,154609666,ab75264fe509f034b3e15a01b0773b07, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,60,222894,48.763964,49.962699,49.541446,20.368130,28.987612,96.543874,95.554642,50.150706,48.904925,48.763964,49.962699,49.541446,0.419281,7163.36,0.15,49292599931172,690297321,20005555040008,407663426,c6633df891dfb09f5d7a66792641253f, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,85,116037,44.774882,47.480860,46.370273,17.201947,24.672250,94.911220,93.614986,46.254477,45.605165,44.774882,47.480860,46.370273,1.457475,5308.89,0.12,36791955764006,573318340,14826995869267,340401751,c0c7022e6d20ecd3078a3bd272805949, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,110,62127,41.064897,45.068565,43.221043,14.744847,21.063186,90.705245,88.964078,41.984709,42.729646,41.064897,45.068565,43.221043,1.611437,4947.72,0.09,35261106835826,502426607,13816833696040,274068827,7cd5e584a01f95bf56b631f831a62438, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,135,31520,37.095319,42.795016,39.923582,12.181281,17.362677,81.363955,79.143810,37.169565,39.720668,37.095319,42.795016,39.923582,1.570541,6937.56,0.11,41065428375551,441488281,18183591805895,317650394,8918dc0891380e00d2a29d5b482547fc, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,160,13620,32.956756,40.470371,36.694587,9.443963,13.321112,62.687015,60.180735,31.926403,36.568688,32.956756,40.470371,36.694587,1.588233,3826.19,0.08,22696912477849,319352992,10007227822553,221101517,a39c7bacb44edcbc0f8ab16046de31a8, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,185,3819,28.990242,38.200061,33.494019,7.057466,9.212594,32.338375,31.329286,26.791426,33.408329,28.990242,38.200061,33.494019,2.072637,1290.62,0.07,7379872362954,294037134,3348692305294,190654069,044c016a2a732e543feb62d8a027c883, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,60,377996,48.945154,49.565506,49.518413,21.567122,30.107048,96.060005,94.794538,51.646752,47.211146,48.945154,49.565506,49.518413,0.218989,9656.51,0.21,54379957304663,878676441,25210366386278,583386200,b389e60a02fe557aabbe8c24fc255992, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,85,224139,44.066926,46.506023,46.180097,17.698324,25.541238,93.710041,92.146473,47.582257,43.392227,44.066926,46.506023,46.180097,0.517820,10461.29,0.18,60459699089156,740337640,27413382014158,494570478,e47b1c17316255b50c77ce9b1b8540dd, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,110,110493,38.726002,43.849661,43.376130,12.994424,20.443673,87.909421,86.131966,41.945608,39.652555,38.726002,43.849661,43.376130,0.497505,10791.43,0.13,82868836277770,622853430,36973084637717,456573047,0de8041563512308efaf97bd6f29e9a8, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,135,35590,33.953721,41.459609,40.957080,8.455370,14.971770,73.925358,71.908679,35.389178,36.114128,33.953721,41.459609,40.957080,0.681010,11166.84,0.10,71387215460567,461836406,31527100442445,294172938,88d0a6bbfb99b641877e5f0bfc897fc3, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,160,8906,31.058437,39.218023,38.706850,6.031884,10.791817,45.450662,44.030322,30.205361,33.525225,31.058437,39.218023,38.706850,0.642962,2502.40,0.06,17848885716284,389916451,6987491133615,189752693,b44c615b02a0054d54b092efc8a5c854, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,185,2593,29.353954,36.733817,36.387021,5.081472,8.150626,14.383659,13.742082,26.962829,31.620794,29.353954,36.733817,36.387021,1.146965,760.35,0.06,3976817496446,244770617,1943247124143,165479434,5cae78b77a2a2a13a77a2237a656a32b, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,60,363946,48.770981,50.297164,50.289340,22.499826,30.981385,96.921274,96.048654,51.626130,46.682903,48.770981,50.297164,50.289340,0.673529,6125.44,0.15,44132231468212,780850472,17110244680287,431836214,bb9286a42e7ee035e49f563b5a9eb4b4, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,85,231954,43.384198,47.941555,47.702916,17.856352,25.796455,95.897773,94.729733,47.695510,43.164631,43.384198,47.941555,47.702916,0.768734,7981.99,0.14,47905440334447,574410499,21029553188133,373368883,d07cbe5bdedc1eccdb51e57f9d46e217, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,110,126747,37.675889,46.499053,46.133258,13.027303,20.962882,93.345556,91.682449,42.766607,39.441239,37.675889,46.499053,46.133258,0.683781,9304.78,0.10,69804406494278,487459608,25992395341107,267460436,de59642101ee1d8d584a36f347bdaf79, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,135,44539,32.329266,44.984143,44.525925,8.059789,15.246936,86.297930,84.204256,35.865779,35.380427,32.329266,44.984143,44.525925,0.589596,10772.74,0.08,76923449086038,436343159,30083876869237,219341437,09f101236dd554cdc1ef61f5f0d78346, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,160,11769,29.181003,43.135817,42.722166,5.502839,11.228893,69.743831,67.675832,29.933534,32.677619,29.181003,43.135817,42.722166,0.669781,4171.56,0.06,29819466562385,331240185,11649492237253,163313971,17b0ef17461ef36781c6be7962553352, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,185,4358,27.198826,40.737559,40.606167,4.637145,9.297152,49.137843,46.533081,26.149689,30.832688,27.198826,40.737559,40.606167,0.850189,1890.96,0.06,10571216502131,259608250,4889268794787,162021028,7575a8c6216eaafe4a7572a1e9e93b2a, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,60,453265,48.785253,48.325106,48.245356,23.858834,32.573311,96.946710,96.130543,53.312162,45.037933,48.785253,48.325106,48.245356,0.035090,6572.50,0.22,39010234414491,915724966,17512509335187,611705242,d5cbc0c50d7cc805c9ed45562f6ac498, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,85,285787,42.962244,44.050768,44.067625,18.328677,26.967180,95.987518,94.816942,48.578535,40.577749,42.962244,44.050768,44.067625,0.287427,5909.57,0.14,43320307676647,730132850,16502793405009,403592356,3f859604f26df70bedb4676f977dc8d3, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,110,157837,37.171753,41.243305,41.609382,12.958091,21.128793,93.041793,91.600349,42.415430,37.045906,37.171753,41.243305,41.609382,0.357527,8616.55,0.11,64687011200753,600807901,24062420151949,326611662,622cbda69171f0aa874cf1042f5fa0f5, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,135,75686,32.129265,39.227931,39.772885,8.997345,16.151659,85.736071,83.799772,35.696345,33.631669,32.129265,39.227931,39.772885,0.648440,14395.25,0.11,86941793639325,488460831,37842693975775,301280342,1ab5597631fef500c72b35235d775d06, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,160,27385,27.793528,37.287250,38.108530,5.829451,11.568908,68.922056,66.647810,29.327764,30.421150,27.793528,37.287250,38.108530,0.771612,7234.65,0.07,51131060198969,383697885,20203372727855,194969436,a86085e5ba5121c4e101b8e3e5a413d7, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,185,7736,24.662950,35.244052,36.160104,3.890814,7.957642,42.947406,41.432423,24.087371,27.870902,24.662950,35.244052,36.160104,0.691871,3103.71,0.07,18003026936640,275141103,8090847184136,180118965,e3f32982c9c87e977e6707fe510e033e, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,60,268386,49.222812,48.977117,50.386844,21.929480,29.853696,96.931747,96.120664,50.293689,45.788782,49.222812,48.977117,50.386844,6.168174,6898.76,0.17,39389173911875,689464501,18075614940018,457901326,892e98ae130c875efe0d58362b15076b, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,85,159836,44.700713,45.982523,47.755190,18.474009,26.002056,95.833907,94.678005,47.348467,42.914159,44.700713,45.982523,47.755190,6.636625,6611.91,0.16,38552639243430,569528889,17356654352223,442152907,eb033aac98b0277e8794b64f0e949e4b, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,110,89863,40.107987,43.031892,45.546585,15.066070,21.811374,92.841141,91.349425,42.725159,40.166370,40.107987,43.031892,45.546585,6.704792,6871.94,0.13,40773432854097,574829513,18102883829351,371977329,0aa4889f3a15d073e89788ddead73df7, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,135,45875,35.541816,40.560250,43.585584,12.082089,17.895826,85.773525,83.697158,37.493150,37.345484,35.541816,40.560250,43.585584,7.094012,7583.47,0.09,56283968319861,510154370,21180140334807,266195578,6c00eee9536be74cf09b132f5b60720a, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,160,18837,31.051373,38.267041,41.651794,9.352233,14.430462,69.632508,67.370753,32.127466,34.377958,31.051373,38.267041,41.651794,7.737522,6275.95,0.09,37282926344845,424749732,16466808112872,249057619,7185d322fe43cddfde6104c83decb23a, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,185,6238,27.499667,36.023721,39.809800,7.038355,10.926364,43.398260,41.766590,26.596371,31.575007,27.499667,36.023721,39.809800,6.412931,1980.37,0.06,14494335273663,328212857,5530410773676,163743041,63138c4e8ef021f4a079a0231a487ca2, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,60,91812,50.341932,51.863901,51.614610,23.019737,30.585544,96.987588,96.236244,48.250117,49.396607,50.341932,51.863901,51.614610,0.000173,8940.22,0.09,60959623987511,336973180,24966646543326,244204565,eee5acc160249eaeb19ba4cf24c7f3cf, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,85,54488,47.744749,50.029434,49.761217,21.945818,28.870493,96.157755,95.128423,47.155961,47.714978,47.744749,50.029434,49.761217,0.001314,5344.75,0.06,38346846786732,284870025,14925671008039,174692728,9a661a2782897424282add4d88a23187, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,110,31494,44.067116,48.013568,47.724628,20.281210,26.733058,94.113036,92.738008,45.416000,45.795960,44.067116,48.013568,47.724628,0.001190,5092.57,0.09,30295603643369,382973999,13408095202091,233050755,dd58828ed7853cbfcbec972217e9ecb4, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,135,16462,39.693446,46.091430,45.237888,17.856020,23.838190,88.855214,87.048636,41.614061,43.502376,39.693446,46.091430,45.237888,0.000181,4918.69,0.07,29326821847614,308797908,12974475840554,197270314,908013c42cc55148a8a9707c19324f61, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,160,7644,35.452949,43.735704,42.567291,15.040513,20.399741,77.567408,75.216826,36.087508,40.709345,35.452949,43.735704,42.567291,0.000418,2867.12,0.04,21747776416355,279459679,8006650228685,136713323,23b0b8ecdf4fcf0000b877ef616ef0ee, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,185,3208,31.779425,41.680820,39.744761,12.239788,16.781652,58.484608,55.835557,30.531333,37.927294,31.779425,41.680820,39.744761,0.003806,2115.68,0.06,13260255504003,301114705,5650453589457,169746881,94b6df5c8a1ca3d7415fba5c6c309e05, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,60,195112,49.110229,49.675957,50.150786,21.492277,30.021172,96.706446,95.742323,50.860776,48.820040,49.110229,49.675957,50.150786,0.255780,7418.49,0.14,41972144622840,519524525,19276931946393,376297432,66c6442f51cfb30ef2bbe29b96849140, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,85,106788,45.572814,46.631058,46.619910,19.186811,27.065871,95.517893,94.156616,47.996877,45.648567,45.572814,46.631058,46.619910,0.494745,4682.67,0.08,32276734633536,424487885,13076594987202,246239342,329f46006cc3451a6ebffbf558e09d1f, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,110,56315,41.655382,43.622886,43.145120,16.500510,23.459208,92.542562,90.695204,43.230658,42.543556,41.655382,43.622886,43.145120,0.549897,6333.55,0.10,37560278084108,424667156,16604874369007,272967826,0e1c51420276f901efd9cad9b481abf4, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,135,27452,37.597407,40.541475,39.893363,13.506378,19.447264,84.883524,82.634591,37.362779,39.350332,37.597407,40.541475,39.893363,0.567717,5171.29,0.08,38524725864578,424173011,17648107300327,283651174,2e94439a74baa5f663ed43ec652cbaad, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,160,12482,33.772769,37.574156,36.729241,10.608013,15.373229,67.039647,64.895287,31.657615,36.134607,33.772769,37.574156,36.729241,0.662910,3518.98,0.08,20247891151468,353676754,9214321040420,250749650,0199df3ba0e5d32b5bfdab1a11bb998e, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,185,5189,30.229478,34.894642,33.665935,8.088500,11.498779,40.858884,39.200043,26.757111,33.086183,30.229478,34.894642,33.665935,0.613750,1049.17,0.06,7587153662296,342003080,3547298134510,224179817,110ddb70ae5eabdbd29e02cfb457d59d, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,60,306719,48.741802,48.572800,48.639411,22.541917,32.182926,96.918568,96.144059,53.591984,47.555389,48.741802,48.572800,48.639411,0.364510,5879.34,0.19,32956960528180,755640941,15379719470115,537951732,adfb7abda178ecd9295d36f251c0b671, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,85,169911,43.855274,44.583664,45.027102,18.378465,27.191379,95.799241,94.725593,48.666244,43.322351,43.855274,44.583664,45.027102,0.359968,5874.24,0.16,36272802368931,679723256,16522307603076,456602878,fffbf2148bf263ac7d7b3426720baff5, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,110,87115,39.487486,40.876317,41.707077,14.740827,22.575153,93.124641,91.598589,42.323387,39.645315,39.487486,40.876317,41.707077,0.357943,8160.56,0.16,47772723245900,609708471,21337511087229,428924122,b789a389a6d7b953b456093ef2516ce8, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,135,41870,35.465775,37.519710,38.568098,11.494537,18.195940,86.050618,84.098823,35.827458,36.220518,35.465775,37.519710,38.568098,0.387827,8503.78,0.09,60420460984228,507931514,23749122158522,261127221,535d9618ccfa4119ea9ce3d1c4f12c90, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,160,19056,31.732540,34.301381,35.497435,8.730730,14.201422,69.795368,67.834981,29.961289,32.938941,31.732540,34.301381,35.497435,0.802474,5284.43,0.09,32334321236103,414657911,14829256194543,293003059,38c758f3aa7f815681f6d9129abe5301, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,185,7905,28.199516,31.386819,32.515113,6.410681,10.474491,43.528815,42.208560,24.967603,29.771900,28.199516,31.386819,32.515113,0.759357,1898.12,0.06,13089406429652,334680758,5300943974632,194511941,39f5e9a04b36b1d5d3f3e99a1264bbdf, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,60,474724,48.778685,48.620585,48.409723,24.463805,33.904072,97.086401,96.396062,53.905055,45.584290,48.778685,48.620585,48.409723,0.003312,4511.40,0.18,32611874886001,945940073,12598540363759,526758636,3cfff9b7968cce99beb3fedb8e3aa7e8, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,85,308402,43.148104,44.497084,43.873100,19.299914,28.522972,96.327927,95.278201,49.404920,41.241924,43.148104,44.497084,43.873100,0.060007,4816.81,0.17,35352620459827,878115959,13451063717032,491443083,17553f91c9d030b9e702006be7cc9263, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,110,174820,37.493875,40.687573,40.156868,14.107235,22.845715,93.985267,92.588605,43.069875,37.169776,37.493875,40.687573,40.156868,0.096455,6892.34,0.15,50476271318742,773223496,19247679131816,408510335,b7cd1861de18394d2bc13392c760fe7d, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,135,84133,32.482486,37.146082,37.056059,10.031448,17.801622,87.875173,85.980788,36.201716,33.360963,32.482486,37.146082,37.056059,0.174266,11798.19,0.12,86202018106268,588019971,32947333894135,332106331,b742ec6e868c39d64c9bc1cad082a56a, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,160,34606,28.202759,34.067325,34.261295,7.344627,14.042443,74.237480,71.829671,29.971478,30.037644,28.202759,34.067325,34.261295,0.358490,9118.76,0.10,57020871280635,476971754,25618178014589,302848879,150848e690c53cc9f36fbb2aa592206a, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,185,12840,24.778716,31.567302,31.752794,5.214510,10.659174,51.338625,49.342122,24.304306,27.163526,24.778716,31.567302,31.752794,0.339864,4840.11,0.08,26733874875171,373301009,12531986875875,262973669,3f12f716ac70a759c40a01ed8cccf558, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,60,544091,48.728080,48.043542,48.141483,25.483373,34.460919,96.943810,96.115436,54.633603,47.903607,48.728080,48.043542,48.141483,0.000000,5409.16,0.25,33360237422946,1068856307,14471683617962,697532060,a716945894b505fc745dd0762300445d, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,85,352797,42.708078,43.620773,43.523767,19.309155,28.326179,95.938005,94.752764,49.390150,42.616593,42.708078,43.620773,43.523767,0.000111,5113.99,0.16,39656778290404,822140959,17621253230108,569452617,3008a02d041d7904c0ee2a9f58c1abee, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,110,207036,36.856470,41.062012,40.812016,14.085820,22.337634,92.867109,91.392381,42.904976,38.153611,36.856470,41.062012,40.812016,0.602593,8164.89,0.13,59592380474782,706607932,22801032061962,388325872,845b069464f412ae84714196bad66d66, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,135,100117,31.342003,39.021545,38.688712,9.671995,17.365633,85.548495,83.472735,36.071080,33.790169,31.342003,39.021545,38.688712,0.706937,18277.66,0.14,108869422526910,612886267,47881778002269,385758534,77a61350abb4384edab6a6a3acc01f7f, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,160,34856,26.840497,37.113455,36.823573,5.936818,12.479250,68.199126,66.114512,29.071012,30.025927,26.840497,37.113455,36.823573,0.808330,10960.69,0.10,68495237881038,445794085,30773037235024,281234770,bf9eeba7258dd7617d52513336fb5a61, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,185,10555,23.765103,34.938456,35.399804,3.612957,8.365412,40.476766,38.752517,23.121540,27.189643,23.765103,34.938456,35.399804,0.781153,3317.41,0.06,23292392355827,318388399,9264544803491,162529059,7accbaf5ac8d7fe375adb45edfdbcdd4, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,60,647594,48.790533,48.906491,49.133295,24.150659,33.121808,97.080753,96.347973,53.266224,47.188899,48.790533,48.906491,49.133295,0.040414,5448.36,0.25,39869411694023,1285174338,15214825058192,714798209,b384cd15147689aca415882769996371, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,85,452849,43.529281,44.117647,44.508422,20.596745,28.937020,96.246257,95.175245,49.463345,42.453626,43.529281,44.117647,44.508422,0.068642,6409.51,0.30,38802447393159,1233919910,16991714991683,823175400,95421e3e807c5b96b968cdf19d250b2a, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,110,295118,38.212162,38.992879,39.876948,17.143103,24.803958,93.985127,92.529831,43.996538,37.904283,38.212162,38.992879,39.876948,0.123429,8583.10,0.26,51194236349493,1054719912,22728979619369,741061250,64b4f3908df6101381895259e4c595ed, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,135,171021,32.751573,34.076121,36.444296,13.464389,20.428056,88.158397,86.078337,37.457532,33.579916,32.751573,34.076121,36.444296,0.157065,20255.13,0.19,122425361249533,866477041,53422132311769,525148468,3b21857c2b0a1aedcf57ef1b73fdb9ac, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,160,78716,27.214199,30.478553,33.955115,9.532275,15.869502,73.417521,71.142096,30.407732,29.471013,27.214199,30.478553,33.955115,0.191004,17032.18,0.16,99897151934379,674749490,44677288229238,463350092,109abfcab13c2d3507b08e2494b61615, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,185,25663,22.739117,28.240877,32.108188,5.829172,10.836863,46.544364,44.716473,23.544560,25.930903,22.739117,28.240877,32.108188,0.252500,7450.69,0.08,51847065170652,485575142,20806760587013,242021615,40558863814364e99a5fd6e90c44fdba, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,60,435057,48.935331,48.607943,48.655369,24.434457,33.740007,96.879422,96.055259,54.012330,45.516199,48.935331,48.607943,48.655369,0.773719,3659.34,0.26,21429029086985,1033473423,9645349206965,691223813,bd4c6171630439cda4e02e9ad5061339, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,85,270553,43.955656,43.664001,43.996963,20.627503,29.285743,95.717067,94.561481,49.803881,40.872937,43.955656,43.664001,43.996963,1.113114,3175.01,0.20,24220160441820,1058797878,10899032392921,725564577,2ad49f94e1916442efbe1f974d261a04, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,110,150539,39.022794,39.216374,39.977858,16.683824,24.567769,92.814148,91.160278,43.424352,36.800549,39.022794,39.216374,39.977858,1.112584,5867.86,0.17,43231676823284,916804139,16384610224935,501154858,b737165519707fb881713dd895000a21, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,135,75012,34.205453,35.428832,36.633429,12.648513,19.718231,85.166194,83.223797,36.260051,33.146494,34.205453,35.428832,36.633429,0.912821,15872.35,0.16,93051217919197,697479824,41595567825576,438981513,d5ba5694e78c858d20394188636a376d, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,160,33044,29.781306,32.431671,34.050501,8.855307,14.883453,67.381529,65.509551,29.488999,29.828454,29.781306,32.431671,34.050501,0.767506,10709.78,0.13,61291062186950,523533804,27930817144821,351414480,376a622fde40824027e4bd6a73079ed0, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,185,12553,25.858374,30.036829,32.145132,5.698552,10.266099,39.102074,37.318070,23.626546,26.804326,25.858374,30.036829,32.145132,0.660947,3526.03,0.06,24874204507332,344484786,9847721118718,180897166,8f77853bce4a55ce89a39a510c4e9b2a, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,60,128769,48.775446,49.929128,50.480034,19.452697,28.210658,96.015698,94.765646,50.184907,47.639741,48.775446,49.929128,50.480034,0.000287,9207.74,0.09,62275343627320,459058609,25716588386730,259843355,fcf195f525e3a8561822ac749f92ac75, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,85,49584,45.213951,47.722740,48.072855,16.194677,23.259584,93.911678,92.323226,45.345001,44.767262,45.213951,47.722740,48.072855,0.015047,7341.21,0.10,39481100850787,358726071,18915641295269,275607642,5a27370dca2f9c0c9103608b7d1ddd63, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,110,20515,42.528488,45.642103,45.648832,14.068843,19.420053,88.551987,86.688087,40.617547,42.481874,42.528488,45.642103,45.648832,0.067774,2568.42,0.06,17686156365461,275375865,8604682082734,215057177,6b5128302fd8857529dcb83591087dfd, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,135,8646,39.910116,43.638763,43.205716,12.386091,16.089440,76.313985,73.779840,36.578534,40.250362,39.910116,43.638763,43.205716,0.350721,2034.00,0.06,10658683901765,233678286,5206184787037,167859823,d4bcecbdb44ea947de3adf8cebf2b95b, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,160,3542,37.202100,41.591982,40.726299,11.052680,13.162092,52.227428,50.567856,33.188614,38.001659,37.202100,41.591982,40.726299,1.014255,761.61,0.06,4013283073921,212321776,1936038363487,177667435,7b43c100048d456f20c44cd87e37a57f, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,185,1360,34.426792,39.355392,38.386485,10.068132,10.563405,25.393411,24.699147,30.121847,35.495464,34.426792,39.355392,38.386485,1.664928,271.92,0.04,1418151166461,174669118,690785424441,112046507,0ed26f5e04c27fc6b7aed28c1123fc22, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,60,284078,48.823266,49.707420,50.214615,20.730743,29.573447,96.973664,96.301267,51.032142,46.396648,48.823266,49.707420,50.214615,0.000153,9698.40,0.17,54270731028375,737884411,25260480694823,457401461,5e1ff7e84f43f624b25f91e64dc3f274, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,85,132427,42.675009,47.901500,48.065593,14.596887,22.946998,96.083575,95.087999,45.767420,43.208840,42.675009,47.901500,48.065593,1.909099,8140.12,0.11,57773942769301,484578141,27621596486798,355970442,7d9a5e1b80d029b442ca1c2896cae6a4, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,110,47450,38.374227,46.176965,45.941713,10.954971,18.434758,93.586236,92.102853,40.675411,40.416887,38.374227,46.176965,45.941713,4.086905,7028.99,0.10,41012955815182,412818628,18321668686946,290153140,342b7baff8cdf9f56ade4c587b2923d5, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,135,18461,35.640256,44.240194,43.733664,9.215869,15.583183,86.894407,84.837179,36.420643,38.367508,35.640256,44.240194,43.733664,5.227280,5874.67,0.08,34220435876834,366198561,15343739386293,218240467,177816a717bb0e97551e3be1dfd6413e, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,160,7988,33.197577,41.704175,41.142335,8.105243,13.329497,72.750405,70.345746,32.507592,36.305633,33.197577,41.704175,41.142335,6.454445,2304.63,0.05,16367427367379,311170497,6437625553780,155922024,a909294bcfb324d257c2d366fd754a4a, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,185,3274,30.476385,39.554897,38.884701,7.082378,10.965265,53.091225,50.861614,28.549677,34.251093,30.476385,39.554897,38.884701,6.280165,921.95,0.05,6693663189182,298000399,3108981326200,193237441,2c7713326f4f8121df74b1725b5635c6, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,60,221969,48.371083,49.698297,50.533716,20.657275,30.472049,96.859059,96.082719,51.930268,47.352806,48.371083,49.698297,50.533716,0.007391,8614.41,0.13,60194259659876,658857213,24057742848934,373946461,b1306975a9c5e58ab276e6582b27d9d1, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,85,113653,45.195113,46.419445,47.755038,18.375170,26.973443,95.707200,94.574916,47.716988,44.363866,45.195113,46.419445,47.755038,0.019530,8892.17,0.16,50166804177188,732930262,23168966522677,450638634,84d3960fcbccfc7ee6da791f454a5c64, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,110,58458,41.891192,42.964753,44.749311,16.145795,23.425223,93.013258,91.283616,42.549673,41.381402,41.891192,42.964753,44.749311,0.021483,6396.20,0.10,45382736022137,576700221,17865496076143,291377761,0f8a21522ca3efa2f5df366befb65c91, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,135,29839,38.433896,39.488904,41.499547,13.861504,19.712631,85.692641,83.523443,37.055152,38.171924,38.433896,39.488904,41.499547,0.018079,8043.99,0.11,44609612687168,537812434,21062396206672,324356623,f3b05c02fa31dde6e2b1e937b705d4a2, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,160,14836,34.806162,36.008592,38.503612,11.437501,15.865980,69.153489,67.104408,31.858158,34.743469,34.806162,36.008592,38.503612,0.010384,4245.27,0.11,24073458208440,458534495,11075057605910,317350243,6ec4c763815fc746f5fa83293b24e05c, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,185,6870,30.981647,32.850544,35.738394,9.045508,11.986807,44.448340,42.758359,27.071497,31.318654,30.981647,32.850544,35.738394,0.012702,1817.51,0.08,10082979858712,356210060,4714440433836,227035173,7dc13791eca7afcc41a665f8c1450399, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,60,282771,48.620801,49.847598,50.636585,20.591492,29.924396,96.972279,96.212334,51.211098,49.357736,48.620801,49.847598,50.636585,0.017453,10864.29,0.18,60504952495625,770515347,28275338609632,476194736,f4e5cbcb59d180dad1c2fac6db49e94f, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,85,119310,43.258606,46.973294,47.836702,15.324751,23.970925,96.151045,95.023828,46.263757,44.971305,43.258606,46.973294,47.836702,0.139400,7906.27,0.14,45685256522597,527001004,20605651817115,384649244,290114675fa4f2aa1e473e3db2f40ed1, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,110,60901,40.445426,44.082151,44.814029,13.882394,21.576905,93.727702,92.002652,42.467251,42.445279,40.445426,44.082151,44.814029,0.201708,4971.60,0.11,38059522767580,536647253,16937640181667,361411058,e1f526d579a0566d6b6125ec28b18c96, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,135,30837,37.186199,41.062830,41.663379,12.255506,18.783767,87.178926,85.013694,37.500178,39.695134,37.186199,41.062830,41.663379,0.234695,6306.39,0.09,46986959701469,482342794,21523185383581,323745542,ce0720bb14fbdd5783b2572a7a420f7b, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,160,15013,33.682054,37.850490,38.200675,10.492217,15.810262,73.160339,70.815609,32.182547,36.570439,33.682054,37.850490,38.200675,0.282967,4850.59,0.10,28091122542357,430336111,12696323973125,270321526,6ac9d7e1fc54a87f371fe822ce5a20f2, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,185,6957,30.127249,34.744256,35.097746,8.756400,12.825656,51.037342,49.154394,27.217379,33.434541,30.127249,34.744256,35.097746,0.244390,1845.94,0.07,13094256553525,395005937,5155018104723,189401649,9f14a121a68890c1eb20932f19c9c800, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,60,272498,49.168985,50.570159,50.427626,21.875644,30.253258,96.801325,95.675008,51.316281,47.317163,49.168985,50.570159,50.427626,0.412586,7807.81,0.16,44233587804677,657163828,20412005058120,422411704,2ac682f9148227552edece20be0dc393, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,85,170549,44.515822,48.640197,48.362225,18.283584,25.575508,95.517914,94.064788,47.333184,44.375015,44.515822,48.640197,48.362225,0.551718,7023.04,0.13,43074197620196,586169278,19768611565204,389371230,8fd3b0b2560edea56fc20ca31a248dd0, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,110,97797,39.499205,46.611706,46.766575,14.362249,20.847365,91.836328,90.086574,42.113986,41.290030,39.499205,46.611706,46.766575,0.551184,6214.88,0.08,45259693582440,413064086,17356165464205,234959962,d51837714916f44195125dd9b6fc300a, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,135,46452,34.574698,44.353017,44.879549,10.518955,16.274296,82.610167,80.720872,36.505260,37.925831,34.574698,44.353017,44.879549,0.455070,9286.39,0.08,54699054278511,339334430,24424260159637,242647581,49c49eb374bd73140d9ffe351be3c4c0, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,160,15733,30.270449,42.132466,43.054813,7.722322,12.605248,63.030562,61.015705,31.321562,34.624286,30.270449,42.132466,43.054813,0.465743,3972.44,0.06,29003854772162,359199604,11093664430759,178448639,c8d158cda6546969b4456e5e05b49302, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,185,4239,27.394541,39.545834,40.880923,5.904088,9.479029,34.493272,33.071775,26.738518,31.861716,27.394541,39.545834,40.880923,0.319838,1198.58,0.05,8527820934299,282597895,3348251983899,142498964,fa85667727760622b54c7fed269c978b, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,60,372010,48.749048,49.773844,50.000161,23.371364,32.667014,96.924173,96.078864,52.953910,47.222341,48.749048,49.773844,50.000161,0.001960,4027.80,0.17,29025809038682,831429082,11249480427422,463868352,f48286fc0db36e19133954bd170eb958, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,85,244645,43.233818,47.578367,48.095019,18.423282,27.144891,95.804760,94.650195,48.784262,43.500259,43.233818,47.578367,48.095019,0.012604,5863.27,0.17,34732777421284,729808235,15406689183080,452577898,62b5556a7922982f1b4da3eca679ac9f, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,110,148074,37.831411,46.011450,46.814882,14.106522,21.904257,92.827093,91.334814,42.987057,39.719409,37.831411,46.011450,46.814882,0.023716,6474.97,0.10,46632735467585,577458335,18082484165511,304955178,ec5c2e0192893dfdd27afe79366992c4, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,135,75825,32.642369,44.574698,45.320848,10.296041,17.128213,85.186849,83.369890,36.412923,35.717151,32.642369,44.574698,45.320848,0.064137,10560.57,0.10,76282777295556,513159314,29497510672257,262791802,2e933ef3e5b6b28e7eb7b9dec36c4d8b, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,160,28815,27.985785,42.789985,43.416067,7.065313,12.756289,67.003464,64.957537,29.853434,31.857024,27.985785,42.789985,43.416067,0.181273,8625.49,0.10,49321111655986,397399817,22462960364670,279041141,d9eefefa21b75fc942713361cec3da69, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,185,8962,24.669284,40.570389,40.200075,4.754615,8.954507,38.825129,37.399781,24.104125,28.688548,24.669284,40.570389,40.200075,0.181379,3166.35,0.07,17709406087997,309407128,8198239751147,219614776,172bc7f71a11f5aee1b5f9d74020ad43, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,60,118889,48.066373,50.109701,50.174884,18.668270,27.269076,96.702506,95.800277,48.243817,44.682825,48.066373,50.109701,50.174884,3.178068,8258.55,0.08,58087743482148,414244691,23064657365691,244214522,ac6b99150894968b19d2164a34469e0a, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,85,55027,45.655949,48.280794,48.285936,17.166132,25.071166,95.533962,94.293449,46.526707,43.268822,45.655949,48.280794,48.285936,9.466900,4459.04,0.08,24388532626024,287242379,11572681930023,217352943,92d4cfe7a40fc4cef7e49f152e19996c, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,110,26019,42.857871,46.172445,46.086857,15.538481,22.759318,92.882242,91.014767,43.849192,41.826763,42.857871,46.172445,46.086857,9.079322,3045.85,0.07,22657864237884,333539112,10337102105868,291630125,0ac2712aaaf869b01f9ae40626d64410, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,135,10804,39.627935,43.734978,43.666104,13.454749,19.432408,85.694126,83.402762,39.308167,40.139923,39.627935,43.734978,43.666104,8.921934,3316.96,0.07,19198771484423,374657454,8648472617605,208882325,5e743114685be26e1baa437f7c62a6b5, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,160,4260,36.660507,41.265220,41.111203,11.602949,16.021204,70.550611,67.973823,34.528644,38.226730,36.660507,41.265220,41.111203,8.064758,1097.82,0.05,7450179674871,337228130,3065652644156,157015053,22fe2e4ebfb5308d4665dfe18d1f385d, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,185,1768,33.903852,39.050009,38.240594,10.141563,12.838468,48.078156,46.075801,30.548339,36.038365,33.903852,39.050009,38.240594,7.257666,505.22,0.05,2744602687852,324350510,1305216114919,169475629,9ed525ef5e451438924b4eab23df2498, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AI_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AI_Preset_0.csv new file mode 100644 index 0000000000..53f8e09dbd --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AI_Preset_0.csv @@ -0,0 +1,547 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,170400.863137,44.306073,49.737276,49.790530,15.562237,22.751907,99.860239,99.820283,46.501359,44.574455,44.306045,49.737222,49.790504,0.011340,770612.08,16.51,5256369899131746,85833058294,2152125635578424,46193020585,5508565cd4c6a4b5982d84f58e174160, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,61079.704296,41.943344,47.386410,47.161709,13.759445,19.750879,99.774555,98.818127,41.894633,42.420775,41.943318,47.386293,47.161683,1.106898,709264.86,18.21,3828069402669460,86771548726,1835946524980209,50302650512,2591ffa1566d2b7133a3057d32b39ebc, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,30220.211788,40.020836,45.010521,44.853069,12.849223,17.874362,93.899351,91.595124,38.461988,40.605946,40.020817,45.010260,44.853017,1.295247,389924.15,12.68,2645975456174694,80537712725,1088977799840662,35443430965,25f87bf20cb88dd440094397d0d1b933, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,14909.106893,37.406686,42.327215,42.329753,11.704693,15.548122,80.876100,78.097660,34.534325,38.356565,37.406645,42.326629,42.329314,1.274740,203943.70,12.01,1393457923114855,74952134060,569599235878008,33554366342,73b95aad4e9067944b91a689214441d0, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,7005.058941,34.243074,39.436574,39.577366,10.380487,12.906962,61.789902,58.762358,30.491029,35.700806,34.242911,39.435500,39.576041,1.150251,122466.59,12.40,652364004096750,62794689215,317509581852024,35009516987,3c0dbb222a257d4d310496d25f63fdf4, +AI,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,3117.970030,30.923903,36.562919,36.617078,9.116780,10.334748,40.221822,37.590599,26.728067,32.943051,30.923727,36.561154,36.615544,0.783571,44066.29,8.44,287379260534326,57240018566,123069382080257,23598426760,0585e52eca6bc8291475f4614e536625, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,67785.718282,43.668644,49.519302,52.895587,14.067710,21.370684,99.061793,97.708889,45.297441,44.400594,43.668303,49.519057,52.895245,0.020335,521744.29,9.61,3567173180204930,46768222802,1457149543975383,26880519854,5194f7cfe70f0c651dff6763ce5ecc87, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,21424.607393,42.701544,48.482147,51.665214,13.434505,19.814273,94.350901,92.596164,42.782217,43.452806,42.699199,48.481777,51.664772,0.248035,242917.72,9.42,1591373698272772,55842095372,678382641112021,26327005374,6e7bfe67c315466f912458b99b6e1c24, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,10514.717283,41.740904,47.279136,49.898790,13.065098,18.504344,85.913135,83.734617,40.559467,42.425103,41.734972,47.278723,49.898152,0.314289,135872.16,8.77,893719519500186,53491618948,379468008947161,24482372685,ad29a05d1fa0a5b9c445e2a99eccf104, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,5367.320679,40.200591,45.410639,47.475769,12.630769,16.686284,71.170202,68.706104,37.774159,40.830838,40.191422,45.409819,47.475108,0.300896,76619.00,11.37,395947072459976,60808163257,196469765583494,32148527264,3a64a5e9212276b3f2e239676038e39e, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,2746.229770,37.950777,42.890373,44.543822,12.168116,14.494638,50.389968,48.107398,34.672063,38.543748,37.941238,42.888986,44.542037,0.243079,24022.97,8.09,160896046991599,58427865022,67088045282120,22611547825,d0cc096f5f80c8065bc3cacbab242294, +AI,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,1393.054945,35.042440,40.091388,41.262348,11.656002,12.147635,27.464790,25.730197,31.383092,35.671208,35.034652,40.087267,41.253287,0.219177,17080.66,8.98,85736908777708,56766097245,46361190793776,25418103412,c2fdf32ccfb2814a4625fbb4977d6977, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,153400.119880,45.259890,50.807823,51.077973,16.952933,24.247494,99.814941,99.766665,47.475008,46.002515,45.259809,50.807551,51.077631,0.005563,852671.84,18.69,4760152689398776,69718346897,2204451325153941,51169353913,2db1e90517c64bd94b9de76cb716815d, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,75487.456543,43.035426,47.913125,48.181690,15.367524,21.230526,99.685396,99.621234,42.421395,43.537418,43.035350,47.912627,48.180990,0.007822,617983.46,12.86,4061454082591194,74700342724,1725835173760385,35972591009,80f7e81ea98582c8aa546a3b566f8b60, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,38653.634366,40.279911,45.042822,45.207741,13.590838,17.870681,97.854510,95.505830,37.672986,40.826445,40.279535,45.041975,45.206005,0.010558,494306.78,14.69,2667878339757760,62174303970,1278339350384884,40768550006,b498646e65ffa4e557378df55f460cda, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,19029.930070,36.954763,42.144092,42.194892,11.538594,14.288794,78.799571,76.492262,33.224009,37.782394,36.953862,42.142296,42.190126,0.018121,213941.96,10.04,1446261042072615,57905937227,597507309234590,28046961432,0c56d923a84d1c2735d0126c0f32d74c, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,8679.656344,33.420267,39.181827,39.179513,9.535278,10.905708,53.638096,51.837716,29.175574,34.560290,33.419132,39.180049,39.175908,0.054227,122233.57,12.91,646359020013769,61468223355,316096908071682,36318475690,ac0dde4af0f251a18d164173da5ece55, +AI,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,3645.762238,30.040197,36.409540,36.256195,8.036935,8.080731,31.234182,30.335540,25.672952,31.520847,30.039696,36.406796,36.251536,0.108180,47177.77,11.24,247809935117013,57220887185,125904057962296,31898732011,610427ec3b362c602c38a7d3a6632523, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,85,77134.977023,47.909398,51.925279,51.561068,20.005634,25.838254,99.878304,99.841211,48.448086,49.716670,47.902040,51.912443,51.512836,0.885463,668523.99,18.92,3616455350016194,83024852474,1730052536661726,52030428436,d34fa6cfe01ef43c89bba65cd36ff4ca, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,110,35674.197802,44.108804,48.646208,48.150157,17.375592,21.819114,99.789309,99.739183,43.331931,46.513135,44.095042,48.634296,48.098516,1.110080,486081.72,14.34,3420554865005590,82137811381,1645455680155595,51719306224,0956ad1be7d1ba255f4ee66c7f44e00b, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,135,16391.312687,40.932552,45.366369,44.809104,15.593581,19.015607,98.637421,97.381554,39.264167,43.609127,40.916153,45.356439,44.756587,1.612882,408042.99,16.33,2405980936506865,87060567026,1146757607146505,48766486949,1c8679946a5d35e355f1606034efcd0e, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,160,8011.260739,37.968353,41.905186,41.332342,14.019443,16.463344,87.974673,85.462604,35.163639,40.772841,37.949731,41.894052,41.270151,1.832666,217351.94,12.08,1522708618541202,80614110226,606990224943427,33688151690,4d0f9e90dbf2b244d834a16953fe44bd, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,185,3856.823177,34.717859,38.369112,37.627450,12.425196,13.683727,69.677179,66.948401,30.945124,37.663198,34.698302,38.353976,37.549924,1.752660,122114.76,10.13,862874682529704,64375731974,341046066712325,28269646880,53ee36492c38059faff8f67c99f2439a, +AI,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,210,1727.584416,31.295427,34.849165,33.826522,10.984749,10.937926,47.154569,45.025481,26.935149,34.388432,31.275538,34.829357,33.729137,1.199850,61751.14,9.40,443475251297702,67793215912,172457454316139,26253737850,c58ddea05e559e4670649a6876cd17d8, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,85,165014.816000,49.202978,46.202503,50.134212,21.233189,25.057181,99.273844,97.530484,47.627823,47.199723,49.202310,46.201960,50.132883,0.221517,537946.82,17.15,3426860794118453,92018523318,1502395886426004,47791922563,da0e943d8ef9a4e02b0fc3e33b9901d5, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,110,75738.784000,45.125364,42.839851,47.494247,17.740270,20.644473,93.965483,91.634369,41.975866,43.855381,45.124599,42.838856,47.493101,0.498188,538268.05,14.25,3442566335353798,80504221156,1503274190300420,39781837105,f5f0ff868b8995d2a6d208dd3c2e9f40, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,135,32825.232000,41.147790,40.381678,45.412438,14.594845,16.476377,81.020889,78.598307,37.082062,41.107512,41.147078,40.380184,45.411258,0.603301,333276.74,11.50,2189797974509666,60984385763,930729111086138,32036821977,7d14171bc7edf17d00f828b149b72846, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,160,13393.648000,37.350160,38.383185,43.433115,11.993184,12.582923,56.612047,54.928235,32.857492,38.515251,37.349520,38.381849,43.431874,0.947535,199263.04,13.72,1119920626806307,64894482831,555632858305412,41620722056,987fa4fe06ad117206d899a0319cd11a, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,185,4451.152000,33.851676,36.368019,41.416930,10.099082,9.242953,30.352262,29.673950,29.238883,35.931237,33.850919,36.366841,41.416006,1.043705,64088.13,8.90,426403927822983,58162595239,178973032085914,24843509034,ccebf25c0a3f7e4614a2a5a959ff62fb, +AI,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,210,922.048000,31.054839,34.779334,39.637254,9.019446,6.946778,8.137245,7.977072,26.509137,33.935552,31.054154,34.777774,39.634574,1.835590,17746.50,7.42,114448910186985,57635765617,49562549700694,20689862054,9fe975035224f7371b449486711ebd02, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,85,49291.243416,46.820810,49.295430,47.026256,18.669628,25.674168,99.846791,99.807607,47.961632,46.789354,46.814956,49.287784,47.021796,0.000310,380636.65,13.57,2601236459048443,79345824975,1063083213055588,37885545915,ef1daf78f6dae97616b823061ad09db2, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,110,22665.439872,44.894476,47.283277,45.264450,17.556552,23.544977,99.756522,99.116411,44.599623,45.158397,44.881269,47.271583,45.253646,0.002417,458663.31,14.41,2476411409944406,64509096559,1189100581338460,39600813958,fa37ccfaa58ff72f6678d13a63064386, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,135,11237.423328,42.362636,45.015574,43.628457,16.172172,20.954502,94.255951,92.138378,40.389021,43.368374,42.342834,45.004536,43.616687,0.005407,275691.35,10.23,1850974776092129,63751215267,769927437262930,28546498803,f72249c9730a29bfda4b3c48ac88e382, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,160,5436.669888,39.168124,42.268418,41.586097,14.396902,17.923755,80.807079,78.356616,35.804388,41.094505,39.145639,42.258171,41.574911,0.012026,138172.19,9.62,949953543544729,65951772705,385927694833229,26883798189,d4b5a3e64b97e632d89f505d195f970b, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,185,2479.973544,35.704063,39.338998,39.352139,12.524503,14.778596,59.477797,57.072312,31.515343,38.421503,35.683745,39.331486,39.342065,0.028337,80351.24,10.35,432694715245137,57010153190,209178222752642,29563825204,e3f6a6373a63a3b9b54f3e8bd4d5efed, +AI,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,210,1038.328632,32.214957,36.276603,37.074805,10.813659,11.715081,33.681312,31.619412,27.679406,35.434775,32.198206,36.268728,37.062835,0.051382,35087.35,9.29,179848218610206,53805195832,94469137702197,26489234315,f20831ef1f5739c7e945c324606bb137, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,185522.829171,42.561891,50.328212,49.352402,13.439918,21.623818,99.775000,99.735016,46.149279,44.231537,42.561767,50.328010,49.347916,0.001959,938657.36,14.05,6527914796791678,70703544982,2621503330823716,39251337610,38c10a3fdc6b21dce20d38392179e7ab, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,38679.528472,40.353723,49.341732,47.501534,11.442061,18.134968,97.845221,96.145762,41.090550,42.443733,40.353491,49.341523,47.496606,0.311005,488269.30,11.81,3199705167664429,66943677445,1363567314982109,32961285836,57b17047fdd8e29a72bb19ce70466116, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,18450.957043,39.341113,47.916007,45.555673,10.994127,16.674961,90.034715,87.927792,38.450154,41.269668,39.340986,47.915769,45.552515,0.470483,316446.88,14.74,1676513191596872,65839937961,812418522593570,40393683504,d882a5af0273effebb47a169b4ddefff, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,9299.436563,37.778707,45.853999,43.002695,10.479878,14.880594,75.740735,73.389251,35.419554,39.604965,37.778580,45.852759,43.000758,0.529851,122463.90,11.05,817962154178793,75598064793,342062799751265,30841082503,25284eb0051e98b9e7c0402120f50068, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,4627.132867,35.508007,43.166066,40.088002,9.864532,12.771907,55.816839,53.532114,32.122373,37.360633,35.507820,43.163926,40.087398,0.483894,55054.26,8.92,373009157094667,59766936489,153754731349890,24868658488,d69f986f854b8f247e4390a31ab3b56b, +AI,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,2250.005994,32.679038,40.099665,36.996525,9.210701,10.578175,34.643685,32.840005,28.801135,34.615825,32.678768,40.095548,36.995319,0.304928,26771.10,8.56,172484260455481,61619053499,74766145707115,23939547170,ebd962a8f6d433aa581446525fb6ceef, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,85,213993.222777,45.379634,50.166117,51.898269,18.240163,25.827397,97.026939,95.615548,49.058816,45.802825,45.368573,50.164877,51.869491,0.005367,745247.61,16.03,5068405810509210,86684106082,2081315094160244,45194488265,f0dd6b8779f8234fdf1d63f1aff28905, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,98499.740260,42.103623,47.283158,49.354820,15.434379,21.594890,93.523897,91.603057,42.919282,42.954597,42.087956,47.281823,49.330042,0.007818,745126.90,15.17,5281899561631003,78116822194,2529339891635049,54606548820,376ad86385b5f13c4f65172e378f8ce7, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,44616.167832,38.765968,44.786204,46.851148,12.698926,17.445430,85.225312,82.734820,37.143747,40.139723,38.749236,44.785107,46.833186,0.011424,736156.02,14.64,4088160455687792,62725402163,1922905083814142,40556937857,700e2ddaabee7bc43c77ed8e78bc87aa, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,18703.680320,35.428579,42.409677,44.320529,10.342552,13.638152,68.239050,65.603291,32.301666,37.309071,35.408188,42.408548,44.312391,0.014871,323820.19,10.16,2259353620423402,59656430830,904406378623947,28361297726,d123d0f3195e3d5feb968d3190c31372, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,7452.627373,32.323222,39.896843,41.775075,8.655331,10.510554,46.279430,43.854584,28.477132,34.433109,32.298300,39.896098,41.772850,0.012067,104465.16,9.70,709883367908789,60423181344,291752796421852,27113032447,845ca428910c7ad5759c7d167959bc35, +AI,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,2881.598402,29.455079,37.031793,39.095747,7.506484,8.148897,27.574143,25.531473,25.317240,31.576662,29.428693,37.029340,39.087970,0.008857,45726.85,8.52,296471169587351,57151924875,127698040550856,23840300837,2de9c3bbd56e9b4a000fc229875098f2, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,137122.189810,43.393100,44.938845,45.192808,16.770948,24.919031,99.527429,98.175827,48.759245,41.101789,43.379157,44.935758,45.188880,0.000115,424216.47,7.03,2977795174134583,37308058973,1184673363300810,19656878042,fcf9f15412a317f37bab4e2daa4a39fa, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,63418.693307,38.866427,42.460990,43.124845,12.551263,19.418854,94.995201,93.094775,41.024583,37.869961,38.827475,42.457155,43.120872,0.000921,518673.50,5.20,3581289524393199,28225076142,1448517416713147,14518190975,03574593919dc8c48963be8b479ff7c7, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,26358.441558,34.943472,40.405227,41.274363,9.181822,14.743362,83.603068,81.496473,34.387939,35.004027,34.900678,40.402689,41.271199,0.005291,511172.05,5.42,3189531081174606,24533442788,1442366843011583,15957436007,f2ee52dea815bcb18045d61d16e9aeae, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,10061.330669,31.651808,38.561151,39.602355,6.771034,10.919881,61.395465,59.517103,29.203971,32.479344,31.620795,38.559267,39.600260,0.014008,190833.39,3.15,1341513389880868,19465320198,532963178570255,8785410762,003637eb74b859ff6a95de57c26ed236, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,3527.336663,28.826999,36.831873,37.906557,5.215747,7.814608,33.372803,32.373573,25.295229,30.152238,28.809801,36.830512,37.903702,0.049946,53506.98,2.45,376836782721433,14748076787,149422508262635,6822474354,78f649cc76310fb24722b3e3ff19f612, +AI,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,1187.884116,26.432273,35.188045,36.047936,4.350297,5.595071,13.157055,12.938489,22.468799,28.068880,26.423586,35.185984,36.043852,0.101939,17030.34,2.63,116435877815886,16885155089,47569495495027,7285047933,ba6bd67d4dcf3050945561cb9fceccd4, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,178806.297702,43.918301,45.837760,46.779592,20.586171,29.021853,99.866587,99.817681,51.219870,43.407794,43.918286,45.837714,46.779561,0.172605,317560.84,8.97,2446644561444278,42981789987,1092646002892025,31709828182,fdd7a6789eab874676e5b952bfed4351, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,97640.631369,38.872851,43.111065,44.043445,15.826471,23.460774,99.314359,97.588259,43.683368,39.833424,38.872822,43.111004,44.043378,0.182414,615678.66,7.28,3622386448110768,32377649708,1621086613008939,19751086462,43009f3e1576b9ab7bb781c541c10e89, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,49558.649351,34.277210,40.842303,41.512561,11.544973,18.175828,91.395277,89.363373,36.067263,36.386496,34.277185,40.842198,41.512444,0.194158,658230.95,4.82,4804905952999037,27781729394,1838344010597406,13425648361,0d478c5d85fe34ca64b2d5b73bf12b73, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,22773.946054,30.078231,38.083337,38.453044,7.946441,13.380062,73.619950,71.658260,29.303093,32.779306,30.078188,38.083096,38.452718,0.197863,370986.48,3.71,2679480496210678,20809407173,1036096013136969,10432415345,d78b3069686a13074d4b70249ef6f25a, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,8994.317682,26.331321,34.981560,34.836611,5.334155,9.374280,45.994042,44.470102,23.768807,29.330561,26.331272,34.980807,34.835784,0.169085,184077.03,3.86,1056873850820680,16739310936,479552275832486,10597659844,929fe0a842ebff5e082c72a6091e3e54, +AI,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,2946.445554,23.147766,31.717015,31.523239,3.647487,6.233542,17.789868,17.143330,19.457218,26.195083,23.147641,31.716173,31.521144,0.112609,58655.28,3.43,325500817117190,15705652172,154263966375905,9572402496,12965b327808072f1df3a420747fadf4, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,85,202065.986667,42.298214,42.543454,43.103447,16.400995,25.161372,99.873764,99.823954,49.119710,39.778916,42.298028,42.543342,43.103324,0.000275,324995.29,10.48,2465525730889258,52538933102,1113444878185261,36730555413,34deffc11020b3b4aac323db81f01305, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,102129.933333,37.502290,39.227175,39.939867,12.385864,20.084830,99.773049,99.619066,42.143956,36.368895,37.501613,39.226983,39.939685,0.001015,497079.33,7.32,3574494309599939,41504995949,1388242863092106,20437227751,c0449c46137223a572b9e91f2b2ed92c, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,48829.360000,33.280499,36.624552,37.193703,9.434606,15.988802,93.683955,91.384735,35.539405,33.457890,33.279545,36.624370,37.193426,0.002320,675652.37,5.61,4917976189926814,31557208959,1886923039062302,15651148794,f8493545b21f33e3f122c03be394c68a, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,21317.426667,29.378183,34.126630,34.470649,6.973074,12.094646,75.316183,73.068318,29.350236,30.637155,29.377274,34.126461,34.470259,0.008025,514207.52,5.80,3006619771807151,26320019737,1350676338279804,15994842080,5759f817ba9040826f9c6a5b269d619a, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,7992.213333,25.800257,31.851770,32.012241,5.082519,9.019174,47.584767,46.026106,24.068820,27.913219,25.799539,31.851483,32.011881,0.043676,171964.53,3.40,1220292600727026,21665187775,480242191438855,9526465785,83ccedd94d49737446c8886770407ac2, +AI,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,2372.480000,22.740077,30.109264,29.960858,3.600569,6.307835,19.019019,18.320094,19.617374,25.373051,22.739449,30.108802,29.960109,0.041200,49088.81,2.54,340970062726067,15885436970,137090642374678,7093393538,f2ace3029317ed2e9f2e11579f0562d5, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,85,52597.746254,42.299941,43.936060,47.855335,13.374632,21.355004,94.223469,93.177341,46.001419,41.166384,42.299925,43.935921,47.855150,0.023801,558361.38,7.09,3131139083854231,30547427514,1442855983022470,18803952451,a8c067fe2f4b987089a5227b81100116, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,110,4285.658342,37.691056,40.910980,46.079418,8.586308,15.013660,85.348831,84.124325,38.390158,37.984596,37.690833,40.910755,46.079173,1.548808,246271.84,4.01,1347938587242922,15056198726,634398846951239,10819204463,fbc6fa4d157648e3ab375d568fa08577, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,135,1095.040959,37.189865,40.097589,45.491196,8.306337,14.117934,77.591023,75.952840,36.887213,37.315261,37.189716,40.097240,45.491040,3.265315,50681.25,2.19,342829297551719,14405501632,167774483627435,7935318221,1881e27123ea9fc25efdf0121c251ba6, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,160,552.719281,36.651585,39.800876,44.621634,8.172621,13.419142,64.425883,62.752601,35.592428,36.887092,36.651529,39.800576,44.621072,3.016590,20454.03,2.15,137339744591564,15438601195,57119268530213,6019474751,59d4ad0acb4d6e125b5c021f3cf0fcab, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,185,279.456543,35.583078,39.260560,43.284397,7.975569,12.251243,45.897041,44.188990,33.577546,36.123808,35.582929,39.260112,43.281634,2.786911,9227.77,2.52,47302461298533,16526223190,23558312744646,7302554712,c93c5f911392e979ab63e4c185d829e0, +AI,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,210,141.538462,33.832747,38.155688,41.431428,7.727079,10.727759,26.707552,25.286659,31.018889,34.839968,33.832189,38.148016,41.413206,2.461408,3585.70,2.01,22886889088586,15538259691,10014949659003,5633529992,755c33eb5d0cf1c2832b6e2caa1e33c8, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,93142.681319,42.537896,45.665210,46.228349,14.351033,22.800643,99.840187,99.791595,47.128331,41.778030,42.537851,45.665057,46.228222,0.025963,432822.29,5.88,2977092866737717,30691977343,1208836776537098,16426287931,fe69ddc6ce9f265a5477e9170125135b, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,32034.253746,39.255778,43.817420,44.574562,11.371947,18.191661,98.910129,97.107457,40.728793,39.397969,39.255536,43.817112,44.574099,0.202864,352577.51,3.91,2392822125653167,20988158677,984675508773640,10931493032,6abb5c9158cad79f40c7f887b8776505, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,13837.250749,36.787872,42.252403,42.816831,9.677727,14.911452,88.987933,86.738736,35.854624,37.531919,36.787063,42.251946,42.814991,0.299688,232954.14,3.16,1614518220681354,16602278984,650575607961680,8797582150,2ae75c36ee2a4bf341b50fba54c8b152, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,5630.145854,34.083419,40.546873,40.718883,8.112422,11.748562,69.788033,67.527967,31.470892,35.465135,34.082320,40.545907,40.713357,0.511385,91504.84,2.75,647100876282100,16235490638,255554487780534,7687308450,2104dd478c8c7b359780fe416a6fa3c8, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,2115.772228,31.403794,38.455579,38.318994,6.900163,9.041238,47.801958,45.858325,27.807287,33.237814,31.402930,38.453847,38.310031,0.748029,37969.32,2.79,207310597935584,15235693141,97315719581395,7866126808,97b8580a19bdfc9e08bb72e18fff6411, +AI,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,807.880120,29.043695,36.359054,35.933875,6.150327,7.119280,31.180707,29.844508,25.044829,31.140037,29.042930,36.350401,35.921689,0.534857,10567.86,2.32,71977785398199,16068692899,29514802436409,6490443326,aca347a6cad08faba75456bde71d66bd, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,85,57575.624000,44.252209,49.682027,48.970087,18.173932,25.885704,99.851819,99.809543,49.028394,45.266814,44.215666,49.628165,48.933686,0.104357,353860.32,6.49,2426429605380464,37330546812,988315386531253,18103588387,3589e09b298364df03967463665446b3, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,110,28895.120000,39.951323,46.222622,45.225924,14.678581,21.340686,99.737256,99.679643,42.147616,41.474786,39.880474,46.167546,45.179019,0.109077,419026.71,5.24,2874042409366382,29300161119,1170342665034755,14657831825,d300751f338fdff6129e2e3d4957affc, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,135,13478.184000,36.032123,42.936007,41.797871,11.557853,17.112780,99.442741,99.371986,35.954423,37.960880,35.939925,42.877702,41.743178,0.113072,402912.92,4.01,2854770056535449,23474520634,1125279337516808,11182902361,be9f12b4993f923b9b9d6270645b997a, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,160,5769.408000,32.375361,39.802585,38.854529,8.815395,13.121660,86.721565,84.704738,30.500980,34.654004,32.272543,39.741415,38.800527,0.108510,212913.95,3.46,1511394068347822,20155958152,594593405294623,9659184827,db2df55b94c04df451cfec5866aa63ee, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,185,2222.544000,29.063723,36.866572,36.243463,6.697029,9.482231,60.532925,58.949184,25.963154,31.578077,28.964425,36.801398,36.206356,0.125049,84468.61,3.46,471823897463169,16214786358,218329709383186,9602327238,804d00da53f0eebf306c3f39c628b9ca, +AI,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,210,769.944000,26.174933,34.358038,33.614397,5.324222,6.474404,36.582477,35.704027,22.383456,28.801785,26.092837,34.305698,33.595772,0.122774,27790.47,3.03,154124252987250,17124187959,73249103418856,8656709967,1db997c1ed4b38d1246884388e621bd2, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,85,28481.230769,43.580680,46.845287,53.060606,14.329117,22.395274,96.560286,95.248318,46.753195,43.724168,43.580645,46.845266,53.060417,0.829964,282382.10,4.59,1586122437251906,19538827775,729641743872800,12517637958,7106e9de44ab42215d358b393238ec29, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,110,9945.414585,41.960835,46.162201,51.404476,13.188169,20.130242,93.443180,91.609800,43.206081,42.621085,41.960646,46.162150,51.404222,0.919647,176790.80,3.65,969577097342406,15291345062,456589219789201,10050612040,c36fdb9a202a83bf45b143c6dc284d64, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,135,4404.443556,40.254665,45.226309,49.286636,12.288203,17.845611,85.997148,83.757873,39.657439,41.384139,40.254332,45.226136,49.285974,0.959237,94181.93,3.41,521708247074295,17052218400,243135550593276,9536452004,55756271cb96dec256703676057a4539, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,160,2013.538462,38.174581,43.800442,46.556289,11.414615,15.374689,72.555827,69.736411,36.122142,39.764879,38.174273,43.799702,46.555045,0.999064,31286.44,2.27,216250456796170,15227866650,87375346992504,6317244069,947e8b7810c30c89dcea91bc713c0f87, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,185,939.108891,35.719801,41.932119,43.979914,10.640195,12.931836,53.193112,50.524476,32.739918,37.761076,35.719454,41.928992,43.973369,0.531221,12516.71,2.19,85087426868223,14759301643,34953906045406,6116483419,b88c3a37854b2709c033b68ab6f4f241, +AI,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,210,454.569431,32.938262,39.654559,41.238055,9.938593,10.707815,33.800234,31.588842,29.369420,35.152882,32.938052,39.649158,41.226164,0.351583,7687.98,2.75,39630862840550,16920931053,20641960869704,7970149373,8d7d35d60e6defc437c107375d09c13f, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,75308.328000,45.092006,46.588996,47.142237,20.832188,27.494315,99.869195,99.827989,49.084980,44.668157,45.090193,46.587888,47.139795,0.015436,274006.63,10.32,1611551945727570,46103532635,722698126934863,27831582681,6e45278c8eaa5924422035d9670925f8, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,44362.496000,40.171059,42.845386,43.767635,17.402248,23.443355,99.784296,99.722081,43.265498,40.960181,40.169864,42.843557,43.763466,0.038731,364164.25,8.84,2111554013832055,38299537167,957210650240538,23484916086,0dc378317fad6c31735a2e6983fcb0b4, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,23832.848000,35.377834,39.540921,40.932027,13.918893,19.368203,99.534487,99.459662,37.337030,37.384617,35.376631,39.539217,40.927741,0.103529,533307.33,6.69,3122057629112732,30851476356,1398023074700743,18283470130,4b7a8e750ce4019b7dd276aa21c3d796, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,11244.232000,30.735460,36.593203,38.366703,10.446218,15.159749,88.703134,86.227823,31.337371,33.838708,30.733503,36.591388,38.362726,0.148584,433643.02,5.24,2500755062977463,22970330973,1136903497907538,14537924854,32ab9a7937e8627c9c531904ac567e96, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,4199.944000,26.487396,33.956796,35.944579,7.341067,11.005019,63.613790,61.312610,25.466304,30.370858,26.484801,33.954296,35.941346,0.177274,195796.42,4.00,1125730059830306,18562943850,509898273315241,11138401650,314bfe10443a1f0767f4c27d0bde9a98, +AI,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1293.160000,23.316894,31.385467,33.240810,5.295003,7.529631,35.722613,33.934018,20.695273,27.222210,23.314809,31.382312,33.237083,0.057844,52053.06,3.52,288457369992380,15738435336,136676845289069,9908330737,28f292457fcbaf075a1c98aa59e1d59a, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,85,161024.826667,42.194949,41.441877,42.649279,15.128848,23.537881,99.194306,97.517713,47.776440,37.813748,42.194915,41.441859,42.649257,0.000001,569325.49,10.26,3324491767132697,46259593336,1485438640251333,27159528109,587a3ccfbb7bb2f3d08700cee4f0a3d7, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,44324.986667,36.748916,39.094798,41.181771,9.566305,17.260333,95.207643,93.318692,40.553587,34.855565,36.748801,39.094765,41.181709,0.000583,576419.55,6.37,3364492900125437,27460409345,1511487840970709,17247835940,22c0a2d1efad89b8cf0c494de43caf00, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,18878.826667,34.450132,38.391492,39.596156,8.403299,15.451623,85.952895,83.796956,36.218668,33.566073,34.449963,38.391440,39.595811,0.012036,530883.17,5.22,3092020296129653,23698156678,1394729469088031,14384008376,b1549d184d17a394f70ab0af52619ce3, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,7985.893333,31.756897,37.454732,37.826019,6.996791,12.842499,66.730393,64.604972,31.003415,32.027139,31.756700,37.454677,37.825837,0.038844,246692.33,4.04,1431097877737990,18728468412,645588235120787,11227434736,ec4614422341d530cc394e50527ab766, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,2853.693333,28.814905,36.323736,36.139204,5.476549,9.647235,37.668570,36.222903,26.219686,30.207569,28.814678,36.323553,36.138755,0.031137,58636.50,2.10,417166546027928,14903462847,163774878795322,5886761505,46c2ad13a4c390218b40b45ee95babcc, +AI,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,797.706667,26.179797,35.035004,34.834688,4.336114,6.655206,7.631332,7.157511,22.594083,28.212488,26.179596,35.032970,34.833904,0.031363,19888.68,2.55,108520775969293,13917062686,52556239103523,7201877443,dba5cad00a417f1011036b2fecd4d429, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,85,15815.160000,43.989471,47.681777,50.022216,15.251740,23.106469,99.817203,99.773684,47.066470,42.895604,43.988951,47.680775,50.018789,0.232534,264127.13,3.92,1813183044039832,21293762976,737639409460048,10955490801,dcd2b212eecd9c0f93648a33b3facc44, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,6806.400000,42.155092,45.904353,47.787067,14.009466,20.827454,99.710728,99.639841,42.933332,41.288917,42.152636,45.903199,47.779531,0.352703,195701.90,3.42,1297572832514395,18446468203,546640901353245,9548024945,b2a821321fdb54be9dc1e47d9fc1898d, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,3366.313333,40.046266,43.928009,45.277917,12.883606,18.516538,94.641129,92.534090,38.807493,39.511890,40.038676,43.922915,45.266089,0.486993,150630.78,4.18,832785928298457,18916217872,389667235979934,11667910117,e55d3cb79596720997845c4902806ab7, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,1690.766667,37.333030,41.648358,42.476378,11.537650,15.838637,79.453480,76.983674,34.567299,37.254135,37.323782,41.639828,42.463885,0.600069,65083.33,3.13,454280661732034,17834118088,181753165624620,8791209845,e8a43cb31dc35429957f0e5e2293fddf, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,819.913333,34.139053,38.852898,39.313065,10.096825,12.914550,56.765326,54.250019,30.410719,34.468902,34.128180,38.836089,39.298215,0.657195,22813.34,2.50,153592063722638,14711386619,63717933183060,6970077438,2b8ae0a6f79454a995be4e344814b484, +AI,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,366.220000,30.650784,36.127663,36.358714,8.704549,9.847455,28.629562,27.359253,26.476896,31.526406,30.638922,36.111877,36.341572,0.430249,10452.28,2.46,61627931865435,14989976374,29770274484217,7511207503,6a440c5e7570c2fbfc74277720bd5f3c, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,28551.640360,48.547359,51.003162,52.033739,20.319920,26.616293,99.804148,99.592025,49.513597,49.741835,48.523533,50.979422,51.998441,0.343415,154039.49,4.37,1067719782235645,23689494047,430182632320035,12233106619,6e2de16d2cfa8942270bca2b290c7ef5, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,15138.733267,45.585744,48.636449,49.221405,18.556006,23.754049,99.216903,98.243007,45.065842,47.280027,45.553823,48.604910,49.176810,0.422856,192182.46,4.69,1076486798452200,21894323694,501365065645588,12938947784,603b2a2a8d300d4b260c1d7a0af728a8, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,7739.476523,42.071045,45.963279,46.243397,16.372899,20.406520,93.922052,91.516400,40.124074,44.301067,42.032502,45.922040,46.192849,0.446619,129291.27,3.62,961598121040841,19005697691,442624079557462,13112870837,e4f19b75881b9264f8bf4aee938d7521, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,3794.045954,38.358460,43.262304,43.271890,14.139860,16.931031,80.418455,77.448676,35.319954,40.958086,38.309664,43.217227,43.224640,0.529956,67089.21,2.66,490438823975665,17221827391,187349040772891,7449452049,2a974b0eeb10521a8c9c02e450360df9, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,1795.564436,34.719259,40.702469,40.555036,12.190833,13.774300,59.882292,56.661058,30.986036,38.131045,34.662577,40.652560,40.510102,0.616144,26095.34,2.09,184300430347533,14153833416,72875417583388,5854868570,2ffbd1ac5bca97190f1d003922d142f4, +AI,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,813.634366,31.216832,38.376749,37.726379,10.618387,10.958953,34.664498,32.055136,27.091742,35.112946,31.154276,38.317618,37.700691,0.334393,13852.51,2.81,75556766290419,16433305031,36870294162899,8132550710,91521eddd8ebfd07f93789af5d0de1ec, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,85,37540.780000,43.308781,46.226791,48.299652,16.200071,24.827474,99.815532,99.765750,48.809292,41.398585,43.308754,46.226669,48.299095,0.000000,447273.72,6.51,2731213025495908,28619572021,1252623067488364,18883574307,cec10e4fd1e61f9e4383eb2b85fcd080, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,16751.666667,40.177331,42.892878,45.449736,13.567399,20.757717,99.672129,99.609476,41.582490,38.367824,40.177217,42.892554,45.448699,0.000002,451288.49,5.69,2492307598213228,26943204631,1172434870395906,15551608615,7e0986cb2c20f542b534318ad25ba8a2, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,7932.406667,37.022310,40.687054,43.864574,11.141055,16.840877,97.112806,94.909872,35.694482,35.999590,37.022048,40.686472,43.863716,0.000037,318264.78,4.57,1949823607314761,21995009471,895045611553789,13435983694,577cf8fa5190675ce5ae2de81828fe12, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,3629.033333,33.648731,38.729882,42.277857,8.775457,12.944460,75.113989,73.042813,30.653094,33.514659,33.648340,38.729001,42.277029,0.000500,160214.09,4.18,915404611628228,20669209873,417731898900366,11581725162,559e0c8d5f1cc31b0be9708436ce6c63, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,1509.180000,30.282548,37.003826,40.244229,6.761481,9.372058,46.314736,44.876165,26.411618,30.892466,30.282008,37.002954,40.242143,0.002404,55324.48,3.21,309035532595225,15352672870,142676032888354,8977162685,7454baaaf41493c55cdfa5d871800ba5, +AI,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,561.993333,27.165354,35.718799,39.338706,5.322397,6.366596,23.687670,23.172286,22.982101,28.487483,27.164875,35.714257,39.334788,0.016596,19067.71,3.06,106831325642150,17525168494,50199908516456,8812112999,f831906b4a8b227b2a36c68034e93b1d, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,85,72175.192807,45.641332,47.337226,48.293974,20.517516,27.740022,99.872464,99.803581,50.327694,43.001117,45.641140,47.336378,48.293343,0.001224,378357.69,7.59,2146804959132815,33185600449,987013081493538,19993953877,79eefc501700cb144ef723276dc6e05e, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,110,37154.981019,39.709686,43.171515,44.260135,14.404343,20.879926,98.177516,96.388003,42.058072,38.486367,39.708937,43.171405,44.260016,0.005460,521306.55,6.62,2908279792259492,28568515519,1358864576661406,17841512366,ff531a8474f940e6b2ebd43d31bb6bba, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,135,17596.243756,35.525242,40.293725,41.493278,11.386617,16.512154,89.502493,87.473900,35.742513,35.413684,35.525200,40.293540,41.493164,0.028211,466039.80,4.61,3308730325544964,27466711138,1301471024650372,12882098303,73cf0bf59d5692c1b3a17da30ac7d6db, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,160,8461.098901,31.853761,37.546811,38.990088,9.120425,13.166187,72.346192,70.092539,30.334843,32.655521,31.853737,37.546638,38.989731,0.237127,358006.91,4.54,2072034644023545,21502592523,935428349154044,12617384144,c2be9c941d3c8d1d671ec49620a2d288, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,185,3688.943057,28.082243,34.979514,36.446595,6.941245,10.061755,48.362468,46.604599,25.215916,29.914756,28.082183,34.979038,36.446119,0.388412,144643.52,3.93,803066748229111,18020902664,374542720915389,11032502129,87142c2bffd77b44a63fa41e8d271c8c, +AI,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,210,1259.932068,24.431974,32.437954,34.141742,5.019046,6.651746,24.353071,23.567159,20.621229,27.017323,24.431891,32.435576,34.140709,0.323965,38721.92,2.21,270863888642108,15318635745,108135305212467,6167231749,266534a5c0775173eee4700287993659, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,85,5081.992000,50.744876,57.516977,57.910554,21.996628,27.769892,99.812910,99.766544,50.586340,50.855672,50.689754,57.509375,57.880930,0.834534,126276.18,2.85,812897289785631,16442689793,352629609031793,7974721933,82bedf23179080f6577c272b11ff6bff, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,110,2469.208000,48.433487,54.836737,55.392700,20.513655,24.879166,99.604641,98.927904,46.836036,48.636717,48.314918,54.825099,55.366952,0.873097,91924.15,2.59,599178363005186,16753049936,256710055773309,7253673359,11d38df70c83d6ad032280b9f0bc9fef, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,135,1222.696000,45.743514,51.639978,52.407805,19.036604,21.842627,94.382792,92.213965,43.011789,46.013371,45.566473,51.614480,52.379645,0.963310,53571.01,2.82,298633233599324,15246909118,139933991151777,7893645926,26bf18aa92940daaf6c338afe8f1a019, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,160,616.736000,42.759746,48.062314,49.084465,17.752614,18.835375,81.524559,78.860045,39.269686,42.993930,42.584396,48.034866,49.063873,0.960863,29128.26,2.81,174996551066843,15418661877,77584420988637,8005417594,58534e1970aa0f42843873a970f9bbed, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,185,318.256000,39.548245,44.464607,45.402970,16.646775,16.017413,62.689897,59.758623,35.671233,39.671874,39.433018,44.432831,45.369589,0.561622,14281.27,2.46,92621957793080,16724168398,38688982891001,7113207449,c1f17de53dcca8a6b045357360e72f17, +AI,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,210,168.696000,36.065543,40.899384,41.846476,15.494449,13.320863,40.637833,37.833292,32.079126,36.269734,36.001683,40.856785,41.807480,0.305627,7283.22,2.45,46509800190743,16675311406,20100897383559,7133021570,335c40c2ca54369646cae8a733e8abf7, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,85,49833.958042,43.057268,47.012333,45.318676,17.718421,25.992496,99.858869,99.804801,49.332763,40.896932,43.057140,47.012194,45.318532,0.033358,205551.07,4.86,1467598207753451,28122509094,574183095331078,13578232181,b4a2994d89e6e5490a78bd80567513d7, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,110,24853.058941,38.031107,45.473062,43.775164,13.118451,20.500113,99.732515,99.668416,42.230419,38.059775,38.030814,45.472658,43.774813,0.057266,391562.09,4.52,2305716742792305,20981357075,1025761807978073,12253440790,505512a03310cd1b5c390dae5093c5c3, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,135,10586.005994,33.648966,43.872053,42.253883,9.185972,15.373756,97.952410,95.811603,35.034324,35.127751,33.648625,43.871442,42.252988,0.118936,431316.37,3.35,2534413465920784,15879368227,1131263812810185,9154671012,27de0006aafdb17f15c8387f6e78f351, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,160,3924.499500,30.079714,42.172373,40.500370,6.358236,11.093749,76.644577,74.700258,29.131356,32.438295,30.079368,42.171153,40.498959,0.238492,177443.09,2.47,1028694431907678,12133400680,462469114398512,6811520123,03b48c4887cf61e4e520a3d9fcbc0bbf, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,185,1324.891109,27.273583,40.117713,38.062678,4.676296,8.056401,48.889826,47.551715,24.771553,30.028164,27.273291,40.114643,38.059273,0.286464,45046.80,1.40,318192719717930,8876828756,125811376162705,3926302219,fe69bbf4c54e316726e90bb5e12a846b, +AI,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,210,452.491508,24.963929,38.254677,37.084992,3.666960,5.909002,25.428271,24.882606,21.541297,27.763820,24.963678,38.248077,37.076924,0.187295,13938.66,1.17,95780705083920,8299152347,38936081518409,3243588702,b5eec645d289e76c64a04255e5210314, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,150421.064000,42.806520,44.779656,46.404141,20.881791,28.615781,99.869481,99.824932,50.589003,44.586567,42.804310,44.764319,46.395667,0.000176,230684.79,9.81,1838648353452968,55624212503,798146728788769,34464874976,91b5e32621a365f035f3db32ad1d04ac, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,94478.624000,37.333468,40.817075,43.574877,16.373164,23.518909,99.775812,99.718963,43.866225,39.963942,37.329997,40.790108,43.562684,0.000533,625545.13,9.84,3816518356988093,45168750670,1659445602307295,26525699334,7d2fc0f0fb1ed022d46963039a747fd3, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,51644.472000,31.954698,37.396725,41.611595,11.917949,18.217293,99.256158,99.029479,36.394681,35.306900,31.948903,37.359562,41.599457,0.002003,1040152.89,7.40,6287363809532875,33705059740,2747507147374605,20084460977,308d8dd0b23eaf2200494360647d9702, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,22705.496000,26.947795,34.782255,39.978052,7.727391,13.021227,88.673602,86.228521,29.071912,30.851454,26.938677,34.736312,39.972684,0.007395,761486.18,5.45,4566975033080634,24843808757,2005402101754429,14871037773,09cce1cca996e0635d1f90b3998a495e, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,5866.880000,22.588774,32.986556,38.145971,3.904161,7.692791,59.995264,57.980460,22.216785,26.869000,22.575815,32.948804,38.143500,0.029981,216405.94,2.94,1627326283645166,14886164746,735698978275706,10607959543,5fcc6ebf57ecedac833f340071219629, +AI,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,942.632000,20.471007,31.615395,35.905329,2.218139,4.133550,39.256488,37.880967,18.454410,24.610201,20.443267,31.586982,35.900101,0.082304,53861.79,2.87,296698132772327,15145554890,141054108685068,8104541964,8ba25bd893dfcf9d375463a4ded1e1f8, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,85,81583.488511,44.052230,48.294290,50.307738,17.707283,25.532911,99.883892,99.850557,48.689584,44.447204,44.048818,48.290453,50.304187,0.011494,360652.90,7.46,2060658119471223,32173888418,941084323032603,20128673240,3aeb48da9859d26ddd4b1a6ae560f2a9, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,39910.073926,40.438347,46.195535,48.847196,15.089601,22.157040,99.828087,99.777578,43.448957,41.802090,40.432167,46.191245,48.843833,0.027259,369778.59,5.39,2257784154929486,24294193015,1040657805921854,15755900849,9c13508f28d61aced301c5e9314c2a81, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,18823.064935,36.998295,44.289933,47.315397,12.868903,19.287940,99.680441,99.608431,38.142376,39.280922,36.992041,44.286980,47.312835,0.029998,321656.98,4.87,2396973528582449,20343511283,1099170808974163,17531498390,1283c49ed4afb31cf04dd38a5af4e379, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,9590.729271,33.765849,42.128227,45.289619,11.336032,17.041343,99.351480,99.262412,33.014281,36.741012,33.761772,42.122968,45.275745,0.024446,188091.61,3.02,1334453792186778,14533578568,525394856352902,8437011682,a96190d5775acde9e62c8b65e6f2975d, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,5119.040959,30.305641,39.706650,42.393931,9.704014,14.297443,89.849863,87.004978,28.081176,33.818234,30.304141,39.703021,42.386573,0.014562,97840.73,2.52,682105945178365,13742862710,273263409147966,7041568553,176455a3e7de7d9c4d16a6f578e2c7ea, +AI,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,2574.513487,26.393911,36.510546,40.126189,7.729743,10.929299,66.992713,64.332062,23.039191,30.351755,26.392879,36.485325,40.095349,0.006673,44815.57,2.17,310428703964126,12005385443,125156019678181,6047503545,b00c0858bd7fc53f7d99fa6d81d42221, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,85,27239.544456,47.089959,49.499529,50.616888,20.844975,27.650202,99.493370,98.863047,49.405961,47.276044,47.085172,49.485922,50.607169,0.010571,192742.45,4.82,1340270059177807,27592833409,538293159630527,13440117660,0720c9bc8b96881691fce14f9125ea53, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,110,14892.003996,43.565472,46.184052,47.818435,18.380954,24.135197,97.677805,96.108320,43.970540,44.176147,43.563376,46.178154,47.811454,0.020466,274062.19,5.65,1558929702950635,25596284739,715959877822383,15515745423,81cc3b038775ddf498b9104f9b515d06, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,135,7951.440559,39.782541,42.517777,44.819266,15.600304,20.334581,90.781010,88.361342,38.328044,40.709560,39.781271,42.515479,44.811605,0.032492,284047.80,4.64,1655924386737389,21385426122,744869875515556,12800589836,de220a392a1d7d359bda356d3ab946b7, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,160,4067.324675,35.814210,38.692425,41.985653,12.782732,16.460333,75.890835,73.167064,32.995726,37.019462,35.813175,38.691346,41.971246,0.073328,128345.84,3.16,925539715296135,20933654111,358441782693727,8818963586,d9bbfae5eec0eb6c05cf89cf93b2942f, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,185,1934.505495,31.874409,35.411934,39.022926,10.257030,12.772846,53.157383,50.792230,28.197297,33.506962,31.873676,35.410867,38.979002,0.082659,68527.93,3.35,386347347930954,16882679553,177858309260876,9412197223,2cb6b7b03faef91896932de10033693c, +AI,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,210,823.616384,28.055273,32.809096,35.693065,8.211097,9.270275,25.707544,24.592376,23.901545,30.109135,28.054561,32.807379,35.532381,0.061070,20514.77,2.45,144822132384831,17649178370,57289952766356,6853285546,b0db325779aafcd48aba0187ac17cdd0, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,85,14993.928000,48.465825,52.120070,52.008710,21.321856,27.273171,99.870494,99.829983,49.209455,47.981463,48.461353,52.112828,52.004625,0.378175,298141.85,4.42,2063678359403537,25093840476,832597003016763,12353531454,8e5824ab52c19eb7ad320805eae4912f, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,7898.104000,45.301869,49.663535,49.597137,19.143276,23.835445,99.659842,98.870854,44.599620,45.503316,45.294640,49.658294,49.593475,0.405284,278530.23,3.64,1903615122826914,22330681480,777902874452010,10160401230,20bc0d8a2ca297f4defb9580db180d3c, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,4235.768000,41.762840,47.018579,46.939490,16.701189,20.209132,95.083302,92.592429,39.846985,42.774883,41.752378,47.015006,46.935919,0.452238,236238.58,4.39,1372502096986022,21876504687,623344070528651,12160285713,a96144d50920f593bc7dda3a71a3ca60, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,2192.688000,37.988629,44.074846,43.736100,14.190113,16.528549,82.928163,79.680896,35.116019,39.680413,37.977318,44.071218,43.732165,0.423899,161395.88,3.83,1016988682462929,19729624864,432222076466920,10677092638,85bc7ea50d81c2a882b5a564f068c0d6, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,1083.864000,34.200614,40.618419,40.331871,12.018019,13.124018,64.762211,61.128166,30.659536,36.244375,34.190959,40.615334,40.328617,0.475223,94234.03,3.07,616795441506158,15300635846,254763836865062,8624311139,072237c11783d73b26569b714f61b0c4, +AI,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,523.048000,30.544676,37.111893,36.927104,10.414522,10.413535,43.762190,40.456090,26.653471,32.773698,30.534560,37.105849,36.916620,0.200895,35435.51,2.38,302096246173468,17051540895,98971331303097,6657927269,ea6c111bf759f42f7c0f00f8413f2bfc, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,85,38447.136000,44.162598,49.271081,48.817102,19.364893,27.171046,97.484639,96.289916,48.171910,43.895798,44.161945,49.269808,48.815340,0.734592,190981.68,3.54,1115922775549817,14944759919,499956562716469,9423698579,8bb67fd13b0d83b393b11841f60c8e92, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,22326.976000,39.380691,46.564415,46.180623,15.718004,22.686485,95.021408,93.305992,42.925833,40.312073,39.380140,46.563301,46.179060,0.754199,229705.76,3.06,1347392245822369,13272679681,602336852031871,8196723726,e803a22ba45f68a4f419ed0b391af2d9, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,11481.696000,34.612437,43.823459,43.647884,11.870866,17.929300,87.821744,85.769562,36.573976,36.629403,34.612074,43.822475,43.646834,0.766449,287676.90,2.70,1678360788462255,12659021279,751831817819399,7352856506,2338a7a34f7fb311c4e9fd6ba92dd14a, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,4809.936000,30.118466,41.187034,41.269774,8.139616,13.167202,71.761789,69.635221,30.019419,33.010291,30.118160,41.186159,41.268717,0.742554,178333.35,2.06,1027826552263015,9639579666,464063394150793,5645104922,e31980d25804dbfd1c74bf78edafb33f, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,1583.232000,26.512348,38.645588,38.502141,5.465012,9.055595,47.801852,46.056533,24.580289,29.878713,26.512094,38.643361,38.500828,0.906981,60512.68,1.67,367868278647176,7642341683,168755692051919,4942004428,97f0569151f3ac12814980f34e9c1b1e, +AI,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,471.112000,23.917802,36.005628,36.148270,4.080519,6.286581,26.071877,24.894714,20.881450,27.295637,23.917611,36.001910,36.140649,1.366667,19296.38,1.43,106397124616055,7853665659,50467851578022,4088405746,1c447a9ee99210410357cff501c9d23c, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,85,67518.177822,43.536606,46.122332,45.203645,17.555526,25.715358,99.731344,98.968910,48.992736,41.582603,43.536061,46.122103,45.202990,0.000569,186378.91,3.65,1162418855425291,17117496225,523678553492426,10532523342,c4b063a1c8e413435f1a8a627bae800f, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,33753.654346,38.751057,43.248347,43.238279,13.641417,20.716807,97.798467,96.190170,42.563163,38.615283,38.748881,43.248046,43.237373,0.026607,253556.85,3.05,1460537164094465,14073770176,662308099990850,8265420526,6d54a71fb5053cb69135172c5d6507cc, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,15357.026973,34.555561,40.695876,41.510118,11.065960,17.797439,91.592663,89.516817,37.075398,35.856808,34.553143,40.695621,41.509209,0.439037,248311.93,2.50,1430534627828015,12159020707,647801776326739,6848028600,dadaac2fe2e443fd9d3fbf62df7b70ce, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,6166.201798,30.896273,38.409850,39.654979,8.619757,14.560398,77.747185,75.376005,31.152155,33.196429,30.893862,38.409384,39.654424,0.617698,128965.83,1.79,786027507759771,9201907238,361467496764193,5337010850,49de874c72370dfea844207165490eb0, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,2334.417582,27.848676,36.080166,37.693812,6.694153,11.314490,55.476495,53.178975,26.024603,30.656825,27.847293,36.079290,37.692585,0.495151,39296.10,1.17,285632479213530,7150097886,132185168159284,4194208794,12a44cea06be08f5ab49a421325f820a, +AI,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,909.330669,25.250549,33.862849,35.677617,5.301075,8.414496,30.609282,28.873286,22.100993,28.216024,25.250040,33.861257,35.675112,0.163517,15395.61,1.17,91801599885042,7438171881,43371602412363,3529346348,a5dca316ac868810c0e8e6154671cc4e, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,85,20754.336000,45.007278,49.191784,49.745799,16.549776,23.618703,97.406647,96.369497,45.280963,45.106230,45.007198,49.191676,49.745748,9.502258,116902.33,1.77,850975712652442,9259236998,396207772660470,6166420873,89ed7611dfcc826fd572f44c465c45b5, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,9296.608000,42.449528,47.640610,48.096782,14.921148,21.330043,95.573853,94.076147,42.608344,43.350902,42.449274,47.640400,48.096416,11.005633,77891.58,1.69,574398803005630,9428266428,264354273346338,6056901831,e9bdd1623bc603e52c36198a09945767, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,4504.912000,39.841243,45.436621,45.743209,13.382900,19.082110,90.930381,88.894133,39.209465,41.447311,39.840927,45.436353,45.742440,10.598486,91991.03,1.49,530249721663550,7615607504,240153464071791,4135157635,ce2ed222a84db95f4738e5d7d55dba5c, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,2265.040000,36.864928,42.665967,43.220880,11.581320,16.487138,81.529373,78.792778,35.163068,39.185068,36.864606,42.665017,43.218858,10.755402,50394.26,1.37,295943689932501,7063304432,131818791831673,3831591605,2a97e8a0fde1ca88488840a9ee9cb69c, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,1112.896000,33.601504,39.412607,39.866705,9.817161,13.820955,65.196215,62.095132,30.826155,36.489260,33.601155,39.409325,39.861716,10.204252,19922.58,1.04,146437079177222,7213145342,55643789514559,2902905348,20c0b64b2ef1774f32c69eca539e8e09, +AI,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,558.512000,30.418251,35.780777,36.589502,8.738846,11.719738,42.694567,39.528026,26.755430,33.483611,30.416829,35.778055,36.583808,9.134077,7127.04,0.94,49711163076221,7450962112,19904258135775,2635343743,20181b603a7fcc587df4211de1e75b59, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,85,22372.064000,45.481300,48.763699,49.546760,17.175453,24.246252,97.591779,96.560178,45.507584,44.502756,45.481286,48.763560,49.546677,7.330597,107717.84,2.09,782364546663730,9659315808,365051102372191,7329337176,53931a6625631ccf61e500ac82a9b271, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,11370.448000,42.864518,46.933324,47.781505,15.702554,22.034508,95.819382,94.212848,42.836822,42.771787,42.864426,46.933138,47.781245,8.792349,92710.25,2.18,529525296694881,10299698469,241273848500955,5993101583,755cfeb8b02e95746427cdf6bad8cb6f, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,5892.240000,39.817576,44.775101,45.510930,14.109572,19.415600,90.888449,88.624878,39.054274,40.814421,39.817286,44.774469,45.509788,8.580352,90973.05,2.27,524203222822642,9622393466,236869996588558,6158949284,0eecba452aa261378ad27e3c50a2e1b4, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,3045.456000,36.433084,42.082286,42.756524,12.383784,16.460477,80.665239,77.490918,34.649909,38.424160,36.432653,42.080559,42.754955,8.217624,40877.10,1.45,301988520201760,8279855999,138427828638368,5240581085,bbc275447b7d558fa687a4e86a278412, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,1532.928000,32.708442,39.162535,39.707286,10.487523,13.370952,63.848698,60.271616,30.006347,35.558025,32.708072,39.159537,39.705554,6.630314,25977.23,1.49,158358824435736,7000768219,72615892552229,4430069270,cee4e382e14e2584321aa4c47734de41, +AI,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,727.200000,29.050266,35.440390,36.206567,8.835951,10.530042,43.434902,39.795738,25.530990,32.383591,29.049801,35.436831,36.203318,6.237432,10201.40,1.08,71097498316413,7267700009,28470008770927,3010032425,6c136aaf95f58de2d64a4e7e834291d2, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,85,35100.803197,45.946438,46.820269,47.040400,19.619937,27.027675,99.855781,99.811135,49.595645,44.044138,45.944736,46.818013,47.038145,0.121157,240621.47,2.35,1679200699089048,12034329015,671978046159788,6567422072,53618bd9bb5ed71e056299b53322eaec, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,17424.527473,41.706513,43.576384,44.507709,15.909544,22.498448,99.753603,99.282589,43.304485,41.134527,41.701476,43.572106,44.504385,0.182904,288859.26,2.54,1641049835566648,10993251556,754556121248729,6974548672,baa1db6deafadc3d197b4a21714c62ea, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,8243.036963,37.820826,40.426176,41.885963,12.776414,18.324732,93.186631,90.934088,37.189289,38.185010,37.812469,40.421135,41.881390,0.227287,204833.84,1.93,1212822688715543,8879705713,538803409034481,5324308401,e62ecf855a82e77c19416f5bd3d47e02, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,3843.420579,34.219383,37.340749,39.577702,10.290367,14.813720,76.950481,74.385549,31.849218,35.310858,34.211715,37.332604,39.569853,0.189660,125639.53,1.77,773077310836283,8315401713,333560967302885,4965646419,f5b95f3e0c7ff011f50b1a96b31a901c, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,1623.256743,30.679353,34.430709,37.437224,8.072477,11.310499,51.271219,48.838112,27.062229,32.483897,30.672784,34.421728,37.426069,0.136477,60632.14,1.49,390625650849422,7049130371,162740971853463,4181682500,d5652b6d4a5c34c6c0a10d144e7d1b15, +AI,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,633.510490,27.490196,31.587997,35.348577,6.474424,8.268397,22.233666,20.955825,23.226322,29.732669,27.485950,31.571393,35.339036,0.079446,19559.25,1.07,168739214900490,7691968891,68939064309136,3982829248,3738bc1224fa9af334628f92ee981e52, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,85,22928.512000,45.497786,49.905508,49.704215,17.939568,24.818606,98.165265,96.708678,45.883726,44.352903,45.486723,49.905403,49.703892,2.222171,167839.83,2.69,949545042708329,10380847672,436455164875728,7062080057,6a1a3f48c61c096a4389dd0b0fe537f8, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,11694.160000,42.814605,48.702150,47.812591,16.569506,22.473705,95.342702,93.422494,43.090737,42.577715,42.803343,48.701895,47.812067,2.909377,109232.87,2.02,686007825828772,9941367814,307053173757317,5927377963,0e7d4af51cb61ee7e3626c83f82d1112, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,6345.984000,39.726183,47.026742,45.572713,14.951450,19.756709,88.825425,86.381911,39.181187,40.478114,39.723089,47.026077,45.572121,3.229296,96926.48,1.47,697605544561191,8548765096,270704792718962,4110231940,e5cf5bd10f24d54c8655353b94e8090f, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,3265.216000,35.943870,44.799596,42.729397,12.648721,16.264951,74.819166,71.988346,34.043717,37.720707,35.943223,44.796680,42.727931,3.201430,67599.41,1.49,429390751106040,6982932963,190840617897590,4466955665,89c204afb55fc4700f3f1da1ec59fea3, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,1410.160000,31.780955,41.689286,39.831659,9.953753,12.082071,51.612309,48.702202,28.687790,34.392654,31.780193,41.683215,39.828153,2.864297,28160.57,1.02,210351546888406,6516363406,78643566089333,2848462548,c575a284a98ac837449f1660f5f4621d, +AI,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,474.576000,28.057281,39.169748,37.557765,7.841104,8.382123,24.313555,22.341658,24.298946,31.214631,28.056329,39.160226,37.548889,2.504475,8644.56,1.19,47526445385583,6597587441,22744299754421,3360159746,c553795d048e99d5ef94c515f388322b, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,85,23093.728000,45.639422,49.886930,50.066407,17.620440,25.084305,98.433645,97.299300,46.444072,44.539738,45.635246,49.886818,50.066029,1.960869,162620.50,2.28,969242282431221,10256926367,454537058080359,6610419320,d9444a486b35f50274c4ca91f4be383a, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,10554.608000,42.515074,48.325557,48.390434,15.083690,21.432538,96.339437,94.647211,42.421766,42.475985,42.509676,48.325324,48.389562,2.134191,108713.15,2.09,611855533952301,9707788385,281416299668991,5686333766,1c368bc7d01d4fbe893714d7d4d7a3d3, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,5027.344000,39.500869,46.200018,46.107843,13.011686,18.043816,90.607158,88.283471,38.065722,40.197713,39.496249,46.199132,46.105006,2.087445,86162.26,1.86,480329106778828,8978420967,223207149703945,5127118131,3e82a1385d070d77f13ab9a2e62104e8, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,2424.608000,36.431607,43.780496,43.232760,11.342560,15.222883,79.117866,76.072797,34.021974,37.707375,36.428370,43.779436,43.230022,2.106627,34542.58,1.19,241866166809754,7402851757,96464356567152,3303659623,4a534e9cf61f40946e1e7a8385b98262, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,1192.480000,33.222830,40.619396,39.953611,9.942586,12.903092,61.879284,58.525043,30.014264,34.914179,33.220828,40.616295,39.948359,2.247975,20053.65,1.29,110393560691540,6729063740,51485767965041,3615642493,fc4b26996a79cfa20994a1c6a632ad70, +AI,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,555.312000,29.758180,37.981892,36.945964,8.539531,10.294650,40.334557,37.213749,26.013849,32.032104,29.757524,37.972072,36.937913,2.071642,8601.53,1.39,47550641805625,7734913744,22619120859253,3965071974,71dbe7e95e1327145208e0fbe299853c, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,85,21488.152000,45.541848,50.593002,52.131207,20.093789,28.151148,99.895577,99.860692,49.349937,47.621612,45.540837,50.592355,52.130688,0.173403,134665.19,2.22,977139855242880,12202352919,376107374253396,6198330259,2d903a1bf374e32ba047d0958e65184b, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,11756.256000,41.222848,48.704956,50.168254,17.054472,24.229851,99.852413,99.792551,44.467046,44.304966,41.217896,48.703765,50.167719,0.256893,191963.21,2.95,1122877140373024,11077759857,504050802760309,7846667685,867f1541ae28af07dd33ebd8d60e6dc7, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,6114.616000,36.988356,46.983836,48.292728,13.846448,19.929855,99.692317,99.183034,38.433823,40.934396,36.981774,46.980818,48.290536,0.493271,219736.08,2.13,1287484905117184,9487253875,577318185314785,5570356719,4fd082857294b20feb32a09bd5431608, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,2904.648000,32.775973,45.214393,46.304429,10.566770,15.458288,89.620825,86.635193,32.262505,37.302041,32.768782,45.203183,46.292495,1.125022,139993.35,1.62,846683671261752,7500888951,369240178221333,4465121006,8e00d609ddd072ec1cc66fd683c0376c, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,1229.328000,28.880487,42.701636,43.472542,7.809431,11.148054,69.817133,66.742004,26.760244,33.721476,28.873185,42.694917,43.456053,2.402694,74218.88,1.46,461159998495774,6885412077,196891305342838,4013124329,82c4bc9fbbd64c26e72c191a531d5e66, +AI,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,582.872000,25.563915,40.438466,40.990975,6.236832,7.930655,48.353325,45.937127,22.748841,30.604137,25.557781,40.402721,40.939620,2.404142,36602.43,1.32,225029485793318,6904996889,97610081926350,3675633896,2ed2f54298b0c3f0c24fd015c61af191, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,85,7268.700000,45.679896,45.207932,46.581496,21.773968,28.783261,99.876934,99.833574,50.841698,45.318961,45.679703,45.207549,46.580596,0.037395,17395.98,0.79,116672205011787,4463402531,48580561542119,2196268620,e5712359b27d6005e0149a0842e1e3e2, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,110,4234.246667,40.728942,40.405423,43.527888,18.575023,25.283060,99.791408,99.735128,45.580282,41.689735,40.728747,40.405006,43.527394,0.084037,32380.89,0.74,174809928387536,3573609837,83816248321021,2003101686,a1d4a1c891baa483ba288a0ba70d385e, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,135,2309.620000,35.785059,37.689302,41.762599,14.970195,21.244799,96.029716,93.971354,39.448329,38.716610,35.784949,37.688537,41.760866,0.127126,29870.78,0.47,200099530739676,2768906302,83431680054059,1321334594,587f23460951a46c4a2162feb56defc3, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,160,1121.886667,30.908591,35.591012,39.575699,11.408540,16.993337,80.957519,78.932218,32.839468,35.473678,30.908073,35.589507,39.570784,0.171101,30265.53,0.51,165224250739801,2298172428,78063077853921,1377910195,92dd1588bdfd08849b97137df2856187, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,185,441.193333,26.475238,33.557789,37.594050,8.280313,12.375915,53.328351,51.729792,26.104607,31.983604,26.473168,33.556030,37.589416,0.214437,16961.44,0.34,92399927942973,1817906044,43584468430847,929340111,dfffd4026d3f36286ed7d2c1000f1051, +AI,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,210,127.333333,22.883156,31.932362,35.546822,6.087888,8.657196,16.488393,15.815722,20.416313,28.783975,22.880730,31.925864,35.536073,0.213641,4166.35,0.27,28892299090383,1751570701,14168329641344,979734261,d91d83706a3d707552a4246e0dc80163, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,85,10522.917083,43.429544,46.540924,51.027399,17.507415,25.189506,99.829503,99.780703,48.888761,43.147577,43.427985,46.536971,51.024276,0.215079,44228.90,0.95,285152951089277,5122380840,123518737979279,2652894824,1ac0be45e6e5d64bf9958ab89b87e946, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,110,5885.802198,38.197661,43.839556,49.573297,13.519855,20.479837,99.673267,99.615226,42.395084,39.619357,38.194920,43.829222,49.566928,0.225661,68411.20,0.90,368314061920581,4169428554,176807174488967,2446040785,c87fe5970c1c3efe1ec4a56202b12888, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,135,2611.412587,33.175549,41.626610,47.605839,9.776600,16.066018,94.597740,92.597186,36.113112,36.203887,33.170889,41.611276,47.592215,0.211796,46338.37,0.57,313848203818694,3203814474,129408756949660,1611978815,28e4fb1051dc4dad20409fc39ceef1fa, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,160,822.129870,29.082377,39.467146,45.776571,6.791424,12.146970,70.800452,69.129354,30.500617,33.143433,29.068463,39.448696,45.740414,0.204633,30620.92,0.45,169175088309335,2142330392,78724339167341,1227864087,eb82bae8fc421b9e160697c3b85ca594, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,185,213.250749,26.419542,37.543546,43.252861,5.003543,8.966031,38.960449,37.772350,25.948670,30.675264,26.397089,37.526043,43.157961,0.195367,6606.22,0.28,43373699076263,1820013054,18448928740073,797145186,5295ef9fdcf63abee2f503f84f84a69c, +AI,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,210,78.217782,24.915665,35.380164,40.055981,4.311590,6.766215,13.997850,13.605378,22.948013,28.547687,24.895368,35.334259,39.835912,0.173734,1916.38,0.26,13000633335954,1797431216,5352402973300,721340729,7e2d3cc29a63eeee6628d319877b7719, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,85,13260.795205,44.030831,47.647238,48.952537,20.759869,28.553390,96.843925,95.593314,50.891686,43.526976,44.030769,47.647033,48.952363,1.274476,31113.05,0.89,210947727341053,5050988542,86900333075542,2495256064,14d8939059d7fb77b92806194446a925, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,110,8643.060939,38.309170,45.599386,47.219361,16.094950,23.846320,94.603441,92.772005,45.226209,40.268296,38.309140,45.598372,47.218135,1.170735,62428.66,0.94,335786789767985,4323669338,161845791663135,2507392422,a5c5dea80ea23aee5050ac1641da7821, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,135,4891.132867,32.827985,43.651789,45.587864,11.779284,18.853197,87.622106,85.469315,38.283776,36.553297,32.827943,43.651223,45.587072,1.084720,54635.53,0.58,364509866171982,3436153730,152586136404647,1626462623,d90d0fff5b303b43be6274b427795b9a, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,160,2042.125874,27.668054,41.614237,43.370958,8.524572,14.473605,70.462863,68.117207,31.283830,32.694191,27.667956,41.607055,43.365758,0.939137,43148.80,0.43,312682652433334,2506689568,145961175386213,1551232918,ca1907d1fa5a5aedc0ee292769f8bf5c, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,185,664.759241,23.801828,39.711907,41.488284,6.105893,10.860631,41.860332,40.236127,25.054356,29.446059,23.801758,39.704287,41.476451,0.470388,33297.20,0.39,185457392890406,2066762076,86011924464924,1089209293,9646301820ca4dce6917e7e2952afdcc, +AI,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,210,178.661339,21.044959,37.620469,38.822287,4.373256,7.761084,11.081054,10.478755,20.001742,26.808838,21.044759,37.611486,38.781176,0.237270,9954.13,0.32,55357934399129,1718525266,25969793625584,898184379,4b17a788834d2b1b39ab83607630da05, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,85,2317.602398,47.026330,49.772890,51.333986,19.137679,26.202601,99.855484,99.659876,48.882591,45.488906,47.021968,49.771888,51.326468,0.080011,23355.36,0.46,148319534663947,2728958174,65233501375333,1309783390,b93497367c4f93ab216024ca6caadd6d, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,110,1204.827173,43.705096,47.341676,49.098751,17.466976,23.313522,99.214479,98.308821,44.304132,43.301787,43.700636,47.338833,49.089517,0.118800,20033.88,0.38,127507903026735,2327080026,55949379824132,1071884277,55f9ec05f8ca43c4701127f65f1f8262, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,135,574.401598,40.060194,44.395556,46.484940,15.539389,20.170134,94.766906,92.385188,39.512081,40.650458,40.053908,44.383840,46.469148,0.129239,15892.32,0.44,84220733744004,2097323778,40656644959821,1198180808,e1992cce272dd3b691e49f3f8b516f07, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,160,292.515485,36.861741,41.309090,43.650207,13.780287,17.051430,80.428623,77.529945,34.939347,37.851055,36.852756,41.299315,43.624474,0.165335,9108.26,0.34,45798875124410,1682071230,23259880191920,966456676,9da5534fd034b8b6cb4e95911e2a731f, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,185,152.215784,33.380743,38.360597,40.848898,11.824439,13.678622,58.209530,55.316269,30.402783,34.703121,33.373427,38.345727,40.786264,0.166942,3078.05,0.27,20280077849429,1589623588,8596921729483,740044439,b7268d1bdfac55e3cd6b4fa29a9a9bb6, +AI,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,210,77.674326,29.677372,35.193819,38.330544,9.918821,10.651510,30.933733,28.993238,26.090975,31.194248,29.655057,35.171314,38.253423,0.086677,1731.64,0.34,9290534305279,1660438367,4520413390235,957556182,339d1077e66c3603fc24f89f213f6331, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,85,21981.906094,42.598448,45.702899,45.215155,17.044134,26.234435,99.852545,98.513215,50.108592,41.322441,42.598409,45.702689,45.214980,0.002294,39779.64,0.96,269663442738580,5442238697,111089624327003,2704903184,41db8cd17ba8caa8349f8a958c3c0c17, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,110,11439.664336,37.795094,43.004858,42.414161,13.339409,21.475948,96.436161,94.380016,43.180229,38.106702,37.795040,43.004659,42.413877,0.024550,55351.04,0.78,371289051932744,4444997874,154573438678030,2154342008,d2fe6b884d8de1e4072db8644ecee0d7, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,135,5405.794206,33.366596,40.742459,40.000383,10.120814,17.264918,87.066886,84.617411,36.400881,35.016455,33.366476,40.742018,39.999620,0.039263,61421.34,0.73,332533227617777,3395302027,158490000133331,1997430925,6b5650a98c8f4b666d24c2e8cc47d12c, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,160,2154.005994,29.319564,38.531795,37.909195,7.097525,12.896371,66.958630,64.480226,30.020199,31.923672,29.319308,38.530772,37.908447,0.050318,31450.59,0.39,211400599197456,2268307045,87842977721537,1111133692,d089fba8b34ed736f77c29fbd17be457, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,185,677.674326,25.942123,36.402943,36.105066,4.751519,8.799069,36.782134,34.991064,24.634276,29.138098,25.941484,36.399478,36.102883,0.052512,10541.96,0.28,70503826306922,1681133740,29439417512468,787177949,8475ab39850624e688a503cee3f8cce1, +AI,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,210,197.882118,23.538400,34.797522,34.556620,3.362701,5.634613,6.858450,6.452174,20.899235,26.732390,23.537511,34.790804,34.551084,0.062614,2718.57,0.23,18347762807389,1515248757,7594800879956,664253043,e4baa4eabce499aae0cb06825a262554, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,85,10376.719281,42.325662,47.616112,47.909505,15.340480,23.853136,97.845087,96.323796,48.930437,42.204883,42.325565,47.615437,47.908940,0.000007,51890.99,0.94,364898783582058,5037306076,175273620146165,3255262260,4044b1dd82760612d5bfa6449c8d65f7, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,110,4254.897103,36.978586,45.458403,45.609980,9.942300,17.428806,94.756873,92.712848,40.810221,38.147689,36.976665,45.456971,45.608333,0.000145,84767.81,0.83,468242008911343,3904333758,219145658770633,2226312240,aece9954ed38881833d6fce0db906a5a, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,135,1514.437562,33.467298,43.247810,42.738373,6.872929,12.484591,84.702136,82.591012,34.019724,35.201372,33.464155,43.245526,42.734398,0.020254,37962.14,0.56,205792624133975,2813524357,97723715293623,1508288573,f1ea9dc37fdecc628505dc818db96812, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,160,566.817183,30.967962,41.053125,39.305148,5.691937,9.601826,64.564299,62.674279,30.087781,33.128961,30.965842,41.046399,39.300497,0.962040,18276.76,0.44,97379723571551,2017640701,46721975299689,1190159159,6a9528c89fb2222a6482bc1a26153e4e, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,185,229.938062,28.656637,39.242410,37.055943,5.135191,8.573120,47.815459,46.288199,27.124750,31.624585,28.655069,39.239722,37.049477,0.973235,6853.27,0.30,44677949160636,1824919960,19138426220368,826928735,1976e78f83914809e482f49a0a7c990c, +AI,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,210,86.377622,26.009856,37.770559,35.748315,4.505753,6.871389,25.303515,24.534881,23.318095,29.923237,26.008286,37.755482,35.730909,0.729462,2371.89,0.25,16066218370795,1802668447,6624057718517,705928156,c5d210a5d1309fac53fe4e5c23e8f2ad, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,85,10142.864000,44.817072,46.707469,47.611817,20.453653,28.996912,97.033390,95.945345,48.644034,43.077657,44.816994,46.707273,47.611442,2.172487,15874.42,0.49,106228074491546,2541979787,44331004137420,1354980033,945c37579048ec479d25fbdb161b0366, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,110,6102.000000,40.150768,43.704658,44.512915,17.273705,25.186426,94.954810,93.323679,44.040440,39.997916,40.150699,43.704040,44.512377,1.910125,15060.93,0.44,106426839705088,2500699804,50798143052421,1517125910,ca34dd8c63036a86ef9a0a2673dd3357, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,135,3355.504000,35.311483,40.678597,41.354677,13.605595,20.817405,89.509324,87.292267,38.060972,36.588497,35.311414,40.677875,41.353650,1.723978,27253.60,0.41,148743683129603,2063005721,75939013946029,1177430685,59d8b1470ac704cd287342aaec8e9b1f, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,160,1558.208000,30.606526,37.009321,37.884516,9.773436,15.962222,77.206928,74.268718,31.395230,32.951483,30.606302,37.006573,37.881629,1.359406,16589.67,0.27,114273512019205,1483678226,55834168607700,960836613,18c54a6dbf064ef8c128c1690a0cc540, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,185,606.032000,26.565938,34.633737,35.101702,6.710477,11.618224,56.161343,53.249245,25.490843,29.647717,26.565820,34.632133,35.099519,0.974103,8286.82,0.20,55050802325256,1146044829,23141602935178,568006685,e0fc5fa7eff879375400d0eb0dbf581d, +AI,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,210,221.184000,23.540188,32.930470,33.246816,4.719556,7.934851,29.137799,27.201712,20.864487,26.715624,23.539829,32.928533,33.243533,1.261205,2823.85,0.17,18891930176846,1133900999,7888469694514,489711053,a590b7df6f1a2f47a4de2c99d2eec196, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,85,12977.720000,44.140219,44.577574,45.336568,19.013799,26.004154,99.863459,99.819507,47.296493,43.138771,44.133750,44.562732,45.318912,1.883733,23369.66,0.57,128109449706245,2509043798,60449486637585,1512799035,1460ac79d659427d0e80b7bd68424762, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,110,7688.893333,38.659199,40.154175,42.191721,14.920700,21.543024,99.755254,99.545947,42.488145,39.065520,38.645901,40.131678,42.174468,4.036702,23983.88,0.55,131459017189131,2231623745,61918572510635,1441315111,3c0b126c17add7f09fc9634ecfbe1192, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,135,3973.706667,33.359162,37.075035,40.006572,11.039599,17.294250,93.898735,91.766536,36.771507,35.351681,33.336653,37.052068,39.994180,4.803171,30982.90,0.43,168015210427297,1980794878,80000695143581,1145848979,d57015890954f3040cff0b8c20264b15, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,160,1526.240000,28.459689,34.831672,38.235715,7.663670,13.227467,74.757582,72.725158,30.596687,31.787017,28.426483,34.812100,38.225583,4.545612,17094.77,0.27,123201762679061,1384175192,57633252174837,926580529,8001e0a587663b3dc85027a64a17311a, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,185,395.213333,24.890547,32.852599,36.557137,5.267250,9.517912,42.904193,41.502673,24.856279,28.871416,24.851258,32.831799,36.544959,4.541954,7148.85,0.17,45778822076806,1146690709,19965202279502,495354114,4a3da16831fd464b6c29bd7eff7f0b9a, +AI,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,210,119.066667,22.957800,31.218177,34.962053,4.170274,6.908800,13.285749,12.629957,21.056712,26.739737,22.929307,31.192976,34.928668,3.705464,2146.33,0.18,11506354228858,982275233,5581984438993,500816927,d8d68139318802b8c736e90ed070aa4f, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,85,10321.934066,43.009810,49.594537,47.207928,17.291052,24.953636,97.092696,95.688717,49.142831,43.048967,43.009735,49.593734,47.207277,0.304355,29671.13,0.56,161436443605755,2473471623,76778490013358,1491775529,03a2bb3c103623b72dea8f767b2e1181, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,110,4901.802198,37.993284,46.867884,44.129508,12.814357,19.575924,93.269891,91.426835,41.975550,39.366557,37.993096,46.866527,44.128755,0.283522,28356.95,0.34,187755313232273,1812286076,79189202970452,928635567,820c681e6e20fbeb79ff0e6875141f1c, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,135,2139.668332,34.034529,44.498338,41.323994,9.878822,15.667623,83.807301,81.692432,36.077211,36.246417,34.034251,44.495648,41.321725,0.300443,19425.62,0.24,131997551217202,1332249998,54246464215145,675515002,504571ccd58d050643ce953f527e328e, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,160,878.289710,30.559982,41.902626,38.455841,7.529158,12.636676,66.474436,64.223353,31.308795,33.331046,30.559456,41.893453,38.453050,0.261795,10866.72,0.20,71470249783659,1044573833,30349285208216,564222266,1eb565018bff8db3cc6bb4fdbda31898, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,185,304.239760,27.365100,39.524996,35.756123,5.169914,9.557100,41.375413,39.577760,26.837036,30.397375,27.364727,39.511783,35.750854,0.300245,3900.45,0.13,26428250588454,746952073,10892560921232,358010596,2b92e91a9b288806d4e9ef5c35aae883, +AI,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,210,102.857143,24.940639,37.128806,33.097895,3.694759,6.891402,13.037363,12.446732,23.113441,27.857787,24.940266,37.028685,33.089597,0.380604,1220.60,0.15,8583242364096,966947192,4158520278297,524988473,0b08a960663a24d5aff97c0aba520ba1, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,85,3666.837163,45.151003,53.375846,52.864067,18.856418,26.370514,97.661082,96.225762,47.856615,46.894806,45.149790,53.370029,52.855565,0.392548,29497.30,0.39,160225689070125,1624726440,76221998810924,1047612896,7c53f62d36d8c8cabc5eae932cd581de, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,110,1932.003996,40.129496,51.024821,50.778166,14.703135,21.528798,94.368436,92.400103,42.738884,42.739352,40.128496,51.016794,50.770849,0.617790,18283.51,0.26,121381817168740,1432063926,51063177829027,728428968,16817a17d0637378adee0d79701c53b5, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,135,775.912088,35.372986,48.722259,48.081840,10.655174,16.819053,86.547194,83.963440,37.118095,38.818272,35.370613,48.716374,48.071676,0.503401,20987.03,0.25,113630390837421,1132357915,54212443823187,654923736,a23bbac297ced894a3be9153e6601d50, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,160,183.560440,31.724049,46.471414,45.138738,7.272269,11.712876,71.158011,68.243182,31.325827,35.658560,31.719433,46.449571,45.126374,0.677851,6754.86,0.15,45519587580253,991748016,18865710814993,444345996,6734104cbe1c4b53cf77b9ef063bba61, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,185,83.452547,30.246832,43.012443,42.353493,6.596861,10.089554,51.669568,48.232668,28.743740,33.720476,30.244230,42.975866,42.304090,1.384878,2568.86,0.15,16983894826951,933877557,8589344630848,536933345,072c40475e9ce997e02966118146e170, +AI,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,210,43.260739,28.204838,39.323519,39.859240,5.944526,8.320244,23.337458,21.047362,25.752135,31.449485,28.203209,39.259397,39.818368,1.269353,1057.00,0.12,7428602801449,887358399,2952285274072,346394798,2c5a8902aae7c5f0a1113b73abbfbf46, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,85,40027.456000,42.400751,47.165582,48.367247,14.845863,23.824821,99.844706,99.795905,48.414854,44.368407,42.400463,47.163071,48.362908,0.327016,515582.14,7.19,2960079441619383,29044708486,1343654114288073,19295553056,2e036737c438a104758f600b7af29051, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,110,15394.553600,38.519977,44.243297,45.841506,11.527468,19.533127,98.933678,97.147286,41.991903,41.154288,38.517300,44.241310,45.836486,0.364328,431234.78,3.58,3012483560938657,21304710057,1204320528416276,10012485517,907ac6a59f22351eb48658616fd2559e, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,135,6811.603200,35.746229,41.888741,43.575032,9.575231,15.928606,88.930910,86.523371,36.390901,38.727774,35.738659,41.886334,43.570537,0.408973,253227.76,3.26,1905655945281182,18309871269,865831024059340,11701164977,f2cfc978cbe53c6149d16870f3142521, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,160,2915.929600,32.762499,39.918069,41.548119,7.490196,11.958231,67.855103,65.724916,31.071684,36.020047,32.756420,39.915152,41.546027,0.436839,154243.40,3.33,886903164580837,15996757373,404455359901087,9213021535,19e90e09ef33af5cb1787e1eafeba4f4, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,185,1061.523200,29.697440,37.717417,39.389617,5.671520,8.437830,41.649223,40.330776,26.641546,33.145482,29.694118,37.715824,39.386493,0.643584,41471.52,2.04,282968530270654,12836765922,115824063441051,5704652827,4ea0c1baa1e234d157b524ecbee11c50, +AI,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,210,316.934400,26.991524,35.728308,37.499274,4.475085,5.973201,23.032513,22.507657,23.237528,30.607282,26.988998,35.724875,37.494009,1.108816,16292.19,2.56,86673220543414,13318639603,43103226270256,7342779952,afdc49c4e45a0b1e5d76bc3361d3237e, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,85,218637.792000,42.757179,46.385416,46.731915,18.053192,26.728661,99.866418,99.827160,50.279606,42.818140,42.757157,46.385385,46.731888,0.013277,408457.19,11.25,2442552346416159,50014561120,1077854562327656,30205327197,5be7c5a5a1f56ca2e34eac982f5d4351, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,110,110200.096000,37.171901,43.611735,44.336883,12.819258,20.761297,99.783850,99.723236,42.568276,38.581235,37.171864,43.611677,44.336807,0.026105,572556.58,6.68,4148454329356634,38158507158,1599046888383338,18609159373,02ec293c34ade53d0bc1a6ff1ba6fe88, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,135,46134.096000,32.696925,40.976583,41.993939,8.914957,15.602119,94.376441,92.120422,35.189587,34.847194,32.696895,40.976402,41.993766,0.099373,804646.69,6.47,4786161553585211,28415427726,2110726384859248,17662787824,4e98930f99f5cd4fc7e816d3ce8eca0f, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,160,16394.848000,29.110070,38.159281,39.522234,5.991712,11.191187,77.881496,75.311952,28.912702,31.649975,29.110039,38.158935,39.521499,0.123025,307254.02,3.65,2164487072697979,21742539220,858025514535472,10237258244,05e726d5b9513ace8e3e4639b9b7fbc6, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,185,5218.624000,26.343024,35.352168,37.168120,4.231784,7.982087,55.412371,53.079653,24.319060,29.007840,26.342986,35.351677,37.167158,0.157409,218177.62,3.61,1360195490704562,17634015092,582325848423465,9937565628,412d155c9f1f1a94884637130dc70519, +AI,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,210,1639.088000,24.138871,32.681957,34.272024,3.265900,5.619035,36.528473,34.495639,21.093651,26.744531,24.138827,32.680809,34.268317,0.065139,39275.32,2.92,221419813086557,14906384701,103696385783665,8249500583,036d3799eff1d8999f5e5159182d6360, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,85,13546.739200,49.519300,51.791539,53.237390,24.477474,32.343019,98.969574,98.426880,53.611230,51.565582,49.518692,51.782423,53.229293,4.371272,287239.39,6.07,1706324072312053,26400938057,759341166404555,16708367718,f8e6fe587ad2f27865b62969929f25a6, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,110,7708.313600,45.651600,48.519973,49.878371,22.080882,28.869071,98.550339,97.226120,49.175591,48.781847,45.650729,48.504622,49.861411,2.524165,332205.39,5.32,1894960396899008,23804357709,872625576568832,14679832926,45f5a8f3b453fa4734ccbff4420087eb, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,135,4294.246400,41.476235,45.285941,46.441780,18.770970,24.573664,96.379723,93.794365,43.445026,45.812264,41.475233,45.254392,46.413030,2.209642,275402.97,4.48,1631972827056326,21757967699,728696370112508,12394943322,21f7f31c5b776b57e049beb296185459, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,160,2280.057600,36.994295,41.778755,42.681482,14.889449,19.428035,89.363718,85.192638,36.866153,42.044134,36.993221,41.740103,42.640649,1.951765,168062.53,3.19,1304445140510785,19826983093,469400300946181,8926781328,109b5a2e14e4a2037c55f3385dbfe0dc, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,185,1100.032000,32.538020,37.735461,38.878003,11.285657,14.207827,72.922590,68.461992,30.899981,37.544072,32.536625,37.690780,38.823418,1.176866,122967.35,4.26,798703281752975,17385206757,331202142783159,11203479210,8b5ccba56949312de3d4b68452231961, +AI,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,210,462.329600,28.773294,33.568700,34.695267,8.822941,10.072548,50.920261,46.729420,25.940328,33.241335,28.771325,33.505129,34.622192,0.449651,56759.78,3.35,374033622504449,13582592912,154859900780885,9332985115,c86a87fc84414660f508c25ed94c5bab, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,85,58215.920000,43.801971,49.226233,48.550199,16.788007,24.990258,99.863998,98.883263,48.992048,45.518495,43.801899,49.225910,48.549929,0.212044,385327.14,7.63,2233591418499355,32977314187,1008049889992071,20545012970,bc3e16e189cd1bffc9a2dd68d36cdcc4, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,110,25876.448000,39.024516,46.288988,45.595984,12.448757,19.961897,97.329316,95.734888,42.521420,41.665415,39.024461,46.288528,45.595581,0.229597,470543.06,6.06,2693776761881589,25543069923,1227377103296585,16485371187,789e49dc08bbc18bda61b7f8cceac64e, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,135,8568.680000,35.201331,43.305468,42.386137,8.935024,15.269929,90.674532,88.611881,36.509623,38.396793,35.201255,43.304731,42.385747,0.285480,349318.19,5.23,2000252316725766,23430228749,913372320578345,14385888681,b5c3ec43c81382aedb1599e22b7b54d2, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,160,4063.272000,33.092697,40.221588,39.079532,8.064177,13.370394,78.059581,75.335593,32.805598,36.093275,33.092522,40.220777,39.078687,0.300080,173270.58,3.47,1277295755837929,20769425598,483928294596942,9688750642,e2d54a5aeddc2e654f5656df4b5f0fd8, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,185,2004.936000,30.505679,36.679017,35.502515,7.237527,11.509978,59.689682,56.623712,28.706560,33.443974,30.505268,36.676993,35.501632,0.327404,69385.66,2.81,499072540377316,16619045341,193788062501553,7873322450,a5ff408d988902f0717ecfe2688d2f93, +AI,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,210,899.256000,27.354810,33.297960,31.878365,6.206498,9.091735,37.059676,34.161386,24.227046,30.416395,27.354311,33.294905,31.876889,0.146521,25094.40,2.56,176425870185373,16031270081,70087516466919,7167123436,4bc2e7727071dff917072c4227b78c1d, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,85,124876.752000,45.844128,48.027069,47.670142,21.096406,28.241352,99.870356,99.830864,51.451049,45.768934,45.737935,47.986589,47.588777,0.405697,699077.15,7.44,4138952407474305,29920097877,1842197476261703,19714090586,4be9a3cc2f997d1b898515742ab97f0b, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,110,75073.968000,40.243769,45.206356,44.345212,15.568397,22.418627,99.796151,99.737610,43.910055,41.842831,40.099141,45.171275,44.266199,0.299604,716143.31,5.18,5111150255006704,28020804472,2000192061111503,14477666031,9d185d455bd9180cbc2395d1e45b87b9, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,135,33775.968000,34.578867,42.542853,41.281901,10.224367,16.402910,97.552316,95.505904,36.302579,37.335972,34.452981,42.518031,41.211123,0.255761,781015.59,5.43,4738433124960286,22270247144,2067132849683162,14840397194,ae6d95d08315f4c5b69da43223480e74, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,160,11061.872000,30.380399,39.544729,38.344420,6.708922,11.377262,79.163379,76.699227,30.109170,33.421605,30.293552,39.529360,38.289243,0.198361,346552.08,2.84,2694765834868218,15356754103,967849855885630,7946768786,54043ab7cbf6773522f274cf3fa2da59, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,185,3901.632000,27.866989,36.608343,35.582264,5.010822,7.851903,56.251715,54.223307,25.849459,30.530921,27.801007,36.595623,35.546954,0.224975,196419.63,3.36,1388035146166452,12434125516,575392408183228,9939233478,63c954ffe09d028a9076fe57112c1fad, +AI,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,210,1061.152000,25.229248,34.323514,33.192721,4.118169,5.511087,30.391632,29.336793,22.683590,28.101453,25.197911,34.320311,33.168755,0.370360,64753.23,2.23,556086373895329,14774857179,180830131513374,6229699346,8293a59432a048a88971cecf88182b04, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,54482.368000,45.481850,49.765640,50.263368,18.675410,25.176306,99.142081,98.815281,48.444900,44.988366,45.348051,49.654544,50.145060,0.259671,285221.92,5.55,1960949477978171,29978811223,796577197895318,15515067012,882b87027e28d05d1096eb6ab59afbf6, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,27345.728000,40.535043,46.291914,47.006675,14.337088,20.096028,98.302058,97.848005,42.085838,41.316942,40.255972,46.195422,46.889209,0.273302,394413.62,6.17,2216004718818998,28478786174,1027732352137894,16857112238,7bb36e13862aaf00874a1def97bc1304, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,12341.088000,36.378718,44.006087,44.823014,11.097385,15.729016,93.265750,91.178259,36.534399,38.448875,35.962157,43.910838,44.693027,0.508637,348683.36,5.42,1984807081958341,23208935978,910977050869667,14953807138,2321b54c1b365e5eaa5fa16583119236, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,4877.160000,32.627160,41.785619,42.577458,8.771704,12.185964,75.580509,72.991416,31.875947,35.714389,32.166103,41.725266,42.479041,0.713887,149562.55,3.29,1090090936356405,19693599259,417747420492733,9171157211,fe273736f7ea83082c288a89dbf40558, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,1322.440000,29.291694,39.349977,40.060358,7.138988,9.410602,52.925957,50.598163,27.901913,33.032893,28.803058,39.326789,39.992260,1.086202,97315.24,2.80,591296924420181,15300288408,257907257970199,7826482231,531629d34708c6ad0c0d30205cc15fc2, +AI,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,398.536000,27.186045,37.003170,37.467042,6.278962,7.332904,30.389840,29.004201,24.825293,30.776733,26.852960,36.986111,37.402147,0.679519,20577.98,2.42,152068575419843,14754793817,72053339972550,8958323411,4c123774798fe1132d03d2bc2e446eba, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,85,14680.307200,43.948369,47.388061,48.468556,14.777253,22.434404,99.688325,99.636814,46.629287,47.470046,43.896412,47.375350,48.409151,0.204790,365509.54,5.08,2000889740704645,21494888753,943886679344134,13921006433,0d0383e2b6127f7f6e8c2a95d6a97843, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,4734.822400,41.879163,45.776740,46.274379,13.195520,19.520244,99.453769,99.393130,41.957240,45.544980,41.807221,45.771117,46.208611,0.240856,229140.53,4.15,1207271028791073,20152767897,590669628650584,11450591196,ce3d22461c33277e90fd4571d1caa6e4, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,2205.766400,40.268727,43.598499,43.592145,12.433952,17.089766,88.625167,86.898775,38.235624,43.756354,40.215250,43.593435,43.500777,0.253399,115174.93,3.73,597498777044405,18323646465,298037412168789,10314750171,3b56548a7643f9891690ead526802440, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1021.772800,38.102709,40.983726,40.652223,11.662248,14.492860,64.375113,62.894506,34.705318,41.464749,38.064083,40.976247,40.519157,0.253242,46632.66,3.06,258720852992701,16160727230,121214381668003,8694593220,00dcb12c341bf504930b2c95828094cb, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,463.123200,35.571636,38.340820,37.597792,10.972672,12.053873,34.593619,33.773601,31.494717,38.800881,35.540064,38.329853,37.437927,0.254374,12516.27,2.49,71949900086967,16613539151,34974333315136,7706575488,701ebaa7c9d9d117323777662c73bbcf, +AI,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,216.556800,32.882888,35.796055,34.902587,10.403663,9.919931,17.104848,16.943228,28.637244,36.022472,32.860260,35.789232,34.808324,0.165214,4665.13,2.13,30847234954788,16893548433,13034209137096,5940235577,34da42002edec2989974de0c67e02ec5, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,85,16256.684800,47.471204,48.331739,46.813194,20.210050,26.492037,97.617762,95.437234,49.967854,47.327941,47.471174,48.331664,46.813161,0.000000,469290.82,6.32,2560044213958308,25391743708,1219302290800990,17324126713,1b5e13d32cb765df9dc0874e5de5cead, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,8179.795200,43.613776,47.423017,45.515912,16.697786,22.098152,91.864544,89.253914,44.589410,45.382528,43.613741,47.422740,45.515684,0.000000,404761.00,3.75,2686391788127985,21995020981,1130651687424447,10476886096,1d57c57476def36c344a900d5a967de0, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,3693.305600,39.328545,46.108870,43.676663,12.736373,17.281294,79.571445,76.373471,38.901170,42.752153,39.328450,46.108232,43.676154,0.000000,249956.53,3.19,1781355323057147,17429940485,698072588704488,8896876847,e0cbd13df87380ba7e57669017e2497c, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1253.932800,35.275314,44.228377,41.267800,9.129587,12.587475,55.454792,52.694160,33.558756,39.756508,35.274992,44.227032,41.267341,0.000001,131281.62,2.29,1048198518159421,12979083313,366663331462999,6397665815,a227f9624f622bdba9974e28718b6bb7, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,332.262400,32.494950,42.472888,38.931093,7.213031,9.121925,22.498208,21.412876,29.623225,37.296293,32.494275,42.467315,38.929396,0.000000,47685.24,1.79,408920787386171,12266148511,133192852008271,5008752276,0f53e5dfce1429d5cfafc7ebc790c1ed, +AI,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,108.492800,30.899253,40.716279,36.816860,6.807087,7.379554,3.332458,3.231297,27.567496,35.454096,30.898532,40.696574,36.811967,0.000000,13283.69,1.56,110771752727730,12897412679,37096469387891,4375180351,8a3744ead56790832daf8ecec564b656, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,85,88272.560000,45.413502,50.460166,51.116741,19.267115,26.067654,99.014681,98.635746,49.697434,45.776693,45.413487,50.460039,51.116637,0.513555,290202.28,7.87,1723880992375607,32922793271,766072990021771,21286145189,2e0ceb5849d55d2019ba467f344dbb66, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,110,47823.776000,40.850881,46.811667,47.690883,15.666965,21.604838,98.049776,96.844870,43.708691,42.587553,40.850865,46.811473,47.690751,0.705201,353917.10,6.45,2078380119427559,28715465557,931148901141806,17527273311,98500d0daef9dcd807251c98ceee40ef, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,135,23309.568000,36.424337,43.295925,44.266182,12.399385,17.550035,91.628479,89.034886,37.960667,39.262499,36.424310,43.295699,44.266016,0.991441,304983.99,5.19,2308664906367178,24792916972,1048067464006342,18636269494,5a28051203aed7a2b8a4cf5af210a016, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,160,10334.752000,32.427447,39.747417,40.772171,9.566809,13.709884,76.471949,73.519751,32.530315,35.957617,32.427393,39.746493,40.771556,1.150250,188241.16,3.79,1442831174114738,19136146528,646814095488831,13608602282,b2bb0ad89b60709945f5536f748bc81a, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,185,4234.112000,28.961395,36.675454,37.550774,7.500021,10.346325,53.817541,51.199252,27.670382,32.853763,28.961300,36.674923,37.549754,1.280242,182600.24,3.42,1169130666746859,15199584875,492102412602833,9601039167,09711511f795ed82abf0ac0d82924f33, +AI,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,210,1556.240000,25.769829,33.835452,34.402433,6.099775,7.650114,29.510895,27.624715,23.422092,29.916576,25.769591,33.833696,34.400545,1.438524,76458.78,2.14,656028949546366,13792709878,213567492951803,5964331907,42ff578b6d752e6b609a688838320c77, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,85,120288.784000,43.353755,48.093298,48.643516,15.467064,22.768054,99.212965,98.093896,47.544744,43.238680,43.351329,48.089181,48.641408,0.182472,464480.69,7.45,2623908482245454,32915464279,1211669989357191,20039425847,5cc67568aee11785c55df27be06ce68b, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,110,48001.200000,38.536551,46.401389,46.332098,11.028782,17.341593,95.072684,92.977702,40.695148,39.977630,38.531452,46.397371,46.329521,0.460867,426334.14,4.63,2989894221548832,24717134950,1190624538559908,12951552258,63c5dd354fd3551625660117a4aafa9c, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,135,13560.560000,34.888779,44.716757,43.835919,7.945634,12.970118,83.227928,80.904472,35.161948,37.169302,34.883839,44.710843,43.833094,0.986415,326303.53,4.04,1890182795876962,17752014601,857444167477119,11132233581,edfb2449bbb70f38e130288caf14ec9b, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,160,3400.704000,32.645891,43.023509,41.724233,6.499513,10.017144,62.210974,60.477610,31.482244,35.230844,32.642454,43.012595,41.720705,1.866269,100922.42,2.12,777521678091792,12811480531,281828551530663,5968705938,a8933aa0827b773664eec405db4fe00d, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,185,1250.896000,31.115755,41.268010,39.928895,6.097276,8.629299,44.087631,42.816488,29.366723,33.896355,31.113652,41.253984,39.925198,3.035372,63717.72,2.04,533988299641894,14054904604,177961582922512,5721465549,4b2cacbab13e0d7daca6ba5a775a6a0b, +AI,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,210,353.792000,29.110902,39.312179,37.592512,5.727932,7.420796,22.169006,21.614239,26.787504,32.396902,29.109242,39.287309,37.586855,3.120519,23302.19,1.88,194548021822184,15184075776,84304215684316,7073137359,adb3639e31f2b280aff2bfb95ff67030, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,85,41278.784000,50.101222,52.394043,52.367851,25.095056,30.904428,96.396309,95.307019,52.087174,51.270799,50.101180,52.393678,52.367211,0.127433,271710.59,3.86,1950135733366068,19807363654,758803078023739,10772946400,7c25716fc0d68a74d636fdf5e865f1b4, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,110,26231.360000,45.347258,48.315577,48.140821,21.617107,26.502197,94.374725,92.729332,46.203489,46.873365,45.347195,48.315094,48.139347,0.207933,359856.33,4.41,2046373059082037,17858753559,946344471562827,12075403641,70bb44523c7b1faad9a6c61754fa933f, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,135,15222.400000,40.211121,44.303901,44.131101,17.303616,21.648335,88.698185,86.434055,40.360177,42.425041,40.211062,44.303662,44.130118,0.406844,232506.86,3.73,1724021367436910,20575633155,649312981183751,10437998422,e8b2998e63dc3ed8a9cb8b91f5341a17, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,160,8383.408000,35.442129,40.672635,40.389308,13.898758,17.561007,77.909078,74.603780,34.960919,38.360980,35.442027,40.672350,40.388727,0.577982,221204.97,4.07,1490310664544305,19933001188,635075862345082,12086928675,70ffbd378dc0538e8b39db6f13407477, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,185,3901.808000,30.797243,37.390950,36.868435,10.727724,13.613566,60.178896,55.770563,29.544166,34.376237,30.797148,37.390388,36.867315,0.630271,143353.15,2.99,978184297791591,14942662251,413676983131694,9004439010,9419a1ed2003096ac33742c38b7fbdad, +AI,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,210,1420.256000,26.790352,34.470362,33.877912,8.339453,9.910652,35.952275,31.355380,24.581189,30.590115,26.790287,34.469375,33.875904,0.563409,52381.76,2.37,429726855541832,13470883495,184700656935537,8739402484,eb55431be49d3bcd1088fe7b41b7bd80, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,85,8926.488000,53.925061,52.808713,53.388469,37.181233,43.208094,97.329230,96.534170,59.426347,56.231781,53.919112,52.795104,53.353101,0.064123,177389.17,3.02,1131895888055291,10579754634,478051038563608,8288008975,fa5c6970936ff29a9a034736b5561c88, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,6203.312000,47.938399,49.421292,49.581833,30.444240,36.370668,96.553235,95.212868,54.331729,52.195256,47.932147,49.404529,49.543137,0.353012,169521.35,3.49,1098229743584308,13538076930,457360270800882,9614248383,0ba8e738c9c2076a4b7a07de613dbb57, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,4331.936000,42.184264,46.514144,45.938007,24.369630,29.657094,94.639744,92.165786,47.380441,47.647043,42.179161,46.496010,45.893606,0.793303,215586.47,3.83,1346736081958268,17370382916,576589236990196,10731992125,b88ddefdcf9566472a0454784d746be1, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,3004.416000,36.582278,42.891197,41.413429,18.781442,22.865206,87.862243,84.215754,39.095878,41.767596,36.575200,42.867319,41.375541,3.395522,168112.71,2.90,1355313939598045,17299078767,469459293248602,8111202543,96e9bfb2c9ac7c197a63c9fc307128b2, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,1836.648000,31.051348,38.131435,35.829000,12.899793,15.414772,68.747272,65.115387,30.734567,36.472799,31.043719,38.096040,35.811681,5.610612,147824.54,3.71,1247052001792543,16776796939,522485148738130,13546895926,6831628ac5f8011348d6406bc39a575f, +AI,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,742.888000,25.542944,32.899405,32.609881,8.576311,9.946805,33.637397,31.403263,23.349007,31.223835,25.540447,32.880527,32.582709,6.082892,88917.21,2.43,763382721694557,13555533243,315751386215438,8930330160,f852721633bad02d80e91baa6335096d, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,85,59234.256000,48.516298,48.329831,49.034181,25.923736,32.529215,97.543495,96.887578,52.754983,48.550113,48.485324,48.318168,49.021550,0.376171,336855.07,4.14,2585247158828973,22077955954,940520154958405,11573281327,5d12dc2342c221b8412ada5190d565b7, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,110,36054.224000,43.466249,44.097031,45.612096,22.850479,28.702158,96.477041,95.471198,47.513792,44.657637,43.437538,44.079588,45.597643,0.355096,368129.41,4.12,2856491907853825,19339796085,1270749561748494,14639693798,4ca8e4fa3ec80e2f894fd5672f5439c9, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,135,21667.120000,38.284267,40.877509,42.945533,19.381768,24.572044,93.915794,92.284189,41.814627,40.938828,38.260477,40.855244,42.931318,0.358084,347613.48,3.69,2600960891151590,17868417064,970811280125892,10309853531,e71c74dd65c29a108eb8f3dec9193cad, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,160,13038.272000,32.978972,38.169861,40.177581,15.601970,20.225913,87.290237,84.353427,35.402236,37.006426,32.967103,38.155953,40.170876,0.351209,299860.05,4.04,2416512627915744,17677389446,1043000068615278,14615844349,b92e1276b4cdfdd31c649c2f7c641833, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,185,7270.384000,27.579643,35.175549,37.005097,11.545609,15.461670,69.631511,65.823922,28.539760,32.705783,27.576541,35.172255,37.001844,0.264992,256098.13,3.09,2099261902524267,16585849914,715196364745778,8683496961,232dfcda4eae123db3c23e71139ef1e6, +AI,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,210,2614.048000,22.395573,31.286524,33.614223,7.491047,10.325724,41.005655,37.487149,21.949189,27.959928,22.356255,31.278875,33.608976,0.213303,194812.23,3.59,1296134564715250,14815654618,529102120344218,10033067814,4e69cbe1ba4c6f740834da9eaccfba39, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,85,3609.596000,54.926808,65.524958,65.534759,43.108734,50.547692,99.909469,99.893964,63.763613,70.030966,54.924145,65.501578,65.505661,0.003697,237896.06,2.95,1586832651334187,9419126403,646834388457025,8186286119,e09310217e1475c1b64a12efa353776c, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,110,2689.600000,48.530004,61.560817,61.063674,36.619485,43.680855,99.899409,99.868250,57.904365,62.490965,48.528012,61.550109,61.039179,0.004006,181045.91,3.52,1516900766590765,19957311138,505771296835219,9854762570,82cc0d5ede608fb48c8957a97e45953c, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,135,1877.184000,42.504573,57.652228,57.951172,30.636901,37.170563,99.850003,99.798352,51.501690,55.724618,42.503092,57.640344,57.931080,0.003093,201983.93,3.06,1666005665550550,20434719956,564084736614621,8560257391,e780ecf6783bdd520c6c2839d800bac0, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,160,1269.216000,36.917741,51.793415,52.996531,24.867419,30.666283,99.746359,99.651172,43.464774,46.076862,36.914179,51.714949,52.785643,0.002288,253897.05,4.27,1658303825849673,21023787337,687892752105965,11947112035,63a6ed3fde4b13f677505ec20bfde735, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,185,881.940000,32.143576,46.508198,49.446632,19.767119,23.714885,98.630939,96.062170,35.147422,40.354824,32.139194,46.419194,49.331818,0.001391,168602.37,3.25,1440768367672425,20860641839,470930604259254,9080855909,6e6ce8d0982ab4d9f75a80148e8895ea, +AI,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,210,621.856000,27.253759,40.771302,44.050086,14.862618,17.960681,79.857767,75.909038,27.109318,35.273330,27.249165,40.738108,43.983959,0.000646,134422.73,3.18,1174388798515003,20454062038,375404371948135,8915280221,c2b2332579f06f0649ed9a23ae9fc677, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,85,5195.032000,52.761304,57.973780,57.684287,31.458285,38.582985,97.185629,96.290488,57.388425,61.790010,52.741841,57.950305,57.653669,0.133114,157217.33,2.46,1218718360222116,10185006204,439111638146700,6884617857,f0c374c3584c8df7ad54328aa3733340, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,110,3585.104000,47.306243,54.058541,54.048269,27.621272,33.630043,96.209636,94.717635,52.147700,56.333646,47.296012,54.047375,54.027112,0.127615,168432.06,2.84,1051149978946318,10502758369,450125791552816,7786545708,5c52ad6ab5a4f9eac5eb028805ab07e1, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,135,2362.988000,41.744469,49.385729,49.641136,23.468597,28.444241,94.014371,91.453665,46.029641,49.719562,41.740475,49.379775,49.632044,0.083156,204573.80,2.95,1265237628086648,13046563656,543105772004046,8128256316,33780c49dbf7579ff809ac88455ed814, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,160,1487.472000,36.248752,44.817344,45.398201,18.720353,23.174016,86.947731,83.677843,39.091006,43.445532,36.247285,44.814125,45.391730,0.090244,149093.61,2.30,1185042809008677,12513944220,416343949723481,6435964856,77237b810495a459d7c92dd977fb0259, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,185,892.256000,30.978182,40.056183,40.582461,14.296640,17.363622,69.977525,65.623087,31.665122,37.631235,30.977534,40.054940,40.577109,0.073116,130403.45,2.28,1076267031463263,13842969280,364202811571125,6405126632,c8fac3bc93b89896e562213fbf495584, +AI,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,210,387.752000,25.203684,35.694485,35.291093,9.916885,11.761215,34.266640,30.861461,24.067542,33.033448,25.203490,35.693204,35.289559,0.068320,113637.22,3.00,769379307625557,12915092746,311484670949756,8455730331,3ddea1ef7ac57e9739617e5387f0d091, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,85,13804.544000,54.087278,55.039754,55.204200,38.512720,45.046562,98.573619,97.954958,60.619466,62.728521,54.085759,55.005025,55.194266,0.004170,202031.65,3.81,1669594651181196,11973645170,708079717638282,13388602967,44909aeaae65b7ed7c3d0a313b419b86, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,10221.848000,47.157501,51.350477,52.078633,31.771274,38.099410,98.009664,96.870202,54.998228,56.950637,47.156933,51.323199,52.067900,0.005186,193849.52,3.02,1581093332708301,15036124503,541354669529642,8435870159,661b446835f7ef1a0d6e2bceea05d646, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,6815.664000,40.926583,46.465620,47.582988,25.676214,31.257874,96.096135,94.132744,47.765054,50.166418,40.924667,46.439598,47.575341,0.002993,309520.39,4.80,1964659155931896,19862743860,824780598347253,12981440492,f7fa7f38616c54806eebd311f9f146c7, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,4336.928000,35.175497,41.042438,42.341554,19.805740,24.071636,89.895909,86.459082,38.936917,43.269737,35.171826,41.020283,42.334980,0.002194,241691.10,3.29,1942916629508912,19741503119,675046966066770,9173837197,040e37ef36ef07bf48294f699519647c, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,2779.040000,30.032698,35.607984,36.851824,14.632831,17.750440,74.245421,70.390224,30.813813,37.638537,30.028213,35.585423,36.835082,0.001037,207685.81,3.00,1724017593947084,18962063598,580002246835257,8384051355,bb0b75927f7d7204e66dccf0ee4d71c9, +AI,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,1523.896000,24.641724,30.005989,31.313367,9.243067,10.407927,45.015853,42.190818,22.709172,31.578955,24.636868,29.944669,31.294058,0.000425,152244.68,2.49,1287742085086299,14313529004,425181721897978,6928858164,7e5f62dce5bae0fd98b6cc73874c1bfc, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,85,3574.760000,61.790292,64.854994,64.663408,39.718789,45.359653,97.375469,96.897261,64.111462,78.977948,59.042734,61.837148,61.282978,0.000101,67364.96,1.81,454711033903731,7722689877,183928812487519,5049654904,f105cd283c63db6d8b62b740fb9d2adc, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,2398.600000,56.708771,60.622120,60.631224,35.263959,40.299376,97.023360,96.248971,59.520109,73.978067,53.751336,57.070400,56.695162,0.005113,59181.58,1.98,395155531115221,8619741210,160991853742592,5605067433,0e315967f8efd801e2de52d7492c27c8, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,1538.320000,51.579247,57.164364,57.310891,31.054963,35.270612,95.912372,94.726260,54.111096,69.424631,48.582130,52.685509,52.366804,0.047716,52214.96,1.69,437494757253360,10035305980,145830413019797,4770304397,b6be42ef3135783ba46492feb553d6f4, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,960.712000,46.456317,55.214441,55.076851,27.189546,30.427185,93.689407,91.469119,48.087844,65.001427,43.345162,49.793705,48.544209,0.037064,47261.81,1.78,404038502871747,11723442986,131998956125890,4980905892,e4f506f68ea26eb7a448a7d978499059, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,589.216000,41.430580,53.019275,52.288930,23.520130,25.778379,87.475738,84.265687,41.606715,59.445975,38.222517,46.474895,43.580412,0.007893,53243.96,2.10,355521070325949,11325131400,145945527658036,5945848631,52fbeee81221c2a6acfd24217b5b277d, +AI,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,310.208000,36.297548,50.982872,50.395526,19.674875,20.942325,73.197868,69.105624,35.144470,53.539512,32.746778,42.879281,40.025330,0.045161,37069.94,2.02,251842829299673,11565292293,102335226247160,5780504222,20a193517aa085d89e859698782d9f6d, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,85,15697.800000,50.796592,56.781009,56.671573,34.552361,41.376940,98.072362,97.475453,57.780161,58.836282,50.793319,56.774782,56.662872,0.062381,282439.01,3.84,1753833801120988,13038045996,752578304322127,10334594563,8782b079201c749ba7f1844b3aecdd9c, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,110,10115.296000,45.154731,52.756742,52.447280,28.745251,35.164079,97.526062,96.457511,52.247856,52.927692,45.151790,52.749707,52.439947,0.066557,251745.74,4.39,1584792297059179,14729178678,670484189612879,12007224829,cff813f754ab9f040edd13809d2ebc53, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,135,6348.432000,39.855955,48.204682,48.166088,23.522110,29.247020,96.085743,94.314607,45.733250,46.678544,39.853514,48.199148,48.162085,0.060668,307743.28,4.61,1886559815409372,17610112193,815731286423589,12759894473,1d2bfe54a0fe057d89294b404cb4a896, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,160,3955.352000,34.755624,43.851071,44.130566,18.201430,23.160293,91.680593,89.299324,38.082808,40.825879,34.753095,43.845036,44.120826,0.045370,226454.26,2.85,1754414788964509,17227685786,632469809891744,7964014072,9fe559cb5eb77bf954b4c07559755742, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,185,2537.152000,29.924499,39.311791,39.216697,12.373051,16.640617,78.884704,74.711530,30.572482,35.492535,29.921354,39.294734,39.209931,0.038978,189102.33,3.35,1536745861342274,16454603080,659839334945346,12190972310,813fc12c0f8ce1cc251164f8a5d17eb9, +AI,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,210,1517.352000,24.573213,35.122732,34.672854,8.472046,11.105542,49.262958,46.201141,23.177698,30.540701,24.571375,35.110474,34.667187,0.019919,148855.81,2.57,1223488268222839,15185275456,415766552646313,7207443739,54ddbc08d75f3a4bab4d86718399efd0, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,85,10713.168000,49.463992,54.066266,54.507807,21.979283,29.231684,97.533163,96.801168,49.270216,54.332523,49.463954,54.066033,54.507386,0.900660,244414.98,3.18,1503585469451427,9985411834,650427311022140,8617959949,85e579e5753087d69134b67a8f2d3fe8, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,110,7955.288000,46.067874,51.370998,51.935599,21.379130,28.051201,96.816584,95.621558,47.847420,51.260516,46.067698,51.370340,51.935466,0.838004,151340.22,3.66,1225133297710620,17766714478,525769512423476,13288102462,9c8304d9b4fdc44cb6d99673e3cb5ea6, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,135,5829.168000,41.416378,48.046403,48.401013,20.147030,25.798994,94.850783,92.953588,44.638112,46.939177,41.416084,48.045173,48.399781,0.828460,183748.36,3.07,1434793954295427,14067053016,637343900050834,11080220259,ee6cf4b049d611448c78103584073c2a, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,160,4149.264000,35.979162,43.883228,44.894824,17.979474,22.179867,88.976113,85.614019,39.356680,41.793004,35.977563,43.882589,44.888312,0.914014,218485.17,3.68,1425401711629854,14765587215,586823799529517,10170083938,595d15b564f495fef3db31799427da25, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,185,2840.280000,30.507740,39.121384,40.577187,14.804489,17.980580,73.348261,69.274139,32.463987,37.255579,30.506716,39.120172,40.575958,0.724498,179591.21,2.43,1492139353530331,14975233345,501634997321702,6792420879,1c3bd90f2ec9e959c9547184e702340f, +AI,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,210,1303.216000,24.319097,34.981079,36.961595,9.766255,12.329515,40.216541,37.109353,24.390630,32.467062,24.318762,34.979398,36.960442,0.470930,171818.32,2.91,1163442008116918,14100371799,468936351662654,8059371860,89d2a3e84ac50977089d1c4f6fd2312d, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,85,110379.140859,43.712483,45.989959,54.813562,14.195860,21.122759,93.578716,92.058260,45.787494,40.916379,43.712476,45.989953,54.813316,0.033433,906580.60,17.38,5062610997108721,67123732893,2331306281732009,47522857766,66296386829cab3e0fcd29df27481ab9, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,41463.800200,42.071068,45.521767,54.021790,13.004322,18.229658,87.646891,85.679537,41.327380,40.045915,42.071027,45.521728,54.021349,0.093735,402525.29,8.45,2590280914330196,40448988906,1124157024384883,23624661733,b064c640d3d27c3e2eef44be9eb4989d, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,16904.199800,40.174507,44.971704,52.734306,11.957230,15.461104,74.153116,72.258776,37.659556,39.005623,40.174365,44.971596,52.732829,0.701458,195652.03,7.35,1264047378847711,33904327213,546420651955909,20560877329,cc17c74f615b1cdffb51766df348cc00, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,6260.715285,37.975899,44.137383,50.943354,10.986739,12.789969,51.550598,50.330820,34.517234,37.670552,37.975642,44.137056,50.940422,1.566317,77122.54,8.33,495211042744716,51546814912,215413048371059,23310259403,ed00a8ac5ab1bff642b085c03c93bacd, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,2155.460539,35.785827,42.967620,49.548874,10.293827,10.555071,30.843013,30.272590,32.000249,36.158229,35.785588,42.966550,49.536856,1.592238,26382.79,8.65,174232444870157,65014152647,73675319479322,24210132496,6f4191639cdc20a22754d1c9d41426ed, +AI,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,725.210789,33.706772,41.445829,46.816348,9.873283,8.926091,16.061580,15.711282,29.899410,34.496076,33.706394,41.440676,46.613974,1.916334,16546.34,8.15,76716252482876,51334174279,45228575010395,23516380428,cc59770b95d0bd0b6902109cdefd24a2, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,85,104865.088000,50.271779,49.478353,56.488913,22.271836,25.351852,97.734862,95.744218,47.954089,48.316073,50.270841,49.477815,56.487742,0.597084,541212.15,19.86,2806833451306626,85724818171,1386438563532535,54894151336,fbda3ccc943ce60c44afa3af4494ed64, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,51222.672000,46.284906,47.395781,54.985654,18.915946,21.157612,91.841595,89.570686,42.942100,45.720601,46.284069,47.394799,54.984646,0.955047,452592.19,11.73,2882243964694544,63268655229,1264063672188518,32781342804,ed938db507bd0e7302213a08e84de752, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,23531.568000,42.169902,45.714713,53.525607,15.659189,16.878559,78.373790,76.008591,38.117300,43.115274,42.169149,45.713648,53.524451,0.824380,268398.68,10.32,1732966410898030,54890395261,749606920030289,28877149387,89bca0ef8e8d4268ce2e2cf295e2270a, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,9258.624000,38.300327,43.671309,51.051592,13.003565,12.905335,52.727516,51.205527,33.894371,40.201290,38.299622,43.670069,51.045088,1.231175,169512.30,13.29,861784206033866,62071399937,436070874397346,36804448670,1c2ecce52f19c7a667f5ff02b8ff84cb, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,2561.568000,34.849683,41.558961,48.892126,11.175352,9.571309,25.395310,24.852435,30.387914,37.530868,34.848555,41.557674,48.858395,1.396604,40775.19,8.27,289007708371262,53073499377,113893693771422,23074016614,c9ab59818f71d8608a8bc84070d28687, +AI,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,561.760000,32.801825,40.370831,47.545563,10.515805,7.984779,6.364064,6.157085,28.465091,35.755907,32.801114,40.369129,47.523472,1.797007,15754.38,6.06,106544885805576,47387004654,43993942834791,16912027762,1a5fe4b82c018fbc6fce15b0be26d6b1, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,85,107029.008000,49.560957,48.137216,52.817630,20.548736,26.029977,93.225082,92.324270,49.596424,49.108479,49.560730,48.136871,52.816211,3.368409,478123.86,16.77,2564780520092819,72474562584,1230592289148693,45295180117,26fc0829802fba0a79e75439b3bc916e, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,25661.184000,44.823124,45.416021,51.892605,16.075105,20.385419,84.860167,83.983289,43.266148,45.941878,44.821969,45.415051,51.890634,1.999098,368461.62,10.23,2371042902589587,61484516485,1029035682892483,28562426389,6ff328af8bfd73bcee7edf5cc92f43f1, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,4731.760000,42.199254,44.338290,51.127041,13.872309,17.087814,68.988352,68.279448,39.386349,44.625140,42.197468,44.337336,51.125098,2.516579,110537.60,4.49,692451916620472,24187369786,308679855644149,12516141609,868dcc7e58750d25e7373769f647eb83, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,912.656000,41.058817,43.597089,50.317904,13.263036,15.558221,53.373117,52.877595,37.736357,43.572227,41.057057,43.596571,50.314737,3.714638,34568.56,8.06,226084177694324,60687652055,96535068339883,22497434437,29aff0a721b9b9d3cf3aba4ac358d443, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,453.440000,40.419875,42.737228,49.023119,13.153613,15.021963,45.895139,45.343363,36.950813,42.345303,40.418273,42.736418,49.015613,5.077730,19982.27,7.36,112947877638351,48580502904,59144053527023,22923077429,2d79ffe760dd7c2a4717e8d90ea1d1e1, +AI,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,246.032000,39.212762,41.283810,47.062853,12.964044,14.235787,36.562606,35.931642,35.577942,40.379166,39.210663,41.274638,47.029463,4.897392,8911.43,5.93,53639939755761,47039479673,24888393771811,16525878281,828519a5f21ed1720aa496c3662a2566, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,85,260383.408591,44.617903,48.018598,47.344195,16.953155,23.896239,99.815379,99.765314,47.929232,43.876741,44.606951,47.988043,47.337112,0.004138,821206.67,20.78,5595509618742904,108334502108,2293492058602753,58011864311,8408ab9bda0dd6f4ff9c25b446ce3cef, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,110,99828.075924,41.383287,45.312694,44.663629,14.254854,19.426985,99.591786,99.318919,41.747071,41.129232,41.367708,45.296167,44.656543,0.010625,866423.46,21.23,4788436267341620,93685031558,2250936438616877,58208509300,3370ce1852f9a2690d75493c59bd4795, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,135,44390.489510,38.575251,44.007107,43.510504,12.449166,16.161328,93.514778,91.321462,37.204243,39.139628,38.557747,43.998689,43.502596,0.255168,521697.23,13.81,3565455459124184,82146410667,1456968142554737,38558785724,c82870b21689822dd0e0a6de16061068, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,160,20537.622378,35.636442,42.641132,42.482829,10.790760,13.748849,76.548479,74.112042,33.274717,37.081193,35.602286,42.637960,42.473068,1.203606,357242.15,16.08,1960363660915795,78471159783,928603633845110,44940561124,79ba477c2a16d07e6e14f167b83761f2, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,185,8929.118881,32.402921,40.711110,40.860444,8.992189,11.092420,53.251635,50.967939,29.177891,34.654083,32.343360,40.704498,40.846224,1.175967,127886.53,11.55,871890908985455,71511391963,357154854978921,32269218173,da67d7552fdda4549d9ab85ca1838c3c, +AI,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,210,3278.401598,29.065363,38.372008,39.055177,7.327259,8.164984,26.229010,24.912313,25.225948,31.980315,28.985856,38.354526,39.032206,1.039987,68772.50,11.66,334777152743560,61007852864,183350391067303,33196005929,fdee719aceeebb9d30ad7d47b34af768, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,85,10521.632000,46.138638,50.616146,51.306979,17.509351,25.561389,96.474089,95.088746,48.584277,46.732914,46.138406,50.616010,51.306855,0.080815,245661.57,4.75,1349446117703426,21448676052,635152606970247,13056201608,952b65e65efadaf920be105aa90c775f, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,5555.321600,44.216377,47.049995,47.624905,16.487194,22.783133,92.411997,90.601047,43.640014,44.180171,44.216258,47.049787,47.624672,0.114897,149191.21,2.92,989292668153257,16983003399,416717028404958,8142905202,6fe48ba52f556a4de24a34f727d37aee, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,2894.720000,41.497403,43.480119,43.925692,15.080134,19.455009,82.774100,80.684906,38.826327,41.173451,41.497339,43.479888,43.925393,0.177397,105276.80,4.06,568679806183917,17979635334,272652540604292,11281858314,c5b6ce6e96cc81887a6d30adc0ac1af7, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,1421.849600,38.139182,40.183807,40.166239,13.256730,15.787587,63.891338,61.898052,34.299237,37.914113,38.138973,40.183420,40.165850,0.239436,49080.05,3.90,264775764920997,14820033881,126563943984572,10929854033,26f2e65107b0caa2e72e3a9c925a3574, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,651.840000,34.676442,37.433654,36.861060,11.490349,12.361848,38.379252,36.901298,30.324207,34.825463,34.676150,37.432327,36.859972,0.315090,19442.22,2.64,104199648430925,14506373426,49999110743459,7597873848,5852438f5a3035216dfbdf3331ab5994, +AI,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,296.345600,31.336266,34.944847,34.045151,10.130228,9.505031,14.316567,13.680134,26.875881,31.866976,31.336018,34.942713,34.043379,0.159915,6488.89,1.87,43956263354442,14280332761,18121447781274,5220850646,d93f675b1def02c2b64c6586aeff585a, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,85,39264.473600,43.794576,46.939813,49.883431,16.874058,25.393348,99.827603,99.769023,49.480682,44.151590,43.793366,46.934243,49.878567,0.203356,386524.18,7.56,2230042234290786,28256880381,1011072194633276,19977088670,da4a633b26e0e21de625faabb77ffb36, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,19389.657600,39.583787,43.936140,47.531088,13.903207,21.352015,97.479429,95.448858,43.199836,41.055432,39.581780,43.931350,47.526664,0.202759,539874.25,5.05,3174391599008145,21408467444,1418252220325189,13645410734,d96106b24d55b98002d80f5386bf6dbc, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,7719.712000,35.333862,41.750197,45.280280,10.340434,16.546571,84.575074,82.140592,36.526039,37.966660,35.320999,41.744878,45.275607,0.244740,351663.57,3.33,2504715733569999,19138702171,982190258385877,9292058623,5b10344db92fd566e5ed5055ee9910d4, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,2994.515200,32.121328,40.014788,43.235037,7.776205,12.125127,60.119351,58.057467,30.677500,35.026203,32.100578,40.010180,43.231979,0.249861,160927.18,3.32,925624587636638,16418945477,420981320012405,9186368337,39fdbd211ba41104ca81efa4e0b25999, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,952.064000,29.124879,37.956858,41.023420,5.668181,8.067777,29.601728,28.661896,26.019118,32.056216,29.111043,37.952911,41.020397,0.267904,45519.25,2.53,245372202773927,12089251142,117261971353636,7080770737,f71a487400b5acb26aff0e3342314364, +AI,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,242.406400,26.764273,35.915677,39.158589,4.542903,5.210196,12.129534,12.017610,23.015582,29.493293,26.753872,35.913748,39.146500,0.567544,10836.90,1.87,73209795263269,13417919823,37577344266984,6994809680,74d3f8047942f975817522d1902eb7cb, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,85,54888.535465,44.777675,51.040655,55.796693,16.383313,23.215010,95.263761,93.654846,47.502379,44.341649,44.777649,51.040600,55.796497,0.171093,326690.84,6.55,1828021263575253,27140595344,849675884980778,17930777249,45d8c8b943b9e86d5e4a63baa5c12116, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,23916.611389,41.385142,50.112551,54.685199,13.865601,19.487374,90.115716,88.123509,42.324391,42.418522,41.385125,50.112446,54.684922,0.287791,307547.43,4.69,1730662546253359,22440069154,800966621837663,12897823308,e272fd3df19ccf13fc3dfd16d77496b7, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,9280.255744,38.155303,48.835377,52.833676,11.568279,16.153499,77.887611,75.802187,37.574423,40.305461,38.155274,48.835075,52.831744,0.522218,176473.60,3.05,1310188040033351,15943899664,602257177109469,10984723657,f2ab0c8c144cab30c8e5e3d44e2d8fef, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,3220.795205,35.305073,47.136455,50.768239,9.609703,13.134843,56.910173,54.999217,33.324526,38.065460,35.305026,47.135087,50.759653,1.039338,84743.62,3.54,488098051767916,16362365368,221902560508117,9990951685,909ab90d7679b056dd06809e5948bb65, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,1092.347652,32.920777,45.740693,48.687691,8.297405,10.557104,30.679289,29.349817,29.893694,35.958083,32.920694,45.732156,48.618864,1.134263,17012.05,2.24,112177320334040,14224794851,57110990321228,8254144903,393ef9851efc3e0908312cf97a586e95, +AI,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,413.138861,30.910501,45.050209,49.297120,7.631015,8.634356,7.659676,7.220216,27.388352,34.369854,30.910317,45.047224,49.294807,1.040145,7402.96,2.60,39282842709286,16429686120,19763576213039,7521729655,09439b0bf2a13c5250db4676dabab117, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,85,15306.437562,46.504435,52.692437,58.881390,17.147616,23.808599,95.784809,94.442484,47.726856,45.903090,46.504373,52.692409,58.880954,1.056094,122981.54,3.42,871356129172390,17741564776,413258055034663,12277584238,e0326aebfa0228e4072d7c6b4aeb2846, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,6862.961039,44.760987,51.789146,57.103372,16.025343,21.508854,92.411724,90.585938,44.323995,44.769209,44.760775,51.789012,57.102531,1.117953,94428.61,2.64,630864352946440,12698960105,263761332477570,7355128262,1a82f4ad84c477236f756d605dc9db6f, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,3135.280719,42.562531,50.250448,54.881190,14.787398,18.814707,84.461815,82.183817,40.597048,43.162913,42.562240,50.249783,54.878996,1.149307,48341.72,2.63,319580848870760,16097576359,135018802065990,7322914577,d2f2dfae92102c155723c486021bbb3a, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,1458.461538,40.045525,48.443335,52.430293,13.678102,16.103332,70.323182,67.610349,37.090367,41.176339,40.045311,48.441031,52.413169,1.255737,19583.02,2.44,133331234174463,16501567728,54695206514244,6787626728,a51a944a774d2b3c22ed6fb77636b0e5, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,702.577423,37.297753,47.080727,50.544424,12.729713,13.612331,50.578849,48.061742,33.801535,39.181718,37.297302,47.071011,50.473639,0.542999,10583.53,2.70,54370824558352,15973532632,27364762063565,7726461429,3de813a623575f8ff0c6b1e7be93af1c, +AI,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,350.593407,34.182680,43.052771,48.197519,11.773135,11.201762,26.560816,24.553434,30.395056,35.783236,34.182368,43.012253,47.927783,0.446727,5445.60,2.68,28032832223508,16790178517,14680434499962,7796605507,87c3d04f1431d7227c843e2cf605104a, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,85,5409.971200,48.078151,51.032735,54.763026,18.878240,24.565475,99.752006,99.712329,47.860972,49.475027,47.876055,51.020477,54.623505,0.187656,175273.53,4.09,929985880732977,18684756589,451426056520150,11331868511,d8205bc620376a7abddd505dae0258b1, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,2474.060800,46.299071,49.352455,52.351597,17.921004,21.937530,97.641797,96.376299,44.242281,47.774967,46.131208,49.341585,52.244231,0.203519,118230.70,3.61,601334222189729,17088369940,304214548292275,9865175090,2166d48014e9df247b9c4bfbd3b52281, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,1184.198400,44.048538,47.163778,49.631371,16.966349,19.185571,84.753989,83.192670,40.805997,45.667102,43.922219,47.153083,49.537393,0.202553,46042.00,2.34,300859534936647,13861403385,154759643129410,8570684609,8d0689f9079b5a07a974b147cf27423a, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,549.683200,41.307643,44.572899,46.717313,15.996944,16.408938,61.386484,60.021785,37.448971,43.130523,41.200665,44.561159,46.643982,0.240056,15083.72,2.38,103055764129197,16363655128,42138075717980,6665807680,0749611c31247944944ad3cc3fa2b563, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,259.251200,38.465600,41.872108,43.726269,15.187865,13.949873,35.361487,34.409118,34.389552,40.324691,38.358293,41.856400,43.661362,0.192482,6161.20,2.18,42821284040467,16568644825,17211578615764,6124269908,27b80de4ccfd6afa07c9aec0899d55bd, +AI,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,122.585600,35.474596,39.094732,40.792081,14.488693,11.740323,16.422065,15.997180,31.418063,37.315548,35.366262,39.077684,40.748332,0.190374,3184.84,1.64,22088338652344,13467253285,8901479087745,4608691864,c3b456b276c4bac727449639b755f24e, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,85,10170.841600,49.495852,55.556288,56.740064,21.534752,26.727911,95.401006,93.307136,50.865045,50.657321,49.495810,55.555908,56.739091,0.004857,332158.24,4.98,1765718706477893,20922619349,860393633446947,13638248583,61c6e17ad837fbb70a2f0f796b1dcfd7, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,5065.446400,45.239021,54.200609,55.024856,17.524488,22.024842,89.349457,86.790211,45.173707,47.795261,45.238939,54.199876,55.023881,0.004459,334269.95,4.71,1755096292392738,19158017592,864664423382832,13047181440,d27399c178a984af3c62684d206b2b21, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,2092.217600,40.848827,52.120131,52.494943,13.375552,17.148304,75.586235,72.893353,39.515939,44.326473,40.848560,52.115873,52.491842,0.005430,135740.07,2.48,923853621465400,14358636611,379100154692799,6914177419,5a932988d5245316bbcdfa59e5eac0ce, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,613.920000,37.188933,49.998944,49.222066,10.200696,12.854153,49.265195,47.273213,34.645862,41.066280,37.188507,49.990283,49.204380,0.004305,61621.37,1.89,504936991249346,13260850938,172093315167935,5300370882,a77a531f2f6eae5e4eb650fd5d94d097, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,165.356800,35.034148,48.413160,46.836420,9.083747,10.284480,18.211539,17.494938,31.804383,38.924858,35.033486,48.367236,46.799699,0.005315,27725.92,2.32,180607043132464,14810954982,75932614772777,6696710812,71589acea05b5368a4c77a10bfcbc2b3, +AI,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,59.219200,33.565290,46.061330,43.926545,8.871834,8.945464,3.003452,2.866130,30.149646,36.902010,33.564609,45.957022,43.875625,0.007314,7537.08,1.69,47269110892724,10536598765,20890902278837,4854381103,c63fea45784c61c5187e4a9d6a47136b, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,85,69024.079920,45.572075,50.533833,50.532615,18.007322,25.016546,95.981273,94.306569,49.040038,44.605989,45.572059,50.533532,50.532389,0.529247,475315.52,4.26,3275238717354293,22901488316,1327409904780179,11908989308,dc8dc912d7519d737c53d6aebf34dee8, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,110,30858.597403,41.310799,49.388260,49.700446,14.239393,20.209164,91.207836,89.201000,42.868672,42.263668,41.310782,49.387936,49.700169,0.676103,482090.81,3.73,3288310850744145,20514429279,1346292617623307,10437064889,349d45382ae202fba4033e3860d32302, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,135,11675.188811,37.564076,48.128336,48.802558,11.054413,15.796329,79.988420,77.738953,36.975379,39.830723,37.564040,48.127864,48.801828,0.693899,372070.48,3.68,2192650534159611,16411043888,983814681429551,10217875566,203afdf7ddad51f4807df810530aee60, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,160,3859.772228,34.570992,46.429240,47.408607,8.947582,12.257763,58.561813,56.528936,32.443006,37.502181,34.570924,46.428417,47.405956,0.739274,204932.67,3.51,1281595337765911,17001046595,553229391570441,9770058504,3f4bd9886b6e585ecb88b2839c5f1e64, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,185,1255.352647,32.219529,44.271191,46.130073,7.799536,9.800843,32.990860,31.462554,29.140698,35.314215,32.219500,44.268160,46.102881,0.665640,81201.24,2.78,543381522675286,14758419284,222403678177055,7844221320,59258a148db65eb54ef7cad46283ba21, +AI,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,210,434.589411,30.262190,42.209622,44.846822,7.210171,8.173138,9.730310,8.999197,26.709268,33.287656,30.262103,42.186733,44.806728,0.392531,27411.69,2.67,177159176426505,16975165672,75580157342040,7700914161,28159f29ccdfbb99efb87731747c4fa1, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,85,28458.893333,46.612072,54.813286,53.934473,19.700878,26.439594,99.870649,99.832233,47.966347,48.712622,46.605976,54.754537,53.743838,0.013744,367360.78,5.61,2037847454614082,22445376776,955581230558330,15028364606,cb25b9162fad29b5a22b6ce265d67e67, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,15344.573333,42.602042,51.664040,50.597621,16.440968,21.745652,99.790591,99.732374,42.305520,44.620772,42.589658,51.627455,50.275183,0.039890,232102.83,3.81,1620124062068451,21746304081,648176855955693,10619222554,c40cfa57da95ace15d98af9ac6724874, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,7487.460000,38.507591,48.934640,47.763285,13.015294,16.823403,96.938475,95.183442,36.418817,40.818928,38.497422,48.907028,47.333571,0.229424,331548.09,4.73,1861059617605837,22796388750,865055014756251,13019437214,3c7d78706e8d53050586bf84ddd04838, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,3167.126667,34.552219,46.081967,44.918085,10.018031,12.274520,80.907846,78.683071,31.227010,37.189947,34.540338,46.055474,44.539487,1.831042,168348.80,4.10,969862480762269,20305706440,439199572395982,11329413228,86f5594a32a58656692f08783689ca79, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,1351.160000,31.434397,42.838165,41.665557,8.457645,9.967862,62.205239,60.198977,27.699431,34.339454,31.419579,42.807211,41.367877,2.827543,73995.62,3.85,422017083229910,17336129070,192664433242769,10708299810,76f1f37f47833dea0c2bbe398893eb6c, +AI,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,607.226667,28.496415,38.995166,38.043704,7.332167,8.247050,44.625087,42.899188,24.475303,31.425740,28.476269,38.934866,37.835157,2.929749,21538.01,2.46,151020974361288,15193658344,60156795203641,6894923225,7b718edfac9de0dadbcde57185e94b1a, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,85,38892.787213,46.387401,48.510547,50.048233,22.437677,29.601386,99.879489,99.792916,49.870896,47.536222,46.360144,48.481791,50.023786,0.373637,294674.94,4.61,2059225703919184,23334943278,822935087122870,12834655088,4a6dc2553719f8670b87729a9e3e53c3, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,110,18719.344655,42.298808,44.566657,46.314638,18.920888,25.151333,99.430101,98.273549,44.299410,43.385370,42.259878,44.510514,46.263240,0.311588,270234.22,5.16,1569356839972511,21925902534,707511744284496,13986633988,599d89a5e2d87a5c5e49cee4507f2d6a, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,135,9823.256743,39.010278,41.608262,43.558824,16.254778,21.471629,94.773952,92.329430,39.079128,40.378194,38.969979,41.550170,43.496899,0.424851,344691.30,4.69,2023996285088845,21869232411,905550302050981,12877261312,600ea6ab9fdd50230a8bd96929e3b4e9, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,160,5314.941059,35.374763,38.746417,40.779731,13.336654,17.537344,83.327863,80.199349,33.803010,37.269679,35.325124,38.697983,40.731463,0.713257,180331.06,3.31,1345686691929308,18881085880,503618811000627,9249307727,27a77b66aa5f708ea945c52ce2c37235, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,185,2721.422577,31.319085,35.655117,37.615534,10.141900,13.374059,64.661770,61.386714,28.602813,33.780588,31.259327,35.610165,37.577550,0.694870,127277.68,3.64,771134569798496,16571203707,335496220473890,10038214716,88922012be1be781ddc3218db2d22e99, +AI,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,210,1225.614386,27.071628,32.494532,34.313385,6.334141,8.973010,43.284347,40.619511,23.572065,29.884914,27.013821,32.465544,34.283911,1.202455,58026.39,3.38,345143562008407,16784312153,154360690024751,9490093675,c9632dba43df592856e1fa73c0740884, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,85,9411.324675,49.310500,49.660787,51.493095,23.010218,28.874848,98.973543,98.433264,48.548191,51.819271,49.233109,49.650879,51.484338,4.867328,140650.18,1.59,971140212568853,7904175807,392788782988619,4457658140,7ec39ae9449077a616f380dbe1800a31, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,4291.492507,45.011083,46.013981,48.186431,19.783389,24.427650,97.924738,96.749788,44.210766,47.485019,44.902847,46.007838,48.180019,5.140895,98553.29,1.42,690739505603687,9086855963,275217829496408,3978391239,e5c24b94b6dcf62b6e8e17ca490e9c3b, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,1982.241758,41.403134,43.341576,45.677896,16.860918,20.469259,94.655969,92.876580,39.937745,44.256757,41.290911,43.337552,45.672330,4.954385,104040.94,1.82,608927648214338,8516807091,273164007027142,5046989968,389ce8488fe8da89dfa1c0a2b378d305, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,947.180819,37.941346,40.458432,43.113551,14.081215,16.812693,87.971169,84.683575,35.739092,41.126133,37.828776,40.449749,43.103484,4.773595,63191.45,1.49,393432581263477,7044973747,167353034022223,4144620624,82984deae633608b0736cc392f265a0a, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,503.760240,34.690798,37.145346,39.899431,11.929384,13.999216,75.655526,70.927486,31.993684,37.871991,34.622093,37.127066,39.879136,4.298999,37706.01,1.24,237762283277519,6377860975,100429836021265,3457242387,490189025db3b9a5d3906ef503318cdd, +AI,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,277.250749,31.296230,33.703600,36.601883,9.998101,11.582094,58.773197,53.429625,28.075460,34.567695,31.242875,33.678092,36.558395,3.937388,17095.30,0.89,142646901118482,6720400426,47748669933167,2514180848,05354d22bccd8b25002d1bd12c850984, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,85,21702.033966,46.365076,47.606083,48.090275,20.039209,27.233426,99.853837,99.810429,48.030229,48.531673,46.341208,47.573144,48.059311,2.570873,194652.26,2.48,1086557456200013,9375779988,506469490161797,6490927912,7d1888d8ee580bf72996c1339bfc7c13, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,10237.906094,41.572421,43.637763,44.393616,15.980598,22.515789,99.733324,99.638428,42.837319,44.183549,41.562109,43.623227,44.369687,2.610361,179037.53,2.20,1011707110123428,9575545569,466145245271075,5917367929,b918537601fb1b62407418ae37038672, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,4512.383616,37.531571,40.898321,42.137324,12.909590,18.491684,96.292464,94.052539,37.620843,40.834534,37.518387,40.881435,42.112807,2.144258,172132.05,2.07,964746484659633,9372988826,447079349097502,5660599348,31425b51283bea5cff7fe0f5379c65f0, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,2072.767233,33.939089,38.348174,39.735703,10.293675,14.529287,82.277702,79.617146,32.494016,37.724793,33.925594,38.335876,39.719891,2.093913,72315.88,1.39,514860963705374,8078982476,201962691500563,3871012449,ec7417642e4d556dac8289baa2ecb4fd, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,921.934066,30.535055,35.498666,36.781580,8.172236,11.006802,61.690695,59.061026,27.810618,34.555071,30.505439,35.488248,36.763757,1.988444,40751.19,1.48,230206904678674,7026625852,105827030820917,4139494934,42646dc39869968a2a33ddebc1e8814b, +AI,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,407.752248,27.458946,32.777710,33.844739,6.768448,8.326220,39.682747,37.984036,23.861385,31.519835,27.414835,32.770512,33.829219,2.437503,13308.91,1.27,97556579466305,7668367612,37174152593933,3547495571,340b46e4ae878483f36b1c44627b38cd, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,85,71832.336000,45.218164,48.022757,47.825686,20.480925,27.815006,99.610014,99.485167,48.226307,44.112043,45.202965,48.013686,47.819138,0.300302,311695.67,9.18,1782760627546699,39083832868,816587501858059,24566644749,a808e23e5d08e952a65923c1f52ca2da, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,40218.896000,40.409466,44.831564,44.541432,16.685272,23.072622,99.327231,99.145655,42.543165,40.464282,40.382769,44.817997,44.530965,0.352368,356029.13,7.56,2090899994278982,33941967579,936036751714249,20417222520,e95585e1a4a0757b1f798a0f2579d925, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,20551.768000,35.920387,41.919064,41.404772,13.074468,18.508911,98.544519,98.332208,36.528167,37.076531,35.876454,41.906565,41.393697,0.390789,625164.03,6.08,3663310244139291,28846182276,1639193151069511,16614339387,f4e9d2f2cc865e72d9404d86e7f44220, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,9594.256000,31.680573,39.195162,38.362008,9.714956,14.065074,92.976422,91.398672,30.672206,33.755173,31.617635,39.189709,38.354847,0.419130,324090.95,3.77,2315170354550681,23086378273,905057351845771,10538949906,3d747a676b37fe027ef7539d169e024d, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,3775.512000,27.732207,36.593436,35.507173,6.898270,10.074493,70.165268,68.142197,25.361422,30.494424,27.658718,36.589029,35.501656,0.579529,142285.45,2.96,1023572071885152,18723218457,397362032914476,8260021519,cca99c7a58e432f5c4dfe2995da9b2f4, +AI,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1224.376000,24.484078,33.737264,32.897821,4.957029,6.770634,46.177132,44.893929,21.046816,27.410014,24.420953,33.722688,32.884311,0.767500,54117.78,3.17,308792912676544,15875537339,142914614782679,8996074003,49b68b0acaa6c091bd3d31669fa8de8f, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,85,43595.802597,45.118126,45.619801,47.131183,17.233124,24.791601,97.879221,96.924555,47.633673,44.503651,45.117735,45.619205,47.128917,0.011931,455748.63,6.01,2555023112650729,26809393571,1184132001847262,15931564304,64c6bcc74a32ed2eeebd3f95f143df9a, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,110,14243.120080,39.744034,41.351325,45.636447,11.642173,18.123417,95.889186,94.696399,40.830602,40.238045,39.743358,41.348693,45.608090,0.014812,326919.35,4.76,1863048345662801,24049727612,848735315981005,12950797462,7339056d4baf990eafeebf012a4867f7, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,135,2713.887712,36.652729,39.569973,44.474792,8.864119,13.683754,91.212646,89.558316,35.431778,38.019233,36.646677,39.554632,44.407881,0.100926,212114.05,3.53,1291252791845348,18086758339,598952661481928,10553929960,2cb128a54c127496c21117076adeacee, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,160,948.606593,35.337139,38.626744,42.858563,8.338306,12.565708,82.653932,80.705280,33.310520,37.018661,35.330139,38.607194,42.748362,0.452343,108723.68,2.96,657730399872773,15385026374,287975288365199,8365481175,1a7dd4fb3e3050f235ae596ada65b135, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,185,455.672328,34.000901,37.420734,40.578067,8.066115,11.887939,72.994057,70.548546,31.322582,35.877460,33.997867,37.402717,40.458402,0.364927,40411.71,2.25,302755842225374,13681760979,112852352205868,6295699853,2918558b8ee4e79cfb9daa222bf10294, +AI,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,210,260.852747,32.178368,35.846852,38.215334,7.817635,11.382541,62.731151,59.337493,28.917144,34.463209,32.159273,35.838353,38.156134,0.740417,11607.72,1.99,83371555985168,13092346127,32420888847840,5573248450,67b739a80dfc5768bb955ca4bfc25d20, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,85,13186.563836,46.089218,53.774345,53.523132,17.459655,24.125888,99.636688,99.048674,46.705506,49.662129,46.015868,53.726797,53.502995,1.655302,248403.24,2.23,1376748324340143,9516604088,642754608405934,5905490294,380e353310feee499df5b3ed97da6e3c, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,110,2128.233367,40.017025,50.643944,49.821183,11.184618,17.788063,98.544891,97.076806,40.384541,43.701054,39.691363,50.632409,49.804774,6.490825,90153.20,1.40,513922292434974,6212607457,233072104624625,3833769928,b48c3fc1b71023be0582313b5d4b25d9, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,135,790.991409,38.948152,48.557312,47.148408,10.757843,16.623723,95.720208,93.458155,38.712011,42.415114,38.754152,48.548520,47.127775,4.481231,38377.24,1.42,274497147987987,7244957929,129383020074191,5182815175,1134be13bc8178d48b1273c2363e8a3c, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,160,451.893706,37.844755,45.792519,43.623201,10.448821,15.968138,91.198012,88.017859,37.093867,41.016023,37.718775,45.786701,43.596824,3.734396,20497.89,1.13,147406487335981,7618792444,57245722635827,3187285385,effcefeb7c148f42b4f79feb52e15d71, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,185,272.636164,35.724559,42.185466,39.459585,9.854761,14.791481,81.259262,77.165832,33.987020,38.938474,35.668181,42.176124,39.426192,2.842607,10263.03,0.85,74930909139707,6114602667,28662342032057,2370228390,60879419dbf30c1c85b4ab81de63faec, +AI,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,210,154.814785,32.520833,38.451584,34.614133,8.870682,12.783091,58.293377,54.941545,29.432434,35.852987,32.496180,38.436415,34.593804,2.082187,5240.87,0.94,37081312301171,6530748376,14637679339094,2647229406,3e2dfdd3f54d21b49bc4cea8485c8a9c, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,85,84849.408000,45.537320,61.988822,65.116621,16.604118,23.057008,87.646919,86.465289,46.829827,49.799107,45.478817,61.873237,65.013033,0.054207,393725.03,4.10,2579223198132388,22673144531,1099552346963486,11468903114,b9adddf60cddac5dba8acc755c2871ee, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,110,21079.904000,39.982740,56.136044,60.126237,10.995927,16.453098,72.924650,71.818857,39.695037,43.707448,39.875984,56.114934,60.089411,0.822961,203126.93,3.47,1119323475262662,14663816760,522036299565417,9316113564,99ef745d95c710efbccc34ba3b07c5c2, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,135,870.848000,37.525900,53.696081,57.658438,8.778899,12.794054,44.665098,43.879337,35.395265,41.071016,37.394921,53.676705,57.629308,2.366410,52368.88,1.30,350922575411121,6876074724,146243842109997,3622369311,25040af2d818701889158918d14ceabd, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,160,372.880000,37.292338,51.669351,54.017386,8.732458,12.551400,37.021346,35.990848,35.031230,40.411086,37.175111,51.655421,53.986382,2.265681,22421.76,1.21,155202474194307,8752907257,62617147011096,3376802125,364e4545089992f8a7462c43f6f792ad, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,185,208.128000,36.901999,48.681901,52.241883,8.703522,12.282294,29.980729,28.781544,34.499400,39.381095,36.806719,48.647909,52.206617,2.003162,8574.81,1.91,46359400728054,12438492149,22640439930370,5507329195,34bfda8cd38af89a8e8617a757080d98, +AI,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,210,123.984000,36.031303,45.508527,49.550588,8.677824,11.889015,26.020958,24.201135,33.375989,37.785294,35.967799,45.460920,49.356442,1.794837,3126.27,1.49,21375613189983,12082644729,8730715238442,4185094646,6cb8848ef3644b61e73e089f6b95a21f, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,85,275418.466667,42.846789,48.544902,51.809382,18.916039,24.873806,99.780669,99.299952,48.759939,44.969667,42.846640,48.544815,51.808974,0.049845,594261.49,7.45,4429031405717681,38913047584,1659681399620498,20814088927,22b46a3b6a2ba369af1ffee1fa3e916f, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,110,163581.920000,36.620683,45.640427,46.761227,12.506259,18.548180,97.525100,96.227825,41.688608,39.161279,36.620626,45.640071,46.760765,0.110627,606165.11,7.05,4615469226815031,38404274451,1691745511593374,19695483640,48aecc63bace996e9bc17967fe31d785, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,135,46575.306667,30.096681,42.617306,41.697053,4.862296,11.460662,89.967310,88.276105,34.046992,32.813666,30.096613,42.616544,41.696510,2.107532,818133.78,4.46,6035758278600146,23638487965,2284885228464550,12443939511,22edf5aae6574188c3de4bd9c3ef9c0a, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,160,8438.080000,27.910710,39.821397,37.056016,2.898247,9.139387,78.865871,76.735020,31.175651,30.535813,27.910699,39.820370,37.055655,9.802283,193765.70,3.49,1421604176550260,18016027294,541117573216319,9845250777,385d66560d2b9e467cf712703285fb3a, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,185,3339.240000,26.781081,37.222475,33.333200,2.729825,8.661614,64.331855,61.951055,28.553586,29.650519,26.781066,37.221677,33.331659,8.636309,123295.08,3.25,707435055990086,15412133445,322284452960871,9178751128,af4e78f9a9b42ddcf5a347076d94d7c0, +AI,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,210,1205.000000,25.120975,34.732885,30.993192,2.461974,7.748000,41.812539,40.069870,24.450307,28.528897,25.120883,34.728356,30.990175,6.467952,32649.29,2.28,230738796632532,13491595179,91182647579843,6386262909,66a542c2e62ae17a1e4629c6b827483c, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,85,75564.931069,49.219132,51.105931,50.944204,20.389663,25.618517,99.772254,99.735230,46.214941,49.865881,49.074005,51.025273,50.866807,5.582773,549976.65,12.35,3130215252659723,49608108411,1526842633855090,35546631015,4fc02251c51ae4a9838a83a4bb6162ad, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,110,27399.160839,46.911997,48.080214,47.927362,18.897778,22.925381,99.442226,99.272707,43.138447,46.784226,46.817362,48.008994,47.894059,8.487419,255040.33,10.26,1343471214407053,35806890623,657441638226715,27934372387,671abc792e6af3f75589ac60fc1efcf5, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,135,13115.220779,45.030225,45.998081,45.844239,18.075632,21.182662,97.233048,96.546823,40.743610,44.799552,44.902985,45.850620,45.793384,8.742669,198270.52,9.65,1030278666941353,39371984322,514822991038187,26731383681,8b110179f13ce2df7320ca9a4d77040e, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,160,7105.438561,42.702410,43.655353,43.507442,17.291454,19.243987,89.102369,87.430323,38.036416,42.570556,42.491717,43.410055,43.411225,8.584668,92775.85,8.24,634333490771776,53466854771,259099501815254,23053487342,8d065865d7648aafd18ce4f0298d30bf, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,185,3887.392607,39.715704,40.558244,40.346441,16.389544,16.921986,72.012491,70.217127,34.853933,39.743274,39.406898,40.236441,40.215656,7.786428,53403.59,6.37,381203811957677,41397008855,149153276710848,17866578621,0dea719b8549dbf1d536ee3a16bee808, +AI,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,210,2081.806194,36.103836,37.091209,36.838161,15.259135,14.220972,52.730797,51.136117,31.284072,36.464338,35.736207,36.771962,36.736439,7.253639,28356.34,6.39,209183377026452,43784070633,79190610578885,17879101591,fbf3a0c2121e9e1d17cb94ed39154dc6, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,85,26621.634366,52.487821,56.834040,56.042998,23.971008,27.827639,98.854433,98.674329,48.195661,55.700510,52.387723,56.122551,55.293632,5.811457,371290.85,13.88,1912521100686313,54005026819,951849377632714,37892097588,0b17b3004aadb6e87249e9aee924d07f, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,110,10638.353646,49.117019,52.087485,51.565754,22.083709,23.549891,97.081311,96.626970,44.329782,49.544440,49.033448,51.581361,51.051967,9.458194,138835.85,9.68,903297960576947,55687220369,387696328457645,27070229559,718fca3d4b19105f983408c888467923, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,135,4339.492507,46.262251,49.578678,49.152212,20.814345,20.473465,92.294539,91.070267,41.547621,46.435004,46.152537,48.928052,48.569390,11.943561,138921.04,11.35,734165071830893,56479402288,360382355363932,31746156072,b46d20010807fe8d134e55820dbced3d, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,160,2016.943057,43.918803,47.194629,46.960332,19.929157,18.565068,84.231490,82.452198,39.336199,44.113352,43.662407,46.330362,46.274911,12.711813,65000.79,7.58,443730385383362,54389627227,181512742461811,21214421465,a09d90eb3abd893d809a03b854bac4e8, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,185,993.006993,41.353676,44.174841,44.181866,18.973607,16.917335,72.764756,70.757060,36.799647,41.445870,40.813681,43.188474,43.457113,12.647851,47062.27,9.59,258694990418384,58953505921,126302529461942,27636313291,8904c8bc674f415761f49a2167c24f79, +AI,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,210,476.731269,38.253302,41.010218,40.990276,17.898406,15.175919,56.258146,54.428483,33.712867,38.465514,37.444243,39.937628,40.136604,13.460102,26539.40,9.20,145573212225306,59068635802,72710517224756,26669046905,7fbde32c9c0e28a88bd42e1128422bc8, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,85,53498.416000,45.919938,56.785454,56.754781,21.853424,28.788134,99.867305,99.829764,49.185611,49.107599,45.916577,56.704428,56.662898,0.374960,297149.12,5.08,2163517873074044,26571298345,829867662944821,14224662307,9fba460b68e684e71d160ba41fbac32b, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,110,32367.528000,41.354049,53.209534,53.209831,18.487580,24.444189,99.788289,99.735159,44.307478,44.440351,41.345772,53.178634,53.161742,0.527824,372161.65,5.51,2199197273039137,23309033131,980638671442484,14824958708,da7164f7e4f3b473772809b36ac4daed, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,135,18313.952000,36.809528,50.199605,50.262701,14.886947,20.065591,99.578837,99.508946,38.573371,40.338093,36.798654,50.179480,50.220075,0.741194,461950.03,3.99,3347266748365045,22023001161,1290066194947124,11247235179,65ded75ed607a03460dc3400d3f77a73, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,160,9084.128000,32.247222,47.307531,47.054049,11.247437,15.659112,95.485242,93.249647,32.187802,36.249345,32.241073,47.297175,47.020458,0.953187,403009.34,4.59,2365595064114030,21675246866,1056186634251825,12660857276,be3ed33d2b5dbab0632c74fef1181b5e, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,185,3681.272000,28.159850,44.486372,43.466405,8.188003,11.602421,70.882545,68.869541,26.184653,32.474898,28.155127,44.467905,43.432416,1.075129,159952.42,2.88,1147077000180980,17006396143,446700456137791,8021776734,5c78b5a125c2a5cd0312f1978e9a8dbf, +AI,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,210,1288.744000,24.779191,42.751918,41.046611,6.018785,8.159784,45.255634,43.834688,21.483375,29.422171,24.775332,42.688025,40.972507,1.063433,60127.49,2.43,453013976102669,15237847831,167923877137417,6782092950,fb3a852a4e8f5fd09d484a8cf41af2aa, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,85,47757.240000,45.181475,54.747258,55.660092,19.871775,27.114884,99.820108,99.767288,49.141794,47.671744,45.139521,54.680028,55.587958,0.168407,344816.99,7.01,1964511931150716,29067506216,901736186788925,18723875022,631047c84a01ebcc413dfb744016ac8e, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,27022.113333,40.760818,51.235946,52.130092,16.144596,22.278905,99.666134,99.599278,43.203573,43.208483,40.683035,51.192390,52.088136,0.180682,354478.21,5.48,2066619448581825,23677089866,928326522737866,14670151030,dccecd3329bfd6029c8abadb7b061eaf, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,13440.593333,36.248753,47.903189,48.894349,12.172475,17.293334,99.304078,99.209691,36.836406,38.984633,36.147749,47.872760,48.872042,0.192696,493594.85,4.09,3080458339506208,19488484725,1389771476672368,11886282098,63fe69a262ca9885b5d1c46013a7d98a, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,5671.613333,32.221886,44.785807,45.810194,8.659824,12.591299,84.983980,82.793925,30.994084,35.201329,32.052340,44.750205,45.773574,0.214673,203531.25,3.51,1496276621675025,16603187376,690318083442074,12645802601,4264d9a5fcd939b26ba7a50c79619395, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,2052.546667,28.737171,41.732505,42.769664,6.139453,8.691199,60.249098,58.523629,26.167032,31.966238,28.562461,41.692391,42.723777,0.469614,97499.20,3.45,537636192362708,15782875291,251212064802564,9639790233,2a34b64cf63ebc98d251b4190bceceb7, +AI,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,680.686667,25.969026,38.527901,39.761394,4.812190,6.366859,39.476416,38.462936,22.573272,29.287097,25.812240,38.463858,39.682305,1.224397,33269.95,3.03,179474761319516,16292651151,87241404421838,8624988354,534bc075cab6b91f5365ce6edb03b1ec, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,85,29010.093906,49.284024,51.241082,51.224909,21.700656,28.045121,99.839925,99.806965,47.740009,49.908141,49.264980,51.228635,51.212007,2.428736,341058.27,4.41,1862868594075438,15667751811,884381139525942,11839072327,6007c56ad79dc14a72f8d755321fc0c5, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,110,13582.609391,46.177730,48.174931,48.167770,19.643688,24.584135,99.746860,99.693378,43.606292,46.265805,46.151652,48.167818,48.158858,2.446242,151095.28,2.78,1012067381599119,15170366747,421971171362223,7776347670,13ea85b40e470db9cb3b1bca67b7697c, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,135,7011.324675,43.237572,45.434726,45.370451,17.955223,21.520123,97.055092,94.945097,39.697298,43.411309,43.204861,45.425671,45.359836,2.327272,155204.07,3.62,856862771390569,17384400457,405377573279887,9965325012,85ce1cdc14903cfa6639ca1075ba112a, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,160,3824.479520,39.969076,42.615344,42.422017,16.148608,18.387521,84.241057,81.617304,35.791736,40.474318,39.930730,42.603723,42.410276,2.029079,74873.84,2.46,558275099476622,14703196521,209099000081995,6845073428,d1ff4ef427f8d1b29a65b32e7805a6dd, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,185,2065.630370,36.266124,39.315187,39.102788,14.204924,15.170929,64.715410,61.869257,31.785406,37.135362,36.229198,39.306560,39.085670,1.726066,49382.03,2.98,313726862312742,15133632293,132334472213685,8389428539,0a1f2da9baa0040ce5bb16c75470fd0c, +AI,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,210,1075.660340,32.350555,35.799329,35.663279,12.240378,11.924162,41.089411,38.700746,27.803850,33.518510,32.320377,35.790916,35.646994,1.760444,23467.65,2.91,151227660219110,16809443711,63654721438847,8396611136,505f3a165ab3511efc8a1b44d297875b, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,85,104826.032000,43.526164,46.013713,45.875568,18.845040,27.580202,99.860097,99.820951,49.172872,43.714031,43.525037,46.009326,45.867927,0.000005,546682.98,8.18,3932657928772894,41755234548,1526768999807560,22935416241,ce866df3a1e31a0f5bf239ded35b0f68, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,110,51214.400000,38.221430,41.849908,42.303956,13.993779,21.801239,99.769777,99.717825,42.610236,39.378231,38.219822,41.844008,42.293988,0.000905,633647.40,7.32,3833344256679957,32468843785,1668467468695321,19726993611,092312d93ee643ca359528d57c07f4c6, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,135,20277.496000,33.844192,38.405903,40.248566,10.046333,16.580903,98.548330,97.597114,35.694405,35.879006,33.843018,38.399346,40.239363,0.092580,753031.78,5.42,4479318603616416,23900577035,1980087780851271,14784656149,3ea51fe77666c873485012d4bb2bf187, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,160,8387.352000,30.707644,35.532602,38.797566,7.852379,13.503306,84.492495,82.421621,30.260232,33.204684,30.706204,35.526452,38.790163,0.147431,338747.28,3.27,2468135169220100,19457726517,946026950358991,9146255833,c24342004762c948fac869d769ea14af, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,185,3397.448000,27.659439,33.096829,37.224357,5.929506,10.491719,59.481146,57.639674,25.280406,30.580749,27.657540,33.090403,37.218243,0.168215,149954.91,2.58,1122540698602661,16586068098,418777130788363,7208482191,ee6ee5286a48505be40154cb0fd58384, +AI,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,210,1244.480000,24.744937,31.041985,35.130819,4.370626,7.568795,31.940346,30.776181,21.148216,27.975441,24.741739,31.035587,35.124953,0.281057,75603.31,3.08,460583460392964,14972107530,202832073175698,8705763354,d25202a63aa2b17c7271ad62b82044fa, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,85,55625.712000,45.476360,46.399908,48.297235,20.551745,28.282663,99.868573,99.830474,48.615659,45.873228,45.474183,46.383898,48.289710,0.010285,315830.36,6.18,2200222967064536,32638682217,882043287987420,17247026925,1f7bb390162deb36563c7adebf97520a, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,29302.608000,41.255135,42.975854,45.106691,17.078649,23.839206,99.787966,99.545048,43.047307,42.213120,41.253040,42.954964,45.095719,0.011407,300228.66,5.33,2165310028445278,29038410179,838456190499870,14885104216,9e8a3d31ba6ba57118d015ff59852ba4, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,14977.032000,37.158590,39.964509,42.000685,13.662221,19.501713,97.498040,95.735631,37.007106,38.801833,37.155221,39.949606,41.992062,0.012810,455395.81,4.56,3235422610228678,26123879482,1271900479803854,12742834898,580ab1fa9b2ffe03be2ce1647cb2b256, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,7280.216000,33.090876,36.904335,38.750638,10.362571,15.248186,82.845540,80.250875,31.164697,35.343576,33.085022,36.895473,38.745462,0.017884,278464.55,3.75,1975661324512747,22953897214,777656109077877,10522337126,a7e27f81600f255e92aef18014902152, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,3238.432000,29.191516,33.750127,35.471395,7.526229,11.231613,58.572301,56.146017,25.960177,31.915237,29.184674,33.744848,35.468147,0.024655,159857.38,3.94,939162854928687,16943672187,419289908737953,11022939775,3ed2ed13e2e258f6c2702804628bf58e, +AI,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,1238.528000,25.648936,30.488692,32.357446,5.395606,7.706281,31.757853,30.228048,21.587239,28.567105,25.642506,30.484877,32.354556,0.028792,57790.18,3.41,346314452222194,16214669231,153976277368605,9631065064,8405408fb6a575729d84aeb4d6fc19a4, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AS_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AS_Preset_0.csv new file mode 100644 index 0000000000..43e7e72dc0 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_AS_Preset_0.csv @@ -0,0 +1,289 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,110,18686.861446,42.397510,48.727441,48.730439,13.974238,20.338303,99.974870,99.913693,43.028553,43.266628,42.346394,48.702186,48.704581,0.971280,,,,,,,b3885b5835f18ebffec6f8dd743a9ccf, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,135,6628.153385,41.573640,47.551075,47.475924,13.574550,19.569106,99.634024,97.779357,41.500669,42.402142,41.558775,47.539015,47.462571,1.189391,,,,,,,8c7008b88a3c01a2d14b3cdeb3094e7a, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,160,2748.024898,40.302340,45.978915,45.809845,13.047371,18.450339,95.187997,92.780491,39.168184,41.218028,40.287914,45.966135,45.797331,1.236379,,,,,,,e9274cd55f1c3e7f4424f89c6f1903a0, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,185,1320.628910,38.277972,43.975278,43.716367,12.215143,16.686019,85.938395,83.201898,35.926258,39.555254,38.257199,43.962788,43.705768,1.267856,,,,,,,5bd10a50580ad07fdffaa1f423042ddf, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,210,637.083532,35.576577,41.544790,41.349178,11.117021,14.425912,71.203989,68.152619,32.267836,37.402984,35.550552,41.531979,41.333414,1.316835,,,,,,,604f38a52a96afeef95502ee64cb91da, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,3840x2160,235,294.473526,32.413764,38.811171,38.787917,9.877806,11.913835,51.599668,48.622341,28.518344,34.766047,32.386579,38.798631,38.777026,1.261357,,,,,,,c9efa4ebb7219c4602b83471ca1ab72a, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,110,9341.741336,41.590308,47.090137,47.209210,13.642546,19.872219,99.931031,98.330970,42.122709,42.443006,41.575707,47.079892,47.196121,1.200399,,,,,,,becae9bb9d00e55437174b2e0efc3c2e, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,135,3852.238838,40.714848,46.070899,46.037807,13.243411,19.007457,97.259978,94.899351,40.300995,41.598555,40.704254,46.061539,46.026128,1.219304,,,,,,,b3179dad027031e8d337f0cb1fd17a81, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,160,1798.415738,39.138229,44.556857,44.406905,12.577035,17.551139,90.497679,87.772740,37.440748,40.286654,39.121908,44.546081,44.395215,1.308065,,,,,,,a7fc59015d4cb5f34c7dbb58ae2aaa25, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,185,864.936909,36.799376,42.603401,42.398907,11.615520,15.512747,78.389720,75.366248,33.940680,38.459714,36.776460,42.590713,42.385605,1.369467,,,,,,,c2b06f69d81606bd733d074e7079b6ed, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,210,405.637439,33.888879,40.258021,40.105475,10.441556,13.093098,60.935023,57.791112,30.246266,36.207783,33.862720,40.247393,40.092168,1.364545,,,,,,,7bb1899f32a3a6f856ea6c2b90335c85, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,2560x1440,235,186.404365,30.745335,37.842956,37.734113,9.279805,10.676485,40.786172,37.940785,26.709334,33.660561,30.718939,37.833094,37.727386,1.176494,,,,,,,cc7f5990b2f4df8ee240848287f1a60d, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,110,6257.653731,40.679597,45.927886,45.803715,13.276800,19.396816,98.016006,95.674099,41.137839,41.747761,40.671463,45.921650,45.793772,1.265417,,,,,,,34d55a272c30cb95faef679ef6da67dd, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,135,2812.490894,39.736563,44.979650,44.746220,12.841675,18.400969,93.827577,91.243475,39.061877,40.861397,39.726121,44.972331,44.734832,1.333160,,,,,,,285957add29a1cb3eecabe7018048ea5, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,160,1332.546838,38.025930,43.530107,43.201861,12.102839,16.735614,85.198040,82.324891,35.963171,39.467961,38.008284,43.520608,43.190165,1.446855,,,,,,,41798942d2dab79f93b696d3e493b465, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,185,630.204257,35.575219,41.659688,41.344276,11.097736,14.555976,70.931571,67.858711,32.415873,37.599426,35.551536,41.646703,41.333291,1.518552,,,,,,,c092fda72dcffcb1542c1c229c166166, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,210,291.854607,32.667639,39.374641,39.208601,9.960043,12.164622,52.661622,49.563554,28.850040,35.244649,32.642314,39.364200,39.195880,1.501015,,,,,,,415f94cae57a7a292a05657a710449b9, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1920x1080,235,128.994698,29.527357,37.080757,36.929765,8.858161,9.809746,32.194393,29.652338,25.424350,32.799803,29.502571,37.073937,36.923534,1.378575,,,,,,,631e0093f423779081332781c52d00df, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,110,3666.229155,38.418240,44.484268,43.852524,12.250858,18.111912,90.714289,88.152337,37.638891,40.448828,38.413708,44.479662,43.844083,1.356712,,,,,,,d492ba1a15a9f42ebb34a9add5d4fa90, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,135,1807.829094,37.555735,43.591502,42.957130,11.831335,17.016025,84.809202,82.076358,35.886538,39.552904,37.547109,43.585718,42.947373,1.436996,,,,,,,18f2db70b0cfde10e7e5c984865bc171, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,160,861.034350,35.954847,42.182736,41.611667,11.140441,15.266904,73.365437,70.548234,33.216095,38.128977,35.939089,42.174288,41.601151,1.546659,,,,,,,04835a0a0d225981c46aed22898d077f, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,185,402.527934,33.628776,40.370804,39.929356,10.233974,13.093462,56.969293,54.185635,30.064287,36.258494,33.605919,40.360371,39.917177,1.550281,,,,,,,c374412722e8210026c81c27cf7f6512, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,210,182.505495,30.843518,38.160287,37.872052,9.257476,10.815189,38.518996,35.977332,26.834909,33.906721,30.818599,38.151789,37.862758,1.548413,,,,,,,67891fdc2cb73f42c5a02fcf7d8f86a4, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,1280x720,235,79.297933,27.880567,36.332131,36.082883,8.355081,8.703425,20.091274,18.244355,23.769995,31.566253,27.856649,36.326119,36.077610,1.527073,,,,,,,1cbb17393b69489e2b0b7ae0f9f16cd7, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,110,2618.144932,36.288080,43.397267,42.527753,11.190903,16.495568,79.721458,76.961062,33.843654,39.232098,36.284432,43.393077,42.520231,1.444084,,,,,,,eb46274624419fa18ae4b37747ba64f3, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,135,1305.535080,35.580663,42.544951,41.698208,10.854579,15.515002,72.628390,69.830073,32.708634,38.372972,35.573840,42.539325,41.689241,1.515973,,,,,,,af17fb9e692f9456bc5be1ab15dcec2a, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,160,622.834396,34.228896,41.210748,40.503959,10.314855,13.954451,60.221211,57.521168,30.807107,37.045718,34.215266,41.202302,40.494658,1.589754,,,,,,,61c86e801feb645ca10ac23e09f90800, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,185,287.457773,32.137537,39.460649,38.935261,9.579291,11.966793,43.928507,41.461622,28.247053,35.144224,32.116886,39.451510,38.922721,1.678782,,,,,,,6af5e641759c3a62ad331606514dbdb6, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,210,128.603704,29.527883,37.305469,37.035615,8.765622,9.881680,27.163552,25.065477,25.403641,32.910070,29.503622,37.297405,37.028643,1.649911,,,,,,,fc587633d768a1a5e15a543053eac184, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,960x540,235,55.602244,26.728864,35.691534,35.455782,8.020758,7.943731,10.599686,9.430719,22.637154,30.622353,26.702973,35.682364,35.451715,1.522101,,,,,,,89f3ce3725bc81fe8b1bbc0ed53ea4e3, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,110,1567.976639,33.254845,41.937696,41.019312,9.730196,13.860748,53.560988,51.354939,29.266971,37.304370,33.252111,41.933341,41.012609,1.481134,,,,,,,a059f707beccf1037a79901a2902cbc0, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,135,797.737647,32.762809,41.162007,40.324059,9.529334,13.147489,46.602815,44.452925,28.693954,36.589644,32.757943,41.156354,40.317748,1.573591,,,,,,,78552534db76bc174769e8bc1f46fb17, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,160,380.270806,31.737111,39.909783,39.178222,9.191663,11.956479,35.655020,33.682197,27.566447,35.364109,31.726822,39.902215,39.170410,1.599000,,,,,,,910e57808adab079f6eff348387eef6a, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,185,175.356951,30.010471,38.247426,37.747265,8.704312,10.333589,22.739841,21.186311,25.780129,33.634179,29.993404,38.239827,37.740896,1.706507,,,,,,,e606a4dc964a37a68f142908cbdb1c04, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,210,78.036425,27.734326,36.484359,36.203309,8.161114,8.606247,10.272464,9.249782,23.555574,31.587460,27.713475,36.474875,36.199416,1.726466,,,,,,,a1e1ca2d4de8fab60f5eaa4d3e9c37d6, +AS,aom,av2,0,A1,BoxingPractice,3840x2160,60.0000,10,640x360,235,34.473834,25.178690,35.223577,34.939001,7.630808,6.961774,0.260851,0.153100,21.168967,29.308176,25.154111,35.217298,34.929292,1.644907,,,,,,,f33b0025eeeeaf5de4c27ccf2745332d, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,110,17149.024514,42.792031,48.817432,52.279403,13.526505,20.071464,95.547829,93.751189,43.159160,43.705820,42.751950,48.803058,52.269407,0.316997,,,,,,,d2d351fd1dab84a00f2f6510303780ae, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,135,5346.181203,42.130736,48.160819,51.342348,13.216866,19.201818,91.142417,89.016411,41.607253,43.054661,42.121450,48.156030,51.334332,0.370124,,,,,,,6736592877da23ddb216af03ffcb2491, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,160,2271.805733,41.079463,47.162608,49.921457,12.880922,17.946414,82.940772,80.560236,39.454238,42.068453,41.058596,47.155741,49.907411,0.382870,,,,,,,1f8cd3a6f02f116d90c4a33a63fbe303, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,185,1056.173365,39.457742,45.752296,47.976921,12.457361,16.257370,69.881678,67.404281,36.844747,40.628501,39.418285,45.741326,47.956593,0.413666,,,,,,,7644fa8ae8450a331b45757cd9eefacb, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,210,498.505802,37.202535,43.695373,45.558467,11.953346,14.230477,52.274778,49.944161,33.916579,38.603752,37.144037,43.678597,45.532830,0.454383,,,,,,,c9d9c17dd2a51c35728c513fac1a81e5, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,3840x2160,235,231.966188,34.352506,41.438325,42.868343,11.359943,11.967713,31.552737,29.945752,30.748117,36.067171,34.281392,41.428066,42.838267,0.377525,,,,,,,da537bdfd64582b8bb55069fa79871f2, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,110,8275.365250,42.413840,48.459945,51.793757,13.326486,19.592725,93.383543,91.343461,42.311515,43.343305,42.402919,48.453453,51.785939,0.339928,,,,,,,94540c6e8088b48e56d4f386b2587f57, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,135,3214.782756,41.626419,47.696816,50.683591,13.038459,18.591641,87.295769,85.017107,40.525652,42.587817,41.612838,47.691385,50.672906,0.347894,,,,,,,ff5b0c9fda99775f610df6b2104beb2f, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,160,1441.482825,40.294934,46.527926,49.017241,12.661185,17.113368,76.512476,74.082839,38.122726,41.404342,40.264474,46.518970,48.999830,0.389048,,,,,,,aad0eb2e11171a284292125015cfc727, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,185,671.033582,38.367162,44.908459,46.895337,12.205393,15.260209,61.200880,58.735910,35.369854,39.726398,38.317965,44.896106,46.874445,0.400769,,,,,,,5527fa7649e7bbb823727e687dcd695c, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,210,314.440022,35.832544,42.769400,44.428039,11.665970,13.130502,41.561716,39.507895,32.351622,37.490193,35.765706,42.753659,44.397352,0.439832,,,,,,,934d6660e65b00dae275a826be8f3f08, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,2560x1440,235,144.767233,32.876979,40.336439,41.602334,11.079480,10.913645,22.876843,21.320362,29.227526,34.812926,32.804133,40.323458,41.566543,0.524957,,,,,,,d02ed78bcbfd3a6b3038cebdd4adbcf1, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,110,5289.649427,42.105787,48.141213,51.386060,13.198298,19.196652,91.224168,88.985087,41.592327,43.045978,42.096633,48.136434,51.377308,0.359564,,,,,,,9d1ffa4bf3520f5ae41906a778796fcc, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,135,2322.166449,41.167224,47.297056,50.147813,12.894269,18.066972,83.771391,81.323583,39.635409,42.189706,41.148273,47.290895,50.134732,0.387862,,,,,,,f051823fb8d1b2195d757feee3462943, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,160,1047.748559,39.621053,45.990376,48.305624,12.489991,16.442673,71.114767,68.613267,37.092123,40.831951,39.583756,45.979987,48.282569,0.449790,,,,,,,2dc61d0a58337dceea3abc3c1126c39f, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,185,487.867824,37.484033,44.233677,46.150117,12.014772,14.494361,54.180961,51.790824,34.271415,38.993964,37.428150,44.217140,46.121829,0.503292,,,,,,,0434f885fae7586054a1709b627d2267, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,210,226.540229,34.795645,42.049915,43.523746,11.463723,12.336965,34.250798,32.467043,31.231070,36.638008,34.726842,42.034535,43.495413,0.579254,,,,,,,ed6f0da96c791ae4c9d78d1f4afafa6a, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1920x1080,235,102.989933,31.808682,39.509341,40.756731,10.894742,10.223218,17.263523,16.248814,28.161844,33.903121,31.734211,39.491765,40.716957,0.672687,,,,,,,adf46804352a44daa2cbca8b310910e9, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,110,3123.164835,41.522334,47.569749,50.682511,12.974305,18.514283,86.302669,83.941094,40.363417,42.526544,41.509457,47.562988,50.671070,0.387201,,,,,,,ecd378848d8336c574f506b1069c2899, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,135,1473.813571,40.350411,46.576707,49.214867,12.651399,17.196126,76.781246,74.245259,38.218986,41.492005,40.323318,46.567369,49.195857,0.429637,,,,,,,b69a379842ffa0c7ffa65d72a5187983, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,160,669.041728,38.510187,45.072397,47.247898,12.226338,15.409994,61.895143,59.430709,35.553438,39.907005,38.463226,45.058304,47.222287,0.504937,,,,,,,cbeba6b31da1d005e55ca22a859c753d, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,185,309.943595,36.103001,43.114838,44.787721,11.725240,13.366647,43.150352,41.044857,32.656721,37.797841,36.036959,43.096297,44.747842,0.600401,,,,,,,84f5b100c26b960862f505e10e0c0457, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,210,142.554061,33.290513,40.960257,42.284070,11.180904,11.255217,24.169048,22.746374,29.665782,35.317417,33.217222,40.942285,42.228929,0.744525,,,,,,,f639e5cf41c5cc005293b975a3cb210a, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,1280x720,235,64.200415,30.290003,38.437121,39.312768,10.629597,9.302008,10.388988,9.762781,26.667083,32.482953,30.225919,38.422317,39.263949,0.918703,,,,,,,916f8873c2f7cd01505ee09ac2d82e4a, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,110,2228.848075,40.901641,47.058792,50.027669,12.747108,17.852687,80.352125,77.851516,39.158124,42.041988,40.883082,47.049346,50.012336,0.433023,,,,,,,8c84b54470e1b38d8c82888efb83db6b, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,135,1066.973642,39.592561,45.955238,48.444707,12.433894,16.455227,69.432393,66.862755,37.031004,40.873789,39.558409,45.943921,48.422557,0.484990,,,,,,,da5e0d7fd76dbc31c906a7fd4495e0e4, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,160,487.399370,37.576812,44.372189,46.322122,12.010374,14.600211,53.576153,51.187557,34.368200,39.150049,37.520842,44.354502,46.292862,0.580725,,,,,,,84358fb24f9158728f3ea4842b426711, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,185,224.452471,35.028238,42.359001,43.902517,11.507219,12.544721,34.618845,32.780314,31.479159,36.913257,34.960476,42.338905,43.866972,0.720961,,,,,,,da703905ca90588faa07a72742bf2cc6, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,210,102.510413,32.152932,40.109768,41.288842,10.971780,10.491212,17.274965,16.206474,28.517638,34.322159,32.084919,40.094752,41.249268,0.939015,,,,,,,28af83793b80d4ea9c495f6332b239fe, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,960x540,235,45.738877,29.173627,37.437503,38.370444,10.438940,8.681445,5.914524,5.497044,25.573370,31.464076,29.108456,37.406248,38.253545,1.108193,,,,,,,9809503f012b1e160c0646a1b80727ad, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,110,1384.740798,39.637510,46.190303,48.912575,12.338322,16.646787,65.314521,62.967057,36.956190,41.159032,39.603833,46.174785,48.891819,0.470273,,,,,,,21f1c757c9203f33e8b2c88824123c62, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,135,676.053792,38.232609,44.978826,47.216384,12.067681,15.240163,53.595758,51.237852,35.088743,39.857532,38.186536,44.960875,47.188211,0.534470,,,,,,,7513a8044d1acb474a56f5d3989c426a, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,160,309.545224,36.068331,43.253633,45.022116,11.667912,13.361857,37.543108,35.557300,32.575723,37.901221,36.003719,43.232132,44.995827,0.667523,,,,,,,574b969ca14aea01f989ba9f8e06e3ad, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,185,141.012219,33.435737,41.124766,42.625715,11.191396,11.375042,21.803951,20.432460,29.804228,35.534113,33.360181,41.102886,42.574648,0.859860,,,,,,,94788125d288850b1ac1c254fb265078, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,210,63.827864,30.604207,38.807270,40.052038,10.695790,9.507630,8.338284,7.691483,26.985389,32.927625,30.537043,38.789600,39.998164,1.174219,,,,,,,018bc9b84cd96da7bbbaf248b80e2c53, +AS,aom,av2,0,A1,Crosswalk,3840x2160,60.0000,10,640x360,235,29.331899,27.722007,36.578322,37.385529,10.192234,7.942785,0.587215,0.564354,24.174938,30.172682,27.661118,36.555966,37.297044,1.313260,,,,,,,d8b6f9d4441a8c0e22f7a8168d563c02, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,110,24897.120111,43.191269,49.110780,49.326980,15.940855,22.924762,99.970096,99.961796,44.767380,44.212790,43.094486,49.017362,49.227543,0.010046,,,,,,,7b2ccad18786824be0b284339a88e4bc, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,135,10651.632675,41.767716,47.273814,47.409125,14.985460,21.104718,99.956362,99.944951,41.644707,42.698476,41.695218,47.194231,47.315192,0.011520,,,,,,,e705bd1245cd4dca32a6bdedd37d7cb1, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,160,4790.689925,39.422692,44.896153,44.949069,13.467955,18.363611,98.852515,96.704773,37.494980,40.459987,39.340303,44.815503,44.844808,0.013783,,,,,,,ff358947c8caba133802f2b79537f60b, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,185,2183.123953,36.447850,42.295219,42.270380,11.577724,15.176810,84.666284,82.205047,33.242834,37.768269,36.356349,42.211981,42.154105,0.017961,,,,,,,f24e0f47357974a295a693cc3154f38f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,210,976.687313,33.228195,39.737380,39.600048,9.639173,12.017621,63.917620,61.696360,29.299791,34.891605,33.132556,39.653570,39.494867,0.028356,,,,,,,736dc0431febd577f8bb7c7e131bb102, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,3840x2160,235,404.663644,29.940516,37.096923,36.866229,7.879904,9.045424,41.153269,39.797557,25.679940,31.918979,29.841489,37.001936,36.749650,0.070148,,,,,,,0294a9a89219726678e7fce9dc4668f4, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,110,14749.817567,42.322600,47.781838,47.830232,15.363233,21.911725,99.962553,99.950866,42.994887,43.241495,42.249353,47.684750,47.712906,0.010763,,,,,,,a8755f8f5a0dc274f3be6121eee4f54e, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,135,6862.970875,40.536254,45.866327,45.862005,14.185679,19.692542,99.942319,99.759201,39.424747,41.483993,40.459357,45.779814,45.752001,0.013844,,,,,,,a66db124bc2df46deb654ddee81e753e, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,160,3074.475063,37.811983,43.426147,43.383038,12.430208,16.653439,92.276650,89.721218,35.134365,39.002487,37.721938,43.339842,43.268365,0.016512,,,,,,,15428813c398fbeb5a0adf583e255eb5, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,185,1368.245293,34.679169,40.874843,40.787206,10.496487,13.430160,73.683149,71.295977,31.027159,36.213415,34.581057,40.788623,40.668355,0.023242,,,,,,,41c908bd89485712e62da2646e8e4ea1, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,210,591.333589,31.458179,38.408166,38.221904,8.669823,10.404290,51.278720,49.465418,27.316284,33.354899,31.356907,38.323741,38.105412,0.055428,,,,,,,421bd1dfb97bdf6295dc15e822489333, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,2560x1440,235,234.017060,28.296475,36.059031,35.718503,7.146385,7.679701,30.761926,29.921102,23.998484,30.518160,28.192728,35.973198,35.602957,0.139959,,,,,,,de6c7741c49618370f5b0696059ce686, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,110,10652.997464,41.289680,46.417713,46.422193,14.687819,20.867061,99.950368,99.936598,41.333970,42.216038,41.209395,46.304852,46.270631,0.013442,,,,,,,ee7e40ad4b94e13f6a9b82703dbbe36e, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,135,5029.026358,39.342502,44.550676,44.526380,13.396040,18.454630,99.008644,96.782282,37.625858,40.351634,39.258949,44.454083,44.391526,0.016677,,,,,,,008bb7b214a7aa5ddac215c5a9ad50c9, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,160,2229.512026,36.519116,42.226458,42.167792,11.595552,15.345809,85.536357,82.921136,33.418947,37.834054,36.424986,42.133917,42.042628,0.022264,,,,,,,d0615a855121406e41a9106a56ab3e58, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,185,974.584800,33.379735,39.800148,39.705121,9.717302,12.202666,64.820563,62.541213,29.491582,35.055801,33.277459,39.704653,39.574519,0.050206,,,,,,,6caf5679db6de9144e13ea5b6711be2a, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,210,408.355952,30.223495,37.548105,37.264612,8.031929,9.311353,42.529599,41.079368,25.987596,32.287366,30.117702,37.459597,37.135722,0.120413,,,,,,,5f809c1c057405a9678b1edcbcc9784b, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1920x1080,235,156.544993,27.194362,35.287618,34.850735,6.719078,6.816784,24.641207,24.031877,22.908888,29.536746,27.092314,35.199319,34.729702,0.198660,,,,,,,fd595c5b6232d09672c72d42e81fe817, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,110,6593.399216,38.729385,44.068916,44.271733,12.954211,18.570790,98.475711,96.299933,37.377103,40.139681,38.563555,43.931642,44.073454,0.012989,,,,,,,f04cb46a71eb99ee211c7c2ffcc697c3, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,135,3145.742873,37.030343,42.466287,42.571714,11.832803,16.306085,89.417727,86.836004,34.438692,38.394074,36.902885,42.352725,42.409359,0.017620,,,,,,,cafe6ba01b7db27f53e2bcc95172ef8d, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,160,1389.111811,34.461916,40.464271,40.479875,10.261499,13.398569,72.117672,69.726693,30.869784,36.046433,34.354381,40.358813,40.328144,0.033124,,,,,,,2d2589459e3247a2ba5faa8acb4530ea, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,185,594.044725,31.497364,38.415974,38.245808,8.629610,10.489436,50.297981,48.541532,27.371392,33.443653,31.389772,38.311115,38.107908,0.098208,,,,,,,5183f251bccd3b70e4a02fc48156dea6, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,210,238.679474,28.509091,36.391775,35.937970,7.229979,7.874248,31.104652,30.167334,24.212896,30.777398,28.402466,36.298311,35.790728,0.220898,,,,,,,2e863f9a22878f0892de80dc9d793cfe, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,1280x720,235,87.984631,25.665705,34.180578,33.636356,6.212032,5.695986,17.281667,17.037775,21.439845,28.157699,25.567994,34.082772,33.512534,0.297464,,,,,,,af481e60c26a30ad6799754792b9cd9f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,110,4637.992162,36.208271,42.404438,42.729239,11.178882,16.074586,87.866136,85.362313,33.341253,38.232799,35.965875,42.254430,42.515598,0.013413,,,,,,,0cff6e1239a382b384477294e9a2263b, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,135,2207.085222,34.913691,41.022549,41.234339,10.378140,14.317959,76.998331,74.539348,31.478460,36.749374,34.736883,40.898568,41.065015,0.022589,,,,,,,cba4909d6d53afced567168857ca64ac, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,160,974.426189,32.792665,39.234289,39.297572,9.196146,11.882160,59.088248,57.023122,28.821307,34.651336,32.665114,39.118703,39.151366,0.049372,,,,,,,603561fed055cfad01171e0dba1cb7a2, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,185,409.130562,30.111410,37.397325,37.224165,7.876674,9.287406,39.005912,37.649753,25.847378,32.232319,29.995787,37.293492,37.080718,0.156910,,,,,,,549df4fa4d5b708346ca17bf3e0586ec, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,210,159.905325,27.319108,35.415283,34.960305,6.743868,6.939175,23.336836,22.791833,23.019170,29.671286,27.213789,35.318855,34.830657,0.308015,,,,,,,56bf2c4db37e87725d3970a12997f9e4, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,960x540,235,58.136325,24.659934,33.607862,32.749857,5.919835,5.014688,12.517244,12.459556,20.496207,27.216220,24.564135,33.497520,32.620625,0.379944,,,,,,,86f9e60ecd7b83cf12271b5741ab9f23, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,110,2684.521632,32.781614,40.312641,40.646968,8.972696,12.639446,61.525513,59.617791,28.580575,35.504227,32.476724,40.164583,40.434894,0.012010,,,,,,,da4ca1e9df91f8e30f93078a1af21b01, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,135,1273.374011,31.941497,39.203657,39.405726,8.545335,11.521790,51.274240,49.520809,27.633187,34.380043,31.706346,39.082856,39.243506,0.029635,,,,,,,b429ddb39edceda22ae222e0d118690f, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,160,566.070237,30.414356,37.713002,37.716872,7.855285,9.789947,36.914974,35.622837,26.022762,32.699911,30.253977,37.605100,37.570556,0.097741,,,,,,,907225c3e56359f08d835fbac12b7828, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,185,235.297011,28.214546,36.147223,35.858359,6.987877,7.721344,23.205305,22.557562,23.837014,30.585423,28.087710,36.042547,35.714918,0.217072,,,,,,,eaf9e95217d7399941d3b3f37cf5f768, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,210,89.961731,25.758718,34.391197,33.752371,6.200329,5.783038,13.896428,13.787457,21.507892,28.274166,25.654924,34.288904,33.616988,0.397895,,,,,,,d84cd621e4451770076292c6e9cf027d, +AS,aom,av2,0,A1,FoodMarket2,3840x2160,60.0000,10,640x360,235,32.706985,23.305472,32.811255,31.951812,5.608891,4.224614,7.950206,8.031747,19.264544,25.981365,23.217421,32.715232,31.865964,0.516171,,,,,,,e725c6335b796434221d61b52844134e, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,110,37759.567202,44.756684,48.617190,47.936553,18.207924,22.503176,99.976332,99.971354,43.688339,46.630995,44.664950,48.475367,47.784982,0.952674,,,,,,,39ba4f0dd2b6bf9b93bfe6ce336fd195, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,135,16616.515177,41.618485,45.879768,45.033989,16.421629,19.776357,99.352936,98.617225,39.919616,44.084780,41.500575,45.803736,44.928047,1.214124,,,,,,,a4fd8f160bf16cc83e78187de788068d, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,160,7230.672712,38.753147,42.871987,41.837469,14.890011,17.398891,91.543805,89.369658,36.115089,41.542475,38.639781,42.780685,41.701706,1.430120,,,,,,,793f5c76ba66534d1a8cf1204bd0ed69, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,185,3305.620533,35.811182,39.723203,38.428062,13.413323,14.951178,76.165531,73.595468,32.260087,38.820905,35.687085,39.596844,38.236347,1.515382,,,,,,,7825688bd3c09c6990e210c8130a993b, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,210,1482.195958,32.662200,36.491442,34.906396,11.983709,12.377585,56.680163,54.297763,28.478775,35.827762,32.529217,36.338950,34.667802,1.728222,,,,,,,407f6868333262cc0a6c7e80a4ce2d5d, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,3840x2160,235,629.333743,29.487362,33.297499,31.376411,10.685428,9.945103,34.081176,32.584441,24.966997,32.700390,29.365980,33.140384,31.113203,1.859782,,,,,,,08cd014a140006263427f360d50ddc95, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,110,22206.455083,42.197302,47.026283,46.191077,16.895962,20.750744,99.907024,99.621259,41.375121,44.931433,42.146995,46.939430,46.082556,1.124806,,,,,,,0ef147f7d8846ce67b32393e4ba3b106, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,135,10189.520633,39.826778,44.332621,43.333206,15.505346,18.466430,96.238109,94.508063,37.841347,42.700372,39.745739,44.255263,43.219829,1.364307,,,,,,,fbce32eb5b5cd89f9d86285f82fe0268, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,160,4610.546991,37.110031,41.281104,40.077828,14.073770,16.121157,83.661246,81.184333,34.020175,40.158876,37.005039,41.173502,39.919232,1.503188,,,,,,,176a0619b73e4a2045be841bedbdb7e7, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,185,2081.491432,34.091049,38.097555,36.638142,12.633151,13.598751,65.709909,63.174678,30.189082,37.332183,33.966521,37.957645,36.426468,1.681252,,,,,,,173bd561397101de20bf126557c1d56f, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,210,905.972796,31.005309,34.955722,33.197483,11.315174,11.127812,45.042844,42.983534,26.629412,34.366783,30.881371,34.802033,32.944991,1.755770,,,,,,,8e626705b19de5f0c1b04e21a2e78433, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,2560x1440,235,370.656421,27.941329,31.976334,29.852106,10.153104,8.886968,22.597007,21.506203,23.371668,31.328068,27.831340,31.820674,29.582094,1.863572,,,,,,,ff2a0ef39f2835317cb4398339489c66, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,110,15454.526397,40.591789,45.879533,44.901926,16.067754,19.668691,98.917280,97.754284,39.739664,43.836266,40.553523,45.807278,44.803539,1.303090,,,,,,,7647add7b3f890ed2c497a155fda9ec3, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,135,7354.468301,38.517014,43.143661,42.002540,14.829857,17.555157,91.683290,89.294739,36.286147,41.684270,38.449106,43.057230,41.877664,1.522543,,,,,,,91b4420aa3e7fd869b872378647f5d62, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,160,3350.245447,35.831273,40.064185,38.706441,13.445527,15.159559,76.452136,73.810738,32.461395,39.095419,35.730018,39.945801,38.531964,1.671750,,,,,,,01ccaf0f1b7f40792a7e8de98eea0c5d, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,185,1485.742565,32.833523,36.901079,35.315203,12.081885,12.638412,57.299560,54.829778,28.735686,36.258247,32.712668,36.754163,35.094261,1.810875,,,,,,,814aa93bd452b5e073df5999e35c2f15, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,210,631.349574,29.841190,33.823508,31.955735,10.858965,10.280434,36.356272,34.597327,25.368573,33.285460,29.726748,33.668865,31.702679,1.833008,,,,,,,50a43b3292b4e76a9269aff0a39e072e, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1920x1080,235,248.070699,26.857807,31.064473,28.836339,9.814323,8.170993,14.958283,14.182594,22.291126,30.378241,26.755003,30.915597,28.571266,1.928233,,,,,,,5700f575c5d6ee7495d7d0bccff64542, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,110,9304.239145,37.774888,43.776158,42.399261,14.524499,18.024284,91.265545,88.989341,36.188414,42.003107,37.745721,43.720166,42.317380,1.490568,,,,,,,d22a358ffc5b9f34096a9a530bc867f0, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,135,4592.902482,36.169355,41.130963,39.692947,13.563115,16.062122,79.642046,77.089237,33.387698,39.969987,36.121541,41.038993,39.561268,1.690007,,,,,,,f1fa2692676ec9ede41402a996ade756, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,160,2083.584723,33.789288,38.141758,36.568490,12.420894,13.709073,62.606971,60.132619,30.021520,37.406147,33.706884,38.017312,36.389383,1.864105,,,,,,,76d65ef1a4c9c9e4580c59c6df71a24c, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,185,905.467456,31.035528,35.152457,33.365055,11.283858,11.314285,43.362753,41.340925,26.702461,34.625353,30.932322,35.007466,33.140634,2.073553,,,,,,,0db60cd37ee577795c4dba8dbd6c25bb, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,210,372.297856,28.208076,32.354606,30.241900,10.256397,9.129108,23.315876,22.149675,23.655984,31.770633,28.106306,32.211948,29.988841,2.008621,,,,,,,47b476d66ae045eaf1cc2ccfbb21aa91, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,1280x720,235,137.956198,25.358970,29.868319,27.430693,9.381115,7.242646,5.216851,4.946454,20.831509,28.994833,25.266937,29.730345,27.169164,1.966401,,,,,,,789acc3f5405234107e7e5f27d442237, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,110,6502.069008,35.604908,41.946858,40.193978,13.235997,16.487371,79.032903,76.606094,32.836034,40.485905,35.575560,41.898726,40.120957,1.637532,,,,,,,dc78994d380c407854256f6f297dd089, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,135,3243.459925,34.331913,39.506899,37.846376,12.528385,14.744224,66.765223,64.319589,30.856945,38.577454,34.293635,39.419530,37.725042,1.858517,,,,,,,cc513c606b43fa9935a12560b8989e58, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,160,1458.009683,32.266108,36.681511,34.957382,11.640200,12.566232,50.088519,47.923317,28.141908,36.128310,32.200065,36.562431,34.784786,2.097707,,,,,,,fa950d634701b419cc68d6ac42a40eb1, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,185,626.251902,29.760223,33.909295,31.956719,10.721376,10.368509,32.268425,30.707985,25.274533,33.435215,29.672362,33.771819,31.741025,2.197835,,,,,,,0da44a3340c272ce23bc14b1bf5c90a9, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,210,251.327749,27.055086,31.339060,29.120736,9.854982,8.351274,14.359992,13.597906,22.485352,30.700953,26.962135,31.203734,28.874017,2.318022,,,,,,,3d4f1a27eae642e100e39ee56384141d, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,960x540,235,88.628295,24.319519,29.045095,26.549803,9.100685,6.656109,1.867615,1.798069,19.848002,27.946175,24.233184,28.911779,26.286069,2.361850,,,,,,,f262beab10a84ee2bae06341e1ad61f8, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,110,3874.920157,32.796427,39.177111,37.040333,11.666851,14.205828,53.469433,51.556659,28.721213,38.198555,32.766582,39.130348,36.965390,1.733288,,,,,,,0c4f04f699248a5ec272be64dcbeb037, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,135,1944.357796,31.856158,37.153378,35.198982,11.242309,12.789748,42.545219,40.786558,27.540483,36.509717,31.824269,37.071454,35.084385,1.961796,,,,,,,ad928b4fe9c22b18b3f5b2acd0914efe, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,160,864.942442,30.184576,34.684160,32.765275,10.662607,10.971095,28.857999,27.515890,25.643396,34.275726,30.134320,34.571337,32.598277,2.230168,,,,,,,a95d50d1d0ac92f835634ae37422e238, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,185,364.061170,27.983441,32.262867,30.106103,10.000762,9.089838,15.213145,14.438063,23.358921,31.791688,27.912709,32.136867,29.896219,2.419495,,,,,,,bb8431dd7980398922cf8d8820dfd73a, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,210,138.323215,25.447752,30.000670,27.643104,9.347828,7.334733,3.282977,3.132592,20.905892,29.168886,25.365462,29.872548,27.404610,2.528583,,,,,,,bf82a3d66d7119cb1ea23f0785048fc4, +AS,aom,av2,0,A1,Neon1224,3840x2160,30.0000,10,640x360,235,45.587643,22.996315,27.973362,25.420007,8.768959,5.929573,0.214680,0.214129,18.616919,26.643864,22.925922,27.852694,25.165301,2.606649,,,,,,,2caa6d67b553252f84b24c2fa85b5cea, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,110,45578.540308,46.339012,43.790557,48.884938,19.107107,21.849918,93.570294,91.518332,43.362494,44.969667,46.260922,43.730064,48.835371,0.598969,,,,,,,0e70d798736340738a43b035f8ce5596, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,135,19396.482462,43.249367,42.002719,47.433363,16.677989,18.782589,85.049243,82.686806,39.577901,42.927259,43.172639,41.970282,47.403043,0.848555,,,,,,,10564663f31012c35eac4a4d7f4b170c, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,160,7880.030769,40.003203,40.344403,45.860049,14.333499,15.628320,69.491978,67.053965,35.846213,40.888313,39.912581,40.322347,45.836959,0.928777,,,,,,,eb4ea65cc4d7f9850e6b0050d43fa581, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,185,3065.250462,36.728908,38.664537,44.221989,12.111653,12.405655,47.409502,45.680652,32.278795,38.794567,36.626992,38.642123,44.202594,1.031677,,,,,,,26f088948e584a09fe6fed85d815862e, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,210,926.832000,33.610758,36.977976,42.645292,10.366922,9.356698,23.947539,23.262813,29.064167,36.645923,33.516940,36.957415,42.633797,1.388456,,,,,,,3c7eb621a38dfbccacfecdcab68c79ad, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,3840x2160,235,197.926154,31.573756,35.693670,41.009070,9.575283,7.570215,9.008294,8.800219,27.091369,34.896867,31.533082,35.684884,41.001292,1.588506,,,,,,,5c053f9de555a6a04a9cf9d93a3729c9, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,110,27931.469538,44.510506,42.447298,47.851579,17.634025,20.019530,89.306627,87.088065,41.102129,43.607569,44.440803,42.414665,47.816392,0.814332,,,,,,,31a068654dda58e396f610876b876660, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,135,11806.999385,41.422654,40.975879,46.547496,15.325034,16.997727,77.081835,74.767492,37.457717,41.740223,41.343766,40.954104,46.523331,0.970893,,,,,,,c314f1c2e779f17405f3ad9a010c4673, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,160,4681.502769,38.187162,39.437499,44.992294,13.078424,13.869576,57.582934,55.565153,33.853718,39.753347,38.093101,39.416924,44.970671,1.076616,,,,,,,1d9a261becb739b6415df1bfe4e6630d, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,185,1605.286154,34.981143,37.786531,43.419562,11.077092,10.704932,34.179453,33.038543,30.456326,37.664658,34.882495,37.764120,43.401575,1.336466,,,,,,,e1e434affa46362507711bd9aa2868d1, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,210,394.667077,32.338819,36.311890,41.931373,9.833787,8.205549,14.850067,14.403594,27.823649,35.706388,32.271356,36.294888,41.918348,1.949327,,,,,,,7194d8c16cd1abb0409ba3486a96c8a9, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,2560x1440,235,77.604923,30.986517,35.327723,40.332414,9.429390,7.177941,5.838238,5.647010,26.558755,34.349871,30.963890,35.320467,40.326253,2.106679,,,,,,,205b47f3fcc68dacfd52014e15cfd755, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,110,19718.544000,43.185481,41.170406,46.872845,16.607099,18.712700,85.235265,82.791487,39.488319,42.509373,43.117751,41.150383,46.845876,0.903285,,,,,,,6e909880af0652e213807918cfd5491a, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,135,8318.496000,40.126836,40.025444,45.708707,14.395291,15.740138,70.465628,68.063330,35.983056,40.815652,40.046612,40.008378,45.686453,1.042239,,,,,,,25e03708d73f9361a33ae2782e9521ca, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,160,3130.707692,36.856092,38.645525,44.286449,12.208936,12.559034,48.142179,46.416290,32.416223,38.873367,36.758525,38.625056,44.267167,1.265463,,,,,,,41b3e788d615116ee3accbd8d97a3f46, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,185,944.466462,33.812184,37.158632,42.871221,10.470976,9.584808,25.165126,24.375995,29.268976,36.875253,33.721262,37.136838,42.859856,1.685554,,,,,,,684c8420b8b8c658deaa17f876d4b4b0, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,210,208.541538,31.743437,35.946053,41.452254,9.634901,7.706863,10.450288,10.172012,27.259809,35.237669,31.698618,35.931470,41.443121,2.411159,,,,,,,8b143738d890c3586aa20fc300632eca, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1920x1080,235,42.288000,30.629406,35.055662,39.868613,9.359825,6.991482,3.640088,3.493425,26.241201,33.941396,30.613055,35.049597,39.858351,2.736755,,,,,,,174f1b7c6195652f5ba96a05aaa33ffc, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,110,11581.395692,41.093169,39.232732,45.369922,14.954210,16.767957,75.749800,73.398343,37.054489,40.859602,41.038211,39.215166,45.345264,0.869532,,,,,,,80c7b6ea7698e1db3487a076e93e75ba, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,135,4850.089846,38.185733,38.511184,44.464988,13.011727,13.881035,57.571586,55.463885,33.820289,39.404757,38.104671,38.494531,44.444026,1.061475,,,,,,,63b076f529fa8ded9110b055884b7ee8, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,160,1628.798769,35.038009,37.501653,43.415323,11.116365,10.787428,33.546341,32.421401,30.503296,37.626465,34.943652,37.482918,43.400737,1.515049,,,,,,,38f1bdf4e3d5b27caeae10952553dc8c, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,185,398.115692,32.458399,36.391089,42.143875,9.876846,8.330296,14.606473,14.192026,27.937184,35.886526,32.390908,36.374316,42.132227,2.219492,,,,,,,b25e79647a6c0198a103920cf563c908, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,210,79.990154,31.147981,35.516663,40.683627,9.474894,7.289504,6.885315,6.659225,26.708938,34.563272,31.125137,35.508069,40.673443,3.094080,,,,,,,15b379c7a2df28f64752c111aeb68721, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,1280x720,235,23.305846,30.093011,34.644807,39.019591,9.279370,6.777199,0.552612,0.525016,25.767354,33.310175,30.079278,34.641541,39.005154,3.434030,,,,,,,183e20c0c66466df6aff9984dd897e4d, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,110,7630.227692,39.165930,38.121744,44.500024,13.403993,14.972804,64.013760,61.927978,34.829495,39.664000,39.124984,38.104186,44.477436,0.832899,,,,,,,29285c655cc97ca1ac94bbada19f9072, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,135,3076.164923,36.633102,37.557445,43.758669,11.915697,12.385282,44.768602,43.200812,32.110658,38.383499,36.562576,37.540650,43.740142,1.146216,,,,,,,edace05861925dde43417480c4ec1ce6, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,160,921.939692,33.804256,36.813578,42.832423,10.450944,9.605555,23.233065,22.486344,29.238795,36.784153,33.719790,36.796780,42.818833,1.849799,,,,,,,bf7885544a035e901f211e7aed192781, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,185,205.340308,31.797945,35.969421,41.610368,9.644644,7.769774,9.263394,9.010091,27.307598,35.293314,31.752949,35.956497,41.601258,2.717311,,,,,,,39bcc7daa7e163114d351b6526cb04ea, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,210,43.366154,30.766179,35.249297,40.288942,9.392976,7.073896,3.779849,3.645541,26.369416,34.194900,30.749948,35.240628,40.279187,3.542557,,,,,,,db095c8f64c7dcfb8bee5bb3279467b6, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,960x540,235,16.833231,29.634358,34.314517,38.323288,9.228340,6.644271,0.022942,0.021164,25.366754,32.858858,29.620503,34.312435,38.310965,3.774674,,,,,,,69da81570d0d635204945e6926a449e0, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,110,3760.622769,36.180692,37.054822,43.654964,11.287716,12.162849,38.958531,37.599792,31.462286,38.022743,36.146838,37.037683,43.635231,0.771759,,,,,,,aa5c0c8659905ee1321672a02707b5ac, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,135,1343.305846,34.377175,36.676446,43.037756,10.523254,10.233397,23.069484,22.284797,29.710967,37.007064,34.325702,36.660756,43.021962,1.376956,,,,,,,6d817d1cfd61c469d221b6014eae8382, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,160,331.547077,32.351309,36.163998,42.090587,9.790227,8.272730,9.790898,9.489532,27.804783,35.752904,32.299186,36.150036,42.079135,2.370005,,,,,,,87d57cab89c59ff003fa1954ee5b1df1, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,185,79.384615,31.179892,35.566986,40.877361,9.465699,7.324733,3.542771,3.437777,26.734581,34.681960,31.156277,35.558448,40.868885,3.227419,,,,,,,cffa313b530477624a770c836ef4c0e6, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,210,23.811692,30.235790,34.811792,39.450910,9.308698,6.839505,0.297615,0.282607,25.898577,33.543243,30.222267,34.803423,39.439449,3.809053,,,,,,,5b497c28c0fc30affb03cc209b39806a, +AS,aom,av2,0,A1,NocturneDance,3840x2160,60.0000,10,640x360,235,11.132308,28.968522,33.799261,37.899991,9.168257,6.462472,0.000000,0.000000,24.792508,32.157055,28.952829,33.794581,37.891498,4.056408,,,,,,,22203819247fd3e341dbfb52a5bb19c1, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,110,10442.529172,44.569999,47.201644,44.596601,16.965473,23.326672,99.538448,98.762153,44.899538,44.150589,44.425760,47.113885,44.499518,0.000356,,,,,,,5fe9766f1c6c1f8b911532d1ef0d4c45, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,135,3469.424948,42.871112,46.205119,43.826869,15.739007,21.162144,97.857499,96.305348,42.073060,43.107513,42.631327,46.115400,43.734502,0.000802,,,,,,,d69eabd53bd05a83bc7763704471a9a2, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,160,1130.315322,40.692653,44.909027,42.984192,14.323790,18.681128,92.386286,90.305384,38.837256,41.767423,40.386242,44.822735,42.893818,0.003057,,,,,,,d56a14f1a59e35efddebac4bc79a0587, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,185,387.406052,38.295309,43.126282,41.767185,12.906050,16.375011,82.821546,80.556691,35.599500,40.124949,38.005913,43.062788,41.692066,0.011656,,,,,,,4deaf6a3b31726eee82f7a79b951afc4, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,210,141.740579,35.729825,40.783434,40.040848,11.482309,14.177157,68.480261,66.054441,32.301525,38.136790,35.515816,40.744375,39.983535,0.032769,,,,,,,3deba108f105ef0b7aa55645a6e22ec0, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,3840x2160,235,54.541711,32.979350,38.099757,38.093308,10.103520,11.956580,48.838932,46.439228,28.973111,35.786644,32.841759,38.076106,38.057103,0.074127,,,,,,,abc2bd32d010ba8e7cb142e940c10dee, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,110,5306.283482,43.265044,46.192799,43.417957,16.114623,22.043376,98.565197,97.317497,43.224924,43.141822,43.016328,46.077127,43.278825,0.000669,,,,,,,8868510ebded8c2356069a0799f63851, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,135,1827.740276,41.531839,45.221598,42.841527,14.891620,19.801549,95.213845,93.165770,40.289623,42.142029,41.215399,45.111662,42.711318,0.001731,,,,,,,184aebfe0a1f3302967b7ad925f17e70, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,160,604.256062,39.330641,43.794398,42.026707,13.511481,17.397633,87.630979,85.407117,37.056796,40.775518,39.005410,43.707686,41.919303,0.006876,,,,,,,8c6b1aadf88994b5a7cee129515cd208, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,185,215.422516,36.919958,41.871421,40.766298,12.129158,15.222675,75.746672,73.329524,33.844535,39.078675,36.660656,41.812642,40.689723,0.021235,,,,,,,b1f5ed435e6e25db3207eb148fa5b252, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,210,81.009371,34.296066,39.525478,39.074824,10.743349,13.047119,58.720231,56.180656,30.554543,37.025411,34.114829,39.488263,39.019673,0.066739,,,,,,,65f91840ae3409d64d2fc01142149578, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,2560x1440,235,31.877014,31.519418,37.067943,37.366722,9.465045,10.841820,37.194562,35.017037,27.336008,34.721368,31.409359,37.049652,37.333455,0.137308,,,,,,,0227cf2d347f05fd1377e8f025697869, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,110,3236.330276,41.587870,45.010020,42.593412,15.115662,20.806766,96.146322,94.150673,41.580344,42.130579,41.163682,44.878495,42.442348,0.001546,,,,,,,524525fc62a8dd81a5a0a58cbfa26f60, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,135,1135.353971,40.109741,44.118924,42.112540,14.047905,18.699608,91.303440,89.096120,38.783426,41.221495,39.693558,44.000761,41.976588,0.003935,,,,,,,e668810e94ec65a77e0de1f6683d38ff, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,160,389.831317,38.127595,42.732811,41.304208,12.813358,16.460759,82.400704,80.109717,35.688455,39.913589,37.778288,42.649879,41.199341,0.014232,,,,,,,7dc1d86af01a94350efe4aa92ad8264a, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,185,144.800286,35.814463,40.845734,40.001029,11.515489,14.365018,69.004858,66.529462,32.525459,38.239143,35.564078,40.794534,39.928270,0.052374,,,,,,,85eca0be589c1c8a23a1da4bcfef4078, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,210,54.554622,33.183420,38.676647,38.454146,10.205141,12.198067,49.886418,47.507289,29.264874,36.212416,33.024099,38.647764,38.409805,0.129115,,,,,,,c89ab5206bc0891ee3a3e9dedd055c40, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1920x1080,235,21.274089,30.445401,36.245288,36.874791,9.018489,10.004971,27.652577,25.838277,26.180404,33.879964,30.351222,36.232422,36.844569,0.209845,,,,,,,b435952c4bc70981b6a4aa1a1ce94c7e, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,110,1536.321218,38.299053,42.941264,41.530868,13.000609,18.339304,87.416273,85.090923,37.016788,40.316827,37.775292,42.832771,41.397490,0.001766,,,,,,,3c079b34c2e2bad248604710e78e2e0e, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,135,560.335719,37.370244,42.223233,41.100305,12.330359,16.736272,81.360767,78.985299,35.297873,39.582565,36.898779,42.131706,40.985073,0.006692,,,,,,,bf7eaa1a550689df7a980ae759c56a08, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,160,207.770483,35.966694,41.046594,40.243656,11.492852,14.946799,71.157687,68.798208,33.054456,38.477607,35.602930,40.977474,40.158080,0.024803,,,,,,,b3bf8f4addc52b13445a1f65b5749ad4, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,185,81.273107,34.009197,39.361915,39.003567,10.498571,13.052637,56.084956,53.645684,30.362751,36.939668,33.778787,39.319517,38.944645,0.088688,,,,,,,104a028d8ade90e12a73cd7eabdb2082, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,210,31.583769,31.595427,37.404901,37.567901,9.440251,10.995905,36.104261,34.068765,27.460933,34.974133,31.464464,37.378651,37.526714,0.207664,,,,,,,557b4a4334e7f6c4604e64cd49b3773d, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,1280x720,235,12.626130,29.007826,35.033008,36.259781,8.443587,8.851147,14.241903,12.981889,24.674675,32.699461,28.941810,35.014932,36.232813,0.302298,,,,,,,980bbf850f0caac5d92cd524ed7c87c9, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,110,884.594520,35.733354,41.331615,40.735632,11.331714,16.018354,74.193240,71.906552,32.806956,38.835849,35.316932,41.254461,40.627120,0.003521,,,,,,,0dbd6198d89a421e4768a032fafe52ac, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,135,337.340476,35.146885,40.749228,40.337615,10.942399,14.950114,68.047496,65.770337,31.927279,38.242562,34.762337,40.680683,40.243382,0.012002,,,,,,,4ff8cd9c0be829c2554cacf24015ba8d, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,160,133.848786,34.170471,39.765979,39.541777,10.421197,13.611512,57.784856,55.586737,30.564492,37.319432,33.856157,39.713610,39.472802,0.048834,,,,,,,8d9a33eb835d4159c9a31baf9e20163a, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,185,53.676731,32.528591,38.294254,38.353833,9.682274,11.941977,42.107932,40.103851,28.500037,35.886022,32.328882,38.261535,38.302026,0.136610,,,,,,,1be98cc3c69d98ae425cff3d4fde8f37, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,210,21.475119,30.371326,36.527622,37.017706,8.870264,10.027029,23.110128,21.631894,26.080298,34.066223,30.258276,36.509886,36.980250,0.256009,,,,,,,d6343ae76bc3b52e7a6d925ea56de6b4, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,960x540,235,8.777060,27.952193,34.468609,35.598870,8.080367,8.027672,4.351392,3.484986,23.615282,31.798901,27.901021,34.453650,35.574755,0.317558,,,,,,,27e97c780d391abfffa3df420ab3a2e0, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,110,400.533834,32.474897,39.487703,39.662028,9.458518,12.924863,43.254276,41.525122,28.177106,36.769683,32.245448,39.437360,39.580943,0.006148,,,,,,,3be0d4dd54986e82cbe6ff417ac3241c, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,135,163.291314,32.167567,39.035558,39.284888,9.297352,12.364187,38.256399,36.614154,27.824063,36.338680,31.946144,38.989568,39.213811,0.022475,,,,,,,288b60ec1ebe4cb7022577760bd7e894, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,160,69.720364,31.581430,38.203341,38.521953,9.052906,11.530298,29.999356,28.466498,27.174061,35.589605,31.390135,38.166204,38.466148,0.098065,,,,,,,e6b791ca1ecf5a21de787c9c49467efb, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,185,29.280229,30.437911,36.960503,37.485207,8.654893,10.287968,17.688730,16.400502,25.976752,34.390610,30.300900,36.933590,37.445630,0.187162,,,,,,,b498a8c1789a490333ee961271ace30e, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,210,12.135545,28.730674,35.230612,36.239476,8.165167,8.705695,4.148468,3.296787,24.292225,32.670949,28.650793,35.214942,36.207010,0.271967,,,,,,,5669c3355ebaf8782986039a0cc90ad5, +AS,aom,av2,0,A1,PierSeaSide,3840x2160,30.0000,10,640x360,235,5.486815,26.689598,33.377416,35.116589,7.700398,7.054682,0.000000,0.000000,22.388514,30.643257,26.644651,33.366251,35.096317,0.393438,,,,,,,92fe67c3d8b32afe32f90cdc5dabc337, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,110,27172.352571,40.437261,49.745022,48.010906,11.478400,18.276102,97.424772,95.738347,41.386887,42.582682,40.373285,49.735783,47.988137,0.315735,,,,,,,30003f03ca2db1382b457685067c6c57, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,135,8901.117344,39.825488,49.104979,46.964219,11.159879,17.421122,93.508536,91.435237,39.805293,41.925846,39.816507,49.101484,46.951493,0.514279,,,,,,,f8a95dd8b3998056ebbcafaa7ee83bb7, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,160,3513.594098,38.898777,48.035432,45.351906,10.835830,16.277945,85.837612,83.429355,37.650995,40.945677,38.892086,48.029306,45.335365,0.566933,,,,,,,87eda25eff4f48a613038d407f92c412, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,185,1695.990164,37.381903,46.446083,43.168734,10.406521,14.684652,72.954742,70.413880,34.937581,39.482837,37.366461,46.436246,43.146004,0.604477,,,,,,,d19f8ec365ec868fe59dd8d50a3712a7, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,210,816.118036,35.196987,44.425688,40.601824,9.865932,12.747680,55.969391,53.590178,31.902589,37.531046,35.169178,44.409725,40.576193,0.769608,,,,,,,88f6f4d4c6d5bcbf5f49851461177506, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,3840x2160,235,374.055483,32.424914,41.838122,37.859118,9.240871,10.609757,37.736908,35.762482,28.696262,35.035580,32.387516,41.820401,37.831982,0.779216,,,,,,,944b51b72fc7b3f0d44b1e188bda7249, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,110,12608.662722,40.056715,49.389660,47.360261,11.254691,17.762937,95.438170,93.473371,40.463541,42.181457,40.045820,49.385344,47.346235,0.441179,,,,,,,1847e50e228896dd9165507109ecf87a, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,135,4995.371398,39.378273,48.602620,46.123343,10.986966,16.857865,90.107953,87.800889,38.714849,41.441411,39.373832,48.598246,46.109206,0.491014,,,,,,,b7fc617ccf74a95bf7597901f7123170, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,160,2288.588950,38.160484,47.315999,44.268404,10.618425,15.483885,79.637184,77.102743,36.247198,40.239431,38.149969,47.308118,44.248652,0.629194,,,,,,,4aa03bee99334ba0fa53411cb2066b97, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,185,1092.340275,36.297089,45.494128,41.879981,10.135304,13.707224,64.588814,61.912497,33.352613,38.534359,36.275850,45.479896,41.856403,0.743259,,,,,,,8c0f8735f291a58f962b223b21b8e301, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,210,514.215631,33.831453,43.328419,39.252809,9.557895,11.681956,46.714699,44.422245,30.270019,36.380914,33.799091,43.310244,39.225352,0.844104,,,,,,,91c6104954340f13a2864d971df17f55, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,2560x1440,235,232.139553,30.963424,40.798505,36.569471,8.956963,9.645580,29.249651,27.612816,27.168084,33.813492,30.924201,40.780528,36.542780,0.884974,,,,,,,9839098880433a07617d94b3a6fb4fb8, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,110,8344.829325,39.781631,49.062322,46.734239,11.133493,17.397560,93.419209,91.246150,39.751681,41.861927,39.776316,49.058659,46.721297,0.501046,,,,,,,37b1010fc25035a3171d64632204c65e, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,135,3644.724506,38.953791,48.151233,45.358015,10.846663,16.367440,86.554780,84.059658,37.789202,41.001152,38.948044,48.145574,45.341655,0.583225,,,,,,,7eb9b9308557c5c54e109c5723b7ac88, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,160,1691.010528,37.492808,46.730501,43.374589,10.436027,14.823429,73.948742,71.429441,35.130442,39.630897,37.478401,46.720412,43.352167,0.751434,,,,,,,5b9cd959e8df30bb56e99f6cbd0cc4d3, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,185,799.740567,35.411362,44.812839,40.945213,9.924292,12.953735,57.552585,55.031927,32.185976,37.780015,35.385957,44.797314,40.918927,0.915540,,,,,,,34c74c7adc21309ac322b2083ebf8092, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,210,368.430339,32.805104,42.538088,38.307128,9.337950,10.913863,40.491208,38.282481,29.123841,35.502495,32.769992,42.514534,38.279491,1.053105,,,,,,,c440f57ca456e0080dcc760539277bf3, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1920x1080,235,163.545992,29.935038,40.153078,35.609869,8.768466,9.004007,24.808398,23.343373,26.127837,32.886603,29.894154,40.141975,35.581966,1.066449,,,,,,,3e03c190b5c1d18a0731fb8283cb44d7, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,110,4971.487589,39.191143,48.397378,45.496041,10.907832,16.732035,88.258295,85.904874,38.398154,41.232544,39.187041,48.392392,45.481576,0.565151,,,,,,,1404bc84a5e59d64b52a0624d689a103, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,135,2380.442942,38.109045,47.321689,43.981825,10.581917,15.491701,78.766666,76.232863,36.195199,40.184960,38.099293,47.314148,43.962833,0.678435,,,,,,,2ee516fee039610351a994aac237b984, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,160,1106.058249,36.340027,45.685522,41.902970,10.128136,13.777199,64.025789,61.555272,33.422769,38.602442,36.319927,45.671657,41.878093,0.891435,,,,,,,fb2e432d478d6d2bd2672f60a9401dc7, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,185,510.681933,34.001919,43.592279,39.463628,9.593226,11.843535,47.263569,44.965790,30.471479,36.569257,33.971646,43.567639,39.434848,1.093529,,,,,,,587014b731fcf9914bae3afd5f6b05b8, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,210,229.077999,31.278670,41.330750,36.888173,9.028632,9.878231,30.688243,28.996055,27.499148,34.144449,31.240649,41.307465,36.859502,1.262952,,,,,,,0975f3307a5b26d8444f6f34148fe7eb, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,1280x720,235,98.751710,28.405098,39.047073,34.260155,8.497443,8.149780,12.889052,12.043306,24.605832,31.498157,28.364023,39.030453,34.236544,1.230057,,,,,,,63e169c68f71023d1c41ad1b882afcb5, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,110,3629.258126,38.487890,47.716644,44.320809,10.659262,16.043663,81.184399,78.800232,36.922192,40.579508,38.481991,47.710207,44.304718,0.641535,,,,,,,c925d0b816e1b26588e0ec39a569de05, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,135,1758.040114,37.266301,46.552371,42.762875,10.325626,14.713096,70.007507,67.597447,34.766165,39.438522,37.252727,46.543724,42.741330,0.781209,,,,,,,c8184bc564c698b3fa3e19448a7b5d71, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,160,809.858449,35.345387,44.834083,40.735914,9.867808,12.956066,54.765396,52.458493,32.077827,37.744683,35.321039,44.818569,40.706823,1.019295,,,,,,,f988e52175c9495c3a1d86ed02a3d6f4, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,185,367.091370,32.881591,42.733338,38.384699,9.334681,11.001449,38.483320,36.506151,29.195404,35.588418,32.848188,42.710730,38.356143,1.249933,,,,,,,95c1ed287935503c4f370cd01120e02d, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,210,162.483670,30.184103,40.331458,35.953477,8.817438,9.192639,22.863136,21.695502,26.376386,33.174884,30.145642,40.316565,35.931711,1.423087,,,,,,,6a88387934097778f769b9d51f491c04, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,960x540,235,69.353416,27.313057,38.037765,33.164305,8.313353,7.573392,5.748199,5.355585,23.528948,30.446180,27.271918,38.015228,33.133476,1.403531,,,,,,,f9865bcf6b6c1aaf9ad65add38e32d5c, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,110,2323.003765,36.856972,46.457972,42.373131,10.134694,14.623487,61.750534,59.673015,33.947970,39.299097,36.848993,46.449920,42.354241,0.715491,,,,,,,83007c58486ac654fc9b9db1ff815ed3, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,135,1135.497118,35.611102,45.278877,40.917967,9.843913,13.348429,50.030517,48.025436,32.263658,38.107873,35.594766,45.268209,40.891824,0.917101,,,,,,,13d6727b62e5c8943f4f56834b6c368b, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,160,516.395604,33.663545,43.498799,39.067007,9.434385,11.661222,35.654716,34.009290,29.978218,36.367342,33.636425,43.483176,39.036102,1.163416,,,,,,,699cf989fb47f0ea8bc78f3d399606b2, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,185,229.362023,31.243811,41.338531,36.854680,8.975141,9.895557,22.335363,21.135411,27.418126,34.161710,31.208399,41.313561,36.824704,1.463540,,,,,,,caba40103a637d8603f347e05dc1494e, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,210,98.843925,28.611126,39.230397,34.451440,8.525236,8.296555,9.398375,8.847740,24.797947,31.718658,28.572189,39.213694,34.425192,1.589245,,,,,,,3920f792f76961f74d9d150d1e106489, +AS,aom,av2,0,A1,Tango,3840x2160,60.0000,10,640x360,235,41.592869,25.802438,37.100782,31.834492,8.051875,6.861952,0.144819,0.130657,22.069321,28.998114,25.761286,37.088343,31.809019,1.496157,,,,,,,6fdfa1b54767f0269df993f254096252, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,110,27016.239145,43.630468,49.655274,51.457006,16.707244,23.353629,95.134447,93.443633,45.281099,44.761038,43.538373,49.633109,51.381918,0.009272,,,,,,,3db14349f7a0b74de54bd589ca47f546, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,135,9751.281334,41.704297,48.005266,49.695250,15.198577,20.902715,92.215927,90.238901,41.637660,43.145274,41.637542,47.996052,49.655226,0.007791,,,,,,,245393749ed893ca12b6bc98c04dcd9d, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,160,3515.032660,39.439016,46.007028,47.507309,13.482565,18.143060,86.413624,84.100697,37.840844,41.144497,39.375432,46.000651,47.486912,0.006739,,,,,,,4d8d7059c5b803d908a8c1304ec10e18, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,185,1313.723815,36.954951,43.895690,45.240089,11.650883,15.316065,76.650344,74.034541,34.256433,38.906682,36.886668,43.889967,45.223877,0.009042,,,,,,,af865e770618df1c1aac2589ba39883b, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,210,481.379544,34.326688,41.758808,42.966162,9.930440,12.504989,61.717612,59.118318,30.868980,36.494284,34.247952,41.751550,42.954572,0.014085,,,,,,,5e6e6e0759411fa58ecd08de85f1ce42, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,3840x2160,235,170.716668,31.653484,39.431472,40.532882,8.531670,9.931261,43.910507,41.658334,27.763060,33.897606,31.568245,39.425958,40.517462,0.016452,,,,,,,719fbac21329dda459947e01d2e4a14a, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,110,14023.465765,42.025928,48.317471,50.141050,15.596450,21.851146,93.114708,91.039697,43.075082,43.446638,41.958768,48.306159,50.083168,0.009896,,,,,,,87a07aff23640f287dc51c2c8bdc8fae, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,135,5415.062476,40.237032,46.728064,48.454808,14.149960,19.368710,89.007723,86.680804,39.499609,41.893294,40.173924,46.721644,48.418958,0.007346,,,,,,,19eb6a9c19c970bb9f9d55e013bbd36e, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,160,2007.261661,37.978085,44.785997,46.302965,12.415467,16.589396,81.282485,78.732674,35.843142,39.867000,37.912431,44.780031,46.282899,0.009705,,,,,,,12a556c28d7af2616117fa38ee3c56d3, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,185,741.836625,35.472232,42.728055,44.134408,10.644419,13.763992,68.810416,66.172089,32.366376,37.606423,35.398273,42.722383,44.119936,0.012664,,,,,,,26de447dcfa4acb99ca22de7e8119efe, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,210,264.798586,32.860336,40.650345,42.029247,9.123558,11.087919,51.845014,49.298895,29.158375,35.220922,32.777484,40.643311,42.015480,0.017572,,,,,,,0f0cf8ec59bf04a60534fb08d4403c94, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,2560x1440,235,94.672097,30.292280,38.576567,39.650978,7.985855,8.800337,35.107170,33.076336,26.298474,32.721309,30.200630,38.570702,39.630129,0.024026,,,,,,,1a5f04ddc6ee0df04a12eb39f075195f, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,110,8956.660570,40.403882,47.094068,49.059040,14.428431,20.448647,90.144966,87.783130,41.149800,42.185248,40.333230,47.086619,49.024530,0.013478,,,,,,,0cb3dfce99cf4766bd2516205980cbaa, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,135,3540.971029,38.850692,45.583714,47.440800,13.147477,18.109478,85.062493,82.519784,37.834849,40.719956,38.784486,45.578963,47.418218,0.013540,,,,,,,8c46e7add5b3b720fc402ac97913d7ae, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,160,1330.318912,36.767067,43.788115,45.481868,11.552119,15.417595,75.873098,73.164861,34.378448,38.814761,36.696996,43.783359,45.467178,0.018753,,,,,,,3ca594a11c7207d80a733dd57ee7b2ee, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,185,485.654653,34.345544,41.899573,43.354751,9.924213,12.646204,61.521025,58.904451,31.029148,36.610371,34.266741,41.893386,43.339632,0.021932,,,,,,,3d8e445daefbf6e2fd6c38f07b468a03, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,210,172.892953,31.839738,39.887533,41.218671,8.614093,10.154099,44.516117,42.205017,28.015365,34.273802,31.752464,39.880841,41.199031,0.027701,,,,,,,279c5dfa917e0f4ac6a227283902711e, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1920x1080,235,63.790978,29.329337,37.767488,38.857308,7.621495,8.107020,28.595256,26.835038,25.273912,31.807195,29.235476,37.764522,38.817186,0.042773,,,,,,,2b737cec6573ed951f332529c8609aa6, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,110,4453.358334,37.179319,45.278737,47.516996,11.953114,17.530165,80.480714,78.072039,36.111723,39.874353,37.091701,45.271621,47.503892,0.012472,,,,,,,a7c26800a61bc0290307fc41503f7e65, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,135,1854.840544,36.210399,43.945903,46.021492,11.186743,15.826424,74.027222,71.566414,34.253501,38.701317,36.130473,43.941635,46.009971,0.017369,,,,,,,d2f22614eeaaebd0a50f027ee46d04fc, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,160,725.271037,34.640957,42.326641,44.233870,10.061724,13.545549,62.884641,60.474958,31.741560,37.047527,34.560479,42.322926,44.222871,0.021894,,,,,,,0d42431745b713b4dbcd4d2886791e59, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,185,264.901867,32.580419,40.570250,42.297661,8.859359,11.084542,47.242764,45.162538,28.980047,35.060252,32.492975,40.564809,42.282626,0.026132,,,,,,,66af1f4b114b2c13e6d222905489a194, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,210,95.450396,30.318680,38.793101,40.206664,7.913877,8.914709,32.037790,30.389152,26.365324,32.919530,30.226854,38.787021,40.185737,0.041475,,,,,,,9bab1aa40be2752fe3626d2ec0c719b7, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,1280x720,235,36.602167,27.997032,36.852131,38.110941,7.163605,7.195151,19.016815,17.723046,23.911648,30.643564,27.907235,36.844927,38.070625,0.077034,,,,,,,1372e2a1d8b8710e72a80c39c10c64ad, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,110,2628.332898,34.680747,43.842002,46.275152,10.069306,14.913680,67.636858,65.128908,31.965263,37.986588,34.581258,43.833990,46.268775,0.015699,,,,,,,c996a0e49b7677cc1c01675c2baf4464, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,135,1134.220856,34.063213,42.687968,44.951410,9.633602,13.790229,60.634666,58.194645,31.020246,37.051188,33.971396,42.683160,44.944369,0.022762,,,,,,,260b1415f24fcd56a0f13183ab955c3d, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,160,457.263352,32.919230,41.240484,43.275802,8.915577,12.031410,49.358935,47.052154,29.431084,35.665072,32.829029,41.237206,43.267636,0.027548,,,,,,,b1c236b3cb915129877d0d0dfd7f883f, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,185,169.739184,31.226683,39.708451,41.455149,8.112377,9.976971,34.697874,32.884159,27.363145,33.914460,31.136672,39.704835,41.443110,0.037250,,,,,,,b1056785372d939c1c2bf191c13afbec, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,210,63.311458,29.231813,37.929146,39.262655,7.439215,8.126474,22.288707,20.891959,25.159080,31.896950,29.138674,37.923769,39.229861,0.062768,,,,,,,933e83f36e3e66ed9f19a290d36e0549, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,960x540,235,25.753938,27.088664,36.086368,37.678768,6.879289,6.576406,11.639962,10.689602,22.990572,29.822501,27.002634,36.075958,37.615299,0.117071,,,,,,,c1c1d344b5727762d247f92b396bf3ba, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,110,1228.697456,32.065572,42.427694,44.880588,8.345871,12.111925,43.061023,40.938345,28.107731,35.863943,31.964087,42.421397,44.865975,0.017986,,,,,,,65920f3810984867d559be4f04020204, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,135,562.259894,31.690412,41.414364,43.693637,8.156011,11.436829,36.991111,35.065424,27.665452,35.159225,31.594811,41.410543,43.681972,0.023952,,,,,,,b645205bb9ed5c87c8937c118cfd7594, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,160,235.499885,30.877798,40.074989,42.172912,7.791715,10.190351,27.387761,25.833910,26.756404,34.001594,30.785459,40.070211,42.157505,0.028497,,,,,,,8a72c986d3ca58a95fe8b802f0f1e7e1, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,185,90.987167,29.541717,38.572230,40.313510,7.338434,8.607820,17.947567,16.729300,25.355221,32.441189,29.449609,38.566168,40.292185,0.042623,,,,,,,eff26c2ec9f9ea4842048b0fccdf992e, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,210,35.801737,27.824417,36.806710,38.528975,6.916147,7.121841,10.424737,9.599803,23.654027,30.559889,27.733151,36.801347,38.464833,0.094362,,,,,,,2daae268ed178ab668435cc6538e9ce6, +AS,aom,av2,0,A1,TimeLapse,3840x2160,60.0000,10,640x360,235,15.853685,25.830632,35.299326,36.664747,6.531661,5.823794,3.788813,3.067038,21.759431,28.557488,25.746844,35.295672,36.619066,0.206588,,,,,,,5db234a07247196feeb63138ea6b31ec, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_LD_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_LD_Preset_0.csv new file mode 100644 index 0000000000..20e5a77d59 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_LD_Preset_0.csv @@ -0,0 +1,337 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,8477.737647,42.188232,44.790136,44.688417,15.892289,23.391702,96.864343,95.051381,45.688340,40.670135,41.991985,44.746582,44.642991,0.000008,419445.93,12.34,2462776867477228,59304119858,1088511260940218,33926528685,56662b9bbd96016fc1f7e0cfc1b5f3ec, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,3063.855529,39.631056,43.398558,43.664276,13.689721,20.417481,92.659668,90.545140,41.220681,38.912656,39.362280,43.361539,43.631524,0.000020,256830.27,7.20,1938078296813806,49512539482,717260343891918,20134145995,ced10797aca9fd28f739934ece414fb3, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1117.426573,36.623158,41.725273,42.396262,11.037965,16.797105,83.711692,81.490493,36.239605,36.718822,36.323050,41.690649,42.363998,0.002361,226473.37,6.07,1715344177664735,43899347794,632472110385897,16930067315,846b648236f733aef23727754073e6ae, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,399.790978,33.607171,39.964839,40.852075,8.526545,13.157459,67.923874,65.795488,31.597088,34.361399,33.372380,39.937697,40.828261,0.012984,135811.90,4.86,1056934626302768,35738199740,379279992413956,13607798314,18a1e04d090f5bbd893cc31ca5448af7, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,143.446707,30.813948,38.228423,39.367812,6.606772,9.978089,45.618105,44.025640,27.664095,32.086923,30.666156,38.208566,39.350376,0.047248,84103.01,4.48,537622715702818,27106111072,220211963313746,12891442554,fe0c33cd1f7a7759b8096308f24bbac8, +LD,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,54.012449,28.249351,36.649075,37.884459,5.320125,7.312530,22.595334,21.815837,24.454682,29.901469,28.174553,36.634701,37.876529,0.085443,33457.96,3.46,280516391272559,24643888205,93441959792950,9704196632,379bfcecb33e7ebb8ca7576f62eba4e9, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,23839.924998,41.743164,44.961247,46.734761,19.416117,27.333384,99.976141,99.792364,48.016371,42.275684,41.623519,44.916256,46.695060,0.127726,398360.10,15.30,2865538878098178,81575096835,1112514257539956,42747854066,5622c38c4ae8a1b3cebb8944d8d0a779, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,11093.318989,37.851867,43.186032,44.659304,16.102029,23.268700,97.480552,95.638590,41.505145,39.609687,37.732204,43.158733,44.630043,0.155550,562656.82,11.46,3885156234961796,69637516129,1571390311318329,32014648856,5aaa82b36ea4efbf79cae67c5d6ee43f, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,4920.204718,33.670635,41.298955,42.324595,12.360996,18.710196,87.806649,85.727111,34.627384,36.501872,33.548885,41.277012,42.297262,0.173851,572369.64,11.06,4129839184616792,55047752057,1943516366187573,40208076844,450208d7a7b75ab9a2a54035d3245c48, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,2014.008146,29.716812,39.099838,39.904291,8.878765,14.242514,70.113132,68.155868,28.573074,33.220260,29.601546,39.073327,39.871765,0.210526,424366.17,8.66,2459878177894826,43057400149,1100457542463666,24466743040,9b200b86f8f77088d0ebbbb21789e769, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,710.269423,26.209396,36.686217,37.460728,6.028861,10.201332,45.886642,44.444775,23.616683,30.027136,26.105206,36.658112,37.441737,0.193339,222115.12,6.21,1305844831217943,33338119476,577896615009753,17645248868,ff68ccd78cead4fdebab765396f88bff, +LD,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,209.288558,23.382298,34.277391,34.581554,4.109556,7.014548,22.164477,21.370309,19.908524,27.250105,23.316612,34.264880,34.575949,0.146124,80596.91,4.37,635583459958839,30817258731,225084381894801,12247739566,ab7e5d94621354e8ce232d7b1b920812, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,57187.935385,38.800696,40.274770,41.135194,13.457372,21.347619,99.976408,99.967199,43.982920,37.388769,38.598489,40.174860,41.050305,0.000463,1146555.86,34.47,6397887929614976,152848540267,2972975139919362,93277620000,137f1d9bc8bf1f6e5c7c8bb88f1b4dea, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,23269.800000,35.111658,37.958378,38.658830,11.233282,18.538073,96.949700,94.929713,38.522620,34.901120,34.987015,37.903280,38.597779,0.000666,1371361.61,19.54,9492976114887900,115341741416,3829725136448022,54521369167,2cfd5899831def9d3b64db842eabc14e, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,9468.723077,31.420558,35.811400,36.278969,8.901792,15.309126,84.114356,81.838501,32.461224,32.419035,31.313492,35.768451,36.227767,0.000818,1365179.15,13.40,9602713746188428,87132593749,3812419782652356,37473136700,14f9596fd2f68b7c3e6bedf0de0400b7, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,3663.406154,27.971490,33.861515,34.083566,6.627040,11.855509,62.235196,60.251869,26.986585,29.966382,27.878178,33.826329,34.042405,0.002449,735467.55,10.07,5329446189444457,65735818836,2054059282562610,28248982081,d21ec192ae143e88b3e230a8766e8493, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,1229.563077,24.862703,32.102405,32.192538,4.736768,8.570291,36.209791,34.947744,22.400711,27.546597,24.790667,32.076537,32.163164,0.014288,333378.99,7.67,2464972656739843,53427561362,931039947020956,21395791048,0dcba99aed5454659cd149e2faf4e8da, +LD,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,340.166154,22.259548,30.596078,30.596271,3.475905,5.901515,14.115283,13.662757,18.906822,25.292252,22.211665,30.584248,30.581347,0.062870,126269.77,5.07,1005311010877245,37444485516,352629980722470,14213415426,c0ec01e91e69d1d9eb4f985e1d53c0ce, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,110,12819.441482,38.969720,41.881330,46.534242,9.916251,16.934673,90.199464,88.894018,40.642205,38.889995,38.785398,41.789736,46.487851,0.829947,906383.26,14.29,6584060371039712,80966687120,2531310110625191,39958729201,1dc7860cac578f8772eba41b0bdfa34c, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,135,1153.071544,37.634701,40.369419,45.947496,8.718662,14.788657,84.262037,82.489602,37.637758,37.667673,37.608196,40.345482,45.940742,3.064342,406694.09,8.57,2388981839402798,48433337617,1052583484809867,24254429335,09e360d7c41a8544aede7e0279befafb, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,160,129.715823,37.259343,40.080280,45.617172,8.549315,14.313488,78.588171,76.482092,36.728117,37.367461,37.257145,40.077335,45.615731,3.350111,139644.77,4.92,1087128138079622,35663466199,389994287700578,13710107719,0762113678c417a09696b05ae3fa3e8e, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,185,46.862061,36.667183,39.892169,45.105646,8.418832,13.703781,68.678268,66.279861,35.449792,36.999985,36.662961,39.890009,45.103793,3.311490,57217.63,3.64,461728042512258,25713608501,159796488054411,10175864284,3bff3a2e02cb794a8f7e983901935bb8, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,210,23.714132,35.551123,39.493565,44.120383,8.224520,12.691001,53.851699,51.233655,33.474844,36.327568,35.534579,39.488460,44.116410,2.614959,29394.92,4.74,176114803826489,25454666904,78040858506879,13369048615,b8f7eac88ebefc5f1abebb4cce85de94, +LD,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,235,11.862599,33.654534,38.833409,42.676448,7.940313,11.151932,32.909048,31.070373,30.809301,35.234180,33.610218,38.826893,42.665888,3.171105,10905.44,3.37,75293268995398,22143054329,38698076767554,12454600201,f6e153348a838c2f4ce0f3827eeb50a2, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,18459.863828,39.937828,44.311912,45.227508,11.963722,19.099001,99.716529,98.617309,42.082668,39.990452,39.801918,44.266188,45.197721,0.103954,817261.43,17.75,4785853973115416,82266831965,2119752162736113,48935686590,44d15d6b8dca263e7d225ddcd17853fd, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,4589.763467,38.037196,43.155494,44.219726,10.642371,16.755133,94.710519,92.499880,38.321208,38.615788,37.985707,43.137054,44.207282,0.138223,561765.19,14.70,3263382614392712,62663102544,1454363361488367,39905501787,4856e78ec891f373995e492678bf6a96, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1541.529240,35.954072,41.791257,42.864833,9.346004,14.278256,83.815906,81.364448,34.532818,37.074643,35.896045,41.763078,42.842597,0.284156,425329.54,9.77,2519273763202687,56225241897,1104416975394675,27604677310,1d2cd123c2e3d380271408dc4e0471bb, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,587.523246,33.550593,40.378110,41.321446,7.995834,11.541339,66.035780,63.770557,30.798272,35.336117,33.485917,40.332878,41.290363,0.510768,161448.61,5.95,1260267563276125,43157698747,450907059359410,16615278520,cc25f9b2f3db2b712004aa46c1356077, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,217.639591,31.112573,38.717579,39.646589,6.897686,9.044270,47.473511,45.453348,27.558645,33.418041,31.056384,38.654960,39.612577,0.860182,75248.82,5.02,612843083592228,33845706837,259180630166372,18572556463,46931bda9ab26a880f625f37f353843a, +LD,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,79.891801,28.814033,37.088686,37.860004,6.179700,7.127175,32.581944,31.051914,24.923422,31.491222,28.768015,37.031365,37.834952,1.105525,42650.16,4.32,279355984525544,24952544739,114153906580164,12358402053,4aba8b5954da0824e20bbc01486fd974, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,110,26441.040000,40.489374,47.232800,46.879902,15.022442,22.281895,99.974926,99.968683,43.986609,42.061540,40.279560,46.964900,46.651925,0.072357,833749.52,29.19,4656163255767413,128698591861,2159640239277246,79429193890,444af62203532afbd7ce46d1db43f603, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,135,10644.742154,36.794537,44.237452,43.888815,12.165651,18.439503,99.967630,99.948336,38.034379,38.905563,36.610191,43.921486,43.644938,0.070811,957272.56,18.82,5254290614906336,95061552433,2475232647409725,51631344465,12ef025dd89b424a1fe37d6738d43e77, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,160,4184.052923,33.360578,41.291215,41.004505,9.546768,14.730749,94.614639,92.672715,32.611413,35.890504,33.181222,40.932412,40.745009,0.074154,842150.45,11.51,5898720669894513,73734375900,2351826603247818,32133917409,339878df34bbbc69b2db9ad03e7571f5, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,185,1552.366154,30.174366,38.601180,38.421322,7.288752,11.228521,73.884578,71.734866,27.930015,33.035677,29.992997,38.238212,38.199237,0.073976,564542.46,12.12,3251004799017383,63096763486,1465347719385643,34145723263,91344229f4098522c2e9082a6b7a8c12, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,210,519.336000,27.416096,36.231547,36.346527,5.762447,8.252433,50.828983,49.234399,24.176501,30.483678,27.243290,35.872954,36.161097,0.078930,190330.36,8.57,1441974603592235,61490664847,531520736453511,23913648152,ce234637dea4ba0beb525fe110d81772, +LD,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,235,168.528000,25.102763,34.190307,34.339913,4.855430,5.961627,34.670283,33.618798,21.397580,28.120496,24.979799,33.850522,34.225680,0.184236,73275.32,8.25,594247122658499,52547588767,253391924490380,30839110813,7db71f8e2317a25560b5988ef2ffdd48, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,110,5572.496427,42.637565,46.588470,52.676714,13.665965,21.116615,94.999605,93.405864,44.734797,43.150479,42.589458,46.580340,52.667316,0.757088,290086.98,7.14,2128313020269607,46055404888,810172208635948,19900652651,ffe56f3e3f2e0693c6b3fe5dbfa4325e, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,135,1290.824867,41.539596,46.198939,51.727215,13.032950,19.609398,91.638446,89.693164,42.228180,42.461919,41.527390,46.196509,51.714629,0.842476,168177.05,5.66,1256671032747692,39127252872,469754892947737,15845657406,2fe365666b9e3724f2fa0bc7010dcd3f, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,160,420.661185,40.121950,45.547566,50.261539,12.378383,17.789937,85.241413,82.905815,39.357920,41.525959,40.104102,45.542980,50.245078,0.901999,101112.43,4.77,781228424695382,35231431305,282364576769936,13372482326,fc7f7c4259ff93b10cb6ab93b55e7e2e, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,185,157.607316,38.319242,44.588736,48.376344,11.664215,15.713790,74.711714,72.184018,36.370774,40.253796,38.293881,44.581473,48.358863,1.015589,58316.36,4.50,357050875925274,24991396836,153204004799202,12839504982,8884b590b16e21bc4fcbdafa0446a51b, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,210,63.167602,36.181918,43.352469,46.174168,10.991335,13.592754,61.276933,58.364345,33.407131,38.664042,36.146367,43.342794,46.156556,1.103669,19913.84,2.85,157869732230809,19585271227,55618453504807,7968584920,deed4b372fff6b1443f5b3aa3cf80d9a, +LD,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,235,26.318297,33.731996,41.583086,43.987758,10.335375,11.582850,45.692595,42.601663,30.433143,36.678525,33.684827,41.577819,43.982886,1.077416,13901.97,4.09,85729680869073,21587611158,37506201947804,11546918878,e3e65833cabb4888f4e7fe68ebce940b, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,46927.198154,41.437672,43.626554,44.527681,18.502436,24.703044,99.977234,99.971292,44.786009,41.761830,41.238219,43.496643,44.418369,0.029408,724405.13,31.72,4931376699589168,169850575962,2023050937929873,88607768140,4879ee4a7aeb575fad4a6d77b0d10293, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,24695.209846,36.596820,40.182240,41.524301,15.024533,20.685535,99.970403,99.961286,38.957769,38.193685,36.391318,40.069532,41.437397,0.060715,907423.82,24.54,6174271266962864,136353881338,2534122117364053,68527880120,4e1d9f794425ea6d1add51d336c793db, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,11193.409846,31.892980,37.155298,38.884536,11.529062,16.532610,95.252235,93.363052,32.925217,34.710344,31.706315,37.065804,38.816750,0.092923,1501585.41,18.42,10400874180874624,104013233587,4193335011874172,51552039208,9e66075fa76d4cb1c3ca4d7dc02765cb, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,4198.822154,27.733668,34.629238,36.643377,8.393786,12.483295,73.927642,71.639905,27.175250,31.461173,27.573082,34.555792,36.585962,0.107010,1011483.00,12.80,7079326949768207,81097892781,2824843362365297,35728502727,37ab62d040cb2fb87c8dd7968a1e94aa, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1231.857231,24.465274,32.408365,34.729401,6.084197,8.844664,47.922834,46.072676,22.281638,28.555206,24.357211,32.343835,34.684585,0.119206,424396.33,9.71,3076264698651974,70573954333,1185159910605569,27088784100,2cb90c6a5561438f9ac21c0fd99e96c2, +LD,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,338.230154,22.170755,30.549004,32.937131,4.795206,6.127341,27.254199,26.113320,19.025510,26.093472,22.105834,30.487987,32.889567,0.135184,146444.51,9.03,1146155084516016,69041421255,409010564806462,25192030051,0ba23096d426dc51c9b2ad69dc604762, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,30326.578462,37.960966,39.709129,42.166060,10.722587,18.575643,96.396239,94.657298,42.246584,35.651907,37.707089,39.611416,42.134341,0.000105,1049445.11,19.62,7886740322615592,116854831411,3558133716081974,69355613780,593c9fc2d1df512d4a40156cc72f5da5, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,3824.781538,35.985063,39.120030,41.300728,9.297053,16.808260,92.121016,90.263264,39.253008,34.595903,35.936842,39.113820,41.293907,0.000224,624319.22,11.28,3600245901682140,59823321744,1614797586323652,31255917459,13cdce41ca5ffce2d01478cd0f473f6d, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,821.030769,34.631070,38.779461,40.541700,8.631976,15.717626,85.954015,83.754823,36.416876,33.895954,34.615738,38.778697,40.535347,0.001763,299666.85,6.39,2229600010028085,43284630218,836906046614077,17889459023,4648e14e0dcca8b8ac0efb3a875f60e5, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,311.544615,32.825697,38.222365,39.276899,7.739151,14.065189,74.561120,72.125890,32.782119,32.906686,32.799204,38.221582,39.272203,0.008143,138562.15,4.22,1066582686617197,30434133332,386953409237061,11748566743,7905ccf610aba6800ea812f68c4cc69c, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,123.596923,30.450523,37.351964,37.651064,6.501832,11.661794,54.616851,52.424738,28.696472,31.489821,30.422003,37.351036,37.648944,0.024755,69788.06,4.85,533489895588881,28842975355,239057901975325,17686982556,4bdda0b17407b90f57611d3300afe44f, +LD,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,45.252308,27.897453,36.280417,36.294067,5.210895,8.852666,28.551370,27.232923,24.898001,29.756540,27.876512,36.279122,36.293667,0.024800,32804.31,3.10,264210667236185,23546603173,91618824359277,8728476388,76ae72077e1c6d9591d1226de2eaa97b, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,4261.940000,42.564871,46.768493,48.547102,14.479290,21.779173,99.670930,98.853821,44.542444,41.594818,42.498759,46.730895,48.501723,0.139444,380729.18,10.79,2851363006439546,62803375690,1289217373048699,38755406178,b067d16860dea9b0eb27743565c55458, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,1586.723077,40.710886,45.319994,46.708452,13.158212,19.410989,96.605657,94.591846,40.677842,40.136869,40.675443,45.297925,46.673904,0.162838,286980.26,8.12,2065009861465979,53178560915,801456741020362,22711334411,5c568676192e2790895b5cad6d19c717, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,719.672308,38.384608,43.413131,44.408708,11.798195,16.728669,86.217000,83.805416,36.542429,38.331957,38.336031,43.381901,44.366488,0.235987,226425.93,7.48,1656614102227984,50660642239,632316600225176,20862068327,9e523f5f7892db33618c11c2977724c1, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,342.653846,35.688779,41.261566,41.874400,10.448453,14.086681,69.185765,66.579696,32.681273,36.174713,35.632335,41.223697,41.828862,0.372456,140043.68,7.88,842814243779316,43876437565,364880924341976,22276101323,ca84d6e267bc5e290382428b722bb216, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,158.824615,32.625722,38.901815,39.173912,9.067252,11.313111,46.804347,44.464831,28.923609,33.680830,32.566307,38.856404,39.118414,0.500796,51800.58,5.12,412728270641580,35545839531,144651607249245,14268407277,f1cb69d246ae81a45226b4567976c05c, +LD,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,71.475385,29.419867,36.648118,36.839519,7.801348,8.621885,23.272416,22.048928,25.444666,30.995591,29.356157,36.606928,36.787245,0.566698,31440.16,5.40,207254687138943,30118573906,84291980196711,15527588743,4e18c833133c9d38a95666243152206d, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,8464.923384,46.507674,49.499519,50.360165,19.138249,24.813195,99.511695,98.368909,46.691815,48.081409,46.425214,49.445732,50.285409,0.254626,233882.72,11.73,1703007644099832,73186348781,653121744922737,32684461908,a31b4ff17394a231f444c31bafbab305, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,4159.998770,43.476789,47.218215,47.684204,17.283773,21.923150,95.737820,93.514737,42.247006,45.639159,43.368443,47.153933,47.597299,0.282118,294168.20,12.85,1678040956692167,64187261888,761591205369825,35878239801,9563c86939ae9389657005919e0e678d, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1974.023515,39.971276,44.674655,44.814306,15.086553,18.589090,85.582319,82.846518,37.466716,42.790618,39.848360,44.603699,44.722917,0.358178,285382.26,10.40,1635873106692780,56294063916,741694647144792,29416001421,73b32790dcd4e8c5bbfdc6e593f2ec02, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,913.737340,36.447335,42.346085,42.107827,12.992647,15.333955,68.396841,65.500037,33.066123,39.863282,36.320435,42.272892,42.022828,0.444999,125552.80,7.48,962890108612065,55792043296,350641810112090,20877780432,ce28fd04bbe09260fe656dd8e6a507f2, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,394.387151,32.983050,40.211073,39.629121,11.211482,12.322439,45.615205,43.018700,29.089049,36.811496,32.854846,40.148709,39.554499,0.495526,66474.80,6.83,527086913515588,48916005935,185678337350250,19091576579,86b2fbc76611a638c7508b963b112444, +LD,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,157.821256,29.734247,38.560832,37.509050,9.868249,9.726578,21.679217,19.680926,25.627285,34.059802,29.608349,38.512118,37.455780,0.453039,40494.48,7.21,259797480110240,39059490045,107980887069336,20067565707,a419f9fde45c162f28b3ba098e06acd0, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,21415.118462,41.107546,43.834171,46.062479,14.340135,21.972658,99.972194,99.964077,43.548381,39.267917,40.999776,43.727608,45.974605,0.000003,889768.12,19.29,6077321797726400,124640941793,2484908184805873,53894011265,8a3c634b649f318b31239f04619fe141, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,9934.403077,38.042491,41.447045,44.065627,11.935295,18.132019,99.890448,98.772097,37.436484,36.813749,37.955042,41.392716,44.025997,0.000015,1112036.82,20.29,6111906300197130,108056164998,2859874724132073,55967710277,f59d1f48d8a5070c6bee6dc3f4522275, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,4453.769231,34.707620,39.438657,42.422604,9.539369,14.208394,82.866284,80.822725,32.124945,34.353542,34.615226,39.404198,42.399082,0.000069,888526.82,13.35,6164290294752588,92836429802,2481374198457407,37315475813,3fc1f42947caf8250abe5219318551aa, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,1858.007692,31.369680,37.717839,41.024277,7.438722,10.581386,55.739590,54.078203,27.719136,31.822937,31.276559,37.691949,41.002955,0.000511,418315.69,11.10,3021079747198764,82245381937,1168257379939524,31094645857,c3b4de1ee9494650d455645ec0bd6f5f, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,681.915385,28.206699,36.726236,40.192124,5.843917,7.435609,31.326299,30.451364,24.109274,29.548801,28.123759,36.716165,40.182882,0.005315,163538.92,9.00,1255738429196389,63749593546,456744952566624,25117023470,5b52c5e2db97a1d65a604db214aebb1f, +LD,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,215.844615,25.382936,35.984055,39.636045,4.798353,4.976356,17.070151,16.776687,21.227146,27.309149,25.319328,35.977428,39.631734,0.041619,59213.86,8.65,473745023873091,58710412859,205509380337255,32446425406,2e7ef9de36c9bd913c063964ad687858, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,110,25513.641435,41.020162,43.914334,45.162982,15.633277,22.445032,99.313002,97.897968,44.000642,39.378368,40.785826,43.794121,45.058108,0.004107,905870.09,29.58,5051784465672308,122096273489,2346825967939435,79733443516,9ad517f42bdc0c19b25dc1867f9db740, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,135,7757.020211,36.875488,41.564622,43.069596,12.836110,19.052093,93.245551,91.290671,38.464873,36.701607,36.731674,41.505895,43.022909,0.006159,830355.94,16.01,5774580385877635,94873785921,2318986077972788,44713289210,005c03fdf9a4fc2ed48231b60a3565c0, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,160,3024.534850,33.727867,39.412495,41.121609,10.721847,15.753754,80.873513,78.788167,33.167232,34.447395,33.642847,39.364496,41.087026,0.017701,707713.38,12.62,5029054006128092,83269806564,1976818612621117,35252406496,7cb6fce715c717e3d5c18328dc098923, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,185,1244.021824,30.419392,37.336539,39.245263,8.579572,12.314968,61.361731,59.455182,28.230782,32.034427,30.332219,37.291277,39.214159,0.084716,445718.85,10.52,2607776486674003,58026961217,1157874835383899,29628035456,705db51d775c23cd41ad078cefbe6173, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,210,453.148697,27.093709,35.454948,37.387340,6.663283,9.119645,39.432591,38.066044,23.875330,29.583617,27.004775,35.421802,37.363335,0.281536,199640.15,8.05,1210521105008286,38174380491,520794816799108,22863614498,326f74922a5c6ae4514ddb6d07f28195, +LD,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,235,138.367479,24.115857,33.531600,35.580455,5.161901,6.381644,20.539101,19.898439,20.335410,27.160769,24.050204,33.510247,35.569349,0.425241,64449.58,4.50,518903572030116,25221163284,221835695045524,16598452370,ecd751ea03c82e8de87c8c8a03e3d852, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,110,2289.587077,49.028910,55.613607,55.946808,20.728662,25.620717,99.872194,99.536010,47.833370,49.281945,48.843708,55.549103,55.874868,0.679617,272940.35,11.09,1611318675564116,58546558469,709754472420810,31190595542,e7205a08a09543d2a1392277f6053495, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,135,948.912000,46.573243,53.077263,53.547766,19.295696,22.794489,97.611746,95.977204,44.178317,47.068379,46.284771,52.992979,53.456377,0.710828,172813.99,8.58,1267537967694554,58587385262,482611848317457,23970907896,ab69504c57a527b00e7627cee6b960b7, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,160,383.942769,43.753948,50.216102,50.756012,17.961369,19.865264,87.907426,85.126948,40.505143,44.478747,43.439464,50.111529,50.626556,0.731338,127200.15,9.06,767957601581736,50672564024,332595358524966,25211799248,b95529f5f862fb9afdcc9925d0025d4c, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,185,166.449231,40.765762,47.208485,47.959892,16.891006,17.115474,71.947100,68.756269,37.084267,41.647391,40.520323,47.071608,47.803614,0.729270,52134.56,6.18,411521433664946,44307673506,145595264284328,17251247818,6ba696acc94c3b1520350a44703a6450, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,210,74.143385,37.530288,44.533221,45.469223,15.882560,14.506880,50.826312,47.944257,33.725450,38.777383,37.344764,44.367099,45.257920,0.669622,28735.91,5.06,230105793046076,35953618996,80254096127211,14143486572,4e1b436cce6bf035e93115e49cb6d738, +LD,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,235,35.045538,34.166425,41.717901,42.654334,14.791992,12.086042,29.236543,26.982236,30.371360,35.740230,34.017817,41.574072,42.466541,0.653948,21208.47,4.62,135768035748683,27001644036,57963596909143,13214365443,2f5ca1b2421e41c0085c637d14f2f84c, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,110,27214.354876,39.680898,45.848615,44.126095,14.628771,22.343454,99.974690,99.967602,44.342784,39.030001,39.494443,45.821105,44.088018,0.078776,726152.87,22.71,4018096537452631,99355193875,1878775873675837,61241278322,8f9783e926ba984b1116b6ef64811b86, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,135,12302.083148,35.283680,44.370572,42.581043,10.764665,17.461055,99.622994,98.540742,37.532744,36.322572,35.122833,44.352172,42.559190,0.118889,967288.16,15.63,5646326491173149,77482487626,2696371154102166,45581298706,6c06eead0a9f9cd74f29fcbed3321799, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,160,4621.841543,31.494525,42.718424,40.870135,7.641148,13.015715,84.499688,82.488454,31.296120,33.690703,31.385834,42.695045,40.845589,0.162732,970511.57,9.12,6775570186239435,59580747197,2707592840235407,25477404442,251f2de50c09f1f1789cdc2a0d3b524c, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,185,1586.185507,28.546285,41.047607,38.986846,5.671805,9.688744,60.529461,58.680084,26.591048,31.414523,28.474187,41.023616,38.957080,0.239942,428046.74,6.94,3056852724603604,48278635976,1195394859741320,19426856080,857a47f35d9883d962059ac6344b9a33, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,210,508.712211,26.110567,39.681483,37.619620,4.473262,7.360918,36.273568,35.058703,23.035630,29.316095,26.060020,39.649508,37.604954,0.318085,195360.72,6.52,1165546573267864,39788795482,508997373759607,18516485345,07c6b736625106b737f4c4c5cfed36b4, +LD,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,235,144.433413,23.903229,38.646132,36.934007,3.681799,5.472175,18.023679,17.380865,20.255970,27.429684,23.865446,38.623291,36.928875,0.359762,52091.24,4.71,418141949479947,34865562952,145488389739994,13162805852,8048c947c788c83c36edc124b5bce8cb, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,52919.664000,38.903415,42.774484,45.225132,17.319273,24.764327,99.976733,99.970284,45.884207,41.191383,38.673435,42.614790,45.149451,0.000058,911342.39,29.08,6442970353509310,169813676477,2545002142712264,81176966711,a841e1c227aa3fc5961e9fdccef45461, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,18754.637538,33.731991,40.178467,43.281792,13.097291,19.663525,99.935235,99.834586,38.601468,36.884834,33.500301,40.042267,43.230686,0.000069,1484305.15,25.45,8337282926529411,115509645682,3842113832787256,68712547669,d9e2a94e96a06b27d1e528ff75523039, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,5199.550154,29.476237,37.890570,41.424831,9.616961,15.457515,96.735248,94.929200,32.265165,33.196984,29.282695,37.785796,41.384027,0.000340,1106445.04,10.60,7995975266265457,66426396887,3089900603777087,29574099453,f857c92ae89b393584e1d398fdf97e95, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,1800.804923,26.224017,35.830487,39.766310,6.643370,11.558109,81.342364,79.072535,27.036519,30.217035,26.072704,35.751797,39.729453,0.008088,583424.15,8.82,4337232949426462,47803325724,1979007915275659,32154211618,8abde5f4d075b210555eaf815ddaef11, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,564.199385,23.301985,34.032915,38.199763,4.057808,7.721549,59.693676,57.918527,22.389306,27.436013,23.193004,33.979530,38.154551,0.039096,371274.60,7.15,2201188447855496,37886622738,965646459361342,20177524432,ee126529c1852ead9dca805cc9669cd3, +LD,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,137.536615,21.236740,32.379243,36.462107,2.507554,4.935260,40.811306,39.613235,19.141095,25.330308,21.180589,32.333543,36.402336,0.118704,155551.02,5.86,969370705025853,35478253078,407915420902372,16844151969,5d805be46329d647a8d4d3a25e274fbe, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,19098.278952,41.813094,46.892335,49.642528,16.723616,24.280084,99.978455,99.973654,45.995655,42.918685,41.705197,46.852279,49.624349,0.005371,437332.82,15.71,3143240121387590,96949494474,1221323091413425,43851953547,2ce067582af167bf543cedda0c570502, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,7598.234381,38.714327,45.268227,48.288567,14.588461,21.396155,99.973808,99.966421,40.803133,40.689351,38.615292,45.235805,48.265573,0.005510,430387.45,11.50,3059612519363302,78593538126,1201879241281717,32125430234,2492473a95af810ceb0a7890cd70ff7e, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,3089.236917,35.553875,43.401984,46.589987,12.399766,18.382012,99.961215,99.950237,35.460932,38.233295,35.465587,43.358529,46.558001,0.008393,468822.01,12.46,2678475612034481,66182505483,1217147627445385,34903465164,ca0b4dea3a983863ef7d86a56803bf07, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,1405.160993,32.609751,41.597720,45.132363,10.968318,16.260848,99.020875,97.357412,31.033194,35.938804,32.530088,41.552324,45.102210,0.009023,244704.58,10.28,1435306091692264,57415541619,637426528949759,29061263419,6bb30f05a158885b9d0e4ea839002767, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,677.805886,29.475718,39.772866,43.449004,9.532724,13.848785,84.592552,81.828951,26.786278,33.375614,29.387841,39.734383,43.414730,0.009680,98544.84,7.37,773253984926120,53023960226,275187883813711,20599396709,cbba75e4f8a7f8ec82052a34d118799a, +LD,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,326.070237,26.097128,38.134117,41.103479,7.897327,11.055702,65.152770,62.506212,22.655415,30.502313,26.005873,38.119405,41.082675,0.003731,56452.15,6.21,459695752701977,45950091818,157685007043613,17395547789,27a50f5db7beb5cd523088b02c69f59f, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,110,3311.802659,45.426799,48.560976,49.695437,20.342314,26.713775,98.737670,97.411601,47.134638,46.539863,45.338552,48.470310,49.607535,0.035927,227640.06,10.17,1692704098854283,68076995901,635744833391667,28463372594,32e2d1aa735488aab65a7bd513a4faaa, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,135,1204.252978,42.779045,46.391083,47.730794,18.611661,24.184757,95.743938,93.604299,43.020220,44.344775,42.720021,46.336431,47.678735,0.089057,174157.15,8.94,1285414968167105,57096468877,486342997671326,25068049289,f0b986ef5340e615fc98acb04423b6b6, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,160,513.053716,39.723922,43.698844,45.293480,16.483503,21.138964,88.970467,86.422535,38.419541,41.650849,39.666059,43.654040,45.232153,0.153854,146891.98,6.75,1101196355067514,49143498377,410222446583531,18855186892,778df971ac7527ca32b29da06217a95e, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,185,237.290709,36.419991,40.855975,42.506585,14.121177,17.791505,77.189546,74.391765,33.883346,38.600037,36.357178,40.826434,42.438865,0.295354,85554.35,5.06,667252068723876,35469123348,238945599762257,14148139471,7b6f94dc8bbe24356450ba1c5b178489, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,210,107.827557,32.888843,37.762250,39.568137,11.724345,14.325747,59.651522,57.007621,29.519667,35.315136,32.828465,37.748418,39.475517,0.280952,48128.83,4.02,383630704053681,29133209775,134430521103646,11192541328,1c9a8e6b89f6421cbc20e11e85654bbb, +LD,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,235,47.223546,29.452925,35.008423,36.028803,9.628115,11.041492,38.839484,36.969612,25.584103,32.051741,29.397542,35.002258,35.864948,0.252030,31313.84,3.51,204479734103672,19553075913,82952119607272,9983299258,1a3097bed1dd159dba6070038a8bd784, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,4735.790769,46.281607,50.627981,50.554730,19.836037,24.880635,99.946922,99.495811,46.038900,46.493562,46.191207,50.554917,50.487299,0.270341,519317.76,16.68,3033921301768280,86591889974,1350609390664726,46326307530,bb2bb17fdf4d443f67727d7408cb29ce, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,2129.412923,43.275345,48.551157,48.656079,17.907400,21.836143,97.622185,95.519019,41.971189,44.328694,43.188068,48.498946,48.613527,0.285117,400647.83,12.80,2970541837385445,77308476259,1361443190343947,46814195827,1d7f34e66a193f83a4a75fb242cb627f, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,988.074462,39.840389,46.131787,46.330024,15.668664,18.473888,88.792295,85.831109,37.564999,41.715472,39.748346,46.074843,46.286436,0.334234,268928.96,9.35,1988200217701314,66494853528,751077341098954,26125288760,9e169e79a7fa7b5d6e0b1428221b297f, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,472.115077,36.346861,43.731042,43.763996,13.526327,15.214753,74.265563,70.797665,33.318686,38.933549,36.258776,43.672749,43.719415,0.366145,190644.62,9.72,1155913968621485,60351286286,497958048916612,27663106854,86c2a8a8ca14c37068da745aa9db6bc6, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,221.617846,32.841745,41.264238,40.966059,11.715445,12.252721,55.573556,52.133180,29.315860,36.018498,32.756985,41.200475,40.900922,0.363796,81542.31,7.96,650648916305626,58386860314,227703002296970,22238056155,4c623c3a8bf6dc5bd732798a8c72403d, +LD,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,235,100.480615,29.402993,38.546830,37.930754,10.306441,9.812852,35.142507,32.295732,25.575073,32.953458,29.326256,38.470178,37.844543,0.409268,46909.82,6.57,382753317611410,49751763098,131008227356176,18430611098,bdcff162497371478d6f08f6c24c06f5, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,4210.087385,42.572503,48.653894,47.608561,17.162606,23.603095,97.020324,95.511279,44.266535,43.290079,42.116259,48.590334,47.495733,1.250646,314399.39,5.13,2211548983748991,29788361167,1060688298747265,18205228000,9ff254ff58cfed96300922c9555bf674, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,1736.490462,39.568631,46.903892,45.466031,15.053714,20.384933,91.431028,89.513101,40.037319,40.881679,39.047844,46.849623,45.332120,1.284787,172036.26,4.00,1183762462485845,25205900845,480438532032202,11203348774,9b3765388368d665d75372c9000ea64e, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,711.121846,36.412973,44.773181,42.998448,12.829518,17.036731,79.838599,77.719656,35.549533,38.214621,35.848642,44.711839,42.821841,1.443236,167519.07,3.73,920756588635732,19597223766,433482807704286,10405031299,d48b3f21fc0679d871deed05a0129232, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,292.379077,33.324337,42.429022,40.316826,10.661329,13.873551,63.658961,61.608118,31.477317,35.462596,32.761267,42.360896,40.063925,1.600518,81776.21,3.02,458093190713070,14438438364,211742417934084,8558477016,5c6e931a297a3d7886c2aa0e5f82a5d9, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,108.583385,30.188816,39.896360,37.732344,8.536609,10.782169,44.486677,42.882014,27.636748,32.568205,29.605302,39.828968,37.363116,1.924777,28849.73,1.92,203421790022038,14053855061,80566115469722,5368870257,04f91520e615bf4c6af6ce3882cbab1c, +LD,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,36.326769,27.315154,37.096456,35.069270,6.903573,8.030828,27.713055,26.600031,24.122836,29.738748,26.726105,36.979748,34.588172,2.237129,11570.54,1.71,86651523266923,13287095692,32320354231009,4775856816,1ee6e16e876875c1e87a346ab6fca61f, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,8787.677553,40.980394,45.032492,44.184551,16.335388,24.562373,99.157181,97.987452,46.497233,40.300065,40.836304,44.978301,44.149890,0.000544,668032.82,8.24,3666548764991914,39112788586,1729986218085896,22547726645,6718ace4b971194ff07811c443820171, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,3343.220472,37.390186,43.188810,43.046198,13.531171,21.019145,95.817900,94.129605,41.269810,38.156035,37.266173,43.129797,43.021553,0.028948,374332.84,5.95,2102429360741966,32901764933,970218061329729,16457146977,87997bd6acb93c96c2b9129dcb50be01, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,1229.962653,33.989254,41.096167,41.589289,11.090204,17.807341,88.452183,86.365554,35.816403,35.864892,33.882762,41.013940,41.544600,0.232010,303647.29,4.56,1733935497113274,26280641932,787534519530433,12858408215,004535dc76c5048b412466c88cce8f43, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,463.729501,30.931696,39.149919,40.084093,8.922298,14.855063,75.501565,73.100209,30.864666,33.545436,30.847570,39.075745,40.029722,0.383478,129117.49,2.80,937583321312087,20221030940,360610833756664,7828969994,1254d16451df6404319b9064c737b2df, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,179.156228,28.137032,37.128951,38.503913,7.032721,11.783987,56.918575,54.526516,26.396359,31.241460,28.070448,37.073501,38.449167,0.402287,56953.13,1.93,446420517203468,13784565613,193974550490604,7075775237,a14e54dff7626f8da8b8bc2b25a50139, +LD,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,70.810420,25.512994,35.211155,36.940809,5.567168,8.918099,35.096584,33.015673,22.544509,28.854428,25.451399,35.158574,36.893590,0.233959,34626.54,2.68,220765912964165,15704971043,90687249088094,7348739988,03381b51c699ff21439ec100c95ad9ab, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,2371.166769,43.439286,48.788170,49.427197,15.575965,22.336342,96.627619,95.261799,43.842526,44.237920,43.378958,48.779549,49.420210,9.532847,329493.96,3.76,1856542428701575,17938396509,852691221793446,10370937996,717ab412175d484faaf2509a75a44a83, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,585.972923,41.982915,47.921328,48.531593,14.745165,21.090139,94.953008,93.237346,42.094990,43.307645,41.962786,47.914441,48.523901,11.021892,86447.59,2.11,646927441635093,13082876519,241406598866119,5933383587,dae117416a78706d10e34aaadb09d663, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,218.592000,40.271571,46.582856,47.026506,13.807848,19.620225,91.580450,89.450355,39.703643,42.129784,40.253175,46.574428,47.016864,10.942881,54003.20,2.21,325134004964049,11358302099,140661982949197,6268392630,48637b41e85493c678c803b815615c66, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,103.536000,37.967728,44.788255,45.105021,12.527801,17.695181,85.024381,82.439371,36.576986,40.468375,37.943415,44.781631,45.099199,10.838700,21830.19,1.46,171780417078806,9864575783,74644609512479,5408300749,7e3148504b36f52001511ae35f9c50df, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,50.580923,35.034731,42.247722,42.781900,10.849892,15.227418,73.690416,70.529775,32.760119,38.202321,35.008492,42.242105,42.776934,11.355032,11715.96,1.78,96107921706875,8731049603,40406869416095,6670993677,224b03b3ac16940f9cc95108476ad246, +LD,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,23.922462,31.884262,39.283437,39.607873,9.325415,12.765403,57.252433,53.661092,28.795554,35.595982,31.854094,39.280496,39.604164,11.059466,8713.66,1.76,55491846752861,8881331925,23310414513009,5016315844,64bb15b20d143f1e2f7249520b27b442, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,2457.456000,43.964813,48.317462,49.228848,16.276011,22.907110,96.794303,95.485101,43.960662,43.707935,43.911148,48.305794,49.219925,7.653172,291326.04,4.05,1644649971492764,20121405196,752722049197931,10998827085,bfdc99c89504315af1f9d6b0805e7bf1, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,730.486154,42.188592,47.263755,48.157143,15.308785,21.240560,94.954546,93.237726,41.743657,42.631553,42.158044,47.252968,48.147337,8.617440,86200.25,2.45,647044639738719,16272594078,240750458744551,6869167382,781ece76ae60ccb86bc6bdcbfb25257a, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,290.440615,39.997508,45.615670,46.465000,14.169317,19.181684,90.983300,88.773909,38.781695,41.200184,39.963930,45.601846,46.452421,8.845234,50302.95,2.13,376689281055455,15001294919,140406143786028,5930253858,9b8e507abbe94560656e008885701bb4, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,135.703385,37.371007,43.644960,44.529473,12.851446,16.875032,83.252586,80.646566,35.417403,39.369070,37.334164,43.626613,44.514565,8.669385,35720.06,2.13,220575159034915,11584311645,93458259881550,6030137286,901a37ca9441a68b84eab260851c6691, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,63.924923,34.263948,40.967473,42.021269,11.347709,14.349327,71.946504,68.609260,31.613713,37.083895,34.224422,40.949687,42.008887,8.225632,19368.91,2.08,119608120189794,10990291918,51067989767509,5788405573,6c8deabde43e340c829e3058f24952ca, +LD,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,30.480000,30.829858,38.305182,39.251464,9.666323,11.671533,55.999704,52.532342,27.623334,34.301448,30.794698,38.283888,39.244791,7.099945,9720.99,1.58,62854304210690,8465130991,25937972561855,4496233129,2f1122995eefaa7d541a49a52ee5e792, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,4896.593868,44.130918,45.845022,46.330299,18.618046,25.767909,99.975784,99.967200,47.111555,43.435653,44.049430,45.789803,46.297216,0.027110,438034.97,5.77,3079628038868769,32769251426,1484547859696466,20656373810,8770c83f907ec5741317030ee5acd1fb, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,2123.209713,40.705763,43.098601,44.241516,15.751732,22.193362,98.905454,97.177134,41.707844,41.012797,40.634829,43.027951,44.198349,0.054091,304105.80,5.19,1724322150713692,26505928078,788604495501634,14359802879,206c779bc241262fa59e0d50e6107b32, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,924.803197,37.141460,39.978457,41.784915,12.800324,18.398973,89.794433,87.382909,36.204723,38.223430,37.069711,39.890162,41.714808,0.088977,220826.56,4.23,1268919665984797,23060209374,573440484177862,11773930416,0355c314ef8d6d172eb33ad20cabb750, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,415.253669,33.783883,36.895548,39.373166,10.307167,14.782134,72.394183,69.913871,31.249883,35.476237,33.709540,36.789554,39.291723,0.126078,92709.23,2.58,704422688157445,18583577068,258888749477511,7254780011,ab332b0be5aa5452da13d0302f391057, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,182.059172,30.495212,34.120146,37.136641,8.224795,11.441667,49.073838,46.725371,26.896457,32.673953,30.421376,34.006422,37.045518,0.119482,60158.40,2.85,373712134546298,14806971208,157512464171056,7878934386,3af4928f44fedea663d264b956ebff7e, +LD,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,76.122032,27.359435,31.489245,35.116188,6.595127,8.468319,23.440329,21.954288,23.215416,29.950552,27.292774,31.364384,35.006753,0.109873,30375.22,2.15,202438683618036,13076789227,80446120537941,6129129440,3bbfc7506ef92f9684fd4b3f25ff5ad8, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,3025.628308,44.059718,49.330635,49.281045,17.652912,24.278710,96.115084,94.343252,45.017350,43.582958,44.001796,49.321812,49.269283,1.951597,206138.44,3.18,1458366419187048,17614129203,575689547883137,8937064089,799a5266bab63ec6fffcb7a4748164bf, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,925.200000,41.906972,48.546735,48.198899,16.659357,22.643990,93.101938,90.932454,42.646192,42.361326,41.874428,48.537606,48.192494,2.064960,88285.77,2.44,628660824153991,14994829072,246585954808107,6886462995,50edceaba2a0f894afa87793ab5b647b, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,364.777846,39.516223,47.395430,46.769960,15.525288,20.719520,87.947762,85.363640,39.334166,40.912845,39.484544,47.383647,46.762621,2.865816,67252.51,2.44,390743778760892,12247121578,174650165856176,6832423670,67b43d87772fd83b6b66eb883e1c4873, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,177.984000,36.526493,45.899277,44.804879,13.803390,18.113457,78.154323,75.419259,35.090319,38.951144,36.482381,45.884248,44.797246,3.496602,31360.38,1.56,226864633731439,10714045832,87579845578650,4376912044,6cb83129563906509150ed14256286e5, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,85.092923,32.960926,44.174290,42.294474,11.422898,14.657998,61.040156,58.107865,30.328686,36.277157,32.919248,44.165801,42.291418,3.357300,23499.41,1.93,144134140740914,10855989776,61591685909613,5468487343,165b4a745f9fc559f25ed579b87d675e, +LD,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,36.498462,29.386339,41.888337,39.742826,9.036216,10.872904,37.966853,35.389397,25.919860,33.358137,29.350390,41.887159,39.741683,3.048922,13736.80,1.70,88363909227790,9482308610,36298992246095,4859217089,a11eb13c3e75d019bd4b1f09826426a6, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,3291.323077,43.598488,49.122696,49.487527,16.426182,23.478231,97.044010,95.474412,44.525969,43.491752,43.506703,49.109759,49.475074,1.498382,312959.19,4.31,1737929537078338,20400516202,809777020403001,11796676966,0870ee058634d729a17dfd445fbd4d2c, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,940.320000,41.454134,48.097641,48.472609,14.970835,21.225035,94.528919,92.477710,41.565062,42.191595,41.389964,48.076153,48.451609,1.738707,98006.42,2.64,713568588677957,16135442373,273735054993806,7400978218,79f4cf61c80b84f661a668c848490259, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,361.827692,39.164965,46.631967,46.923771,13.450328,18.703016,89.855388,87.315103,38.118158,40.583299,39.097696,46.600181,46.881477,1.987298,57583.72,2.07,427926072613649,13518493709,160861620266250,5798208486,4447a454db07143a529572f4af162851, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,165.548308,36.458703,44.713003,44.858216,11.874593,16.029310,81.269009,78.320912,34.385926,38.505852,36.376285,44.680469,44.796396,2.200434,31494.39,1.75,243302727087930,11217730471,107319560839594,6415844086,e1f21daeebe3dda11d57827cbc26ced9, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,76.508308,33.377121,42.455331,42.198385,10.200228,13.318895,67.836733,64.386065,30.425992,35.980903,33.275607,42.412838,42.123949,2.143029,16298.63,1.24,128812559231366,9096578424,45515417923745,3467678579,40180cb9b57a69410b9b9f5e7465b343, +LD,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,35.121231,30.323905,39.772539,39.161628,8.875168,10.808172,50.259107,46.523438,26.754712,33.153864,30.229932,39.734096,39.086500,2.295233,8860.93,1.38,72235010463436,9123885170,24746749288170,3846693000,757b9dfbcdc2fee37a7e4ce5e2a3163d, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,9062.804308,42.680900,49.619202,51.139657,17.120628,24.442396,99.978580,99.974522,45.361648,45.356431,42.530533,49.578374,51.103572,0.183592,425544.88,6.87,2954613202504146,38311682861,1434830916966928,24296901101,93bdb90b28883376a5fb6088b5a7f4f6, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,4291.992000,38.845781,47.852769,49.274812,13.996169,20.214221,99.975980,99.968363,39.628257,42.289512,38.698845,47.810368,49.241936,0.224787,387779.72,5.82,2745948624254607,35500708010,1306900869986778,20804741744,fb693464a9d73ec29e3bbcb5ccab02e3, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,1732.838769,34.986464,46.038589,47.611170,10.920621,15.797793,96.634376,94.729324,33.737594,39.067631,34.841946,45.987178,47.581142,0.467530,501443.33,5.64,2772837028115964,29584999413,1298221173669684,15689919281,4c7c5805a46a186baf9daf078aabffe7, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,603.520615,31.593950,43.787398,46.268858,8.556835,11.850706,82.593025,80.318861,28.923954,35.963102,31.455238,43.727148,46.233894,0.859187,220972.50,4.19,1250963279198062,21621582635,573227803198640,11770811544,5c531a15ba2102a4c885be05075c7826, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,188.627077,28.838703,41.762076,44.765910,7.157343,8.800185,66.974906,64.715651,25.565285,33.067553,28.731642,41.703227,44.745439,1.573765,79795.35,3.17,492246586582970,18132832500,208825392076514,9072683089,fafe98eaa2c6e52a71431072094830fa, +LD,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,58.938462,26.397735,39.270770,41.912131,6.400731,6.638867,55.314011,52.899634,23.113909,30.539112,26.322918,39.222455,41.889879,1.906139,27379.65,2.29,179978292443473,13564913787,72561517443555,6541410032,b38621a033b84bf8d121c61221916ccd, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,110,1156.918462,41.768665,42.715451,45.079684,20.102297,27.209283,99.977122,99.971380,48.425253,42.277053,41.504789,42.447279,44.913295,0.030756,157640.15,2.30,868552602660316,11692030329,408186223025362,6257223028,c6a7a4e9074cfa27f9c4bbbbe1456349, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,135,424.703077,37.682800,39.856013,42.783989,17.251770,23.940128,99.781973,98.967525,42.954013,39.492925,37.411659,39.643902,42.671018,0.069958,89272.13,1.95,499008369600572,9598519331,231206816739360,5308577455,c0cf48e4cd0ca08b9f5feb22ccbd1570, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,160,158.240000,33.881013,36.999486,40.453883,14.262016,20.431285,93.479838,91.483872,37.068188,36.771866,33.627544,36.826671,40.357130,0.114187,50901.35,1.02,371379842673669,7329791920,172618442761954,3681032006,dd1a7a44bfcb0d5d47b4139c6b4d9cbc, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,185,63.878462,30.173819,34.769425,38.222239,11.353769,16.909717,81.301428,79.148267,31.657470,34.042602,29.919873,34.632050,38.103236,0.212698,37767.13,0.87,216676469369194,5014328946,97944895251467,2358862295,139dc4abc0256b3b286fad8d45418115, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,210,26.943077,26.584175,32.806670,36.346491,8.664884,13.272587,62.899192,60.950937,26.341120,31.283866,26.367569,32.639406,36.219476,0.125951,16459.32,0.58,122770648000278,4117034974,45977465681352,1671157893,d400430efafc8546c2773783b4e033f8, +LD,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,235,10.738462,23.217066,31.484855,35.036635,6.271760,9.459320,39.378171,37.916064,21.430456,28.463367,23.028871,31.338086,34.881092,0.186636,9220.15,0.42,72016469529403,3236484151,25747391283245,1206578038,d188c6bb910ab2bc74917f82b90652ea, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,110,6681.642050,39.897628,44.606382,49.247057,14.531162,21.543499,99.973858,99.965799,43.957842,40.435878,39.689108,44.524096,49.184301,0.246382,301115.38,4.28,1575563189102352,19359684557,778206223968584,11415163720,26d4f821fd92400507202cb7fa351236, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,135,3348.557904,35.051729,42.105237,47.413859,10.998606,17.174997,96.991088,95.254647,37.778769,37.087454,34.818253,42.036697,47.317399,0.231502,173600.96,2.52,1150146466939377,15667182596,482952905467556,7040001632,1026d096efa0932e33f93113353ee3bf, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,160,1217.638976,30.613938,39.761329,45.577740,7.943135,13.240863,77.011016,75.170980,32.096959,33.909386,30.404916,39.704811,45.458568,0.203353,289228.35,1.70,2064591954545961,11944009673,978952601974332,6007875907,c6d6c310a3d1bc28102023255d9e444e, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,185,327.066165,27.384494,38.075568,44.218433,5.795927,9.920981,47.291923,45.995004,27.296631,31.418439,27.248253,38.029655,43.972458,0.266134,149949.05,1.44,828025889812554,8288964306,387811250695563,3993492638,c90d34236612a73a167f51fbb7f59a32, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,210,83.857066,25.438051,36.327460,42.387119,4.758603,7.393165,18.818461,18.229452,23.701938,29.346465,25.362331,36.271775,41.972243,0.209546,37248.78,1.28,215863160767889,7525018071,96802670162952,3609342633,72e373b0fb14e9b68e1c16b9b2fcf237, +LD,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,235,25.137939,23.859001,34.873328,40.259109,4.259564,5.547406,5.008752,4.986721,21.231122,27.449366,23.800745,34.776703,39.948107,0.215816,7695.07,0.53,59186579039566,4216494975,21488975599928,1537410337,45b861fbbdf20e5beb36996ebe6737ee, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,110,571.763621,41.468796,48.975302,49.936985,20.103147,27.193951,95.272444,93.739189,49.104413,43.005446,41.331533,48.972880,49.935414,1.179305,84852.81,0.72,601175440671382,3753923411,237002122461266,2027484521,d41b2ac3696846e91d5b5f0c4c07cde2, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,135,182.284177,38.612974,47.408779,48.806206,17.785906,24.697824,92.902179,91.150985,45.309968,41.118717,38.561011,47.408161,48.805671,1.191067,26981.79,0.37,189141243860627,2110273040,75358384856438,1027925369,8544055ee4804334a13803fd415c2796, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,160,82.202720,35.549706,45.603798,47.278387,14.921581,21.634733,89.096451,87.015161,40.917232,38.823105,35.530930,45.603532,47.277930,1.259395,15811.58,0.36,109106912596332,1969404885,44153849767466,1038087094,a5d1de341f07871240a22ebda9795a5f, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,185,44.495812,31.988637,43.748281,45.730297,11.595199,17.959039,81.676483,79.550905,36.095011,35.999578,31.983369,43.748198,45.730168,1.042505,13898.67,0.32,78929774796985,1804113378,36017759553226,899352684,ffee47d589ca23906d1e9262366e3129, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,210,19.514639,27.589204,41.598428,43.377410,8.526638,14.112146,66.527479,64.336319,30.594669,32.505095,27.588371,41.598368,43.377296,1.027293,10296.79,0.29,59374291526782,1485157631,26786817997504,852446718,271878367ee691161535180813cad824, +LD,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,235,7.666795,23.881227,39.847013,41.368533,6.216018,10.756121,42.044747,39.874215,24.951247,29.428698,23.880908,39.846971,41.368455,0.716605,4926.48,0.21,36911590073776,1805817124,13758674799908,585074170,65f325b57c78aaf6225893bd6d018d26, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,110,264.418658,46.707930,50.061298,51.742700,19.741787,26.417113,97.844478,96.426371,48.446611,45.679211,46.577715,50.009329,51.669236,0.015790,33162.68,0.88,232262736931847,5265909984,92613841495994,2499974892,a892b1caa05f2e94e2f12f21d392add3, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,135,121.916238,44.174352,48.172784,50.276625,18.313289,23.938892,95.630786,93.564587,44.565856,43.976479,43.985329,48.092028,50.139197,0.057596,16549.65,0.74,119832623838182,4891320426,46214658473641,2107846400,a2b0d939502721846ce032203aeea940, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,160,58.888804,41.170251,45.795630,48.039364,16.741921,21.107697,89.927423,86.978509,40.301908,41.782251,40.965974,45.699638,47.841530,0.077179,11907.65,0.67,86216810500667,4061553013,40339079946084,2408252265,d9fa07cd75864ec83fd4825b92c26c3c, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,185,29.667563,37.931233,42.900469,45.659960,14.949230,18.134723,79.331414,75.816119,36.070385,39.052651,37.717919,42.798554,45.437331,0.075090,6132.04,0.47,45995305259648,3300787495,17131418926245,1305927122,a8d9a571f244b60beaab5f4851561b08, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,210,15.971721,34.715564,40.210366,43.038016,13.194759,15.049385,62.869237,59.295777,31.924361,36.187348,34.486072,40.113192,42.704031,0.064938,2860.95,0.35,22133311174473,2510408856,7990688854422,1016395658,b37607e17f80103e802907eac48ff1d2, +LD,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,235,9.048183,30.932306,37.461844,40.017117,11.212765,11.966665,41.432792,38.424053,27.617387,32.906175,30.703775,37.387257,39.692197,0.135689,1223.36,0.29,9572413364288,2154619350,3418536393279,813048832,b81c5993eccb94142d3ad8fd67160d96, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,110,1518.906939,40.044257,45.917073,45.421028,15.350377,24.199210,99.501575,97.875536,47.681757,40.366720,39.916887,45.886562,45.403334,0.000071,128990.34,1.30,928655828779591,7665086257,360225842193696,3623262202,36340f7efe39ddf50adc86509460eecd, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,135,481.693076,37.707834,44.128342,43.779333,13.771980,22.099877,97.341224,95.367790,43.971327,38.598024,37.666810,44.097547,43.762328,0.006253,69681.01,1.07,396494964988707,5924141701,180367729905141,2907565373,87a372b4ffaad95b8a46bb0724f3e73c, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,160,200.103896,34.974257,41.796013,41.457906,11.881915,19.576157,92.806524,90.555125,39.187581,36.433971,34.937545,41.764720,41.439414,0.032843,44027.72,0.93,252613533655576,5245314570,114105361709880,2573892090,e8cbe69986f3c72484b934dec569f650, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,185,90.987167,31.601896,39.767707,39.253875,9.367424,16.144535,82.856405,80.056253,33.683073,33.918293,31.567027,39.739034,39.235795,0.055021,19860.45,0.52,148804595417921,3396200163,67308935118903,1867205294,79118011b96851e659f1cc8797e8be6d, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,210,38.291555,28.048385,37.588403,37.156229,6.678025,12.167989,63.016303,59.993281,28.066327,31.019366,28.025480,37.553451,37.136261,0.056689,13454.44,0.49,80141755371200,3174181937,34966233728827,1368451924,e51c4fed8f25922c89620d72a22ddf73, +LD,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,235,15.370476,24.944988,36.059880,35.694365,4.564004,8.485068,34.301859,32.322090,23.316432,28.446749,24.927098,36.033813,35.679362,0.044017,4429.14,0.32,34818048800244,2296659445,12371151206090,911056003,d05ee898efd5067ca03299c16ede2fe8, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,110,859.276723,41.899426,47.540812,47.470345,15.949774,24.217154,96.859118,94.928630,48.174656,42.270364,41.822482,47.509706,47.437735,0.000000,95380.92,1.44,663443018105601,8463669593,266361950100549,4055166009,fe3b4ea94b333f3aed4da824352dce29, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,135,380.272650,38.565526,45.511845,45.136673,13.214663,21.063936,93.224196,90.865886,43.021677,39.899318,38.495915,45.482200,45.091033,0.000042,57423.98,1.13,417284285710430,7101513935,194405920048560,4036058675,33d1643c5ebb851078d63171e22bfc91, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,160,155.573042,34.718814,43.603081,42.732775,9.498738,16.388754,84.414898,81.898306,36.846672,36.899546,34.667187,43.573411,42.683303,0.002029,65302.80,1.11,369005617309175,6063680582,169203117500556,3104656460,7ca1d5513c8f89f5d87bfd53f90b685b, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,185,62.179052,31.318661,42.086460,40.367884,6.648450,11.778633,68.011794,65.595795,31.181001,34.228741,31.282813,42.070314,40.332025,0.019065,37071.00,0.85,214434274889176,5098467285,96137286431517,2351133380,213823b73a8a8dc06d2a48c91419c947, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,210,25.174825,28.611156,40.241901,38.436375,5.522649,9.000540,46.241560,44.518343,27.011982,32.208207,28.575988,40.229781,38.417568,0.969031,12297.97,0.44,95379732729774,3394501519,34351633999948,1263194230,0a88c3d52d296ac60887b10d0bb17b1a, +LD,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,235,9.531392,25.964070,38.500862,36.788885,4.894633,7.537545,22.879868,21.954016,23.319211,30.487262,25.925063,38.494063,36.778182,1.268853,5813.11,0.48,46551037215924,3524939631,16234448679618,1360992527,df59a6d398ae61b29a6b9b9cc095de42, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,110,601.044923,43.823479,47.155762,48.189220,20.161205,28.637318,96.727824,95.459187,47.910944,43.156191,43.726841,47.124125,48.148675,1.765349,27434.72,0.47,189410845997498,2505551376,76614478265350,1307311579,34ee357404fbde2121969f49051e9a9a, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,135,298.600615,40.385486,44.991425,45.771891,17.826673,25.706675,94.735832,93.137622,43.786356,40.909352,40.275223,44.958436,45.728211,2.010524,21474.04,0.48,119585916102059,2233382752,55627606494886,1289948422,4eb664da47286c1d2105e8ca54c2ea61, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,160,146.001231,36.560660,42.534293,43.151943,14.875805,21.983944,90.162080,88.071243,38.381564,38.241715,36.459266,42.507981,43.118024,2.195687,15495.21,0.26,106820327485084,1692271027,43276311751224,750449130,61c75843f7aa3979ea6e074396d1a25b, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,185,72.694154,32.738139,40.066696,40.490146,11.857700,18.111284,81.602859,78.989049,33.065167,35.256991,32.666431,40.053560,40.474396,1.563892,8690.19,0.25,61383724625288,1736623112,24268198086766,706654382,66609a71b16135bc622b6a50b9d1df7c, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,210,31.358769,28.751578,36.765071,37.527028,8.680591,13.750352,66.051317,63.148190,27.655604,31.783507,28.706775,36.759227,37.517787,1.899646,4374.51,0.22,31721412552756,1435857493,12216101357526,593898407,1f495ed8801f1baa40dd16d44b3d57e0, +LD,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,235,13.181538,25.213610,34.157943,34.700576,6.140395,10.055404,46.149667,43.496594,23.038764,28.842419,25.186819,34.154664,34.696949,1.896637,1968.63,0.18,14536765321578,1239684416,5499952006987,492197574,f429ef0f0697d7ec6c9326cc1f086ec8, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,110,5244.304615,38.930862,40.371714,42.441305,16.735128,24.755939,99.290576,98.245353,45.545903,38.528564,38.630848,40.107126,42.262669,0.718771,134622.75,1.84,923427367920055,9394752525,375960935200197,5157673437,a0bb59c783fe375cca01ee666b466d6e, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,135,2345.144615,33.518047,37.069813,40.147928,12.321254,19.914125,94.123569,92.102301,39.084465,34.562453,33.197431,36.871534,40.038771,1.119322,133794.16,1.38,908752286038076,7895168975,373646203422860,3842267552,f023901836ff7c003da9071c9d020bf4, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,160,815.464615,28.694385,34.599510,38.416058,8.289451,15.031811,79.946906,77.678897,32.244549,30.954146,28.378308,34.470204,38.329389,1.479066,211010.38,1.22,1181162785333749,5844442341,546906772921878,3276154956,c21c729e5f6adfe969f6b2b08b22febc, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,185,248.504615,25.250116,32.781817,37.274513,5.453783,10.943472,57.021262,55.176141,26.670995,28.253251,25.011913,32.682465,37.215749,1.739573,98071.46,0.68,553666866473412,3963746885,254263340914616,1906388043,54499439fe03c2257c7d6ca9bd904122, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,210,62.947692,22.820992,31.345262,36.260204,3.587928,7.631120,31.475936,30.459446,22.441469,26.053276,22.672880,31.279982,36.212140,1.803349,23331.35,0.34,166527480247572,2311276145,65159025300183,954669685,723cf23df44c6e9599797acb057d2930, +LD,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,235,18.523077,21.169276,29.874385,35.040926,2.642643,5.331683,13.177105,12.751600,19.409109,24.294075,21.074760,29.816477,35.016018,2.029279,6692.73,0.27,39734948375489,1572164800,17413314971217,789993316,8dcaccad924a7d19086423fe3a44b997, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,110,2445.038039,40.889689,48.993414,46.869365,17.211071,24.148516,96.004013,94.142396,46.835884,41.968340,40.743396,48.926751,46.798835,0.150456,111585.25,1.32,600830554574524,6082961502,289006091226377,3533189586,a0b25a0d1ca18b58c0e3923349baed92, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,135,965.507108,36.686329,47.026646,44.535290,13.686725,20.027676,90.571859,88.255594,40.794296,38.934984,36.543553,46.967131,44.471880,0.187280,79649.87,1.06,439438157362022,4805240106,206073371696050,2859105223,4bcd38f792eef9911f6acec5a89bcb29, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,160,335.004073,33.085896,44.856274,42.212445,10.411354,16.058227,80.044545,77.398839,35.244768,36.073762,32.964480,44.807865,42.152411,0.167215,57669.92,0.59,409961870107498,3650495432,161051311093200,1660663168,bcc8678a12c815767178f652509e5958, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,185,117.165296,30.064973,43.018786,40.014823,7.935406,12.611575,64.125518,61.282759,30.617375,33.529534,29.961372,42.986598,39.983974,0.181170,27360.77,0.32,198443053302466,2043647071,76407314894719,898793092,f99b61552657ff6fd3630cd98b147983, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,210,38.697303,27.340423,40.794086,37.671509,5.993655,9.655904,42.759258,40.344955,26.728961,31.060874,27.252277,40.776926,37.652730,0.136090,12011.95,0.25,71948741038738,1308291025,31205429148065,679530248,fc41189751612e17cd3c10eb7f15b060, +LD,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,235,12.220395,24.921452,39.323598,35.206132,4.171840,7.036113,21.328806,19.898125,23.460443,28.743165,24.854464,39.313339,35.186699,0.138877,3500.27,0.19,27723291742863,1520652661,9774366207715,547015275,8e4d44b7ad104a9ae49ce6160351484c, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,110,759.624990,41.978347,50.717184,50.448869,16.843639,23.980018,97.889934,96.601343,44.687179,44.022344,41.767703,50.507472,50.290043,0.329040,93674.15,0.99,670482905688321,5444180347,261626758266841,2775095024,e79a291d47f55c691bd9d12d1f287ba0, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,135,280.445708,37.846852,48.757375,48.358882,13.201130,19.874701,93.987379,91.713045,39.888044,40.851017,37.607540,48.476478,48.173051,0.479302,59277.07,0.70,430420671070555,4516724952,165551460886289,1930081437,42f3c8f46e5ead815a8daf0107e2af46, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,160,104.295704,34.359064,46.475687,46.332172,10.020120,15.567067,84.437120,81.786126,34.730492,37.821738,34.162419,46.053541,46.069475,0.632976,36435.47,0.54,266144526398356,3931101287,101758411347697,1519375635,e8233d0478be1f4850f0faf2b6eafb04, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,185,37.817567,31.740453,44.540400,44.401408,8.072966,12.381346,69.690681,66.676423,30.735750,35.462550,31.630770,43.862113,44.003432,0.773372,15183.22,0.49,114710156324176,3442910439,42411359604315,1376413198,d09d523c0505118afd8a2be9b02b58aa, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,210,14.431722,29.530225,42.576136,42.244166,7.040056,10.309571,51.195387,48.098290,27.548206,33.306343,29.421975,41.880741,41.948755,0.941105,5897.77,0.41,46983095253834,3177567238,16470517975529,1163897855,55142bfe865146d869b68696685fb6c9, +LD,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,235,7.013909,27.069792,39.957275,40.307276,6.156533,8.399983,27.725153,25.388625,24.310356,30.968092,26.845442,39.509329,39.986383,0.809080,2607.85,0.33,21428921070650,2355886905,8955448825602,1222961585,70cacc66f3a756e465c115af39d892fb, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,110,14826.687508,40.293485,45.362753,47.456094,13.473583,21.810636,99.552644,98.593846,44.690994,42.874553,40.108563,45.268304,47.383501,0.348029,1146096.67,15.49,8060225621392662,97926449823,3200656019402633,43249480065,7c5e3216c2ab942ef50f442b71ed3395, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,135,5836.132431,37.278154,43.041137,45.564037,11.494918,18.709867,94.108648,91.997223,39.588396,40.357552,37.191791,42.965163,45.508974,0.613722,852359.19,16.37,4735866065007845,78269549481,2209665862596718,45254533209,e9f3524e5bbb9818848031658fa8b510, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,160,2128.255015,34.110759,41.153928,43.853825,9.626508,15.397069,79.588726,77.317318,34.290239,37.775564,34.022275,41.104164,43.807123,0.654562,742052.51,12.03,4215369758441477,64792444442,1927195124561194,33544496669,651e45a829252edc70a1e32581d7667c, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,185,644.165908,31.025578,39.547322,42.266040,7.669220,11.913674,56.221079,54.326930,29.366961,35.270794,30.936690,39.512112,42.221256,0.737856,372642.98,8.46,2182382488704286,53898249623,968585262349566,23979868103,732a7d73d3ad36e55fe708da0ad9e548, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,210,158.292185,28.460828,37.952198,40.925107,6.130742,8.888889,31.916410,30.718587,25.565273,33.015165,28.392118,37.914356,40.887783,0.822015,135424.66,6.44,882020338453564,40478545431,381397600968382,19742827114,f2674a0d4c29cfd354e14f788a10e4d4, +LD,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,235,38.117908,26.631790,36.408809,39.315909,5.203087,6.803257,14.611355,14.169283,23.160796,30.991270,26.599013,36.379691,39.267837,0.800115,52108.86,4.37,327048412028557,25839436189,137892273702976,12506540623,09c47ed23633716dfbaa2b76da904592, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,110,79670.182154,38.941557,44.319172,45.934248,14.630334,22.838161,99.976544,99.970625,45.136078,40.121126,38.715939,44.255217,45.886703,0.016462,1114363.33,41.46,6218453343817511,168243498779,2890896040391040,112299922294,120055160d3ff16a39748d30ba0458f4, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,135,26491.022769,34.524478,42.036822,43.882958,10.944448,18.241024,98.136897,96.180097,38.275813,36.732374,34.373013,41.992382,43.845459,0.025506,1694564.08,24.88,9475221010231480,110947508093,4393742704573224,67937080068,4e67b935d4cf1cc7ba6ffca13d6dfb39, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,160,7141.794462,31.114581,39.963071,42.008328,8.185305,14.366444,87.203625,84.691222,32.430108,33.963305,31.036475,39.921056,41.966466,0.053242,1135329.41,13.80,8297116246356513,73267712384,3854612940874846,50181247602,5483695b87602a920e16afa7b65b8f7b, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,185,1890.808615,28.475566,38.034609,40.134274,6.061308,11.031130,70.880480,68.357057,27.795575,31.611756,28.429246,37.988786,40.090296,0.113206,605953.76,9.55,3531561759326385,52238029251,1574149565817909,26940146593,265af49f0c06c02501ea8280add702db, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,210,522.398769,26.308281,36.159208,38.301662,4.570450,8.307851,53.373668,50.963011,24.256865,29.502825,26.275403,36.123422,38.262247,0.123610,225815.21,6.99,1376060757220305,40333543419,588603959222109,19942947165,28ac188b8457508b5d43862329b9de04, +LD,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,235,152.555077,24.407235,34.205315,36.206929,3.649791,6.163288,37.419646,35.491073,21.521778,27.503660,24.382443,34.182173,36.168099,0.112044,64336.70,3.83,531159114096123,27911433524,179665397191182,10723574793,2b3e405d7919bc1d53d1903e1175c63e, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,110,4897.007262,48.649920,49.049602,49.286186,24.651372,32.337253,99.169725,98.110256,52.596319,51.249016,48.279464,48.473817,48.381483,2.688709,262571.26,9.76,1873146196575776,52912622603,733332895851808,27266912702,df0c96af3da9165e74f4afecab1056ba, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,135,2684.292923,44.726213,45.111628,45.381100,22.276906,29.062665,97.936390,96.057865,48.175371,48.349073,44.193840,44.354240,44.194193,1.595889,393550.70,9.20,2759454392853376,50835396608,1099032800093113,25674060679,e6ae5134c7670dc82ab4c3c053f91403, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,160,1359.894646,40.468461,41.305235,41.604335,19.128588,25.058897,94.056598,91.337314,42.562742,45.250366,39.836297,40.302877,40.151828,1.326037,357455.95,7.55,2533619570140724,45296737435,998192639135375,21112491840,1ad769b609d099ca0aebb495e8c103cd, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,185,665.621169,36.338140,37.799532,38.161595,15.801553,20.658958,85.234578,81.790221,36.667781,41.948098,35.699514,36.713470,36.615016,1.296211,328445.80,7.68,1853216398962398,42480438218,857603321230001,21838203329,fc235ee57d842351e819f983f2b76b94, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,210,292.234338,32.199738,34.363617,34.592077,12.406021,15.883834,67.114221,63.408874,30.689436,38.223759,31.649300,33.385677,33.053690,1.252997,144505.16,6.60,1052150099126012,46147313717,403575477910165,18435548299,e1a20469c7d4f0ce553a7e52064f48f4, +LD,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,235,108.889108,28.262253,30.972806,31.044793,9.418425,11.190198,38.608039,35.497325,25.266887,33.846172,27.874753,30.228471,29.505439,1.017658,61872.00,4.86,477273703707863,34595954610,172810847789726,13579542439,93a56b34b1b1f6ea3d7b2c4339a15433, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,110,8865.467077,43.179390,48.434116,47.995260,17.358220,25.640762,99.207665,97.891667,47.925908,45.345020,43.073830,48.390725,47.948078,0.312800,383984.71,17.81,2193845727418981,79341048138,997331469607609,49414813167,7d686455e125e84fc2347483e7b1c221, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,135,3467.769231,39.502305,45.717984,45.418303,14.346440,22.069067,96.256954,94.424946,42.870190,42.268380,39.432878,45.659922,45.356129,0.309014,379230.17,11.18,2728189288984162,64672478489,1059006342155870,31301215109,7a21a75fc92ae380bafa40c5929b4c13, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,160,1397.499692,35.893954,42.968165,42.635410,11.094433,17.951771,89.796479,87.334407,37.439160,39.036539,35.847498,42.895911,42.557024,0.321035,453651.45,11.33,2614992186198499,56014417521,1179616742065343,31673407730,a935967de9fcf513404b384c3087fad3, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,185,578.187692,32.608642,40.104477,39.584461,8.241297,13.958379,76.798282,73.799061,32.349171,36.036294,32.568558,40.014866,39.496070,0.406787,260074.36,10.79,1524075889828215,58052441533,677225400914703,31493144871,1e58e27c2d6bdb3b631ecd5b78e4a976, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,210,259.584000,29.912394,37.112657,36.511012,7.221707,11.588532,57.548689,54.374675,28.038756,33.634206,29.845963,37.004252,36.418070,0.442037,97928.53,8.34,766184823753542,56693962115,273475976004857,23467904849,849dda9ff998bd9bd9ed27feec53007d, +LD,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,235,109.945846,26.966711,34.136930,33.496083,6.301854,9.249293,37.198757,34.152687,23.941479,30.963596,26.880333,34.026067,33.420520,0.348855,49981.33,4.95,403268000224833,36981131657,139579945329859,13801382171,53615512ef3930aeeac7b656ecc5d15f, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,110,55720.966154,41.771014,45.071141,45.027697,17.097006,24.246127,99.835554,99.603869,46.112936,42.581186,41.449130,44.870882,44.812980,0.191303,928770.84,27.25,6487270859350418,126811633364,3163701923032750,96843514835,48f5af0e48272618eafedf58da4fef45, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,135,24725.261538,36.468589,42.859553,42.669261,12.192713,19.041866,98.913563,97.995632,39.437775,38.950474,36.135629,42.702683,42.502144,0.180441,2127317.61,22.90,11733499227264944,108674810967,5542993290986563,62589654786,87178e8a18f45ac1b37c5c3719b08ba9, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,160,7606.648615,32.269013,40.848177,40.386075,8.573380,14.460482,89.175674,86.669107,33.464167,35.557430,31.987125,40.732258,40.254422,0.230781,1651703.60,16.15,9307951660086012,72677780482,4302474826749246,44938182904,61e43da87c1babe03d2d3e5ec8c1fa01, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,185,2484.073846,29.531891,38.649263,38.118404,6.422964,10.785363,69.829004,67.444033,28.929741,32.848714,29.319959,38.553008,38.011517,0.237801,749520.75,10.59,4321628694892582,55701243732,1952387713286660,29901403269,08b5e1a45c8950fd544c871f3d300142, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,210,607.868308,27.043576,36.457098,36.065528,5.037243,7.738758,46.223813,44.533314,25.313392,30.364743,26.872050,36.384941,35.980731,0.263316,301921.53,9.03,1862598792123898,54027938489,790553359146619,25929328667,9a85e5d23eb0256a48a216ff64b75bfe, +LD,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,235,170.916923,25.218435,34.318502,34.131968,4.309906,5.559213,30.877296,29.882915,22.648970,28.230872,25.103770,34.279688,34.076493,0.442655,88808.42,4.31,738295771009741,28459219223,248074616292378,12037446935,d4c0092438d1738dda86e7790b618754, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,52411.159385,40.175998,45.591947,46.258819,15.884718,22.661746,99.739424,99.643496,44.369314,41.019601,39.744406,45.244299,45.939631,0.120275,823097.48,39.32,4503424260715516,156222922580,2137337494616631,106586989599,c5348b2a1c8d91ca9ab032abf3ad43b9, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,26661.708923,35.420638,43.150372,43.930485,11.818357,17.838962,97.852639,96.550437,38.111849,37.599424,34.865740,42.749696,43.595848,0.120279,1215836.67,28.08,6538197331282686,123435483205,3154183730626060,76221220637,25b84c625923218b3673318dc843e54b, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,11244.103385,30.980463,41.069440,41.870485,8.485758,13.358967,83.622223,81.434302,32.296007,34.318126,30.301993,40.664609,41.557982,0.174925,1506962.17,16.27,10538384405916408,89783405357,4208420381987784,45382564775,a956d8fc23bba7185d5a993d0837dd9d, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,2893.290462,27.065657,39.246130,40.046639,6.059160,9.769150,59.869408,58.004780,27.451126,31.365915,26.292141,38.850417,39.734836,0.361222,1190264.84,12.99,6770542524440326,65634038914,3092818552423598,36426329064,37de93055db03bb9fcda1740a8d74e83, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,495.773538,24.713867,37.810725,38.430891,4.721702,7.221146,36.161675,34.900223,23.873111,29.233073,24.008337,37.494089,38.162049,0.664598,310538.90,9.10,2347794339968802,57351467872,1058039872593415,33930271944,9b3640c5e9ea4e4694fefa7b4cb72426, +LD,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,101.621538,23.307454,36.046661,36.510817,4.069134,5.518038,20.234684,19.416890,21.467730,27.543167,22.725879,35.823423,36.307583,0.841438,113873.67,6.58,770029199162487,46514991029,321932096519685,20020091187,ec60d4a568bd3a88a470a6785a8ce4a0, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,6613.773785,42.308583,46.941221,46.771512,13.344847,20.216996,99.389129,98.684542,43.386852,45.352717,41.999524,46.814990,46.452969,0.228401,474948.11,12.90,3328335817605842,80099723731,1326386599117928,36023061493,b09c4fd282d5e717a7dc780c3fc467b1, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,2649.691569,40.787010,44.846786,44.459891,12.414363,18.056188,92.353507,90.638566,39.844705,43.746915,40.454139,44.689044,44.077009,0.305359,423050.65,15.43,2298911177452333,80227803155,1086729960728819,43180308886,c49cacc0b2e2b00f196051c0d4f8ba73, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1134.281354,38.963790,42.313105,41.774178,11.697433,15.748453,73.836028,72.007817,36.332888,41.809513,38.588591,42.134764,41.355323,0.309802,303241.57,12.19,1638083444297321,65253471302,782547105525208,33932340678,3b575eb3c4f9320b9c875747b4d7dbe1, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,488.489354,36.734787,39.637713,38.995106,11.090527,13.427194,47.886676,46.526446,33.090610,39.490991,36.354915,39.463324,38.594512,0.334918,94551.47,7.55,677588987890161,53739999610,264075793617063,21127481060,375773517da743081309819e1b741c9f, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,207.290585,34.169408,36.880189,36.118163,10.586414,11.257942,24.151814,23.459960,30.059801,36.774383,33.837931,36.727888,35.761095,0.368329,37262.90,7.31,270995374019168,55414615072,104102812591196,20451022991,df755cc08869e9f7116987021eae1634, +LD,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,88.702523,31.329986,34.020140,33.224746,10.125424,9.295847,13.343102,13.167352,27.102438,33.773329,31.068408,33.895935,32.932708,0.489081,13570.30,6.00,101989038165650,49449029231,37893581535508,16763029597,3a04065eab6e1aa16718e3fe09ad1eae, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,12109.741292,44.642278,46.785996,44.742866,18.348667,23.829559,95.930801,94.124566,46.035124,45.734984,44.374010,46.375662,44.271898,0.016471,909624.60,20.09,6384614145075162,108458419121,2540272669633534,56045435248,d96b38814b2a8d2c4ab1d20853199392, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,5837.996308,40.735365,45.361345,42.775612,14.926685,19.564876,88.718009,86.195820,40.710950,43.374909,40.332648,44.619269,41.804785,0.016023,1366173.42,20.87,7707748522936711,87258918738,3545663089673584,56705620783,c4a9e8b94dca302b2b8d9fe41055d4be, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,2394.869169,36.708815,43.649808,40.658685,11.420508,15.049304,70.342370,67.672273,35.327299,40.617664,36.193628,42.330293,39.336679,0.013014,749911.81,11.80,5424302422603284,72276594274,2094198456699311,32926808957,3a8589dfa9e7538c1fa55d0d7d987a77, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,780.143262,33.222898,41.920560,38.652750,8.625344,11.000243,43.338235,41.504081,30.708329,37.924017,32.564305,39.727882,37.154646,0.013668,328371.01,9.01,2444235597639563,61897474410,917080133535951,25159311054,9f2e7008e72f8c17131741e500ca311e, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,174.842585,30.620929,40.338115,36.973417,7.061502,8.019743,17.073881,16.554456,27.369415,35.651056,29.711339,37.192984,35.410702,0.011714,123968.15,7.02,962269864502419,52253439217,346232596861295,19618220249,2c75d5ece5ffa0856b2784b1110318d8, +LD,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,33.402092,29.060943,38.788844,35.328324,6.626191,6.554283,2.139973,2.109837,25.535679,33.923852,27.918420,35.247030,33.914107,0.011692,36011.90,4.43,282999898281343,31307732681,100563820355782,12365476898,0d8f2d047442ea521e72c74d4e6e8ab7, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,110,8071.964308,44.834767,50.364375,51.575514,19.410714,26.553129,97.246742,96.253713,49.726729,46.131418,44.715049,50.299083,51.549914,0.433758,153460.59,9.99,856996400524116,39755884282,398989114426354,27809314333,d3267296356bd9e9bc44bfd486ebed9d, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,135,3586.260923,41.037069,47.673014,49.017751,16.494378,22.987169,95.394399,93.843629,44.512774,43.695658,40.942341,47.638091,49.001547,0.549053,153808.51,5.98,1096625007693067,32701872808,429437484978303,16745018337,4acb08181acc83a077d30f370b352ea1, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,160,1402.648615,37.284100,44.925524,46.191374,13.513352,19.181102,90.381527,88.239853,39.245861,40.910527,37.225561,44.909916,46.180624,0.830241,163631.30,5.54,1199693160327418,28054107867,556442408098811,20472193082,67f424cb47eb49b3e421c27ec168696d, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,185,509.390769,33.956526,42.167286,43.240620,10.987266,15.610862,79.892537,77.256086,34.432920,38.034864,33.928114,42.157756,43.234500,1.153376,120407.19,5.27,700795267696805,25543918798,313331017416845,15272998200,266be92c0aec0c97b9bfceb0d87c798e, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,210,187.085538,30.950208,39.203780,40.341344,8.861569,12.330740,63.505784,60.804785,30.094576,35.199843,30.936259,39.199601,40.337700,1.470918,42931.16,2.61,322109727294903,17783465299,119883429399390,7274862381,09b23167cb3d362548bf709c64ae2734, +LD,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,235,70.899692,28.002364,36.596620,37.303776,7.170621,9.391504,42.472288,40.233778,26.171322,32.371243,27.994058,36.592209,37.302431,1.177896,19215.47,1.96,143720085939013,13567097170,53678801442234,5458451615,d4920afe8af2ed2da65a006e2c80b4a3, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,110,30222.609231,41.796454,48.712408,48.024353,14.080816,20.144468,98.091303,96.449770,43.442472,42.474308,41.277705,48.523569,47.856474,0.234404,692912.47,20.77,3936080700643522,92446549545,1795728492544172,56747856875,e0325821dd59e661419df3d20a3769d4, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,135,9361.318154,38.256384,47.144476,45.935107,11.101837,16.073266,90.835493,88.590591,38.264627,39.911346,37.756262,47.010359,45.825998,0.434893,675198.44,12.05,3909521668509872,67573168653,1746049620981680,33191247113,9200f8271377c07d79765441c3e981cb, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,160,2390.377846,35.536486,45.675833,43.917485,9.082482,12.781390,76.141311,73.997739,34.179455,37.730647,35.184241,45.582856,43.832458,0.861410,491868.62,8.83,3086092304762038,48905113631,1376227893481110,26701905870,7702244135b57f3f833a441b963868d2, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,185,631.137231,33.567081,44.239192,42.134829,7.977168,10.395988,59.252408,57.508929,31.322231,35.982619,33.370097,44.166840,42.052365,1.457093,199245.58,6.24,1206116720631850,37540767670,519359602188679,17691032157,df1970075dd133a1f30568f03ffe2e4d, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,210,181.458462,31.901961,42.625984,40.488612,7.446374,8.768064,45.732287,44.191507,29.245763,34.459497,31.805436,42.574717,40.375073,2.545303,53844.11,4.55,435991083045322,33155313025,150360903890440,12688917981,4df0e8d3d1b8e9cea14e9d15fbb6f67d, +LD,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,235,60.771692,30.148110,41.008854,38.638837,7.096691,7.698602,32.178013,31.101549,27.347260,32.979933,30.101573,40.954707,38.504310,3.419240,22771.55,3.38,135345738689003,17489962940,61007611276215,9828372354,2777810497cb0c8149c99cf39094fd3d, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,110,1711.945846,51.109295,53.823260,53.435986,25.089282,30.891696,96.498912,95.538388,51.950767,52.878384,51.014108,53.741653,53.349471,0.116545,80604.73,5.06,459186711537040,22175174473,211147440176240,14482097205,d034204ebaa7178c1dd4983bdd2c9838, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,135,966.686769,46.904326,50.207910,49.780812,21.886200,26.812323,94.944237,93.472133,46.557682,49.121367,46.803452,50.132588,49.700129,0.116151,79421.38,4.47,440113435861025,19772853561,207811081633369,12673260811,7ec34efcdaa3028e34092f296d8d19d9, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,160,531.230769,42.538222,46.360440,45.835062,18.687258,22.742825,90.625321,88.599600,41.360879,44.858205,42.453044,46.290801,45.765647,0.160448,61208.14,3.62,346398109154525,17666682248,160611147114521,10414869572,99a63fdf79994a0ab666f9d9b4a625a6, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,185,293.051077,38.217795,42.629744,42.072365,15.641948,18.877464,81.603158,79.183690,36.597051,40.697938,38.152350,42.572810,42.012372,0.279157,48973.03,3.44,267695768502193,16802142031,128903885409531,9947731425,d7a8221268bdcc225ab1982fd339285f, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,210,157.107692,33.815731,39.400407,38.545051,12.743797,15.154584,66.456042,63.562060,31.959027,36.962107,33.762186,39.351827,38.473410,0.630014,33866.07,3.54,197887218666976,14892212499,90046724532867,10017284104,29364d5f01a32980d510a22588a6568d, +LD,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,235,74.706462,29.446330,36.244140,35.377227,9.953557,11.466568,47.486568,43.594868,27.265076,32.947933,29.408120,36.206528,35.310293,0.536944,22171.65,2.73,125609146562382,13336035869,59617887969046,7980975010,063fcc19b57039ab28286de8fc9b9c93, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,265.777846,57.137261,53.946820,55.118941,39.037942,44.958617,97.345393,96.747354,60.169470,57.468401,56.863299,53.810139,55.028445,0.038933,19617.11,2.59,113082571841477,10876715469,52969925778045,7645975426,dbb337258b56dd5c669fca48b42e8c69, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,173.453538,51.633932,50.354385,51.207857,33.348758,39.263021,96.922346,95.966532,56.186373,53.794771,51.456687,50.248458,51.132628,0.106621,17260.27,1.84,124305649300342,10881387779,48206215357939,5164299440,f54d49baae40d5b3cbf0d36257ebd3cd, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,121.488000,46.199534,46.954184,47.323665,28.102579,33.338402,95.998719,94.323788,50.682734,49.940407,46.064993,46.824819,47.245566,0.457068,16821.09,1.91,124176496301739,11282194689,46971610430027,5388925458,92c178666625d443424c11e7a97d54c0, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,86.390769,40.801616,43.793792,43.478117,22.732864,27.080464,92.858265,90.326497,43.766566,46.082796,40.677527,43.668145,43.386125,1.145486,20877.39,2.71,139851499071429,13857360753,73223941351354,10394572979,54cf0058a77453a8ffa2e6b088792e44, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,59.608615,35.269748,40.292194,38.959990,17.306329,20.652304,84.440840,80.871090,36.139562,40.259972,35.141719,40.189441,38.851216,3.281777,19548.75,2.32,142002863847244,16038963347,54593225206195,6441126792,3415ab2f2dc492c5a29121b0e7d6ad69, +LD,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,34.648615,29.930596,36.162944,34.389260,12.007441,13.833823,62.001993,59.200533,28.704835,35.654780,29.821049,36.096767,34.338734,7.030411,21918.44,3.15,126246488582383,16106598953,59005295997430,9219637141,ebb97119a8d269748260c8d45e2937f5, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,110,3649.938462,47.233049,50.666142,51.460345,21.661335,28.567806,96.855996,95.915907,50.865516,48.326355,46.796722,50.452774,51.341534,0.445340,116560.40,5.38,671999868064860,25385447483,305455612534594,15265458621,4183f3337e9c9bd4bcc3217f942a2dd4, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,135,1827.943385,42.963353,46.958438,48.291671,18.403551,24.594616,95.510665,94.121765,45.602128,45.028535,42.513667,46.844015,48.254349,0.387457,113724.31,3.38,807853751174774,19763919787,317598662234012,9460044930,2364e9aef4a9c42ffa85bde7f43b8df4, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,160,817.222154,38.645785,43.597901,45.437398,15.415740,20.847530,91.786205,89.871749,40.549088,41.687440,38.247906,43.574640,45.419961,0.764657,117369.42,4.01,664039793095211,18698836121,307014393807915,11516952259,5a920b3b23eea099d4865e1d02f91dc6, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,185,382.574769,34.845793,41.152053,42.690685,13.562321,18.315252,84.760252,82.308456,36.194926,38.816220,34.607098,41.129926,42.677484,0.915298,66560.44,2.67,482147410401029,16740467960,185886329418246,7520379038,8b1b43edf9805f89f657a28ae58a1e2e, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,210,196.932923,31.280175,38.568635,39.710711,11.686277,15.729419,73.516649,70.123949,31.653244,35.691779,31.198425,38.544777,39.699305,0.805666,56974.57,3.60,339360672827350,18585258663,150637376300918,10331477009,e87c0fa0106aeb1ab4838215ae47f39e, +LD,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,235,111.489231,26.917390,35.267884,36.650102,9.196305,12.448311,53.378287,49.772471,26.294559,31.877380,26.868826,35.250857,36.626205,0.689766,30428.67,2.61,230397404874213,17314390235,84972241364451,7215841793,daa349911b471f1f9e52f4d4b619a52e, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,110,67.786154,59.855491,62.516292,64.751951,47.991444,55.216876,99.326777,99.253082,66.725421,74.270035,59.798056,61.258917,63.988056,0.001558,16886.63,2.79,118208080796084,11546213826,60153006096298,10593322844,3b5171feddc64c2c64b825f26347c73f, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,135,52.732615,53.908918,58.972725,61.449958,42.115262,48.996461,99.292022,99.156442,62.527298,68.194043,53.881493,58.362281,60.995650,0.002988,19995.88,2.95,114639653061213,11789755884,54713745358104,8705312050,565a1f927e0818dab4b05e3d079405b1, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,160,41.752615,47.708619,55.807518,57.980054,35.839966,42.377549,99.150778,98.907851,56.915461,62.064272,47.683195,55.405781,57.720192,0.005803,15188.93,2.10,114643271307020,12824014787,42421528439624,5870437755,2337e150047fddab7389d5334f4d5f1f, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,185,32.703692,42.130709,52.982557,55.081547,30.038385,35.885999,98.721913,98.302170,49.993520,56.262064,42.113302,52.600739,54.847705,0.003645,20036.19,3.36,122020605288293,17460151249,58495248511450,10436973532,02cc7ab6d6ecf8b6d6a461237f93f773, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,210,24.310154,36.668615,46.801546,50.714263,24.194225,28.646843,97.509216,96.803574,41.496486,46.504155,36.655952,46.505122,50.449616,0.003602,17595.00,2.88,131833881704108,19048756473,49132082983020,8057622257,c67adaf97211a2e880ef9d219452d9de, +LD,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,235,17.885538,31.861994,43.765715,47.670280,19.318517,21.909685,94.058653,91.410300,33.424743,41.499258,31.850010,43.524462,47.424485,0.001448,20399.14,4.06,118316934035587,20595784172,55677388319561,11822416686,b7efbeae77a3ed19f5fa8535bbbf7a7e, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,110,195.891692,55.036057,59.495907,58.626976,30.992648,38.289852,97.326909,96.756499,57.706401,65.013023,54.921154,59.335451,58.357709,0.127678,45998.22,4.33,259183288998132,16156887026,121588312691559,12562668536,51e100e0589b31aecd8951b04d1f3b09, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,135,94.586769,51.057216,56.453395,55.660705,28.437184,34.914386,96.946244,95.974002,53.614194,60.440165,50.997098,56.252406,55.345784,0.138056,31178.47,2.36,230010135448612,13872687507,87083404643739,6577272690,4570a17870743cc5d881b4c2b3a518bd, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,160,52.529538,46.552023,53.243060,52.183894,25.887934,31.546448,95.883894,94.276588,49.123626,55.532293,46.523745,53.088121,51.872862,0.134426,27583.49,2.90,158812914460300,12827237659,73502260908710,8467903686,26a018d599b74bd744a935b8363245f6, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,185,32.079692,41.608013,48.883539,48.184234,22.579939,27.074258,92.745613,90.589249,43.872127,49.761760,41.593155,48.789760,47.963898,0.114833,24310.32,3.10,136000984864700,12873368990,64908221908442,8669997818,d70fedb4820b41d43c8dfc756b7ce985, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,210,19.762154,36.356479,44.388774,44.250263,18.528743,22.513029,85.217230,82.135468,37.714053,42.852228,36.345754,44.348004,44.058440,0.124387,19827.12,3.96,112455872216617,19851645594,53322316654467,11649172516,d26c01a10ec2e1feae366787c496c187, +LD,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,235,11.658462,31.104845,40.182863,40.028202,14.497130,17.586451,69.156063,65.106867,31.403407,38.375425,31.089084,40.172636,39.968202,0.039636,18483.99,2.96,106105690240549,13781929395,50033760888939,8729720962,6622cb0c710f12249ff2f6b5f37476d0, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,849.675692,54.411767,56.000858,55.367031,36.556363,41.570979,98.175855,97.401082,57.589425,63.777548,54.080430,53.029752,53.417483,0.006390,46745.33,4.64,336096376956376,27249829856,130567537348860,12979952463,10aa70d92b06958a59c073f13fe50e45, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,469.240615,49.764909,52.528502,51.902273,32.284750,36.842931,97.312967,96.080148,52.775775,59.071553,49.382200,49.222684,50.030979,0.015938,55868.56,4.78,401974879511818,26310100765,156052018116552,13412966788,81808e264f87e428072ecd5c8fca194d, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,268.410462,44.872185,49.035667,48.384510,27.717961,31.678023,94.985067,93.224699,47.122442,53.664730,44.365295,45.336891,46.457501,0.020640,46206.62,4.78,326841135841738,30630124250,129024186811607,13354604828,327c3bfd2183f03e12e8215a6a0af065, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,158.099077,40.294983,45.807040,44.925287,23.365739,26.526871,90.071656,87.574423,41.308995,49.371793,39.642429,41.883540,43.035273,0.037122,39288.98,5.13,289069772718801,33786201332,109727380760958,14330825023,e6d0d01f3b345d267a40cdb99b67a4e1, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,95.167385,35.616423,41.469832,41.701339,18.734865,20.991784,78.926964,75.586479,35.060611,43.376222,34.693457,38.005916,39.267315,0.044126,42365.19,6.22,240471216519166,34404047813,112839243100518,18052761750,d59739ebc1e987ad56bbeab577bc0d4f, +LD,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,55.371692,31.216451,39.280970,38.807617,14.880075,15.948301,60.110093,55.949546,29.299494,40.986993,29.958946,34.053713,35.625403,0.015790,25383.49,3.92,185558793662360,27201850395,70897976412670,11030265529,01a31521a2d3a101014a4323026b386c, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,1741.460308,52.311711,54.301068,54.388977,30.607653,36.788769,98.105669,97.488441,55.860992,62.108128,49.445116,49.970730,50.313605,0.001413,101827.11,6.98,567820727558088,31110306779,266854210659033,19733254505,6a44cd5eb86a10035f401d3d0ab55d50, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,932.612308,47.500799,50.236418,50.428480,26.637563,32.015026,97.017653,96.012929,50.266605,56.660445,45.134104,46.096078,46.482326,0.003408,104311.69,5.13,739179566864001,32392306934,291281007705270,14373621321,21629e9c0746cd255999a9eba4be3e66, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,476.398154,42.474634,46.583091,46.877608,22.605985,27.121350,93.810750,92.383915,44.311810,51.315196,40.446200,42.332417,42.736340,0.005517,92425.38,5.12,647321875579294,33386495356,258105149748892,14302290227,731e317b7a187de20e6332525e6d17e0, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,255.673846,37.799484,43.846599,43.934148,19.055340,22.490560,87.182044,85.252298,38.649615,47.772657,35.992282,39.125842,39.404195,0.023903,70819.74,5.16,491417987502132,35831681046,197763956372731,14414256245,5fdf787eba03165d1a90c6e21beff985, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,133.582154,33.120025,41.542796,41.677018,15.723238,18.073497,74.936139,72.557870,32.875070,44.423012,31.413519,36.310115,36.345836,0.013954,48379.55,6.99,333588762425728,38875738416,166847395745483,26416076244,53d9c9e5aaa8b9df3b88f345339bd80f, +LD,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,64.969846,28.286164,38.576732,39.038964,12.483834,13.768862,55.185136,52.682232,27.019663,37.997188,26.510688,33.604570,33.234810,0.032441,31503.89,4.47,237268822849136,33076374889,87983306987908,12522969575,1e21998598e9a6c3de9ec0184eaa7432, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,110,673.947692,50.586848,55.406029,55.012109,33.954499,40.786127,97.300333,96.386937,57.034602,58.107154,50.267934,55.168537,54.754592,0.055164,36357.52,3.35,258581756869074,17929905434,101545495935299,9327126819,b1df0117adce245c138eecb9396f0dbd, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,135,341.508923,46.652096,52.119684,51.735180,30.019349,36.504798,96.769312,95.499658,53.003596,53.655989,46.393468,51.848782,51.535153,0.054456,43398.44,4.36,240668383938904,17292039956,115217934732478,12577808281,22d9a14749edc8e5d54ac180eb8298f8, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,160,193.949538,42.466614,48.757458,48.822183,25.818341,31.834057,95.468422,93.724537,48.028383,49.442221,42.258959,48.496294,48.668150,0.053891,35928.71,4.02,212626360544920,15967303303,102771570912120,12448606655,b8e6e8314a2d591d2ddafc135f670fce, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,185,122.204308,38.182272,45.221932,45.818209,21.149848,26.515311,92.306353,89.997092,41.947491,44.741898,38.020816,45.000172,45.694787,0.023287,29202.04,2.72,204326112211880,16800949816,81557311233742,7582297884,af22d7581c0552c93ddfe89d133d5704, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,210,81.162462,33.320585,41.000414,42.760968,15.424528,20.241466,84.748895,81.447620,34.739760,39.733434,33.156755,40.751642,42.687820,0.061211,26729.17,2.95,189057542563343,18786472375,74646292458074,8291115490,fa7f6f01abf9c06694a1d642d455339c, +LD,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,235,54.856615,28.337799,37.419857,38.160858,11.264543,15.027087,67.859917,64.030770,27.661478,34.287431,28.149430,37.273296,38.127591,0.056573,22974.73,2.83,165460922982982,18900252695,64155651849707,7897656011,f135e47d6b0c84e5b1155ba93ec9ffe8, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,110,404.040000,51.573601,53.682789,54.630795,23.336961,31.216626,98.664308,98.327854,50.668206,55.697473,51.536838,53.306705,54.397918,0.027494,39815.48,3.37,228757238619990,12486787581,105294002291516,9883110987,56768f883ce0b3b74afa47222e8517c6, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,135,228.049846,48.389981,51.095159,52.121513,21.665050,28.834453,98.468689,97.881189,48.536122,52.579670,48.320108,50.466569,51.670867,0.916034,25630.69,2.55,179452665483132,14361753180,71569185515747,7155675498,a34d1f08ba89b96ce8f40da9ba4f236c, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,160,156.206769,44.687188,48.119009,49.355872,20.782667,27.360835,97.812838,96.885770,46.338463,49.209027,44.552680,47.544646,48.844181,0.921284,24868.74,2.57,176286265668401,15090941997,69445638744208,7206452636,31128db28bb780fbcd6c4284329872bb, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,185,113.379692,40.125512,45.112145,46.298385,19.266046,24.831691,96.098625,94.399103,42.573951,45.343261,39.973707,44.609117,45.794349,0.935115,26007.14,2.85,180298085159051,16214248867,72621251828010,7995102775,15755d05c45467934626a72a88e2f2f9, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,210,83.523692,35.018040,41.809779,43.017221,16.930974,21.097255,89.621687,86.297333,37.045249,40.914977,34.837565,41.493775,42.683759,0.960210,24543.63,2.91,173517866981684,17809234083,68537280750057,8108722407,2baec2270b15da0b21959328569b70e7, +LD,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,235,57.657231,29.485930,38.033081,39.694255,13.669603,16.221068,68.960114,65.201518,29.988468,36.497912,29.180030,37.916957,39.496856,0.720590,29181.99,3.73,165987158504134,17933363246,78375378869687,11000229963,428b6cdfe48914a72bf8993c86ad34a2, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_RA_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_RA_Preset_0.csv new file mode 100644 index 0000000000..1a576d5758 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_RA_Preset_0.csv @@ -0,0 +1,547 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,18686.861446,42.397510,48.727441,48.730439,13.974238,20.338303,99.974870,99.913693,43.028553,43.266628,42.346394,48.702186,48.704581,0.971280,,,,,,,b3885b5835f18ebffec6f8dd743a9ccf, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,6628.153385,41.573640,47.551075,47.475924,13.574550,19.569106,99.634024,97.779357,41.500669,42.402142,41.558775,47.539015,47.462571,1.189391,,,,,,,8c7008b88a3c01a2d14b3cdeb3094e7a, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,2748.024898,40.302340,45.978915,45.809845,13.047371,18.450339,95.187997,92.780491,39.168184,41.218028,40.287914,45.966135,45.797331,1.236379,,,,,,,e9274cd55f1c3e7f4424f89c6f1903a0, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1320.628910,38.277972,43.975278,43.716367,12.215143,16.686019,85.938395,83.201898,35.926258,39.555254,38.257199,43.962788,43.705768,1.267856,,,,,,,5bd10a50580ad07fdffaa1f423042ddf, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,637.083532,35.576577,41.544790,41.349178,11.117021,14.425912,71.203989,68.152619,32.267836,37.402984,35.550552,41.531979,41.333414,1.316835,,,,,,,604f38a52a96afeef95502ee64cb91da, +RA,aom,av2,0,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,294.473526,32.413764,38.811171,38.787917,9.877806,11.913835,51.599668,48.622341,28.518344,34.766047,32.386579,38.798631,38.777026,1.261357,,,,,,,c9efa4ebb7219c4602b83471ca1ab72a, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,17149.024514,42.792031,48.817432,52.279403,13.526505,20.071464,95.547829,93.751189,43.159160,43.705820,42.751950,48.803058,52.269407,0.316997,,,,,,,d2d351fd1dab84a00f2f6510303780ae, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,5346.181203,42.130736,48.160819,51.342348,13.216866,19.201818,91.142417,89.016411,41.607253,43.054661,42.121450,48.156030,51.334332,0.370124,,,,,,,6736592877da23ddb216af03ffcb2491, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,2271.805733,41.079463,47.162608,49.921457,12.880922,17.946414,82.940772,80.560236,39.454238,42.068453,41.058596,47.155741,49.907411,0.382870,,,,,,,1f8cd3a6f02f116d90c4a33a63fbe303, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1056.173365,39.457742,45.752296,47.976921,12.457361,16.257370,69.881678,67.404281,36.844747,40.628501,39.418285,45.741326,47.956593,0.413666,,,,,,,7644fa8ae8450a331b45757cd9eefacb, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,498.505802,37.202535,43.695373,45.558467,11.953346,14.230477,52.274778,49.944161,33.916579,38.603752,37.144037,43.678597,45.532830,0.454383,,,,,,,c9d9c17dd2a51c35728c513fac1a81e5, +RA,aom,av2,0,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,231.966188,34.352506,41.438325,42.868343,11.359943,11.967713,31.552737,29.945752,30.748117,36.067171,34.281392,41.428066,42.838267,0.377525,,,,,,,da537bdfd64582b8bb55069fa79871f2, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,24897.120111,43.191269,49.110780,49.326980,15.940855,22.924762,99.970096,99.961796,44.767380,44.212790,43.094486,49.017362,49.227543,0.010046,,,,,,,7b2ccad18786824be0b284339a88e4bc, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,10651.632675,41.767716,47.273814,47.409125,14.985460,21.104718,99.956362,99.944951,41.644707,42.698476,41.695218,47.194231,47.315192,0.011520,,,,,,,e705bd1245cd4dca32a6bdedd37d7cb1, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,4790.689925,39.422692,44.896153,44.949069,13.467955,18.363611,98.852515,96.704773,37.494980,40.459987,39.340303,44.815503,44.844808,0.013783,,,,,,,ff358947c8caba133802f2b79537f60b, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,2183.123953,36.447850,42.295219,42.270380,11.577724,15.176810,84.666284,82.205047,33.242834,37.768269,36.356349,42.211981,42.154105,0.017961,,,,,,,f24e0f47357974a295a693cc3154f38f, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,976.687313,33.228195,39.737380,39.600048,9.639173,12.017621,63.917620,61.696360,29.299791,34.891605,33.132556,39.653570,39.494867,0.028356,,,,,,,736dc0431febd577f8bb7c7e131bb102, +RA,aom,av2,0,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,404.663644,29.940516,37.096923,36.866229,7.879904,9.045424,41.153269,39.797557,25.679940,31.918979,29.841489,37.001936,36.749650,0.070148,,,,,,,0294a9a89219726678e7fce9dc4668f4, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,110,37759.567202,44.756684,48.617190,47.936553,18.207924,22.503176,99.976332,99.971354,43.688339,46.630995,44.664950,48.475367,47.784982,0.952674,,,,,,,39ba4f0dd2b6bf9b93bfe6ce336fd195, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,135,16616.515177,41.618485,45.879768,45.033989,16.421629,19.776357,99.352936,98.617225,39.919616,44.084780,41.500575,45.803736,44.928047,1.214124,,,,,,,a4fd8f160bf16cc83e78187de788068d, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,160,7230.672712,38.753147,42.871987,41.837469,14.890011,17.398891,91.543805,89.369658,36.115089,41.542475,38.639781,42.780685,41.701706,1.430120,,,,,,,793f5c76ba66534d1a8cf1204bd0ed69, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,185,3305.620533,35.811182,39.723203,38.428062,13.413323,14.951178,76.165531,73.595468,32.260087,38.820905,35.687085,39.596844,38.236347,1.515382,,,,,,,7825688bd3c09c6990e210c8130a993b, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,210,1482.195958,32.662200,36.491442,34.906396,11.983709,12.377585,56.680163,54.297763,28.478775,35.827762,32.529217,36.338950,34.667802,1.728222,,,,,,,407f6868333262cc0a6c7e80a4ce2d5d, +RA,aom,av2,0,A1,Neon1224_3840x2160_2997fps.y4m,3840x2160,30.00,10,3840x2160,235,629.333743,29.487362,33.297499,31.376411,10.685428,9.945103,34.081176,32.584441,24.966997,32.700390,29.365980,33.140384,31.113203,1.859782,,,,,,,08cd014a140006263427f360d50ddc95, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,110,45578.540308,46.339012,43.790557,48.884938,19.107107,21.849918,93.570294,91.518332,43.362494,44.969667,46.260922,43.730064,48.835371,0.598969,,,,,,,0e70d798736340738a43b035f8ce5596, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,135,19396.482462,43.249367,42.002719,47.433363,16.677989,18.782589,85.049243,82.686806,39.577901,42.927259,43.172639,41.970282,47.403043,0.848555,,,,,,,10564663f31012c35eac4a4d7f4b170c, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,160,7880.030769,40.003203,40.344403,45.860049,14.333499,15.628320,69.491978,67.053965,35.846213,40.888313,39.912581,40.322347,45.836959,0.928777,,,,,,,eb4ea65cc4d7f9850e6b0050d43fa581, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,185,3065.250462,36.728908,38.664537,44.221989,12.111653,12.405655,47.409502,45.680652,32.278795,38.794567,36.626992,38.642123,44.202594,1.031677,,,,,,,26f088948e584a09fe6fed85d815862e, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,210,926.832000,33.610758,36.977976,42.645292,10.366922,9.356698,23.947539,23.262813,29.064167,36.645923,33.516940,36.957415,42.633797,1.388456,,,,,,,3c7eb621a38dfbccacfecdcab68c79ad, +RA,aom,av2,0,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,3840x2160,60.00,10,3840x2160,235,197.926154,31.573756,35.693670,41.009070,9.575283,7.570215,9.008294,8.800219,27.091369,34.896867,31.533082,35.684884,41.001292,1.588506,,,,,,,5c053f9de555a6a04a9cf9d93a3729c9, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,110,10442.529172,44.569999,47.201644,44.596601,16.965473,23.326672,99.538448,98.762153,44.899538,44.150589,44.425760,47.113885,44.499518,0.000356,,,,,,,5fe9766f1c6c1f8b911532d1ef0d4c45, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,135,3469.424948,42.871112,46.205119,43.826869,15.739007,21.162144,97.857499,96.305348,42.073060,43.107513,42.631327,46.115400,43.734502,0.000802,,,,,,,d69eabd53bd05a83bc7763704471a9a2, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,160,1130.315322,40.692653,44.909027,42.984192,14.323790,18.681128,92.386286,90.305384,38.837256,41.767423,40.386242,44.822735,42.893818,0.003057,,,,,,,d56a14f1a59e35efddebac4bc79a0587, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,185,387.406052,38.295309,43.126282,41.767185,12.906050,16.375011,82.821546,80.556691,35.599500,40.124949,38.005913,43.062788,41.692066,0.011656,,,,,,,4deaf6a3b31726eee82f7a79b951afc4, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,210,141.740579,35.729825,40.783434,40.040848,11.482309,14.177157,68.480261,66.054441,32.301525,38.136790,35.515816,40.744375,39.983535,0.032769,,,,,,,3deba108f105ef0b7aa55645a6e22ec0, +RA,aom,av2,0,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,3840x2160,30.00,10,3840x2160,235,54.541711,32.979350,38.099757,38.093308,10.103520,11.956580,48.838932,46.439228,28.973111,35.786644,32.841759,38.076106,38.057103,0.074127,,,,,,,abc2bd32d010ba8e7cb142e940c10dee, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,27172.352571,40.437261,49.745022,48.010906,11.478400,18.276102,97.424772,95.738347,41.386887,42.582682,40.373285,49.735783,47.988137,0.315735,,,,,,,30003f03ca2db1382b457685067c6c57, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,8901.117344,39.825488,49.104979,46.964219,11.159879,17.421122,93.508536,91.435237,39.805293,41.925846,39.816507,49.101484,46.951493,0.514279,,,,,,,f8a95dd8b3998056ebbcafaa7ee83bb7, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,3513.594098,38.898777,48.035432,45.351906,10.835830,16.277945,85.837612,83.429355,37.650995,40.945677,38.892086,48.029306,45.335365,0.566933,,,,,,,87eda25eff4f48a613038d407f92c412, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1695.990164,37.381903,46.446083,43.168734,10.406521,14.684652,72.954742,70.413880,34.937581,39.482837,37.366461,46.436246,43.146004,0.604477,,,,,,,d19f8ec365ec868fe59dd8d50a3712a7, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,816.118036,35.196987,44.425688,40.601824,9.865932,12.747680,55.969391,53.590178,31.902589,37.531046,35.169178,44.409725,40.576193,0.769608,,,,,,,88f6f4d4c6d5bcbf5f49851461177506, +RA,aom,av2,0,A1,Tango_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,374.055483,32.424914,41.838122,37.859118,9.240871,10.609757,37.736908,35.762482,28.696262,35.035580,32.387516,41.820401,37.831982,0.779216,,,,,,,944b51b72fc7b3f0d44b1e188bda7249, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,110,27016.239145,43.630468,49.655274,51.457006,16.707244,23.353629,95.134447,93.443633,45.281099,44.761038,43.538373,49.633109,51.381918,0.009272,,,,,,,3db14349f7a0b74de54bd589ca47f546, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,135,9751.281334,41.704297,48.005266,49.695250,15.198577,20.902715,92.215927,90.238901,41.637660,43.145274,41.637542,47.996052,49.655226,0.007791,,,,,,,245393749ed893ca12b6bc98c04dcd9d, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,160,3515.032660,39.439016,46.007028,47.507309,13.482565,18.143060,86.413624,84.100697,37.840844,41.144497,39.375432,46.000651,47.486912,0.006739,,,,,,,4d8d7059c5b803d908a8c1304ec10e18, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,185,1313.723815,36.954951,43.895690,45.240089,11.650883,15.316065,76.650344,74.034541,34.256433,38.906682,36.886668,43.889967,45.223877,0.009042,,,,,,,af865e770618df1c1aac2589ba39883b, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,210,481.379544,34.326688,41.758808,42.966162,9.930440,12.504989,61.717612,59.118318,30.868980,36.494284,34.247952,41.751550,42.954572,0.014085,,,,,,,5e6e6e0759411fa58ecd08de85f1ce42, +RA,aom,av2,0,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,3840x2160,60.00,10,3840x2160,235,170.716668,31.653484,39.431472,40.532882,8.531670,9.931261,43.910507,41.658334,27.763060,33.897606,31.568245,39.425958,40.517462,0.016452,,,,,,,719fbac21329dda459947e01d2e4a14a, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,8718.213479,43.085316,45.152250,44.993547,16.613694,24.504694,98.211465,96.375248,47.471251,41.188976,42.949484,45.112152,44.952214,0.000005,,,,,,,c3426aec52e62426c33c9474f2b75417, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,3630.331515,40.527273,43.693938,43.919926,14.198992,21.335231,95.581910,93.502739,43.090193,39.359507,40.299508,43.657131,43.886657,0.000329,,,,,,,3c5ea925f99c15c1027136a0148ba9de, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1368.197341,37.253434,41.950340,42.579297,11.210316,17.276958,88.808848,86.575669,37.496551,36.985567,36.922545,41.919639,42.550406,0.001834,,,,,,,81e0fde75e4d7c42fe7d6e3a1b5c392a, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,487.266580,33.987925,40.124566,41.053449,8.563115,13.412555,73.994584,71.739744,32.233951,34.520826,33.695664,40.102832,41.030649,0.006255,,,,,,,e16277020b8df37b5415b7b8c4af1101, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,174.811035,31.132149,38.318110,39.514278,6.634384,10.155247,50.875287,49.122410,28.052792,32.227914,30.961704,38.303918,39.499136,0.033582,,,,,,,6d160dedb55ca909c84696ff17d3b846, +RA,aom,av2,0,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,62.547914,28.556006,36.781825,37.852629,5.357698,7.441356,25.898543,25.089047,24.766920,30.094062,28.473872,36.773741,37.845568,0.083679,,,,,,,fcaf518079e347b1f81989b28886ecdf, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,20354.368093,42.049603,45.578235,47.598837,19.658826,27.537775,99.975287,99.837461,48.359551,42.787156,41.974164,45.549989,47.579350,0.127221,,,,,,,709a0ee5b9d3ecbe917b588214a571cb, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,10180.968570,38.783814,43.754266,45.351449,16.813349,24.193042,98.722221,96.864578,42.924214,40.352106,38.717442,43.741234,45.341296,0.162463,,,,,,,003defb38974111d98e21582e591f201, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,4727.990778,34.897019,41.795113,43.000184,13.201006,19.914739,91.918595,89.748942,36.584827,37.383559,34.836368,41.785588,42.992773,0.178419,,,,,,,74e288492c11cf5ce6be8c69dd4027e2, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,2063.306540,31.057250,39.648876,40.588365,9.639655,15.458413,78.489988,76.326711,30.630865,34.188577,31.006661,39.639642,40.581582,0.179652,,,,,,,af8c35b68e436d24e9ea95f674f42eae, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,809.257204,27.534196,37.219246,37.880850,6.626673,11.318667,56.690712,54.937096,25.507080,30.995883,27.497872,37.213036,37.877445,0.177978,,,,,,,3afb251789a5b39db23d62d484eb1375, +RA,aom,av2,0,A2,Boat_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,260.099285,24.426328,34.396076,34.443288,4.490170,7.823241,30.257522,29.220825,21.223978,27.951048,24.401351,34.391532,34.442292,0.179483,,,,,,,c6cfefc8b94edea5ee5a3d5c59b973e0, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,46831.793846,38.306838,40.607789,41.578508,13.245846,21.114094,99.975854,99.797803,43.560943,37.427623,38.171338,40.535784,41.515916,0.000473,,,,,,,1b65785d2785b92f6626efcf2eff238c, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,20911.803077,35.311081,38.670623,39.437589,11.487256,18.900364,97.022342,94.989711,38.887087,35.334774,35.200798,38.635250,39.400173,0.000629,,,,,,,5bb7ce2f94f7be80baecb7c0ee42e1bd, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,8792.784615,31.970985,36.686165,37.235211,9.305157,15.879447,86.012101,83.728498,33.193215,33.041231,31.873783,36.663514,37.207314,0.001125,,,,,,,005fba11aab475b835d8549c371cdb43, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,3476.523077,28.696023,34.707840,35.012182,7.044468,12.468559,67.222167,65.132106,27.938782,30.636774,28.619432,34.691570,34.990714,0.002786,,,,,,,b615518ae108ae1ea20b85f72563d8c3, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,1240.418462,25.680869,32.769328,32.894250,5.152230,9.221646,43.416035,41.923145,23.521610,28.240735,25.626648,32.759289,32.881349,0.012765,,,,,,,135fa6ae2b0dfbaa4be6e34f9fb63cc8, +RA,aom,av2,0,A2,CrowdRun_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,370.449231,23.006550,30.962239,30.956642,3.785732,6.586004,20.317943,19.648279,19.885450,25.909940,22.972369,30.957639,30.951529,0.061773,,,,,,,cbfb53baaf13f970e439200189c44278, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,110,5813.697072,38.217935,41.251396,46.446230,9.171985,15.734741,88.460002,87.009489,39.109334,38.325989,38.111264,41.187501,46.413026,1.248936,,,,,,,d266cfe14e9e3fe7e5ef8cee4173159e, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,135,901.623915,37.652631,40.377526,46.174237,8.713771,14.797390,85.269959,83.450895,37.698349,37.705753,37.626022,40.358934,46.167351,3.056481,,,,,,,7c1245703ea59b216e8932783417b466, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,160,115.512795,37.387597,40.167533,45.827776,8.580498,14.456127,81.231954,79.124572,37.053717,37.480566,37.385435,40.164665,45.825924,2.912263,,,,,,,4451362704b5c58c171f4e6fe4331831, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,185,45.738877,36.982536,40.048977,45.347412,8.475077,13.999031,73.782370,71.339175,36.100450,37.187027,36.980296,40.047434,45.346230,2.679894,,,,,,,f08a71c0675868b03713818c8bfa397e, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,210,23.052025,36.169174,39.741318,44.403415,8.309753,13.162893,61.127819,58.473997,34.477447,36.671332,36.162569,39.739734,44.401274,2.604493,,,,,,,e7f6f695517fb8f0a367c9b29ce30c57, +RA,aom,av2,0,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1920x1080,30.00,10,1920x1080,235,11.906862,34.717832,39.024076,42.831242,8.066282,11.806176,44.057473,41.393929,32.154134,35.708260,34.700570,39.021648,42.826617,2.656412,,,,,,,df3e671886b9388b6e63487c4cbf915a, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,11972.191501,39.711162,44.561957,45.520281,11.793719,18.820198,99.538760,98.121878,41.660942,40.023330,39.630442,44.530335,45.498562,0.114560,,,,,,,547575019a1ed194d26a4f7d241a189d, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,4315.872435,38.457238,43.659904,44.711263,10.923037,17.311108,96.447062,94.242728,39.165229,39.041952,38.426612,43.651805,44.706480,0.148637,,,,,,,36f016dfd396524045822f1b3f9ed0f4, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1578.013371,36.680989,42.555927,43.589894,9.790558,15.132984,88.450306,85.929224,35.780581,37.746771,36.653737,42.549075,43.583965,0.219868,,,,,,,6df52e0981f1d6d52963f5fe7e9c35ac, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,624.925843,34.447240,41.201123,42.032074,8.463732,12.479734,73.480143,71.039786,32.102387,36.092131,34.417627,41.191915,42.021634,0.332875,,,,,,,ac48fb36954f3b06bf63f1f75c260f9f, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,236.270806,32.025116,39.514416,40.260016,7.245139,9.833157,54.033042,51.975776,28.697926,34.185997,31.999176,39.501849,40.240731,0.546942,,,,,,,2a2e457776d8e7c6b85e9c17f5f796f9, +RA,aom,av2,0,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,85.435795,29.693963,37.598929,38.317435,6.387008,7.687720,38.251893,36.542048,25.868850,32.180353,29.675519,37.587453,38.281498,0.788733,,,,,,,4392a46dba93e933a76c9d4d5c71eeeb, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,110,23217.254769,39.953466,47.362639,46.957092,14.685257,21.787712,99.974556,99.967745,43.067674,41.851055,39.752281,47.077282,46.728114,0.066660,,,,,,,f36f0fc004701f06b6bf4580d020535d, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,135,10000.879385,36.782965,44.676100,44.321069,12.276992,18.520939,99.964540,99.919364,37.961877,39.128854,36.593589,44.333781,44.062768,0.069557,,,,,,,dccb86280b7ead84c83ec33a5ec33f48, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,160,4071.810462,33.571521,41.854071,41.630050,9.851089,15.075970,94.716521,92.949173,32.908968,36.321741,33.386180,41.453935,41.360425,0.086453,,,,,,,fc988e409a9ee173b6b1a3365a1d5de9, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,185,1553.538462,30.498972,39.203761,39.151959,7.650226,11.704659,76.191043,74.114935,28.385594,33.578726,30.308773,38.791291,38.911564,0.093892,,,,,,,c92aefb1d722dc5d2acdc2a344edab8a, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,210,543.967385,27.777983,36.863582,36.968826,6.021443,8.713149,54.397898,52.745353,24.675914,30.999626,27.603499,36.482917,36.802032,0.097121,,,,,,,9adba94524aa25354ae62c6e30d08c2e, +RA,aom,av2,0,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,1080x1920,30.00,10,1080x1920,235,178.187077,25.450845,34.680577,34.936966,5.009376,6.291059,37.199753,36.070839,21.820133,28.600641,25.322008,34.328889,34.820048,0.200435,,,,,,,795736de687e1ae5dc1e3c0972351347, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,110,4091.416276,42.597450,46.683407,53.034474,13.635487,21.044227,94.855997,93.234913,44.603110,43.194185,42.558548,46.674046,53.029812,0.735764,,,,,,,0e5a41ccbc1d448f58392cc3a3f0b5d5, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,135,1128.606778,41.735731,46.338478,52.117616,13.142134,19.818931,92.089286,90.198174,42.540878,42.620253,41.729454,46.337537,52.114779,0.799232,,,,,,,ce5d3c3a42a225a93dbf6968eb4158a2, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,160,408.569892,40.491975,45.746390,50.631703,12.541075,18.190890,86.918647,84.559371,39.991968,41.769698,40.483131,45.745430,50.626226,0.798083,,,,,,,ef373541bcb96f36330b9ae6c14a518e, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,185,159.112272,38.815937,44.809449,48.486778,11.801643,16.198541,77.134383,74.700409,37.127531,40.553232,38.805045,44.806951,48.484095,0.888778,,,,,,,6e81d180fe836475636ce3e0a3ef6e38, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,210,66.207024,36.808317,43.284940,46.061682,11.090345,14.063016,63.691111,60.879455,34.183280,38.888265,36.796104,43.282464,46.049606,1.015992,,,,,,,f2b9a6b5170e56cf67a05a746411c9ce, +RA,aom,av2,0,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,1920x1080,60.00,10,1920x1080,235,29.612234,34.506732,41.774294,43.768555,10.431644,11.962698,46.985499,44.608010,31.265327,36.966353,34.493780,41.771998,43.767791,1.004305,,,,,,,db19a53478b43558b46c6ea5293f801c, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,44071.035692,40.686059,43.344782,44.253936,17.951202,23.959765,99.976935,99.970547,43.709891,41.318515,40.435146,43.201424,44.145673,0.037955,,,,,,,36c6cd067567dbc3c9e1adf07bcbcae1, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,23019.947077,36.148624,40.309854,41.674280,14.747927,20.314982,99.968224,99.957011,38.439647,38.080868,35.834440,40.173362,41.578864,0.077403,,,,,,,964a99dab4e4e7ead131a9b113a988af, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,10241.525538,31.636563,37.597938,39.366057,11.435813,16.397625,94.125444,92.144119,32.672443,34.834618,31.335461,37.490142,39.292282,0.112018,,,,,,,d5b0b4a6ac9128c2344c5f792dd724e1, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,3828.158769,27.667991,35.205635,37.257299,8.451763,12.506549,73.881440,71.668490,27.043715,31.734030,27.425798,35.119424,37.194809,0.132104,,,,,,,064cb99e958158734c074c928f72e296, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1205.806154,24.632197,33.125875,35.354639,6.290371,9.078674,50.303332,48.444612,22.491214,28.972396,24.483723,33.060709,35.305393,0.130560,,,,,,,b26f78e64b5891b4806ca91631246423, +RA,aom,av2,0,A2,Motorcycle_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,341.272615,22.396848,31.191169,33.382261,4.968610,6.438750,30.349589,29.120050,19.343540,26.511102,22.314142,31.138343,33.329241,0.130702,,,,,,,067c4d16a299a80279b20201bb83cdc3, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,110,12042.055385,37.200797,39.686518,42.440936,9.991255,17.764863,96.115571,94.354930,41.482031,35.410942,37.079352,39.619356,42.407855,0.000055,,,,,,,ab04631d79abef343144ee7ade666b0d, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,135,3423.144615,36.307911,39.285459,41.722354,9.428154,17.038527,94.113604,92.204757,40.007832,34.821508,36.267772,39.279368,41.720049,0.000097,,,,,,,7317bd7ab277ecaf95fd607085bd09e3, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,160,937.840000,35.210903,38.874214,40.757009,8.879266,16.170003,89.578909,87.374146,37.691898,34.156358,35.203233,38.873265,40.755305,0.001088,,,,,,,189bb57b68b0da9e2ec3f690d08cc884, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,185,386.286154,33.502654,38.267340,39.377530,8.022688,14.656298,79.753294,77.362892,34.126618,33.178248,33.494104,38.266634,39.376424,0.004399,,,,,,,892ff6fd0997f78a96b99dd1504e9dd4, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,210,153.901538,31.022003,37.365865,37.694045,6.719826,12.175292,59.997337,57.752366,29.629160,31.726226,31.013676,37.365334,37.692753,0.016079,,,,,,,b0ac43c6c6069fbc3c0241e4c173ed92, +RA,aom,av2,0,A2,OldTownCross_1920x1080p50.y4m,1920x1080,50.00,8,1920x1080,235,53.692308,28.262061,36.219814,36.093624,5.305152,9.109942,31.939166,30.573771,25.369570,29.977021,28.256836,36.218393,36.092956,0.021897,,,,,,,228061383dd9142c6539e5e3a8d2c832, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,3762.495385,42.499262,46.860726,48.678543,14.455176,21.679716,99.656795,98.720145,44.261937,41.622966,42.436295,46.825355,48.638192,0.117449,,,,,,,0596689831fd5be4f4710e639cb2a4c9, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,1551.952308,40.975180,45.625074,47.107281,13.441845,19.803001,96.872995,94.808335,41.019796,40.423670,40.950335,45.604371,47.078419,0.136685,,,,,,,1ee0a885b74f31295051a55650062567, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,708.147692,38.820576,43.950813,45.005011,12.160307,17.301036,87.787488,85.405825,37.159841,38.795263,38.785926,43.926091,44.973272,0.190673,,,,,,,f018f1adee657e99e18bc2d13fc78d1a, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,335.150769,36.216585,41.942890,42.627022,10.835485,14.679921,72.855399,70.303193,33.377528,36.745244,36.170060,41.916026,42.589979,0.301424,,,,,,,48e085936c30e06a669c6603afdb4257, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,155.384615,33.256916,39.728867,40.059787,9.462055,11.984632,52.906263,50.544128,29.712795,34.401577,33.202771,39.698774,40.020627,0.390550,,,,,,,82c906661cd2bc51c9f6d532668715ce, +RA,aom,av2,0,A2,PedestrianArea_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,67.847692,30.008676,37.337620,37.328583,8.094585,9.239078,30.025134,28.410706,26.112542,31.610310,29.949980,37.317452,37.291281,0.373517,,,,,,,fe1d3cb16ea7f3fddf33766c7b84deca, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,7970.073004,46.490039,49.854942,50.704335,19.276126,24.850770,99.532371,98.198120,46.505187,48.259602,46.427794,49.814143,50.640558,0.228732,,,,,,,9d854bb6d12cd00635a6cd8430c14c53, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,3978.920772,43.761921,47.828450,48.369811,17.613415,22.282554,96.085776,93.792642,42.561794,46.137359,43.682126,47.771996,48.295698,0.246289,,,,,,,8039bfbb8d6e8d53a86ad48be6b581a3, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,1886.706524,40.427937,45.534358,45.721160,15.520082,19.137103,86.966982,84.203478,38.052094,43.465346,40.318129,45.463759,45.630435,0.341183,,,,,,,c98812448e72e1a9afef3c3542288c7e, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,868.160762,36.991035,43.245937,43.043513,13.426902,15.949395,71.599624,68.587751,33.743096,40.549241,36.863220,43.169299,42.942106,0.385202,,,,,,,c8108325b945c996efa5ecf9cf6050d1, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,379.669561,33.651966,41.133007,40.698538,11.611644,12.998147,51.048747,47.977468,29.859687,37.822505,33.516045,41.060612,40.607255,0.440444,,,,,,,a5145b903efb61aed4c29c2a71bb11ac, +RA,aom,av2,0,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,152.483824,30.415264,39.258458,38.299854,10.166735,10.330639,27.835835,25.394208,26.346374,34.906356,30.277052,39.205786,38.204334,0.418552,,,,,,,dec63fa82ff3cfbfc20e6ac3d12f18c5, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,110,19611.800000,40.499203,43.287028,45.625224,13.840477,21.068965,99.970509,99.962482,41.967800,38.754216,40.400265,43.206479,45.552138,0.000006,,,,,,,3a58d437d2c7d09a0ba216902973535d, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,135,9242.704615,37.556293,41.178525,43.926347,11.557700,17.481044,98.343196,96.824235,36.541779,36.484242,37.450085,41.126230,43.885619,0.000016,,,,,,,ea7b3bc28c3847d97444416e06d0da97, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,160,4094.681538,34.234248,39.248425,42.349753,9.218508,13.647447,79.126983,77.082620,31.469664,34.029620,34.087566,39.205646,42.318176,0.000105,,,,,,,ee70df7df2c33598143b830818ddd40e, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,185,1693.507692,30.953637,37.674049,41.059913,7.225414,10.147177,51.913303,50.404836,27.244453,31.575472,30.791035,37.642589,41.035374,0.000754,,,,,,,462c5110db0adda798228adba4a6c0eb, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,210,623.373846,27.908438,36.682194,40.311682,5.755920,7.196151,29.524361,28.724438,23.814052,29.310293,27.761137,36.667273,40.301873,0.005696,,,,,,,3e6cad2cc6cfee9fe801aa8a814db9f6, +RA,aom,av2,0,A2,Riverbed_1920x1080p25.y4m,1920x1080,25.00,8,1920x1080,235,196.592308,25.185033,35.990622,39.649432,4.766721,4.885040,15.718656,15.487786,21.045697,27.186665,25.073221,35.984399,39.644012,0.031509,,,,,,,79517d5c0a68d72198dd446bf7aebb8f, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,110,17902.963498,39.697695,43.970296,45.292794,14.719151,21.565090,98.340686,96.685129,42.788542,38.895302,39.548855,43.894221,45.227202,0.006093,,,,,,,9c79ece46f2767bd61f771114aa1bb4e, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,135,6335.723354,36.857411,42.204754,43.659764,12.825193,18.965849,92.967160,91.019067,38.426808,36.934474,36.748619,42.163869,43.628073,0.005019,,,,,,,c793db786afb97fe0ca5dcd64ae13cc5, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,160,2701.869208,34.258430,40.271395,41.837518,11.019159,16.044450,83.083255,80.947354,33.834730,34.972512,34.191326,40.247529,41.821172,0.011738,,,,,,,ccfffb736687c1fdefb5816cee7e77ed, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,185,1139.054791,31.275423,38.193184,39.903979,9.062224,12.830473,66.883952,64.871397,29.301566,32.754629,31.216247,38.173131,39.890705,0.081242,,,,,,,31271c9806ec5dff8cc3f100a36a3b52, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,210,447.003458,28.147172,36.061912,37.805316,7.214818,9.862394,46.819171,45.281109,25.164125,30.384602,28.095846,36.047547,37.797253,0.289072,,,,,,,fa3a63f96275a32ecc60e3df182ab69c, +RA,aom,av2,0,A2,RushFieldCuts_1920x1080_2997.y4m,1920x1080,30.00,8,1920x1080,235,150.016138,25.121790,33.855630,35.675086,5.553734,7.144549,27.727862,26.799915,21.494085,27.868169,25.088314,33.846574,35.672048,0.338373,,,,,,,eca7fe1331e2dadbfb1e77e496106fc0, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,110,2092.536000,48.503947,55.650068,56.034840,20.374030,25.040003,99.724070,99.180401,47.085250,49.164250,48.286710,55.591797,55.958417,0.689161,,,,,,,9c34025f246b5316850788e6f98ac705, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,135,865.028308,46.324614,53.527064,54.074978,19.118975,22.619975,97.085626,95.237324,43.926768,47.285200,46.030522,53.451492,53.978201,0.700048,,,,,,,a74b584a8e9ca6e166caa2a9e9b01d58, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,160,359.894769,43.762297,51.027943,51.741468,17.944483,20.010457,87.526947,84.820539,40.606933,44.991051,43.452352,50.918353,51.613419,0.714520,,,,,,,b7c09628485f494ea4eecb4bdb94eddb, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,185,161.082462,41.067963,48.347012,49.127707,16.993651,17.567886,72.853025,69.851462,37.484311,42.445564,40.800296,48.227131,48.970680,0.692077,,,,,,,6a495863e2963969224edaaf7e179f67, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,210,76.113231,38.158285,45.365782,46.275502,16.078419,15.176997,53.709189,50.814681,34.375697,39.530097,37.939145,45.241526,46.144446,0.518729,,,,,,,4dea81cf8c0895aa872e293f12185ec1, +RA,aom,av2,0,A2,Skater227_1920x1080_30fps.y4m,1920x1080,30.00,10,1920x1080,235,37.046769,35.025793,42.332829,43.331753,15.059047,12.772007,32.472266,29.902081,31.188003,36.459821,34.845175,42.248998,43.246850,0.532417,,,,,,,fba11da1be7d4796a13549bdd5414a62, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,110,24845.055252,38.932634,45.845476,44.046220,13.915155,21.348178,99.974335,99.966796,43.022884,38.716668,38.735967,45.813226,44.003864,0.084107,,,,,,,441b12e6df7e156f2092b11850fac417, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,135,11222.269423,34.836192,44.499073,42.593405,10.385850,16.862057,98.415104,96.971232,36.693949,36.159581,34.618281,44.473885,42.561843,0.113791,,,,,,,fad688acdf10aa2ac4c275e05aac926e, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,160,4234.326289,31.200569,42.869156,40.809633,7.478257,12.678514,81.760942,79.823881,30.772575,33.592422,31.023362,42.838951,40.761544,0.139340,,,,,,,b49678a03a5309d6ab90ea61fcf500cb, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,185,1467.072620,28.349028,41.377880,38.991952,5.628255,9.559043,58.065773,56.332652,26.279771,31.368673,28.224670,41.355127,38.938925,0.216944,,,,,,,cff844c6c647d0008598b9f26936e4d7, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,210,474.092677,25.983612,40.142121,37.947665,4.484806,7.328307,35.762819,34.541449,22.870533,29.409393,25.894655,40.126303,37.923227,0.282476,,,,,,,d175f0e4b804b8acff5707cf01205d5d, +RA,aom,av2,0,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,1080x1080,30.00,10,1080x1080,235,134.558979,23.881313,39.006847,37.087761,3.741082,5.536203,18.128595,17.588110,20.249403,27.545329,23.816833,38.988601,37.072205,0.234716,,,,,,,ccd544593325a7c4fc0cf420500ce1c4, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,45590.883692,38.062035,43.190650,45.826902,16.672764,23.886594,99.976419,99.969523,44.862219,40.763824,37.755887,43.001525,45.750793,0.000072,,,,,,,ce84b197ba9ef675976785839eb0f507, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,15430.606154,33.604538,41.068036,44.109828,13.360087,19.948128,99.918786,99.818668,38.754678,37.045202,33.304475,40.929522,44.070339,0.000049,,,,,,,4bb5a7c90e7cec7102f546b7916d1a94, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,5522.754462,30.486177,38.790583,42.211847,10.713447,16.835100,99.031081,97.960136,33.938016,34.250540,30.318220,38.689844,42.191750,0.000186,,,,,,,3b62ff08218446cc69d97779e0270c83, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,2252.909538,27.485885,36.572087,40.464049,7.806298,13.132011,89.228464,86.779102,29.027262,31.416024,27.404716,36.484076,40.450853,0.000877,,,,,,,ab8b4f584ffa8294c2b53c6b964cbe36, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,777.142154,24.229826,34.686067,38.786260,4.809285,9.012366,67.910745,65.891940,23.943115,28.343465,24.183490,34.614586,38.768765,0.019163,,,,,,,02a86be7a404fd637b01a7f1ce277323, +RA,aom,av2,0,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,180.203077,21.627248,33.076153,37.016022,2.664470,5.331314,45.115590,43.826273,19.746934,25.790712,21.591675,33.030344,36.994583,0.075715,,,,,,,0826e81981a92fad6efb1140f1bfcd52, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,110,16447.652040,41.964871,47.664585,50.101010,16.895277,24.452704,99.977821,99.972975,45.972982,43.302434,41.898209,47.641242,50.090764,0.004451,,,,,,,e19dfb4983feb6a6bd4abfc80251d839, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,135,7183.478675,39.408949,46.278698,49.063346,14.984548,21.886468,99.973180,99.964951,41.542653,41.429835,39.348813,46.262541,49.053428,0.004664,,,,,,,0c6cfa9483503c9728ec9d842b294518, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,160,3022.222086,36.576377,44.725532,47.728259,12.838769,18.963356,99.959141,99.947045,36.753548,39.250876,36.523369,44.711789,47.717881,0.007665,,,,,,,c3791f94d7e382ec24b1f4170c782e6e, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,185,1359.042189,33.912598,42.917860,46.213150,11.492947,17.022530,99.921192,99.905879,32.698560,37.139064,33.874036,42.901396,46.197969,0.007804,,,,,,,3cc8c2a616c1e5f7441d889e5fe35369, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,210,684.640898,31.050684,40.942813,44.324808,10.218441,14.935538,93.523981,90.818690,28.755319,34.773345,31.016806,40.925220,44.298225,0.006596,,,,,,,78a1da59c2b548f3f81bb0ad7ed3bd27, +RA,aom,av2,0,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1920x1080,60.00,10,1920x1080,235,357.936218,27.722287,38.957031,42.070571,8.630042,12.220449,75.676991,73.051482,24.572273,31.940452,27.688517,38.933135,42.063538,0.003375,,,,,,,a72037214d440e75db7c3648e886d064, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,110,2964.198263,45.704825,49.268395,50.232010,20.701955,27.182928,98.867007,97.540039,47.648731,47.027649,45.646892,49.194680,50.160040,0.014359,,,,,,,73ecd77b4b182442973cc8cddf3023fb, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,135,1211.694767,43.412820,47.181185,48.306506,19.103802,24.876782,96.883603,94.737151,43.984828,45.024170,43.370911,47.142977,48.268008,0.030480,,,,,,,3c4a815c89732d56951f380c18e7b878, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,160,548.477369,40.649439,44.555023,45.983308,17.105367,22.044327,91.562246,89.119377,39.691089,42.519582,40.608612,44.526492,45.945366,0.081001,,,,,,,25a1025d2f9b413096ae41c266c5d967, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,185,261.287021,37.418003,41.461837,43.259709,14.714662,18.732275,81.572230,78.895863,35.123502,39.480262,37.380642,41.445707,43.223019,0.204466,,,,,,,a5c4197b279a0e715a73e147f25af099, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,210,122.810728,33.876864,38.124943,40.433022,12.228754,15.246892,65.450655,62.639088,30.651827,36.121276,33.846345,38.118065,40.388565,0.258036,,,,,,,3c4495ec0f70f81a87bc7566f8ec28bd, +RA,aom,av2,0,A2,Vertical_bees_1080x1920_2997.y4m,1080x1920,30.00,8,1080x1920,235,54.788903,30.323056,35.028309,37.192024,9.975441,11.867221,43.953823,41.833114,26.505319,32.714438,30.300875,35.026229,37.117464,0.170346,,,,,,,82177cd22f334ea5e59568bf4103cd28, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,4280.004923,46.068075,51.029198,50.801811,19.886444,24.841984,99.917014,99.310264,45.893934,46.634502,46.008395,50.983256,50.757510,0.280660,,,,,,,e8394ed174f7b551ce918f53614f4f58, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,1997.030769,43.477337,49.398644,49.223641,18.260257,22.246887,97.869975,95.723453,42.430459,44.811303,43.408792,49.370741,49.197599,0.294387,,,,,,,3e7cfa68858a81c30aa8428699dbfb23, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,936.646154,40.366534,47.331008,47.221283,16.245255,19.197132,90.400286,87.531241,38.380134,42.506110,40.282498,47.304066,47.193693,0.342913,,,,,,,440ba314f820b50f558cdc465b930580, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,450.393231,37.073670,44.977404,44.747455,14.145375,16.079412,77.760620,74.437320,34.271881,39.901885,36.991776,44.948373,44.713286,0.349589,,,,,,,4531466ac520b76979f4049f5f06f3bb, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,215.545846,33.737623,42.358473,41.894987,12.259806,13.168429,60.743939,57.276968,30.341779,36.998435,33.663628,42.326487,41.854653,0.382445,,,,,,,3440a0d78ffe0ba7e0e3b8da50003e26, +RA,aom,av2,0,A2,WorldCup_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,235,99.607385,30.403243,39.574269,38.965080,10.709769,10.597491,40.988799,38.110132,26.644612,34.049489,30.341579,39.550203,38.925763,0.364005,,,,,,,d9b67a34a85b5baf1e708a280a2acb43, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,3924.878769,42.742136,48.832179,47.637632,17.336896,23.537058,96.659818,95.087007,44.082799,43.448813,42.457406,48.768375,47.480752,1.321164,,,,,,,f1037bbf7388e4269aa16c9fc7a065b6, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,1757.499692,39.949078,47.118520,45.533082,15.371560,20.578990,91.092279,89.211542,40.274696,41.143325,39.609873,47.082978,45.369506,1.356029,,,,,,,46b3af9b413a91ec6bd2acb2c498348d, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,784.410462,36.856229,45.020876,43.086818,13.179113,17.371115,80.436707,78.393328,36.074633,38.528501,36.460380,44.991612,42.870716,1.457450,,,,,,,a71447b2e85603668a498260fc787508, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,337.510154,33.611912,42.626206,40.521539,10.857501,14.138471,64.634385,62.755234,31.938260,35.688071,33.151900,42.586137,40.236589,1.519562,,,,,,,3502cee11b77fa5e2f2d3f99bf81a5c4, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,127.524923,30.341322,40.078844,38.005754,8.602468,10.993084,46.251135,44.693163,27.932777,32.743686,29.784193,40.021977,37.605912,1.676973,,,,,,,43f43d7474c504d07bcb899e296e87e4, +RA,aom,av2,0,A3,ControlledBurn_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,42.585231,27.477641,37.728942,35.404495,6.924305,8.208934,28.383205,27.388197,24.343661,30.026350,26.853349,37.638312,35.003814,2.053074,,,,,,,87cf599b634ca829d1965153a2b3f46f, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,7162.339199,41.601586,45.825794,44.641932,17.080583,25.483209,99.537851,98.426421,47.641120,40.888417,41.525573,45.800757,44.620020,0.000311,,,,,,,e1578ae2c557dc139101733bc43f1ec8, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,3064.036271,38.502310,44.009970,43.554187,14.333789,22.099284,97.676295,96.000405,43.060716,38.960615,38.442281,43.988323,43.545152,0.003166,,,,,,,b046c90b2a34016731c859e8291383c0, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,1242.979789,35.269647,41.941022,42.148733,11.888673,18.880879,92.817403,90.810035,37.997386,36.769881,35.220942,41.917828,42.137381,0.058764,,,,,,,5db050e17280252d01f0f745e99efaea, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,485.097672,32.107316,39.763358,40.605975,9.624306,16.004813,83.216264,80.813236,32.964984,34.412802,32.068473,39.741519,40.587421,0.178520,,,,,,,807e033bf3265b7183acbd9cd23c1bd4, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,184.368247,29.200754,37.595030,38.885884,7.601923,12.883583,66.197952,63.690920,28.130489,31.989395,29.173858,37.577733,38.870432,0.208381,,,,,,,d6d9cc4155a88054c3df84a86c7d4b21, +RA,aom,av2,0,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,71.219857,26.559844,35.582778,37.227016,6.007825,9.850033,43.984939,41.854822,23.981818,29.642188,26.539171,35.570079,37.211382,0.201462,,,,,,,47bba64bb7f82af31130d78c209bd93a, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,1895.700923,43.495407,49.038110,49.746622,15.647569,22.490133,96.751548,95.365536,44.087529,44.364800,43.449445,49.031911,49.742387,10.517581,,,,,,,1aeaef06f62038f5c5f1685fa1cfe084, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,587.335385,42.292818,48.238333,48.881506,14.932381,21.414390,95.520732,93.846857,42.642486,43.528868,42.278644,48.234937,48.878335,11.168016,,,,,,,0edacaf6135265f2410f5e0503c97b02, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,247.598769,40.776409,46.778203,47.362100,14.078613,20.089929,92.787597,90.823095,40.519641,42.376463,40.767703,46.773636,47.356830,11.098724,,,,,,,13203dcd0c9b06b5dfb2958a187459db, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,116.267077,38.504241,44.849128,45.128065,12.767951,18.152430,87.032342,84.457049,37.386929,40.656986,38.495398,44.845543,45.122537,10.981287,,,,,,,19de5020257ddc877d33525617fbaa81, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,56.761846,35.672042,42.112661,42.779704,11.067127,15.664498,76.152610,73.216493,33.592360,38.499940,35.662354,42.109345,42.776473,11.188040,,,,,,,1987876dcc85d2c63e561bf34adaff15, +RA,aom,av2,0,A3,Johnny_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,27.758769,32.438557,38.937579,39.385758,9.386861,13.042541,58.526421,55.408280,29.413504,35.809586,32.427661,38.936532,39.383580,11.138172,,,,,,,3d89973e391255a433ef7a60e7b8486c, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,110,2018.208000,43.988326,48.605877,49.590737,16.335601,23.094160,96.849888,95.519978,44.211294,43.883840,43.949081,48.597903,49.585899,8.286567,,,,,,,2c313a828ef8932976a10dbe0d536af0, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,135,729.348923,42.566326,47.637451,48.557857,15.553833,21.786306,95.559206,93.898218,42.476891,42.947953,42.550480,47.633551,48.554773,8.354710,,,,,,,6aaed9d93f3032776f6cc8e459342a7d, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,160,323.220923,40.616322,46.053181,46.942272,14.542642,19.978955,92.420216,90.395428,39.872067,41.595309,40.600954,46.048635,46.937883,8.370846,,,,,,,2269f533725f95fd7e61e8bd4e08345c, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,185,154.020923,38.050702,44.033492,44.778471,13.219509,17.665000,85.833840,83.191231,36.506726,39.794024,38.036263,44.026602,44.772714,7.964599,,,,,,,ce36144e8ea434b19bc6dfc0d6044d8f, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,210,75.323077,34.968901,41.332516,42.092922,11.683196,15.082424,74.121794,70.958849,32.630603,37.462899,34.953369,41.326268,42.086642,7.879840,,,,,,,7f84a75e8fc2b84a036bbf58cc7bffff, +RA,aom,av2,0,A3,KristenAndSara_1280x720_60.y4m,1280x720,60.00,8,1280x720,235,37.140923,31.598026,38.579790,39.220806,9.991178,12.374643,58.110881,54.821061,28.586953,34.681009,31.586886,38.575611,39.217846,6.777418,,,,,,,13eec0e4bd673f7f86ede109260b4dc3, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,110,4521.597787,44.387462,46.575569,46.999423,18.952919,26.259477,99.974980,99.965631,47.681190,43.960530,44.326702,46.546311,46.979503,0.033314,,,,,,,e4709dd09d98198e2fcdddf436df8753, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,135,2059.529394,41.457183,44.198645,45.218617,16.461199,23.123919,99.750692,98.584693,42.947360,41.839823,41.405048,44.169638,45.204154,0.063338,,,,,,,53f7679d86220b12c5191e4695772f16, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,160,915.194344,38.157625,41.361706,42.904394,13.622294,19.506605,93.521219,91.087278,37.761870,39.283923,38.112294,41.328020,42.884601,0.101990,,,,,,,0891083bb8d20d4b2b816e81b7e83675, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,185,410.823638,34.921388,38.366474,40.422318,11.098583,15.961897,79.764995,77.167532,32.890318,36.576680,34.882388,38.330199,40.399431,0.120696,,,,,,,dc10540ea7f8cae5c057cf7f5db8c512, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,210,183.018213,31.737933,35.466342,38.131959,8.954261,12.664162,58.717112,56.283727,28.499683,33.843352,31.703137,35.429523,38.099643,0.092153,,,,,,,848951ffd7393dd4d1b149fe4eb68d9d, +RA,aom,av2,0,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,1280x720,60.00,10,1280x720,235,77.191731,28.557188,32.683621,35.886472,7.090839,9.456120,33.198092,31.311651,24.557456,31.078358,28.526050,32.630616,35.843048,0.040546,,,,,,,ffa40057c7e3d87c8fd4487f185140ff, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,2457.020308,44.024858,49.683412,49.619792,17.755793,24.540617,96.188124,94.330712,45.342051,43.765087,43.980429,49.678159,49.609381,1.755751,,,,,,,c09f922639c46c2edcf606ad9eb5097d, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,897.618462,42.438613,49.015699,48.586903,16.946954,23.128024,94.246108,92.012293,43.415851,42.753069,42.417752,49.012241,48.578228,2.103416,,,,,,,a49c10109546c1bb4ab056ab348fa907, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,400.305231,40.363574,47.925176,47.185468,15.872522,21.220267,90.098807,87.538676,40.452856,41.386620,40.335964,47.919033,47.180590,2.797372,,,,,,,e285ab38db4174e03498fe54738d06fd, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,197.774769,37.526814,46.328177,45.019654,14.246020,18.618133,81.738006,78.820470,36.413120,39.420894,37.488420,46.319573,45.014727,2.985856,,,,,,,0e5c7857736d63e1f486a106aceb46b8, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,94.545231,33.999705,44.114340,42.242862,11.899506,15.192609,65.651671,62.685894,31.658855,36.714043,33.958226,44.108104,42.240494,3.350801,,,,,,,d71570823bac8d5d51e4a316afcc752d, +RA,aom,av2,0,A3,Vidyo3_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,41.080615,30.276853,41.452638,39.598595,9.386797,11.277325,42.649157,40.010319,26.992266,33.593405,30.243373,41.451454,39.596038,3.162327,,,,,,,4272c717e4d7c4eadf9150a906e0efc7, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,110,2622.114462,43.578892,49.485983,49.756073,16.473032,23.631532,97.000096,95.435744,44.735511,43.666369,43.503073,49.477596,49.745473,1.450582,,,,,,,75f86aa92014c2d082d9025eeab6634d, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,135,943.421538,41.919506,48.559520,48.800681,15.295851,21.842012,95.207078,93.264347,42.420338,42.538991,41.883995,48.552166,48.789029,1.683240,,,,,,,49f27d04088314281fd187eb0da8e6b4, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,160,401.752615,39.806716,47.097710,47.276849,13.819531,19.422335,91.323051,88.975830,39.151591,40.966851,39.776491,47.082737,47.259726,1.757516,,,,,,,09f4317f96930a3f4fba8ad115a91ee4, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,185,184.201846,37.205457,45.216016,45.102278,12.181629,16.684672,83.845153,81.048255,35.450483,38.924606,37.169616,45.202939,45.079439,1.848129,,,,,,,81143acb89c42feea8df0e913573b64c, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,210,84.409846,34.187881,42.624599,42.323132,10.522005,13.961806,70.076538,67.022265,31.481648,36.333822,34.145424,42.596944,42.291020,2.255364,,,,,,,1f57062e858a6d59f293121990f72f2f, +RA,aom,av2,0,A3,Vidyo4_1280x720p_60fps.y4m,1280x720,60.00,8,1280x720,235,39.670154,31.060149,39.946572,39.247456,9.039472,11.434920,52.651318,49.126997,27.609873,33.701985,31.017564,39.935258,39.221312,2.402816,,,,,,,7ee02697bb163908a1dcbcba88d13fec, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,110,8450.392615,42.030237,49.456471,51.014309,16.601903,23.701521,99.978337,99.973995,44.395393,44.896637,41.869543,49.415231,50.975345,0.193756,,,,,,,302afc642e331804b0bac967c23565b4, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,135,3956.093538,38.338108,47.851986,49.369851,13.575588,19.596160,99.975338,99.966971,38.800633,41.953555,38.148308,47.813207,49.335205,0.219416,,,,,,,9c9955bbd17bf8ea319b115a86c3fc96, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,160,1573.816615,34.617226,46.256807,47.854902,10.667736,15.336207,94.875380,93.034790,33.169435,38.850281,34.414457,46.210994,47.823407,0.322193,,,,,,,8bf31c18ab5a6703b60fffb666eed4b4, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,185,552.612923,31.391664,44.508599,46.522665,8.505533,11.624245,80.817438,78.510975,28.689707,35.909965,31.217600,44.456147,46.494039,0.596751,,,,,,,da2dfebf93d265e2d00bc4e96ac33811, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,210,180.075692,28.796343,42.976090,45.196879,7.200321,8.796934,66.384233,64.103975,25.588760,33.105848,28.677468,42.942433,45.173884,1.525582,,,,,,,3d125b7139b23bbe8b7686388b4f43fe, +RA,aom,av2,0,A3,WestWindEasy_1280x720p30_420.y4m,1280x720,30.00,8,1280x720,235,58.766769,26.488898,41.181472,43.207720,6.440797,6.752247,55.266249,52.954785,23.241322,30.903304,26.414117,41.133938,43.188381,1.532126,,,,,,,f0c33d1b90b05068826006c10e5ae02e, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,110,907.666154,42.398415,43.881690,46.100069,20.985994,28.200020,99.976792,99.970689,49.606808,43.113750,42.222161,43.718891,45.999912,0.016950,,,,,,,a756b489f5143c2350451811fd015240, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,135,397.444615,38.977841,40.926663,43.706650,18.415143,25.298112,99.972263,99.760078,44.919165,40.511983,38.801737,40.793213,43.624576,0.052367,,,,,,,e62ec4feede50cabf7c4c15f7b64137d, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,160,170.786154,35.364214,37.924507,41.478734,15.442974,21.797804,97.163385,95.264016,39.340392,37.793444,35.204077,37.815264,41.416749,0.108931,,,,,,,712a12e726f1ed3f5bdf864a7f38da7a, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,185,75.783077,31.708775,35.760421,39.569619,12.448116,18.308954,87.182067,84.947408,33.938756,35.279960,31.570512,35.683630,39.520925,0.140293,,,,,,,4b123435c0748d2e89e9deb894e997f7, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,210,32.729231,27.978740,33.960841,37.983330,9.476728,14.440195,70.615637,68.675614,28.686953,32.562579,27.869016,33.889511,37.926376,0.182245,,,,,,,e67f3aa6c22094b1c9ebfc9a45be2d96, +RA,aom,av2,0,A4,BlueSky_360p25_v2.y4m,640x360,25.00,8,640x360,235,12.829231,24.259752,32.265336,35.934281,6.786128,10.392126,45.640241,44.142899,23.142772,29.416628,24.178866,32.208766,35.886135,0.303353,,,,,,,4771094cfd817b2310498ce74ed185c0, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,110,6321.361715,39.236548,44.240540,49.159169,13.908746,20.648012,99.972582,99.927551,42.703030,39.969348,38.964876,44.141828,49.099256,0.260374,,,,,,,11b2917759e5ba5399132fd2cb44c5a9, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,135,3094.069008,34.525098,41.950927,47.521337,10.576785,16.583314,94.849759,93.153773,37.003328,36.767803,34.162521,41.859535,47.447903,0.258248,,,,,,,03d9d8a3c9c3a71a200c355c2c8ce1d6, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,160,1104.839161,30.198721,39.803820,46.029651,7.648276,12.791727,73.068334,71.406762,31.502885,33.739042,29.871308,39.723461,45.952138,0.239572,,,,,,,cfc2202cae0efe56efa94d4bf2616a50, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,185,300.388227,27.154435,38.319429,44.681819,5.678767,9.595373,42.839846,41.715271,26.832375,31.365036,26.951133,38.254681,44.494511,0.311709,,,,,,,8a00b48db46f1e48d5bf7461cf6d45ed, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,210,78.322293,25.343071,37.001477,43.077390,4.759201,7.296512,18.268757,17.756058,23.574155,29.497206,25.239657,36.935827,42.784668,0.215485,,,,,,,8d22e28166423f9c881f3abf4e9eaac2, +RA,aom,av2,0,A4,RedKayak_360_2997.y4m,640x360,30.00,8,640x360,235,22.471067,23.852095,35.653676,40.677026,4.283190,5.554605,6.210682,6.135180,21.251925,27.731266,23.773390,35.569226,40.367193,0.261199,,,,,,,aa676f4856e3089427c63f254c65cea4, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,110,549.246446,41.952521,48.934723,49.922759,20.419523,27.770632,95.609486,94.171267,50.039471,43.254239,41.874359,48.931536,49.920800,1.149903,,,,,,,e12393d5319b105f6e63fcc589a2121f, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,135,265.447783,39.087973,47.211907,48.656747,17.983695,25.383820,93.936692,92.290971,46.760022,41.295778,39.052821,47.211119,48.656474,1.248380,,,,,,,42687c549d7dbc9a8ee65a4ff369b28d, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,160,140.637824,35.585653,45.524997,47.064786,14.725670,21.965087,90.273887,88.347691,42.000082,38.805911,35.568084,45.524899,47.064378,1.108378,,,,,,,433189864acdedc7a182f656ed9d65c8, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,185,76.437409,31.697095,43.525877,45.464376,11.261327,17.974677,82.755332,80.726212,36.436126,35.774159,31.693441,43.525278,45.464225,1.188469,,,,,,,47e81960c8c65a7c9b3c1f0537b6d404, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,210,31.838316,27.178358,41.419475,43.186625,8.283708,14.008885,65.225498,63.260623,30.335230,32.282280,27.177971,41.418668,43.185989,0.995691,,,,,,,3ec72cdac4f1c5e711ef1a175daea6d4, +RA,aom,av2,0,A4,SnowMountain_640x360_2997.y4m,640x360,30.00,8,640x360,235,11.584108,23.551158,39.753844,41.892308,5.970873,10.604793,38.466856,36.976786,24.544394,29.241324,23.551104,39.732082,41.882490,0.710330,,,,,,,1996afb0f35540ed8ef7abf931c55eef, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,110,256.578498,46.739909,50.239000,51.909636,19.776494,26.670642,97.893384,96.578887,48.646770,45.778884,46.610326,50.194840,51.845054,0.018829,,,,,,,8f99ea91932cb07544c677348e207388, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,135,122.674249,44.404052,48.379713,50.387382,18.428060,24.380835,96.083334,94.171752,45.070293,44.164798,44.220167,48.319126,50.276065,0.044827,,,,,,,c9bca7cb5e3120ca07d29dc2e93afeb1, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,160,59.532468,41.481763,45.790887,48.156360,16.904736,21.639268,91.189083,88.399165,40.895566,41.928764,41.268480,45.728424,48.027286,0.093944,,,,,,,4baddf6335a9ba4b64cf4459371add68, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,185,29.835395,38.315066,43.057817,45.576385,15.125560,18.613327,80.114155,77.048692,36.576750,39.364318,38.092800,42.994018,45.416461,0.113209,,,,,,,66fde0e553aa378a53f3d68b46be1e6d, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,210,16.052870,35.131448,40.126428,42.909511,13.330970,15.481821,63.516543,60.655391,32.411254,36.529337,34.902547,40.081794,42.744683,0.111495,,,,,,,3879341cd8412b14585125d0f047ea87, +RA,aom,av2,0,A4,SpeedBag_640x360_2997.y4m,640x360,30.00,8,640x360,235,8.882195,31.375536,37.603481,40.371819,11.200870,12.041328,40.924432,38.187989,27.960763,33.162382,31.168212,37.557657,40.156037,0.156700,,,,,,,decd1f9141a6ac3242af804aa8e511aa, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,110,1272.584646,40.555686,46.548051,45.899039,15.757996,24.900974,99.796213,98.447627,49.001601,40.869889,40.490045,46.534069,45.887686,0.000110,,,,,,,27a12f4f1600e3ca3f0db605e2511925, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,135,529.029125,38.338422,44.550494,44.108040,14.139890,22.685558,98.219883,96.355697,45.265026,39.048385,38.311668,44.541564,44.103732,0.004605,,,,,,,d9ec51814bc62d941c8a0d493c55feb2, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,160,240.070084,35.705251,42.251623,41.767717,12.223858,20.077475,94.515423,92.250205,40.523158,36.887814,35.691022,42.241565,41.763885,0.034135,,,,,,,8a68a718bf9d77d600261c51d76a1c44, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,185,109.227388,32.172929,40.015488,39.437634,9.598359,16.562220,85.054671,82.213979,34.756261,34.230161,32.162456,40.004998,39.434154,0.040344,,,,,,,1dd617efeea89052219724ea6317e708, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,210,45.392146,28.487319,37.891265,37.447884,6.767209,12.389368,64.819986,62.065940,28.794009,31.267459,28.480859,37.885513,37.443790,0.049006,,,,,,,3b8c501e5921fcf6621a3c6d67e2a465, +RA,aom,av2,0,A4,Stockholm_640x360_5994.y4m,640x360,60.00,8,640x360,235,16.871744,25.240902,36.005252,35.624396,4.531860,8.392866,34.329874,32.691577,23.658461,28.580722,25.235119,35.997939,35.622116,0.060426,,,,,,,81d09652ee569cafa99e80fe7f3bf426, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,110,854.309998,41.907481,48.174545,48.043884,15.919749,24.317880,96.876536,95.024906,48.705644,42.478458,41.825333,48.152186,48.020144,0.000000,,,,,,,1ad9db133c06c23e93fa12c0c36c7e82, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,135,401.260893,38.845385,46.371575,46.089172,13.140789,21.151468,94.374245,92.035531,43.940485,40.189064,38.775911,46.351770,46.055569,0.000001,,,,,,,4e6efaceb322418609fb13f58d6f134d, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,160,165.192961,35.160864,44.434632,43.886069,9.366099,16.356911,87.658763,85.114055,37.675829,37.172124,35.101215,44.411562,43.843203,0.000305,,,,,,,7fbfe9de0541ce620940bbd1f7fa0518, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,185,65.100438,32.050457,42.576307,41.351420,6.772423,11.956641,73.884066,71.406941,32.036147,34.608408,31.997760,42.561409,41.324474,0.029476,,,,,,,d81046ed9a4a065e4bba1170e2795430, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,210,26.506417,29.560916,40.693812,38.917909,5.747702,9.389372,53.327033,51.607741,28.245402,32.701780,29.512952,40.675941,38.905731,0.958087,,,,,,,084c6c8b33f29e839372cfa591be7a8c, +RA,aom,av2,0,A4,TouchdownPass_640x360_2997.y4m,640x360,30.00,8,640x360,235,10.835319,27.140541,38.884115,36.869347,5.166347,8.192368,34.693395,33.569890,24.935017,31.079012,27.096195,38.878680,36.862857,0.981788,,,,,,,c5b23ca8869c5b8f0fdbd81d1e3a9cf0, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,110,622.563692,44.417605,47.564550,48.712530,20.568364,29.221129,97.098820,95.853941,48.677385,43.524608,44.360109,47.550329,48.695652,1.850766,,,,,,,28445caef565e62b894805cd010146cf, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,135,330.313846,41.221524,45.373260,46.355439,18.389654,26.530843,95.567432,94.058061,45.149313,41.332272,41.162876,45.362545,46.337163,2.029630,,,,,,,2722f0c42ad85a7dfd04f05812788294, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,160,169.366154,37.373826,42.811851,43.589284,15.469723,22.879118,91.811673,89.874984,39.984786,38.586977,37.326316,42.802944,43.577842,1.853386,,,,,,,264056e464f4b530f9e93e13bc845321, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,185,84.498462,33.346200,40.091646,40.614805,12.191385,18.804787,84.109426,81.720522,34.401561,35.504250,33.316916,40.083176,40.601998,1.972027,,,,,,,7a85b85879bb5d9d843a0e72150cca82, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,210,37.916308,29.239979,36.467494,37.381194,8.866720,14.364651,69.019638,66.236425,28.722868,31.978429,29.225957,36.464285,37.372942,1.931837,,,,,,,5b6af978de6171cc33f59a5b8d80c1b2, +RA,aom,av2,0,A5,FourPeople_480x270_60.y4m,480x270,60.00,8,480x270,235,16.711385,25.599002,34.392270,34.907701,6.188940,10.465797,46.967602,44.421215,23.767257,28.909382,25.590522,34.390596,34.903917,1.674532,,,,,,,c80a52e31946b23543fb4065481e8d58, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,110,4355.393846,38.501113,41.608291,43.775434,16.886905,25.339452,99.320757,98.287482,46.545673,38.978735,38.203016,41.459103,43.689413,0.573435,,,,,,,ff6312ef02215c643dd5b5af35523f28, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,135,1901.387692,33.934050,38.386235,41.225620,13.140918,21.176503,95.831037,93.841930,40.773347,35.397165,33.662387,38.289748,41.144796,0.952042,,,,,,,4bd3a42373287bcbbecaf6f58979904a, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,160,760.529231,29.858114,35.643060,39.347270,9.450097,16.715600,86.216011,83.948942,34.428142,32.161018,29.642474,35.564631,39.284404,1.366102,,,,,,,f2d69bafb14a32822c8fddc0ce160fbd, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,185,280.735385,26.525020,33.856218,37.916704,6.462738,12.615811,69.200770,67.025587,28.870369,29.417145,26.385943,33.786726,37.869335,1.316949,,,,,,,649b47ef3e31f37d6a48e77dae4b0879, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,210,76.821538,23.699571,32.232932,36.790780,4.192853,8.922921,43.196074,41.714915,24.093189,26.920954,23.598423,32.179780,36.762762,1.623560,,,,,,,8ce20803ba9584f69d808122fccdb9a9, +RA,aom,av2,0,A5,ParkJoy_480x270_50.y4m,480x270,50.00,8,480x270,235,19.350769,21.738423,30.705152,35.474243,2.910210,6.087134,19.470356,18.877548,20.446888,25.034555,21.668130,30.659126,35.434125,1.910295,,,,,,,10763a80298603afdc94e160f0647e30, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,110,2134.555906,40.691109,49.774613,47.508455,17.199084,24.187589,96.099119,94.302908,47.119030,42.213652,40.550262,49.734822,47.462689,0.097083,,,,,,,464297c4781126b1e3174e265b01802b, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,135,873.826481,36.896302,47.749010,45.133003,13.822766,20.306784,91.657192,89.508497,41.459440,39.342293,36.735944,47.720792,45.101970,0.149029,,,,,,,fe341bb73999ab5f2547e0ef39e34143, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,160,323.491893,33.546230,45.528605,42.700817,10.592851,16.444510,83.069885,80.654773,36.121589,36.544960,33.424631,45.497594,42.674750,0.178817,,,,,,,88285b4f226f217371ea8cf85658a17d, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,185,117.626374,30.652181,43.302063,40.347431,8.227432,13.138981,69.083988,66.432352,31.579473,34.027260,30.558331,43.276691,40.328811,0.196130,,,,,,,d1703d029a7f8d1e3af1465ad17a0b65, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,210,42.773227,28.017550,41.231361,37.985594,6.316828,10.372055,49.320578,47.137580,27.843404,31.609419,27.953189,41.207404,37.974304,0.224679,,,,,,,4fec1448cb651cb1514b11e574aa06c1, +RA,aom,av2,0,A5,SparksElevator_480x270p_5994_10bit.y4m,480x270,60.00,10,480x270,235,13.504034,25.371484,39.801093,35.434995,4.259197,7.641004,25.013196,23.693521,24.307974,28.981308,25.329148,39.792788,35.413095,0.204252,,,,,,,4e00dac242da2e5be7ee1311e0799e0c, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,110,652.374702,41.814400,51.731838,51.457325,16.876809,24.061872,98.080784,96.691062,44.829723,44.455163,41.607195,51.590090,51.349798,0.357043,,,,,,,70a2e3d9fb23a1898f34ea1fa5005457, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,135,287.090755,38.674725,49.971166,49.867772,14.065185,20.907814,95.707531,93.384939,41.037519,41.855267,38.509893,49.791897,49.766190,0.394427,,,,,,,87685fddd7f308e8d0d8e545fb2bbf66, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,160,119.313917,35.405363,47.917376,47.755540,11.032729,17.108891,89.130841,86.444173,36.352089,39.004856,35.276521,47.690490,47.611080,0.495529,,,,,,,28930fc5df886e12b395aefc876f24e9, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,185,40.823792,32.504196,46.093844,45.524520,8.503394,13.199080,75.894007,73.160009,31.859859,36.441837,32.424927,45.795527,45.358697,0.515192,,,,,,,bc0afcf19e8924b6d39deb644325298c, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,210,14.155076,30.370227,43.839283,43.133337,7.359908,10.963474,58.441846,55.497164,28.670197,34.314110,30.315867,43.622341,43.067741,0.814951,,,,,,,f9a4333aaa31a2d7601d11b6c8fccafe, +RA,aom,av2,0,A5,Vertical_Bayshore_270x480_2997.y4m,270x480,30.00,8,270x480,235,6.803658,28.305461,40.308909,40.535045,6.572467,9.334102,39.214232,36.206795,25.860936,32.020910,28.160697,40.143893,40.495962,0.607743,,,,,,,7c8df68e54d11b7bf195e1d8e9fb6a72, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,110,12194.165169,39.687942,45.964170,48.264772,12.981490,21.282615,99.342483,98.141256,44.145828,42.874862,39.554788,45.877378,48.194905,0.364191,,,,,,,2eee165297e8c7def0c268d4b17fde50, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,135,5166.631385,37.081014,43.908186,46.570149,11.502336,18.830624,93.790312,91.675168,39.679200,40.728084,36.977233,43.837100,46.497069,0.582501,,,,,,,9ebaf8f3074a6bfe1635740047d2b23d, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,160,1856.914708,34.099980,42.133932,44.814492,9.787671,15.768300,79.962502,77.703179,34.460484,38.330838,33.978311,42.068862,44.736635,0.613877,,,,,,,f6ee22b10bec509c33b088be36e7cde5, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,185,596.021169,31.327074,40.494214,43.153186,7.987158,12.528739,59.296305,57.376721,29.861388,35.998163,31.220857,40.429731,43.073529,0.646431,,,,,,,3633604c14ae51e3fe74b4dc47f945aa, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,210,172.148677,29.025884,38.902871,41.471824,6.483558,9.637956,37.614065,36.256038,26.370292,33.814033,28.955740,38.853583,41.402845,0.650402,,,,,,,10b3f6575a7b782f4c5cd2d1f22a1aef, +RA,aom,av2,0,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,2048x858,24.00,8,2048x858,235,44.445046,27.224376,37.221232,40.013585,5.467058,7.413573,19.658011,19.010559,23.899042,31.781207,27.186634,37.185514,39.964275,0.765741,,,,,,,7998c77de48abeb067ff4dbfd6f36c64, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,110,64949.741538,38.113381,45.095574,46.720693,14.039010,22.125622,99.975972,99.969768,44.236172,39.954181,37.943955,45.047675,46.697747,0.013475,,,,,,,00ab266747bc21bc176aea09fe32573c, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,135,22187.645538,34.459544,43.008960,44.693847,11.187614,18.514830,97.903841,96.006574,38.426629,37.086894,34.315875,42.979613,44.680762,0.020142,,,,,,,7187f78ce7f9f6a2e1349fe3eadd64f9, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,160,6661.174154,31.545814,40.982086,42.808444,8.763040,15.144436,89.061223,86.765461,33.278084,34.641558,31.468257,40.957263,42.796730,0.039743,,,,,,,ac5964ee9d76d8655a207faa5e851553, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,185,1996.829538,29.179843,39.041210,40.897449,6.657878,12.020507,76.894611,74.400379,29.023140,32.400105,29.147359,39.018771,40.887741,0.086858,,,,,,,20a88dd41d642843ce4ba7d5961807b5, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,210,594.435692,27.048551,36.963332,38.794657,4.950483,9.137806,60.736806,58.386046,25.413456,30.215451,27.034706,36.951743,38.786278,0.093705,,,,,,,a3521da9fb86eb0d90dd2279495db5c4, +RA,aom,av2,0,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,1920x1080,60.00,8,1920x1080,235,168.129231,25.055017,34.650533,36.546901,3.844137,6.733920,43.935453,41.708101,22.382339,28.113344,25.046467,34.643857,36.538398,0.107449,,,,,,,a80769018b802f5642ccc37a52fe3960, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,110,4838.711631,48.559406,49.135234,49.456890,24.634119,32.285076,99.232319,98.199468,52.569863,51.241879,48.155929,48.550723,48.466742,2.176119,,,,,,,41bd4403cc303b8c3e1bd6c4f1d1d7ed, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,135,2651.672123,44.765593,45.387972,45.776466,22.322952,29.246618,98.116635,96.322233,48.468031,48.462697,44.184685,44.558413,44.429427,1.429026,,,,,,,cc92acf6a23c5bc0afcd45212f147cf9, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,160,1344.403200,40.671197,41.707220,42.144805,19.320409,25.432455,94.718679,92.076931,43.071400,45.546670,39.975416,40.574080,40.524998,1.226131,,,,,,,8b9039a8ee01c3b0db74de92888a253a, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,185,660.654277,36.532273,38.302186,38.705670,15.904153,20.952368,86.577973,83.259147,37.075450,42.221981,35.855174,37.096478,37.020198,1.295065,,,,,,,665905e17e97433b05329e07f287a629, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,210,295.996062,32.445615,34.901759,35.188752,12.413697,16.053488,69.579218,66.092414,31.066338,38.497899,31.864982,33.878346,33.524172,1.339632,,,,,,,429481bc4d585a45c5e1586b1febd931, +RA,aom,av2,0,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1920x1080,24.00,8,1920x1080,235,114.395077,28.576777,31.495293,31.577082,9.431710,11.307521,43.941910,41.002040,25.753008,34.374959,28.186896,30.736885,30.114532,1.079540,,,,,,,9b2835e17c5048aadf2e57056a784349, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,110,7737.321231,42.833461,49.115172,48.745701,17.200304,25.639060,99.275896,97.840300,48.073649,45.621563,42.754925,49.081929,48.710313,0.253554,,,,,,,3b26a67c7e735c35964ae21735238259, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,135,3230.612308,39.617031,46.648467,46.463371,14.402031,22.331121,96.906577,95.109258,43.610849,42.767048,39.559456,46.613768,46.418058,0.237472,,,,,,,06630747ad75f5a7875be82f5051fd14, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,160,1315.787077,36.236391,44.030034,43.803699,11.091793,18.206532,91.944491,89.717768,38.435717,39.691041,36.198245,43.991798,43.758122,0.333698,,,,,,,b845c58ffaf0472558aa84357bc50027, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,185,534.996923,33.242050,41.214785,40.853110,8.373564,14.231030,81.405907,78.678921,33.475910,36.917181,33.208103,41.174372,40.811868,0.454939,,,,,,,253c5a38b6de8f5892e301a4f38f8448, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,210,246.659077,30.936112,38.300607,37.732177,7.537610,12.237264,65.534764,62.308855,29.559083,34.701654,30.878029,38.246091,37.695154,0.330747,,,,,,,ee001ae1890573ee6e13d902c2a6e9ee, +RA,aom,av2,0,B1,Life_1080p30_v2.y4m,1920x1080,30.00,8,1920x1080,235,107.115692,28.152526,35.011273,34.484362,6.666459,10.050141,46.091168,42.738465,25.454010,31.994995,28.076442,34.956870,34.459377,0.315530,,,,,,,546ab7e5235fbf25949257e5a016b149, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,110,51787.170462,41.295018,45.635236,45.637856,16.531581,23.926470,99.871180,99.646007,46.035336,42.880014,40.922319,45.426603,45.435221,0.225237,,,,,,,a3b005bd7f0bfa581add9a15199cdaca, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,135,22647.227077,36.466471,43.660175,43.488293,12.306520,19.284081,99.126612,98.347573,39.829731,39.532046,36.060002,43.499564,43.332817,0.214354,,,,,,,fb33a3a30d8b1ff8129438108129a086, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,160,7662.369231,32.658534,41.632885,41.213514,9.081298,15.168881,91.037370,88.659567,34.227958,36.296093,32.336798,41.505820,41.090486,0.226862,,,,,,,310238f26f2b711e3a6ef21093095a86, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,185,2592.424615,29.899409,39.515441,38.840651,6.888427,11.653180,72.942715,70.603443,29.798404,33.559618,29.677329,39.408259,38.735501,0.225524,,,,,,,aa7b93bc1685ea5719dac2b79a3d7039, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,210,722.813538,27.528409,37.244666,36.684346,5.315734,8.481690,50.808095,49.044819,26.107625,31.017375,27.351166,37.160829,36.613004,0.264498,,,,,,,598ab4b5c9d24e378ba847f1e7313dfd, +RA,aom,av2,0,B1,MINECRAFT_1080p_60_8bit.y4m,1920x1080,60.00,8,1920x1080,235,216.428308,25.670175,35.049467,34.558335,4.427019,6.034082,35.299084,34.112752,23.289175,28.760837,25.540163,35.001016,34.511533,0.343266,,,,,,,fb97d203857680b4e70eb4dd7191b065, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,49432.753846,39.632910,45.795739,46.490251,15.358910,22.122955,99.731059,99.613151,43.801264,40.894626,39.114252,45.444893,46.171948,0.117223,,,,,,,6b329018afb595948e871ad6bfc85ffb, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,25419.282462,35.248130,43.803127,44.579702,11.802535,17.811728,97.525985,96.168414,38.123166,37.795025,34.602594,43.478020,44.302502,0.122223,,,,,,,435e195d6f1cbd63320ba8f56e0995d7, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,10505.970462,30.889708,41.963784,42.771467,8.668712,13.607198,83.820418,81.743107,32.508297,34.644314,30.110084,41.664382,42.537567,0.186242,,,,,,,b5937a504a03229fdc7f623a0a30923d, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,2859.601846,27.214641,40.187024,40.977432,6.328875,10.179574,61.695873,59.816341,27.832232,31.805658,26.422755,39.881359,40.749923,0.357296,,,,,,,cbb12e3ba9a0b338c2c4a9a7afffd24b, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,644.798769,25.121316,38.479671,39.119727,4.988076,7.741697,40.560531,39.187239,24.572532,29.751469,24.446442,38.205193,38.911336,0.634877,,,,,,,f4463c065bf6832264b61757ca984d4b, +RA,aom,av2,0,B1,Sniper_1920x1080P_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,133.633846,23.637174,36.720253,37.145299,4.201039,5.909151,24.152171,23.177830,22.063974,28.021992,23.091126,36.512845,36.979485,0.747304,,,,,,,34a0eb4d91c3e230c26c166de186faf4, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,5884.591754,42.116037,46.529633,46.372364,13.260431,19.893005,98.745719,97.843527,42.709518,45.112700,41.809733,46.406143,46.048114,0.236122,,,,,,,29911daf5791eb43c9695efd5ec1d2ce, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,2430.720000,40.587260,44.524810,44.161374,12.335180,17.783647,90.341039,88.614846,39.373904,43.551783,40.242749,44.365575,43.780558,0.299602,,,,,,,cb6e76d464fb8af14119400e9b7b30aa, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,1034.596431,38.733350,42.048691,41.578040,11.626788,15.495065,71.157246,69.469623,35.979172,41.647459,38.345382,41.856084,41.163503,0.312325,,,,,,,3054d784623a8e13d0cfde8574f62561, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,441.664985,36.499214,39.438604,38.895041,11.049431,13.231949,45.435459,44.184090,32.827427,39.375478,36.102242,39.251478,38.515351,0.343325,,,,,,,b0d87cdfa8bf7e47f576286118ca10ac, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,188.685785,34.006389,36.839515,36.155204,10.574868,11.166410,24.634856,23.963886,29.926189,36.778789,33.659307,36.680473,35.836345,0.376390,,,,,,,9146154036ed27c71207520fedb1296e, +RA,aom,av2,0,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,80.369723,31.280954,34.159334,33.417542,10.125985,9.294616,14.047337,13.841266,27.091361,33.926416,31.002004,34.016171,33.140213,0.421757,,,,,,,e263091894100ac14e63ae1be9444284, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,110,11261.507446,43.949263,46.771634,44.680685,17.743598,23.007849,94.913544,93.074030,44.985566,45.485672,43.698619,46.308731,44.169197,0.016821,,,,,,,f10eaa5d8f78004893bd5a18bfc65787, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,135,5385.945600,40.355520,45.551925,42.969631,14.606858,19.123668,87.394344,84.917047,40.180191,43.342428,39.924846,44.706238,41.897066,0.019102,,,,,,,1f37ad7fc8216c1d67559204f0173524, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,160,2178.711138,36.556132,44.032255,41.060287,11.329977,14.882532,69.305327,66.885360,35.114062,40.756825,35.947817,42.559111,39.634382,0.017387,,,,,,,47b0c7c1d453216a5bbe64c47352a00b, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,185,713.129354,33.269493,42.368345,39.192694,8.695487,11.089677,44.077336,42.453839,30.774943,38.212255,32.498376,40.033488,37.644212,0.013044,,,,,,,b5f6b215b1a6bce16d04c8c88f2f3d83, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,210,177.740308,30.896360,40.800161,37.552753,7.180043,8.347989,20.208982,19.649321,27.728298,36.079061,29.941115,37.742680,35.988120,0.011808,,,,,,,5d7b3456b2155354bb47acfb54ec0bc9, +RA,aom,av2,0,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,1920x1080,24.00,10,1920x1080,235,36.652800,29.409519,39.437728,36.138408,6.664606,6.833731,5.406943,5.350325,25.937241,34.470186,28.262365,35.995937,34.663350,0.016049,,,,,,,9c5671d10a34e115cedf794a72c7a707, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,110,8244.361846,45.360586,51.097558,52.150664,19.807161,27.140465,97.399984,96.497157,50.587648,46.542096,45.146737,50.983184,52.110311,0.397383,,,,,,,0f7406e8fb63909d93a0045255455c65, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,135,3833.741538,41.704038,48.328715,49.502197,16.956771,23.598545,95.948441,94.520651,45.576182,44.077696,41.546835,48.270193,49.476318,0.532895,,,,,,,57fdfeb244941ee688c6dc72cdb6c2e3, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,160,1598.832000,37.947043,45.390327,46.581843,13.977257,19.777968,91.649507,89.615486,40.278107,41.264315,37.863521,45.362628,46.562391,0.682305,,,,,,,015fe8e211092d11ed7fb7be01740d23, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,185,630.568615,34.480561,42.408773,43.473870,11.287068,16.082126,81.985465,79.451510,35.248699,38.282765,34.447995,42.397477,43.467174,0.987836,,,,,,,ca81aeab7e9b32814800b9e10120b68a, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,210,241.702154,31.286953,39.314024,40.363347,8.986406,12.683751,65.628216,63.012717,30.683427,35.292242,31.274259,39.308476,40.359194,1.242800,,,,,,,13e4221989a0f5ee83243b5e22127669, +RA,aom,av2,0,B1,STARCRAFT_1080p60.y4m,1920x1080,60.00,8,1920x1080,235,92.780308,28.286711,36.398276,37.165840,7.226488,9.645239,45.059144,42.760389,26.558667,32.390852,28.278282,36.393539,37.157841,1.289835,,,,,,,367ecfe41e0d3feb85d09f62c29587eb, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,110,25328.152615,41.323769,48.858661,48.236451,13.730445,19.732528,97.221542,95.479434,42.886011,42.403223,40.816249,48.672765,48.078481,0.239637,,,,,,,629d6e70cc08b339ecd500503af397aa, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,135,8324.359385,38.279515,47.421978,46.352227,11.201888,16.252492,90.102816,88.012076,38.414626,40.148185,37.763196,47.279534,46.228755,0.427429,,,,,,,b8275aa5a4d461b2d071d80260e0f29c, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,160,2400.166154,35.790482,45.981455,44.398705,9.328089,13.225647,77.110724,75.109200,34.639290,38.079599,35.410515,45.877037,44.302108,0.834166,,,,,,,17391db89f26b9db1fe51398cdb8bba9, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,185,681.888000,33.795883,44.499561,42.597185,8.128477,10.782882,61.070007,59.272677,31.716177,36.312754,33.574967,44.408320,42.519817,1.442759,,,,,,,249d6815e6bbccb49b6283700c2c1af9, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,210,204.590769,32.109276,42.978661,40.964405,7.507226,9.040102,46.530447,44.939350,29.543272,34.839979,32.001762,42.914086,40.879571,2.427101,,,,,,,a0f5cc2b189d761130498a8c5e1254f5, +RA,aom,av2,0,B1,WITCHER3_1920x1080_60_8bit_420.y4m,1920x1080,60.00,8,1920x1080,235,68.599385,30.289966,41.322889,39.024239,7.114707,7.848750,32.678274,31.594787,27.545866,33.368999,30.243021,41.262550,38.925993,3.293186,,,,,,,e4a7b29a1fe1ab6611dd699371d5af45, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,110,2209.462154,51.809389,54.762962,54.424056,25.809528,31.959375,96.704983,95.766214,53.454418,53.561876,51.771890,54.732764,54.393156,0.122101,,,,,,,88ea7c93b2e4ab8d4a62acaba75fe21b, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,135,1291.443692,47.827684,51.039990,50.684282,22.847441,28.080234,95.438923,94.085215,48.212457,49.857985,47.787114,51.016808,50.662322,0.099788,,,,,,,9c8f6610096111993918910a163dbea9, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,160,729.297231,43.333208,47.124205,46.676415,19.510680,23.948406,92.093801,90.238619,42.929837,45.405160,43.299552,47.100818,46.658153,0.175829,,,,,,,191121ee280aefd0f7c1f4f5ed4a76c6, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,185,399.998769,38.784811,43.364614,42.958648,16.162489,19.893321,84.540899,82.016045,37.900962,41.494889,38.762937,43.344998,42.943167,0.409672,,,,,,,24dc1446e6b1eca5d1e8d3b5cc8feac7, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,210,215.412923,34.253244,39.849527,39.328766,13.096881,16.104097,70.789785,67.692833,33.006729,37.371634,34.238746,39.835313,39.314416,0.502119,,,,,,,187a5c92afcedf9dd8e9df3d85b0ec2d, +RA,aom,av2,0,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,1920x1080,60.00,10,1920x1080,235,100.929231,29.777384,36.700576,35.912775,10.182770,12.300616,51.098811,47.290115,27.987148,33.443605,29.767542,36.691081,35.900508,0.648535,,,,,,,3790ebde2e2d4a696b327447a915504d, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,387.009231,57.780524,54.717487,55.703461,39.915717,46.034208,97.391409,96.815068,61.022654,57.899022,57.680576,54.671611,55.664739,0.032652,,,,,,,eadd93925ddf6632e6547259b5320858, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,263.715692,52.166446,51.223948,51.771649,34.327438,40.265916,96.967892,96.055675,57.342916,54.039773,52.102867,51.184542,51.742446,0.103140,,,,,,,b49204af49a7bf34cf4a4caf16a79a95, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,176.998154,46.398534,47.678640,47.756908,28.256351,33.903643,96.105721,94.545910,51.873180,50.142687,46.348738,47.629570,47.709741,0.402755,,,,,,,937c9595f07628019f383e9a9d97e295, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,122.112000,40.792469,44.515981,43.944820,22.798147,27.481659,93.214057,90.601565,44.638277,45.604177,40.746346,44.458537,43.898254,1.527638,,,,,,,c93d0b03ff34fcd955d421f9f159f201, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,84.075692,35.385510,40.756062,39.299406,17.385008,20.942230,84.517721,81.175160,36.703913,40.048830,35.358964,40.719266,39.273167,5.141675,,,,,,,928195b12bdbefa2ca890a033e2720bd, +RA,aom,av2,0,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,48.865846,29.806560,36.662318,34.542188,11.735996,13.790259,63.182292,60.125650,28.805660,35.391632,29.768591,36.637797,34.517934,6.159941,,,,,,,4d32357db938d75007f8463d58cc311b, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,110,4280.267077,48.994289,52.338420,53.031804,23.116097,30.314829,97.089131,96.350177,52.986939,49.734839,48.534363,51.953068,52.762426,0.490475,,,,,,,936fe93efd75486a168333b4fb9bc0ff, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,135,2306.636308,44.825117,48.408065,49.437586,19.903706,26.389180,96.194677,95.065154,47.830671,46.364482,44.349598,48.150711,49.281360,0.444283,,,,,,,b92223e35d2b78eb7982a8b484b36553, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,160,1138.711385,40.417671,44.684214,46.259691,16.608491,22.456276,93.783709,92.177377,42.677500,42.867445,40.010224,44.530864,46.157289,0.524843,,,,,,,34dc13df2ad6c5482c82a4078b8f7c79, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,185,570.468923,36.248057,41.786659,43.371290,14.193713,19.314195,88.605369,86.277032,37.994390,39.701215,36.042321,41.672508,43.307011,0.925197,,,,,,,5f200696eda7641c1533d4a955161151, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,210,282.816000,32.122910,38.914128,40.432580,12.102346,16.522531,78.453813,75.405918,33.102431,36.392920,32.066018,38.859258,40.404618,0.947107,,,,,,,880dd6c80bb7cb9bc9c7846a3ea015f8, +RA,aom,av2,0,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,1920x1080,60.00,10,1920x1080,235,135.504000,27.892571,35.579461,37.109815,9.740581,13.433306,60.807667,57.248732,27.664708,32.640754,27.862384,35.555553,37.076357,0.654137,,,,,,,39026081af793bca8756acec2fac4c52, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,110,91.692000,60.800335,64.295565,66.530780,49.241104,56.439322,99.323400,99.256075,67.713012,75.144826,60.786729,62.639709,65.552097,0.002363,,,,,,,79fb8eec68b3382d667d6ec3fca82f75, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,135,69.714462,54.566432,60.182645,62.701454,42.901429,49.852639,99.303755,99.172190,63.329120,68.543004,54.551133,58.780840,61.625577,0.004676,,,,,,,46a077c7cee325eed26256bae5d20c26, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,160,52.556308,48.274097,57.522682,60.082086,36.614247,43.163737,99.187509,98.945002,57.620803,62.163952,48.259975,56.468589,59.199017,0.005529,,,,,,,74dd7faa2ca75f0309cd7d8812ccd4e7, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,185,40.281231,42.515086,54.701428,57.197792,30.491335,36.313063,98.816492,98.417682,51.188273,56.690127,42.503181,53.936220,56.549541,0.003565,,,,,,,ed667abb5a519726ba95c7ad1a59b1cd, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,210,29.368615,37.203843,50.602572,51.616691,24.860140,29.353880,97.874954,97.230963,42.586342,46.345425,37.178776,50.128943,51.469930,0.004050,,,,,,,4a51ee9d10426cea75a0fffe14b86781, +RA,aom,av2,0,B2,MobileDeviceScreenSharing.y4m,1078x2220,15.00,8,1078x2220,235,21.480000,32.354160,45.481389,48.189882,19.853489,22.729149,94.376522,92.249299,34.521954,41.477029,32.333807,44.565996,47.356939,0.002064,,,,,,,6f4585a8a269a365c3e3e9352b7872a4, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,110,226.916308,54.883438,59.510627,58.721698,31.208007,38.543625,97.348287,96.709941,57.867943,64.766155,54.790214,59.399715,58.433719,0.127827,,,,,,,c726722035effbd9045ed357f66cb923, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,135,128.016000,50.989383,56.628538,55.614207,28.986449,35.632870,96.954325,95.884963,54.241974,60.152689,50.948437,56.488010,55.228610,0.135701,,,,,,,81ff7bb2e36489caa2a721674119ca55, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,160,76.577538,46.342210,53.032699,52.265828,26.036170,31.781734,95.798198,94.178536,49.469117,55.187414,46.323862,52.905936,51.961196,0.122640,,,,,,,a51624f2729f823d43dd9e669e9ec01a, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,185,47.445231,41.185760,48.720084,48.085743,22.533523,27.348973,92.668289,90.228492,44.090466,49.254319,41.179214,48.662833,47.903253,0.093294,,,,,,,95add1a11553d18259d76f8282d63152, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,210,29.427692,36.091252,44.286169,44.315419,18.339473,22.559849,84.682770,81.737071,37.909721,43.352629,36.087518,44.266591,44.197414,0.070786,,,,,,,f7150a06582ae2c38c46f874c99598b2, +RA,aom,av2,0,B2,SceneComposition_2.y4m,1920x1080,15.00,8,1920x1080,235,18.071077,30.680083,40.062194,39.791089,14.034719,16.823140,67.254453,63.221035,31.181048,37.742931,30.677222,40.056671,39.765927,0.078003,,,,,,,79226fc51e2d15930392116d1156fb32, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,782.658462,56.263192,57.409957,57.412989,38.256294,43.512300,98.339184,97.653723,59.505928,66.125153,55.810956,55.025780,55.550636,0.004497,,,,,,,91ce60f506a0d30336f5e8999abc19ba, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,461.981538,51.932299,54.184659,54.080355,34.269616,39.081300,97.872649,96.819474,55.289122,61.397730,51.381232,51.352549,52.085742,0.009953,,,,,,,4bc14d2afbfa654033c800a01e7cd2c7, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,265.733538,47.013112,50.399837,50.103421,29.642412,33.999766,96.517928,94.955302,50.145062,56.204751,46.279083,47.479410,48.291225,0.014676,,,,,,,6954659d31dd2d41d23d8e716a551dc6, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,154.918154,42.127663,47.289177,46.349252,25.058052,28.712495,93.156672,90.927859,44.223309,51.043911,41.207891,43.520389,44.374896,0.028692,,,,,,,5f1884ca8add9ad0c91b3371697c8029, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,89.455385,37.185147,44.071574,43.071355,20.351244,23.027720,85.128243,81.989664,37.572971,46.482961,36.005891,39.519218,40.634777,0.011177,,,,,,,ffecfd553285118795579dd29bce2fbc, +RA,aom,av2,0,B2,Slides1_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,53.665846,32.609119,40.399173,39.984664,15.976901,17.566488,69.405315,65.293108,31.310777,41.183260,31.133127,35.335374,36.898717,0.026555,,,,,,,1ed91a5587ac4e6720cc04d3ebdc16bd, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,110,1481.438769,54.174927,57.046413,57.066080,31.744137,37.986038,98.259397,97.807891,57.504076,64.422345,51.285095,52.164725,52.551221,0.000879,,,,,,,49f8e43eb2af140a4ef600fccf9320bf, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,135,810.419077,49.924073,52.924062,53.039290,28.270668,33.761565,97.706724,96.968356,52.859310,60.016943,47.444341,48.439114,48.907120,0.001715,,,,,,,4b6527e7fdf9d2b48ef239007670b64e, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,160,432.097846,45.339745,48.765011,49.030555,24.806180,29.536242,96.048935,94.836520,47.657678,55.008575,43.159279,44.480760,45.050384,0.005002,,,,,,,35c85e2225805dea39e975f1538becb1, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,185,239.876308,40.897962,45.500169,45.997436,21.404499,25.207399,92.052075,90.351199,42.369487,50.766540,38.925922,41.118268,41.629436,0.016315,,,,,,,388e131d4f615cbb5fb1eebc1fde1c57, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,210,127.800000,36.087108,43.296066,43.360798,17.976012,20.876694,83.195193,80.943092,36.615498,45.838596,34.315139,38.087400,38.362989,0.025620,,,,,,,70cb005c0d5ebe873306dd4aabe63bf8, +RA,aom,av2,0,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,1920x1080,30.00,8,1920x1080,235,67.399385,31.206651,40.872570,40.633247,14.342787,16.245984,68.743098,65.690085,30.497785,40.782517,29.465958,35.293081,35.015365,0.020459,,,,,,,77b7daab1a34172fa8f65b7aad229197, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,110,1001.401846,52.309486,56.265424,56.083232,35.574977,42.401803,97.402968,96.645651,58.379138,59.399363,52.170333,56.048333,55.850621,0.054882,,,,,,,e414427f80dce29942d3817d66f0e152, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,135,562.380923,47.843068,53.113788,52.767885,31.087976,37.754938,96.957979,95.760358,54.314671,54.824816,47.730375,52.905747,52.586357,0.051920,,,,,,,9cb9011090d01bb89de365d4a53d7d07, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,160,311.220923,43.251552,49.360524,49.417723,26.702532,32.810129,95.775427,94.037536,49.308441,49.988703,43.163933,49.157663,49.277166,0.062014,,,,,,,9bd4f44a9b620fba5c58315a75dc9820, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,185,184.785231,38.593547,45.625061,45.866431,21.833858,27.210298,92.647397,90.272107,43.033217,45.068813,38.537758,45.487474,45.776189,0.053206,,,,,,,8af81afad0f802f4c66a2f60e8fb70c9, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,210,117.544615,33.912246,41.647114,42.758702,16.378198,21.265616,85.636936,82.456396,36.015518,39.894841,33.869510,41.557293,42.722124,0.050283,,,,,,,d2a2255de344fd329b186832cdea7085, +RA,aom,av2,0,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1920x1080,30.00,8,1920x1080,235,76.211077,29.040151,37.219653,38.297197,11.374362,15.248078,68.781814,65.081297,28.825194,34.748064,28.998210,37.169740,38.270680,0.071792,,,,,,,c53a2372fda650f2652b579ba5439c17, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,110,470.436923,51.544705,54.314661,55.200631,22.904176,30.657704,98.659692,98.360769,50.386365,55.895280,51.540583,54.065369,55.059349,0.157537,,,,,,,b47263606403ad886a391e6ce1b90510, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,135,280.190769,48.974858,52.024857,53.117792,21.732960,28.868472,98.538164,98.018706,48.779885,53.197634,48.965895,51.582270,52.844933,0.919059,,,,,,,44e4530f7527b4370b7ad59604078ff2, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,160,194.058462,45.487983,49.054516,50.426266,20.986281,27.582138,97.998426,97.136325,47.045509,50.056609,45.468912,48.609236,50.083244,0.891497,,,,,,,63aa0cee805dde8457064206ff2714a4, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,185,138.812308,40.870183,46.182191,47.292865,19.508303,25.175153,96.346467,95.019038,43.607951,46.308457,40.840478,45.847287,47.026452,0.876065,,,,,,,afabb754b931b6b32ae01a695a036801, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,210,100.907077,35.796458,42.579057,43.747695,17.408124,21.614118,91.558995,87.989421,38.396486,41.348203,35.722533,42.385489,43.553703,0.910449,,,,,,,cb4901f38d40d659ee1381b946c6da29, +RA,aom,av2,0,B2,Wikipedia_1920x1080p30.y4m,1920x1080,30.00,8,1920x1080,235,70.039385,30.368971,38.610517,40.770223,14.411938,17.313643,73.794887,69.812642,31.600325,37.289454,30.280677,38.525708,40.659050,0.893587,,,,,,,59ac958de8baa518e66c5f92726c9cce, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,14654.319219,42.654402,45.951234,54.875214,13.468809,19.179132,88.907225,86.995321,42.680425,40.491140,42.610886,45.947301,54.874305,0.092750,,,,,,,6cccd9c95bca14d283c5a6cf27232fd6, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,3888.981173,41.828644,45.697343,54.432169,12.965708,17.913025,84.385106,82.242933,40.811448,40.031965,41.822592,45.697037,54.430514,0.131462,,,,,,,37763ddcd023090c6f31df0483aba1c2, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,1424.127872,40.605630,45.332671,53.562064,12.316209,16.161397,75.934560,73.751330,38.455484,39.365353,40.598928,45.332063,53.559787,0.418647,,,,,,,6fda92bb8b3afe96792384f04d9f695f, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,529.032813,38.894327,44.813856,52.481604,11.497189,13.991018,61.369013,59.545925,35.829118,38.386377,38.886605,44.812899,52.479228,0.733081,,,,,,,4f581a405bd0d4671120107da967c421, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,188.289249,36.977865,44.009234,50.933059,10.745973,11.867125,42.633126,41.554309,33.406133,37.171315,36.971044,44.008948,50.929021,0.983190,,,,,,,1eb7b2d4b531106c5dc0e8a9ac50615c, +RA,aom,av2,0,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,3840x2160,60.00,10,3840x2160,235,65.579959,34.971404,42.989977,49.588066,10.184754,9.986421,25.708633,25.233592,31.229952,35.812676,34.963917,42.988954,49.582729,1.301218,,,,,,,d5b0585c62be1c13179bd5ba5725c21c, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,25722.852923,48.099220,48.405497,56.696017,21.101578,23.016349,92.529905,90.414964,44.945956,47.083642,48.035534,48.368006,56.684863,1.184281,,,,,,,d9775d32dda11574dae114161bd8607e, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,12119.815385,44.983642,47.170587,55.665297,18.570264,19.956858,84.840131,82.363731,41.347920,45.341890,44.915919,47.148264,55.657708,1.289905,,,,,,,be8e1f29d6a6c77eadaf16dad3b9de9a, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,5178.439385,41.420029,45.789766,54.518099,15.754928,16.387383,69.300790,66.891013,37.332902,43.214649,41.332156,45.768180,54.513328,1.318723,,,,,,,29a39721deca259e3b363623e7c75b2e, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,1876.246154,37.917106,44.208325,53.096011,13.269828,12.846467,45.817649,44.179411,33.553416,40.853098,37.821197,44.188734,53.091476,1.424665,,,,,,,f26ad17e35024dc66cccf7b3855d9712, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,482.436923,35.017485,42.669975,50.882261,11.664650,10.003963,22.387514,21.706638,30.606111,38.579310,34.949858,42.656810,50.872658,1.774507,,,,,,,fb3d522f1fac0e8c15d47eb3bc3b32a9, +RA,aom,av2,0,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,235,100.279385,33.465948,41.405944,48.782291,11.107593,8.741484,9.574237,9.325397,29.142576,37.013285,33.449516,41.396288,48.775278,2.061483,,,,,,,8be811ea0d76c78ccecf88a91eb7f8c1, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,110,43722.985846,44.300892,45.193934,50.618754,15.727568,20.224133,88.251789,86.944160,43.062033,45.617752,44.135891,45.124781,50.476245,2.334239,,,,,,,215ed0628efebbf1787882c240bbb80f, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,135,10855.281231,41.573654,44.072393,50.113790,13.330335,16.749754,77.963765,76.621867,39.040218,44.165228,41.418908,44.034508,49.973061,2.209906,,,,,,,52a4160c8df6c9e5d490f0e641d38674, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,160,1260.756923,39.992894,43.500874,49.795010,12.237904,14.595778,66.540517,65.360309,36.757951,43.237729,39.856358,43.471161,49.648609,3.096094,,,,,,,a304049b3346fbd687419dec9a6549c5, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,185,224.211692,39.583995,43.136523,49.323710,12.079174,14.180103,61.686887,60.370852,36.220495,42.783893,39.458444,43.102954,49.171459,3.233413,,,,,,,dd7a28e1574291cac3c4e27efa0ea32f, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,210,70.984615,39.070009,42.542480,48.409877,11.952035,13.789569,54.836419,53.548388,35.584116,41.949858,38.926919,42.507489,48.284562,3.538995,,,,,,,fdaa1fb3b8799dd08504ee9807e8c5fe, +RA,aom,av2,0,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,3840x2160,60.00,10,3840x2160,235,33.249231,38.111434,41.648932,47.343184,11.770483,13.149615,43.196834,42.179864,34.490258,40.785301,37.942939,41.608842,47.204594,3.408171,,,,,,,a906cc80053e24498a4278232b7ca406, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,110,89736.558826,41.966254,45.931260,45.083582,14.318283,19.626105,98.633628,97.383083,42.182533,41.533155,41.873399,45.843398,45.010772,0.022625,,,,,,,74a116b8aee7ab3776054679bd24f99a, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,135,36645.191117,39.637808,44.763505,44.012834,12.794010,16.831128,92.305074,90.218033,38.346825,39.935103,39.552486,44.708836,43.979318,0.079277,,,,,,,efcffb8d9e1f366786ffce14dadc87c3, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,160,15927.394452,37.134811,43.594597,43.273431,11.368266,14.723773,78.510913,76.154217,34.903575,38.275873,37.004248,43.548203,43.245976,0.586057,,,,,,,e0465c7285d00955d62503e8b6e96f86, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,185,6779.460539,34.325969,42.121583,42.317832,9.852965,12.312339,58.317166,56.066912,31.245623,36.371553,34.119952,42.072099,42.286132,0.828483,,,,,,,fe3516ee0850247427deabc120e4771d, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,210,2552.089142,31.438037,40.624394,41.315530,8.509787,9.737469,34.778832,33.071270,27.768270,34.371890,31.158613,40.571006,41.274743,1.257158,,,,,,,13170b13797335eb0333d2afd36973d7, +RA,aom,av2,0,G1,SparksWelding_4096x2160_5994_hdr10.y4m,4096x2160,60.00,10,4096x2160,235,680.576039,28.742623,38.942033,40.092987,7.548963,7.383842,9.784875,9.043522,24.781153,32.268945,28.428614,38.867960,40.035124,1.230977,,,,,,,2ad1b17b7967c2cd101111d4eb0e0673, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,1335.246277,44.985901,51.518077,52.192855,16.368642,24.176865,95.485271,93.744997,46.908454,46.560619,44.858945,51.433260,52.092790,0.046639,,,,,,,36a6bb983e4b2d9f0cc8f4cb70c42762, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,558.046523,43.810211,48.973083,49.430983,15.833439,22.485453,91.712274,89.615904,43.755480,44.929883,43.715534,48.874996,49.317063,0.055937,,,,,,,3a7a299f0072df3fe7e394d02cf00798, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,259.078892,41.928886,45.931935,46.202341,15.048726,20.069330,83.823455,81.401761,39.972361,42.641584,41.841459,45.837684,46.089894,0.083913,,,,,,,526f0ab32151abaf184ce66611db8aa3, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,123.788308,39.361834,42.787346,42.960610,13.977304,17.185858,70.298093,67.665013,36.108866,39.908694,39.260203,42.702538,42.867884,0.149199,,,,,,,b8eaf13aef18ce5b86ac3fddbdd2858c, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,57.605908,36.294465,39.930886,39.749218,12.669081,14.088762,50.776302,48.423021,32.350830,36.970537,36.184341,39.868005,39.677097,0.221387,,,,,,,c8a3be1a1bd5a51a41dd56c92dc6c01d, +RA,aom,av2,0,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,235,24.946708,33.020274,37.334749,36.566114,11.387142,11.175862,27.298607,25.871157,28.800898,33.983017,32.926533,37.286059,36.528303,0.381825,,,,,,,dd578922d07eaa3b3482c453e4ca006d, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,110,12540.754708,40.671317,46.140006,49.603546,14.802845,22.611607,97.079655,95.277519,45.112636,43.218175,40.509602,46.035413,49.520542,0.659312,,,,,,,d1c2ba27ec4bf4fc3ca8ddc99aeb2808, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,135,4156.513477,37.073588,44.303457,48.031536,11.862609,18.797464,88.194421,86.059971,39.455285,40.600489,36.929865,44.206719,47.949475,0.656956,,,,,,,0f6f596bc28cd43793e86131646a02eb, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,160,1356.239262,34.441230,42.666599,46.460038,9.876524,15.357853,72.342126,70.207848,34.399943,38.182233,34.339167,42.564816,46.374168,0.699929,,,,,,,c58da41e18403837fcedbcfb893d9921, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,185,413.646277,32.121811,41.216460,44.842378,8.174173,12.192833,50.920490,49.151290,30.337292,35.993374,32.034701,41.111774,44.759234,0.648812,,,,,,,92493e08b5441e8551e3419ae2e1d5f2, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,210,116.846769,30.103924,39.683336,43.218138,6.808901,9.470346,28.433801,27.383422,27.222644,33.878785,30.016423,39.608079,43.160547,0.619354,,,,,,,52ddef9751a4fe70d830a2f93f165ca1, +RA,aom,av2,0,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,2048x858,24.00,10,2048x858,235,30.176492,28.357339,37.954813,41.478429,5.864145,7.202852,11.025493,10.655190,24.863994,31.783469,28.272522,37.885984,41.415762,0.534563,,,,,,,dce404a10fcd83eabf5d447f795c5d29, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,8453.082917,43.044637,51.223942,56.049613,15.306666,21.772878,92.639259,90.800362,45.108575,43.680533,42.996866,51.222581,56.047453,0.149385,,,,,,,0c28b06f747cf6dfa2e77706b72108dd, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,3091.966495,40.666407,50.580126,55.228158,13.503105,19.342556,87.805395,85.751793,41.362475,42.345433,40.626062,50.578714,55.224596,0.199350,,,,,,,afe78786b19a582d9bd9f747dd2754dd, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,1016.509644,38.163013,49.716664,54.110256,11.600402,16.492763,78.174076,76.051712,37.399275,40.740808,38.124684,49.714065,54.103568,0.392093,,,,,,,b5638c1a61c03ab4bfd02763dbc04a7b, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,317.542150,35.925184,48.530453,52.535855,10.019159,13.891327,63.160623,61.164049,34.075747,39.015712,35.901906,48.528620,52.532494,0.791183,,,,,,,35b7ca41e78c1e95d2227b364e8c4a84, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,95.229079,33.938791,47.183067,50.764358,8.837666,11.640495,43.710009,41.931217,31.240985,37.224343,33.926456,47.181754,50.742685,1.324301,,,,,,,ecfce185b882ceb5e0c9f9da34b824b8, +RA,aom,av2,0,G2,MeridianShore_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,235,31.146699,32.081240,45.941052,47.871340,8.074587,9.764798,22.024160,20.859276,28.776736,35.475032,32.071675,45.939530,47.863287,1.525517,,,,,,,ead2d0d8f5af49b8b2e6e596d6b79e53, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,110,1920.748790,45.965215,52.839018,59.452947,16.837936,22.912476,94.669006,93.101214,46.326849,45.744881,45.953852,52.838408,59.450832,0.944372,,,,,,,d1f4faa6a2b6cddfaf3e4402dc2c4ae2, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,135,659.196803,44.840289,52.247462,58.143266,16.190973,21.418306,92.111098,90.264167,44.166981,45.029814,44.832755,52.246592,58.140422,1.003285,,,,,,,71bad557e3d502e1c6821f75205cff5c, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,160,255.909014,43.153637,51.245133,56.362590,15.294573,19.392003,86.819639,84.593136,41.414387,43.890215,43.143400,51.243053,56.355747,1.053849,,,,,,,3383b401d3994bde88437749756171ff, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,185,102.613694,41.099223,49.832912,54.243095,14.317336,17.137929,77.492811,74.915684,38.469638,42.352469,41.088084,49.829776,54.238493,1.089400,,,,,,,3fb8ef84b4d841d17a64140900fffb15, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,210,44.783524,38.732050,48.216303,52.011747,13.404318,14.851091,63.174713,60.477475,35.501763,40.476038,38.723092,48.213500,52.005909,1.251568,,,,,,,2215667597ffd37db975961231f3b2dc, +RA,aom,av2,0,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,1920x1080,60.00,10,1920x1080,235,20.763237,36.127092,47.108394,49.426124,12.532825,12.632696,47.040528,44.197974,32.548384,38.549190,36.115917,47.107328,49.133906,1.269745,,,,,,,27e6e3c14b822b217fd8a49e4c1c3e86, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,3025.265723,45.726881,49.105972,51.832696,17.142560,21.955103,96.710870,95.384020,44.376813,46.889489,45.138517,48.943400,51.430069,0.193292,,,,,,,288972b98dc038349f763dac7e3399be, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,1342.565908,43.914485,47.358157,49.702604,16.267659,19.626552,87.139482,85.514617,41.331573,45.231344,43.325242,47.222172,49.302081,0.230721,,,,,,,828d79f7c84635a7b000f6e5dfe0330d, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,574.526031,41.576021,45.016764,47.237766,15.470374,17.089072,68.545430,67.013691,38.138651,43.127435,41.005906,44.881921,46.867762,0.248687,,,,,,,aed9c59c151f1149d6830b7bf75615e3, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,240.639508,38.997434,42.504542,44.580887,14.808922,14.739184,44.205722,43.064502,35.143833,40.691888,38.482897,42.363665,44.272709,0.258107,,,,,,,0a6550cdd5af4fbef0f9a458e9cab7df, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,103.101046,36.307657,39.853064,41.913270,14.240793,12.672710,26.696056,25.961973,32.335457,37.987300,35.900017,39.698574,41.664692,0.291262,,,,,,,b6c6119a9c7e77c48ad87ff1a2530a94, +RA,aom,av2,0,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,235,43.177846,33.398383,37.199901,39.199937,13.678736,10.770028,15.160559,14.767780,29.461234,35.058299,33.060699,37.015736,38.962172,0.352068,,,,,,,17a54cee83035aa12ad5acb704e8aa0b, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,110,6481.964308,45.605197,53.331485,53.697906,18.471986,22.850369,92.473338,90.360131,45.646567,47.709060,45.271603,52.396547,52.288955,0.056463,,,,,,,b8cdda40ec871990e829c7c7977d6401, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,135,2969.819077,41.963810,51.900194,52.083519,15.165729,18.869497,82.486877,80.151049,40.865026,45.110935,41.470666,50.412871,50.498360,0.060912,,,,,,,cbe51c24ac3eff45aab687d1108e4294, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,160,1072.185600,38.330010,50.056356,50.125091,11.985948,14.769507,62.664389,60.741781,36.093267,42.178714,37.672787,47.695015,48.447012,0.060445,,,,,,,24aba3b58a5f66947f483f1e5d80d1ef, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,185,296.619323,35.480879,48.354297,48.110858,9.822429,11.477045,37.075066,36.026768,32.442850,39.600578,34.680618,45.023546,46.474757,0.056568,,,,,,,56065837e2cdb7d44ae046a99c19fb09, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,210,64.386462,33.652955,46.756243,46.540314,8.882479,9.468566,15.042230,14.743947,30.227668,37.741676,32.687812,42.995875,44.937621,0.067654,,,,,,,c825752453d7cfde1a10862030d5339a, +RA,aom,av2,0,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,1920x1080,24.00,10,1920x1080,235,13.850585,32.460759,44.508015,44.329229,8.668744,8.441493,3.264453,3.187332,28.927712,36.083143,31.439180,41.143415,43.012327,0.112754,,,,,,,ccd868c54c522aadf7d41a8340dec2e8, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,110,5235.013602,44.447253,50.603098,50.466755,17.000722,23.066911,94.299809,92.457577,46.083456,44.349978,44.404399,50.598187,50.460697,0.587403,,,,,,,ac16a448b076c49cbbcbfb683f883c2b, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,135,1834.250672,42.138803,49.983310,50.087408,15.063608,20.606372,91.067090,88.959636,42.937747,43.036591,42.119731,49.982079,50.086210,0.599986,,,,,,,6d5757e267ccccb1b02b925f53d502e2, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,160,658.473834,39.454106,49.076452,49.529953,12.864954,17.907536,85.067946,82.567633,39.516688,41.286524,39.444564,49.074885,49.529223,0.583065,,,,,,,08d4950bea8c6b729b3f1434e972198a, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,185,237.687236,36.541021,47.867686,48.715693,10.477118,14.753700,73.308979,70.630717,35.412225,39.165319,36.536009,47.865367,48.714869,0.616573,,,,,,,db06c5d67722436b89235a9990b332ca, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,210,82.366864,33.864757,46.307809,47.592288,8.631663,11.643661,51.488289,49.256880,31.500669,37.017759,33.861667,46.307106,47.591861,0.665962,,,,,,,bbf6d7efb6bc8151af56bdc811e21241, +RA,aom,av2,0,G2,SparksTruck_2048x1080_5994_hdr10.y4m,2048x1080,60.00,10,2048x1080,235,30.405287,31.667864,44.112628,46.080991,7.614531,9.393217,26.604069,25.212421,28.482307,34.849824,31.664730,44.111385,46.068172,0.928325,,,,,,,46266e13af936a2d6490651b0734afce, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,14094.492308,42.911875,51.956616,51.263143,16.364489,21.398782,99.962054,99.938435,42.117925,44.870854,42.759044,51.699964,51.090516,0.031245,,,,,,,93e65cb23fe8cb05c3112eb5ca3ee1a6, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,6659.704615,39.001293,49.233698,48.335510,13.078565,16.643434,98.153596,96.797154,36.538829,41.093954,38.839060,48.931408,48.135459,0.183846,,,,,,,6d5e095528a9d189ea7270bd6a712019, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,2359.555385,35.133991,47.168632,46.118018,10.151586,12.207011,81.952806,80.009137,31.565138,37.741694,34.948049,46.813942,45.920078,1.333499,,,,,,,d0a549ac74c7c26b440cd6ff69afa2a1, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,791.176923,32.541863,44.955885,43.830122,8.794929,10.062088,66.094562,64.261346,28.613342,35.510328,32.417364,44.523608,43.594872,2.894524,,,,,,,cc23035062210476e75d51d62f99a835, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,319.155385,30.433133,42.661550,41.193018,8.013142,8.884905,52.613442,50.931310,26.360055,33.625881,30.341181,42.089041,40.960301,3.386706,,,,,,,4b29b9bc677b22a1c3c4b49f479a83fb, +RA,aom,av2,0,E,Artistic_Concert_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,235,135.413846,27.914949,39.901746,38.308192,7.208415,7.509382,37.369117,36.193786,23.730434,31.357953,27.816014,39.192750,38.068716,3.385701,,,,,,,fedb16a32d1abe2d896333e828aaf647, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,110,10530.588796,42.841414,45.333954,46.876414,19.256407,25.686692,99.628303,98.995045,44.787218,43.851263,42.598240,44.983562,46.270732,0.307573,,,,,,,48d3c6cd26b81ded2853626a3d2f7bcb, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,135,3805.819411,40.130668,42.899618,44.600628,17.057101,22.721745,98.015188,97.018008,40.678945,41.355228,39.862316,42.429054,43.708468,0.302178,,,,,,,e19369625eee3ae4d2e54fde87b7fc49, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,160,1571.989856,37.779486,41.227068,43.118796,15.360337,20.313388,95.066829,93.821762,37.114504,39.535439,37.499416,40.854145,42.332891,0.317998,,,,,,,4a402ca39df2e7708de97db73fb4de11, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,185,751.897333,35.108725,39.542485,41.618241,13.449875,17.678901,89.829493,88.085330,33.351205,37.563963,34.786923,39.250101,40.955250,0.469440,,,,,,,b2457224d55de778ee0bc596a9577dd6, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,210,345.772996,31.757318,37.418513,39.504850,11.003012,14.383085,79.229984,76.385330,29.152843,35.016153,31.427164,37.171623,38.960927,0.535786,,,,,,,c9db1049673f09d558de93df21d393a0, +RA,aom,av2,0,E,Artistic_Intro_1920x1080_2997fps.y4m,1920x1080,30.00,8,1920x1080,235,130.569738,28.108296,34.897431,36.891505,8.299148,10.790081,62.173161,59.681578,25.033442,32.041890,27.833654,34.667724,36.450207,0.554700,,,,,,,72dcf763b21eab652c58b0bb83d4d3fe, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,2277.338661,45.464938,46.771698,49.109590,20.329287,24.885916,97.587709,96.229409,44.674461,48.023057,45.296628,46.694846,49.037016,5.060875,,,,,,,7dd8b2c3e9c33c2f317a8a98d5a55282, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,916.940905,42.763182,44.566169,47.037698,18.289831,21.948428,95.276557,93.269760,41.477950,45.351001,42.615629,44.517447,46.989119,4.861312,,,,,,,be0b0d58e2669e9790325f1a5562cf6e, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,384.435257,40.030440,42.255481,44.882672,16.232689,19.065771,90.137378,87.198198,38.113243,42.786211,39.913792,42.200481,44.843693,4.283745,,,,,,,40be37fce5a442a7313d8a8111543c25, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,172.651349,37.058607,39.777507,42.540070,14.027777,16.061723,80.885431,77.102278,34.556481,40.066795,36.963998,39.692954,42.492327,3.808636,,,,,,,0aa100c1a643fb52970cec06abdbf4e5, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,78.475371,34.082004,37.035996,39.934967,12.033230,13.349267,68.102980,63.641610,31.213000,37.121712,34.022172,36.912328,39.877532,3.602028,,,,,,,4d3c0c344f6149547e9731b2bdcd1284, +RA,aom,av2,0,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,235,36.183509,30.994044,34.101857,37.256752,10.061908,11.007489,54.797513,50.044554,27.930590,34.055295,30.932954,33.910571,37.173046,3.051239,,,,,,,8f44af2b635f10b1e174a843564312d9, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,110,7216.460463,42.392260,44.465761,45.080486,17.007723,23.576426,99.387280,98.900796,43.493074,45.392128,42.151962,44.280143,44.922539,2.945492,,,,,,,661885f1684f3fd289f971e636cd4dd6, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,135,2786.006609,39.007297,42.172432,43.022192,14.628054,20.400038,96.991924,95.261293,39.204435,42.636169,38.707168,41.979895,42.899115,2.646264,,,,,,,739413569362193cfa832df33fb0acb4, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,160,1121.664797,36.065261,40.119759,41.071255,12.584695,17.221380,87.381941,84.997429,34.869396,40.103224,35.770142,39.940281,40.979932,2.519393,,,,,,,826d26fd1031e5e1033cc5a675902041, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,185,470.339507,33.091173,38.005582,38.940144,10.568554,13.999911,72.320658,69.784971,30.717648,37.439386,32.802924,37.819861,38.855747,2.320669,,,,,,,f362abc593b0bc8dd4316c8e2abc890a, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,210,189.812649,29.984636,35.780021,36.570181,8.635017,10.853470,54.129819,51.795881,26.815966,34.574787,29.707975,35.591575,36.506427,1.909805,,,,,,,198e728ed0bac30f9c1b68979f8fd399, +RA,aom,av2,0,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,1280x720,30.00,8,1280x720,235,70.906324,27.001137,33.624624,34.224713,7.177380,8.185871,35.739715,34.155885,23.304400,31.744751,26.768577,33.439958,34.171273,1.482533,,,,,,,1011af6d79b8e8ec315cf2d221ad8490, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,110,46557.601846,40.357963,44.735085,44.543595,17.111527,23.664195,99.875179,99.841624,42.869338,40.590408,39.983026,44.511279,44.361512,0.318539,,,,,,,726ddd9ba2aac2567f9dd168f1058f95, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,135,23592.162462,35.831355,42.057077,41.738523,13.572950,19.338132,99.756082,99.712987,37.220093,37.257392,35.382733,41.808150,41.552274,0.324007,,,,,,,49b12178920e217fab54d257ac8d6bd0, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,160,10317.603692,31.547550,39.492512,38.979919,10.251131,15.089361,97.063295,95.621135,31.384601,33.957711,31.101944,39.241545,38.802358,0.315641,,,,,,,efc890ebdb2a4d4002531c5fb873d9de, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,185,4020.419077,27.813745,37.229318,36.512361,7.455034,11.192033,79.021524,77.017282,26.138980,30.930217,27.398431,36.992379,36.351170,0.377927,,,,,,,12109de3b8cadbe1039834b5e9dc74bc, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,210,1358.918769,24.737975,35.101564,34.349249,5.376697,7.767026,59.599211,57.903097,21.878811,28.138225,24.401310,34.901790,34.227345,0.538437,,,,,,,fda83c26f4e0f83ffa2aa4fa2e3f743e, +RA,aom,av2,0,E,MountainBike_1920x1080_30fps_8bit.y4m,1920x1080,30.00,8,1920x1080,235,418.000615,22.378202,33.045060,32.389473,4.138702,5.169649,45.661013,44.482352,18.876974,25.697973,22.132308,32.887345,32.291981,0.878562,,,,,,,1d78d72675108b87a806b5c316f14c92, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,110,11644.235641,39.803055,41.720470,46.146648,11.534484,17.784983,95.798448,94.593168,40.519565,40.481383,39.574418,41.586746,46.108585,0.017680,,,,,,,6b01842a2f20b3375a66fab2fa377257, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,135,1983.221455,37.281104,40.040779,45.516768,9.216240,14.139792,92.022788,90.552646,36.227316,38.581497,37.204085,39.993517,45.492946,0.015414,,,,,,,d78e27947c6a8fe2433267a4bfd12bf6, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,160,598.499101,36.246103,39.404816,44.610912,8.749947,13.165737,86.445176,84.777927,34.635048,37.853861,36.206290,39.383479,44.561971,0.040100,,,,,,,cbb9d61bf431e68a3e104e974415660e, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,185,199.377238,35.187506,38.720963,43.468404,8.489364,12.561761,78.931722,77.030180,33.056294,37.175045,35.144187,38.695191,43.384359,0.152648,,,,,,,cac82ca4155a3b14f567da2475818e82, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,210,85.769246,33.853925,37.898310,42.070037,8.295069,12.082648,70.128273,67.893854,31.174196,36.363228,33.797337,37.873305,41.979107,0.580254,,,,,,,833b6bdd0e89d74b02c3a8d4d18c5805, +RA,aom,av2,0,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,1920x1080,24.00,8,1920x1080,235,41.206301,31.981117,36.728901,40.246652,8.055141,11.554816,59.251439,56.532513,28.713793,35.219050,31.892652,36.711533,40.176301,0.964169,,,,,,,dd57c5c280ffd7ecc3fd12efcecd1606, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,110,2482.501130,41.276366,51.277704,49.289174,12.412752,18.616581,97.492119,96.310461,41.113544,45.700653,40.641301,51.153434,49.043536,8.580633,,,,,,,1f1b0e5b0982d93b882991907ae7138e, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,135,520.335787,39.770093,49.878977,47.407921,11.127209,17.157314,95.769352,94.028579,39.507339,44.138729,39.502722,49.834679,47.209823,9.865138,,,,,,,d85f5cc9a563bcf65918069f6e424c58, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,160,116.678399,39.247944,49.002347,45.742498,10.918626,16.746321,93.684811,91.619399,38.760420,43.520140,39.030424,48.962066,45.518089,8.661798,,,,,,,cd7b11368adea47b8a8f277ec926a1c9, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,185,60.782541,38.468893,47.736195,43.113064,10.742880,16.204625,89.351101,87.009533,37.437725,42.591820,38.274107,47.688316,42.781206,8.910336,,,,,,,740b384ab013f30093a56af71529c0fc, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,210,32.543948,36.905565,45.607083,39.269436,10.326309,15.043987,80.074667,77.134878,34.791172,41.001418,36.728579,45.549162,38.862482,7.248939,,,,,,,6c3b842504bd08973793e6829179f911, +RA,aom,av2,0,E,Noise_Animation_1280x720_2398fps.y4m,1280x720,24.00,8,1280x720,235,16.352386,34.537193,42.569131,35.809119,9.745956,13.329982,65.058445,61.649554,31.405980,38.834463,34.284184,42.424610,35.409324,6.072899,,,,,,,f9c5292777e23e0164b2f0a0ee0077ae, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,110,13977.267692,41.185290,57.224777,60.817093,12.225205,17.883011,75.704029,74.642430,41.226046,44.988510,40.863670,56.834190,60.419115,0.468764,,,,,,,81386cee9c2829391f018d2ac5511291, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,135,2104.608000,38.259964,55.230444,59.003405,9.469362,13.755024,52.601720,51.802206,36.485552,42.005116,37.982986,55.099585,58.842326,1.719474,,,,,,,6b8154669e3c79e9a34bc66e2f71c2ac, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,160,309.323077,37.608339,54.073111,57.719672,8.941410,12.874253,42.055139,41.353262,35.443147,41.195010,37.452004,54.016835,57.627560,2.266796,,,,,,,31b3d7c01c6e3dc81c4f4f444179b77a, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,185,43.668923,37.366463,52.795825,55.698768,8.839568,12.603729,35.915388,35.190847,35.064977,40.726843,37.234026,52.753884,55.587379,2.009142,,,,,,,a45ae5e2dc6350fd5e7fe6c75120643c, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,210,21.441231,37.058983,50.892980,53.036973,8.815121,12.407359,29.985933,29.149560,34.649594,39.983353,36.948814,50.835944,52.935103,1.663804,,,,,,,60cbc8f06befedd7d09de2df6eeb2ecc, +RA,aom,av2,0,E,Noise_Ocean_1920x1080_60fps.y4m,1920x1080,60.00,8,1920x1080,235,11.885538,36.487979,47.615023,50.803176,8.787158,12.152695,26.537771,25.493303,33.924118,38.829408,36.404342,47.571129,50.654499,1.170005,,,,,,,fe673e404bcd28607db22b3fdba2abd5, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,110,143300.947692,36.856715,46.828143,48.252046,12.586498,18.786963,97.665360,96.464421,42.063095,39.538757,36.561641,46.763767,48.037072,0.057336,,,,,,,948b658dbf02c9b9ad018753efa5ea4d, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,135,39967.978462,30.853759,44.965900,43.955606,5.783736,12.536589,91.424341,89.959251,35.366843,33.733641,30.502163,44.929973,43.730051,0.112329,,,,,,,e93581eb072a3bf521f5a763f83dbb00, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,160,6805.406154,28.512473,42.968212,40.765912,3.374728,10.116100,84.239614,82.447120,32.556220,31.362924,28.428884,42.948150,40.649148,0.984269,,,,,,,778c3a081e7d4b6f945b0a6ed19332cb, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,185,1323.064615,27.608453,40.891469,38.247580,2.923216,9.289794,74.319325,72.352016,30.573718,30.589383,27.599048,40.878048,38.204612,5.719598,,,,,,,0054b463b45df0042b08285d53a43b82, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,210,344.129231,26.820569,38.758232,35.409199,2.760308,8.761569,61.473421,59.472567,28.461777,29.956257,26.816100,38.748854,35.367433,10.400122,,,,,,,549a74f10e184e7bb988406935e255d4, +RA,aom,av2,0,E,Noise_Soccer_1920x1080_50fps.y4m,1920x1080,50.00,8,1920x1080,235,114.073846,25.690840,36.601643,32.877040,2.579532,8.084276,44.700881,42.909830,25.583307,29.150533,25.685823,36.597065,32.857266,8.838869,,,,,,,54c60cb1465480c22ed16881b90d0180, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,110,24887.939138,44.953607,47.244754,47.430993,16.863382,21.715519,99.808977,99.698397,42.481716,45.231431,44.669614,47.107121,47.307819,7.045641,,,,,,,875cb542c6890e6df4b4358acbef4588, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,135,8476.649504,43.599145,46.093807,46.288797,16.275438,20.662488,99.033377,98.381206,40.751317,44.043659,43.185671,45.965652,46.189256,7.667134,,,,,,,581b865094ef6cbe0a109b28b48a63cd, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,160,3343.117191,42.046599,44.768870,44.945646,15.700714,19.492749,94.885908,93.132082,38.700492,42.717763,41.392881,44.611463,44.829317,7.971568,,,,,,,50ddf5fb2fa16b7299852b555ab91ee1, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,185,1510.301391,40.054925,42.907245,42.988549,15.063869,18.043628,84.565974,82.671882,36.211201,40.999790,39.113967,42.683745,42.816472,8.228315,,,,,,,c7bb73e055758bfec0750b52af438a01, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,210,705.957427,37.470802,40.338025,40.331444,14.290884,16.292260,69.207420,67.415399,33.249841,38.724461,36.294333,40.053825,40.117852,7.903087,,,,,,,407695d215d8769c9f88c3fa04fe8f4f, +RA,aom,av2,0,E,Shaky_Baseball_3840x2160_5994fps.y4m,3840x2160,60.00,8,3840x2160,235,323.266887,34.305110,37.340953,37.205788,13.317480,14.073514,49.929444,48.386907,29.903115,35.955796,33.063047,37.078695,37.014939,7.580539,,,,,,,9db68d7353714ad26ee3f7d5d09decbe, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,110,8102.035196,48.567908,52.908360,52.309021,20.964277,22.520228,87.643816,87.146035,43.595914,48.366750,48.454924,52.554961,51.964505,10.018046,,,,,,,c60f0fc0ea82ab4d06698bacc5366703, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,135,2895.178667,46.324430,51.167659,50.510178,19.956494,19.896200,78.258161,77.665229,41.359269,46.020849,46.219469,50.815132,50.208745,13.527073,,,,,,,fe3b98c6b4dbe677b683086fb464a1b5, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,160,1005.526781,44.399094,49.671026,48.998596,19.337189,18.108112,66.577399,65.923607,39.622792,44.263508,44.244194,49.135826,48.603782,15.281795,,,,,,,4ffd0dc2ff94830964726bcc628dfa11, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,185,408.662107,42.694128,47.935009,47.469359,18.930090,16.968211,58.207157,57.471306,38.110983,42.600773,42.407658,47.090069,46.834372,15.845493,,,,,,,dfe201d80044fff256253d533451e903, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,210,177.693691,40.643877,46.146403,45.896816,18.497568,15.934936,49.942223,49.244089,36.296974,40.878670,40.133429,44.841503,44.809998,15.650966,,,,,,,33d841837bfdbb0ea07d7e076f1b5c99, +RA,aom,av2,0,E,Shaky_Fireworks_3840x2160_2997fps.y4m,3840x2160,30.00,8,3840x2160,235,81.057404,38.201068,43.951553,44.210375,17.987876,14.889579,42.075789,41.420108,34.085953,38.798473,37.451938,42.319540,42.542069,15.386867,,,,,,,c55d0fcc5cf483d3fc41f2a80a53bddd, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,110,29021.844923,41.734849,52.798765,52.460992,18.670378,24.475444,99.976224,99.970199,44.129623,44.557535,41.535765,52.697080,52.322802,0.395642,,,,,,,1b3ac1eec493aeaf744218808da0f235, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,135,16935.579692,37.405156,50.081782,49.718447,15.344813,20.548423,99.968480,99.959798,38.971069,40.748579,37.151320,49.975430,49.573337,0.515157,,,,,,,64230988a504ed29e81b0466c3254f94, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,160,8138.597538,32.741154,47.686964,47.332945,11.791936,16.420151,95.806014,93.905192,32.801928,36.879942,32.459762,47.593365,47.196899,0.580243,,,,,,,1dc85762f4687d3ccf44f06bfeadec1a, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,185,3212.392615,28.835764,46.110052,45.447982,8.921550,12.675797,74.838361,72.844251,27.167847,33.615396,28.599983,46.056496,45.320952,0.715444,,,,,,,dec6557cadfaa78a115fad53dd625b1c, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,210,1140.876923,25.789976,44.552557,43.352383,6.879381,9.483043,53.201968,51.530809,22.843798,30.844930,25.636743,44.505457,43.212723,1.000804,,,,,,,aa9c17421f2e93ca956ef9048d5413a4, +RA,aom,av2,0,E,Shaky_Quad_1920x1080_30fps.y4m,1920x1080,30.00,8,1920x1080,235,378.033231,23.271727,42.810573,40.995810,5.446687,6.886331,34.813329,33.855950,19.640132,28.260711,23.176126,42.771445,40.842882,0.899111,,,,,,,54cab8bc8c030cbeacbeefa2e6e19716, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,110,20824.593846,41.574096,51.495307,51.842172,16.671361,22.685207,99.971729,99.962313,43.458848,43.897630,41.294213,51.354000,51.700498,0.628703,,,,,,,aa93d8a9dc6e71e83e43d3c3bc640eb1, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,135,9800.103077,37.136269,48.439464,48.769072,12.835849,17.932596,99.615926,98.908966,37.549633,39.827932,36.777859,48.279264,48.619806,0.644306,,,,,,,464579c59b2f735d57f1e0b96558e90d, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,160,3442.584615,33.221521,45.851343,46.326774,9.581989,13.572119,85.642020,83.579118,31.984951,36.326443,32.848044,45.690288,46.204667,0.615767,,,,,,,aac08d11a02a3a51cf86e506e55f9aed, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,185,1151.989231,30.313025,43.931176,44.474686,7.446710,10.433963,66.451337,64.472503,27.940629,33.789547,29.994416,43.802156,44.392509,0.661293,,,,,,,be212332f701467b4d96d6d6cf243d7f, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,210,377.560000,27.963624,41.888014,42.560706,6.011928,7.957044,48.462715,46.947229,24.825892,31.660231,27.707045,41.774275,42.492857,0.883631,,,,,,,7b1c1cd92ae7763404f1be8ffcd6c56f, +RA,aom,av2,0,E,Shaky_Walk_1920x1080_25fps.y4m,1920x1080,25.00,8,1920x1080,235,121.016923,25.976739,39.544947,40.117476,5.190458,6.231302,33.460546,32.561723,22.390436,29.694240,25.767404,39.407723,40.054038,1.458433,,,,,,,24fb05fdc8beeba089eb7c8f6148aa27, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,110,11512.851456,46.251147,48.564538,48.731540,20.129112,24.847039,99.341283,98.638421,43.919041,46.469305,46.025353,48.472824,48.650159,4.609141,,,,,,,02a09b22e852855dc8dc0934ba383551, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,135,4986.570353,43.539818,46.142012,46.390504,18.516865,22.160483,95.674966,93.756321,40.467875,43.892762,43.250705,46.066832,46.318747,4.789750,,,,,,,2b27b429ec0e8b6a8e4c4dd986c70f88, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,160,2162.541459,40.691404,43.894278,44.159951,16.979821,19.715585,85.507568,83.019983,37.003369,41.594238,40.323471,43.818269,44.085924,4.768926,,,,,,,803e6a4f30a8804b8984a7f827925a4a, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,185,984.628910,37.642558,41.779264,41.894103,15.404202,17.245883,70.584890,67.898817,33.542210,39.286208,37.206073,41.705622,41.813596,4.715847,,,,,,,62de58c04134031a6be0aaf90a2cc9ec, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,210,442.531007,34.362796,39.537362,39.415388,13.723191,14.553364,51.293647,48.777320,30.070403,36.728244,33.916211,39.466155,39.335230,4.214366,,,,,,,d5725cb154d77d24c9a172ba3351861e, +RA,aom,av2,0,E,Vertical_Carnaby_1080x1920_5994.y4m,1080x1920,60.00,8,1080x1920,235,185.600246,30.885596,37.113228,36.843528,12.025349,11.730020,29.199014,27.506835,26.607016,33.809542,30.521579,37.049607,36.772268,3.298765,,,,,,,e383305b3af3767cd1813558cf599713, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,110,39082.600615,38.356224,42.102968,42.597190,13.952409,21.839557,99.975126,99.968965,42.624266,39.738296,38.119347,41.923963,42.483731,0.000998,,,,,,,b692d942ab7483d046c623921e5bb02d, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,135,11720.614154,34.502782,39.353655,40.894691,10.485401,17.313959,99.680130,99.219491,36.610306,36.789950,34.337077,39.220922,40.842520,0.038065,,,,,,,5f9ba74cb673fe54cdc404c5c60fa77c, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,160,3839.484923,32.130328,37.084419,39.990639,8.872282,15.090207,94.367605,92.485754,32.406651,34.867255,32.036505,36.975774,39.966755,0.062298,,,,,,,500682723c77c2972808eba9060271df, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,185,1430.760000,29.865062,34.903973,39.013382,7.557229,13.010593,79.277146,77.193488,28.449354,32.989524,29.788795,34.803002,38.996380,0.073896,,,,,,,6621ce42b6fa5edc7eb2eed1cc2dfd00, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,210,539.593846,27.370929,32.850896,37.890342,6.152258,10.589528,58.184606,56.434207,24.626685,30.902541,27.294896,32.764222,37.874266,0.103860,,,,,,,d56c3e7d846ce0dcd84561edfc70a932, +RA,aom,av2,0,E,WalkingInStreet_1920x1080_30fps.y4m,1080x1920,30.00,8,1080x1920,235,197.455385,24.851244,31.040807,36.411718,4.798849,8.073405,36.293195,35.196901,21.282467,28.636012,24.782463,30.962078,36.396741,0.088083,,,,,,,e0fcd8e83ef41334706f93e67ec2d958, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,110,9877.043077,42.807195,44.442344,46.827168,19.128556,26.430382,99.933386,99.738811,45.413919,43.977845,42.684053,44.293665,46.712478,0.019432,,,,,,,f601c6859eb3375c925099ffab4c9e29, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,135,3999.845538,39.890320,42.050532,44.489103,16.813039,23.440825,99.344533,98.436775,41.192223,41.506746,39.809969,41.959367,44.418902,0.019862,,,,,,,14777aa0b70a9c76001ec31e90bcbe06, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,160,1725.177231,36.978183,39.806945,42.130177,14.525981,20.468525,95.557496,93.177702,36.673954,39.167267,36.912173,39.746763,42.085350,0.018188,,,,,,,f13da4e6a688ec871e9b6b03eaea19cd, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,185,778.637538,33.783856,37.414899,39.567698,11.934549,17.107306,84.359678,81.677638,31.983079,36.516038,33.726133,37.373633,39.534523,0.017380,,,,,,,e3eb64a62c35d612302862c14b662b2a, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,210,336.046154,30.333388,34.658855,36.599968,9.201377,13.426770,65.866680,63.204082,27.324433,33.470906,30.288178,34.627236,36.572763,0.025207,,,,,,,b696f99ccb29da924eeab1120684610b, +RA,aom,av2,0,E,WorldCup_far_1920x1080_30p.y4m,1920x1080,30.00,8,1920x1080,235,131.940923,26.919201,31.826857,33.682862,6.776964,9.787316,42.001425,39.919616,23.116741,30.298690,26.887063,31.803992,33.661159,0.038013,,,,,,,1586729b854941566db0b0cc96202646, diff --git a/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_STILL_Preset_0.csv b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_STILL_Preset_0.csv new file mode 100644 index 0000000000..2f27989e28 --- /dev/null +++ b/tools/convexhull_framework/ctc_result/AV2-CTC-v15.0.0/RDResults_aom_av2_STILL_Preset_0.csv @@ -0,0 +1,343 @@ +TestCfg,EncodeMethod,CodecName,EncodePreset,Class,Name,OrigRes,FPS,BitDepth,CodedRes,QP,Bitrate(kbps),PSNR_Y,PSNR_U,PSNR_V,SSIM_Y(dB),MS-SSIM_Y(dB),VMAF_Y,VMAF_Y-NEG,PSNR-HVS,CIEDE2000,APSNR_Y,APSNR_U,APSNR_V,CAMBI,EncT[s],DecT[s],EncInstr,DecInstr,EncCycles,DecCycles,EncMD5,DecMD5 +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,60,5590225,48.600737,49.500725,50.883898,24.995518,34.440522,96.988825,96.328703,54.215622,47.759820,48.600737,49.500725,50.883898,0.000001,34195.22,2.32,198189314927116,10060433485,90031549580127,6040230234,75c9f3dbfdb45e8ae1dfd1d9448d1875, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,85,3690846,42.675071,45.906325,48.340230,18.958471,28.423596,96.228866,95.227134,49.596428,43.319692,42.675071,45.906325,48.340230,0.000006,41727.23,2.20,242767292098112,9709550177,109750298653536,5867226435,a23ffec03a0eaa92e62cab183bef72c6, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,110,1979392,36.665051,42.762950,45.924244,13.016765,22.104939,94.223746,92.737601,43.048745,38.723182,36.665051,42.762950,45.924244,0.000307,50182.69,1.44,369175797954008,8098549461,140137981348582,4067160076,f822f80cde28bdcaadaf7ac3f9158afb, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,135,861533,32.052600,40.124609,43.635902,9.520101,17.491391,88.066247,86.148769,36.197874,34.905028,32.052600,40.124609,43.635902,0.001613,103477.13,1.38,600242110700144,6315235847,270998503959908,3771230989,bf2379a4a03629e003167d04a6ee56d5, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,160,394183,28.657639,37.541305,41.393713,7.507283,14.081355,73.277370,71.126358,29.979081,31.881765,28.657639,37.541305,41.393713,0.008297,71057.87,1.27,406701340844499,5309982355,185665678101001,3597418290,f94242fa2115b1a5f4b2d9e7cef289dd, +STILL,aom,av2,0,F1,animals_00.y4m,4032x3024,25.00,8,4032x3024,185,172766,25.293854,35.034193,39.273406,5.479370,10.497827,49.218717,47.338656,24.234355,28.806463,25.293854,35.034193,39.273406,0.017989,34698.15,1.01,242996569871384,4559049780,96905034011453,2892935115,ab537d79194f1ef18ddee3ac4d7a5c75, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,60,3830752,48.722374,50.599357,50.965624,22.275520,31.408735,96.590759,95.818997,52.646807,48.069829,48.722374,50.599357,50.965624,0.000002,50290.33,1.81,284911165464467,8023279257,131269775182194,4748190491,c3acdeb79d9ef7ada130fcecbe2141ff, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,85,2137580,42.900486,48.393899,48.742096,16.645788,25.420587,95.275296,94.186668,47.819624,44.184953,42.900486,48.393899,48.742096,0.001254,58867.57,1.62,341822921730208,6905832039,153741310746434,4309598547,b32408aeff43f3196fcd617a955659a9, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,110,883376,37.746861,46.190141,46.743276,11.866938,19.664120,92.205001,90.551489,41.391763,40.460994,37.746861,46.190141,46.743276,0.252000,60440.19,1.17,352162141593129,4907442348,158060742669178,3153692352,29d292c317391134893afa12cead812a, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,135,319228,34.216208,44.194156,44.815777,8.764166,15.209807,84.008831,81.913072,34.983945,37.606908,34.216208,44.194156,44.815777,1.147144,62578.58,0.79,432058992938454,4504229471,174787469252936,2197752734,beec76c7e9746fa3b2afffdd62d348d4, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,160,134211,31.727296,42.491401,42.844744,7.010062,12.167167,67.165566,64.861188,30.040618,35.359470,31.727296,42.491401,42.844744,1.776246,29802.35,0.61,209642296455129,3545127592,83226482875488,1719679790,10b0972427f2f8d051f9455211df1734, +STILL,aom,av2,0,F1,animals_03.y4m,4032x3024,25.00,8,4032x3024,185,59093,29.154208,40.636482,40.398142,5.653918,9.600043,42.523741,40.994660,25.984089,32.894919,29.154208,40.636482,40.398142,1.885778,13689.46,0.61,93267028756830,3812135436,38230693264461,1700738041,372b16a03494214d009d7d6bb514e272, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,60,1030073,51.271610,55.502551,56.093985,22.597818,29.325651,96.434377,95.352342,50.750894,54.094888,51.271610,55.502551,56.093985,0.015119,49129.56,1.02,266229178802719,4456739368,126549245644079,2710948126,ba182337dce0bdf73c7af8de032dbf7b, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,85,521403,47.566842,53.191578,53.875816,19.316735,24.752508,95.164563,93.768313,46.381345,50.026808,47.566842,53.191578,53.875816,0.039341,38463.37,0.92,211092584507115,3815296551,99105674681281,2451113443,97354df3114b515ffc7adec956b7e678, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,110,248977,43.796011,50.882172,51.835623,16.192845,20.323536,91.760730,89.880451,41.404312,46.516216,43.796011,50.882172,51.835623,0.146893,20123.00,0.55,135723845928435,3042253828,56194768329964,1511888586,d951dd6d21c23c2530ecd7709557bf92, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,135,104222,40.101860,48.361592,49.522618,13.414719,16.230058,82.431147,80.388710,36.619478,43.121741,40.101860,48.361592,49.522618,0.523275,23537.39,0.80,126072000643727,3991953912,60821337405890,2241965667,26479e9e302a5eb59bcf40f903a4b543, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,160,41441,37.024753,45.536979,46.724875,11.625242,13.279090,65.184039,63.210886,33.023341,40.168183,37.024753,45.536979,46.724875,0.816188,12755.39,0.71,66846137934041,3726450985,33123769516917,2015261548,cae9256504b0e5548fe316e447f94a79, +STILL,aom,av2,0,F1,animals_09.y4m,4032x3024,25.00,8,4032x3024,185,17920,34.378520,42.395553,43.514658,10.512661,11.151439,47.049437,45.193188,30.154006,37.437725,34.378520,42.395553,43.514658,1.237059,4951.32,0.45,33351256295270,2890966589,13826475767132,1291122101,2fdf31ae30d3338b5977fde60f34639b, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,60,2745093,48.849972,52.766607,53.544679,21.211282,29.419622,97.247852,96.629908,50.136647,50.049389,48.849972,52.766607,53.544679,1.066352,35512.12,1.28,259431739508188,6422465802,120473819375498,4435027546,d43842b192bbca667e747adfdd2db65b, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,85,1435187,43.731285,50.602873,51.307530,16.544420,24.496057,96.853322,95.902983,46.441949,46.069081,43.731285,50.602873,51.307530,7.469448,24011.16,0.95,172060110643938,4802433757,67051755595914,2687663204,879a24312bb1edc55de875289f6826c2, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,110,743697,39.841014,48.420222,49.236183,14.502993,22.147308,95.419864,94.010947,43.575920,43.220986,39.841014,48.420222,49.236183,11.306905,17836.56,0.94,130408615857895,5013631991,49825943135727,2622744671,00917bb187e4fc64bf671a96cce4eb6f, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,135,370679,36.128744,46.242359,47.204813,13.435305,20.494584,91.366197,89.303788,40.146439,40.651562,36.128744,46.242359,47.204813,11.072531,38725.06,0.98,222569850310732,4438314527,101119080970631,2628356382,9c60a9eb4866db5cb18bf97b15e6868b, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,160,170309,32.260136,44.001085,44.850171,12.112182,18.174706,82.172118,79.246178,35.160058,37.896918,32.260136,44.001085,44.850171,10.603724,29159.56,0.78,166582054756932,3346509437,76290556214299,1953516111,75c517abd179f2dcbcbafd0685f1e677, +STILL,aom,av2,0,F1,buildings_02.y4m,4032x3024,25.00,8,4032x3024,185,72192,28.509074,41.366070,42.367929,10.359787,15.016252,65.992350,62.550922,29.353225,34.875886,28.509074,41.366070,42.367929,8.353604,20013.02,0.68,113879925173616,3175547103,52265317356425,1917089518,c52cf7c0505a911af1270716bcd3135b, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,60,6064443,48.365826,50.761242,50.648523,28.412097,37.776046,97.070904,96.357209,55.127567,47.040300,48.365826,50.761242,50.648523,0.002241,18733.93,2.45,110112991124581,10648786811,49529919009863,6437953131,92ee98885259a31a6e85170476766471, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,85,4214638,42.574358,47.921251,47.745937,22.531611,31.749247,96.389448,95.266719,50.784926,42.909685,42.574358,47.921251,47.745937,0.004070,22567.85,2.17,144387525067545,10233647670,64289955371589,6253114414,799d11800359c9fe91f3a75320b4823f, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,110,2610699,36.796528,45.475732,45.103646,17.340129,25.864135,94.387419,92.763761,44.994092,38.717536,36.796528,45.475732,45.103646,0.005150,50316.27,1.94,309260639731360,8586620031,133557731569776,5251421347,710697e1aedfd88fb3d5b56cae8f2bdb, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,135,1354594,31.596207,43.046033,42.540866,13.164928,20.627086,88.926661,86.745243,37.846066,34.650051,31.596207,43.046033,42.540866,0.012028,111089.88,1.53,650941136359167,7180021639,290885036824049,4186769215,2a744d6b969a6c3d413a1ad70b2e6eb9, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,160,620896,27.198183,40.619593,39.985085,9.624269,15.797508,74.048255,71.877556,30.107016,30.873374,27.198183,40.619593,39.985085,0.032744,71951.11,1.03,538503380695311,5696233792,245826331055455,3696022430,bbd66950c60594896656ba985802f5f0, +STILL,aom,av2,0,F1,buildings_03.y4m,4032x3024,25.00,8,4032x3024,185,258902,23.476288,38.348346,37.718664,6.601688,11.500439,49.510467,47.503209,23.381369,27.374516,23.476288,38.348346,37.718664,0.062069,62147.76,0.92,347035595411474,4121460108,161951719966348,2573655005,bbf53e5a6713c000aab92cdc30593e15, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,60,1773999,51.303051,52.105431,52.156329,22.166949,28.906794,96.385889,95.480203,49.233651,51.804603,51.303051,52.105431,52.156329,0.555511,78646.80,1.67,523906875624650,7787693775,219642874768143,4693009231,c76858023c2e251a6a84c85ddf9d1ffc, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,85,703830,47.876310,49.759828,49.926349,19.476312,24.918896,94.719677,93.430654,45.798179,48.586032,47.876310,49.759828,49.926349,1.548506,44955.39,1.47,290259960807550,7143193514,125537326374979,4085254365,a20b2a2f04c078bde63fd0f3a8c0be2d, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,110,321344,45.178207,47.414372,47.929357,17.652686,21.895019,90.857562,89.091697,42.595341,46.146269,45.178207,47.414372,47.929357,2.041370,23067.85,1.61,159062865180846,8134128795,77649874676629,5864685715,f139f017b760d07f0ce0060a3e5b7595, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,135,148849,42.163223,44.911857,45.730269,15.642937,18.667224,82.053246,79.878570,38.816781,43.638600,42.163223,44.911857,45.730269,2.468980,31163.10,1.53,168470409156552,7679712051,80552765828078,4284642672,c61de7dbae66022de1e89b3902db2448, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,160,65405,38.895642,42.083270,43.287834,13.559391,15.344632,65.685653,63.268650,34.891171,40.873137,38.895642,42.083270,43.287834,3.145488,13066.42,0.75,90256420539555,3858906167,36493159340411,2114585749,6e5233ad951a789e1e650f8141bebe11, +STILL,aom,av2,0,F1,church.y4m,6000x4000,25.00,8,6000x4000,185,26394,35.653139,39.166790,40.593381,11.730596,12.229513,43.024627,40.891257,31.274118,37.986954,35.653139,39.166790,40.593381,4.205817,8842.01,1.26,44775079070046,6815291715,23211438495341,3559413366,9cf22548368843fe98934e07ab962581, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,60,4127419,48.945782,54.881889,53.268470,22.173947,30.205985,96.426656,95.766146,53.254049,52.047457,48.945782,54.881889,53.268470,0.000009,47399.77,1.41,319832078117447,7474595325,132391888709270,3923552154,0c2927a275076bfcd672d5d0c895bb3f, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,85,2478598,42.882522,52.792250,51.690852,16.073892,24.053010,94.977626,94.021835,48.275659,47.551506,42.882522,52.792250,51.690852,0.000042,62869.81,1.65,350544181692611,7206947157,163423419672161,4416971420,d5e1c0a018065057b7f61b4f131e5c02, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,110,988067,36.994115,50.372114,49.834488,10.020359,17.489524,91.691547,90.216247,40.954924,42.783169,36.994115,50.372114,49.834488,0.000994,49996.27,1.19,376567455900735,5940190320,169778266780079,4213196477,892d6b12d096acfe071a66da6185821d, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,135,192233,32.935102,47.585810,47.435455,5.697847,11.261192,82.376399,80.892998,33.643371,38.996715,32.935102,47.585810,47.435455,0.336571,47775.01,0.64,334269343516384,3665169561,133416968509109,1800119194,f41e16ace8955c7bfe0dc35e1a373d50, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,160,42985,31.462431,44.705263,44.564521,4.641066,8.594914,66.767277,65.329041,30.262177,37.393831,31.462431,44.705263,44.564521,12.108857,14779.17,0.59,80136459719634,2668622538,37957703718681,1633079260,00c40c870fb85d939af6262b97347b4c, +STILL,aom,av2,0,F1,fireworks_01.y4m,4032x3024,25.00,8,4032x3024,185,19071,30.617394,41.948409,41.105279,4.444853,8.038222,52.590508,51.376363,28.678863,36.188904,30.617394,41.948409,41.105279,14.070239,7936.19,0.56,41008819576682,2963121407,20459159328399,1599902898,72887bc43d906738aba91d1fd99d77f2, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,60,1209752,51.377437,51.149937,51.562780,23.761613,32.139567,96.805891,96.018606,52.640365,53.252248,51.377437,51.149937,51.562780,0.003342,36249.85,0.85,199168228596424,3435554077,93924610752256,2245677925,0334b7ff912134fa29c9377e3212a523, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,85,637125,47.383217,46.916734,47.531234,20.436255,27.531978,95.705592,94.579667,47.686683,48.708147,47.383217,46.916734,47.531234,0.004805,31138.77,0.76,171322642206899,3099320858,80660058197981,2049682708,31e767f26e9ff5e817e940c8c30d84c1, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,110,328977,43.753087,43.096602,43.998338,17.880167,23.799660,92.844821,91.227914,42.507153,45.169460,43.753087,43.096602,43.998338,0.005599,23544.82,0.73,131199421583066,3326759124,61136803357641,2026198641,d24fc74049ff657a216429f70667d069, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,135,170390,40.130073,39.527990,40.555950,15.413297,20.092230,85.631587,83.568549,37.224687,41.712399,40.130073,39.527990,40.555950,0.004260,21097.37,0.61,148708387914821,2981458227,71713850493024,2214688712,8001f7dfde6e95b6b555296d56e96e34, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,160,87117,36.328485,35.974054,37.144664,12.905443,16.377830,70.099307,67.847142,32.280364,38.093532,36.328485,35.974054,37.144664,0.005299,16217.18,0.58,89439076474865,2635102698,42166832298607,1631599828,b612c9cb33eaa6d6d32df289633fa034, +STILL,aom,av2,0,F1,flowerfield.y4m,3696x2448,25.00,8,3696x2448,185,42572,32.484401,32.810420,33.564433,10.561868,12.913128,46.824847,45.067955,27.820905,34.523296,32.484401,32.810420,33.564433,0.018320,8290.46,0.56,45869761883670,2552314067,21568408315061,1604143633,be870e362dcc4303508115740fdfac86, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,60,5113154,48.544565,49.691743,51.060886,23.659542,33.359069,97.083074,96.446361,53.931341,48.594065,48.544565,49.691743,51.060886,0.009130,35613.50,2.41,205725969481355,9873477584,93371031317603,6380697998,57d529de3c8f641134f7d02c07cd3714, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,85,3205499,42.705289,45.516177,47.732248,17.950984,27.355208,96.355319,95.387586,48.956217,43.792522,42.705289,45.516177,47.732248,0.014379,34021.25,1.76,244250877521825,8875797419,95012413348408,4923262763,2b2d8a10c02127d12325f18926ec1429, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,110,1774010,37.559355,41.921655,44.475788,13.902604,22.376399,94.415073,92.944742,42.740942,39.577380,37.559355,41.921655,44.475788,0.026852,49468.44,1.83,293457181301139,7958933634,130247097811123,4909978170,997493f146d162214e3ab132e98ad30f, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,135,903244,33.142335,38.828349,41.423535,11.139804,18.425732,88.815614,86.690163,36.397467,35.896482,33.142335,38.828349,41.423535,0.043881,94269.72,1.50,540914455026289,6883270781,247013899637159,4095073240,41aa047362737fad4126b8b15494da52, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,160,424879,29.150308,35.717021,38.490252,8.509710,14.433478,74.425980,72.083137,30.093856,32.434723,29.150308,35.717021,38.490252,0.084426,71869.78,1.21,401802920599884,5634059653,187677024580853,3318749411,9fad02965d79b7e325741efcbbfe26e4, +STILL,aom,av2,0,F1,flowers_08.y4m,4032x3024,25.00,8,4032x3024,185,190650,25.518692,32.484622,35.530955,6.107825,10.562611,51.363325,49.405055,24.231653,29.095963,25.518692,32.484622,35.530955,0.137549,44942.58,1.03,255300272181089,4800711010,117287178344589,2864113761,99a7b39da61386421ef830c3296e5f12, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,60,3954523,48.525304,51.774232,53.072094,23.680695,33.751234,97.100101,96.556761,54.089473,48.986023,48.525304,51.774232,53.072094,0.000170,41864.99,1.94,244829834723879,8543374432,109817599790618,5103703130,dc98f849f70989024dfb46f26ec3da4c, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,85,2292552,42.918254,49.162988,50.715728,18.499514,27.898661,96.349528,95.585472,49.201996,44.461787,42.918254,49.162988,50.715728,0.000264,40749.19,1.62,279687135411952,7814851706,113797513198085,4559518381,8a88184f2ef4c0dfda30a34a5b35e470, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,110,1122695,38.059143,46.511960,48.173295,14.500679,22.839569,94.876797,93.531301,42.754373,40.421164,38.059143,46.511960,48.173295,0.000771,56657.91,1.33,331635285967348,5936022926,149032574622770,3670820618,37ee925ffc54612b2e6172cad3057552, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,135,518237,34.262835,43.658544,45.465625,11.629041,18.877862,90.008350,88.129351,36.249659,37.067810,34.262835,43.658544,45.465625,0.015037,74632.18,0.90,510142465799902,5204125914,208427469188684,2554715389,bb4e6b0aa9a98936dbb4f9d2b17dc655, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,160,254054,30.987829,40.845156,42.774831,9.200017,15.210420,77.640406,75.411687,30.305908,34.017922,30.987829,40.845156,42.774831,0.052496,47209.56,0.81,334907393252787,4789421815,131838120022407,2252337572,51dfe6c49b8b141c9bb1322c1da79bcd, +STILL,aom,av2,0,F1,flowers_12.y4m,4032x3024,25.00,8,4032x3024,185,123203,27.583959,38.090845,39.925914,6.869726,11.532823,57.895192,55.733411,25.058022,30.875933,27.583959,38.090845,39.925914,0.063947,26548.43,0.75,188920369473126,4259575576,90531516666632,2722946840,983b1f3697b261630103c8bda4d64b17, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,60,2944491,48.573980,53.177350,54.252714,20.837627,29.945116,97.027434,96.312601,52.327497,50.720704,48.573980,53.177350,54.252714,0.000364,57923.48,1.65,326000200175325,7155833701,150421904193879,4333899936,b1a1d4bf9f2689e70504e58c597672b9, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,85,1416894,43.263529,50.637179,52.158031,15.735039,23.878775,96.266814,95.248877,47.039243,46.023829,43.263529,50.637179,52.158031,0.004951,56723.21,1.45,323291373447613,6066082582,147160285829531,3899634657,c787f895e8f107c7d6fa06ee26df9e98, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,110,590558,39.127008,48.014400,49.912625,12.039270,18.585655,94.241071,92.742543,40.585261,42.304307,39.127008,48.014400,49.912625,0.036771,44232.84,1.14,247572244208838,5158055887,114911768145810,3130854291,a32b4df8a98704c90477824f46551707, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,135,228214,35.952190,45.205418,47.489819,9.696590,15.252517,87.870402,85.787984,35.524276,39.400153,35.952190,45.205418,47.489819,0.143294,40072.04,0.78,278492081723477,4487128026,111906312725070,2159199015,3e31c3b0351ad427af10b9bb85ca9906, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,160,96785,33.313520,42.174776,44.782348,8.255186,12.726508,73.826610,71.538238,31.465894,36.919781,33.313520,42.174776,44.782348,0.332321,21299.80,0.64,145382802263814,3818294699,59483740323068,1789528809,007ca738abd5a3f9e5978f50d94616a8, +STILL,aom,av2,0,F1,food_02.y4m,4032x3024,25.00,8,4032x3024,185,40636,30.526503,38.958614,41.614315,6.943813,10.093862,54.910078,52.824253,27.546528,34.248422,30.526503,38.958614,41.614315,1.060304,12585.62,0.90,67663564722937,3313150482,32719361909705,2485861502,18cb0c2235c8173be9e75a182a6f6b41, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,60,6976580,48.957344,52.037808,52.639243,21.617996,30.237578,96.638429,95.706777,52.103851,51.455057,48.957344,52.037808,52.639243,0.000113,134654.03,3.86,747501109685207,15918417579,349736850799260,10252950768,f610ca89133dc38711c871e22856a11e, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,85,3740684,43.476840,49.358116,50.120030,16.247026,24.430692,95.523026,94.188728,47.353376,46.554202,43.476840,49.358116,50.120030,0.000649,103863.11,3.10,728778599409535,17138237858,290048168760990,8664642436,2cdee35ad21d9e57f83d2f337ecd9300, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,110,1387408,38.452437,46.596973,47.452670,11.392491,18.715757,92.309411,90.622472,41.192234,41.979354,38.452437,46.596973,47.452670,0.001674,82366.60,2.27,591380271281008,12604666674,230027055668013,6341608464,4d87beaf68b6838b213bebe60e0eb664, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,135,415466,35.292864,43.694511,44.552936,8.828707,15.212437,84.693664,82.599311,36.166410,38.930422,35.292864,43.694511,44.552936,0.484915,103452.31,2.12,584094512371884,9897774348,269350117669837,5867596620,cc947be02f97013580b979b53d39cf91, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,160,184583,33.386834,40.456550,41.362478,7.909184,13.271855,69.891554,67.546766,32.204492,36.922030,33.386834,40.456550,41.362478,0.610747,41481.96,1.53,289415433948589,8972870935,115846758024525,4248391615,b9ebff347a638308740a5905b09e76f6, +STILL,aom,av2,0,F1,fountain.y4m,6406x4270,25.00,8,6406x4270,185,79768,30.939459,37.152698,38.034728,6.874824,10.864288,47.466145,45.297501,28.094406,34.489202,30.939459,37.152698,38.034728,0.507837,20818.16,1.34,141951085352662,8462309302,58136118416054,3774203041,c5c1c8f75e52aa68f5286cae8cf7a60f, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,60,5248189,48.917913,55.893006,55.530669,19.700727,27.901869,96.337804,95.521777,50.057539,50.398347,48.917913,55.893006,55.530669,0.152106,148100.53,3.34,825785461854133,14164235025,382172982653251,8781664141,1121e2246ff265c103408f111ceb6a1f, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,85,1862959,43.462302,53.990306,53.464155,14.182381,21.744085,95.242349,94.072616,45.130309,45.407710,43.462302,53.990306,53.464155,0.940725,126409.99,2.29,708865293053061,9366050613,325332313171129,6126381346,9c345414d8a218c7c628c21c4c46929b, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,110,361851,40.481261,52.013065,51.312637,11.373329,17.986191,92.257929,90.736917,41.114715,42.567543,40.481261,52.013065,51.312637,5.730665,30995.11,1.41,214995346518328,7726103320,86569605577927,4152278147,0238e26941d3dd10f6d4d7913d3e180f, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,135,143878,39.133360,49.888543,49.217019,10.650030,16.346959,84.382821,82.553471,38.421050,41.287705,39.133360,49.888543,49.217019,5.807580,37434.67,1.51,201662825337605,6962301085,96329384532731,4317914309,a4950a9d73f943c739989e02163023cd, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,160,57774,37.466245,47.565589,46.846934,9.980826,14.455474,68.880467,67.127870,35.470134,39.866539,37.466245,47.565589,46.846934,5.869561,19479.79,1.52,101142252364254,8425146543,50579590700362,4265496844,6e17c1cafdd0db31851a3cb02356d1d2, +STILL,aom,av2,0,F1,lady.y4m,4480x6720,25.00,8,4480x6720,185,22182,35.504788,44.583310,43.885525,9.440157,12.422104,46.650027,45.366846,32.536941,37.986503,35.504788,44.583310,43.885525,5.996277,9800.10,1.53,49368403344509,8511398096,25841927029746,4331747632,0fdbf1b26eef8f1bd92fe72ca663d57b, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,60,4187062,48.723691,50.924371,51.836332,22.919114,32.133611,96.930678,96.280402,53.435542,49.639308,48.723691,50.924371,51.836332,0.000001,43065.66,1.95,240217285594192,8420299034,112623258515706,5107251735,adf15dbad663c8ad76a2a178d3303302, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,85,2531225,43.125328,47.624255,48.895345,17.518070,26.273426,96.128165,95.140577,48.457487,44.787406,43.125328,47.624255,48.895345,0.000034,48457.55,1.90,283779806813015,8254738815,126838883964513,5091886649,556f81c7d3121b3bb4f5f33640c08234, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,110,1259332,37.940787,44.402848,45.824552,12.771377,20.613598,94.095667,92.533643,41.918836,40.306033,37.940787,44.402848,45.824552,0.012890,44779.28,1.24,311267407482350,7033728150,125068663012260,3560222574,adb2d8b280e9c524cd2e2cac3c08e5e5, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,135,592053,34.099248,41.327157,42.787756,10.171687,16.886202,87.127763,85.335076,35.886678,36.888396,34.099248,41.327157,42.787756,0.051193,81687.60,1.32,467239271706670,5877531483,213616766710543,3535020502,69d53987c79c0cdcbd2c199393a739c1, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,160,281480,30.659087,38.357730,39.938233,8.186662,13.541214,71.564290,69.698736,30.287938,33.871561,30.659087,38.357730,39.938233,0.117924,55999.26,1.00,319496287834379,4490690469,146449135449171,2783226715,690bc86efb297ec32634bde91fe4380a, +STILL,aom,av2,0,F1,landscape_05.y4m,4032x3024,25.00,8,4032x3024,185,125971,27.134689,35.385452,37.014541,6.267860,10.193199,48.652128,46.989184,25.003048,30.768433,27.134689,35.385452,37.014541,0.305648,26446.96,0.67,186007911066162,3736040643,73858111476376,1859618875,ab8774ba1e833b703e021ae474801af0, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,60,2755259,49.392766,53.328564,53.895404,22.428469,30.339966,96.967322,96.216650,51.128879,50.457620,49.392766,53.328564,53.895404,0.994914,33480.56,1.21,230362674501766,6266524950,93502241819853,3394921475,c683a85e7b785c35a8c76a022adba137, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,85,1619377,44.320096,51.127044,51.695721,18.115124,25.376361,96.185350,95.102755,47.141260,46.362403,44.320096,51.127044,51.695721,3.007353,36824.58,1.32,211767774331107,5593987153,95968458607674,3534324792,fb75f65094a88182ff6923ff0dd695b7, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,110,825395,39.576091,48.888563,49.616545,14.391730,21.102548,94.123566,92.530665,42.456075,42.732250,39.576091,48.888563,49.616545,3.408879,28544.48,1.04,213118741542982,5482873002,97568884308945,3720901554,8e516baa5ba71956a4c0d9312eb39c03, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,135,380659,35.567997,46.593720,47.589181,11.659429,17.520148,87.814272,85.848046,37.212601,39.528746,35.567997,46.593720,47.589181,3.358513,55241.11,0.97,318210085328052,4714991461,144585155346627,2674602820,004d3762a2fbd8d741fc0bfe311df8c6, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,160,172594,32.091049,44.092228,45.173609,9.389957,14.246717,73.732011,71.557797,31.843748,36.574179,32.091049,44.092228,45.173609,3.498833,30175.58,0.71,207101999002151,4156746596,84268806226447,1981822763,dae5257396b8c657da048106f2cf9768, +STILL,aom,av2,0,F1,landscape_15.y4m,4032x3024,25.00,8,4032x3024,185,72789,28.722537,41.261276,42.326361,7.435210,11.197761,52.173574,50.213954,26.759162,33.595021,28.722537,41.261276,42.326361,3.727534,15973.10,0.47,112336264249850,2500801770,44612323615439,1311178481,75054b680657d931d198ac939a736f22, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,60,1516780,50.557961,56.823551,57.718122,22.907975,29.663818,96.923167,96.008995,51.320992,52.828813,50.557961,56.823551,57.718122,0.000005,34675.38,0.89,236026897780814,4847506366,96842824265445,2488011999,47e46805b9b90d2282bb6816f1d1c23a, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,85,859320,46.471300,54.685975,55.457797,19.374446,24.784490,96.165290,94.840161,46.782801,48.691842,46.471300,54.685975,55.457797,0.000034,36661.00,1.02,203707712757726,4115898926,94802712631448,2728656491,d1593e2321556310d1206863f6a0dcb9, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,110,456268,42.246011,52.620818,53.423294,15.920652,20.120476,93.802866,91.968941,41.509286,45.056604,42.246011,52.620818,53.423294,0.000183,27644.97,1.02,156437122869946,4656417880,71594970831977,2807427472,2f5522a00dea7cfe4b74dc4a34487890, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,135,223626,38.222937,50.380391,51.301837,12.947965,16.216721,86.746526,84.605562,36.478730,41.614114,38.222937,50.380391,51.301837,0.025933,30740.83,0.67,212628097098119,4064994937,85851381560337,1833247939,667ecc7d50c4771238fd8810b0f65795, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,160,104620,34.498953,47.890059,48.835256,10.446792,13.105835,70.711831,68.518395,31.833674,38.258669,34.498953,47.890059,48.835256,0.176042,18738.59,0.58,130202601118568,3801278368,52336750750260,1618641108,f92e04a4b112304d66d83002d04bc092, +STILL,aom,av2,0,F1,landscape_16.y4m,4032x3024,25.00,8,4032x3024,185,44838,31.019714,45.315391,46.397552,8.451412,10.136881,47.986019,46.559062,27.514439,35.213467,31.019714,45.315391,46.397552,0.744402,12312.76,0.65,68364102117312,3647029571,32018397614053,1807004853,4f10b3529889b01c825adbba1e9df596, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,60,2502779,49.429739,54.235934,55.751044,21.866683,29.721572,96.910156,96.132506,50.152827,50.922971,49.429739,54.235934,55.751044,1.180559,34641.28,1.24,208656226096634,5623821599,96852641046341,3518405944,d45f507c06e0ed9942623c8002ca1727, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,85,1461001,44.513162,52.229468,54.031203,17.889567,25.641527,95.931640,94.835995,47.287755,47.128502,44.513162,52.229468,54.031203,1.309793,25047.56,0.89,178370076922479,4428000068,69960046164500,2494999295,87c44f79224280d5f3f9c5960f12e81a, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,110,623884,39.327513,50.258309,52.244258,13.308511,20.936688,93.430011,91.877419,43.062743,43.305387,39.327513,50.258309,52.244258,1.234907,33396.83,1.13,196373965987009,4586256390,87330063928220,3088598830,a1211927430e5c5a340d57457f23fcd7, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,135,239959,35.823857,48.452855,50.513051,10.710523,16.996853,86.314645,84.393261,37.639722,40.473406,35.823857,48.452855,50.513051,1.345355,36753.44,0.67,253544915317105,4034649357,102687963913643,1865415398,963ae969360d7ae9a3f51971e4d84fd3, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,160,98512,33.070896,46.573761,48.350663,9.125855,13.860544,70.662464,68.436387,32.792597,38.084102,33.070896,46.573761,48.350663,1.429971,23783.23,0.74,132132702966864,3068040053,62068200614933,2109893051,28ce8efec8a59988e5ada86fceb09079, +STILL,aom,av2,0,F1,landscape_18.y4m,4032x3024,25.00,8,4032x3024,185,37789,30.303130,44.098667,45.719564,7.757691,11.121953,49.103242,46.966812,28.542067,35.504301,30.303130,44.098667,45.719564,1.846600,10754.15,0.58,58877576249733,2962729686,27921399925090,1642951780,c37677e4f3b79bef541fa806d1d5bd2e, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,60,4901494,48.766560,49.000083,50.835306,23.199935,31.328097,96.506795,95.608267,53.053635,46.890350,48.766560,49.000083,50.835306,0.006539,53979.44,2.10,308798889085971,9303411399,141595874679020,5487543769,3ca73f3eaf1f80ad847c5beadcebb4f4, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,85,3043769,42.851919,45.692476,48.962729,17.214932,25.212205,94.873687,93.726327,48.375732,42.816346,42.851919,45.692476,48.962729,0.007813,64733.10,1.79,378258410427547,7772659646,169974698433851,4720224480,aef8e52e8ba4bfaa0267e3445c35f974, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,110,1490507,36.972579,44.225210,47.706436,11.500654,18.964218,91.444110,89.734717,41.715314,39.317714,36.972579,44.225210,47.706436,0.024407,69223.35,1.50,411521641837835,6863254436,181286585881100,4022746096,9340d930abc056b35199e66657211499, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,135,488118,32.198336,42.922192,46.384747,6.874853,12.895076,81.508571,79.487477,34.242127,35.899428,32.198336,42.922192,46.384747,0.515013,81420.52,0.76,569867713083858,4315746998,227392738127564,2148877190,6a137f969316c5ae074dcc84460a10e2, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,160,95363,29.033507,41.538103,44.741727,3.888954,8.022864,62.495477,60.796127,28.242760,33.256451,29.033507,41.538103,44.741727,4.296747,28607.14,0.60,172130686639660,2424312248,80102246782771,1803386924,d63c737a6dd7c7fef2c1c4af91bdef43, +STILL,aom,av2,0,F1,landscape_25.y4m,4032x3024,25.00,8,4032x3024,185,26857,27.759601,40.123802,42.847092,3.226318,6.448923,44.001149,42.720165,25.838778,31.953195,27.759601,40.123802,42.847092,7.386023,8002.54,0.54,54503466733849,3524343865,22349223401597,1528551031,e2d74b9d0f030791a6a85a1e019f4db7, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,60,2926983,49.036988,53.087078,53.240738,21.355498,29.814160,96.881731,95.963413,50.885904,50.016274,49.036988,53.087078,53.240738,0.526308,48958.23,1.69,270492778394277,6785804405,127162326389064,4528184238,ed926233c1d7e247388b01378da228d9, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,85,1605498,43.709631,51.378380,51.590860,16.568704,24.655273,95.830999,94.551182,46.972783,45.940855,43.709631,51.378380,51.590860,0.658666,34045.34,1.13,240562726418005,5603545630,95104744960898,3142336761,a5e76b4a1627e0b39f0295f743c9c165, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,110,695745,38.908306,49.677274,49.980992,12.606079,20.178581,93.040079,91.242700,42.196951,42.231440,38.908306,49.677274,49.980992,0.679684,37983.10,1.20,219538259278632,5428616815,99210642225590,3290547160,e485ac4ca120f6ee03df94385084b8ed, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,135,277097,35.509720,47.877371,48.205261,10.310697,16.697796,85.026243,82.802343,37.044296,39.466339,35.509720,47.877371,48.205261,0.704644,49213.04,1.00,279342245902378,4586725308,128215782784097,2782769169,868d2cf6c0325ef451305b72686c3996, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,160,116394,32.569678,45.825954,46.128070,8.536563,13.492780,67.969679,65.688052,32.107496,36.946072,32.569678,45.825954,46.128070,0.722999,28208.74,0.87,157193747721340,4143966522,73319258043331,2420801834,372a111605c2a5d6fca764be877e1c2c, +STILL,aom,av2,0,F1,landscape_26.y4m,4032x3024,25.00,8,4032x3024,185,45371,29.524419,43.075512,43.540331,6.898505,10.300997,44.022440,42.077943,27.485033,34.228738,29.524419,43.075512,43.540331,0.906875,13240.02,0.66,72483514319571,3297550939,34155744231463,1880638591,d6d4e6b48bce7becf9ed719a685c56a9, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,60,3193691,48.856039,51.147834,52.880923,21.009956,29.617779,97.069785,96.449117,51.142642,50.292262,48.856039,51.147834,52.880923,0.433586,35525.46,1.39,246881473881185,7201100442,99210747173535,3846577342,6c3d6bd60c7de883b735db8a63654c39, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,85,1750061,43.580706,48.187340,50.082922,16.177123,24.032016,96.305529,95.417858,46.807788,46.400529,43.580706,48.187340,50.082922,1.837918,42496.03,1.52,244643730282896,5811715025,110577326407291,4069651360,88808c89de7cf8c7ce5d9ea45b46402d, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,110,856400,39.090689,45.532713,47.419046,12.695268,19.138180,94.482579,93.131679,41.242978,42.948258,39.090689,45.532713,47.419046,5.524825,26996.49,0.93,194008945149858,5037578432,75392345629138,2628758295,f01f62491080a72aecf7f34e4b79df2d, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,135,389375,35.302250,42.960973,44.954926,10.654352,16.483804,89.535431,87.404403,36.816617,39.897256,35.302250,42.960973,44.954926,10.071915,52226.13,0.96,298820339167338,4468596446,136286780926624,2658425221,49a22d79db47ea6044696f5b497b1219, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,160,173762,31.952016,40.681920,42.545161,9.033535,14.359035,76.178458,73.866307,32.053998,37.130038,31.952016,40.681920,42.545161,10.082729,29594.81,0.65,200685962513183,3933341060,82670981142173,1832988311,7c660e75fa27f7f40a78a7ca6b59cb9a, +STILL,aom,av2,0,F1,landscape_28.y4m,4032x3024,25.00,8,4032x3024,185,75569,28.727052,38.424534,40.106437,7.325549,11.762747,55.079291,52.945968,27.067936,34.244832,28.727052,38.424534,40.106437,8.896698,15917.32,0.53,111902347696573,3153234643,44455503689544,1474775599,c51c04dc5de1b204223ef2386d0f91c6, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,60,6491248,48.775509,51.227214,51.577328,21.649710,29.965811,96.505462,95.502344,51.366156,49.599525,48.775509,51.227214,51.577328,0.000019,78348.28,2.75,545370011400592,14142364057,218850015450043,7716054873,7f54770d245e753a23e64c3e159694da, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,85,3555669,43.683377,47.747272,48.437278,16.930111,24.543714,95.264125,93.795010,46.975131,44.960685,43.683377,47.747272,48.437278,0.012679,87695.92,2.99,504508084858767,12673350302,228344653011389,8236881517,9b67c0ab883806af50d7ea2050b627a6, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,110,1635937,39.163983,44.426151,45.518309,13.079281,19.723819,91.537763,89.719051,41.666387,40.986917,39.163983,44.426151,45.518309,0.406970,79479.60,2.16,464658495779293,9339472317,208232562144026,5902809598,f3471bb2d8fc68db2d5d8b48874a70fa, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,135,776292,35.582689,41.299540,42.863881,10.799175,16.413852,82.370208,80.397503,36.420461,37.904886,35.582689,41.299540,42.863881,0.787606,115202.15,1.75,661105871093423,7572091209,301471774629216,4856179871,aceea3f327172da358091dc19025047b, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,160,327182,31.844835,38.462198,40.588841,8.422029,12.887448,62.307208,60.533173,30.756431,34.806137,31.844835,38.462198,40.588841,1.140864,77395.59,1.44,437860757068986,6422478906,202754312333916,4043552431,5c2c1c96f46a03b00b4718f1f98371f2, +STILL,aom,av2,0,F1,lodge.y4m,6000x4000,25.00,8,6000x4000,185,110074,28.364039,36.159934,38.711507,6.281107,9.459327,32.696564,31.532520,25.672621,31.846459,28.364039,36.159934,38.711507,1.424233,32847.31,1.22,185702512713930,5754490972,85536624793032,3447225808,2e7e75059f859f5e34cfe00078a78247, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,60,4803178,48.853146,56.902313,57.171196,19.326167,27.583868,96.785724,96.125184,49.778155,50.791203,48.853146,56.902313,57.171196,0.000007,157274.06,3.28,870529488292896,13750357115,405786808085389,8597742073,a7615f2ca15bb2ab0adbed9266aa2297, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,85,1288122,43.318944,55.252797,55.543171,13.719417,21.113416,96.448474,95.506541,44.540502,45.436133,43.318944,55.252797,55.543171,0.852797,116603.31,2.62,657887139567408,12424464529,299403900822749,7082658096,51069ba7cb732c8205f72c5288075559, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,110,204180,41.050662,53.329507,53.677417,11.681714,17.855485,94.989647,93.644013,40.941815,43.164071,41.050662,53.329507,53.677417,7.355060,24216.55,1.92,126364056562472,8766885203,61992993043682,5481089708,08b9d86b5d737220b5b9ccd40ccd8191, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,135,79826,40.205657,50.989949,51.375922,11.355343,16.793576,91.052633,89.239080,39.379396,42.264930,40.205657,50.989949,51.375922,9.704876,24803.30,1.47,129326365338660,6711666839,62951277352898,4165920973,91ce27a3abfad86794043a0af91d8801, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,160,37554,39.104047,48.085935,48.512702,11.095556,15.936016,82.952637,80.690022,37.559962,41.177035,39.104047,48.085935,48.512702,10.248425,12595.20,1.25,65903386330558,6536262149,32370406253014,3591463161,76a03cad0b8151123cde6d95a1f72f20, +STILL,aom,av2,0,F1,party.y4m,6720x4480,25.00,8,6720x4480,185,17614,37.388851,44.533439,45.149518,10.754503,14.874964,69.316692,66.766384,34.934700,39.540619,37.388851,44.533439,45.149518,9.692013,7216.53,1.23,36848069667479,6874498066,18753598745546,3541678985,276d92a65d712c1b2e1f14b81d4622ff, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,60,2392094,48.807721,52.927994,53.764472,19.607148,28.261358,95.811867,94.790264,50.018713,48.405442,48.807721,52.927994,53.764472,0.000140,101863.65,1.97,563460079216533,8099656250,262778905503054,5204405924,c7cd5209d2ca86663a3f7c14ddea109a, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,85,606371,44.199529,50.360579,51.705793,15.089338,22.338098,94.009877,92.467643,44.966931,44.549969,44.199529,50.360579,51.705793,0.187928,53871.64,1.08,371507617687329,5317146507,150449815899139,3074027546,e4de5efa4fd3e6d110d8106f6db4991a, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,110,259571,42.725212,47.615030,49.842188,14.156500,20.139580,90.324289,88.273812,41.788129,42.863545,42.725212,47.615030,49.842188,0.489201,25057.95,1.17,136135914720347,5017489553,64509327281116,3305181572,827a9823a7761311f085f677d32860ee, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,135,127374,40.841681,44.713668,47.887151,13.255519,17.916439,81.820498,79.357697,38.329457,41.012472,40.841681,44.713668,47.887151,0.718331,28153.33,1.28,149772518024551,4487856775,72780181929035,3605456601,f1f20fcdf74440ad5766a011722a6fd6, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,160,60154,38.147581,41.826071,45.881366,12.009367,15.289208,65.114391,62.696124,34.498733,38.724004,38.147581,41.826071,45.881366,1.004067,17652.23,0.97,91182367360938,4219149210,45811326564748,2774911087,44354c9a479a5a0ee287c2e538ad03c9, +STILL,aom,av2,0,F1,river.y4m,5184x3456,25.00,8,5184x3456,185,26848,35.024224,39.114182,43.657833,10.666223,12.486986,41.203501,39.356220,30.817987,36.037486,35.024224,39.114182,43.657833,1.339335,9207.54,0.87,46150547958619,4240190707,24228147269021,2503363099,cc64e5d264b6c5356d6dbe6104946863, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,60,2457035,48.920076,54.017674,53.454799,19.469365,27.856034,96.330362,95.424417,49.524641,51.212453,48.920076,54.017674,53.454799,0.403365,95769.76,1.73,644103187647980,8811590831,267531751429877,4813496193,76394c5d1193bb4d942b0898e9139306, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,85,585269,44.498078,51.867202,51.263786,15.205848,22.320632,94.825533,93.558452,44.881499,47.056316,44.498078,51.867202,51.263786,2.616801,50936.49,1.41,350807258989145,7968604534,142254271080813,3956045723,03f36182cb73640aaa7c192c71eb00ca, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,110,232173,43.027949,49.727613,48.863857,14.256690,20.466974,91.028614,89.396455,42.331741,45.372946,43.027949,49.727613,48.863857,3.016338,19959.04,1.21,130594900346542,6630862473,55745037319834,3402912063,53aea89a2d6f280e12b23a8539d85928, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,135,109905,41.337102,47.404452,46.098264,13.449670,18.497282,82.765886,80.718089,39.365951,43.604217,41.337102,47.404452,46.098264,3.097205,24695.88,1.16,130638714514586,5275109213,63811865117797,3291081808,eb07ac1c4592d6d44ae36565eb46af24, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,160,50923,39.021305,44.621760,42.924906,12.499504,16.076025,66.931579,64.825679,35.903962,41.269456,39.021305,44.621760,42.924906,3.303524,10621.79,0.87,70936773216939,5129589213,29661098538302,2444128113,d6861808821349bc7da3730b93b3d794, +STILL,aom,av2,0,F1,santa.y4m,5616x3744,25.00,8,5616x3744,185,23163,36.374368,41.598214,39.462779,11.660646,13.625711,43.759060,41.422536,32.511272,38.491694,36.374368,41.598214,39.462779,3.709712,4789.01,0.91,32441706011313,5852107967,13374123162659,2548072847,62ff1c2bfe8a04fb1957a6d0126aebb4, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,60,4335820,48.731159,52.496224,52.705138,20.889990,29.818665,96.603734,95.749005,51.648060,49.060228,48.731159,52.496224,52.705138,0.000000,90680.13,2.49,513454590963268,10570668331,235346042523531,6548764713,41566d26bba5a3be92f1f958ab56ec09, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,85,1999287,43.136765,49.600162,49.997751,15.320060,23.588033,95.456567,94.167989,46.483100,44.460509,43.136765,49.600162,49.997751,0.162183,86765.22,1.93,538973493520690,9064557805,243111365985643,5524482534,55485c43d5d2b054df2a2347db47ed25, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,110,682208,39.192499,46.700069,47.364948,11.858789,18.934602,92.115734,90.438372,41.002646,41.048491,39.192499,46.700069,47.364948,1.166650,43834.65,1.23,312287535290127,6882454859,122428563746554,3445392665,ac07ef9c14d56c912b114e457b1be381, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,135,311427,36.778067,43.822868,44.688909,10.512961,16.741115,84.583012,82.469766,36.802758,38.817587,36.778067,43.822868,44.688909,1.339051,51022.41,1.12,371023828575846,5981576481,173673019613950,4051945583,cf8380d38d65b247f7aa71974f87934f, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,160,137836,33.940105,40.937010,41.755563,8.978951,14.010376,68.827332,66.403409,32.027161,36.306322,33.940105,40.937010,41.755563,1.538310,37315.91,0.98,209063106014766,4067970967,97439630977192,2734902126,170ae46aad53748e3ffd34b2e4047f76, +STILL,aom,av2,0,F1,seafood.y4m,5184x3456,25.00,8,5184x3456,185,56084,30.872785,38.086232,38.843890,7.438501,10.989663,44.293876,42.044882,27.568596,33.568032,30.872785,38.086232,38.843890,1.600869,17542.95,0.99,95019230109809,4490172969,45748122291224,2763281813,7b25e307448b85a57a5ef69d27741fcc, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,60,3560592,48.687137,53.424480,54.037099,20.954458,29.303159,96.831761,96.049793,51.931951,50.482825,48.687137,53.424480,54.037099,0.000000,56243.77,1.58,313004209698892,7004659064,145732226340272,4137591081,fbf6daf22e0a5b05642ba2c97856e09c, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,85,1954773,42.935798,50.816073,51.617601,15.194653,23.203810,96.078377,94.948319,46.726389,45.804659,42.935798,50.816073,51.617601,0.000010,57327.50,1.38,326479701851963,6197933689,148650683838666,3653596046,c486b308ec63a7154a8d8356e8e6bd7f, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,110,667101,37.517804,48.697981,49.635952,9.709827,16.736612,94.173816,92.564863,39.988175,41.473606,37.517804,48.697981,49.635952,0.000494,34389.62,0.79,245795611304695,4468313250,96044690867653,2218757203,389f60a77d32fed3db7e4302722beced, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,135,205192,34.789097,46.807664,48.152444,7.766155,13.912196,87.243454,85.465347,35.950917,39.151591,34.789097,46.807664,48.152444,0.037103,43486.65,0.87,240970481660399,4176393517,112917192852488,2436896803,a5aeffccb2aeb94154acdbd548368350, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,160,92169,32.901779,44.758718,46.490550,7.106761,12.478763,72.911966,71.112708,32.543032,37.455463,32.901779,44.758718,46.490550,0.038458,19458.67,0.55,129458985049390,3313190136,54339715271121,1585418940,4df7df486f525228a42f47b9417ed189, +STILL,aom,av2,0,F1,snow_00.y4m,4032x3024,25.00,8,4032x3024,185,41208,30.554914,42.441016,44.290968,6.445219,10.721624,52.766216,51.012907,28.614671,35.411810,30.554914,42.441016,44.290968,0.078919,9753.50,0.51,67135860572634,3126399322,27239342080386,1435975715,d145b7d8084436836178f72ed5d1be0d, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,60,3231232,49.075338,52.324743,52.313928,22.376483,31.329145,96.802073,95.998077,52.585859,47.956852,49.075338,52.324743,52.313928,0.000182,66604.00,2.15,371357166359741,8870741120,173474287955562,5764940108,f544b63b6509b136b3b59e90c68f94c9, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,85,1726787,44.671023,49.348486,49.333151,18.764813,26.332185,95.784164,94.562174,47.872799,44.247387,44.671023,49.348486,49.333151,0.001123,62234.11,1.80,355466039654503,7879135516,162188423304499,4870617181,c664760608a8e25da7d15e7f3246cc67, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,110,898781,40.780673,46.243217,46.460760,15.498468,21.579148,92.940910,91.240679,42.045514,40.997848,40.780673,46.243217,46.460760,0.004005,55796.20,1.82,317229774265384,7328668676,145736406210292,5092267116,e4136210d155bfd12ec16e0bc9197086, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,135,455264,36.945751,43.139513,43.949458,12.271400,16.976221,85.468485,83.331150,36.043803,37.772617,36.945751,43.139513,43.949458,0.018665,62728.70,1.09,439156864070511,6279764443,175185437932163,3051729054,c6f3bfcc533f07b05f02118a8e466f43, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,160,215260,33.019787,40.430779,41.981973,9.343814,12.742211,68.742880,66.550565,30.572057,34.561710,33.019787,40.430779,41.981973,0.104633,39399.06,0.86,276613879038296,4870087560,110041416084797,2466439775,4f477e83b9e95a59e2e8ea374edd6fd7, +STILL,aom,av2,0,F1,trees.y4m,4928x3264,25.00,8,4928x3264,185,91254,29.270994,38.128233,40.015314,7.086904,9.257675,45.218589,43.642747,25.861703,31.541224,29.270994,38.128233,40.015314,0.420085,20658.95,0.75,143322038759862,4346595058,57689816271383,2335066699,5f5c119aabd96b7c2429c25121dfb4f9, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,60,3377196,48.645241,50.628398,51.403825,21.613002,31.214985,96.539858,95.646170,53.181170,48.787925,48.645241,50.628398,51.403825,0.001103,43792.87,1.37,318039765914245,7714941954,148705898846956,4760668446,d498bbf91ccb6b209f6146bfe7358000, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,85,1666596,42.920208,47.937807,48.883905,16.057153,25.193262,94.931718,93.767755,47.762719,44.354722,42.920208,47.937807,48.883905,0.010791,50919.56,1.11,356576420292324,5866328833,142196808938360,3092176671,f3b7cfdfc426053804b06329eedcbea0, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,110,634050,38.601624,45.025993,46.262880,12.288895,20.250562,91.264213,89.619197,41.209714,40.694189,38.601624,45.025993,46.262880,0.022090,52854.51,1.05,303096463102781,4726329250,137828085075047,2857631065,d78c0367b55193e1ad22040968e94c52, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,135,273462,35.911868,41.827220,43.511406,10.404266,16.947146,81.898329,79.857602,35.743561,38.082866,35.911868,41.827220,43.511406,0.046725,46858.27,0.69,326350067194407,3969516419,130881442765614,1926540469,824eb232790430ca7e63f69941c43fa9, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,160,129761,33.315994,38.417811,40.695115,8.767566,13.653261,62.759640,60.821024,30.898696,35.446322,33.315994,38.417811,40.695115,0.070092,30227.62,0.81,170242771997005,3622267462,79167760351394,2244385522,92799b0c170045974fd36ea1272d3d11, +STILL,aom,av2,0,F1,underwater_01.y4m,4032x3024,25.00,8,4032x3024,185,56826,30.215531,35.178922,37.973600,7.025280,10.166673,34.537939,33.426350,26.468199,32.525080,30.215531,35.178922,37.973600,0.210206,14039.44,0.70,75579005654359,3212541243,36642691335198,1974582272,1082d1f03ec5665d7fde145c7dc4f993, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,60,556072,48.442688,52.345083,53.722449,29.628863,36.595702,97.047305,96.150674,54.251842,47.914272,48.442688,52.345083,53.722449,0.003536,2814.34,0.21,21263755471353,1012792628,7859038786241,583687343,dbd6f8d58ff46aa60016598871190aa1, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,85,424812,42.838734,51.910630,53.246324,25.681713,30.959544,96.055371,94.837884,51.897042,44.424662,42.838734,51.910630,53.246324,0.000900,4061.06,0.18,28015863218932,794588606,11706525231474,522975751,086f9fd836d282a93799b8fb0165e8e6, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,110,300637,36.917260,51.359494,52.623416,20.462610,24.925727,93.526542,91.988330,46.685322,39.904271,36.917260,51.359494,52.623416,0.004851,7078.82,0.18,45014556994772,754866106,18890447737028,493940282,84df56d43448ce5a35c47b5c718ac993, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,135,187798,31.136007,50.474601,51.518113,15.003744,18.843911,87.069260,85.102179,38.290440,34.863719,31.136007,50.474601,51.518113,0.008633,16561.62,0.12,124313764879058,656514039,46254000212513,358348902,a2fc036da4a9c0fa2293c18bd03846a2, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,160,93366,25.489213,47.691150,51.222168,9.525006,13.277287,70.508638,68.390759,29.982482,29.522977,25.489213,47.691150,51.222168,0.004206,17636.71,0.13,104940960588047,538616870,46390732176258,335404991,bbb9da6cd53f2dd708979740b4cb2e06, +STILL,aom,av2,0,F2,Adventure_with_the_Windmills.y4m,896x1110,24.00,8,896x1110,185,26059,20.448891,46.547805,47.478257,4.370069,8.254804,40.377819,38.823977,22.856974,24.531458,20.448891,46.547805,47.478257,0.004721,10197.45,0.08,60607608336879,364569705,28620586890849,242615446,b4353cabf0a301a84bd0cc3379ba4ce3, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,60,129413,49.259010,50.263566,50.057747,21.154249,29.757042,96.921492,96.231707,50.016196,48.177779,49.259010,50.263566,50.057747,3.015435,8322.71,0.13,45421836557143,522090486,21580562899426,342915340,aa3ebc3af95edac4d034c4afb4538c8b, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,85,70674,46.659387,47.575956,48.428057,19.820567,27.510997,95.923754,94.846572,47.499546,45.778303,46.659387,47.575956,48.428057,3.403426,3561.98,0.10,25539561154779,506510198,12077316053912,393083480,934e549be67e711188306af743041fdb, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,110,39807,43.580522,44.338426,46.489906,18.337671,24.979106,93.604128,91.988557,43.945409,43.149649,43.580522,44.338426,46.489906,3.241103,4346.68,0.12,25218315070788,523670740,11355746444923,348918972,3a122ebc6615058758a6716893320490, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,135,22009,39.827721,40.795816,44.338958,16.225188,21.686549,87.501957,85.335083,39.110834,40.050861,39.827721,40.795816,44.338958,2.917927,5372.50,0.10,30696953765990,453706449,14043601464634,283556836,301cf08158d3b7821633914b3fb19a83, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,160,11664,35.763514,37.430052,41.985557,13.576079,17.871715,73.782558,71.387630,33.774454,36.724920,35.763514,37.430052,41.985557,2.590659,2618.94,0.08,19001414726948,391247336,8907761509171,296558330,cf86acc75e0c842a3f3b8cc162546c61, +STILL,aom,av2,0,F2,Agapanthus_Postbloom2.y4m,1208x948,24.00,8,1208x948,185,5745,31.626205,33.841030,39.910748,10.893741,13.990464,51.681804,49.302937,28.529154,33.144323,31.626205,33.841030,39.910748,1.537521,1663.97,0.08,9393990658583,355351641,4315682421562,211850971,931c7a96d44e52b5013602d2f54ccf36, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,60,604143,48.390154,52.413513,53.890624,30.322361,36.725278,96.959839,95.821419,53.679657,47.436051,48.390154,52.413513,53.890624,0.000072,3599.40,0.22,27292421625099,1061718188,10052889426057,634188636,120bce46530201d593c15920c0dd1a57, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,85,460655,42.935289,52.091828,53.430450,27.691442,31.733366,95.813368,94.288043,52.012561,44.204598,42.935289,52.091828,53.430450,0.000176,4270.88,0.20,33573514362218,964630295,11943197624131,576157269,e72ca9ef4849d12b56bc38cd00525c0c, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,110,323847,37.074190,51.543481,52.642631,23.282874,26.073147,92.951240,90.899524,47.963221,39.901470,37.074190,51.543481,52.642631,0.000092,6396.91,0.16,49841938585934,829341280,17865320633388,460671062,c8ed7b663851ded21de81f5f0b38c9b7, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,135,201515,31.371833,50.474459,51.704705,17.970942,19.984276,85.275139,82.690311,39.708071,35.032152,31.371833,50.474459,51.704705,0.000014,18029.08,0.14,135032715628401,682086040,50352608470265,411428224,97b9b56fa7d103c0069de76f4ca724e7, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,160,98435,25.673901,49.855949,52.000400,12.015222,14.005142,66.963387,64.477674,30.758497,29.896382,25.673901,49.855949,52.000400,0.000012,19500.15,0.13,117348546366463,562947830,51177322417620,372562527,cc94079c02dfb77e7208769c020899e2, +STILL,aom,av2,0,F2,Baruch.y4m,968x1188,24.00,8,968x1188,185,28923,20.835203,48.908825,49.657313,6.601619,8.435726,39.796758,38.177137,23.256439,25.122277,20.835203,48.908825,49.657313,0.000014,11169.58,0.09,64828961381859,401381139,29134359704158,256524792,38f4059dfc11bbdd5ee3b97cdec2f82e, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,60,101200,49.757476,51.139656,50.703017,20.609415,28.145268,96.849559,95.951635,48.496734,46.460321,49.757476,51.139656,50.703017,2.326215,6912.48,0.09,47211311330502,383161035,19307362504262,241579231,753521b12cc30aa81a0909ef59641e5c, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,85,49524,46.776256,49.692021,48.731855,18.567623,24.732333,95.577838,94.409486,45.816147,44.658487,46.776256,49.692021,48.731855,7.506161,3477.69,0.06,24020725377021,313940981,9712336333326,192843329,6d75c7dc1da7a52e94322da2a700e390, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,110,24354,43.518711,47.878526,46.669647,16.446313,21.625182,92.248637,90.774157,42.710016,42.892230,43.518711,47.878526,46.669647,8.701295,2544.18,0.07,18004388904587,368425269,7104856617931,200365565,e8d1b749a3dfd0e5a71af58a4f0c0634, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,135,11323,40.066690,45.611691,44.289915,14.231900,18.637843,84.672549,82.803269,38.988959,40.912156,40.066690,45.611691,44.289915,8.819860,2286.47,0.05,17041856573165,246219545,7789401311039,207459153,87ae3a892723ccb7ea58cdea24aa475f, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,160,4836,36.600916,43.160046,41.617426,12.117857,15.568821,70.068598,67.647804,34.870861,38.635854,36.600916,43.160046,41.617426,8.736169,1168.43,0.04,8429960543364,204023016,3263311472400,116967970,c6241f79b6e8f69efb5338738b40fb75, +STILL,aom,av2,0,F2,Berlin-Fernsehturm.y4m,1290x856,24.00,8,1290x856,185,1857,33.410087,40.791363,39.438027,10.385747,12.557978,46.586517,44.954861,30.814184,36.253201,33.410087,40.791363,39.438027,8.866984,575.54,0.05,3198695666964,258283068,1497792836700,150949816,c1b70802daddd420c9ab9de37b6a4b80, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,60,98966,48.691117,48.283833,48.721474,19.022463,27.511421,96.936348,96.064621,48.432357,47.000709,48.691117,48.283833,48.721474,0.029990,13166.48,0.11,87908953335446,481952407,36773906620784,316798793,f4f691936c099b35570257c27ec9e287, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,85,22898,46.087613,46.330920,47.479542,16.724034,23.386080,96.090524,94.905886,44.723615,44.868563,46.087613,46.330920,47.479542,2.316567,5034.19,0.09,27399962972723,359995174,12964519898102,246521553,bbbbfab14adb3318bd927e15557bda9f, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,110,9362,44.657105,45.596173,46.735961,15.944405,21.281009,93.969531,92.218304,42.422025,43.850560,44.657105,45.596173,46.735961,4.519632,1960.62,0.10,10660455445785,353243249,5023838884264,277354663,7b5bb68cb117b2c8db894e3f61195590, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,135,4667,43.023792,44.535361,45.626901,15.329623,19.574623,89.190029,86.698993,40.221373,42.696937,43.023792,44.535361,45.626901,5.423839,1406.77,0.08,7560795116646,377013907,3606468523545,224351228,665e0e731e9ab35660eeadc906c53d5f, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,160,2496,40.749594,42.800433,44.041174,14.526279,17.595586,80.369241,77.049772,37.423703,41.011460,40.749594,42.800433,44.041174,5.112435,493.73,0.05,3370913546311,336968335,1379469274561,158388404,b29bf12b459b77caae0fc2c2274ac04e, +STILL,aom,av2,0,F2,Big_Easy_chair.y4m,1196x1008,24.00,8,1196x1008,185,1361,37.677928,40.486757,41.961552,13.478396,15.287987,67.785746,62.674447,33.940258,38.737186,37.677928,40.486757,41.961552,4.508345,235.31,0.07,1533471276481,338047825,794960172616,260174423,5203c6a9560f429a8f585295bb1bc699, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,60,198296,48.682029,48.841783,50.312445,19.291154,27.585511,96.919998,96.140442,48.547434,45.610062,48.682029,48.841783,50.312445,2.152491,12767.05,0.15,72536117380191,614044496,33110328998581,395905481,5eae545ca7e22b63bc74c0a50804c0ea, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,85,66671,44.351076,46.239932,48.162865,15.400226,23.318309,96.081707,94.960419,45.466648,42.965293,44.351076,46.239932,48.162865,11.657739,7793.68,0.12,44572969023148,524324741,20295304277277,313974497,80ae640acf40667f113c00e8d1c32af9, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,110,22080,41.830430,44.858640,46.542375,13.540539,20.360044,93.279999,91.879851,42.120597,41.517018,41.830430,44.858640,46.542375,11.748162,2947.76,0.07,20951077349360,403919274,8231770978494,210512646,3a4d8658534894493a579d237c1ecb34, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,135,10012,40.040123,43.216220,44.567759,12.911410,18.957708,87.424924,85.538066,39.490897,40.309321,40.040123,43.216220,44.567759,11.622590,3240.94,0.09,18644254447687,349764718,8470255719380,230082804,d560192935070356195d4094f35167f7, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,160,5015,37.891484,41.151970,42.402792,12.276819,17.468401,77.042351,74.602036,36.219123,38.834936,37.891484,41.151970,42.402792,10.912708,1354.02,0.06,9788349649920,346224334,3781460510575,167079232,058f25fe92d015c5095eedf4921eebf2, +STILL,aom,av2,0,F2,Butterfly.y4m,1420x918,24.00,8,1420x918,185,2604,35.009391,38.769218,39.844599,11.327190,15.275745,58.831839,56.049409,32.027603,36.856174,35.009391,38.769218,39.844599,9.364482,855.59,0.08,4846248142054,399374165,2233834003993,211047001,3116459a129b1fa0b5e45e977f643c7c, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,60,546215,48.955228,49.270862,49.121631,24.194502,32.517330,96.880055,95.919700,52.720803,46.611735,48.955228,49.270862,49.121631,0.009507,7122.48,0.26,44237921082764,1116369374,19079469526733,679011568,02fa40facb24119c045a30a86e82bbe5, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,85,371942,43.610846,44.751000,45.153488,20.069676,27.885471,95.679435,94.428709,48.680124,42.076290,43.610846,44.751000,45.153488,0.027914,7936.17,0.24,47676433952364,983821419,21103898795511,654010466,c09f0ade5628322b7a02158ed6c76083, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,110,233710,37.914372,41.115599,42.390064,15.661419,23.109717,92.505434,90.973345,43.243860,37.912448,37.914372,41.115599,42.390064,0.063398,8395.44,0.16,64359683736888,864135862,23450312896954,442710290,12c8e1fb195b24146a75feef0659069f, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,135,121971,32.046413,38.764341,40.396219,10.914078,18.028677,84.220269,82.467501,36.603752,33.791360,32.046413,38.764341,40.396219,0.091491,19960.94,0.15,121628917056469,701935467,52572850108792,436524987,2c360909accd739358338317d861805e, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,160,38687,26.859938,36.834515,38.406352,6.455226,12.843413,65.266800,63.233913,29.544245,29.782563,26.859938,36.834515,38.406352,0.053165,14098.65,0.11,82656316740208,457273476,36939635548404,295987336,dcc2179a253d3193c96230a58ef3ebd8, +STILL,aom,av2,0,F2,Cecret_Lake_Panorama.y4m,1586x752,24.00,8,1586x752,185,10486,23.988923,35.133742,36.665514,4.128058,8.743810,35.001538,33.644246,23.686327,27.237450,23.988923,35.133742,36.665514,0.147915,4361.37,0.08,24942528525909,342432788,11372405649713,226540760,a04bda5627ab28a01498e406a818c2c8, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,60,400589,48.763052,50.192082,50.521068,23.600012,32.420735,96.701715,95.724501,52.934268,45.682089,48.763052,50.192082,50.521068,0.022871,3761.76,0.17,27213017813694,874387744,10508296919337,491713820,5ed053182c064b56b21fd84441589023, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,85,270033,43.149725,48.444446,48.924996,18.555449,26.926047,95.190330,93.901068,48.726286,42.457274,43.149725,48.444446,48.924996,0.109262,5151.87,0.15,37598964792595,746785525,14388906692104,443653090,7877a6e964ee45e335bc583f7af3c911, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,110,161880,37.555511,46.783934,47.405995,13.656609,21.340423,91.327926,89.735336,42.655555,38.711376,37.555511,46.783934,47.405995,0.145780,9649.23,0.13,58924766413694,549442710,25468102326772,359282419,2b4ce0c801ea18cd4598a2169914f2e4, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,135,80171,32.244462,45.163186,45.862394,9.530434,16.247866,81.415639,79.623996,35.768813,34.680875,32.244462,45.163186,45.862394,0.174424,14623.27,0.12,87255452341535,506874649,38307216398017,324663563,89383a59a1c2dd3f310091aa5a98a373, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,160,24383,27.442409,42.821587,44.154247,5.771661,11.552360,59.022726,57.387338,29.229209,30.674997,27.442409,42.821587,44.154247,0.345635,7117.55,0.06,51488325184976,355892714,19881793515103,180448647,e8c71e0722166bf1ab6fe033d98b5d87, +STILL,aom,av2,0,F2,Claudette.y4m,900x1100,24.00,8,900x1100,185,6401,24.827495,40.764305,41.936130,3.850902,7.863262,27.762809,26.836671,23.952644,28.130143,24.827495,40.764305,41.936130,0.621707,1862.37,0.05,13292861975175,309655989,5201337230619,152222418,895f302e15902d39b76497f6fe492c98, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,60,320695,49.130360,49.602449,50.191456,22.883469,31.592894,96.995969,96.232288,51.561714,46.653202,49.130360,49.602449,50.191456,0.027407,6738.00,0.19,39177859006717,775280387,17695427892608,502951900,61598c31a2e419cd97c3d60fed8ea8bb, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,85,196921,44.337091,46.351325,47.113831,19.314811,27.538121,96.147490,95.042429,48.124470,43.048809,44.337091,46.351325,47.113831,0.102524,6471.99,0.17,38092620831512,704143857,17027112010308,479678765,e9701d4c8ccbe9d37246ad52d1ee1051, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,110,109771,39.350913,43.285320,44.171025,15.449115,23.113866,93.589002,92.126175,43.077630,39.619233,39.350913,43.285320,44.171025,0.168010,8238.04,0.16,49575080760970,605207727,21678996823576,432039883,972386d6f41e86a7d6cc3ea6390a2f85, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,135,54273,34.661725,40.464866,41.192991,11.901111,18.827197,87.712434,85.718063,37.120554,36.230048,34.661725,40.464866,41.192991,0.181732,11701.24,0.13,69650384506540,575092066,30735945381867,362073397,e60e683750e12320a13e5ca38b7af4d6, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,160,23520,30.491163,37.801836,38.618573,8.899906,14.763616,73.563571,71.253192,31.150845,32.986228,30.491163,37.801836,38.618573,0.177963,5985.82,0.09,43869398113367,465983824,20409408708717,373331569,3975926d0feb668a23d951cdea17cbef, +STILL,aom,av2,0,F2,Collage_Oppeln.y4m,904x1280,24.00,8,904x1280,185,8929,26.961458,35.119079,35.852272,6.486021,10.912885,51.117298,48.929023,25.630570,29.938385,26.961458,35.119079,35.852272,0.179933,3208.17,0.08,18195613084903,322101639,8327079398272,209179011,71c891ccf7de7fbc35ef8cf5abcf8527, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,60,350987,48.705018,48.972907,49.277549,20.789487,29.520964,96.737903,95.784752,50.663031,49.972509,48.705018,48.972907,49.277549,0.000675,11186.90,0.19,63970244600128,837255280,29281305471851,513019465,60def5442ec9b00a1249f58f6973abc4, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,85,188411,43.453575,46.724254,45.450237,16.155077,23.974050,95.592406,94.294265,46.158404,45.386230,43.453575,46.724254,45.450237,2.362938,7459.93,0.15,44374213432172,590470106,19637105710320,389185797,efd91889489fc2af8325cce1fa826644, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,110,93681,38.831497,44.731128,42.182814,13.197292,20.703367,92.333409,90.662924,42.370787,41.841131,38.831497,44.731128,42.182814,5.024283,7841.15,0.11,61120730861776,562542189,26980046088656,396772328,d089c44af2ca0474e1d321138155237e, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,135,37314,34.548383,42.644425,39.427971,10.080943,16.892044,84.080643,81.881842,36.778434,38.605445,34.548383,42.644425,39.427971,5.318863,11043.17,0.10,66058012288398,465193462,29130261971076,292872736,1c2b92a363472070546ac277b720418e, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,160,12877,31.233653,40.342512,36.845760,7.567500,13.033929,64.392559,62.460317,31.028344,35.909251,31.233653,40.342512,36.845760,5.941250,3840.52,0.06,27785841047360,399323684,10727513786970,192811953,af4a346c7d8823eb7b9c722f868720b4, +STILL,aom,av2,0,F2,Corona_Arch.y4m,1272x922,24.00,8,1272x922,185,4209,28.686891,37.388500,34.349592,5.981665,9.896171,37.390407,35.822597,26.571402,33.582453,28.686891,37.388500,34.349592,5.469359,1122.35,0.05,7988159079659,308406842,3134249776742,148391761,ab75264fe509f034b3e15a01b0773b07, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,60,222894,48.763964,49.962699,49.541446,20.368130,28.987612,96.543874,95.554642,50.150706,48.904925,48.763964,49.962699,49.541446,0.419281,8752.40,0.18,49286000070758,691812450,22748451493545,457186473,c6633df891dfb09f5d7a66792641253f, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,85,116037,44.774882,47.480860,46.370273,17.201947,24.672250,94.911220,93.614986,46.254477,45.605165,44.774882,47.480860,46.370273,1.457475,6533.18,0.15,36787833354892,575078215,17014379900680,406573720,c0c7022e6d20ecd3078a3bd272805949, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,110,62127,41.064897,45.068565,43.221043,14.744847,21.063186,90.705245,88.964078,41.984709,42.729646,41.064897,45.068565,43.221043,1.611437,5575.18,0.12,35258311986388,504286238,15745110713506,345561746,7cd5e584a01f95bf56b631f831a62438, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,135,31520,37.095319,42.795016,39.923582,12.181281,17.362677,81.363955,79.143810,37.169565,39.720668,37.095319,42.795016,39.923582,1.570541,6949.65,0.10,41062486825816,441404543,18216387819436,292371245,8918dc0891380e00d2a29d5b482547fc, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,160,13620,32.956756,40.470371,36.694587,9.443963,13.321112,62.687015,60.180735,31.926403,36.568688,32.956756,40.470371,36.694587,1.588233,3832.94,0.08,22690034920184,318029319,10031411992681,223704701,a39c7bacb44edcbc0f8ab16046de31a8, +STILL,aom,av2,0,F2,Correfocs_Festa_Major_del_Clot.y4m,1306x870,24.00,8,1306x870,185,3819,28.990242,38.200061,33.494019,7.057466,9.212594,32.338375,31.329286,26.791426,33.408329,28.990242,38.200061,33.494019,2.072637,1016.79,0.06,7379503953676,294002583,3448486200774,219634991,044c016a2a732e543feb62d8a027c883, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,60,377996,48.945154,49.565506,49.518413,21.567122,30.107048,96.060005,94.794538,51.646752,47.211146,48.945154,49.565506,49.518413,0.218989,9920.74,0.20,54372033899612,878469799,25909837914820,539224020,b389e60a02fe557aabbe8c24fc255992, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,85,224139,44.066926,46.506023,46.180097,17.698324,25.541238,93.710041,92.146473,47.582257,43.392227,44.066926,46.506023,46.180097,0.517820,10452.92,0.19,60451880459748,740194583,27383356621253,489444228,e47b1c17316255b50c77ce9b1b8540dd, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,110,110493,38.726002,43.849661,43.376130,12.994424,20.443673,87.909421,86.131966,41.945608,39.652555,38.726002,43.849661,43.376130,0.497505,13816.94,0.15,82860617397331,622770925,36372437003294,406057460,0de8041563512308efaf97bd6f29e9a8, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,135,35590,33.953721,41.459609,40.957080,8.455370,14.971770,73.925358,71.908679,35.389178,36.114128,33.953721,41.459609,40.957080,0.681010,10128.05,0.08,71380336098676,459452621,28283494715113,247886061,88d0a6bbfb99b641877e5f0bfc897fc3, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,160,8906,31.058437,39.218023,38.706850,6.031884,10.791817,45.450662,44.030322,30.205361,33.525225,31.058437,39.218023,38.706850,0.642962,2519.77,0.07,17848257640991,389889329,7040178856881,197619664,b44c615b02a0054d54b092efc8a5c854, +STILL,aom,av2,0,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1402x934,24.00,8,1402x934,185,2593,29.353954,36.733817,36.387021,5.081472,8.150626,14.383659,13.742082,26.962829,31.620794,29.353954,36.733817,36.387021,1.146965,587.39,0.06,3976721686183,244779006,1961333554069,222420189,5cae78b77a2a2a13a77a2237a656a32b, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,60,363946,48.770981,50.297164,50.289340,22.499826,30.981385,96.921274,96.048654,51.626130,46.682903,48.770981,50.297164,50.289340,0.673529,6118.84,0.16,44125665697609,780725574,17089825032137,429492022,bb9286a42e7ee035e49f563b5a9eb4b4, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,85,231954,43.384198,47.941555,47.702916,17.856352,25.796455,95.897773,94.729733,47.695510,43.164631,43.384198,47.941555,47.702916,0.768734,8287.21,0.14,47890683735263,571624973,21835072019951,381076773,d07cbe5bdedc1eccdb51e57f9d46e217, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,110,126747,37.675889,46.499053,46.133258,13.027303,20.962882,93.345556,91.682449,42.766607,39.441239,37.675889,46.499053,46.133258,0.683781,9306.35,0.09,69797577541069,487448358,25988713104612,275596117,de59642101ee1d8d584a36f347bdaf79, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,135,44539,32.329266,44.984143,44.525925,8.059789,15.246936,86.297930,84.204256,35.865779,35.380427,32.329266,44.984143,44.525925,0.589596,11012.16,0.08,76919374216502,436332258,30755261062842,224229275,09f101236dd554cdc1ef61f5f0d78346, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,160,11769,29.181003,43.135817,42.722166,5.502839,11.228893,69.743831,67.675832,29.933534,32.677619,29.181003,43.135817,42.722166,0.669781,4173.34,0.05,29818242766819,331237289,11656827136509,161883115,17b0ef17461ef36781c6be7962553352, +STILL,aom,av2,0,F2,Esquibien_Jean_Perrot.y4m,818x1228,24.00,8,818x1228,185,4358,27.198826,40.737559,40.606167,4.637145,9.297152,49.137843,46.533081,26.149689,30.832688,27.198826,40.737559,40.606167,0.850189,1496.62,0.05,10568148522430,259482705,4179790209155,131784269,7575a8c6216eaafe4a7572a1e9e93b2a, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,60,453265,48.785253,48.325106,48.245356,23.858834,32.573311,96.946710,96.130543,53.312162,45.037933,48.785253,48.325106,48.245356,0.035090,5272.01,0.18,39003182336957,915413512,14724558133509,503666053,d5cbc0c50d7cc805c9ed45562f6ac498, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,85,285787,42.962244,44.050768,44.067625,18.328677,26.967180,95.987518,94.816942,48.578535,40.577749,42.962244,44.050768,44.067625,0.287427,7047.01,0.17,43314409858386,730004568,18741940029712,456956647,3f859604f26df70bedb4676f977dc8d3, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,110,157837,37.171753,41.243305,41.609382,12.958091,21.128793,93.041793,91.600349,42.415430,37.045906,37.171753,41.243305,41.609382,0.357527,10472.35,0.14,64660479547322,597769911,27617969523005,379559805,622cbda69171f0aa874cf1042f5fa0f5, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,135,75686,32.129265,39.227931,39.772885,8.997345,16.151659,85.736071,83.799772,35.696345,33.631669,32.129265,39.227931,39.772885,0.648440,14661.31,0.11,86908795320005,485468607,38568659749880,303613129,1ab5597631fef500c72b35235d775d06, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,160,27385,27.793528,37.287250,38.108530,5.829451,11.568908,68.922056,66.647810,29.327764,30.421150,27.793528,37.287250,38.108530,0.771612,7092.10,0.07,51128360408776,383680742,19805683849773,196807902,a86085e5ba5121c4e101b8e3e5a413d7, +STILL,aom,av2,0,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1080x874,24.00,8,1080x874,185,7736,24.662950,35.244052,36.160104,3.890814,7.957642,42.947406,41.432423,24.087371,27.870902,24.662950,35.244052,36.160104,0.691871,2594.77,0.05,17999050628314,273621889,7246072217575,144475487,e3f32982c9c87e977e6707fe510e033e, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,60,268386,49.222812,48.977117,50.386844,21.929480,29.853696,96.931747,96.120664,50.293689,45.788782,49.222812,48.977117,50.386844,6.168174,5729.78,0.14,39381739700309,687644607,16000617550773,405495318,892e98ae130c875efe0d58362b15076b, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,85,159836,44.700713,45.982523,47.755190,18.474009,26.002056,95.833907,94.678005,47.348467,42.914159,44.700713,45.982523,47.755190,6.636625,6607.31,0.14,38535561862021,570637483,17342834065619,394950525,eb033aac98b0277e8794b64f0e949e4b, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,110,89863,40.107987,43.031892,45.546585,15.066070,21.811374,92.841141,91.349425,42.725159,40.166370,40.107987,43.031892,45.546585,6.704792,6805.73,0.14,40758550887121,575640960,17945370365452,374619921,0aa4889f3a15d073e89788ddead73df7, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,135,45875,35.541816,40.560250,43.585584,12.082089,17.895826,85.773525,83.697158,37.493150,37.345484,35.541816,40.560250,43.585584,7.094012,7527.51,0.09,56279680138903,510086462,21021032421431,260160187,6c00eee9536be74cf09b132f5b60720a, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,160,18837,31.051373,38.267041,41.651794,9.352233,14.430462,69.632508,67.370753,32.127466,34.377958,31.051373,38.267041,41.651794,7.737522,6289.42,0.11,37280711552384,424747635,16537012346323,306972245,7185d322fe43cddfde6104c83decb23a, +STILL,aom,av2,0,F2,Fontaine_Place_Stanislas.y4m,1390x820,24.00,8,1390x820,185,6238,27.499667,36.023721,39.809800,7.038355,10.926364,43.398260,41.766590,26.596371,31.575007,27.499667,36.023721,39.809800,6.412931,2527.23,0.08,14496322064413,330195652,6615422729293,215952956,63138c4e8ef021f4a079a0231a487ca2, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,60,91812,50.341932,51.863901,51.614610,23.019737,30.585544,96.987588,96.236244,48.250117,49.396607,50.341932,51.863901,51.614610,0.000173,11039.50,0.10,60946091212445,337275028,28911033728448,275779891,eee5acc160249eaeb19ba4cf24c7f3cf, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,85,54488,47.744749,50.029434,49.761217,21.945818,28.870493,96.157755,95.128423,47.155961,47.714978,47.744749,50.029434,49.761217,0.001314,6732.69,0.08,38339370819686,286639124,17686349880646,223767610,9a661a2782897424282add4d88a23187, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,110,31494,44.067116,48.013568,47.724628,20.281210,26.733058,94.113036,92.738008,45.416000,45.795960,44.067116,48.013568,47.724628,0.001190,5073.23,0.08,30281814182585,388472542,13361636503456,234884899,dd58828ed7853cbfcbec972217e9ecb4, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,135,16462,39.693446,46.091430,45.237888,17.856020,23.838190,88.855214,87.048636,41.614061,43.502376,39.693446,46.091430,45.237888,0.000181,4908.83,0.07,29322160077947,308780016,12951586449632,198876175,908013c42cc55148a8a9707c19324f61, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,160,7644,35.452949,43.735704,42.567291,15.040513,20.399741,77.567408,75.216826,36.087508,40.709345,35.452949,43.735704,42.567291,0.000418,2878.04,0.05,21744830917214,279450417,8038890796598,141390830,23b0b8ecdf4fcf0000b877ef616ef0ee, +STILL,aom,av2,0,F2,Genmaicha_Tea.y4m,1260x840,24.00,8,1260x840,185,3208,31.779425,41.680820,39.744761,12.239788,16.781652,58.484608,55.835557,30.531333,37.927294,31.779425,41.680820,39.744761,0.003806,2123.67,0.06,13258626307004,301132646,5674176660838,199917772,94b6df5c8a1ca3d7415fba5c6c309e05, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,60,195112,49.110229,49.675957,50.150786,21.492277,30.021172,96.706446,95.742323,50.860776,48.820040,49.110229,49.675957,50.150786,0.255780,7339.63,0.13,41955465437677,522650305,19083563971624,341816730,66c6442f51cfb30ef2bbe29b96849140, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,85,106788,45.572814,46.631058,46.619910,19.186811,27.065871,95.517893,94.156616,47.996877,45.648567,45.572814,46.631058,46.619910,0.494745,5642.36,0.11,32263542318155,429036791,14729560389895,294120548,329f46006cc3451a6ebffbf558e09d1f, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,110,56315,41.655382,43.622886,43.145120,16.500510,23.459208,92.542562,90.695204,43.230658,42.543556,41.655382,43.622886,43.145120,0.549897,5169.06,0.09,37554452955085,422535421,14438623915467,239169240,0e1c51420276f901efd9cad9b481abf4, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,135,27452,37.597407,40.541475,39.893363,13.506378,19.447264,84.883524,82.634591,37.362779,39.350332,37.597407,40.541475,39.893363,0.567717,5352.96,0.07,38520074104897,422067195,14948681008275,209164195,2e94439a74baa5f663ed43ec652cbaad, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,160,12482,33.772769,37.574156,36.729241,10.608013,15.373229,67.039647,64.895287,31.657615,36.134607,33.772769,37.574156,36.729241,0.662910,2845.27,0.06,20243890593784,351507729,7945721694869,166593155,0199df3ba0e5d32b5bfdab1a11bb998e, +STILL,aom,av2,0,F2,Homestead_in_Montana.y4m,1326x826,24.00,8,1326x826,185,5189,30.229478,34.894642,33.665935,8.088500,11.498779,40.858884,39.200043,26.757111,33.086183,30.229478,34.894642,33.665935,0.613750,1348.79,0.07,7584435828728,341518419,3504072787149,198022858,110ddb70ae5eabdbd29e02cfb457d59d, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,60,306719,48.741802,48.572800,48.639411,22.541917,32.182926,96.918568,96.144059,53.591984,47.555389,48.741802,48.572800,48.639411,0.364510,5766.13,0.17,32941725224458,755046631,15094771275439,475474017,adfb7abda178ecd9295d36f251c0b671, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,85,169911,43.855274,44.583664,45.027102,18.378465,27.191379,95.799241,94.725593,48.666244,43.322351,43.855274,44.583664,45.027102,0.359968,6385.80,0.17,36267572282582,679611677,16705353436335,482893030,fffbf2148bf263ac7d7b3426720baff5, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,110,87115,39.487486,40.876317,41.707077,14.740827,22.575153,93.124641,91.598589,42.323387,39.645315,39.487486,40.876317,41.707077,0.357943,6394.67,0.12,47767338934243,609524234,21808821022052,420814764,b789a389a6d7b953b456093ef2516ce8, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,135,41870,35.465775,37.519710,38.568098,11.494537,18.195940,86.050618,84.098823,35.827458,36.220518,35.465775,37.519710,38.568098,0.387827,8669.96,0.09,60416467490187,507769742,24213691592619,256337202,535d9618ccfa4119ea9ce3d1c4f12c90, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,160,19056,31.732540,34.301381,35.497435,8.730730,14.201422,69.795368,67.834981,29.961289,32.938941,31.732540,34.301381,35.497435,0.802474,4573.82,0.07,32330067642350,412945679,12772606049653,201784859,38c758f3aa7f815681f6d9129abe5301, +STILL,aom,av2,0,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,185,7905,28.199516,31.386819,32.515113,6.410681,10.474491,43.528815,42.208560,24.967603,29.771900,28.199516,31.386819,32.515113,0.759357,1875.48,0.06,13088931243075,334622810,5238710207828,170191266,39f5e9a04b36b1d5d3f3e99a1264bbdf, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,60,474724,48.778685,48.620585,48.409723,24.463805,33.904072,97.086401,96.396062,53.905055,45.584290,48.778685,48.620585,48.409723,0.003312,4474.12,0.19,32606357269344,945799170,12496184545436,535139023,3cfff9b7968cce99beb3fedb8e3aa7e8, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,85,308402,43.148104,44.497084,43.873100,19.299914,28.522972,96.327927,95.278201,49.404920,41.241924,43.148104,44.497084,43.873100,0.060007,4829.60,0.17,35347172652882,877929699,13489774014190,492081374,17553f91c9d030b9e702006be7cc9263, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,110,174820,37.493875,40.687573,40.156868,14.107235,22.845715,93.985267,92.588605,43.069875,37.169776,37.493875,40.687573,40.156868,0.096455,8355.67,0.18,50458477893712,775665204,22044995293451,504985554,b7cd1861de18394d2bc13392c760fe7d, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,135,84133,32.482486,37.146082,37.056059,10.031448,17.801622,87.875173,85.980788,36.201716,33.360963,32.482486,37.146082,37.056059,0.174266,13487.04,0.13,86196014610035,589496234,38126816499406,381714322,b742ec6e868c39d64c9bc1cad082a56a, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,160,34606,28.202759,34.067325,34.261295,7.344627,14.042443,74.237480,71.829671,29.971478,30.037644,28.202759,34.067325,34.261295,0.358490,9776.61,0.12,57017277573545,476916033,25510372522138,319930819,150848e690c53cc9f36fbb2aa592206a, +STILL,aom,av2,0,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1228x816,24.00,8,1228x816,185,12840,24.778716,31.567302,31.752794,5.214510,10.659174,51.338625,49.342122,24.304306,27.163526,24.778716,31.567302,31.752794,0.339864,4784.88,0.10,26732664385683,373272857,12388877934560,274186639,3f12f716ac70a759c40a01ed8cccf558, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,60,544091,48.728080,48.043542,48.141483,25.483373,34.460919,96.943810,96.115436,54.633603,47.903607,48.728080,48.043542,48.141483,0.000000,5380.07,0.25,33344909172907,1061054424,14395094602855,658230592,a716945894b505fc745dd0762300445d, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,85,352797,42.708078,43.620773,43.523767,19.309155,28.326179,95.938005,94.752764,49.390150,42.616593,42.708078,43.620773,43.523767,0.000111,5350.86,0.16,39650112632948,821937697,14945612138459,462428744,3008a02d041d7904c0ee2a9f58c1abee, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,110,207036,36.856470,41.062012,40.812016,14.085820,22.337634,92.867109,91.392381,42.904976,38.153611,36.856470,41.062012,40.812016,0.602593,7573.02,0.14,59585688591083,706411817,26014373434063,523292559,845b069464f412ae84714196bad66d66, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,135,100117,31.342003,39.021545,38.688712,9.671995,17.365633,85.548495,83.472735,36.071080,33.790169,31.342003,39.021545,38.688712,0.706937,15422.00,0.11,108859875741579,612703001,43069624627924,312095411,77a61350abb4384edab6a6a3acc01f7f, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,160,34856,26.840497,37.113455,36.823573,5.936818,12.479250,68.199126,66.114512,29.071012,30.025927,26.840497,37.113455,36.823573,0.808330,9602.59,0.08,68489838562971,445661637,26816424335988,224027963,bf9eeba7258dd7617d52513336fb5a61, +STILL,aom,av2,0,F2,MagicKindom.y4m,1000x1000,24.00,8,1000x1000,185,10555,23.765103,34.938456,35.399804,3.612957,8.365412,40.476766,38.752517,23.121540,27.189643,23.765103,34.938456,35.399804,0.781153,3338.59,0.06,23291612944207,318348879,9323552651958,158366388,7accbaf5ac8d7fe375adb45edfdbcdd4, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,60,647594,48.790533,48.906491,49.133295,24.150659,33.121808,97.080753,96.347973,53.266224,47.188899,48.790533,48.906491,49.133295,0.040414,6648.96,0.31,39863616461497,1286954617,17644111674935,819665580,b384cd15147689aca415882769996371, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,85,452849,43.529281,44.117647,44.508422,20.596745,28.937020,96.246257,95.175245,49.463345,42.453626,43.529281,44.117647,44.508422,0.068642,6395.08,0.29,38796459245199,1233745927,16951145114746,777981137,95421e3e807c5b96b968cdf19d250b2a, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,110,295118,38.212162,38.992879,39.876948,17.143103,24.803958,93.985127,92.529831,43.996538,37.904283,38.212162,38.992879,39.876948,0.123429,6689.56,0.19,51187664333959,1054476483,23033138991894,683967665,64b4f3908df6101381895259e4c595ed, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,135,171021,32.751573,34.076121,36.444296,13.464389,20.428056,88.158397,86.078337,37.457532,33.579916,32.751573,34.076121,36.444296,0.157065,16431.70,0.16,122413090726244,864088520,45892637634529,441927266,3b21857c2b0a1aedcf57ef1b73fdb9ac, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,160,78716,27.214199,30.478553,33.955115,9.532275,15.869502,73.417521,71.142096,30.407732,29.471013,27.214199,30.478553,33.955115,0.191004,16746.40,0.15,99890800401028,674659434,43958541619384,437020872,109abfcab13c2d3507b08e2494b61615, +STILL,aom,av2,0,F2,Michigan_Stadium.y4m,1400x934,24.00,8,1400x934,185,25663,22.739117,28.240877,32.108188,5.829172,10.836863,46.544364,44.716473,23.544560,25.930903,22.739117,28.240877,32.108188,0.252500,7259.12,0.09,51844696056895,485561085,20271722829791,261562003,40558863814364e99a5fd6e90c44fdba, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,60,435057,48.935331,48.607943,48.655369,24.434457,33.740007,96.879422,96.055259,54.012330,45.516199,48.935331,48.607943,48.655369,0.773719,3124.24,0.20,21424844957700,1032997724,8724614046221,576589856,bd4c6171630439cda4e02e9ad5061339, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,85,270553,43.955656,43.664001,43.996963,20.627503,29.285743,95.717067,94.561481,49.803881,40.872937,43.955656,43.664001,43.996963,1.113114,4047.93,0.24,24216340316470,1058607619,10668716416799,649504993,2ad49f94e1916442efbe1f974d261a04, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,110,150539,39.022794,39.216374,39.977858,16.683824,24.567769,92.814148,91.160278,43.424352,36.800549,39.022794,39.216374,39.977858,1.112584,6142.70,0.17,43225979636253,916537599,17153900066548,471724336,b737165519707fb881713dd895000a21, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,135,75012,34.205453,35.428832,36.633429,12.648513,19.718231,85.166194,83.223797,36.260051,33.146494,34.205453,35.428832,36.633429,0.912821,12340.34,0.13,93044262709550,697259611,42164026645531,485097625,d5ba5694e78c858d20394188636a376d, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,160,33044,29.781306,32.431671,34.050501,8.855307,14.883453,67.381529,65.509551,29.488999,29.828454,29.781306,32.431671,34.050501,0.767506,8670.86,0.09,61286007933229,521483747,24218258727045,263148858,376a622fde40824027e4bd6a73079ed0, +STILL,aom,av2,0,F2,OperaLamps.y4m,1296x864,24.00,8,1296x864,185,12553,25.858374,30.036829,32.145132,5.698552,10.266099,39.102074,37.318070,23.626546,26.804326,25.858374,30.036829,32.145132,0.660947,4458.15,0.08,24870565209062,347400884,11592975714597,228364857,8f77853bce4a55ce89a39a510c4e9b2a, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,60,128769,48.775446,49.929128,50.480034,19.452697,28.210658,96.015698,94.765646,50.184907,47.639741,48.775446,49.929128,50.480034,0.000287,9191.86,0.09,62267333671866,459026663,25668858473533,264991557,fcf195f525e3a8561822ac749f92ac75, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,85,49584,45.213951,47.722740,48.072855,16.194677,23.259584,93.911678,92.323226,45.345001,44.767262,45.213951,47.722740,48.072855,0.015047,6127.90,0.07,39475397655342,358370043,17113861413579,198505311,5a27370dca2f9c0c9103608b7d1ddd63, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,110,20515,42.528488,45.642103,45.648832,14.068843,19.420053,88.551987,86.688087,40.617547,42.481874,42.528488,45.642103,45.648832,0.067774,2671.19,0.05,17682046551948,274924908,7459475088064,155905874,6b5128302fd8857529dcb83591087dfd, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,135,8646,39.910116,43.638763,43.205716,12.386091,16.089440,76.313985,73.779840,36.578534,40.250362,39.910116,43.638763,43.205716,0.350721,1650.79,0.04,10653779318032,233046415,4611075590699,136020382,d4bcecbdb44ea947de3adf8cebf2b95b, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,160,3542,37.202100,41.591982,40.726299,11.052680,13.162092,52.227428,50.567856,33.188614,38.001659,37.202100,41.591982,40.726299,1.014255,768.67,0.06,4013131216111,212293548,1958134014871,152682159,7b43c100048d456f20c44cd87e37a57f, +STILL,aom,av2,0,F2,Orion_Nebula.y4m,1200x840,24.00,8,1200x840,185,1360,34.426792,39.355392,38.386485,10.068132,10.563405,25.393411,24.699147,30.121847,35.495464,34.426792,39.355392,38.386485,1.664928,215.77,0.03,1415373512903,174063882,602664910577,92678287,0ed26f5e04c27fc6b7aed28c1123fc22, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,60,284078,48.823266,49.707420,50.214615,20.730743,29.573447,96.973664,96.301267,51.032142,46.396648,48.823266,49.707420,50.214615,0.000153,7865.19,0.15,54260932359209,737696496,21973673010832,450120518,5e1ff7e84f43f624b25f91e64dc3f274, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,85,132427,42.675009,47.901500,48.065593,14.596887,22.946998,96.083575,95.087999,45.767420,43.208840,42.675009,47.901500,48.065593,1.909099,8271.14,0.10,57765480930596,484396511,23097368535103,278007305,7d9a5e1b80d029b442ca1c2896cae6a4, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,110,47450,38.374227,46.176965,45.941713,10.954971,18.434758,93.586236,92.102853,40.675411,40.416887,38.374227,46.176965,45.941713,4.086905,7095.85,0.10,40997052199933,409686922,18522796008964,272095495,342b7baff8cdf9f56ade4c587b2923d5, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,135,18461,35.640256,44.240194,43.733664,9.215869,15.583183,86.894407,84.837179,36.420643,38.367508,35.640256,44.240194,43.733664,5.227280,4739.81,0.07,34215956110450,366004758,13246396797713,199460283,177816a717bb0e97551e3be1dfd6413e, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,160,7988,33.197577,41.704175,41.142335,8.105243,13.329497,72.750405,70.345746,32.507592,36.305633,33.197577,41.704175,41.142335,6.454445,2415.14,0.05,16366593422780,311140425,6739582175438,155894802,a909294bcfb324d257c2d366fd754a4a, +STILL,aom,av2,0,F2,Saint_Catherine-Caravaggio.y4m,876x1140,24.00,8,876x1140,185,3274,30.476385,39.554897,38.884701,7.082378,10.965265,53.091225,50.861614,28.549677,34.251093,30.476385,39.554897,38.884701,6.280165,934.30,0.06,6693396423628,297975512,3161209427884,206572054,2c7713326f4f8121df74b1725b5635c6, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,60,221969,48.371083,49.698297,50.533716,20.657275,30.472049,96.859059,96.082719,51.930268,47.352806,48.371083,49.698297,50.533716,0.007391,8650.98,0.13,60187077597895,658777079,24163302866918,389374284,b1306975a9c5e58ab276e6582b27d9d1, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,85,113653,45.195113,46.419445,47.755038,18.375170,26.973443,95.707200,94.574916,47.716988,44.363866,45.195113,46.419445,47.755038,0.019530,7754.37,0.14,50159264694002,730653382,21662482874416,413444307,84d3960fcbccfc7ee6da791f454a5c64, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,110,58458,41.891192,42.964753,44.749311,16.145795,23.425223,93.013258,91.283616,42.549673,41.381402,41.891192,42.964753,44.749311,0.021483,7884.59,0.14,45380554129032,578844478,20627250675368,372844344,0f8a21522ca3efa2f5df366befb65c91, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,135,29839,38.433896,39.488904,41.499547,13.861504,19.712631,85.692641,83.523443,37.055152,38.171924,38.433896,39.488904,41.499547,0.018079,6498.42,0.09,44603065241891,535411568,18149704154488,264505671,f3b05c02fa31dde6e2b1e937b705d4a2, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,160,14836,34.806162,36.008592,38.503612,11.437501,15.865980,69.153489,67.104408,31.858158,34.743469,34.806162,36.008592,38.503612,0.010384,3389.79,0.08,24067474794344,456022836,9467066015046,229910001,6ec4c763815fc746f5fa83293b24e05c, +STILL,aom,av2,0,F2,Streptopelia_orientalis.y4m,1404x936,24.00,8,1404x936,185,6870,30.981647,32.850544,35.738394,9.045508,11.986807,44.448340,42.758359,27.071497,31.318654,30.981647,32.850544,35.738394,0.012702,1844.63,0.10,10082748648889,356204165,4789291835416,302622309,7dc13791eca7afcc41a665f8c1450399, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,60,282771,48.620801,49.847598,50.636585,20.591492,29.924396,96.972279,96.212334,51.211098,49.357736,48.620801,49.847598,50.636585,0.017453,8235.92,0.16,60497126667828,770354889,27999803530546,553105512,f4e5cbcb59d180dad1c2fac6db49e94f, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,85,119310,43.258606,46.973294,47.836702,15.324751,23.970925,96.151045,95.023828,46.263757,44.971305,43.258606,46.973294,47.836702,0.139400,7269.94,0.12,45680575508690,526778704,20403696123265,350654848,290114675fa4f2aa1e473e3db2f40ed1, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,110,60901,40.445426,44.082151,44.814029,13.882394,21.576905,93.727702,92.002652,42.467251,42.445279,40.445426,44.082151,44.814029,0.201708,6462.91,0.13,38045487175247,535025819,16943068764398,349205159,e1f526d579a0566d6b6125ec28b18c96, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,135,30837,37.186199,41.062830,41.663379,12.255506,18.783767,87.178926,85.013694,37.500178,39.695134,37.186199,41.062830,41.663379,0.234695,6549.46,0.08,46980789304186,479945130,18292612570910,242544095,ce0720bb14fbdd5783b2572a7a420f7b, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,160,15013,33.682054,37.850490,38.200675,10.492217,15.810262,73.160339,70.815609,32.182547,36.570439,33.682054,37.850490,38.200675,0.282967,3768.55,0.09,28089727804018,430251066,12848781566429,317601627,6ac9d7e1fc54a87f371fe822ce5a20f2, +STILL,aom,av2,0,F2,Swallowtail.y4m,1300x900,24.00,8,1300x900,185,6957,30.127249,34.744256,35.097746,8.756400,12.825656,51.037342,49.154394,27.217379,33.434541,30.127249,34.744256,35.097746,0.244390,2395.19,0.08,13097300583657,397215956,6241693503271,239632814,9f14a121a68890c1eb20932f19c9c800, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,60,272498,49.168985,50.570159,50.427626,21.875644,30.253258,96.801325,95.675008,51.316281,47.317163,49.168985,50.570159,50.427626,0.412586,7913.96,0.16,44226282483869,657057807,20708711744377,425623583,2ac682f9148227552edece20be0dc393, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,85,170549,44.515822,48.640197,48.362225,18.283584,25.575508,95.517914,94.064788,47.333184,44.375015,44.515822,48.640197,48.362225,0.551718,5886.72,0.12,43068032829273,586103699,20072371740405,438538898,8fd3b0b2560edea56fc20ca31a248dd0, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,110,97797,39.499205,46.611706,46.766575,14.362249,20.847365,91.836328,90.086574,42.113986,41.290030,39.499205,46.611706,46.766575,0.551184,5972.48,0.09,45255936554666,413383706,20394662794063,336831837,d51837714916f44195125dd9b6fc300a, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,135,46452,34.574698,44.353017,44.879549,10.518955,16.274296,82.610167,80.720872,36.505260,37.925831,34.574698,44.353017,44.879549,0.455070,9260.17,0.09,54695379139798,339324088,24362123972153,238070592,49c49eb374bd73140d9ffe351be3c4c0, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,160,15733,30.270449,42.132466,43.054813,7.722322,12.605248,63.030562,61.015705,31.321562,34.624286,30.270449,42.132466,43.054813,0.465743,4047.49,0.07,29002420657168,359221914,11302983826826,223993511,c8d158cda6546969b4456e5e05b49302, +STILL,aom,av2,0,F2,Washington_Monument.y4m,1204x904,24.00,8,1204x904,185,4239,27.394541,39.545834,40.880923,5.904088,9.479029,34.493272,33.071775,26.738518,31.861716,27.394541,39.545834,40.880923,0.319838,1545.46,0.06,8528712893461,278592940,4011043325519,182110443,fa85667727760622b54c7fed269c978b, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,60,372010,48.749048,49.773844,50.000161,23.371364,32.667014,96.924173,96.078864,52.953910,47.222341,48.749048,49.773844,50.000161,0.001960,4912.64,0.20,29020756792124,831205550,13002926965207,516639335,f48286fc0db36e19133954bd170eb958, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,85,244645,43.233818,47.578367,48.095019,18.423282,27.144891,95.804760,94.650195,48.784262,43.500259,43.233818,47.578367,48.095019,0.012604,5874.92,0.18,34727219665443,729632082,15445157595654,471195435,62b5556a7922982f1b4da3eca679ac9f, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,110,148074,37.831411,46.011450,46.814882,14.106522,21.904257,92.827093,91.334814,42.987057,39.719409,37.831411,46.011450,46.814882,0.023716,7966.42,0.14,46627533522951,577384261,20896886482155,368992923,ec5c2e0192893dfdd27afe79366992c4, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,135,75825,32.642369,44.574698,45.320848,10.296041,17.128213,85.186849,83.369890,36.412923,35.717151,32.642369,44.574698,45.320848,0.064137,10858.51,0.09,76276804455520,513118321,30323372631955,256918669,2e933ef3e5b6b28e7eb7b9dec36c4d8b, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,160,28815,27.985785,42.789985,43.416067,7.065313,12.756289,67.003464,64.957537,29.853434,31.857024,27.985785,42.789985,43.416067,0.181273,8561.11,0.09,49318304683110,397373689,22299157187374,275454179,d9eefefa21b75fc942713361cec3da69, +STILL,aom,av2,0,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,816x1150,24.00,8,816x1150,185,8962,24.669284,40.570389,40.200075,4.754615,8.954507,38.825129,37.399781,24.104125,28.688548,24.669284,40.570389,40.200075,0.181379,2916.28,0.06,17708785034374,309341415,8148430835743,194079736,172bc7f71a11f5aee1b5f9d74020ad43, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,60,118889,48.066373,50.109701,50.174884,18.668270,27.269076,96.702506,95.800277,48.243817,44.682825,48.066373,50.109701,50.174884,3.178068,10165.83,0.11,58068505253306,415378108,26315035609194,290839124,ac6b99150894968b19d2164a34469e0a, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,85,55027,45.655949,48.280794,48.285936,17.166132,25.071166,95.533962,94.293449,46.526707,43.268822,45.655949,48.280794,48.285936,9.466900,3664.91,0.06,24383770980680,286744564,10234550745497,189450381,92d4cfe7a40fc4cef7e49f152e19996c, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,110,26019,42.857871,46.172445,46.086857,15.538481,22.759318,92.882242,91.014767,43.849192,41.826763,42.857871,46.172445,46.086857,9.079322,3324.43,0.07,22653940586733,331400984,9284043379066,187643758,0ac2712aaaf869b01f9ae40626d64410, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,135,10804,39.627935,43.734978,43.666104,13.454749,19.432408,85.694126,83.402762,39.308167,40.139923,39.627935,43.734978,43.666104,8.921934,3322.91,0.08,19192147286557,365345102,8679790854714,221585680,5e743114685be26e1baa437f7c62a6b5, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,160,4260,36.660507,41.265220,41.111203,11.602949,16.021204,70.550611,67.973823,34.528644,38.226730,36.660507,41.265220,41.111203,8.064758,1329.69,0.07,7451994688671,339302005,3458343225354,200292792,22fe2e4ebfb5308d4665dfe18d1f385d, +STILL,aom,av2,0,F2,Zoo_de_la_Barben.y4m,1296x864,24.00,8,1296x864,185,1768,33.903852,39.050009,38.240594,10.141563,12.838468,48.078156,46.075801,30.548339,36.038365,33.903852,39.050009,38.240594,7.257666,498.80,0.05,2743970008295,318368754,1289173765119,170867110,9ed525ef5e451438924b4eab23df2498, diff --git a/tools/convexhull_framework/ctc_result/AverageBdrateByTag-Summary-AV1-vs-AV2.csv b/tools/convexhull_framework/ctc_result/AverageBdrateByTag-Summary-AV1-vs-AV2.csv index d5d98e09b8..b4d4fab328 100644 --- a/tools/convexhull_framework/ctc_result/AverageBdrateByTag-Summary-AV1-vs-AV2.csv +++ b/tools/convexhull_framework/ctc_result/AverageBdrateByTag-Summary-AV1-vs-AV2.csv @@ -1,14 +1,4 @@ tag,cfg,psnr_y,psnr_u,psnr_v,overall_psnr,ssim_y,ms_ssim_y,vmaf,vmaf_neg,psnr_hvs,ciede2k,apsnr_y,apsnr_u,apsnr_v,overall_apsnr -libaom-v3.12.0,AI,2.3608846153846157,1.2190857142857143,0.9793120879120879,2.2961296703296705,1.8326186813186813,1.6695428571428572,-0.560442857142857,-0.459642857142857,2.9128054945054944,2.9297164835164833,2.3698901098901097,1.2262054945054945,0.9631582417582418,2.266641758241758 -libaom-v3.12.0,AS,2.1404,-5.46005,-5.487275,1.1379124999999999,-3.472875,-0.8341375,8.8299625,7.828050000000001,0.39863750000000003,-2.9448374999999998,2.2631125,-5.651775,-5.758325,1.605025 -libaom-v3.12.0,LD,13.934691071428572,9.808748214285714,9.773353571428572,13.452744642857143,11.789155357142858,11.395291071428572,19.234794642857143,18.453301785714284,14.281417857142857,14.802075,17.8279875,10.6188625,10.338544642857142,17.317494642857145 -libaom-v3.12.0,RA,2.889731868131868,-0.6973153846153846,-1.296613186813187,2.4823,1.8047615384615385,1.707023076923077,2.6155703296703297,2.090821978021978,2.5116912087912087,2.5885153846153846,2.7716999999999996,-0.6953164835164833,-1.395810989010989,2.578787912087912 -libaom-v3.12.0,Still,0.16068070175438595,-0.6994403508771929,-0.814459649122807,0.13738421052631578,-0.4513385964912281,-0.25401929824561403,-0.6293824561403509,-0.4678701754385965,-0.27790000000000004,0.05159298245614034,0.16068070175438595,-0.6994403508771929,-0.814459649122807,0.14104561403508772 -libaom-v3.12.0-unconstrained,AI,2.7054384615384617,0.30151868131868126,-0.3589681318681319,2.455821978021978,2.5214538461538463,2.392821978021978,2.7571087912087915,2.616648351648352,2.769528571428572,2.0950263736263737,2.6886439560439555,0.3168604395604396,-0.33961758241758244,2.440641758241758 -libaom-v3.12.0-unconstrained,AS,-7.6871624999999995,-7.1752625000000005,-8.027075,-7.811999999999999,-8.2383125,-8.461762499999999,-2.580075,-3.1923125,-8.0600625,-9.819212499999999,-8.3368375,-7.809875,-8.60175,-8.48725 -libaom-v3.12.0-unconstrained,LD,7.176473214285714,4.811167857142857,4.749910714285714,6.879160714285715,6.663957142857143,6.7837499999999995,8.573762499999999,8.092532142857143,8.400458928571428,6.512967857142857,7.780408928571428,5.383283928571429,5.358757142857143,7.6983375 -libaom-v3.12.0-unconstrained,RA,-5.938975824175824,-0.7213,-1.0106186813186813,-5.5717989010989015,-6.5166615384615385,-6.71926043956044,-10.24513076923077,-10.437496703296702,-6.074559340659341,-4.789113186813187,-7.603927472527473,-1.3383593406593406,-1.6055516483516483,-7.206417582417583 -libaom-v3.12.0-unconstrained,Still,0.9682719298245613,-1.3853701754385965,-1.3161438596491228,0.6537385964912281,0.06642807017543859,0.5147877192982456,1.5828315789473684,1.4704456140350877,0.6928736842105263,-0.04059473684210526,0.9682719298245613,-1.3853701754385965,-1.3161438596491228,0.7056070175438597 v02.0.0,AI,-3.9572835164835163,-16.375368131868132,-18.700303296703296,-5.433978021978022,-3.948592307692308,-4.230743956043956,-4.648416483516484,-4.585384615384616,-4.298843956043956,-9.110662637362637,-3.933652747252747,-16.3938021978022,-18.660905494505496,-4.8556967032967036 v02.0.0,AS,-2.1508625,-8.687575,-9.001925,-2.9673875,-1.970525,-2.2421125,-1.3860875,-1.5609625,-2.546425,-5.193275,-2.1682625,-8.7212125,-9.1940875,-2.8919125 v02.0.0,LD,-1.2011035714285714,-10.787616071428571,-11.435033928571428,-2.134525,-1.5636964285714288,-1.6178142857142856,-1.4039160714285714,-1.4033875000000002,-1.1662392857142856,-3.9469625,-1.2781017857142858,-10.739678571428572,-11.161448214285715,-1.9630982142857143 @@ -69,3 +59,13 @@ v13.0.0,AS,-30.089825,-38.9108125,-38.7094375,-31.17725,-30.0856625,-27.8532,-35 v13.0.0,LD,-24.432582142857143,-40.97528214285715,-39.7136,-26.049419642857142,-24.779083928571428,-23.609957142857144,-27.265876785714287,-26.72521785714286,-24.222182142857143,-31.0349,-24.6533875,-41.284460714285714,-39.54571428571428,-25.810526785714284 v13.0.0,RA,-28.12517142857143,-43.52025824175824,-43.038391208791204,-29.808105494505497,-28.223250549450547,-27.32448131868132,-33.79355274725275,-32.72598791208791,-28.025605494505495,-34.381115384615384,-28.35132967032967,-43.77984945054945,-43.072158241758245,-29.4673032967033 v13.0.0,Still,-12.069845614035087,-26.152701754385966,-28.185377192982454,-13.875345614035089,-12.47930350877193,-12.514143859649122,-15.116743859649123,-14.4968,-13.66891403508772,-16.841292982456142,-12.069845614035087,-26.152701754385966,-28.185377192982454,-12.996515789473685 +v14.0.0,AI,-20.233513186813187,-38.2767945054945,-38.39296923076923,-22.37602857142857,-21.32937252747253,-19.39959010989011,-23.608993406593406,-22.70581868131868,-20.53902967032967,-28.54493186813187,-20.265115384615385,-38.262539560439556,-38.32572857142858,-21.843113186813188 +v14.0.0,AS,-29.6233,-38.4607625,-38.2555375,-30.7154125,-29.77635,-27.483925,-35.0387,-34.3188625,-28.506675,-34.0844875,-29.6678,-38.614675,-38.51355,-30.890475000000002 +v14.0.0,LD,-24.080367857142857,-40.69151607142857,-39.43685357142857,-25.707425,-24.47808392857143,-23.269074999999997,-26.726924999999998,-26.16893214285714,-23.889891071428572,-30.70669642857143,-24.299785714285715,-40.992085714285714,-39.24644285714286,-25.46258035714286 +v14.0.0,RA,-27.874027472527473,-43.34296593406593,-42.806721978021976,-29.564686813186814,-28.006385714285713,-27.080675824175824,-33.444448351648354,-32.37650769230769,-27.78918021978022,-34.13906043956044,-28.098595604395605,-43.59349230769231,-42.83545384615385,-29.214735164835165 +v14.0.0,Still,-12.168828070175438,-26.241708771929822,-28.257964912280702,-13.973342105263159,-12.592468421052633,-12.596692982456142,-15.27858245614035,-14.623601754385964,-13.736450877192983,-16.933087719298246,-12.168828070175438,-26.241708771929822,-28.257964912280702,-13.09548596491228 +v15.0.0,AI,-20.231984615384615,-38.27505824175824,-38.39123626373626,-22.374462637362637,-21.32820879120879,-19.39794835164835,-23.605419780219776,-22.70231208791209,-20.537206593406594,-28.543235164835167,-20.26359010989011,-38.26080879120879,-38.32399010989011,-21.84156153846154 +v15.0.0,AS,-29.616475,-38.482124999999996,-38.2415,-30.711525,-29.7725875,-27.483425,-35.01255,-34.3057625,-28.5032,-34.0921375,-29.664450000000002,-38.6365,-38.495937500000004,-30.8851375 +v15.0.0,LD,-24.085076785714286,-40.727087499999996,-39.46216964285714,-25.7147625,-24.475308928571426,-23.263639285714284,-26.730214285714286,-26.177291071428574,-23.895255357142855,-30.748391071428575,-24.30357857142857,-41.02337142857142,-39.28058214285714,-25.46767142857143 +v15.0.0,RA,-27.87084945054945,-43.332574725274725,-42.81617252747253,-29.561582417582414,-28.001697802197803,-27.078405494505496,-33.445697802197806,-32.373473626373624,-27.785241758241757,-34.132023076923076,-28.09498021978022,-43.58862417582418,-42.838928571428575,-29.211506593406593 +v15.0.0,Still,-12.168828070175438,-26.241708771929822,-28.257964912280702,-13.973342105263159,-12.592468421052633,-12.596692982456142,-15.27858245614035,-14.623601754385964,-13.736450877192983,-16.933087719298246,-12.168828070175438,-26.241708771929822,-28.257964912280702,-13.09548596491228 diff --git a/tools/convexhull_framework/ctc_result/AverageBdrateByTagClass-Summary-AV1-vs-AV2.csv b/tools/convexhull_framework/ctc_result/AverageBdrateByTagClass-Summary-AV1-vs-AV2.csv index eb96ee76ff..21e1d14b89 100644 --- a/tools/convexhull_framework/ctc_result/AverageBdrateByTagClass-Summary-AV1-vs-AV2.csv +++ b/tools/convexhull_framework/ctc_result/AverageBdrateByTagClass-Summary-AV1-vs-AV2.csv @@ -1,62 +1,4 @@ tag,cfg,class,psnr_y,psnr_u,psnr_v,overall_psnr,ssim_y,ms_ssim_y,vmaf,vmaf_neg,psnr_hvs,ciede2k,apsnr_y,apsnr_u,apsnr_v,overall_apsnr -libaom-v3.12.0,AI,A1,1.7140375,-1.717225,-1.80215,1.3342875,-0.3755875,1.1794375000000001,-4.5703625,-6.3058375,0.5693625,0.26167499999999994,1.7116,-1.7166375,-1.79615,1.4310250000000002 -libaom-v3.12.0,AI,A2,0.9347,1.9926473684210528,2.762815789473684,1.050821052631579,0.03072105263157893,-0.44767894736842107,-3.340126315789474,-2.619263157894737,2.3038894736842104,3.9274947368421054,0.9295736842105263,1.9928631578947371,2.760157894736842,1.1263894736842106 -libaom-v3.12.0,AI,A3,-0.020687499999999998,-1.8434875000000002,-1.9503,-0.1816,-0.6544749999999999,-0.49792499999999995,-2.2940875,-2.318275,-0.9057625,-0.7682875,-0.017374999999999998,-1.844075,-1.95115,-0.20005 -libaom-v3.12.0,AI,A4,0.5801999999999999,1.9859666666666669,4.657666666666667,0.7902833333333333,-0.8960500000000001,-0.5316833333333334,-3.9731,-3.2488499999999996,4.6258,3.119566666666667,0.5799,1.9812,4.6326,0.7764666666666667 -libaom-v3.12.0,AI,A5,-0.246525,-1.2904,-1.8852250000000002,-0.319775,-1.0516,-0.9016749999999999,-1.34815,-2.070875,-1.156775,-0.279,-0.245675,-1.26725,-1.86365,-0.30425 -libaom-v3.12.0,AI,B1,-0.18047999999999997,1.6065200000000002,1.91283,-0.021400000000000027,-0.36172999999999994,-1.142,-4.34131,-3.7613100000000004,3.8657200000000005,5.04345,-0.2381099999999999,1.52347,1.82123,-0.05711000000000001 -libaom-v3.12.0,AI,B2,22.696666666666665,11.444288888888888,3.4404777777777777,21.667433333333335,22.227688888888892,21.75951111111111,23.5215,22.544733333333333,20.4839,17.63586666666667,22.545222222222222,11.457566666666667,3.4158999999999997,21.396077777777776 -libaom-v3.12.0,AI,E,-0.8951,0.39426874999999995,1.2934,-0.6304125,-0.39111874999999996,-1.0762562500000001,-2.5173,-2.0308875,-0.8801125000000001,-1.29965,-0.7253999999999999,0.4721875,1.2776,-0.7866562500000001 -libaom-v3.12.0,AI,G1,-1.1588,-2.8550500000000003,-2.451025,-1.252275,-1.264925,-1.225175,-2.142525,-2.43715,-1.29535,-1.00495,-1.1565,-2.8478,-2.4495,-1.1444999999999999 -libaom-v3.12.0,AI,G2,-0.3527285714285715,-2.734842857142857,-2.106357142857143,-0.48558571428571434,-0.15807142857142856,-0.07368571428571426,-3.2606571428571427,-2.6198142857142854,-0.4134571428571428,-0.8442571428571429,-0.3351285714285714,-2.7326857142857146,-2.1081714285714286,-0.4651 -libaom-v3.12.0,AS,A1,2.1404,-5.46005,-5.487275,1.1379124999999999,-3.472875,-0.8341375,8.8299625,7.828050000000001,0.39863750000000003,-2.9448374999999998,2.2631125,-5.651775,-5.758325,1.605025 -libaom-v3.12.0,LD,A2,11.877052631578948,3.055294736842105,2.6760894736842102,10.902794736842106,9.543957894736844,8.796257894736843,20.334915789473683,19.765431578947368,12.6479,9.92602105263158,17.514021052631577,4.411452631578948,3.463515789473684,16.567805263157894 -libaom-v3.12.0,LD,A3,10.787575,14.9790625,18.8447125,11.3560875,8.543275,8.616225,17.567037499999998,16.6946375,10.271975,13.888825,12.267299999999999,14.6941625,18.987325,12.678112500000001 -libaom-v3.12.0,LD,A4,9.681216666666666,21.550466666666665,22.338449999999998,10.31155,12.208816666666669,11.538499999999999,10.776166666666667,8.690466666666667,14.899783333333332,17.2918,12.937633333333332,21.544466666666665,21.768583333333336,13.466866666666666 -libaom-v3.12.0,LD,A5,11.6313,4.7197,3.6495249999999997,11.019449999999999,11.5068,11.164875,14.161200000000001,13.4114,10.707875,11.2134,14.29375,2.8774000000000006,2.0318,13.912525 -libaom-v3.12.0,LD,B1,16.43585,4.4968900000000005,3.09018,15.290090000000001,11.93328,11.67408,24.574289999999998,22.93967,15.90821,16.05435,23.70045,7.96524,5.6560299999999994,22.535680000000003 -libaom-v3.12.0,LD,B2,22.156344444444446,19.806255555555556,18.463755555555554,21.83376666666667,19.09982222222222,19.04958888888889,20.356011111111112,21.011055555555558,20.662355555555553,24.45147777777778,21.739688888888892,19.20628888888889,18.439344444444444,21.30648888888889 -libaom-v3.12.0,RA,A1,0.13242499999999996,-7.4786125000000006,-7.49595,-0.8872249999999999,-1.7993625,-2.0304125,-0.15121249999999997,-1.002125,-1.3121749999999999,-4.4345125,0.42770000000000014,-7.632575,-7.6196625000000004,-0.4020250000000001 -libaom-v3.12.0,RA,A2,-0.09432105263157897,-3.649005263157895,-3.0734894736842104,-0.451278947368421,-1.2129263157894734,-1.2048263157894736,1.7987526315789473,0.9250315789473685,0.22122105263157907,0.11827894736842119,-0.022821052631578888,-4.022368421052631,-3.358978947368421,-0.11741052631578953 -libaom-v3.12.0,RA,A3,0.16564999999999996,3.7272000000000003,6.460625,0.646875,-0.23507500000000003,0.0009000000000001229,2.0193125,1.6544000000000003,-0.4618,2.7532125,-0.3832749999999999,3.3956375,6.2820374999999995,0.158325 -libaom-v3.12.0,RA,A4,2.0460833333333333,8.1962,8.396966666666668,2.5603166666666666,4.51445,3.8049666666666666,-2.0016,-2.744566666666667,6.0059499999999995,8.647416666666667,2.339466666666667,7.601466666666667,7.8790000000000004,3.028366666666667 -libaom-v3.12.0,RA,A5,2.0595,1.7527250000000003,1.6551999999999998,2.0679999999999996,4.340175,3.4171250000000004,-1.447125,-1.6896,1.03515,2.925625,1.469575,0.6084500000000004,0.617175,1.640225 -libaom-v3.12.0,RA,B1,3.7012500000000004,0.7278,-1.7109100000000002,3.34125,2.0966,1.9264499999999998,2.34877,1.8811500000000003,4.31849,7.11978,4.203609999999999,1.65319,-1.35896,3.93497 -libaom-v3.12.0,RA,B2,19.74052222222222,15.791577777777778,14.567777777777776,19.2848,17.8187,17.51311111111111,18.462488888888892,17.75461111111111,16.727155555555555,18.111611111111113,18.703122222222223,15.358,14.599544444444446,18.25203333333333 -libaom-v3.12.0,RA,E,0.023962499999999942,-8.4284875,-8.57344375,-0.89915625,-2.29590625,-2.215875,-0.2364875000000001,-0.28791875,-0.47646875,-3.0805875,-0.6050375,-8.5880125,-8.89704375,-1.0568125 -libaom-v3.12.0,RA,G1,0.75075,-7.559825,-13.745225,0.07589999999999986,0.12974999999999992,-0.6232999999999997,2.354475,2.1067,-0.33312499999999967,-4.25195,1.0352499999999996,-8.032725,-13.990750000000002,0.682175 -libaom-v3.12.0,RA,G2,3.3992857142857145,-0.6583571428571425,-4.308628571428572,2.8371,1.998314285714286,2.719042857142857,1.6299571428571429,1.181957142857143,1.9432714285714285,2.1808428571428573,3.9376,1.9699000000000004,-3.104357142857143,3.5259 -libaom-v3.12.0,Still,F1,0.12138928571428571,-1.2811464285714287,-1.3092785714285713,0.09706428571428569,-0.9168035714285715,-0.2811428571428572,-0.23492500000000005,-0.061614285714285726,-0.05650000000000001,-0.13515357142857143,0.12138928571428571,-1.2811464285714287,-1.3092785714285713,0.08564285714285716 -libaom-v3.12.0,Still,F2,0.19861724137931033,-0.1377931034482758,-0.33670344827586207,0.17631379310344827,-0.0019241379310344698,-0.22783103448275863,-1.010237931034483,-0.8601172413793103,-0.4916655172413793,0.23189999999999997,0.19861724137931033,-0.1377931034482758,-0.33670344827586207,0.19453793103448275 -libaom-v3.12.0-unconstrained,AI,A1,0.9675125,-2.146775,-2.6057625,0.525975,0.5206,0.9470375,0.8791625,0.510675,0.46381249999999996,-0.9283625,0.9669,-2.1436625,-2.6004125,0.5179625 -libaom-v3.12.0-unconstrained,AI,A2,0.8676105263157895,-0.2567315789473684,-0.4400736842105263,0.7411947368421052,0.43528947368421056,0.3318736842105263,0.7556157894736842,0.7035789473684211,1.032057894736842,1.3821736842105263,0.865378947368421,-0.25747894736842103,-0.4434421052631578,0.7626631578947368 -libaom-v3.12.0-unconstrained,AI,A3,0.41883750000000003,-2.2077875,-2.8546625,0.1322,-0.18470000000000003,-0.104075,0.952475,0.6712625,0.008924999999999999,-0.9660625,0.418925,-2.2047499999999998,-2.8638125,0.15075 -libaom-v3.12.0-unconstrained,AI,A4,0.5818500000000001,3.0019333333333336,1.0616666666666668,0.6803833333333333,-0.4572833333333333,-0.1906,-0.02256666666666665,-0.4659,1.6523,2.17645,0.5798,3.02695,1.0431000000000001,0.62335 -libaom-v3.12.0-unconstrained,AI,A5,0.7040249999999999,-1.9653,-3.2162249999999997,0.464425,-0.29185,-0.306125,1.1248250000000002,0.9703,0.007974999999999982,-0.016649999999999998,0.70745,-1.8815,-3.1553750000000003,0.5674750000000001 -libaom-v3.12.0-unconstrained,AI,B1,-0.09185999999999997,-1.27865,-1.16586,-0.18871,0.002409999999999948,-0.37437,-0.13788999999999996,-0.31875000000000003,1.16358,1.7518999999999998,-0.19262,-1.3563399999999999,-1.22913,-0.28171000000000007 -libaom-v3.12.0-unconstrained,AI,B2,22.153233333333336,13.783099999999997,13.929211111111108,21.19991111111111,23.037288888888888,22.413688888888892,23.92468888888889,23.2765,22.009766666666668,19.218877777777777,21.99663333333333,13.802644444444446,14.05918888888889,21.16901111111111 -libaom-v3.12.0-unconstrained,AI,E,0.70711875,-1.0796999999999999,-1.647775,0.68128125,0.66078125,0.3012375,0.27625000000000005,0.51991875,0.48783125,-0.5159,0.7626875,-0.98109375,-1.57465,0.53020625 -libaom-v3.12.0-unconstrained,AI,G1,-0.06945000000000001,-3.05715,-8.021675,-0.51275,0.144125,-0.023899999999999984,0.402575,0.5064,-0.0678,-2.0286,-0.06675,-3.075975,-8.034775,-0.233225 -libaom-v3.12.0-unconstrained,AI,G2,0.4022428571428572,-3.5364857142857145,-4.1970857142857145,0.06144285714285713,0.5567142857142857,0.6231285714285715,-0.3500571428571429,-0.3485142857142857,0.20465714285714287,-1.0815285714285714,0.4071000000000001,-3.5401428571428575,-4.187285714285714,0.14195714285714284 -libaom-v3.12.0-unconstrained,AS,A1,-7.6871624999999995,-7.1752625000000005,-8.027075,-7.811999999999999,-8.2383125,-8.461762499999999,-2.580075,-3.1923125,-8.0600625,-9.819212499999999,-8.3368375,-7.809875,-8.60175,-8.48725 -libaom-v3.12.0-unconstrained,LD,A2,4.076321052631579,-0.3797736842105262,-0.4191315789473685,3.588268421052631,2.783894736842105,2.9384105263157894,4.277852631578948,3.9884052631578952,3.6206105263157897,3.3911052631578946,4.443252631578948,-0.4454631578947368,-0.31081578947368427,4.219226315789474 -libaom-v3.12.0-unconstrained,LD,A3,4.2360875,2.3264875,3.1436875,4.0553375,4.1426875,4.218500000000001,4.6910625,4.0770625,3.9020375,3.2132875,4.2631375,2.402175,3.2881625,4.2391125 -libaom-v3.12.0-unconstrained,LD,A4,3.491433333333333,3.71595,5.500666666666667,3.57755,1.25635,2.0485,2.22815,1.7293333333333332,6.722966666666667,5.502133333333333,3.4951333333333334,3.8675333333333337,5.888166666666667,3.774483333333334 -libaom-v3.12.0-unconstrained,LD,A5,5.19955,4.228000000000001,5.6913,5.068675,5.697,6.112475,6.18925,5.9028,5.440775,5.51795,4.914725,4.3156,5.8218,5.11985 -libaom-v3.12.0-unconstrained,LD,B1,4.9876,6.35478,4.57291,4.94172,3.56213,3.33853,5.5990400000000005,5.13245,6.18788,7.542350000000001,5.3091099999999996,7.3845600000000005,5.2470300000000005,5.4932099999999995 -libaom-v3.12.0-unconstrained,LD,B2,22.102322222222224,17.252633333333332,16.367855555555554,21.495111111111115,24.577633333333335,24.465111111111113,29.689633333333333,28.830433333333335,27.38201111111111,16.00897777777778,24.828355555555554,19.599677777777778,18.73378888888889,24.330033333333333 -libaom-v3.12.0-unconstrained,RA,A1,-8.509325,-10.915312499999999,-11.096775000000001,-8.7971,-4.5381125,-8.1815125,-11.0535125,-11.3404875,-8.4105625,-10.67485,-9.2279375,-11.48845,-11.4858125,-9.5672 -libaom-v3.12.0-unconstrained,RA,A2,-8.826836842105264,-1.9849052631578952,-1.3210526315789475,-8.30958947368421,-11.006142105263159,-10.277557894736841,-13.304305263157895,-13.671505263157895,-9.090505263157896,-6.702110526315789,-10.538952631578946,-2.9244947368421053,-2.0818736842105263,-10.04511052631579 -libaom-v3.12.0-unconstrained,RA,A3,-8.272325,-4.1384125,-3.9870124999999996,-7.9075625,-8.533475,-8.08835,-8.7546875,-9.03435,-7.9449000000000005,-7.845387499999999,-9.6626375,-4.4313125,-3.8472375,-9.1689875 -libaom-v3.12.0-unconstrained,RA,A4,-4.39555,7.432716666666667,10.54925,-3.26005,-4.408600000000001,-5.7526,-9.529649999999998,-9.69655,-1.1804166666666667,1.5037166666666668,-5.843466666666667,6.330633333333334,9.798216666666667,-4.604566666666667 -libaom-v3.12.0-unconstrained,RA,A5,-5.271525,10.67245,16.223375,-3.97815,-2.7531000000000003,-5.322649999999999,-15.62225,-15.362275,-6.860825,-2.2479,-7.070675,9.9703,15.713125,-6.0888 -libaom-v3.12.0-unconstrained,RA,B1,-8.52299,5.165570000000001,2.2651,-7.40536,-12.12202,-11.0875,-16.2158,-16.05549,-7.576269999999999,-4.12724,-9.26416,5.9641,2.8433599999999997,-8.401050000000001 -libaom-v3.12.0-unconstrained,RA,B2,15.862122222222224,12.976077777777778,10.918755555555556,15.488744444444443,15.746033333333335,15.562233333333332,15.135888888888887,14.61468888888889,14.913633333333333,15.426277777777777,14.872600000000002,11.033511111111112,10.10368888888889,14.31951111111111 -libaom-v3.12.0-unconstrained,RA,E,-8.96013125,-5.496575000000001,-6.8521,-8.91665625,-8.95641875,-8.5395625,-14.88601875,-14.90946875,-10.08750625,-8.10886875,-12.59355625,-7.264843749999999,-8.93371875,-12.1081625 -libaom-v3.12.0-unconstrained,RA,G1,-9.89325,-5.6007,-4.792249999999999,-9.534225,-9.186025,-11.2597,-12.473825000000001,-12.6678,-10.59425,-12.738375,-11.8,-6.5194,-5.5957,-11.450775 -libaom-v3.12.0-unconstrained,RA,G2,-9.374057142857144,-7.553399999999999,-9.500314285714285,-9.226142857142857,-11.758585714285715,-11.1039,-12.483714285714285,-12.740157142857143,-9.911242857142856,-11.029528571428571,-9.9663,-4.765671428571429,-8.510214285714286,-9.769457142857144 -libaom-v3.12.0-unconstrained,Still,F1,0.9737035714285714,-2.1942785714285713,-1.6203607142857144,0.5709285714285715,-0.6496464285714286,0.43391785714285713,1.7598857142857143,1.6136821428571426,0.6990857142857143,-0.21470714285714285,0.9737035714285714,-2.1942785714285713,-1.6203607142857144,0.7008642857142858 -libaom-v3.12.0-unconstrained,Still,F2,0.9630275862068965,-0.6043551724137931,-1.0224172413793104,0.7336931034482759,0.7578103448275861,0.5928689655172414,1.4118827586206897,1.332148275862069,0.6868758620689654,0.1275137931034483,0.9630275862068965,-0.6043551724137931,-1.0224172413793104,0.7101862068965518 v02.0.0,AI,A1,-4.49065,-10.049624999999999,-12.40705,-5.290150000000001,-3.9527625,-4.5126125,-5.4597125,-5.4277,-4.5927999999999995,-8.3231875,-4.488875,-10.052675,-12.3796125,-5.3560375 v02.0.0,AI,A2,-4.0076368421052635,-12.083673684210526,-15.030257894736843,-4.888552631578947,-3.8167000000000004,-4.238468421052632,-4.856415789473684,-4.715984210526316,-3.557668421052631,-6.523557894736842,-4.013178947368421,-12.08487894736842,-15.049852631578949,-4.727068421052632 v02.0.0,AI,A3,-3.9293,-15.0659625,-17.263675,-5.1,-4.2449375,-4.1927875,-3.8737,-4.1031625,-4.6099,-8.233374999999999,-3.9304625,-15.0801375,-17.2781875,-4.7305375000000005 @@ -405,3 +347,61 @@ v13.0.0,RA,G1,-31.730449999999998,-56.403375,-59.642375,-34.346075,-29.933225,-2 v13.0.0,RA,G2,-27.882485714285714,-50.35562857142857,-54.810314285714284,-30.650085714285716,-29.291285714285713,-26.874757142857142,-34.132157142857146,-33.11494285714286,-27.802542857142857,-36.2517,-27.8724,-51.065828571428575,-54.572771428571436,-29.20865714285714 v13.0.0,Still,F1,-11.434307142857142,-27.737146428571428,-31.292967857142855,-13.327985714285715,-11.450742857142858,-11.810535714285715,-14.959382142857143,-14.252214285714286,-13.041285714285715,-16.118742857142855,-11.434307142857142,-27.737146428571428,-31.292967857142855,-12.356707142857143 v13.0.0,Still,F2,-12.683468965517243,-24.622893103448277,-25.184944827586204,-14.403831034482758,-13.472396551724138,-13.193489655172414,-15.268679310344828,-14.732951724137932,-14.2749,-17.538927586206896,-12.683468965517243,-24.622893103448277,-25.184944827586204,-13.614262068965518 +v14.0.0,AI,A1,-18.1981,-33.072250000000004,-32.88885,-20.0792625,-19.6355,-17.1370625,-22.1387625,-21.233875,-18.2654875,-26.1186375,-18.194525,-33.071799999999996,-32.8795625,-20.46185 +v14.0.0,AI,A2,-16.71237894736842,-33.26505789473684,-35.05945263157895,-18.54606842105263,-17.390800000000002,-15.520036842105263,-19.978505263157892,-19.173926315789473,-16.444563157894738,-24.194657894736842,-16.70735263157895,-33.25542631578948,-35.05266842105263,-18.26973157894737 +v14.0.0,AI,A3,-19.178175,-34.2500125,-36.582225,-20.826875,-19.749275,-17.9515625,-23.04935,-21.9680125,-18.8645875,-25.0028,-19.1774875,-34.247,-36.574575,-20.28085 +v14.0.0,AI,A4,-15.450800000000001,-45.7691,-45.18301666666667,-18.409466666666667,-16.321483333333333,-15.021833333333333,-18.274183333333333,-17.325266666666668,-16.114733333333334,-25.993416666666665,-15.4497,-45.7331,-45.02523333333334,-17.24 +v14.0.0,AI,A5,-13.800799999999999,-29.613075,-22.818775,-15.099325,-13.95415,-14.087325,-18.591625,-17.42825,-15.034825,-20.439425,-13.791725,-29.539099999999998,-22.840625000000003,-14.455025 +v14.0.0,AI,B1,-21.96093,-39.62608,-39.40581,-23.967080000000003,-22.6124,-20.97234,-24.65482,-23.5736,-22.19476,-31.55068,-21.91856,-39.65456,-39.282560000000004,-23.64354 +v14.0.0,AI,B2,-40.97993333333333,-56.3907,-56.68734444444445,-42.72632222222222,-45.76365555555556,-42.27668888888889,-40.93103333333333,-39.4684,-41.76436666666667,-50.913911111111105,-41.21231111111111,-56.268911111111116,-56.4696,-43.03794444444444 +v14.0.0,AI,E,-16.69918125,-30.526525,-29.6393125,-18.54269375,-16.31645625,-15.56095,-22.7502,-22.03911875,-17.69519375,-21.11796875,-16.76935,-30.5230125,-29.53896875,-17.6030125 +v14.0.0,AI,G1,-18.896449999999998,-46.22705,-55.145375,-23.113925000000002,-19.66985,-17.1263,-22.2728,-21.873874999999998,-18.771525,-35.151375,-18.90915,-46.349675000000005,-55.2894,-21.927875 +v14.0.0,AI,G2,-20.799271428571426,-48.91392857142858,-44.34772857142857,-24.627657142857142,-23.426342857142856,-19.371242857142857,-22.184057142857142,-21.65317142857143,-20.957228571428573,-34.13937142857143,-20.828857142857142,-48.8857,-44.23721428571429,-22.894299999999998 +v14.0.0,AS,A1,-29.6233,-38.4607625,-38.2555375,-30.7154125,-29.77635,-27.483925,-35.0387,-34.3188625,-28.506675,-34.0844875,-29.6678,-38.614675,-38.51355,-30.890475000000002 +v14.0.0,LD,A2,-20.056531578947368,-37.04857894736842,-36.97918947368421,-21.708684210526314,-20.200552631578947,-18.54073157894737,-22.869657894736843,-22.354863157894737,-19.34692105263158,-26.43274210526316,-20.44601052631579,-37.5183,-37.28101052631579,-21.576115789473683 +v14.0.0,LD,A3,-21.3939,-37.7101125,-36.98535,-23.0685,-21.490475,-19.982174999999998,-23.1992,-22.5797,-20.474725,-27.0063125,-21.431375,-37.771775000000005,-36.8487125,-22.306075 +v14.0.0,LD,A4,-23.34145,-45.11331666666667,-44.94841666666667,-25.467916666666667,-23.283133333333335,-21.995316666666668,-23.462783333333334,-24.240916666666667,-23.031716666666668,-30.460383333333336,-23.72638333333333,-45.610549999999996,-44.71743333333333,-24.963666666666665 +v14.0.0,LD,A5,-20.846674999999998,-36.1814,-28.421475,-21.884275000000002,-19.7119,-20.0517,-25.9574,-24.825575,-20.745125,-24.421475,-21.086824999999997,-36.02345,-28.370675,-21.575 +v14.0.0,LD,B1,-20.67139,-40.85992,-37.310500000000005,-22.66412,-21.60999,-20.522759999999998,-23.203030000000002,-22.709899999999998,-21.152369999999998,-30.187450000000002,-20.73374,-42.09795,-36.55627,-22.36608 +v14.0.0,LD,B2,-40.68066666666667,-49.901811111111115,-50.388333333333335,-41.73522222222223,-42.26578888888889,-41.5034,-44.439344444444444,-43.13704444444445,-41.527788888888885,-46.5533,-40.757755555555555,-49.088699999999996,-49.70243333333334,-41.9741 +v14.0.0,RA,A1,-28.477825,-40.9571125,-41.61635,-30.00345,-29.172725,-27.337937500000002,-34.5387375,-33.41215,-27.892075,-34.4895,-28.598487499999997,-41.1372375,-41.8547875,-30.2076625 +v14.0.0,RA,A2,-26.540736842105265,-40.964847368421054,-41.04080526315789,-27.926831578947365,-26.530110526315788,-25.18306842105263,-32.42455789473684,-31.275257894736843,-25.597789473684212,-31.951942105263157,-26.8753,-41.34442105263158,-41.31650526315789,-27.822605263157897 +v14.0.0,RA,A3,-28.0465875,-42.199,-40.7050375,-29.5523625,-27.973825,-26.9267125,-31.89425,-30.60305,-27.3712125,-32.476237499999996,-28.0531875,-42.362812500000004,-40.7090125,-28.7598 +v14.0.0,RA,A4,-26.870616666666667,-46.88255,-46.950050000000005,-28.808466666666664,-25.053966666666668,-25.25335,-31.63393333333333,-31.49851666666667,-26.839866666666666,-33.015883333333335,-27.206216666666666,-47.38336666666667,-46.83121666666667,-28.213116666666668 +v14.0.0,RA,A5,-27.747275000000002,-36.354124999999996,-29.0154,-28.22825,-26.212425,-27.407675,-34.324675,-33.257575,-28.202825,-29.70205,-28.25305,-36.644775,-29.174100000000003,-28.49075 +v14.0.0,RA,B1,-25.92754,-43.35243,-41.041430000000005,-27.740190000000002,-26.6778,-26.31461,-31.48209,-30.350740000000002,-26.53152,-34.212959999999995,-26.034280000000003,-43.88344,-40.30358,-27.36938 +v14.0.0,RA,B2,-39.22168888888889,-50.079366666666665,-50.31298888888889,-40.44396666666667,-41.77837777777778,-40.75013333333333,-42.66457777777778,-41.47024444444445,-41.112899999999996,-46.976477777777774,-39.367177777777776,-49.5015,-50.128888888888895,-40.880066666666664 +v14.0.0,RA,E,-23.54988125,-38.35035625,-36.04411875,-25.46846875,-22.940281249999998,-22.35891875,-29.1001875,-28.1522625,-23.51771875,-28.39848125,-23.871275,-38.4371,-36.27878125,-24.75175 +v14.0.0,RA,G1,-31.560650000000003,-56.2673,-59.447225,-34.172399999999996,-29.831899999999997,-29.327199999999998,-42.04835,-40.4151,-30.657175000000002,-44.143775,-31.966625,-56.945049999999995,-60.05095,-33.873425 +v14.0.0,RA,G2,-27.506157142857145,-50.14337142857143,-54.51105714285715,-30.283385714285714,-29.001085714285715,-26.520914285714287,-33.74478571428571,-32.721871428571426,-27.465300000000003,-35.86707142857143,-27.489185714285714,-50.780342857142855,-54.27978571428571,-28.8277 +v14.0.0,Still,F1,-11.618389285714287,-27.901407142857146,-31.42372857142857,-13.5101,-11.666321428571427,-11.961421428571429,-15.255832142857143,-14.477878571428572,-13.159525,-16.287732142857145,-11.618389285714287,-27.901407142857146,-31.42372857142857,-12.540553571428571 +v14.0.0,Still,F2,-12.700286206896552,-24.639241379310345,-25.20136551724138,-14.420610344827587,-13.486679310344828,-13.210058620689654,-15.30054827586207,-14.764299999999999,-14.293482758620689,-17.556189655172414,-12.700286206896552,-24.639241379310345,-25.20136551724138,-13.63128275862069 +v15.0.0,AI,A1,-18.1981,-33.072250000000004,-32.88885,-20.0792625,-19.6355,-17.1370625,-22.1387625,-21.233875,-18.2654875,-26.1186375,-18.194525,-33.071799999999996,-32.8795625,-20.46185 +v15.0.0,AI,A2,-16.71237894736842,-33.26505789473684,-35.05945263157895,-18.54606842105263,-17.390800000000002,-15.520036842105263,-19.978505263157892,-19.173926315789473,-16.444563157894738,-24.194657894736842,-16.70735263157895,-33.25542631578948,-35.05266842105263,-18.26973157894737 +v15.0.0,AI,A3,-19.178175,-34.2500125,-36.582225,-20.826875,-19.749275,-17.9515625,-23.04935,-21.9680125,-18.8645875,-25.0028,-19.1774875,-34.247,-36.574575,-20.28085 +v15.0.0,AI,A4,-15.450800000000001,-45.7691,-45.18301666666667,-18.409466666666667,-16.321483333333333,-15.021833333333333,-18.274183333333333,-17.325266666666668,-16.114733333333334,-25.993416666666665,-15.4497,-45.7331,-45.02523333333334,-17.24 +v15.0.0,AI,A5,-13.766024999999999,-29.573574999999998,-22.77935,-15.063699999999999,-13.927675,-14.049975,-18.510324999999998,-17.348475,-14.99335,-20.400825,-13.757025,-29.499724999999998,-22.801074999999997,-14.419725 +v15.0.0,AI,B1,-21.96093,-39.62608,-39.40581,-23.967080000000003,-22.6124,-20.97234,-24.65482,-23.5736,-22.19476,-31.55068,-21.91856,-39.65456,-39.282560000000004,-23.64354 +v15.0.0,AI,B2,-40.97993333333333,-56.3907,-56.68734444444445,-42.72632222222222,-45.76365555555556,-42.27668888888889,-40.93103333333333,-39.4684,-41.76436666666667,-50.913911111111105,-41.21231111111111,-56.268911111111116,-56.4696,-43.03794444444444 +v15.0.0,AI,E,-16.69918125,-30.526525,-29.6393125,-18.54269375,-16.31645625,-15.56095,-22.7502,-22.03911875,-17.69519375,-21.11796875,-16.76935,-30.5230125,-29.53896875,-17.6030125 +v15.0.0,AI,G1,-18.896449999999998,-46.22705,-55.145375,-23.113925000000002,-19.66985,-17.1263,-22.2728,-21.873874999999998,-18.771525,-35.151375,-18.90915,-46.349675000000005,-55.2894,-21.927875 +v15.0.0,AI,G2,-20.799271428571426,-48.91392857142858,-44.34772857142857,-24.627657142857142,-23.426342857142856,-19.371242857142857,-22.184057142857142,-21.65317142857143,-20.957228571428573,-34.13937142857143,-20.828857142857142,-48.8857,-44.23721428571429,-22.894299999999998 +v15.0.0,AS,A1,-29.616475,-38.482124999999996,-38.2415,-30.711525,-29.7725875,-27.483425,-35.01255,-34.3057625,-28.5032,-34.0921375,-29.664450000000002,-38.6365,-38.495937500000004,-30.8851375 +v15.0.0,LD,A2,-20.05671052631579,-37.095731578947365,-37.001273684210524,-21.713042105263156,-20.198715789473685,-18.531815789473683,-22.878731578947367,-22.370736842105263,-19.344731578947368,-26.451278947368422,-20.447963157894737,-37.57641052631579,-37.30532105263158,-21.580405263157893 +v15.0.0,LD,A3,-21.3954125,-37.71535,-37.0123875,-23.071025,-21.49585,-19.9924125,-23.1828875,-22.576425,-20.485,-26.9969375,-21.432125,-37.7770625,-36.879875,-22.307925 +v15.0.0,LD,A4,-23.338083333333334,-45.11093333333333,-44.9459,-25.46468333333333,-23.280183333333337,-21.991983333333334,-23.457566666666665,-24.235816666666665,-23.02841666666667,-30.45713333333333,-23.72305,-45.60816666666667,-44.71496666666667,-24.96036666666667 +v15.0.0,LD,A5,-20.849625,-36.19375,-28.47205,-21.888849999999998,-19.705849999999998,-20.044575000000002,-25.948275,-24.825075000000002,-20.767525,-24.42645,-21.089775,-36.034800000000004,-28.430675,-21.579675 +v15.0.0,LD,B1,-20.66548,-40.86329,-37.406060000000004,-22.66348,-21.59711,-20.51777,-23.21489,-22.72095,-21.14538,-30.19083,-20.7227,-42.10374,-36.66122,-22.35764 +v15.0.0,LD,B2,-40.71574444444444,-50.0113,-50.348222222222226,-41.77026666666667,-42.26658888888889,-41.490233333333336,-44.44951111111111,-43.1498,-41.556666666666665,-46.77813333333333,-40.789744444444445,-49.146100000000004,-49.694199999999995,-42.004577777777776 +v15.0.0,RA,A1,-28.4708875,-40.9531125,-41.6073875,-29.9966875,-29.1685875,-27.32975,-34.5254375,-33.4014125,-27.8841125,-34.4865375,-28.5915625,-41.1320875,-41.8463125,-30.2007 +v15.0.0,RA,A2,-26.536636842105263,-40.94594736842105,-41.06093157894737,-27.922278947368426,-26.520663157894738,-25.167836842105263,-32.42241052631579,-31.271968421052634,-25.59134210526316,-31.94017894736842,-26.87321052631579,-41.32591578947368,-41.33891578947368,-27.819973684210527 +v15.0.0,RA,A3,-28.043275,-42.1744875,-40.7050125,-29.548775,-27.958212500000002,-26.934025,-31.928537499999997,-30.624000000000002,-27.3719125,-32.4603125,-28.0493375,-42.340075,-40.713725000000004,-28.7554125 +v15.0.0,RA,A4,-26.86606666666667,-46.87945,-46.94586666666667,-28.803916666666666,-25.049233333333333,-25.24866666666667,-31.623883333333335,-31.48998333333334,-26.835283333333336,-33.011066666666665,-27.201633333333334,-47.380500000000005,-46.827216666666665,-28.208550000000002 +v15.0.0,RA,A5,-27.754675,-36.406025,-29.01275,-28.239624999999997,-26.22645,-27.459575,-34.317724999999996,-33.2589,-28.222675000000002,-29.736525,-28.2591,-36.6901,-29.163425,-28.49665 +v15.0.0,RA,B1,-25.934710000000003,-43.302929999999996,-41.04077,-27.74549,-26.687490000000004,-26.327499999999997,-31.44502,-30.340870000000002,-26.54257,-34.216899999999995,-26.04063,-43.86952,-40.30326,-27.37771 +v15.0.0,RA,B2,-39.20748888888889,-50.02594444444444,-50.33281111111111,-40.42951111111111,-41.7883,-40.76833333333333,-42.70186666666667,-41.48523333333333,-41.10547777777778,-46.965522222222226,-39.360255555555554,-49.4734,-50.1273,-40.87553333333333 +v15.0.0,RA,E,-23.548625,-38.34535625,-36.0648,-25.46565,-22.9281625,-22.33814375,-29.076331250000003,-28.119175,-23.50308125,-28.37953125,-23.865925,-38.4318875,-36.30355,-24.74631875 +v15.0.0,RA,G1,-31.558149999999998,-56.409549999999996,-59.450925,-34.178275,-29.8232,-29.327675,-42.14015,-40.452275,-30.65605,-44.098725,-31.956249999999997,-57.095124999999996,-59.994,-33.869475 +v15.0.0,RA,G2,-27.49967142857143,-50.13471428571428,-54.52072857142857,-30.278714285714283,-28.99047142857143,-26.5135,-33.76254285714286,-32.73545714285714,-27.460342857142855,-35.89104285714286,-27.478628571428573,-50.75788571428571,-54.25638571428572,-28.814985714285715 +v15.0.0,Still,F1,-11.618389285714287,-27.901407142857146,-31.42372857142857,-13.5101,-11.666321428571427,-11.961421428571429,-15.255832142857143,-14.477878571428572,-13.159525,-16.287732142857145,-11.618389285714287,-27.901407142857146,-31.42372857142857,-12.540553571428571 +v15.0.0,Still,F2,-12.700286206896552,-24.639241379310345,-25.20136551724138,-14.420610344827587,-13.486679310344828,-13.210058620689654,-15.30054827586207,-14.764299999999999,-14.293482758620689,-17.556189655172414,-12.700286206896552,-24.639241379310345,-25.20136551724138,-13.63128275862069 diff --git a/tools/convexhull_framework/ctc_result/Bdrate-Summary-AV1-vs-AV2.csv b/tools/convexhull_framework/ctc_result/Bdrate-Summary-AV1-vs-AV2.csv index 12df06047f..ee42556ed2 100644 --- a/tools/convexhull_framework/ctc_result/Bdrate-Summary-AV1-vs-AV2.csv +++ b/tools/convexhull_framework/ctc_result/Bdrate-Summary-AV1-vs-AV2.csv @@ -1,6 +1,4 @@ tag,cfg,class,video,psnr_y,psnr_u,psnr_v,overall_psnr,ssim_y,ms_ssim_y,vmaf,vmaf_neg,psnr_hvs,ciede2k,apsnr_y,apsnr_u,apsnr_v,overall_apsnr -libaom-v3.12.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,2.7485,-1.8467,-2.0009,2.0282,0.3836,2.6718,-0.3593,-12.765,1.6221,0.2109,2.7485,-1.8476,-2.001,1.984 -libaom-v3.12.0-unconstrained,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,1.0284,-2.1795,-2.1335,0.5957,0.6427,1.359,1.5145,0.5451,0.6917,-1.5091,1.0284,-2.1787,-2.132,0.5068 v02.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-4.499,-10.0304,-10.6712,-5.2622,-4.4903,-4.4467,-4.8065,-5.2557,-4.5985,-9.4947,-4.4992,-10.0301,-10.6739,-5.4092 v03.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-6.9794,-12.2086,-14.3397,-7.8216,-5.8215,-6.5965,-6.0577,-6.7941,-6.8761,-12.8096,-6.9797,-12.2076,-14.3418,-7.9713 v04.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-10.6439,-20.5961,-22.8679,-12.1189,-8.6978,-10.0655,-10.738,-10.7503,-10.537,-17.7431,-10.6441,-20.5955,-22.8685,-12.3695 @@ -13,8 +11,8 @@ v10.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.496,-27.1135,-3 v11.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.43,-27.7253,-38.019,-20.4,-15.2159,-16.965,-21.8496,-20.9132,-18.1174,-24.791,-18.4304,-27.724,-38.0158,-20.7055 v12.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.5126,-27.7644,-37.7761,-20.4551,-15.2752,-17.0463,-22.0551,-21.1362,-18.166,-24.8519,-18.5127,-27.763,-37.7744,-20.7597 v13.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.4479,-27.7396,-37.7153,-20.3948,-19.7787,-16.9758,-22.1616,-21.1455,-18.0804,-24.6627,-18.4481,-27.738,-37.7117,-20.7002 -libaom-v3.12.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,2.6206,-4.2066,-6.3517,1.1768,-0.9645,3.7289,-5.9998,-4.8132,1.8151,-1.3405,2.6032,-4.2129,-6.3558,1.6395 -libaom-v3.12.0-unconstrained,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,1.1351,-3.2222,-4.2859,0.3007,0.9766,1.5598,-0.3653,-0.2824,0.711,-1.5907,1.1216,-3.2258,-4.2841,0.4466 +v14.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.4659,-27.7507,-37.7283,-20.412,-19.7955,-16.993,-22.1827,-21.166,-18.0966,-24.6759,-18.4661,-27.7491,-37.7247,-20.7174 +v15.0.0,AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.4659,-27.7507,-37.7283,-20.412,-19.7955,-16.993,-22.1827,-21.166,-18.0966,-24.6759,-18.4661,-27.7491,-37.7247,-20.7174 v02.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-7.5783,-8.8768,-9.8266,-7.9137,-5.2255,-8.2541,-9.3648,-9.0611,-7.5973,-8.2392,-7.6085,-8.8561,-9.8158,-7.8929 v03.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-12.1636,-14.0474,-16.3007,-12.7262,-8.4213,-12.8789,-11.245,-11.5208,-12.0357,-14.3684,-12.1873,-14.0362,-16.2882,-12.6842 v04.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-13.2637,-17.0636,-19.2442,-14.1356,-9.0818,-14.0618,-12.503,-12.6628,-13.3321,-16.0482,-13.2909,-17.0449,-19.2045,-14.0068 @@ -27,8 +25,8 @@ v10.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-20.6831,-23.3287,-21.98 v11.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-20.3048,-27.884,-27.3824,-21.5618,-17.5967,-21.1336,-20.7106,-20.9359,-20.9493,-24.545,-20.3318,-27.8933,-27.3771,-21.506 v12.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-20.2104,-28.1076,-27.4964,-21.5182,-17.2181,-20.8802,-20.3775,-20.7019,-20.7759,-24.6361,-20.2378,-28.1192,-27.4957,-21.4703 v13.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-20.8081,-31.7866,-28.8473,-22.4268,-26.0802,-21.4652,-21.082,-21.373,-21.4869,-25.8777,-20.8328,-31.7966,-28.8452,-22.385 -libaom-v3.12.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-0.0456,-1.5407,-1.6678,-0.2625,-0.3387,-0.1349,-3.4204,-2.982,-0.4209,-0.7936,-0.0456,-1.5385,-1.6675,-0.3221 -libaom-v3.12.0-unconstrained,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,0.4506,-2.8048,-2.9034,0.0231,0.5229,0.4655,2.1579,0.8885,0.0738,-1.2475,0.4518,-2.8028,-2.9032,-0.0571 +v14.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-20.8575,-31.8214,-28.8895,-22.4745,-26.1127,-21.5079,-21.1252,-21.4195,-21.5271,-25.9213,-20.8822,-31.8315,-28.8875,-22.4327 +v15.0.0,AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-20.8575,-31.8214,-28.8895,-22.4745,-26.1127,-21.5079,-21.1252,-21.4195,-21.5271,-25.9213,-20.8822,-31.8315,-28.8875,-22.4327 v02.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-5.6112,-10.8334,-10.7652,-6.2572,-4.5824,-5.4423,-8.199,-7.6144,-5.436,-7.9837,-5.6052,-10.8328,-10.7642,-6.3606 v03.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-7.6927,-13.808,-13.8873,-8.4621,-5.5359,-7.1709,-8.7495,-8.4308,-7.5193,-10.5598,-7.6865,-13.8073,-13.8752,-8.557 v04.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-10.8256,-21.1548,-20.3671,-12.0956,-7.3802,-10.2064,-12.1432,-11.4136,-10.6083,-14.8487,-10.8209,-21.1556,-20.3524,-12.2453 @@ -41,8 +39,8 @@ v10.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-17.8423,-32.4683,-27. v11.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-17.6483,-32.4958,-27.0375,-19.2217,-14.6075,-16.5419,-21.1749,-20.0388,-17.4095,-23.4921,-17.6439,-32.489,-27.028,-19.3887 v12.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-17.5176,-32.4821,-27.0001,-19.1067,-14.4974,-16.3504,-21.0427,-19.933,-17.3397,-23.4525,-17.513,-32.4729,-26.9847,-19.2727 v13.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-17.7353,-33.2558,-27.6628,-19.3959,-19.0624,-16.5915,-21.4106,-20.2855,-17.5286,-23.9231,-17.731,-33.2472,-27.6471,-19.556 -libaom-v3.12.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,0.0647,0.2903,0.2899,0.1006,-0.0979,-0.2291,-3.7826,-4.8845,0.3502,-0.2944,0.056,0.301,0.3159,0.1059 -libaom-v3.12.0-unconstrained,AI,A1,Neon1224_3840x2160_2997fps.y4m,0.5272,-1.1252,-0.8555,0.3315,0.3195,0.2787,1.5007,1.0402,0.2523,-0.9558,0.5304,-1.1259,-0.8228,0.262 +v14.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-17.7485,-33.2641,-27.6733,-19.4085,-19.0745,-16.603,-21.4276,-20.3021,-17.5389,-23.9348,-17.7442,-33.2555,-27.6577,-19.5686 +v15.0.0,AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-17.7485,-33.2641,-27.6733,-19.4085,-19.0745,-16.603,-21.4276,-20.3021,-17.5389,-23.9348,-17.7442,-33.2555,-27.6577,-19.5686 v02.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-4.3304,-5.4165,-3.4953,-4.3467,-4.1359,-4.3653,-5.6707,-5.936,-4.2184,-6.6888,-4.3213,-5.3917,-3.4267,-4.2992 v03.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-7.1847,-6.1979,-3.6117,-6.8931,-5.9643,-6.9794,-8.1696,-8.6633,-6.7011,-9.4885,-7.1711,-6.1377,-3.4213,-6.6773 v04.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-10.2467,-13.3483,-11.5346,-10.543,-8.7168,-10.2092,-12.9179,-12.7897,-10.3253,-13.8844,-10.2276,-13.3153,-11.3752,-10.5723 @@ -55,8 +53,8 @@ v10.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-16.8909,-17.3118,-15.9146,-16.8635 v11.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-16.823,-17.2182,-15.4915,-16.7681,-14.7121,-15.9702,-23.7312,-22.6876,-16.4483,-19.4284,-16.8005,-17.1733,-15.2751,-16.6523 v12.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-16.8522,-17.2121,-15.5453,-16.7957,-14.6988,-15.9665,-23.8033,-22.7487,-16.4701,-19.3809,-16.8289,-17.1702,-15.3116,-16.6786 v13.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-16.9521,-17.9326,-16.4166,-16.9834,-18.1224,-16.0426,-24.0771,-22.9799,-16.6233,-20.1474,-16.9315,-17.8877,-16.2179,-16.9168 -libaom-v3.12.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-0.0419,-0.1667,-0.8676,-0.0591,-0.4523,-0.0132,-1.8048,-1.1184,-0.2181,-0.0724,-0.0424,-0.1661,-0.8655,-0.0119 -libaom-v3.12.0-unconstrained,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,0.5183,0.24,-3.4033,0.3637,0.328,0.6277,0.3434,0.2886,0.3854,-0.1402,0.5185,0.2432,-3.4012,0.323 +v14.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-16.9654,-17.946,-16.4298,-16.9967,-18.1332,-16.0547,-24.1068,-23.0032,-16.6352,-20.1604,-16.9448,-17.9011,-16.2309,-16.9301 +v15.0.0,AI,A1,Neon1224_3840x2160_2997fps.y4m,-16.9654,-17.946,-16.4298,-16.9967,-18.1332,-16.0547,-24.1068,-23.0032,-16.6352,-20.1604,-16.9448,-17.9011,-16.2309,-16.9301 v02.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-2.3857,-8.9289,-22.8992,-3.6022,-2.6897,-2.7144,-2.106,-2.3252,-3.0668,-9.0691,-2.3837,-8.9202,-22.9005,-4.2114 v03.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-5.334,-12.7267,-24.671,-6.5145,-4.408,-4.9398,-8.9905,-8.5615,-5.6799,-12.8168,-5.3311,-12.7167,-24.6738,-7.2259 v04.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-9.5361,-23.3978,-38.0997,-11.5146,-7.4687,-8.949,-11.684,-11.0559,-10.1789,-18.0522,-9.5337,-23.394,-38.1007,-13.1781 @@ -69,8 +67,8 @@ v10.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-18.4336,-44.418,-46.7421 v11.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-18.4199,-45.4964,-49.1739,-21.3383,-16.027,-17.41,-23.7937,-22.9821,-19.7837,-31.5619,-18.4171,-45.4983,-49.1851,-24.1542 v12.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-18.3791,-45.5089,-49.1089,-21.301,-16.0659,-17.2879,-23.9603,-23.107,-19.7216,-31.3338,-18.3772,-45.5101,-49.121,-24.0991 v13.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-18.285,-45.5991,-49.0132,-21.2327,-20.1451,-17.2745,-23.9111,-23.0496,-19.6421,-31.326,-18.2829,-45.5982,-49.0232,-24.0648 -libaom-v3.12.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-0.3241,-0.5201,0.0691,-0.2716,-0.485,-0.4258,-2.4272,-9.9735,-1.0073,-0.1833,-0.3247,-0.5189,0.0638,-0.1793 -libaom-v3.12.0-unconstrained,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,0.639,-1.6208,-1.5767,0.4049,0.3155,0.6006,1.6194,1.2943,0.2452,-0.9094,0.6405,-1.6117,-1.5707,0.1988 +v14.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-18.3083,-45.6109,-49.0273,-21.2547,-20.1612,-17.2939,-23.942,-23.0799,-19.6606,-31.3438,-18.3061,-45.6101,-49.0372,-24.0859 +v15.0.0,AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-18.3083,-45.6109,-49.0273,-21.2547,-20.1612,-17.2939,-23.942,-23.0799,-19.6606,-31.3438,-18.3061,-45.6101,-49.0372,-24.0859 v02.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-2.7822,-7.8055,-10.8519,-3.5232,-2.9231,-2.924,-2.553,-2.8826,-3.0654,-7.1452,-2.7834,-7.8019,-10.8521,-4.0393 v03.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-4.6448,-9.2755,-12.5038,-5.3206,-4.3276,-4.3583,-4.2771,-4.4836,-4.4716,-9.5962,-4.6381,-9.2548,-12.51,-5.8201 v04.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-8.483,-17.9698,-23.6587,-9.8372,-7.3466,-8.1501,-7.9826,-7.8901,-8.5875,-15.8224,-8.4786,-17.9694,-23.6688,-10.974 @@ -83,8 +81,8 @@ v10.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-15.9282,-22.7759,- v11.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-15.893,-25.0541,-30.5557,-17.2223,-12.6579,-14.5475,-17.858,-16.8233,-15.5054,-24.5755,-15.8823,-25.0518,-30.5595,-18.2369 v12.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-15.9735,-25.2131,-30.5682,-17.3022,-12.7893,-14.6297,-18.1361,-17.0054,-15.5959,-24.7266,-15.9682,-25.2142,-30.5791,-18.3204 v13.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-15.881,-26.7528,-31.0971,-17.3486,-17.6557,-14.4775,-18.1897,-17.1116,-15.6973,-25.9239,-15.8767,-26.7286,-31.0901,-18.4569 -libaom-v3.12.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,8.4159,-3.8354,-1.9869,7.9293,-0.4835,3.8738,-17.1355,-12.0852,3.0817,5.5497,8.4111,-3.8368,-1.9628,8.2049 -libaom-v3.12.0-unconstrained,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,2.9095,-4.4531,-2.8952,1.9647,0.3708,1.9961,-0.1346,-0.0025,1.1522,0.0903,2.9088,-4.4547,-2.8926,2.1971 +v14.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-15.905,-26.774,-31.1178,-17.3723,-17.6783,-14.5006,-18.2235,-17.1445,-15.7171,-25.9472,-15.9007,-26.7498,-31.1109,-18.4806 +v15.0.0,AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-15.905,-26.774,-31.1178,-17.3723,-17.6783,-14.5006,-18.2235,-17.1445,-15.7171,-25.9472,-15.9007,-26.7498,-31.1109,-18.4806 v02.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-6.2322,-10.3019,-7.914,-6.7785,-5.5097,-5.8536,-7.9198,-7.3223,-5.7676,-7.7301,-6.2315,-10.2923,-7.9222,-6.5514 v03.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-9.8728,-16.4783,-12.2035,-10.6553,-7.6916,-9.0475,-9.6283,-9.3814,-9.1599,-12.5775,-9.8723,-16.4709,-12.2123,-10.4303 v04.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-13.0237,-24.3317,-21.0714,-14.6623,-10.5359,-12.3156,-13.3524,-12.5959,-12.8269,-17.825,-13.0227,-24.3221,-21.0863,-14.2768 @@ -97,8 +95,8 @@ v10.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-20.8568,-33.8462,-27.7082,- v11.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-20.5077,-35.1123,-27.0029,-22.1939,-17.6639,-19.5634,-24.3952,-23.2054,-20.4254,-25.6324,-20.5076,-35.1012,-27.0165,-21.772 v12.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-20.4896,-34.8622,-26.7847,-22.1404,-17.6122,-19.4734,-24.3523,-23.1565,-20.3645,-25.487,-20.4898,-34.8515,-26.8001,-21.7261 v13.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-21.1315,-37.0588,-29.6804,-23.0994,-20.1167,-20.0344,-25.2954,-24.0295,-21.0308,-27.3732,-21.1313,-37.045,-29.7057,-22.68 -libaom-v3.12.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,0.2742,-1.9119,-1.9013,0.0326,-0.5664,-0.036,-1.6333,-1.8249,-0.6679,-0.983,0.2867,-1.9133,-1.8963,0.0272 -libaom-v3.12.0-unconstrained,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,0.532,-2.0086,-2.7926,0.2235,0.6888,0.6889,0.3973,0.3136,0.1989,-1.1645,0.5352,-1.9929,-2.7967,0.2665 +v14.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-21.157,-37.0793,-29.6967,-23.1239,-20.1301,-20.0542,-25.3217,-24.0552,-21.0486,-27.395,-21.1568,-37.0654,-29.7219,-22.7047 +v15.0.0,AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-21.157,-37.0793,-29.6967,-23.1239,-20.1301,-20.0542,-25.3217,-24.0552,-21.0486,-27.395,-21.1568,-37.0654,-29.7219,-22.7047 v02.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-2.5062,-18.2036,-22.833,-4.6375,-2.0655,-2.1005,-3.0579,-3.0243,-2.9924,-10.2347,-2.4782,-18.2963,-22.6815,-4.0843 v03.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-4.0295,-19.9511,-25.7969,-6.2605,-2.5124,-3.1535,-4.0811,-4.1729,-4.2345,-12.4984,-4.0026,-20.0407,-25.7806,-5.6563 v04.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-7.0405,-25.7528,-32.2682,-9.6686,-4.2215,-5.7021,-8.3937,-7.7382,-6.9261,-16.7234,-7.0066,-25.8192,-32.3424,-9.0111 @@ -111,8 +109,8 @@ v10.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-15.4909,-41.9022,-40.05 v11.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-15.4122,-42.709,-41.7958,-18.7626,-12.4675,-13.2918,-19.713,-18.7198,-15.1321,-28.4144,-15.3918,-42.7938,-41.9028,-17.9689 v12.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-16.0752,-43.2899,-42.1645,-19.4039,-13.1163,-13.9376,-20.4176,-19.3987,-15.7867,-29.0443,-16.0574,-43.3736,-42.2743,-18.6207 v13.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-16.1653,-44.3231,-42.5371,-19.5797,-15.9904,-14.0795,-20.7628,-19.6828,-15.8904,-29.5599,-16.1432,-44.4033,-42.6547,-18.7628 -libaom-v3.12.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-0.0087,-0.6141,-0.428,-0.0407,0.1619,-0.0493,-1.5081,-1.0677,-0.2471,-0.1999,-0.0416,-0.6134,-0.439,-0.0261 -libaom-v3.12.0-unconstrained,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,0.5667,-3.503,-2.6144,0.3045,0.6616,0.551,0.4568,0.1595,0.3558,-0.6689,0.5475,-3.5025,-2.6087,0.3462 +v14.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-16.1772,-44.3316,-42.5481,-19.5915,-15.9985,-14.0892,-20.7806,-19.7006,-15.8998,-29.5707,-16.1553,-44.4119,-42.6657,-18.7748 +v15.0.0,AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-16.1772,-44.3316,-42.5481,-19.5915,-15.9985,-14.0892,-20.7806,-19.7006,-15.8998,-29.5707,-16.1553,-44.4119,-42.6657,-18.7748 v02.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-3.1965,-8.1848,-13.0456,-3.796,-2.6121,-2.979,-3.6296,-3.6831,-2.6221,-5.3654,-3.208,-8.1931,-13.0816,-3.7296 v03.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-5.0522,-13.0391,-19.6957,-5.9785,-3.5703,-4.3748,-5.4285,-5.1643,-4.1414,-8.7692,-5.0679,-13.0438,-19.7198,-5.7747 v04.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-7.1985,-17.4238,-26.4737,-8.423,-5.0883,-6.3042,-7.6982,-7.2782,-5.9976,-11.3508,-7.2146,-17.4314,-26.4993,-8.2705 @@ -125,8 +123,8 @@ v10.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.7536,-27.1749,-42.4912 v11.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.6187,-26.0611,-41.3696,-14.5335,-10.8053,-11.3461,-15.6399,-15.2052,-11.707,-18.0871,-12.6015,-26.0819,-41.4028,-14.1563 v12.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.5817,-25.982,-41.177,-14.4887,-10.7421,-11.2905,-15.6236,-15.2149,-11.6631,-18.0217,-12.5662,-26.0012,-41.2126,-14.1089 v13.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.635,-26.3215,-41.4652,-14.5487,-12.1817,-11.4566,-15.8077,-15.3166,-11.7391,-18.082,-12.6201,-26.3388,-41.4935,-14.1837 -libaom-v3.12.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-0.0232,-0.5398,-1.2608,-0.069,0.2507,-0.0736,-4.9778,-6.1162,-0.3426,0.1414,-0.0233,-0.5399,-1.2607,-0.0107 -libaom-v3.12.0-unconstrained,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,0.3581,-2.9759,-2.9853,0.1004,0.1982,0.0372,1.3794,0.298,0.1773,-0.6818,0.3581,-2.97,-2.985,0.1677 +v14.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.6579,-26.3311,-41.4857,-14.5709,-12.1963,-11.4742,-15.8414,-15.3505,-11.7531,-18.1008,-12.6428,-26.3486,-41.514,-14.2057 +v15.0.0,AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.6579,-26.3311,-41.4857,-14.5709,-12.1963,-11.4742,-15.8414,-15.3505,-11.7531,-18.1008,-12.6428,-26.3486,-41.514,-14.2057 v02.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-4.1227,-15.9597,-15.68,-5.1827,-4.0093,-4.7857,-3.9495,-3.9235,-2.9937,-9.2886,-4.1217,-15.9611,-15.6794,-5.1928 v03.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-6.8581,-17.0779,-16.6426,-7.7579,-5.2057,-6.4248,-6.3165,-6.0564,-5.4576,-11.6408,-6.8579,-17.0787,-16.6417,-7.8049 v04.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-9.1835,-29.9783,-28.6177,-11.1024,-7.1952,-8.649,-8.3486,-7.9539,-8.0447,-17.4221,-9.1833,-29.9788,-28.6128,-11.0583 @@ -139,8 +137,8 @@ v10.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.523,-37.3261,-38.3946,-16.86 v11.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4868,-36.366,-37.8045,-16.7516,-12.2729,-13.114,-16.0717,-15.5897,-13.4895,-23.9494,-14.4869,-36.3618,-37.7994,-16.7416 v12.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4932,-36.2384,-37.4172,-16.7298,-12.2041,-13.0503,-16.0022,-15.4929,-13.4778,-23.8847,-14.4931,-36.2357,-37.4107,-16.7246 v13.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4881,-36.3838,-37.3729,-16.7288,-14.0757,-13.1699,-16.2843,-15.7476,-13.453,-23.8823,-14.4881,-36.3811,-37.3647,-16.727 -libaom-v3.12.0,AI,A2,CrowdRun_1920x1080p50.y4m,1.1531,0.2086,0.4273,1.0821,1.4331,1.7707,-6.8652,0.4729,5.1612,1.1521,1.1527,0.2086,0.4274,1.0406 -libaom-v3.12.0-unconstrained,AI,A2,CrowdRun_1920x1080p50.y4m,1.09,-1.4632,-1.0439,0.88,0.9386,1.0502,0.0989,1.1208,2.0,0.2706,1.0902,-1.4624,-1.0428,0.8089 +v14.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4971,-36.3943,-37.3831,-16.7375,-14.0829,-13.1778,-16.3026,-15.7654,-13.4546,-23.8931,-14.497,-36.3916,-37.375,-16.7361 +v15.0.0,AI,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4971,-36.3943,-37.3831,-16.7375,-14.0829,-13.1778,-16.3026,-15.7654,-13.4546,-23.8931,-14.497,-36.3916,-37.375,-16.7361 v02.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-1.7719,-7.7986,-8.2637,-2.3352,-2.5318,-2.5039,-1.8382,-1.8929,-0.7814,-4.727,-1.7711,-7.8007,-8.2635,-2.4594 v03.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-3.8799,-11.6626,-9.6417,-4.5029,-3.589,-3.8851,-3.4996,-2.8873,-2.1477,-8.256,-3.8798,-11.6643,-9.6419,-4.5732 v04.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-6.1572,-16.651,-16.1092,-7.1006,-5.5843,-6.0973,-5.7418,-5.067,-4.3563,-11.3614,-6.1574,-16.6522,-16.1079,-7.322 @@ -153,8 +151,8 @@ v10.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-11.4119,-23.8988,-23.7399,-12.5714,-10. v11.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-11.378,-23.7725,-23.9643,-12.5489,-10.3153,-10.5884,-13.6451,-12.6703,-10.7327,-18.8802,-11.3764,-23.7732,-23.9618,-12.9296 v12.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-11.4153,-23.6855,-23.7723,-12.5666,-10.2832,-10.5877,-13.757,-12.7949,-10.7453,-18.8467,-11.4145,-23.6859,-23.7706,-12.9365 v13.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-11.3755,-24.024,-23.6602,-12.5433,-11.4728,-10.6604,-13.7101,-12.7537,-10.709,-19.1844,-11.3746,-24.0239,-23.6565,-12.9173 -libaom-v3.12.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-0.7959,12.1222,23.0246,0.2303,-2.6715,-4.5694,17.9937,16.9691,-3.349,3.3676,-0.7986,12.1261,23.0196,-0.0624 -libaom-v3.12.0-unconstrained,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,1.6451,8.9903,6.4418,2.0813,-1.0921,-0.7703,2.8739,2.7518,-0.8789,4.8772,1.6438,8.9898,6.4237,2.0038 +v14.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-11.385,-24.0313,-23.668,-12.5526,-11.4808,-10.6693,-13.7247,-12.772,-10.7179,-19.1932,-11.3841,-24.0312,-23.6642,-12.9266 +v15.0.0,AI,A2,CrowdRun_1920x1080p50.y4m,-11.385,-24.0313,-23.668,-12.5526,-11.4808,-10.6693,-13.7247,-12.772,-10.7179,-19.1932,-11.3841,-24.0312,-23.6642,-12.9266 v02.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-1.5677,-1.0933,-4.2228,-1.8652,-2.1592,-2.2953,-3.0158,-3.0275,-2.3106,-0.0512,-1.5692,-1.0943,-4.2914,-1.8952 v03.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-3.8571,-2.4082,-6.3903,-4.2113,-4.6535,-4.0578,-4.0394,-4.5291,-4.2301,-1.8078,-3.8598,-2.3963,-6.4478,-4.1974 v04.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-6.6453,-3.8263,-10.7633,-7.0086,-7.4541,-7.2405,-6.1062,-6.3288,-6.7967,-4.2054,-6.6469,-3.7888,-10.7897,-6.955 @@ -167,8 +165,8 @@ v10.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-14.3517,-16.64 v11.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-14.208,-16.4469,-24.3213,-15.2108,-17.0268,-14.0832,-19.7636,-19.5797,-14.8048,-15.1338,-14.2077,-16.4494,-24.37,-15.0569 v12.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-14.0719,-17.2542,-23.8439,-15.0907,-16.6512,-13.8494,-19.1997,-19.1146,-14.6411,-14.7818,-14.0717,-17.2569,-23.9027,-14.9702 v13.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-14.3507,-19.7563,-24.625,-15.5035,-11.1441,-14.1207,-20.1245,-20.1067,-15.1222,-15.7882,-14.3498,-19.77,-24.6765,-15.4489 -libaom-v3.12.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,2.4443,-1.4285,-1.053,2.1502,-0.6493,1.4185,-10.3589,-12.6372,-0.0518,0.8087,2.4443,-1.4285,-1.0529,2.0175 -libaom-v3.12.0-unconstrained,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,1.1331,-2.5505,-2.7272,0.7745,0.1573,0.7859,1.2074,-0.1192,0.2618,-0.5688,1.133,-2.553,-2.726,0.7557 +v14.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-14.4917,-19.8709,-24.8113,-15.6459,-11.1848,-14.229,-20.3143,-20.3068,-15.2479,-15.9356,-14.4908,-19.8851,-24.8632,-15.5909 +v15.0.0,AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-14.4917,-19.8709,-24.8113,-15.6459,-11.1848,-14.229,-20.3143,-20.3068,-15.2479,-15.9356,-14.4908,-19.8851,-24.8632,-15.5909 v02.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-4.0454,-9.0496,-9.9101,-4.594,-3.618,-3.9805,-4.5632,-4.4858,-3.6483,-7.2462,-4.0452,-9.0411,-9.9099,-4.5601 v03.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-6.4142,-11.5639,-14.2634,-7.0754,-5.0815,-5.7882,-5.5474,-5.4994,-5.7596,-9.4481,-6.415,-11.5436,-14.246,-7.019 v04.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-9.2491,-16.7673,-19.1023,-10.1445,-7.3457,-8.2777,-9.2797,-8.7989,-8.2985,-12.8153,-9.2497,-16.7593,-19.0663,-10.092 @@ -181,8 +179,8 @@ v10.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-15.4479,-34.9555,-22.2243 v11.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-15.3402,-35.0061,-22.1487,-16.7182,-13.1135,-13.7043,-18.537,-17.3285,-14.3945,-21.4111,-15.3414,-35.0034,-22.1228,-16.611 v12.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-15.3123,-34.6905,-22.2297,-16.6792,-12.9649,-13.5723,-18.5588,-17.4145,-14.3369,-21.242,-15.3127,-34.6811,-22.2206,-16.572 v13.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-15.3678,-35.4744,-22.2382,-16.7729,-15.2618,-13.7434,-18.6617,-17.4457,-14.4093,-21.5769,-15.3693,-35.4633,-22.228,-16.6622 -libaom-v3.12.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,0.0268,-1.3371,-0.9924,-0.0993,-0.0608,0.0618,0.0579,-0.5431,-0.3558,-0.5654,0.0289,-1.3113,-0.9819,-0.105 -libaom-v3.12.0-unconstrained,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,0.3716,-3.2303,-2.0658,0.0409,0.6766,0.6129,-0.1042,1.4659,0.1379,-1.0909,0.3763,-3.2282,-2.0856,0.0999 +v14.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-15.4118,-35.5154,-22.2865,-16.8171,-15.2892,-13.7772,-18.719,-17.5012,-14.4413,-21.622,-15.4133,-35.5044,-22.2763,-16.7067 +v15.0.0,AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-15.4118,-35.5154,-22.2865,-16.8171,-15.2892,-13.7772,-18.719,-17.5012,-14.4413,-21.622,-15.4133,-35.5044,-22.2763,-16.7067 v02.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-5.5231,-13.953,-12.9213,-6.3987,-4.2813,-5.112,-5.0919,-4.905,-5.156,-9.9366,-5.472,-13.8336,-12.8732,-6.1981 v03.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-7.989,-17.9567,-14.4522,-8.9035,-5.4915,-6.7905,-6.7867,-6.6222,-7.1907,-12.7944,-7.9309,-17.8128,-14.3977,-8.6683 v04.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-10.5477,-22.6049,-19.9937,-11.7662,-7.4542,-9.0145,-9.3018,-9.003,-9.5164,-16.6481,-10.4711,-22.484,-19.8797,-11.4708 @@ -195,8 +193,8 @@ v10.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-16.6173,-30.9 v11.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-16.5749,-30.5346,-24.4937,-17.8269,-13.9733,-15.0458,-20.3838,-19.8913,-15.6501,-23.3156,-16.4337,-30.436,-24.3377,-17.4451 v12.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-16.5821,-30.6308,-24.3976,-17.8346,-13.9563,-15.0241,-20.1147,-19.6535,-15.6571,-23.3188,-16.4419,-30.5009,-24.2593,-17.4513 v13.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-16.6455,-30.9659,-24.3373,-17.9098,-17.0899,-15.1316,-20.3263,-19.7881,-15.6855,-23.3188,-16.5049,-30.8457,-24.2199,-17.5252 -libaom-v3.12.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,0.3421,-2.7617,-4.5708,-0.1163,-1.6427,0.0106,-5.5058,-5.2359,-1.5081,-0.6828,0.3416,-2.7622,-4.574,0.017 -libaom-v3.12.0-unconstrained,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,0.5472,-3.5134,-4.258,-0.0462,0.2371,0.8576,-0.0995,-0.161,-0.278,-2.0865,0.5469,-3.5119,-4.2558,0.0558 +v14.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-16.6656,-30.9814,-24.3531,-17.9291,-17.1074,-15.1525,-20.3576,-19.8249,-15.7053,-23.3372,-16.525,-30.8618,-24.2367,-17.5448 +v15.0.0,AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-16.6656,-30.9814,-24.3531,-17.9291,-17.1074,-15.1525,-20.3576,-19.8249,-15.7053,-23.3372,-16.525,-30.8618,-24.2367,-17.5448 v02.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-7.4711,-17.1457,-17.4978,-8.8161,-6.929,-7.1566,-7.2098,-7.286,-8.1236,-14.7692,-7.4715,-17.1242,-17.4704,-8.5848 v03.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-11.5242,-23.2219,-26.193,-13.3819,-9.6624,-10.245,-10.2276,-10.366,-11.9699,-20.177,-11.5246,-23.2031,-26.1889,-13.0269 v04.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-15.1351,-27.7844,-32.0904,-17.2429,-12.9452,-13.6656,-13.3114,-13.3614,-15.589,-23.817,-15.1352,-27.7652,-32.0774,-16.8022 @@ -209,8 +207,8 @@ v10.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.0535,-43.1596,-43.6 v11.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-24.8156,-45.8693,-45.6325,-27.8374,-22.2319,-22.6303,-26.932,-26.0097,-25.6714,-38.1733,-24.8132,-45.8569,-45.617,-27.2117 v12.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.236,-46.1413,-45.645,-28.2146,-22.5504,-22.992,-27.5652,-26.4903,-26.0491,-38.5395,-25.2352,-46.137,-45.6215,-27.6089 v13.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.7433,-48.2213,-46.05,-28.7898,-27.2596,-23.4547,-28.0393,-27.0766,-26.486,-40.042,-25.7432,-48.1991,-46.0197,-28.1883 -libaom-v3.12.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,0.6507,0.7212,0.9873,0.6746,-0.4616,-0.6028,-3.9435,-2.5321,3.1887,2.0136,0.6496,0.7178,0.983,0.7254 -libaom-v3.12.0-unconstrained,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,0.8004,-1.4658,-1.8609,0.5849,-0.2878,-0.2929,-0.6262,0.1945,0.8793,0.4073,0.8002,-1.4663,-1.8585,0.6174 +v14.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.8543,-48.3107,-46.1255,-28.8963,-27.34,-23.5499,-28.1664,-27.201,-26.5756,-40.1403,-25.8541,-48.2886,-46.0953,-28.2965 +v15.0.0,AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.8543,-48.3107,-46.1255,-28.8963,-27.34,-23.5499,-28.1664,-27.201,-26.5756,-40.1403,-25.8541,-48.2886,-46.0953,-28.2965 v02.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-3.7545,-11.0618,-14.1128,-4.5637,-5.7263,-5.8635,-4.7968,-4.5923,-4.4318,-7.1724,-3.7543,-11.0478,-14.1027,-4.3861 v03.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-6.4444,-13.968,-16.2101,-7.2364,-7.0904,-7.853,-5.9658,-5.6394,-6.1534,-9.8617,-6.4436,-13.9571,-16.2057,-7.0906 v04.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-9.2558,-18.3389,-22.9901,-10.3141,-10.1527,-10.9349,-9.8184,-9.1851,-9.273,-13.8157,-9.2551,-18.3326,-22.9841,-10.1109 @@ -223,8 +221,8 @@ v10.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-15.5218,-26.3122,-28.6653,-16 v11.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-15.5012,-26.034,-28.3792,-16.6257,-15.3739,-16.1793,-20.1628,-19.301,-16.0608,-21.5034,-15.5023,-26.0339,-28.3697,-16.4588 v12.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-15.5016,-25.7532,-28.2777,-16.6039,-15.3876,-16.1773,-20.189,-19.3854,-16.078,-21.4001,-15.5021,-25.7507,-28.2675,-16.4416 v13.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-15.5076,-26.1103,-28.0843,-16.6216,-17.993,-16.2642,-20.386,-19.4778,-16.0798,-21.5173,-15.5075,-26.1092,-28.0773,-16.456 -libaom-v3.12.0,AI,A2,OldTownCross_1920x1080p50.y4m,3.8448,11.5022,9.5034,4.5376,4.534,-3.0882,-2.5353,-2.01,12.3619,11.2497,3.8444,11.5022,9.5038,5.5002 -libaom-v3.12.0-unconstrained,AI,A2,OldTownCross_1920x1080p50.y4m,2.4772,6.0677,2.9779,2.6856,2.7922,0.8411,0.2157,0.1538,5.0645,6.557,2.4767,6.0686,2.9746,2.8603 +v14.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-15.5184,-26.1196,-28.0951,-16.6326,-18.0028,-16.2753,-20.41,-19.4997,-16.0919,-21.5293,-15.5184,-26.1185,-28.0881,-16.4673 +v15.0.0,AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-15.5184,-26.1196,-28.0951,-16.6326,-18.0028,-16.2753,-20.41,-19.4997,-16.0919,-21.5293,-15.5184,-26.1185,-28.0881,-16.4673 v02.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-1.1765,-19.6958,-14.0662,-2.2824,-1.044,-1.0688,-1.4865,-1.4957,0.1871,-5.9878,-1.1765,-19.6963,-14.0727,-2.3255 v03.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-2.4084,-23.9138,-16.5863,-3.6742,-2.2455,-2.2671,-2.6376,-2.3647,-0.9698,-7.8082,-2.408,-23.9169,-16.5923,-3.6858 v04.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-5.0446,-29.0226,-20.8443,-6.4517,-4.6681,-5.0331,-4.9224,-4.4963,-3.5222,-11.6367,-5.045,-29.0177,-20.8476,-6.541 @@ -237,8 +235,8 @@ v10.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-13.4922,-39.3572,-36.4146,-15.3555, v11.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-13.4724,-40.2068,-36.7051,-15.4192,-12.5624,-12.118,-14.4878,-13.6063,-13.9595,-25.6202,-13.472,-40.2095,-36.7073,-15.4658 v12.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-13.637,-40.6916,-36.6516,-15.5814,-12.6837,-12.2154,-14.9198,-14.0123,-14.1053,-25.8283,-13.6363,-40.6937,-36.6518,-15.6315 v13.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-13.5724,-39.7008,-36.6681,-15.4684,-13.2443,-12.3156,-14.8966,-14.0277,-14.0758,-25.3639,-13.5721,-39.7033,-36.6672,-15.5548 -libaom-v3.12.0,AI,A2,PedestrianArea_1920x1080p25.y4m,3.8011,5.5483,8.9455,4.2791,0.2657,0.3746,-4.8604,-3.3411,7.0157,25.657,3.7777,5.53,8.8761,4.2727 -libaom-v3.12.0-unconstrained,AI,A2,PedestrianArea_1920x1080p25.y4m,2.0232,1.2282,2.9656,2.0392,0.7421,0.7446,0.3551,1.046,2.9153,9.1927,2.0127,1.212,2.9236,2.0053 +v14.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-13.6001,-39.7219,-36.6847,-15.4957,-13.2654,-12.3451,-14.9471,-14.0784,-14.0996,-25.3944,-13.5998,-39.7244,-36.6838,-15.5839 +v15.0.0,AI,A2,OldTownCross_1920x1080p50.y4m,-13.6001,-39.7219,-36.6847,-15.4957,-13.2654,-12.3451,-14.9471,-14.0784,-14.0996,-25.3944,-13.5998,-39.7244,-36.6838,-15.5839 v02.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-3.0935,-6.0402,-4.3292,-3.3504,-3.3201,-3.9876,-5.3201,-5.0682,-1.426,0.7232,-3.1088,-6.0751,-4.3802,-3.4585 v03.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-5.3397,-7.7224,-6.8594,-5.5944,-5.0128,-5.9501,-6.3757,-6.1943,-3.4217,-3.5125,-5.3568,-7.7535,-6.9184,-5.6962 v04.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-8.8691,-16.4285,-14.6611,-9.705,-8.2803,-9.5434,-10.2095,-9.7804,-7.1386,-8.2496,-8.8839,-16.4789,-14.7185,-9.9596 @@ -251,8 +249,8 @@ v10.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-17.6913,-29.3991,-23.3368,-18.759 v11.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-17.4768,-29.8313,-23.4834,-18.6007,-15.9049,-16.909,-19.4221,-19.0538,-16.8553,-22.8412,-17.4853,-29.8821,-23.5238,-18.9211 v12.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-17.4091,-29.6195,-23.4737,-18.527,-15.662,-16.7023,-19.6942,-19.2579,-16.7597,-22.8607,-17.4186,-29.6559,-23.5013,-18.8432 v13.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-17.5014,-29.6559,-23.4707,-18.6106,-19.983,-16.7991,-19.7607,-19.2469,-16.8298,-23.1606,-17.509,-29.6718,-23.5046,-18.9293 -libaom-v3.12.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-0.4512,-0.8599,-0.9522,-0.4992,-0.1675,-0.3392,-3.3255,-3.8133,-0.6169,-0.9233,-0.4385,-0.8341,-0.9286,-0.5114 -libaom-v3.12.0-unconstrained,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,0.2303,-1.7485,-1.809,0.0199,0.4661,0.4399,0.5512,0.2933,0.0095,-2.1724,0.2388,-1.6934,-1.744,-0.0467 +v14.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-17.5624,-29.711,-23.5236,-18.6708,-20.0345,-16.8544,-19.8434,-19.3255,-16.879,-23.2181,-17.57,-29.7267,-23.5574,-18.9893 +v15.0.0,AI,A2,PedestrianArea_1920x1080p25.y4m,-17.5624,-29.711,-23.5236,-18.6708,-20.0345,-16.8544,-19.8434,-19.3255,-16.879,-23.2181,-17.57,-29.7267,-23.5574,-18.9893 v02.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-5.5969,-13.8133,-10.126,-6.2579,-5.4102,-5.7176,-5.649,-5.7117,-5.5733,-7.217,-5.5662,-13.8755,-10.1235,-6.3979 v03.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-8.713,-16.6061,-16.3531,-9.5486,-7.6531,-8.2525,-7.2926,-7.7182,-8.2259,-12.5118,-8.6777,-16.6816,-16.5318,-9.7197 v04.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-12.3302,-21.8952,-22.4438,-13.4074,-10.9349,-11.6459,-12.3559,-12.1253,-11.8412,-17.2593,-12.2807,-22.0011,-22.5634,-13.7083 @@ -265,8 +263,8 @@ v10.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-20.9916,-38.888,-34.0333 v11.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-20.8769,-38.9127,-34.4813,-22.6784,-18.4813,-19.2272,-24.8455,-23.6275,-20.0348,-29.2611,-20.8357,-39.0312,-34.6863,-23.1467 v12.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-20.7439,-38.9206,-33.6242,-22.5084,-18.2805,-19.0213,-24.628,-23.4804,-19.8802,-28.924,-20.7153,-39.0279,-33.7861,-22.9716 v13.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-20.7162,-38.7242,-33.4001,-22.448,-22.6213,-18.9716,-24.9169,-23.5937,-19.83,-28.2458,-20.6752,-38.8685,-33.5711,-22.9157 -libaom-v3.12.0,AI,A2,Riverbed_1920x1080p25.y4m,2.1125,1.6598,1.7492,2.1617,0.3739,0.4796,-2.9751,-3.4693,4.3403,4.9018,2.1126,1.6578,1.7514,2.174 -libaom-v3.12.0-unconstrained,AI,A2,Riverbed_1920x1080p25.y4m,1.0094,0.1245,0.6575,0.9773,0.4496,0.3268,2.1277,0.8787,1.8268,3.3752,1.0093,0.1247,0.6542,0.9795 +v14.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-20.7689,-38.7652,-33.4424,-22.4995,-22.6685,-19.0231,-24.9946,-23.6698,-19.8788,-28.295,-20.7281,-38.9095,-33.6131,-22.9675 +v15.0.0,AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-20.7689,-38.7652,-33.4424,-22.4995,-22.6685,-19.0231,-24.9946,-23.6698,-19.8788,-28.295,-20.7281,-38.9095,-33.6131,-22.9675 v02.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-4.18,-8.7954,-20.3428,-5.0847,-3.0253,-4.0723,-5.4889,-5.0754,-2.2335,-4.6081,-4.1795,-8.7959,-20.3532,-4.8828 v03.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-6.0255,-13.535,-24.7779,-7.1941,-4.0259,-5.5506,-6.6206,-6.009,-4.0041,-8.0318,-6.0261,-13.534,-24.7874,-6.9275 v04.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-8.2558,-19.3246,-34.0261,-9.9417,-5.6936,-7.613,-9.1019,-8.2646,-6.0759,-11.6514,-8.2558,-19.3227,-34.0304,-9.6279 @@ -279,8 +277,8 @@ v10.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-15.0193,-23.6049,-43.8854,-16.7523,-12. v11.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-14.8729,-23.5858,-42.5503,-16.5657,-12.576,-13.5335,-15.9013,-15.1699,-14.13,-19.1873,-14.8728,-23.5882,-42.5442,-16.212 v12.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-14.8952,-23.3244,-42.2182,-16.5492,-12.5438,-13.5031,-16.0489,-15.2921,-14.1245,-19.08,-14.8949,-23.3244,-42.2133,-16.2095 v13.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-15.1106,-23.8502,-42.4426,-16.7759,-15.5244,-13.7408,-16.4056,-15.5586,-14.2979,-19.3639,-15.1105,-23.8521,-42.4405,-16.4489 -libaom-v3.12.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-0.0512,3.0749,3.7985,0.2874,-0.4523,-2.3679,-6.7148,-1.1947,3.9433,3.0211,-0.0568,3.0799,3.8008,0.5732 -libaom-v3.12.0-unconstrained,AI,A2,RushFieldCuts_1920x1080_2997.y4m,0.5565,0.3498,0.957,0.5653,0.1096,-0.5771,0.3371,0.1629,1.6953,2.2332,0.5569,0.3524,0.9603,0.6719 +v14.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-15.139,-23.8702,-42.4555,-16.8033,-15.5464,-13.7669,-16.4476,-15.5995,-14.3207,-19.3908,-15.1389,-23.872,-42.4535,-16.477 +v15.0.0,AI,A2,Riverbed_1920x1080p25.y4m,-15.139,-23.8702,-42.4555,-16.8033,-15.5464,-13.7669,-16.4476,-15.5995,-14.3207,-19.3908,-15.1389,-23.872,-42.4535,-16.477 v02.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-1.4102,-5.7373,-9.7354,-2.0089,-2.0835,-2.0887,-1.7338,-1.801,-0.7749,-2.761,-1.4115,-5.7383,-9.7398,-1.8751 v03.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-2.6556,-8.8771,-10.8072,-3.3496,-3.2817,-3.2476,-4.8323,-3.8307,-1.9485,-5.7842,-2.6576,-8.882,-10.8117,-3.1928 v04.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-4.6877,-14.3672,-14.9357,-5.631,-5.411,-5.4774,-6.6562,-5.7732,-4.148,-9.1151,-4.6896,-14.3684,-14.9382,-5.476 @@ -293,8 +291,8 @@ v10.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-9.9695,-25.8337,-20.2944,-11.275 v11.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-9.8743,-25.5917,-20.5588,-11.1864,-10.1335,-9.7576,-12.5244,-12.122,-10.5018,-18.4493,-9.8776,-25.5906,-20.5622,-11.1924 v12.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-9.9188,-25.511,-20.4272,-11.2144,-10.1816,-9.8108,-12.6599,-12.2302,-10.5541,-18.5137,-9.922,-25.5105,-20.4297,-11.2258 v13.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-9.8568,-25.9784,-20.8109,-11.2048,-9.5439,-9.8716,-12.6674,-12.2551,-10.5099,-18.5878,-9.86,-25.9793,-20.8143,-11.2049 -libaom-v3.12.0,AI,A2,Skater227_1920x1080_30fps.y4m,-0.5765,-1.8784,-1.908,-0.7675,0.1021,-0.168,-6.861,-7.3038,-0.559,-2.0846,-0.6098,-1.8737,-1.851,-0.7486 -libaom-v3.12.0-unconstrained,AI,A2,Skater227_1920x1080_30fps.y4m,0.13,-2.637,-2.8366,-0.2961,0.8764,0.7171,1.2,0.528,-0.0799,-2.3234,0.1047,-2.644,-2.8499,-0.281 +v14.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-9.8699,-25.9893,-20.822,-11.2176,-9.5538,-9.8836,-12.6892,-12.276,-10.5221,-18.5998,-9.8732,-25.9902,-20.8255,-11.2179 +v15.0.0,AI,A2,RushFieldCuts_1920x1080_2997.y4m,-9.8699,-25.9893,-20.822,-11.2176,-9.5538,-9.8836,-12.6892,-12.276,-10.5221,-18.5998,-9.8732,-25.9902,-20.8255,-11.2179 v02.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-7.0483,-6.7064,-11.379,-7.3391,-5.9377,-6.528,-8.7517,-8.7125,-7.0078,-8.8512,-7.2349,-6.7679,-11.5145,-7.4781 v03.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-10.7438,-8.5502,-15.0677,-10.8991,-9.1884,-9.9587,-9.3864,-10.1415,-10.3447,-12.4657,-10.865,-8.5877,-15.1225,-10.9771 v04.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-13.1648,-15.4646,-20.5479,-13.8903,-11.1922,-12.1516,-12.6578,-12.8827,-12.891,-15.6635,-13.295,-15.5641,-20.6098,-13.8535 @@ -307,8 +305,8 @@ v10.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-21.3922,-22.6126,-25.1583,-21.7592, v11.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-21.2413,-23.5848,-27.0782,-21.8883,-20.0849,-20.7266,-23.0092,-22.9562,-21.2858,-24.7669,-21.3368,-23.5629,-27.1392,-21.9792 v12.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-21.0616,-24.0152,-26.6743,-21.736,-19.8463,-20.5108,-22.6789,-22.6572,-21.1051,-24.5757,-21.1495,-24.0248,-26.7544,-21.8277 v13.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-21.5045,-25.4568,-27.6217,-22.2871,-27.5699,-20.8943,-23.5939,-23.3568,-21.617,-24.8449,-21.6082,-25.439,-27.7253,-22.3867 -libaom-v3.12.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-0.2883,-0.2894,-0.9115,-0.3044,-0.289,-0.4194,-4.0622,-3.5193,-0.7,-0.4681,-0.2883,-0.2879,-0.9084,-0.2752 -libaom-v3.12.0-unconstrained,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,0.291,-0.1942,-0.9726,0.2537,-0.0241,0.0296,3.9526,1.7502,0.1083,0.1599,0.2911,-0.196,-0.9743,0.2719 +v14.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-21.6677,-25.6071,-27.7607,-22.4475,-27.6955,-21.0384,-23.8127,-23.5685,-21.7612,-25.0006,-21.7693,-25.5896,-27.8638,-22.5456 +v15.0.0,AI,A2,Skater227_1920x1080_30fps.y4m,-21.6677,-25.6071,-27.7607,-22.4475,-27.6955,-21.0384,-23.8127,-23.5685,-21.7612,-25.0006,-21.7693,-25.5896,-27.8638,-22.5456 v02.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-2.2538,-38.7356,-47.5418,-5.4442,-2.2568,-2.2982,-2.397,-2.2802,-3.5279,-12.5301,-2.2529,-38.7414,-47.5467,-4.1361 v03.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-3.778,-44.5677,-51.8792,-7.3464,-2.5642,-3.2411,-3.5604,-2.9817,-4.2903,-16.8458,-3.7778,-44.5319,-51.8777,-5.7766 v04.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-6.0643,-47.706,-55.865,-9.8081,-4.592,-5.5527,-5.6529,-5.1571,-6.3645,-20.2348,-6.0644,-47.6496,-55.8643,-8.2936 @@ -321,8 +319,8 @@ v10.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-1 v11.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-11.635,-55.8032,-74.4755,-16.5723,-9.7877,-10.4565,-14.0446,-13.5031,-12.4728,-30.2718,-11.6345,-55.7625,-74.452,-14.7354 v12.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-11.6229,-55.6925,-74.3854,-16.5456,-9.7437,-10.4063,-14.0768,-13.5018,-12.4357,-30.1423,-11.6222,-55.6665,-74.3728,-14.7138 v13.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-11.6186,-55.4932,-74.4889,-16.5289,-11.6637,-10.5135,-14.1793,-13.6287,-12.4952,-30.2485,-11.6187,-55.4803,-74.4666,-14.7169 -libaom-v3.12.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,0.2978,-0.3756,0.1041,0.2676,-0.0845,-0.3775,-4.3682,-2.574,3.416,0.7283,0.2992,-0.3861,0.0885,0.2919 -libaom-v3.12.0-unconstrained,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,0.2595,-0.5915,-1.1368,0.1964,0.1382,-0.0945,-3.6914,-2.2972,0.992,0.2474,0.2692,-0.6309,-1.1421,0.2041 +v14.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-11.6456,-55.5161,-74.4994,-16.5552,-11.681,-10.536,-14.2375,-13.6862,-12.5174,-30.2757,-11.6456,-55.5032,-74.4771,-14.7444 +v15.0.0,AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-11.6456,-55.5161,-74.4994,-16.5552,-11.681,-10.536,-14.2375,-13.6862,-12.5174,-30.2757,-11.6456,-55.5032,-74.4771,-14.7444 v02.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-0.9305,-10.6189,-27.2626,-2.3119,-1.2605,-1.3181,-4.3056,-4.0383,-0.544,-2.9859,-0.9118,-10.5981,-27.3024,-1.4034 v03.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-2.4327,-14.1933,-29.0196,-3.9347,-2.4139,-2.1489,-6.1997,-5.3247,-1.8776,-4.5703,-2.4201,-14.2258,-29.0512,-3.0106 v04.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-4.8828,-17.575,-35.1011,-6.5891,-4.2159,-4.3169,-9.4445,-8.3555,-4.075,-7.5209,-4.8698,-17.5023,-35.1216,-5.5345 @@ -335,8 +333,8 @@ v10.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-9.002,-23.9077,-40.5208,-1 v11.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-8.8445,-23.9012,-40.8331,-10.8421,-9.4609,-9.1501,-17.8033,-16.9824,-10.0589,-12.7083,-8.8288,-23.7323,-40.8425,-9.5969 v12.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-8.8813,-23.9167,-40.3364,-10.863,-9.3628,-9.0158,-18.2355,-17.325,-10.018,-12.7327,-8.8667,-23.7529,-40.3331,-9.6349 v13.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-8.9336,-23.8614,-40.0551,-10.9228,-9.2566,-9.2017,-18.2958,-17.3058,-10.1054,-12.7931,-8.9239,-23.7059,-40.0465,-9.7028 -libaom-v3.12.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-0.0717,-1.5872,-0.1894,-0.1654,-0.0502,0.0144,-4.1279,-3.1277,-0.2704,-0.7089,-0.0722,-1.5871,-0.1891,-0.2198 -libaom-v3.12.0-unconstrained,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-0.001,-1.5502,-2.0416,-0.1788,0.0973,0.3176,2.2872,4.0999,-0.1808,-0.838,0.0002,-1.5485,-2.0561,-0.1767 +v14.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-8.941,-23.8656,-40.0614,-10.9302,-9.2636,-9.2107,-18.3189,-17.3256,-10.112,-12.8015,-8.9313,-23.7102,-40.0531,-9.7105 +v15.0.0,AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-8.941,-23.8656,-40.0614,-10.9302,-9.2636,-9.2107,-18.3189,-17.3256,-10.112,-12.8015,-8.9313,-23.7102,-40.0531,-9.7105 v02.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-8.0686,-19.3899,-27.2698,-9.7139,-5.5074,-6.3997,-11.0501,-9.4965,-7.6363,-12.6329,-8.0658,-19.4013,-27.3268,-9.3044 v03.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-13.6625,-23.3098,-32.896,-15.2968,-8.7056,-10.6197,-18.7598,-16.2709,-12.0082,-17.8352,-13.6606,-23.3096,-32.9383,-14.8393 v04.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-18.8878,-32.2195,-58.7846,-22.1482,-14.1315,-16.3121,-22.971,-20.5926,-17.5402,-24.346,-18.8861,-32.1976,-58.7745,-20.9188 @@ -349,8 +347,8 @@ v10.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-30.6789,-69.8613,-73.7882 v11.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-30.9214,-69.9888,-73.7316,-36.2267,-25.1056,-27.1099,-36.1535,-33.8256,-30.0797,-46.9034,-30.9205,-69.945,-73.6683,-34.5563 v12.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-31.3506,-70.2593,-73.2479,-36.5715,-24.8368,-26.8222,-36.6114,-34.4133,-30.2743,-47.124,-31.3477,-70.2153,-73.2037,-34.9506 v13.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-31.4172,-70.2203,-73.2517,-36.6258,-30.3769,-27.0076,-36.8071,-34.5092,-30.3748,-47.1835,-31.4149,-70.1828,-73.2118,-35.0125 -libaom-v3.12.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,2.0302,3.3613,5.8898,2.2924,0.2085,-0.2028,-2.235,-2.6651,5.6188,6.5013,2.0292,3.3564,5.8703,2.4219 -libaom-v3.12.0-unconstrained,AI,A2,Vertical_bees_1080x1920_2997.y4m,1.2481,0.0515,1.3249,1.182,0.9458,0.5741,1.0614,0.7014,2.0793,2.5475,1.2456,0.0503,1.3096,1.163 +v14.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-31.4354,-70.2295,-73.2594,-36.6429,-30.3956,-27.0286,-36.834,-34.5388,-30.3977,-47.1981,-31.433,-70.192,-73.2196,-35.0301 +v15.0.0,AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-31.4354,-70.2295,-73.2594,-36.6429,-30.3956,-27.0286,-36.834,-34.5388,-30.3977,-47.1981,-31.433,-70.192,-73.2196,-35.0301 v02.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-5.9,-7.6858,-8.3383,-6.1156,-4.2806,-5.5093,-5.9024,-5.9922,-4.4283,-4.8918,-5.9029,-7.679,-8.3646,-6.1747 v03.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-8.7655,-10.0773,-9.3513,-8.8655,-6.5706,-8.1295,-7.3992,-7.4498,-6.8358,-7.5917,-8.7682,-10.0719,-9.1922,-8.9307 v04.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-10.8528,-12.2284,-14.0925,-11.0903,-8.1457,-9.9189,-10.0804,-9.7453,-8.8149,-10.035,-10.8558,-12.2244,-14.0645,-11.1589 @@ -363,8 +361,8 @@ v10.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-18.4223,-18.7896,-18.331,-18.446 v11.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-18.4236,-19.0985,-18.2044,-18.4604,-14.8438,-16.2143,-18.8174,-18.501,-16.4991,-18.6711,-18.4255,-19.0917,-17.9374,-18.5106 v12.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-18.4245,-18.9678,-18.1446,-18.4513,-14.9512,-16.2645,-18.9149,-18.6203,-16.5218,-18.7477,-18.4254,-18.9624,-17.9018,-18.4981 v13.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-18.4745,-19.6272,-18.5073,-18.5497,-19.6744,-16.274,-19.077,-18.7547,-16.5844,-19.2429,-18.4758,-19.6242,-18.2402,-18.6212 -libaom-v3.12.0,AI,A2,WorldCup_1920x1080_30p.y4m,3.3226,11.3335,10.3299,4.0644,-0.2168,-0.378,-6.2893,-6.0575,6.7287,20.7128,3.3108,11.3098,10.3077,4.3262 -libaom-v3.12.0-unconstrained,AI,A2,WorldCup_1920x1080_30p.y4m,1.7482,3.7336,2.666,1.9179,0.1878,0.1548,0.7736,0.3407,2.5236,6.824,1.741,3.7172,2.6574,1.9836 +v14.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-18.5004,-19.6506,-18.5323,-18.5756,-19.6966,-16.2974,-19.1159,-18.7932,-16.6065,-19.2691,-18.5017,-19.6476,-18.265,-18.6471 +v15.0.0,AI,A2,Vertical_bees_1080x1920_2997.y4m,-18.5004,-19.6506,-18.5323,-18.5756,-19.6966,-16.2974,-19.1159,-18.7932,-16.6065,-19.2691,-18.5017,-19.6476,-18.265,-18.6471 v02.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-5.0339,-8.1247,-9.5297,-5.4219,-6.5242,-6.8661,-6.092,-6.1359,-4.5633,-3.6484,-5.0266,-8.148,-9.5507,-5.3717 v03.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-7.9872,-10.7943,-12.4915,-8.3532,-8.5277,-9.1655,-6.5944,-7.1058,-7.1575,-6.9885,-7.9883,-10.7954,-12.5055,-8.2773 v04.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-12.4951,-17.0836,-18.4298,-13.0562,-12.3487,-13.1358,-13.2976,-12.8378,-11.5939,-11.8733,-12.4995,-17.0943,-18.4338,-13.0208 @@ -377,8 +375,8 @@ v10.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-21.9717,-30.7111,-26.6207,-22.7349,-19 v11.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-21.8854,-30.7714,-26.4084,-22.6477,-19.8306,-20.6021,-24.1391,-22.9776,-21.3063,-26.1239,-21.8901,-30.7644,-26.4082,-22.6418 v12.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-21.9033,-30.7617,-26.4285,-22.6632,-19.819,-20.5929,-24.2036,-22.9832,-21.3426,-26.3535,-21.9036,-30.7577,-26.4262,-22.6545 v13.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-21.8795,-31.5121,-26.8347,-22.7118,-23.9041,-20.553,-24.4492,-23.1586,-21.3251,-26.4571,-21.8797,-31.5152,-26.8308,-22.6938 -libaom-v3.12.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-0.0536,-2.2463,-2.8031,-0.255,-0.4467,-0.4905,-0.6824,-0.8282,-1.0124,-0.8649,-0.0534,-2.2526,-2.8103,-0.2353 -libaom-v3.12.0-unconstrained,AI,A3,ControlledBurn_1280x720p30_420.y4m,0.7335,-0.7466,-1.1582,0.5815,-0.0387,-0.0316,0.8194,0.6331,0.462,0.0823,0.7334,-0.7558,-1.1648,0.6285 +v14.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-21.923,-31.5549,-26.8799,-22.755,-23.9401,-20.5913,-24.5147,-23.2216,-21.3641,-26.5039,-21.9233,-31.5579,-26.876,-22.737 +v15.0.0,AI,A2,WorldCup_1920x1080_30p.y4m,-21.923,-31.5549,-26.8799,-22.755,-23.9401,-20.5913,-24.5147,-23.2216,-21.3641,-26.5039,-21.9233,-31.5579,-26.876,-22.737 v02.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-2.647,-17.5965,-21.1178,-4.1904,-3.159,-3.1064,-3.7601,-3.947,-3.6049,-7.2356,-2.6464,-17.6278,-21.1445,-3.3011 v03.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-4.1361,-18.7936,-23.699,-5.7165,-4.3439,-4.485,-3.5172,-3.9066,-4.6984,-8.4462,-4.1354,-18.8225,-23.7274,-4.8134 v04.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-6.6683,-26.0808,-28.6955,-8.6315,-6.3987,-6.7607,-6.0302,-6.3822,-7.0045,-11.8398,-6.6682,-26.0981,-28.7099,-7.5176 @@ -391,8 +389,8 @@ v10.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-12.0875,-36.8835,-37.8799,-14. v11.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-11.9516,-36.9781,-38.4532,-14.4911,-11.1557,-11.4479,-15.1491,-14.8882,-12.2758,-18.5431,-11.951,-36.9876,-38.4525,-12.9907 v12.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-11.9493,-36.6258,-38.3482,-14.4616,-11.1712,-11.4451,-15.3493,-15.0582,-12.2759,-18.439,-11.9489,-36.6334,-38.3456,-12.9836 v13.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-11.9082,-36.7831,-38.0413,-14.4181,-12.0849,-11.4129,-15.1161,-14.874,-12.256,-18.407,-11.9078,-36.7904,-38.0423,-12.9503 -libaom-v3.12.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,0.0703,-0.9061,0.2988,0.037,-2.8406,-1.759,-2.7261,-1.9796,-0.597,-0.0807,0.0683,-0.905,0.2994,0.063 -libaom-v3.12.0-unconstrained,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,0.4982,-2.1817,-2.4883,0.2822,-1.0074,-0.4973,0.1067,-0.2709,-0.1159,-0.5734,0.4979,-2.1774,-2.4866,0.3398 +v14.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-11.9339,-36.8082,-38.0656,-14.4437,-12.1064,-11.4399,-15.1642,-14.9212,-12.2831,-18.4342,-11.9334,-36.8155,-38.0666,-12.9762 +v15.0.0,AI,A3,ControlledBurn_1280x720p30_420.y4m,-11.9339,-36.8082,-38.0656,-14.4437,-12.1064,-11.4399,-15.1642,-14.9212,-12.2831,-18.4342,-11.9334,-36.8155,-38.0666,-12.9762 v02.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-3.1613,-12.8189,-24.789,-4.4389,-4.0967,-3.817,-3.0081,-3.2316,-4.3595,-8.3508,-3.1605,-12.8277,-24.7993,-4.0819 v03.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-4.9682,-17.1442,-27.8556,-6.4193,-5.3732,-5.1938,-4.5453,-4.5665,-5.5971,-10.8684,-4.9667,-17.148,-27.8648,-6.0113 v04.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-7.7748,-23.2094,-35.8326,-9.6289,-7.9634,-7.9884,-7.4403,-7.2619,-8.4801,-15.102,-7.7733,-23.2033,-35.8353,-9.1918 @@ -405,8 +403,8 @@ v10.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-14.5635,-28.6623,-42.2078 v11.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-14.4414,-28.7459,-42.8127,-16.2805,-13.8166,-13.9606,-19.1194,-17.9387,-14.744,-22.0561,-14.4387,-28.7501,-42.8152,-15.9416 v12.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-14.4188,-28.806,-42.3632,-16.2444,-13.8062,-13.9051,-19.1585,-17.7906,-14.6812,-22.0225,-14.4157,-28.8042,-42.3552,-15.9073 v13.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-14.2993,-28.8636,-41.7966,-16.1135,-15.0296,-13.7997,-18.938,-17.66,-14.5749,-21.8008,-14.2956,-28.8663,-41.798,-15.7896 -libaom-v3.12.0,AI,A3,Johnny_1280x720_60.y4m,0.0807,-2.9235,-2.7874,-0.1901,-0.2321,-0.0316,-2.8001,-2.4109,-1.027,-0.6942,0.0808,-2.9233,-2.7878,-0.2477 -libaom-v3.12.0-unconstrained,AI,A3,Johnny_1280x720_60.y4m,0.3598,-3.008,-3.2444,-0.03,0.0827,0.1993,0.8011,0.4617,0.0143,-1.0623,0.3596,-3.0072,-3.2427,-0.0307 +v14.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-14.332,-28.8957,-41.8273,-16.1461,-15.058,-13.8367,-19.0019,-17.723,-14.6093,-21.8365,-14.3283,-28.8984,-41.8287,-15.8228 +v15.0.0,AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-14.332,-28.8957,-41.8273,-16.1461,-15.058,-13.8367,-19.0019,-17.723,-14.6093,-21.8365,-14.3283,-28.8984,-41.8287,-15.8228 v02.0.0,AI,A3,Johnny_1280x720_60.y4m,-4.8377,-13.4145,-10.1716,-5.6584,-5.0513,-4.6908,-5.1307,-5.2523,-5.5752,-8.757,-4.8398,-13.4228,-10.193,-5.6442 v03.0.0,AI,A3,Johnny_1280x720_60.y4m,-6.8326,-10.2233,-8.8876,-7.1523,-6.7654,-6.2742,-5.3132,-5.5311,-6.798,-8.9035,-6.8342,-10.2321,-8.909,-7.1687 v04.0.0,AI,A3,Johnny_1280x720_60.y4m,-10.8802,-18.2257,-18.242,-11.7497,-10.6173,-10.3138,-11.1761,-10.4698,-10.769,-14.3974,-10.8805,-18.2322,-18.257,-11.7256 @@ -419,8 +417,8 @@ v10.0.0,AI,A3,Johnny_1280x720_60.y4m,-21.5108,-27.5594,-26.1716,-22.1662,-20.371 v11.0.0,AI,A3,Johnny_1280x720_60.y4m,-21.4506,-27.3002,-26.8215,-22.1203,-20.3631,-20.1909,-24.8819,-23.7351,-20.7768,-24.0499,-21.4523,-27.2923,-26.8193,-22.1246 v12.0.0,AI,A3,Johnny_1280x720_60.y4m,-21.393,-27.2104,-26.7657,-22.0626,-20.2243,-19.8034,-25.041,-23.9036,-20.826,-24.0665,-21.3944,-27.1883,-26.7622,-22.065 v13.0.0,AI,A3,Johnny_1280x720_60.y4m,-21.0822,-28.2427,-26.1986,-21.8245,-20.2092,-19.7005,-24.7897,-23.6002,-20.6142,-24.052,-21.0832,-28.2412,-26.1894,-21.8267 -libaom-v3.12.0,AI,A3,KristenAndSara_1280x720_60.y4m,-0.2264,-2.2302,-1.931,-0.4142,-0.5162,-0.4226,-1.9392,-1.4304,-1.1889,-1.056,-0.2265,-2.2318,-1.9304,-0.4917 -libaom-v3.12.0-unconstrained,AI,A3,KristenAndSara_1280x720_60.y4m,0.2457,-4.2938,-3.9527,-0.2203,-0.0455,0.0568,0.3015,0.1113,-0.4943,-1.914,0.2465,-4.2922,-3.9535,-0.2654 +v14.0.0,AI,A3,Johnny_1280x720_60.y4m,-21.1725,-28.337,-26.292,-21.9153,-20.2851,-19.7845,-24.918,-23.7273,-20.7067,-24.1477,-21.1735,-28.3355,-26.2828,-21.9175 +v15.0.0,AI,A3,Johnny_1280x720_60.y4m,-21.1725,-28.337,-26.292,-21.9153,-20.2851,-19.7845,-24.918,-23.7273,-20.7067,-24.1477,-21.1735,-28.3355,-26.2828,-21.9175 v02.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-4.3527,-13.5774,-14.0494,-5.3879,-4.6735,-4.5548,-4.2277,-4.2947,-5.3295,-9.1268,-4.3523,-13.5746,-14.05,-5.3871 v03.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-6.7015,-13.4095,-14.3662,-7.4791,-6.6571,-6.5373,-5.9617,-5.6142,-6.8949,-10.9519,-6.7012,-13.4117,-14.3774,-7.4812 v04.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-10.4941,-21.3224,-24.2608,-11.8496,-9.9028,-9.8336,-10.1272,-9.6297,-10.7996,-15.6969,-10.4932,-21.3195,-24.2615,-11.8224 @@ -433,8 +431,8 @@ v10.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-21.4939,-32.5754,-32.0906,-22.7046 v11.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-21.54,-32.5513,-32.1656,-22.7457,-19.6163,-19.6798,-25.9851,-24.0178,-21.2125,-26.7082,-21.5405,-32.5296,-32.1667,-22.7817 v12.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-21.5163,-32.3914,-31.9353,-22.702,-19.6241,-19.6317,-26.1309,-24.1066,-21.1716,-26.5237,-21.5161,-32.3772,-31.9391,-22.7382 v13.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-21.2282,-33.2067,-31.6511,-22.4673,-21.8869,-19.1218,-25.7541,-23.7372,-20.812,-26.3404,-21.2279,-33.1949,-31.6541,-22.5021 -libaom-v3.12.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-0.2133,-0.4039,-0.1508,-0.2193,-0.1297,-0.2269,-2.5819,-5.8806,-0.5712,-0.2622,-0.2201,-0.4021,-0.1469,-0.2175 -libaom-v3.12.0-unconstrained,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,0.1844,-1.1191,-1.9388,0.0302,0.0616,0.0542,0.4769,0.5786,-0.0933,-0.7826,0.1764,-1.1185,-1.932,-0.0335 +v14.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-21.2968,-33.2726,-31.7169,-22.5357,-21.9516,-19.1902,-25.8451,-23.8279,-20.8819,-26.4109,-21.2965,-33.2608,-31.7199,-22.5706 +v15.0.0,AI,A3,KristenAndSara_1280x720_60.y4m,-21.2968,-33.2726,-31.7169,-22.5357,-21.9516,-19.1902,-25.8451,-23.8279,-20.8819,-26.4109,-21.2965,-33.2608,-31.7199,-22.5706 v02.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-4.737,-2.8537,-9.807,-4.856,-5.0549,-5.1861,-4.94,-5.1601,-4.3309,-4.947,-4.7469,-2.8782,-9.8384,-4.8898 v03.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-7.0165,-3.4292,-12.4693,-7.0689,-6.7868,-7.0773,-6.3599,-6.5466,-6.031,-6.7332,-7.0302,-3.4492,-12.4764,-7.0128 v04.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-10.2627,-11.2871,-26.5435,-11.0596,-9.8789,-10.3477,-9.0017,-8.9621,-9.4109,-11.8209,-10.2724,-11.3183,-26.5726,-11.2871 @@ -447,8 +445,8 @@ v10.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-16.9866,-14.1487,-32.3 v11.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-16.8792,-14.3454,-32.6641,-17.4863,-15.1702,-15.8016,-18.5023,-17.6802,-15.1761,-18.9491,-16.8929,-14.3641,-32.6643,-17.6237 v12.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-16.8692,-14.0024,-32.5659,-17.4543,-15.2289,-15.8514,-18.4389,-17.6711,-15.1741,-18.977,-16.884,-14.0334,-32.5774,-17.5842 v13.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-16.8702,-14.3303,-32.1998,-17.4514,-18.0472,-15.9292,-18.4406,-17.6087,-15.1746,-19.2029,-16.8848,-14.3482,-32.2048,-17.6047 -libaom-v3.12.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-0.0631,-2.2475,-2.8513,-0.3092,-0.8071,-0.8513,-0.833,-1.1024,-1.1876,-1.0997,-0.0302,-2.2457,-2.8489,-0.3369 -libaom-v3.12.0-unconstrained,AI,A3,Vidyo3_1280x720p_60fps.y4m,0.5284,-1.289,-3.5319,0.2362,-1.4244,-1.4312,1.4457,1.2151,0.1152,-0.3284,0.5358,-1.2729,-3.5425,0.2403 +v14.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-16.9262,-14.3905,-32.2482,-17.5072,-18.092,-15.9833,-18.5388,-17.7039,-15.226,-19.2615,-16.9407,-14.4084,-32.2532,-17.6613 +v15.0.0,AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-16.9262,-14.3905,-32.2482,-17.5072,-18.092,-15.9833,-18.5388,-17.7039,-15.226,-19.2615,-16.9407,-14.4084,-32.2532,-17.6613 v02.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-3.4364,-19.6259,-19.6765,-4.9303,-4.5025,-4.4138,-3.0675,-3.2332,-4.4492,-8.2954,-3.4381,-19.6677,-19.6967,-4.6314 v03.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-5.2284,-17.2436,-22.9147,-6.6888,-5.4479,-5.3392,-4.3423,-4.6281,-5.6544,-9.359,-5.2286,-17.1821,-22.9397,-6.398 v04.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-9.3218,-28.088,-26.5478,-11.0064,-9.5035,-9.4918,-9.4959,-8.9441,-9.3746,-15.5759,-9.3222,-28.1033,-26.5725,-10.6717 @@ -461,8 +459,8 @@ v10.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-17.9292,-32.9664,-38.7347,-19.7409,-16 v11.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-17.9454,-35.1878,-38.3644,-19.8004,-16.6673,-16.5957,-19.3634,-18.9472,-17.5303,-25.2567,-17.9415,-35.1079,-38.3566,-19.3904 v12.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-17.8342,-35.6045,-38.1839,-19.6964,-16.4676,-16.3702,-19.6152,-19.1487,-17.3264,-25.2459,-17.8317,-35.5687,-38.1806,-19.2763 v13.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-17.7492,-33.9054,-36.6541,-19.4496,-20.6548,-16.271,-19.6007,-19.072,-17.2265,-24.4306,-17.7456,-33.8664,-36.6396,-19.123 -libaom-v3.12.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,0.1604,-2.1551,-2.9398,-0.0203,-0.3868,-0.199,-2.3736,-1.8998,-0.9653,-1.0199,0.164,-2.1545,-2.9346,-0.0799 -libaom-v3.12.0-unconstrained,AI,A3,Vidyo4_1280x720p_60fps.y4m,0.4147,-3.3847,-3.492,0.0179,0.2608,0.3384,1.2705,1.099,-0.125,-2.0305,0.4185,-3.3883,-3.4915,0.0642 +v14.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-17.831,-33.9799,-36.7137,-19.5299,-20.7348,-16.3579,-19.7176,-19.1863,-17.3076,-24.5131,-17.8275,-33.9409,-36.6992,-19.2044 +v15.0.0,AI,A3,Vidyo3_1280x720p_60fps.y4m,-17.831,-33.9799,-36.7137,-19.5299,-20.7348,-16.3579,-19.7176,-19.1863,-17.3076,-24.5131,-17.8275,-33.9409,-36.6992,-19.2044 v02.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-4.6479,-16.365,-14.4445,-5.8117,-4.1745,-4.2624,-4.7923,-4.8589,-5.2543,-9.9597,-4.6424,-16.36,-14.4743,-5.5768 v03.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-6.9377,-18.1294,-17.0069,-8.0798,-6.3413,-6.3907,-5.8743,-6.0054,-7.3015,-11.4482,-6.9329,-18.1321,-17.031,-7.8415 v04.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-10.7282,-23.9761,-21.9859,-12.0514,-9.5076,-9.7084,-11.2138,-10.4404,-10.8222,-15.5269,-10.7175,-23.9736,-21.9966,-11.7925 @@ -475,8 +473,8 @@ v10.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-18.6064,-31.3751,-27.1124,-19.7539,-16 v11.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-18.5124,-31.4905,-27.0074,-19.6681,-16.5312,-16.6927,-21.641,-19.7492,-18.0226,-23.6473,-18.5036,-31.4816,-27.0152,-19.4436 v12.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-18.5419,-31.0191,-27.0508,-19.668,-16.5124,-16.6725,-21.7572,-19.8399,-17.9885,-23.641,-18.534,-31.009,-27.0589,-19.4511 v13.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-18.3919,-31.3651,-25.5912,-19.4772,-18.4253,-16.4646,-21.1863,-19.624,-17.742,-23.2909,-18.3829,-31.3516,-25.5903,-19.2736 -libaom-v3.12.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,0.0795,-1.6353,-2.4378,-0.0817,0.1234,-0.0025,-4.4164,-3.0143,-0.6967,-1.0687,0.0781,-1.6376,-2.4497,-0.0544 -libaom-v3.12.0-unconstrained,AI,A3,WestWindEasy_1280x720p30_420.y4m,0.386,-1.6394,-3.031,0.1599,0.6333,0.4788,2.398,1.5422,0.3084,-1.1196,0.3833,-1.6257,-3.0969,0.2628 +v14.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-18.4777,-31.443,-25.6761,-19.5626,-18.4938,-16.5399,-21.3063,-19.7428,-17.8235,-23.3759,-18.4687,-31.4295,-25.6753,-19.3594 +v15.0.0,AI,A3,Vidyo4_1280x720p_60fps.y4m,-18.4777,-31.443,-25.6761,-19.5626,-18.4938,-16.5399,-21.3063,-19.7428,-17.8235,-23.3759,-18.4687,-31.4295,-25.6753,-19.3594 v02.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-3.6144,-24.2758,-24.0536,-5.5264,-3.2471,-3.511,-2.0632,-2.8475,-3.9757,-9.1947,-3.6173,-24.2823,-24.0293,-4.332 v03.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-7.08,-29.3922,-30.3343,-9.2328,-5.3525,-5.7173,-4.1621,-4.9344,-6.58,-12.5036,-7.0836,-29.3724,-30.3113,-7.8787 v04.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-10.6957,-37.2701,-39.1936,-13.4446,-8.1799,-8.6427,-9.5629,-9.7064,-10.1228,-18.866,-10.6962,-37.254,-39.1845,-11.7791 @@ -489,8 +487,8 @@ v10.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-25.1315,-65.3321,-58.1289,-29.09 v11.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-25.74,-65.1888,-57.2703,-29.5794,-24.2581,-24.6102,-31.4772,-30.8161,-26.3353,-37.2977,-25.7347,-65.1762,-57.2225,-27.0705 v12.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-30.8963,-67.9658,-60.4103,-34.5034,-29.6808,-30.0712,-38.6967,-37.7756,-31.6243,-42.0431,-30.8945,-67.9557,-60.3776,-32.1843 v13.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-31.4262,-66.8548,-60.0962,-34.9463,-31.2473,-30.4504,-39.8534,-38.8639,-32.0503,-42.0158,-31.4222,-66.8685,-60.049,-32.7055 -libaom-v3.12.0,AI,A4,BlueSky_360p25_v2.y4m,0.6529,-0.0483,-1.2641,0.586,-0.8686,-0.8148,-7.1298,-5.728,6.8004,2.0428,0.653,-0.0486,-1.2636,0.5191 -libaom-v3.12.0-unconstrained,AI,A4,BlueSky_360p25_v2.y4m,0.5655,-0.8738,-0.5476,0.4858,-0.5567,-0.7633,-0.1858,-0.4137,1.8052,1.3099,0.5666,-0.8752,-0.5423,0.4081 +v14.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-31.4553,-66.8732,-60.118,-34.9745,-31.2725,-30.4801,-39.9029,-38.9117,-32.0786,-42.0426,-31.4513,-66.887,-60.0709,-32.7346 +v15.0.0,AI,A3,WestWindEasy_1280x720p30_420.y4m,-31.4553,-66.8732,-60.118,-34.9745,-31.2725,-30.4801,-39.9029,-38.9117,-32.0786,-42.0426,-31.4513,-66.887,-60.0709,-32.7346 v02.0.0,AI,A4,BlueSky_360p25_v2.y4m,-1.6845,-7.2012,-21.5093,-2.6816,-3.5806,-3.3669,-1.2821,-1.076,-1.2721,-5.2942,-1.6808,-7.2155,-21.5543,-2.6136 v03.0.0,AI,A4,BlueSky_360p25_v2.y4m,-5.1068,-14.3676,-29.1012,-6.4589,-8.0573,-5.8194,-2.6111,-2.2604,-2.4875,-10.5656,-5.1026,-14.3768,-29.1376,-6.463 v04.0.0,AI,A4,BlueSky_360p25_v2.y4m,-9.1554,-18.2874,-43.3775,-11.0558,-11.9831,-9.238,-4.7723,-4.3077,-5.9182,-15.8737,-9.1506,-18.2935,-43.3846,-11.0427 @@ -503,8 +501,8 @@ v10.0.0,AI,A4,BlueSky_360p25_v2.y4m,-17.0349,-39.0881,-62.7561,-20.6183,-18.0704 v11.0.0,AI,A4,BlueSky_360p25_v2.y4m,-16.8449,-39.6366,-63.1815,-20.5106,-17.8974,-15.8511,-13.7498,-13.3544,-15.3853,-31.4436,-16.8408,-39.6377,-63.1654,-20.4896 v12.0.0,AI,A4,BlueSky_360p25_v2.y4m,-16.8163,-39.0265,-62.4241,-20.387,-17.8722,-15.9045,-13.5922,-13.1915,-15.2447,-31.0204,-16.814,-39.0291,-62.4151,-20.3505 v13.0.0,AI,A4,BlueSky_360p25_v2.y4m,-16.9872,-38.7776,-62.2821,-20.5703,-18.2168,-16.0991,-14.5424,-14.1419,-15.4372,-31.4033,-16.9827,-38.7816,-62.2658,-20.5347 -libaom-v3.12.0,AI,A4,RedKayak_360_2997.y4m,-0.0419,0.0958,6.2843,0.0916,-1.1151,-1.1364,-6.3016,-4.7478,2.1458,1.8416,-0.04,0.0827,6.2913,0.077 -libaom-v3.12.0-unconstrained,AI,A4,RedKayak_360_2997.y4m,0.4686,-0.3021,-0.8926,0.4912,-0.693,-0.4377,0.0576,-1.111,0.8813,2.087,0.4665,-0.2801,-1.0965,0.4983 +v14.0.0,AI,A4,BlueSky_360p25_v2.y4m,-17.0965,-38.8429,-62.3374,-20.6745,-18.3191,-16.224,-14.7861,-14.38,-15.5635,-31.5062,-17.0921,-38.8469,-62.3211,-20.6422 +v15.0.0,AI,A4,BlueSky_360p25_v2.y4m,-17.0965,-38.8429,-62.3374,-20.6745,-18.3191,-16.224,-14.7861,-14.38,-15.5635,-31.5062,-17.0921,-38.8469,-62.3211,-20.6422 v02.0.0,AI,A4,RedKayak_360_2997.y4m,-3.9657,-19.1172,-22.6241,-5.3694,-6.9185,-7.5052,-7.2404,-6.9033,-5.9893,-7.5211,-3.9602,-19.1192,-21.7443,-4.5303 v03.0.0,AI,A4,RedKayak_360_2997.y4m,-6.2936,-21.6481,-26.4292,-7.7226,-10.0284,-9.0644,-7.7211,-7.1401,-7.1794,-10.4245,-6.2834,-21.5863,-25.7389,-6.8822 v04.0.0,AI,A4,RedKayak_360_2997.y4m,-8.2592,-22.7391,-37.4475,-10.0563,-12.0504,-10.7581,-9.9549,-9.4033,-8.8769,-12.6454,-8.2481,-22.7037,-36.1702,-8.9143 @@ -517,8 +515,8 @@ v10.0.0,AI,A4,RedKayak_360_2997.y4m,-12.6275,-45.4447,-44.4701,-15.6743,-15.261, v11.0.0,AI,A4,RedKayak_360_2997.y4m,-12.5962,-44.7452,-47.4008,-15.6729,-15.2569,-14.734,-17.1415,-16.5526,-15.4802,-23.6821,-12.5861,-44.5849,-46.4776,-13.8483 v12.0.0,AI,A4,RedKayak_360_2997.y4m,-12.6019,-45.4684,-45.3362,-15.6089,-15.2311,-14.7768,-17.6615,-16.9221,-15.5531,-23.9079,-12.5871,-45.3034,-43.8278,-13.851 v13.0.0,AI,A4,RedKayak_360_2997.y4m,-12.9815,-46.053,-43.3475,-15.8991,-15.7445,-15.416,-17.5405,-16.9577,-15.9932,-24.1161,-12.9656,-45.8251,-42.58,-14.2341 -libaom-v3.12.0,AI,A4,SnowMountain_640x360_2997.y4m,0.1417,0.974,1.5029,0.2182,-0.7895,-0.8025,-1.2929,-1.4352,3.48,1.5168,0.1417,0.9774,1.5078,0.2746 -libaom-v3.12.0-unconstrained,AI,A4,SnowMountain_640x360_2997.y4m,0.1703,15.5402,-0.376,0.4082,-0.5269,-0.3741,-0.7072,-0.9836,0.8446,1.864,0.1704,15.6055,-0.3188,0.269 +v14.0.0,AI,A4,RedKayak_360_2997.y4m,-13.1218,-46.2157,-43.614,-16.0472,-15.8532,-15.5953,-17.9171,-17.3255,-16.1692,-24.2995,-13.1059,-45.9894,-42.8536,-14.3768 +v15.0.0,AI,A4,RedKayak_360_2997.y4m,-13.1218,-46.2157,-43.614,-16.0472,-15.8532,-15.5953,-17.9171,-17.3255,-16.1692,-24.2995,-13.1059,-45.9894,-42.8536,-14.3768 v02.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-4.7545,-42.3877,-58.3907,-8.3044,-6.8088,-6.2775,-5.2658,-5.107,-5.0879,-9.2006,-4.7389,-42.5071,-58.561,-5.686 v03.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-8.013,-46.1122,-62.6309,-11.6153,-9.454,-8.0746,-7.8704,-7.2574,-7.7165,-12.151,-8.008,-46.2523,-62.7434,-9.0026 v04.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-9.8928,-53.6411,-65.1039,-13.8763,-11.3474,-10.3822,-9.9435,-9.2101,-10.1196,-16.7479,-9.8886,-53.7482,-65.1613,-11.1169 @@ -531,8 +529,8 @@ v10.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-14.0534,-66.4272,-71.6848,-18.8223, v11.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-13.9999,-66.961,-75.9844,-19.1155,-14.2848,-13.6901,-18.7828,-17.3641,-16.4748,-23.755,-13.9995,-66.9822,-76.0389,-15.5664 v12.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-13.9998,-66.9457,-76.4093,-19.1178,-14.2495,-13.6468,-18.8049,-17.3198,-16.4628,-23.7235,-13.9995,-66.98,-76.4772,-15.56 v13.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-14.3544,-67.024,-73.1832,-19.2064,-14.7364,-14.4186,-19.5896,-17.9951,-16.9492,-23.9623,-14.3539,-67.0396,-73.194,-15.9051 -libaom-v3.12.0,AI,A4,SpeedBag_640x360_2997.y4m,1.9943,3.4958,10.3459,2.4331,-0.1253,-0.0305,-3.9636,-4.0549,6.5502,7.1257,1.9923,3.4772,10.1684,2.586 -libaom-v3.12.0-unconstrained,AI,A4,SpeedBag_640x360_2997.y4m,1.1475,0.6324,2.0475,1.1657,0.3533,0.5275,1.0375,0.3023,2.5799,2.2364,1.1359,0.646,2.0828,1.2077 +v14.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-14.4278,-67.0699,-73.2303,-19.278,-14.8023,-14.5028,-19.7524,-18.1574,-17.0389,-24.0435,-14.4273,-67.0854,-73.2414,-15.9789 +v15.0.0,AI,A4,SnowMountain_640x360_2997.y4m,-14.4278,-67.0699,-73.2303,-19.278,-14.8023,-14.5028,-19.7524,-18.1574,-17.0389,-24.0435,-14.4273,-67.0854,-73.2414,-15.9789 v02.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-5.6539,-7.6811,-14.1033,-6.1762,-6.5842,-4.7926,-7.353,-7.6473,-3.9874,-7.1055,-5.674,-7.6829,-13.9444,-6.1753 v03.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-8.0248,-8.9391,-16.9105,-8.5136,-9.265,-6.2417,-9.4084,-9.6467,-5.7466,-8.1883,-8.0517,-8.9326,-16.7234,-8.4986 v04.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-10.7499,-12.2063,-23.2968,-11.4685,-12.1277,-8.6399,-10.7436,-11.1694,-8.628,-11.7127,-10.7665,-12.125,-23.1104,-11.4713 @@ -545,8 +543,8 @@ v10.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-20.3087,-26.5944,-29.82,-21.1597,-21.65 v11.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-20.3897,-25.0958,-29.2073,-21.1191,-21.729,-17.4169,-22.5484,-22.1955,-19.0441,-22.7986,-20.4122,-25.0982,-29.0069,-21.3039 v12.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-20.4586,-25.0613,-29.0504,-21.1667,-21.7504,-17.4828,-22.9636,-22.4902,-19.0717,-22.8332,-20.4727,-25.0373,-28.7381,-21.347 v13.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-20.0707,-25.6551,-28.5436,-20.8287,-21.2887,-17.1307,-22.2813,-21.8441,-18.7515,-22.7523,-20.0939,-25.6494,-28.3646,-21.0426 -libaom-v3.12.0,AI,A4,Stockholm_640x360_5994.y4m,0.6819,-0.4407,1.0015,0.6608,-0.0741,-0.2993,-3.4259,-1.8708,4.5201,1.978,0.6816,-0.4407,1.0017,0.7024 -libaom-v3.12.0-unconstrained,AI,A4,Stockholm_640x360_5994.y4m,0.5952,-1.6456,2.4234,0.5831,-0.1398,-0.0707,-0.5769,-0.4737,1.5273,0.6119,0.5955,-1.6238,2.4071,0.5657 +v14.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-20.4635,-26.0375,-28.9009,-21.2191,-21.6766,-17.5308,-22.876,-22.4186,-19.1323,-23.1764,-20.487,-26.0323,-28.7234,-21.4351 +v15.0.0,AI,A4,SpeedBag_640x360_2997.y4m,-20.4635,-26.0375,-28.9009,-21.2191,-21.6766,-17.5308,-22.876,-22.4186,-19.1323,-23.1764,-20.487,-26.0323,-28.7234,-21.4351 v02.0.0,AI,A4,Stockholm_640x360_5994.y4m,-2.8405,-23.8494,-20.7289,-4.4883,-4.3172,-4.0452,-3.0273,-2.9076,-2.6889,-10.2818,-2.8398,-23.8389,-20.7848,-3.9695 v03.0.0,AI,A4,Stockholm_640x360_5994.y4m,-4.3243,-28.1406,-23.8251,-6.1886,-6.205,-5.4386,-4.2737,-3.9228,-3.7379,-12.0789,-4.3239,-28.1554,-23.8893,-5.5862 v04.0.0,AI,A4,Stockholm_640x360_5994.y4m,-7.4856,-37.7918,-34.4765,-10.0621,-9.6914,-8.4631,-6.4328,-6.1396,-6.9804,-17.1413,-7.4841,-37.7992,-34.5145,-9.3708 @@ -559,8 +557,8 @@ v10.0.0,AI,A4,Stockholm_640x360_5994.y4m,-14.5971,-52.9461,-41.3262,-17.7374,-15 v11.0.0,AI,A4,Stockholm_640x360_5994.y4m,-14.5123,-53.1441,-41.2589,-17.7059,-15.7121,-14.4746,-16.4507,-15.6205,-15.4137,-27.4657,-14.5107,-53.135,-41.2943,-16.7805 v12.0.0,AI,A4,Stockholm_640x360_5994.y4m,-14.4501,-52.8059,-41.1814,-17.6134,-15.6848,-14.3927,-16.0108,-15.3092,-15.3414,-27.4216,-14.4478,-52.7959,-41.2107,-16.6975 v13.0.0,AI,A4,Stockholm_640x360_5994.y4m,-14.451,-53.7133,-41.2551,-17.6766,-15.676,-14.5163,-16.0747,-15.2575,-15.4444,-27.6814,-14.4483,-53.7006,-41.2875,-16.7314 -libaom-v3.12.0,AI,A4,TouchdownPass_640x360_2997.y4m,0.0523,7.8392,10.0755,0.752,-2.4037,-0.1066,-1.7248,-1.6564,4.2583,4.2125,0.0508,7.8392,10.09,0.4997 -libaom-v3.12.0-unconstrained,AI,A4,TouchdownPass_640x360_2997.y4m,0.544,4.6605,3.7153,0.9483,-1.1806,-0.0253,0.2394,-0.1157,2.2755,4.9495,0.5439,4.6893,3.7263,0.7913 +v14.0.0,AI,A4,Stockholm_640x360_5994.y4m,-14.5889,-53.8024,-41.3602,-17.8103,-15.795,-14.6756,-16.3619,-15.5389,-15.5834,-27.8243,-14.5862,-53.7898,-41.3927,-16.8689 +v15.0.0,AI,A4,Stockholm_640x360_5994.y4m,-14.5889,-53.8024,-41.3602,-17.8103,-15.795,-14.6756,-16.3619,-15.5389,-15.5834,-27.8243,-14.5862,-53.7898,-41.3927,-16.8689 v02.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-1.893,-16.7964,-7.1986,-2.958,-2.6549,-1.7858,-2.5092,-2.5457,-0.7155,-7.4016,-1.8888,-16.7497,-7.1505,-2.4101 v03.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-3.9216,-21.2586,-12.8171,-5.2993,-4.3417,-3.0712,-4.9481,-4.0714,-2.2589,-10.092,-3.9174,-21.2753,-12.7863,-4.5976 v04.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-6.0197,-21.5161,-17.7313,-7.4252,-6.5771,-5.1735,-6.3356,-5.7165,-4.2401,-11.9243,-6.0148,-21.498,-17.7096,-6.7125 @@ -573,8 +571,8 @@ v10.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-12.7328,-42.8142,-21.9667,-15.2281 v11.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-12.7713,-43.9298,-22.2469,-15.1454,-11.3194,-11.3248,-17.8737,-15.8219,-12.8632,-24.7704,-12.763,-43.9293,-22.2134,-13.8938 v12.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-12.7322,-42.9739,-22.3347,-15.0939,-11.3816,-11.4428,-17.7581,-15.8191,-12.8952,-24.6364,-12.7226,-42.9945,-22.2687,-13.8428 v13.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-12.7922,-42.497,-21.4785,-15.2204,-11.3851,-11.4573,-17.5922,-15.7717,-13.0043,-24.9461,-12.7856,-42.5051,-21.4418,-13.9252 -libaom-v3.12.0,AI,A5,FourPeople_480x270_60.y4m,-0.3125,-0.7236,-1.12,-0.365,-0.8922,-1.1962,-0.3791,-1.6227,-2.051,-0.8965,-0.3124,-0.7232,-1.124,-0.3794 -libaom-v3.12.0-unconstrained,AI,A5,FourPeople_480x270_60.y4m,0.6179,-2.0074,-3.4356,0.3237,-0.4514,-0.618,1.1398,0.7415,-0.6635,-1.0164,0.6178,-2.0125,-3.4281,0.3847 +v14.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-13.0063,-42.6462,-21.6553,-15.4277,-11.4827,-11.6025,-17.9516,-16.1312,-13.2011,-25.1106,-12.9997,-42.6548,-21.6192,-14.1381 +v15.0.0,AI,A4,TouchdownPass_640x360_2997.y4m,-13.0063,-42.6462,-21.6553,-15.4277,-11.4827,-11.6025,-17.9516,-16.1312,-13.2011,-25.1106,-12.9997,-42.6548,-21.6192,-14.1381 v02.0.0,AI,A5,FourPeople_480x270_60.y4m,-3.4725,-9.329,-10.6819,-4.0693,-4.9494,-4.8025,-5.1629,-5.2243,-5.2316,-10.5628,-3.4729,-9.3507,-10.7159,-4.0573 v03.0.0,AI,A5,FourPeople_480x270_60.y4m,-5.1384,-9.2552,-11.7719,-5.6179,-6.8649,-5.8738,-4.1834,-4.3537,-5.8391,-11.7406,-5.1383,-9.2809,-11.8017,-5.5944 v04.0.0,AI,A5,FourPeople_480x270_60.y4m,-7.8226,-15.3473,-16.7566,-8.5743,-9.9156,-8.4391,-6.044,-6.1241,-8.5743,-14.8502,-7.8219,-15.3406,-16.7674,-8.5531 @@ -587,8 +585,8 @@ v10.0.0,AI,A5,FourPeople_480x270_60.y4m,-14.7719,-23.5168,-21.368,-15.5002,-16.8 v11.0.0,AI,A5,FourPeople_480x270_60.y4m,-15.1342,-23.2457,-21.3038,-15.8091,-17.2486,-15.23,-18.5368,-17.0759,-15.0828,-22.8218,-15.1343,-23.2517,-21.3066,-15.8537 v12.0.0,AI,A5,FourPeople_480x270_60.y4m,-15.0611,-23.3478,-21.2674,-15.7473,-17.2046,-15.2891,-18.9524,-17.3565,-15.0887,-22.8452,-15.0612,-23.3457,-21.2748,-15.7803 v13.0.0,AI,A5,FourPeople_480x270_60.y4m,-14.9197,-23.8424,-21.2014,-15.624,-17.0548,-15.1403,-18.6458,-17.0782,-14.9357,-22.8211,-14.9196,-23.8467,-21.2114,-15.6613 -libaom-v3.12.0,AI,A5,ParkJoy_480x270_50.y4m,0.0184,-1.5991,-2.8294,-0.0968,-1.149,-0.7229,-4.3294,-4.3269,-1.0512,-0.1847,0.0206,-1.6124,-2.8468,-0.0867 -libaom-v3.12.0-unconstrained,AI,A5,ParkJoy_480x270_50.y4m,0.9938,-1.4281,-3.1233,0.8125,-0.5392,-0.3796,2.4077,2.6378,0.2848,0.3524,1.0034,-1.3879,-3.1625,0.8355 +v14.0.0,AI,A5,FourPeople_480x270_60.y4m,-15.0923,-23.9898,-21.3599,-15.7947,-17.2163,-15.3373,-18.9843,-17.4108,-15.1302,-23.0035,-15.0921,-23.994,-21.3699,-15.8353 +v15.0.0,AI,A5,FourPeople_480x270_60.y4m,-15.0601,-23.9623,-21.3304,-15.7629,-17.1862,-15.3006,-18.9213,-17.3489,-15.094,-22.9695,-15.06,-23.9666,-21.3403,-15.8029 v02.0.0,AI,A5,ParkJoy_480x270_50.y4m,-1.5173,-3.9872,-12.4609,-1.9617,-3.1249,-3.2444,-1.377,-1.2047,-2.7388,-3.9802,-1.5052,-4.0396,-12.6809,-1.8103 v03.0.0,AI,A5,ParkJoy_480x270_50.y4m,-2.5413,-3.8803,-15.7672,-3.0091,-4.1975,-3.8789,-1.7591,-1.4254,-2.9455,-4.4458,-2.5332,-3.892,-15.9666,-2.8038 v04.0.0,AI,A5,ParkJoy_480x270_50.y4m,-4.7855,-10.5372,-22.5191,-5.6334,-6.8926,-6.4883,-3.6866,-3.349,-5.5279,-8.2803,-4.7737,-10.4765,-22.6281,-5.5073 @@ -601,8 +599,8 @@ v10.0.0,AI,A5,ParkJoy_480x270_50.y4m,-9.243,-18.735,-18.0593,-10.0017,-9.8225,-1 v11.0.0,AI,A5,ParkJoy_480x270_50.y4m,-9.2678,-18.0757,-18.9306,-10.0259,-9.8735,-10.1829,-13.7748,-12.9421,-10.7551,-16.0633,-9.2385,-18.033,-19.0814,-10.0268 v12.0.0,AI,A5,ParkJoy_480x270_50.y4m,-9.2845,-17.9447,-19.5747,-10.0539,-9.8346,-10.0986,-13.4447,-12.7029,-10.8086,-16.3048,-9.2483,-17.861,-19.783,-10.0258 v13.0.0,AI,A5,ParkJoy_480x270_50.y4m,-9.1869,-18.2489,-18.1061,-9.9347,-9.9067,-10.1457,-13.5704,-12.7775,-10.6593,-16.0157,-9.1595,-18.1843,-18.2382,-9.9386 -libaom-v3.12.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,0.0049,-1.2318,-1.5551,-0.0931,-1.5647,-1.1239,-0.4877,-0.9493,-0.7659,-0.3091,0.0045,-1.228,-1.5469,-0.0942 -libaom-v3.12.0-unconstrained,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-0.0162,-3.2843,-2.2781,-0.2547,-0.8078,-0.5837,0.4878,0.1566,-0.5776,-0.9579,-0.0148,-3.3228,-2.2707,-0.145 +v14.0.0,AI,A5,ParkJoy_480x270_50.y4m,-9.3518,-18.4183,-18.3132,-10.1011,-10.0526,-10.3631,-14.0126,-13.2108,-10.8887,-16.2069,-9.3238,-18.3541,-18.4466,-10.1077 +v15.0.0,AI,A5,ParkJoy_480x270_50.y4m,-9.3214,-18.3871,-18.2751,-10.0704,-10.0258,-10.3231,-13.9312,-13.131,-10.8464,-16.1717,-9.2936,-18.3228,-18.4082,-10.0765 v02.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-2.3184,-19.847,-7.2711,-3.3551,-3.3146,-2.7233,-1.8156,-1.9763,-3.9035,-6.1963,-2.3171,-19.9086,-7.2884,-2.834 v03.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-3.7799,-20.3842,-7.7541,-4.7207,-4.0793,-3.6422,-3.7117,-3.5312,-4.8922,-8.3226,-3.7785,-20.4211,-7.8026,-4.2493 v04.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-5.7234,-30.9727,-12.9248,-7.3083,-6.1621,-5.7965,-7.0535,-6.2012,-7.4442,-12.0517,-5.7182,-30.986,-12.939,-6.5173 @@ -615,8 +613,8 @@ v10.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-13.1743,-38.2308,-13.999,- v11.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-13.3075,-34.0241,-11.7069,-14.2462,-12.2194,-13.6538,-18.3257,-17.6426,-15.2839,-18.5547,-13.3057,-33.8909,-11.7488,-13.6934 v12.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-13.3036,-34.3295,-12.2894,-14.2744,-11.9575,-13.646,-18.3694,-17.3488,-15.2223,-18.8012,-13.3001,-34.1159,-12.3018,-13.7006 v13.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-13.4891,-33.7245,-11.8277,-14.399,-12.6265,-13.8336,-18.2665,-17.1969,-15.3577,-19.1129,-13.4889,-33.3557,-11.8676,-13.8725 -libaom-v3.12.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-0.6969,-1.6071,-2.0364,-0.7242,-0.6005,-0.5637,-0.1964,-1.3846,-0.759,0.2743,-0.6954,-1.5054,-1.9369,-0.6567 -libaom-v3.12.0-unconstrained,AI,A5,Vertical_Bayshore_270x480_2997.y4m,1.2206,-1.1414,-4.0279,0.9762,0.631,0.3568,0.464,0.3453,0.9882,1.5553,1.2234,-0.8028,-3.7602,1.1947 +v14.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-13.8014,-34.0494,-12.2324,-14.7167,-12.9034,-14.1588,-18.8649,-17.7874,-15.6737,-19.4578,-13.8012,-33.6879,-12.2722,-14.1899 +v15.0.0,AI,A5,SparksElevator_480x270p_5994_10bit.y4m,-13.8014,-34.0494,-12.2324,-14.7167,-12.9034,-14.1588,-18.8649,-17.7874,-15.6737,-19.4578,-13.8012,-33.6879,-12.2722,-14.1899 v02.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-3.6722,-29.3712,-28.9093,-6.5251,-3.394,-3.9632,-6.34,-6.6952,-5.6958,-11.4267,-3.6666,-29.4376,-28.9362,-4.397 v03.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-4.7958,-31.5302,-30.7518,-7.7689,-4.4244,-5.174,-6.2644,-6.8578,-6.7442,-12.3306,-4.788,-31.9013,-30.8353,-5.5491 v04.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-7.4858,-35.709,-34.0818,-10.6155,-7.0402,-7.6897,-10.1328,-10.9871,-9.1013,-14.3915,-7.4749,-35.9823,-34.1654,-8.2935 @@ -629,8 +627,8 @@ v10.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-16.9923,-47.4383,-39.3556,-20. v11.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-17.1445,-43.3055,-40.1596,-20.0993,-15.6904,-16.7146,-28.4797,-27.3306,-18.8245,-23.7618,-17.1367,-43.3345,-40.0673,-17.8999 v12.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-17.1259,-42.2474,-38.6812,-19.914,-15.5517,-16.5793,-27.4082,-26.4329,-18.6169,-23.5929,-17.1225,-42.4237,-38.6132,-17.8507 v13.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-16.5467,-41.4595,-38.884,-19.355,-15.3815,-16.0992,-26.1423,-24.9685,-17.9768,-22.6313,-16.539,-41.5877,-38.7878,-17.2705 -libaom-v3.12.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,3.0184,4.4627,5.4889,3.235,8.1903,2.62,-8.0057,-9.5042,7.6045,8.6335,3.0102,4.4518,5.4504,3.1786 -libaom-v3.12.0-unconstrained,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,1.8613,-0.0444,-2.8929,1.5533,3.5275,1.4147,1.6692,0.9064,3.4781,2.7601,1.8501,-0.0542,-2.9227,1.64 +v14.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-16.9577,-41.9948,-39.3696,-19.7848,-15.6443,-16.4901,-22.5047,-21.304,-18.4467,-23.0895,-16.9498,-42.1204,-39.2738,-17.6872 +v15.0.0,AI,A5,Vertical_Bayshore_270x480_2997.y4m,-16.8812,-41.8955,-39.2795,-19.7048,-15.5953,-16.4174,-22.3239,-21.1266,-18.3593,-23.0043,-16.8733,-42.0216,-39.1836,-17.6096 v02.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-3.2663,-8.3026,-13.3877,-4.0433,-0.9046,-3.3935,-4.3021,-4.0505,-0.9838,-5.117,-3.2689,-8.3304,-13.4483,-3.7657 v03.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-5.3615,-13.2502,-20.4038,-6.5491,-1.9232,-4.7302,-4.7147,-4.4218,-2.4735,-8.085,-5.3712,-13.2748,-20.5053,-6.1225 v04.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-7.81,-16.9142,-26.3815,-9.2565,-4.3886,-7.104,-7.1926,-6.8128,-4.925,-10.7365,-7.8217,-16.9294,-26.4541,-8.7877 @@ -643,8 +641,8 @@ v10.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-15.2127,-32.8586,-39.836 v11.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-15.0228,-32.993,-41.2242,-17.5729,-13.1904,-13.6355,-17.1677,-16.5104,-14.6591,-24.8834,-15.0233,-32.9911,-41.2875,-16.6762 v12.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-14.9711,-32.8307,-41.1842,-17.5182,-12.8979,-13.3656,-17.1414,-16.5005,-14.5672,-24.8015,-14.9748,-32.8382,-41.2502,-16.6229 v13.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-15.282,-33.7157,-40.9633,-17.8572,-15.3882,-13.6842,-17.5161,-16.7163,-14.8276,-25.5984,-15.2858,-33.7313,-41.0147,-16.9605 -libaom-v3.12.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-0.0114,1.5243,1.5552,0.1102,0.1033,-0.3885,-5.4446,-0.8719,3.7425,1.3714,-0.0114,1.5242,1.5557,0.1064 -libaom-v3.12.0-unconstrained,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,0.4024,-1.1976,-1.5765,0.2685,0.7665,0.3603,-0.4584,0.8606,1.8326,0.4266,0.4024,-1.1959,-1.5738,0.3601 +v14.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-15.3187,-33.7443,-40.9899,-17.8928,-15.4159,-13.7168,-17.5664,-16.765,-14.8585,-25.6325,-15.3225,-33.7598,-41.0413,-16.9967 +v15.0.0,AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-15.3187,-33.7443,-40.9899,-17.8928,-15.4159,-13.7168,-17.5664,-16.765,-14.8585,-25.6325,-15.3225,-33.7598,-41.0413,-16.9967 v02.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-3.0356,-14.2092,-17.125,-4.2263,-2.4338,-2.6403,-5.6505,-5.6432,-2.0876,-6.8661,-3.0357,-14.2126,-17.1283,-3.6404 v03.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-5.0771,-17.7091,-19.8012,-6.3756,-3.577,-4.05,-7.5133,-7.2143,-3.3595,-9.0881,-5.0772,-17.7134,-19.8036,-5.7607 v04.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-7.8766,-22.753,-26.1868,-9.4762,-5.9069,-6.8094,-11.8899,-11.0046,-6.0388,-12.9328,-7.8768,-22.7555,-26.187,-8.7672 @@ -657,8 +655,8 @@ v10.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-13.9232,-34.1018,-32.4825 v11.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-13.8129,-33.3844,-31.0603,-15.6688,-12.0072,-12.3355,-22.5428,-21.6508,-13.7521,-20.4565,-13.8131,-33.3862,-31.057,-14.8953 v12.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-13.9337,-33.2398,-31.0764,-15.7729,-12.1064,-12.3543,-22.6714,-21.6679,-13.8655,-20.5321,-13.9339,-33.2413,-31.0755,-15.0047 v13.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-13.997,-33.3519,-30.7778,-15.8247,-12.7635,-12.5673,-22.9549,-22.0169,-13.9645,-20.6254,-13.9972,-33.3528,-30.7691,-15.0654 -libaom-v3.12.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,1.892,4.5207,7.4319,2.3346,-0.5559,-1.5277,-3.9658,-3.6559,19.4022,16.6884,1.8923,4.4635,7.3309,2.6128 -libaom-v3.12.0-unconstrained,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,0.6428,0.3198,2.3099,0.7225,-0.7584,-1.0382,-1.2582,-1.3378,3.3746,3.3107,0.6409,0.3025,2.271,0.7837 +v14.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-14.0089,-33.3716,-30.7967,-15.8371,-12.7728,-12.5807,-22.9868,-22.045,-13.9748,-20.6404,-14.009,-33.3725,-30.7881,-15.0779 +v15.0.0,AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-14.0089,-33.3716,-30.7967,-15.8371,-12.7728,-12.5807,-22.9868,-22.045,-13.9748,-20.6404,-14.009,-33.3725,-30.7881,-15.0779 v02.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-7.0405,-16.1077,-14.9995,-8.0276,-7.2548,-8.1157,-3.7236,-4.6286,-5.8003,-10.947,-7.0411,-15.9526,-14.8664,-8.2524 v03.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-11.3624,-16.0062,-14.9397,-11.8372,-8.5224,-10.0991,-5.2597,-5.9951,-9.0451,-12.8416,-11.3673,-15.7473,-14.7038,-11.9455 v04.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-18.1967,-28.4704,-29.0023,-19.4348,-16.1107,-17.4842,-11.7856,-12.8472,-16.7236,-22.0505,-18.2017,-28.3639,-28.8075,-19.7489 @@ -671,8 +669,8 @@ v10.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-32.5917,-43.4833,-43.4863,- v11.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-32.891,-43.674,-43.1406,-34.151,-28.9029,-30.3408,-34.6393,-31.8182,-32.3288,-42.0179,-32.8988,-43.4795,-42.9465,-34.474 v12.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-33.2666,-43.8089,-43.3867,-34.4999,-29.0956,-30.5658,-34.8775,-31.9625,-32.6725,-42.3812,-33.2731,-43.6624,-43.226,-34.8178 v13.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-33.4485,-43.9527,-43.3839,-34.6669,-35.8203,-30.9543,-35.1138,-32.2052,-32.9,-41.9959,-33.4551,-43.7818,-43.2001,-34.9765 -libaom-v3.12.0,AI,B1,Life_1080p30_v2.y4m,-0.3078,4.2087,3.1619,0.0805,-0.1828,-0.8355,-3.0665,-1.9131,3.9521,3.6162,-0.3079,4.2075,3.1632,0.0455 -libaom-v3.12.0-unconstrained,AI,B1,Life_1080p30_v2.y4m,0.5349,1.4049,0.9137,0.6399,0.2591,-0.0159,-0.0454,-0.1811,1.8476,2.5153,0.5349,1.4053,0.913,0.6275 +v14.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-33.4791,-43.9826,-43.4101,-34.697,-35.848,-30.9848,-35.1669,-32.2579,-32.9308,-42.0269,-33.4857,-43.8116,-43.2267,-35.0065 +v15.0.0,AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-33.4791,-43.9826,-43.4101,-34.697,-35.848,-30.9848,-35.1669,-32.2579,-32.9308,-42.0269,-33.4857,-43.8116,-43.2267,-35.0065 v02.0.0,AI,B1,Life_1080p30_v2.y4m,-3.8622,-10.428,-8.1954,-4.5272,-3.2161,-3.4115,-4.3791,-4.6089,-3.2817,-7.5993,-3.8617,-10.4199,-8.1996,-4.4135 v03.0.0,AI,B1,Life_1080p30_v2.y4m,-6.4233,-10.5344,-7.7358,-6.7537,-4.7539,-5.2115,-6.1486,-5.8797,-4.8633,-9.4335,-6.4226,-10.5263,-7.7392,-6.6864 v04.0.0,AI,B1,Life_1080p30_v2.y4m,-10.5114,-21.7303,-17.2669,-11.6362,-8.8472,-9.1541,-10.4049,-10.1815,-9.3299,-15.8275,-10.5112,-21.7208,-17.2685,-11.4308 @@ -685,8 +683,8 @@ v10.0.0,AI,B1,Life_1080p30_v2.y4m,-19.3928,-33.0543,-26.4628,-20.736,-16.2223,-1 v11.0.0,AI,B1,Life_1080p30_v2.y4m,-19.3812,-32.4477,-26.0402,-20.6587,-16.2551,-16.4432,-22.5879,-21.5759,-18.8316,-26.03,-19.3801,-32.4398,-26.0412,-20.3766 v12.0.0,AI,B1,Life_1080p30_v2.y4m,-19.6075,-32.6478,-26.0312,-20.8666,-16.5495,-16.6822,-22.8009,-21.7216,-19.0859,-26.204,-19.6064,-32.6347,-26.0338,-20.5865 v13.0.0,AI,B1,Life_1080p30_v2.y4m,-19.6025,-32.7827,-25.8704,-20.8559,-17.2334,-16.716,-22.8372,-21.7658,-19.0321,-26.1002,-19.6015,-32.774,-25.8707,-20.5759 -libaom-v3.12.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-5.8961,-3.8616,-3.3245,-5.7274,-4.7363,-5.6994,-5.7751,-5.9374,-0.862,-2.896,-6.5092,-4.2474,-3.6057,-6.0484 -libaom-v3.12.0-unconstrained,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-3.7992,-3.5679,-3.0593,-3.7481,-0.6629,-1.8149,3.1703,1.779,0.038,-2.3165,-4.6261,-4.0642,-3.4484,-4.4019 +v14.0.0,AI,B1,Life_1080p30_v2.y4m,-19.6273,-32.802,-25.8968,-20.8792,-17.2516,-16.7399,-22.873,-21.8021,-19.0546,-26.1238,-19.6262,-32.7933,-25.897,-20.5993 +v15.0.0,AI,B1,Life_1080p30_v2.y4m,-19.6273,-32.802,-25.8968,-20.8792,-17.2516,-16.7399,-22.873,-21.8021,-19.0546,-26.1238,-19.6262,-32.7933,-25.897,-20.5993 v02.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-2.1101,-15.469,-7.8482,-2.9786,-1.6604,-2.1775,-0.7647,-0.6911,-1.1176,-6.0868,-2.2157,-15.8899,-8.0547,-2.9216 v03.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-3.5115,-20.2447,-8.823,-4.5239,-2.0935,-3.1567,-1.5534,-1.0555,-1.8322,-8.2921,-3.8164,-20.6568,-9.1162,-4.6283 v04.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-7.0932,-37.9897,-20.8942,-9.3307,-5.3292,-6.5392,-4.3399,-3.8383,-6.0449,-16.6519,-7.2078,-38.1495,-20.6495,-9.2079 @@ -699,8 +697,8 @@ v10.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-15.7243,-52.8252,-31.2218,-18.5305,-1 v11.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-15.5619,-52.8439,-30.6695,-18.368,-15.6761,-15.9494,-19.002,-17.6052,-17.6416,-29.4915,-15.7373,-52.9932,-30.5117,-18.1198 v12.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-16.2757,-53.5422,-31.4551,-19.0894,-16.366,-16.662,-19.1981,-17.8611,-18.4787,-30.231,-16.4778,-53.6943,-31.2949,-18.844 v13.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-16.4828,-53.9333,-31.7677,-19.3284,-17.007,-16.9774,-19.6932,-18.4317,-18.764,-30.5138,-16.702,-54.0784,-31.594,-19.0828 -libaom-v3.12.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-0.521,1.7372,2.6595,-0.2835,-1.374,-1.7591,-2.6541,-2.6756,2.2802,3.4264,-0.4322,1.4058,2.2198,-0.1612 -libaom-v3.12.0-unconstrained,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-0.6946,0.0581,-0.8126,-0.6481,-1.1595,-1.3277,-0.2145,-0.8766,0.3136,1.8714,-0.8536,-0.1631,-1.0766,-0.7809 +v14.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-16.5033,-53.9488,-31.7888,-19.3487,-17.019,-16.9966,-19.7407,-18.4772,-18.7882,-30.5331,-16.7228,-54.0939,-31.6152,-19.1038 +v15.0.0,AI,B1,MINECRAFT_1080p_60_8bit.y4m,-16.5033,-53.9488,-31.7888,-19.3487,-17.019,-16.9966,-19.7407,-18.4772,-18.7882,-30.5331,-16.7228,-54.0939,-31.6152,-19.1038 v02.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-2.6829,-13.1249,-14.8153,-3.7968,-5.1923,-5.2038,-4.0346,-3.7392,-3.7939,-4.0434,-2.5234,-13.7121,-15.2314,-3.1231 v03.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-5.854,-18.8354,-21.2289,-7.2534,-6.8921,-7.3361,-5.003,-4.2876,-5.716,-8.8428,-5.8549,-19.3365,-21.5957,-6.5686 v04.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-8.2962,-25.5435,-27.9638,-10.1565,-9.2971,-9.823,-9.057,-8.4911,-8.6576,-13.0691,-8.1863,-26.1077,-28.3444,-9.1885 @@ -713,8 +711,8 @@ v10.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.8195,-35.6412,-38.3582,-17.15 v11.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.7873,-36.0719,-38.6468,-17.1665,-14.981,-15.1842,-22.2898,-20.7855,-16.3211,-24.1218,-14.1191,-36.4916,-38.5725,-15.3618 v12.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.8506,-35.9691,-38.7953,-17.2305,-15.0259,-15.2523,-21.9668,-20.504,-16.419,-24.1439,-14.1736,-36.411,-38.7539,-15.4197 v13.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.9426,-36.4118,-39.1558,-17.3602,-16.0895,-15.4049,-22.4082,-20.721,-16.5675,-24.4306,-14.2857,-36.8445,-39.2155,-15.5498 -libaom-v3.12.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,2.9538,-2.6771,-2.9705,2.3418,-0.6217,1.2252,-2.8572,-0.9382,-0.2346,1.6925,2.9188,-2.6997,-3.0233,2.1966 -libaom-v3.12.0-unconstrained,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,1.4337,-3.0001,-2.6923,0.7482,0.5556,1.1821,0.292,1.189,0.0206,0.1125,1.4262,-2.9843,-2.6217,0.3121 +v14.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.9691,-36.4411,-39.1798,-17.3868,-16.1079,-15.4318,-22.4623,-20.7738,-16.5961,-24.4594,-14.3111,-36.8749,-39.2399,-15.5754 +v15.0.0,AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.9691,-36.4411,-39.1798,-17.3868,-16.1079,-15.4318,-22.4623,-20.7738,-16.5961,-24.4594,-14.3111,-36.8749,-39.2399,-15.5754 v02.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-3.1662,-8.4168,-6.9306,-3.9078,-3.4318,-3.7068,-4.7726,-4.3644,-4.1502,-4.3485,-3.1755,-8.4254,-6.8012,-4.5212 v03.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-5.0886,-11.0077,-7.318,-5.7555,-5.053,-5.5358,-4.8486,-4.5438,-5.9471,-5.8652,-5.1239,-10.9919,-7.2641,-6.4071 v04.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-13.8361,-26.277,-22.3756,-15.5758,-13.9065,-14.4521,-15.3329,-15.07,-15.5976,-16.345,-13.8651,-26.3053,-22.1156,-16.8139 @@ -727,8 +725,8 @@ v10.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-21.0342,-27.179,-24. v11.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-20.8243,-28.1944,-24.8394,-21.7282,-21.3139,-21.3792,-21.8067,-21.6764,-21.8714,-22.3332,-20.8485,-28.196,-24.6581,-22.4642 v12.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-20.8561,-28.745,-25.1861,-21.8279,-21.2644,-21.3883,-22.2294,-22.0774,-21.9094,-22.4693,-20.877,-28.7551,-24.9557,-22.6297 v13.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-24.7518,-40.342,-34.295,-26.9161,-25.7932,-24.4348,-26.139,-25.8998,-26.0094,-28.6796,-24.7593,-40.3384,-33.3318,-28.5573 -libaom-v3.12.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-1.039,-4.3997,-1.3694,-1.1086,-1.41,-1.0564,-1.7804,-2.2177,-1.6543,-1.4112,-1.0396,-4.3983,-1.361,-1.1977 -libaom-v3.12.0-unconstrained,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,0.1116,-9.4752,-2.1841,-0.1738,-0.4153,-0.0319,-1.5381,-1.4155,-0.5084,-0.8756,0.1122,-9.4824,-2.1612,-0.0853 +v14.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-24.8388,-40.4084,-34.3615,-26.9996,-25.8492,-24.5052,-26.2259,-25.985,-26.075,-28.7618,-24.8463,-40.4049,-33.398,-28.6384 +v15.0.0,AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-24.8388,-40.4084,-34.3615,-26.9996,-25.8492,-24.5052,-26.2259,-25.985,-26.075,-28.7618,-24.8463,-40.4049,-33.398,-28.6384 v02.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-20.1756,-31.0448,-32.1277,-21.1228,-20.1729,-20.5083,-16.7288,-16.4206,-19.7841,-24.8899,-20.1806,-31.0395,-32.1347,-21.3717 v03.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-25.5137,-34.1553,-38.4142,-26.3804,-23.172,-24.4617,-21.0888,-20.285,-23.381,-30.5339,-25.5183,-34.0755,-38.4111,-26.6328 v04.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-29.5727,-38.3632,-48.4633,-30.8149,-26.2159,-27.7582,-23.528,-22.7547,-26.8613,-36.7932,-29.5786,-38.2969,-48.4634,-31.2789 @@ -741,8 +739,8 @@ v10.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-37.6026,-39.4353,-55.86 v11.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-38.0816,-47.9178,-56.4314,-39.3697,-33.5518,-35.3551,-30.6325,-30.3145,-34.9382,-46.6242,-38.0866,-47.9097,-56.4088,-39.6761 v12.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-38.2205,-47.2974,-56.4096,-39.478,-33.6301,-35.4491,-31.0021,-30.6875,-35.0162,-46.788,-38.2253,-47.281,-56.3815,-39.7989 v13.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-38.5526,-46.9765,-61.2763,-40.0233,-42.1288,-35.9033,-31.4378,-31.1467,-35.5595,-48.6656,-38.5573,-46.9103,-61.2599,-40.3574 -libaom-v3.12.0,AI,B1,STARCRAFT_1080p60.y4m,-1.4977,-0.7778,-0.2151,-1.4076,-2.6854,-3.0418,-5.8323,-8.0609,1.6651,13.0105,-1.4978,-0.7775,-0.2149,-1.3876 -libaom-v3.12.0-unconstrained,AI,B1,STARCRAFT_1080p60.y4m,-2.0967,-3.7897,-4.7126,-2.3198,-2.2248,-2.3144,-3.0906,-4.0363,-0.9287,4.5495,-2.0971,-3.7916,-4.7185,-2.2431 +v14.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-38.6042,-47.0665,-61.3382,-40.077,-42.1564,-35.9547,-31.5399,-31.2462,-35.6116,-48.7289,-38.6089,-47.0008,-61.3219,-40.4127 +v15.0.0,AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-38.6042,-47.0665,-61.3382,-40.077,-42.1564,-35.9547,-31.5399,-31.2462,-35.6116,-48.7289,-38.6089,-47.0008,-61.3219,-40.4127 v02.0.0,AI,B1,STARCRAFT_1080p60.y4m,-4.6678,-14.198,-19.2461,-6.0111,-8.5701,-8.9501,-2.8869,-2.8749,-6.1942,-10.5828,-4.6689,-14.2165,-19.2562,-5.5966 v03.0.0,AI,B1,STARCRAFT_1080p60.y4m,-8.6429,-16.0025,-21.6308,-9.7696,-10.7183,-11.8186,-5.2404,-4.7535,-8.5562,-14.6437,-8.6442,-16.0209,-21.6428,-9.4151 v04.0.0,AI,B1,STARCRAFT_1080p60.y4m,-12.4106,-23.7988,-31.6899,-14.1729,-14.0942,-15.3366,-10.1114,-9.1639,-12.5754,-20.6971,-12.4117,-23.809,-31.6951,-13.6511 @@ -755,8 +753,8 @@ v10.0.0,AI,B1,STARCRAFT_1080p60.y4m,-23.3452,-34.2857,-40.4893,-24.9838,-23.1056 v11.0.0,AI,B1,STARCRAFT_1080p60.y4m,-23.7142,-34.9043,-41.026,-25.3797,-23.9755,-25.2043,-24.1311,-23.2499,-24.569,-37.5539,-23.7146,-34.9113,-41.0282,-24.94 v12.0.0,AI,B1,STARCRAFT_1080p60.y4m,-24.7578,-35.5529,-41.7615,-26.3792,-25.041,-26.2556,-25.1308,-24.2854,-25.6372,-38.3604,-24.7581,-35.5659,-41.7639,-25.9526 v13.0.0,AI,B1,STARCRAFT_1080p60.y4m,-24.9789,-35.7045,-41.509,-26.5654,-27.9927,-26.4139,-25.4974,-24.632,-25.8219,-38.257,-24.9796,-35.7143,-41.5141,-26.1547 -libaom-v3.12.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-0.396,11.3278,6.7104,0.211,-0.3448,-0.9568,-4.0314,-1.8382,2.7615,6.3028,-0.4043,11.3048,6.6972,0.0839 -libaom-v3.12.0-unconstrained,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,0.6852,6.5056,3.0481,1.0703,0.1363,-0.1578,0.0948,-0.0752,2.1678,5.165,0.6839,6.4645,3.0476,0.9707 +v14.0.0,AI,B1,STARCRAFT_1080p60.y4m,-24.9982,-35.7211,-41.5291,-26.5848,-28.0083,-26.4333,-25.5313,-24.6647,-25.8432,-38.2783,-24.9989,-35.731,-41.5342,-26.1742 +v15.0.0,AI,B1,STARCRAFT_1080p60.y4m,-24.9982,-35.7211,-41.5291,-26.5848,-28.0083,-26.4333,-25.5313,-24.6647,-25.8432,-38.2783,-24.9989,-35.731,-41.5342,-26.1742 v02.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-1.8088,-17.6392,-20.1232,-3.5306,-3.325,-3.6102,-1.0374,-1.1253,-1.7641,-9.2797,-1.8112,-17.5495,-20.1058,-2.7318 v03.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-4.186,-16.7889,-22.0303,-5.7496,-4.324,-4.8956,-1.6037,-1.212,-3.0915,-11.2524,-4.1903,-16.7835,-22.0035,-5.0558 v04.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-7.087,-21.5746,-24.8679,-8.718,-6.4363,-7.3455,-6.4085,-5.6729,-5.6254,-13.8543,-7.0866,-21.5325,-24.8425,-8.0212 @@ -769,8 +767,8 @@ v10.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-16.1402,-39.0136,-40.4035,-18. v11.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-16.4391,-39.0098,-42.38,-19.1245,-15.8631,-15.7422,-19.6688,-19.0998,-17.3634,-29.0162,-16.4337,-38.9353,-42.3745,-17.9998 v12.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-16.7895,-39.6557,-42.4337,-19.4674,-16.2229,-16.0972,-20.7224,-20.0729,-17.6858,-29.2216,-16.7819,-39.5761,-42.4294,-18.3453 v13.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-17.2063,-38.7032,-44.7057,-19.9115,-15.676,-16.3439,-22.3515,-21.6171,-18.1663,-30.2694,-17.1989,-38.6315,-44.7019,-18.7942 -libaom-v3.12.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-0.8958,-0.8662,-1.1356,-0.9002,-0.3425,-0.528,-0.8603,-1.1918,-0.9689,-3.0568,-0.8957,-0.8668,-1.1345,-0.8859 -libaom-v3.12.0-unconstrained,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-0.2803,-1.5085,-1.5048,-0.4042,0.8505,0.5567,-0.2795,-0.1712,-0.232,-3.6476,-0.2804,-1.5098,-1.5027,-0.416 +v14.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-17.2617,-38.7744,-44.7672,-19.9678,-15.6949,-16.3796,-22.455,-21.7191,-18.2148,-30.3217,-17.2542,-38.7029,-44.7633,-18.8505 +v15.0.0,AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-17.2617,-38.7744,-44.7672,-19.9678,-15.6949,-16.3796,-22.455,-21.7191,-18.2148,-30.3217,-17.2542,-38.7029,-44.7633,-18.8505 v02.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-2.0688,-9.1455,-9.6534,-2.8129,-1.5274,-2.3489,-3.5176,-3.1444,-2.7696,-8.3494,-2.0677,-9.1478,-9.6545,-2.9049 v03.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-7.7468,-11.2057,-12.4558,-8.1572,-6.0113,-7.2241,-5.8288,-5.7785,-7.2747,-10.5219,-7.7468,-11.2046,-12.4581,-8.1799 v04.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-13.7219,-19.0311,-21.2938,-14.3811,-11.4657,-13.1286,-11.7307,-11.9081,-13.529,-16.234,-13.7217,-19.0299,-21.2939,-14.5277 @@ -783,8 +781,8 @@ v10.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-26.991 v11.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-27.4967,-31.4177,-32.1608,-27.9394,-23.6695,-27.7304,-26.4843,-25.1349,-26.3851,-33.3077,-27.4966,-31.4118,-32.1503,-28.0662 v12.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-27.4413,-31.5108,-31.9904,-27.8865,-23.4995,-27.5484,-26.2333,-24.9619,-26.3444,-33.0719,-27.4413,-31.506,-31.9832,-28.0114 v13.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-27.7652,-31.8866,-32.7762,-28.2308,-36.3984,-27.9683,-26.4273,-25.2432,-26.6652,-32.5333,-27.765,-31.885,-32.7666,-28.3469 -libaom-v3.12.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-0.8894,-1.0218,-1.5519,-0.9308,-0.5887,-1.1881,-1.2707,-1.4889,-1.2809,-0.5717,-0.8865,-1.0254,-1.521,-0.973 -libaom-v3.12.0-unconstrained,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-2.3854,-1.1937,-1.2871,-2.281,-2.5784,-3.194,-3.4062,-3.3971,-3.1409,-4.0953,-2.3836,-1.178,-1.2447,-2.174 +v14.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-27.7911,-31.9031,-32.7955,-28.2556,-36.4189,-27.9942,-26.4646,-25.2801,-26.6911,-32.5573,-27.7909,-31.9014,-32.7859,-28.3713 +v15.0.0,AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-27.7911,-31.9031,-32.7955,-28.2556,-36.4189,-27.9942,-26.4646,-25.2801,-26.6911,-32.5573,-27.7909,-31.9014,-32.7859,-28.3713 v02.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,2.3353,-6.9321,-0.1596,1.792,2.153,2.1069,-0.2608,0.512,0.7888,-4.6686,2.3315,-6.8516,-0.0753,1.647 v03.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-8.459,-14.4285,-10.3418,-8.8167,-9.635,-9.7973,-7.9947,-7.9003,-10.2051,-17.025,-8.4664,-14.3467,-10.2425,-8.9074 v04.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-22.9622,-42.042,-34.5816,-24.4931,-26.0229,-25.8109,-19.5142,-19.3387,-25.3994,-34.8643,-22.974,-41.9745,-34.5578,-25.2001 @@ -797,8 +795,8 @@ v10.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-39.1608,-55.8151,-48.378,- v11.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.3143,-56.3855,-49.9239,-42.5102,-41.5442,-42.1127,-38.6108,-36.8892,-41.1738,-52.2861,-41.3174,-56.2973,-49.9007,-43.1507 v12.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.1548,-56.6098,-49.7836,-42.3722,-41.3347,-42.0465,-38.454,-36.6329,-40.904,-52.0065,-41.1611,-56.5465,-49.7758,-42.9923 v13.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.0833,-56.7077,-50.3626,-42.3542,-45.1141,-42.2061,-39.8296,-37.6589,-39.1697,-52.0501,-40.9978,-56.628,-50.3519,-43.041 -libaom-v3.12.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,4.3867,5.6577,4.3458,4.4886,5.0008,4.5946,4.0034,4.0016,4.7326,4.0236,4.2985,5.7181,4.4352,4.6826 -libaom-v3.12.0-unconstrained,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,4.6464,5.1704,3.7138,4.641,4.7611,4.4799,4.601,4.4582,4.8332,3.7063,4.5271,5.4114,3.9084,4.6661 +v14.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.9565,-56.7394,-50.4134,-43.1304,-45.3953,-43.0364,-39.928,-37.7634,-41.7511,-52.1539,-41.9663,-56.6595,-50.4041,-43.7851 +v15.0.0,AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.9565,-56.7394,-50.4134,-43.1304,-45.3953,-43.0364,-39.928,-37.7634,-41.7511,-52.1539,-41.9663,-56.6595,-50.4041,-43.7851 v02.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-0.1038,-11.4361,-12.1517,-1.1418,-0.8532,-1.4096,0.4242,0.2818,-2.2948,-10.293,-0.0714,-11.4325,-12.142,-1.1246 v03.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-8.052,-17.1128,-18.0494,-8.8997,-7.4837,-8.5374,-4.2148,-4.5458,-9.0275,-16.6138,-8.0391,-17.1297,-18.0396,-8.8828 v04.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-15.5195,-29.7057,-28.3714,-16.7651,-16.2566,-17.193,-13.4414,-13.8112,-17.7106,-26.7432,-15.5015,-29.7007,-28.2979,-16.8079 @@ -811,8 +809,8 @@ v10.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-31.03 v11.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.6142,-47.9723,-49.535,-34.1181,-33.8341,-35.6739,-35.5298,-33.9973,-34.3262,-44.305,-32.6154,-48.0306,-49.5731,-34.4458 v12.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.5123,-47.9691,-49.3749,-34.0163,-33.694,-35.5455,-35.6007,-33.9643,-34.232,-44.1288,-32.5129,-48.0268,-49.4071,-34.3352 v13.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.8545,-48.4853,-49.2249,-34.3418,-40.618,-35.8865,-36.0543,-34.429,-34.5898,-44.2447,-32.8621,-48.5418,-49.2688,-34.6816 -libaom-v3.12.0,AI,B2,MobileDeviceScreenSharing.y4m,136.9899,62.4698,0.0,130.4466,134.0166,132.8872,143.3488,135.65,126.7865,112.1669,136.9991,62.4665,0.0,132.569 -libaom-v3.12.0-unconstrained,AI,B2,MobileDeviceScreenSharing.y4m,128.7444,73.8457,92.6646,123.5422,132.7672,130.7169,125.3481,127.0164,127.2943,123.0881,128.7453,74.2826,93.0861,125.7162 +v14.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.8703,-48.5008,-49.2369,-34.3575,-40.6311,-35.8979,-36.0776,-34.4514,-34.6045,-44.2609,-32.8775,-48.5572,-49.2807,-34.6973 +v15.0.0,AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.8703,-48.5008,-49.2369,-34.3575,-40.6311,-35.8979,-36.0776,-34.4514,-34.6045,-44.2609,-32.8775,-48.5572,-49.2807,-34.6973 v02.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-0.8301,-30.6909,-17.0633,-3.2898,0.6046,0.3971,0.9864,1.3695,-1.4331,-3.8378,-0.8294,-30.6425,-17.0379,-1.7067 v03.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-13.3267,-42.0921,-29.4125,-15.7157,-12.8343,-13.0221,-10.1075,-9.8429,-13.0555,-19.4849,-13.3242,-42.2244,-29.5319,-14.135 v04.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-21.303,-49.1901,-50.8646,-24.4092,-21.4965,-21.5709,-18.5236,-18.3642,-22.5209,-31.5537,-21.3005,-49.3144,-50.4564,-22.3536 @@ -825,8 +823,8 @@ v10.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-39.6704,-64.3515,-65.2683,-42.7273, v11.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-41.0233,-64.8375,-65.1826,-43.9184,-41.7004,-42.2177,-45.551,-43.305,-43.1193,-51.7713,-41.0207,-64.8561,-65.0569,-42.1074 v12.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-41.0004,-65.1083,-65.374,-43.911,-41.888,-42.3373,-45.3591,-43.1077,-43.1168,-52.0276,-40.9971,-65.1365,-65.0827,-42.0825 v13.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-41.3848,-64.6507,-65.3303,-44.2137,-43.8877,-42.4633,-45.5789,-43.4261,-43.479,-51.0615,-41.3823,-64.6444,-65.0474,-42.458 -libaom-v3.12.0,AI,B2,SceneComposition_2.y4m,34.2838,16.0651,5.0984,32.2118,35.1884,33.6198,34.2838,35.1072,31.3503,23.4514,34.2775,16.0838,5.1278,30.8335 -libaom-v3.12.0-unconstrained,AI,B2,SceneComposition_2.y4m,38.9576,21.8892,6.6896,36.0221,41.5136,40.0338,59.2563,51.3176,39.8357,31.3546,38.958,21.9026,6.7098,35.0913 +v14.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-41.4065,-64.6681,-65.3489,-44.235,-43.9091,-42.4858,-45.6182,-43.4655,-43.5031,-51.0811,-41.404,-64.6619,-65.066,-42.4796 +v15.0.0,AI,B2,MobileDeviceScreenSharing.y4m,-41.4065,-64.6681,-65.3489,-44.235,-43.9091,-42.4858,-45.6182,-43.4655,-43.5031,-51.0811,-41.404,-64.6619,-65.066,-42.4796 v02.0.0,AI,B2,SceneComposition_2.y4m,-2.5738,-30.0126,-42.2316,-6.2425,-2.5346,-2.4466,0.8392,1.5909,-5.1235,-18.5198,-2.5716,-30.0074,-42.2172,-5.7145 v03.0.0,AI,B2,SceneComposition_2.y4m,-14.0215,-23.1804,-47.1082,-16.3036,-14.735,-14.5902,-17.419,-13.5669,-16.0868,-24.8293,-14.0191,-23.1808,-47.0979,-15.8644 v04.0.0,AI,B2,SceneComposition_2.y4m,-23.563,-39.6192,-58.1875,-26.5804,-26.2744,-26.4412,-23.5426,-22.6001,-27.7338,-40.3543,-23.5613,-39.6173,-58.175,-26.3218 @@ -839,8 +837,8 @@ v10.0.0,AI,B2,SceneComposition_2.y4m,-42.1296,-59.2731,-69.5084,-44.978,-44.0446 v11.0.0,AI,B2,SceneComposition_2.y4m,-44.6708,-61.6078,-70.9786,-47.498,-46.547,-47.2307,-45.2467,-44.9001,-48.1677,-57.8592,-44.6707,-61.6029,-70.9652,-47.1569 v12.0.0,AI,B2,SceneComposition_2.y4m,-44.4455,-61.0375,-70.8564,-47.1874,-46.2062,-47.068,-45.6302,-45.2912,-47.7053,-57.6693,-44.4449,-61.029,-70.8419,-46.906 v13.0.0,AI,B2,SceneComposition_2.y4m,-44.9884,-61.7276,-70.6157,-47.6859,-50.2706,-47.2656,-46.0042,-45.2004,-47.9741,-58.4471,-44.9882,-61.7202,-70.6001,-47.4256 -libaom-v3.12.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,22.0715,11.545,14.1273,21.2219,20.4311,19.8337,21.681,21.7173,18.4054,14.9641,22.1461,11.9768,14.4036,18.9296 -libaom-v3.12.0-unconstrained,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,21.3201,17.3103,19.8831,21.0521,25.2378,24.2759,25.594,25.5444,23.6091,19.7162,21.6298,17.5995,20.2466,20.6617 +v14.0.0,AI,B2,SceneComposition_2.y4m,-44.9905,-61.7308,-70.6315,-47.6931,-50.3223,-47.3073,-46.0292,-45.2291,-48.0142,-58.4763,-44.9906,-61.7233,-70.6158,-47.4358 +v15.0.0,AI,B2,SceneComposition_2.y4m,-44.9905,-61.7308,-70.6315,-47.6931,-50.3223,-47.3073,-46.0292,-45.2291,-48.0142,-58.4763,-44.9906,-61.7233,-70.6158,-47.4358 v02.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,0.0949,-9.8069,-10.2914,-0.8876,1.7015,1.294,0.3047,0.5652,-1.1517,-6.2776,0.1016,-9.673,-10.2462,-2.3686 v03.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-7.8601,-11.9567,-16.3868,-8.4714,-6.5088,-6.4429,-7.1407,-6.9849,-8.1967,-12.1734,-7.8436,-11.9409,-16.3361,-9.6519 v04.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-26.888,-44.1034,-45.2298,-28.7218,-25.9794,-25.8122,-18.4573,-18.7234,-26.7527,-36.0413,-26.8699,-44.024,-45.2052,-30.6085 @@ -853,8 +851,8 @@ v10.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-47.5285,-69.8874,-72.1633,-5 v11.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-49.7257,-70.9685,-73.1141,-52.552,-47.7325,-48.1393,-45.3719,-43.2527,-50.7594,-61.7887,-49.7224,-70.9913,-73.0805,-54.7741 v12.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-49.6781,-70.8717,-73.0019,-52.478,-47.6521,-48.0777,-45.4004,-43.2228,-50.6492,-61.5663,-49.6744,-70.8919,-72.9744,-54.7084 v13.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-49.8221,-71.0669,-72.747,-52.5945,-51.0452,-48.3972,-45.4645,-43.2756,-50.7987,-61.7592,-49.8196,-71.0852,-72.7216,-54.8182 -libaom-v3.12.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,10.669,11.2877,10.8894,10.7215,11.6378,10.975,15.8538,13.7414,10.8504,11.4242,9.3128,10.8965,10.2128,9.5815 -libaom-v3.12.0-unconstrained,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,10.0729,11.31,10.4238,10.1377,11.2968,10.4814,10.5534,10.2953,11.4412,9.4339,8.4772,10.5111,10.5378,8.8287 +v14.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-49.8342,-71.0725,-72.7549,-52.6025,-51.0538,-48.4264,-45.4946,-43.2999,-50.8172,-61.7641,-49.8318,-71.0905,-72.7295,-54.8258 +v15.0.0,AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-49.8342,-71.0725,-72.7549,-52.6025,-51.0538,-48.4264,-45.4946,-43.2999,-50.8172,-61.7641,-49.8318,-71.0905,-72.7295,-54.8258 v02.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-2.2616,-7.8833,-6.5511,-2.6211,-2.9581,-2.8101,-4.1827,-3.693,-1.4385,-5.664,-1.9238,-8.5987,-6.6306,-2.7914 v03.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-9.667,-11.3284,-11.6889,-9.7995,-8.954,-9.4349,-7.2625,-6.6451,-9.0548,-12.6063,-10.0899,-12.0965,-11.7816,-10.3398 v04.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-16.1335,-20.3077,-19.3965,-16.4064,-16.7057,-17.1925,-17.2666,-16.1097,-16.62,-23.801,-16.9414,-21.9826,-20.3734,-17.4619 @@ -867,8 +865,8 @@ v10.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-35.409,-48.5122,-46.5392,-3 v11.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-37.7107,-49.2105,-47.8901,-38.5532,-38.2453,-39.1877,-40.8704,-39.8273,-38.1568,-46.4214,-39.8267,-47.5206,-46.376,-40.622 v12.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-37.6826,-49.1295,-47.7026,-38.5179,-38.4145,-39.1798,-40.781,-39.7657,-37.9533,-45.7125,-39.7459,-47.7306,-46.1434,-40.537 v13.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-38.2654,-48.9466,-47.0486,-39.0174,-43.0779,-39.6742,-41.4919,-40.738,-38.4025,-45.9533,-40.3419,-47.8318,-45.3209,-41.0548 -libaom-v3.12.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-0.9184,-0.9157,-0.6177,-0.9049,-2.9485,-2.5055,-4.3625,-2.5781,-2.8008,-2.0562,-0.9172,-0.9096,-0.5962,-0.888 -libaom-v3.12.0-unconstrained,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-0.1149,-1.5398,-2.5672,-0.2957,-4.0881,-3.4325,-2.5373,-2.6978,-3.0149,-3.8994,-0.1213,-1.5536,-2.5539,-0.2472 +v14.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-38.3014,-48.8811,-47.1129,-39.0507,-43.1377,-39.7323,-41.6256,-40.8536,-38.4216,-45.9381,-40.3722,-47.7851,-45.4329,-41.0898 +v15.0.0,AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-38.3014,-48.8811,-47.1129,-39.0507,-43.1377,-39.7323,-41.6256,-40.8536,-38.4216,-45.9381,-40.3722,-47.7851,-45.4329,-41.0898 v02.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-1.6375,-29.2617,-21.4291,-4.1018,-2.1687,-2.3547,-0.8116,-1.1023,-5.2059,-19.4002,-1.6377,-29.2894,-21.4005,-3.3129 v03.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-13.6336,-35.5072,-28.9184,-15.5401,-15.5619,-15.9224,-12.6655,-12.9378,-17.2321,-29.4166,-13.6285,-35.5434,-28.898,-14.9087 v04.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-22.2459,-50.2073,-46.4965,-25.1684,-27.2468,-27.3871,-23.6346,-23.3698,-28.0001,-41.0457,-22.2486,-50.2169,-46.5024,-24.2512 @@ -881,8 +879,8 @@ v10.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-50.6925,-66.9138,-6 v11.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.3604,-68.0836,-66.3716,-55.0317,-52.4451,-53.5415,-48.848,-47.3919,-52.8339,-63.7768,-53.3691,-68.0946,-66.3754,-54.7406 v12.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.3722,-68.0557,-66.2526,-55.0229,-52.5383,-53.5548,-49.0789,-47.6208,-52.848,-63.566,-53.3816,-68.0725,-66.2543,-54.7446 v13.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.3073,-67.7504,-65.7225,-54.9197,-56.742,-53.3476,-48.7826,-47.3404,-52.5653,-62.7373,-53.3166,-67.7613,-65.7267,-54.6578 -libaom-v3.12.0,AI,B2,Wikipedia_1920x1080p30.y4m,-1.4273,-1.223,-0.1914,-1.3476,-2.3458,-1.8531,-0.9838,-2.0561,-2.7195,-1.6227,-1.4276,-1.2218,-0.1846,-1.2846 -libaom-v3.12.0-unconstrained,AI,B2,Wikipedia_1920x1080p30.y4m,-1.5817,-1.2357,-2.6529,-1.615,-2.4249,-2.1949,-3.8076,-2.8773,-2.5378,-2.6869,-1.5824,-1.242,-2.6547,-1.6057 +v14.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.3418,-67.7657,-65.7415,-54.953,-56.8136,-53.3649,-48.7978,-47.3612,-52.6161,-62.7777,-53.3514,-67.7767,-65.7455,-54.6912 +v15.0.0,AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.3418,-67.7657,-65.7415,-54.953,-56.8136,-53.3649,-48.7978,-47.3612,-52.6161,-62.7777,-53.3514,-67.7767,-65.7455,-54.6912 v02.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-1.6127,-23.4913,-23.1859,-3.6948,-2.2197,-2.8289,-0.2134,-0.6694,-3.3957,-14.6347,-1.6153,-23.5198,-23.2399,-3.3718 v03.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-13.2936,-31.629,-32.4658,-15.0895,-14.734,-14.5653,-10.6982,-11.1071,-14.2768,-25.0194,-13.2916,-31.6555,-32.5128,-14.7735 v04.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-21.1588,-42.1199,-41.7041,-23.323,-24.824,-24.9218,-21.0788,-21.1009,-23.4721,-34.6667,-21.158,-42.1369,-41.7356,-23.0801 @@ -895,8 +893,8 @@ v10.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-35.1344,-54.324,-54.7564,-37.249,-39.4 v11.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-37.8417,-56.656,-56.9728,-39.9252,-41.6717,-41.9513,-37.6399,-37.0686,-39.1859,-50.2468,-37.8409,-56.6657,-56.9837,-39.5344 v12.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-37.7049,-55.8617,-56.5301,-39.7289,-41.8884,-42.1052,-37.5232,-36.7501,-38.9776,-48.8296,-37.7039,-55.8734,-56.5461,-39.375 v13.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-38.3304,-56.2376,-56.1198,-40.2579,-44.1796,-42.2392,-38.3345,-37.4988,-39.4441,-49.2105,-38.3295,-56.2474,-56.1349,-39.9644 -libaom-v3.12.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-0.5081,-3.7136,-3.8711,-0.674,-1.5804,-0.5524,-1.8203,-2.0478,-0.879,-1.6134,-0.5084,-3.7147,-3.8664,-0.7032 -libaom-v3.12.0-unconstrained,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,0.3305,-5.419,-12.4149,-0.7436,0.0541,0.3057,-0.266,-0.3158,-0.1538,-1.7014,0.3303,-5.4233,-12.4075,-0.0873 +v14.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-38.3271,-56.2548,-56.1506,-40.2591,-44.1911,-42.245,-38.3437,-37.5114,-39.4604,-49.2158,-38.3261,-56.2646,-56.166,-39.9656 +v15.0.0,AI,B2,Wikipedia_1920x1080p30.y4m,-38.3271,-56.2548,-56.1506,-40.2591,-44.1911,-42.245,-38.3437,-37.5114,-39.4604,-49.2158,-38.3261,-56.2646,-56.166,-39.9656 v02.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-4.299,-26.5481,-47.7804,-9.7889,-3.0149,-4.3789,-5.3971,-5.4994,-4.748,-15.0973,-4.2996,-26.5733,-47.7581,-6.472 v03.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-6.8664,-31.8582,-50.9014,-12.2238,-4.2092,-6.2802,-6.1411,-6.477,-7.0058,-19.668,-6.8663,-31.8266,-50.9505,-9.0252 v04.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-8.7422,-33.5656,-54.217,-14.0325,-4.9121,-8.022,-8.9795,-8.9294,-8.7551,-21.3507,-8.7431,-33.5282,-53.916,-10.8721 @@ -909,8 +907,8 @@ v10.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-14.7559,-34.5562,0.0,-19.69 v11.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-14.6056,-43.6221,-61.699,-20.8313,-12.6602,-13.7362,-19.1905,-18.5946,-15.2425,-29.6538,-14.606,-43.6383,-61.7057,-17.2745 v12.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-14.6489,-43.0444,-60.3158,-20.767,-12.697,-13.6771,-19.2526,-18.6628,-15.2585,-29.375,-14.6496,-43.056,-60.4344,-17.2936 v13.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-14.6593,-43.8867,-55.78,-20.4735,-15.8645,-13.7823,-19.1303,-18.4915,-15.2605,-29.2121,-14.6596,-43.905,-56.2913,-17.2445 -libaom-v3.12.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-0.3508,-1.5388,-0.2933,-0.3599,-0.4844,-0.2466,-1.0914,-1.2553,-0.4322,-0.7487,-0.3506,-1.5383,-0.2953,-0.4074 -libaom-v3.12.0-unconstrained,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,0.4778,-1.6464,-5.7037,0.2791,0.3135,0.5841,0.2062,0.1568,0.4027,-0.7426,0.4776,-1.6536,-5.7404,0.3361 +v14.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-14.6186,-43.8466,-55.7476,-20.4341,-15.8397,-13.7535,-19.0917,-18.4518,-15.2329,-29.1708,-14.6189,-43.8648,-56.2581,-17.2037 +v15.0.0,AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-14.6186,-43.8466,-55.7476,-20.4341,-15.8397,-13.7535,-19.0917,-18.4518,-15.2329,-29.1708,-14.6189,-43.8648,-56.2581,-17.2037 v02.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-1.5026,-39.1281,-70.4702,-8.3623,-1.6895,-1.7249,-1.1616,-1.3272,-3.4988,-18.0597,-1.5011,-39.1301,-70.4061,-5.6557 v03.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-4.6908,-42.4876,-69.4933,-11.1251,-3.5971,-4.4458,-7.9977,-7.7975,-6.2981,-21.9901,-4.69,-42.493,-69.5008,-8.754 v04.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-8.7893,-47.4346,-72.0594,-15.2605,-6.6181,-8.3723,-12.1811,-11.6094,-10.0892,-25.8856,-8.7879,-47.4405,-72.0406,-13.159 @@ -923,8 +921,8 @@ v10.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-15.6482,-62.0787,-69.8638 v11.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-16.0324,-64.3177,-69.4909,-22.8682,-13.2677,-15.0736,-23.1296,-22.4772,-17.6784,-36.1736,-16.0324,-64.3285,-69.4753,-21.6541 v12.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-15.9032,-64.3681,-69.5488,-22.7951,-13.1875,-14.8223,-23.1865,-22.4976,-17.5034,-36.1841,-15.9048,-64.373,-69.522,-21.5551 v13.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-15.7242,-64.4318,-65.5072,-22.2165,-18.1925,-14.7846,-23.3127,-22.5497,-17.3171,-36.0056,-15.7243,-64.4392,-65.3577,-21.3419 -libaom-v3.12.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-4.2081,-3.8569,-1.2413,-4.1453,-1.5374,-3.3584,1.4512,1.5191,-2.177,-0.5118,-4.2141,-3.859,-1.2535,-3.5492 -libaom-v3.12.0-unconstrained,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-1.5516,-2.9567,-9.6988,-1.7877,0.5735,-0.8087,1.2839,1.5439,-0.0604,-4.6479,-1.5557,-2.9568,-9.7402,-1.3418 +v14.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-15.6993,-64.4186,-65.4928,-22.1928,-18.177,-14.764,-23.2746,-22.5119,-17.2967,-35.9824,-15.6994,-64.426,-65.3433,-21.317 +v15.0.0,AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-15.6993,-64.4186,-65.4928,-22.1928,-18.177,-14.764,-23.2746,-22.5119,-17.2967,-35.9824,-15.6994,-64.426,-65.3433,-21.317 v02.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-0.9274,-6.0012,-35.3794,-3.189,-2.148,-1.7465,-1.3962,-1.7365,-2.2582,-20.2823,-0.9318,-6.0636,-35.7208,-2.8756 v03.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-6.0123,-5.5224,-35.392,-7.6754,-3.9771,-4.3842,-3.3056,-3.9343,-5.5739,-16.2278,-6.0196,-5.5833,-35.5066,-7.1794 v04.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-9.0806,-7.709,-37.8502,-10.6457,-6.9625,-7.8596,-7.4309,-7.8289,-8.5647,-19.3388,-9.0863,-7.698,-38.0285,-10.1594 @@ -937,8 +935,8 @@ v10.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-16.5881,-16.486,-43.6949,- v11.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-17.1137,-17.1772,-50.5439,-19.1843,-14.9107,-15.8347,-17.216,-17.2425,-16.589,-39.4624,-17.1213,-17.2376,-50.6361,-18.3132 v12.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-17.2597,-18.5645,-51.2634,-19.4002,-15.192,-15.9615,-18.4288,-18.2912,-16.7834,-42.1615,-17.2685,-18.6186,-51.3978,-18.6115 v13.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-18.0912,-23.4868,-50.7785,-20.3338,-16.4463,-16.6051,-19.4947,-19.3968,-17.6732,-40.1196,-18.1008,-23.5298,-50.9305,-19.8467 -libaom-v3.12.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,0.4318,-2.3109,-4.3984,0.1701,-1.4575,-0.7433,-7.1096,-7.9646,-1.6932,-1.1459,0.4471,-2.2792,-4.3828,0.0818 -libaom-v3.12.0-unconstrained,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,0.4655,-2.2065,-4.2693,0.2012,-0.3646,-0.1767,0.3862,0.6407,-0.4597,-1.0225,0.4808,-2.2702,-4.251,0.1601 +v14.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-18.0187,-23.3788,-50.6461,-20.2572,-16.4311,-16.5582,-19.3638,-19.2691,-17.6129,-40.0218,-18.0282,-23.4212,-50.798,-19.7675 +v15.0.0,AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-18.0187,-23.3788,-50.6461,-20.2572,-16.4311,-16.5582,-19.3638,-19.2691,-17.6129,-40.0218,-18.0282,-23.4212,-50.798,-19.7675 v02.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-12.2237,-30.3306,-31.1516,-13.9607,-9.2044,-10.9285,-11.9623,-11.9526,-11.5593,-17.868,-12.261,-30.7051,-31.2672,-13.6987 v03.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-16.826,-38.385,-38.1453,-18.8267,-11.2197,-14.3813,-16.04,-15.9183,-15.1304,-23.7474,-16.8619,-38.8541,-38.2114,-18.6368 v04.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-19.907,-45.5224,-43.665,-22.2324,-13.2802,-17.4765,-19.411,-18.9995,-18.1952,-27.8567,-19.927,-45.9595,-43.7087,-22.113 @@ -951,8 +949,8 @@ v10.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-27.2775,-52.2626,-48.8225, v11.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-27.2736,-53.2664,-49.8471,-29.6358,-20.017,-23.6361,-27.2988,-27.2776,-25.1262,-35.3152,-27.3123,-53.6805,-49.8944,-29.5053 v12.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-27.217,-52.6588,-48.7487,-29.497,-19.9382,-23.401,-27.3229,-27.2829,-24.923,-35.0965,-27.2591,-53.0826,-48.8002,-29.3664 v13.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-27.2574,-53.2699,-48.7036,-29.5798,-28.2402,-23.4396,-27.3739,-27.2757,-24.9495,-35.4375,-27.2982,-53.6923,-48.7668,-29.4317 -libaom-v3.12.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-0.4651,-1.0282,-1.0047,-0.5195,-0.2114,-0.2697,-1.173,-1.136,-0.4321,-0.8388,-0.465,-1.029,-1.004,-0.6325 -libaom-v3.12.0-unconstrained,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,0.6207,-1.6568,-1.3863,0.313,0.8465,0.8929,0.538,0.5248,0.2394,-0.3901,0.621,-1.6582,-1.3863,0.0657 +v14.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-27.2492,-53.2642,-48.695,-29.5716,-28.2316,-23.4295,-27.3611,-27.2627,-24.9436,-35.4305,-27.2901,-53.6867,-48.7582,-29.4233 +v15.0.0,AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-27.2492,-53.2642,-48.695,-29.5716,-28.2316,-23.4295,-27.3611,-27.2627,-24.9436,-35.4305,-27.2901,-53.6867,-48.7582,-29.4233 v02.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-5.8327,-6.5272,-6.1572,-5.9065,-4.63,-4.9664,-6.8991,-6.8888,-5.0167,-5.7405,-5.8324,-6.5276,-6.1578,-5.9563 v03.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-8.2553,-8.0211,-8.1025,-8.2341,-6.7667,-6.9705,-8.0358,-8.1235,-7.181,-7.624,-8.2547,-8.0214,-8.1047,-8.225 v04.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-10.8572,-14.5373,-13.6586,-11.3274,-9.11,-9.3702,-11.0461,-10.967,-10.1373,-11.5258,-10.8572,-14.5356,-13.655,-11.6253 @@ -965,8 +963,8 @@ v10.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.5228,-18.8798,-17.9699 v11.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.4967,-18.9468,-17.6834,-18.4724,-16.6041,-16.72,-19.9958,-19.7198,-17.0266,-17.7059,-18.4967,-18.9477,-17.6809,-18.414 v12.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.4019,-18.7921,-17.6612,-18.3782,-16.4411,-16.5167,-19.7575,-19.4483,-16.9683,-17.6818,-18.4008,-18.7905,-17.6595,-18.3201 v13.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.6751,-19.4483,-18.8553,-18.7467,-21.6306,-16.7347,-19.9588,-19.7109,-17.2343,-18.2687,-18.6744,-19.4435,-18.8517,-18.7592 -libaom-v3.12.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,1.1781,-1.6414,-0.5021,1.0427,2.3664,2.4098,-6.6863,-3.1119,1.318,0.6718,1.1893,-1.6321,-0.4422,1.0866 -libaom-v3.12.0-unconstrained,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,1.1212,-1.3503,-2.8394,0.9083,1.6585,1.6584,0.0907,0.0961,1.302,0.397,1.1367,-1.359,-2.8354,0.976 +v14.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.6208,-19.4055,-18.8106,-18.6938,-21.5827,-16.6864,-19.8931,-19.6461,-17.1908,-18.2186,-18.6201,-19.4008,-18.807,-18.707 +v15.0.0,AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.6208,-19.4055,-18.8106,-18.6938,-21.5827,-16.6864,-19.8931,-19.6461,-17.1908,-18.2186,-18.6201,-19.4008,-18.807,-18.707 v02.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-3.4563,-17.4315,-32.1848,-5.3967,-2.3315,-2.5875,-4.5083,-4.1435,-3.3014,-9.9908,-3.4344,-17.5637,-32.2337,-4.6321 v03.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-7.2202,-25.8052,-48.0354,-10.0393,-4.5472,-5.2264,-7.0482,-5.7084,-5.2651,-16.6973,-7.2141,-25.9312,-48.0815,-8.7987 v04.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-9.2999,-35.6474,-53.9597,-12.894,-6.363,-7.1597,-8.5206,-7.2055,-7.5251,-22.052,-9.2939,-35.7704,-54.0072,-11.5549 @@ -979,8 +977,8 @@ v10.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-16.6163,-47.1454,-57.5572,- v11.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-16.4455,-47.916,-59.353,-20.4316,-14.3305,-14.6879,-18.1373,-17.4909,-15.9543,-32.4282,-16.4422,-48.0183,-59.414,-18.9316 v12.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-16.4744,-47.6725,-59.4656,-20.446,-14.314,-14.6233,-18.1013,-17.4265,-16.0111,-32.3902,-16.4649,-47.7849,-59.5232,-18.9389 v13.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-16.7948,-48.7923,-58.3119,-20.7522,-17.7226,-14.9348,-18.4748,-17.7808,-16.2342,-32.931,-16.7878,-48.9021,-58.3485,-19.2795 -libaom-v3.12.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-0.1091,-1.6184,-3.1766,-0.2483,-0.3049,0.039,-1.4342,-1.6117,-0.1212,-0.2942,-0.1091,-1.612,-3.183,-0.1752 -libaom-v3.12.0-unconstrained,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,0.3981,-1.1394,-8.2291,-0.1659,0.5546,0.5864,-0.1299,-0.1179,0.2792,-2.1417,0.3985,-1.1728,-8.2747,0.3022 +v14.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-16.7661,-48.7684,-58.2913,-20.7241,-17.7005,-14.904,-18.4331,-17.7404,-16.2084,-32.9014,-16.7592,-48.8783,-58.3279,-19.2508 +v15.0.0,AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-16.7661,-48.7684,-58.2913,-20.7241,-17.7005,-14.904,-18.4331,-17.7404,-16.2084,-32.9014,-16.7592,-48.8783,-58.3279,-19.2508 v02.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-3.1003,-55.9966,-62.4522,-9.349,-3.4985,-3.6095,-4.3074,-4.1261,-4.4016,-26.7421,-3.1,-56.0398,-62.5587,-4.59 v03.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-4.5372,-55.7392,-63.6709,-10.5743,-4.3422,-4.5874,-4.3543,-4.1602,-5.4584,-27.3744,-4.5369,-55.547,-63.6978,-6.0056 v04.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-7.2319,-58.4894,-63.4241,-13.1736,-6.9262,-7.3032,-8.5997,-8.0299,-7.9673,-28.9752,-7.2319,-58.4293,-63.3972,-8.7252 @@ -993,8 +991,8 @@ v10.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-13.5554,-64.4485,-64.0168, v11.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-13.4551,-65.1497,-65.5056,-19.8574,-12.4869,-12.7403,-17.0424,-16.3951,-14.1106,-34.7564,-13.4549,-65.1204,-65.4348,-15.0026 v12.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-13.4477,-65.3501,-63.5397,-19.7331,-12.3891,-12.6355,-17.0235,-16.4001,-14.1376,-34.5115,-13.4476,-65.3096,-63.42,-14.9788 v13.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-13.6243,-64.6274,0.0,-19.5954,-14.4648,-12.935,-17.2054,-16.44,-14.2794,-34.9734,-13.624,-64.5978,0.0,-15.1165 -libaom-v3.12.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-0.5888,-1.5622,-0.0746,-0.5708,-0.6258,-0.5349,-2.1939,-1.9518,-0.649,-0.7478,-0.5893,-1.5644,-0.0617,-0.6144 -libaom-v3.12.0-unconstrained,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,0.1032,-1.2674,-2.9685,-0.0862,0.3643,0.4425,-0.2116,-0.1984,0.1048,-1.0572,0.1027,-1.28,-2.8586,0.0419 +v14.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-13.5675,-64.602,0.0,-19.5432,-14.4265,-12.8797,-17.1111,-16.3481,-14.2272,-34.9238,-13.5672,-64.5725,0.0,-15.0601 +v15.0.0,AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-13.5675,-64.602,0.0,-19.5432,-14.4265,-12.8797,-17.1111,-16.3481,-14.2272,-34.9238,-13.5672,-64.5725,0.0,-15.0601 v02.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-7.4078,-33.8331,-41.012,-12.1243,-7.07,-7.1176,-7.9006,-7.8105,-8.7571,-21.3007,-7.409,-33.879,-40.9179,-9.3794 v03.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-11.4625,-39.8126,-47.4401,-16.7837,-10.0031,-10.4599,-12.0753,-12.033,-12.6289,-26.7999,-11.4631,-39.708,-47.3882,-13.6103 v04.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-14.6631,-41.6668,-46.8032,-19.5239,-12.6717,-13.2916,-15.4862,-15.079,-15.5912,-29.2061,-14.6637,-41.6266,-46.6654,-16.6735 @@ -1007,8 +1005,8 @@ v10.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-23.8242,-45.7608,-47.4545,- v11.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-23.8183,-50.5932,-47.9606,-28.6655,-21.2998,-21.9788,-26.3259,-25.5515,-24.6659,-39.2664,-23.8178,-50.5733,-48.0134,-25.8168 v12.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-24.2553,-50.959,-48.6391,-29.0409,-21.7665,-22.4273,-26.7122,-25.9403,-25.142,-39.574,-24.2537,-50.9282,-48.5851,-26.2341 v13.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-24.4943,-50.3747,-48.9087,-28.6917,-27.8824,-22.6622,-27.2029,-26.3546,-25.2296,-39.3235,-24.4929,-50.3362,-48.904,-26.3085 -libaom-v3.12.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-0.6438,-2.5911,-2.6372,-0.9455,-0.7906,-0.6558,-8.311,-7.0028,-0.877,-1.4046,-0.5315,-2.5805,-2.732,-0.9338 -libaom-v3.12.0-unconstrained,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,0.518,-3.1282,-3.3065,-0.052,0.5879,0.7166,-1.5102,-1.3909,-0.1909,-1.0166,0.5368,-3.1417,-3.3179,-0.334 +v14.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-24.3707,-50.2597,-48.8279,-28.5743,-27.7876,-22.5541,-27.0525,-26.207,-25.1248,-39.2072,-24.3693,-50.2209,-48.8208,-26.187 +v15.0.0,AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-24.3707,-50.2597,-48.8279,-28.5743,-27.7876,-22.5541,-27.0525,-26.207,-25.1248,-39.2072,-24.3693,-50.2209,-48.8208,-26.187 v02.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-3.3419,-7.5441,-8.7926,-4.0595,-3.7559,-3.7583,-7.6336,-7.3009,-4.3298,-4.3594,-3.5373,-7.659,-8.7611,-4.4943 v03.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-6.6708,-12.0689,-16.6197,-7.8534,-6.9255,-7.0552,-8.7727,-8.5475,-8.0504,-8.9591,-6.8778,-12.1784,-16.6363,-8.4959 v04.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-10.7537,-20.227,-24.4689,-12.5727,-11.9045,-11.694,-13.1605,-12.9708,-13.1387,-13.9961,-10.9518,-20.4348,-24.6196,-13.4298 @@ -1021,8 +1019,8 @@ v10.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-19.4894,-26.3742,-30.517 v11.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-18.8855,-28.6042,-34.1414,-20.8732,-19.9645,-19.6774,-20.4956,-20.4381,-21.1721,-23.8115,-19.0881,-28.8032,-34.4831,-21.9188 v12.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-18.8797,-29.2281,-34.1291,-20.9094,-19.9382,-19.6455,-20.5796,-20.5554,-21.2513,-23.9212,-19.1171,-29.4402,-34.438,-22.0132 v13.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-22.5339,-39.6705,-50.0426,-26.2807,-27.9734,-22.8678,-24.4563,-24.4108,-25.9179,-31.4878,-22.7465,-39.7821,-49.8543,-27.6762 -libaom-v3.12.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-1.5353,-9.3379,-6.9492,-1.8359,-1.7495,-1.5677,-1.8651,-2.0415,-1.8949,-2.621,-1.5352,-9.3453,-6.9376,-1.6531 -libaom-v3.12.0-unconstrained,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-0.226,-12.0305,-8.418,-0.5679,-0.5328,-0.3073,-1.2584,-1.2179,-0.6036,-1.6306,-0.2265,-11.9776,-8.4157,-0.2812 +v14.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-22.4008,-39.5668,-49.9614,-26.1545,-27.8763,-22.7592,-24.3223,-24.2791,-25.8126,-31.3666,-22.6128,-39.6784,-49.7726,-27.5515 +v15.0.0,AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-22.4008,-39.5668,-49.9614,-26.1545,-27.8763,-22.7592,-24.3223,-24.2791,-25.8126,-31.3666,-22.6128,-39.6784,-49.7726,-27.5515 v02.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-16.8042,-55.2455,-56.3648,-22.018,-17.9346,-17.7071,-15.5217,-15.1047,-18.5322,-31.7542,-16.8091,-55.26,-56.2477,-19.0586 v03.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-22.4224,-48.7726,-58.1349,-26.6607,-20.9976,-21.9433,-19.9309,-19.157,-22.1993,-37.4458,-22.428,-47.8025,-58.0878,-24.2776 v04.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-25.6345,-52.8585,-60.0895,-29.9187,-23.3119,-24.572,-22.0605,-21.2911,-24.7588,-40.6472,-25.6413,-51.8206,-59.9893,-27.4793 @@ -1035,8 +1033,8 @@ v10.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-33.6707,-40.7411,-64.5434,- v11.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-34.5388,-64.5236,-71.4638,-39.3901,-30.6902,-32.5103,-27.3199,-27.1721,-33.0575,-50.437,-34.5434,-64.3026,-71.2662,-36.6138 v12.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-34.4889,-64.7553,-72.9118,-39.4826,-30.6158,-32.4357,-27.4401,-27.3024,-33.024,-50.5228,-34.4924,-64.5621,-72.6542,-36.5998 v13.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-34.9484,-60.8311,-71.8551,-39.6263,-40.2613,-32.9105,-27.9673,-27.8121,-33.4132,-50.5375,-34.9527,-60.4887,-71.5665,-36.9754 -libaom-v3.12.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-0.3051,-1.3647,-0.4001,-0.3218,0.2093,0.0635,-1.1611,-1.483,-0.238,-0.6752,-0.3051,-1.3655,-0.3967,-0.3333 -libaom-v3.12.0-unconstrained,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,0.2805,-4.1828,-2.2318,0.0808,0.418,0.3724,0.031,-0.1354,0.3017,-1.7315,0.2805,-4.1917,-2.2224,0.2231 +v14.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-34.8624,-60.7114,-71.7627,-39.5376,-40.2259,-32.8308,-27.8032,-27.6496,-33.3324,-50.4393,-34.8667,-60.3668,-71.473,-36.8882 +v15.0.0,AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-34.8624,-60.7114,-71.7627,-39.5376,-40.2259,-32.8308,-27.8032,-27.6496,-33.3324,-50.4393,-34.8667,-60.3668,-71.473,-36.8882 v02.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-3.2608,-50.5238,-42.7808,-7.1259,-2.6345,-2.742,-5.2207,-5.3473,-3.8485,-18.5372,-3.2604,-50.5558,-42.8222,-4.5805 v03.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-5.355,-51.8442,-50.9421,-9.3359,-3.6326,-4.1558,-6.3704,-6.4341,-5.4423,-21.0612,-5.3551,-51.8599,-50.8405,-6.7307 v04.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-8.2118,-53.9337,-53.9942,-12.2083,-5.8902,-6.6713,-10.0981,-9.9346,-8.0033,-23.7052,-8.2119,-53.8532,-53.7714,-9.6666 @@ -1049,8 +1047,8 @@ v10.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-14.9485,-57.2063,-62.7762,-1 v11.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-14.7644,-60.0247,-62.7595,-19.1775,-12.3171,-12.7136,-19.8314,-19.0708,-14.5598,-31.5164,-14.7644,-60.0427,-62.7131,-16.4216 v12.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-14.8454,-59.9601,-60.1922,-19.1571,-12.3922,-12.7831,-20.3564,-19.4677,-14.6715,-31.6841,-14.8452,-59.9554,-59.9021,-16.4828 v13.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-15.0517,-59.1249,-62.816,-19.2112,-14.4112,-13.0236,-20.7494,-19.7789,-14.8427,-31.9689,-15.0517,-59.1236,-62.4955,-16.6615 -libaom-v3.12.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-0.3754,-1.7794,-1.6464,-0.52,0.1914,-0.0856,-3.495,-2.8329,-0.2645,-0.7608,-0.3755,-1.7913,-1.7639,-0.4676 -libaom-v3.12.0-unconstrained,AI,E,Artistic_Concert_1920x1080_25fps.y4m,0.4546,-2.3033,-2.0441,0.1654,0.3212,0.2308,2.0436,2.0981,0.5775,-0.3333,0.4681,-2.3822,-1.9545,0.3133 +v14.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-15.0066,-59.0837,-62.7802,-19.1661,-14.3849,-12.9845,-20.6731,-19.7019,-14.8044,-31.9187,-15.0067,-59.0822,-62.4592,-16.6155 +v15.0.0,AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-15.0066,-59.0837,-62.7802,-19.1661,-14.3849,-12.9845,-20.6731,-19.7019,-14.8044,-31.9187,-15.0067,-59.0822,-62.4592,-16.6155 v02.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-3.5246,-25.7699,-23.1103,-6.1304,-2.7922,-3.0598,-3.786,-3.7613,-3.8721,-11.5704,-3.5361,-25.8636,-21.5187,-4.6369 v03.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-5.0614,-26.8796,-24.9657,-7.661,-4.0671,-4.4566,-4.7154,-4.8142,-5.283,-12.8742,-5.0789,-26.8494,-23.1464,-6.1745 v04.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-8.0327,-31.8589,-29.2738,-10.8867,-6.404,-6.9728,-8.9339,-8.5753,-7.8401,-15.6465,-8.0582,-31.9584,-27.5508,-9.2591 @@ -1063,8 +1061,8 @@ v10.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-14.2676,-38.7334,-36.828,-17. v11.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-14.182,-38.4669,-36.2195,-17.1143,-12.1788,-12.4717,-19.0247,-18.2025,-13.9232,-21.4681,-14.2019,-38.5427,-34.0609,-15.4036 v12.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-14.2184,-38.2505,-36.3779,-17.1434,-12.1755,-12.4988,-19.0515,-18.2301,-13.9648,-21.5164,-14.2354,-38.3135,-34.2673,-15.4362 v13.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-14.1002,-38.1778,-35.6556,-16.9891,-13.5402,-12.3155,-19.1216,-18.275,-13.7734,-21.0382,-14.1206,-38.2569,-33.5886,-15.3093 -libaom-v3.12.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,0.5772,0.4703,-0.0099,0.5401,1.3487,1.0391,-5.8956,-4.1306,0.5078,0.4021,0.6627,0.4661,-0.0239,0.5891 -libaom-v3.12.0-unconstrained,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,1.1222,-1.1425,-1.6367,0.8381,2.0448,1.9341,2.6649,2.4083,1.4026,0.3715,1.1134,-1.1205,-1.622,0.7432 +v14.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-14.1307,-38.2098,-35.6843,-17.0196,-13.5596,-12.3392,-19.1665,-18.3174,-13.8034,-21.0723,-14.151,-38.2909,-33.6197,-15.3399 +v15.0.0,AI,E,Artistic_Concert_1920x1080_25fps.y4m,-14.1307,-38.2098,-35.6843,-17.0196,-13.5596,-12.3392,-19.1665,-18.3174,-13.8034,-21.0723,-14.151,-38.2909,-33.6197,-15.3399 v02.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-2.9025,-5.8216,-8.9139,-3.3902,-2.3351,-2.1056,-4.1873,-3.958,-3.1934,-4.19,-2.9366,-5.7544,-8.8885,-3.4331 v03.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-4.2032,-5.7701,-8.2506,-4.5097,-3.0603,-3.1079,-5.6628,-5.2469,-4.0709,-4.7952,-4.221,-5.7099,-8.1884,-4.5083 v04.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-9.0783,-14.0369,-16.9534,-9.781,-7.9102,-8.0306,-9.3677,-9.0022,-8.8996,-10.6364,-9.007,-13.8904,-16.9075,-9.8181 @@ -1077,8 +1075,8 @@ v10.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-17.259,-21.2408,-22.9943,-17. v11.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-16.8819,-20.4983,-22.4167,-17.3895,-14.704,-15.1743,-19.4443,-18.3248,-16.1724,-18.3378,-16.7642,-20.4005,-22.4421,-17.3512 v12.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-16.6223,-20.3426,-22.3423,-17.1496,-13.8964,-14.1203,-19.9737,-18.7274,-15.9241,-17.7365,-16.5053,-20.2236,-22.3468,-17.1026 v13.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-16.9857,-21.124,-22.7826,-17.5385,-15.7173,-14.5694,-20.3667,-19.1003,-16.224,-18.1781,-16.8571,-21.0082,-22.79,-17.4999 -libaom-v3.12.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,0.256,0.2992,-0.2428,0.2369,-0.1574,-0.3701,-4.6253,-2.6942,-0.3773,0.0238,0.3109,0.3101,-0.2152,0.2808 -libaom-v3.12.0-unconstrained,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,0.7015,-1.1626,-2.3481,0.4388,0.659,0.5721,-0.4886,-0.2132,0.1235,-0.1307,0.796,-1.1601,-2.3196,0.396 +v14.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-17.0081,-21.1435,-22.798,-17.5604,-15.7351,-14.5925,-20.3794,-19.1194,-16.2461,-18.1928,-16.879,-21.0274,-22.8037,-17.521 +v15.0.0,AI,E,Artistic_Intro_1920x1080_2997fps.y4m,-17.0081,-21.1435,-22.798,-17.5604,-15.7351,-14.5925,-20.3794,-19.1194,-16.2461,-18.1928,-16.879,-21.0274,-22.8037,-17.521 v02.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-2.9287,-5.508,-8.1702,-3.3726,-2.308,-2.2775,-3.5797,-3.1825,-3.3229,-3.677,-2.8171,-5.5226,-8.0413,-3.4905 v03.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-4.922,-6.1452,-9.7179,-5.2624,-3.7884,-3.8127,-4.9118,-4.6212,-4.6889,-5.2132,-4.8387,-6.0213,-9.5061,-5.2951 v04.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-12.0127,-15.8941,-22.442,-12.8331,-10.0797,-10.0861,-11.8171,-11.2876,-11.7864,-13.6892,-11.6722,-16.0377,-22.4682,-12.9276 @@ -1091,8 +1089,8 @@ v10.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-25.0267,-27.5059, v11.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-25.0495,-26.8613,-33.0667,-25.6084,-23.2281,-22.708,-29.0944,-27.5847,-24.7908,-25.093,-24.837,-26.9865,-33.1384,-25.6521 v12.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-25.3912,-26.9997,-33.1072,-25.9212,-23.4906,-23.0447,-28.952,-27.617,-25.06,-25.4108,-25.2139,-27.1173,-33.1871,-25.9776 v13.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-25.563,-28.1368,-34.2111,-26.2037,-25.9605,-23.1695,-29.4467,-28.0803,-25.3704,-25.7648,-25.4008,-28.2505,-34.2755,-26.332 -libaom-v3.12.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-0.0643,-1.9974,-2.2729,-0.2191,-0.122,-0.3755,-1.063,-5.2599,-0.3714,-0.656,-0.05,-2.0323,-2.3105,-0.2801 -libaom-v3.12.0-unconstrained,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,0.4393,-2.4728,-2.6947,0.1696,-0.416,-0.4138,1.2545,1.2339,-0.1903,-0.7004,0.4381,-2.5004,-2.7206,0.0974 +v14.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-25.6449,-28.2229,-34.2927,-26.2859,-26.034,-23.2436,-29.5775,-28.2081,-25.4544,-25.848,-25.4826,-28.3365,-34.3572,-26.4146 +v15.0.0,AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-25.6449,-28.2229,-34.2927,-26.2859,-26.034,-23.2436,-29.5775,-28.2081,-25.4544,-25.848,-25.4826,-28.3365,-34.3572,-26.4146 v02.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-8.4639,-8.6506,-11.2763,-8.638,-10.5733,-10.2401,-10.5448,-10.6031,-9.5625,-9.5291,-8.5548,-8.7305,-11.3982,-8.8304 v03.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-11.6904,-8.9159,-10.2019,-11.4792,-13.7278,-13.3748,-13.9413,-13.8467,-12.3349,-11.6772,-11.8073,-9.0248,-10.3242,-11.6257 v04.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-14.9207,-15.4852,-18.9394,-15.1653,-17.0036,-16.7511,-17.9503,-17.5019,-16.0341,-16.0709,-15.0466,-15.5924,-19.0571,-15.4244 @@ -1105,8 +1103,8 @@ v10.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-22.8133,-23.3735,-2 v11.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-22.8486,-23.0075,-26.1827,-23.0266,-24.5087,-24.1313,-28.7411,-27.9916,-24.0866,-23.7509,-22.9495,-23.1273,-26.3177,-23.2276 v12.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-22.8924,-23.1428,-26.2541,-23.0767,-24.6046,-24.2275,-28.7635,-28.0432,-24.1503,-23.9249,-22.9911,-23.2603,-26.362,-23.2759 v13.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-22.9473,-23.9571,-27.3184,-23.2304,-23.4563,-24.1663,-29.0336,-28.1698,-24.1877,-24.1135,-23.0507,-24.0578,-27.4029,-23.4308 -libaom-v3.12.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-0.2354,-1.6741,-1.6232,-0.3647,-0.3754,-0.5745,-0.8644,-0.8712,-0.9778,-0.9511,-0.2124,-1.6796,-1.6207,-0.3954 -libaom-v3.12.0-unconstrained,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,0.3279,-2.4381,-2.1999,0.0856,0.3196,0.0837,-0.5392,-0.7281,-0.0235,-0.6862,0.3663,-2.4408,-2.2022,0.1335 +v14.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-22.9894,-24.0015,-27.3642,-23.2727,-23.4894,-24.2055,-29.1061,-28.2396,-24.2306,-24.1571,-23.0928,-24.1021,-27.4487,-23.4736 +v15.0.0,AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-22.9894,-24.0015,-27.3642,-23.2727,-23.4894,-24.2055,-29.1061,-28.2396,-24.2306,-24.1571,-23.0928,-24.1021,-27.4487,-23.4736 v02.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-5.1224,-13.0597,-12.7174,-5.8508,-4.618,-5.2669,-4.4489,-4.748,-5.3914,-9.0584,-5.0476,-13.0775,-12.7456,-5.6774 v03.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-7.7209,-13.6495,-14.6429,-8.3225,-5.9606,-7.0653,-5.3156,-5.6777,-7.3889,-10.8169,-7.6572,-13.6595,-14.6771,-8.2117 v04.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-10.4731,-22.64,-20.8244,-11.5491,-7.9515,-9.3461,-8.5574,-8.6867,-9.9377,-14.8745,-10.3958,-22.6507,-20.8274,-11.3197 @@ -1119,8 +1117,8 @@ v10.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-15.7272,-27.0556,-24.6681,-1 v11.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-15.6265,-26.8228,-24.3951,-16.5772,-13.8946,-14.6759,-19.7563,-19.0113,-15.4295,-20.1745,-15.5063,-26.8426,-24.4239,-16.3703 v12.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-15.7735,-26.8886,-24.4427,-16.7151,-14.0103,-14.8209,-19.7062,-19.0599,-15.5922,-20.3574,-15.6562,-26.9148,-24.4668,-16.5143 v13.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-15.7915,-27.0993,-24.558,-16.7484,-16.6652,-14.8387,-20.2385,-19.4957,-15.6322,-20.2221,-15.677,-27.1265,-24.5761,-16.5524 -libaom-v3.12.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-4.589,-5.1313,5.8357,-4.4176,0.9576,-4.3253,-0.4842,0.4951,-1.7866,-4.8794,-4.5832,-5.1085,5.6514,-4.4094 -libaom-v3.12.0-unconstrained,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-1.5706,-3.2602,-1.3174,-1.6503,1.3388,-1.7933,-0.5727,-0.6068,0.0618,-2.6272,-1.5818,-3.2358,-1.4851,-1.701 +v14.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-15.8007,-27.1186,-24.6004,-16.7597,-16.6732,-14.8605,-20.2642,-19.5219,-15.6477,-20.2307,-15.6859,-27.1443,-24.618,-16.564 +v15.0.0,AI,E,MountainBike_1920x1080_30fps_8bit.y4m,-15.8007,-27.1186,-24.6004,-16.7597,-16.6732,-14.8605,-20.2642,-19.5219,-15.6477,-20.2307,-15.6859,-27.1443,-24.618,-16.564 v02.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-7.3369,-10.852,-18.844,-8.0926,-2.3202,-3.7278,-10.7864,-11.1416,-6.4278,-8.4024,-7.3202,-10.7986,-17.5911,-8.1319 v03.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-10.8248,-11.473,-20.3581,-11.3366,-4.3667,-5.325,-16.9987,-17.1535,-8.8371,-10.9096,-10.8129,-11.3867,-19.2139,-11.262 v04.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-14.544,-16.8144,-33.5197,-15.7396,-7.5987,-9.2242,-21.9218,-21.5496,-12.7926,-16.5077,-14.5473,-16.7275,-32.0846,-15.6026 @@ -1133,8 +1131,8 @@ v10.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-22.6838,-24.1389,-44.6 v11.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-22.5368,-23.4494,-43.9913,-23.7274,-17.7793,-17.5217,-33.5127,-33.0996,-21.9919,-24.0662,-22.5426,-23.2944,-42.7287,-23.3111 v12.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-22.6302,-23.6903,-43.9865,-23.8259,-17.6864,-17.4314,-33.4308,-33.1942,-22.0279,-24.1906,-22.6401,-23.5344,-42.8082,-23.4309 v13.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-22.9382,-23.962,-44.6215,-24.1583,-15.8205,-17.6259,-34.2577,-33.9016,-22.3075,-24.5942,-22.9555,-23.8191,-43.5397,-23.7817 -libaom-v3.12.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-5.8524,6.3146,15.3095,-3.3436,0.0,-5.6359,1.2477,7.9074,-1.213,-8.0841,-4.9176,6.5151,15.3862,-4.6253 -libaom-v3.12.0-unconstrained,AI,E,Noise_Animation_1280x720_2398fps.y4m,-1.5634,-3.4997,2.9985,-0.9279,0.2035,-1.2018,-0.3616,-0.0626,-0.2565,-5.8538,-2.77,-3.4527,3.0544,-2.9391 +v14.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-22.9849,-23.9896,-44.647,-24.203,-15.8236,-17.6634,-34.336,-33.9825,-22.3747,-24.6287,-23.0009,-23.8473,-43.5638,-23.8236 +v15.0.0,AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-22.9849,-23.9896,-44.647,-24.203,-15.8236,-17.6634,-34.336,-33.9825,-22.3747,-24.6287,-23.0009,-23.8473,-43.5638,-23.8236 v02.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-7.703,-13.829,-7.3147,-7.8008,-4.2413,-5.0552,-7.995,-8.0344,-6.5701,-10.2238,-6.1826,-13.8677,-7.3467,-6.5891 v03.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-8.2627,-8.1789,-2.9039,-7.576,-3.8833,-4.2503,-9.797,-9.8032,-6.5769,-8.9178,-6.9415,-8.2157,-2.8755,-6.5214 v04.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-12.5433,-22.8974,-16.466,-13.2989,-9.0566,-8.6045,-16.3279,-16.3454,-12.7817,-15.0094,-11.1861,-22.9241,-16.3996,-11.9172 @@ -1147,8 +1145,8 @@ v10.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-22.0425,-44.8124,-33.4521,-24 v11.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-22.0057,-43.3934,-29.3144,-23.8432,-21.561,-17.9196,-39.804,-36.9882,-26.4985,-27.1407,-22.8464,-43.3657,-29.1852,-23.6705 v12.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-22.1849,-43.7059,-29.4923,-24.0413,-21.7825,-18.0271,-39.6652,-37.1879,-26.7074,-27.3708,-23.0506,-43.6844,-29.3735,-23.8655 v13.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-22.8474,-45.2191,-34.0244,-25.0897,-5.5973,-18.65,-40.5815,-37.9592,-27.5257,-28.6193,-23.6048,-45.2099,-33.9455,-24.9845 -libaom-v3.12.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-4.8919,15.0154,10.5499,-2.0966,-6.3809,-6.352,-1.1747,-1.1717,-7.2606,-0.8463,-3.8095,15.4348,10.0995,-3.3517 -libaom-v3.12.0-unconstrained,AI,E,Noise_Ocean_1920x1080_60fps.y4m,4.8647,9.8299,-11.2757,6.7486,3.0187,2.2852,1.2887,1.8169,2.5628,6.6932,6.3427,10.1168,-11.2603,7.191 +v14.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-22.9697,-45.3268,-34.1553,-25.2127,-5.675,-18.7486,-40.7687,-38.1433,-27.6511,-28.7302,-23.7238,-45.3177,-34.0765,-25.1061 +v15.0.0,AI,E,Noise_Animation_1280x720_2398fps.y4m,-22.9697,-45.3268,-34.1553,-25.2127,-5.675,-18.7486,-40.7687,-38.1433,-27.6511,-28.7302,-23.7238,-45.3177,-34.0765,-25.1061 v02.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,0.3731,-26.0914,-26.3745,-5.6186,0.9549,0.5153,-2.8636,-2.5414,-0.6388,-7.6054,0.852,-25.7975,-25.3865,0.0504 v03.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,0.7233,-32.9545,-30.172,-6.3426,-0.4313,0.5367,-3.7575,-3.4452,-1.365,-9.5133,1.2357,-32.6191,-29.3673,0.2258 v04.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-1.8016,-32.8632,-34.1838,-9.1379,-2.4776,-2.1405,-7.1882,-6.8989,-3.8211,-11.2062,-1.3273,-32.5516,-33.429,-2.2834 @@ -1161,8 +1159,8 @@ v10.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-6.9799,-40.8779,-41.6938,-15.0016, v11.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-6.8246,-43.1331,-45.7506,-15.2688,-14.2954,-10.2268,-10.7602,-11.6903,-13.5196,-19.3828,-6.602,-42.8832,-45.5368,-7.9291 v12.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-7.1823,-44.3505,-46.016,-15.8129,-13.1431,-9.6996,-10.813,-11.5798,-12.9645,-19.5732,-7.0249,-44.0142,-45.8952,-8.35 v13.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-7.4089,-41.8228,-44.0353,-15.4871,-3.7233,-9.7731,-10.9829,-11.9634,-13.0187,-19.9591,-7.2876,-41.5035,-44.1398,-8.5921 -libaom-v3.12.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-2.3527,0.734,3.1362,-2.07,-3.9573,-2.824,-7.2219,-5.4555,-3.0256,-2.4688,-2.3527,0.7364,3.1582,-2.162 -libaom-v3.12.0-unconstrained,AI,E,Noise_Soccer_1920x1080_50fps.y4m,0.5056,-0.7698,6.2582,0.9356,-1.7671,-0.9023,-5.6652,-5.5539,-0.6175,0.0316,0.5053,-0.8096,6.285,0.7113 +v14.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-7.5766,-42.1635,-44.3236,-15.6833,-3.7489,-9.8432,-11.1861,-12.1866,-13.153,-20.182,-7.4494,-41.8456,-44.4289,-8.7625 +v15.0.0,AI,E,Noise_Ocean_1920x1080_60fps.y4m,-7.5766,-42.1635,-44.3236,-15.6833,-3.7489,-9.8432,-11.1861,-12.1866,-13.153,-20.182,-7.4494,-41.8456,-44.4289,-8.7625 v02.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-0.7018,-25.341,-7.2191,-2.6029,-1.4922,-0.9622,-5.9022,-5.3907,-4.1578,-3.7183,-0.7019,-25.3862,-7.2777,-1.4308 v03.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-1.5611,-25.1101,-6.541,-3.2662,-3.1025,-1.6789,-8.5804,-7.714,-5.3863,-4.3589,-1.5612,-25.1567,-6.6045,-2.205 v04.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-4.2045,-31.5548,-7.8553,-6.0569,-5.2645,-3.7672,-13.2402,-12.1158,-7.9216,-7.3215,-4.205,-31.5933,-7.9162,-4.9253 @@ -1175,8 +1173,8 @@ v10.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-10.2718,-42.3491,-12.0196,-12.31, v11.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-10.1385,-42.6187,-11.805,-12.201,-10.645,-8.9746,-24.3694,-22.9551,-14.4911,-13.7153,-10.1384,-42.6593,-11.8634,-10.8936 v12.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-10.2325,-42.3035,-11.8321,-12.2603,-10.7211,-9.0552,-24.1797,-22.8814,-14.5155,-13.7956,-10.2322,-42.3443,-11.8922,-10.9781 v13.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-10.2975,-42.9386,-11.9697,-12.3774,-6.3947,-9.1092,-24.5788,-23.1736,-14.6483,-13.8516,-10.2973,-42.9771,-12.0249,-11.0682 -libaom-v3.12.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,2.3124,0.5428,0.4151,2.0531,3.0317,3.7053,-6.1602,-1.4155,2.9103,2.2247,2.636,0.5353,0.4626,1.9497 -libaom-v3.12.0-unconstrained,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,1.8579,-0.9838,-1.0096,1.4531,1.4964,1.7237,2.0614,2.7259,1.5551,-0.0603,2.1929,-0.8187,-0.8988,1.213 +v14.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-10.3087,-42.9679,-11.9556,-12.3882,-6.3934,-9.0986,-24.6061,-23.2113,-14.6544,-13.8636,-10.3084,-43.0066,-12.0111,-11.0796 +v15.0.0,AI,E,Noise_Soccer_1920x1080_50fps.y4m,-10.3087,-42.9679,-11.9556,-12.3882,-6.3934,-9.0986,-24.6061,-23.2113,-14.6544,-13.8636,-10.3084,-43.0066,-12.0111,-11.0796 v02.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-1.4213,-4.9255,-4.6589,-1.889,-1.8475,-2.2855,-1.3822,-1.4747,-2.064,-3.4912,-1.0714,-4.7691,-4.6726,-2.2481 v03.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-3.2219,-5.5087,-5.5922,-3.5436,-2.8347,-3.9472,-1.3054,-1.8403,-3.7038,-4.5412,-2.9074,-5.4353,-5.7646,-3.7818 v04.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-7.2258,-13.1554,-12.1855,-7.988,-7.2821,-8.5162,-4.2929,-5.0745,-8.2119,-10.4159,-6.7489,-13.1391,-12.4232,-8.664 @@ -1189,8 +1187,8 @@ v10.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-15.0435,-16.5393,-14.9065,-15 v11.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-14.6968,-17.2845,-16.0192,-14.9786,-13.4101,-15.1897,-11.4579,-12.5237,-14.9636,-16.2764,-14.4733,-16.7536,-16.1827,-15.1435 v12.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-14.5569,-17.5008,-15.9619,-14.868,-13.0115,-14.9169,-11.3986,-12.5853,-14.8609,-16.3025,-14.3144,-16.9579,-16.1305,-15.057 v13.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-14.7852,-19.3757,-16.9563,-15.2754,-20.3454,-15.1981,-11.5719,-12.739,-15.3887,-17.3065,-14.5422,-18.6807,-16.9984,-15.6349 -libaom-v3.12.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,1.143,-1.0602,-0.9027,0.9846,-0.3873,-0.2492,-3.7083,-2.957,0.172,-2.1855,1.3376,-0.2878,-0.4452,1.0133 -libaom-v3.12.0-unconstrained,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,1.7104,-2.4014,-2.2625,1.1995,1.5996,1.3575,-0.04,0.363,0.9444,-2.0854,1.8808,-1.4692,-1.5659,1.1127 +v14.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-14.8305,-19.4056,-16.994,-15.319,-20.3965,-15.2328,-11.6275,-12.7953,-15.4224,-17.3463,-14.585,-18.712,-17.0353,-15.6752 +v15.0.0,AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,-14.8305,-19.4056,-16.994,-15.319,-20.3965,-15.2328,-11.6275,-12.7953,-15.4224,-17.3463,-14.585,-18.712,-17.0353,-15.6752 v02.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-4.6086,-3.1627,-2.2309,-4.3419,-2.6459,-4.6772,-6.89,-6.708,-4.1857,-3.0603,-5.0782,-2.0677,-1.9033,-4.3403 v03.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-8.8379,-7.6139,-6.7106,-8.6188,-5.5991,-8.1896,-10.6852,-10.9799,-8.3482,-8.1172,-8.973,-5.5115,-5.9987,-8.2192 v04.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-15.5113,-15.6704,-16.8411,-15.6248,-6.6354,-12.9952,-12.4312,-12.9985,-13.7184,-14.1316,-16.4193,-16.314,-19.442,-16.7825 @@ -1203,8 +1201,8 @@ v10.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.2451,-23.1024,-23.5654,-2 v11.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-22.7937,-25.1548,-25.4981,-23.3236,-13.6865,-19.3518,-26.1663,-25.4156,-21.2231,-21.8422,-23.9155,-25.3504,-26.6557,-24.5528 v12.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-22.7979,-24.9173,-25.2884,-23.3014,-13.5123,-19.3504,-26.2891,-25.3436,-21.219,-21.6718,-23.9117,-25.0318,-26.3931,-24.4852 v13.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.037,-24.8971,-25.4813,-23.5013,-39.9303,-19.5569,-26.8752,-25.9985,-21.4704,-21.784,-24.1639,-25.3977,-26.9113,-24.7805 -libaom-v3.12.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,0.0787,-1.9284,-1.2115,-0.1045,-1.1178,-0.9762,-1.4893,-1.4631,-1.0947,-0.8405,0.0811,-1.9536,-1.2017,0.0024 -libaom-v3.12.0-unconstrained,AI,E,Shaky_Quad_1920x1080_30fps.y4m,0.2292,-1.9513,-2.5176,0.0039,-1.1689,-0.9782,-7.0459,-5.9672,-0.3371,-1.6145,0.2402,-1.877,-2.3721,0.1604 +v14.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.097,-24.9407,-25.5526,-23.5606,-39.9712,-19.5994,-26.9457,-26.0695,-21.5245,-21.8362,-24.2253,-25.4361,-26.9834,-24.8405 +v15.0.0,AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.097,-24.9407,-25.5526,-23.5606,-39.9712,-19.5994,-26.9457,-26.0695,-21.5245,-21.8362,-24.2253,-25.4361,-26.9834,-24.8405 v02.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-1.1991,-48.3423,-44.7394,-6.8361,-2.9291,-2.5375,-4.5908,-3.9985,-3.8553,-16.4502,-1.2069,-48.3593,-44.5349,-2.415 v03.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-2.0682,-49.3635,-47.5754,-7.8226,-3.6129,-3.3694,-6.6761,-5.901,-4.7299,-17.7129,-2.0807,-49.3049,-47.3587,-3.3069 v04.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-4.2371,-49.9149,-50.0614,-9.9619,-6.432,-6.1476,-9.8359,-8.8692,-6.9802,-19.6884,-4.25,-49.9381,-49.8249,-5.4731 @@ -1217,8 +1215,8 @@ v10.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-8.6716,-52.1005,-49.2782,-13.9574,- v11.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-8.7417,-55.2716,-50.3028,-14.1006,-10.5282,-10.1778,-16.9371,-16.0842,-11.6895,-24.5515,-8.7636,-55.3756,-50.0506,-9.9129 v12.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-8.719,-55.2431,-50.565,-14.098,-10.4794,-10.1551,-16.8479,-16.0281,-11.6627,-24.6116,-8.7427,-55.3282,-50.2854,-9.8941 v13.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-8.8371,-53.4249,-48.1902,-13.9249,-9.6947,-10.2037,-16.8975,-16.1125,-11.6598,-24.0301,-8.8569,-53.5395,-47.9806,-9.9766 -libaom-v3.12.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-0.1611,-2.0839,-2.667,-0.3776,-0.2598,-0.3814,-0.5909,-1.031,-0.6414,-1.0049,-0.1555,-2.1906,-2.735,-0.2511 -libaom-v3.12.0-unconstrained,AI,E,Shaky_Walk_1920x1080_25fps.y4m,0.482,0.3963,0.9826,0.5117,-0.0606,-0.1429,2.4348,4.2258,0.4416,-0.0691,0.4738,0.5776,1.1875,0.4569 +v14.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-8.8621,-53.4525,-48.1791,-13.9475,-9.7157,-10.2163,-16.9285,-16.1407,-11.6984,-24.0546,-8.8818,-53.5666,-47.9736,-10.0011 +v15.0.0,AI,E,Shaky_Quad_1920x1080_30fps.y4m,-8.8621,-53.4525,-48.1791,-13.9475,-9.7157,-10.2163,-16.9285,-16.1407,-11.6984,-24.0546,-8.8818,-53.5666,-47.9736,-10.0011 v02.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-3.221,-35.3472,-39.9742,-7.3839,-3.3524,-3.3419,-4.7183,-4.4634,-4.6194,-13.8348,-3.1066,-35.7785,-40.2537,-4.1934 v03.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-4.6514,-37.2854,-43.6132,-9.0101,-4.614,-4.7207,-5.9687,-5.6391,-6.1267,-15.2855,-4.5681,-37.6795,-43.7377,-5.6899 v04.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-6.7462,-38.4113,-45.5561,-11.0637,-6.6307,-6.8443,-8.3169,-7.8979,-8.0053,-17.2403,-6.7155,-38.7668,-45.6744,-7.8335 @@ -1231,8 +1229,8 @@ v10.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-11.2637,-37.5466,-41.4367,-14.6247, v11.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-11.2054,-37.9963,-41.6202,-14.6229,-11.263,-11.0245,-17.3408,-16.8518,-12.9277,-20.1838,-11.043,-38.2969,-41.752,-11.9975 v12.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-11.2237,-37.9789,-42.079,-14.6657,-11.202,-10.975,-17.2472,-16.7449,-12.9359,-20.2676,-11.06,-38.2871,-42.1348,-12.017 v13.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-11.2925,-37.4334,-40.2837,-14.5859,-11.0694,-11.0787,-17.3257,-16.7835,-12.9662,-19.9886,-11.1367,-37.7288,-40.3686,-12.0716 -libaom-v3.12.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,0.3847,-0.2919,-0.2864,0.3044,0.7822,0.6587,-2.2229,-3.1001,0.2932,0.3314,0.3704,-0.2985,-0.3027,0.2174 -libaom-v3.12.0-unconstrained,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,0.5645,-2.3486,-2.3868,0.2098,1.4897,1.2518,1.3244,1.3026,0.3161,-0.648,0.5513,-2.3641,-2.3965,-0.0733 +v14.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-11.3064,-37.4438,-40.279,-14.5978,-11.0749,-11.0904,-17.3587,-16.8163,-12.9807,-19.9904,-11.1507,-37.739,-40.3642,-12.0849 +v15.0.0,AI,E,Shaky_Walk_1920x1080_25fps.y4m,-11.3064,-37.4438,-40.279,-14.5978,-11.0749,-11.0904,-17.3587,-16.8163,-12.9807,-19.9904,-11.1507,-37.739,-40.3642,-12.0849 v02.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-4.6348,-4.4147,-4.5422,-4.6193,-3.8607,-4.262,-6.3108,-6.2653,-4.3594,-4.5033,-4.6546,-4.4322,-4.5494,-4.6443 v03.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-6.9336,-6.4542,-6.5997,-6.8902,-6.1835,-6.683,-8.2041,-8.1999,-6.7057,-6.4025,-6.9396,-6.4542,-6.602,-6.8842 v04.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-9.6935,-12.252,-11.9627,-9.9907,-8.7518,-9.3513,-10.875,-10.9654,-9.738,-10.2351,-9.6986,-12.2571,-11.9764,-10.2479 @@ -1245,8 +1243,8 @@ v10.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-17.9491,-18.7379,-18.3747,-18. v11.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-17.7195,-17.7585,-17.5563,-17.7131,-16.4885,-16.945,-22.7605,-22.0621,-17.3495,-17.4498,-17.7457,-17.7644,-17.5507,-17.7247 v12.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-17.7545,-17.9095,-17.566,-17.753,-16.465,-16.9931,-22.6308,-22.0715,-17.424,-17.4212,-17.7592,-17.921,-17.5653,-17.7504 v13.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-17.8532,-18.5394,-18.5241,-17.9321,-19.4274,-17.0398,-23.3122,-22.4551,-17.5443,-18.0229,-17.868,-18.5449,-18.5126,-17.9967 -libaom-v3.12.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-0.292,-0.3587,-3.0983,-0.3904,0.5215,-0.0259,-1.0873,-0.4533,-0.3024,-0.6729,-0.2921,-0.3552,-3.1079,-0.3679 -libaom-v3.12.0-unconstrained,AI,E,WalkingInStreet_1920x1080_30fps.y4m,0.7018,-1.27,-3.0925,0.457,1.0358,0.5325,3.0396,3.2629,0.9419,-0.2463,0.7021,-1.2687,-3.1027,0.4698 +v14.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-17.9078,-18.5882,-18.5791,-17.9864,-19.4734,-17.0872,-23.3844,-22.5252,-17.5955,-18.0835,-17.9224,-18.5936,-18.5676,-18.0506 +v15.0.0,AI,E,Vertical_Carnaby_1080x1920_5994.y4m,-17.9078,-18.5882,-18.5791,-17.9864,-19.4734,-17.0872,-23.3844,-22.5252,-17.5955,-18.0835,-17.9224,-18.5936,-18.5676,-18.0506 v02.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-3.9815,-5.1615,-15.3967,-4.4967,-4.2841,-4.2915,-5.8644,-5.6712,-4.2614,-6.6636,-3.9804,-5.158,-15.3711,-4.3333 v03.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-6.2359,-7.0437,-16.2803,-6.676,-5.9437,-6.2238,-8.2743,-7.9342,-6.2025,-8.4516,-6.2342,-7.0485,-16.2552,-6.5443 v04.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-8.2371,-10.7064,-20.9243,-8.8814,-7.8777,-8.4263,-10.5004,-9.8826,-8.0131,-11.4388,-8.2354,-10.7003,-20.9049,-8.7057 @@ -1259,8 +1257,8 @@ v10.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-14.1416,-18.714,-25.6703,-14.8 v11.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-13.9637,-18.309,-25.3882,-14.6897,-13.8407,-13.887,-19.4787,-18.7813,-14.0154,-18.3089,-13.9619,-18.294,-25.3605,-14.5669 v12.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-13.9425,-17.9133,-24.4047,-14.608,-13.8573,-13.8537,-19.6254,-18.9995,-13.9826,-18.0509,-13.9399,-17.9026,-24.3819,-14.4988 v13.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-13.9162,-17.951,-24.4812,-14.5908,-13.8512,-13.8883,-19.6387,-18.9718,-13.966,-18.0847,-13.9136,-17.9369,-24.4446,-14.4831 -libaom-v3.12.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-0.2594,-0.7627,-0.5909,-0.3016,-0.3331,-0.4476,-1.4415,-8.0607,-0.6498,-0.4261,-0.2566,-0.7454,-0.5896,-0.3287 -libaom-v3.12.0-unconstrained,AI,E,WorldCup_far_1920x1080_30p.y4m,0.4863,-1.4973,-1.8181,0.262,0.458,0.2807,3.0213,2.0131,0.3029,-0.2955,0.4838,-1.4921,-1.821,0.1982 +v14.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-13.9275,-17.9601,-24.4803,-14.6017,-13.8434,-13.8895,-19.6701,-19.0008,-13.9749,-18.1005,-13.9251,-17.9466,-24.4425,-14.4939 +v15.0.0,AI,E,WalkingInStreet_1920x1080_30fps.y4m,-13.9275,-17.9601,-24.4803,-14.6017,-13.8434,-13.8895,-19.6701,-19.0008,-13.9749,-18.1005,-13.9251,-17.9466,-24.4425,-14.4939 v02.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-4.8278,-7.0891,-7.3843,-5.0822,-5.0546,-5.3559,-4.2225,-4.516,-4.9516,-6.5834,-4.8274,-7.0795,-7.3708,-5.1544 v03.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-6.97,-9.9759,-8.1688,-7.194,-6.2156,-6.9367,-5.3492,-5.6079,-6.608,-9.0157,-6.9725,-9.9645,-8.1653,-7.2788 v04.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-10.5546,-15.3428,-14.3981,-11.0137,-9.5607,-10.5311,-8.7346,-8.8652,-9.9158,-13.3413,-10.561,-15.3068,-14.3804,-11.1197 @@ -1273,8 +1271,8 @@ v10.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-17.9216,-23.2212,-20.7377,-18.3591, v11.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-17.8469,-22.9734,-20.3088,-18.2565,-16.0589,-17.3233,-18.5728,-18.2062,-16.7032,-21.4738,-17.8495,-22.9429,-20.2995,-18.3776 v12.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-17.976,-23.1011,-20.5466,-18.3914,-16.1651,-17.446,-18.8724,-18.4698,-16.8174,-21.5999,-17.9792,-23.0654,-20.5342,-18.5106 v13.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-17.8234,-23.4846,-20.3038,-18.2657,-19.4492,-17.2527,-18.6655,-18.3148,-16.6893,-21.5559,-17.8272,-23.4514,-20.292,-18.399 -libaom-v3.12.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,5.3537,29.8446,35.066,7.0803,8.4618,11.5401,-3.1908,-4.5024,5.148,18.0444,3.0493,28.4925,34.2901,5.2307 -libaom-v3.12.0-unconstrained,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,5.5418,2.6109,3.877,5.3436,4.6673,4.858,5.9839,6.1808,5.219,4.0149,5.2847,2.669,3.8518,5.3556 +v14.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-17.8419,-23.4894,-20.3438,-18.2846,-19.456,-17.2645,-18.6977,-18.348,-16.7113,-21.5706,-17.8455,-23.4559,-20.3293,-18.4171 +v15.0.0,AI,E,WorldCup_far_1920x1080_30p.y4m,-17.8419,-23.4894,-20.3438,-18.2846,-19.456,-17.2645,-18.6977,-18.348,-16.7113,-21.5706,-17.8455,-23.4559,-20.3293,-18.4171 v02.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-2.0141,-13.4047,-21.9694,-3.2722,-2.0688,-1.9386,-1.3545,-1.665,-2.3106,-5.4703,-2.0418,-13.7799,-22.2943,-3.248 v03.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-3.2895,-18.5366,-25.5853,-4.8098,-2.7307,-2.6241,-1.8936,-2.5231,-3.4885,-8.3517,-3.1955,-18.9891,-25.8923,-4.6461 v04.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-12.117,-25.3753,-33.6014,-13.5283,-9.6469,-10.4248,-8.3366,-9.3505,-11.2737,-16.247,-12.286,-25.8429,-33.8863,-13.6065 @@ -1287,8 +1285,8 @@ v10.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-18.1956,-29.9398,-43.9856 v11.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-21.6658,-32.3435,-45.4009,-23.0744,-17.7158,-18.2794,-18.8755,-20.2649,-19.8389,-25.3081,-21.9541,-32.8437,-45.6981,-23.2177 v12.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-21.8759,-30.7862,-45.4137,-23.1959,-17.7947,-18.3811,-18.7004,-20.148,-19.9609,-25.2106,-22.1064,-31.2552,-45.6896,-23.3128 v13.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-21.4229,-33.5611,-46.2318,-22.9361,-20.3571,-18.8539,-17.1667,-18.6496,-19.5523,-26.3203,-21.5241,-33.9157,-46.4898,-22.9113 -libaom-v3.12.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,14.2821,6.588,23.3871,14.3074,17.0461,18.6854,20.9085,20.4099,15.9919,16.1157,16.6613,5.0419,22.6895,16.3213 -libaom-v3.12.0-unconstrained,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,4.7575,0.9139,0.0895,4.3275,3.4361,2.8693,6.3721,6.2117,3.9056,2.7827,5.4996,0.9253,0.0802,5.6686 +v14.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-21.1115,-33.3759,-45.9696,-22.6312,-20.1388,-18.6748,-17.2415,-18.6496,-19.2971,-25.9835,-21.1971,-33.7507,-46.232,-22.5867 +v15.0.0,LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-21.1147,-33.3922,-45.9685,-22.6348,-20.1423,-18.6713,-17.231,-18.6457,-19.3018,-25.9863,-21.2047,-33.7755,-46.2354,-22.5949 v02.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-0.8548,-27.9989,-19.364,-2.8598,-0.9669,-0.9775,0.0342,-0.0648,-1.2614,-8.3571,-0.9809,-28.5564,-19.4384,-2.4771 v03.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-3.3799,-28.8348,-18.756,-5.1734,-1.6522,-2.0938,-2.7909,-2.5158,-2.4779,-10.8268,-3.4826,-29.4332,-18.8369,-4.9261 v04.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-6.6616,-49.6944,-30.5337,-9.8799,-4.6033,-5.1689,-6.4555,-5.9697,-5.6389,-19.2208,-6.7273,-50.3302,-30.542,-8.981 @@ -1301,8 +1299,8 @@ v10.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.0125,-54.8165,-40.7982,-17.3 v11.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-13.8417,-52.2091,-38.0397,-16.9052,-11.6027,-10.7028,-13.8722,-13.5464,-13.1949,-24.3507,-14.3061,-52.7902,-37.9446,-16.4524 v12.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.0866,-52.4114,-37.0083,-17.0632,-11.4373,-10.7371,-13.8296,-13.4659,-13.2591,-24.4028,-14.55,-52.9872,-36.9141,-16.6395 v13.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.571,-55.8571,-41.2862,-17.9138,-13.1374,-12.1654,-14.1516,-13.8084,-13.4324,-26.434,-14.8699,-56.4278,-41.131,-17.1265 -libaom-v3.12.0,LD,A2,CrowdRun_1920x1080p50.y4m,14.4533,-9.0746,-7.1902,12.4855,16.1784,11.7886,31.3121,30.7667,19.4,6.7063,21.5876,-8.6953,-6.6792,18.6373 -libaom-v3.12.0-unconstrained,LD,A2,CrowdRun_1920x1080p50.y4m,5.3337,1.9582,2.6618,4.9963,4.6176,4.2168,6.41,6.7581,5.453,4.854,6.0748,1.9836,2.8738,6.1946 +v14.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4948,-55.2808,-41.4908,-17.8246,-13.0642,-12.0434,-13.9843,-13.6593,-13.3738,-26.2916,-14.7876,-55.8374,-41.3643,-17.0398 +v15.0.0,LD,A2,Boat_1920x1080_5994_10bit_420.y4m,-14.4971,-55.2798,-41.492,-17.8274,-13.065,-12.0427,-13.9847,-13.6607,-13.3754,-26.2936,-14.7898,-55.8363,-41.3652,-17.0424 v02.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-1.0677,-5.4606,-7.1578,-1.5012,-1.0191,-1.1284,-2.1479,-1.9397,-0.5734,-2.467,-1.2617,-5.7057,-7.3771,-1.6968 v03.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-3.8823,-10.1578,-8.8463,-4.3447,-3.327,-3.3769,-5.6911,-4.9435,-2.5958,-6.9103,-4.0693,-10.4033,-9.0473,-4.5815 v04.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-7.68,-19.1525,-17.4988,-8.58,-6.5271,-6.5907,-10.4994,-9.4374,-6.2268,-12.3799,-7.9121,-19.5018,-17.7213,-8.9139 @@ -1315,8 +1313,8 @@ v10.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-14.0136,-20.8617,-19.0397,-14.5086,-10. v11.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-14.6909,-19.84,-18.1534,-15.0424,-10.7212,-10.5972,-18.8164,-17.6175,-13.1878,-18.0939,-15.3851,-20.3391,-18.4602,-15.8199 v12.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-15.1093,-20.5581,-19.152,-15.4984,-10.8199,-10.8727,-19.0014,-17.8232,-13.582,-18.553,-15.8086,-21.089,-19.4856,-16.2846 v13.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-14.8275,-21.8327,-20.0349,-15.3327,-12.5432,-11.605,-18.6043,-17.4293,-13.3193,-19.161,-15.4057,-22.2476,-20.2735,-15.9856 -libaom-v3.12.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,6.0387,13.1051,-20.5648,4.7366,5.0764,2.8012,14.7598,13.8677,7.5392,6.7336,10.3037,19.5955,-20.9599,9.0057 -libaom-v3.12.0-unconstrained,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,3.6793,-13.4822,-10.3053,1.9764,-0.4327,0.6012,3.7019,2.7617,1.2542,-5.3296,3.836,-15.5648,-10.8283,1.1824 +v14.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-14.8294,-21.8146,-20.0595,-15.3352,-12.4793,-11.5575,-18.6898,-17.5308,-13.3082,-19.1023,-15.4091,-22.2367,-20.296,-15.9921 +v15.0.0,LD,A2,CrowdRun_1920x1080p50.y4m,-14.844,-21.8232,-20.045,-15.3482,-12.5144,-11.599,-18.701,-17.5395,-13.3308,-19.1183,-15.4233,-22.2465,-20.2811,-16.0036 v02.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-1.1963,-4.5039,-11.279,-1.937,0.008,-0.8769,0.0014,-0.4223,-0.9095,-2.918,-1.1524,-4.7571,-11.4996,-2.0803 v03.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-8.0845,-8.8731,-15.1691,-8.5364,-6.0121,-6.6913,-10.8495,-9.8099,-7.0814,-9.7499,-8.2963,-9.1493,-15.5685,-8.9343 v04.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-11.9968,-15.826,-21.07,-12.712,-10.4335,-10.8936,-20.0438,-17.3626,-11.1302,-13.539,-12.3283,-16.0979,-21.4353,-13.2432 @@ -1329,8 +1327,8 @@ v10.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-24.667,-29.183 v11.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-26.655,-29.3775,-30.2518,-27.0403,-26.4157,-25.5347,-33.33,-31.5223,-26.5998,-26.5703,-27.6626,-30.7719,-31.0416,-28.3077 v12.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-27.6495,-29.6356,-33.9526,-28.1408,-26.4969,-25.8328,-33.8619,-32.1702,-27.2697,-27.6627,-28.6996,-30.9955,-34.7254,-29.3558 v13.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-26.5222,-31.0144,-30.5713,-26.9878,-21.9062,-24.847,-33.2929,-31.3292,-25.8471,-26.8172,-27.3668,-32.2466,-31.1871,-28.1426 -libaom-v3.12.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,10.5077,-2.9296,-1.4446,9.3943,5.7981,4.0941,14.017,14.4393,10.8828,2.8846,12.2723,-3.9029,-2.0894,10.9777 -libaom-v3.12.0-unconstrained,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,5.7133,2.3685,0.8083,5.2941,3.1743,3.6993,4.359,4.1638,3.9734,3.4093,6.1735,2.3806,0.9356,6.0388 +v14.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-25.7643,-30.2923,-30.3562,-26.2543,-21.5637,-24.3612,-32.1059,-30.1334,-25.2806,-25.7319,-26.6005,-31.4667,-31.0163,-27.3829 +v15.0.0,LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-25.7747,-30.3105,-30.2679,-26.2602,-21.5901,-24.365,-32.076,-30.1265,-25.2838,-25.6846,-26.6113,-31.4755,-30.933,-27.3912 v02.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-1.4233,-11.1627,-8.5623,-2.1928,-1.2125,-1.2326,-1.2782,-1.5456,-1.6316,-4.3971,-1.5505,-11.2942,-8.5247,-2.1851 v03.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-5.1789,-17.2103,-14.8068,-6.1946,-4.012,-4.1666,-4.4456,-4.4273,-4.7929,-8.2866,-5.3331,-17.4488,-14.7777,-6.2011 v04.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-12.3165,-25.4404,-22.1634,-13.4252,-10.4951,-10.7936,-13.5968,-12.9591,-11.5163,-15.7367,-12.5243,-25.5712,-22.1831,-13.4862 @@ -1343,8 +1341,8 @@ v10.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-20.3328,-36.1819,-27.239, v11.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-21.0867,-36.5262,-27.1633,-22.0846,-17.8956,-17.8712,-22.6009,-22.3141,-20.052,-24.9363,-21.5782,-36.7505,-27.2672,-22.3817 v12.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-21.1067,-36.7118,-26.8728,-22.104,-17.4464,-17.5915,-22.5152,-22.2329,-19.9042,-24.687,-21.5875,-37.0168,-26.989,-22.4037 v13.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-20.547,-37.5671,-27.8365,-21.6818,-18.635,-17.3185,-22.1689,-21.7699,-19.3245,-24.9986,-20.913,-37.7169,-27.9155,-21.8244 -libaom-v3.12.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,14.2822,3.2584,-5.125,12.5539,11.5556,8.9541,37.4284,37.5772,13.6274,5.2325,22.9757,9.7039,-1.5886,21.6322 -libaom-v3.12.0-unconstrained,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,3.3494,0.9256,-0.9363,2.9833,3.8726,3.6431,5.675,5.5471,2.4796,1.7675,3.6267,1.6893,-0.2424,3.479 +v14.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-20.4438,-36.0239,-27.1764,-21.4865,-18.5885,-17.2954,-22.5002,-21.8716,-19.2206,-24.4151,-20.8116,-36.023,-27.2443,-21.6609 +v15.0.0,LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-20.4384,-36.0906,-27.2289,-21.4885,-18.5781,-17.2961,-22.5036,-21.8855,-19.2168,-24.4525,-20.8081,-36.0943,-27.3006,-21.6651 v02.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-1.6212,-6.7726,-5.0012,-2.0905,-1.001,-1.2788,-2.5007,-2.1526,-1.4219,-3.6919,-1.6054,-7.2106,-4.8778,-1.9426 v03.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-5.743,-16.501,-6.7845,-6.4208,-3.9562,-4.4526,-9.0203,-8.474,-4.9875,-10.7382,-5.6315,-17.1205,-6.7568,-6.1259 v04.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-12.1814,-25.5659,-16.2482,-13.1939,-9.7594,-10.5929,-16.1235,-15.9004,-11.1076,-18.546,-12.0322,-25.6917,-16.0371,-12.7237 @@ -1357,8 +1355,8 @@ v10.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-20.0485,-38.7 v11.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-21.2304,-39.2817,-27.6601,-22.6855,-18.8384,-19.5117,-27.6781,-27.0869,-20.2372,-30.2356,-21.4341,-39.5137,-27.5397,-22.3481 v12.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-20.8658,-39.2769,-26.7152,-22.3128,-18.071,-18.7113,-27.0839,-26.5849,-19.8108,-29.6896,-21.0523,-39.5743,-26.5678,-21.9636 v13.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-20.7018,-39.3089,-26.9299,-22.1857,-20.4782,-18.6967,-26.8799,-26.3588,-19.7444,-29.717,-20.7901,-39.495,-26.8791,-21.7297 -libaom-v3.12.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,21.7594,34.1868,35.829,23.1628,19.1873,19.3503,21.3314,23.1028,22.3423,28.5936,22.75,33.4452,34.7906,23.5173 -libaom-v3.12.0-unconstrained,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,4.2062,-7.2131,-5.2391,2.9587,0.921,2.0359,0.4988,0.4894,1.7585,-1.3849,4.5865,-7.2852,-5.2485,3.8764 +v14.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-20.6585,-39.2212,-27.4493,-22.1684,-20.5047,-18.6769,-26.7878,-26.2756,-19.732,-29.7536,-20.7448,-39.3343,-27.243,-21.6893 +v15.0.0,LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-20.6489,-39.1893,-27.4488,-22.1576,-20.4846,-18.6509,-26.788,-26.2752,-19.7203,-29.73,-20.7382,-39.3085,-27.2498,-21.6823 v02.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-0.8718,-15.8509,-15.2514,-2.6364,-0.7906,-0.9248,-1.7098,-1.3807,-1.6377,-7.0042,-0.8402,-15.8876,-15.2925,-1.9419 v03.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-7.0526,-21.8724,-25.8712,-9.2024,-5.5816,-6.4794,-10.0874,-8.6081,-6.9754,-14.297,-7.078,-21.9094,-25.9407,-8.372 v04.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-11.874,-31.9393,-33.1943,-14.5405,-9.9129,-10.9678,-15.289,-13.3411,-11.7719,-20.6067,-11.8981,-31.9612,-33.2166,-13.5362 @@ -1371,8 +1369,8 @@ v10.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-23.5081,-41.3612,-41.7 v11.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-24.3004,-43.3284,-39.4282,-26.3966,-21.446,-22.2098,-25.3927,-24.5828,-23.9913,-32.7624,-24.5957,-43.3241,-39.4759,-25.905 v12.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.5065,-43.5138,-40.7874,-27.557,-22.0425,-23.1015,-26.6977,-25.9799,-24.7973,-33.735,-25.8037,-43.4724,-40.8677,-27.0896 v13.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-25.409,-47.7224,-45.5696,-28.0691,-27.4254,-23.1116,-29.3324,-27.7018,-24.5697,-36.5491,-25.629,-47.6902,-45.5695,-27.2441 -libaom-v3.12.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,10.3544,-3.6136,-8.148,8.8933,11.115,10.1077,37.7717,36.2691,12.4657,6.0241,22.9085,1.9198,-4.0194,21.5151 -libaom-v3.12.0-unconstrained,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,3.2834,-1.4782,-4.0744,2.7509,4.5369,3.7503,8.6975,8.0613,3.4249,2.9368,3.5266,-1.2728,-3.8632,3.3114 +v14.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-24.6159,-47.0024,-44.7206,-27.2779,-26.6503,-22.3541,-28.2896,-26.6823,-23.9806,-35.7163,-24.846,-46.9747,-44.6924,-26.4549 +v15.0.0,LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-24.5984,-47.0301,-44.7916,-27.2695,-26.6357,-22.3235,-28.3281,-26.6891,-23.9589,-35.7344,-24.8288,-47.0041,-44.7723,-26.443 v02.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-1.1122,-3.407,-2.9013,-1.2903,-2.2461,-2.2936,-2.6249,-2.349,-1.1285,-0.7526,-1.2253,-3.4833,-2.951,-1.3801 v03.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-4.479,-8.9114,-5.0746,-4.7086,-5.5518,-5.6842,-6.9554,-6.3002,-3.991,-5.4005,-4.6061,-9.121,-5.1601,-4.8425 v04.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-7.4646,-17.3313,-16.2932,-8.3057,-8.9808,-9.1546,-12.1721,-11.5037,-7.4207,-10.7958,-7.6438,-17.5862,-16.4265,-8.3314 @@ -1385,8 +1383,8 @@ v10.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-13.5659,-25.1294,-26.32,-14.6 v11.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-14.3057,-24.3381,-25.6101,-15.279,-15.2736,-15.3791,-21.9582,-20.8435,-14.5985,-19.5836,-15.0647,-25.0394,-26.2812,-15.7531 v12.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-14.3506,-24.0741,-24.8378,-15.2736,-14.9382,-15.1999,-21.7685,-20.6277,-14.5456,-19.4883,-15.1139,-24.7897,-25.5212,-15.7772 v13.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-14.1854,-24.1263,-24.9026,-15.129,-16.335,-15.1293,-21.5784,-20.4664,-14.4599,-19.4021,-14.8125,-24.7804,-25.5439,-15.5013 -libaom-v3.12.0,LD,A2,OldTownCross_1920x1080p50.y4m,2.2271,43.3889,47.3047,5.0263,-1.691,0.0692,0.8043,-1.6512,6.9963,24.3328,2.8581,42.7887,46.3377,5.9869 -libaom-v3.12.0-unconstrained,LD,A2,OldTownCross_1920x1080p50.y4m,3.6931,10.1761,5.6382,3.7483,1.1936,1.0337,1.793,1.1343,5.2535,11.7607,3.2045,8.6766,5.2932,3.4324 +v14.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-14.1751,-24.0545,-24.9249,-15.1167,-16.3135,-15.1274,-21.6173,-20.478,-14.4492,-19.4158,-14.8032,-24.6981,-25.5663,-15.4884 +v15.0.0,LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-14.1757,-24.0482,-24.9116,-15.1163,-16.3146,-15.1141,-21.6173,-20.478,-14.4343,-19.4189,-14.8023,-24.69,-25.5502,-15.4863 v02.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-2.0075,-28.228,-20.969,-3.7032,-2.7372,-3.2488,-4.5212,-4.2374,-0.4754,-10.3246,-2.4199,-29.5162,-21.1746,-3.9901 v03.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-3.8811,-30.9328,-21.8897,-5.5845,-3.3609,-3.6155,-2.731,-3.4893,-2.013,-12.6972,-4.3462,-32.3709,-22.1185,-5.9287 v04.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-13.1399,-39.8117,-31.8412,-14.8582,-11.8519,-11.9612,-12.069,-13.1412,-10.9363,-22.1762,-13.8402,-41.4042,-32.1101,-15.5063 @@ -1399,8 +1397,8 @@ v10.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-24.4257,-50.4409,-41.1717,-26.0386, v11.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-25.1134,-49.8402,-41.7579,-26.6883,-22.8025,-22.3623,-19.859,-22.5099,-23.9999,-37.661,-25.9116,-51.5146,-41.9897,-27.3535 v12.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-25.5723,-50.1197,-41.2686,-27.0929,-23.4476,-22.8711,-20.4474,-23.1045,-24.4598,-38.0175,-26.3768,-51.7848,-41.5103,-27.7844 v13.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-24.7829,-51.9112,-43.8606,-26.5601,-22.1461,-22.3643,-19.5448,-22.2258,-23.7425,-38.2067,-25.4607,-53.5341,-44.0502,-27.1252 -libaom-v3.12.0,LD,A2,PedestrianArea_1920x1080p25.y4m,11.3899,1.1316,5.9839,10.4461,7.2842,5.7656,11.8478,11.5395,11.794,10.7392,14.1298,1.5753,6.9064,12.9604 -libaom-v3.12.0-unconstrained,LD,A2,PedestrianArea_1920x1080p25.y4m,4.8738,2.1811,5.6604,4.749,3.4657,3.8988,2.1897,1.9672,4.6783,6.5257,5.2329,2.1727,5.887,5.1629 +v14.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-24.3909,-51.767,-43.3135,-26.1654,-21.7636,-21.9805,-18.88,-21.53,-23.3836,-37.9434,-25.0462,-53.3693,-43.4924,-26.7028 +v15.0.0,LD,A2,OldTownCross_1920x1080p50.y4m,-24.3417,-51.6093,-43.2917,-26.1145,-21.7041,-21.9453,-18.8332,-21.5036,-23.3309,-37.8818,-24.9991,-53.226,-43.4731,-26.6529 v02.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-0.5815,-5.7826,-1.8347,-0.9181,-0.7861,-0.977,-2.249,-2.0016,0.2179,-0.2646,-0.6305,-5.9975,-2.0132,-0.9793 v03.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-7.1184,-12.2959,-8.0114,-7.4405,-6.2886,-7.0918,-7.036,-6.8141,-5.4709,-5.6891,-7.2114,-12.4437,-8.213,-7.5622 v04.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-11.9481,-22.3361,-17.5514,-12.819,-11.3423,-12.2367,-12.5527,-12.0881,-10.5341,-12.7962,-12.0656,-22.4626,-17.7225,-12.947 @@ -1413,8 +1411,8 @@ v10.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-18.2624,-28.786,-24.0005,-19.1527 v11.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-18.4808,-29.8224,-24.0828,-19.4033,-17.1724,-17.7061,-20.7459,-20.0702,-17.9802,-22.8006,-18.6626,-30.0639,-24.3713,-19.6179 v12.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-18.4978,-30.2136,-24.7373,-19.4769,-16.8761,-17.5188,-21.1237,-20.5391,-17.8693,-23.0586,-18.674,-30.4449,-25.0295,-19.6731 v13.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-18.1787,-29.7012,-24.4932,-19.1526,-20.055,-17.0917,-20.6412,-20.0136,-17.5198,-22.977,-18.3045,-29.8917,-24.7326,-19.3022 -libaom-v3.12.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,10.153,-7.7031,-4.2899,8.4859,4.3514,4.1383,15.1883,15.3457,8.6668,1.2591,15.1767,-6.8183,-2.4619,13.0763 -libaom-v3.12.0-unconstrained,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,2.7106,-3.6473,-2.3893,2.1113,1.4467,1.8166,2.4239,2.3164,1.8832,-0.5233,3.4965,-3.278,-1.8466,3.0719 +v14.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-18.0572,-29.87,-24.6276,-19.0616,-19.9302,-17.1061,-20.9435,-20.0002,-17.4376,-22.9623,-18.1852,-30.0335,-24.8505,-19.2066 +v15.0.0,LD,A2,PedestrianArea_1920x1080p25.y4m,-18.0792,-29.8758,-24.5053,-19.0739,-19.9325,-17.0946,-20.9267,-20.0047,-17.4449,-22.9865,-18.209,-30.0363,-24.7288,-19.2213 v02.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-1.5981,-12.5785,-8.2251,-2.4223,-1.1785,-1.2975,-2.0035,-1.9362,-1.7709,-4.4484,-1.6251,-12.8625,-8.6428,-2.4648 v03.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-7.1716,-16.6928,-13.8564,-7.9362,-6.8493,-7.0481,-7.3447,-7.3528,-6.7291,-10.7643,-7.2136,-16.9973,-14.3296,-8.0626 v04.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-14.9556,-26.4424,-22.1112,-15.849,-15.85,-15.8375,-16.0002,-15.9086,-14.6609,-18.0034,-14.9993,-26.8155,-22.3767,-16.0061 @@ -1427,8 +1425,8 @@ v10.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-22.7504,-34.6198,-30.419 v11.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-22.9756,-34.8716,-31.1736,-23.9563,-22.5864,-22.6154,-26.5258,-26.1178,-22.4005,-26.2715,-23.2858,-35.4689,-31.8037,-24.3449 v12.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-23.1005,-34.8593,-30.7967,-24.0528,-22.4942,-22.606,-26.5035,-26.1689,-22.4504,-26.1774,-23.4023,-35.4171,-31.4447,-24.422 v13.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-23.1597,-34.9647,-30.2817,-24.082,-25.1377,-22.8148,-26.5828,-26.1864,-22.4775,-26.3803,-23.4142,-35.4934,-30.838,-24.4077 -libaom-v3.12.0,LD,A2,Riverbed_1920x1080p25.y4m,18.7557,1.2391,-5.8514,17.2422,14.2736,15.593,32.5545,29.5621,13.6546,17.3829,32.1868,6.8448,-1.4985,30.886 -libaom-v3.12.0-unconstrained,LD,A2,Riverbed_1920x1080p25.y4m,2.9751,-2.0723,-2.5413,2.6456,1.7668,2.0635,3.1361,2.0526,2.2179,4.9764,3.2445,-2.432,-3.3548,3.1954 +v14.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-23.0447,-34.8099,-30.2335,-23.9694,-25.0612,-22.6799,-26.4065,-26.0291,-22.3702,-26.4089,-23.299,-35.3463,-30.7839,-24.2948 +v15.0.0,LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-23.068,-34.6491,-30.2807,-23.9845,-25.1171,-22.729,-26.4115,-26.0347,-22.4056,-26.3792,-23.3224,-35.1944,-30.84,-24.3074 v02.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-2.4008,-0.4578,-17.2541,-2.7146,-1.9225,-2.4537,-3.7262,-3.5769,-1.6227,-0.8769,-2.4449,-0.4576,-17.8382,-2.7642 v03.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-5.2829,-10.0102,-11.2331,-5.5899,-3.5608,-4.5027,-4.1383,-4.1117,-4.2653,-6.8478,-5.3552,-10.1937,-11.4667,-5.8635 v04.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-7.3796,-21.2699,-30.8132,-8.5654,-5.5073,-6.7844,-6.2666,-6.0343,-6.5582,-11.5146,-7.4915,-21.5597,-31.3174,-8.7483 @@ -1441,8 +1439,8 @@ v10.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-14.776,-36.2635,-57.2698,-17.0601,-12.2 v11.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-16.188,-37.9527,-54.9331,-18.3255,-13.9851,-14.8851,-18.3106,-18.2201,-15.8313,-22.6472,-16.7181,-38.8442,-55.9256,-18.4023 v12.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-15.9875,-37.1471,-52.983,-18.0462,-13.6364,-14.5688,-17.8953,-17.8682,-15.624,-22.2491,-16.5142,-38.035,-53.885,-18.1741 v13.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-15.8892,-37.6745,-53.8528,-18.0175,-16.7991,-14.5549,-18.0144,-17.8468,-15.5349,-22.3096,-16.3107,-38.5106,-54.7659,-18.0038 -libaom-v3.12.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,16.3741,-5.2228,-4.2653,14.5499,18.9902,16.5979,25.4575,25.124,19.8316,10.5885,24.9895,-4.7656,-4.2561,22.8362 -libaom-v3.12.0-unconstrained,LD,A2,RushFieldCuts_1920x1080_2997.y4m,7.0173,1.4935,2.9954,6.4735,6.8311,6.8773,7.3569,6.9941,6.8239,8.7467,7.6327,1.2151,2.7339,7.5691 +v14.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-15.8773,-37.2978,-53.0623,-17.9687,-16.815,-14.569,-18.1825,-18.0095,-15.5226,-22.3979,-16.2979,-38.1321,-53.9398,-17.9818 +v15.0.0,LD,A2,Riverbed_1920x1080p25.y4m,-15.8757,-37.2936,-53.0735,-17.9675,-16.8229,-14.5761,-18.1911,-18.0213,-15.521,-22.39,-16.2955,-38.1289,-53.9517,-17.9798 v02.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-0.4155,-6.8021,-8.6194,-1.0351,-1.3876,-1.3367,-0.8064,-0.7834,0.0952,-1.8558,-0.6457,-7.1597,-8.9053,-0.98 v03.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-3.2729,-11.1038,-11.3195,-3.9519,-3.8887,-3.9785,-4.2681,-3.6666,-2.2628,-5.8672,-3.477,-11.564,-11.6902,-3.9021 v04.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-5.5625,-18.6251,-16.8953,-6.6265,-6.4543,-6.3031,-6.4101,-5.8158,-4.545,-9.7546,-5.8609,-19.1354,-17.3083,-6.5358 @@ -1455,8 +1453,8 @@ v10.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-11.3018,-21.2511,-14.5946,-11.88 v11.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-11.8009,-21.2385,-15.7867,-12.3882,-11.7587,-11.1741,-12.6838,-12.3386,-11.3029,-16.8239,-12.6447,-21.7329,-16.1857,-12.9907 v12.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-12.1143,-21.5655,-15.8259,-12.6989,-11.6664,-11.1915,-12.4617,-12.1272,-11.5102,-17.1492,-12.9521,-22.073,-16.2165,-13.2978 v13.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-11.9524,-22.7279,-17.9568,-12.6932,-11.3014,-11.5399,-12.0607,-11.8183,-11.4219,-17.8213,-12.6457,-23.1023,-18.2327,-13.081 -libaom-v3.12.0,LD,A2,Skater227_1920x1080_30fps.y4m,20.3896,-8.6373,-11.8726,16.2307,10.2879,11.6486,30.6808,29.2551,15.4803,0.6365,27.9102,-6.2729,-10.0304,24.4987 -libaom-v3.12.0-unconstrained,LD,A2,Skater227_1920x1080_30fps.y4m,1.5958,-4.7984,-5.7864,0.6219,0.4344,0.9464,3.7729,2.8137,0.7409,-3.4419,2.9101,-3.9812,-5.0895,2.2252 +v14.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-11.9204,-23.2082,-17.67,-12.6737,-11.2202,-11.4581,-12.3618,-12.0685,-11.4022,-17.8381,-12.6114,-23.6056,-17.9297,-13.0603 +v15.0.0,LD,A2,RushFieldCuts_1920x1080_2997.y4m,-11.9125,-23.2048,-17.6335,-12.6649,-11.2164,-11.4551,-12.373,-12.0704,-11.3953,-17.8087,-12.6044,-23.6003,-17.8938,-13.0524 v02.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-1.3661,-5.3143,-6.104,-1.9018,-0.4839,-0.7542,-2.0085,-1.9218,-1.5072,-4.3335,-1.5007,-5.5918,-5.833,-1.8883 v03.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-11.5611,-10.4235,-10.8351,-11.4507,-11.6819,-12.0417,-10.9177,-11.1045,-11.1588,-10.615,-11.5061,-10.82,-10.2011,-11.4205 v04.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-18.6133,-20.8559,-20.9209,-18.9143,-19.0064,-19.2349,-18.1035,-18.251,-18.5034,-17.8723,-18.4488,-21.1446,-20.4677,-18.6923 @@ -1469,8 +1467,8 @@ v10.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-28.2125,-32.7595,-31.9515,-28.7265, v11.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-29.0984,-35.2681,-34.413,-29.8326,-29.1408,-29.3316,-30.7778,-30.6042,-29.2513,-32.1243,-29.0946,-36.0113,-35.1254,-29.712 v12.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-29.1596,-34.9516,-35.1367,-29.8965,-28.9899,-29.208,-31.3415,-31.3092,-29.2446,-32.1611,-29.167,-35.8659,-35.8154,-29.7901 v13.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-28.9866,-35.0618,-34.3773,-29.7046,-36.3127,-29.212,-30.5073,-30.5474,-29.0588,-31.7156,-28.954,-35.7639,-34.93,-29.5536 -libaom-v3.12.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,15.6484,-14.7485,-13.6846,13.6601,13.8732,11.7931,47.3039,42.9436,14.9981,9.6942,30.2981,-13.0589,-10.9497,29.5695 -libaom-v3.12.0-unconstrained,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,2.527,-10.2357,-10.6508,1.6194,1.0694,1.1679,5.4368,4.029,1.5647,0.9196,2.5665,-10.5344,-11.1191,2.4407 +v14.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-28.6873,-34.7502,-34.3894,-29.4306,-36.1306,-28.9147,-30.1761,-30.2373,-28.8146,-31.2205,-28.6282,-35.3053,-35.0029,-29.2399 +v15.0.0,LD,A2,Skater227_1920x1080_30fps.y4m,-28.7447,-35.3106,-34.4026,-29.5169,-36.2269,-28.8939,-30.1644,-30.28,-28.8532,-31.499,-28.7016,-36.0025,-35.0818,-29.3427 v02.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-1.1082,-15.0371,-33.1848,-2.5379,-1.413,-1.3959,-2.0,-2.0838,-1.1606,-6.0154,-1.1711,-14.896,-33.7211,-1.8841 v03.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-3.8111,-14.4982,-36.9981,-5.1605,-2.3942,-2.7267,-5.0144,-4.9232,-3.01,-11.4646,-3.8924,-14.0765,-37.349,-4.6747 v04.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-5.8866,-26.3819,-48.0456,-7.9451,-4.6463,-5.2082,-7.851,-7.3427,-5.0548,-15.5218,-5.9973,-25.9869,-48.584,-7.0943 @@ -1483,8 +1481,8 @@ v10.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-1 v11.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-12.9643,-45.3009,-67.188,-16.5513,-10.6464,-11.2638,-19.0308,-18.5203,-12.7008,-25.887,-13.6777,-45.2594,-67.4139,-15.6136 v12.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-13.0484,-43.4589,-68.4572,-16.5673,-10.6731,-11.294,-19.2583,-18.6031,-12.7988,-25.9807,-13.7666,-43.3904,-68.7226,-15.7059 v13.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-12.6274,-46.8291,-68.7698,-16.3438,-12.1249,-10.9731,-19.0641,-18.2826,-12.4119,-26.1327,-13.2037,-46.773,-69.0313,-15.1782 -libaom-v3.12.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,6.9987,-9.2844,-11.4062,5.6756,3.6685,2.344,15.6927,18.9559,9.759,4.0583,15.6344,-6.6388,-10.981,14.6074 -libaom-v3.12.0-unconstrained,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,4.5991,5.2891,3.3224,4.5969,5.4985,5.2751,10.6712,9.4723,6.1722,5.0364,4.5697,6.1594,3.6268,4.7619 +v14.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-12.5814,-48.3395,-69.3306,-16.41,-12.0517,-10.9699,-18.8773,-18.0663,-12.4248,-26.6484,-13.155,-48.2596,-69.5906,-15.1667 +v15.0.0,LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-12.5799,-48.2703,-69.3388,-16.4063,-12.0492,-10.9787,-18.8715,-18.0725,-12.4318,-26.6145,-13.1537,-48.1897,-69.5981,-15.165 v02.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,0.5132,-8.2107,-13.3916,-0.4093,0.5753,0.5054,-1.4685,-1.4203,0.7568,-0.1259,0.2638,-8.1591,-13.0474,-0.0553 v03.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-1.6757,-18.6099,-16.8645,-3.0498,-1.5419,-1.3009,-4.7082,-5.1213,-1.577,-3.1276,-1.9123,-18.8909,-16.7675,-2.495 v04.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-7.725,-26.4809,-28.9799,-9.4683,-7.4425,-7.2107,-13.2242,-13.7392,-7.5612,-10.1623,-7.9447,-26.7457,-29.123,-8.6824 @@ -1497,8 +1495,8 @@ v10.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-15.2486,-37.7188,-41.0092, v11.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-16.9187,-37.8922,-42.6033,-19.08,-17.4275,-16.1262,-25.3642,-25.5763,-18.2796,-20.5739,-17.692,-38.7506,-43.3664,-18.4637 v12.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-16.8512,-37.5123,-41.8579,-18.9623,-16.8977,-15.636,-25.3621,-25.5276,-17.997,-20.3519,-17.6123,-38.4082,-42.5752,-18.3752 v13.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-16.6416,-38.6746,-41.6105,-18.79,-14.8314,-15.8109,-24.4665,-24.7511,-17.8643,-20.3447,-17.2348,-39.4649,-42.2221,-18.0351 -libaom-v3.12.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,8.137,-10.6634,-12.5327,6.1746,8.0867,3.9315,18.5072,18.4032,11.6305,-0.3316,11.8738,-12.0435,-14.167,9.9987 -libaom-v3.12.0-unconstrained,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,2.4278,-0.0938,-3.0828,1.8982,0.1453,0.8897,-2.0347,0.0006,1.2311,1.4317,2.9848,0.1881,-2.3893,2.991 +v14.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-16.5539,-38.4427,-42.3739,-18.751,-14.7116,-15.6889,-24.2558,-24.515,-17.8259,-20.345,-17.1519,-39.2406,-42.9717,-17.9584 +v15.0.0,LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-16.5599,-38.4144,-42.4306,-18.7577,-14.7251,-15.6971,-24.2556,-24.5089,-17.8202,-20.3368,-17.1587,-39.2281,-43.022,-17.9653 v02.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-2.9234,-37.343,-54.008,-7.4525,-2.4311,-2.6214,-4.2614,-3.6604,-3.9091,-13.8095,-2.9997,-38.1851,-54.8374,-5.4313 v03.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-10.893,-43.6133,-58.2141,-15.1103,-9.0799,-9.9545,-16.379,-14.4048,-10.3454,-21.9077,-11.0785,-44.4223,-59.0205,-13.4163 v04.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-24.8681,-55.3244,-79.6128,-29.9656,-22.0457,-24.0803,-31.6154,-29.0494,-23.7895,-35.3836,-25.0682,-55.9987,-79.9833,-27.5995 @@ -1511,8 +1509,8 @@ v10.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-33.5246,-73.8994,-85.1026 v11.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-33.5175,-74.1201,-83.1863,-39.3127,-30.2979,-32.1293,-40.349,-38.0882,-32.4075,-49.3561,-34.0169,-74.5195,-83.5307,-37.0273 v12.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-33.6581,-73.3847,-83.1668,-39.3246,-29.9582,-31.5798,-40.7902,-38.4778,-32.3806,-48.8233,-34.1582,-73.7914,-83.4958,-37.0913 v13.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-33.4169,-73.9725,-83.6742,-39.2174,-34.0259,-31.4225,-40.3431,-37.9808,-32.1185,-48.9747,-33.8517,-74.3435,-84.0078,-36.8293 -libaom-v3.12.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,6.3152,3.3426,8.1789,6.2465,3.7909,4.2082,0.5859,0.737,9.4062,9.1397,7.6943,2.8083,7.9912,7.3437 -libaom-v3.12.0-unconstrained,LD,A2,Vertical_bees_1080x1920_2997.y4m,4.3051,3.9784,5.4664,4.2857,3.6406,3.2053,1.6251,1.516,5.3545,7.0741,4.6495,3.9518,5.8379,4.7209 +v14.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-33.3768,-74.0301,-83.7946,-39.1991,-34.052,-31.454,-40.356,-37.9733,-32.0832,-48.9156,-33.8094,-74.4037,-84.1328,-36.7941 +v15.0.0,LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-33.3804,-74.0541,-83.7965,-39.2087,-34.01,-31.4216,-40.3559,-37.9731,-32.0909,-48.9114,-33.8142,-74.4263,-84.1344,-36.8028 v02.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-0.7081,-3.1633,-0.8238,-0.8534,-0.2817,-0.8124,-0.9213,-1.0287,0.5814,1.3042,-0.8005,-3.403,-0.8899,-0.9591 v03.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-6.1947,-8.2067,-2.6282,-6.1193,-6.6365,-7.3847,-7.0157,-6.5923,-4.6083,-3.6773,-6.328,-8.4814,-2.5473,-6.2928 v04.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-11.0857,-13.2255,-11.3874,-11.2298,-11.5932,-12.1436,-11.8861,-11.4849,-9.2594,-9.1727,-11.2821,-13.532,-11.4456,-11.435 @@ -1525,8 +1523,8 @@ v10.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-18.1939,-16.4599,-18.9264,-18.14 v11.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-18.2568,-15.7207,-17.8899,-18.1016,-17.6376,-17.7635,-17.8488,-17.5768,-16.9685,-17.2439,-18.6074,-16.0649,-18.0883,-18.386 v12.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-18.5558,-16.1374,-18.8351,-18.441,-17.7415,-17.9454,-18.0644,-17.8739,-17.1801,-17.4701,-18.8995,-16.4772,-19.1023,-18.7218 v13.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-18.5138,-18.7112,-18.5288,-18.5294,-19.4894,-18.145,-18.6953,-18.3909,-17.2123,-18.5965,-18.7511,-18.9895,-18.6113,-18.7422 -libaom-v3.12.0,LD,A2,WorldCup_1920x1080_30p.y4m,12.2438,-6.1572,1.4714,10.8011,4.0009,3.718,13.4024,13.398,10.6954,10.76,17.5063,-6.2021,2.4824,16.1872 -libaom-v3.12.0-unconstrained,LD,A2,WorldCup_1920x1080_30p.y4m,4.8608,3.91,6.5228,4.7965,2.6088,2.9816,3.2101,3.3096,5.4032,8.8742,5.3217,3.8731,6.956,5.4871 +v14.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-18.3389,-18.5381,-18.3673,-18.355,-19.2423,-17.8824,-18.5833,-18.2252,-17.0428,-18.5104,-18.5794,-18.8095,-18.4342,-18.5693 +v15.0.0,LD,A2,Vertical_bees_1080x1920_2997.y4m,-18.3264,-18.487,-18.217,-18.3327,-19.1896,-17.8526,-18.5851,-18.2245,-17.0162,-18.4209,-18.5683,-18.7579,-18.2764,-18.5462 v02.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-0.6299,1.4947,0.3673,-0.4731,-1.2246,-1.346,-1.2918,-1.3042,0.0409,4.0108,-0.7338,1.341,0.3919,-0.5373 v03.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-7.2298,-6.7442,-5.2488,-7.1068,-7.453,-7.8021,-8.2856,-7.8095,-5.947,-3.5634,-7.3712,-6.9445,-5.3951,-7.2382 v04.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-13.9041,-15.2253,-14.5428,-14.0029,-13.2751,-13.7153,-16.5236,-15.2825,-12.5776,-10.8524,-14.0882,-15.4151,-14.5958,-14.1425 @@ -1539,8 +1537,8 @@ v10.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-22.1394,-25.231,-23.9896,-22.3786,-18. v11.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-22.3697,-26.2064,-23.6146,-22.6173,-19.1361,-19.7403,-24.3836,-22.9496,-20.9,-22.9953,-22.7856,-26.5414,-23.9707,-22.9585 v12.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-22.5913,-25.5627,-24.3245,-22.8194,-19.0211,-19.6815,-24.7624,-23.2893,-21.032,-22.935,-23.0074,-25.9115,-24.7047,-23.1697 v13.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-22.2422,-26.0648,-23.9488,-22.5124,-23.5883,-19.5673,-24.4263,-23.0208,-20.7477,-22.7652,-22.5984,-26.3305,-24.2061,-22.7889 -libaom-v3.12.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,8.6381,16.3467,18.7813,9.511,9.8585,11.087,19.4847,19.301,10.2523,11.6036,7.1627,17.3064,23.0578,8.2431 -libaom-v3.12.0-unconstrained,LD,A3,ControlledBurn_1280x720p30_420.y4m,1.3666,-2.704,-0.004,1.0764,0.7463,1.3543,2.3695,1.85,0.7129,0.4494,1.4124,-2.5871,0.6217,1.2744 +v14.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-22.152,-25.8039,-23.2946,-22.3857,-23.5291,-19.4797,-24.2843,-22.8074,-20.6419,-22.6215,-22.5107,-26.0206,-23.5561,-22.6765 +v15.0.0,LD,A2,WorldCup_1920x1080_30p.y4m,-22.1172,-26.486,-23.8997,-22.4177,-23.457,-19.3979,-24.4982,-23.0501,-20.6178,-22.9269,-22.4779,-26.7307,-24.1134,-22.6831 v02.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-0.7224,-8.7677,-7.0081,-1.5335,-0.9039,-0.8043,-0.9026,-0.9182,-1.2113,-3.1705,-0.7514,-7.8668,-5.1057,-1.1522 v03.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-4.031,-11.8164,-10.6647,-4.8477,-4.8032,-4.4765,-3.1841,-3.0556,-4.2551,-6.3047,-3.7776,-10.8595,-8.5334,-4.2026 v04.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-9.5432,-25.3876,-20.6159,-11.1108,-9.9696,-9.73,-8.7449,-8.8324,-9.6987,-13.5041,-9.0756,-24.7041,-19.0645,-10.0086 @@ -1553,8 +1551,8 @@ v10.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-16.6484,-39.2482,-33.1314,-19. v11.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-17.4989,-40.3052,-34.3221,-19.9485,-17.9027,-17.5549,-19.9603,-19.9518,-18.3106,-24.2417,-16.2831,-40.9887,-34.8145,-17.8757 v12.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-17.5157,-40.5845,-34.3942,-19.9858,-17.7485,-17.4732,-20.4321,-20.307,-18.2922,-24.1966,-16.3187,-41.3076,-34.9526,-17.9237 v13.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-18.3082,-41.149,-34.5237,-20.6951,-19.6075,-18.2379,-20.236,-19.9958,-18.7589,-25.2646,-17.7103,-41.7435,-34.5518,-19.203 -libaom-v3.12.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,6.1293,12.6605,16.5562,6.6908,6.3645,5.7658,12.8988,9.7481,9.3048,8.6962,6.5747,9.7762,14.7387,6.8095 -libaom-v3.12.0-unconstrained,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,6.1179,2.6883,3.5753,5.8279,5.7112,5.6326,9.7083,8.1393,5.7746,4.6448,6.3595,2.905,3.7661,6.4356 +v14.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-18.1605,-41.367,-34.5425,-20.581,-19.4913,-18.0982,-20.0839,-19.8246,-18.6155,-25.2014,-17.5782,-41.9574,-34.5676,-19.0864 +v15.0.0,LD,A3,ControlledBurn_1280x720p30_420.y4m,-18.1619,-41.3102,-34.5611,-20.5795,-19.491,-18.1099,-20.0407,-19.8116,-18.6229,-25.2079,-17.5783,-41.9001,-34.5869,-19.0853 v02.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-0.7934,-9.738,-21.111,-1.977,-0.8535,-0.8155,-0.0487,-0.4134,-1.301,-4.6319,-0.9319,-9.7439,-20.9999,-1.5739 v03.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-2.7858,-16.0137,-24.7509,-4.2505,-2.7378,-2.5978,-2.1737,-2.5952,-3.1011,-8.5658,-2.928,-16.2598,-24.5794,-3.7736 v04.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-11.7105,-25.9905,-38.38,-13.431,-11.7246,-11.6284,-11.8569,-12.3685,-11.7875,-18.5365,-11.9177,-26.0998,-38.2431,-12.9464 @@ -1567,8 +1565,8 @@ v10.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-19.7552,-28.7601,-40.6977 v11.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-19.5496,-28.1339,-41.8497,-20.831,-17.9737,-17.819,-19.3287,-20.6437,-19.4387,-24.9641,-20.112,-28.3481,-41.6859,-20.8359 v12.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-20.1468,-28.6552,-41.5052,-21.382,-18.6238,-18.4402,-20.433,-21.6618,-19.9785,-25.4928,-20.6954,-28.9431,-41.2565,-21.4029 v13.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-20.4336,-29.9879,-42.4168,-21.7418,-19.2291,-19.2297,-20.2056,-21.5373,-20.2086,-26.2493,-20.782,-29.9453,-41.954,-21.5375 -libaom-v3.12.0,LD,A3,Johnny_1280x720_60.y4m,10.5187,30.4734,27.4077,12.4031,3.096,3.1244,5.5422,7.649,7.7719,19.5019,10.7816,30.2414,27.1313,12.3732 -libaom-v3.12.0-unconstrained,LD,A3,Johnny_1280x720_60.y4m,3.779,3.1656,4.9416,3.7547,3.5081,2.9789,2.3438,2.5477,4.0005,2.8642,3.7834,3.1457,4.9251,3.802 +v14.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-20.3662,-30.5147,-42.3173,-21.7044,-19.1811,-19.1836,-20.3408,-21.6456,-20.1325,-26.2887,-20.7107,-30.504,-41.8766,-21.481 +v15.0.0,LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-20.3839,-30.6495,-42.3773,-21.7296,-19.2114,-19.2261,-20.3371,-21.6537,-20.1884,-26.3404,-20.7284,-30.6469,-41.9402,-21.5057 v02.0.0,LD,A3,Johnny_1280x720_60.y4m,-0.6795,-9.5508,-9.8789,-1.7097,-0.3077,-0.4802,0.3946,0.1952,-0.8767,-5.1144,-0.6977,-9.5437,-9.8596,-1.4525 v03.0.0,LD,A3,Johnny_1280x720_60.y4m,-5.1908,-11.8771,-11.8603,-5.9618,-4.8717,-4.639,-7.4296,-6.35,-5.0775,-7.4786,-5.2099,-11.8926,-11.8591,-5.7844 v04.0.0,LD,A3,Johnny_1280x720_60.y4m,-13.1986,-20.8086,-19.7894,-14.015,-12.3153,-12.7474,-14.6541,-13.4546,-12.2523,-16.2418,-13.2705,-20.8207,-19.7733,-13.883 @@ -1581,8 +1579,8 @@ v10.0.0,LD,A3,Johnny_1280x720_60.y4m,-23.8014,-29.9568,-28.2742,-24.4093,-22.095 v11.0.0,LD,A3,Johnny_1280x720_60.y4m,-25.0541,-30.2553,-30.1297,-25.6475,-23.827,-23.9736,-27.3451,-25.7275,-23.6731,-27.2818,-25.1716,-30.2506,-30.1098,-25.6153 v12.0.0,LD,A3,Johnny_1280x720_60.y4m,-26.0257,-30.0289,-32.5869,-26.6296,-24.4607,-24.7098,-27.8009,-26.9263,-24.5249,-27.9092,-26.1491,-30.0239,-32.573,-26.592 v13.0.0,LD,A3,Johnny_1280x720_60.y4m,-25.9844,-34.2573,-32.8364,-26.8456,-26.3493,-24.9146,-29.0366,-27.6342,-24.2541,-28.4846,-26.0693,-34.2365,-32.819,-26.7098 -libaom-v3.12.0,LD,A3,KristenAndSara_1280x720_60.y4m,15.1339,30.0778,28.3468,16.5097,-0.6112,0.6716,15.1935,15.1974,6.9353,19.6655,15.4921,29.5908,27.8924,16.8077 -libaom-v3.12.0-unconstrained,LD,A3,KristenAndSara_1280x720_60.y4m,3.7872,2.5698,4.3655,3.7067,3.9416,4.2488,4.3867,3.548,3.5322,2.7707,3.7702,2.5268,4.2712,3.7575 +v14.0.0,LD,A3,Johnny_1280x720_60.y4m,-25.0815,-33.84,-32.1187,-25.9802,-25.7464,-24.0055,-27.2618,-26.0559,-23.4656,-27.7795,-25.1655,-33.8203,-32.1049,-25.8304 +v15.0.0,LD,A3,Johnny_1280x720_60.y4m,-25.0831,-33.8501,-32.1156,-25.9821,-25.7494,-24.0071,-27.2694,-26.0547,-23.4702,-27.7894,-25.1674,-33.8302,-32.102,-25.8325 v02.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-1.1451,-10.0264,-10.3976,-2.125,-1.0656,-1.0821,-0.1516,-0.9591,-1.7436,-4.9984,-1.1641,-9.9814,-10.3559,-1.9245 v03.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-4.9656,-15.0198,-14.3541,-6.0174,-4.715,-4.6132,-4.4373,-4.5079,-5.25,-8.6582,-4.9936,-14.9968,-14.3827,-5.8218 v04.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-11.7792,-23.5961,-22.5776,-13.0124,-11.0982,-11.2105,-12.4635,-11.7312,-11.6398,-16.8237,-11.8533,-23.5679,-22.5738,-12.8403 @@ -1595,8 +1593,8 @@ v10.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-21.9057,-32.6268,-30.4393,-22.9669 v11.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-22.1671,-31.9858,-30.2411,-23.1443,-20.9761,-21.0226,-24.1365,-23.4543,-21.6164,-25.9813,-22.2934,-32.0001,-30.2325,-23.0882 v12.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-23.4207,-33.1212,-29.9964,-24.3055,-22.1729,-22.2761,-25.8825,-25.0842,-22.7592,-27.4065,-23.5466,-33.1249,-30.005,-24.2831 v13.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-22.8756,-33.1698,-32.4126,-23.9637,-23.2972,-20.9493,-25.7652,-24.6767,-21.7144,-26.9284,-22.9423,-33.0981,-32.385,-23.8393 -libaom-v3.12.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,8.6199,-2.4944,-3.4595,7.4322,5.0695,4.8325,10.8193,9.5971,9.1292,0.9003,10.709,-3.0788,-4.4108,8.6381 -libaom-v3.12.0-unconstrained,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,6.2772,4.4135,2.3277,5.9493,4.5163,5.033,3.1493,2.7039,4.8682,3.3557,6.7688,4.8071,2.4652,6.5449 +v14.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-22.4738,-33.5177,-31.9996,-23.6018,-23.0993,-20.6044,-25.7264,-24.4141,-21.3018,-26.9068,-22.5251,-33.4541,-31.9659,-23.4546 +v15.0.0,LD,A3,KristenAndSara_1280x720_60.y4m,-22.477,-33.5248,-31.9793,-23.6039,-23.1011,-20.6307,-25.7303,-24.4213,-21.318,-26.9321,-22.5284,-33.4636,-31.9449,-23.457 v02.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-1.3028,-2.5483,-4.0994,-1.4944,-1.2686,-1.3011,-1.9121,-1.7301,-1.2987,-2.9078,-1.3305,-2.695,-4.0458,-1.6413 v03.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-4.0631,-4.2824,-6.6494,-4.19,-3.7698,-3.7736,-5.4537,-5.2091,-3.5686,-5.5337,-4.073,-4.4064,-6.5027,-4.3042 v04.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-14.0533,-17.2204,-25.2666,-14.7451,-13.5186,-13.5129,-15.794,-15.4537,-13.3613,-16.1691,-14.1394,-17.3625,-25.2085,-15.0121 @@ -1609,8 +1607,8 @@ v10.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-22.06,-20.063,-28.2225 v11.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-22.4107,-20.417,-28.2771,-22.5689,-20.1115,-20.2148,-22.9261,-22.7536,-21.0525,-23.1209,-22.7039,-20.7526,-28.2012,-22.8559 v12.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-22.6079,-21.021,-29.1438,-22.8203,-20.1438,-20.2454,-23.2741,-23.1478,-21.278,-23.7804,-22.8895,-21.3757,-29.0576,-23.1118 v13.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-22.885,-21.8716,-29.0579,-23.1105,-21.904,-20.9859,-23.7857,-23.4776,-21.5826,-24.3208,-23.0621,-22.056,-28.7773,-23.3212 -libaom-v3.12.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,7.4714,13.7052,34.4902,8.9007,17.8941,16.6909,8.0264,8.3171,11.7144,14.2963,8.5808,13.3349,34.4151,9.6786 -libaom-v3.12.0-unconstrained,LD,A3,Vidyo3_1280x720p_60fps.y4m,3.6696,3.4765,2.7508,3.5541,4.6055,4.258,3.0805,2.8627,4.1224,2.9986,3.6348,3.4977,2.8164,3.7126 +v14.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-22.4029,-21.0135,-28.825,-22.6211,-21.4927,-20.549,-23.2226,-22.8414,-21.1656,-23.9308,-22.5785,-21.1691,-28.5355,-22.814 +v15.0.0,LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-22.4437,-21.1005,-28.9006,-22.6657,-21.5473,-20.5852,-23.2638,-22.9076,-21.2051,-23.8653,-22.6172,-21.2506,-28.6498,-22.8564 v02.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-0.4003,-17.7092,-17.7395,-1.8784,-1.0988,-1.0844,-0.9235,-0.4319,-1.0695,-5.8815,-0.4275,-17.6809,-17.7431,-1.1775 v03.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-4.7,-17.6195,-21.4618,-5.9915,-4.4663,-4.7147,-7.221,-6.2145,-4.7242,-10.5025,-4.7354,-17.5744,-21.4798,-5.4549 v04.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-12.3808,-26.7063,-27.7165,-13.7042,-11.4098,-11.6361,-16.3066,-14.4348,-11.7295,-17.8426,-12.482,-26.6114,-27.717,-13.2403 @@ -1623,8 +1621,8 @@ v10.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-22.4429,-37.9505,-38.8816,-23.8664,-19 v11.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-22.8289,-39.503,-38.2554,-24.3052,-19.6622,-20.2838,-27.0211,-25.0296,-21.5608,-28.9423,-23.0063,-39.4474,-38.2721,-23.8354 v12.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-23.7214,-39.367,-38.4637,-25.0945,-20.8216,-21.5425,-27.9127,-26.1812,-22.4016,-29.7365,-23.9135,-39.3171,-38.4752,-24.7062 v13.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-23.2885,-42.04,-40.1359,-24.8666,-24.6835,-22.635,-28.1997,-26.273,-22.0961,-30.1931,-23.4278,-41.9381,-40.1156,-24.3296 -libaom-v3.12.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,14.7419,20.9255,30.3784,15.7317,13.2704,13.1771,19.5139,17.2805,14.3756,22.7052,15.0549,20.008,29.6221,15.6782 -libaom-v3.12.0-unconstrained,LD,A3,Vidyo4_1280x720p_60fps.y4m,5.423,3.6295,5.5443,5.3085,7.0749,7.0435,5.8634,4.7266,5.5245,6.1517,5.4477,3.7811,6.0325,5.4611 +v14.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-22.7368,-41.5049,-39.7779,-24.3202,-24.2094,-22.1323,-27.2217,-25.3544,-21.5429,-29.6519,-22.8805,-41.3979,-39.7632,-23.7828 +v15.0.0,LD,A3,Vidyo3_1280x720p_60fps.y4m,-22.7356,-41.5047,-39.7725,-24.3181,-24.199,-22.1252,-27.2221,-25.353,-21.541,-29.6487,-22.8792,-41.3978,-39.758,-23.7807 v02.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-1.0963,-10.3027,-11.1998,-2.093,-0.7034,-0.7249,0.0863,-0.2036,-1.4697,-4.1535,-1.1462,-10.062,-10.8889,-1.6736 v03.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-5.4533,-12.9409,-16.1949,-6.3979,-5.0604,-5.1454,-5.9364,-5.682,-5.6661,-7.8178,-5.4962,-12.9493,-16.055,-6.0192 v04.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-12.1892,-22.4697,-23.4287,-13.3091,-11.0398,-11.0976,-13.2258,-12.4913,-12.0215,-15.1138,-12.3114,-22.4338,-23.2586,-12.9476 @@ -1637,8 +1635,8 @@ v10.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-21.3714,-30.1808,-30.001,-22.2702,-19. v11.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-22.1026,-31.2456,-29.7764,-22.9637,-20.0166,-20.1722,-22.8541,-22.1476,-21.2625,-24.628,-22.2631,-31.2866,-29.5123,-22.7477 v12.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-22.7086,-30.3847,-31.0686,-23.5351,-19.8989,-20.1504,-24.0952,-23.1271,-21.6704,-25.1949,-22.8163,-30.2651,-30.8187,-23.2891 v13.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-22.431,-32.642,-31.7792,-23.4416,-21.5276,-20.3645,-25.2743,-24.0327,-21.3475,-26.1772,-22.4206,-32.5705,-31.3312,-22.9977 -libaom-v3.12.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,15.0474,-1.8622,-1.7434,13.6695,13.4044,13.5805,49.0575,46.4669,12.6923,13.7416,23.7826,0.3744,-0.548,23.1965 -libaom-v3.12.0-unconstrained,LD,A3,WestWindEasy_1280x720p30_420.y4m,3.4682,1.3727,1.6483,3.2651,3.0376,3.1989,6.627,6.2383,2.681,2.4712,2.9283,1.1411,1.4071,2.9248 +v14.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-22.109,-32.7848,-32.1396,-23.1817,-21.2933,-20.064,-24.766,-23.4508,-21.0741,-26.0539,-22.1018,-32.7462,-31.7505,-22.7183 +v15.0.0,LD,A3,Vidyo4_1280x720p_60fps.y4m,-22.0644,-32.6826,-32.2069,-23.1405,-21.2494,-20.021,-24.629,-23.3595,-21.0151,-25.9719,-22.0542,-32.6393,-31.8175,-22.6729 v02.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-1.691,-6.7413,-0.2192,-1.8953,-1.4352,-1.639,-1.2418,-0.7927,-1.4333,-4.4293,-1.7553,-6.4707,0.1041,-1.8275 v03.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-5.2135,-20.2426,-6.6207,-6.0202,-3.7427,-4.0038,-3.588,-3.0711,-4.3358,-9.2833,-5.2397,-19.9767,-6.2679,-5.5595 v04.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-9.3061,-38.9184,-24.9628,-11.5403,-6.7422,-7.1302,-7.1889,-6.9398,-7.9331,-18.4605,-9.3401,-38.7251,-24.79,-10.115 @@ -1651,8 +1649,8 @@ v10.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-16.288,-66.6352,-56.6655,-21.334 v11.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-17.3029,-65.2651,-54.1113,-22.0194,-14.9256,-15.3533,-15.4146,-15.5233,-16.4001,-29.4247,-17.528,-65.3845,-54.2763,-18.8677 v12.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-17.4945,-67.062,-54.2371,-22.3206,-14.9846,-15.4922,-14.5865,-15.007,-16.6763,-29.5698,-17.7048,-67.1746,-54.2614,-19.0663 v13.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-17.9176,-67.2631,-55.2838,-22.7015,-17.4432,-15.3026,-17.3082,-17.3325,-16.5783,-30.3481,-18.0091,-67.3242,-55.2478,-19.3856 -libaom-v3.12.0,LD,A4,BlueSky_360p25_v2.y4m,-6.4168,-9.4983,-7.9134,-6.6458,-12.5507,-11.5827,-0.093,-5.7789,-0.2251,-7.3003,-6.3513,-13.5954,-11.538,-7.4969 -libaom-v3.12.0-unconstrained,LD,A4,BlueSky_360p25_v2.y4m,1.9033,3.0767,2.6748,1.9196,1.0311,2.0564,6.2215,3.4031,5.7583,4.491,1.5826,3.2235,2.5166,2.2227 +v14.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-17.8205,-67.1383,-54.1622,-22.5576,-17.4103,-15.2204,-16.9704,-17.0508,-16.4998,-30.2375,-17.9107,-67.1252,-54.2255,-19.2811 +v15.0.0,LD,A3,WestWindEasy_1280x720p30_420.y4m,-17.8137,-67.1004,-54.1858,-22.5488,-17.4182,-15.2341,-16.9707,-17.05,-16.5193,-30.2198,-17.9039,-67.088,-54.2397,-19.2729 v02.0.0,LD,A4,BlueSky_360p25_v2.y4m,-3.6917,-15.4321,-32.3662,-5.4063,-4.7742,-3.7904,0.7257,-0.5598,-2.3353,-8.4814,-3.8758,-17.0957,-33.5491,-5.6448 v03.0.0,LD,A4,BlueSky_360p25_v2.y4m,-4.838,-26.6813,-39.052,-7.3311,-6.9102,-4.9891,1.7607,-0.7134,-2.6836,-12.6465,-4.987,-28.5635,-40.4797,-7.8107 v04.0.0,LD,A4,BlueSky_360p25_v2.y4m,-21.2173,-41.259,-61.2302,-24.1017,-23.1481,-20.1456,-12.2417,-15.0526,-17.2859,-30.9494,-21.4467,-43.0622,-62.7136,-24.3953 @@ -1665,8 +1663,8 @@ v10.0.0,LD,A4,BlueSky_360p25_v2.y4m,-31.5334,-51.823,-70.7785,-34.4877,-30.6014, v11.0.0,LD,A4,BlueSky_360p25_v2.y4m,-31.5528,-51.177,-68.6632,-34.3505,-29.9358,-27.4175,-23.5357,-27.0177,-28.7356,-41.5769,-32.0529,-52.9238,-69.6077,-34.8694 v12.0.0,LD,A4,BlueSky_360p25_v2.y4m,-32.2773,-51.8486,-68.6821,-35.0314,-30.5041,-28.0432,-25.1777,-28.2369,-29.3587,-42.4709,-32.783,-53.7554,-69.7366,-35.5739 v13.0.0,LD,A4,BlueSky_360p25_v2.y4m,-32.9643,-51.6684,-68.1756,-35.5925,-31.7372,-29.3899,-26.2278,-29.4034,-30.0538,-42.9927,-33.1248,-53.0965,-69.0919,-35.8734 -libaom-v3.12.0,LD,A4,RedKayak_360_2997.y4m,13.9517,0.701,-6.6267,12.87,8.4328,17.6284,44.6452,41.766,19.0323,15.4513,29.9725,7.163,-3.6913,29.7504 -libaom-v3.12.0-unconstrained,LD,A4,RedKayak_360_2997.y4m,3.5702,2.2032,1.1726,3.5434,0.6285,3.5872,1.1406,0.4609,3.4065,6.7366,3.757,3.6577,4.6579,3.8672 +v14.0.0,LD,A4,BlueSky_360p25_v2.y4m,-32.3935,-51.9561,-68.2685,-35.1064,-31.4015,-28.9803,-24.5856,-28.084,-29.5085,-42.8663,-32.5654,-53.4691,-69.1625,-35.3909 +v15.0.0,LD,A4,BlueSky_360p25_v2.y4m,-32.3914,-51.9549,-68.2676,-35.1045,-31.3995,-28.9779,-24.5816,-28.0803,-29.5063,-42.8644,-32.5634,-53.468,-69.1617,-35.3889 v02.0.0,LD,A4,RedKayak_360_2997.y4m,-2.3368,-0.0906,-8.0969,-2.4588,-5.2123,-4.6882,-3.7767,-3.5714,-3.1055,-0.2755,-2.5536,-0.2618,-2.6345,-2.5753 v03.0.0,LD,A4,RedKayak_360_2997.y4m,-5.5904,-14.9465,-4.276,-5.8967,-8.7352,-7.7964,-5.8717,-5.4339,-5.9268,-7.2653,-5.8239,-14.7902,-2.1441,-6.0339 v04.0.0,LD,A4,RedKayak_360_2997.y4m,-7.69,-18.6289,-27.5381,-8.8389,-11.1047,-10.0145,-7.3997,-6.9811,-8.1117,-10.7062,-7.9544,-18.2804,-24.3681,-8.3194 @@ -1679,8 +1677,8 @@ v10.0.0,LD,A4,RedKayak_360_2997.y4m,-14.2848,-49.013,-47.343,-17.3448,-16.9157,- v11.0.0,LD,A4,RedKayak_360_2997.y4m,-14.7695,-52.0758,-46.7423,-17.8796,-17.0882,-17.2518,-20.6326,-19.6898,-17.2536,-27.569,-15.6333,-52.8878,-44.3522,-16.8258 v12.0.0,LD,A4,RedKayak_360_2997.y4m,-14.9116,-51.1252,-42.8787,-17.7715,-17.1495,-17.3626,-20.6423,-19.6443,-17.3427,-27.2726,-15.7745,-51.8465,-41.4394,-16.9315 v13.0.0,LD,A4,RedKayak_360_2997.y4m,-14.9189,-48.5574,-37.4571,-17.4728,-17.0969,-17.335,-20.1994,-19.3722,-17.2812,-26.8548,-15.6257,-49.2775,-35.8088,-16.7312 -libaom-v3.12.0,LD,A4,SnowMountain_640x360_2997.y4m,13.6347,85.8048,95.3009,17.3442,28.2978,17.1615,-7.9491,-6.328,21.0384,34.87,13.5091,85.8496,95.3189,16.07 -libaom-v3.12.0-unconstrained,LD,A4,SnowMountain_640x360_2997.y4m,-1.1003,3.1728,1.4148,-0.8276,-1.4072,-1.142,-3.6144,-2.7397,5.6309,2.9724,-1.2825,3.1786,1.453,-1.0563 +v14.0.0,LD,A4,RedKayak_360_2997.y4m,-14.724,-48.749,-38.6522,-17.3168,-16.9796,-17.0128,-19.7587,-18.8975,-17.0573,-26.4562,-15.4259,-49.4075,-36.194,-16.528 +v15.0.0,LD,A4,RedKayak_360_2997.y4m,-14.7234,-48.7484,-38.6512,-17.3162,-16.9793,-17.0122,-19.7579,-18.8966,-17.0566,-26.4555,-15.4253,-49.4069,-36.193,-16.5274 v02.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-1.0073,-23.8585,-35.2099,-3.4201,-2.5217,-2.9725,-2.8414,-3.4355,0.9326,-2.5323,-1.0815,-24.0895,-35.4428,-1.7169 v03.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-4.9062,-25.6191,-39.1022,-7.3416,-6.0171,-5.6529,-6.8224,-6.8406,-2.598,-6.7249,-4.9945,-25.6909,-39.3189,-5.695 v04.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-7.1949,-37.3672,-49.6829,-10.4603,-8.2109,-8.275,-9.3529,-9.2558,-5.0951,-11.7238,-7.2918,-37.46,-49.7443,-8.2753 @@ -1693,8 +1691,8 @@ v10.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-18.9924,-54.0171,-64.6827,-22.8304, v11.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-19.365,-58.9474,-64.8142,-23.4277,-17.9478,-19.2444,-26.441,-25.8528,-21.8164,-27.8246,-19.5559,-59.042,-64.874,-20.8276 v12.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-20.9138,-53.4972,-66.2727,-24.6418,-19.4014,-20.6568,-28.4406,-28.0175,-22.8942,-28.4261,-21.1139,-53.5582,-66.332,-22.3245 v13.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-20.7384,-57.631,-65.9642,-24.726,-20.341,-20.7171,-27.4571,-26.8373,-22.4933,-28.9927,-20.9209,-57.6991,-66.1018,-22.2442 -libaom-v3.12.0,LD,A4,SpeedBag_640x360_2997.y4m,14.4544,17.5108,23.5644,14.8892,13.6126,10.0407,9.8906,9.2818,16.7116,19.883,16.998,17.078,22.2877,17.2657 -libaom-v3.12.0-unconstrained,LD,A4,SpeedBag_640x360_2997.y4m,6.6556,6.573,13.653,6.9564,5.285,6.1755,2.7193,3.6186,8.8445,10.1113,6.4042,6.2708,12.7017,6.7944 +v14.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-19.39,-56.8549,-65.3265,-23.4382,-19.2322,-19.3581,-25.3362,-24.7883,-21.1903,-27.7133,-19.5625,-56.9242,-65.4672,-20.8991 +v15.0.0,LD,A4,SnowMountain_640x360_2997.y4m,-19.3851,-56.8524,-65.324,-23.4336,-19.228,-19.3534,-25.3288,-24.7808,-21.1854,-27.7087,-19.5576,-56.9217,-65.4648,-20.8943 v02.0.0,LD,A4,SpeedBag_640x360_2997.y4m,0.7021,-2.2497,-2.9696,0.3651,-0.961,0.4274,-0.8467,-0.8091,2.4044,2.3465,0.4984,-2.6033,-2.7847,0.2241 v03.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-4.856,-7.6311,-7.84,-5.1879,-7.3559,-4.482,-7.7286,-7.3415,-2.6101,-3.7743,-5.1996,-8.0895,-8.0705,-5.4821 v04.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-15.1932,-17.7701,-21.5455,-15.6723,-18.1458,-15.3598,-17.2071,-16.987,-13.1556,-14.0587,-15.6992,-18.2543,-22.3994,-16.1179 @@ -1707,8 +1705,8 @@ v10.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-23.8339,-27.9462,-32.3606,-24.4937,-24. v11.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-27.2405,-31.076,-33.9757,-27.811,-28.3236,-24.9117,-29.5875,-28.803,-26.1915,-29.1865,-28.0086,-32.0574,-34.3996,-28.5298 v12.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-28.8688,-32.7193,-37.7186,-29.5365,-29.339,-25.4854,-30.6308,-30.4862,-27.6162,-30.8089,-29.6426,-33.6811,-37.8605,-30.2187 v13.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-30.1037,-35.389,-38.3206,-30.8177,-31.5279,-27.6903,-33.1515,-32.4015,-28.8284,-32.0569,-30.7552,-36.1382,-37.8103,-31.3922 -libaom-v3.12.0,LD,A4,Stockholm_640x360_5994.y4m,8.8988,39.9917,38.7406,11.6354,9.5754,8.5705,9.1603,6.8777,14.4638,22.401,8.5378,38.6539,37.5629,11.246 -libaom-v3.12.0-unconstrained,LD,A4,Stockholm_640x360_5994.y4m,5.9769,6.2136,8.1404,6.0567,4.0254,4.1612,3.7364,2.8685,11.1818,6.3763,6.0344,6.2482,8.1511,6.2221 +v14.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-28.5773,-33.5709,-37.0111,-29.2867,-29.9848,-26.1711,-31.1087,-30.395,-27.3504,-30.5656,-29.245,-34.2722,-36.8656,-29.8742 +v15.0.0,LD,A4,SpeedBag_640x360_2997.y4m,-28.572,-33.5662,-37.0062,-29.2815,-29.9797,-26.166,-31.102,-30.3884,-27.3455,-30.5602,-29.2398,-34.2675,-36.8607,-29.8691 v02.0.0,LD,A4,Stockholm_640x360_5994.y4m,5.1389,-15.8851,-10.7837,3.2314,3.6437,3.9143,7.0803,6.849,7.4401,0.2698,5.0588,-16.0714,-11.0142,3.8527 v03.0.0,LD,A4,Stockholm_640x360_5994.y4m,4.1103,-18.3032,-11.789,2.1457,3.1329,3.3904,6.0244,5.3136,5.8684,-0.9494,4.0185,-18.441,-12.0249,2.7575 v04.0.0,LD,A4,Stockholm_640x360_5994.y4m,-8.6986,-34.4576,-29.1121,-11.143,-9.1537,-8.6419,-6.5508,-7.4666,-7.6469,-15.1062,-8.9347,-34.6618,-29.3575,-10.5249 @@ -1721,8 +1719,8 @@ v10.0.0,LD,A4,Stockholm_640x360_5994.y4m,-22.1534,-47.4239,-37.3162,-24.3162,-20 v11.0.0,LD,A4,Stockholm_640x360_5994.y4m,-22.9269,-45.8278,-36.2968,-24.855,-20.8095,-20.6738,-20.5193,-22.4858,-23.3322,-29.2316,-23.2123,-45.8377,-36.4847,-24.4711 v12.0.0,LD,A4,Stockholm_640x360_5994.y4m,-24.3353,-46.6434,-39.0624,-26.3075,-21.7828,-21.8466,-23.1262,-24.4371,-24.3495,-30.9636,-24.6197,-46.6629,-39.2317,-25.8986 v13.0.0,LD,A4,Stockholm_640x360_5994.y4m,-25.2068,-49.3938,-39.8013,-27.3027,-23.8215,-23.6429,-24.1461,-25.9141,-25.1274,-32.5368,-25.3981,-49.3114,-39.9053,-26.7777 -libaom-v3.12.0,LD,A4,TouchdownPass_640x360_2997.y4m,13.5645,-5.2072,-9.0351,11.7763,25.885,27.4126,9.003,6.3242,18.3777,18.4458,14.9597,-5.8823,-9.3287,13.966 -libaom-v3.12.0-unconstrained,LD,A4,TouchdownPass_640x360_2997.y4m,3.9429,1.0564,5.9484,3.8168,-2.0247,-2.5473,3.1655,2.7646,5.5158,2.3252,4.4751,0.6264,5.8487,4.5968 +v14.0.0,LD,A4,Stockholm_640x360_5994.y4m,-24.1213,-48.5508,-39.0252,-26.2511,-22.6846,-22.3298,-22.4747,-24.2341,-24.0536,-31.486,-24.3127,-48.4812,-39.1484,-25.7111 +v15.0.0,LD,A4,Stockholm_640x360_5994.y4m,-24.1169,-48.5483,-39.0222,-26.2469,-22.6802,-22.3248,-22.4672,-24.2269,-24.0493,-31.4818,-24.3083,-48.4787,-39.1455,-25.7067 v02.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-2.1019,-12.1551,-7.5067,-2.7963,-3.4154,-2.3458,-1.4762,-1.8471,0.0103,-2.4332,-2.2702,-12.355,-7.5218,-2.4826 v03.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-4.784,-18.6497,-11.1909,-5.6859,-5.0886,-4.0315,-3.3377,-4.2513,-2.6348,-6.8225,-4.9894,-18.8337,-11.2816,-5.3101 v04.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-11.5997,-23.3349,-18.7841,-12.4607,-11.8745,-10.4894,-8.8659,-10.2672,-8.8341,-12.5502,-11.8,-23.4627,-18.7829,-12.1038 @@ -1735,8 +1733,8 @@ v10.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-19.5251,-30.8576,-20.7317,-20.1993 v11.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-20.1374,-30.0272,-21.1395,-20.7105,-15.9821,-14.9389,-18.2567,-19.7512,-18.0397,-21.5496,-20.5723,-30.2234,-21.2435,-20.7201 v12.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-21.3457,-31.0316,-22.7934,-21.9466,-16.9169,-16.1024,-19.1609,-20.7932,-19.2963,-23.0316,-21.8214,-31.2438,-22.9026,-21.999 v13.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-21.845,-31.6769,-22.7475,-22.4106,-20.0577,-18.9928,-18.7642,-20.3894,-20.021,-24.161,-22.2394,-31.7658,-22.8564,-22.3764 -libaom-v3.12.0,LD,A5,FourPeople_480x270_60.y4m,20.1016,36.4897,33.4182,21.3467,20.7244,18.7216,14.6494,15.652,14.2026,29.6017,19.5538,35.9444,32.5777,20.9524 -libaom-v3.12.0-unconstrained,LD,A5,FourPeople_480x270_60.y4m,6.8936,7.4508,7.0194,6.8774,6.7048,6.6441,5.6303,5.3018,5.8928,6.67,6.758,7.5048,7.0033,6.9213 +v14.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-20.8426,-30.9982,-21.407,-21.4083,-19.4161,-18.1198,-17.5128,-19.0466,-19.0302,-23.6749,-21.2468,-31.1091,-21.4669,-21.3787 +v15.0.0,LD,A4,TouchdownPass_640x360_2997.y4m,-20.8397,-30.9954,-21.4042,-21.4054,-19.4144,-18.1176,-17.5079,-19.0419,-19.0274,-23.6722,-21.2439,-31.1062,-21.4641,-21.3758 v02.0.0,LD,A5,FourPeople_480x270_60.y4m,0.1255,-4.2777,-5.7694,-0.3665,-0.6426,-0.623,-0.6368,0.2059,-0.9884,-3.0283,-0.0088,-4.29,-5.8626,-0.2949 v03.0.0,LD,A5,FourPeople_480x270_60.y4m,-2.3385,-5.7803,-6.8744,-2.7175,-3.2173,-3.1173,-2.6578,-2.268,-2.9666,-5.1934,-2.4247,-5.7647,-6.9135,-2.6739 v04.0.0,LD,A5,FourPeople_480x270_60.y4m,-7.4956,-13.7158,-16.62,-8.2297,-7.7136,-7.9425,-9.8229,-8.5556,-8.8589,-11.4919,-7.6577,-13.7299,-16.6621,-8.1766 @@ -1749,8 +1747,8 @@ v10.0.0,LD,A5,FourPeople_480x270_60.y4m,-17.8494,-23.1978,-23.5767,-18.3719,-17. v11.0.0,LD,A5,FourPeople_480x270_60.y4m,-18.9763,-24.3638,-23.9849,-19.4716,-18.9053,-19.4373,-23.6788,-22.3422,-20.0466,-22.6916,-19.189,-24.3527,-23.9799,-19.5896 v12.0.0,LD,A5,FourPeople_480x270_60.y4m,-21.281,-25.6984,-25.9058,-21.7035,-21.1373,-21.7469,-28.1032,-26.5831,-22.273,-25.0066,-21.4819,-25.6602,-25.9232,-21.8588 v13.0.0,LD,A5,FourPeople_480x270_60.y4m,-21.5095,-28.8331,-27.8088,-22.1614,-21.8118,-21.5263,-27.3682,-25.9323,-21.4944,-26.0237,-21.5907,-28.7637,-27.7933,-22.1289 -libaom-v3.12.0,LD,A5,ParkJoy_480x270_50.y4m,5.0714,-13.5566,-11.7486,3.7306,0.0728,1.5913,13.7194,12.474,5.1991,-0.985,9.8191,-15.4737,-13.4166,7.9877 -libaom-v3.12.0-unconstrained,LD,A5,ParkJoy_480x270_50.y4m,4.6749,8.9936,9.7661,4.9432,6.2753,7.1897,6.4458,6.2269,5.7773,6.8204,3.6582,8.3861,9.6572,4.3018 +v14.0.0,LD,A5,FourPeople_480x270_60.y4m,-20.2842,-27.8103,-26.4193,-20.9375,-20.5611,-20.2173,-25.9635,-24.2786,-20.2888,-24.8528,-20.3603,-27.7495,-26.4296,-20.888 +v15.0.0,LD,A5,FourPeople_480x270_60.y4m,-20.2842,-27.8103,-26.4193,-20.9375,-20.5611,-20.2173,-25.9635,-24.2786,-20.2888,-24.8528,-20.3603,-27.7495,-26.4296,-20.888 v02.0.0,LD,A5,ParkJoy_480x270_50.y4m,-0.0148,-12.8373,-4.7899,-0.7174,-0.4231,-0.2842,-0.0973,-0.1042,-0.869,-1.3147,-0.5039,-13.801,-5.4523,-1.0785 v03.0.0,LD,A5,ParkJoy_480x270_50.y4m,-1.2662,-16.8984,-0.2449,-1.9062,-1.4271,-1.6561,-3.098,-2.9902,-2.2184,-3.9111,-1.6121,-18.1726,0.0624,-2.2637 v04.0.0,LD,A5,ParkJoy_480x270_50.y4m,-5.059,-27.2907,-12.3105,-6.2654,-5.1164,-5.9352,-9.6281,-9.1173,-6.51,-9.5745,-5.5195,-28.1203,-11.5526,-6.4998 @@ -1763,8 +1761,8 @@ v10.0.0,LD,A5,ParkJoy_480x270_50.y4m,-11.3201,-30.7387,-31.1973,-12.7989,-9.4454 v11.0.0,LD,A5,ParkJoy_480x270_50.y4m,-12.2904,-29.7767,-30.0039,-13.6029,-9.9584,-11.1121,-17.1856,-17.1406,-12.9773,-16.6019,-12.7723,-30.499,-30.449,-13.594 v12.0.0,LD,A5,ParkJoy_480x270_50.y4m,-13.2023,-30.9116,-25.8893,-14.3619,-10.8487,-12.3803,-19.8429,-19.5012,-13.8947,-17.3061,-13.626,-31.7363,-26.2154,-14.4319 v13.0.0,LD,A5,ParkJoy_480x270_50.y4m,-13.0596,-30.976,-28.4256,-14.3145,-11.0103,-12.5743,-19.5955,-19.3119,-14.0403,-17.0078,-13.3112,-31.6202,-28.766,-14.1615 -libaom-v3.12.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,13.749,6.5879,4.7726,13.1069,22.7561,19.651,13.3395,11.8152,14.1579,14.6271,18.0819,5.1369,3.012,17.6704 -libaom-v3.12.0-unconstrained,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,6.6267,2.0584,3.2685,6.2247,7.4338,6.8078,6.7019,6.6963,6.5774,6.4268,6.7172,2.2561,3.5028,6.7559 +v14.0.0,LD,A5,ParkJoy_480x270_50.y4m,-12.6462,-30.0403,-27.5336,-13.8704,-10.6286,-12.0602,-18.4932,-18.2499,-13.5647,-16.4734,-12.8935,-30.6403,-27.7223,-13.7128 +v15.0.0,LD,A5,ParkJoy_480x270_50.y4m,-12.6593,-30.1023,-27.7462,-13.892,-10.6039,-12.0307,-18.4514,-18.2434,-13.6577,-16.5002,-12.9063,-30.7006,-27.974,-13.7339 v02.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,0.286,-12.9408,-0.2051,-0.3077,0.5671,0.6461,0.115,-0.1358,-0.2419,-1.707,0.0897,-12.784,-0.2146,-0.055 v03.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-1.1055,-16.3166,-2.2921,-1.8404,-0.4299,-0.1918,-3.8523,-3.8095,-1.2047,-4.0625,-1.2482,-16.2302,-2.5175,-1.4698 v04.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-9.016,-37.642,-16.5174,-10.7647,-8.8009,-8.342,-10.4867,-10.3129,-9.3536,-14.1567,-9.2121,-37.5433,-16.6911,-9.735 @@ -1777,8 +1775,8 @@ v10.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-20.7027,-35.6512,-15.5918, v11.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-21.8486,-32.0979,-16.5509,-22.0617,-19.5365,-20.0304,-24.3423,-24.2513,-21.1711,-22.7437,-22.5147,-32.006,-16.8304,-22.5527 v12.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-23.2233,-35.8982,-14.707,-23.4034,-20.3094,-20.9691,-26.8339,-26.5816,-22.2114,-24.579,-23.8823,-35.7533,-14.8613,-23.8707 v13.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-24.1124,-40.7761,-23.8063,-24.8465,-23.3405,-22.8966,-27.4527,-26.9543,-23.4384,-26.9255,-24.504,-40.7001,-23.9185,-24.6864 -libaom-v3.12.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,7.6032,-10.6422,-11.8441,5.8936,2.4739,4.6956,14.9365,13.7044,9.2719,1.6098,9.7202,-14.098,-14.0459,9.0396 -libaom-v3.12.0-unconstrained,LD,A5,Vertical_Bayshore_270x480_2997.y4m,2.603,-1.5908,2.7112,2.2294,2.3741,3.8083,5.979,5.3862,3.5156,2.1546,2.5255,-0.8846,3.1239,2.5004 +v14.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-23.3352,-39.4226,-22.2092,-24.0027,-22.7641,-22.2892,-25.5923,-25.1752,-22.6052,-26.0869,-23.7575,-39.3252,-22.2743,-23.9183 +v15.0.0,LD,A5,SparksElevator_480x270p_5994_10bit.y4m,-23.3352,-39.4226,-22.2092,-24.0027,-22.7641,-22.2892,-25.5923,-25.1752,-22.6052,-26.0869,-23.7575,-39.3252,-22.2743,-23.9183 v02.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-1.3003,-20.2658,-10.0295,-2.7334,-1.5073,-1.3256,-0.4185,-0.3797,-1.667,-4.6055,-1.4276,-19.1701,-8.7353,-1.7818 v03.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-5.0483,-27.231,-19.4681,-6.907,-3.7312,-4.1648,-9.3023,-8.0824,-4.9453,-8.6209,-5.2517,-24.699,-18.182,-5.7047 v04.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-13.7158,-35.7932,-25.5273,-15.5041,-12.6544,-13.2739,-19.6995,-18.0646,-13.7124,-16.9189,-13.9408,-33.1972,-24.5569,-14.4058 @@ -1791,8 +1789,8 @@ v10.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-25.4414,-52.133,-42.0541,-27.7 v11.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-27.1269,-49.7743,-38.718,-28.9186,-24.6499,-25.7069,-35.7132,-33.7955,-26.6478,-31.8756,-27.4358,-49.7304,-39.1531,-27.9416 v12.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-28.7608,-52.9401,-40.7927,-30.6698,-25.8954,-27.2646,-37.7796,-35.9928,-28.4058,-33.988,-29.0999,-52.564,-41.1048,-29.6357 v13.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-27.9996,-48.6941,-39.0078,-29.6617,-25.4865,-26.5709,-37.1402,-35.1881,-27.494,-31.7068,-28.2039,-48.3211,-39.0211,-28.6751 -libaom-v3.12.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,18.9721,-17.112,-13.382,15.8557,8.2052,7.0829,27.3084,26.5927,17.4818,10.4759,28.634,-15.6542,-12.1214,26.2873 -libaom-v3.12.0-unconstrained,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,4.7994,2.5972,6.548,4.4271,4.2583,2.8732,5.7545,5.6816,5.2532,6.8211,5.4019,2.4462,5.9664,5.5783 +v14.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-27.1211,-47.4524,-37.5238,-28.7265,-24.8938,-25.6401,-33.7806,-31.5986,-26.5218,-30.2728,-27.336,-46.3788,-37.0565,-27.7809 +v15.0.0,LD,A5,Vertical_Bayshore_270x480_2997.y4m,-27.1198,-47.4398,-37.5135,-28.7232,-24.8943,-25.6411,-33.7859,-31.6031,-26.5184,-30.2659,-27.335,-46.3639,-37.0448,-27.7785 v02.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-0.5611,-15.7484,-13.1142,-1.8346,1.1544,-0.927,-2.5221,-2.4239,0.2201,-0.3891,-0.7108,-16.4442,-13.6742,-1.4684 v03.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-3.0491,-23.4886,-22.0251,-4.8721,-1.9479,-3.3661,-5.5175,-5.1754,-2.0473,-4.1488,-3.2114,-24.0602,-22.6745,-4.2902 v04.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-6.2218,-36.8516,-34.5,-9.1087,-5.9608,-7.1408,-12.1973,-11.3697,-5.4575,-10.3532,-6.4236,-37.2921,-34.8845,-8.0758 @@ -1805,8 +1803,8 @@ v10.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-13.6602,-50.667,-43.2009 v11.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-14.6301,-50.4281,-41.7905,-17.8422,-12.8678,-12.9419,-21.4397,-20.615,-14.5887,-23.9833,-15.2888,-51.1307,-42.313,-17.0539 v12.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-14.8292,-51.153,-41.9753,-18.0909,-12.5785,-12.7296,-21.3926,-20.5461,-14.5461,-24.1884,-15.4842,-51.9043,-42.7267,-17.2688 v13.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-14.531,-50.6866,-42.0083,-17.794,-14.2723,-13.035,-21.2088,-20.277,-14.3708,-23.6493,-15.063,-51.3412,-42.6904,-16.8688 -libaom-v3.12.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,11.6286,-0.7357,9.1108,11.0422,6.6786,2.7551,32.2557,27.1786,14.5133,9.9271,20.1403,-2.4791,7.6042,19.3774 -libaom-v3.12.0-unconstrained,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,4.9178,12.4621,8.8032,5.2592,4.1552,3.8292,7.289,5.8876,6.6807,7.7013,4.7395,12.6475,9.0054,5.208 +v14.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-14.3042,-50.7737,-43.0797,-17.6493,-14.0729,-12.6616,-20.8836,-20.0195,-14.1771,-23.2942,-14.8421,-51.4389,-43.7442,-16.6695 +v15.0.0,LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-14.306,-50.7832,-42.9549,-17.6439,-14.0811,-12.656,-20.9038,-20.0173,-14.1711,-23.2745,-14.844,-51.4364,-43.6277,-16.667 v02.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-0.2394,-18.461,-8.6325,-1.5382,-0.1095,-0.2005,-1.6472,-1.4477,0.6284,-1.3345,-0.4414,-18.9495,-8.5137,-1.0561 v03.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-2.0091,-22.4999,-12.1896,-3.5124,-1.7355,-1.6361,-3.3948,-2.9432,-0.7008,-4.0319,-2.2092,-23.0244,-12.0855,-2.9444 v04.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-8.228,-31.6507,-23.577,-10.1601,-8.8541,-9.0849,-12.9577,-11.6916,-7.0104,-11.395,-8.5716,-32.2003,-23.5136,-9.4851 @@ -1819,8 +1817,8 @@ v10.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-15.7719,-45.546,-28.953,- v11.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-16.6292,-43.3271,-26.1843,-18.5204,-17.2125,-17.1469,-20.3629,-20.3388,-16.7543,-22.0899,-17.5473,-43.9771,-26.237,-18.5084 v12.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-16.3958,-43.4368,-27.1289,-18.3549,-16.3398,-16.1372,-20.1131,-20.21,-16.4182,-21.5103,-17.3002,-44.0938,-27.0522,-18.2712 v13.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-16.3961,-44.1852,-29.676,-18.5285,-16.2681,-17.0358,-19.821,-19.8166,-16.5447,-22.1338,-17.1247,-44.6704,-29.4543,-18.1591 -libaom-v3.12.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,13.6627,6.8411,5.6762,12.7932,8.9201,10.2217,9.0982,7.3577,15.7602,16.7738,16.6028,9.946,10.6425,14.7667 -libaom-v3.12.0-unconstrained,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-0.6756,2.8869,4.656,-0.1791,-2.8122,-3.557,-3.1402,-3.2343,2.6547,1.7059,-0.1839,2.5455,4.2806,0.8523 +v14.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-16.2974,-44.2447,-29.2776,-18.4235,-16.1926,-16.8408,-19.1586,-19.3058,-16.4054,-22.0575,-17.0219,-44.7406,-29.0013,-18.0562 +v15.0.0,LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-16.2981,-44.3184,-29.1979,-18.4253,-16.1829,-16.8322,-19.1168,-19.2822,-16.3916,-22.0711,-17.0255,-44.8168,-28.9189,-18.0612 v02.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-2.8685,-5.7847,-3.9237,-3.0949,-3.2974,-3.8,-2.9852,-3.146,-1.6411,-4.3246,-2.7159,-5.295,-2.81,-3.0414 v03.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-7.8376,-8.1199,-7.2865,-7.8226,-6.2715,-7.4003,-6.0042,-6.1005,-4.8814,-9.5887,-7.5088,-8.2614,-5.8466,-7.3895 v04.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-15.0229,-20.6329,-19.5527,-15.6118,-14.6778,-15.1566,-14.114,-14.1425,-12.8629,-18.8483,-14.2484,-19.6688,-16.7024,-15.3905 @@ -1833,8 +1831,8 @@ v10.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-26.0611,-33.0213,-33.1993,- v11.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-25.5228,-32.1139,-32.4265,-26.3176,-25.5025,-25.3901,-27.4304,-26.3792,-26.3303,-38.4042,-24.9028,-30.309,-28.6431,-26.1644 v12.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-25.9808,-32.5268,-32.5445,-26.7507,-25.7275,-25.6609,-28.1094,-27.0677,-26.6953,-38.6223,-25.2986,-30.6583,-28.7347,-26.5092 v13.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-27.3244,-32.5569,-32.685,-27.943,-29.541,-27.5345,-29.4066,-28.0696,-27.4763,-40.0228,-26.2392,-30.4029,-28.6019,-27.1433 -libaom-v3.12.0,LD,B1,Life_1080p30_v2.y4m,25.226,10.246,5.341,23.3973,25.4737,30.1879,12.3479,12.2051,22.9726,25.557,27.3285,10.9077,5.4074,25.7662 -libaom-v3.12.0-unconstrained,LD,B1,Life_1080p30_v2.y4m,7.0086,7.4941,8.9058,7.0778,4.4021,4.309,4.2622,4.3762,9.1867,9.5553,7.1847,8.015,8.8613,7.3349 +v14.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-27.3068,-32.574,-32.6133,-27.9245,-29.5859,-27.5655,-29.1598,-27.8993,-27.4685,-40.504,-26.226,-30.465,-28.5108,-27.1276 +v15.0.0,LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-27.2525,-32.4433,-32.5785,-27.8673,-29.4583,-27.5255,-28.9929,-27.7769,-27.4173,-40.4633,-26.1402,-30.3222,-28.4815,-27.0423 v02.0.0,LD,B1,Life_1080p30_v2.y4m,0.7373,-4.237,0.4889,0.4343,0.5579,0.6251,0.1382,0.0566,2.5527,1.8064,0.6589,-4.0978,0.5163,0.4573 v03.0.0,LD,B1,Life_1080p30_v2.y4m,-2.9994,-6.9821,-3.8584,-3.2773,-2.3169,-2.0997,-3.5237,-3.1404,-0.8379,-2.7789,-3.1118,-6.8902,-3.9057,-3.3252 v04.0.0,LD,B1,Life_1080p30_v2.y4m,-9.1137,-19.7345,-14.2682,-10.0407,-8.4513,-7.9004,-11.0889,-10.7679,-7.4584,-10.8806,-9.3041,-19.6289,-14.2701,-10.0276 @@ -1847,8 +1845,8 @@ v10.0.0,LD,B1,Life_1080p30_v2.y4m,-17.192,-27.0346,-21.5081,-18.0353,-13.5667,-1 v11.0.0,LD,B1,Life_1080p30_v2.y4m,-17.2797,-25.3596,-21.2768,-17.9887,-13.6297,-12.8095,-17.1663,-17.8959,-16.959,-19.798,-17.7457,-25.3388,-21.4821,-18.2975 v12.0.0,LD,B1,Life_1080p30_v2.y4m,-17.5023,-26.0081,-21.4369,-18.2326,-13.6166,-12.7184,-17.6514,-18.2254,-17.026,-19.8671,-17.9653,-25.9848,-21.6408,-18.5305 v13.0.0,LD,B1,Life_1080p30_v2.y4m,-18.3423,-26.4343,-21.8036,-19.0192,-15.2839,-15.3521,-17.6768,-18.304,-17.4935,-21.2486,-18.6778,-26.2383,-21.8432,-19.1983 -libaom-v3.12.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,12.7362,0.6787,-3.7468,11.646,9.3645,6.4452,39.5268,36.1749,12.8849,6.5461,20.7958,1.4354,-3.4272,20.0467 -libaom-v3.12.0-unconstrained,LD,B1,MINECRAFT_1080p_60_8bit.y4m,6.9091,8.9285,5.6731,6.8281,6.7463,5.9071,19.3066,18.1206,9.1164,7.9873,8.9848,12.5748,9.169,9.5972 +v14.0.0,LD,B1,Life_1080p30_v2.y4m,-18.2584,-26.1834,-21.8598,-18.933,-15.207,-15.1985,-17.5905,-18.2185,-17.3759,-21.2436,-18.5962,-25.9689,-21.8972,-19.1145 +v15.0.0,LD,B1,Life_1080p30_v2.y4m,-18.2471,-26.1791,-21.8328,-18.921,-15.1756,-15.1832,-17.5792,-18.2203,-17.3765,-21.2151,-18.5839,-25.9639,-21.8651,-19.1012 v02.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-0.5612,-13.8793,-4.9269,-1.3435,-0.566,-0.697,-1.1286,-1.2188,-0.0118,-3.1925,-0.6146,-14.6286,-5.5624,-1.2385 v03.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-2.5485,-17.0429,-7.5949,-3.4023,-2.4591,-2.4067,-3.2328,-3.3134,-1.7192,-4.8513,-2.5639,-17.6278,-8.2916,-3.2178 v04.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-10.1661,-39.1631,-23.1206,-12.1378,-9.8414,-9.9678,-13.3625,-13.1688,-9.6201,-15.9997,-10.2729,-39.8586,-23.3671,-11.6834 @@ -1861,8 +1859,8 @@ v10.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-16.9562,-58.3412,-34.0115,-20.0789,-1 v11.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-17.0931,-57.1435,-31.8586,-19.944,-15.8156,-15.8139,-22.9831,-21.9907,-17.6694,-29.4202,-17.4286,-58.0942,-32.1567,-19.461 v12.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-17.6123,-57.0965,-32.5168,-20.4117,-15.9188,-15.9352,-23.2561,-22.3495,-18.0609,-29.4325,-17.9223,-58.0961,-32.8672,-19.886 v13.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-17.5837,-56.8554,-32.764,-20.3821,-15.92,-16.3782,-23.1677,-22.1195,-18.2019,-29.5942,-17.8137,-57.7238,-32.9887,-19.7818 -libaom-v3.12.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,9.7733,-21.3421,-21.9055,7.4733,2.8445,1.9145,26.9254,24.6497,7.3234,3.8835,20.9463,-24.3993,-24.8891,20.0564 -libaom-v3.12.0-unconstrained,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,3.8762,4.3167,4.1739,3.9392,4.401,3.959,11.1054,10.3426,6.3301,7.1812,3.9347,3.8303,3.7925,4.1048 +v14.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-17.5286,-56.349,-31.9495,-20.2618,-15.9271,-16.3351,-23.0284,-21.9827,-18.1135,-29.3655,-17.758,-57.2541,-32.103,-19.6915 +v15.0.0,LD,B1,MINECRAFT_1080p_60_8bit.y4m,-17.5036,-56.7883,-33.2982,-20.3346,-15.9381,-16.3116,-23.3001,-22.2435,-18.1271,-29.5299,-17.7369,-57.682,-33.4696,-19.719 v02.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-0.9209,-5.7552,-5.5124,-1.2851,-1.8469,-2.0935,-2.0306,-2.1024,-0.9929,0.7801,-1.0141,-5.7568,-6.1651,-1.1305 v03.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-3.832,-13.7281,-12.0523,-4.5495,-4.7079,-4.9863,-4.8066,-4.4549,-4.0048,-3.8883,-3.8858,-13.791,-12.401,-4.1253 v04.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-8.594,-27.2858,-23.9523,-10.0002,-9.4398,-9.7862,-12.6641,-12.2904,-9.1131,-11.29,-8.4429,-27.4668,-24.1151,-8.9047 @@ -1875,8 +1873,8 @@ v10.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-13.3922,-39.6294,-38.2383,-15.61 v11.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-13.6438,-38.6829,-38.2693,-15.7775,-15.1621,-14.9712,-22.5848,-21.7972,-15.8975,-20.3967,-14.0656,-38.9132,-38.8231,-14.7007 v12.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-13.8324,-39.1766,-38.5463,-15.9891,-14.9275,-14.865,-22.0846,-21.4794,-16.0579,-20.7379,-14.2426,-39.7678,-39.031,-14.8969 v13.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.2265,-39.3783,-40.1719,-16.43,-14.1776,-15.5572,-22.7807,-22.1064,-16.5447,-21.151,-14.2037,-39.0397,-40.4872,-14.8643 -libaom-v3.12.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,23.6647,19.0143,14.4036,22.3801,15.5103,18.0815,18.497,18.2349,16.8037,17.4669,30.9572,26.8171,21.6413,28.5697 -libaom-v3.12.0-unconstrained,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,3.1493,-0.0363,-1.0795,2.5643,0.7126,1.9129,-1.6769,-1.6833,0.9983,0.5001,3.1654,0.1598,-0.6042,2.0983 +v14.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.2063,-39.8898,-39.4098,-16.4004,-14.1963,-15.5543,-22.7265,-22.0684,-16.5324,-21.1795,-14.1926,-39.6797,-39.6385,-14.8566 +v15.0.0,LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,-14.2066,-39.7503,-39.445,-16.3955,-14.1959,-15.5397,-22.7108,-22.0647,-16.5093,-21.1485,-14.192,-39.5046,-39.679,-14.8522 v02.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-1.6808,-3.0461,-2.9171,-1.8798,-2.0099,-2.1264,-3.9021,-3.5806,-1.8968,-1.9206,-1.8637,-3.1983,-3.1158,-2.1952 v03.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-7.9099,-8.1572,-6.0344,-7.7806,-8.0903,-8.5777,-5.1273,-5.0269,-7.2036,-7.7559,-8.0838,-8.1818,-6.4488,-7.8158 v04.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-13.3328,-20.8298,-17.5082,-14.2824,-14.2261,-14.5152,-11.119,-11.1593,-14.3069,-15.7213,-13.7766,-20.9023,-17.7533,-15.3024 @@ -1889,8 +1887,8 @@ v10.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-25.218,-42.3191,-37. v11.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-27.0732,-45.0435,-39.7983,-29.7427,-27.5564,-27.9158,-25.3398,-25.1884,-29.7291,-34.2283,-27.3771,-45.253,-38.7682,-31.856 v12.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-26.8991,-44.8404,-39.5654,-29.5563,-27.3489,-27.7378,-24.9969,-24.8488,-29.4906,-34.0085,-27.1773,-45.0695,-38.5165,-31.6503 v13.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-26.8532,-44.5197,-39.3539,-29.4763,-32.0028,-27.6671,-24.7093,-24.5835,-29.3852,-33.9824,-27.0582,-44.6512,-38.167,-31.4696 -libaom-v3.12.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,15.0384,-6.0174,-4.691,13.61,14.1453,13.3586,24.2913,23.1528,13.8522,7.7456,29.7261,15.3856,6.8367,27.9056 -libaom-v3.12.0-unconstrained,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,7.3001,0.7388,-0.8207,6.7129,5.3297,5.9372,5.4376,4.9167,5.3741,5.5073,8.0322,7.5315,0.724,7.9033 +v14.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-26.7689,-44.4968,-39.3057,-29.3926,-31.9219,-27.5775,-24.6534,-24.5423,-29.3143,-33.885,-26.9713,-44.6354,-38.1117,-31.3817 +v15.0.0,LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-26.7692,-44.4566,-39.2953,-29.3883,-31.9118,-27.5874,-24.6473,-24.5349,-29.3187,-33.8726,-26.9672,-44.5897,-38.1013,-31.3723 v02.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-5.24,-15.6834,-17.5724,-6.1514,-6.2235,-6.1376,-6.428,-6.2084,-5.4858,-10.0333,-4.0446,-15.9055,-11.959,-5.1978 v03.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-12.032,-8.4272,-21.4548,-12.3299,-12.6693,-12.6877,-13.3639,-12.3389,-11.3284,-15.9639,-10.6477,-20.8746,-18.1794,-11.6926 v04.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-17.5883,-28.2719,-32.1571,-18.6601,-17.6903,-17.9053,-18.5328,-17.6401,-16.7895,-25.0383,-15.8506,-42.0508,-28.8201,-18.2264 @@ -1903,8 +1901,8 @@ v10.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-27.2322,-44.5704,-44.85 v11.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-26.7108,-45.0267,-46.0332,-28.295,-25.6928,-26.2394,-27.8604,-27.1477,-25.4586,-36.7528,-26.0844,-57.1259,-42.4662,-28.8075 v12.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-26.9844,-45.0014,-44.8517,-28.4844,-25.6905,-26.348,-28.1643,-27.4015,-25.5457,-36.5285,-26.3727,-56.7747,-40.8638,-28.9165 v13.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-26.7847,-44.972,-45.7601,-28.3403,-30.326,-26.2093,-27.1511,-26.4301,-25.4524,-36.7304,-26.0122,-56.4156,-41.0802,-28.5886 -libaom-v3.12.0,LD,B1,STARCRAFT_1080p60.y4m,10.9934,26.2396,40.2269,13.01,17.405,16.5053,17.1513,16.0103,19.3284,46.9631,13.1186,26.621,40.5083,14.4274 -libaom-v3.12.0-unconstrained,LD,B1,STARCRAFT_1080p60.y4m,4.3053,4.5853,6.3294,4.4151,2.4197,1.6586,-1.3386,-1.2553,7.3236,19.2114,4.305,4.489,6.2593,4.4904 +v14.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-26.748,-44.0365,-45.9067,-28.2811,-30.2977,-26.1878,-27.9352,-27.2237,-25.425,-36.7646,-25.9428,-56.1257,-41.1178,-28.5148 +v15.0.0,LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-26.7862,-44.014,-45.8697,-28.3121,-30.3163,-26.2003,-27.9412,-27.2096,-25.4448,-36.7809,-25.9678,-56.1682,-41.1363,-28.5395 v02.0.0,LD,B1,STARCRAFT_1080p60.y4m,-1.5304,-7.9696,-11.2965,-2.4785,-3.4167,-4.2171,-2.111,-2.1878,-0.1956,-0.4198,-1.6412,-8.0665,-11.3284,-2.1142 v03.0.0,LD,B1,STARCRAFT_1080p60.y4m,-5.0198,-13.0622,-14.4189,-6.0327,-6.6651,-7.6897,-3.8579,-3.7417,-3.4222,-5.6011,-5.1268,-13.1533,-14.4523,-5.6648 v04.0.0,LD,B1,STARCRAFT_1080p60.y4m,-11.7407,-23.988,-27.11,-13.37,-14.0603,-15.3168,-10.5758,-10.6575,-10.1352,-14.2076,-11.9671,-24.0913,-27.1422,-12.8653 @@ -1917,8 +1915,8 @@ v10.0.0,LD,B1,STARCRAFT_1080p60.y4m,-18.9364,-30.5773,-34.6505,-20.5627,-19.643, v11.0.0,LD,B1,STARCRAFT_1080p60.y4m,-18.8788,-30.2825,-34.1269,-20.4646,-19.3539,-20.5673,-16.5695,-16.8389,-19.6723,-33.5532,-19.4805,-30.4987,-34.1995,-20.3677 v12.0.0,LD,B1,STARCRAFT_1080p60.y4m,-19.7885,-29.9777,-34.0392,-21.2346,-20.2155,-21.3622,-18.45,-18.386,-20.6636,-33.7251,-20.3926,-30.1859,-34.1152,-21.2052 v13.0.0,LD,B1,STARCRAFT_1080p60.y4m,-20.4458,-32.5002,-36.0716,-22.0885,-23.9498,-22.667,-20.0758,-19.9014,-21.141,-36.1293,-21.0093,-32.7099,-36.1344,-21.9397 -libaom-v3.12.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,22.6631,27.1564,-0.1314,21.6931,10.7856,10.1881,38.3409,37.84,18.1616,15.2045,28.7549,31.0722,4.3576,28.1534 -libaom-v3.12.0-unconstrained,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,8.2858,19.5745,2.5399,8.3726,6.0086,6.5561,8.9908,8.1721,8.961,9.2526,7.5268,19.606,5.016,7.7646 +v14.0.0,LD,B1,STARCRAFT_1080p60.y4m,-20.19,-32.505,-35.9273,-21.8586,-23.717,-22.4965,-19.4829,-19.3353,-21.0017,-35.9972,-20.7637,-32.7168,-35.9896,-21.7077 +v15.0.0,LD,B1,STARCRAFT_1080p60.y4m,-20.1759,-32.4196,-35.878,-21.8372,-23.7257,-22.5103,-19.4649,-19.3252,-20.9857,-35.9961,-20.7499,-32.6337,-35.9417,-21.6889 v02.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-0.4348,2.2063,-15.9282,-1.1601,-1.739,-2.0127,-1.3122,-1.3869,-0.2569,-2.6712,-0.577,1.5039,-16.6217,-1.089 v03.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-4.817,0.8275,-22.1935,-5.5394,-4.7758,-5.1109,-4.8511,-4.8021,-4.0472,-7.4982,-4.8155,0.1768,-23.2362,-5.3898 v04.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-12.2449,-13.8412,-31.6773,-13.4152,-12.4047,-12.9818,-12.1303,-11.343,-11.66,-16.4052,-12.2064,-14.629,-32.6762,-13.0226 @@ -1931,8 +1929,8 @@ v10.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-23.6704,-34.5074,-53.4785,-26. v11.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-24.9621,-37.6067,-53.2607,-27.3307,-24.7407,-24.9913,-26.7343,-25.8576,-25.8974,-37.399,-24.9014,-38.1338,-55.0878,-26.3956 v12.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-25.0681,-35.0693,-54.2751,-27.3854,-24.6507,-25.056,-27.4134,-26.3089,-25.9835,-37.7574,-24.9992,-35.6693,-56.1549,-26.4956 v13.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-25.1848,-38.3613,-54.2422,-27.6546,-25.005,-24.8706,-27.3692,-26.4695,-25.8307,-37.9846,-25.098,-38.7665,-55.9079,-26.6402 -libaom-v3.12.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,25.2468,23.2473,22.9952,24.9908,13.0309,13.4064,18.4573,18.069,14.6523,25.7211,24.848,22.3125,22.0795,24.4901 -libaom-v3.12.0-unconstrained,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,15.4038,7.554,12.1002,14.7696,29.9836,27.3372,35.3852,31.534,28.5864,0.2978,19.9359,13.9585,17.9334,19.4086 +v14.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-25.1053,-37.5463,-53.7756,-27.5164,-24.9815,-24.81,-27.4114,-26.5035,-25.7099,-37.5834,-25.0228,-37.9544,-55.4486,-26.5407 +v15.0.0,LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-25.1096,-37.4801,-53.7103,-27.5096,-24.9854,-24.8315,-27.4919,-26.5349,-25.7117,-37.5563,-25.0196,-37.9199,-55.3911,-26.5328 v02.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-1.1402,-4.257,-4.0349,-1.4654,-1.3561,-1.4414,-1.0326,-1.1568,-1.6466,-5.1764,-1.1725,-4.1728,-3.9212,-1.5489 v03.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-8.7088,-9.4763,-10.2846,-8.8363,-8.7328,-9.3695,-9.2365,-9.0723,-8.9567,-10.1473,-8.9195,-9.7951,-10.591,-9.1008 v04.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-14.4834,-19.0278,-19.6982,-15.0159,-14.6006,-15.3498,-15.5563,-15.2787,-15.0935,-19.2906,-14.6551,-19.263,-19.9175,-15.3904 @@ -1945,8 +1943,8 @@ v10.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-23.604 v11.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.3322,-26.7491,-27.5086,-24.6366,-25.295,-26.1756,-27.5152,-25.9453,-25.4427,-28.8292,-24.5509,-27.0203,-27.8354,-24.951 v12.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.6503,-27.4431,-27.757,-24.9717,-25.522,-26.3017,-27.3477,-26.6668,-25.6938,-29.3721,-24.866,-27.732,-28.0815,-25.2859 v13.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-25.1922,-27.5451,-27.7576,-25.4582,-28.5271,-25.8893,-26.4934,-25.993,-25.1941,-29.3499,-25.295,-27.6722,-27.9238,-25.6597 -libaom-v3.12.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,16.9686,18.7365,20.6461,17.2556,13.6006,14.4379,17.4833,17.487,12.624,17.8988,16.0959,18.2976,20.4475,17.1867 -libaom-v3.12.0-unconstrained,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,5.6821,-1.818,-2.1864,4.885,10.5676,9.9834,9.0958,6.4164,12.6572,-9.9289,8.0681,-0.3763,-0.8507,6.1975 +v14.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-25.0005,-27.5697,-27.5566,-25.2781,-28.2136,-25.566,-26.3671,-25.7735,-25.0166,-29.3807,-25.0891,-27.709,-27.7072,-25.461 +v15.0.0,LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.9535,-27.4692,-27.4255,-25.2236,-28.2449,-25.5773,-26.3684,-25.7232,-25.0035,-29.2192,-25.0416,-27.6067,-27.5748,-25.4029 v02.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,1.2779,-1.5072,0.1416,1.0949,-0.2034,0.2627,1.3526,1.1734,-0.346,-2.4722,1.1282,-1.5571,0.1111,0.858 v03.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-9.9559,-12.1777,-10.5721,-10.0907,-11.1734,-10.4101,-11.3674,-9.7614,-10.7065,-13.8151,-10.1928,-12.2817,-10.6091,-10.4065 v04.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-26.1613,-36.5297,-32.5592,-26.9755,-27.0898,-26.8366,-26.0433,-24.1697,-26.761,-31.9113,-26.4035,-36.2969,-32.3847,-27.7383 @@ -1959,8 +1957,8 @@ v10.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-42.5542,-53.0062,-48.1395, v11.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-42.9316,-51.2141,-47.0329,-43.5265,-43.8399,-43.3089,-41.9724,-40.4748,-43.6049,-49.6894,-43.3061,-51.0588,-46.9883,-44.1916 v12.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-43.7228,-52.0906,-47.0929,-44.284,-44.2851,-43.9161,-42.9246,-41.7226,-44.3691,-50.158,-44.0934,-51.9617,-47.0571,-44.9196 v13.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-45.0317,-52.5262,-48.2412,-45.5429,-46.247,-45.2678,-44.6829,-42.9217,-45.1218,-51.2909,-45.2759,-52.2884,-48.1372,-46.0268 -libaom-v3.12.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,3.0272,8.2979,11.4831,3.7074,-1.0854,-0.6519,-1.7942,-1.2528,1.5834,5.1459,4.028,10.9912,14.3132,4.9691 -libaom-v3.12.0-unconstrained,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,13.9734,-4.3046,-4.0589,11.9429,20.0353,18.6835,29.9083,29.0043,20.8844,0.0232,22.1858,0.8921,-0.2882,20.2637 +v14.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-44.5231,-52.2948,-48.1718,-45.0695,-45.7451,-44.7606,-44.1552,-42.2309,-44.6531,-50.9925,-44.7497,-52.0614,-48.0754,-45.5814 +v15.0.0,LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-44.7793,-52.4269,-48.4107,-45.3188,-46.028,-45.0337,-44.2563,-42.3175,-44.9741,-51.1676,-45.0194,-52.195,-48.3106,-45.8223 v02.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,0.5039,-5.2812,-4.6858,-0.0647,-0.2112,-0.2109,0.3454,0.5096,-0.4672,-3.8786,0.445,-5.5598,-4.883,-0.0142 v03.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-6.242,-10.9046,-9.7518,-6.6697,-5.9312,-6.0953,-8.6404,-7.195,-6.5156,-9.556,-6.4043,-11.1596,-9.8912,-6.7648 v04.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-23.9971,-32.3045,-30.707,-24.7859,-21.7173,-22.2431,-30.9204,-29.0651,-23.8449,-29.6812,-24.7038,-32.645,-30.9162,-25.4368 @@ -1973,8 +1971,8 @@ v10.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-26.69 v11.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-33.2971,-41.3746,-40.0811,-34.0747,-31.6187,-31.8542,-40.8462,-38.9855,-33.7593,-41.0339,-34.2978,-42.0914,-40.5842,-34.9809 v12.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-33.3092,-41.4236,-40.9123,-34.142,-31.9962,-32.1591,-40.8919,-39.3084,-33.9762,-40.8507,-34.2823,-42.15,-41.4115,-34.9789 v13.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-34.1564,-42.1709,-41.919,-34.9835,-33.4097,-32.3458,-41.549,-40.0463,-34.2499,-41.1923,-34.8264,-42.8964,-42.4079,-35.5883 -libaom-v3.12.0,LD,B2,MobileDeviceScreenSharing.y4m,80.4312,65.5231,63.761,79.096,82.7066,82.2215,76.221,80.9707,87.6549,85.6638,80.2441,66.5464,64.4035,78.843 -libaom-v3.12.0-unconstrained,LD,B2,MobileDeviceScreenSharing.y4m,81.703,75.7222,75.6751,81.1834,83.3654,82.7925,79.8421,82.8159,87.7218,81.9097,82.0939,76.2346,74.4219,81.5192 +v14.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-33.0182,-41.9712,-41.5777,-33.9438,-32.6654,-31.4711,-39.6051,-38.0775,-33.2471,-40.7985,-33.6256,-42.6668,-42.0548,-34.4407 +v15.0.0,LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-33.0103,-42.0426,-41.552,-33.9394,-32.1291,-31.0044,-39.8303,-38.2658,-33.0323,-40.5629,-33.6204,-42.7456,-42.0336,-34.4373 v02.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-3.6613,-10.7106,-7.6321,-4.1924,-3.1365,-3.3218,0.731,0.8263,-3.7889,-5.4719,-3.691,-10.6785,-8.2972,-3.9127 v03.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-9.1907,-17.3444,-16.4082,-9.936,-6.8991,-7.1046,-6.3723,-4.9027,-7.3193,-13.1157,-9.2422,-17.052,-16.4854,-9.4973 v04.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-27.2424,-35.5489,-36.2452,-28.0817,-26.2295,-26.6472,-23.009,-21.6848,-26.3665,-31.0809,-27.2497,-35.2821,-36.4615,-27.583 @@ -1987,8 +1985,8 @@ v10.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-46.0039,-54.56,-53.5649,-46.8427,-4 v11.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-44.3117,-51.8121,-52.5468,-45.1039,-44.479,-44.4692,-45.1671,-43.5612,-45.1628,-50.1805,-44.3762,-51.7163,-52.7502,-44.8364 v12.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-45.6861,-53.0176,-51.5668,-46.3463,-45.7439,-45.7229,-46.3293,-44.4962,-46.5618,-49.8181,-45.755,-52.9336,-52.0264,-46.1434 v13.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-45.9118,-52.6723,-53.1434,-46.5867,-46.2573,-45.57,-47.2068,-45.2638,-46.4885,-50.5365,-45.9578,-52.6836,-53.494,-46.3278 -libaom-v3.12.0,LD,B2,SceneComposition_2.y4m,53.9375,44.119,31.5191,52.0998,39.5059,40.1636,47.9378,51.1391,45.455,58.6064,53.8915,42.0624,28.2471,50.4212 -libaom-v3.12.0-unconstrained,LD,B2,SceneComposition_2.y4m,34.9607,30.4636,23.7748,33.9322,36.9723,38.3002,38.3934,38.3149,39.0382,35.3477,35.0334,32.0933,25.9066,34.2688 +v14.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-45.8073,-52.6187,-53.4615,-46.5273,-46.2308,-45.4065,-46.5915,-44.7105,-46.4702,-50.5043,-45.8638,-52.5134,-53.708,-46.2476 +v15.0.0,LD,B2,MobileDeviceScreenSharing.y4m,-45.8089,-52.62,-53.4631,-46.5289,-46.2324,-45.4087,-46.6009,-44.7207,-46.4724,-50.5056,-45.8654,-52.5148,-53.7096,-46.2492 v02.0.0,LD,B2,SceneComposition_2.y4m,-2.5547,-25.8127,-29.2819,-5.4703,-3.135,-2.5077,2.6546,2.0015,-5.2308,-17.1731,-2.5818,-25.5809,-28.4608,-5.8482 v03.0.0,LD,B2,SceneComposition_2.y4m,-11.8199,-21.7804,-34.2078,-13.7238,-13.1928,-12.6545,-10.7724,-9.9384,-13.8218,-20.6984,-11.839,-22.0392,-33.5541,-14.1705 v04.0.0,LD,B2,SceneComposition_2.y4m,-21.8414,-39.5399,-47.1939,-24.5671,-22.8718,-22.5802,-22.5903,-21.1994,-24.5849,-37.4295,-21.854,-39.4683,-46.1176,-25.2456 @@ -2001,8 +1999,8 @@ v10.0.0,LD,B2,SceneComposition_2.y4m,-35.2471,-56.5214,-61.5888,-38.4837,-38.304 v11.0.0,LD,B2,SceneComposition_2.y4m,-37.8235,-58.5326,-62.956,-40.8977,-40.7903,-40.3696,-44.044,-42.368,-42.0987,-55.1195,-37.8962,-58.7085,-63.2853,-41.6659 v12.0.0,LD,B2,SceneComposition_2.y4m,-38.4091,-58.6158,-63.3376,-41.3871,-41.3363,-41.179,-43.7464,-42.7024,-42.7791,-55.157,-38.4841,-58.8069,-63.6508,-42.1389 v13.0.0,LD,B2,SceneComposition_2.y4m,-39.446,-58.9886,-63.3413,-42.3154,-41.2926,-40.7938,-43.5033,-42.4312,-42.516,-54.7553,-39.4797,-59.1335,-63.587,-43.0293 -libaom-v3.12.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,11.8081,12.2304,11.6169,11.8074,9.5129,9.9517,17.3521,17.2484,12.3441,15.6733,13.7931,14.05,16.4556,14.2618 -libaom-v3.12.0-unconstrained,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,20.3723,22.6795,23.298,20.6353,20.742,20.8203,24.9914,25.6625,20.6568,25.8141,21.648,22.2184,25.1931,22.3706 +v14.0.0,LD,B2,SceneComposition_2.y4m,-38.9268,-58.6854,-63.1239,-41.8331,-40.704,-40.5047,-43.4109,-42.2022,-42.0131,-54.719,-38.9569,-58.8404,-63.3361,-42.5619 +v15.0.0,LD,B2,SceneComposition_2.y4m,-38.9268,-58.6854,-63.1239,-41.8331,-40.704,-40.5047,-43.4109,-42.2022,-42.0131,-54.719,-38.9569,-58.8404,-63.3361,-42.5619 v02.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-3.1895,-13.3113,-10.5577,-4.2068,-3.5251,-3.167,-4.0042,-3.564,-4.1583,-7.3744,-2.9137,-11.945,-15.2998,-5.4543 v03.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-14.4826,-19.3714,-19.5889,-15.0326,-18.281,-17.4956,-18.2932,-16.3319,-15.9476,-13.2203,-14.4306,-20.5586,-23.959,-16.2653 v04.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-33.4208,-40.2807,-39.7457,-34.1753,-36.1902,-35.6369,-34.95,-33.4648,-33.8687,-32.4478,-34.0931,-40.5748,-45.3876,-36.124 @@ -2015,8 +2013,8 @@ v10.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.0829,-64.0393,-63.1396,-5 v11.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-53.3728,-64.4444,-63.5988,-54.6845,-58.2091,-57.4991,-60.7411,-59.0812,-55.8673,-59.1684,-53.6868,-65.3192,-67.2008,-56.6715 v12.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-53.6266,-63.5101,-63.0505,-54.8163,-58.4258,-57.6017,-61.2887,-59.6814,-56.0252,-58.222,-54.0426,-63.2818,-66.6155,-56.5864 v13.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-53.7848,-61.9107,-63.3291,-54.8199,-56.4429,-57.6492,-61.2291,-59.6597,-55.6933,-57.9562,-54.2675,-62.9201,-66.534,-56.7243 -libaom-v3.12.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-1.1803,-4.879,-5.4903,-1.5995,-1.0283,-2.0108,-4.5159,-3.7808,1.0847,-0.8959,-5.1383,-8.1239,-7.4996,-5.7234 -libaom-v3.12.0-unconstrained,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,4.5885,7.6268,6.9086,4.8514,3.6793,3.3159,5.0317,4.9932,4.4179,5.8965,6.288,8.8459,9.4232,6.9789 +v14.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-53.5265,-61.4183,-63.0473,-54.6201,-56.2947,-57.5117,-60.7266,-59.147,-55.4541,-55.3757,-54.0275,-62.9116,-66.4499,-56.5263 +v15.0.0,LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-53.5105,-62.0296,-62.731,-54.6223,-56.2053,-57.3819,-60.6346,-59.089,-55.4819,-57.2936,-53.9806,-63.0681,-66.4542,-56.5015 v02.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-1.7621,-17.7533,-17.9541,-3.2207,-2.595,-2.832,-1.9019,-1.5844,-2.7844,-5.4751,-1.6674,-7.104,-6.0894,-2.3269 v03.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-9.9068,-22.0499,-23.0953,-11.0481,-9.3964,-9.624,-14.0229,-12.2477,-9.0132,-9.0572,-9.9204,-12.3265,-11.6066,-10.2597 v04.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-19.7833,-34.2049,-31.3272,-20.9979,-19.9301,-20.3753,-22.875,-21.0811,-19.3617,-21.8042,-19.6312,-23.9181,-22.9313,-20.2313 @@ -2029,8 +2027,8 @@ v10.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-31.2951,-43.8937,-43.8371,- v11.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-33.0074,-42.7426,-43.1726,-33.9125,-34.8993,-35.1724,-41.9809,-41.5005,-33.6495,-33.3657,-32.5051,-32.8162,-32.4371,-32.4473 v12.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-33.5148,-43.6076,-43.3988,-34.4214,-35.2452,-35.6288,-42.5778,-42.0849,-34.0818,-33.0218,-33.0214,-33.2588,-32.9692,-32.9617 v13.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-33.5846,-42.0672,-42.6242,-34.3788,-36.7116,-35.9909,-42.1292,-41.6657,-34.2988,-31.1051,-32.5892,-33.1438,-32.436,-32.5458 -libaom-v3.12.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,4.78,12.5495,10.5879,5.4227,4.9616,4.5499,7.5394,6.9484,6.5688,10.1783,4.0001,10.433,9.0517,4.9232 -libaom-v3.12.0-unconstrained,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,15.7564,10.571,7.2611,15.0551,17.2705,17.326,27.7836,26.761,21.839,5.9681,16.3645,13.1488,9.1549,16.2086 +v14.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-33.4688,-42.1497,-42.9164,-34.2895,-36.4924,-35.7644,-41.9726,-41.4983,-34.1336,-31.4003,-32.4661,-32.9389,-32.7429,-32.4405 +v15.0.0,LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-33.5079,-42.2716,-43.0016,-34.335,-36.5928,-35.9293,-41.8991,-41.4786,-34.2431,-31.5403,-32.4939,-33.0686,-32.784,-32.4779 v02.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-4.478,-19.3282,-16.7175,-5.8521,-6.7607,-6.4284,-5.7877,-5.66,-7.3054,-15.4118,-4.8049,-19.5474,-17.0136,-6.1372 v03.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-24.8073,-33.2622,-33.823,-25.6961,-24.263,-24.2878,-26.5515,-25.2133,-24.993,-31.7684,-24.8004,-32.7146,-34.1127,-25.6957 v04.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-33.1538,-44.9205,-46.6225,-34.4927,-34.0077,-33.9299,-35.5614,-34.004,-34.3569,-42.259,-33.1704,-44.2674,-46.5355,-34.4762 @@ -2043,8 +2041,8 @@ v10.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-51.4031,-63.4997,-6 v11.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-52.5521,-63.8153,-64.4242,-53.8714,-53.6024,-53.693,-55.3195,-53.9088,-53.9972,-61.0632,-52.6268,-63.8502,-64.6213,-53.9163 v12.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-52.9379,-63.4248,-64.8066,-54.1763,-53.3691,-53.4476,-55.7784,-54.2931,-54.1251,-61.186,-53.0178,-63.3822,-65.0381,-54.2271 v13.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.3885,-63.6192,-65.1425,-54.61,-55.4928,-54.1154,-56.3711,-54.9183,-54.2825,-61.359,-53.3584,-63.601,-65.3196,-54.5627 -libaom-v3.12.0,LD,B2,Wikipedia_1920x1080p30.y4m,4.388,-1.5684,-0.9452,3.7237,10.6936,9.378,4.5233,2.2705,3.994,2.0716,3.8948,-3.7126,-1.5444,2.3867 -libaom-v3.12.0-unconstrained,LD,B2,Wikipedia_1920x1080p30.y4m,6.4807,6.7792,4.5382,6.2011,-1.4173,1.627,16.7752,13.9717,10.6364,-1.2474,11.8376,9.3818,7.7099,11.7544 +v14.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.2477,-63.2259,-64.9738,-54.4515,-55.1236,-53.9155,-55.9843,-54.5657,-54.1082,-61.1536,-53.2164,-63.0631,-65.2614,-54.402 +v15.0.0,LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-53.318,-63.1929,-64.9374,-54.5073,-55.243,-53.935,-55.9618,-54.5673,-54.0945,-61.127,-53.2934,-63.0595,-65.2344,-54.464 v02.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-3.5396,-12.4255,-11.3905,-4.3063,-3.696,-4.0016,-3.3375,-2.9735,-4.0503,-8.0506,-3.7058,-12.3097,-11.0801,-4.6136 v03.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-10.7166,-17.7242,-16.7776,-11.3138,-10.3635,-10.5451,-11.6932,-10.5775,-10.1989,-14.4269,-10.7954,-17.7292,-16.6175,-11.5386 v04.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-22.7018,-32.1246,-31.6063,-23.5747,-22.3223,-22.6834,-24.0066,-23.2134,-22.6764,-27.8444,-22.9079,-31.7142,-30.7792,-24.0802 @@ -2057,8 +2055,8 @@ v10.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-36.8481,-49.8507,-49.5182,-38.1871,-37 v11.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-37.2138,-48.8766,-48.551,-38.3631,-37.3332,-37.3254,-39.6868,-38.4484,-37.7008,-43.3666,-37.5135,-49.0312,-48.1602,-39.0286 v12.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-38.3635,-49.1261,-48.4969,-39.3853,-38.6092,-38.7667,-41.569,-40.0491,-38.8322,-44.7882,-38.6753,-49.2161,-48.1075,-40.0032 v13.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-38.8958,-49.4057,-49.2483,-39.9038,-39.5991,-39.0492,-41.5217,-40.3927,-38.9837,-44.9344,-39.102,-49.3079,-48.4928,-40.3877 -libaom-v3.12.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-1.0626,-7.4609,-5.5948,-1.8497,-3.3364,-1.5057,-0.709,-3.4861,-1.7217,-4.0622,-1.3114,-8.0205,-6.1621,-2.1825 -libaom-v3.12.0-unconstrained,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-8.8454,-18.2121,-15.7564,-9.9609,-3.4668,-9.9436,-8.912,-10.6525,-9.04,-14.9952,-9.0573,-18.4062,-15.9166,-10.1466 +v14.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-38.6071,-49.1826,-48.666,-39.6041,-38.9225,-38.6301,-41.1408,-40.0278,-38.6541,-44.6551,-38.8247,-49.0937,-47.9862,-40.1055 +v15.0.0,LD,B2,Wikipedia_1920x1080p30.y4m,-38.6265,-49.3635,-48.4888,-39.624,-39.0198,-38.6371,-41.0833,-39.9839,-38.6951,-44.868,-38.8361,-49.2162,-47.8105,-40.1242 v02.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-1.9897,-8.2208,-10.4281,-2.9339,-1.189,-1.7161,-2.3202,-2.0966,-2.1006,-5.4279,-2.0249,-8.2465,-10.5335,-2.9755 v03.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-11.9956,-13.0431,-17.5101,-12.4241,-9.1523,-10.862,-17.613,-14.9277,-10.9226,-12.7673,-12.1101,-13.0872,-17.6521,-12.5617 v04.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-18.5691,-24.5224,-27.854,-19.5729,-15.3768,-17.6792,-25.5587,-22.2169,-17.5651,-21.4511,-18.6837,-24.5548,-27.9502,-19.6958 @@ -2071,8 +2069,8 @@ v10.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-27.3911,-33.0183,- v11.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-28.0937,-34.1223,-43.5976,-29.5676,-24.5324,-25.6521,-32.859,-30.7212,-27.235,-31.3081,-28.3216,-34.2684,-43.7596,-29.7898 v12.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-28.1352,-34.3508,-43.1691,-29.5828,-24.3374,-25.5904,-32.8972,-30.7473,-27.1895,-31.5052,-28.3606,-34.5039,-43.3365,-29.8023 v13.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-28.1705,-33.9906,-43.1861,-29.5909,-27.8294,-25.6049,-32.6673,-30.5839,-27.2404,-31.3809,-28.3927,-34.141,-43.3483,-29.8101 -libaom-v3.12.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,0.6062,-14.6651,-15.1181,-1.6492,-3.0227,-4.2092,-1.8623,-2.1811,-2.7544,-7.6616,0.7022,-14.9968,-15.4811,-0.8563 -libaom-v3.12.0-unconstrained,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-4.7728,-0.2559,0.6725,-4.097,-2.2218,-5.221,-10.7628,-10.7747,-6.2804,-1.6316,-5.3881,-0.6264,0.2459,-4.8879 +v14.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-28.1031,-33.8964,-43.132,-29.5226,-27.7661,-25.5439,-32.49,-30.4456,-27.1791,-31.2988,-28.3248,-34.0456,-43.2953,-29.7416 +v15.0.0,RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,-28.0982,-33.9391,-43.1735,-29.5247,-27.7534,-25.5357,-32.4889,-30.436,-27.1761,-31.323,-28.3201,-34.0889,-43.3397,-29.7434 v02.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-3.0489,-5.9398,-5.462,-3.4024,-1.3347,-3.0823,-3.8471,-3.7694,-3.0494,-3.7568,-3.1026,-5.9657,-5.5008,-3.3581 v03.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-16.5546,-17.198,-15.9678,-16.5516,-13.146,-16.7024,-19.9384,-19.1776,-15.7353,-16.1083,-16.6865,-17.2227,-15.9164,-16.6875 v04.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-23.0733,-28.1431,-27.9768,-23.7566,-19.3531,-23.4145,-29.1054,-27.6557,-22.3177,-24.5203,-23.2166,-28.2028,-27.9532,-23.6862 @@ -2085,8 +2083,8 @@ v10.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-32.5899,-38.9033,-37.30 v11.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-33.0868,-43.7405,-42.2149,-34.4527,-30.851,-33.374,-39.5031,-37.9683,-33.042,-36.9427,-33.3627,-43.9266,-42.399,-34.3084 v12.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-32.9567,-43.7887,-41.6737,-34.2979,-30.495,-33.1349,-39.3142,-37.7487,-32.8246,-36.6755,-33.2273,-43.9877,-41.88,-34.166 v13.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-33.1252,-43.6733,-41.8728,-34.4518,-36.6096,-33.2844,-39.5879,-38.0728,-32.9755,-36.6679,-33.4048,-43.8354,-42.0301,-34.3246 -libaom-v3.12.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-3.1092,-6.9238,-5.9667,-3.5323,-2.2733,-4.331,-3.164,-2.0198,-3.7715,-5.5043,-3.7901,-7.5102,-6.5105,-4.2042 -libaom-v3.12.0-unconstrained,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-6.9408,-7.5538,-8.0873,-7.0322,-5.0649,-8.53,-7.6013,-5.9881,-7.3284,-8.8227,-8.0458,-8.8692,-9.4119,-8.1406 +v14.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-33.0621,-43.621,-41.5393,-34.3679,-36.5511,-33.2443,-39.5205,-38.0067,-32.9124,-36.6054,-33.3388,-43.7873,-41.7097,-34.2488 +v15.0.0,RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,-33.0521,-43.6143,-41.5537,-34.3601,-36.5508,-33.2279,-39.5405,-38.0068,-32.8988,-36.6118,-33.3288,-43.7804,-41.7256,-34.24 v02.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-2.8109,-10.826,-8.345,-3.6123,-1.9651,-2.5519,-3.484,-3.1523,-2.7439,-5.3396,-2.8099,-11.0453,-8.3186,-3.5888 v03.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-13.6636,-17.0722,-14.752,-13.9268,-11.4496,-12.9037,-20.9345,-19.1356,-12.6162,-14.2532,-13.5964,-17.2153,-14.6105,-13.8747 v04.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-23.2456,-30.7971,-26.8354,-23.9131,-20.0429,-22.6768,-32.5747,-30.1187,-21.7536,-25.2729,-23.1434,-30.9453,-26.7097,-23.8131 @@ -2099,8 +2097,8 @@ v10.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-32.3293,-42.1086,-36. v11.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-33.1209,-42.3597,-37.2122,-33.9319,-30.6518,-31.9208,-42.7728,-40.3749,-31.4693,-35.8041,-32.9521,-42.3995,-37.0463,-33.7469 v12.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-32.8881,-42.5844,-37.0363,-33.7321,-30.1759,-31.5347,-42.767,-40.3051,-31.1916,-35.6584,-32.7263,-42.5935,-36.8764,-33.5509 v13.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-32.9598,-42.7587,-37.3046,-33.8221,-33.0657,-31.6465,-42.8811,-40.4372,-31.2707,-35.8183,-32.8019,-42.7628,-37.1399,-33.6393 -libaom-v3.12.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,5.1335,1.7941,5.8439,4.9751,5.193,3.7372,10.4296,9.5692,5.3473,2.5017,7.1554,3.47,8.2961,7.0134 -libaom-v3.12.0-unconstrained,RA,A1,Neon1224_3840x2160_2997fps.y4m,-3.6719,-6.6448,-5.9606,-4.0214,-3.8444,-3.2204,-5.0013,-5.4605,-4.7267,-4.8387,-5.7274,-7.9583,-7.4438,-6.0736 +v14.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-32.9107,-42.7335,-37.2637,-33.775,-33.0176,-31.5858,-42.8416,-40.3892,-31.2235,-35.7773,-32.7527,-42.7404,-37.0945,-33.5919 +v15.0.0,RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,-32.9103,-42.6922,-37.2596,-33.7717,-33.0217,-31.5863,-42.8414,-40.3892,-31.2262,-35.7566,-32.7519,-42.6917,-37.0897,-33.5878 v02.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-3.2099,-3.1859,-2.5952,-3.1674,-2.6911,-2.8021,-3.9936,-4.1205,-3.2405,-3.7272,-3.2132,-3.0497,-2.4712,-3.0927 v03.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-10.3126,-7.1591,-7.377,-9.9225,-8.3765,-9.9333,-11.9583,-11.995,-9.6811,-9.2974,-10.3785,-6.9994,-7.3213,-9.7198 v04.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-15.1261,-15.0074,-15.4906,-15.151,-13.0343,-14.9563,-19.3119,-18.6639,-14.7421,-15.3528,-15.2357,-14.8946,-15.4824,-15.2021 @@ -2113,8 +2111,8 @@ v10.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-24.9739,-24.2562,-24.5983,-24.908, v11.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-24.8074,-25.7891,-25.3759,-24.9092,-22.3565,-24.9854,-31.3077,-30.459,-24.4134,-26.4179,-25.0465,-25.9835,-25.5158,-25.1691 v12.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-24.81,-25.7308,-25.2743,-24.9008,-22.1532,-24.8769,-31.3872,-30.5222,-24.3595,-26.3195,-25.0473,-25.9276,-25.432,-25.1557 v13.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-24.7773,-25.6597,-25.174,-24.8613,-28.301,-24.8165,-31.4212,-30.5246,-24.3185,-26.3591,-25.0113,-25.8429,-25.3163,-25.1054 -libaom-v3.12.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,2.9873,-5.3616,-8.9407,2.2566,1.209,1.1196,3.9007,3.7542,2.1419,-3.211,4.0518,-5.7156,-9.2012,2.9497 -libaom-v3.12.0-unconstrained,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-12.2962,-11.679,-10.8812,-12.2151,-13.3021,-15.3806,-11.1286,-11.2355,-12.1494,-16.9094,-13.3466,-12.402,-10.8643,-13.3771 +v14.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-24.7645,-25.6526,-25.1526,-24.8483,-28.285,-24.7955,-31.4051,-30.5094,-24.3046,-26.3388,-25.0002,-25.8357,-25.2938,-25.0932 +v15.0.0,RA,A1,Neon1224_3840x2160_2997fps.y4m,-24.7287,-25.5616,-25.0695,-24.8057,-28.266,-24.7674,-31.2927,-30.4464,-24.2635,-26.2553,-24.9666,-25.7384,-25.2027,-25.0467 v02.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,5.0649,-3.4551,-6.0691,4.3098,0.2429,2.7192,1.3782,1.1827,3.1875,0.5244,5.5217,-3.2257,-6.2722,4.6339 v03.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-9.4453,-16.9588,-21.6842,-10.1847,-9.0799,-8.9982,-13.7415,-13.1041,-9.4619,-12.559,-9.702,-17.1107,-21.7781,-10.9346 v04.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-15.979,-28.9508,-36.0269,-17.2814,-14.7861,-15.3304,-21.5647,-20.4736,-15.8421,-20.5704,-16.1142,-29.0926,-36.0819,-18.2746 @@ -2127,8 +2125,8 @@ v10.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-25.6431,-45.7338,-46.104 v11.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-25.6014,-46.5307,-48.8992,-27.4342,-24.1875,-24.2038,-34.9029,-33.6659,-25.5372,-32.2169,-25.9746,-46.7903,-49.1468,-29.2885 v12.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-25.502,-46.9753,-49.4444,-27.3884,-23.9638,-23.9063,-34.6371,-33.4222,-25.4211,-32.3256,-25.867,-47.2558,-49.6836,-29.289 v13.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-25.5386,-46.7272,-49.3162,-27.4041,-25.2072,-23.954,-34.7622,-33.5138,-25.4363,-32.1135,-25.8992,-47.0007,-49.5517,-29.289 -libaom-v3.12.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-0.3969,1.9378,2.5936,-0.1584,3.2194,0.5031,0.6243,-0.9271,0.0824,-0.2883,-0.4685,1.2167,1.9026,-0.141 -libaom-v3.12.0-unconstrained,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-13.5943,-14.8061,-22.9165,-13.9918,5.8818,-3.5339,-18.2192,-18.2725,-9.0244,-13.8378,-14.1065,-15.5954,-23.9703,-15.0358 +v14.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-25.4992,-46.6685,-49.2707,-27.363,-25.1678,-23.9154,-34.7297,-33.4807,-25.4026,-32.0397,-25.8601,-46.9413,-49.5032,-29.2433 +v15.0.0,RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,-25.5004,-46.6931,-49.2765,-27.3659,-25.173,-23.9228,-34.7454,-33.49,-25.4036,-32.0637,-25.8622,-46.9675,-49.5082,-29.2504 v02.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-1.7615,-9.0277,-18.4434,-2.8117,-2.113,-2.0141,-1.8459,-2.0007,-1.8832,-7.6752,-1.7553,-9.2676,-19.1259,-3.4277 v03.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-7.0979,-12.0453,-22.1811,-7.9567,-7.0326,-6.7385,-11.1791,-10.0951,-6.4702,-13.4569,-7.1044,-12.2484,-22.8887,-8.5709 v04.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-13.7218,-27.0704,-39.5812,-15.5455,-12.6067,-12.8623,-19.8048,-17.9316,-12.9913,-24.0477,-13.5832,-27.3026,-40.2178,-16.5001 @@ -2141,8 +2139,8 @@ v10.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-24.4822,-37.7406,- v11.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-24.3486,-36.3356,-45.3205,-25.9001,-24.3146,-23.7898,-28.4541,-27.8642,-23.3801,-34.9954,-24.3825,-36.816,-45.9609,-26.9588 v12.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-24.2646,-36.2029,-45.6377,-25.8325,-23.9097,-23.5265,-28.2347,-27.7809,-23.2706,-34.9635,-24.3143,-36.6975,-46.2857,-26.9149 v13.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-24.1882,-37.3884,-45.7571,-25.8436,-23.5302,-23.544,-28.133,-27.6381,-23.2835,-35.6568,-24.2651,-37.817,-46.3682,-26.9523 -libaom-v3.12.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-1.2338,-19.1218,-13.1323,-3.5748,-6.5762,-6.9879,-4.3341,-4.2726,-4.4556,-9.5593,-1.3551,-19.3416,-13.4816,-2.9318 -libaom-v3.12.0-unconstrained,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-6.4501,-8.1955,-5.2272,-6.4514,-5.3257,-7.8223,-10.013,-10.0028,-8.1549,-6.2893,-7.2181,-8.4208,-5.9261,-7.1248 +v14.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-24.0203,-37.2026,-45.6061,-25.6749,-23.3788,-23.3965,-27.9342,-27.4201,-23.1333,-35.4819,-24.1026,-37.6254,-46.2194,-26.786 +v15.0.0,RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,-24.0206,-37.2451,-45.6009,-25.6777,-23.3859,-23.4033,-27.9408,-27.4269,-23.1344,-35.4955,-24.1011,-37.6699,-46.2123,-26.788 v02.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-2.0292,-6.1365,-4.7014,-2.518,-1.1745,-1.9936,-2.7371,-2.6919,-2.1296,-3.5203,-1.9843,-6.0655,-4.5697,-2.3062 v03.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-15.6721,-15.1894,-13.3496,-15.4568,-12.6288,-14.9307,-19.7733,-18.5636,-14.719,-15.7802,-15.8638,-15.2254,-13.3991,-15.6473 v04.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-22.3775,-28.5947,-24.4975,-22.9797,-19.0534,-21.9606,-29.4543,-27.2878,-21.5479,-24.4548,-22.5898,-28.6929,-24.532,-22.9382 @@ -2155,8 +2153,8 @@ v10.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-31.8566,-41.4413,-36.0858,- v11.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-32.878,-45.0252,-38.8826,-34.2418,-30.4057,-32.1718,-40.9693,-38.6777,-32.6419,-37.4759,-33.2313,-45.1948,-39.119,-34.096 v12.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-32.7738,-45.1995,-38.5925,-34.1419,-30.0171,-31.957,-40.8263,-38.5468,-32.464,-37.2513,-33.1256,-45.3599,-38.8269,-33.9817 v13.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-32.9234,-44.7861,-38.6445,-34.24,-35.1639,-32.0719,-40.8316,-38.6434,-32.5774,-37.2846,-33.278,-44.9435,-38.8612,-34.1066 -libaom-v3.12.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-1.8651,-10.0276,-19.6525,-3.5651,-8.8077,-4.5694,-6.0949,-8.4537,-5.3658,-7.6911,-1.5627,-10.1626,-20.3195,-2.8635 -libaom-v3.12.0-unconstrained,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-11.5031,-19.9753,-20.6175,-12.607,-8.961,-11.8003,-16.7899,-18.3373,-10.5803,-18.0741,-10.9337,-19.6293,-18.5994,-11.7512 +v14.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-32.8605,-44.7587,-38.5778,-34.1794,-35.1073,-32.0162,-40.7829,-38.5894,-32.5247,-37.227,-33.215,-44.9162,-38.7947,-34.0448 +v15.0.0,RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,-32.857,-44.7531,-38.6045,-34.1784,-35.1052,-32.0047,-40.7613,-38.5632,-32.5234,-37.2487,-33.2116,-44.9109,-38.8215,-34.0432 v02.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-0.3952,-19.683,-19.1528,-2.8693,-0.4222,-0.1129,-0.2456,-0.0849,-1.2988,-9.6706,-0.4477,-19.7069,-19.4566,-2.3206 v03.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-3.9729,-24.23,-27.3409,-6.8469,-3.7251,-1.9766,-2.5918,-3.5456,-4.5523,-13.9573,-3.9802,-24.3134,-28.1216,-6.1356 v04.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-17.2967,-38.2057,-41.2221,-20.3511,-15.2333,-15.0112,-16.2627,-18.1859,-16.8017,-28.6343,-16.953,-38.2944,-41.738,-19.2541 @@ -2169,8 +2167,8 @@ v10.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-26.1035,-50.7359,-48.60 v11.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-26.2205,-52.9795,-51.9399,-29.9249,-26.5417,-23.9137,-26.3302,-28.1107,-26.1622,-40.7613,-25.8215,-53.0685,-52.4848,-28.5468 v12.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-26.5089,-53.0732,-52.2448,-30.1972,-26.5018,-24.1129,-26.7995,-28.4923,-26.3163,-40.8705,-26.1031,-53.1525,-52.7797,-28.816 v13.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-26.7155,-53.1315,-52.4032,-30.3939,-24.2161,-24.3246,-26.7599,-28.6146,-26.5527,-41.2192,-26.3088,-53.2148,-52.9465,-29.0163 -libaom-v3.12.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-5.2165,16.6491,18.4539,-3.8212,-1.3877,-2.0809,-6.4268,-7.7904,-4.2562,3.853,-7.4744,15.8571,17.7683,-5.6108 -libaom-v3.12.0-unconstrained,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-9.8294,-6.4873,-5.9784,-9.5898,-14.7248,-12.8107,-13.6099,-13.7865,-12.6556,-8.937,-11.7459,-6.9502,-6.3353,-11.284 +v14.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-26.6022,-53.1236,-52.3886,-30.2965,-24.1081,-24.2059,-26.6059,-28.4561,-26.4564,-41.1471,-26.1937,-53.206,-52.9277,-28.9117 +v15.0.0,RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,-26.5998,-53.1264,-52.3209,-30.2893,-24.0927,-24.1899,-26.5925,-28.4528,-26.4469,-41.1377,-26.1902,-53.209,-52.8708,-28.9061 v02.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-2.6569,-9.9294,-17.5985,-3.5185,-2.0754,-2.3474,-2.2062,-2.2542,-2.4378,-5.1333,-2.7134,-10.1382,-17.9505,-3.6574 v03.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-10.8399,-19.5742,-26.5706,-11.781,-9.7457,-10.172,-18.5417,-17.4938,-9.7346,-14.0124,-10.581,-19.8156,-26.8523,-11.6569 v04.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-16.6323,-26.2791,-35.0259,-17.7336,-14.6679,-15.4333,-23.6979,-22.8527,-15.0014,-19.8285,-16.2597,-26.5481,-35.347,-17.5717 @@ -2183,8 +2181,8 @@ v10.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-24.455,-33.7325,-47.8042, v11.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-25.1282,-31.8927,-46.3702,-26.2541,-21.3906,-21.8959,-32.7745,-32.5884,-22.9189,-27.4845,-25.058,-32.2398,-46.7447,-26.3167 v12.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-25.1112,-32.0873,-46.2546,-26.2404,-21.343,-21.8513,-32.6013,-32.3684,-22.8002,-27.573,-25.0059,-32.4379,-46.612,-26.2721 v13.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-25.1497,-31.8764,-46.7271,-26.2894,-22.0614,-21.8524,-32.9318,-32.7638,-22.8234,-27.5386,-25.0367,-32.2178,-47.0846,-26.3135 -libaom-v3.12.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,3.1973,8.2861,15.4779,3.8809,4.0927,6.9893,3.8885,2.6364,2.6751,7.3519,2.8003,7.6199,15.178,3.4254 -libaom-v3.12.0-unconstrained,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-6.6199,11.0431,13.5404,-5.2079,-11.9473,-8.2892,-13.0243,-12.7287,-8.6895,-1.8057,-7.7662,10.702,13.3356,-6.4215 +v14.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-24.9729,-31.631,-46.4805,-26.1063,-21.9631,-21.6983,-32.6259,-32.4569,-22.6654,-27.3243,-24.8861,-31.9721,-46.8397,-26.1494 +v15.0.0,RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,-24.9594,-31.635,-46.4422,-26.0924,-21.9363,-21.6793,-32.642,-32.4617,-22.6552,-27.3147,-24.876,-31.9759,-46.8035,-26.1391 v02.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-2.2578,-22.2148,-19.4161,-3.9996,-2.1836,-2.2629,-2.0233,-1.8568,-2.522,-7.6634,-2.3736,-22.4154,-19.4846,-3.6018 v03.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-7.5637,-22.9282,-20.0736,-8.8587,-6.5718,-6.8878,-12.8035,-11.2226,-6.604,-12.1788,-7.6623,-23.1264,-20.1145,-8.6961 v04.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-11.2567,-40.5489,-32.9358,-13.7777,-9.8003,-10.707,-16.3822,-14.6563,-9.749,-20.4427,-11.326,-40.8191,-32.9787,-13.0991 @@ -2197,8 +2195,8 @@ v10.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-18.4205,-47.2855,-43.6559,-21.1 v11.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-18.3889,-44.0037,-39.984,-20.7741,-15.7135,-15.1504,-23.7549,-22.4976,-17.4176,-25.4648,-18.7559,-44.302,-40.0025,-20.4284 v12.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-18.6472,-44.6167,-40.4132,-21.0462,-15.7236,-15.2938,-24.0837,-22.7313,-17.6227,-25.764,-19.0103,-44.9136,-40.4325,-20.6758 v13.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-18.7892,-44.1961,-40.3777,-21.1572,-15.4196,-15.567,-24.2764,-22.9704,-17.7767,-25.7845,-19.156,-44.4999,-40.4082,-20.8099 -libaom-v3.12.0,RA,A2,CrowdRun_1920x1080p50.y4m,1.2965,-6.5946,-5.234,0.6676,1.9517,0.581,5.6818,5.1021,4.3186,-0.6406,1.1714,-7.2735,-5.7895,0.5599 -libaom-v3.12.0-unconstrained,RA,A2,CrowdRun_1920x1080p50.y4m,-9.0167,16.9679,19.2453,-6.9709,-12.6603,-10.525,-15.026,-14.5677,-6.6542,-0.0598,-11.2115,15.3306,17.7005,-8.7771 +v14.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-18.7339,-44.148,-40.2995,-21.1004,-15.3727,-15.5204,-24.1859,-22.8785,-17.7384,-25.7305,-19.0999,-44.4516,-40.3282,-20.7522 +v15.0.0,RA,A2,Boat_1920x1080_5994_10bit_420.y4m,-18.7132,-44.1247,-40.3931,-21.0862,-15.3478,-15.4966,-24.114,-22.8245,-17.7187,-25.6961,-19.0804,-44.4278,-40.4274,-20.7359 v02.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-1.4207,-5.0947,-6.9836,-1.8267,-1.5112,-1.4983,-2.0961,-2.001,-1.0782,-2.3928,-1.6043,-5.2381,-7.1357,-1.953 v03.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-8.389,-10.9141,-10.4334,-8.5864,-7.7944,-8.1601,-13.34,-12.2327,-6.8718,-9.9956,-8.6264,-11.0551,-10.5704,-8.8547 v04.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-12.8898,-19.4569,-19.8856,-13.4893,-11.9055,-12.363,-18.7154,-17.491,-10.9651,-16.0013,-13.1366,-19.6357,-20.0278,-13.7853 @@ -2211,8 +2209,8 @@ v10.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-20.2404,-26.7928,-26.4575,-20.8073,-16. v11.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-20.8254,-27.0997,-27.2548,-21.3928,-16.6258,-17.1349,-27.004,-25.6803,-19.109,-24.7316,-21.4287,-27.5237,-27.5548,-22.0862 v12.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-21.2225,-28.2395,-27.6822,-21.8237,-16.9351,-17.4858,-27.0825,-25.7966,-19.4909,-25.2258,-21.8334,-28.6954,-28.0013,-22.5102 v13.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-21.194,-27.9279,-27.559,-21.7794,-18.5348,-17.5384,-27.3732,-26.0229,-19.4796,-25.2741,-21.8021,-28.3811,-27.8749,-22.4634 -libaom-v3.12.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-19.1537,-28.1797,-31.4009,-20.5548,-24.6255,-21.369,-26.1809,-26.4336,-23.8176,-25.2035,-23.4443,-31.4283,-32.8226,-24.5794 -libaom-v3.12.0-unconstrained,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-21.436,-40.0253,-31.3464,-23.5048,-28.7768,-25.939,-30.5025,-30.4992,-29.3321,-33.4243,-24.1745,-42.6068,-32.0935,-26.4836 +v14.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-21.1478,-27.9232,-27.4599,-21.7324,-18.4498,-17.4563,-27.313,-25.96,-19.4321,-25.2361,-21.7559,-28.3793,-27.7795,-22.4167 +v15.0.0,RA,A2,CrowdRun_1920x1080p50.y4m,-21.1445,-27.9122,-27.5928,-21.7353,-18.4436,-17.4556,-27.3222,-25.9704,-19.4521,-25.2103,-21.7522,-28.3655,-27.9095,-22.4192 v02.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-1.6414,-6.7238,-11.9848,-2.5823,-0.5433,-1.3316,-2.6724,-2.5885,-1.7346,-2.191,-1.8376,-7.1242,-12.2195,-2.5305 v03.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-19.7079,-18.5799,-22.8174,-19.8751,-17.273,-18.3752,-31.0747,-27.8368,-17.9737,-17.1337,-20.4171,-19.2703,-23.1527,-20.3884 v04.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-24.7787,-25.327,-31.3253,-25.2495,-22.6666,-23.781,-39.586,-35.0415,-23.143,-22.7494,-25.5442,-25.9814,-31.6897,-25.7335 @@ -2225,8 +2223,8 @@ v10.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-37.2915,-41.97 v11.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-39.2196,-43.792,-44.2438,-39.7363,-38.1692,-38.0637,-52.7167,-49.3629,-38.6912,-38.0796,-40.368,-45.0371,-44.8039,-40.7776 v12.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-39.7195,-44.3029,-44.4429,-40.219,-38.3486,-38.3186,-53.0735,-49.8476,-39.1011,-39.6887,-40.872,-45.5289,-45.0006,-41.2684 v13.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-39.6556,-45.4598,-43.8669,-40.1863,-35.4136,-38.1956,-54.2121,-50.6404,-39.1435,-39.5006,-40.8273,-46.7585,-44.3821,-41.2954 -libaom-v3.12.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-6.4076,-9.0306,-6.8899,-6.5464,-8.6184,-8.9331,-4.4768,-4.9337,-6.4035,-8.3837,-7.0062,-9.5508,-7.312,-7.0985 -libaom-v3.12.0-unconstrained,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-13.1358,-10.4228,-12.0889,-12.9609,-16.799,-16.6057,-14.3929,-14.2227,-14.0206,-14.2536,-14.04,-10.8473,-12.3143,-13.8297 +v14.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-38.6189,-44.6267,-43.1553,-39.1859,-34.7353,-37.2388,-53.5878,-49.8925,-38.2507,-38.3085,-39.7727,-45.9213,-43.6695,-40.2685 +v15.0.0,RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,-38.607,-44.6089,-43.0205,-39.162,-34.7086,-37.2307,-53.5836,-49.8919,-38.2251,-38.1811,-39.7631,-45.9053,-43.5329,-40.2521 v02.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-2.0175,-9.0478,-7.8791,-2.6315,-2.2333,-2.4468,-2.2009,-2.232,-2.0397,-4.5258,-2.0558,-9.0794,-7.8066,-2.5163 v03.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-13.4874,-17.4517,-16.6222,-13.8288,-12.7509,-13.3692,-18.8265,-17.2453,-12.5634,-14.6133,-13.6292,-17.4914,-16.5659,-13.9225 v04.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-23.5753,-30.0915,-29.1696,-24.159,-22.6134,-23.5613,-30.6271,-28.4694,-22.0621,-25.9226,-23.7409,-30.235,-29.2094,-24.2243 @@ -2239,8 +2237,8 @@ v10.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-33.1511,-45.6534,-36.829, v11.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-34.3265,-46.6288,-37.3891,-35.0729,-31.9144,-32.5238,-41.1837,-39.5188,-32.7284,-37.9982,-34.6898,-46.8252,-37.5127,-35.302 v12.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-34.389,-46.6704,-36.6497,-35.0943,-31.6153,-32.3413,-41.0318,-39.4636,-32.6641,-37.7012,-34.7525,-46.9038,-36.7825,-35.341 v13.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-34.5413,-46.3217,-36.4857,-35.2108,-33.1086,-32.4869,-41.4658,-39.8051,-32.8142,-37.9644,-34.9054,-46.5358,-36.5915,-35.4713 -libaom-v3.12.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,3.0793,-3.9134,-8.3752,2.0332,2.5124,0.6612,9.7454,10.1094,3.487,-2.3718,4.0012,-2.8145,-8.3409,3.3897 -libaom-v3.12.0-unconstrained,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-8.6017,-5.605,-9.6065,-8.4931,-12.6692,-11.7452,-16.6012,-16.549,-9.6387,-10.4174,-10.9527,-8.1841,-10.7581,-10.8202 +v14.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-34.3731,-46.0447,-36.1151,-35.0272,-32.9514,-32.3483,-41.189,-39.5798,-32.6679,-37.7315,-34.7384,-46.2625,-36.2161,-35.294 +v15.0.0,RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,-34.3731,-46.0564,-36.1192,-35.0279,-32.9464,-32.3411,-41.1908,-39.5713,-32.6665,-37.7334,-34.7392,-46.2753,-36.2221,-35.2956 v02.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-2.4208,-4.1681,-3.5482,-2.5796,-1.5836,-1.8781,-2.7575,-2.6971,-1.9562,-3.2067,-2.4169,-4.3529,-3.1823,-2.5162 v03.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-8.7294,-13.0878,-6.3017,-8.8603,-7.169,-7.6774,-11.643,-11.1469,-7.7377,-10.5866,-8.6917,-13.5207,-6.3674,-8.8114 v04.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-15.8,-22.2272,-16.9939,-16.2454,-13.8037,-14.8213,-19.9804,-19.3332,-14.3692,-19.3817,-15.6401,-21.5668,-16.6458,-15.907 @@ -2253,8 +2251,8 @@ v10.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-24.6053,-38.6 v11.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-25.463,-40.37,-33.9854,-26.8715,-24.5512,-25.4172,-31.7365,-30.8957,-24.3506,-33.2812,-25.4347,-39.6385,-33.4921,-26.2069 v12.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-25.5071,-40.6166,-34.1675,-26.9346,-24.4169,-25.3281,-31.7859,-30.9773,-24.3547,-33.2451,-25.4914,-39.843,-33.7107,-26.2738 v13.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-25.5766,-40.3477,-33.6448,-26.9466,-26.8037,-25.4539,-31.9343,-31.0695,-24.4354,-33.2608,-25.5808,-39.7089,-33.267,-26.3405 -libaom-v3.12.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-1.0586,9.1694,10.1723,0.2435,-2.9019,-1.4588,-0.858,-0.7323,-2.0123,4.3091,-1.4194,8.8979,9.9467,-0.5538 -libaom-v3.12.0-unconstrained,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-12.2732,-18.9842,-20.2043,-13.2227,-12.4065,-12.2205,-14.1085,-14.4164,-12.8795,-16.2817,-12.6338,-19.0247,-20.254,-13.1453 +v14.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-25.538,-40.3609,-33.7376,-26.9192,-26.7708,-25.4308,-31.9822,-31.1039,-24.4065,-33.2454,-25.5423,-39.6832,-33.3616,-26.3072 +v15.0.0,RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,-25.5481,-40.3245,-33.6733,-26.9217,-26.7946,-25.4494,-31.982,-31.1018,-24.4151,-33.2368,-25.554,-39.6618,-33.2833,-26.3139 v02.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-3.9886,-16.3191,-14.4373,-5.4442,-3.505,-3.8405,-4.3061,-4.2927,-4.3788,-9.1984,-4.0097,-16.3684,-14.4186,-4.995 v03.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-17.7788,-28.5503,-28.9446,-19.2455,-15.0489,-16.2918,-25.0107,-22.6252,-16.5806,-23.0485,-17.8665,-28.5985,-28.9201,-18.8472 v04.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-22.3884,-38.5043,-38.7422,-24.6186,-19.2112,-20.7686,-30.0517,-27.272,-21.1174,-29.9612,-22.458,-38.5645,-38.7478,-23.9067 @@ -2267,8 +2265,8 @@ v10.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-34.2883,-49.7056,-48.1 v11.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-34.8141,-49.941,-46.7139,-36.6002,-31.4361,-32.4566,-40.231,-37.7296,-33.7896,-42.2383,-35.0453,-50.0159,-46.7553,-36.2358 v12.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-35.0188,-50.1797,-46.6162,-36.7993,-31.2535,-32.4539,-40.0754,-37.8559,-33.919,-42.2376,-35.2483,-50.2439,-46.6428,-36.4475 v13.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-35.3703,-50.0309,-45.5906,-36.9989,-35.62,-32.7121,-40.4792,-38.1788,-34.0749,-42.7074,-35.5948,-50.1023,-45.5831,-36.7123 -libaom-v3.12.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,3.6726,-4.6899,-6.7463,2.8786,4.9191,3.5268,12.5293,12.6872,5.601,1.3547,6.3191,-3.9321,-6.3348,5.8012 -libaom-v3.12.0-unconstrained,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-4.4695,-0.3404,-3.232,-4.2451,-10.189,-8.9559,-16.173,-15.5463,-6.4214,-6.48,-8.4498,-3.114,-5.4211,-8.1896 +v14.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-34.7512,-49.5033,-45.1114,-36.3967,-35.1228,-32.1741,-39.829,-37.5021,-33.5605,-42.1309,-34.9757,-49.574,-45.1036,-36.1004 +v15.0.0,RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,-34.7611,-49.5365,-45.0807,-36.403,-35.1546,-32.2003,-39.8078,-37.4894,-33.6016,-42.1595,-34.9859,-49.6078,-45.0728,-36.1107 v02.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-2.0743,-2.9425,-3.2027,-2.1603,-3.3867,-3.3212,-3.3471,-3.0081,-2.0869,-1.4636,-2.2673,-2.9424,-3.1909,-2.327 v03.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-7.0217,-9.2306,-4.4881,-7.0212,-7.9648,-8.1975,-10.6103,-9.7112,-6.3851,-7.3394,-7.2398,-9.3235,-4.4862,-7.3216 v04.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-10.0335,-17.1985,-14.3814,-10.5427,-11.6173,-11.8774,-16.1993,-14.9756,-9.6789,-12.5484,-10.3114,-17.3825,-14.3538,-10.7299 @@ -2281,8 +2279,8 @@ v10.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-17.2981,-29.9936,-30.6386,-18 v11.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-17.3843,-30.9002,-31.0104,-18.6242,-19.1472,-19.4557,-26.6645,-25.1536,-17.8009,-23.8865,-17.6485,-31.3843,-31.4883,-18.5116 v12.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-17.5202,-31.1606,-31.0035,-18.7626,-19.0623,-19.4637,-26.6931,-25.1887,-17.881,-23.9685,-17.7875,-31.7166,-31.4734,-18.6527 v13.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-17.5058,-30.6588,-30.4058,-18.692,-20.6033,-19.5401,-26.7404,-25.223,-17.9044,-23.8184,-17.7671,-31.1833,-30.8875,-18.6086 -libaom-v3.12.0,RA,A2,OldTownCross_1920x1080p50.y4m,-10.8995,14.3898,12.1682,-8.8889,-12.7735,-10.4887,-10.1663,-12.4851,-8.9964,4.9702,-12.2465,12.7894,11.4421,-9.6261 -libaom-v3.12.0-unconstrained,RA,A2,OldTownCross_1920x1080p50.y4m,-19.7034,-16.1126,-19.5721,-19.5299,-17.2671,-17.7401,-18.5127,-19.8701,-18.0448,-14.2714,-21.1058,-17.0312,-19.8625,-20.6511 +v14.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-17.4929,-30.6332,-30.3995,-18.6787,-20.5932,-19.5267,-26.7166,-25.1982,-17.8903,-23.8081,-17.7553,-31.1623,-30.8801,-18.5962 +v15.0.0,RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,-17.4885,-30.664,-30.7284,-18.6903,-20.5656,-19.4867,-26.7329,-25.1948,-17.8841,-23.8395,-17.7504,-31.1929,-31.2048,-18.5965 v02.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-1.5543,-26.4103,-20.6129,-3.3638,-1.3858,-1.8718,-1.4062,-1.5527,-0.5101,-8.655,-1.6883,-27.1039,-20.857,-3.4009 v03.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-11.8905,-32.7835,-25.056,-13.2835,-10.8622,-12.1947,-15.6619,-14.7741,-9.5757,-17.8314,-12.1514,-33.6176,-25.3291,-13.5332 v04.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-18.2553,-41.2048,-33.0216,-19.8088,-16.7933,-18.3122,-21.9211,-21.232,-15.6613,-25.3073,-18.56,-42.0892,-33.3016,-20.1577 @@ -2295,8 +2293,8 @@ v10.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-29.9399,-53.4363,-46.5697,-31.6272, v11.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-30.9109,-53.8454,-46.7666,-32.5376,-28.0758,-29.0452,-31.5479,-32.0287,-29.5608,-41.9119,-31.342,-54.715,-47.0122,-33.0 v12.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-31.3135,-53.439,-46.1745,-32.852,-28.6418,-29.5777,-32.7078,-33.0565,-29.8418,-42.0843,-31.752,-54.314,-46.4197,-33.3308 v13.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-31.2992,-53.1328,-46.1191,-32.824,-30.3738,-29.6147,-32.0981,-32.5462,-29.9021,-42.0544,-31.7352,-53.9924,-46.3618,-33.3 -libaom-v3.12.0,RA,A2,PedestrianArea_1920x1080p25.y4m,2.667,-4.609,-0.4424,2.0574,0.3389,0.0242,0.8801,0.7115,2.3604,4.5885,3.146,-4.893,-0.7258,2.4961 -libaom-v3.12.0-unconstrained,RA,A2,PedestrianArea_1920x1080p25.y4m,-8.4842,-10.3695,-2.4676,-8.2387,-8.9564,-11.1338,-8.6673,-8.6175,-6.1761,-4.943,-8.9492,-10.6927,-2.9923,-8.7011 +v14.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-30.9971,-52.8845,-45.8264,-32.5239,-30.0486,-29.2575,-31.7552,-32.201,-29.6027,-41.7664,-31.4307,-53.7434,-46.0679,-32.9936 +v15.0.0,RA,A2,OldTownCross_1920x1080p50.y4m,-31.0078,-52.9192,-45.8228,-32.5347,-30.0688,-29.2672,-31.7387,-32.1839,-29.6148,-41.7602,-31.4415,-53.7782,-46.0643,-33.0049 v02.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-2.4812,-6.6029,-2.7222,-2.6979,-0.8208,-2.3624,-1.894,-1.5782,0.0813,-2.9047,-2.0915,-6.5133,-2.5655,-2.3215 v03.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-7.9014,-11.1576,-6.914,-8.0115,-6.9791,-7.714,-8.2265,-7.7613,-6.3265,-5.6976,-8.0276,-11.2396,-6.9799,-8.157 v04.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-13.2878,-23.4422,-18.4385,-14.1023,-12.4348,-13.4295,-15.1253,-14.2743,-11.9202,-13.9205,-13.4058,-23.54,-18.4939,-14.1921 @@ -2309,8 +2307,8 @@ v10.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-22.1225,-34.5293,-28.0996,-23.125 v11.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-22.5622,-35.4403,-28.8547,-23.6094,-20.9481,-21.7233,-25.1995,-24.2487,-22.0376,-28.1835,-22.7306,-35.5569,-28.9944,-23.7571 v12.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-22.5611,-35.9922,-29.5186,-23.6823,-20.7353,-21.6142,-25.7328,-24.7006,-22.0455,-28.1057,-22.7226,-36.1305,-29.6591,-23.8121 v13.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-22.693,-36.0741,-29.1228,-23.7795,-24.3441,-21.7248,-25.1979,-24.2364,-22.1122,-28.2291,-22.8649,-36.2226,-29.2729,-23.9268 -libaom-v3.12.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,1.554,-8.1125,-6.8593,0.6213,-1.3022,-1.4486,3.4474,2.9393,0.9699,-4.6971,2.3311,-8.0956,-6.7263,1.4374 -libaom-v3.12.0-unconstrained,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-4.8717,-2.845,-4.5446,-4.7744,-5.7113,-6.1584,-6.0037,-6.2793,-4.8906,-6.6734,-5.6785,-3.6719,-5.7845,-5.4883 +v14.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-22.5612,-35.965,-29.0063,-23.6497,-24.2299,-21.6051,-25.0469,-24.0879,-22.001,-28.1006,-22.7331,-36.1136,-29.1566,-23.7966 +v15.0.0,RA,A2,PedestrianArea_1920x1080p25.y4m,-22.5665,-35.9385,-28.981,-23.6513,-24.2329,-21.6064,-25.0759,-24.1025,-22.0013,-28.0776,-22.7384,-36.0865,-29.127,-23.7979 v02.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-2.1961,-12.4353,-7.3216,-2.9332,-1.9045,-1.9737,-1.9487,-1.9846,-2.3959,-6.4228,-2.1821,-12.4883,-7.5516,-2.8484 v03.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-10.9562,-16.7518,-14.1506,-11.3824,-10.1594,-10.4737,-12.2651,-11.7499,-10.3212,-13.9834,-10.962,-16.8596,-14.628,-11.4319 v04.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-18.3272,-26.9627,-23.2818,-18.9854,-18.6983,-18.8771,-21.3341,-20.4311,-17.7855,-22.3307,-18.3578,-27.0557,-23.4493,-19.0594 @@ -2323,8 +2321,8 @@ v10.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-27.613,-39.8153,-35.365, v11.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-27.9977,-41.9829,-36.1627,-29.1122,-27.8768,-28.0981,-32.8779,-31.8061,-27.3514,-33.8254,-28.2826,-42.4846,-36.7869,-29.3807 v12.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-28.1208,-41.7632,-35.8467,-29.2074,-27.86,-28.1009,-33.3151,-32.117,-27.4368,-33.4225,-28.3989,-42.3154,-36.3743,-29.4615 v13.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-28.0467,-41.6047,-35.6343,-29.1093,-29.7413,-28.0278,-33.3682,-32.1026,-27.3256,-33.5487,-28.3317,-42.1669,-36.2368,-29.3805 -libaom-v3.12.0,RA,A2,Riverbed_1920x1080p25.y4m,7.8371,-5.1729,-7.0544,6.9267,6.4578,6.1696,11.7234,10.4561,6.4167,7.6419,10.1598,-4.9792,-7.3214,9.5986 -libaom-v3.12.0-unconstrained,RA,A2,Riverbed_1920x1080p25.y4m,-4.0233,0.3496,7.4683,-3.5778,-5.4182,-4.8998,-5.4567,-6.5541,-3.7325,0.2213,-6.7185,-1.7947,5.1232,-6.2965 +v14.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-27.9956,-42.0155,-35.8813,-29.0997,-29.7364,-28.0417,-33.3657,-32.0702,-27.3032,-33.493,-28.2839,-42.5241,-36.4294,-29.3559 +v15.0.0,RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,-28.0006,-41.957,-35.8897,-29.1011,-29.737,-28.038,-33.4054,-32.0892,-27.2987,-33.4571,-28.2887,-42.4746,-36.4491,-29.3573 v02.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-3.3113,-3.598,-23.1079,-3.8842,-3.1197,-3.425,-4.1754,-3.8115,-3.214,-2.3646,-3.2126,-3.1316,-23.2406,-3.6323 v03.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-6.7742,-13.1826,-11.865,-7.1034,-5.2262,-6.0777,-5.5299,-5.2593,-5.943,-8.7198,-6.9612,-13.3792,-11.975,-7.5006 v04.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-9.0172,-22.9178,-30.7778,-10.1117,-7.3622,-8.5073,-8.0085,-7.4683,-8.3442,-12.9969,-9.2516,-23.1575,-30.821,-10.3792 @@ -2337,8 +2335,8 @@ v10.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-16.4611,-40.7139,-59.4745,-18.8626,-14. v11.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-16.3857,-40.15,-59.6743,-18.7987,-14.4336,-15.4555,-18.147,-17.5975,-16.2372,-23.0393,-16.4107,-40.8175,-60.3927,-18.1842 v12.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-16.2512,-40.588,-58.0493,-18.636,-14.2034,-15.2842,-17.9324,-17.4021,-16.0694,-23.155,-16.2658,-41.267,-58.748,-18.0384 v13.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-16.4261,-39.8771,-57.9418,-18.7579,-17.996,-15.4951,-18.5142,-17.8468,-16.2227,-23.0102,-16.4438,-40.5259,-58.6246,-18.1917 -libaom-v3.12.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,1.8825,-7.6838,-6.119,1.069,3.8407,3.2922,2.0151,1.8066,3.7158,0.4664,1.6438,-8.5909,-7.0427,0.9833 -libaom-v3.12.0-unconstrained,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-8.0465,7.3418,10.5617,-6.6059,-5.3942,-5.257,-12.0052,-12.0199,-6.1826,-0.397,-10.1347,5.9694,9.4115,-8.9543 +v14.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-16.3975,-39.863,-57.9298,-18.7305,-17.9755,-15.4702,-18.4855,-17.8189,-16.1996,-22.9829,-16.4155,-40.5119,-58.6127,-18.1634 +v15.0.0,RA,A2,Riverbed_1920x1080p25.y4m,-16.3935,-39.8398,-57.9047,-18.7238,-17.9676,-15.4623,-18.4635,-17.7976,-16.1924,-22.9661,-16.4114,-40.488,-58.5871,-18.1566 v02.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-1.6824,-8.1488,-9.3031,-2.3715,-1.7545,-1.8316,-1.7239,-1.7602,-1.1189,-2.5767,-1.8928,-8.4227,-9.5393,-2.2495 v03.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-9.1693,-12.2023,-12.8052,-9.4972,-7.7952,-8.4854,-13.8097,-12.5509,-7.5207,-9.6051,-9.4156,-12.4646,-13.0193,-9.5967 v04.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-12.8162,-22.3456,-20.7487,-13.6586,-11.8831,-12.5047,-17.9554,-16.7147,-11.2905,-15.5982,-13.0485,-22.6912,-21.0203,-13.5835 @@ -2351,8 +2349,8 @@ v10.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-19.6621,-30.5219,-24.29,-20.4201 v11.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-20.0747,-31.2023,-25.2462,-20.8665,-18.4571,-18.8088,-25.2175,-24.2519,-18.9878,-26.2089,-20.6016,-31.5608,-25.5477,-21.1642 v12.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-20.415,-31.9037,-25.0864,-21.2023,-18.5885,-18.9989,-25.4508,-24.5049,-19.2878,-26.6517,-20.9423,-32.2656,-25.3891,-21.5113 v13.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-20.2785,-32.0842,-24.1908,-21.0491,-19.4273,-18.9735,-25.2,-24.3366,-19.1951,-26.5909,-20.8052,-32.4476,-24.4816,-21.3681 -libaom-v3.12.0,RA,A2,Skater227_1920x1080_30fps.y4m,6.5574,-9.0216,-12.3056,4.301,2.1146,2.6684,7.0904,7.1668,4.6956,-3.9373,6.8306,-9.1548,-11.844,5.4325 -libaom-v3.12.0-unconstrained,RA,A2,Skater227_1920x1080_30fps.y4m,-3.5788,3.866,3.7799,-2.671,-3.1823,-2.8637,-3.7797,-4.2391,-3.0174,-0.4538,-4.3666,2.515,3.8876,-3.7188 +v14.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-20.2507,-32.0228,-24.1188,-21.0176,-19.407,-18.9366,-25.1797,-24.3113,-19.1616,-26.5087,-20.7777,-32.3864,-24.4086,-21.3379 +v15.0.0,RA,A2,RushFieldCuts_1920x1080_2997.y4m,-20.2082,-32.108,-24.1832,-20.9866,-19.3502,-18.8791,-25.1071,-24.2181,-19.1067,-26.5477,-20.7341,-32.468,-24.4796,-21.3024 v02.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-4.459,-7.5022,-10.9988,-5.0573,-4.702,-4.7575,-6.9155,-6.2444,-4.5339,-7.2563,-4.7294,-8.2464,-11.5392,-5.1093 v03.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-12.5396,-9.9844,-12.2342,-12.3824,-12.4357,-12.6771,-12.4274,-12.4222,-12.304,-11.3888,-12.6569,-10.1753,-11.9824,-12.5332 v04.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-18.5155,-22.7262,-23.6773,-19.123,-18.1818,-18.4481,-20.5564,-20.0802,-18.561,-19.1363,-18.5879,-23.0278,-23.5599,-18.9922 @@ -2365,8 +2363,8 @@ v10.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-31.2321,-35.3124,-36.4025,-31.8337, v11.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-31.6042,-38.8361,-38.7172,-32.5522,-31.3564,-31.7571,-34.752,-34.172,-31.7656,-35.588,-31.6706,-39.5762,-39.0362,-32.332 v12.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-31.7462,-38.8631,-37.5266,-32.5955,-31.3239,-31.7691,-34.7187,-34.2449,-31.803,-35.3766,-31.7943,-39.5717,-37.9027,-32.4003 v13.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-31.7839,-37.88,-37.4075,-32.5501,-37.8295,-31.9419,-34.9201,-34.4346,-31.8261,-34.7503,-31.8057,-38.6849,-37.905,-32.3674 -libaom-v3.12.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,5.758,-21.8486,-16.3312,4.1097,4.2682,2.9806,15.1471,13.5246,6.1364,-0.6176,8.1894,-21.8924,-16.247,7.7877 -libaom-v3.12.0-unconstrained,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-6.574,-0.2718,-0.0342,-6.3364,-8.4376,-7.0083,-12.826,-13.352,-7.2265,-6.1452,-10.3198,-1.4788,-2.1352,-10.0971 +v14.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-31.5099,-37.7933,-37.4352,-32.3095,-37.5704,-31.6578,-34.6108,-34.1154,-31.5791,-34.5676,-31.5331,-38.5824,-37.9531,-32.1156 +v15.0.0,RA,A2,Skater227_1920x1080_30fps.y4m,-31.5228,-37.7156,-37.5739,-32.3245,-37.5702,-31.6426,-34.6896,-34.2097,-31.5902,-34.5111,-31.5638,-38.5006,-38.1173,-32.146 v02.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-1.9084,-17.6557,-38.7968,-3.6333,-2.3022,-2.2669,-2.8374,-2.6715,-2.0994,-7.1291,-2.0491,-17.4751,-39.4343,-2.7949 v03.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-5.281,-21.3569,-47.9532,-7.1598,-4.5727,-4.6984,-6.6671,-6.1623,-4.7147,-13.32,-5.4608,-21.0869,-48.6382,-6.3393 v04.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-7.2715,-28.625,-51.4221,-9.4713,-6.3911,-6.74,-9.1615,-8.3798,-6.4682,-16.972,-7.4521,-28.3131,-52.0294,-8.4733 @@ -2379,8 +2377,8 @@ v10.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-1 v11.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-14.0718,-52.6766,-70.5826,-18.1,-12.3238,-12.7615,-19.7542,-18.6845,-13.6781,-28.3026,-14.2259,-52.6246,-70.7515,-16.1217 v12.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-14.1346,-51.5155,-70.6209,-18.1211,-12.2972,-12.7554,-20.3695,-19.0516,-13.7282,-28.252,-14.2831,-51.4454,-70.826,-16.1772 v13.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-14.0999,-52.3448,-69.5356,-18.059,-13.7409,-12.8387,-20.3961,-19.1381,-13.7503,-27.855,-14.2539,-52.3325,-69.6038,-16.1335 -libaom-v3.12.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-1.1203,-9.1905,-11.2619,-1.8305,-2.8376,-3.69,-7.808,-7.1928,0.2157,-2.6118,-0.4652,-7.9854,-11.1091,-0.7742 -libaom-v3.12.0-unconstrained,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-12.3049,6.4647,-1.0438,-11.1062,-16.2225,-15.6542,-34.3455,-33.1888,-13.2931,-10.7985,-14.6976,8.6816,-0.8111,-13.8911 +v14.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-14.071,-52.0297,-69.2589,-17.9889,-13.7292,-12.7995,-20.3228,-19.0636,-13.6947,-27.7384,-14.2247,-52.0102,-69.3117,-16.0847 +v15.0.0,RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,-14.0748,-52.0303,-69.2495,-17.9893,-13.7454,-12.8099,-20.3062,-19.059,-13.6963,-27.7505,-14.2334,-52.0108,-69.3033,-16.0912 v02.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,0.9238,-7.7584,-12.786,-0.0234,0.2708,-0.1393,-3.0622,-2.7683,0.5033,-0.0849,0.8345,-8.2297,-12.8911,0.5704 v03.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-6.0912,-17.5975,-15.1233,-7.0075,-5.2865,-5.2515,-11.6052,-11.1436,-5.3353,-6.9637,-6.5318,-18.4075,-15.0234,-6.9172 v04.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-18.1586,-31.1932,-34.4585,-19.4889,-17.9638,-18.4307,-26.9863,-26.2987,-17.5603,-20.0987,-18.9501,-32.1877,-34.9979,-19.5005 @@ -2393,8 +2391,8 @@ v10.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-25.9591,-41.843,-46.5012,- v11.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-28.1496,-44.2734,-49.0362,-29.9463,-29.1115,-28.8882,-39.0661,-38.6857,-29.5216,-31.5206,-29.085,-45.1363,-49.9101,-29.7671 v12.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-28.0043,-43.7924,-48.7688,-29.7839,-28.7719,-28.4646,-38.8192,-38.472,-29.2591,-31.2658,-28.9474,-44.6688,-49.6186,-29.62 v13.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-28.1319,-44.0093,-48.4825,-29.8918,-27.9727,-28.535,-38.8719,-38.5141,-29.3755,-31.3541,-29.0749,-44.8767,-49.3059,-29.7489 -libaom-v3.12.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,1.7497,1.7467,0.3313,1.7179,2.9185,1.9101,21.6679,13.7462,3.809,1.7243,1.7296,1.4374,0.1102,1.7575 -libaom-v3.12.0-unconstrained,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-4.9715,25.1511,22.2367,-2.5563,-3.864,-3.3857,2.2526,-4.3102,-3.1944,4.47,-6.2546,24.8366,22.1376,-4.5371 +v14.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-28.141,-43.9348,-48.5052,-29.8933,-27.9603,-28.5762,-38.9769,-38.5932,-29.3983,-31.3492,-29.0874,-44.8086,-49.3294,-29.7584 +v15.0.0,RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,-28.1505,-43.9368,-48.5289,-29.9035,-27.9669,-28.5686,-38.9588,-38.5855,-29.3879,-31.3668,-29.0984,-44.8022,-49.3507,-29.7692 v02.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-3.675,-23.1757,-27.8916,-5.8964,-2.7386,-3.4698,-4.8268,-5.5503,-3.4819,-9.1551,-3.7226,-23.182,-27.7836,-4.7466 v03.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-22.5109,-34.0413,-38.349,-23.8651,-19.4248,-20.7986,-29.8843,-29.3172,-20.1247,-25.8567,-22.7293,-34.0828,-38.3018,-23.3861 v04.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-32.7811,-43.7315,-63.1658,-34.9832,-29.6147,-31.788,-40.9853,-39.6813,-30.2542,-36.2766,-33.0491,-43.7785,-63.1303,-33.9272 @@ -2407,8 +2405,8 @@ v10.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-44.5135,-70.2133,-75.7771 v11.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-43.9925,-69.371,-74.7591,-47.2122,-40.2609,-42.1514,-53.1234,-51.9636,-41.3527,-52.9267,-44.417,-69.3968,-74.7448,-45.8612 v12.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-44.2411,-69.6789,-74.5434,-47.436,-40.1337,-41.9693,-53.4907,-52.3394,-41.4889,-53.2534,-44.6661,-69.7185,-74.5066,-46.0999 v13.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-44.2809,-69.6336,-74.9402,-47.4923,-44.4688,-42.0957,-53.4423,-52.3218,-41.5587,-53.2131,-44.7057,-69.665,-74.9249,-46.1441 -libaom-v3.12.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,0.7459,1.8871,5.8908,1.0529,0.1296,0.3831,-5.1234,-4.8327,3.187,6.9546,0.4791,1.321,5.2968,0.7944 -libaom-v3.12.0-unconstrained,RA,A2,Vertical_bees_1080x1920_2997.y4m,-5.8481,-2.903,2.223,-5.2686,-7.7239,-7.3687,-13.1043,-12.152,-3.3384,-1.0314,-6.4151,-3.1504,2.0012,-5.7315 +v14.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-44.2446,-69.6484,-74.9226,-47.4606,-44.4403,-42.0528,-53.3412,-52.2458,-41.53,-53.186,-44.6677,-69.6807,-74.9069,-46.1085 +v15.0.0,RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,-44.25,-69.6374,-74.9253,-47.4643,-44.4445,-42.0651,-53.341,-52.2457,-41.5374,-53.1915,-44.6745,-69.6686,-74.9102,-46.1138 v02.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-1.6381,-3.7765,-1.6069,-1.7563,-0.9756,-1.6948,-1.8327,-1.9403,-0.0156,1.3238,-1.6672,-3.9136,-1.6724,-1.7966 v03.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-6.8264,-6.9721,-3.5419,-6.6552,-7.1636,-7.6785,-10.561,-9.0386,-4.7811,-3.4827,-6.8719,-7.163,-3.4979,-6.707 v04.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-12.8471,-12.6324,-12.9796,-12.838,-12.2158,-13.0922,-16.4435,-14.8783,-10.3226,-9.9401,-12.9128,-12.8377,-12.9889,-12.8765 @@ -2421,8 +2419,8 @@ v10.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-23.0034,-20.5246,-22.1234,-22.81 v11.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-23.3998,-20.1479,-21.7397,-23.1272,-21.8204,-22.0458,-25.2115,-24.4718,-21.5322,-22.4057,-23.6105,-20.4154,-22.0773,-23.2835 v12.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-23.5127,-20.3676,-22.015,-23.2524,-21.7656,-22.0825,-25.0387,-24.4306,-21.6248,-22.4543,-23.7162,-20.6414,-22.3264,-23.4029 v13.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-23.5603,-20.8684,-21.7022,-23.3059,-22.4998,-21.9784,-25.2301,-24.5499,-21.6458,-22.6002,-23.7666,-21.1448,-22.0513,-23.4694 -libaom-v3.12.0,RA,A2,WorldCup_1920x1080_30p.y4m,2.0668,-3.4122,-1.8706,1.5078,-2.143,-2.6091,1.4001,1.09,2.101,7.4961,2.821,-3.7572,-1.9466,2.5483 -libaom-v3.12.0-unconstrained,RA,A2,WorldCup_1920x1080_30p.y4m,-3.9213,5.4695,5.9635,-3.0218,-6.7663,-6.7127,-6.895,-6.8591,-3.3316,4.3418,-4.6253,4.9462,5.6091,-3.8392 +v14.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-23.3993,-20.9308,-21.6741,-23.1651,-22.3549,-21.8051,-25.0462,-24.3348,-21.512,-22.5666,-23.603,-21.2127,-22.0272,-23.331 +v15.0.0,RA,A2,Vertical_bees_1080x1920_2997.y4m,-23.4002,-20.9074,-21.6661,-23.1641,-22.3478,-21.7864,-25.0573,-24.3422,-21.4862,-22.5387,-23.6052,-21.1906,-22.0204,-23.3307 v02.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-1.2476,0.2924,-0.3193,-1.124,-2.0367,-2.1703,-2.1256,-2.1237,-0.5539,3.5745,-1.3076,0.3691,-0.2794,-1.1012 v03.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-10.6687,-6.6887,-6.3393,-10.263,-10.8042,-11.2772,-12.455,-11.7503,-9.3552,-5.8728,-10.8141,-6.7483,-6.2851,-10.4434 v04.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-17.6069,-17.8218,-17.2405,-17.5843,-16.8886,-17.4973,-21.1999,-19.7515,-16.2062,-13.3816,-17.7726,-17.8381,-17.2489,-17.6882 @@ -2435,8 +2433,8 @@ v10.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-28.523,-34.6718,-31.7888,-29.0045,-25. v11.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-29.0172,-36.4898,-32.5095,-29.5793,-26.0751,-26.9251,-32.4548,-30.7537,-27.7428,-31.4435,-29.294,-36.7032,-32.7038,-29.6567 v12.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-29.186,-37.0136,-33.5733,-29.8125,-26.0556,-26.9316,-32.5245,-30.9585,-27.9077,-31.9474,-29.4589,-37.2498,-33.7665,-29.8622 v13.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-29.1448,-36.3005,-32.8458,-29.7007,-30.6738,-26.8703,-32.4701,-30.8224,-27.8099,-31.311,-29.417,-36.4874,-33.0449,-29.7754 -libaom-v3.12.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,1.0838,4.3524,5.9049,1.4762,0.6495,1.5192,4.0943,4.0734,0.4819,2.7874,-0.8006,3.9183,6.2443,-0.2605 -libaom-v3.12.0-unconstrained,RA,A3,ControlledBurn_1280x720p30_420.y4m,-10.0816,-3.9854,-0.386,-9.2601,-5.8616,-6.0014,-2.9115,-3.0743,-7.9441,-8.0228,-14.5821,-2.8462,2.7696,-13.334 +v14.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-29.0774,-36.3733,-32.4579,-29.6242,-30.6605,-26.8821,-32.5063,-30.8159,-27.764,-31.3122,-29.3476,-36.5637,-32.6318,-29.6993 +v15.0.0,RA,A2,WorldCup_1920x1080_30p.y4m,-29.0263,-36.1208,-32.3824,-29.5613,-30.5638,-26.7236,-32.507,-30.8282,-27.7052,-31.3247,-29.3004,-36.312,-32.5741,-29.6465 v02.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-1.5533,-8.9088,-8.0771,-2.3172,-1.7467,-1.7659,-2.0913,-2.065,-2.0954,-3.9846,-1.4879,-7.8713,-5.9907,-1.8613 v03.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-5.4472,-13.8475,-12.2956,-6.2881,-6.1153,-5.9157,-5.1281,-5.1228,-5.8766,-7.893,-5.1235,-13.0814,-10.1375,-5.5612 v04.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-9.7974,-26.0014,-20.2081,-11.306,-10.1379,-10.0386,-9.2604,-9.3474,-10.0307,-14.0664,-9.2792,-25.5469,-18.7232,-10.1844 @@ -2449,8 +2447,8 @@ v10.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-16.6542,-38.3509,-32.6904,-18. v11.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-17.3789,-39.4074,-33.7244,-19.6886,-17.7686,-17.566,-19.9155,-19.8264,-18.3297,-23.3569,-16.3351,-39.9403,-33.5412,-17.7941 v12.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-17.3988,-39.7449,-34.352,-19.7773,-17.7499,-17.5669,-19.7618,-19.7852,-18.4633,-23.761,-16.3919,-40.2337,-34.3132,-17.8902 v13.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-17.4703,-39.3596,-33.6758,-19.7542,-16.9881,-17.632,-19.6391,-19.5815,-18.4359,-23.6,-16.4915,-39.8652,-33.5274,-17.9346 -libaom-v3.12.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-1.0751,6.0528,9.159,-0.4397,-1.5039,-0.8241,-2.8631,-3.8765,-0.8999,2.3357,-1.9562,4.9044,8.4095,-1.3724 -libaom-v3.12.0-unconstrained,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-4.7655,9.0706,10.8916,-3.6869,-7.6069,-5.7965,-13.7798,-13.7634,-6.9525,-1.3265,-6.0789,8.2277,10.3896,-5.0268 +v14.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-17.3193,-39.2999,-33.5066,-19.6094,-16.8343,-17.4869,-19.4411,-19.4264,-18.3165,-23.4528,-16.3329,-39.8177,-33.3558,-17.7781 +v15.0.0,RA,A3,ControlledBurn_1280x720p30_420.y4m,-17.3194,-39.298,-33.4773,-19.6074,-16.8227,-17.4841,-19.41,-19.4054,-18.3151,-23.4346,-16.3354,-39.8179,-33.3354,-17.7791 v02.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-2.4671,-11.2192,-23.1489,-3.6821,-3.2441,-3.3303,-2.8955,-2.9773,-3.1078,-6.9491,-2.5527,-11.2353,-23.1529,-3.2735 v03.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-13.5867,-21.8927,-31.544,-14.6739,-14.3283,-14.5957,-21.4231,-20.3677,-13.3093,-18.8502,-13.6604,-21.9551,-31.5413,-14.4076 v04.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-21.5758,-32.6938,-43.7458,-22.9949,-22.9121,-23.3138,-30.5585,-29.2828,-21.2257,-28.1756,-21.6776,-32.7552,-43.7577,-22.6602 @@ -2463,8 +2461,8 @@ v10.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-31.5915,-38.6678,-50.5747 v11.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-31.5766,-36.9843,-49.9359,-32.5564,-31.5476,-31.5718,-40.5738,-39.8439,-31.2115,-36.4823,-31.9133,-37.2293,-49.9628,-32.6014 v12.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-31.9444,-37.7126,-50.4555,-32.9469,-31.769,-31.8178,-40.9425,-40.1872,-31.6099,-36.7215,-32.2845,-37.9456,-50.4872,-32.9803 v13.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-31.99,-37.3838,-49.5006,-32.9346,-31.2367,-31.8705,-40.8645,-40.2159,-31.6871,-36.6048,-32.3403,-37.6018,-49.5333,-33.0117 -libaom-v3.12.0,RA,A3,Johnny_1280x720_60.y4m,-1.0236,11.9542,11.0915,0.3634,-4.0386,-3.6914,-0.0438,-0.9427,-2.7856,4.2074,-1.396,11.8015,10.8942,-0.1652 -libaom-v3.12.0-unconstrained,RA,A3,Johnny_1280x720_60.y4m,-9.919,-9.002,-9.1233,-9.8333,-11.201,-10.6507,-6.3448,-7.9485,-9.4756,-10.1854,-10.1711,-9.0533,-9.2072,-10.0769 +v14.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-31.8014,-37.422,-49.3927,-32.7604,-31.0819,-31.6703,-40.5929,-39.9344,-31.5199,-36.4922,-32.1512,-37.6482,-49.4286,-32.8288 +v15.0.0,RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,-31.7931,-37.279,-49.2684,-32.7404,-31.0951,-31.7065,-40.608,-39.9356,-31.5514,-36.4239,-32.1407,-37.5019,-49.3009,-32.8102 v02.0.0,RA,A3,Johnny_1280x720_60.y4m,-1.3803,-11.1166,-8.8961,-2.4074,-1.3251,-1.2859,-0.1363,-0.2275,-1.6636,-6.001,-1.4056,-11.0897,-8.9134,-2.209 v03.0.0,RA,A3,Johnny_1280x720_60.y4m,-11.8899,-16.0091,-15.4057,-12.3468,-10.7913,-11.073,-16.3388,-14.4446,-11.4195,-13.668,-11.9447,-16.0336,-15.4281,-12.3086 v04.0.0,RA,A3,Johnny_1280x720_60.y4m,-18.9553,-25.3734,-24.8805,-19.6994,-17.3506,-18.1119,-23.1148,-20.9877,-17.8998,-21.4951,-19.0139,-25.3984,-24.8607,-19.6041 @@ -2477,8 +2475,8 @@ v10.0.0,RA,A3,Johnny_1280x720_60.y4m,-30.6204,-35.2724,-34.4977,-31.1294,-28.973 v11.0.0,RA,A3,Johnny_1280x720_60.y4m,-30.9512,-34.5547,-32.9096,-31.2859,-29.1284,-29.6015,-34.7893,-32.8655,-29.4454,-32.5939,-31.066,-34.5699,-32.9162,-31.334 v12.0.0,RA,A3,Johnny_1280x720_60.y4m,-31.468,-35.0239,-34.0497,-31.8386,-29.8045,-30.0588,-35.8309,-33.8903,-29.9068,-32.953,-31.5766,-35.0429,-34.064,-31.8708 v13.0.0,RA,A3,Johnny_1280x720_60.y4m,-31.6023,-34.952,-33.1996,-31.8932,-31.7539,-30.3587,-35.7705,-33.9244,-29.985,-32.5284,-31.7138,-34.9719,-33.223,-31.9476 -libaom-v3.12.0,RA,A3,KristenAndSara_1280x720_60.y4m,0.6983,10.7065,11.3838,1.7519,-8.5998,-7.6033,-1.0892,-0.5539,-4.8922,3.4368,0.3469,10.525,11.2492,1.4266 -libaom-v3.12.0-unconstrained,RA,A3,KristenAndSara_1280x720_60.y4m,-9.8745,-8.9624,-8.3004,-9.7387,-8.9121,-8.6376,-10.6974,-10.8624,-8.7414,-9.8768,-10.2024,-9.0425,-8.3539,-10.0434 +v14.0.0,RA,A3,Johnny_1280x720_60.y4m,-30.7876,-33.9901,-32.3215,-31.0656,-31.0561,-29.6306,-34.6388,-32.8364,-29.1476,-31.6502,-30.8989,-34.0071,-32.3457,-31.1213 +v15.0.0,RA,A3,Johnny_1280x720_60.y4m,-30.7665,-34.0787,-32.3701,-31.0557,-31.0291,-29.6372,-34.646,-32.8474,-29.1508,-31.6797,-30.8765,-34.0941,-32.3947,-31.1087 v02.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-1.7166,-11.1134,-10.6796,-2.7642,-1.8171,-1.7113,-0.7437,-1.1019,-2.2938,-6.4123,-1.73,-11.059,-10.6767,-2.5997 v03.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-12.4412,-19.7636,-17.6128,-13.156,-12.721,-12.7759,-14.6456,-13.5956,-12.6684,-15.7561,-12.4823,-19.7479,-17.6146,-13.0816 v04.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-18.8659,-27.9269,-26.8537,-19.8476,-18.6011,-18.8498,-22.517,-20.5695,-18.7085,-23.4605,-18.9115,-27.895,-26.8253,-19.7422 @@ -2491,8 +2489,8 @@ v10.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-29.072,-39.538,-35.3734,-30.0431,- v11.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-29.2818,-38.2654,-34.7357,-30.1138,-29.32,-29.5136,-33.2191,-31.2688,-29.2107,-33.5488,-29.367,-38.2625,-34.729,-30.0885 v12.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-29.8497,-38.9836,-36.293,-30.7513,-29.5295,-29.7177,-34.5372,-32.4132,-29.7975,-34.2159,-29.9404,-38.9981,-36.2807,-30.7135 v13.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-29.6744,-38.5017,-34.8547,-30.4784,-30.9948,-29.4166,-34.294,-32.0004,-29.5065,-33.0491,-29.7658,-38.5039,-34.8346,-30.4685 -libaom-v3.12.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-0.5405,-3.7382,-4.0193,-0.8938,-1.9955,-1.659,0.8951,-0.8051,-0.7577,-3.3021,-0.7534,-4.4739,-4.6439,-1.1843 -libaom-v3.12.0-unconstrained,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-5.35,2.3055,3.2258,-4.591,-7.1289,-6.6754,-7.8377,-8.4542,-4.722,-3.3144,-6.0479,1.5586,2.6384,-4.889 +v14.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-29.06,-37.8847,-34.2561,-29.8646,-30.3956,-28.8375,-33.5685,-31.248,-28.91,-32.4176,-29.1522,-37.8851,-34.2359,-29.8538 +v15.0.0,RA,A3,KristenAndSara_1280x720_60.y4m,-29.0666,-37.873,-34.2614,-29.87,-30.3993,-28.8548,-33.5614,-31.2525,-28.9253,-32.4134,-29.1586,-37.8733,-34.2411,-29.8589 v02.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-3.3971,-2.6568,-6.6669,-3.5067,-3.034,-3.1152,-4.1273,-4.1405,-2.9353,-3.6535,-3.4459,-2.6633,-6.6356,-3.5552 v03.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-14.3679,-8.9766,-13.8898,-14.0523,-13.7682,-13.8883,-18.8489,-18.0896,-13.1029,-13.3037,-14.4792,-9.0349,-13.783,-14.049 v04.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-26.041,-24.1664,-32.4332,-26.2383,-25.1307,-25.4031,-31.2337,-30.1372,-24.3654,-25.8887,-26.1968,-24.2447,-32.435,-26.3622 @@ -2505,8 +2503,8 @@ v10.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-35.7825,-31.4221,-39.4 v11.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-36.1428,-32.0926,-40.051,-36.1075,-34.106,-34.387,-40.8095,-39.7721,-34.3391,-35.4919,-36.4318,-32.4369,-40.1572,-36.3369 v12.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-36.3088,-32.0976,-40.2024,-36.264,-34.351,-34.6215,-41.287,-40.2469,-34.5532,-35.6443,-36.6048,-32.4247,-40.3465,-36.4997 v13.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-36.3055,-32.5099,-39.7792,-36.262,-35.0177,-34.6868,-41.3484,-40.2219,-34.597,-35.9251,-36.5879,-32.8175,-39.8833,-36.4947 -libaom-v3.12.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-1.5644,6.3642,16.0497,-0.372,7.7439,6.9176,-0.9398,-1.76,1.4861,4.6717,-2.061,6.171,15.8193,-0.9986 -libaom-v3.12.0-unconstrained,RA,A3,Vidyo3_1280x720p_60fps.y4m,-10.4074,-6.8378,-10.7389,-10.2964,-11.5741,-11.2721,-10.2076,-10.6599,-9.7861,-10.2402,-10.7733,-6.8726,-10.8621,-10.6387 +v14.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-36.0874,-32.2276,-39.5235,-36.0388,-34.8531,-34.4562,-41.2361,-40.0721,-34.3863,-35.703,-36.3731,-32.5336,-39.6262,-36.2718 +v15.0.0,RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,-36.0851,-32.1869,-39.5408,-36.0351,-34.8532,-34.4584,-41.288,-40.1105,-34.3609,-35.6943,-36.3699,-32.5013,-39.6606,-36.2661 v02.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-0.8986,-17.7334,-17.4999,-2.4551,-1.289,-1.1926,-0.2573,-0.0792,-1.5876,-6.3028,-0.9553,-17.6617,-17.4806,-1.8491 v03.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-11.8899,-23.5362,-26.1316,-13.1129,-11.241,-11.553,-16.7514,-15.2495,-11.8201,-16.4713,-12.0195,-23.3932,-26.1449,-12.7769 v04.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-19.7868,-35.0323,-34.5512,-21.218,-18.7898,-19.1946,-26.7642,-24.179,-19.0344,-25.0497,-19.8654,-34.8412,-34.5625,-20.7751 @@ -2519,8 +2517,8 @@ v10.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-30.7278,-46.642,-44.9804,-32.2143,-28. v11.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-30.2831,-44.5838,-43.5031,-31.631,-26.823,-27.3747,-34.8787,-32.988,-28.9859,-35.1922,-30.4614,-44.5321,-43.556,-31.3279 v12.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-30.7843,-46.6735,-44.7398,-32.24,-27.5671,-28.0948,-35.9188,-34.0986,-29.5843,-36.3393,-30.9669,-46.6371,-44.768,-31.8887 v13.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-30.6028,-44.3026,-42.9441,-31.8659,-31.1513,-27.8834,-34.956,-33.2078,-29.3488,-35.0441,-30.7836,-44.2784,-42.9828,-31.6159 -libaom-v3.12.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-0.2984,5.1245,9.2479,0.4114,1.9595,1.9004,1.3058,0.6784,0.1255,5.3383,-0.8836,4.8271,9.0235,-0.3296 -libaom-v3.12.0-unconstrained,RA,A3,Vidyo4_1280x720p_60fps.y4m,-10.6257,-11.9356,-10.5029,-10.698,-9.4224,-9.3732,-10.0978,-10.1705,-9.7238,-11.5904,-11.071,-12.1454,-10.5049,-11.0868 +v14.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-30.1056,-43.9477,-42.5446,-31.3805,-30.6214,-27.3219,-34.2505,-32.5293,-28.8466,-34.5664,-30.2832,-43.9312,-42.5831,-31.1204 +v15.0.0,RA,A3,Vidyo3_1280x720p_60fps.y4m,-30.1064,-43.8951,-42.5778,-31.3808,-30.5984,-27.3268,-34.2687,-32.5596,-28.8468,-34.5251,-30.2832,-43.8759,-42.6144,-31.1203 v02.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-1.4795,-10.817,-10.2177,-2.4535,-1.3361,-1.3762,0.2579,-0.0292,-1.8812,-4.8628,-1.4991,-10.6839,-10.0891,-2.0611 v03.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-12.1478,-17.9076,-18.7082,-12.8101,-11.2785,-11.6036,-13.736,-13.202,-12.1748,-14.2017,-12.193,-17.8412,-18.5228,-12.5789 v04.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-19.8221,-28.2298,-28.8168,-20.7706,-18.4834,-18.8235,-24.1961,-22.3979,-19.4886,-22.6625,-19.889,-28.1202,-28.6378,-20.4688 @@ -2533,8 +2531,8 @@ v10.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-29.6899,-39.4483,-36.8274,-30.6102,-27 v11.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-29.9033,-38.8072,-34.905,-30.6488,-27.7066,-28.0417,-32.8069,-31.1221,-29.2084,-32.1948,-30.0374,-38.8167,-34.8607,-30.4897 v12.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-30.414,-38.5194,-36.554,-31.1882,-28.1495,-28.5609,-33.2357,-31.7148,-29.6742,-32.7777,-30.546,-38.5065,-36.4481,-31.017 v13.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-30.2795,-38.1223,-35.3062,-30.9711,-29.3988,-28.3462,-33.1367,-31.6138,-29.5421,-32.3546,-30.4357,-38.084,-35.1625,-30.8553 -libaom-v3.12.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,4.0451,-10.9988,-7.1325,2.8776,3.9043,3.4478,14.7952,16.4216,3.5475,2.5505,4.4377,-10.5083,-6.7398,4.1506 -libaom-v3.12.0-unconstrained,RA,A3,WestWindEasy_1280x720p30_420.y4m,-5.1549,-3.7602,-6.962,-5.1561,-6.5608,-6.2999,-8.1609,-7.3416,-6.2137,-8.2066,-8.3744,-5.2768,-7.6474,-8.2563 +v14.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-29.7706,-37.5425,-34.8128,-30.459,-28.9289,-27.8546,-32.5362,-30.9843,-29.0567,-31.8105,-29.9263,-37.5038,-34.6698,-30.343 +v15.0.0,RA,A3,Vidyo4_1280x720p_60fps.y4m,-29.7581,-37.4701,-34.8073,-30.4436,-28.8775,-27.8397,-32.5537,-30.9908,-29.0588,-31.7727,-29.9141,-37.4301,-34.6647,-30.3286 v02.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-2.3488,-5.0813,3.3074,-2.2679,-2.0752,-2.3615,-2.4835,-1.6611,-2.0492,-6.1742,-2.4385,-4.7245,3.8332,-2.4384 v03.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-6.3965,-21.0675,-9.4271,-7.2736,-5.1784,-5.5489,-7.3588,-5.3065,-5.5618,-11.9875,-6.4707,-20.7717,-9.1968,-6.7657 v04.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-10.3645,-39.0535,-21.4612,-12.4324,-8.2165,-8.7242,-11.2015,-9.3693,-8.9829,-20.7924,-10.4203,-38.9348,-20.8216,-11.0755 @@ -2547,8 +2545,8 @@ v10.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-18.6276,-75.2793,-61.3746,-24.60 v11.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-18.6717,-74.3245,-59.3521,-24.4888,-16.7252,-17.4012,-18.6163,-17.3449,-18.0232,-33.7043,-18.5335,-74.6633,-59.4916,-19.9915 v12.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-19.4322,-75.3078,-59.8455,-25.2881,-17.3336,-18.0966,-19.6488,-18.1602,-18.7142,-34.5773,-19.2891,-75.6454,-59.8742,-20.7542 v13.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-19.5611,-74.5767,-59.401,-25.2881,-20.0839,-18.257,-19.2351,-18.032,-18.879,-33.8895,-19.4287,-74.9116,-59.5323,-20.8718 -libaom-v3.12.0,RA,A4,BlueSky_360p25_v2.y4m,-3.964,-0.8681,6.1562,-3.2538,-3.7301,-5.1583,-11.0937,-10.1046,-0.3542,1.7847,-5.3444,-3.2894,4.35,-4.432 -libaom-v3.12.0-unconstrained,RA,A4,BlueSky_360p25_v2.y4m,-3.5684,21.7478,33.0007,-1.0377,-1.5583,-8.2173,-15.8893,-14.8613,-4.2218,10.7796,-5.8052,18.7753,31.0153,-1.4111 +v14.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-19.4408,-75.2775,-59.2825,-25.2406,-20.0193,-18.1557,-18.8899,-17.7935,-18.7861,-33.7172,-19.3077,-75.5758,-59.427,-20.7612 +v15.0.0,RA,A3,WestWindEasy_1280x720p30_420.y4m,-19.451,-75.3151,-59.337,-25.2572,-19.9904,-18.1647,-19.0925,-17.8902,-18.7662,-33.7388,-19.3163,-75.6261,-59.498,-20.7714 v02.0.0,RA,A4,BlueSky_360p25_v2.y4m,-1.2222,-8.4348,-24.0804,-2.6859,-2.2447,-2.2357,-0.5719,-0.5296,-0.1486,-4.5857,-1.3157,-9.3481,-24.8148,-2.7229 v03.0.0,RA,A4,BlueSky_360p25_v2.y4m,-9.339,-20.8282,-34.1665,-11.126,-10.4321,-10.4723,-11.0621,-10.636,-6.2185,-14.9763,-9.513,-21.6907,-34.855,-11.3805 v04.0.0,RA,A4,BlueSky_360p25_v2.y4m,-23.3181,-32.6917,-52.8927,-25.3025,-24.9824,-24.2059,-27.8236,-26.6045,-19.6267,-29.8059,-23.4311,-33.6075,-53.6224,-25.4848 @@ -2561,8 +2559,8 @@ v10.0.0,RA,A4,BlueSky_360p25_v2.y4m,-36.9345,-47.949,-64.7559,-39.0271,-35.1722, v11.0.0,RA,A4,BlueSky_360p25_v2.y4m,-37.3401,-49.1138,-65.4976,-39.5379,-35.1561,-34.7372,-41.0744,-40.8081,-34.8954,-45.2492,-37.7474,-50.1899,-66.1271,-39.8397 v12.0.0,RA,A4,BlueSky_360p25_v2.y4m,-37.5531,-47.3995,-65.0346,-39.6089,-35.294,-34.9752,-41.2246,-40.9539,-35.1006,-45.0205,-37.9617,-48.5271,-65.6413,-39.8707 v13.0.0,RA,A4,BlueSky_360p25_v2.y4m,-37.7238,-47.2733,-65.4334,-39.7365,-35.5378,-35.199,-41.8981,-41.6823,-35.3523,-45.0689,-38.1638,-48.4446,-66.0403,-40.0568 -libaom-v3.12.0,RA,A4,RedKayak_360_2997.y4m,6.2548,-5.2623,-14.9851,5.2123,2.3917,8.6871,14.3816,13.5087,9.5419,6.4295,9.8923,-4.2759,-14.0914,9.7735 -libaom-v3.12.0-unconstrained,RA,A4,RedKayak_360_2997.y4m,-5.3271,0.2171,8.6717,-4.609,-4.7068,-8.7908,-17.5036,-17.0608,-8.3278,-3.955,-10.8998,-2.9497,6.7622,-10.7017 +v14.0.0,RA,A4,BlueSky_360p25_v2.y4m,-37.3155,-46.9275,-65.2437,-39.3438,-35.1175,-34.7389,-41.1937,-41.0031,-34.9516,-44.6423,-37.765,-48.0992,-65.8628,-39.6625 +v15.0.0,RA,A4,BlueSky_360p25_v2.y4m,-37.314,-46.9312,-65.2412,-39.3425,-35.1194,-34.7428,-41.1879,-40.9975,-34.9549,-44.6422,-37.764,-48.104,-65.8605,-39.6616 v02.0.0,RA,A4,RedKayak_360_2997.y4m,-3.5821,-0.7393,-7.9603,-3.6483,-6.2337,-5.944,-5.5399,-5.2748,-4.4188,-1.7436,-4.0436,-0.4499,-5.9184,-4.0439 v03.0.0,RA,A4,RedKayak_360_2997.y4m,-7.3893,-12.6102,9.1914,-7.0564,-10.3012,-9.6449,-7.5787,-7.1284,-7.8429,-7.6912,-7.8399,-12.3342,10.3207,-7.948 v04.0.0,RA,A4,RedKayak_360_2997.y4m,-9.5688,-17.5744,-21.5396,-10.2703,-12.9104,-12.1031,-10.422,-9.8583,-10.189,-11.608,-10.0409,-17.4182,-17.8571,-10.3073 @@ -2575,8 +2573,8 @@ v10.0.0,RA,A4,RedKayak_360_2997.y4m,-16.7213,-57.8965,-53.4206,-20.2185,-19.1636 v11.0.0,RA,A4,RedKayak_360_2997.y4m,-15.8271,-57.6516,-50.7869,-19.2879,-18.2868,-18.8443,-21.9824,-21.1371,-18.4363,-29.7643,-16.1328,-58.5433,-48.623,-17.3294 v12.0.0,RA,A4,RedKayak_360_2997.y4m,-15.9798,-58.1687,-49.4253,-19.3847,-18.4436,-18.8028,-21.5129,-20.6967,-18.471,-30.0015,-16.251,-59.0964,-47.8822,-17.446 v13.0.0,RA,A4,RedKayak_360_2997.y4m,-16.217,-58.1147,-47.104,-19.4658,-18.6075,-19.1433,-21.9223,-21.1511,-18.7915,-29.7881,-16.5241,-58.9181,-44.9538,-17.7092 -libaom-v3.12.0,RA,A4,SnowMountain_640x360_2997.y4m,1.0385,27.5215,29.4096,2.6261,7.2346,2.1719,-10.1871,-11.3721,6.5712,11.0669,0.7182,27.5076,29.3609,1.9749 -libaom-v3.12.0-unconstrained,RA,A4,SnowMountain_640x360_2997.y4m,-6.9023,-5.9369,-6.4149,-6.7778,-10.0776,-2.1981,0.1373,0.5251,9.193,-5.7036,-6.2803,-5.7559,-6.2181,-6.2074 +v14.0.0,RA,A4,RedKayak_360_2997.y4m,-16.071,-58.0281,-47.1081,-19.3219,-18.5211,-18.9873,-21.7353,-20.9749,-18.631,-29.621,-16.3794,-58.8537,-44.9566,-17.563 +v15.0.0,RA,A4,RedKayak_360_2997.y4m,-16.0702,-58.027,-47.1069,-19.3207,-18.5192,-18.9847,-21.7337,-20.9726,-18.6284,-29.6194,-16.3785,-58.8527,-44.9554,-17.562 v02.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-1.8701,-23.3451,-33.3887,-4.0151,-3.4069,-3.663,-2.6973,-3.6188,-0.3041,-4.2194,-1.9242,-23.3801,-33.5116,-2.4955 v03.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-8.1154,-26.5246,-37.273,-10.0939,-9.2602,-9.6727,-11.2208,-11.3082,-6.7527,-10.3622,-8.18,-26.5621,-37.3806,-8.7607 v04.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-10.8763,-36.1875,-47.2476,-13.5153,-11.9626,-12.4382,-14.8775,-14.5309,-10.0884,-15.3571,-10.9278,-36.2088,-47.3038,-11.7701 @@ -2589,8 +2587,8 @@ v10.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-17.3621,-51.6993,-60.016,-20.8995,- v11.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-17.4348,-55.4042,-62.052,-21.2745,-16.8386,-18.8693,-24.1861,-23.7394,-20.7291,-25.8896,-17.5444,-55.4355,-62.0711,-18.7246 v12.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-17.8388,-54.2247,-60.3185,-21.4732,-17.2252,-19.2776,-25.4497,-24.7832,-21.0707,-25.9754,-17.9494,-54.2486,-60.3581,-19.0935 v13.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-18.0882,-52.569,-60.0465,-21.5623,-17.3888,-19.7104,-25.2642,-24.9822,-21.4744,-25.9074,-18.2012,-52.6292,-60.1036,-19.3361 -libaom-v3.12.0,RA,A4,SpeedBag_640x360_2997.y4m,5.1669,9.688,14.6918,5.7574,5.3716,2.7072,-0.5182,-0.9716,7.1735,11.6605,5.771,8.4834,13.4219,6.3082 -libaom-v3.12.0-unconstrained,RA,A4,SpeedBag_640x360_2997.y4m,3.9304,10.0906,11.4852,4.5743,4.0924,1.7057,-0.8241,-2.0305,5.1494,10.4402,2.9397,9.5104,10.9247,3.7952 +v14.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-17.3468,-52.1806,-59.6604,-20.853,-16.7491,-18.9998,-24.0342,-23.7639,-20.7177,-25.2005,-17.4571,-52.2392,-59.7167,-18.5959 +v15.0.0,RA,A4,SnowMountain_640x360_2997.y4m,-17.3408,-52.1773,-59.6576,-20.8472,-16.7438,-18.994,-24.0244,-23.7542,-20.7115,-25.1947,-17.4511,-52.2358,-59.7138,-18.59 v02.0.0,RA,A4,SpeedBag_640x360_2997.y4m,0.5613,-1.167,-3.5101,0.263,-1.1402,0.1967,-0.477,-0.6258,2.5566,2.7472,0.1636,-1.5845,-3.1627,-0.0277 v03.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-8.0399,-6.9534,-11.0998,-8.1552,-9.9852,-8.2339,-11.0895,-11.0082,-5.3708,-4.9612,-8.4562,-7.4035,-11.491,-8.4991 v04.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-18.7499,-18.4705,-24.6405,-19.0459,-21.0868,-19.0331,-22.4608,-21.9485,-16.0495,-16.6672,-19.1012,-18.9077,-24.6769,-19.313 @@ -2603,8 +2601,8 @@ v10.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-32.1304,-33.1093,-39.8589,-32.5896,-32. v11.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-32.4004,-33.6944,-39.5709,-32.8463,-32.3899,-30.5683,-35.3216,-34.9425,-31.0671,-33.5126,-33.1015,-34.4633,-40.1863,-33.5059 v12.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-33.7632,-34.3576,-40.6566,-34.1504,-33.57,-31.648,-37.2704,-36.7849,-32.3787,-34.9238,-34.3652,-35.0917,-40.8558,-34.7142 v13.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-33.9532,-35.1318,-39.2646,-34.2907,-33.9829,-31.9856,-37.1245,-36.8646,-32.5769,-35.1596,-34.6052,-35.8918,-39.7599,-34.9409 -libaom-v3.12.0,RA,A4,Stockholm_640x360_5994.y4m,-1.9634,14.7274,16.831,-0.2658,-1.0939,-2.1291,-3.43,-4.8499,3.5415,6.1894,-2.4976,14.3625,16.5561,-0.7573 -libaom-v3.12.0-unconstrained,RA,A4,Stockholm_640x360_5994.y4m,-9.2731,-3.1156,-1.0096,-8.5528,-9.7764,-10.8221,-10.3475,-11.7572,-5.6623,-6.2702,-9.7786,-3.3494,-1.1948,-9.0206 +v14.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-32.7891,-33.9673,-38.0317,-33.1228,-32.836,-30.8376,-35.6052,-35.3733,-31.4577,-33.884,-33.449,-34.7607,-38.5433,-33.7807 +v15.0.0,RA,A4,SpeedBag_640x360_2997.y4m,-32.7821,-33.9586,-38.0236,-33.1156,-32.8228,-30.8257,-35.5811,-35.3581,-31.4472,-33.8737,-33.4414,-34.7522,-38.5362,-33.773 v02.0.0,RA,A4,Stockholm_640x360_5994.y4m,-0.7396,-18.2455,-12.7204,-2.3014,-1.9592,-1.8668,-0.2876,-0.325,1.1523,-5.6812,-0.8024,-18.3904,-12.7916,-1.8313 v03.0.0,RA,A4,Stockholm_640x360_5994.y4m,-12.8485,-27.5716,-21.5222,-14.0928,-14.292,-14.5889,-19.952,-18.8979,-10.2925,-16.9586,-12.9283,-27.6594,-21.5828,-13.7843 v04.0.0,RA,A4,Stockholm_640x360_5994.y4m,-19.5611,-40.241,-33.9949,-21.4954,-21.017,-20.6506,-25.331,-24.5416,-18.0071,-25.6368,-19.6369,-40.3843,-34.0739,-20.9674 @@ -2617,8 +2615,8 @@ v10.0.0,RA,A4,Stockholm_640x360_5994.y4m,-32.4667,-52.5835,-42.8566,-34.1676,-31 v11.0.0,RA,A4,Stockholm_640x360_5994.y4m,-32.3806,-52.2632,-42.0612,-34.0077,-30.9387,-31.0849,-35.9532,-36.4539,-32.1514,-38.5254,-32.5551,-52.3655,-42.157,-33.6566 v12.0.0,RA,A4,Stockholm_640x360_5994.y4m,-32.9106,-51.3464,-41.7094,-34.4122,-31.5771,-31.6349,-36.8931,-37.3355,-32.682,-38.7998,-33.0913,-51.4521,-41.8101,-34.1162 v13.0.0,RA,A4,Stockholm_640x360_5994.y4m,-33.1486,-52.3035,-41.9804,-34.7084,-31.8217,-31.987,-37.5865,-37.7891,-33.0963,-39.0558,-33.3244,-52.3869,-42.0688,-34.3864 -libaom-v3.12.0,RA,A4,TouchdownPass_640x360_2997.y4m,5.7437,3.3707,-1.7217,5.2857,16.9128,16.551,-1.1622,-2.6779,9.5618,14.7535,5.4973,2.8206,-2.3235,5.3029 -libaom-v3.12.0-unconstrained,RA,A4,TouchdownPass_640x360_2997.y4m,-5.2328,21.5933,17.5624,-3.1573,-4.4249,-6.193,-12.7507,-12.9946,-3.213,3.7313,-5.2366,21.7531,17.5,-4.0818 +v14.0.0,RA,A4,Stockholm_640x360_5994.y4m,-32.2307,-51.8737,-41.4108,-33.8368,-30.9192,-30.9877,-36.1885,-36.45,-32.2577,-38.2271,-32.4064,-51.9673,-41.5045,-33.4975 +v15.0.0,RA,A4,Stockholm_640x360_5994.y4m,-32.2237,-51.8693,-41.4055,-33.83,-30.9123,-30.9799,-36.1771,-36.439,-32.2509,-38.2206,-32.3994,-51.9629,-41.4992,-33.4906 v02.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-0.4252,-8.5429,-7.8183,-1.1838,0.2017,0.3573,-1.7314,-1.6957,1.3296,-0.4683,-0.5253,-8.6532,-7.8963,-0.8179 v03.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-8.3611,-19.6326,-14.5377,-9.1893,-5.5489,-6.0867,-13.6503,-13.5254,-6.0632,-8.8215,-8.4207,-19.5974,-14.4862,-8.7591 v04.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-14.5797,-26.1018,-21.0366,-15.4468,-11.2666,-11.6725,-19.6813,-19.8746,-11.7332,-15.4311,-14.6269,-26.1934,-21.0289,-14.9932 @@ -2631,8 +2629,8 @@ v10.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-25.3521,-40.6885,-27.6848,-26.2895 v11.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-25.3429,-37.2089,-30.3473,-26.2346,-16.1256,-17.0572,-30.5268,-30.8535,-22.9838,-26.4302,-25.6388,-37.3662,-30.5321,-26.0401 v12.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-26.0252,-38.2048,-29.9017,-26.8911,-16.4682,-17.2613,-31.6238,-32.1326,-23.5651,-27.5375,-26.3057,-38.3968,-30.0565,-26.6893 v13.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-26.1443,-39.0414,-31.1408,-27.0633,-16.6278,-17.4954,-31.906,-32.3206,-23.5793,-27.1804,-26.448,-39.126,-31.2987,-26.8563 -libaom-v3.12.0,RA,A5,FourPeople_480x270_60.y4m,6.8264,16.5237,16.1316,7.6465,7.8514,6.2687,0.8114,1.9046,2.0966,12.1287,6.1772,16.3018,15.784,7.2062 -libaom-v3.12.0-unconstrained,RA,A5,FourPeople_480x270_60.y4m,-1.8399,1.6361,4.0297,-1.4041,-0.575,-2.5435,-7.7113,-6.7851,-3.2822,-1.0734,-2.2381,1.6222,4.0032,-1.7266 +v14.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-25.4706,-38.3181,-30.2456,-26.3725,-16.1809,-16.9688,-31.0467,-31.4259,-23.0235,-26.5204,-25.7804,-38.3801,-30.4034,-26.1791 +v15.0.0,RA,A4,TouchdownPass_640x360_2997.y4m,-25.4656,-38.3133,-30.2404,-26.3675,-16.1779,-16.9649,-31.0391,-31.4185,-23.0188,-26.5158,-25.7754,-38.3754,-30.3982,-26.1741 v02.0.0,RA,A5,FourPeople_480x270_60.y4m,-0.2679,-4.6159,-5.7013,-0.7559,-1.2574,-1.2233,-1.4689,-0.1262,-1.5899,-3.5301,-0.3523,-4.6214,-5.6898,-0.6752 v03.0.0,RA,A5,FourPeople_480x270_60.y4m,-10.8179,-12.8982,-13.4758,-11.0565,-11.9269,-11.6228,-14.9704,-13.4318,-11.8087,-13.5032,-10.9112,-12.9014,-13.4189,-11.0759 v04.0.0,RA,A5,FourPeople_480x270_60.y4m,-14.8743,-21.4418,-22.3653,-15.57,-15.8094,-15.7357,-19.222,-17.4986,-16.3348,-19.1199,-14.9566,-21.4432,-22.3641,-15.5232 @@ -2645,8 +2643,8 @@ v10.0.0,RA,A5,FourPeople_480x270_60.y4m,-24.6133,-30.0276,-29.7389,-25.1296,-25. v11.0.0,RA,A5,FourPeople_480x270_60.y4m,-24.7057,-29.3456,-28.8785,-25.1369,-25.1929,-25.3527,-31.2394,-29.3128,-26.4075,-28.1503,-24.8777,-29.3689,-28.9029,-25.278 v12.0.0,RA,A5,FourPeople_480x270_60.y4m,-25.6051,-29.3003,-29.3987,-25.9793,-25.903,-26.1332,-33.0493,-31.1032,-27.1939,-28.7683,-25.7824,-29.3194,-29.4224,-26.1414 v13.0.0,RA,A5,FourPeople_480x270_60.y4m,-25.3415,-29.1558,-29.5295,-25.7326,-25.7224,-26.1786,-32.1914,-30.1453,-27.0449,-28.2033,-25.5267,-29.1645,-29.5418,-25.9027 -libaom-v3.12.0,RA,A5,ParkJoy_480x270_50.y4m,-1.188,-5.5552,-2.6209,-1.437,-0.8375,-0.0462,-2.297,-2.5813,-0.9989,-1.962,-2.4056,-6.8461,-3.5873,-2.6134 -libaom-v3.12.0-unconstrained,RA,A5,ParkJoy_480x270_50.y4m,-8.5192,32.6881,52.3868,-5.6799,-3.1314,-4.8966,-17.7872,-17.2879,-6.7529,2.1708,-12.3552,30.5148,51.474,-9.7109 +v14.0.0,RA,A5,FourPeople_480x270_60.y4m,-24.2836,-28.3591,-28.6225,-24.6948,-24.6527,-25.0512,-30.5003,-28.4561,-25.9014,-27.1851,-24.4605,-28.3713,-28.6369,-24.8469 +v15.0.0,RA,A5,FourPeople_480x270_60.y4m,-24.2841,-28.3609,-28.6235,-24.6955,-24.6544,-25.052,-30.4993,-28.4548,-25.8992,-27.1873,-24.4609,-28.3732,-28.6381,-24.8475 v02.0.0,RA,A5,ParkJoy_480x270_50.y4m,-0.6164,-6.8877,-4.4361,-1.0386,-0.9022,-0.9879,-0.0704,-0.1651,-1.2849,-1.6826,-1.0847,-7.4628,-4.542,-1.3484 v03.0.0,RA,A5,ParkJoy_480x270_50.y4m,-4.6907,-11.7194,-8.626,-5.1468,-5.2729,-6.1142,-8.5664,-8.2115,-5.4378,-6.1798,-5.184,-12.4333,-8.6757,-5.5239 v04.0.0,RA,A5,ParkJoy_480x270_50.y4m,-8.4242,-21.433,-19.7441,-9.4137,-9.4275,-10.4958,-14.1771,-13.839,-9.6914,-11.5134,-8.8834,-21.9756,-19.5608,-9.5442 @@ -2659,8 +2657,8 @@ v10.0.0,RA,A5,ParkJoy_480x270_50.y4m,-16.4748,-27.2151,-26.2027,-17.3051,-15.441 v11.0.0,RA,A5,ParkJoy_480x270_50.y4m,-17.9078,-26.7938,-26.1943,-18.6021,-16.3548,-18.1475,-25.1452,-25.3157,-18.9401,-20.9874,-18.394,-27.183,-26.1196,-18.8459 v12.0.0,RA,A5,ParkJoy_480x270_50.y4m,-18.5837,-28.0363,-26.0406,-19.2747,-16.9564,-19.0012,-26.1718,-26.4704,-19.7759,-21.917,-19.0494,-28.4109,-25.8544,-19.4978 v13.0.0,RA,A5,ParkJoy_480x270_50.y4m,-18.5887,-27.5729,-25.1844,-19.2246,-17.0047,-18.9019,-26.3349,-26.5316,-19.809,-21.1688,-19.0753,-27.9831,-25.1855,-19.505 -libaom-v3.12.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,3.178,3.9994,1.1215,3.1486,11.7954,8.1353,-1.2312,-2.1549,3.4052,4.5429,3.1775,3.0211,0.006,3.173 -libaom-v3.12.0-unconstrained,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-4.1228,15.0184,8.6523,-2.6597,-3.1457,-6.4807,-15.6409,-15.7844,-7.1037,-1.7384,-4.7313,14.5816,8.2411,-4.1407 +v14.0.0,RA,A5,ParkJoy_480x270_50.y4m,-18.2333,-27.2377,-24.7855,-18.8687,-16.7101,-18.4935,-25.6834,-25.9009,-19.4161,-20.794,-18.7208,-27.6493,-24.7805,-19.1465 +v15.0.0,RA,A5,ParkJoy_480x270_50.y4m,-18.2438,-27.2226,-24.5839,-18.8709,-16.743,-18.5442,-25.6688,-25.9099,-19.4112,-20.7644,-18.729,-27.6259,-24.5386,-19.1479 v02.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-0.2907,-14.3981,-1.3151,-1.0172,0.2755,-0.1063,-0.1887,-0.2886,-0.9547,-2.5228,-0.5488,-14.1423,-1.2381,-0.7057 v03.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-4.8273,-15.8699,-3.079,-5.2641,-3.6224,-4.3527,-9.2147,-8.7712,-5.1394,-7.0568,-5.0717,-15.573,-3.0561,-5.1612 v04.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-11.7408,-34.7829,-15.3855,-13.1377,-10.5422,-10.9841,-15.7797,-15.3825,-12.0578,-16.0147,-12.0184,-34.6341,-15.4184,-12.3923 @@ -2673,8 +2671,8 @@ v10.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-24.8013,-37.5881,-18.36,-2 v11.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-25.8765,-35.464,-19.37,-26.0145,-21.5892,-23.8818,-31.9083,-31.8144,-25.5509,-27.1319,-26.3382,-35.6321,-19.6048,-26.3273 v12.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-26.8409,-36.4041,-19.3307,-26.9375,-22.5986,-24.7758,-33.319,-33.1158,-26.362,-27.5676,-27.3444,-36.4808,-19.5691,-27.3131 v13.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-27.1026,-38.3193,-20.1189,-27.3188,-22.7521,-24.8493,-34.1091,-33.6332,-26.6648,-28.2377,-27.5839,-38.2754,-20.2945,-27.5733 -libaom-v3.12.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-0.5784,-7.957,-8.0114,-1.0861,-1.4486,-0.6893,-3.0717,-3.9268,-0.3623,-3.0071,-1.0708,-10.043,-9.734,-1.2049 -libaom-v3.12.0-unconstrained,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-6.6042,-6.6528,-0.1753,-6.1689,-4.1603,-7.3698,-21.3496,-21.5917,-10.3045,-8.3506,-8.9581,-6.8374,-0.8658,-8.777 +v14.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-26.2341,-37.474,-18.7131,-26.426,-21.8819,-24.0529,-33.0147,-32.4144,-25.9018,-27.2668,-26.727,-37.4125,-18.8729,-26.7034 +v15.0.0,RA,A5,SparksElevator_480x270p_5994_10bit.y4m,-26.2341,-37.474,-18.7131,-26.426,-21.8819,-24.0529,-33.0147,-32.4144,-25.9018,-27.2668,-26.727,-37.4125,-18.8729,-26.7034 v02.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-4.2836,-18.1514,-13.4504,-5.561,-3.8924,-3.8823,-5.4497,-5.7058,-4.4677,-7.5088,-4.591,-17.5564,-12.9485,-4.838 v03.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-14.526,-31.0526,-20.9348,-15.7896,-11.9634,-12.976,-24.6984,-23.4629,-14.3531,-16.8011,-15.0563,-29.247,-19.1331,-15.2962 v04.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-23.1947,-38.9863,-30.717,-24.5099,-21.7217,-22.3797,-33.2442,-31.8069,-22.7722,-25.4223,-23.7322,-37.5564,-29.6115,-23.998 @@ -2687,8 +2685,8 @@ v10.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-41.1905,-54.0774,-48.9994,-42. v11.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-42.4863,-55.581,-46.9445,-43.4447,-41.6729,-42.2708,-50.0195,-48.6262,-41.9513,-44.7903,-43.3219,-56.1092,-47.7114,-43.5472 v12.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-43.2179,-56.6638,-46.0237,-44.1002,-42.0012,-42.6259,-52.2083,-50.3285,-42.5784,-45.2981,-44.0723,-57.0049,-46.8653,-44.2779 v13.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-43.0855,-53.6439,-45.063,-43.8149,-42.2415,-42.8491,-51.6426,-49.8534,-42.4504,-44.7327,-43.9743,-54.4731,-45.5591,-44.1478 -libaom-v3.12.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,1.5948,-9.8083,-7.9843,0.6984,-3.2896,-4.6097,1.8381,1.8412,1.4499,3.239,1.9941,-10.2726,-8.8417,1.5789 -libaom-v3.12.0-unconstrained,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-12.5055,9.5457,16.2494,-10.5019,-15.7233,-16.7404,-19.8603,-19.6138,-13.0376,-6.9307,-14.8369,7.4332,13.4613,-13.7737 +v14.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-42.2381,-52.3457,-43.9405,-42.9235,-41.605,-42.0331,-48.1003,-46.2589,-41.592,-43.5623,-43.1039,-53.146,-44.4061,-43.2662 +v15.0.0,RA,A5,Vertical_Bayshore_270x480_2997.y4m,-42.2567,-52.5666,-44.1305,-42.9661,-41.6265,-42.1892,-48.0881,-46.2565,-41.6785,-43.7276,-43.1195,-53.3488,-44.6041,-43.2878 v02.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-1.2124,-8.6796,-8.8009,-1.9644,0.6348,-1.1673,-1.9527,-1.7336,-0.2596,1.1578,-1.4282,-9.2255,-9.8452,-1.7452 v03.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-5.888,-11.9411,-17.2498,-6.7268,-4.5463,-6.2349,-11.6329,-10.7328,-4.4473,-3.9688,-6.162,-12.3755,-18.0943,-6.5423 v04.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-9.9542,-24.2675,-25.6223,-11.4591,-9.3876,-11.0432,-17.5571,-16.2645,-8.456,-10.2631,-10.2177,-24.7298,-26.4441,-10.9341 @@ -2701,8 +2699,8 @@ v10.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-18.724,-45.096,-44.5179, v11.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-19.2591,-45.3396,-44.1013,-22.0105,-18.3364,-18.8522,-27.8147,-26.5293,-18.7646,-27.5227,-19.6712,-45.8661,-44.5033,-20.893 v12.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-19.3809,-46.5832,-44.8584,-22.2406,-18.1393,-18.7091,-27.6616,-26.319,-18.7208,-27.8776,-19.7982,-47.1459,-45.4086,-21.0703 v13.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-19.4451,-45.2548,-44.7539,-22.2211,-19.6786,-18.857,-27.6028,-26.387,-18.8137,-27.4719,-19.8774,-45.802,-45.2851,-21.1085 -libaom-v3.12.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-0.0659,-1.4847,-0.6226,-0.1076,-0.8239,-1.8882,-1.0129,-2.0832,1.611,0.9205,-0.3821,-2.4816,-1.3919,-0.3639 -libaom-v3.12.0-unconstrained,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-7.8119,18.8957,13.2493,-5.3811,-11.3819,-8.2262,-22.7773,-21.3004,-7.7542,-2.0556,-10.7625,17.5985,12.6157,-9.5551 +v14.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-19.3565,-45.1768,-44.6586,-22.1313,-19.5836,-18.7524,-27.3945,-26.1828,-18.7332,-27.3663,-19.7889,-45.7246,-45.1909,-21.0196 +v15.0.0,RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,-19.3706,-45.4217,-44.5413,-22.1528,-19.6509,-18.7863,-27.5775,-26.295,-18.7476,-27.3876,-19.8009,-45.9713,-45.0932,-21.0387 v02.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-2.5838,-12.6841,-10.3053,-3.5687,-2.3308,-2.5982,-4.6953,-4.1885,-1.5121,-3.2028,-2.8158,-12.8418,-10.2762,-3.1667 v03.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-9.4879,-16.7316,-17.3472,-10.3035,-9.8947,-9.685,-20.4932,-17.435,-8.0477,-10.3366,-9.816,-16.8732,-17.3229,-10.1165 v04.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-18.385,-28.4748,-29.4558,-19.5329,-20.8599,-21.2261,-30.5376,-27.1428,-16.816,-20.5713,-18.7932,-28.5937,-29.4444,-19.2185 @@ -2715,8 +2713,8 @@ v10.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-28.9268,-44.3817,-36.8499 v11.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-29.2822,-43.5717,-36.3158,-30.4758,-32.3971,-32.8955,-39.8786,-37.5639,-29.3744,-33.3631,-29.9753,-43.9364,-36.4839,-30.476 v12.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-29.2932,-43.8618,-36.8763,-30.529,-31.9892,-32.2719,-39.8388,-37.6471,-29.2951,-33.4511,-29.9843,-44.2277,-37.0429,-30.4975 v13.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-29.3891,-42.8217,-36.1099,-30.5096,-31.0622,-32.5734,-40.2025,-37.9527,-29.4057,-32.9897,-30.0818,-43.1752,-36.281,-30.5555 -libaom-v3.12.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,7.0908,3.09,1.1946,6.5223,2.4698,3.2802,1.3561,0.5077,9.1213,13.0779,7.3632,3.9676,3.5843,6.3622 -libaom-v3.12.0-unconstrained,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-11.681,-7.2076,-6.3905,-11.1422,-16.5111,-16.3065,-16.3264,-16.548,-7.8248,-13.3055,-7.738,-2.9134,-0.3219,-6.0714 +v14.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-29.3256,-42.7003,-35.758,-30.4275,-30.9955,-32.5058,-39.9819,-37.7743,-29.3497,-32.8979,-30.016,-43.0514,-35.9123,-30.4841 +v15.0.0,RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,-29.3397,-42.6897,-35.752,-30.4388,-31.0436,-32.545,-39.9699,-37.7663,-29.3734,-32.9162,-30.0312,-43.0392,-35.9095,-30.4981 v02.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-18.6368,-26.5716,-30.464,-19.8256,-16.1243,-16.6679,-22.8177,-21.3676,-15.6566,-17.2517,-22.3769,-31.3862,0.0,-25.2988 v03.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-8.8399,-6.6608,-5.9501,-8.5581,-7.8386,-8.8916,-7.3939,-7.6051,-5.0952,-8.3876,-8.6637,-6.6418,-5.2713,-7.98 v04.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-15.7235,-19.1223,-17.9766,-16.0476,-15.8256,-16.3496,-15.8671,-15.8095,-12.8732,-18.5533,-15.0769,-17.9911,-15.2072,-15.5566 @@ -2729,8 +2727,8 @@ v10.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-27.34,-32.5781,-32.0715,-27 v11.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-26.1363,-32.7582,-32.0158,-26.8668,-25.6896,-25.6312,-30.632,-28.9784,-26.3948,-36.2219,-25.6164,-30.1946,-28.1061,-26.5682 v12.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-26.4048,-32.6104,-32.0419,-27.0954,-25.7408,-25.8166,-30.4834,-29.037,-26.666,-35.6163,-25.8934,-30.1917,-28.2893,-26.7936 v13.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-26.4501,-32.6977,-31.6414,-27.1171,-27.5339,-25.8216,-30.768,-29.0332,-26.5883,-35.6072,-25.8952,-30.2516,-28.0792,-26.777 -libaom-v3.12.0,RA,B1,Life_1080p30_v2.y4m,9.4877,7.8732,4.6861,9.106,12.6248,14.8151,-0.5259,-1.1109,9.334,17.2552,9.49,7.699,4.2587,9.2575 -libaom-v3.12.0-unconstrained,RA,B1,Life_1080p30_v2.y4m,-5.3776,4.781,1.3444,-4.4145,-10.9911,-10.3254,-11.2767,-11.1752,-3.4653,-2.3256,-5.0036,4.7658,2.1767,-4.2495 +v14.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-26.4142,-32.6144,-31.5491,-27.0746,-27.4736,-25.8028,-30.8334,-29.0729,-26.5194,-35.603,-25.8639,-30.2159,-27.9799,-26.7362 +v15.0.0,RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,-26.4548,-32.7406,-31.6579,-27.1249,-27.5163,-25.8867,-30.6404,-29.1108,-26.6093,-35.6491,-25.8963,-30.324,-28.0634,-26.7863 v02.0.0,RA,B1,Life_1080p30_v2.y4m,-1.4009,-4.973,-1.4749,-1.6295,-0.8403,-0.979,-2.5718,-2.5211,0.2138,-0.0513,-1.406,-4.7522,-1.3361,-1.5331 v03.0.0,RA,B1,Life_1080p30_v2.y4m,-11.0241,-11.1835,-8.5136,-10.8934,-9.4508,-9.0814,-18.3554,-16.3136,-8.6833,-9.132,-11.0926,-11.0039,-8.4747,-10.9796 v04.0.0,RA,B1,Life_1080p30_v2.y4m,-18.0171,-24.2858,-21.3202,-18.6077,-16.4343,-16.2083,-26.1982,-24.1467,-15.8152,-18.9574,-18.1975,-24.0754,-21.3255,-18.6032 @@ -2743,8 +2741,8 @@ v10.0.0,RA,B1,Life_1080p30_v2.y4m,-27.9163,-37.5263,-32.7632,-28.8348,-23.1697,- v11.0.0,RA,B1,Life_1080p30_v2.y4m,-27.4896,-37.438,-32.4593,-28.4475,-22.2266,-21.353,-34.4531,-33.2346,-26.9755,-30.8553,-27.8887,-37.3933,-32.7506,-28.544 v12.0.0,RA,B1,Life_1080p30_v2.y4m,-27.8259,-37.4352,-32.6808,-28.75,-22.3932,-21.5749,-34.671,-33.3969,-27.2671,-30.8186,-28.2421,-37.4261,-32.974,-28.8749 v13.0.0,RA,B1,Life_1080p30_v2.y4m,-27.8027,-37.7523,-32.2795,-28.7287,-20.0308,-21.4945,-34.9849,-33.5929,-27.2222,-31.042,-28.2157,-37.7396,-32.5981,-28.8489 -libaom-v3.12.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,2.4543,3.4698,-2.4152,2.2973,-0.2532,-1.3106,5.5115,4.9857,2.6283,2.9867,2.8571,2.89,-3.4666,2.9097 -libaom-v3.12.0-unconstrained,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-2.3906,27.7785,18.3632,-0.4005,-6.2719,-4.5828,-12.0536,-11.6068,-1.8456,7.7018,-6.1802,26.2779,16.5769,-4.8051 +v14.0.0,RA,B1,Life_1080p30_v2.y4m,-27.7159,-37.589,-32.1514,-28.6312,-19.9546,-21.4068,-34.7573,-33.411,-27.1138,-31.0102,-28.1313,-37.5866,-32.4838,-28.7576 +v15.0.0,RA,B1,Life_1080p30_v2.y4m,-27.6815,-37.5591,-32.1435,-28.6,-19.9186,-21.3682,-34.7421,-33.3986,-27.0862,-30.9777,-28.0993,-37.5568,-32.4689,-28.7277 v02.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-0.2333,-6.7328,-1.2754,-0.5753,0.2961,0.1566,-1.714,-1.5835,1.1096,-0.5763,-0.5565,-6.9268,-1.4407,-0.7726 v03.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-4.08,-7.7864,-3.1102,-4.1994,-3.8648,-3.7121,-6.4772,-6.1911,-2.6969,-2.9412,-4.4639,-7.6243,-3.2369,-4.5682 v04.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-13.7561,-29.7722,-19.9091,-14.8224,-14.7603,-14.7544,-18.8616,-18.3116,-12.9286,-16.2746,-14.3389,-29.65,-19.8524,-15.0111 @@ -2757,8 +2755,8 @@ v10.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-24.4965,-53.9796,-35.9597,-26.6966,-2 v11.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-24.9725,-54.0463,-35.8177,-27.1168,-26.5512,-26.148,-34.6368,-33.1777,-26.2483,-34.4077,-25.6494,-54.7758,-36.2667,-27.0091 v12.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-25.5357,-54.3993,-36.1376,-27.6387,-26.9544,-26.5699,-35.1169,-33.7829,-26.7764,-34.7805,-26.2307,-55.2417,-36.5644,-27.557 v13.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-25.4222,-54.4291,-36.1065,-27.5352,-24.143,-26.4852,-35.0569,-33.7571,-26.6557,-34.6636,-26.1433,-55.2403,-36.5699,-27.4694 -libaom-v3.12.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,0.6658,-16.6514,-21.3944,-0.6927,-1.095,-1.9896,4.7611,3.8894,0.1938,-2.1817,2.2152,-19.7416,-24.7639,1.8517 -libaom-v3.12.0-unconstrained,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-8.7013,10.3685,0.6343,-7.6684,-14.1284,-12.1765,-22.2628,-22.0074,-10.9577,-7.8158,-11.1351,9.237,-0.4274,-10.7679 +v14.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-25.4132,-54.3953,-36.0639,-27.5243,-24.1769,-26.4521,-34.9003,-33.5408,-26.633,-34.6394,-26.1277,-55.222,-36.4967,-27.4519 +v15.0.0,RA,B1,MINECRAFT_1080p_60_8bit.y4m,-25.479,-54.319,-36.1546,-27.5835,-24.2397,-26.5221,-34.7764,-33.4535,-26.6884,-34.7142,-26.1781,-55.0927,-36.5874,-27.4997 v02.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-1.7212,-3.4558,-3.149,-1.8478,-2.7634,-2.9845,-3.1007,-2.9629,-1.6493,0.3653,-2.0868,-2.5831,-2.6876,-2.0886 v03.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-6.481,-12.4196,-12.8235,-6.9767,-7.2067,-7.5413,-9.2242,-8.7002,-6.4684,-6.1112,-6.8631,-11.9683,-12.4793,-7.0126 v04.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-11.8855,-28.3505,-26.3761,-13.1833,-13.126,-13.6859,-17.8489,-16.9266,-12.0811,-14.3192,-12.2114,-28.3673,-26.1878,-12.5691 @@ -2771,8 +2769,8 @@ v10.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-18.7709,-49.0864,-47.3592,-21.50 v11.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-18.794,-50.4799,-49.1247,-21.6981,-22.6023,-22.4621,-29.1936,-28.3094,-21.9333,-27.7628,-19.041,-51.8511,-50.3268,-19.8211 v12.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-19.0305,-51.3376,-49.5807,-21.9881,-22.599,-22.525,-29.5923,-28.6125,-22.1245,-28.1143,-19.2905,-52.7863,-50.8226,-20.0877 v13.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-19.0527,-50.6976,-49.1171,-21.9392,-20.8319,-22.6971,-29.7848,-28.7691,-22.1909,-28.0799,-19.2721,-51.9795,-50.3789,-20.0564 -libaom-v3.12.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,7.4995,4.9138,2.1835,6.8345,3.2317,4.4441,1.2791,1.461,4.5838,4.1081,8.251,5.8608,2.5735,6.9529 -libaom-v3.12.0-unconstrained,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-4.6289,-1.4237,-3.0438,-4.2281,-4.9229,-4.3723,-6.2424,-6.4538,-4.1023,-4.1788,-6.6401,-3.6285,-5.4474,-6.034 +v14.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-19.0682,-50.8709,-49.2775,-21.9737,-20.9167,-22.7934,-29.767,-28.7128,-22.2238,-28.0858,-19.2968,-52.1878,-50.4987,-20.083 +v15.0.0,RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,-19.0841,-50.7419,-49.1313,-21.9727,-20.9229,-22.7942,-29.6913,-28.6737,-22.2366,-28.1175,-19.3125,-52.0759,-50.3478,-20.0957 v02.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-2.4569,-2.9922,-2.7677,-2.5184,-2.856,-2.8713,-4.1846,-3.8816,-2.5225,-2.2986,-2.6818,-3.0558,-2.9904,-2.7233 v03.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-9.7435,-8.7914,-6.4752,-9.4274,-9.9294,-10.2658,-7.2304,-7.2013,-8.8572,-8.8637,-9.9693,-8.7991,-6.6998,-9.3358 v04.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-15.2937,-21.0939,-18.1167,-15.969,-16.0685,-16.2666,-14.1882,-14.1769,-15.935,-16.9474,-15.7651,-21.0507,-18.3456,-16.8163 @@ -2785,8 +2783,8 @@ v10.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-27.7288,-43.3503,-38 v11.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-28.6702,-45.6986,-40.9736,-31.1384,-29.3074,-29.6375,-27.9309,-27.755,-31.1248,-35.3417,-28.7283,-45.8458,-39.8083,-32.8368 v12.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-28.4881,-45.3835,-40.5681,-30.9272,-29.0393,-29.4116,-27.8428,-27.6876,-30.8732,-35.0617,-28.5515,-45.5338,-39.4253,-32.6183 v13.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-28.7146,-45.3646,-40.612,-31.1146,-34.0483,-29.595,-28.0152,-27.8443,-31.0085,-35.16,-28.7521,-45.4301,-39.4403,-32.7469 -libaom-v3.12.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,2.9379,-11.281,-10.2654,2.0078,2.2725,1.6986,4.9879,4.5709,2.9862,-2.7573,5.751,1.8472,-3.7508,5.2673 -libaom-v3.12.0-unconstrained,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-10.6857,-13.1491,-14.6642,-10.8773,-15.6955,-14.3138,-18.312,-18.272,-12.2551,-14.7781,-8.8603,-2.9669,-8.092,-8.6014 +v14.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-28.603,-45.2087,-40.518,-31.002,-33.9837,-29.5063,-27.7573,-27.5878,-30.9193,-35.0863,-28.6559,-45.2705,-39.3586,-32.6454 +v15.0.0,RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,-28.6029,-45.2086,-40.5147,-31.0016,-33.984,-29.5068,-27.7539,-27.5858,-30.9199,-35.085,-28.6566,-45.2704,-39.3544,-32.6453 v02.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-6.5567,-15.1556,-18.4212,-7.3736,-7.9115,-7.5341,-7.165,-6.8685,-6.7402,-9.7952,-5.546,-13.2426,-11.8415,-6.3102 v03.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-14.9093,-11.6012,-24.3879,-15.1989,-15.7824,-15.6163,-19.8867,-18.9892,-14.0924,-17.917,-13.7503,-16.2453,-20.2323,-14.3582 v04.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-21.0131,-32.1166,-36.6536,-22.1265,-21.501,-21.5748,-26.1014,-25.0772,-20.0178,-27.644,-19.3949,-36.7461,-30.1699,-20.9995 @@ -2799,8 +2797,8 @@ v10.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-32.2576,-46.7539,-50.17 v11.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-31.7811,-48.5241,-52.4559,-33.3811,-30.9843,-31.6877,-34.4928,-33.7229,-30.1661,-41.2178,-30.2254,-52.9931,-46.3435,-32.3288 v12.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-32.0285,-48.8667,-52.0467,-33.5964,-31.1515,-31.915,-35.405,-34.6826,-30.3652,-41.4025,-30.5004,-53.1987,-45.8284,-32.5383 v13.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-31.9104,-48.8847,-52.4835,-33.5078,-35.1743,-31.7963,-34.6924,-33.9579,-30.2477,-41.3476,-30.4062,-52.7988,-45.6869,-32.4232 -libaom-v3.12.0,RA,B1,STARCRAFT_1080p60.y4m,0.8068,9.1932,16.5644,1.9451,7.3695,6.561,-2.0605,-2.7647,8.6518,27.3045,0.4955,8.6575,16.4305,1.3391 -libaom-v3.12.0-unconstrained,RA,B1,STARCRAFT_1080p60.y4m,-9.7823,0.3625,2.8985,-8.7025,-8.3191,-8.1281,-15.4386,-15.6939,-1.9197,8.8785,-8.2009,1.904,3.9704,-7.4032 +v14.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-31.877,-48.7443,-52.4626,-33.47,-35.1551,-31.768,-34.6456,-33.9019,-30.2157,-41.3057,-30.3823,-52.669,-45.6846,-32.3938 +v15.0.0,RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,-31.8595,-48.2388,-52.4485,-33.4346,-35.1116,-31.773,-34.5388,-33.8358,-30.2063,-41.2154,-30.3765,-52.5747,-45.6946,-32.3853 v02.0.0,RA,B1,STARCRAFT_1080p60.y4m,-2.29,-9.4009,-12.337,-3.302,-4.8226,-5.6049,-2.901,-2.8282,-1.1668,-1.9422,-2.4299,-9.4151,-12.3525,-2.9654 v03.0.0,RA,B1,STARCRAFT_1080p60.y4m,-6.0758,-12.7553,-15.152,-7.0089,-7.4476,-8.7996,-5.3326,-5.0937,-4.2777,-6.3775,-6.2757,-12.9055,-15.188,-6.7825 v04.0.0,RA,B1,STARCRAFT_1080p60.y4m,-12.1518,-24.3422,-27.6507,-13.8134,-13.6714,-15.2162,-11.8883,-11.7196,-10.4784,-16.0796,-12.5289,-24.4217,-27.6616,-13.465 @@ -2813,8 +2811,8 @@ v10.0.0,RA,B1,STARCRAFT_1080p60.y4m,-21.9357,-33.8382,-37.5698,-23.6102,-21.7462 v11.0.0,RA,B1,STARCRAFT_1080p60.y4m,-22.4154,-32.8829,-36.18,-23.8786,-21.7912,-22.9481,-23.0573,-22.8564,-23.0299,-35.1639,-23.0902,-33.0783,-36.2609,-23.9391 v12.0.0,RA,B1,STARCRAFT_1080p60.y4m,-23.3485,-33.4531,-36.5923,-24.7543,-22.5626,-23.7503,-24.1403,-23.9415,-23.8178,-36.6532,-24.0275,-33.6539,-36.6339,-24.8433 v13.0.0,RA,B1,STARCRAFT_1080p60.y4m,-23.442,-32.9156,-36.5142,-24.7982,-24.6549,-23.862,-24.1867,-24.0588,-23.9182,-35.8317,-24.1214,-33.1184,-36.581,-24.9093 -libaom-v3.12.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,4.5408,17.9634,0.9442,4.8014,-1.5406,-1.7364,7.3532,7.5144,2.6248,7.2449,4.0011,18.1056,1.7783,4.1943 -libaom-v3.12.0-unconstrained,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-11.6651,1.7042,-5.9896,-10.7371,-17.275,-15.703,-17.6079,-17.8836,-12.6004,-6.4626,-13.284,1.9334,-6.0787,-12.7492 +v14.0.0,RA,B1,STARCRAFT_1080p60.y4m,-23.3088,-32.9857,-36.3999,-24.6785,-24.5341,-23.715,-23.9323,-23.8272,-23.7565,-35.7507,-23.9867,-33.1951,-36.4632,-24.7842 +v15.0.0,RA,B1,STARCRAFT_1080p60.y4m,-23.3023,-32.9535,-36.3847,-24.6699,-24.5126,-23.6894,-23.9087,-23.821,-23.7424,-35.7278,-23.985,-33.162,-36.4477,-24.7806 v02.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-0.6754,1.7824,-2.3075,-0.7196,-1.8412,-2.1032,-0.8828,-0.9101,-0.3136,2.5132,-0.7869,1.0239,-2.7934,-0.8053 v03.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-6.7466,0.007,-8.1313,-6.5636,-6.9515,-7.2532,-7.0235,-6.5111,-5.8586,-2.0512,-6.7427,-0.6804,-8.7633,-6.698 v04.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-13.1919,-12.852,-19.2203,-13.5378,-14.0123,-14.537,-13.8098,-12.9397,-12.4953,-10.6948,-13.1562,-13.7142,-19.8359,-13.3816 @@ -2827,8 +2825,8 @@ v10.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-26.8527,-39.2134,-47.8338,-28. v11.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-27.7534,-43.0176,-51.2112,-30.0713,-29.7249,-30.0676,-30.3615,-29.141,-29.4652,-39.6997,-27.6061,-43.4414,-52.585,-28.8579 v12.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-28.2978,-42.7038,-51.3525,-30.5416,-30.0097,-30.4424,-30.3737,-29.1463,-29.8333,-40.0001,-28.1768,-43.2028,-52.7303,-29.4007 v13.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-28.3744,-42.435,-51.7282,-30.618,-30.1308,-30.57,-30.985,-29.7397,-29.9948,-40.3166,-28.2699,-42.9236,-53.1516,-29.5 -libaom-v3.12.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,6.1387,7.514,6.5548,6.2265,-0.3355,-0.5026,1.9724,1.8471,0.1024,6.7598,5.8784,7.1463,6.2524,6.0628 -libaom-v3.12.0-unconstrained,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-0.9136,1.8093,1.1792,-0.6488,-0.471,-0.6913,-3.3054,-2.9993,-1.003,1.3094,-1.1159,1.6883,1.0577,-0.6896 +v14.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-28.193,-43.2389,-51.5753,-30.4888,-30.0042,-30.4435,-30.8513,-29.4959,-29.8508,-40.3843,-28.0933,-43.7115,-52.9671,-29.338 +v15.0.0,RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,-28.1727,-43.1564,-51.6792,-30.4761,-29.9747,-30.4033,-30.8512,-29.4682,-29.8156,-40.3785,-28.0699,-43.6282,-53.0657,-29.3197 v02.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-1.7006,-5.1548,-5.2656,-2.0827,-1.7176,-1.9303,-2.6811,-2.6859,-2.3309,-6.3038,-1.7309,-5.1063,-5.2286,-2.1811 v03.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-7.8492,-7.9571,-8.9569,-7.917,-6.9233,-7.6273,-7.5527,-7.0335,-7.6123,-9.8604,-7.8399,-7.8899,-8.919,-7.9069 v04.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-13.818,-18.2292,-18.8289,-14.3354,-12.6378,-13.5983,-14.6675,-13.9041,-13.9053,-18.4107,-13.8073,-18.2037,-18.7919,-14.4797 @@ -2841,8 +2839,8 @@ v10.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.976 v11.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.6009,-26.6022,-27.7438,-24.8822,-25.4118,-26.4021,-29.3181,-27.4622,-25.9119,-29.1988,-24.6547,-26.6753,-27.8239,-25.0055 v12.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.9015,-26.8125,-27.5497,-25.1504,-25.48,-26.5341,-29.8113,-28.0477,-26.085,-29.8291,-24.9552,-26.8708,-27.6357,-25.263 v13.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.9911,-26.7565,-27.4523,-25.2222,-29.0654,-26.7229,-28.5968,-27.3346,-26.1289,-28.8238,-25.0442,-26.8225,-27.5273,-25.3314 -libaom-v3.12.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,5.6699,7.3324,7.8739,5.8722,4.0631,4.0363,4.5914,4.321,2.8255,4.2096,5.277,7.1993,7.9048,5.9756 -libaom-v3.12.0-unconstrained,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,4.1463,5.0165,4.6902,4.2202,3.402,3.3762,3.7017,3.4418,3.2504,2.6084,3.8664,4.9397,4.8035,4.2336 +v14.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.8128,-26.636,-27.3405,-25.0506,-28.9044,-26.5531,-28.3514,-27.0746,-25.9942,-28.7055,-24.8621,-26.6931,-27.4174,-25.1565 +v15.0.0,RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,-24.8157,-26.6645,-27.3385,-25.0545,-28.937,-26.5345,-28.3475,-27.0466,-25.9884,-28.7048,-24.8654,-26.725,-27.417,-25.1617 v02.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,3.2788,-0.3531,2.0573,3.0567,1.9394,2.1808,2.3744,1.8197,1.1445,-1.6862,3.1998,-0.3587,2.0692,2.7726 v03.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-8.5245,-10.0678,-9.2047,-8.63,-10.1996,-9.7614,-11.368,-9.669,-9.8397,-13.5427,-8.593,-10.0855,-9.1616,-8.8502 v04.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-24.4601,-36.8724,-32.4788,-25.4407,-25.7726,-25.7175,-25.7465,-24.0491,-26.2505,-32.3511,-24.5607,-36.7454,-32.3906,-26.4452 @@ -2855,8 +2853,8 @@ v10.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.3436,-53.3323,-47.9684, v11.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-41.8384,-52.5136,-47.4093,-42.6189,-43.28,-43.0563,-42.4904,-41.0139,-43.703,-50.0113,-41.9904,-52.4353,-47.3421,-43.4284 v12.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-42.1177,-52.7452,-47.8733,-42.9045,-43.0231,-43.0881,-41.6218,-40.6077,-43.866,-50.0417,-42.267,-52.6785,-47.8154,-43.705 v13.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-42.4494,-52.508,-47.8588,-43.1918,-44.3723,-43.4917,-42.5818,-41.1113,-44.1452,-50.0447,-42.5943,-52.4496,-47.8098,-43.9815 -libaom-v3.12.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,8.7916,12.3539,10.9236,9.091,6.9885,7.2649,-0.3693,0.7184,5.6208,7.4886,5.5825,11.5164,10.9555,6.3852 -libaom-v3.12.0-unconstrained,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-2.025,-0.8446,-0.3709,-1.8727,-3.6677,-3.1367,-8.0167,-7.5781,-2.3343,-3.0579,-2.0568,-0.1396,0.4071,-1.7397 +v14.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-42.3533,-52.4108,-47.7643,-43.0957,-44.2216,-43.3081,-42.2364,-40.7453,-43.9532,-49.7708,-42.4988,-52.3533,-47.7182,-43.871 +v15.0.0,RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,-42.3675,-52.4262,-47.8134,-43.1119,-44.2268,-43.3343,-42.3369,-40.8059,-43.9497,-49.8226,-42.5134,-52.3566,-47.7689,-43.8995 v02.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,0.2819,-7.8345,-8.0395,-0.5987,-0.4576,-0.5192,0.2678,0.4269,-1.3447,-7.2824,0.1146,-7.7548,-7.9054,-0.6367 v03.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-7.9966,-13.2059,-13.2898,-8.5521,-7.4669,-8.0827,-8.2454,-7.5063,-8.6687,-13.5237,-8.2482,-13.2287,-13.2534,-8.7226 v04.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-19.7238,-28.5506,-28.4036,-20.6689,-19.7118,-20.103,-23.6567,-22.3273,-20.8518,-27.857,-20.8095,-28.7122,-28.5304,-21.626 @@ -2869,8 +2867,8 @@ v10.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-28.94 v11.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.3278,-41.5597,-42.1226,-33.3642,-32.201,-32.7079,-39.8755,-38.6659,-34.1142,-41.5741,-34.4349,-42.4543,-42.7069,-35.272 v12.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.4489,-41.5614,-42.0385,-33.4643,-32.1573,-32.6867,-40.3966,-38.8499,-34.1712,-41.7118,-34.5231,-42.4271,-42.5968,-35.3303 v13.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.9775,-42.0327,-42.2078,-33.9722,-33.976,-33.2146,-41.2719,-39.7424,-34.7982,-41.7503,-35.0779,-42.8765,-42.7549,-35.8742 -libaom-v3.12.0,RA,B2,MobileDeviceScreenSharing.y4m,92.3389,70.3034,67.5221,90.387,91.7003,91.8652,95.1722,91.9305,88.8641,86.2994,92.4022,72.7951,69.0034,91.0135 -libaom-v3.12.0-unconstrained,RA,B2,MobileDeviceScreenSharing.y4m,89.236,70.5228,61.8075,87.3627,97.418,95.8149,85.9532,84.8242,86.9684,79.0705,89.2985,72.123,64.4826,88.2464 +v14.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.8441,-42.0391,-42.2221,-33.855,-33.8802,-33.0879,-41.2258,-39.6667,-34.6446,-41.7015,-34.9422,-42.8843,-42.8025,-35.7559 +v15.0.0,RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,-32.8466,-42.0537,-42.1426,-33.8535,-33.8814,-33.1068,-41.2207,-39.6368,-34.639,-41.6391,-34.9414,-42.9046,-42.7187,-35.7525 v02.0.0,RA,B2,MobileDeviceScreenSharing.y4m,0.0,-15.6751,-9.6289,0.0,0.0,0.0,0.0,0.0,0.0,-7.8673,0.0,-13.4551,-10.0669,0.0 v03.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-11.9042,-28.3922,-24.9134,-13.2319,-9.8602,-10.3197,-10.3938,-8.7298,-11.541,-20.3258,-11.9032,-27.0971,-24.8048,-12.4015 v04.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-25.9921,-39.0902,-43.0349,-27.2917,-24.1608,-24.7743,-24.1979,-22.1074,-26.3788,-34.9947,-25.9937,-37.4524,-41.5258,-26.455 @@ -2883,8 +2881,8 @@ v10.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-43.2138,-56.456,-61.1947,-44.6775,- v11.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-42.9439,-55.1953,-55.8558,-44.1742,-42.5404,-42.6515,-45.5504,-43.8188,-44.583,-51.0343,-42.9583,-54.9401,-56.1658,-43.6746 v12.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-43.5703,-55.2768,-59.1462,-44.8355,-43.4629,-43.5145,-46.635,-44.7987,-45.3612,-51.8973,-43.5813,-55.3317,-58.867,-44.2609 v13.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-43.9977,-56.0622,-58.0791,-45.201,-44.7517,-43.8504,-47.7113,-45.877,-45.7933,-51.7054,-44.006,-55.9643,-57.3394,-44.6699 -libaom-v3.12.0,RA,B2,SceneComposition_2.y4m,33.7728,18.6161,13.7918,31.7838,27.7708,27.7367,31.5707,32.327,26.4077,27.4648,33.6304,18.0883,12.6229,30.3369 -libaom-v3.12.0-unconstrained,RA,B2,SceneComposition_2.y4m,24.843,11.9498,8.397,23.1257,21.3928,22.4427,27.766,27.5957,23.4835,20.7711,24.8341,12.2267,9.1127,22.3935 +v14.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-43.6642,-55.7377,-57.85,-44.8708,-44.3847,-43.355,-47.1295,-45.2616,-45.345,-51.3489,-43.6708,-55.6213,-57.0093,-44.3268 +v15.0.0,RA,B2,MobileDeviceScreenSharing.y4m,-43.6702,-55.6529,-57.8704,-44.8737,-44.3551,-43.3608,-47.117,-45.2642,-45.3541,-51.3555,-43.6766,-55.5612,-57.0223,-44.3314 v02.0.0,RA,B2,SceneComposition_2.y4m,-2.9567,-24.9282,-28.9739,-5.7866,-3.1203,-2.9826,1.1833,1.3982,-5.6586,-16.6377,-2.9631,-24.613,-28.059,-6.1367 v03.0.0,RA,B2,SceneComposition_2.y4m,-13.6487,-23.2123,-35.3567,-15.5212,-13.5506,-13.6184,-13.9203,-12.5526,-15.3857,-22.5659,-13.6606,-23.4252,-34.5336,-15.9442 v04.0.0,RA,B2,SceneComposition_2.y4m,-23.343,-39.938,-47.2533,-25.8847,-24.1017,-24.4476,-24.9807,-23.4185,-26.226,-38.496,-23.3466,-39.7703,-45.7965,-26.3754 @@ -2897,8 +2895,8 @@ v10.0.0,RA,B2,SceneComposition_2.y4m,-38.5978,-57.6125,-62.3973,-41.4439,-41.152 v11.0.0,RA,B2,SceneComposition_2.y4m,-40.0565,-58.8716,-63.7131,-42.8358,-42.7629,-42.7394,-46.2431,-44.8257,-44.4816,-55.9433,-40.0804,-59.0232,-64.0054,-43.382 v12.0.0,RA,B2,SceneComposition_2.y4m,-40.5421,-58.7249,-63.2538,-43.1914,-42.5807,-43.0942,-45.6934,-44.4503,-44.6965,-55.6552,-40.5674,-58.862,-63.4644,-43.7364 v13.0.0,RA,B2,SceneComposition_2.y4m,-40.5911,-58.8046,-63.569,-43.2626,-43.6297,-43.1659,-45.7098,-44.626,-44.7837,-55.8441,-40.6156,-58.974,-63.8331,-43.8073 -libaom-v3.12.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,5.0945,2.0741,0.0967,4.6474,3.2501,3.1305,8.5392,7.8476,4.1413,4.8964,5.2726,3.6738,4.8243,4.9481 -libaom-v3.12.0-unconstrained,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,8.3917,10.5826,5.9519,8.3696,9.6066,9.5036,16.0038,14.0425,9.5176,17.849,5.9086,0.0681,2.5508,4.3867 +v14.0.0,RA,B2,SceneComposition_2.y4m,-40.2809,-58.6791,-63.3974,-42.969,-43.261,-42.8163,-45.3506,-44.2041,-44.5794,-55.6288,-40.3039,-58.8502,-63.6525,-43.501 +v15.0.0,RA,B2,SceneComposition_2.y4m,-40.2515,-58.6057,-63.307,-42.9324,-43.2344,-42.7836,-45.3289,-44.1837,-44.5297,-55.5727,-40.2744,-58.7778,-63.5533,-43.4661 v02.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-0.9899,-11.5035,-9.8602,-2.0508,-2.1263,-2.0298,-2.8138,-1.9271,-2.289,-7.4136,-1.0153,-8.619,-9.7145,-3.1827 v03.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-11.7683,-17.982,-15.086,-12.2872,-12.7908,-12.6486,-12.9347,-11.9987,-11.9635,-12.251,-11.8566,-18.5052,-18.6952,-13.6357 v04.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-31.5215,-39.312,-39.0119,-32.3885,-31.1571,-31.5621,-30.6558,-30.0477,-30.682,-30.0245,-32.1597,-42.7629,-44.3588,-35.1109 @@ -2911,8 +2909,8 @@ v10.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.1742,-63.6304,-63.6442,-5 v11.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.2455,-64.5876,-63.2341,-53.7149,-54.4461,-54.5352,-54.5068,-54.4063,-53.6942,-58.0595,-52.0153,-66.8477,-66.3579,-55.8169 v12.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.5129,-63.444,-62.2968,-53.8014,-54.8133,-55.0005,-55.1137,-54.705,-53.8379,-58.0422,-52.2101,-64.8541,-65.8014,-55.6065 v13.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.6373,-63.4936,-62.1246,-53.841,-55.5937,-55.0499,-55.0404,-54.9415,-53.7701,-57.1296,-52.4205,-64.8296,-65.9535,-55.7757 -libaom-v3.12.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,5.2477,3.2057,3.4199,5.0315,2.3392,1.9937,2.6936,2.9001,3.0478,3.5902,0.2075,-0.565,-0.3196,0.0923 -libaom-v3.12.0-unconstrained,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,2.7235,0.8492,1.0412,2.5051,2.2689,1.876,-1.5277,-1.3486,3.0524,7.4313,-2.8043,-7.9576,-7.1021,-3.8886 +v14.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.491,-63.6959,-62.2168,-53.7691,-55.2981,-54.5157,-54.3197,-54.3796,-53.7386,-57.698,-52.2847,-64.6404,-65.8567,-55.6376 +v15.0.0,RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,-52.4989,-63.6447,-62.2788,-53.7766,-55.3188,-54.5298,-54.2723,-54.3355,-53.7282,-57.6221,-52.309,-64.662,-65.9177,-55.6655 v02.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-1.0324,-13.0,-10.4755,-2.1221,-1.5196,-1.9312,0.2883,0.1475,-1.9215,-5.0491,-0.5142,-5.1621,-4.8974,-1.2873 v03.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-10.7893,-20.2926,-17.946,-11.6397,-11.5918,-11.7816,-13.695,-11.7847,-11.2391,-7.7501,-10.1964,-12.9361,-11.588,-10.597 v04.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-17.7191,-30.2355,-28.359,-18.9359,-20.0328,-20.6353,-20.7856,-18.7714,-19.2313,-24.6525,-16.8755,-22.0522,-22.4131,-17.8995 @@ -2925,8 +2923,8 @@ v10.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-32.5836,-42.8252,-41.7236,- v11.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-33.725,-43.6326,-42.5439,-34.7482,-37.3999,-37.9221,-38.2564,-37.4776,-35.9315,-39.9198,-33.1059,-35.7535,-36.1344,-33.5812 v12.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-34.0896,-43.7319,-42.6379,-35.0934,-37.8688,-38.4283,-38.6888,-37.7591,-36.2168,-40.9291,-33.3849,-35.7326,-36.3427,-33.8275 v13.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-34.1821,-42.9651,-41.4972,-35.0605,-39.5297,-38.528,-38.2139,-37.4458,-36.1226,-35.8619,-33.3815,-35.8521,-36.0617,-33.8221 -libaom-v3.12.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,1.2381,9.7406,9.3764,2.0354,2.774,1.9634,1.2276,0.4273,3.2104,7.6325,0.5043,8.4953,8.4565,1.8002 -libaom-v3.12.0-unconstrained,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,0.3287,4.6621,4.7542,0.7344,-1.3424,-1.9991,-2.2511,-2.5488,-1.1881,0.2841,-0.289,4.3039,4.3192,0.4639 +v14.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-34.0864,-42.9073,-41.473,-34.9709,-39.2406,-38.2358,-37.9137,-37.2069,-35.924,-35.9846,-33.2647,-35.6127,-35.9337,-33.6899 +v15.0.0,RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,-34.086,-42.8217,-41.83,-34.9846,-39.3633,-38.3612,-38.2166,-37.4149,-36.0174,-36.1773,-33.3085,-35.6901,-36.1493,-33.7525 v02.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,7.382,-8.734,-8.981,5.6729,7.9468,8.3893,-3.8827,-3.7232,7.2705,-8.467,0.0,-7.2004,-7.5257,24.902 v03.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-12.3676,-22.165,-21.7306,-13.3505,-11.2001,-11.7751,-14.6832,-12.789,-12.973,-21.8973,-12.4183,-21.8973,-22.0438,-13.4785 v04.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-25.0227,-40.0396,-41.0369,-26.702,-24.9236,-25.4848,-27.7162,-25.8893,-26.58,-37.3428,-25.0108,-39.8384,-41.0631,-26.749 @@ -2939,8 +2937,8 @@ v10.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-44.6333,-59.8209,-6 v11.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-45.4127,-59.3851,-60.4605,-47.0685,-46.5532,-46.9266,-47.9558,-46.4881,-47.5259,-56.652,-45.4561,-59.3378,-60.6875,-47.1444 v12.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-45.5377,-58.4235,-60.3593,-47.1007,-46.8771,-47.3012,-48.2909,-46.8229,-47.7251,-56.4928,-45.5899,-58.3056,-60.5531,-47.1892 v13.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-45.7326,-58.7413,-59.9336,-47.263,-48.7053,-47.0978,-48.6089,-46.9235,-47.7943,-56.0707,-45.7808,-58.6243,-60.1374,-47.352 -libaom-v3.12.0,RA,B2,Wikipedia_1920x1080p30.y4m,19.3725,10.984,11.5508,18.4884,21.8178,20.1299,20.7646,17.4725,16.3244,14.6632,19.5732,9.8725,11.6957,17.6537 -libaom-v3.12.0-unconstrained,RA,B2,Wikipedia_1920x1080p30.y4m,16.0285,12.237,10.8185,15.6025,13.1071,12.8738,17.8992,16.1028,12.4758,12.5706,16.2118,12.0491,11.3017,15.4694 +v14.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-45.6293,-58.5581,-60.03,-47.1681,-48.3756,-46.8948,-48.2607,-46.6022,-47.5786,-56.1072,-45.6556,-58.4776,-60.2369,-47.2365 +v15.0.0,RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,-45.4876,-58.3265,-59.8892,-47.0227,-48.3364,-46.9184,-48.2777,-46.5841,-47.4711,-55.9518,-45.5216,-58.2263,-60.0629,-47.0975 v02.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-2.1702,-13.6159,-14.3966,-3.3109,-4.36,-4.5641,-6.4757,-6.5913,-4.312,-9.5616,-2.1467,-13.5331,-14.5071,-3.6079 v03.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-12.9817,-22.3458,-22.8872,-13.9073,-13.5762,-13.8253,-13.5048,-12.5334,-13.4309,-18.6074,-12.9331,-22.5589,-23.0307,-14.1896 v04.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-22.8692,-34.6672,-36.3941,-24.1413,-23.5981,-23.7689,-24.2193,-23.4458,-24.3046,-30.4386,-22.8674,-34.5785,-36.3953,-24.6244 @@ -2953,8 +2951,8 @@ v10.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-35.5483,-49.9371,-50.4774,-37.1359,-37 v11.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-36.4746,-50.2401,-50.5433,-37.9549,-37.6483,-37.8995,-38.8072,-37.5046,-37.9258,-45.3174,-36.4861,-50.6485,-50.6534,-38.5194 v12.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-36.9611,-50.0616,-50.9956,-38.3919,-38.1483,-38.3094,-39.3964,-38.5285,-38.6015,-46.3463,-36.9714,-50.3704,-51.0326,-38.9228 v13.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-37.2644,-50.5279,-50.747,-38.6738,-38.8522,-38.3425,-39.6233,-38.443,-38.5891,-46.1794,-37.2548,-50.8081,-50.8346,-39.1759 -libaom-v3.12.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-4.9388,-0.6166,3.87,-4.4479,-7.1432,-5.9363,-4.8979,-5.1851,-6.6076,-3.4578,-5.3793,-0.8661,3.5575,-5.1084 -libaom-v3.12.0-unconstrained,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-7.4273,-4.9573,-15.0579,-7.7136,-0.4693,-7.6794,-9.8419,-10.021,-9.395,-7.2649,-7.8118,-5.0455,-15.2477,-7.7517 +v14.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-36.8332,-50.0503,-50.5228,-38.2465,-38.4392,-37.9845,-39.1934,-38.0912,-38.2585,-45.843,-36.8218,-50.3806,-50.5328,-38.7454 +v15.0.0,RA,B2,Wikipedia_1920x1080p30.y4m,-36.8434,-50.0376,-50.5254,-38.2557,-38.4415,-37.9856,-39.1992,-38.0954,-38.2717,-45.8438,-36.832,-50.357,-50.5356,-38.7531 v02.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-2.0342,-11.7468,-25.2906,-4.5499,0.5061,-1.4959,-3.1371,-3.1553,-1.9882,-6.9771,-2.0841,-11.7286,-25.3154,-2.8179 v03.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-17.8786,-24.6578,-37.2744,-19.5864,-13.696,-16.7788,-28.1151,-26.6887,-16.7146,-21.1853,-18.0234,-24.5884,-37.1387,-18.5734 v04.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-27.1755,-32.5865,-50.8776,-29.1647,-23.2656,-26.8138,-39.3144,-37.128,-25.8962,-30.1626,-27.3501,-32.533,-50.8688,-27.9207 @@ -2967,8 +2965,8 @@ v10.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-41.1057,-47.8028,-58.6605,- v11.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-42.5217,-49.6973,-57.6267,-44.1053,-42.6896,-42.3976,-51.9769,-50.1819,-41.5371,-45.8625,-42.8263,-49.8036,-57.6927,-43.2972 v12.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-42.4781,-50.5863,-53.7408,-43.8634,-42.2795,-42.1713,-52.0541,-50.2755,-41.3363,-46.0398,-42.7807,-50.6849,-53.8391,-43.2451 v13.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-42.6354,-49.4133,-54.6337,-43.9479,-41.6149,-42.3674,-52.1808,-50.2892,-41.48,-45.9091,-42.9372,-49.534,-54.7115,-43.3705 -libaom-v3.12.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,3.0091,-8.4467,-16.7818,1.9266,1.6874,2.1229,3.2784,3.0962,2.472,-2.2133,3.8672,-8.6496,-16.6107,3.5015 -libaom-v3.12.0-unconstrained,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-12.5044,0.3136,6.0544,-11.3549,-12.2651,-14.6481,-11.5524,-11.7338,-12.0424,-15.7296,-13.1773,0.3286,6.3364,-12.516 +v14.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-42.4296,-49.1779,-54.3018,-43.7358,-41.4687,-42.1874,-52.0411,-50.1515,-41.311,-45.6857,-42.7313,-49.2998,-54.3804,-43.1602 +v15.0.0,RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,-42.4214,-49.2243,-54.288,-43.7284,-41.4575,-42.1806,-52.084,-50.168,-41.3027,-45.7016,-42.7232,-49.3461,-54.3653,-43.1544 v02.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,9.1953,-18.2776,-48.7348,4.5998,4.6474,8.6421,6.4908,6.3347,7.2331,1.9893,9.6764,-18.7382,-48.4753,8.2874 v03.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-10.0811,-38.7541,-52.4197,-13.5413,-9.7408,-9.7247,-14.6463,-14.0092,-10.4541,-19.5974,-10.2731,-38.9533,-52.3341,-11.9848 v04.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-15.7683,-47.8797,-59.7132,-19.5701,-14.3937,-15.1639,-22.7164,-21.5473,-15.8739,-26.7155,-15.8972,-47.9948,-59.6468,-17.9312 @@ -2981,8 +2979,8 @@ v10.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-25.5264,-62.4888,-62.7456 v11.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-25.5999,-63.3576,-62.9502,-29.342,-24.3951,-24.2566,-35.5854,-34.2128,-25.568,-38.7151,-25.9493,-63.5654,-63.0113,-28.5279 v12.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-24.9379,-63.7481,-63.4565,-28.7992,-23.666,-23.3515,-34.9938,-33.6391,-24.8443,-38.7185,-25.2829,-63.9059,-63.5157,-27.9293 v13.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-24.957,-62.8105,-61.2922,-28.6202,-24.4117,-23.3838,-34.9931,-33.6336,-24.8416,-37.7295,-25.3059,-62.9592,-61.3273,-27.8938 -libaom-v3.12.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-3.031,-14.6605,-34.5593,-4.1096,1.9622,-4.1118,0.6064,0.5115,-4.0272,-12.1149,-4.5401,-17.2542,-35.6944,-5.2514 -libaom-v3.12.0-unconstrained,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-15.3832,-9.9252,-0.1263,-14.5031,-17.3907,-17.664,-24.5605,-24.5136,-16.1085,-20.0229,-19.6056,-12.829,-1.9531,-18.7759 +v14.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-24.8586,-62.8038,-61.4689,-28.5339,-24.3125,-23.2737,-34.9226,-33.5452,-24.7437,-37.6994,-25.2057,-62.9464,-61.5103,-27.7964 +v15.0.0,RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,-24.8702,-63.0511,-61.7409,-28.5734,-24.2949,-23.3063,-34.8504,-33.4897,-24.7609,-37.88,-25.2199,-63.2084,-61.7619,-27.8203 v02.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-25.5545,-26.5747,-38.6338,-27.1435,-13.05,-23.2687,4.7635,4.0182,-21.2155,-38.7416,-25.8695,-26.3272,-38.6201,-26.6847 v03.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-14.2897,-25.6181,-33.2079,-15.8206,-14.1009,-11.629,-27.2371,-25.8293,-13.2786,-23.7028,-14.521,-26.0354,-32.0338,-16.015 v04.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-17.2062,-33.0821,-45.7937,-19.5146,-17.0417,-14.735,-33.8392,-31.562,-16.3309,-28.3957,-17.4621,-33.4226,-46.249,-19.6645 @@ -2995,8 +2993,8 @@ v10.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-30.2729,-48.0562,-60.4746, v11.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-30.3172,-52.0137,-65.7951,-33.1525,-29.4217,-26.1075,-48.9703,-46.1255,-28.8543,-56.4873,-31.1131,-53.0143,-65.7848,-33.7978 v12.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-30.7668,-53.9429,-65.985,-33.7338,-29.0505,-26.3027,-49.5893,-46.5169,-29.4701,-58.99,-31.4553,-54.9345,-66.093,-34.3378 v13.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-30.6605,-53.7316,-61.3747,-33.3629,-22.7956,-26.1597,-49.9003,-46.9164,-29.2812,-56.7169,-31.3869,-54.7939,-62.2715,-34.1549 -libaom-v3.12.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,7.9637,-6.5155,-7.5098,6.9345,4.0126,5.432,10.431,10.0042,6.8303,0.7782,10.1932,-5.361,-7.2154,9.587 -libaom-v3.12.0-unconstrained,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-4.2581,-7.8339,-10.0392,-4.5653,-6.619,-5.0473,-3.9405,-4.4028,-4.8311,-7.9361,-6.6053,-8.5317,-11.5184,-6.7595 +v14.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-30.3042,-53.427,-60.8018,-32.9907,-22.6493,-25.927,-49.4405,-46.5122,-28.9811,-56.3663,-31.0245,-54.498,-61.6955,-33.7845 +v15.0.0,RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,-30.2975,-53.6575,-60.5727,-32.9855,-22.6525,-25.9124,-49.8465,-46.7356,-28.9762,-56.156,-30.9868,-54.7405,-61.2384,-33.7605 v02.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-6.3989,-17.2395,-22.9628,-7.6957,-6.9919,-7.9824,-12.1085,-11.9766,-7.3993,-8.6565,-5.9203,-18.0971,-25.1786,-6.5898 v03.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-15.7085,-31.2138,-31.4554,-16.9388,-11.1117,-13.4077,-14.6503,-14.6474,-14.4429,-17.6095,-15.8705,-31.937,-32.6287,-16.6733 v04.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-21.0425,-43.4422,-41.8802,-22.7735,-15.7528,-19.0131,-21.4423,-21.247,-19.9611,-25.5527,-21.2504,-44.1694,-43.0265,-22.5545 @@ -3009,8 +3007,8 @@ v10.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-29.3899,-60.2015,-61.2876, v11.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-28.8228,-60.0842,-61.6087,-31.6425,-22.4359,-26.0575,-31.7374,-31.4253,-27.7952,-37.1354,-29.109,-61.4179,-62.9546,-30.9841 v12.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-28.6585,-60.4598,-61.3879,-31.5067,-22.5387,-25.9498,-31.9629,-31.585,-27.6161,-37.0772,-28.9247,-61.7848,-62.7834,-30.8117 v13.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-28.6689,-59.6581,-61.2689,-31.4533,-30.9107,-25.9456,-31.8282,-31.4893,-27.6104,-36.8521,-28.9232,-61.0257,-62.6578,-30.771 -libaom-v3.12.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,0.8104,-2.0857,-3.039,0.2424,-1.3824,-0.632,0.4059,0.0045,-1.2435,-1.0565,1.7699,-1.4272,-2.4544,0.9573 -libaom-v3.12.0-unconstrained,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-3.5638,-5.4855,-4.8283,-3.795,-6.3968,-6.0422,-5.4996,-5.2637,-3.9645,-5.9117,-3.3131,-5.4691,-4.9199,-3.6416 +v14.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-28.6502,-59.6605,-61.2164,-31.4292,-30.8971,-25.9207,-31.7892,-31.4515,-27.5929,-36.8237,-28.905,-61.036,-62.6176,-30.7526 +v15.0.0,RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,-28.6435,-59.7053,-61.2021,-31.4258,-30.8879,-25.9114,-31.7797,-31.4158,-27.5844,-36.6573,-28.8951,-61.0855,-62.6104,-30.7427 v02.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-2.4401,-3.9908,-2.5278,-2.5559,-1.4515,-1.6277,-2.8481,-2.7095,-1.9524,-2.178,-2.4823,-4.0254,-2.5465,-2.6011 v03.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-12.1737,-9.3164,-8.3958,-11.6923,-11.1053,-11.1703,-16.9282,-15.6855,-10.9383,-9.8952,-12.241,-9.4055,-8.4317,-11.6188 v04.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-18.6023,-19.2423,-18.011,-18.607,-17.6546,-17.7162,-25.9709,-24.1163,-17.5859,-17.4896,-18.6959,-19.3137,-18.1308,-18.6699 @@ -3023,8 +3021,8 @@ v10.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-27.9465,-24.7188,-23.7101 v11.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-28.7211,-24.644,-23.6728,-28.0636,-26.5437,-26.6133,-35.7875,-34.2008,-26.9996,-24.7999,-29.0516,-24.8556,-23.9928,-28.1537 v12.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-28.6303,-24.9727,-24.5287,-28.0724,-26.2717,-26.3487,-35.8303,-34.252,-26.9061,-24.9742,-28.9475,-25.1764,-24.7639,-28.177 v13.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-28.9338,-25.6998,-24.3243,-28.3681,-30.5818,-26.7009,-36.2978,-34.6575,-27.1619,-25.3512,-29.254,-25.9305,-24.5644,-28.4736 -libaom-v3.12.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,0.9384,-10.6853,-10.6651,0.0854,-1.5033,-1.6087,1.9327,1.8728,1.3042,-3.5245,1.2843,-10.9569,-11.3573,0.9221 -libaom-v3.12.0-unconstrained,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-12.5493,7.7506,9.5662,-10.9168,-16.4661,-15.6166,-20.3537,-20.239,-14.2562,-12.3314,-15.3051,6.6691,8.4091,-14.4205 +v14.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-28.562,-25.4432,-24.1091,-28.0158,-30.2587,-26.3536,-35.6629,-34.0329,-26.8572,-25.0455,-28.9004,-25.6872,-24.3656,-28.1445 +v15.0.0,RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,-28.5653,-25.3547,-24.0924,-28.0114,-30.261,-26.356,-35.6561,-34.0328,-26.8542,-25.0358,-28.9014,-25.5856,-24.3423,-28.1363 v02.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,1.5756,-2.1118,-10.7323,0.8327,1.125,0.9983,-2.8813,-2.7268,0.4172,6.2804,2.0309,-3.937,-13.0034,1.7423 v03.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-7.2653,-15.633,-33.3921,-8.9514,-6.5781,-6.9972,-13.1865,-12.126,-6.2832,-10.2449,-7.429,-16.5979,-34.8507,-8.1192 v04.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-11.3192,-31.8559,-44.8199,-14.145,-10.6626,-11.1607,-19.0659,-17.6748,-10.3381,-17.8564,-11.4471,-32.8776,-46.1447,-12.6564 @@ -3037,8 +3035,8 @@ v10.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-20.8322,-47.1811,-53.6642,- v11.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-21.4249,-47.4509,-56.0959,-24.6932,-20.2119,-20.8783,-30.094,-29.021,-20.6677,-31.5802,-21.848,-48.1518,-57.3211,-23.2242 v12.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-21.6118,-48.4259,-55.7607,-24.8948,-20.1245,-20.8457,-30.0547,-29.0571,-20.7325,-31.377,-22.0355,-49.107,-56.9625,-23.4319 v13.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-21.7995,-48.1889,-54.0052,-24.9413,-21.6489,-21.1318,-30.0723,-29.0138,-20.9273,-32.0774,-22.2381,-49.009,-55.2918,-23.6012 -libaom-v3.12.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,2.7906,16.749,0.7737,3.1123,10.0304,8.2687,6.0201,5.0884,3.5512,7.7169,2.534,16.6178,0.7867,2.7179 -libaom-v3.12.0-unconstrained,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-14.302,-7.9901,-17.7522,-14.2859,-19.7221,-17.788,-18.8431,-18.9428,-15.8499,-15.2448,-15.6127,-7.9408,-17.5096,-15.5082 +v14.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-21.6848,-47.8824,-53.7922,-24.8094,-21.5561,-21.0009,-30.0235,-28.9553,-20.8199,-31.8534,-22.1207,-48.7175,-55.096,-23.4781 +v15.0.0,RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,-21.6808,-47.8942,-53.9598,-24.8162,-21.5494,-21.0191,-30.1356,-29.0463,-20.8381,-31.9261,-22.1151,-48.7041,-55.2218,-23.472 v02.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-2.0854,-51.2349,-59.9434,-8.1409,-2.2423,-2.2531,-0.7076,-0.932,-2.8145,-15.7637,-2.1528,-51.2256,-59.6344,-3.0918 v03.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-10.2462,-55.2016,-60.9314,-15.517,-9.7389,-10.1193,-14.4454,-13.8835,-10.2196,-21.0679,-10.3346,-55.0955,-60.5523,-11.2069 v04.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-14.4157,-60.4477,-68.2175,-20.2358,-14.3223,-14.7222,-21.1414,-20.3542,-14.2704,-27.4911,-14.4786,-60.3786,-68.0147,-15.4528 @@ -3051,8 +3049,8 @@ v10.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-23.0777,-65.8804,-72.1529, v11.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-23.7279,-63.4552,-70.8054,-28.8559,-21.1042,-21.7618,-30.9319,-29.7078,-23.8586,-35.1538,-24.1315,-63.4291,-70.7822,-25.0294 v12.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-24.0564,-67.4252,-70.5857,-29.2861,-21.3739,-22.0833,-31.7761,-30.5698,-24.1662,-35.9671,-24.4467,-67.4864,-70.5763,-25.3696 v13.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-24.2033,-65.2477,-65.9376,-29.0113,-22.7075,-22.2287,-32.1649,-30.7083,-24.2845,-34.7512,-24.5976,-65.2857,-65.8387,-25.4602 -libaom-v3.12.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,2.2,7.9819,6.5543,2.6401,-0.7046,0.7102,0.1382,0.6951,0.9549,6.2195,1.9865,7.9081,6.4255,2.2017 -libaom-v3.12.0-unconstrained,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-9.6383,-12.9221,-13.9107,-10.0011,-8.0271,-8.4947,-11.5916,-12.172,-9.1915,-11.9424,-9.9133,-12.9735,-13.9174,-10.0331 +v14.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-23.7876,-65.017,-65.4956,-28.5929,-22.3862,-21.8282,-31.5808,-30.1365,-23.9067,-34.325,-24.1799,-65.0563,-65.3944,-25.0426 +v15.0.0,RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,-23.7821,-64.99,-65.5308,-28.5931,-22.3822,-21.8364,-31.6136,-30.1622,-23.9123,-34.334,-24.1743,-65.0287,-65.4294,-25.0374 v02.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-5.0078,-20.7919,-32.856,-7.7667,-4.5595,-4.7583,-5.8603,-5.8659,-5.4725,-10.9366,-5.0118,-20.7508,-32.7297,-5.8127 v03.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-20.6909,-36.3142,-43.5008,-23.1559,-17.982,-19.2498,-28.4839,-26.6469,-19.8809,-26.8085,-20.7201,-36.1859,-43.4234,-21.4755 v04.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-25.1693,-43.017,-52.3517,-28.0471,-22.2652,-23.6616,-34.9043,-31.9037,-24.2815,-32.697,-25.1943,-42.9553,-52.1241,-26.08 @@ -3065,8 +3063,8 @@ v10.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-35.4572,-49.2674,-53.2465,- v11.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-35.5362,-51.5545,-53.4408,-37.5995,-32.2049,-33.4059,-42.6509,-40.5666,-34.4447,-42.3,-35.6665,-51.5503,-53.3748,-36.3619 v12.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-36.1662,-50.6054,-55.3233,-38.248,-32.4936,-33.8656,-44.3756,-41.8768,-34.9349,-42.0224,-36.2916,-50.6036,-55.3062,-36.971 v13.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-36.1893,-49.8451,-47.5878,-37.6675,-37.0939,-33.9882,-42.9342,-40.7561,-34.9155,-41.7333,-36.3193,-49.8245,-47.3774,-36.8783 -libaom-v3.12.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,8.7376,1.6784,-1.444,7.4139,4.3354,5.9894,0.1051,0.3055,5.6221,3.5799,9.6127,2.7499,-1.0121,7.8026 -libaom-v3.12.0-unconstrained,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-3.7948,-2.2515,-1.2899,-3.5165,-3.7418,-3.3239,-5.1876,-5.455,-3.3794,-4.3646,-6.2014,-3.8815,-2.9834,-5.6994 +v14.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-35.2372,-49.1744,-46.7987,-36.7406,-36.3014,-33.125,-41.903,-39.7035,-34.0729,-40.8362,-35.3685,-49.154,-46.5516,-35.934 +v15.0.0,RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,-35.228,-49.2018,-46.8192,-36.7369,-36.287,-33.1059,-41.8645,-39.6972,-34.0624,-40.8595,-35.3594,-49.1816,-46.5715,-35.9271 v02.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-1.7051,-4.3143,-4.3047,-2.0635,-2.0688,-1.9022,-4.8996,-4.6664,-2.3318,-2.3913,-2.0516,-4.3999,-3.975,-2.456 v03.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-9.6247,-12.9262,-12.669,-10.064,-11.3366,-10.8515,-9.1626,-9.2604,-10.2995,-10.8714,-10.1384,-13.0731,-12.2913,-10.6082 v04.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-12.7561,-20.9792,-20.3911,-13.8827,-14.7114,-14.1142,-13.9067,-13.9994,-14.2733,-15.933,-13.5886,-21.1238,-19.9903,-14.9432 @@ -3079,8 +3077,8 @@ v10.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-24.212,-39.206,-46.3577, v11.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-25.231,-44.3107,-53.3495,-28.9145,-26.9303,-26.5283,-26.9574,-27.0827,-28.9629,-36.1257,-25.4115,-44.6307,-52.0606,-29.8391 v12.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-25.2661,-44.3259,-53.1665,-28.9268,-26.8579,-26.4885,-26.6768,-26.7984,-28.9571,-36.193,-25.5026,-44.6024,-51.7765,-29.8873 v13.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-25.638,-44.4003,-53.0051,-29.2358,-34.8326,-26.823,-26.6964,-26.8474,-29.2233,-36.3032,-25.8277,-44.5581,-51.6051,-30.1384 -libaom-v3.12.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,2.5223,-16.5678,-16.8395,1.1068,1.6724,1.3412,3.3256,3.1945,2.4975,-3.0742,5.0239,0.6534,-8.5708,4.8197 -libaom-v3.12.0-unconstrained,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-11.2832,-18.2578,-19.8063,-11.2676,-15.9254,-14.3664,-18.7934,-18.8504,-12.3253,-15.6221,-8.5343,3.9436,-10.1315,-8.2406 +v14.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-25.4882,-44.1607,-52.6763,-29.0572,-34.7467,-26.682,-26.9106,-27.0467,-29.0824,-36.1184,-25.6597,-44.3116,-51.3133,-29.9482 +v15.0.0,RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,-25.4855,-44.1597,-52.6758,-29.0549,-34.7442,-26.6785,-26.9156,-27.05,-29.0802,-36.1167,-25.6574,-44.3107,-51.3133,-29.9463 v02.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-6.0875,-33.475,-34.3868,-9.0902,-7.6827,-7.1087,-8.4817,-8.2495,-6.8258,-13.8429,-5.0717,-19.6341,-27.744,-5.9552 v03.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-15.2538,-26.7423,-36.7985,-16.9424,-16.2907,-15.9476,-21.0342,-20.3327,-14.9596,-22.3804,-13.8906,-24.8176,-34.1481,-14.6455 v04.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-20.2722,-42.6314,-49.5004,-23.2485,-20.776,-20.8397,-27.3702,-26.6424,-19.7461,-31.2296,-18.6297,-43.2505,-44.1258,-19.9925 @@ -3093,8 +3091,8 @@ v10.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-32.1172,-55.1855,-66.5191,- v11.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-31.8992,-59.6186,-70.338,-35.8854,-30.9894,-31.6427,-34.5096,-34.0531,-30.7454,-46.0466,-30.1066,-61.0193,-68.2749,-31.9306 v12.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-31.9787,-62.4546,-71.2583,-36.2165,-30.9029,-31.6134,-34.4705,-34.0189,-30.8039,-46.6529,-30.2045,-62.4464,-68.6619,-32.0795 v13.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-32.0252,-56.9266,-68.5409,-35.6895,-34.3455,-31.6833,-34.1985,-33.7156,-30.7601,-45.7642,-30.3428,-60.6645,-66.9788,-32.1195 -libaom-v3.12.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,5.7957,-1.679,-5.5008,5.2588,1.5403,4.9645,-0.5179,-2.8871,0.9165,5.4048,5.3519,-1.7558,-5.5481,5.26 -libaom-v3.12.0-unconstrained,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-10.487,-13.7174,-18.481,-10.8001,-12.0308,-12.0955,-7.117,-8.2582,-10.4119,-11.7897,-10.8842,-13.7075,-18.5188,-10.8428 +v14.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-31.8145,-57.602,-68.7211,-35.553,-34.2712,-31.5155,-34.1748,-33.698,-30.5819,-45.5995,-30.088,-60.8052,-67.1742,-31.8839 +v15.0.0,RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,-31.7995,-57.5536,-68.7014,-35.5396,-34.2349,-31.4805,-34.2015,-33.715,-30.5588,-45.6467,-30.049,-60.6969,-66.9702,-31.8379 v02.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-2.3122,-41.5694,-50.5436,-5.5607,-2.6821,-2.5395,-4.1367,-4.0079,-3.0809,-12.0462,-2.3503,-41.5793,-50.7202,-3.4046 v03.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-11.8774,-47.2902,-57.6506,-14.8741,-11.774,-11.9206,-21.6376,-20.4986,-12.2314,-21.301,-11.9327,-47.3013,-57.7842,-13.0132 v04.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-17.0898,-56.4125,-64.8023,-20.4458,-16.6151,-16.9814,-26.2659,-25.3277,-17.2091,-28.3722,-17.1437,-56.4323,-64.9138,-18.4008 @@ -3107,8 +3105,8 @@ v10.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-26.4032,-60.5365,-69.7141,-2 v11.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-25.9622,-62.5596,-69.0527,-29.1749,-25.6031,-25.0795,-35.5519,-35.2113,-26.9234,-36.3753,-26.1004,-62.5621,-69.1328,-27.3566 v12.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-26.3384,-62.8249,-68.6296,-29.5202,-25.8884,-25.3459,-36.33,-35.7923,-27.2778,-37.2188,-26.4733,-62.8135,-68.7013,-27.7252 v13.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-26.3883,-62.181,-70.2713,-29.6371,-23.8288,-25.5674,-36.561,-36.1059,-27.3452,-37.7814,-26.5273,-62.1885,-70.3532,-27.7894 -libaom-v3.12.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,3.4414,-14.8521,-14.1148,1.564,2.5058,2.2439,10.0971,8.9797,3.6931,-0.9671,3.9204,-11.7931,-12.5721,3.3933 -libaom-v3.12.0-unconstrained,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-6.1951,-9.8693,-10.2793,-6.4767,-5.1747,-5.0877,-9.0321,-9.1607,-5.7309,-6.9097,-8.8228,-10.0175,-10.6444,-8.8016 +v14.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-25.9688,-61.7239,-69.9844,-29.2148,-23.4873,-25.1412,-35.9579,-35.4802,-26.9361,-37.2915,-26.1071,-61.7306,-70.0634,-27.3626 +v15.0.0,RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,-25.9565,-61.789,-69.8657,-29.1989,-23.4746,-25.1181,-35.9509,-35.4447,-26.9164,-37.3185,-26.0938,-61.7976,-69.9462,-27.3479 v02.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-1.6562,-3.22,-4.611,-1.9132,-1.155,-1.2571,-2.5826,-2.4347,-1.304,-2.3507,-1.8395,-3.2389,-4.139,-1.9211 v03.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-6.182,-6.0413,-11.9671,-6.5175,-4.8171,-5.0646,-7.392,-7.216,-5.4772,-6.0457,-6.3936,-6.7844,-11.4165,-6.5158 v04.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-10.035,-19.1609,-19.3415,-11.1082,-7.8289,-8.2618,-13.1655,-12.5038,-8.9196,-11.8219,-10.2949,-18.7483,-18.698,-10.6489 @@ -3121,8 +3119,8 @@ v10.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-17.7001,-41.9464,-39.6449,-20 v11.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-18.0379,-43.8147,-41.0043,-21.0764,-14.9133,-15.3826,-24.6749,-23.4133,-16.9427,-25.0465,-18.1115,-41.9381,-40.239,-19.0885 v12.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-18.0116,-43.2632,-41.7068,-21.066,-14.6029,-15.1713,-24.6266,-23.3563,-16.859,-25.1168,-18.0583,-41.3098,-40.8692,-19.0446 v13.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-17.9771,-41.3827,-39.6508,-20.7616,-17.1454,-15.2161,-24.777,-23.4397,-16.7988,-24.1012,-18.0361,-39.8386,-38.9825,-18.9558 -libaom-v3.12.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,2.9978,-1.378,-2.0665,2.5663,1.4525,1.0019,0.5332,1.1721,1.3048,-0.8187,3.7245,-1.3659,-2.5813,3.197 -libaom-v3.12.0-unconstrained,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-6.5287,4.2108,5.9368,-5.5256,-6.1789,-6.1251,-6.4243,-6.3961,-7.2036,-1.707,-7.9814,1.8787,1.5766,-6.8922 +v14.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-17.9024,-41.7025,-39.2313,-20.6897,-17.0974,-15.137,-24.5992,-23.2917,-16.7212,-23.9209,-17.9612,-40.0547,-38.6495,-18.8718 +v15.0.0,RA,E,Artistic_Concert_1920x1080_25fps.y4m,-17.8978,-41.7423,-39.1848,-20.6854,-17.0901,-15.1307,-24.5772,-23.2691,-16.7124,-23.9214,-17.9546,-40.0839,-38.6078,-18.8651 v02.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-6.7061,-20.9956,-32.5359,-8.7328,0.3319,-6.0772,106.5429,113.6211,-8.8189,-22.6607,-6.3419,-27.047,-47.5819,-9.4562 v03.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-6.5844,-7.4329,-7.3762,-6.6642,-5.8228,-6.2418,-7.352,-6.9944,-6.6761,-7.0457,-6.6424,-7.8954,-7.8797,-6.7409 v04.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-15.8493,-21.752,-21.6319,-16.4072,-15.8431,-16.5179,-18.1701,-16.8357,-16.2657,-18.6815,-15.74,-22.0746,-20.961,-16.3312 @@ -3135,8 +3133,8 @@ v10.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-30.6919,-35.6478,-34.8465,-31 v11.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-30.3652,-34.7852,-33.6707,-30.7301,-29.4348,-30.7841,-32.7264,-30.8074,-29.5179,-31.7537,-30.3049,-35.7664,-34.4231,-30.7986 v12.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-30.037,-35.3262,-33.8771,-30.4728,-29.2138,-30.5197,-32.6448,-30.5371,-29.2198,-31.5704,-29.9515,-36.1785,-34.37,-30.4997 v13.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-30.3963,-35.4554,-34.4431,-30.8309,-31.9105,-30.775,-32.9614,-30.9797,-29.5015,-31.9823,-30.3608,-36.3109,-34.9796,-30.9041 -libaom-v3.12.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-0.8942,-0.1971,-2.7487,-0.9556,-2.0103,-1.9612,1.7138,1.2311,0.7657,0.4911,-0.4749,0.5033,-2.6054,-0.4546 -libaom-v3.12.0-unconstrained,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-8.063,-5.9116,-6.1322,-7.8362,-8.6258,-8.4243,-11.2662,-11.1845,-8.3315,-6.7349,-8.7348,-5.7189,-6.2659,-8.2495 +v14.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-30.3097,-35.3562,-34.3544,-30.743,-31.7768,-30.6891,-32.8875,-30.9033,-29.461,-31.9374,-30.2712,-36.2661,-34.8956,-30.8157 +v15.0.0,RA,E,Artistic_Intro_1920x1080_2997fps.y4m,-30.3059,-35.35,-34.4238,-30.7425,-31.729,-30.6823,-32.7036,-30.7495,-29.4676,-31.9357,-30.248,-36.2319,-34.9312,-30.792 v02.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-1.8165,-3.3637,-0.8765,-1.8525,-4.4058,-3.6595,-8.1114,-8.014,-3.3381,-4.203,-1.7673,-3.6469,-0.9467,-1.8913 v03.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-9.108,-7.1235,-4.3409,-8.7437,-8.7446,-8.6585,-12.8473,-11.3501,-8.0136,-7.4316,-9.1712,-7.0168,-4.3025,-8.6676 v04.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-17.1579,-17.2201,-17.688,-17.1917,-17.0982,-16.8255,-21.598,-20.3983,-16.1787,-16.1668,-17.0578,-17.0225,-17.4173,-17.0846 @@ -3149,8 +3147,8 @@ v10.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-30.1418,-31.8738, v11.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-30.7631,-33.3731,-34.8006,-31.1544,-30.5205,-29.9772,-37.0986,-35.4785,-29.6876,-30.7275,-30.6539,-33.576,-34.809,-31.2003 v12.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-30.8825,-33.4107,-34.6126,-31.2468,-30.6227,-30.1412,-37.1504,-35.5052,-29.7672,-30.7669,-30.7616,-33.69,-34.6196,-31.2906 v13.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-31.0506,-33.1862,-33.9876,-31.344,-32.8785,-30.1205,-36.6556,-35.2664,-29.7979,-30.5517,-30.9389,-33.421,-33.9958,-31.3769 -libaom-v3.12.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-0.3264,-5.9291,-7.3285,-0.9139,-3.0623,-3.1571,3.4859,2.6181,-0.2465,-3.5218,0.0379,-5.7186,-7.4819,-0.5731 -libaom-v3.12.0-unconstrained,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-8.0625,-7.5637,-7.545,-8.0115,-11.016,-10.3947,-12.5107,-12.5133,-9.77,-9.3772,-10.0419,-9.1019,-9.0998,-9.9283 +v14.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-30.7624,-32.9499,-34.1877,-31.0852,-32.5798,-29.8118,-36.4154,-35.0713,-29.5723,-30.4391,-30.6525,-33.2253,-34.2095,-31.1239 +v15.0.0,RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,-30.7268,-33.0571,-34.1747,-31.0607,-32.6201,-29.7767,-36.1597,-34.9222,-29.5036,-30.4894,-30.611,-33.3644,-34.1901,-31.105 v02.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-5.5141,-4.6285,-3.5107,-5.377,-6.7933,-6.7354,-6.4665,-6.3405,-5.4648,-5.7385,-5.6018,-4.497,-3.6591,-5.4962 v03.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-14.0756,-8.7133,-2.623,-13.3043,-15.1993,-15.1868,-18.279,-16.9637,-13.2672,-12.8871,-14.2149,-8.7016,-2.7951,-13.5129 v04.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-19.1378,-17.456,-12.435,-18.7513,-20.3075,-20.4182,-26.2067,-24.2466,-18.1425,-19.4942,-19.342,-17.6476,-12.7546,-19.0643 @@ -3163,8 +3161,8 @@ v10.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-29.8823,-33.2321,-2 v11.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-30.5281,-33.7796,-30.1759,-30.6841,-31.7649,-32.0271,-37.1585,-35.4567,-29.5154,-32.7305,-30.6432,-33.6734,-30.6583,-30.8996 v12.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-30.5746,-33.9193,-31.0942,-30.7772,-31.6184,-31.9133,-36.9847,-35.2961,-29.5521,-32.8714,-30.6872,-33.8921,-31.6115,-30.9856 v13.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-30.661,-34.0457,-31.0029,-30.8568,-34.5902,-32.0647,-37.007,-35.3679,-29.6324,-32.88,-30.7864,-34.0344,-31.5017,-31.0738 -libaom-v3.12.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,2.4134,-6.548,-5.2588,1.7004,3.7541,2.5869,7.052,8.1695,3.3871,-0.0218,4.1223,-6.2468,-4.9764,3.629 -libaom-v3.12.0-unconstrained,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-6.8076,-5.883,-5.898,-6.7278,-10.8166,-9.881,-16.9742,-16.3496,-8.4822,-8.137,-10.2387,-7.5528,-8.2298,-10.1582 +v14.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-30.5467,-34.1264,-30.847,-30.7517,-34.4481,-31.8759,-36.8056,-35.188,-29.5419,-32.8505,-30.6807,-34.0539,-31.3434,-30.9718 +v15.0.0,RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,-30.5239,-33.7938,-30.7608,-30.7113,-34.386,-31.8583,-36.838,-35.1004,-29.5138,-32.6224,-30.65,-33.7482,-31.299,-30.9303 v02.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-2.8749,0.0341,-1.065,-2.6696,-2.7965,-3.1029,-2.9123,-2.886,-2.6201,-2.2491,-3.0148,0.4713,-0.7572,-2.9333 v03.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-7.8829,-3.4497,-5.4043,-7.5893,-6.6114,-7.2551,-9.7105,-9.0511,-7.0605,-7.0731,-7.9939,-3.3242,-5.1103,-7.9216 v04.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-12.837,-17.7575,-15.1404,-13.1643,-12.2354,-13.0249,-16.601,-15.9108,-12.1244,-14.6681,-12.9735,-17.2096,-14.7051,-13.2506 @@ -3177,8 +3175,8 @@ v10.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-20.3304,-34.8285,-34.5059,-2 v11.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-20.8715,-36.5639,-35.8158,-22.3269,-21.5568,-22.1367,-29.2226,-28.0436,-21.028,-27.7657,-20.733,-36.0531,-35.7951,-21.6588 v12.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-20.9085,-36.3742,-35.5946,-22.3396,-21.4026,-22.054,-29.064,-27.8785,-20.999,-27.6723,-20.7545,-35.8945,-35.5505,-21.6682 v13.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-20.9052,-36.476,-35.4356,-22.3314,-22.9965,-22.1377,-29.2929,-28.0667,-21.0239,-27.5471,-20.7587,-35.9745,-35.4003,-21.6713 -libaom-v3.12.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-0.3219,2.3987,-12.6031,-0.6177,-10.8931,-8.671,-1.9094,-1.8736,-1.978,-0.26,-2.9256,-0.6175,-13.1552,-2.8951 -libaom-v3.12.0-unconstrained,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-13.7607,-9.3405,-11.2239,-13.3789,-20.7543,-15.0444,-20.7757,-20.4428,-15.3993,-12.1804,-18.461,-13.0917,-13.3181,-17.8845 +v14.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-20.904,-36.2214,-35.3817,-22.3148,-22.997,-22.1167,-29.3106,-28.0914,-21.0115,-27.4816,-20.7534,-35.7366,-35.3509,-21.6599 +v15.0.0,RA,E,MountainBike_1920x1080_30fps_8bit.y4m,-20.9075,-36.2258,-35.4098,-22.3197,-23.0066,-22.1258,-29.3121,-28.0894,-21.0234,-27.4854,-20.757,-35.7362,-35.3812,-21.6651 v02.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-2.9195,-9.8422,-13.7467,-3.9397,-0.922,-1.3853,-3.9968,-3.8735,-2.3635,-6.0675,-3.2788,-10.1952,-13.2146,-4.1106 v03.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-11.2857,-13.2171,-16.5965,-11.7444,-6.174,-6.1633,-12.8641,-12.6417,-8.9226,-11.2125,-11.8529,-13.6393,-16.139,-12.1735 v04.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-17.3643,-22.9711,-29.7646,-18.4193,-10.0537,-9.956,-23.5566,-22.0088,-14.8373,-21.0211,-18.0545,-23.4213,-29.3739,-18.8914 @@ -3191,8 +3189,8 @@ v10.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-26.4496,-34.2644,-47.7 v11.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-28.1386,-35.3169,-48.5145,-29.8275,-19.7846,-18.9125,-33.7394,-32.8325,-25.1176,-32.6305,-28.9703,-36.1917,-48.3453,-30.2569 v12.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-28.5559,-35.3511,-49.2023,-30.2483,-19.8987,-18.9705,-34.4431,-33.4144,-25.4907,-32.7703,-29.399,-36.1562,-48.9898,-30.6633 v13.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-28.5236,-34.9694,-49.2791,-30.195,-18.6843,-19.0514,-33.9726,-33.0721,-25.4351,-32.5785,-29.3701,-35.8118,-49.0764,-30.6076 -libaom-v3.12.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-8.5201,-18.3265,-11.2543,-9.7426,-8.8174,-7.5786,-3.3324,-6.9977,-7.4343,-12.8135,-9.4278,-18.8623,-11.7369,-9.7186 -libaom-v3.12.0-unconstrained,RA,E,Noise_Animation_1280x720_2398fps.y4m,-19.1985,-16.1959,-19.1505,-19.4115,-17.7379,-16.6009,-12.668,-14.6219,-17.9713,-18.907,-19.8535,-16.2932,-20.1382,-18.9135 +v14.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-28.2369,-34.6325,-48.856,-29.8954,-18.4889,-18.8686,-33.5765,-32.7564,-25.159,-32.1,-29.0748,-35.4585,-48.6704,-30.3031 +v15.0.0,RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,-28.2686,-34.7648,-48.7304,-29.9187,-18.554,-18.9569,-33.7115,-32.8402,-25.1948,-32.1404,-29.1015,-35.5939,-48.5425,-30.3299 v02.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-4.294,-8.985,-4.2901,-4.8016,-2.8251,-4.1357,-7.2548,-6.7169,-4.3407,-5.2611,-4.9183,-9.2553,-4.332,-5.003 v03.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-8.8227,-8.3599,-6.2166,-8.6301,-6.8129,-8.0635,-13.6486,-13.0382,-8.219,-8.5906,-9.6519,-8.3477,-6.6376,-9.212 v04.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-17.4731,-21.5024,-18.5811,-18.0968,-15.7269,-16.1751,-22.7738,-22.0734,-16.9848,-17.4365,-18.7081,-22.1383,-18.4762,-18.6981 @@ -3205,8 +3203,8 @@ v10.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-33.3756,-40.4558,-34.5622,-33 v11.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-33.1067,-38.6324,-34.5088,-33.5955,-30.5159,-30.422,-39.2621,-37.7824,-32.6137,-33.4203,-34.371,-38.9033,-35.1553,-34.5401 v12.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-34.3045,-41.6555,-35.7147,-34.9466,-31.9582,-32.0283,-40.6752,-39.119,-33.9695,-35.5354,-35.5687,-41.8809,-36.3424,-35.8396 v13.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-34.4513,-41.4941,-35.6199,-35.0407,-28.5312,-32.2287,-40.8583,-39.6201,-34.1043,-35.0232,-35.731,-41.8854,-36.2194,-35.9432 -libaom-v3.12.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-8.9482,-25.8663,-26.2284,-11.6779,-13.4276,-11.4782,-22.9551,-22.9289,-12.8439,-12.4637,-16.4495,-28.8315,-29.5211,-16.529 -libaom-v3.12.0-unconstrained,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-18.3437,-35.8845,-27.4527,-22.8385,-28.4529,-22.1587,-44.0137,-44.0629,-26.1671,-22.1044,-31.8664,-37.4497,-29.1152,-31.4931 +v14.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-33.8555,-40.8901,-34.892,-34.4193,-27.9983,-31.6623,-40.1841,-38.9237,-33.448,-34.2802,-35.103,-41.2975,-35.4653,-35.2806 +v15.0.0,RA,E,Noise_Animation_1280x720_2398fps.y4m,-33.8483,-40.9836,-34.9298,-34.4232,-27.899,-31.5674,-40.4622,-39.1223,-33.4132,-34.3009,-35.1062,-41.3471,-35.5201,-35.2967 v02.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,0.7918,-9.8907,-19.5509,-4.1188,1.5198,1.5759,-2.0701,-1.7542,0.3438,-5.0906,0.204,-9.0442,-18.8048,-0.6328 v03.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-6.4164,-20.8166,-24.1242,-11.2746,-3.8748,-2.8837,-6.3078,-6.5494,-6.4116,-13.9592,-6.9175,-19.8792,-23.6809,-8.0527 v04.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-11.45,-32.3525,-36.027,-18.5881,-8.3973,-7.2054,-10.9175,-11.4203,-11.5894,-22.1602,-12.0704,-31.7671,-35.9608,-13.4372 @@ -3219,8 +3217,8 @@ v10.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-19.5199,-42.13,-42.6368,-26.6612,- v11.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-22.0269,-53.9959,-46.1424,-30.6636,-20.0436,-16.795,-18.5121,-19.9943,-23.2378,-36.1465,-23.7459,-54.9596,-47.5522,-25.1295 v12.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-21.9596,-53.9602,-48.3375,-31.0916,-19.1525,-16.1272,-18.2094,-19.4633,-22.7743,-36.6681,-23.7015,-54.8951,-49.6854,-25.1714 v13.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-22.1231,-50.0728,-44.3669,-29.9179,-7.7109,-16.3902,-17.901,-19.2639,-22.9233,-33.7181,-23.9666,-50.8002,-45.3559,-25.3304 -libaom-v3.12.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-2.618,-12.446,2.3313,-2.7732,-4.7182,-5.1948,-4.8691,-4.7956,-4.1343,-3.8756,-3.5537,-13.2012,1.8428,-3.6383 -libaom-v3.12.0-unconstrained,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-8.2215,35.6583,-2.8597,-6.1433,9.178,3.3418,-23.8521,-23.8475,-7.9671,-3.1327,-15.7752,34.4774,-7.3126,-15.2858 +v14.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-21.0916,-50.3807,-43.9366,-29.2437,-7.5747,-15.8845,-17.4543,-18.7527,-22.1057,-33.1838,-22.9202,-51.1169,-44.8196,-24.2857 +v15.0.0,RA,E,Noise_Ocean_1920x1080_60fps.y4m,-21.057,-50.5302,-43.8193,-29.1681,-7.5143,-15.8093,-17.2131,-18.5308,-22.0462,-33.1463,-22.8772,-51.2514,-44.6903,-24.2386 v02.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,0.2071,-9.2657,4.202,-0.1447,3.6446,1.2087,-1.0144,-1.2257,0.7515,-1.2971,-0.7606,-9.1505,4.2207,-0.8644 v03.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-2.0629,-12.3321,-0.2259,-2.628,0.8722,-0.542,-10.6577,-9.0812,-2.6391,-3.0163,-3.1122,-12.2135,-0.3757,-3.2492 v04.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-5.7901,-26.3616,-7.3739,-7.3785,-4.1071,-4.0973,-20.1918,-17.9072,-7.0704,-7.525,-6.8315,-26.4091,-7.6057,-7.2195 @@ -3233,8 +3231,8 @@ v10.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-11.4915,-39.6763,-12.0075,-13.573 v11.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-13.9241,-38.7866,-12.2792,-15.6176,-16.0508,-13.5218,-30.3167,-29.1127,-18.332,-15.4761,-13.8455,-38.9747,-12.4255,-14.2758 v12.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-14.2547,-40.2009,-12.509,-16.0321,-16.501,-13.83,-31.3724,-30.1542,-18.8033,-15.9108,-14.198,-40.4157,-12.6287,-14.643 v13.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-14.3623,-40.1661,-11.7034,-16.0518,-10.052,-13.6971,-31.5268,-30.2814,-18.7515,-15.9612,-14.3346,-40.377,-11.848,-14.7533 -libaom-v3.12.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,2.2251,-3.0142,-1.5017,1.7015,-0.5885,-1.0134,0.5303,0.4022,0.7256,-0.6663,-0.7327,-4.211,-2.7888,-1.1633 -libaom-v3.12.0-unconstrained,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-4.6119,4.3567,4.4192,-3.5407,12.5518,4.5947,-6.8244,-7.0645,-4.1282,2.0631,-10.7431,1.2653,1.5853,-8.6221 +v14.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-14.2986,-39.9883,-11.8547,-15.9976,-9.987,-13.668,-31.7195,-30.4027,-18.7133,-15.9063,-14.2545,-40.1993,-11.9997,-14.6755 +v15.0.0,RA,E,Noise_Soccer_1920x1080_50fps.y4m,-14.3079,-39.8277,-11.9828,-16.0024,-10.0305,-13.6293,-31.664,-30.3516,-18.6483,-15.8968,-14.2828,-40.0358,-12.1135,-14.7026 v02.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-0.7045,-0.6068,-1.3918,-0.7413,1.7367,0.2571,-1.1606,-1.0987,-0.5461,-0.4051,-1.3065,-0.9637,-1.6854,-1.3044 v03.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-8.7503,-6.8517,-8.6397,-8.6284,-7.548,-8.7149,-12.0167,-11.5146,-8.6445,-7.8634,-9.2502,-7.4169,-9.0667,-9.0788 v04.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-18.2103,-21.7041,-21.6921,-18.6451,-16.91,-18.3456,-21.4778,-20.8832,-18.1842,-19.4429,-18.3574,-22.5087,-22.4063,-19.0872 @@ -3247,8 +3245,8 @@ v10.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-29.6023,-31.6458,-32.692,-29. v11.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-30.7327,-33.8459,-34.7876,-31.1796,-29.6507,-30.8398,-33.713,-32.6996,-30.2261,-32.7728,-30.3666,-34.5728,-35.4911,-31.1819 v12.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-30.3058,-33.5942,-34.3791,-30.7649,-29.0819,-30.2849,-33.214,-32.2023,-29.7927,-32.3279,-30.0191,-34.3555,-35.1098,-30.8438 v13.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-30.4548,-33.9732,-34.4756,-30.925,-33.9586,-30.4181,-33.1439,-32.1989,-29.9588,-32.5728,-30.2166,-34.6299,-35.1467,-31.0355 -libaom-v3.12.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,5.7496,-3.5661,-2.931,4.458,2.3235,1.4325,1.8649,2.29,4.3027,-1.1054,6.5809,-0.8774,-0.2576,5.2268 -libaom-v3.12.0-unconstrained,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-6.7792,-8.6747,-8.5244,-7.0228,-6.2939,-5.7948,-6.2352,-6.3651,-6.692,-8.1308,-8.4337,-10.963,-10.9688,-8.8554 +v14.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-30.3983,-33.8523,-34.3581,-30.8605,-33.8976,-30.3873,-33.2102,-32.2346,-29.887,-32.4739,-30.1562,-34.5155,-35.0794,-30.9694 +v15.0.0,RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,-30.4492,-33.8734,-34.385,-30.9081,-33.9197,-30.4401,-33.2687,-32.274,-29.9388,-32.5469,-30.1979,-34.5244,-35.0946,-31.0059 v02.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-0.1375,-7.9704,-2.4067,-0.9358,-1.2061,-1.2403,-4.1744,-3.9927,-1.1565,-4.7069,-0.6682,-5.9841,-2.1274,-1.5458 v03.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-4.5649,-17.8112,-10.7485,-6.0911,-7.0529,-7.7712,-4.7475,-5.3302,-6.5199,-12.3564,-5.9443,-15.5579,-10.8598,-7.7444 v04.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-7.3916,-18.275,-13.6316,-8.7,-9.3656,-10.5939,-7.1836,-7.7895,-8.8721,-14.0282,-8.8689,-17.0659,-14.5711,-10.4579 @@ -3261,8 +3259,8 @@ v10.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.5965,-41.8743,-36.3336,-2 v11.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.6082,-45.4827,-39.7642,-26.9809,-21.2478,-23.0403,-17.937,-18.5173,-26.7129,-37.2779,-24.4658,-43.2455,-40.1322,-28.4522 v12.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.8657,-45.6905,-40.2346,-27.2511,-21.3793,-23.2263,-18.2197,-18.7754,-27.0037,-38.0165,-24.7185,-43.3237,-40.3341,-28.6846 v13.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.6697,-45.8946,-39.755,-27.091,-31.9088,-23.1101,-17.8026,-18.4124,-26.8082,-37.9606,-24.5486,-43.417,-40.1354,-28.5381 -libaom-v3.12.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,1.6552,-18.6912,-22.0005,-0.1403,-0.3865,-0.2853,2.3632,3.8751,2.0551,-2.9918,2.5062,-18.7123,-22.8943,2.1853 -libaom-v3.12.0-unconstrained,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-5.0286,-18.1457,-10.7784,-5.6785,-10.1414,-8.9993,-12.9559,-12.4148,-7.0883,-6.5466,-8.3883,-20.3151,-13.6934,-8.4721 +v14.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.587,-45.425,-39.598,-26.9857,-31.8234,-23.0451,-17.3338,-17.9788,-26.6966,-37.5636,-24.4535,-43.1704,-40.0963,-28.4387 +v15.0.0,RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,-23.573,-45.2363,-39.5342,-26.956,-31.8012,-23.05,-17.4951,-18.0817,-26.6775,-37.428,-24.4277,-43.0158,-40.1012,-28.4045 v02.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-0.7969,-31.186,-37.9042,-3.6941,-1.5639,-1.3797,-3.344,-2.8876,-1.5796,-5.5662,-1.0001,-30.6168,-37.0224,-1.3992 v03.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-4.0379,-41.6432,-39.314,-7.1866,-4.838,-4.635,-9.0968,-8.5139,-4.8723,-9.7133,-4.2586,-41.5287,-38.4574,-4.7049 v04.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-5.8615,-46.7051,-44.1873,-9.3779,-8.4825,-7.8672,-15.7613,-14.6623,-7.4309,-13.4364,-6.1342,-46.5596,-43.5132,-6.6711 @@ -3275,8 +3273,8 @@ v10.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-12.0606,-66.3276,-63.4038,-17.5907, v11.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-11.7157,-68.7815,-64.9925,-17.6241,-15.0638,-14.5062,-23.2698,-22.1284,-13.9051,-25.148,-11.8381,-69.4283,-65.0572,-12.7459 v12.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-11.9091,-68.1759,-64.0136,-17.666,-15.0964,-14.605,-23.2582,-22.0946,-14.0655,-25.2066,-12.0426,-68.805,-64.1136,-12.9394 v13.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-11.9568,-66.605,-61.73,-17.3877,-13.4438,-14.6074,-23.5522,-22.3243,-14.0988,-24.6053,-12.0923,-67.1306,-61.7187,-12.9616 -libaom-v3.12.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,0.4109,-12.3153,-12.5497,-0.7627,-0.8841,-1.3923,7.4646,6.143,0.8299,-3.1364,0.4047,-12.107,-12.5922,0.1661 -libaom-v3.12.0-unconstrained,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-8.5708,-8.0756,-10.8307,-8.6286,-12.2569,-11.6845,-13.5627,-13.8385,-9.9349,-10.2228,-12.8657,-10.9564,-13.4066,-12.8654 +v14.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-11.9265,-66.6018,-61.4882,-17.3468,-13.3978,-14.5645,-23.4708,-22.2684,-14.034,-24.5667,-12.0596,-67.1336,-61.4662,-12.9284 +v15.0.0,RA,E,Shaky_Quad_1920x1080_30fps.y4m,-11.9419,-66.9858,-61.8168,-17.4086,-13.4017,-14.5516,-23.4266,-22.2076,-14.0485,-24.5811,-12.0748,-67.5428,-61.8193,-12.9464 v02.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-1.9692,-2.1722,-4.2372,-2.09,-1.7236,-1.8001,-3.138,-3.5152,-1.7635,-1.6698,-2.108,-0.8296,-2.8838,-2.1078 v03.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-6.2628,-8.9653,-0.6374,-6.1714,-5.7747,-5.7354,-9.7313,-9.7827,-5.9976,-5.2554,-6.4189,-8.0024,0.8312,-6.4054 v04.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-12.0828,-20.3313,-13.7556,-12.5894,-11.8272,-11.8306,-18.4016,-17.9175,-11.8114,-13.1369,-12.3092,-19.5003,-12.4627,-12.4298 @@ -3289,8 +3287,8 @@ v10.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-19.3605,-45.4629,-46.0945,-22.2281, v11.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-20.585,-48.5926,-49.6821,-23.7141,-21.697,-21.304,-30.3208,-29.4745,-21.5796,-28.3992,-20.8362,-48.4618,-49.5809,-21.5157 v12.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-20.5836,-47.6817,-49.3027,-23.6278,-21.4552,-21.1536,-30.1857,-29.3232,-21.482,-28.1712,-20.8269,-47.5862,-49.1446,-21.4886 v13.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-20.7337,-46.3195,-45.8482,-23.4992,-20.0487,-21.3332,-30.4272,-29.5815,-21.6266,-27.7259,-20.9841,-46.0646,-45.6469,-21.5999 -libaom-v3.12.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,2.384,-3.1821,-4.5748,1.7024,-0.9435,-1.0811,2.3756,2.2163,1.7385,-2.6035,2.9589,-3.3543,-4.7344,2.0096 -libaom-v3.12.0-unconstrained,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-6.1593,-3.8669,-3.618,-5.9154,-6.9057,-6.6496,-7.814,-8.09,-6.3601,-5.3623,-7.6828,-5.0934,-4.8832,-7.3236 +v14.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-20.6899,-46.152,-45.2925,-23.4225,-20.0251,-21.2734,-30.3146,-29.433,-21.572,-27.688,-20.9326,-45.8975,-45.0347,-21.5432 +v15.0.0,RA,E,Shaky_Walk_1920x1080_25fps.y4m,-20.69,-46.1519,-45.3341,-23.4258,-20.0122,-21.2625,-30.3155,-29.4451,-21.5698,-27.7002,-20.9287,-45.9042,-45.0836,-21.5407 v02.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-1.8348,-1.374,-1.4732,-1.7946,-1.623,-1.6792,-1.5822,-1.6085,-1.599,-1.4641,-1.7673,-1.3429,-1.5275,-1.7298 v03.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-6.9563,-5.808,-4.8316,-6.7924,-6.8642,-7.0898,-8.2519,-8.0817,-6.6204,-5.8357,-6.8935,-5.8557,-4.8601,-6.7249 v04.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-10.8986,-13.6832,-11.8042,-11.0844,-10.9532,-11.3574,-13.1997,-12.9269,-10.5504,-11.6153,-10.6688,-13.8191,-11.8093,-10.9509 @@ -3303,8 +3301,8 @@ v10.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-18.5691,-21.2607,-20.3271,-18. v11.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-18.7341,-22.5557,-21.3059,-19.0709,-18.5097,-19.094,-24.3048,-23.308,-18.2329,-21.1299,-18.4266,-22.8583,-21.3979,-18.8443 v12.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-18.6488,-22.4711,-21.8906,-19.0188,-18.3472,-19.0199,-24.8345,-23.6535,-18.173,-21.1733,-18.3436,-22.7622,-21.9821,-18.8009 v13.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-18.6395,-22.7676,-21.7998,-19.0191,-23.3819,-19.1267,-24.6624,-23.5236,-18.176,-21.3702,-18.3425,-23.0506,-21.9459,-18.8148 -libaom-v3.12.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-0.999,-5.7677,-9.3122,-1.4961,-2.3458,-3.5745,-5.8781,-4.4672,0.0224,-4.0704,-1.6982,-6.0999,-10.6325,-2.1196 -libaom-v3.12.0-unconstrained,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-10.9643,0.5679,5.2574,-9.869,-9.975,-9.6946,-20.8295,-20.8358,-12.0229,-6.3269,-14.4625,-2.7874,3.0379,-13.3674 +v14.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-18.5648,-22.536,-21.7058,-18.9354,-23.3129,-19.0979,-24.5266,-23.4364,-18.1139,-21.136,-18.2731,-22.8213,-21.8262,-18.7311 +v15.0.0,RA,E,Vertical_Carnaby_1080x1920_5994.y4m,-18.5952,-22.0377,-21.6214,-18.9335,-23.2874,-18.9846,-24.3264,-23.2689,-18.0953,-21.0188,-18.2819,-22.3169,-21.7318,-18.7115 v02.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-1.7596,-4.7548,-16.3942,-2.4024,-0.7888,-1.2497,-2.6203,-2.6937,-1.5934,-3.8912,-1.9887,-4.943,-16.6484,-2.4035 v03.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-7.4691,-10.6778,-16.3702,-7.9311,-6.136,-6.5499,-12.6637,-11.9441,-6.5716,-9.1082,-7.7882,-11.1297,-16.5748,-8.1841 v04.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-12.3894,-17.1654,-27.0747,-13.1441,-11.2477,-11.788,-19.2336,-18.2385,-11.1446,-15.8832,-12.7656,-17.6791,-27.4491,-13.3806 @@ -3317,8 +3315,8 @@ v10.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-19.1507,-26.0183,-38.9116,-20. v11.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-20.3588,-26.7872,-38.1959,-21.3308,-19.375,-19.2531,-27.7673,-26.7776,-18.9097,-24.5508,-20.7549,-27.5956,-38.838,-21.5651 v12.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-20.5575,-27.452,-37.5428,-21.523,-19.1866,-19.2393,-27.9075,-26.9478,-19.0225,-24.6075,-20.9457,-28.3251,-38.1374,-21.7759 v13.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-20.5949,-26.8989,-37.4313,-21.5198,-19.6089,-19.408,-28.0162,-27.0344,-19.0729,-24.6025,-20.9873,-27.7424,-38.0449,-21.7778 -libaom-v3.12.0,RA,E,WorldCup_far_1920x1080_30p.y4m,1.7338,-5.1748,-5.0334,1.0009,1.3069,2.6683,-2.3203,-0.6408,0.1886,-0.4645,1.326,-5.9127,-5.6654,0.3755 -libaom-v3.12.0-unconstrained,RA,E,WorldCup_far_1920x1080_30p.y4m,-6.0667,-3.3275,-0.9542,-5.6615,-10.7025,-8.0299,-12.4376,-11.3635,-8.1507,-6.0253,-7.1451,-4.5179,-2.0633,-6.6179 +v14.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-20.5663,-26.9412,-37.4742,-21.4981,-19.5885,-19.4113,-27.9866,-26.9931,-19.0775,-24.6136,-20.9627,-27.7844,-38.0922,-21.7594 +v15.0.0,RA,E,WalkingInStreet_1920x1080_30fps.y4m,-20.5377,-27.1244,-37.6763,-21.4896,-19.5545,-19.352,-27.944,-26.952,-19.0399,-24.6407,-20.9347,-27.9627,-38.2817,-21.7464 v02.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-2.3967,-4.2514,-3.8943,-2.5751,-2.0166,-2.2147,-2.7467,-2.5678,-2.3346,-3.7372,-2.4732,-4.3653,-3.9043,-2.6701 v03.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-8.2888,-8.9649,-6.7168,-8.2413,-6.7253,-7.3024,-12.1803,-10.7587,-7.3536,-8.8957,-8.3873,-9.1095,-6.6907,-8.3674 v04.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-14.9111,-17.4987,-15.4249,-15.0767,-13.1173,-13.793,-18.3968,-17.0352,-13.4673,-16.4782,-15.0405,-17.7525,-15.4623,-15.287 @@ -3331,8 +3329,8 @@ v10.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-22.9585,-25.2329,-22.4503,-23.0528, v11.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-22.8643,-25.4771,-22.8631,-23.0031,-19.2581,-20.0569,-25.4676,-24.346,-20.9162,-24.1604,-23.1406,-25.8922,-23.062,-23.3667 v12.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-23.3067,-25.9997,-23.5087,-23.4603,-19.5085,-20.4064,-25.8943,-24.8183,-21.2991,-24.5405,-23.5871,-26.4217,-23.7182,-23.8311 v13.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-23.1595,-25.8099,-23.1417,-23.2999,-22.0605,-20.2074,-25.8011,-24.6581,-21.1657,-24.2469,-23.4349,-26.2243,-23.3473,-23.6657 -libaom-v3.12.0,Still,F1,animals_00.y4m,0.2778,-1.3431,-1.2539,0.1646,-1.6668,-0.3627,-0.6545,-0.4339,-0.5993,-0.0616,0.2778,-1.3431,-1.2539,0.1564 -libaom-v3.12.0-unconstrained,Still,F1,animals_00.y4m,0.9743,-3.8121,-2.6978,0.5839,-1.704,0.2182,0.6499,0.6586,0.3025,0.4292,0.9743,-3.8121,-2.6978,0.7545 +v14.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-23.1575,-25.8494,-23.2477,-23.3061,-22.0512,-20.2493,-25.8077,-24.7107,-21.1686,-24.2341,-23.4312,-26.2621,-23.4616,-23.6698 +v15.0.0,RA,E,WorldCup_far_1920x1080_30p.y4m,-23.1473,-25.8409,-23.2528,-23.2968,-22.0443,-20.2328,-25.8036,-24.702,-21.1562,-24.2181,-23.4208,-26.2506,-23.4689,-23.6604 v02.0.0,Still,F1,animals_00.y4m,-2.0283,-15.2001,-23.7721,-3.7068,-3.1935,-2.6214,-2.9732,-2.9657,-4.6621,-6.3335,-2.0283,-15.2001,-23.7721,-2.8635 v03.0.0,Still,F1,animals_00.y4m,-2.8485,-17.0582,-25.3236,-4.623,-3.0352,-3.3886,-3.7623,-3.5019,-5.4134,-7.3418,-2.8485,-17.0582,-25.3236,-3.739 v04.0.0,Still,F1,animals_00.y4m,-4.5574,-19.4488,-28.8411,-6.4672,-3.2409,-5.2266,-4.4811,-4.0401,-6.9554,-9.4072,-4.5574,-19.4488,-28.8411,-5.4851 @@ -3345,8 +3343,8 @@ v10.0.0,Still,F1,animals_00.y4m,-7.9969,-21.9763,-30.4154,-9.7613,-8.0746,-8.962 v11.0.0,Still,F1,animals_00.y4m,-7.7383,-22.0851,-31.0917,-9.5615,-7.58,-8.8117,-11.0619,-10.2986,-10.6311,-12.4697,-7.7383,-22.0851,-31.0917,-8.678 v12.0.0,Still,F1,animals_00.y4m,-7.6666,-21.8961,-30.8663,-9.4757,-7.8613,-8.6911,-10.7138,-10.1442,-10.5585,-12.3785,-7.6666,-21.8961,-30.8663,-8.5999 v13.0.0,Still,F1,animals_00.y4m,-7.6074,-22.0547,-30.89,-9.4364,-8.048,-8.5836,-10.7909,-10.1382,-10.4738,-12.3294,-7.6074,-22.0547,-30.89,-8.5519 -libaom-v3.12.0,Still,F1,animals_03.y4m,0.3033,-2.9385,-3.3162,0.1008,0.0883,0.3773,-0.728,0.1043,0.4325,-0.3238,0.3033,-2.9385,-3.3162,0.1867 -libaom-v3.12.0-unconstrained,Still,F1,animals_03.y4m,0.8924,-0.9373,-1.3858,0.7177,-0.4517,0.7685,2.2195,1.9639,1.2359,0.5295,0.8924,-0.9373,-1.3858,0.7846 +v14.0.0,Still,F1,animals_00.y4m,-7.7151,-22.0278,-30.9352,-9.5272,-8.2267,-8.7532,-11.0666,-10.3415,-10.4877,-12.4445,-7.7151,-22.0278,-30.9352,-8.6521 +v15.0.0,Still,F1,animals_00.y4m,-7.7151,-22.0278,-30.9352,-9.5272,-8.2267,-8.7532,-11.0666,-10.3415,-10.4877,-12.4445,-7.7151,-22.0278,-30.9352,-8.6521 v02.0.0,Still,F1,animals_03.y4m,-1.3789,-14.3092,-13.4302,-2.374,-2.1602,-1.1948,-1.67,-1.8656,-1.9856,-4.1366,-1.3789,-14.3092,-13.4302,-1.9041 v03.0.0,Still,F1,animals_03.y4m,-2.271,-16.9974,-16.7193,-3.4393,-3.516,-2.3108,-3.2091,-2.831,-3.0532,-5.3388,-2.271,-16.9974,-16.7193,-2.8772 v04.0.0,Still,F1,animals_03.y4m,-4.0898,-22.8504,-21.1834,-5.5415,-3.6576,-4.2151,-4.9141,-4.1327,-4.5427,-7.7806,-4.0898,-22.8504,-21.1834,-4.8344 @@ -3359,8 +3357,8 @@ v10.0.0,Still,F1,animals_03.y4m,-8.5795,-25.362,-22.9474,-9.8527,-9.7093,-9.1629 v11.0.0,Still,F1,animals_03.y4m,-8.2987,-25.2517,-22.5945,-9.5651,-9.8454,-9.1142,-12.7054,-11.4929,-9.5088,-11.6726,-8.2987,-25.2517,-22.5945,-8.9533 v12.0.0,Still,F1,animals_03.y4m,-8.2636,-24.8837,-22.8867,-9.5347,-9.6028,-9.0324,-12.3162,-11.2435,-9.4176,-11.6089,-8.2636,-24.8837,-22.8867,-8.9195 v13.0.0,Still,F1,animals_03.y4m,-8.1485,-25.2415,-22.6216,-9.4303,-8.4201,-8.9507,-12.3569,-11.2762,-9.3001,-11.4857,-8.1485,-25.2415,-22.6216,-8.813 -libaom-v3.12.0,Still,F1,animals_09.y4m,-0.4896,-1.4794,-1.9694,-0.5878,-0.3005,-0.4534,0.9048,0.3828,-0.3185,-0.5471,-0.4896,-1.4794,-1.9694,-0.5625 -libaom-v3.12.0-unconstrained,Still,F1,animals_09.y4m,0.4476,-5.3958,-2.962,-0.0523,1.1131,0.1973,1.1455,1.2589,0.4859,-0.5306,0.4476,-5.3958,-2.962,0.1766 +v14.0.0,Still,F1,animals_03.y4m,-8.252,-25.3432,-23.2278,-9.5559,-8.516,-8.9724,-12.9654,-11.5708,-9.2904,-11.6584,-8.252,-25.3432,-23.2278,-8.9266 +v15.0.0,Still,F1,animals_03.y4m,-8.252,-25.3432,-23.2278,-9.5559,-8.516,-8.9724,-12.9654,-11.5708,-9.2904,-11.6584,-8.252,-25.3432,-23.2278,-8.9266 v02.0.0,Still,F1,animals_09.y4m,-3.8052,-7.7953,-8.8438,-4.2792,-3.765,-3.6286,-5.3552,-5.308,-3.5803,-4.9369,-3.8052,-7.7953,-8.8438,-4.0772 v03.0.0,Still,F1,animals_09.y4m,-5.9135,-7.8617,-9.5253,-6.2028,-5.3701,-5.7666,-7.3191,-6.9366,-5.6898,-6.4401,-5.9135,-7.8617,-9.5253,-6.0634 v04.0.0,Still,F1,animals_09.y4m,-8.0381,-15.5232,-18.617,-8.9825,-6.1224,-7.7322,-10.6106,-9.2649,-7.7271,-9.476,-8.0381,-15.5232,-18.617,-8.5589 @@ -3373,8 +3371,8 @@ v10.0.0,Still,F1,animals_09.y4m,-13.9127,-19.8629,-22.03,-14.6401,-13.6305,-13.2 v11.0.0,Still,F1,animals_09.y4m,-13.6374,-19.6084,-20.1484,-14.2843,-13.3508,-13.1198,-18.1172,-17.7196,-13.245,-14.3252,-13.6374,-19.6084,-20.1484,-13.9717 v12.0.0,Still,F1,animals_09.y4m,-13.4679,-19.7662,-20.3862,-14.158,-13.5684,-13.0496,-17.9794,-17.0508,-13.1873,-14.1505,-13.4679,-19.7662,-20.3862,-13.8232 v13.0.0,Still,F1,animals_09.y4m,-13.4793,-19.8545,-19.9935,-14.1586,-13.3815,-13.0456,-18.1995,-17.1834,-13.1664,-13.9171,-13.4793,-19.8545,-19.9935,-13.837 -libaom-v3.12.0,Still,F1,buildings_02.y4m,0.4247,-1.3714,-1.1661,0.3106,-2.2412,-3.1055,-0.7784,-0.5505,-1.2386,-0.1076,0.4247,-1.3714,-1.1661,0.3174 -libaom-v3.12.0-unconstrained,Still,F1,buildings_02.y4m,0.7325,-4.5102,-5.6155,0.155,-1.7055,-1.7009,0.4999,0.2432,-1.3167,-1.1698,0.7325,-4.5102,-5.6155,0.489 +v14.0.0,Still,F1,animals_09.y4m,-13.9132,-19.9436,-20.1161,-14.5557,-13.8413,-13.3251,-18.5621,-17.9394,-13.4562,-14.3733,-13.9132,-19.9436,-20.1161,-14.2511 +v15.0.0,Still,F1,animals_09.y4m,-13.9132,-19.9436,-20.1161,-14.5557,-13.8413,-13.3251,-18.5621,-17.9394,-13.4562,-14.3733,-13.9132,-19.9436,-20.1161,-14.2511 v02.0.0,Still,F1,buildings_02.y4m,-2.3244,-25.0,-27.3501,-4.761,-5.2421,-4.2182,-4.7822,-4.8982,-6.8034,-10.4565,-2.3244,-25.0,-27.3501,-3.3032 v03.0.0,Still,F1,buildings_02.y4m,-3.8361,-25.6149,-27.8847,-6.183,-7.3546,-5.7716,-5.9328,-5.9728,-8.3347,-11.3949,-3.8361,-25.6149,-27.8847,-4.8012 v04.0.0,Still,F1,buildings_02.y4m,-6.913,-33.0579,-35.3722,-9.6966,-10.3862,-9.4288,-8.9995,-8.6135,-11.6998,-15.6341,-6.913,-33.0579,-35.3722,-8.0708 @@ -3387,8 +3385,8 @@ v10.0.0,Still,F1,buildings_02.y4m,-16.4884,-39.908,-41.8355,-18.9852,-17.6178,-1 v11.0.0,Still,F1,buildings_02.y4m,-15.815,-40.8398,-42.6957,-18.5086,-17.0365,-18.5275,-25.4605,-24.0457,-22.2099,-24.237,-15.815,-40.8398,-42.6957,-17.0014 v12.0.0,Still,F1,buildings_02.y4m,-16.8907,-41.0296,-43.4651,-19.5166,-18.4763,-19.6946,-27.4096,-25.9173,-23.5231,-25.0175,-16.8907,-41.0296,-43.4651,-18.065 v13.0.0,Still,F1,buildings_02.y4m,-17.1989,-41.5746,-42.8607,-19.7833,-17.5738,-19.7414,-27.6666,-26.0663,-23.6162,-25.3728,-17.1989,-41.5746,-42.8607,-18.3549 -libaom-v3.12.0,Still,F1,buildings_03.y4m,0.3225,-2.2478,-2.5085,0.1291,-1.3314,-0.1841,-1.2301,-0.768,-1.2333,-0.2812,0.3225,-2.2478,-2.5085,0.1211 -libaom-v3.12.0-unconstrained,Still,F1,buildings_03.y4m,0.8475,-1.5675,0.3618,0.6845,-1.479,0.4669,1.7979,1.6257,0.823,1.58,0.8475,-1.5675,0.3618,0.7409 +v14.0.0,Still,F1,buildings_02.y4m,-17.4285,-41.7418,-42.8645,-19.9985,-17.7392,-19.9632,-27.9754,-26.5007,-23.7788,-25.5101,-17.4285,-41.7418,-42.8645,-18.5861 +v15.0.0,Still,F1,buildings_02.y4m,-17.4285,-41.7418,-42.8645,-19.9985,-17.7392,-19.9632,-27.9754,-26.5007,-23.7788,-25.5101,-17.4285,-41.7418,-42.8645,-18.5861 v02.0.0,Still,F1,buildings_03.y4m,-1.1592,-18.4205,-21.4632,-2.8168,-2.4671,-1.6229,-1.7126,-1.6901,-3.8305,-5.5734,-1.1592,-18.4205,-21.4632,-1.8048 v03.0.0,Still,F1,buildings_03.y4m,-1.6568,-22.0385,-23.3978,-3.5112,-1.8928,-2.0071,-4.0246,-2.6539,-4.2704,-6.5545,-1.6568,-22.0385,-23.3978,-2.3875 v04.0.0,Still,F1,buildings_03.y4m,-3.8365,-30.2476,-30.7418,-6.218,-2.3259,-4.0321,-4.889,-3.2737,-6.7153,-9.5211,-3.8365,-30.2476,-30.7418,-4.7802 @@ -3401,8 +3399,8 @@ v10.0.0,Still,F1,buildings_03.y4m,-6.0676,-29.7494,-30.9469,-8.2495,-5.7701,-7.1 v11.0.0,Still,F1,buildings_03.y4m,-5.6111,-30.179,-31.5272,-7.8864,-5.399,-6.8318,-10.227,-8.8594,-9.5528,-11.3005,-5.6111,-30.179,-31.5272,-6.5671 v12.0.0,Still,F1,buildings_03.y4m,-5.6027,-30.0536,-31.3186,-7.8494,-5.441,-6.713,-10.363,-8.823,-9.5163,-11.3247,-5.6027,-30.0536,-31.3186,-6.5552 v13.0.0,Still,F1,buildings_03.y4m,-5.5092,-30.084,-31.4941,-7.7733,-6.4292,-6.6496,-9.7671,-8.64,-9.4166,-11.2043,-5.5092,-30.084,-31.4941,-6.4632 -libaom-v3.12.0,Still,F1,church.y4m,0.7757,0.0706,0.6709,0.7422,-0.0723,0.7232,0.5285,0.3765,0.4432,1.0975,0.7757,0.0706,0.6709,0.6743 -libaom-v3.12.0-unconstrained,Still,F1,church.y4m,0.9719,-1.9958,-2.2027,0.6299,1.8579,1.1072,1.8865,1.9833,0.8862,-0.3803,0.9719,-1.9958,-2.2027,0.467 +v14.0.0,Still,F1,buildings_03.y4m,-5.5745,-30.2123,-31.4193,-7.829,-6.6147,-6.7522,-9.7857,-8.6429,-9.5049,-11.2644,-5.5745,-30.2123,-31.4193,-6.5279 +v15.0.0,Still,F1,buildings_03.y4m,-5.5745,-30.2123,-31.4193,-7.829,-6.6147,-6.7522,-9.7857,-8.6429,-9.5049,-11.2644,-5.5745,-30.2123,-31.4193,-6.5279 v02.0.0,Still,F1,church.y4m,-4.1279,-4.0775,-3.8486,-4.1143,-2.6647,-3.8616,-4.2016,-4.1568,-3.9783,-3.8175,-4.1279,-4.0775,-3.8486,-4.0814 v03.0.0,Still,F1,church.y4m,-6.5098,-5.6216,-4.7804,-6.3793,-5.096,-6.7011,-6.3795,-6.1958,-6.5096,-5.599,-6.5098,-5.6216,-4.7804,-6.2714 v04.0.0,Still,F1,church.y4m,-10.7548,-15.3723,-15.7151,-11.2673,-8.2759,-10.6685,-10.4135,-10.0164,-11.1287,-12.2591,-10.7548,-15.3723,-15.7151,-11.6141 @@ -3415,8 +3413,8 @@ v10.0.0,Still,F1,church.y4m,-17.8383,-21.8547,-22.3847,-18.3003,-14.6936,-17.293 v11.0.0,Still,F1,church.y4m,-17.4982,-21.3402,-22.3865,-17.97,-14.9615,-16.9354,-20.3425,-19.5097,-17.4792,-18.6864,-17.4982,-21.3402,-22.3865,-18.2442 v12.0.0,Still,F1,church.y4m,-17.4162,-21.367,-22.5945,-17.9129,-14.4475,-16.8936,-19.4243,-18.7305,-17.4879,-18.651,-17.4162,-21.367,-22.5945,-18.1994 v13.0.0,Still,F1,church.y4m,-17.5662,-22.7964,-23.6082,-18.1921,-18.424,-16.9916,-20.469,-19.6574,-17.8154,-19.44,-17.5662,-22.7964,-23.6082,-18.5475 -libaom-v3.12.0,Still,F1,fireworks_01.y4m,-0.1743,-0.4384,-4.2569,-0.2655,-2.2407,0.5711,-0.514,-0.7391,0.4906,-0.6969,-0.1743,-0.4384,-4.2569,-0.1915 -libaom-v3.12.0-unconstrained,Still,F1,fireworks_01.y4m,2.1287,2.7397,-4.4875,2.0764,-0.5862,1.9568,1.9611,1.3969,3.0004,2.1396,2.1287,2.7397,-4.4875,2.1482 +v14.0.0,Still,F1,church.y4m,-17.9555,-23.1527,-23.3416,-18.5397,-18.8964,-17.4126,-21.351,-20.3041,-18.0854,-19.6346,-17.9555,-23.1527,-23.3416,-18.8907 +v15.0.0,Still,F1,church.y4m,-17.9555,-23.1527,-23.3416,-18.5397,-18.8964,-17.4126,-21.351,-20.3041,-18.0854,-19.6346,-17.9555,-23.1527,-23.3416,-18.8907 v02.0.0,Still,F1,fireworks_01.y4m,-1.0465,-24.7181,-27.4602,-3.6265,-2.6788,-0.6603,-2.3149,-2.5191,-2.4612,-9.4407,-1.0465,-24.7181,-27.4602,-1.6634 v03.0.0,Still,F1,fireworks_01.y4m,-1.7983,-27.4825,-29.5253,-4.5433,-1.9339,-1.3499,-5.4485,-5.0462,-3.3397,-10.8066,-1.7983,-27.4825,-29.5253,-2.4553 v04.0.0,Still,F1,fireworks_01.y4m,-4.2077,-34.2715,-37.687,-7.5707,-2.9848,-3.7368,-6.6509,-6.1886,-5.4058,-13.5859,-4.2077,-34.2715,-37.687,-4.9909 @@ -3429,8 +3427,8 @@ v10.0.0,Still,F1,fireworks_01.y4m,-9.151,-38.0181,-38.2442,-12.2247,-11.0385,-9. v11.0.0,Still,F1,fireworks_01.y4m,-8.6305,-39.2824,-40.9566,-11.9334,-10.9578,-9.7125,-14.7804,-14.1107,-11.8297,-18.0249,-8.6305,-39.2824,-40.9566,-9.441 v12.0.0,Still,F1,fireworks_01.y4m,-8.6147,-39.1373,-40.4355,-11.8865,-10.8579,-9.6101,-14.8478,-14.0189,-11.6421,-17.8339,-8.6147,-39.1373,-40.4355,-9.4154 v13.0.0,Still,F1,fireworks_01.y4m,-8.5908,-38.7533,-39.4579,-11.7861,-8.348,-9.6217,-14.8593,-14.3689,-11.6151,-17.7369,-8.5908,-38.7533,-39.4579,-9.3801 -libaom-v3.12.0,Still,F1,flowerfield.y4m,0.9116,-0.1722,-0.4102,0.7677,1.6355,1.6257,0.776,0.7212,1.5707,0.8237,0.9116,-0.1722,-0.4102,0.5191 -libaom-v3.12.0-unconstrained,Still,F1,flowerfield.y4m,0.5001,-0.3638,-0.7153,0.374,2.8208,0.9587,2.3131,2.0599,0.7321,0.379,0.5001,-0.3638,-0.7153,0.1872 +v14.0.0,Still,F1,fireworks_01.y4m,-8.6968,-38.9101,-39.495,-11.8863,-8.4272,-9.6865,-15.0097,-14.319,-11.6727,-17.7104,-8.6968,-38.9101,-39.495,-9.4876 +v15.0.0,Still,F1,fireworks_01.y4m,-8.6968,-38.9101,-39.495,-11.8863,-8.4272,-9.6865,-15.0097,-14.319,-11.6727,-17.7104,-8.6968,-38.9101,-39.495,-9.4876 v02.0.0,Still,F1,flowerfield.y4m,-2.729,-3.2506,-3.6841,-2.7996,-1.5434,-2.097,-3.581,-3.5889,-2.5815,-2.4951,-2.729,-3.2506,-3.6841,-2.9231 v03.0.0,Still,F1,flowerfield.y4m,-3.9467,-3.1116,-2.7039,-3.8151,-2.737,-3.4177,-4.0882,-4.3616,-3.7613,-2.9916,-3.9467,-3.1116,-2.7039,-3.6239 v04.0.0,Still,F1,flowerfield.y4m,-6.1254,-7.3465,-7.8285,-6.2911,-4.0042,-5.51,-6.471,-6.6944,-6.3663,-6.1357,-6.1254,-7.3465,-7.8285,-6.5616 @@ -3443,8 +3441,8 @@ v10.0.0,Still,F1,flowerfield.y4m,-12.9735,-10.2207,-11.118,-12.6955,-12.0524,-12 v11.0.0,Still,F1,flowerfield.y4m,-12.6098,-9.7813,-10.2354,-12.2956,-11.527,-11.8604,-15.8333,-15.0834,-11.8722,-11.0727,-12.6098,-9.7813,-10.2354,-11.7725 v12.0.0,Still,F1,flowerfield.y4m,-12.5253,-9.5206,-10.3356,-12.2115,-11.8679,-11.9575,-15.1204,-14.7898,-11.9576,-10.9114,-12.5253,-9.5206,-10.3356,-11.6843 v13.0.0,Still,F1,flowerfield.y4m,-12.2401,-9.6263,-10.3288,-11.9682,-12.6251,-11.6833,-15.2326,-14.5535,-11.6881,-10.8212,-12.2401,-9.6263,-10.3288,-11.5121 -libaom-v3.12.0,Still,F1,flowers_08.y4m,0.4191,-0.9424,-1.1082,0.2879,-1.3788,-0.4203,-1.4178,-0.9242,-0.7288,-0.1939,0.4191,-0.9424,-1.1082,0.2539 -libaom-v3.12.0-unconstrained,Still,F1,flowers_08.y4m,0.8395,-2.4954,-2.2762,0.523,-2.537,-0.5311,0.0932,0.1,-0.2023,-0.327,0.8395,-2.4954,-2.2762,0.5768 +v14.0.0,Still,F1,flowerfield.y4m,-12.2484,-9.6073,-10.3116,-11.9734,-12.6183,-11.6846,-15.2134,-14.5565,-11.683,-10.8143,-12.2484,-9.6073,-10.3116,-11.5119 +v15.0.0,Still,F1,flowerfield.y4m,-12.2484,-9.6073,-10.3116,-11.9734,-12.6183,-11.6846,-15.2134,-14.5565,-11.683,-10.8143,-12.2484,-9.6073,-10.3116,-11.5119 v02.0.0,Still,F1,flowers_08.y4m,-2.036,-6.1729,-10.9337,-2.6704,-3.8248,-3.3695,-3.1404,-3.0752,-3.8403,-4.7619,-2.036,-6.1729,-10.9337,-2.5346 v03.0.0,Still,F1,flowers_08.y4m,-3.053,-7.1806,-11.4539,-3.6621,-3.7996,-4.1606,-3.9271,-3.2501,-4.5141,-5.5923,-3.053,-7.1806,-11.4539,-3.5352 v04.0.0,Still,F1,flowers_08.y4m,-4.9699,-9.7863,-16.9348,-5.7977,-4.8295,-6.4735,-4.9351,-4.3325,-6.5885,-8.2081,-4.9699,-9.7863,-16.9348,-5.5736 @@ -3457,8 +3455,8 @@ v10.0.0,Still,F1,flowers_08.y4m,-8.7962,-12.1755,-18.9801,-9.4537,-8.6134,-10.47 v11.0.0,Still,F1,flowers_08.y4m,-8.5327,-12.0096,-19.1692,-9.2187,-8.4157,-10.2481,-10.6916,-9.6704,-10.3994,-11.1788,-8.5327,-12.0096,-19.1692,-9.0695 v12.0.0,Still,F1,flowers_08.y4m,-8.5251,-11.9107,-19.2228,-9.2081,-8.6826,-10.28,-10.6502,-9.7224,-10.3765,-11.2571,-8.5251,-11.9107,-19.2228,-9.0563 v13.0.0,Still,F1,flowers_08.y4m,-8.4648,-12.0891,-19.1283,-9.1572,-9.7476,-10.087,-10.2809,-9.5713,-10.2696,-11.1334,-8.4648,-12.0891,-19.1283,-9.0024 -libaom-v3.12.0,Still,F1,flowers_12.y4m,0.3614,-2.7418,-3.2122,0.118,-0.7132,0.1384,-1.4992,-0.758,-0.3148,-0.4748,0.3614,-2.7418,-3.2122,0.1763 -libaom-v3.12.0-unconstrained,Still,F1,flowers_12.y4m,0.2611,-4.3742,-3.7637,-0.1992,-0.2358,0.3862,1.7948,1.3033,0.4297,-0.7571,0.2611,-4.3742,-3.7637,0.0481 +v14.0.0,Still,F1,flowers_08.y4m,-8.5771,-12.0289,-19.122,-9.2556,-9.9115,-10.2259,-10.6619,-9.7332,-10.3595,-11.235,-8.5771,-12.0289,-19.122,-9.0997 +v15.0.0,Still,F1,flowers_08.y4m,-8.5771,-12.0289,-19.122,-9.2556,-9.9115,-10.2259,-10.6619,-9.7332,-10.3595,-11.235,-8.5771,-12.0289,-19.122,-9.0997 v02.0.0,Still,F1,flowers_12.y4m,-3.055,-17.6217,-20.0997,-4.6397,-3.0855,-3.3479,-3.3665,-3.8318,-3.8203,-7.4218,-3.055,-17.6217,-20.0997,-3.7902 v03.0.0,Still,F1,flowers_12.y4m,-4.8449,-19.8828,-21.262,-6.421,-4.658,-4.9688,-5.7245,-5.6425,-6.0443,-9.0477,-4.8449,-19.8828,-21.262,-5.5954 v04.0.0,Still,F1,flowers_12.y4m,-6.939,-24.5892,-27.5287,-8.8655,-4.4607,-6.9146,-4.9505,-5.817,-7.9028,-11.9055,-6.939,-24.5892,-27.5287,-7.8455 @@ -3471,8 +3469,8 @@ v10.0.0,Still,F1,flowers_12.y4m,-11.3377,-26.9704,-29.803,-13.0599,-10.1793,-11. v11.0.0,Still,F1,flowers_12.y4m,-11.1975,-27.4849,-30.4082,-12.9815,-10.2256,-11.6766,-14.066,-13.6563,-12.6293,-15.8496,-11.1975,-27.4849,-30.4082,-12.0553 v12.0.0,Still,F1,flowers_12.y4m,-11.0278,-27.2491,-29.9629,-12.793,-10.134,-11.3789,-12.3604,-12.6134,-12.3739,-15.6656,-11.0278,-27.2491,-29.9629,-11.8778 v13.0.0,Still,F1,flowers_12.y4m,-10.9531,-27.569,-30.081,-12.7496,-11.2656,-11.3604,-12.6489,-12.7306,-12.3615,-15.6537,-10.9531,-27.569,-30.081,-11.8162 -libaom-v3.12.0,Still,F1,food_02.y4m,0.4064,-2.3719,-2.2525,0.2205,-0.224,0.4702,-0.4182,-0.1067,0.5255,0.108,0.4064,-2.3719,-2.2525,0.2731 -libaom-v3.12.0-unconstrained,Still,F1,food_02.y4m,0.3449,-3.5328,-2.1643,-0.0485,0.6757,0.9739,0.5531,0.5027,0.8365,-0.1419,0.3449,-3.5328,-2.1643,0.1655 +v14.0.0,Still,F1,flowers_12.y4m,-11.15,-27.4695,-30.2706,-12.9282,-11.5527,-11.6415,-14.0217,-13.5732,-12.5559,-15.7971,-11.15,-27.4695,-30.2706,-12.0064 +v15.0.0,Still,F1,flowers_12.y4m,-11.15,-27.4695,-30.2706,-12.9282,-11.5527,-11.6415,-14.0217,-13.5732,-12.5559,-15.7971,-11.15,-27.4695,-30.2706,-12.0064 v02.0.0,Still,F1,food_02.y4m,-5.278,-13.706,-19.8681,-6.5018,-5.5844,-4.9649,-7.2141,-7.6824,-5.293,-7.4551,-5.278,-13.706,-19.8681,-5.8296 v03.0.0,Still,F1,food_02.y4m,-7.5639,-16.33,-22.519,-8.8297,-7.9385,-6.9967,-9.1317,-9.4891,-7.662,-9.2663,-7.5639,-16.33,-22.519,-8.1358 v04.0.0,Still,F1,food_02.y4m,-10.0297,-22.6752,-32.3435,-11.9405,-8.3528,-9.245,-11.0645,-11.2034,-9.8575,-12.9825,-10.0297,-22.6752,-32.3435,-10.86 @@ -3485,8 +3483,8 @@ v10.0.0,Still,F1,food_02.y4m,-15.5442,-28.7274,-36.458,-17.4216,-15.1566,-14.861 v11.0.0,Still,F1,food_02.y4m,-15.4143,-28.171,-36.0027,-17.2463,-15.1301,-14.6986,-19.7748,-19.127,-15.6267,-18.2595,-15.4143,-28.171,-36.0027,-16.2321 v12.0.0,Still,F1,food_02.y4m,-15.2779,-27.5762,-36.2844,-17.104,-14.682,-14.5478,-17.4173,-17.9456,-15.6214,-18.0511,-15.2779,-27.5762,-36.2844,-16.084 v13.0.0,Still,F1,food_02.y4m,-15.2559,-28.187,-36.3772,-17.1274,-13.9447,-14.496,-17.7673,-18.1434,-15.5679,-18.1773,-15.2559,-28.187,-36.3772,-16.0836 -libaom-v3.12.0,Still,F1,fountain.y4m,0.1601,-0.7822,-0.7904,0.1233,-1.8713,0.341,2.0721,1.2995,0.5286,0.2085,0.1601,-0.7822,-0.7904,0.1484 -libaom-v3.12.0-unconstrained,Still,F1,fountain.y4m,1.9185,-2.7628,-3.4566,1.2637,0.1421,1.485,3.3332,3.0,1.6118,0.8853,1.9185,-2.7628,-3.4566,1.495 +v14.0.0,Still,F1,food_02.y4m,-15.5592,-27.8556,-36.5712,-17.3865,-14.4376,-14.8031,-20.0628,-19.498,-15.7414,-18.2333,-15.5592,-27.8556,-36.5712,-16.3697 +v15.0.0,Still,F1,food_02.y4m,-15.5592,-27.8556,-36.5712,-17.3865,-14.4376,-14.8031,-20.0628,-19.498,-15.7414,-18.2333,-15.5592,-27.8556,-36.5712,-16.3697 v02.0.0,Still,F1,fountain.y4m,-3.1115,-6.4063,-7.9818,-3.5685,-4.6894,-2.8594,-4.7818,-5.1142,-3.9652,-4.2685,-3.1115,-6.4063,-7.9818,-3.4371 v03.0.0,Still,F1,fountain.y4m,-4.477,-7.7153,-9.4652,-4.9356,-6.4098,-4.255,-6.205,-6.6365,-5.5942,-5.3858,-4.477,-7.7153,-9.4652,-4.8174 v04.0.0,Still,F1,fountain.y4m,-8.1118,-20.7347,-22.9424,-9.6915,-8.9967,-8.0085,-10.3069,-10.6132,-9.8154,-11.5539,-8.1118,-20.7347,-22.9424,-9.2047 @@ -3499,8 +3497,8 @@ v10.0.0,Still,F1,fountain.y4m,-15.0402,-27.3512,-33.8855,-16.8674,-15.6833,-14.9 v11.0.0,Still,F1,fountain.y4m,-14.881,-26.6894,-33.5742,-16.6664,-15.5462,-14.7807,-20.4679,-19.8818,-16.8053,-18.4481,-14.881,-26.6894,-33.5742,-16.0902 v12.0.0,Still,F1,fountain.y4m,-14.759,-25.9894,-32.398,-16.4421,-15.3525,-14.693,-20.3526,-19.718,-16.6873,-18.1558,-14.759,-25.9894,-32.398,-15.9098 v13.0.0,Still,F1,fountain.y4m,-14.7138,-26.3711,-32.6298,-16.4408,-13.3672,-14.6502,-20.5166,-19.7272,-16.6652,-18.3114,-14.7138,-26.3711,-32.6298,-15.8964 -libaom-v3.12.0,Still,F1,lady.y4m,-2.7446,-3.6301,-3.8043,-3.0712,-2.5984,-3.0194,-4.0749,-3.6014,-2.2916,-3.1006,-2.7446,-3.6301,-3.8043,-2.9408 -libaom-v3.12.0-unconstrained,Still,F1,lady.y4m,2.2632,-6.6895,-6.028,0.6309,0.8162,3.0925,3.1576,2.8414,1.0588,-2.2418,2.2632,-6.6895,-6.028,1.5949 +v14.0.0,Still,F1,fountain.y4m,-15.0792,-26.8384,-33.2368,-16.8263,-13.7348,-14.9503,-20.5912,-20.0333,-17.0016,-18.6747,-15.0792,-26.8384,-33.2368,-16.2751 +v15.0.0,Still,F1,fountain.y4m,-15.0792,-26.8384,-33.2368,-16.8263,-13.7348,-14.9503,-20.5912,-20.0333,-17.0016,-18.6747,-15.0792,-26.8384,-33.2368,-16.2751 v02.0.0,Still,F1,lady.y4m,-3.3407,-9.1775,-5.6196,-3.9026,-1.5838,-3.4982,-3.0359,-3.1637,-4.0243,-4.2238,-3.3407,-9.1775,-5.6196,-3.6033 v03.0.0,Still,F1,lady.y4m,-4.9015,-11.36,-7.1358,-5.4913,-2.628,-5.1509,-4.8536,-5.0886,-6.0449,-5.8491,-4.9015,-11.36,-7.1358,-5.19 v04.0.0,Still,F1,lady.y4m,-7.6783,-23.1329,-16.1549,-9.2606,-3.4298,-7.8197,-6.018,-6.2348,-8.6165,-10.5783,-7.6783,-23.1329,-16.1549,-8.3577 @@ -3513,8 +3511,8 @@ v10.0.0,Still,F1,lady.y4m,-14.5511,-29.3308,-22.5869,-16.062,-10.6052,-15.7695,- v11.0.0,Still,F1,lady.y4m,-14.2623,-33.2352,-26.2959,-16.3369,-10.4466,-15.5516,-17.2396,-16.6651,-16.4208,-19.14,-14.2623,-33.2352,-26.2959,-15.1602 v12.0.0,Still,F1,lady.y4m,-14.1158,-31.2057,-23.4325,-15.8808,-10.4064,-15.124,-16.587,-16.3402,-16.0733,-18.6538,-14.1158,-31.2057,-23.4325,-14.8887 v13.0.0,Still,F1,lady.y4m,-14.2564,-32.6116,-24.2683,-16.1473,-13.5741,-15.2302,-17.114,-16.6394,-16.1877,-18.696,-14.2564,-32.6116,-24.2683,-15.0764 -libaom-v3.12.0,Still,F1,landscape_05.y4m,0.3349,-1.4615,-1.9717,0.1634,-1.1836,-0.0465,-0.0101,-0.0223,-0.274,-0.2443,0.3349,-1.4615,-1.9717,0.1674 -libaom-v3.12.0-unconstrained,Still,F1,landscape_05.y4m,0.8049,-3.7318,-4.6122,0.2696,-2.0926,-0.3506,0.7379,0.4662,0.0037,-0.5789,0.8049,-3.7318,-4.6122,0.4446 +v14.0.0,Still,F1,lady.y4m,-14.2416,-33.6156,-24.9175,-16.247,-13.4657,-15.1966,-17.501,-16.9388,-16.2126,-18.8999,-14.2416,-33.6156,-24.9175,-15.1107 +v15.0.0,Still,F1,lady.y4m,-14.2416,-33.6156,-24.9175,-16.247,-13.4657,-15.1966,-17.501,-16.9388,-16.2126,-18.8999,-14.2416,-33.6156,-24.9175,-15.1107 v02.0.0,Still,F1,landscape_05.y4m,-2.0932,-9.2009,-14.369,-3.0912,-3.65,-2.8262,-2.5384,-2.7831,-3.3712,-5.0085,-2.0932,-9.2009,-14.369,-2.777 v03.0.0,Still,F1,landscape_05.y4m,-3.4082,-10.077,-15.7875,-4.3806,-3.577,-4.0539,-4.1402,-3.861,-4.7593,-6.0151,-3.4082,-10.077,-15.7875,-4.0764 v04.0.0,Still,F1,landscape_05.y4m,-5.6327,-14.0671,-21.2366,-6.8765,-4.7054,-6.3751,-5.3532,-5.1579,-6.9566,-8.9383,-5.6327,-14.0671,-21.2366,-6.4801 @@ -3527,8 +3525,8 @@ v10.0.0,Still,F1,landscape_05.y4m,-10.0894,-18.9851,-25.9147,-11.3819,-9.2434,-1 v11.0.0,Still,F1,landscape_05.y4m,-9.8878,-18.6319,-25.5931,-11.1674,-9.2105,-10.6251,-11.5665,-11.0544,-11.4045,-13.2636,-9.8878,-18.6319,-25.5931,-10.7583 v12.0.0,Still,F1,landscape_05.y4m,-9.8117,-18.4646,-25.6072,-11.0859,-9.185,-10.4443,-10.9393,-10.8179,-11.341,-13.175,-9.8117,-18.4646,-25.6072,-10.6785 v13.0.0,Still,F1,landscape_05.y4m,-9.7141,-18.6447,-25.8529,-11.0237,-10.0647,-10.3572,-10.8599,-10.7208,-11.238,-13.1688,-9.7141,-18.6447,-25.8529,-10.6042 -libaom-v3.12.0,Still,F1,landscape_15.y4m,0.3653,-0.6126,0.0073,0.319,-2.1469,-0.5893,0.3707,0.3014,-0.3773,0.0074,0.3653,-0.6126,0.0073,0.3066 -libaom-v3.12.0-unconstrained,Still,F1,landscape_15.y4m,1.0033,-1.9378,-1.2287,0.7462,-2.1935,-0.1164,1.577,1.4684,0.7412,0.0648,1.0033,-1.9378,-1.2287,0.9146 +v14.0.0,Still,F1,landscape_05.y4m,-9.896,-18.8302,-26.1144,-11.209,-10.3583,-10.6053,-11.5053,-11.0587,-11.4038,-13.3757,-9.896,-18.8302,-26.1144,-10.7887 +v15.0.0,Still,F1,landscape_05.y4m,-9.896,-18.8302,-26.1144,-11.209,-10.3583,-10.6053,-11.5053,-11.0587,-11.4038,-13.3757,-9.896,-18.8302,-26.1144,-10.7887 v02.0.0,Still,F1,landscape_15.y4m,-1.8378,-21.7251,-23.6472,-3.9078,-3.4295,-2.7121,-1.9192,-1.9027,-3.4666,-7.1823,-1.8378,-21.7251,-23.6472,-2.5893 v03.0.0,Still,F1,landscape_15.y4m,-2.7412,-25.0726,-24.4885,-4.9505,-3.4604,-3.7819,-3.2617,-2.9759,-4.6067,-8.6966,-2.7412,-25.0726,-24.4885,-3.5489 v04.0.0,Still,F1,landscape_15.y4m,-5.0582,-32.3854,-29.435,-7.7087,-6.2478,-6.1801,-4.4121,-4.3468,-6.88,-12.3945,-5.0582,-32.3854,-29.435,-6.0264 @@ -3541,8 +3539,8 @@ v10.0.0,Still,F1,landscape_15.y4m,-9.1831,-38.5891,-34.3015,-11.998,-11.1069,-10 v11.0.0,Still,F1,landscape_15.y4m,-9.0515,-38.8602,-34.7944,-11.9211,-10.793,-10.0503,-10.6641,-10.4447,-11.2434,-17.4186,-9.0515,-38.8602,-34.7944,-10.0989 v12.0.0,Still,F1,landscape_15.y4m,-9.0427,-38.5898,-35.5598,-11.9678,-11.0452,-10.0317,-10.5403,-10.2325,-11.2118,-17.4715,-9.0427,-38.5898,-35.5598,-10.1049 v13.0.0,Still,F1,landscape_15.y4m,-8.9361,-38.791,-35.0743,-11.8367,-9.502,-9.8426,-11.1673,-10.7465,-11.0673,-17.2697,-8.9361,-38.791,-35.0743,-9.9934 -libaom-v3.12.0,Still,F1,landscape_16.y4m,-0.1361,-2.6452,-2.977,-0.3439,-1.7352,-0.7473,0.7778,0.5568,-0.5841,-0.7304,-0.1361,-2.6452,-2.977,-0.2302 -libaom-v3.12.0-unconstrained,Still,F1,landscape_16.y4m,0.2657,-2.7648,-0.0245,0.0978,-1.1514,-0.332,1.6317,1.6219,0.256,-2.4363,0.2657,-2.7648,-0.0245,0.2092 +v14.0.0,Still,F1,landscape_15.y4m,-8.9562,-38.851,-34.4959,-11.8224,-9.5195,-9.8331,-10.7914,-10.4417,-11.0892,-17.2752,-8.9562,-38.851,-34.4959,-10.0029 +v15.0.0,Still,F1,landscape_15.y4m,-8.9562,-38.851,-34.4959,-11.8224,-9.5195,-9.8331,-10.7914,-10.4417,-11.0892,-17.2752,-8.9562,-38.851,-34.4959,-10.0029 v02.0.0,Still,F1,landscape_16.y4m,-1.4275,-20.9108,-18.468,-3.4582,-2.928,-1.6675,-1.4833,-1.4801,-1.8809,-7.2302,-1.4275,-20.9108,-18.468,-1.8927 v03.0.0,Still,F1,landscape_16.y4m,-2.8108,-23.6483,-25.4738,-4.9686,-4.3308,-2.9202,-2.9811,-2.5274,-3.294,-10.0061,-2.8108,-23.6483,-25.4738,-3.2974 v04.0.0,Still,F1,landscape_16.y4m,-4.8753,-24.4763,-28.0094,-6.9818,-5.2303,-5.0559,-5.528,-4.3679,-5.0647,-11.2899,-4.8753,-24.4763,-28.0094,-5.3618 @@ -3555,8 +3553,8 @@ v10.0.0,Still,F1,landscape_16.y4m,-9.6949,-25.2866,-28.713,-11.4207,-9.5647,-9.0 v11.0.0,Still,F1,landscape_16.y4m,-9.4087,-24.9687,-29.2695,-11.184,-9.6996,-8.9245,-11.4749,-10.728,-9.1322,-15.7454,-9.4087,-24.9687,-29.2695,-9.7815 v12.0.0,Still,F1,landscape_16.y4m,-8.8117,-24.7543,-29.7974,-10.6233,-9.5137,-8.5784,-11.4331,-10.5258,-9.0092,-15.1266,-8.8117,-24.7543,-29.7974,-9.1979 v13.0.0,Still,F1,landscape_16.y4m,-8.6974,-23.7058,-27.7324,-10.3682,-8.7399,-8.5529,-11.3164,-10.3709,-8.8532,-14.7635,-8.6974,-23.7058,-27.7324,-9.0672 -libaom-v3.12.0,Still,F1,landscape_18.y4m,0.2315,-0.7167,0.3381,0.2045,-2.7673,0.2302,-0.8306,-0.3475,0.0707,-0.0289,0.2315,-0.7167,0.3381,0.2127 -libaom-v3.12.0-unconstrained,Still,F1,landscape_18.y4m,1.4377,1.2414,7.0183,1.685,-3.7583,-0.109,1.4515,1.7675,1.0363,1.0144,1.4377,1.2414,7.0183,1.4998 +v14.0.0,Still,F1,landscape_16.y4m,-9.4208,-23.6717,-27.6542,-11.0273,-9.5277,-8.8333,-12.0667,-10.9598,-9.1298,-15.3334,-9.4208,-23.6717,-27.6542,-9.7712 +v15.0.0,Still,F1,landscape_16.y4m,-9.4208,-23.6717,-27.6542,-11.0273,-9.5277,-8.8333,-12.0667,-10.9598,-9.1298,-15.3334,-9.4208,-23.6717,-27.6542,-9.7712 v02.0.0,Still,F1,landscape_18.y4m,-1.0505,-26.987,-37.5159,-4.2262,-2.4212,-1.6136,-1.9731,-1.5876,-3.1715,-8.5512,-1.0505,-26.987,-37.5159,-1.8739 v03.0.0,Still,F1,landscape_18.y4m,-1.8802,-31.7622,-39.1013,-5.2592,-3.3776,-2.5782,-3.4163,-2.5137,-4.0992,-10.0657,-1.8802,-31.7622,-39.1013,-2.7577 v04.0.0,Still,F1,landscape_18.y4m,-4.2946,-39.3586,-45.4932,-8.2144,-5.7612,-4.9986,-4.5518,-3.7261,-6.5419,-13.3607,-4.2946,-39.3586,-45.4932,-5.2969 @@ -3569,8 +3567,8 @@ v10.0.0,Still,F1,landscape_18.y4m,-8.6069,-45.4108,-48.4605,-12.5783,-10.7977,-9 v11.0.0,Still,F1,landscape_18.y4m,-8.2498,-47.7689,-50.9509,-12.6056,-10.2254,-9.2687,-11.7212,-10.6276,-11.545,-18.5135,-8.2498,-47.7689,-50.9509,-9.3472 v12.0.0,Still,F1,landscape_18.y4m,-8.2334,-47.6805,-50.4653,-12.5461,-10.8772,-9.1739,-11.7449,-10.631,-11.4091,-18.4328,-8.2334,-47.6805,-50.4653,-9.3188 v13.0.0,Still,F1,landscape_18.y4m,-8.2446,-47.1923,-50.2615,-12.4618,-8.5026,-9.34,-11.4551,-10.512,-11.6121,-18.3496,-8.2446,-47.1923,-50.2615,-9.3173 -libaom-v3.12.0,Still,F1,landscape_25.y4m,-0.087,-4.2266,-2.3377,-0.2552,-0.0994,0.0224,-1.9865,-1.1116,-0.1607,-1.1217,-0.087,-4.2266,-2.3377,-0.2476 -libaom-v3.12.0-unconstrained,Still,F1,landscape_25.y4m,1.3684,8.6955,21.2621,2.1271,-1.252,0.3763,4.9038,4.2897,2.2545,3.2691,1.3684,8.6955,21.2621,1.4469 +v14.0.0,Still,F1,landscape_18.y4m,-8.2284,-47.1637,-50.6587,-12.5271,-8.4412,-9.1943,-11.3849,-10.416,-11.4422,-18.4185,-8.2284,-47.1637,-50.6587,-9.3154 +v15.0.0,Still,F1,landscape_18.y4m,-8.2284,-47.1637,-50.6587,-12.5271,-8.4412,-9.1943,-11.3849,-10.416,-11.4422,-18.4185,-8.2284,-47.1637,-50.6587,-9.3154 v02.0.0,Still,F1,landscape_25.y4m,-0.9833,-22.761,-44.1165,-3.1234,-2.0225,-1.1821,-0.1635,-0.3323,-2.1951,-7.35,-0.9833,-22.761,-44.1165,-1.6947 v03.0.0,Still,F1,landscape_25.y4m,-1.8529,-27.0918,-48.1172,-4.2389,-0.0915,-1.5295,-2.4373,-1.7613,-2.2089,-8.7922,-1.8529,-27.0918,-48.1172,-2.6509 v04.0.0,Still,F1,landscape_25.y4m,-3.8919,-30.2995,-52.6819,-6.4396,-0.7923,-3.7952,-2.4879,-1.985,-4.0688,-10.9399,-3.8919,-30.2995,-52.6819,-4.7484 @@ -3583,8 +3581,8 @@ v10.0.0,Still,F1,landscape_25.y4m,-8.1553,-34.7493,-54.9348,-10.6992,-6.9369,-8. v11.0.0,Still,F1,landscape_25.y4m,-7.9999,-34.4008,-55.4987,-10.568,-6.6321,-8.3393,-8.9144,-8.7167,-9.3786,-15.7657,-7.9999,-34.4008,-55.4987,-8.9181 v12.0.0,Still,F1,landscape_25.y4m,-7.9796,-34.2645,-54.5086,-10.5113,-7.0881,-8.2337,-10.196,-9.8612,-9.3796,-15.7394,-7.9796,-34.2645,-54.5086,-8.8822 v13.0.0,Still,F1,landscape_25.y4m,-7.9882,-33.7685,-52.9841,-10.4243,-7.8117,-8.1797,-8.9062,-9.163,-9.2223,-15.5382,-7.9882,-33.7685,-52.9841,-8.8728 -libaom-v3.12.0,Still,F1,landscape_26.y4m,-0.0593,-1.6469,-1.5348,-0.1371,-2.04,-0.6962,0.1805,-0.2585,-0.587,-0.3785,-0.0593,-1.6469,-1.5348,-0.1015 -libaom-v3.12.0-unconstrained,Still,F1,landscape_26.y4m,0.6103,-4.5746,-2.8807,0.2272,-2.1389,-0.6039,0.9181,0.4997,-0.1199,-0.4649,0.6103,-4.5746,-2.8807,0.4912 +v14.0.0,Still,F1,landscape_25.y4m,-8.0629,-33.5673,-52.9735,-10.4877,-7.9536,-8.2878,-8.5042,-8.8821,-9.2678,-15.6124,-8.0629,-33.5673,-52.9735,-8.9436 +v15.0.0,Still,F1,landscape_25.y4m,-8.0629,-33.5673,-52.9735,-10.4877,-7.9536,-8.2878,-8.5042,-8.8821,-9.2678,-15.6124,-8.0629,-33.5673,-52.9735,-8.9436 v02.0.0,Still,F1,landscape_26.y4m,-2.3256,-36.8237,-37.2445,-5.3518,-3.452,-2.7823,-2.9512,-3.3291,-4.5266,-7.6951,-2.3256,-36.8237,-37.2445,-3.2461 v03.0.0,Still,F1,landscape_26.y4m,-3.4736,-39.3837,-38.4449,-6.6097,-3.6926,-3.9752,-4.0712,-4.2208,-5.7233,-8.8646,-3.4736,-39.3837,-38.4449,-4.4325 v04.0.0,Still,F1,landscape_26.y4m,-5.9544,-45.7246,-41.6924,-9.3541,-5.8885,-6.7028,-6.2091,-6.1447,-8.2081,-11.7295,-5.9544,-45.7246,-41.6924,-7.0177 @@ -3597,8 +3595,8 @@ v10.0.0,Still,F1,landscape_26.y4m,-11.3596,-50.3886,-44.5823,-14.6465,-10.1918,- v11.0.0,Still,F1,landscape_26.y4m,-11.1399,-51.0854,-45.7341,-14.5392,-10.0815,-11.6502,-14.3126,-13.7488,-13.7625,-17.1651,-11.1399,-51.0854,-45.7341,-12.2251 v12.0.0,Still,F1,landscape_26.y4m,-11.0916,-51.1241,-45.5078,-14.4816,-9.848,-11.4881,-14.4712,-13.7546,-13.6986,-17.0078,-11.0916,-51.1241,-45.5078,-12.172 v13.0.0,Still,F1,landscape_26.y4m,-11.0553,-51.0976,-44.7035,-14.4192,-10.9619,-11.3784,-13.6664,-13.3088,-13.6418,-16.7733,-11.0553,-51.0976,-44.7035,-12.1265 -libaom-v3.12.0,Still,F1,landscape_28.y4m,0.6036,-1.2324,-1.1343,0.4593,-2.2014,-0.5096,-2.0794,-0.8114,-0.1234,0.0373,0.6036,-1.2324,-1.1343,0.4542 -libaom-v3.12.0-unconstrained,Still,F1,landscape_28.y4m,1.0199,-2.9954,-3.9848,0.5579,-1.8359,0.0359,1.4632,1.4437,0.7123,-0.1866,1.0199,-2.9954,-3.9848,0.7481 +v14.0.0,Still,F1,landscape_26.y4m,-11.2903,-51.3851,-45.2317,-14.6631,-11.284,-11.6274,-13.3736,-13.3968,-13.8664,-17.0796,-11.2903,-51.3851,-45.2317,-12.3702 +v15.0.0,Still,F1,landscape_26.y4m,-11.2903,-51.3851,-45.2317,-14.6631,-11.284,-11.6274,-13.3736,-13.3968,-13.8664,-17.0796,-11.2903,-51.3851,-45.2317,-12.3702 v02.0.0,Still,F1,landscape_28.y4m,-1.2593,-11.2944,-13.8853,-2.4049,-2.9363,-1.8919,-1.8632,-1.6627,-2.5711,-5.4323,-1.2593,-11.2944,-13.8853,-1.9241 v03.0.0,Still,F1,landscape_28.y4m,-2.1008,-13.8789,-18.4315,-3.5582,-4.6763,-2.761,-3.5271,-2.4556,-3.3413,-6.664,-2.1008,-13.8789,-18.4315,-2.9135 v04.0.0,Still,F1,landscape_28.y4m,-4.7156,-18.2839,-24.8494,-6.4622,-6.5719,-5.7218,-4.8555,-3.9774,-6.1336,-10.0328,-4.7156,-18.2839,-24.8494,-5.7012 @@ -3611,8 +3609,8 @@ v10.0.0,Still,F1,landscape_28.y4m,-9.2967,-23.1067,-29.8336,-11.1031,-8.6284,-10 v11.0.0,Still,F1,landscape_28.y4m,-8.9912,-23.0121,-30.0653,-10.8575,-8.4455,-10.1114,-12.1037,-10.543,-11.0128,-15.017,-8.9912,-23.0121,-30.0653,-10.0657 v12.0.0,Still,F1,landscape_28.y4m,-9.1305,-23.1943,-30.1913,-10.9904,-8.2337,-10.04,-12.5535,-10.9261,-11.1139,-15.2453,-9.1305,-23.1943,-30.1913,-10.1977 v13.0.0,Still,F1,landscape_28.y4m,-9.0636,-23.3936,-29.7988,-10.9216,-9.606,-9.9739,-12.6529,-10.9902,-10.9474,-15.0682,-9.0636,-23.3936,-29.7988,-10.1314 -libaom-v3.12.0,Still,F1,lodge.y4m,0.4044,-0.7092,-1.5108,0.2638,-2.5603,-0.0438,0.6194,0.2742,-0.2809,0.0328,0.4044,-0.7092,-1.5108,0.2361 -libaom-v3.12.0-unconstrained,Still,F1,lodge.y4m,1.209,-1.3282,-2.94,0.8883,-2.8261,-0.1066,1.4504,1.5077,0.9513,0.1169,1.209,-1.3282,-2.94,0.9504 +v14.0.0,Still,F1,landscape_28.y4m,-9.1535,-23.4974,-29.8048,-10.9972,-9.8134,-10.131,-12.3845,-10.8523,-11.0922,-15.0705,-9.1535,-23.4974,-29.8048,-10.2122 +v15.0.0,Still,F1,landscape_28.y4m,-9.1535,-23.4974,-29.8048,-10.9972,-9.8134,-10.131,-12.3845,-10.8523,-11.0922,-15.0705,-9.1535,-23.4974,-29.8048,-10.2122 v02.0.0,Still,F1,lodge.y4m,-1.9558,-9.5608,-5.2107,-2.4978,-3.6439,-2.6756,-2.3832,-2.3209,-2.3318,-3.7752,-1.9558,-9.5608,-5.2107,-2.4784 v03.0.0,Still,F1,lodge.y4m,-3.3365,-10.7877,-6.4843,-3.8766,-4.2607,-3.9903,-3.3206,-3.1707,-3.5736,-5.1061,-3.3365,-10.7877,-6.4843,-3.8437 v04.0.0,Still,F1,lodge.y4m,-5.4286,-19.5687,-10.7748,-6.4416,-5.6345,-6.0903,-5.2976,-4.8724,-5.5052,-8.9617,-5.4286,-19.5687,-10.7748,-6.4176 @@ -3625,8 +3623,8 @@ v10.0.0,Still,F1,lodge.y4m,-10.6469,-26.8314,-15.8471,-11.7857,-8.4902,-10.7771, v11.0.0,Still,F1,lodge.y4m,-10.3187,-26.6721,-16.021,-11.4933,-8.3086,-10.511,-11.7365,-11.2144,-10.2666,-14.6995,-10.3187,-26.6721,-16.021,-11.4371 v12.0.0,Still,F1,lodge.y4m,-10.3782,-26.7387,-16.2266,-11.5633,-8.101,-10.4721,-11.6884,-11.1777,-10.3261,-14.8005,-10.3782,-26.7387,-16.2266,-11.5033 v13.0.0,Still,F1,lodge.y4m,-10.3343,-26.826,-16.4087,-11.5441,-10.538,-10.4898,-11.8132,-11.3023,-10.2819,-14.9848,-10.3343,-26.826,-16.4087,-11.4723 -libaom-v3.12.0,Still,F1,party.y4m,-3.3784,-2.8095,-0.5913,-3.4058,-1.51,-5.0038,-2.5489,-1.0157,-3.1049,-3.5481,-3.3784,-2.8095,-0.5913,-3.4932 -libaom-v3.12.0-unconstrained,Still,F1,party.y4m,1.0796,-5.6138,-5.0038,-0.6168,-1.9977,-0.3621,1.0687,0.9922,-0.6892,-2.8147,1.0796,-5.6138,-5.0038,0.325 +v14.0.0,Still,F1,lodge.y4m,-10.4398,-26.9436,-16.3977,-11.6454,-10.6319,-10.5242,-12.0138,-11.4997,-10.358,-15.0441,-10.4398,-26.9436,-16.3977,-11.5756 +v15.0.0,Still,F1,lodge.y4m,-10.4398,-26.9436,-16.3977,-11.6454,-10.6319,-10.5242,-12.0138,-11.4997,-10.358,-15.0441,-10.4398,-26.9436,-16.3977,-11.5756 v02.0.0,Still,F1,party.y4m,-3.509,-10.1598,-9.951,-4.5641,-2.4175,-3.3044,-5.7901,-6.2631,-4.3961,-4.417,-3.509,-10.1598,-9.951,-3.9767 v03.0.0,Still,F1,party.y4m,-5.4471,-10.4221,-8.115,-6.0772,-4.708,-5.0889,-7.117,-8.3172,-6.641,-6.1059,-5.4471,-10.4221,-8.115,-5.7613 v04.0.0,Still,F1,party.y4m,-9.2789,-21.7517,-20.3012,-11.1693,-7.3457,-8.8244,-11.2536,-11.6426,-10.2845,-11.4643,-9.2789,-21.7517,-20.3012,-10.0886 @@ -3639,8 +3637,8 @@ v10.0.0,Still,F1,party.y4m,-15.6699,-30.5092,-27.2055,-17.7786,-13.3023,-14.9991 v11.0.0,Still,F1,party.y4m,-15.4771,-32.7563,-30.1242,-18.0786,-13.318,-14.9454,-22.9339,-22.0443,-17.0533,-19.6293,-15.4771,-32.7563,-30.1242,-16.5818 v12.0.0,Still,F1,party.y4m,-15.5972,-31.5922,-29.6264,-18.0387,-13.2046,-15.0395,-25.0456,-23.2264,-17.2652,-19.4857,-15.5972,-31.5922,-29.6264,-16.6383 v13.0.0,Still,F1,party.y4m,-15.5925,-31.7774,-29.0449,-18.0069,-12.5382,-14.9316,-24.655,-23.0662,-17.1478,-19.3147,-15.5925,-31.7774,-29.0449,-16.6182 -libaom-v3.12.0,Still,F1,river.y4m,2.1437,3.402,3.2653,3.3695,4.1524,2.2228,4.0158,2.8188,2.6716,3.9327,2.1437,3.402,3.2653,3.2089 -libaom-v3.12.0-unconstrained,Still,F1,river.y4m,0.807,-3.089,-2.5155,0.194,2.6998,0.8688,2.7383,2.7513,0.7185,-1.7326,0.807,-3.089,-2.5155,0.0556 +v14.0.0,Still,F1,party.y4m,-15.8958,-32.906,-30.2706,-18.4526,-12.9285,-15.2324,-24.6271,-23.0628,-17.3358,-19.7367,-15.8958,-32.906,-30.2706,-16.9973 +v15.0.0,Still,F1,party.y4m,-15.8958,-32.906,-30.2706,-18.4526,-12.9285,-15.2324,-24.6271,-23.0628,-17.3358,-19.7367,-15.8958,-32.906,-30.2706,-16.9973 v02.0.0,Still,F1,river.y4m,-2.2819,-5.3917,-15.0091,-3.1901,-2.6054,-2.481,-2.5046,-2.6641,-3.006,-3.0549,-2.2819,-5.3917,-15.0091,-3.0989 v03.0.0,Still,F1,river.y4m,-4.1833,-7.4547,-15.6088,-5.0332,-3.6985,-4.2151,-5.8352,-5.646,-5.0586,-4.8362,-4.1833,-7.4547,-15.6088,-4.9676 v04.0.0,Still,F1,river.y4m,-6.4734,-11.4873,-25.3358,-7.8878,-4.1793,-6.2722,-8.0875,-7.5323,-7.1971,-7.8918,-6.4734,-11.4873,-25.3358,-7.732 @@ -3653,8 +3651,8 @@ v10.0.0,Still,F1,river.y4m,-13.8383,-18.8182,-43.455,-16.1369,-13.1196,-13.5849, v11.0.0,Still,F1,river.y4m,-13.5617,-18.4051,-43.6515,-15.9105,-12.4505,-13.315,-19.0997,-17.3676,-14.5995,-15.8257,-13.5617,-18.4051,-43.6515,-15.4377 v12.0.0,Still,F1,river.y4m,-13.6873,-18.1261,-43.4986,-15.9858,-12.973,-13.3973,-19.509,-17.6167,-14.6265,-15.4816,-13.6873,-18.1261,-43.4986,-15.5077 v13.0.0,Still,F1,river.y4m,-13.7293,-18.4701,-43.3456,-16.0213,-14.2073,-13.4333,-19.8563,-17.8504,-14.6797,-15.5761,-13.7293,-18.4701,-43.3456,-15.5651 -libaom-v3.12.0,Still,F1,santa.y4m,1.5883,2.5019,2.8758,2.9145,3.9724,0.6878,1.241,1.7236,2.9172,3.2036,1.5883,2.5019,2.8758,2.5834 -libaom-v3.12.0-unconstrained,Still,F1,santa.y4m,0.5848,-1.5598,-1.2436,0.1681,1.3403,0.4715,1.9813,2.108,0.4046,-0.9357,0.5848,-1.5598,-1.2436,0.1048 +v14.0.0,Still,F1,river.y4m,-13.6206,-18.4538,-42.7803,-15.8634,-14.107,-13.3692,-19.4052,-17.4125,-14.5567,-15.5126,-13.6206,-18.4538,-42.7803,-15.4369 +v15.0.0,Still,F1,river.y4m,-13.6206,-18.4538,-42.7803,-15.8634,-14.107,-13.3692,-19.4052,-17.4125,-14.5567,-15.5126,-13.6206,-18.4538,-42.7803,-15.4369 v02.0.0,Still,F1,santa.y4m,-2.6953,-5.3483,-3.8153,-2.8839,-2.8879,-2.5542,-4.2582,-3.878,-3.0307,-2.8348,-2.6953,-5.3483,-3.8153,-2.9159 v03.0.0,Still,F1,santa.y4m,-4.4461,-7.1388,-4.3072,-4.5832,-4.8328,-4.2271,-6.6762,-6.1964,-4.8267,-4.5192,-4.4461,-7.1388,-4.3072,-4.5989 v04.0.0,Still,F1,santa.y4m,-8.1934,-15.952,-12.6811,-8.9408,-7.184,-7.8028,-10.141,-9.7254,-8.7053,-10.1229,-8.1934,-15.952,-12.6811,-8.9619 @@ -3667,8 +3665,8 @@ v10.0.0,Still,F1,santa.y4m,-16.0566,-24.2783,-18.7593,-16.9142,-14.3969,-15.3043 v11.0.0,Still,F1,santa.y4m,-15.6039,-24.0238,-18.1079,-16.468,-14.0465,-14.8734,-19.1993,-18.5196,-16.1539,-17.5063,-15.6039,-24.0238,-18.1079,-16.386 v12.0.0,Still,F1,santa.y4m,-15.3631,-23.2933,-17.521,-16.167,-13.7565,-14.7292,-18.5889,-17.853,-16.0311,-17.1745,-15.3631,-23.2933,-17.521,-16.0869 v13.0.0,Still,F1,santa.y4m,-15.7095,-25.0823,-19.0885,-16.7102,-15.4891,-15.0289,-19.9926,-19.1903,-16.5383,-18.4196,-15.7095,-25.0823,-19.0885,-16.657 -libaom-v3.12.0,Still,F1,seafood.y4m,-0.0678,-1.8727,-1.9756,-0.1291,-1.7565,-0.184,-1.118,-0.8328,0.2239,-0.6614,-0.0678,-1.8727,-1.9756,-0.1088 -libaom-v3.12.0-unconstrained,Still,F1,seafood.y4m,1.1572,-3.5774,-3.5636,0.519,-0.7848,1.7225,2.3736,2.0691,1.076,-0.9254,1.1572,-3.5774,-3.5636,0.7 +v14.0.0,Still,F1,santa.y4m,-16.2954,-25.8564,-19.8745,-17.2936,-16.0796,-15.3816,-20.3637,-19.6444,-16.9065,-19.0165,-16.2954,-25.8564,-19.8745,-17.2596 +v15.0.0,Still,F1,santa.y4m,-16.2954,-25.8564,-19.8745,-17.2936,-16.0796,-15.3816,-20.3637,-19.6444,-16.9065,-19.0165,-16.2954,-25.8564,-19.8745,-17.2596 v02.0.0,Still,F1,seafood.y4m,-2.9057,-8.4662,-9.8381,-3.5713,-3.9653,-3.0234,-3.4254,-3.6894,-3.5408,-5.8015,-2.9057,-8.4662,-9.8381,-3.4166 v03.0.0,Still,F1,seafood.y4m,-4.4273,-9.6099,-11.2263,-5.0687,-5.1766,-4.4786,-4.6711,-5.0,-5.1171,-6.9445,-4.4273,-9.6099,-11.2263,-4.9243 v04.0.0,Still,F1,seafood.y4m,-7.0058,-15.6147,-18.2905,-8.095,-6.4377,-7.1824,-7.341,-7.3478,-7.6608,-11.1121,-7.0058,-15.6147,-18.2905,-7.8218 @@ -3681,8 +3679,8 @@ v10.0.0,Still,F1,seafood.y4m,-13.5565,-23.805,-32.1988,-15.2001,-12.0836,-13.594 v11.0.0,Still,F1,seafood.y4m,-13.4418,-23.6218,-32.0072,-15.0764,-11.6344,-13.4081,-17.0633,-16.2913,-14.2687,-18.9655,-13.4418,-23.6218,-32.0072,-14.6042 v12.0.0,Still,F1,seafood.y4m,-13.586,-23.5971,-31.6415,-15.176,-12.1707,-13.5721,-17.7289,-16.7605,-14.4166,-18.9809,-13.586,-23.5971,-31.6415,-14.7235 v13.0.0,Still,F1,seafood.y4m,-13.544,-23.6467,-31.3415,-15.1223,-13.1055,-13.5681,-17.6587,-16.7872,-14.4537,-18.8611,-13.544,-23.6467,-31.3415,-14.6753 -libaom-v3.12.0,Still,F1,snow_00.y4m,-0.112,-2.1915,-1.9301,-0.2166,-1.6054,-0.6711,3.1347,2.1603,0.1301,-0.4083,-0.112,-2.1915,-1.9301,-0.1337 -libaom-v3.12.0-unconstrained,Still,F1,snow_00.y4m,1.2212,-1.3678,-3.2946,0.8379,-1.8605,0.1121,0.948,0.8282,0.4983,0.0737,1.2212,-1.3678,-3.2946,1.0986 +v14.0.0,Still,F1,seafood.y4m,-13.6998,-23.6419,-30.9635,-15.2353,-13.2417,-13.6405,-17.9413,-16.8855,-14.4853,-19.0462,-13.6998,-23.6419,-30.9635,-14.8048 +v15.0.0,Still,F1,seafood.y4m,-13.6998,-23.6419,-30.9635,-15.2353,-13.2417,-13.6405,-17.9413,-16.8855,-14.4853,-19.0462,-13.6998,-23.6419,-30.9635,-14.8048 v02.0.0,Still,F1,snow_00.y4m,-1.1488,-20.5531,-29.2382,-3.5452,-2.0691,-1.4467,-1.8413,-1.9258,-2.5168,-6.7068,-1.1488,-20.5531,-29.2382,-1.8554 v03.0.0,Still,F1,snow_00.y4m,-1.8959,-20.869,-30.4175,-4.3622,-3.5929,-2.3554,-2.6834,-2.8,-3.7523,-7.336,-1.8959,-20.869,-30.4175,-2.6172 v04.0.0,Still,F1,snow_00.y4m,-4.4479,-24.6117,-38.5403,-7.2538,-5.1139,-5.4064,-3.823,-3.8408,-6.1072,-10.2054,-4.4479,-24.6117,-38.5403,-5.2204 @@ -3695,8 +3693,8 @@ v10.0.0,Still,F1,snow_00.y4m,-9.7421,-26.6658,-44.0733,-12.4603,-11.186,-10.9458 v11.0.0,Still,F1,snow_00.y4m,-9.6156,-26.8446,-44.7044,-12.3612,-10.7416,-10.8898,-11.7772,-11.0635,-11.6385,-14.8699,-9.6156,-26.8446,-44.7044,-10.3288 v12.0.0,Still,F1,snow_00.y4m,-9.4956,-26.7029,-44.3924,-12.2463,-10.4703,-10.8094,-10.86,-10.4845,-11.5285,-14.6919,-9.4956,-26.7029,-44.3924,-10.208 v13.0.0,Still,F1,snow_00.y4m,-9.4616,-26.7584,-44.879,-12.2311,-9.8269,-10.7862,-11.2453,-10.8562,-11.451,-14.4968,-9.4616,-26.7584,-44.879,-10.1756 -libaom-v3.12.0,Still,F1,trees.y4m,0.4484,-1.2769,-1.6332,0.2572,-0.8213,0.2692,-0.435,-0.2194,-0.1237,-0.6133,0.4484,-1.2769,-1.6332,0.2189 -libaom-v3.12.0-unconstrained,Still,F1,trees.y4m,0.765,-3.1202,-3.3283,0.3609,-1.3141,-0.1401,1.616,1.4521,0.5002,-1.3035,0.765,-3.1202,-3.3283,0.4105 +v14.0.0,Still,F1,snow_00.y4m,-9.6665,-26.8173,-44.7067,-12.4023,-9.9852,-10.96,-11.5513,-11.1094,-11.636,-14.6456,-9.6665,-26.8173,-44.7067,-10.3738 +v15.0.0,Still,F1,snow_00.y4m,-9.6665,-26.8173,-44.7067,-12.4023,-9.9852,-10.96,-11.5513,-11.1094,-11.636,-14.6456,-9.6665,-26.8173,-44.7067,-10.3738 v02.0.0,Still,F1,trees.y4m,-2.6054,-11.1359,-11.3992,-3.5219,-3.1683,-2.9353,-2.8137,-2.9235,-2.8964,-7.7907,-2.6054,-11.1359,-11.3992,-3.3586 v03.0.0,Still,F1,trees.y4m,-4.6353,-14.4975,-15.5459,-5.782,-4.007,-4.4642,-3.514,-3.7035,-4.7959,-9.5512,-4.6353,-14.4975,-15.5459,-5.54 v04.0.0,Still,F1,trees.y4m,-6.7654,-19.5707,-21.1684,-8.2643,-4.3628,-6.2961,-5.2751,-5.2036,-6.6591,-12.7234,-6.7654,-19.5707,-21.1684,-7.9644 @@ -3709,8 +3707,8 @@ v10.0.0,Still,F1,trees.y4m,-12.3914,-26.756,-27.752,-14.0789,-10.6688,-11.6901,- v11.0.0,Still,F1,trees.y4m,-12.2521,-26.5852,-27.9547,-13.946,-10.6087,-11.5196,-11.6959,-11.9433,-11.9269,-17.3155,-12.2521,-26.5852,-27.9547,-13.5406 v12.0.0,Still,F1,trees.y4m,-12.1548,-25.5542,-26.8553,-13.7266,-10.6877,-11.3988,-11.6413,-11.757,-11.8135,-17.0245,-12.1548,-25.5542,-26.8553,-13.3588 v13.0.0,Still,F1,trees.y4m,-12.002,-25.4988,-26.9608,-13.6028,-12.253,-11.2952,-11.401,-11.6951,-11.6875,-16.9197,-12.002,-25.4988,-26.9608,-13.2232 -libaom-v3.12.0,Still,F1,underwater_01.y4m,0.1653,0.0143,-0.1719,0.2141,-0.4532,0.4857,-0.8756,0.0564,0.7543,0.2866,0.1653,0.0143,-0.1719,0.1929 -libaom-v3.12.0-unconstrained,Still,F1,underwater_01.y4m,0.8075,-0.0186,-1.6366,0.5848,2.249,1.3041,3.012,2.9796,1.3468,0.4338,0.8075,-0.0186,-1.6366,0.5966 +v14.0.0,Still,F1,trees.y4m,-12.0783,-25.3997,-27.1322,-13.6793,-12.3308,-11.3466,-11.6055,-11.7756,-11.7402,-16.9276,-12.0783,-25.3997,-27.1322,-13.2993 +v15.0.0,Still,F1,trees.y4m,-12.0783,-25.3997,-27.1322,-13.6793,-12.3308,-11.3466,-11.6055,-11.7756,-11.7402,-16.9276,-12.0783,-25.3997,-27.1322,-13.2993 v02.0.0,Still,F1,underwater_01.y4m,-3.0279,-5.8477,-8.0959,-3.4727,-2.1208,-2.7794,-2.0241,-2.0781,-3.287,-4.2353,-3.0279,-5.8477,-8.0959,-3.4883 v03.0.0,Still,F1,underwater_01.y4m,-4.7405,-7.2011,-10.6396,-5.2103,-3.309,-4.587,-3.7574,-3.7121,-5.0622,-5.9447,-4.7405,-7.2011,-10.6396,-5.2136 v04.0.0,Still,F1,underwater_01.y4m,-6.9215,-16.0554,-22.124,-8.35,-3.7391,-6.7175,-4.6646,-4.6051,-7.6177,-10.777,-6.9215,-16.0554,-22.124,-8.2981 @@ -3723,8 +3721,8 @@ v10.0.0,Still,F1,underwater_01.y4m,-12.3994,-25.7192,-35.066,-14.6364,-11.5044,- v11.0.0,Still,F1,underwater_01.y4m,-12.2383,-25.2261,-34.2617,-14.4118,-11.8408,-12.6996,-14.9461,-14.1865,-14.3514,-17.5364,-12.2383,-25.2261,-34.2617,-14.2424 v12.0.0,Still,F1,underwater_01.y4m,-12.1338,-25.15,-34.5798,-14.3364,-11.4788,-12.5744,-14.545,-13.738,-14.2861,-17.4992,-12.1338,-25.15,-34.5798,-14.1594 v13.0.0,Still,F1,underwater_01.y4m,-12.1037,-25.1738,-34.9872,-14.3388,-12.3251,-12.4459,-14.5468,-13.8063,-14.1904,-17.5415,-12.1037,-25.1738,-34.9872,-14.1536 -libaom-v3.12.0,Still,F2,Adventure_with_the_Windmills.y4m,0.0955,0.0,0.0,-0.0269,-0.0857,-0.1338,-0.9274,-0.9614,-0.9226,-0.213,0.0955,0.0,0.0,0.0192 -libaom-v3.12.0-unconstrained,Still,F2,Adventure_with_the_Windmills.y4m,0.9662,0.0,0.0,0.7398,-0.3275,-0.5166,-0.1313,0.1301,-0.0643,1.6725,0.9662,0.0,0.0,0.9376 +v14.0.0,Still,F1,underwater_01.y4m,-12.2195,-25.5075,-34.9765,-14.4678,-12.4725,-12.5859,-14.8769,-14.0319,-14.3267,-17.7119,-12.2195,-25.5075,-34.9765,-14.2884 +v15.0.0,Still,F1,underwater_01.y4m,-12.2195,-25.5075,-34.9765,-14.4678,-12.4725,-12.5859,-14.8769,-14.0319,-14.3267,-17.7119,-12.2195,-25.5075,-34.9765,-14.2884 v02.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-0.619,0.0,0.0,-6.163,-1.3614,-1.185,-1.5796,-0.9782,-5.0479,-7.0678,-0.619,0.0,0.0,-1.2537 v03.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-3.004,0.0,0.0,-9.4518,-2.4389,-2.6758,-2.6493,-1.9779,-6.5539,-10.6971,-3.004,0.0,0.0,-3.7467 v04.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-4.7913,0.0,0.0,-11.5215,-4.2852,-4.5417,-4.9226,-4.0342,-9.2399,-14.3909,-4.7913,0.0,0.0,-5.7723 @@ -3737,8 +3735,8 @@ v10.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-7.5458,0.0,0.0,-15.6707,-8.50 v11.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-7.4183,0.0,0.0,-15.7638,-8.6886,-8.2521,-11.7969,-10.6313,-14.0685,-18.8714,-7.4183,0.0,0.0,-8.5264 v12.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-7.4858,0.0,0.0,-15.6018,-8.6389,-8.2125,-12.0244,-10.7447,-14.0289,-18.7331,-7.4858,0.0,0.0,-8.5829 v13.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-7.6164,0.0,0.0,-15.5677,-8.1956,-8.2822,-12.2315,-10.9731,-14.0377,-18.6127,-7.6164,0.0,0.0,-8.7112 -libaom-v3.12.0,Still,F2,Agapanthus_Postbloom2.y4m,-0.22,0.0933,-1.4922,-0.248,-0.2482,-0.4513,-2.1813,-1.4234,-0.8358,0.0396,-0.22,0.0933,-1.4922,-0.266 -libaom-v3.12.0-unconstrained,Still,F2,Agapanthus_Postbloom2.y4m,0.1405,-1.4974,-1.7057,-0.027,0.6607,0.3387,1.6349,1.6625,0.0529,-1.0203,0.1405,-1.4974,-1.7057,-0.1538 +v14.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-7.6191,0.0,0.0,-15.5702,-8.1985,-8.2849,-12.2368,-10.9783,-14.0408,-18.6155,-7.6191,0.0,0.0,-8.7139 +v15.0.0,Still,F2,Adventure_with_the_Windmills.y4m,-7.6191,0.0,0.0,-15.5702,-8.1985,-8.2849,-12.2368,-10.9783,-14.0408,-18.6155,-7.6191,0.0,0.0,-8.7139 v02.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-6.7137,-4.6528,-11.8114,-6.7841,-5.8202,-6.7181,-5.7321,-5.9869,-6.5915,-6.4763,-6.7137,-4.6528,-11.8114,-6.6458 v03.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-10.213,-6.6141,-11.516,-10.0503,-7.5573,-9.2871,-7.8488,-7.8567,-8.9906,-9.0087,-10.213,-6.6141,-11.516,-9.7785 v04.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-13.74,-10.7566,-15.8403,-13.6448,-11.5548,-12.9328,-10.2192,-10.4753,-12.4326,-13.2095,-13.74,-10.7566,-15.8403,-13.4579 @@ -3751,8 +3749,8 @@ v10.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-20.0207,-17.2945,-21.0644,-19.8954,- v11.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-20.0678,-16.6496,-20.1243,-19.8648,-17.5715,-19.1539,-19.2347,-18.4918,-18.5035,-20.0772,-20.0678,-16.6496,-20.1243,-19.6403 v12.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-19.9419,-17.0242,-19.5225,-19.7521,-17.7753,-19.3217,-18.6226,-17.8231,-18.5882,-20.128,-19.9419,-17.0242,-19.5225,-19.5724 v13.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-19.8743,-17.5008,-19.7619,-19.7286,-21.6977,-18.8402,-18.6539,-18.1626,-18.4627,-20.3958,-19.8743,-17.5008,-19.7619,-19.5905 -libaom-v3.12.0,Still,F2,Baruch.y4m,0.0316,0.0,0.0,-0.1365,0.1076,-0.2858,-1.2594,-0.5255,-1.5329,-0.5343,0.0316,0.0,0.0,-0.0503 -libaom-v3.12.0-unconstrained,Still,F2,Baruch.y4m,1.1203,0.0,0.0,0.1099,1.2238,0.5089,-0.3917,0.4054,0.1797,-0.8674,1.1203,0.0,0.0,0.9774 +v14.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-19.8925,-17.5184,-19.779,-19.7468,-21.7169,-18.8593,-18.6827,-18.1908,-18.482,-20.4137,-19.8925,-17.5184,-19.779,-19.6088 +v15.0.0,Still,F2,Agapanthus_Postbloom2.y4m,-19.8925,-17.5184,-19.779,-19.7468,-21.7169,-18.8593,-18.6827,-18.1908,-18.482,-20.4137,-19.8925,-17.5184,-19.779,-19.6088 v02.0.0,Still,F2,Baruch.y4m,-0.4985,0.0,0.0,-7.3679,-0.5396,-1.0544,-1.8559,-1.3649,-6.6205,-9.4029,-0.4985,0.0,0.0,-1.1345 v03.0.0,Still,F2,Baruch.y4m,-2.4495,0.0,0.0,-9.3111,-2.2674,-2.8061,-4.526,-3.7609,-7.7523,-12.202,-2.4495,0.0,0.0,-3.1258 v04.0.0,Still,F2,Baruch.y4m,-4.4778,0.0,0.0,-11.3558,-3.7348,-4.1099,-4.7208,-3.7889,-9.4646,-14.3839,-4.4778,0.0,0.0,-5.2079 @@ -3765,8 +3763,8 @@ v10.0.0,Still,F2,Baruch.y4m,-7.834,0.0,0.0,-15.1009,-8.1824,-8.5354,-11.6974,-10 v11.0.0,Still,F2,Baruch.y4m,-7.4199,0.0,0.0,-15.0653,-7.8168,-8.1212,-10.4844,-10.1538,-14.9196,-18.7775,-7.4199,0.0,0.0,-8.2691 v12.0.0,Still,F2,Baruch.y4m,-7.6737,0.0,0.0,-14.7873,-7.9411,-8.3591,-10.9764,-10.4311,-14.9051,-18.726,-7.6737,0.0,0.0,-8.5086 v13.0.0,Still,F2,Baruch.y4m,-7.8724,0.0,0.0,-15.5613,-8.9632,-8.6899,-10.8999,-10.6466,-15.1304,-18.9127,-7.8724,0.0,0.0,-8.7152 -libaom-v3.12.0,Still,F2,Berlin-Fernsehturm.y4m,-0.2124,-0.9002,-0.7526,-0.2647,-1.1205,-0.9666,-1.4761,-0.3857,-1.4027,-0.9374,-0.2124,-0.9002,-0.7526,-0.3034 -libaom-v3.12.0-unconstrained,Still,F2,Berlin-Fernsehturm.y4m,0.7189,-1.4828,-0.5988,0.5526,0.5235,0.793,-0.3357,-0.2336,0.3287,-1.1902,0.7189,-1.4828,-0.5988,0.5548 +v14.0.0,Still,F2,Baruch.y4m,-7.8749,0.0,0.0,-15.5636,-8.9661,-8.6925,-10.9045,-10.6511,-15.1334,-18.9152,-7.8749,0.0,0.0,-8.7177 +v15.0.0,Still,F2,Baruch.y4m,-7.8749,0.0,0.0,-15.5636,-8.9661,-8.6925,-10.9045,-10.6511,-15.1334,-18.9152,-7.8749,0.0,0.0,-8.7177 v02.0.0,Still,F2,Berlin-Fernsehturm.y4m,-3.1664,-12.3261,-8.9809,-3.8603,-4.4412,-4.1154,-4.4105,-4.1661,-4.6891,-8.1345,-3.1664,-12.3261,-8.9809,-3.9333 v03.0.0,Still,F2,Berlin-Fernsehturm.y4m,-5.3857,-13.6629,-10.5039,-6.0047,-5.7902,-5.6411,-3.1553,-3.1837,-6.0078,-9.9337,-5.3857,-13.6629,-10.5039,-6.0647 v04.0.0,Still,F2,Berlin-Fernsehturm.y4m,-8.5946,-21.3101,-17.1542,-9.5928,-9.0259,-8.8465,-8.8833,-8.0749,-9.6078,-15.3619,-8.5946,-21.3101,-17.1542,-9.7594 @@ -3779,8 +3777,8 @@ v10.0.0,Still,F2,Berlin-Fernsehturm.y4m,-15.6783,-27.7451,-28.0725,-16.8458,-15. v11.0.0,Still,F2,Berlin-Fernsehturm.y4m,-15.602,-29.8849,-25.261,-16.7522,-15.8882,-16.0557,-16.5318,-15.1109,-16.9638,-23.1727,-15.602,-29.8849,-25.261,-16.9998 v12.0.0,Still,F2,Berlin-Fernsehturm.y4m,-15.3963,-29.1276,-25.1079,-16.5211,-15.6172,-15.6142,-15.1604,-14.9619,-16.5443,-22.1495,-15.3963,-29.1276,-25.1079,-16.7527 v13.0.0,Still,F2,Berlin-Fernsehturm.y4m,-15.3022,-28.1449,-24.9931,-16.3766,-16.9233,-15.7534,-14.8058,-14.3351,-16.6487,-22.2858,-15.3022,-28.1449,-24.9931,-16.6303 -libaom-v3.12.0,Still,F2,Big_Easy_chair.y4m,2.4159,8.269,6.5939,2.843,1.2343,1.691,-5.299,-3.7159,1.1643,5.02,2.4159,8.269,6.5939,3.5941 -libaom-v3.12.0-unconstrained,Still,F2,Big_Easy_chair.y4m,0.1426,-3.0854,-2.3552,-0.1184,1.5935,1.3646,-1.7133,-0.5016,0.5336,-0.779,0.1426,-3.0854,-2.3552,-0.335 +v14.0.0,Still,F2,Berlin-Fernsehturm.y4m,-15.3429,-28.1837,-25.0295,-16.4171,-16.9603,-15.7933,-14.8817,-14.4089,-16.6939,-22.3276,-15.3429,-28.1837,-25.0295,-16.6713 +v15.0.0,Still,F2,Berlin-Fernsehturm.y4m,-15.3429,-28.1837,-25.0295,-16.4171,-16.9603,-15.7933,-14.8817,-14.4089,-16.6939,-22.3276,-15.3429,-28.1837,-25.0295,-16.6713 v02.0.0,Still,F2,Big_Easy_chair.y4m,-8.6202,-3.6783,-6.4856,-8.3422,-5.3444,-6.3056,-5.7944,-7.049,-7.2168,-6.1651,-8.6202,-3.6783,-6.4856,-8.1104 v03.0.0,Still,F2,Big_Easy_chair.y4m,-12.9921,-6.0957,-9.0165,-12.5328,-9.482,-10.379,-12.5035,-12.73,-11.2081,-9.9251,-12.9921,-6.0957,-9.0165,-12.0887 v04.0.0,Still,F2,Big_Easy_chair.y4m,-16.4715,-13.1899,-17.9392,-16.4242,-12.2974,-13.0135,-17.7221,-17.1644,-14.5643,-14.4126,-16.4715,-13.1899,-17.9392,-16.3748 @@ -3793,8 +3791,8 @@ v10.0.0,Still,F2,Big_Easy_chair.y4m,-26.3202,-26.0123,-28.565,-26.43,-22.0111,-2 v11.0.0,Still,F2,Big_Easy_chair.y4m,-26.4474,-25.9661,-27.5211,-26.482,-22.2164,-22.579,-30.779,-29.7591,-24.3412,-24.7655,-26.4474,-25.9661,-27.5211,-26.5593 v12.0.0,Still,F2,Big_Easy_chair.y4m,-25.8715,-26.3288,-25.9874,-25.9141,-21.8671,-22.2601,-29.1762,-28.0869,-23.939,-24.5782,-25.8715,-26.3288,-25.9874,-26.0031 v13.0.0,Still,F2,Big_Easy_chair.y4m,-25.9499,-26.27,-28.8018,-26.1044,-23.7501,-22.2507,-31.6774,-29.3665,-24.1064,-24.9768,-25.9499,-26.27,-28.8018,-26.2676 -libaom-v3.12.0,Still,F2,Butterfly.y4m,-0.7171,3.5344,4.1964,-0.1716,3.6318,1.0081,-4.273,-2.1086,1.7434,1.3573,-0.7171,3.5344,4.1964,0.2632 -libaom-v3.12.0-unconstrained,Still,F2,Butterfly.y4m,0.8098,-0.7709,-2.7408,0.4439,0.4566,1.2481,1.5409,1.224,0.6344,-0.6034,0.8098,-0.7709,-2.7408,0.2517 +v14.0.0,Still,F2,Big_Easy_chair.y4m,-26.0277,-26.3489,-28.8824,-26.1823,-23.8083,-22.3131,-31.7785,-29.4699,-24.1786,-25.0536,-26.0277,-26.3489,-28.8824,-26.3466 +v15.0.0,Still,F2,Big_Easy_chair.y4m,-26.0277,-26.3489,-28.8824,-26.1823,-23.8083,-22.3131,-31.7785,-29.4699,-24.1786,-25.0536,-26.0277,-26.3489,-28.8824,-26.3466 v02.0.0,Still,F2,Butterfly.y4m,-4.9242,-5.8028,-9.1571,-5.2123,-5.2053,-5.7316,-6.0716,-6.1948,-6.0638,-5.6902,-4.9242,-5.8028,-9.1571,-5.3809 v03.0.0,Still,F2,Butterfly.y4m,-8.0382,-7.425,-10.8755,-8.1712,-8.051,-8.4326,-9.3939,-8.851,-8.9363,-7.6596,-8.0382,-7.425,-10.8755,-8.2297 v04.0.0,Still,F2,Butterfly.y4m,-10.7062,-18.0054,-20.2925,-11.6819,-11.0032,-11.4153,-11.2853,-11.4769,-12.3204,-12.6366,-10.7062,-18.0054,-20.2925,-12.2433 @@ -3807,8 +3805,8 @@ v10.0.0,Still,F2,Butterfly.y4m,-17.1404,-32.2553,-37.4179,-19.2667,-18.2982,-18. v11.0.0,Still,F2,Butterfly.y4m,-17.4293,-32.2574,-36.6869,-19.4887,-18.465,-18.1376,-20.7187,-20.3915,-19.9892,-22.4147,-17.4293,-32.2574,-36.6869,-20.5697 v12.0.0,Still,F2,Butterfly.y4m,-17.0238,-32.0153,-37.1254,-19.1384,-18.6203,-17.8697,-19.7114,-19.3197,-19.5504,-21.9462,-17.0238,-32.0153,-37.1254,-20.2183 v13.0.0,Still,F2,Butterfly.y4m,-17.3798,-32.2577,-37.349,-19.479,-16.779,-18.405,-20.4414,-20.4165,-20.0831,-22.5711,-17.3798,-32.2577,-37.349,-20.5483 -libaom-v3.12.0,Still,F2,Cecret_Lake_Panorama.y4m,0.2995,-1.2873,-1.3647,0.1796,-0.2779,-0.2373,-0.8274,-0.7246,-0.6913,-0.2833,0.2995,-1.2873,-1.3647,0.076 -libaom-v3.12.0-unconstrained,Still,F2,Cecret_Lake_Panorama.y4m,1.4353,-0.888,-0.3565,1.2869,0.8411,0.7954,1.4454,1.6622,1.106,0.6921,1.4353,-0.888,-0.3565,1.26 +v14.0.0,Still,F2,Butterfly.y4m,-17.4135,-32.2887,-37.379,-19.5123,-16.7997,-18.4341,-20.5033,-20.4769,-20.1222,-22.604,-17.4135,-32.2887,-37.379,-20.5817 +v15.0.0,Still,F2,Butterfly.y4m,-17.4135,-32.2887,-37.379,-19.5123,-16.7997,-18.4341,-20.5033,-20.4769,-20.1222,-22.604,-17.4135,-32.2887,-37.379,-20.5817 v02.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-0.9714,-11.1188,-14.8575,-1.9218,-1.9818,-1.8882,-1.4982,-1.1928,-2.6675,-4.3928,-0.9714,-11.1188,-14.8575,-1.5419 v03.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-2.0144,-13.7404,-16.8124,-3.0748,-2.5257,-2.6942,-0.8386,-0.6069,-3.0117,-5.5172,-2.0144,-13.7404,-16.8124,-2.6268 v04.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-3.596,-15.7467,-22.5748,-4.9209,-4.3914,-4.7095,-2.3136,-2.1798,-5.1018,-7.8817,-3.596,-15.7467,-22.5748,-4.4197 @@ -3821,8 +3819,8 @@ v10.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-5.9058,-20.8933,-28.8838,-7.5886,-8.7 v11.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-6.1753,-20.1085,-28.4187,-7.7839,-8.8421,-8.7209,-9.4504,-9.0579,-9.5994,-11.7642,-6.1753,-20.1085,-28.4187,-7.3156 v12.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-6.1969,-20.2688,-28.7989,-7.8041,-8.5196,-8.4243,-9.8676,-9.3716,-9.6003,-11.884,-6.1969,-20.2688,-28.7989,-7.3428 v13.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-6.1713,-20.1328,-28.8213,-7.8131,-7.579,-8.3106,-10.4407,-9.7431,-9.5039,-12.0439,-6.1713,-20.1328,-28.8213,-7.317 -libaom-v3.12.0,Still,F2,Claudette.y4m,0.1021,-1.547,-2.5688,-0.0255,-0.4095,-0.4712,-0.5778,-0.8856,-0.6388,-0.6013,0.1021,-1.547,-2.5688,-0.0106 -libaom-v3.12.0-unconstrained,Still,F2,Claudette.y4m,1.4104,14.3596,11.1134,1.97,1.4168,0.8886,2.4967,3.1116,1.7208,2.6543,1.4104,14.3596,11.1134,1.4838 +v14.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-6.1757,-20.1363,-28.8249,-7.8175,-7.5835,-8.3161,-10.4528,-9.755,-9.5101,-12.0483,-6.1757,-20.1363,-28.8249,-7.3215 +v15.0.0,Still,F2,Cecret_Lake_Panorama.y4m,-6.1757,-20.1363,-28.8249,-7.8175,-7.5835,-8.3161,-10.4528,-9.755,-9.5101,-12.0483,-6.1757,-20.1363,-28.8249,-7.3215 v02.0.0,Still,F2,Claudette.y4m,-0.84,-42.1827,-49.4267,-4.2423,-1.8374,-1.7479,-1.6296,-0.9937,-3.4425,-11.3717,-0.84,-42.1827,-49.4267,-1.8186 v03.0.0,Still,F2,Claudette.y4m,-2.5403,-44.185,-52.0185,-5.9535,-1.733,-2.848,-0.8634,-0.042,-3.853,-13.064,-2.5403,-44.185,-52.0185,-3.5539 v04.0.0,Still,F2,Claudette.y4m,-4.5113,-48.2383,-61.7141,-8.5426,-3.5255,-4.9659,-0.855,-0.3773,-6.0712,-16.8279,-4.5113,-48.2383,-61.7141,-5.8051 @@ -3835,8 +3833,8 @@ v10.0.0,Still,F2,Claudette.y4m,-7.1366,-57.6075,-68.4166,-11.9496,-7.9076,-8.402 v11.0.0,Still,F2,Claudette.y4m,-7.4038,-58.371,-66.1897,-12.0484,-8.1766,-8.6981,-7.1301,-6.9535,-10.8595,-22.4643,-7.4038,-58.371,-66.1897,-8.9468 v12.0.0,Still,F2,Claudette.y4m,-7.3825,-59.6542,-68.5985,-12.142,-8.2451,-8.7386,-8.2386,-8.0967,-10.6562,-22.4811,-7.3825,-59.6542,-68.5985,-8.9171 v13.0.0,Still,F2,Claudette.y4m,-7.4157,-58.6376,-68.3793,-12.1819,-8.8733,-8.8471,-9.2737,-8.8636,-11.0642,-22.411,-7.4157,-58.6376,-68.3793,-8.9578 -libaom-v3.12.0,Still,F2,Collage_Oppeln.y4m,0.0655,-0.7699,-0.8333,-0.0098,-0.0735,-0.4453,-0.7812,-0.4515,-0.8506,-0.2079,0.0655,-0.7699,-0.8333,-0.0467 -libaom-v3.12.0-unconstrained,Still,F2,Collage_Oppeln.y4m,0.8549,-2.4081,-1.9495,0.5923,0.3266,0.0619,0.328,0.6855,-0.0456,-0.2296,0.8549,-2.4081,-1.9495,0.5976 +v14.0.0,Still,F2,Claudette.y4m,-7.4222,-58.6425,-68.3836,-12.1883,-8.8794,-8.8549,-9.2923,-8.8819,-11.0732,-22.4178,-7.4222,-58.6425,-68.3836,-8.9645 +v15.0.0,Still,F2,Claudette.y4m,-7.4222,-58.6425,-68.3836,-12.1883,-8.8794,-8.8549,-9.2923,-8.8819,-11.0732,-22.4178,-7.4222,-58.6425,-68.3836,-8.9645 v02.0.0,Still,F2,Collage_Oppeln.y4m,-2.4893,-9.5528,-10.8306,-3.1902,-2.8222,-3.4596,-3.7924,-3.1618,-4.3965,-6.467,-2.4893,-9.5528,-10.8306,-3.0953 v03.0.0,Still,F2,Collage_Oppeln.y4m,-4.7061,-10.7638,-11.5937,-5.296,-4.1041,-5.0507,-3.3787,-2.7898,-5.3075,-8.1017,-4.7061,-10.7638,-11.5937,-5.1988 v04.0.0,Still,F2,Collage_Oppeln.y4m,-7.599,-18.085,-19.3692,-8.6404,-7.0025,-8.0704,-6.9089,-6.3065,-8.8988,-12.7147,-7.599,-18.085,-19.3692,-8.5712 @@ -3849,8 +3847,8 @@ v10.0.0,Still,F2,Collage_Oppeln.y4m,-12.1175,-24.9579,-24.4592,-13.3009,-12.6163 v11.0.0,Still,F2,Collage_Oppeln.y4m,-11.7304,-24.7363,-24.3735,-12.9296,-12.3831,-12.9583,-14.8736,-13.3785,-13.9615,-18.1261,-11.7304,-24.7363,-24.3735,-12.9905 v12.0.0,Still,F2,Collage_Oppeln.y4m,-11.8597,-24.0198,-23.7987,-12.9792,-12.3905,-13.0279,-15.2777,-13.5573,-13.8365,-17.8682,-11.8597,-24.0198,-23.7987,-13.049 v13.0.0,Still,F2,Collage_Oppeln.y4m,-11.77,-24.2075,-23.9705,-12.9156,-13.1946,-12.9819,-14.8271,-13.5407,-14.0968,-17.9866,-11.77,-24.2075,-23.9705,-12.9724 -libaom-v3.12.0,Still,F2,Corona_Arch.y4m,0.8709,-0.2104,-0.4069,0.773,-1.8673,-0.8407,1.2619,0.6529,-0.7869,0.5464,0.8709,-0.2104,-0.4069,0.6965 -libaom-v3.12.0-unconstrained,Still,F2,Corona_Arch.y4m,1.7438,-3.4142,-2.6029,1.3151,3.1011,1.9756,4.8266,4.5301,2.3855,1.0118,1.7438,-3.4142,-2.6029,1.3768 +v14.0.0,Still,F2,Collage_Oppeln.y4m,-11.7778,-24.2147,-23.9779,-12.9233,-13.202,-12.9903,-14.8434,-13.5568,-14.1062,-17.9943,-11.7778,-24.2147,-23.9779,-12.9803 +v15.0.0,Still,F2,Collage_Oppeln.y4m,-11.7778,-24.2147,-23.9779,-12.9233,-13.202,-12.9903,-14.8434,-13.5568,-14.1062,-17.9943,-11.7778,-24.2147,-23.9779,-12.9803 v02.0.0,Still,F2,Corona_Arch.y4m,-2.907,-10.1419,-1.0657,-3.1034,-2.9024,-3.5004,-1.4382,-1.8067,-3.1962,-2.8948,-2.907,-10.1419,-1.0657,-2.9609 v03.0.0,Still,F2,Corona_Arch.y4m,-4.3436,-8.2612,-3.9989,-4.4827,-4.0347,-4.5462,-2.6941,-3.1269,-4.1909,-4.31,-4.3436,-8.2612,-3.9989,-4.3844 v04.0.0,Still,F2,Corona_Arch.y4m,-6.9842,-25.0211,-10.3808,-7.9241,-6.6096,-7.2936,-5.9605,-6.3554,-6.8983,-8.116,-6.9842,-25.0211,-10.3808,-7.7544 @@ -3863,8 +3861,8 @@ v10.0.0,Still,F2,Corona_Arch.y4m,-12.0194,-31.1483,-19.1952,-13.2192,-12.9654,-1 v11.0.0,Still,F2,Corona_Arch.y4m,-11.9771,-31.031,-18.8961,-13.158,-13.4157,-13.2489,-15.2951,-15.498,-13.4769,-13.6053,-11.9771,-31.031,-18.8961,-13.1038 v12.0.0,Still,F2,Corona_Arch.y4m,-11.8664,-30.7895,-17.1692,-12.9605,-13.101,-13.0371,-14.1012,-14.1518,-13.3229,-13.2861,-11.8664,-30.7895,-17.1692,-12.8559 v13.0.0,Still,F2,Corona_Arch.y4m,-11.7332,-31.7417,-17.6823,-12.9039,-12.2741,-12.8848,-14.6161,-14.3331,-13.2141,-13.3516,-11.7332,-31.7417,-17.6823,-12.786 -libaom-v3.12.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,0.1468,-0.6258,0.0977,0.1118,-0.6466,-0.7037,-1.6873,-1.596,-0.9859,0.1488,0.1468,-0.6258,0.0977,0.0894 -libaom-v3.12.0-unconstrained,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,0.3973,-1.5401,-1.4527,0.219,-1.3082,-1.2443,2.6031,1.4815,-0.606,-1.1082,0.3973,-1.5401,-1.4527,0.1841 +v14.0.0,Still,F2,Corona_Arch.y4m,-11.7447,-31.7562,-17.695,-12.9157,-12.2846,-12.8984,-14.6461,-14.3625,-13.2296,-13.3637,-11.7447,-31.7562,-17.695,-12.7979 +v15.0.0,Still,F2,Corona_Arch.y4m,-11.7447,-31.7562,-17.695,-12.9157,-12.2846,-12.8984,-14.6461,-14.3625,-13.2296,-13.3637,-11.7447,-31.7562,-17.695,-12.7979 v02.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-4.0733,-8.527,-5.5961,-4.3457,-4.7984,-4.9629,-0.8421,-2.6736,-5.0957,-5.047,-4.0733,-8.527,-5.5961,-4.2294 v03.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-9.7541,-11.9635,-7.9723,-9.7556,-8.4353,-9.0206,-5.8553,-6.6625,-8.3072,-9.1442,-9.7541,-11.9635,-7.9723,-9.5353 v04.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-12.75,-16.8389,-15.1957,-13.0627,-12.199,-12.7593,-8.4794,-9.717,-12.0375,-13.5054,-12.75,-16.8389,-15.1957,-13.0617 @@ -3877,8 +3875,8 @@ v10.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-17.2424,-26.2367,-21.6353,- v11.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-17.1571,-24.8679,-20.9105,-17.6925,-17.0944,-17.4892,-15.6471,-16.1303,-17.3745,-19.2311,-17.1571,-24.8679,-20.9105,-17.8069 v12.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-17.438,-25.4548,-20.6453,-17.9789,-17.3277,-17.6975,-15.7362,-16.9353,-17.5997,-19.4956,-17.438,-25.4548,-20.6453,-18.0356 v13.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-17.3978,-26.0886,-20.425,-17.9466,-18.6525,-17.1053,-16.766,-17.3041,-17.0366,-19.3162,-17.3978,-26.0886,-20.425,-18.0047 -libaom-v3.12.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,0.0987,-1.415,-1.6433,-0.0033,0.0528,0.0506,-0.2892,0.0347,-0.1026,-0.3558,0.0987,-1.415,-1.6433,-0.043 -libaom-v3.12.0-unconstrained,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,1.7706,-1.4812,-3.4132,1.4461,3.1388,2.1778,3.0464,3.3328,2.0728,0.4943,1.7706,-1.4812,-3.4132,1.4888 +v14.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-17.414,-26.1025,-20.4404,-17.9626,-18.6674,-17.1219,-16.7969,-17.3336,-17.054,-19.3319,-17.414,-26.1025,-20.4404,-18.021 +v15.0.0,Still,F2,Correfocs_Festa_Major_del_Clot.y4m,-17.414,-26.1025,-20.4404,-17.9626,-18.6674,-17.1219,-16.7969,-17.3336,-17.054,-19.3319,-17.414,-26.1025,-20.4404,-18.021 v02.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-2.1115,-3.6717,-2.5876,-2.1954,-1.8795,-2.4027,-2.7633,-2.4137,-2.0662,-2.9052,-2.1115,-3.6717,-2.5876,-2.1763 v03.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-3.5885,-5.0877,-3.5777,-3.6472,-3.0039,-3.7528,-3.1283,-3.0842,-3.3838,-3.9883,-3.5885,-5.0877,-3.5777,-3.6192 v04.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-6.1792,-15.0427,-11.2261,-6.8111,-5.5313,-6.3449,-6.5902,-6.0644,-6.6273,-8.6245,-6.1792,-15.0427,-11.2261,-6.8297 @@ -3891,8 +3889,8 @@ v10.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-10.4348, v11.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-10.2923,-22.3289,-17.1344,-11.1843,-12.2707,-11.9786,-15.2792,-14.799,-12.7202,-14.2673,-10.2923,-22.3289,-17.1344,-11.324 v12.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-10.3376,-22.1062,-16.857,-11.192,-12.1594,-11.8879,-15.4293,-14.7147,-12.5676,-14.0662,-10.3376,-22.1062,-16.857,-11.3133 v13.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-10.2805,-22.7068,-17.2579,-11.1928,-10.9166,-11.9882,-15.4723,-14.9595,-12.674,-14.1567,-10.2805,-22.7068,-17.2579,-11.304 -libaom-v3.12.0,Still,F2,Esquibien_Jean_Perrot.y4m,0.262,-2.6167,-2.4348,0.119,0.1135,0.0589,0.5375,-0.5237,-0.6552,-0.1683,0.262,-2.6167,-2.4348,0.1316 -libaom-v3.12.0-unconstrained,Still,F2,Esquibien_Jean_Perrot.y4m,1.6612,0.7297,0.9772,1.5827,1.3717,1.204,3.6436,2.8177,1.4552,1.7395,1.6612,0.7297,0.9772,1.5889 +v14.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-10.2929,-22.7257,-17.2767,-11.2057,-10.9265,-12.0039,-15.5109,-14.9977,-12.6909,-14.1716,-10.2929,-22.7257,-17.2767,-11.317 +v15.0.0,Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,-10.2929,-22.7257,-17.2767,-11.2057,-10.9265,-12.0039,-15.5109,-14.9977,-12.6909,-14.1716,-10.2929,-22.7257,-17.2767,-11.317 v02.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-0.9052,-43.284,-35.68,-3.9976,-1.2074,-1.0792,-0.2634,-0.4867,-2.9678,-7.747,-0.9052,-43.284,-35.68,-1.8933 v03.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-2.0957,-45.8158,-37.763,-5.312,-2.3491,-2.0694,-1.7937,-1.6305,-4.0814,-9.4357,-2.0957,-45.8158,-37.763,-3.1454 v04.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-4.5831,-53.6321,-46.7639,-8.417,-4.8194,-4.8614,-4.3827,-4.1955,-7.3639,-13.3965,-4.5831,-53.6321,-46.7639,-6.0807 @@ -3905,8 +3903,8 @@ v10.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-9.8483,-63.3411,-54.2629,-14.2125,-1 v11.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-10.282,-63.2941,-53.4563,-14.5413,-11.5035,-11.3218,-16.9472,-17.1558,-15.1591,-21.3279,-10.282,-63.2941,-53.4563,-12.0955 v12.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-11.2772,-65.0802,-55.9277,-15.675,-12.9343,-12.6466,-18.6988,-18.9043,-16.7846,-22.8616,-11.2772,-65.0802,-55.9277,-13.1421 v13.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-11.2358,-64.419,-53.9792,-15.5122,-10.8371,-12.4476,-18.7747,-19.1843,-16.3253,-22.5685,-11.2358,-64.419,-53.9792,-13.0732 -libaom-v3.12.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,0.275,-1.2004,-1.566,0.1791,-0.3469,-0.2893,-0.0224,-0.1885,-0.7374,-0.0344,0.275,-1.2004,-1.566,0.1489 -libaom-v3.12.0-unconstrained,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,1.3993,-1.5035,-3.5476,1.1437,0.8828,0.9071,2.2412,2.2525,0.9675,0.3764,1.3993,-1.5035,-3.5476,1.1619 +v14.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-11.2449,-64.427,-53.9882,-15.5213,-10.844,-12.457,-18.8026,-19.2117,-16.338,-22.5781,-11.2449,-64.427,-53.9882,-13.0826 +v15.0.0,Still,F2,Esquibien_Jean_Perrot.y4m,-11.2449,-64.427,-53.9882,-15.5213,-10.844,-12.457,-18.8026,-19.2117,-16.338,-22.5781,-11.2449,-64.427,-53.9882,-13.0826 v02.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-1.0717,-15.8811,-13.7622,-2.1952,-2.1588,-2.0934,-1.75,-0.7028,-2.3971,-4.3066,-1.0717,-15.8811,-13.7622,-1.7211 v03.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-2.4222,-16.345,-14.2134,-3.502,-2.9114,-2.9424,-0.139,0.0813,-2.9852,-5.3534,-2.4222,-16.345,-14.2134,-3.0495 v04.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-4.3186,-18.458,-18.3771,-5.485,-4.3776,-4.8821,-3.6023,-2.9019,-5.1794,-7.3833,-4.3186,-18.458,-18.3771,-5.0856 @@ -3919,8 +3917,8 @@ v10.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-6.4447,-23.1512,-28.9006 v11.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-7.2603,-23.0968,-27.682,-8.7917,-8.9806,-9.014,-9.3399,-9.0661,-9.7505,-11.2984,-7.2603,-23.0968,-27.682,-8.5211 v12.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-7.2746,-23.3616,-28.1282,-8.8179,-8.6842,-8.8138,-11.0979,-10.4104,-9.8115,-11.3658,-7.2746,-23.3616,-28.1282,-8.5216 v13.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-7.2205,-22.764,-27.9871,-8.7295,-8.2804,-8.7457,-10.1561,-9.4654,-9.809,-11.4504,-7.2205,-22.764,-27.9871,-8.4738 -libaom-v3.12.0,Still,F2,Fontaine_Place_Stanislas.y4m,0.0654,-0.5388,-0.5767,0.0163,-0.6005,-0.9031,0.1836,-0.8175,-1.2782,-0.008,0.0654,-0.5388,-0.5767,-0.0037 -libaom-v3.12.0-unconstrained,Still,F2,Fontaine_Place_Stanislas.y4m,1.0199,0.3253,-0.558,0.9218,-0.1808,-0.2496,0.9821,0.9072,0.1009,0.3967,1.0199,0.3253,-0.558,0.9122 +v14.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-7.2269,-22.7697,-27.9925,-8.7358,-8.2857,-8.7525,-10.1728,-9.4816,-9.8169,-11.4571,-7.2269,-22.7697,-27.9925,-8.4804 +v15.0.0,Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,-7.2269,-22.7697,-27.9925,-8.7358,-8.2857,-8.7525,-10.1728,-9.4816,-9.8169,-11.4571,-7.2269,-22.7697,-27.9925,-8.4804 v02.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-2.7593,-10.4751,-20.0914,-3.8366,-3.9712,-4.0902,-2.712,-2.92,-4.7965,-7.8697,-2.7593,-10.4751,-20.0914,-3.3903 v03.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-5.2607,-12.7253,-25.5525,-6.4248,-5.2917,-5.6815,-2.6895,-2.2255,-5.501,-10.0202,-5.2607,-12.7253,-25.5525,-5.9517 v04.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-7.6943,-16.4867,-30.1398,-9.0219,-8.4486,-8.8405,-4.2516,-4.3945,-8.7008,-13.1734,-7.6943,-16.4867,-30.1398,-8.658 @@ -3933,8 +3931,8 @@ v10.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-12.1601,-22.182,-35.5796,-13.6976 v11.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-11.9523,-22.0928,-36.1022,-13.5069,-13.2147,-13.5944,-12.5472,-12.1306,-14.0823,-19.3826,-11.9523,-22.0928,-36.1022,-13.1206 v12.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-12.6523,-21.7872,-35.7489,-14.149,-14.4235,-14.7263,-13.7384,-13.2458,-14.923,-19.8761,-12.6523,-21.7872,-35.7489,-13.7754 v13.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-12.6951,-22.4043,-35.3368,-14.1986,-14.9404,-14.5846,-13.7712,-13.2036,-15.1194,-19.8888,-12.6951,-22.4043,-35.3368,-13.8234 -libaom-v3.12.0,Still,F2,Genmaicha_Tea.y4m,-0.1699,-1.4101,-0.8168,-0.2446,-0.6445,-0.8449,-1.331,-1.4529,-1.1104,0.3494,-0.1699,-1.4101,-0.8168,-0.2946 -libaom-v3.12.0-unconstrained,Still,F2,Genmaicha_Tea.y4m,0.9394,-2.983,-3.6406,0.5836,-1.1173,-0.9672,1.0205,0.6453,0.6345,-1.4711,0.9394,-2.983,-3.6406,0.6204 +v14.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-12.7053,-22.4133,-35.3444,-14.2086,-14.95,-14.5952,-13.7931,-13.225,-15.1319,-19.8992,-12.7053,-22.4133,-35.3444,-13.8338 +v15.0.0,Still,F2,Fontaine_Place_Stanislas.y4m,-12.7053,-22.4133,-35.3444,-14.2086,-14.95,-14.5952,-13.7931,-13.225,-15.1319,-19.8992,-12.7053,-22.4133,-35.3444,-13.8338 v02.0.0,Still,F2,Genmaicha_Tea.y4m,-4.0225,-14.6038,-9.7659,-4.786,-5.0281,-4.8453,-6.1004,-6.2009,-5.7024,-12.589,-4.0225,-14.6038,-9.7659,-4.7054 v03.0.0,Still,F2,Genmaicha_Tea.y4m,-7.0901,-17.102,-12.1905,-7.7943,-6.9793,-6.7499,-8.3125,-7.9498,-7.8051,-12.1896,-7.0901,-17.102,-12.1905,-7.7041 v04.0.0,Still,F2,Genmaicha_Tea.y4m,-9.9758,-27.1892,-19.5886,-11.1853,-10.8154,-10.4367,-10.1964,-10.5305,-11.1001,-19.4663,-9.9758,-27.1892,-19.5886,-11.1497 @@ -3947,8 +3945,8 @@ v10.0.0,Still,F2,Genmaicha_Tea.y4m,-18.3903,-32.4527,-25.8989,-19.4338,-20.0409, v11.0.0,Still,F2,Genmaicha_Tea.y4m,-18.1786,-35.4325,-26.9831,-19.422,-19.0034,-18.8745,-19.2948,-19.3234,-19.561,-26.9562,-18.1786,-35.4325,-26.9831,-19.3636 v12.0.0,Still,F2,Genmaicha_Tea.y4m,-18.3482,-33.2884,-26.6189,-19.4565,-18.7605,-18.8871,-19.3229,-19.1728,-19.6284,-26.6999,-18.3482,-33.2884,-26.6189,-19.4189 v13.0.0,Still,F2,Genmaicha_Tea.y4m,-18.5064,-34.9191,-24.5682,-19.5992,-20.256,-19.2187,-19.2474,-19.0835,-19.8774,-25.7429,-18.5064,-34.9191,-24.5682,-19.544 -libaom-v3.12.0,Still,F2,Homestead_in_Montana.y4m,-0.1738,-0.8298,-0.7933,-0.241,0.4579,0.0331,-0.2297,-0.1755,-0.2692,-0.3491,-0.1738,-0.8298,-0.7933,-0.3252 -libaom-v3.12.0-unconstrained,Still,F2,Homestead_in_Montana.y4m,0.6022,-0.923,-2.1324,0.3686,1.3475,1.0788,3.6971,3.2507,1.2443,0.076,0.6022,-0.923,-2.1324,0.2108 +v14.0.0,Still,F2,Genmaicha_Tea.y4m,-18.5325,-34.9398,-24.5944,-19.625,-20.2863,-19.2493,-19.2935,-19.1287,-19.9122,-25.7694,-18.5325,-34.9398,-24.5944,-19.5703 +v15.0.0,Still,F2,Genmaicha_Tea.y4m,-18.5325,-34.9398,-24.5944,-19.625,-20.2863,-19.2493,-19.2935,-19.1287,-19.9122,-25.7694,-18.5325,-34.9398,-24.5944,-19.5703 v02.0.0,Still,F2,Homestead_in_Montana.y4m,-2.8242,-3.811,-3.5389,-2.918,-1.367,-2.0086,-1.6322,-1.8395,-2.1734,-2.7626,-2.8242,-3.811,-3.5389,-2.9583 v03.0.0,Still,F2,Homestead_in_Montana.y4m,-4.9814,-5.0909,-5.1016,-4.998,-3.0283,-3.8185,-2.8603,-2.9534,-3.9399,-4.5677,-4.9814,-5.0909,-5.1016,-4.9668 v04.0.0,Still,F2,Homestead_in_Montana.y4m,-8.1566,-12.8197,-11.5824,-8.6185,-6.2834,-7.2578,-7.1217,-6.5861,-7.4056,-8.6285,-8.1566,-12.8197,-11.5824,-8.877 @@ -3961,8 +3959,8 @@ v10.0.0,Still,F2,Homestead_in_Montana.y4m,-14.5766,-16.7386,-17.928,-14.9047,-14 v11.0.0,Still,F2,Homestead_in_Montana.y4m,-14.1918,-15.7623,-16.7603,-14.443,-13.5419,-14.3637,-14.9911,-14.8221,-13.6243,-14.9502,-14.1918,-15.7623,-16.7603,-14.6127 v12.0.0,Still,F2,Homestead_in_Montana.y4m,-14.4613,-16.468,-16.8715,-14.7193,-14.2402,-14.815,-15.9961,-15.5905,-14.0643,-15.4476,-14.4613,-16.468,-16.8715,-14.8957 v13.0.0,Still,F2,Homestead_in_Montana.y4m,-14.1448,-17.1941,-17.7798,-14.5358,-14.9016,-14.5277,-13.9809,-14.3409,-13.9369,-15.0417,-14.1448,-17.1941,-17.7798,-14.7973 -libaom-v3.12.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-0.0283,-0.2987,-0.1382,-0.0483,-0.4112,-0.3893,-0.5921,-0.7362,-0.657,-0.0845,-0.0283,-0.2987,-0.1382,-0.0661 -libaom-v3.12.0-unconstrained,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,0.6255,-1.0238,-1.3608,0.4317,1.3542,1.1649,1.3951,1.175,1.0358,0.0504,0.6255,-1.0238,-1.3608,0.3178 +v14.0.0,Still,F2,Homestead_in_Montana.y4m,-14.1603,-17.2087,-17.7943,-14.5513,-14.9174,-14.5444,-14.0102,-14.3693,-13.9539,-15.0572,-14.1603,-17.2087,-17.7943,-14.8128 +v15.0.0,Still,F2,Homestead_in_Montana.y4m,-14.1603,-17.2087,-17.7943,-14.5513,-14.9174,-14.5444,-14.0102,-14.3693,-13.9539,-15.0572,-14.1603,-17.2087,-17.7943,-14.8128 v02.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-3.5525,-2.5986,-4.0226,-3.5259,-3.2052,-3.3248,-2.3317,-2.9712,-3.1201,-3.422,-3.5525,-2.5986,-4.0226,-3.4857 v03.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-5.6811,-3.9002,-4.7818,-5.5425,-4.3894,-4.8353,-2.502,-3.4163,-4.4996,-4.9085,-5.6811,-3.9002,-4.7818,-5.3925 v04.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-8.2405,-8.3409,-10.6113,-8.3721,-6.6403,-7.298,-3.4706,-4.5169,-6.6049,-8.2272,-8.2405,-8.3409,-10.6113,-8.4102 @@ -3975,8 +3973,8 @@ v10.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-13.4246,-12.872 v11.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-13.3761,-12.5196,-15.131,-13.4154,-12.492,-12.8433,-13.9392,-13.3397,-12.1017,-13.5387,-13.3761,-12.5196,-15.131,-13.4503 v12.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-13.2429,-12.3599,-15.1082,-13.2853,-12.235,-12.5634,-13.3194,-12.9937,-11.9011,-13.4298,-13.2429,-12.3599,-15.1082,-13.3146 v13.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-13.1572,-12.6059,-15.41,-13.237,-13.1987,-12.476,-13.1529,-13.1066,-11.9165,-13.3295,-13.1572,-12.6059,-15.41,-13.2979 -libaom-v3.12.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,0.2231,-0.9845,-0.2906,0.1402,-0.4297,-0.3381,-2.7599,-1.8867,-1.0496,-0.3071,0.2231,-0.9845,-0.2906,0.0762 -libaom-v3.12.0-unconstrained,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,1.1644,-2.5095,-1.7845,0.8548,0.9072,0.7939,-1.0923,-1.0047,0.0303,-0.3249,1.1644,-2.5095,-1.7845,0.7862 +v14.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-13.1667,-12.6154,-15.4196,-13.2465,-13.2073,-12.4857,-13.1728,-13.126,-11.9266,-13.3391,-13.1667,-12.6154,-15.4196,-13.3075 +v15.0.0,Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,-13.1667,-12.6154,-15.4196,-13.2465,-13.2073,-12.4857,-13.1728,-13.126,-11.9266,-13.3391,-13.1667,-12.6154,-15.4196,-13.3075 v02.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-2.0017,-6.0823,-8.1857,-2.5092,-2.5089,-2.4346,-4.4691,-4.1544,-3.6291,-4.8657,-2.0017,-6.0823,-8.1857,-2.6366 v03.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-4.5149,-7.7256,-8.817,-4.886,-4.4493,-4.6064,-4.8558,-4.7098,-4.9677,-6.4352,-4.5149,-7.7256,-8.817,-4.9435 v04.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-6.4452,-11.0881,-12.7576,-6.9935,-6.2913,-6.5779,-8.4212,-7.4608,-7.338,-9.3956,-6.4452,-11.0881,-12.7576,-7.0887 @@ -3989,8 +3987,8 @@ v10.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-10.6309,-16.450 v11.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-10.67,-16.3858,-22.911,-11.5619,-11.8755,-11.5725,-16.3272,-14.8063,-12.5588,-15.561,-10.67,-16.3858,-22.911,-11.8753 v12.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-10.6674,-16.1426,-22.6689,-11.5333,-11.801,-11.4247,-16.1947,-15.167,-12.3032,-15.0486,-10.6674,-16.1426,-22.6689,-11.8301 v13.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-10.6734,-16.2063,-22.9178,-11.5522,-10.9709,-11.4156,-17.791,-16.1262,-12.4815,-15.2259,-10.6734,-16.2063,-22.9178,-11.8481 -libaom-v3.12.0,Still,F2,MagicKindom.y4m,0.172,-1.371,-1.6982,0.0687,-0.0108,-0.1533,-0.9919,-1.205,-0.9091,-0.071,0.172,-1.371,-1.6982,0.0359 -libaom-v3.12.0-unconstrained,Still,F2,MagicKindom.y4m,1.2265,-2.4975,-0.9682,1.0064,1.0292,1.0392,1.0659,0.2693,0.9009,0.487,1.2265,-2.4975,-0.9682,0.9902 +v14.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-10.6784,-16.211,-22.9221,-11.557,-10.9751,-11.4205,-17.802,-16.137,-12.4874,-15.2308,-10.6784,-16.211,-22.9221,-11.853 +v15.0.0,Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,-10.6784,-16.211,-22.9221,-11.557,-10.9751,-11.4205,-17.802,-16.137,-12.4874,-15.2308,-10.6784,-16.211,-22.9221,-11.853 v02.0.0,Still,F2,MagicKindom.y4m,-2.0637,-11.7723,-11.4289,-2.8189,-2.6178,-2.524,-1.6127,-2.793,-3.6413,-4.0953,-2.0637,-11.7723,-11.4289,-2.5222 v03.0.0,Still,F2,MagicKindom.y4m,-3.5853,-15.935,-16.1705,-4.613,-3.6862,-4.0049,-2.4923,-2.6917,-4.3738,-5.8505,-3.5853,-15.935,-16.1705,-4.1458 v04.0.0,Still,F2,MagicKindom.y4m,-5.3025,-18.7631,-18.6923,-6.4704,-5.2531,-5.9167,-3.439,-3.9289,-6.229,-8.0677,-5.3025,-18.7631,-18.6923,-6.026 @@ -4003,8 +4001,8 @@ v10.0.0,Still,F2,MagicKindom.y4m,-8.7742,-25.631,-21.476,-10.0942,-9.2312,-9.758 v11.0.0,Still,F2,MagicKindom.y4m,-8.6205,-27.0723,-20.9241,-9.9795,-9.3012,-9.6422,-11.4188,-11.3268,-10.6663,-12.3729,-8.6205,-27.0723,-20.9241,-9.6327 v12.0.0,Still,F2,MagicKindom.y4m,-8.5357,-26.3284,-21.5847,-9.894,-9.062,-9.4179,-11.6001,-11.5946,-10.5778,-12.2089,-8.5357,-26.3284,-21.5847,-9.5236 v13.0.0,Still,F2,MagicKindom.y4m,-8.537,-26.4902,-20.6675,-9.8644,-9.5507,-9.5111,-10.8357,-10.6822,-10.406,-12.1289,-8.537,-26.4902,-20.6675,-9.4922 -libaom-v3.12.0,Still,F2,Michigan_Stadium.y4m,0.1047,0.2368,-0.275,0.0952,-1.1975,-1.2667,-0.8507,-0.9792,-1.333,0.0708,0.1047,0.2368,-0.275,0.0929 -libaom-v3.12.0-unconstrained,Still,F2,Michigan_Stadium.y4m,1.2762,-0.2702,-2.6674,1.033,-1.1424,-0.9621,-1.2174,-1.1764,-0.7505,0.2023,1.2762,-0.2702,-2.6674,0.9835 +v14.0.0,Still,F2,MagicKindom.y4m,-8.5417,-26.4945,-20.6711,-9.869,-9.5549,-9.5165,-10.8484,-10.6946,-10.4121,-12.1337,-8.5417,-26.4945,-20.6711,-9.4971 +v15.0.0,Still,F2,MagicKindom.y4m,-8.5417,-26.4945,-20.6711,-9.869,-9.5549,-9.5165,-10.8484,-10.6946,-10.4121,-12.1337,-8.5417,-26.4945,-20.6711,-9.4971 v02.0.0,Still,F2,Michigan_Stadium.y4m,-1.4326,-1.1681,-3.1623,-1.496,-2.8452,-3.0716,-2.4583,-2.4512,-2.8326,-2.0889,-1.4326,-1.1681,-3.1623,-1.4954 v03.0.0,Still,F2,Michigan_Stadium.y4m,-3.3367,-1.8681,-4.9595,-3.3339,-3.6853,-4.3231,-2.9111,-2.4099,-3.4925,-3.3329,-3.3367,-1.8681,-4.9595,-3.2698 v04.0.0,Still,F2,Michigan_Stadium.y4m,-5.1317,-4.278,-10.5261,-5.3346,-6.1928,-6.8606,-5.1758,-4.6528,-6.1549,-5.8912,-5.1317,-4.278,-10.5261,-5.3279 @@ -4017,8 +4015,8 @@ v10.0.0,Still,F2,Michigan_Stadium.y4m,-8.0214,-8.2385,-14.417,-8.3317,-10.6467,- v11.0.0,Still,F2,Michigan_Stadium.y4m,-7.7886,-8.1577,-14.1488,-8.1045,-10.823,-11.0327,-10.9581,-10.0596,-9.8684,-9.4218,-7.7886,-8.1577,-14.1488,-8.3002 v12.0.0,Still,F2,Michigan_Stadium.y4m,-7.837,-7.6419,-14.382,-8.1309,-10.4508,-10.881,-11.0681,-10.3112,-9.8406,-9.2202,-7.837,-7.6419,-14.382,-8.2969 v13.0.0,Still,F2,Michigan_Stadium.y4m,-7.7414,-7.8102,-14.6184,-8.067,-10.5513,-10.9252,-11.2576,-10.3081,-9.757,-9.3091,-7.7414,-7.8102,-14.6184,-8.2409 -libaom-v3.12.0,Still,F2,OperaLamps.y4m,-0.128,0.0084,-0.3741,-0.1272,-0.6919,-0.8494,-1.3001,-1.2061,-0.8187,0.013,-0.128,0.0084,-0.3741,-0.1182 -libaom-v3.12.0-unconstrained,Still,F2,OperaLamps.y4m,0.8439,-0.6338,-1.184,0.6785,0.6403,0.6471,1.7897,1.5726,0.5606,0.0588,0.8439,-0.6338,-1.184,0.5905 +v14.0.0,Still,F2,Michigan_Stadium.y4m,-7.7443,-7.8125,-14.6204,-8.0698,-10.5543,-10.9284,-11.2634,-10.3139,-9.7604,-9.3118,-7.7443,-7.8125,-14.6204,-8.2438 +v15.0.0,Still,F2,Michigan_Stadium.y4m,-7.7443,-7.8125,-14.6204,-8.0698,-10.5543,-10.9284,-11.2634,-10.3139,-9.7604,-9.3118,-7.7443,-7.8125,-14.6204,-8.2438 v02.0.0,Still,F2,OperaLamps.y4m,-4.0131,-2.0181,-5.9672,-4.0118,-4.441,-4.8028,-3.2713,-3.5282,-4.0226,-4.4956,-4.0131,-2.0181,-5.9672,-3.9607 v03.0.0,Still,F2,OperaLamps.y4m,-6.9471,-4.7268,-7.2193,-6.8532,-6.0874,-6.8363,-4.3767,-4.3207,-5.5098,-7.1288,-6.9471,-4.7268,-7.2193,-6.6378 v04.0.0,Still,F2,OperaLamps.y4m,-9.099,-6.507,-12.6231,-9.1531,-8.2004,-9.215,-4.5852,-5.0979,-7.5463,-9.2962,-9.099,-6.507,-12.6231,-9.0429 @@ -4031,8 +4029,8 @@ v10.0.0,Still,F2,OperaLamps.y4m,-13.6299,-10.72,-20.3763,-13.8303,-12.7083,-13.7 v11.0.0,Still,F2,OperaLamps.y4m,-13.4781,-10.3662,-21.1293,-13.7153,-12.5896,-13.5794,-11.9217,-11.9982,-11.7363,-14.7333,-13.4781,-10.3662,-21.1293,-13.8486 v12.0.0,Still,F2,OperaLamps.y4m,-13.4865,-10.077,-20.9947,-13.7011,-12.5374,-13.5517,-11.0304,-11.291,-11.8313,-14.5089,-13.4865,-10.077,-20.9947,-13.7699 v13.0.0,Still,F2,OperaLamps.y4m,-13.497,-10.3187,-20.8372,-13.7162,-14.998,-13.5728,-11.0387,-11.3906,-11.5949,-14.5921,-13.497,-10.3187,-20.8372,-13.7932 -libaom-v3.12.0,Still,F2,Orion_Nebula.y4m,0.8795,-0.0351,-0.2231,0.8003,1.1593,1.1073,0.2967,0.3051,0.6018,0.8623,0.8795,-0.0351,-0.2231,0.6988 -libaom-v3.12.0-unconstrained,Still,F2,Orion_Nebula.y4m,0.8479,-2.0631,-2.189,0.5247,1.3445,1.2133,1.1465,0.705,1.4067,-0.2138,0.8479,-2.0631,-2.189,0.4014 +v14.0.0,Still,F2,OperaLamps.y4m,-13.5027,-10.3237,-20.8413,-13.7218,-15.0036,-13.5791,-11.0509,-11.4025,-11.6013,-14.5974,-13.5027,-10.3237,-20.8413,-13.7988 +v15.0.0,Still,F2,OperaLamps.y4m,-13.5027,-10.3237,-20.8413,-13.7218,-15.0036,-13.5791,-11.0509,-11.4025,-11.6013,-14.5974,-13.5027,-10.3237,-20.8413,-13.7988 v02.0.0,Still,F2,Orion_Nebula.y4m,-2.9099,-2.253,0.3053,-2.714,-2.1849,-2.4646,-4.3211,-4.0657,-1.8703,-3.1633,-2.9099,-2.253,0.3053,-2.6345 v03.0.0,Still,F2,Orion_Nebula.y4m,-4.8025,-3.224,-2.4399,-4.611,-3.3654,-3.6402,-5.6114,-5.5499,-3.6733,-4.4826,-4.8025,-3.224,-2.4399,-4.5295 v04.0.0,Still,F2,Orion_Nebula.y4m,-6.4405,-8.0699,-7.271,-6.608,-4.5598,-5.1203,-6.6067,-6.3958,-5.1715,-7.4906,-6.4405,-8.0699,-7.271,-6.7569 @@ -4045,8 +4043,8 @@ v10.0.0,Still,F2,Orion_Nebula.y4m,-13.1162,-11.8536,-13.6093,-13.096,-11.9188,-1 v11.0.0,Still,F2,Orion_Nebula.y4m,-12.6961,-10.2073,-13.0116,-12.6054,-11.7964,-11.8834,-17.4252,-15.9547,-11.8739,-12.4615,-12.6961,-10.2073,-13.0116,-12.6396 v12.0.0,Still,F2,Orion_Nebula.y4m,-12.713,-10.9486,-12.608,-12.6285,-11.7173,-11.9034,-17.1125,-16.4185,-11.8934,-12.9506,-12.713,-10.9486,-12.608,-12.6437 v13.0.0,Still,F2,Orion_Nebula.y4m,-12.785,-11.1177,-14.0473,-12.7853,-12.7094,-11.8541,-17.0416,-15.3421,-12.0008,-13.3774,-12.785,-11.1177,-14.0473,-12.8588 -libaom-v3.12.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-0.0677,0.4669,0.4842,0.0201,-0.5345,-0.5185,-1.1821,-0.9831,-0.1393,0.7374,-0.0677,0.4669,0.4842,0.056 -libaom-v3.12.0-unconstrained,Still,F2,Saint_Catherine-Caravaggio.y4m,0.97,-2.0063,-3.8082,0.5571,-0.1532,0.2682,2.1872,1.9428,0.1045,0.1739,0.97,-2.0063,-3.8082,0.7344 +v14.0.0,Still,F2,Orion_Nebula.y4m,-12.8385,-11.1761,-14.1014,-12.8391,-12.7452,-11.8992,-17.1299,-15.4301,-12.0472,-13.4328,-12.8385,-11.1761,-14.1014,-12.9131 +v15.0.0,Still,F2,Orion_Nebula.y4m,-12.8385,-11.1761,-14.1014,-12.8391,-12.7452,-11.8992,-17.1299,-15.4301,-12.0472,-13.4328,-12.8385,-11.1761,-14.1014,-12.9131 v02.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-4.1689,-14.896,-10.2189,-4.9083,-4.5628,-4.2888,-6.1515,-6.174,-5.7116,-7.5463,-4.1689,-14.896,-10.2189,-4.7576 v03.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-7.7246,-20.3123,-13.3201,-8.5137,-6.727,-7.057,-6.0349,-6.1163,-7.7349,-10.2846,-7.7246,-20.3123,-13.3201,-8.3592 v04.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-10.4153,-26.4145,-20.8607,-11.5934,-9.4136,-9.6937,-9.2369,-9.6505,-10.8241,-14.7327,-10.4153,-26.4145,-20.8607,-11.385 @@ -4059,8 +4057,8 @@ v10.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-15.1458,-40.948,-27.6483,-16.93 v11.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-15.2476,-39.7097,-26.7622,-16.9269,-13.7785,-14.2054,-18.5464,-18.0899,-16.5284,-21.5421,-15.2476,-39.7097,-26.7622,-16.6013 v12.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-15.2497,-39.8183,-26.871,-16.9443,-14.1027,-14.3294,-18.8419,-18.3374,-16.7372,-21.8549,-15.2497,-39.8183,-26.871,-16.5981 v13.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-15.1616,-38.9577,-26.046,-16.7904,-14.4046,-14.3577,-19.8443,-18.6056,-16.4701,-21.572,-15.1616,-38.9577,-26.046,-16.4711 -libaom-v3.12.0,Still,F2,Streptopelia_orientalis.y4m,-0.0724,-0.2102,-0.695,-0.116,0.7162,0.2341,-1.7531,-1.2357,0.0699,-0.1798,-0.0724,-0.2102,-0.695,-0.151 -libaom-v3.12.0-unconstrained,Still,F2,Streptopelia_orientalis.y4m,0.2216,-1.1358,-2.7011,-0.0233,1.6257,0.9517,2.73,2.0481,0.8971,-0.5071,0.2216,-1.1358,-2.7011,-0.1649 +v14.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-15.1792,-38.976,-26.0669,-16.8082,-14.4156,-14.3738,-19.8854,-18.6461,-16.4908,-21.5907,-15.1792,-38.976,-26.0669,-16.4893 +v15.0.0,Still,F2,Saint_Catherine-Caravaggio.y4m,-15.1792,-38.976,-26.0669,-16.8082,-14.4156,-14.3738,-19.8854,-18.6461,-16.4908,-21.5907,-15.1792,-38.976,-26.0669,-16.4893 v02.0.0,Still,F2,Streptopelia_orientalis.y4m,-4.6476,-4.0956,-5.5542,-4.6651,-2.1212,-3.4609,-4.1687,-4.6973,-3.6249,-4.6236,-4.6476,-4.0956,-5.5542,-4.643 v03.0.0,Still,F2,Streptopelia_orientalis.y4m,-7.6176,-5.2488,-6.1956,-7.4067,-4.5653,-6.2351,-5.0281,-5.654,-5.8219,-6.2525,-7.6176,-5.2488,-6.1956,-7.206 v04.0.0,Still,F2,Streptopelia_orientalis.y4m,-10.1807,-8.3881,-11.272,-10.1418,-6.649,-8.6629,-7.9932,-8.275,-8.0651,-9.5337,-10.1807,-8.3881,-11.272,-10.061 @@ -4073,8 +4071,8 @@ v10.0.0,Still,F2,Streptopelia_orientalis.y4m,-15.8364,-13.9629,-13.8098,-15.6203 v11.0.0,Still,F2,Streptopelia_orientalis.y4m,-15.758,-13.4548,-13.8368,-15.5207,-13.4169,-14.7396,-15.6577,-15.4124,-13.9158,-14.7665,-15.758,-13.4548,-13.8368,-15.3331 v12.0.0,Still,F2,Streptopelia_orientalis.y4m,-15.8067,-13.4814,-13.9465,-15.5707,-13.2858,-14.6801,-14.6905,-14.9903,-13.9397,-14.8632,-15.8067,-13.4814,-13.9465,-15.3758 v13.0.0,Still,F2,Streptopelia_orientalis.y4m,-15.7011,-13.8754,-13.6341,-15.486,-16.5795,-14.6197,-16.2545,-15.982,-13.8074,-14.8515,-15.7011,-13.8754,-13.6341,-15.3394 -libaom-v3.12.0,Still,F2,Swallowtail.y4m,1.6908,1.8234,0.9681,1.8136,1.3107,-0.7244,1.2262,0.6007,1.0058,1.7301,1.6908,1.8234,0.9681,1.7456 -libaom-v3.12.0-unconstrained,Still,F2,Swallowtail.y4m,1.0402,-1.8502,-2.4737,0.6228,1.2219,0.8224,2.2601,2.102,0.8395,0.0174,1.0402,-1.8502,-2.4737,0.4986 +v14.0.0,Still,F2,Streptopelia_orientalis.y4m,-15.7151,-13.8884,-13.6473,-15.4999,-16.5929,-14.6336,-16.2778,-16.0047,-13.8209,-14.8655,-15.7151,-13.8884,-13.6473,-15.3532 +v15.0.0,Still,F2,Streptopelia_orientalis.y4m,-15.7151,-13.8884,-13.6473,-15.4999,-16.5929,-14.6336,-16.2778,-16.0047,-13.8209,-14.8655,-15.7151,-13.8884,-13.6473,-15.3532 v02.0.0,Still,F2,Swallowtail.y4m,-3.0308,-3.1336,-4.1779,-3.1061,-3.2403,-3.0913,-4.1326,-4.087,-3.0136,-3.1959,-3.0308,-3.1336,-4.1779,-3.1196 v03.0.0,Still,F2,Swallowtail.y4m,-4.7523,-5.4572,-6.1392,-4.8784,-4.3238,-4.5172,-4.0224,-4.6139,-4.6099,-5.2031,-4.7523,-5.4572,-6.1392,-4.9067 v04.0.0,Still,F2,Swallowtail.y4m,-7.6199,-10.1447,-13.0643,-8.0688,-6.9872,-7.3142,-6.2875,-7.0294,-7.4147,-8.6812,-7.6199,-10.1447,-13.0643,-8.1982 @@ -4087,8 +4085,8 @@ v10.0.0,Still,F2,Swallowtail.y4m,-14.0099,-19.2782,-20.0784,-14.6731,-13.7572,-1 v11.0.0,Still,F2,Swallowtail.y4m,-13.9195,-19.8064,-19.3639,-14.5761,-13.8424,-13.2352,-16.0997,-15.6884,-13.7928,-15.8988,-13.9195,-19.8064,-19.3639,-14.7903 v12.0.0,Still,F2,Swallowtail.y4m,-13.8367,-19.2991,-19.0174,-14.4506,-13.8607,-13.1864,-15.8265,-15.4927,-13.7168,-15.7938,-13.8367,-19.2991,-19.0174,-14.6505 v13.0.0,Still,F2,Swallowtail.y4m,-13.7909,-19.7855,-18.4232,-14.401,-13.1212,-13.1023,-15.7308,-15.5638,-13.7599,-15.6914,-13.7909,-19.7855,-18.4232,-14.6063 -libaom-v3.12.0,Still,F2,Washington_Monument.y4m,-0.0079,-1.9898,-1.5784,-0.1183,-0.4197,-0.4084,-0.5973,-0.8283,-0.8974,-0.5664,-0.0079,-1.9898,-1.5784,-0.1462 -libaom-v3.12.0-unconstrained,Still,F2,Washington_Monument.y4m,0.8395,-2.1753,-1.8542,0.6117,-0.1447,-0.2371,1.5596,1.64,0.0854,-0.5025,0.8395,-2.1753,-1.8542,0.7506 +v14.0.0,Still,F2,Swallowtail.y4m,-13.8035,-19.798,-18.4359,-14.4135,-13.1315,-13.1141,-15.7541,-15.5864,-13.7736,-15.7039,-13.8035,-19.798,-18.4359,-14.6189 +v15.0.0,Still,F2,Swallowtail.y4m,-13.8035,-19.798,-18.4359,-14.4135,-13.1315,-13.1141,-15.7541,-15.5864,-13.7736,-15.7039,-13.8035,-19.798,-18.4359,-14.6189 v02.0.0,Still,F2,Washington_Monument.y4m,-1.6183,-21.5777,-24.2321,-3.2048,-1.891,-2.3108,-1.7568,-1.523,-3.4802,-6.7718,-1.6183,-21.5777,-24.2321,-2.3015 v03.0.0,Still,F2,Washington_Monument.y4m,-2.6965,-24.0546,-27.1138,-4.4683,-2.2996,-2.9649,-0.2378,-0.4415,-4.1652,-8.3617,-2.6965,-24.0546,-27.1138,-3.4327 v04.0.0,Still,F2,Washington_Monument.y4m,-5.0939,-30.6685,-33.8242,-7.2597,-4.7644,-5.5245,-3.8541,-3.9612,-6.8943,-11.9949,-5.0939,-30.6685,-33.8242,-6.1276 @@ -4101,8 +4099,8 @@ v10.0.0,Still,F2,Washington_Monument.y4m,-8.4894,-39.7892,-43.4484,-11.2751,-9.8 v11.0.0,Still,F2,Washington_Monument.y4m,-8.2912,-38.2591,-42.3183,-10.9452,-10.0596,-9.7605,-12.0766,-12.4554,-11.863,-18.6425,-8.2912,-38.2591,-42.3183,-9.5859 v12.0.0,Still,F2,Washington_Monument.y4m,-8.2695,-38.2761,-41.0199,-10.8632,-9.8191,-9.6488,-13.2952,-12.6432,-11.8171,-18.1591,-8.2695,-38.2761,-41.0199,-9.5362 v13.0.0,Still,F2,Washington_Monument.y4m,-8.1813,-39.3184,-40.4068,-10.8317,-9.6155,-9.6927,-12.4592,-11.6337,-11.8849,-18.4473,-8.1813,-39.3184,-40.4068,-9.475 -libaom-v3.12.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,0.1211,0.5156,-1.6634,0.0967,-0.3534,-0.5187,-0.6249,-0.8826,-0.8573,0.2986,0.1211,0.5156,-1.6634,0.1069 -libaom-v3.12.0-unconstrained,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,0.8965,5.4561,7.8295,1.2022,-0.0092,0.0309,0.3597,0.124,0.7091,1.3937,0.8965,5.4561,7.8295,0.9786 +v14.0.0,Still,F2,Washington_Monument.y4m,-8.1928,-39.3297,-40.4175,-10.8432,-9.6257,-9.7047,-12.487,-11.6611,-11.8988,-18.4598,-8.1928,-39.3297,-40.4175,-9.4868 +v15.0.0,Still,F2,Washington_Monument.y4m,-8.1928,-39.3297,-40.4175,-10.8432,-9.6257,-9.7047,-12.487,-11.6611,-11.8988,-18.4598,-8.1928,-39.3297,-40.4175,-9.4868 v02.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-2.0186,-37.8257,-39.9521,-5.1204,-2.8759,-2.9608,-2.3945,-2.7491,-4.026,-8.6663,-2.0186,-37.8257,-39.9521,-2.8213 v03.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-3.8299,-39.3114,-40.1198,-6.8204,-4.0732,-4.2838,-1.9906,-2.734,-5.0619,-10.544,-3.8299,-39.3114,-40.1198,-4.644 v04.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-5.7874,-41.3118,-46.4844,-9.2357,-6.0732,-6.5637,-4.6568,-4.5718,-7.2615,-13.3779,-5.7874,-41.3118,-46.4844,-6.8872 @@ -4115,8 +4113,8 @@ v10.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-8.8385,-49.1836,- v11.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-8.6956,-48.7787,-55.0082,-13.0093,-10.0969,-10.1623,-10.5517,-10.3874,-11.7434,-18.3928,-8.6956,-48.7787,-55.0082,-10.1733 v12.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-8.649,-46.9365,-54.2167,-12.8866,-9.7419,-9.9632,-10.4004,-10.3781,-11.4527,-18.325,-8.649,-46.9365,-54.2167,-10.0859 v13.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-8.6344,-48.8681,-56.1821,-12.9881,-9.7137,-10.2506,-11.5436,-11.314,-11.7693,-18.3582,-8.6344,-48.8681,-56.1821,-10.0901 -libaom-v3.12.0,Still,F2,Zoo_de_la_Barben.y4m,-0.3627,-0.7031,0.0807,-0.3618,1.5299,0.9496,-0.9885,-0.6576,0.6184,0.453,-0.3627,-0.7031,0.0807,-0.3646 -libaom-v3.12.0-unconstrained,Still,F2,Zoo_de_la_Barben.y4m,0.843,-0.2539,-1.5252,0.6469,1.3523,1.096,1.826,1.8707,1.3991,1.0183,0.843,-0.2539,-1.5252,0.6105 +v14.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-8.6407,-48.8731,-56.1876,-12.9943,-9.7195,-10.2573,-11.5586,-11.3287,-11.7771,-18.3647,-8.6407,-48.8731,-56.1876,-10.0965 +v15.0.0,Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,-8.6407,-48.8731,-56.1876,-12.9943,-9.7195,-10.2573,-11.5586,-11.3287,-11.7771,-18.3647,-8.6407,-48.8731,-56.1876,-10.0965 v02.0.0,Still,F2,Zoo_de_la_Barben.y4m,-5.757,-3.5903,-3.5158,-5.5534,-4.4705,-4.9931,-8.0909,-6.8528,-4.5574,-3.3491,-5.757,-3.5903,-3.5158,-5.4126 v03.0.0,Still,F2,Zoo_de_la_Barben.y4m,-7.6705,-4.9423,-2.4439,-7.3023,-6.6145,-7.0992,-7.6487,-7.5054,-6.3361,-7.3936,-7.6705,-4.9423,-2.4439,-7.047 v04.0.0,Still,F2,Zoo_de_la_Barben.y4m,-11.2548,-13.0522,-13.599,-11.5079,-8.6708,-9.8592,-11.0712,-10.7417,-9.9936,-13.1817,-11.2548,-13.0522,-13.599,-11.5781 @@ -4129,8 +4127,8 @@ v10.0.0,Still,F2,Zoo_de_la_Barben.y4m,-17.5046,-20.4443,-18.5815,-17.7209,-16.54 v11.0.0,Still,F2,Zoo_de_la_Barben.y4m,-17.3404,-19.56,-19.7386,-17.5898,-16.5599,-16.8376,-19.3365,-19.1757,-17.0326,-19.3991,-17.3404,-19.56,-19.7386,-17.7397 v12.0.0,Still,F2,Zoo_de_la_Barben.y4m,-17.4219,-19.523,-18.4271,-17.5893,-16.5454,-16.9019,-19.7527,-19.3475,-17.0259,-18.453,-17.4219,-19.523,-18.4271,-17.6885 v13.0.0,Still,F2,Zoo_de_la_Barben.y4m,-17.3942,-19.3209,-20.0798,-17.645,-18.2715,-16.9698,-19.8057,-19.2785,-16.9972,-20.0324,-17.3942,-19.3209,-20.0798,-17.7839 -libaom-v3.12.0,AS,A1,BoxingPractice,3.5313,-4.0571,-3.8451,2.3802,-0.3294,2.5675,12.4955,10.8896,2.0188,-1.4834,3.3791,-4.4985,-4.3202,2.3808 -libaom-v3.12.0-unconstrained,AS,A1,BoxingPractice,-5.7429,-11.9054,-11.5523,-6.6448,-8.1326,-8.3805,1.2008,0.1326,-6.9694,-11.5142,-6.0322,-12.0902,-11.7286,-6.7859 +v14.0.0,Still,F2,Zoo_de_la_Barben.y4m,-17.4369,-19.3635,-20.1263,-17.688,-18.3115,-17.0177,-19.8835,-19.3539,-17.047,-20.0811,-17.4369,-19.3635,-20.1263,-17.8271 +v15.0.0,Still,F2,Zoo_de_la_Barben.y4m,-17.4369,-19.3635,-20.1263,-17.688,-18.3115,-17.0177,-19.8835,-19.3539,-17.047,-20.0811,-17.4369,-19.3635,-20.1263,-17.8271 v02.0.0,AS,A1,BoxingPractice,-2.0683,-8.634,-10.7548,-3.18,-1.8327,-2.4182,-1.8993,-1.5512,-2.4365,-6.4932,-2.1011,-8.6148,-10.815,-2.9829 v03.0.0,AS,A1,BoxingPractice,-12.7948,-14.1418,-19.1759,-13.4548,-9.5296,-11.8217,-17.3383,-15.5463,-11.8633,-14.8235,-12.8613,-14.0937,-19.209,-13.3836 v04.0.0,AS,A1,BoxingPractice,-19.7242,-25.9643,-30.0654,-20.8256,-16.1441,-19.0368,-24.6822,-22.7465,-18.7992,-23.8424,-19.7917,-25.9412,-30.0883,-20.7156 @@ -4143,8 +4141,8 @@ v10.0.0,AS,A1,BoxingPractice,-30.0379,-34.9241,-42.6331,-31.2304,-24.9667,-27.95 v11.0.0,AS,A1,BoxingPractice,-30.4892,-35.2949,-43.6995,-31.6782,-25.1357,-27.8581,-35.7228,-33.9056,-29.3077,-34.547,-30.6892,-35.4041,-43.8156,-31.7567 v12.0.0,AS,A1,BoxingPractice,-30.8414,-35.2656,-42.9711,-31.9497,-25.382,-28.0636,-35.7766,-34.1695,-29.5966,-34.6038,-31.0374,-35.3766,-43.0917,-32.0356 v13.0.0,AS,A1,BoxingPractice,-30.8812,-35.0209,-42.7854,-31.9659,-30.9038,-28.1913,-36.1783,-34.4587,-29.5654,-34.6674,-31.0732,-35.1132,-42.9039,-32.0589 -libaom-v3.12.0,AS,A1,Crosswalk,-1.0126,-10.4155,-11.174,-2.3431,-6.0836,-4.7978,-1.5752,-1.9272,-3.6056,-5.5621,-1.0832,-10.8314,-11.73,-1.8446 -libaom-v3.12.0-unconstrained,AS,A1,Crosswalk,-6.841,0.3403,0.6749,-6.133,-7.7492,-7.3943,-4.3465,-4.6833,-7.7741,-5.1103,-7.1824,0.0022,0.2611,-6.7364 +v14.0.0,AS,A1,BoxingPractice,-30.4939,-34.7333,-42.6048,-31.5947,-30.6041,-27.8284,-35.7256,-34.0143,-29.2397,-34.296,-30.6864,-34.8247,-42.728,-31.6875 +v15.0.0,AS,A1,BoxingPractice,-30.4833,-34.7564,-42.6151,-31.587,-30.5785,-27.8048,-35.6825,-33.9785,-29.2242,-34.3053,-30.6768,-34.8476,-42.738,-31.6799 v02.0.0,AS,A1,Crosswalk,-3.0964,-5.8395,-6.0932,-3.4141,-2.748,-3.405,-1.7693,-3.3644,-3.431,-3.7831,-3.1452,-5.7341,-6.0578,-3.2993 v03.0.0,AS,A1,Crosswalk,-14.7415,-14.0345,-15.3612,-14.7059,-12.4739,-14.7591,-17.4275,-16.9684,-14.4271,-13.9101,-14.8113,-13.9605,-15.1902,-14.7762 v04.0.0,AS,A1,Crosswalk,-21.1362,-26.2189,-26.5613,-21.7861,-18.4963,-21.7456,-27.8251,-26.6782,-20.9401,-22.1955,-21.234,-26.2603,-26.3881,-21.6073 @@ -4157,8 +4155,8 @@ v10.0.0,AS,A1,Crosswalk,-31.3262,-36.7588,-36.4517,-31.9603,-27.2215,-30.3715,-3 v11.0.0,AS,A1,Crosswalk,-32.2279,-36.6357,-37.1515,-32.8029,-28.7673,-31.316,-36.2318,-35.3645,-31.5856,-33.3938,-32.4299,-36.8131,-37.2693,-32.8158 v12.0.0,AS,A1,Crosswalk,-32.4635,-37.7246,-37.3836,-33.1137,-28.8815,-31.455,-36.08,-35.3075,-31.7463,-33.5672,-32.7371,-37.9434,-37.4478,-33.1433 v13.0.0,AS,A1,Crosswalk,-32.7808,-37.5662,-38.0704,-33.4077,-34.8618,-31.7163,-36.4942,-35.7925,-32.024,-34.0332,-33.0025,-37.7372,-38.1961,-33.4047 -libaom-v3.12.0,AS,A1,FoodMarket2,-0.5979,-4.7145,-2.6103,-0.846,-2.4761,-1.2463,7.2377,6.5291,-1.7583,-2.0438,-1.151,-5.3074,-3.2773,-1.3201 -libaom-v3.12.0-unconstrained,AS,A1,FoodMarket2,-5.6189,-0.963,-0.6099,-4.9825,-6.1127,-6.982,-1.5798,-2.0117,-6.363,-4.7944,-6.6988,-2.6304,-2.4133,-6.1991 +v14.0.0,AS,A1,Crosswalk,-32.2622,-37.0734,-37.6031,-32.8941,-34.4524,-31.3358,-36.1379,-35.438,-31.5942,-33.4859,-32.4864,-37.2454,-37.7234,-32.8908 +v15.0.0,AS,A1,Crosswalk,-32.2566,-37.0665,-37.5569,-32.8872,-34.4536,-31.3387,-36.1625,-35.4546,-31.5817,-33.4761,-32.4808,-37.2398,-37.6731,-32.8847 v02.0.0,AS,A1,FoodMarket2,-2.8429,-11.2842,-6.8722,-3.4911,-1.9479,-2.7707,-4.0509,-4.2205,-2.9231,-5.3871,-2.7869,-11.5011,-6.997,-3.4062 v03.0.0,AS,A1,FoodMarket2,-13.4776,-16.8665,-13.1722,-13.6379,-10.189,-12.8629,-19.6894,-19.059,-12.6353,-14.2806,-13.3747,-17.0108,-13.0688,-13.5766 v04.0.0,AS,A1,FoodMarket2,-22.0456,-29.5159,-25.1226,-22.6271,-17.7175,-21.7269,-31.4225,-30.4033,-21.0189,-24.315,-21.8499,-29.6548,-24.9864,-22.4389 @@ -4171,8 +4169,8 @@ v10.0.0,AS,A1,FoodMarket2,-31.7702,-40.7389,-33.9557,-32.3689,-27.451,-30.3756,- v11.0.0,AS,A1,FoodMarket2,-32.4746,-41.0262,-33.8048,-33.0466,-28.1891,-30.6896,-41.2956,-40.4246,-30.9387,-34.7635,-32.2536,-41.1114,-33.7211,-32.8582 v12.0.0,AS,A1,FoodMarket2,-32.5801,-41.2089,-33.5738,-33.1309,-28.2623,-30.6639,-41.6206,-40.7298,-30.9839,-34.8568,-32.3638,-41.3319,-33.5388,-32.9546 v13.0.0,AS,A1,FoodMarket2,-32.7685,-41.4349,-33.4516,-33.2981,-32.5257,-30.8662,-41.6632,-40.8001,-31.1315,-35.0539,-32.5536,-41.5375,-33.3301,-33.1273 -libaom-v3.12.0,AS,A1,Neon1224,5.3294,-0.6499,4.4281,4.9945,-5.8042,-2.2519,11.1456,10.7111,2.5461,0.8566,6.3986,0.3506,5.6045,5.9931 -libaom-v3.12.0-unconstrained,AS,A1,Neon1224,-5.0609,-6.0021,-5.8863,-5.2577,-3.8756,-4.5714,-1.3004,-1.5768,-5.2145,-6.4276,-6.8415,-7.5596,-7.7479,-7.0759 +v14.0.0,AS,A1,FoodMarket2,-32.484,-41.2335,-33.1864,-33.019,-32.3357,-30.6392,-41.4484,-40.5777,-30.909,-34.7808,-32.2669,-41.3446,-33.0662,-32.8494 +v15.0.0,AS,A1,FoodMarket2,-32.4827,-41.2047,-33.1996,-33.0162,-32.3464,-30.6403,-41.454,-40.5783,-30.9133,-34.7693,-32.2683,-41.3086,-33.0748,-32.8454 v02.0.0,AS,A1,Neon1224,-3.249,-3.175,-2.9073,-3.2236,-3.9046,-3.2651,-0.7972,-0.9257,-3.5488,-3.0747,-3.3101,-3.1516,-2.8648,-3.2338 v03.0.0,AS,A1,Neon1224,-9.559,-4.8426,-5.2029,-8.9381,-7.9501,-8.8366,-8.8363,-8.81,-8.8837,-6.893,-9.5028,-4.6915,-5.1449,-8.6008 v04.0.0,AS,A1,Neon1224,-14.1614,-13.5273,-14.4734,-14.0828,-11.6553,-13.5247,-16.5432,-16.1952,-13.7247,-13.665,-14.13,-13.4372,-14.5248,-14.0199 @@ -4185,8 +4183,8 @@ v10.0.0,AS,A1,Neon1224,-24.7858,-21.2977,-23.1692,-24.4812,-20.7024,-23.9264,-30 v11.0.0,AS,A1,Neon1224,-24.642,-21.3611,-22.4797,-24.3478,-20.1339,-24.056,-29.3398,-28.6505,-23.4079,-22.5775,-24.7288,-21.563,-22.6374,-24.3191 v12.0.0,AS,A1,Neon1224,-24.7413,-21.2271,-22.4773,-24.4395,-20.8482,-24.0316,-29.815,-29.1866,-23.5713,-22.7343,-24.832,-21.4281,-22.6484,-24.4059 v13.0.0,AS,A1,Neon1224,-24.65,-21.5076,-22.2678,-24.3593,-28.6217,-23.9481,-29.5289,-28.896,-23.4648,-22.5952,-24.7416,-21.6768,-22.4396,-24.3116 -libaom-v3.12.0,AS,A1,NocturneDance,2.41,-7.5695,-14.0255,2.0368,-0.0445,2.5777,3.0119,2.6854,2.1151,-3.6717,2.3217,-7.8567,-14.2657,2.2981 -libaom-v3.12.0-unconstrained,AS,A1,NocturneDance,-13.7704,-13.783,-12.9041,-13.6789,-13.629,-16.7242,-11.6191,-11.6153,-13.5219,-19.5597,-14.6142,-14.2903,-12.9695,-14.9237 +v14.0.0,AS,A1,Neon1224,-24.5729,-21.4073,-22.137,-24.2721,-28.5826,-23.8839,-29.4662,-28.8446,-23.4002,-22.5251,-24.6631,-21.5815,-22.3071,-24.221 +v15.0.0,AS,A1,Neon1224,-24.5735,-21.4265,-22.1043,-24.2715,-28.5718,-23.8809,-29.3188,-28.7522,-23.3935,-22.5688,-24.6686,-21.6053,-22.2502,-24.2228 v02.0.0,AS,A1,NocturneDance,-1.8259,-11.3276,-13.4667,-2.5367,-2.2122,-1.7875,-2.743,-2.797,-2.3672,-4.8353,-1.8486,-11.4404,-13.5648,-2.9595 v03.0.0,AS,A1,NocturneDance,-10.3282,-19.0542,-24.6301,-11.1796,-9.9097,-8.9785,-14.1514,-13.7732,-10.2537,-14.9396,-10.3799,-19.1976,-24.6903,-11.8404 v04.0.0,AS,A1,NocturneDance,-15.0365,-30.1505,-36.5286,-16.7468,-13.4767,-13.8253,-20.7672,-19.9509,-15.346,-22.3961,-14.9494,-30.2565,-36.6233,-17.8932 @@ -4199,8 +4197,8 @@ v10.0.0,AS,A1,NocturneDance,-25.7161,-46.3821,-45.3087,-27.7827,-21.8419,-22.86, v11.0.0,AS,A1,NocturneDance,-25.5443,-47.1874,-47.2087,-27.7753,-21.4595,-22.3687,-32.2978,-31.7162,-26.043,-34.8897,-25.5663,-47.3906,-47.3755,-29.6436 v12.0.0,AS,A1,NocturneDance,-25.8343,-47.676,-48.308,-28.0276,-21.7577,-22.2537,-32.9622,-32.444,-25.8837,-35.256,-25.8367,-47.8709,-48.5051,-29.9532 v13.0.0,AS,A1,NocturneDance,-25.9151,-47.6978,-47.7502,-28.0822,-22.1222,-22.2879,-32.7754,-32.2705,-25.9567,-35.0203,-25.9184,-47.9085,-47.9286,-30.0137 -libaom-v3.12.0,AS,A1,PierSeaSide,3.9827,6.0071,6.9414,4.1536,-0.4375,1.104,18.5026,17.1381,4.0392,1.9644,4.0495,5.549,6.7771,4.1282 -libaom-v3.12.0-unconstrained,AS,A1,PierSeaSide,-8.7228,-8.2676,-13.1432,-9.0055,-4.9404,-5.1473,0.9105,0.1399,-7.5744,-8.9362,-9.174,-8.751,-13.5427,-9.3788 +v14.0.0,AS,A1,NocturneDance,-25.4057,-47.1435,-46.8622,-27.5562,-21.9519,-22.0007,-32.6095,-32.1022,-25.5239,-34.3267,-25.41,-47.3439,-47.0411,-29.483 +v15.0.0,AS,A1,NocturneDance,-25.3745,-47.1894,-46.8192,-27.5471,-21.9553,-22.0198,-32.5798,-32.1073,-25.5143,-34.3371,-25.3999,-47.3908,-46.9986,-29.4785 v02.0.0,AS,A1,PierSeaSide,-0.7816,-7.1358,-13.9835,-1.684,0.2101,-0.9002,0.4299,0.352,-1.008,-5.3223,-0.7777,-7.329,-14.5047,-2.0313 v03.0.0,AS,A1,PierSeaSide,-11.8341,-16.0419,-23.5305,-12.5944,-8.4718,-10.9194,-12.9786,-12.8169,-10.3804,-16.5783,-11.8981,-16.2585,-24.02,-13.1144 v04.0.0,AS,A1,PierSeaSide,-17.7295,-29.0834,-38.4342,-19.1904,-13.0655,-16.3088,-20.8934,-20.0658,-16.3705,-25.5275,-17.7036,-29.2354,-38.9141,-19.9348 @@ -4213,8 +4211,8 @@ v10.0.0,AS,A1,PierSeaSide,-30.1327,-39.4313,-46.2477,-31.3346,-24.9879,-27.5612, v11.0.0,AS,A1,PierSeaSide,-30.7329,-39.6398,-46.5513,-31.9273,-26.9442,-28.5914,-33.2957,-33.5332,-28.6669,-38.6587,-30.8305,-40.0046,-46.9908,-32.8123 v12.0.0,AS,A1,PierSeaSide,-31.1278,-39.8624,-46.4246,-32.3299,-27.3214,-28.956,-34.1201,-34.0946,-28.9859,-38.8531,-31.2029,-40.2282,-46.8473,-33.19 v13.0.0,AS,A1,PierSeaSide,-31.1504,-41.0247,-46.4868,-32.3558,-29.2419,-29.027,-33.7666,-33.8214,-29.0438,-39.8046,-31.2287,-41.3119,-46.8917,-33.2404 -libaom-v3.12.0,AS,A1,Tango,0.2703,-13.2592,-9.9534,-1.2153,-7.0319,-5.3947,-0.1946,-0.3543,-2.7581,-6.5511,0.3904,-13.5594,-10.3269,-0.5808 -libaom-v3.12.0-unconstrained,AS,A1,Tango,-7.0804,-0.1887,-4.3003,-6.5846,-9.7357,-8.8251,-3.1774,-3.0311,-7.859,-7.0053,-7.851,-0.7002,-5.1364,-7.4875 +v14.0.0,AS,A1,PierSeaSide,-30.171,-40.0615,-45.7176,-31.3979,-28.5336,-28.1402,-32.627,-32.7456,-28.2094,-38.7864,-30.274,-40.3966,-46.1287,-32.2714 +v15.0.0,AS,A1,PierSeaSide,-30.1689,-40.0819,-45.7097,-31.3971,-28.537,-28.1425,-32.6265,-32.746,-28.2116,-38.7892,-30.2708,-40.4183,-46.1194,-32.27 v02.0.0,AS,A1,Tango,-2.8441,-8.5553,-4.2945,-3.3087,-2.8685,-2.8513,-2.4539,-2.088,-3.1519,-4.1924,-2.8667,-8.4716,-4.2895,-3.1054 v03.0.0,AS,A1,Tango,-14.9166,-13.3132,-11.1754,-14.5473,-12.8485,-14.1504,-19.1604,-18.094,-14.1724,-14.5194,-15.048,-13.0507,-11.1251,-14.7403 v04.0.0,AS,A1,Tango,-21.5454,-26.7625,-22.3582,-21.9035,-19.3015,-21.5161,-28.1515,-26.4307,-21.099,-23.5928,-21.6754,-26.629,-22.3506,-21.8358 @@ -4227,8 +4225,8 @@ v10.0.0,AS,A1,Tango,-32.9518,-40.877,-33.9412,-33.5321,-28.7018,-31.3364,-40.464 v11.0.0,AS,A1,Tango,-33.7673,-42.0879,-35.4218,-34.4177,-30.0986,-32.3835,-40.8402,-39.2691,-32.8103,-36.2507,-34.0619,-42.1945,-35.6073,-34.3551 v12.0.0,AS,A1,Tango,-34.1537,-42.5773,-36.1631,-34.8623,-30.2636,-32.7424,-42.1575,-40.6554,-33.1787,-36.771,-34.4477,-42.6834,-36.3903,-34.7599 v13.0.0,AS,A1,Tango,-34.2937,-41.706,-35.394,-34.8685,-36.5964,-32.9738,-41.1856,-39.6306,-33.2505,-36.5179,-34.5918,-41.8158,-35.6365,-34.8383 -libaom-v3.12.0,AS,A1,TimeLapse,3.21,-9.0218,-13.6594,-0.0574,-5.5758,0.7684,20.0162,16.9526,0.5919,-7.0676,3.7998,-9.0604,-14.5281,1.7855 -libaom-v3.12.0-unconstrained,AS,A1,TimeLapse,-8.66,-16.6326,-16.4954,-10.209,-11.7313,-9.6693,-0.7287,-2.8928,-9.2042,-15.206,-8.3006,-16.4595,-15.5367,-9.3107 +v14.0.0,AS,A1,Tango,-33.9593,-41.1728,-35.1063,-34.527,-36.3593,-32.7277,-40.9999,-39.4584,-32.9897,-36.1212,-34.2601,-41.2869,-35.3292,-34.505 +v15.0.0,AS,A1,Tango,-33.9593,-41.271,-35.1044,-34.5313,-36.3613,-32.7318,-41.0038,-39.4619,-32.9935,-36.146,-34.2598,-41.3878,-35.3451,-34.4905 v02.0.0,AS,A1,TimeLapse,-0.4987,-13.5492,-13.6432,-2.9009,-0.4604,-0.5389,2.195,2.1071,-1.5049,-8.4581,-0.5098,-13.5271,-14.4591,-2.1169 v03.0.0,AS,A1,TimeLapse,-5.9625,-18.9629,-20.6793,-8.3297,-4.4241,-4.0356,-6.6333,-6.7313,-6.2325,-13.6923,-5.9512,-18.9769,-21.7611,-7.5607 v04.0.0,AS,A1,TimeLapse,-16.762,-31.1467,-34.8442,-19.2887,-12.1066,-13.7043,-16.1566,-16.9744,-15.6399,-25.5011,-16.4765,-31.218,-35.6517,-18.218 @@ -4241,3 +4239,5 @@ v10.0.0,AS,A1,TimeLapse,-27.3324,-43.3114,-40.3895,-29.7109,-20.8364,-22.83,-31. v11.0.0,AS,A1,TimeLapse,-27.5155,-44.8699,-43.574,-30.3271,-22.7965,-23.0832,-31.5235,-31.6324,-25.9591,-38.1889,-27.1787,-44.9138,-44.5568,-29.1124 v12.0.0,AS,A1,TimeLapse,-27.979,-45.6408,-43.5197,-30.8205,-22.7949,-23.5129,-31.5977,-31.881,-26.46,-38.7852,-27.6357,-45.6552,-44.4492,-29.5684 v13.0.0,AS,A1,TimeLapse,-28.2789,-45.3284,-43.4693,-31.0805,-25.8118,-23.815,-32.0093,-32.0888,-26.7189,-38.8971,-27.9392,-45.3614,-44.4075,-29.8548 +v14.0.0,AS,A1,TimeLapse,-27.6374,-44.8608,-42.8269,-30.4623,-25.3912,-23.3155,-31.2951,-31.3701,-26.1873,-38.3538,-27.2955,-44.8938,-43.7847,-29.2157 +v15.0.0,AS,A1,TimeLapse,-27.633,-44.8606,-42.8228,-30.4548,-25.3768,-23.3086,-31.2725,-31.3673,-26.1935,-38.3453,-27.2906,-44.8938,-43.7683,-29.2093 diff --git a/tools/convexhull_framework/ctc_result/PerVideoBdrate-Summary-AV1-vs-AV2.csv b/tools/convexhull_framework/ctc_result/PerVideoBdrate-Summary-AV1-vs-AV2.csv index 767b179e9f..9ecdf42035 100644 --- a/tools/convexhull_framework/ctc_result/PerVideoBdrate-Summary-AV1-vs-AV2.csv +++ b/tools/convexhull_framework/ctc_result/PerVideoBdrate-Summary-AV1-vs-AV2.csv @@ -1,6 +1,4 @@ cfg,class,video,tag,psnr_y,psnr_u,psnr_v,overall_psnr,ssim_y,ms_ssim_y,vmaf,vmaf_neg,psnr_hvs,ciede2k,apsnr_y,apsnr_u,apsnr_v,overall_apsnr -AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,2.7485,-1.8467,-2.0009,2.0282,0.3836,2.6718,-0.3593,-12.765,1.6221,0.2109,2.7485,-1.8476,-2.001,1.984 -AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,1.0284,-2.1795,-2.1335,0.5957,0.6427,1.359,1.5145,0.5451,0.6917,-1.5091,1.0284,-2.1787,-2.132,0.5068 AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-4.499,-10.0304,-10.6712,-5.2622,-4.4903,-4.4467,-4.8065,-5.2557,-4.5985,-9.4947,-4.4992,-10.0301,-10.6739,-5.4092 AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-6.9794,-12.2086,-14.3397,-7.8216,-5.8215,-6.5965,-6.0577,-6.7941,-6.8761,-12.8096,-6.9797,-12.2076,-14.3418,-7.9713 AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-10.6439,-20.5961,-22.8679,-12.1189,-8.6978,-10.0655,-10.738,-10.7503,-10.537,-17.7431,-10.6441,-20.5955,-22.8685,-12.3695 @@ -13,8 +11,8 @@ AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-18.496,-27.1135,-3 AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-18.43,-27.7253,-38.019,-20.4,-15.2159,-16.965,-21.8496,-20.9132,-18.1174,-24.791,-18.4304,-27.724,-38.0158,-20.7055 AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-18.5126,-27.7644,-37.7761,-20.4551,-15.2752,-17.0463,-22.0551,-21.1362,-18.166,-24.8519,-18.5127,-27.763,-37.7744,-20.7597 AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-18.4479,-27.7396,-37.7153,-20.3948,-19.7787,-16.9758,-22.1616,-21.1455,-18.0804,-24.6627,-18.4481,-27.738,-37.7117,-20.7002 -AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,2.6206,-4.2066,-6.3517,1.1768,-0.9645,3.7289,-5.9998,-4.8132,1.8151,-1.3405,2.6032,-4.2129,-6.3558,1.6395 -AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,1.1351,-3.2222,-4.2859,0.3007,0.9766,1.5598,-0.3653,-0.2824,0.711,-1.5907,1.1216,-3.2258,-4.2841,0.4466 +AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-18.4659,-27.7507,-37.7283,-20.412,-19.7955,-16.993,-22.1827,-21.166,-18.0966,-24.6759,-18.4661,-27.7491,-37.7247,-20.7174 +AI,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-18.4659,-27.7507,-37.7283,-20.412,-19.7955,-16.993,-22.1827,-21.166,-18.0966,-24.6759,-18.4661,-27.7491,-37.7247,-20.7174 AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-7.5783,-8.8768,-9.8266,-7.9137,-5.2255,-8.2541,-9.3648,-9.0611,-7.5973,-8.2392,-7.6085,-8.8561,-9.8158,-7.8929 AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-12.1636,-14.0474,-16.3007,-12.7262,-8.4213,-12.8789,-11.245,-11.5208,-12.0357,-14.3684,-12.1873,-14.0362,-16.2882,-12.6842 AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-13.2637,-17.0636,-19.2442,-14.1356,-9.0818,-14.0618,-12.503,-12.6628,-13.3321,-16.0482,-13.2909,-17.0449,-19.2045,-14.0068 @@ -27,8 +25,8 @@ AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-20.6831,-23.3287,-21.98 AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-20.3048,-27.884,-27.3824,-21.5618,-17.5967,-21.1336,-20.7106,-20.9359,-20.9493,-24.545,-20.3318,-27.8933,-27.3771,-21.506 AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-20.2104,-28.1076,-27.4964,-21.5182,-17.2181,-20.8802,-20.3775,-20.7019,-20.7759,-24.6361,-20.2378,-28.1192,-27.4957,-21.4703 AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-20.8081,-31.7866,-28.8473,-22.4268,-26.0802,-21.4652,-21.082,-21.373,-21.4869,-25.8777,-20.8328,-31.7966,-28.8452,-22.385 -AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,-0.0456,-1.5407,-1.6678,-0.2625,-0.3387,-0.1349,-3.4204,-2.982,-0.4209,-0.7936,-0.0456,-1.5385,-1.6675,-0.3221 -AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.4506,-2.8048,-2.9034,0.0231,0.5229,0.4655,2.1579,0.8885,0.0738,-1.2475,0.4518,-2.8028,-2.9032,-0.0571 +AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-20.8575,-31.8214,-28.8895,-22.4745,-26.1127,-21.5079,-21.1252,-21.4195,-21.5271,-25.9213,-20.8822,-31.8315,-28.8875,-22.4327 +AI,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-20.8575,-31.8214,-28.8895,-22.4745,-26.1127,-21.5079,-21.1252,-21.4195,-21.5271,-25.9213,-20.8822,-31.8315,-28.8875,-22.4327 AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-5.6112,-10.8334,-10.7652,-6.2572,-4.5824,-5.4423,-8.199,-7.6144,-5.436,-7.9837,-5.6052,-10.8328,-10.7642,-6.3606 AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-7.6927,-13.808,-13.8873,-8.4621,-5.5359,-7.1709,-8.7495,-8.4308,-7.5193,-10.5598,-7.6865,-13.8073,-13.8752,-8.557 AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-10.8256,-21.1548,-20.3671,-12.0956,-7.3802,-10.2064,-12.1432,-11.4136,-10.6083,-14.8487,-10.8209,-21.1556,-20.3524,-12.2453 @@ -41,8 +39,8 @@ AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-17.8423,-32.4683,-27. AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-17.6483,-32.4958,-27.0375,-19.2217,-14.6075,-16.5419,-21.1749,-20.0388,-17.4095,-23.4921,-17.6439,-32.489,-27.028,-19.3887 AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-17.5176,-32.4821,-27.0001,-19.1067,-14.4974,-16.3504,-21.0427,-19.933,-17.3397,-23.4525,-17.513,-32.4729,-26.9847,-19.2727 AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-17.7353,-33.2558,-27.6628,-19.3959,-19.0624,-16.5915,-21.4106,-20.2855,-17.5286,-23.9231,-17.731,-33.2472,-27.6471,-19.556 -AI,A1,Neon1224_3840x2160_2997fps.y4m,libaom-v3.12.0,0.0647,0.2903,0.2899,0.1006,-0.0979,-0.2291,-3.7826,-4.8845,0.3502,-0.2944,0.056,0.301,0.3159,0.1059 -AI,A1,Neon1224_3840x2160_2997fps.y4m,libaom-v3.12.0-unconstrained,0.5272,-1.1252,-0.8555,0.3315,0.3195,0.2787,1.5007,1.0402,0.2523,-0.9558,0.5304,-1.1259,-0.8228,0.262 +AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-17.7485,-33.2641,-27.6733,-19.4085,-19.0745,-16.603,-21.4276,-20.3021,-17.5389,-23.9348,-17.7442,-33.2555,-27.6577,-19.5686 +AI,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-17.7485,-33.2641,-27.6733,-19.4085,-19.0745,-16.603,-21.4276,-20.3021,-17.5389,-23.9348,-17.7442,-33.2555,-27.6577,-19.5686 AI,A1,Neon1224_3840x2160_2997fps.y4m,v02.0.0,-4.3304,-5.4165,-3.4953,-4.3467,-4.1359,-4.3653,-5.6707,-5.936,-4.2184,-6.6888,-4.3213,-5.3917,-3.4267,-4.2992 AI,A1,Neon1224_3840x2160_2997fps.y4m,v03.0.0,-7.1847,-6.1979,-3.6117,-6.8931,-5.9643,-6.9794,-8.1696,-8.6633,-6.7011,-9.4885,-7.1711,-6.1377,-3.4213,-6.6773 AI,A1,Neon1224_3840x2160_2997fps.y4m,v04.0.0,-10.2467,-13.3483,-11.5346,-10.543,-8.7168,-10.2092,-12.9179,-12.7897,-10.3253,-13.8844,-10.2276,-13.3153,-11.3752,-10.5723 @@ -55,8 +53,8 @@ AI,A1,Neon1224_3840x2160_2997fps.y4m,v10.0.0,-16.8909,-17.3118,-15.9146,-16.8635 AI,A1,Neon1224_3840x2160_2997fps.y4m,v11.0.0,-16.823,-17.2182,-15.4915,-16.7681,-14.7121,-15.9702,-23.7312,-22.6876,-16.4483,-19.4284,-16.8005,-17.1733,-15.2751,-16.6523 AI,A1,Neon1224_3840x2160_2997fps.y4m,v12.0.0,-16.8522,-17.2121,-15.5453,-16.7957,-14.6988,-15.9665,-23.8033,-22.7487,-16.4701,-19.3809,-16.8289,-17.1702,-15.3116,-16.6786 AI,A1,Neon1224_3840x2160_2997fps.y4m,v13.0.0,-16.9521,-17.9326,-16.4166,-16.9834,-18.1224,-16.0426,-24.0771,-22.9799,-16.6233,-20.1474,-16.9315,-17.8877,-16.2179,-16.9168 -AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,libaom-v3.12.0,-0.0419,-0.1667,-0.8676,-0.0591,-0.4523,-0.0132,-1.8048,-1.1184,-0.2181,-0.0724,-0.0424,-0.1661,-0.8655,-0.0119 -AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,libaom-v3.12.0-unconstrained,0.5183,0.24,-3.4033,0.3637,0.328,0.6277,0.3434,0.2886,0.3854,-0.1402,0.5185,0.2432,-3.4012,0.323 +AI,A1,Neon1224_3840x2160_2997fps.y4m,v14.0.0,-16.9654,-17.946,-16.4298,-16.9967,-18.1332,-16.0547,-24.1068,-23.0032,-16.6352,-20.1604,-16.9448,-17.9011,-16.2309,-16.9301 +AI,A1,Neon1224_3840x2160_2997fps.y4m,v15.0.0,-16.9654,-17.946,-16.4298,-16.9967,-18.1332,-16.0547,-24.1068,-23.0032,-16.6352,-20.1604,-16.9448,-17.9011,-16.2309,-16.9301 AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v02.0.0,-2.3857,-8.9289,-22.8992,-3.6022,-2.6897,-2.7144,-2.106,-2.3252,-3.0668,-9.0691,-2.3837,-8.9202,-22.9005,-4.2114 AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v03.0.0,-5.334,-12.7267,-24.671,-6.5145,-4.408,-4.9398,-8.9905,-8.5615,-5.6799,-12.8168,-5.3311,-12.7167,-24.6738,-7.2259 AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v04.0.0,-9.5361,-23.3978,-38.0997,-11.5146,-7.4687,-8.949,-11.684,-11.0559,-10.1789,-18.0522,-9.5337,-23.394,-38.1007,-13.1781 @@ -69,8 +67,8 @@ AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v10.0.0,-18.4336,-44.418,-46.7421 AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v11.0.0,-18.4199,-45.4964,-49.1739,-21.3383,-16.027,-17.41,-23.7937,-22.9821,-19.7837,-31.5619,-18.4171,-45.4983,-49.1851,-24.1542 AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v12.0.0,-18.3791,-45.5089,-49.1089,-21.301,-16.0659,-17.2879,-23.9603,-23.107,-19.7216,-31.3338,-18.3772,-45.5101,-49.121,-24.0991 AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v13.0.0,-18.285,-45.5991,-49.0132,-21.2327,-20.1451,-17.2745,-23.9111,-23.0496,-19.6421,-31.326,-18.2829,-45.5982,-49.0232,-24.0648 -AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,libaom-v3.12.0,-0.3241,-0.5201,0.0691,-0.2716,-0.485,-0.4258,-2.4272,-9.9735,-1.0073,-0.1833,-0.3247,-0.5189,0.0638,-0.1793 -AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,libaom-v3.12.0-unconstrained,0.639,-1.6208,-1.5767,0.4049,0.3155,0.6006,1.6194,1.2943,0.2452,-0.9094,0.6405,-1.6117,-1.5707,0.1988 +AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v14.0.0,-18.3083,-45.6109,-49.0273,-21.2547,-20.1612,-17.2939,-23.942,-23.0799,-19.6606,-31.3438,-18.3061,-45.6101,-49.0372,-24.0859 +AI,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v15.0.0,-18.3083,-45.6109,-49.0273,-21.2547,-20.1612,-17.2939,-23.942,-23.0799,-19.6606,-31.3438,-18.3061,-45.6101,-49.0372,-24.0859 AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v02.0.0,-2.7822,-7.8055,-10.8519,-3.5232,-2.9231,-2.924,-2.553,-2.8826,-3.0654,-7.1452,-2.7834,-7.8019,-10.8521,-4.0393 AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v03.0.0,-4.6448,-9.2755,-12.5038,-5.3206,-4.3276,-4.3583,-4.2771,-4.4836,-4.4716,-9.5962,-4.6381,-9.2548,-12.51,-5.8201 AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v04.0.0,-8.483,-17.9698,-23.6587,-9.8372,-7.3466,-8.1501,-7.9826,-7.8901,-8.5875,-15.8224,-8.4786,-17.9694,-23.6688,-10.974 @@ -83,8 +81,8 @@ AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v10.0.0,-15.9282,-22.7759,- AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v11.0.0,-15.893,-25.0541,-30.5557,-17.2223,-12.6579,-14.5475,-17.858,-16.8233,-15.5054,-24.5755,-15.8823,-25.0518,-30.5595,-18.2369 AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v12.0.0,-15.9735,-25.2131,-30.5682,-17.3022,-12.7893,-14.6297,-18.1361,-17.0054,-15.5959,-24.7266,-15.9682,-25.2142,-30.5791,-18.3204 AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v13.0.0,-15.881,-26.7528,-31.0971,-17.3486,-17.6557,-14.4775,-18.1897,-17.1116,-15.6973,-25.9239,-15.8767,-26.7286,-31.0901,-18.4569 -AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,8.4159,-3.8354,-1.9869,7.9293,-0.4835,3.8738,-17.1355,-12.0852,3.0817,5.5497,8.4111,-3.8368,-1.9628,8.2049 -AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,2.9095,-4.4531,-2.8952,1.9647,0.3708,1.9961,-0.1346,-0.0025,1.1522,0.0903,2.9088,-4.4547,-2.8926,2.1971 +AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v14.0.0,-15.905,-26.774,-31.1178,-17.3723,-17.6783,-14.5006,-18.2235,-17.1445,-15.7171,-25.9472,-15.9007,-26.7498,-31.1109,-18.4806 +AI,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v15.0.0,-15.905,-26.774,-31.1178,-17.3723,-17.6783,-14.5006,-18.2235,-17.1445,-15.7171,-25.9472,-15.9007,-26.7498,-31.1109,-18.4806 AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-6.2322,-10.3019,-7.914,-6.7785,-5.5097,-5.8536,-7.9198,-7.3223,-5.7676,-7.7301,-6.2315,-10.2923,-7.9222,-6.5514 AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-9.8728,-16.4783,-12.2035,-10.6553,-7.6916,-9.0475,-9.6283,-9.3814,-9.1599,-12.5775,-9.8723,-16.4709,-12.2123,-10.4303 AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-13.0237,-24.3317,-21.0714,-14.6623,-10.5359,-12.3156,-13.3524,-12.5959,-12.8269,-17.825,-13.0227,-24.3221,-21.0863,-14.2768 @@ -97,8 +95,8 @@ AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-20.8568,-33.8462,-27.7082,- AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-20.5077,-35.1123,-27.0029,-22.1939,-17.6639,-19.5634,-24.3952,-23.2054,-20.4254,-25.6324,-20.5076,-35.1012,-27.0165,-21.772 AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-20.4896,-34.8622,-26.7847,-22.1404,-17.6122,-19.4734,-24.3523,-23.1565,-20.3645,-25.487,-20.4898,-34.8515,-26.8001,-21.7261 AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-21.1315,-37.0588,-29.6804,-23.0994,-20.1167,-20.0344,-25.2954,-24.0295,-21.0308,-27.3732,-21.1313,-37.045,-29.7057,-22.68 -AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,0.2742,-1.9119,-1.9013,0.0326,-0.5664,-0.036,-1.6333,-1.8249,-0.6679,-0.983,0.2867,-1.9133,-1.8963,0.0272 -AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.532,-2.0086,-2.7926,0.2235,0.6888,0.6889,0.3973,0.3136,0.1989,-1.1645,0.5352,-1.9929,-2.7967,0.2665 +AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-21.157,-37.0793,-29.6967,-23.1239,-20.1301,-20.0542,-25.3217,-24.0552,-21.0486,-27.395,-21.1568,-37.0654,-29.7219,-22.7047 +AI,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-21.157,-37.0793,-29.6967,-23.1239,-20.1301,-20.0542,-25.3217,-24.0552,-21.0486,-27.395,-21.1568,-37.0654,-29.7219,-22.7047 AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-2.5062,-18.2036,-22.833,-4.6375,-2.0655,-2.1005,-3.0579,-3.0243,-2.9924,-10.2347,-2.4782,-18.2963,-22.6815,-4.0843 AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-4.0295,-19.9511,-25.7969,-6.2605,-2.5124,-3.1535,-4.0811,-4.1729,-4.2345,-12.4984,-4.0026,-20.0407,-25.7806,-5.6563 AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-7.0405,-25.7528,-32.2682,-9.6686,-4.2215,-5.7021,-8.3937,-7.7382,-6.9261,-16.7234,-7.0066,-25.8192,-32.3424,-9.0111 @@ -111,8 +109,8 @@ AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-15.4909,-41.9022,-40.05 AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-15.4122,-42.709,-41.7958,-18.7626,-12.4675,-13.2918,-19.713,-18.7198,-15.1321,-28.4144,-15.3918,-42.7938,-41.9028,-17.9689 AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-16.0752,-43.2899,-42.1645,-19.4039,-13.1163,-13.9376,-20.4176,-19.3987,-15.7867,-29.0443,-16.0574,-43.3736,-42.2743,-18.6207 AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-16.1653,-44.3231,-42.5371,-19.5797,-15.9904,-14.0795,-20.7628,-19.6828,-15.8904,-29.5599,-16.1432,-44.4033,-42.6547,-18.7628 -AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,-0.0087,-0.6141,-0.428,-0.0407,0.1619,-0.0493,-1.5081,-1.0677,-0.2471,-0.1999,-0.0416,-0.6134,-0.439,-0.0261 -AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.5667,-3.503,-2.6144,0.3045,0.6616,0.551,0.4568,0.1595,0.3558,-0.6689,0.5475,-3.5025,-2.6087,0.3462 +AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-16.1772,-44.3316,-42.5481,-19.5915,-15.9985,-14.0892,-20.7806,-19.7006,-15.8998,-29.5707,-16.1553,-44.4119,-42.6657,-18.7748 +AI,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-16.1772,-44.3316,-42.5481,-19.5915,-15.9985,-14.0892,-20.7806,-19.7006,-15.8998,-29.5707,-16.1553,-44.4119,-42.6657,-18.7748 AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v02.0.0,-3.1965,-8.1848,-13.0456,-3.796,-2.6121,-2.979,-3.6296,-3.6831,-2.6221,-5.3654,-3.208,-8.1931,-13.0816,-3.7296 AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v03.0.0,-5.0522,-13.0391,-19.6957,-5.9785,-3.5703,-4.3748,-5.4285,-5.1643,-4.1414,-8.7692,-5.0679,-13.0438,-19.7198,-5.7747 AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v04.0.0,-7.1985,-17.4238,-26.4737,-8.423,-5.0883,-6.3042,-7.6982,-7.2782,-5.9976,-11.3508,-7.2146,-17.4314,-26.4993,-8.2705 @@ -125,8 +123,8 @@ AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v10.0.0,-12.7536,-27.1749,-42.4912 AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v11.0.0,-12.6187,-26.0611,-41.3696,-14.5335,-10.8053,-11.3461,-15.6399,-15.2052,-11.707,-18.0871,-12.6015,-26.0819,-41.4028,-14.1563 AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v12.0.0,-12.5817,-25.982,-41.177,-14.4887,-10.7421,-11.2905,-15.6236,-15.2149,-11.6631,-18.0217,-12.5662,-26.0012,-41.2126,-14.1089 AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v13.0.0,-12.635,-26.3215,-41.4652,-14.5487,-12.1817,-11.4566,-15.8077,-15.3166,-11.7391,-18.082,-12.6201,-26.3388,-41.4935,-14.1837 -AI,A2,Boat_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,-0.0232,-0.5398,-1.2608,-0.069,0.2507,-0.0736,-4.9778,-6.1162,-0.3426,0.1414,-0.0233,-0.5399,-1.2607,-0.0107 -AI,A2,Boat_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.3581,-2.9759,-2.9853,0.1004,0.1982,0.0372,1.3794,0.298,0.1773,-0.6818,0.3581,-2.97,-2.985,0.1677 +AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v14.0.0,-12.6579,-26.3311,-41.4857,-14.5709,-12.1963,-11.4742,-15.8414,-15.3505,-11.7531,-18.1008,-12.6428,-26.3486,-41.514,-14.2057 +AI,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v15.0.0,-12.6579,-26.3311,-41.4857,-14.5709,-12.1963,-11.4742,-15.8414,-15.3505,-11.7531,-18.1008,-12.6428,-26.3486,-41.514,-14.2057 AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v02.0.0,-4.1227,-15.9597,-15.68,-5.1827,-4.0093,-4.7857,-3.9495,-3.9235,-2.9937,-9.2886,-4.1217,-15.9611,-15.6794,-5.1928 AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v03.0.0,-6.8581,-17.0779,-16.6426,-7.7579,-5.2057,-6.4248,-6.3165,-6.0564,-5.4576,-11.6408,-6.8579,-17.0787,-16.6417,-7.8049 AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v04.0.0,-9.1835,-29.9783,-28.6177,-11.1024,-7.1952,-8.649,-8.3486,-7.9539,-8.0447,-17.4221,-9.1833,-29.9788,-28.6128,-11.0583 @@ -139,8 +137,8 @@ AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v10.0.0,-14.523,-37.3261,-38.3946,-16.86 AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v11.0.0,-14.4868,-36.366,-37.8045,-16.7516,-12.2729,-13.114,-16.0717,-15.5897,-13.4895,-23.9494,-14.4869,-36.3618,-37.7994,-16.7416 AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v12.0.0,-14.4932,-36.2384,-37.4172,-16.7298,-12.2041,-13.0503,-16.0022,-15.4929,-13.4778,-23.8847,-14.4931,-36.2357,-37.4107,-16.7246 AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v13.0.0,-14.4881,-36.3838,-37.3729,-16.7288,-14.0757,-13.1699,-16.2843,-15.7476,-13.453,-23.8823,-14.4881,-36.3811,-37.3647,-16.727 -AI,A2,CrowdRun_1920x1080p50.y4m,libaom-v3.12.0,1.1531,0.2086,0.4273,1.0821,1.4331,1.7707,-6.8652,0.4729,5.1612,1.1521,1.1527,0.2086,0.4274,1.0406 -AI,A2,CrowdRun_1920x1080p50.y4m,libaom-v3.12.0-unconstrained,1.09,-1.4632,-1.0439,0.88,0.9386,1.0502,0.0989,1.1208,2.0,0.2706,1.0902,-1.4624,-1.0428,0.8089 +AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v14.0.0,-14.4971,-36.3943,-37.3831,-16.7375,-14.0829,-13.1778,-16.3026,-15.7654,-13.4546,-23.8931,-14.497,-36.3916,-37.375,-16.7361 +AI,A2,Boat_1920x1080_5994_10bit_420.y4m,v15.0.0,-14.4971,-36.3943,-37.3831,-16.7375,-14.0829,-13.1778,-16.3026,-15.7654,-13.4546,-23.8931,-14.497,-36.3916,-37.375,-16.7361 AI,A2,CrowdRun_1920x1080p50.y4m,v02.0.0,-1.7719,-7.7986,-8.2637,-2.3352,-2.5318,-2.5039,-1.8382,-1.8929,-0.7814,-4.727,-1.7711,-7.8007,-8.2635,-2.4594 AI,A2,CrowdRun_1920x1080p50.y4m,v03.0.0,-3.8799,-11.6626,-9.6417,-4.5029,-3.589,-3.8851,-3.4996,-2.8873,-2.1477,-8.256,-3.8798,-11.6643,-9.6419,-4.5732 AI,A2,CrowdRun_1920x1080p50.y4m,v04.0.0,-6.1572,-16.651,-16.1092,-7.1006,-5.5843,-6.0973,-5.7418,-5.067,-4.3563,-11.3614,-6.1574,-16.6522,-16.1079,-7.322 @@ -153,8 +151,8 @@ AI,A2,CrowdRun_1920x1080p50.y4m,v10.0.0,-11.4119,-23.8988,-23.7399,-12.5714,-10. AI,A2,CrowdRun_1920x1080p50.y4m,v11.0.0,-11.378,-23.7725,-23.9643,-12.5489,-10.3153,-10.5884,-13.6451,-12.6703,-10.7327,-18.8802,-11.3764,-23.7732,-23.9618,-12.9296 AI,A2,CrowdRun_1920x1080p50.y4m,v12.0.0,-11.4153,-23.6855,-23.7723,-12.5666,-10.2832,-10.5877,-13.757,-12.7949,-10.7453,-18.8467,-11.4145,-23.6859,-23.7706,-12.9365 AI,A2,CrowdRun_1920x1080p50.y4m,v13.0.0,-11.3755,-24.024,-23.6602,-12.5433,-11.4728,-10.6604,-13.7101,-12.7537,-10.709,-19.1844,-11.3746,-24.0239,-23.6565,-12.9173 -AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,libaom-v3.12.0,-0.7959,12.1222,23.0246,0.2303,-2.6715,-4.5694,17.9937,16.9691,-3.349,3.3676,-0.7986,12.1261,23.0196,-0.0624 -AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,1.6451,8.9903,6.4418,2.0813,-1.0921,-0.7703,2.8739,2.7518,-0.8789,4.8772,1.6438,8.9898,6.4237,2.0038 +AI,A2,CrowdRun_1920x1080p50.y4m,v14.0.0,-11.385,-24.0313,-23.668,-12.5526,-11.4808,-10.6693,-13.7247,-12.772,-10.7179,-19.1932,-11.3841,-24.0312,-23.6642,-12.9266 +AI,A2,CrowdRun_1920x1080p50.y4m,v15.0.0,-11.385,-24.0313,-23.668,-12.5526,-11.4808,-10.6693,-13.7247,-12.772,-10.7179,-19.1932,-11.3841,-24.0312,-23.6642,-12.9266 AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v02.0.0,-1.5677,-1.0933,-4.2228,-1.8652,-2.1592,-2.2953,-3.0158,-3.0275,-2.3106,-0.0512,-1.5692,-1.0943,-4.2914,-1.8952 AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v03.0.0,-3.8571,-2.4082,-6.3903,-4.2113,-4.6535,-4.0578,-4.0394,-4.5291,-4.2301,-1.8078,-3.8598,-2.3963,-6.4478,-4.1974 AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v04.0.0,-6.6453,-3.8263,-10.7633,-7.0086,-7.4541,-7.2405,-6.1062,-6.3288,-6.7967,-4.2054,-6.6469,-3.7888,-10.7897,-6.955 @@ -167,8 +165,8 @@ AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v10.0.0,-14.3517,-16.64 AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v11.0.0,-14.208,-16.4469,-24.3213,-15.2108,-17.0268,-14.0832,-19.7636,-19.5797,-14.8048,-15.1338,-14.2077,-16.4494,-24.37,-15.0569 AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v12.0.0,-14.0719,-17.2542,-23.8439,-15.0907,-16.6512,-13.8494,-19.1997,-19.1146,-14.6411,-14.7818,-14.0717,-17.2569,-23.9027,-14.9702 AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v13.0.0,-14.3507,-19.7563,-24.625,-15.5035,-11.1441,-14.1207,-20.1245,-20.1067,-15.1222,-15.7882,-14.3498,-19.77,-24.6765,-15.4489 -AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,2.4443,-1.4285,-1.053,2.1502,-0.6493,1.4185,-10.3589,-12.6372,-0.0518,0.8087,2.4443,-1.4285,-1.0529,2.0175 -AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,1.1331,-2.5505,-2.7272,0.7745,0.1573,0.7859,1.2074,-0.1192,0.2618,-0.5688,1.133,-2.553,-2.726,0.7557 +AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v14.0.0,-14.4917,-19.8709,-24.8113,-15.6459,-11.1848,-14.229,-20.3143,-20.3068,-15.2479,-15.9356,-14.4908,-19.8851,-24.8632,-15.5909 +AI,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v15.0.0,-14.4917,-19.8709,-24.8113,-15.6459,-11.1848,-14.229,-20.3143,-20.3068,-15.2479,-15.9356,-14.4908,-19.8851,-24.8632,-15.5909 AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v02.0.0,-4.0454,-9.0496,-9.9101,-4.594,-3.618,-3.9805,-4.5632,-4.4858,-3.6483,-7.2462,-4.0452,-9.0411,-9.9099,-4.5601 AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v03.0.0,-6.4142,-11.5639,-14.2634,-7.0754,-5.0815,-5.7882,-5.5474,-5.4994,-5.7596,-9.4481,-6.415,-11.5436,-14.246,-7.019 AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v04.0.0,-9.2491,-16.7673,-19.1023,-10.1445,-7.3457,-8.2777,-9.2797,-8.7989,-8.2985,-12.8153,-9.2497,-16.7593,-19.0663,-10.092 @@ -181,8 +179,8 @@ AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v10.0.0,-15.4479,-34.9555,-22.2243 AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v11.0.0,-15.3402,-35.0061,-22.1487,-16.7182,-13.1135,-13.7043,-18.537,-17.3285,-14.3945,-21.4111,-15.3414,-35.0034,-22.1228,-16.611 AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v12.0.0,-15.3123,-34.6905,-22.2297,-16.6792,-12.9649,-13.5723,-18.5588,-17.4145,-14.3369,-21.242,-15.3127,-34.6811,-22.2206,-16.572 AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v13.0.0,-15.3678,-35.4744,-22.2382,-16.7729,-15.2618,-13.7434,-18.6617,-17.4457,-14.4093,-21.5769,-15.3693,-35.4633,-22.228,-16.6622 -AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,libaom-v3.12.0,0.0268,-1.3371,-0.9924,-0.0993,-0.0608,0.0618,0.0579,-0.5431,-0.3558,-0.5654,0.0289,-1.3113,-0.9819,-0.105 -AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,libaom-v3.12.0-unconstrained,0.3716,-3.2303,-2.0658,0.0409,0.6766,0.6129,-0.1042,1.4659,0.1379,-1.0909,0.3763,-3.2282,-2.0856,0.0999 +AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v14.0.0,-15.4118,-35.5154,-22.2865,-16.8171,-15.2892,-13.7772,-18.719,-17.5012,-14.4413,-21.622,-15.4133,-35.5044,-22.2763,-16.7067 +AI,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v15.0.0,-15.4118,-35.5154,-22.2865,-16.8171,-15.2892,-13.7772,-18.719,-17.5012,-14.4413,-21.622,-15.4133,-35.5044,-22.2763,-16.7067 AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v02.0.0,-5.5231,-13.953,-12.9213,-6.3987,-4.2813,-5.112,-5.0919,-4.905,-5.156,-9.9366,-5.472,-13.8336,-12.8732,-6.1981 AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v03.0.0,-7.989,-17.9567,-14.4522,-8.9035,-5.4915,-6.7905,-6.7867,-6.6222,-7.1907,-12.7944,-7.9309,-17.8128,-14.3977,-8.6683 AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v04.0.0,-10.5477,-22.6049,-19.9937,-11.7662,-7.4542,-9.0145,-9.3018,-9.003,-9.5164,-16.6481,-10.4711,-22.484,-19.8797,-11.4708 @@ -195,8 +193,8 @@ AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v10.0.0,-16.6173,-30.9 AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v11.0.0,-16.5749,-30.5346,-24.4937,-17.8269,-13.9733,-15.0458,-20.3838,-19.8913,-15.6501,-23.3156,-16.4337,-30.436,-24.3377,-17.4451 AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v12.0.0,-16.5821,-30.6308,-24.3976,-17.8346,-13.9563,-15.0241,-20.1147,-19.6535,-15.6571,-23.3188,-16.4419,-30.5009,-24.2593,-17.4513 AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v13.0.0,-16.6455,-30.9659,-24.3373,-17.9098,-17.0899,-15.1316,-20.3263,-19.7881,-15.6855,-23.3188,-16.5049,-30.8457,-24.2199,-17.5252 -AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,libaom-v3.12.0,0.3421,-2.7617,-4.5708,-0.1163,-1.6427,0.0106,-5.5058,-5.2359,-1.5081,-0.6828,0.3416,-2.7622,-4.574,0.017 -AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,libaom-v3.12.0-unconstrained,0.5472,-3.5134,-4.258,-0.0462,0.2371,0.8576,-0.0995,-0.161,-0.278,-2.0865,0.5469,-3.5119,-4.2558,0.0558 +AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v14.0.0,-16.6656,-30.9814,-24.3531,-17.9291,-17.1074,-15.1525,-20.3576,-19.8249,-15.7053,-23.3372,-16.525,-30.8618,-24.2367,-17.5448 +AI,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v15.0.0,-16.6656,-30.9814,-24.3531,-17.9291,-17.1074,-15.1525,-20.3576,-19.8249,-15.7053,-23.3372,-16.525,-30.8618,-24.2367,-17.5448 AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v02.0.0,-7.4711,-17.1457,-17.4978,-8.8161,-6.929,-7.1566,-7.2098,-7.286,-8.1236,-14.7692,-7.4715,-17.1242,-17.4704,-8.5848 AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v03.0.0,-11.5242,-23.2219,-26.193,-13.3819,-9.6624,-10.245,-10.2276,-10.366,-11.9699,-20.177,-11.5246,-23.2031,-26.1889,-13.0269 AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v04.0.0,-15.1351,-27.7844,-32.0904,-17.2429,-12.9452,-13.6656,-13.3114,-13.3614,-15.589,-23.817,-15.1352,-27.7652,-32.0774,-16.8022 @@ -209,8 +207,8 @@ AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v10.0.0,-25.0535,-43.1596,-43.6 AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v11.0.0,-24.8156,-45.8693,-45.6325,-27.8374,-22.2319,-22.6303,-26.932,-26.0097,-25.6714,-38.1733,-24.8132,-45.8569,-45.617,-27.2117 AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v12.0.0,-25.236,-46.1413,-45.645,-28.2146,-22.5504,-22.992,-27.5652,-26.4903,-26.0491,-38.5395,-25.2352,-46.137,-45.6215,-27.6089 AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v13.0.0,-25.7433,-48.2213,-46.05,-28.7898,-27.2596,-23.4547,-28.0393,-27.0766,-26.486,-40.042,-25.7432,-48.1991,-46.0197,-28.1883 -AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,libaom-v3.12.0,0.6507,0.7212,0.9873,0.6746,-0.4616,-0.6028,-3.9435,-2.5321,3.1887,2.0136,0.6496,0.7178,0.983,0.7254 -AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,0.8004,-1.4658,-1.8609,0.5849,-0.2878,-0.2929,-0.6262,0.1945,0.8793,0.4073,0.8002,-1.4663,-1.8585,0.6174 +AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v14.0.0,-25.8543,-48.3107,-46.1255,-28.8963,-27.34,-23.5499,-28.1664,-27.201,-26.5756,-40.1403,-25.8541,-48.2886,-46.0953,-28.2965 +AI,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v15.0.0,-25.8543,-48.3107,-46.1255,-28.8963,-27.34,-23.5499,-28.1664,-27.201,-26.5756,-40.1403,-25.8541,-48.2886,-46.0953,-28.2965 AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v02.0.0,-3.7545,-11.0618,-14.1128,-4.5637,-5.7263,-5.8635,-4.7968,-4.5923,-4.4318,-7.1724,-3.7543,-11.0478,-14.1027,-4.3861 AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v03.0.0,-6.4444,-13.968,-16.2101,-7.2364,-7.0904,-7.853,-5.9658,-5.6394,-6.1534,-9.8617,-6.4436,-13.9571,-16.2057,-7.0906 AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v04.0.0,-9.2558,-18.3389,-22.9901,-10.3141,-10.1527,-10.9349,-9.8184,-9.1851,-9.273,-13.8157,-9.2551,-18.3326,-22.9841,-10.1109 @@ -223,8 +221,8 @@ AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v10.0.0,-15.5218,-26.3122,-28.6653,-16 AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v11.0.0,-15.5012,-26.034,-28.3792,-16.6257,-15.3739,-16.1793,-20.1628,-19.301,-16.0608,-21.5034,-15.5023,-26.0339,-28.3697,-16.4588 AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v12.0.0,-15.5016,-25.7532,-28.2777,-16.6039,-15.3876,-16.1773,-20.189,-19.3854,-16.078,-21.4001,-15.5021,-25.7507,-28.2675,-16.4416 AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v13.0.0,-15.5076,-26.1103,-28.0843,-16.6216,-17.993,-16.2642,-20.386,-19.4778,-16.0798,-21.5173,-15.5075,-26.1092,-28.0773,-16.456 -AI,A2,OldTownCross_1920x1080p50.y4m,libaom-v3.12.0,3.8448,11.5022,9.5034,4.5376,4.534,-3.0882,-2.5353,-2.01,12.3619,11.2497,3.8444,11.5022,9.5038,5.5002 -AI,A2,OldTownCross_1920x1080p50.y4m,libaom-v3.12.0-unconstrained,2.4772,6.0677,2.9779,2.6856,2.7922,0.8411,0.2157,0.1538,5.0645,6.557,2.4767,6.0686,2.9746,2.8603 +AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v14.0.0,-15.5184,-26.1196,-28.0951,-16.6326,-18.0028,-16.2753,-20.41,-19.4997,-16.0919,-21.5293,-15.5184,-26.1185,-28.0881,-16.4673 +AI,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v15.0.0,-15.5184,-26.1196,-28.0951,-16.6326,-18.0028,-16.2753,-20.41,-19.4997,-16.0919,-21.5293,-15.5184,-26.1185,-28.0881,-16.4673 AI,A2,OldTownCross_1920x1080p50.y4m,v02.0.0,-1.1765,-19.6958,-14.0662,-2.2824,-1.044,-1.0688,-1.4865,-1.4957,0.1871,-5.9878,-1.1765,-19.6963,-14.0727,-2.3255 AI,A2,OldTownCross_1920x1080p50.y4m,v03.0.0,-2.4084,-23.9138,-16.5863,-3.6742,-2.2455,-2.2671,-2.6376,-2.3647,-0.9698,-7.8082,-2.408,-23.9169,-16.5923,-3.6858 AI,A2,OldTownCross_1920x1080p50.y4m,v04.0.0,-5.0446,-29.0226,-20.8443,-6.4517,-4.6681,-5.0331,-4.9224,-4.4963,-3.5222,-11.6367,-5.045,-29.0177,-20.8476,-6.541 @@ -237,8 +235,8 @@ AI,A2,OldTownCross_1920x1080p50.y4m,v10.0.0,-13.4922,-39.3572,-36.4146,-15.3555, AI,A2,OldTownCross_1920x1080p50.y4m,v11.0.0,-13.4724,-40.2068,-36.7051,-15.4192,-12.5624,-12.118,-14.4878,-13.6063,-13.9595,-25.6202,-13.472,-40.2095,-36.7073,-15.4658 AI,A2,OldTownCross_1920x1080p50.y4m,v12.0.0,-13.637,-40.6916,-36.6516,-15.5814,-12.6837,-12.2154,-14.9198,-14.0123,-14.1053,-25.8283,-13.6363,-40.6937,-36.6518,-15.6315 AI,A2,OldTownCross_1920x1080p50.y4m,v13.0.0,-13.5724,-39.7008,-36.6681,-15.4684,-13.2443,-12.3156,-14.8966,-14.0277,-14.0758,-25.3639,-13.5721,-39.7033,-36.6672,-15.5548 -AI,A2,PedestrianArea_1920x1080p25.y4m,libaom-v3.12.0,3.8011,5.5483,8.9455,4.2791,0.2657,0.3746,-4.8604,-3.3411,7.0157,25.657,3.7777,5.53,8.8761,4.2727 -AI,A2,PedestrianArea_1920x1080p25.y4m,libaom-v3.12.0-unconstrained,2.0232,1.2282,2.9656,2.0392,0.7421,0.7446,0.3551,1.046,2.9153,9.1927,2.0127,1.212,2.9236,2.0053 +AI,A2,OldTownCross_1920x1080p50.y4m,v14.0.0,-13.6001,-39.7219,-36.6847,-15.4957,-13.2654,-12.3451,-14.9471,-14.0784,-14.0996,-25.3944,-13.5998,-39.7244,-36.6838,-15.5839 +AI,A2,OldTownCross_1920x1080p50.y4m,v15.0.0,-13.6001,-39.7219,-36.6847,-15.4957,-13.2654,-12.3451,-14.9471,-14.0784,-14.0996,-25.3944,-13.5998,-39.7244,-36.6838,-15.5839 AI,A2,PedestrianArea_1920x1080p25.y4m,v02.0.0,-3.0935,-6.0402,-4.3292,-3.3504,-3.3201,-3.9876,-5.3201,-5.0682,-1.426,0.7232,-3.1088,-6.0751,-4.3802,-3.4585 AI,A2,PedestrianArea_1920x1080p25.y4m,v03.0.0,-5.3397,-7.7224,-6.8594,-5.5944,-5.0128,-5.9501,-6.3757,-6.1943,-3.4217,-3.5125,-5.3568,-7.7535,-6.9184,-5.6962 AI,A2,PedestrianArea_1920x1080p25.y4m,v04.0.0,-8.8691,-16.4285,-14.6611,-9.705,-8.2803,-9.5434,-10.2095,-9.7804,-7.1386,-8.2496,-8.8839,-16.4789,-14.7185,-9.9596 @@ -251,8 +249,8 @@ AI,A2,PedestrianArea_1920x1080p25.y4m,v10.0.0,-17.6913,-29.3991,-23.3368,-18.759 AI,A2,PedestrianArea_1920x1080p25.y4m,v11.0.0,-17.4768,-29.8313,-23.4834,-18.6007,-15.9049,-16.909,-19.4221,-19.0538,-16.8553,-22.8412,-17.4853,-29.8821,-23.5238,-18.9211 AI,A2,PedestrianArea_1920x1080p25.y4m,v12.0.0,-17.4091,-29.6195,-23.4737,-18.527,-15.662,-16.7023,-19.6942,-19.2579,-16.7597,-22.8607,-17.4186,-29.6559,-23.5013,-18.8432 AI,A2,PedestrianArea_1920x1080p25.y4m,v13.0.0,-17.5014,-29.6559,-23.4707,-18.6106,-19.983,-16.7991,-19.7607,-19.2469,-16.8298,-23.1606,-17.509,-29.6718,-23.5046,-18.9293 -AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,-0.4512,-0.8599,-0.9522,-0.4992,-0.1675,-0.3392,-3.3255,-3.8133,-0.6169,-0.9233,-0.4385,-0.8341,-0.9286,-0.5114 -AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.2303,-1.7485,-1.809,0.0199,0.4661,0.4399,0.5512,0.2933,0.0095,-2.1724,0.2388,-1.6934,-1.744,-0.0467 +AI,A2,PedestrianArea_1920x1080p25.y4m,v14.0.0,-17.5624,-29.711,-23.5236,-18.6708,-20.0345,-16.8544,-19.8434,-19.3255,-16.879,-23.2181,-17.57,-29.7267,-23.5574,-18.9893 +AI,A2,PedestrianArea_1920x1080p25.y4m,v15.0.0,-17.5624,-29.711,-23.5236,-18.6708,-20.0345,-16.8544,-19.8434,-19.3255,-16.879,-23.2181,-17.57,-29.7267,-23.5574,-18.9893 AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v02.0.0,-5.5969,-13.8133,-10.126,-6.2579,-5.4102,-5.7176,-5.649,-5.7117,-5.5733,-7.217,-5.5662,-13.8755,-10.1235,-6.3979 AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v03.0.0,-8.713,-16.6061,-16.3531,-9.5486,-7.6531,-8.2525,-7.2926,-7.7182,-8.2259,-12.5118,-8.6777,-16.6816,-16.5318,-9.7197 AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v04.0.0,-12.3302,-21.8952,-22.4438,-13.4074,-10.9349,-11.6459,-12.3559,-12.1253,-11.8412,-17.2593,-12.2807,-22.0011,-22.5634,-13.7083 @@ -265,8 +263,8 @@ AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v10.0.0,-20.9916,-38.888,-34.0333 AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v11.0.0,-20.8769,-38.9127,-34.4813,-22.6784,-18.4813,-19.2272,-24.8455,-23.6275,-20.0348,-29.2611,-20.8357,-39.0312,-34.6863,-23.1467 AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v12.0.0,-20.7439,-38.9206,-33.6242,-22.5084,-18.2805,-19.0213,-24.628,-23.4804,-19.8802,-28.924,-20.7153,-39.0279,-33.7861,-22.9716 AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v13.0.0,-20.7162,-38.7242,-33.4001,-22.448,-22.6213,-18.9716,-24.9169,-23.5937,-19.83,-28.2458,-20.6752,-38.8685,-33.5711,-22.9157 -AI,A2,Riverbed_1920x1080p25.y4m,libaom-v3.12.0,2.1125,1.6598,1.7492,2.1617,0.3739,0.4796,-2.9751,-3.4693,4.3403,4.9018,2.1126,1.6578,1.7514,2.174 -AI,A2,Riverbed_1920x1080p25.y4m,libaom-v3.12.0-unconstrained,1.0094,0.1245,0.6575,0.9773,0.4496,0.3268,2.1277,0.8787,1.8268,3.3752,1.0093,0.1247,0.6542,0.9795 +AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v14.0.0,-20.7689,-38.7652,-33.4424,-22.4995,-22.6685,-19.0231,-24.9946,-23.6698,-19.8788,-28.295,-20.7281,-38.9095,-33.6131,-22.9675 +AI,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v15.0.0,-20.7689,-38.7652,-33.4424,-22.4995,-22.6685,-19.0231,-24.9946,-23.6698,-19.8788,-28.295,-20.7281,-38.9095,-33.6131,-22.9675 AI,A2,Riverbed_1920x1080p25.y4m,v02.0.0,-4.18,-8.7954,-20.3428,-5.0847,-3.0253,-4.0723,-5.4889,-5.0754,-2.2335,-4.6081,-4.1795,-8.7959,-20.3532,-4.8828 AI,A2,Riverbed_1920x1080p25.y4m,v03.0.0,-6.0255,-13.535,-24.7779,-7.1941,-4.0259,-5.5506,-6.6206,-6.009,-4.0041,-8.0318,-6.0261,-13.534,-24.7874,-6.9275 AI,A2,Riverbed_1920x1080p25.y4m,v04.0.0,-8.2558,-19.3246,-34.0261,-9.9417,-5.6936,-7.613,-9.1019,-8.2646,-6.0759,-11.6514,-8.2558,-19.3227,-34.0304,-9.6279 @@ -279,8 +277,8 @@ AI,A2,Riverbed_1920x1080p25.y4m,v10.0.0,-15.0193,-23.6049,-43.8854,-16.7523,-12. AI,A2,Riverbed_1920x1080p25.y4m,v11.0.0,-14.8729,-23.5858,-42.5503,-16.5657,-12.576,-13.5335,-15.9013,-15.1699,-14.13,-19.1873,-14.8728,-23.5882,-42.5442,-16.212 AI,A2,Riverbed_1920x1080p25.y4m,v12.0.0,-14.8952,-23.3244,-42.2182,-16.5492,-12.5438,-13.5031,-16.0489,-15.2921,-14.1245,-19.08,-14.8949,-23.3244,-42.2133,-16.2095 AI,A2,Riverbed_1920x1080p25.y4m,v13.0.0,-15.1106,-23.8502,-42.4426,-16.7759,-15.5244,-13.7408,-16.4056,-15.5586,-14.2979,-19.3639,-15.1105,-23.8521,-42.4405,-16.4489 -AI,A2,RushFieldCuts_1920x1080_2997.y4m,libaom-v3.12.0,-0.0512,3.0749,3.7985,0.2874,-0.4523,-2.3679,-6.7148,-1.1947,3.9433,3.0211,-0.0568,3.0799,3.8008,0.5732 -AI,A2,RushFieldCuts_1920x1080_2997.y4m,libaom-v3.12.0-unconstrained,0.5565,0.3498,0.957,0.5653,0.1096,-0.5771,0.3371,0.1629,1.6953,2.2332,0.5569,0.3524,0.9603,0.6719 +AI,A2,Riverbed_1920x1080p25.y4m,v14.0.0,-15.139,-23.8702,-42.4555,-16.8033,-15.5464,-13.7669,-16.4476,-15.5995,-14.3207,-19.3908,-15.1389,-23.872,-42.4535,-16.477 +AI,A2,Riverbed_1920x1080p25.y4m,v15.0.0,-15.139,-23.8702,-42.4555,-16.8033,-15.5464,-13.7669,-16.4476,-15.5995,-14.3207,-19.3908,-15.1389,-23.872,-42.4535,-16.477 AI,A2,RushFieldCuts_1920x1080_2997.y4m,v02.0.0,-1.4102,-5.7373,-9.7354,-2.0089,-2.0835,-2.0887,-1.7338,-1.801,-0.7749,-2.761,-1.4115,-5.7383,-9.7398,-1.8751 AI,A2,RushFieldCuts_1920x1080_2997.y4m,v03.0.0,-2.6556,-8.8771,-10.8072,-3.3496,-3.2817,-3.2476,-4.8323,-3.8307,-1.9485,-5.7842,-2.6576,-8.882,-10.8117,-3.1928 AI,A2,RushFieldCuts_1920x1080_2997.y4m,v04.0.0,-4.6877,-14.3672,-14.9357,-5.631,-5.411,-5.4774,-6.6562,-5.7732,-4.148,-9.1151,-4.6896,-14.3684,-14.9382,-5.476 @@ -293,8 +291,8 @@ AI,A2,RushFieldCuts_1920x1080_2997.y4m,v10.0.0,-9.9695,-25.8337,-20.2944,-11.275 AI,A2,RushFieldCuts_1920x1080_2997.y4m,v11.0.0,-9.8743,-25.5917,-20.5588,-11.1864,-10.1335,-9.7576,-12.5244,-12.122,-10.5018,-18.4493,-9.8776,-25.5906,-20.5622,-11.1924 AI,A2,RushFieldCuts_1920x1080_2997.y4m,v12.0.0,-9.9188,-25.511,-20.4272,-11.2144,-10.1816,-9.8108,-12.6599,-12.2302,-10.5541,-18.5137,-9.922,-25.5105,-20.4297,-11.2258 AI,A2,RushFieldCuts_1920x1080_2997.y4m,v13.0.0,-9.8568,-25.9784,-20.8109,-11.2048,-9.5439,-9.8716,-12.6674,-12.2551,-10.5099,-18.5878,-9.86,-25.9793,-20.8143,-11.2049 -AI,A2,Skater227_1920x1080_30fps.y4m,libaom-v3.12.0,-0.5765,-1.8784,-1.908,-0.7675,0.1021,-0.168,-6.861,-7.3038,-0.559,-2.0846,-0.6098,-1.8737,-1.851,-0.7486 -AI,A2,Skater227_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,0.13,-2.637,-2.8366,-0.2961,0.8764,0.7171,1.2,0.528,-0.0799,-2.3234,0.1047,-2.644,-2.8499,-0.281 +AI,A2,RushFieldCuts_1920x1080_2997.y4m,v14.0.0,-9.8699,-25.9893,-20.822,-11.2176,-9.5538,-9.8836,-12.6892,-12.276,-10.5221,-18.5998,-9.8732,-25.9902,-20.8255,-11.2179 +AI,A2,RushFieldCuts_1920x1080_2997.y4m,v15.0.0,-9.8699,-25.9893,-20.822,-11.2176,-9.5538,-9.8836,-12.6892,-12.276,-10.5221,-18.5998,-9.8732,-25.9902,-20.8255,-11.2179 AI,A2,Skater227_1920x1080_30fps.y4m,v02.0.0,-7.0483,-6.7064,-11.379,-7.3391,-5.9377,-6.528,-8.7517,-8.7125,-7.0078,-8.8512,-7.2349,-6.7679,-11.5145,-7.4781 AI,A2,Skater227_1920x1080_30fps.y4m,v03.0.0,-10.7438,-8.5502,-15.0677,-10.8991,-9.1884,-9.9587,-9.3864,-10.1415,-10.3447,-12.4657,-10.865,-8.5877,-15.1225,-10.9771 AI,A2,Skater227_1920x1080_30fps.y4m,v04.0.0,-13.1648,-15.4646,-20.5479,-13.8903,-11.1922,-12.1516,-12.6578,-12.8827,-12.891,-15.6635,-13.295,-15.5641,-20.6098,-13.8535 @@ -307,8 +305,8 @@ AI,A2,Skater227_1920x1080_30fps.y4m,v10.0.0,-21.3922,-22.6126,-25.1583,-21.7592, AI,A2,Skater227_1920x1080_30fps.y4m,v11.0.0,-21.2413,-23.5848,-27.0782,-21.8883,-20.0849,-20.7266,-23.0092,-22.9562,-21.2858,-24.7669,-21.3368,-23.5629,-27.1392,-21.9792 AI,A2,Skater227_1920x1080_30fps.y4m,v12.0.0,-21.0616,-24.0152,-26.6743,-21.736,-19.8463,-20.5108,-22.6789,-22.6572,-21.1051,-24.5757,-21.1495,-24.0248,-26.7544,-21.8277 AI,A2,Skater227_1920x1080_30fps.y4m,v13.0.0,-21.5045,-25.4568,-27.6217,-22.2871,-27.5699,-20.8943,-23.5939,-23.3568,-21.617,-24.8449,-21.6082,-25.439,-27.7253,-22.3867 -AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,libaom-v3.12.0,-0.2883,-0.2894,-0.9115,-0.3044,-0.289,-0.4194,-4.0622,-3.5193,-0.7,-0.4681,-0.2883,-0.2879,-0.9084,-0.2752 -AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,libaom-v3.12.0-unconstrained,0.291,-0.1942,-0.9726,0.2537,-0.0241,0.0296,3.9526,1.7502,0.1083,0.1599,0.2911,-0.196,-0.9743,0.2719 +AI,A2,Skater227_1920x1080_30fps.y4m,v14.0.0,-21.6677,-25.6071,-27.7607,-22.4475,-27.6955,-21.0384,-23.8127,-23.5685,-21.7612,-25.0006,-21.7693,-25.5896,-27.8638,-22.5456 +AI,A2,Skater227_1920x1080_30fps.y4m,v15.0.0,-21.6677,-25.6071,-27.7607,-22.4475,-27.6955,-21.0384,-23.8127,-23.5685,-21.7612,-25.0006,-21.7693,-25.5896,-27.8638,-22.5456 AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v02.0.0,-2.2538,-38.7356,-47.5418,-5.4442,-2.2568,-2.2982,-2.397,-2.2802,-3.5279,-12.5301,-2.2529,-38.7414,-47.5467,-4.1361 AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v03.0.0,-3.778,-44.5677,-51.8792,-7.3464,-2.5642,-3.2411,-3.5604,-2.9817,-4.2903,-16.8458,-3.7778,-44.5319,-51.8777,-5.7766 AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v04.0.0,-6.0643,-47.706,-55.865,-9.8081,-4.592,-5.5527,-5.6529,-5.1571,-6.3645,-20.2348,-6.0644,-47.6496,-55.8643,-8.2936 @@ -321,8 +319,8 @@ AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v10.0.0,-1 AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v11.0.0,-11.635,-55.8032,-74.4755,-16.5723,-9.7877,-10.4565,-14.0446,-13.5031,-12.4728,-30.2718,-11.6345,-55.7625,-74.452,-14.7354 AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v12.0.0,-11.6229,-55.6925,-74.3854,-16.5456,-9.7437,-10.4063,-14.0768,-13.5018,-12.4357,-30.1423,-11.6222,-55.6665,-74.3728,-14.7138 AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v13.0.0,-11.6186,-55.4932,-74.4889,-16.5289,-11.6637,-10.5135,-14.1793,-13.6287,-12.4952,-30.2485,-11.6187,-55.4803,-74.4666,-14.7169 -AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,libaom-v3.12.0,0.2978,-0.3756,0.1041,0.2676,-0.0845,-0.3775,-4.3682,-2.574,3.416,0.7283,0.2992,-0.3861,0.0885,0.2919 -AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,0.2595,-0.5915,-1.1368,0.1964,0.1382,-0.0945,-3.6914,-2.2972,0.992,0.2474,0.2692,-0.6309,-1.1421,0.2041 +AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v14.0.0,-11.6456,-55.5161,-74.4994,-16.5552,-11.681,-10.536,-14.2375,-13.6862,-12.5174,-30.2757,-11.6456,-55.5032,-74.4771,-14.7444 +AI,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v15.0.0,-11.6456,-55.5161,-74.4994,-16.5552,-11.681,-10.536,-14.2375,-13.6862,-12.5174,-30.2757,-11.6456,-55.5032,-74.4771,-14.7444 AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v02.0.0,-0.9305,-10.6189,-27.2626,-2.3119,-1.2605,-1.3181,-4.3056,-4.0383,-0.544,-2.9859,-0.9118,-10.5981,-27.3024,-1.4034 AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v03.0.0,-2.4327,-14.1933,-29.0196,-3.9347,-2.4139,-2.1489,-6.1997,-5.3247,-1.8776,-4.5703,-2.4201,-14.2258,-29.0512,-3.0106 AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v04.0.0,-4.8828,-17.575,-35.1011,-6.5891,-4.2159,-4.3169,-9.4445,-8.3555,-4.075,-7.5209,-4.8698,-17.5023,-35.1216,-5.5345 @@ -335,8 +333,8 @@ AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v10.0.0,-9.002,-23.9077,-40.5208,-1 AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v11.0.0,-8.8445,-23.9012,-40.8331,-10.8421,-9.4609,-9.1501,-17.8033,-16.9824,-10.0589,-12.7083,-8.8288,-23.7323,-40.8425,-9.5969 AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v12.0.0,-8.8813,-23.9167,-40.3364,-10.863,-9.3628,-9.0158,-18.2355,-17.325,-10.018,-12.7327,-8.8667,-23.7529,-40.3331,-9.6349 AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v13.0.0,-8.9336,-23.8614,-40.0551,-10.9228,-9.2566,-9.2017,-18.2958,-17.3058,-10.1054,-12.7931,-8.9239,-23.7059,-40.0465,-9.7028 -AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,-0.0717,-1.5872,-0.1894,-0.1654,-0.0502,0.0144,-4.1279,-3.1277,-0.2704,-0.7089,-0.0722,-1.5871,-0.1891,-0.2198 -AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-0.001,-1.5502,-2.0416,-0.1788,0.0973,0.3176,2.2872,4.0999,-0.1808,-0.838,0.0002,-1.5485,-2.0561,-0.1767 +AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v14.0.0,-8.941,-23.8656,-40.0614,-10.9302,-9.2636,-9.2107,-18.3189,-17.3256,-10.112,-12.8015,-8.9313,-23.7102,-40.0531,-9.7105 +AI,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v15.0.0,-8.941,-23.8656,-40.0614,-10.9302,-9.2636,-9.2107,-18.3189,-17.3256,-10.112,-12.8015,-8.9313,-23.7102,-40.0531,-9.7105 AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v02.0.0,-8.0686,-19.3899,-27.2698,-9.7139,-5.5074,-6.3997,-11.0501,-9.4965,-7.6363,-12.6329,-8.0658,-19.4013,-27.3268,-9.3044 AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v03.0.0,-13.6625,-23.3098,-32.896,-15.2968,-8.7056,-10.6197,-18.7598,-16.2709,-12.0082,-17.8352,-13.6606,-23.3096,-32.9383,-14.8393 AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v04.0.0,-18.8878,-32.2195,-58.7846,-22.1482,-14.1315,-16.3121,-22.971,-20.5926,-17.5402,-24.346,-18.8861,-32.1976,-58.7745,-20.9188 @@ -349,8 +347,8 @@ AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v10.0.0,-30.6789,-69.8613,-73.7882 AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v11.0.0,-30.9214,-69.9888,-73.7316,-36.2267,-25.1056,-27.1099,-36.1535,-33.8256,-30.0797,-46.9034,-30.9205,-69.945,-73.6683,-34.5563 AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v12.0.0,-31.3506,-70.2593,-73.2479,-36.5715,-24.8368,-26.8222,-36.6114,-34.4133,-30.2743,-47.124,-31.3477,-70.2153,-73.2037,-34.9506 AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v13.0.0,-31.4172,-70.2203,-73.2517,-36.6258,-30.3769,-27.0076,-36.8071,-34.5092,-30.3748,-47.1835,-31.4149,-70.1828,-73.2118,-35.0125 -AI,A2,Vertical_bees_1080x1920_2997.y4m,libaom-v3.12.0,2.0302,3.3613,5.8898,2.2924,0.2085,-0.2028,-2.235,-2.6651,5.6188,6.5013,2.0292,3.3564,5.8703,2.4219 -AI,A2,Vertical_bees_1080x1920_2997.y4m,libaom-v3.12.0-unconstrained,1.2481,0.0515,1.3249,1.182,0.9458,0.5741,1.0614,0.7014,2.0793,2.5475,1.2456,0.0503,1.3096,1.163 +AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v14.0.0,-31.4354,-70.2295,-73.2594,-36.6429,-30.3956,-27.0286,-36.834,-34.5388,-30.3977,-47.1981,-31.433,-70.192,-73.2196,-35.0301 +AI,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v15.0.0,-31.4354,-70.2295,-73.2594,-36.6429,-30.3956,-27.0286,-36.834,-34.5388,-30.3977,-47.1981,-31.433,-70.192,-73.2196,-35.0301 AI,A2,Vertical_bees_1080x1920_2997.y4m,v02.0.0,-5.9,-7.6858,-8.3383,-6.1156,-4.2806,-5.5093,-5.9024,-5.9922,-4.4283,-4.8918,-5.9029,-7.679,-8.3646,-6.1747 AI,A2,Vertical_bees_1080x1920_2997.y4m,v03.0.0,-8.7655,-10.0773,-9.3513,-8.8655,-6.5706,-8.1295,-7.3992,-7.4498,-6.8358,-7.5917,-8.7682,-10.0719,-9.1922,-8.9307 AI,A2,Vertical_bees_1080x1920_2997.y4m,v04.0.0,-10.8528,-12.2284,-14.0925,-11.0903,-8.1457,-9.9189,-10.0804,-9.7453,-8.8149,-10.035,-10.8558,-12.2244,-14.0645,-11.1589 @@ -363,8 +361,8 @@ AI,A2,Vertical_bees_1080x1920_2997.y4m,v10.0.0,-18.4223,-18.7896,-18.331,-18.446 AI,A2,Vertical_bees_1080x1920_2997.y4m,v11.0.0,-18.4236,-19.0985,-18.2044,-18.4604,-14.8438,-16.2143,-18.8174,-18.501,-16.4991,-18.6711,-18.4255,-19.0917,-17.9374,-18.5106 AI,A2,Vertical_bees_1080x1920_2997.y4m,v12.0.0,-18.4245,-18.9678,-18.1446,-18.4513,-14.9512,-16.2645,-18.9149,-18.6203,-16.5218,-18.7477,-18.4254,-18.9624,-17.9018,-18.4981 AI,A2,Vertical_bees_1080x1920_2997.y4m,v13.0.0,-18.4745,-19.6272,-18.5073,-18.5497,-19.6744,-16.274,-19.077,-18.7547,-16.5844,-19.2429,-18.4758,-19.6242,-18.2402,-18.6212 -AI,A2,WorldCup_1920x1080_30p.y4m,libaom-v3.12.0,3.3226,11.3335,10.3299,4.0644,-0.2168,-0.378,-6.2893,-6.0575,6.7287,20.7128,3.3108,11.3098,10.3077,4.3262 -AI,A2,WorldCup_1920x1080_30p.y4m,libaom-v3.12.0-unconstrained,1.7482,3.7336,2.666,1.9179,0.1878,0.1548,0.7736,0.3407,2.5236,6.824,1.741,3.7172,2.6574,1.9836 +AI,A2,Vertical_bees_1080x1920_2997.y4m,v14.0.0,-18.5004,-19.6506,-18.5323,-18.5756,-19.6966,-16.2974,-19.1159,-18.7932,-16.6065,-19.2691,-18.5017,-19.6476,-18.265,-18.6471 +AI,A2,Vertical_bees_1080x1920_2997.y4m,v15.0.0,-18.5004,-19.6506,-18.5323,-18.5756,-19.6966,-16.2974,-19.1159,-18.7932,-16.6065,-19.2691,-18.5017,-19.6476,-18.265,-18.6471 AI,A2,WorldCup_1920x1080_30p.y4m,v02.0.0,-5.0339,-8.1247,-9.5297,-5.4219,-6.5242,-6.8661,-6.092,-6.1359,-4.5633,-3.6484,-5.0266,-8.148,-9.5507,-5.3717 AI,A2,WorldCup_1920x1080_30p.y4m,v03.0.0,-7.9872,-10.7943,-12.4915,-8.3532,-8.5277,-9.1655,-6.5944,-7.1058,-7.1575,-6.9885,-7.9883,-10.7954,-12.5055,-8.2773 AI,A2,WorldCup_1920x1080_30p.y4m,v04.0.0,-12.4951,-17.0836,-18.4298,-13.0562,-12.3487,-13.1358,-13.2976,-12.8378,-11.5939,-11.8733,-12.4995,-17.0943,-18.4338,-13.0208 @@ -377,8 +375,8 @@ AI,A2,WorldCup_1920x1080_30p.y4m,v10.0.0,-21.9717,-30.7111,-26.6207,-22.7349,-19 AI,A2,WorldCup_1920x1080_30p.y4m,v11.0.0,-21.8854,-30.7714,-26.4084,-22.6477,-19.8306,-20.6021,-24.1391,-22.9776,-21.3063,-26.1239,-21.8901,-30.7644,-26.4082,-22.6418 AI,A2,WorldCup_1920x1080_30p.y4m,v12.0.0,-21.9033,-30.7617,-26.4285,-22.6632,-19.819,-20.5929,-24.2036,-22.9832,-21.3426,-26.3535,-21.9036,-30.7577,-26.4262,-22.6545 AI,A2,WorldCup_1920x1080_30p.y4m,v13.0.0,-21.8795,-31.5121,-26.8347,-22.7118,-23.9041,-20.553,-24.4492,-23.1586,-21.3251,-26.4571,-21.8797,-31.5152,-26.8308,-22.6938 -AI,A3,ControlledBurn_1280x720p30_420.y4m,libaom-v3.12.0,-0.0536,-2.2463,-2.8031,-0.255,-0.4467,-0.4905,-0.6824,-0.8282,-1.0124,-0.8649,-0.0534,-2.2526,-2.8103,-0.2353 -AI,A3,ControlledBurn_1280x720p30_420.y4m,libaom-v3.12.0-unconstrained,0.7335,-0.7466,-1.1582,0.5815,-0.0387,-0.0316,0.8194,0.6331,0.462,0.0823,0.7334,-0.7558,-1.1648,0.6285 +AI,A2,WorldCup_1920x1080_30p.y4m,v14.0.0,-21.923,-31.5549,-26.8799,-22.755,-23.9401,-20.5913,-24.5147,-23.2216,-21.3641,-26.5039,-21.9233,-31.5579,-26.876,-22.737 +AI,A2,WorldCup_1920x1080_30p.y4m,v15.0.0,-21.923,-31.5549,-26.8799,-22.755,-23.9401,-20.5913,-24.5147,-23.2216,-21.3641,-26.5039,-21.9233,-31.5579,-26.876,-22.737 AI,A3,ControlledBurn_1280x720p30_420.y4m,v02.0.0,-2.647,-17.5965,-21.1178,-4.1904,-3.159,-3.1064,-3.7601,-3.947,-3.6049,-7.2356,-2.6464,-17.6278,-21.1445,-3.3011 AI,A3,ControlledBurn_1280x720p30_420.y4m,v03.0.0,-4.1361,-18.7936,-23.699,-5.7165,-4.3439,-4.485,-3.5172,-3.9066,-4.6984,-8.4462,-4.1354,-18.8225,-23.7274,-4.8134 AI,A3,ControlledBurn_1280x720p30_420.y4m,v04.0.0,-6.6683,-26.0808,-28.6955,-8.6315,-6.3987,-6.7607,-6.0302,-6.3822,-7.0045,-11.8398,-6.6682,-26.0981,-28.7099,-7.5176 @@ -391,8 +389,8 @@ AI,A3,ControlledBurn_1280x720p30_420.y4m,v10.0.0,-12.0875,-36.8835,-37.8799,-14. AI,A3,ControlledBurn_1280x720p30_420.y4m,v11.0.0,-11.9516,-36.9781,-38.4532,-14.4911,-11.1557,-11.4479,-15.1491,-14.8882,-12.2758,-18.5431,-11.951,-36.9876,-38.4525,-12.9907 AI,A3,ControlledBurn_1280x720p30_420.y4m,v12.0.0,-11.9493,-36.6258,-38.3482,-14.4616,-11.1712,-11.4451,-15.3493,-15.0582,-12.2759,-18.439,-11.9489,-36.6334,-38.3456,-12.9836 AI,A3,ControlledBurn_1280x720p30_420.y4m,v13.0.0,-11.9082,-36.7831,-38.0413,-14.4181,-12.0849,-11.4129,-15.1161,-14.874,-12.256,-18.407,-11.9078,-36.7904,-38.0423,-12.9503 -AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0,0.0703,-0.9061,0.2988,0.037,-2.8406,-1.759,-2.7261,-1.9796,-0.597,-0.0807,0.0683,-0.905,0.2994,0.063 -AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.4982,-2.1817,-2.4883,0.2822,-1.0074,-0.4973,0.1067,-0.2709,-0.1159,-0.5734,0.4979,-2.1774,-2.4866,0.3398 +AI,A3,ControlledBurn_1280x720p30_420.y4m,v14.0.0,-11.9339,-36.8082,-38.0656,-14.4437,-12.1064,-11.4399,-15.1642,-14.9212,-12.2831,-18.4342,-11.9334,-36.8155,-38.0666,-12.9762 +AI,A3,ControlledBurn_1280x720p30_420.y4m,v15.0.0,-11.9339,-36.8082,-38.0656,-14.4437,-12.1064,-11.4399,-15.1642,-14.9212,-12.2831,-18.4342,-11.9334,-36.8155,-38.0666,-12.9762 AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v02.0.0,-3.1613,-12.8189,-24.789,-4.4389,-4.0967,-3.817,-3.0081,-3.2316,-4.3595,-8.3508,-3.1605,-12.8277,-24.7993,-4.0819 AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v03.0.0,-4.9682,-17.1442,-27.8556,-6.4193,-5.3732,-5.1938,-4.5453,-4.5665,-5.5971,-10.8684,-4.9667,-17.148,-27.8648,-6.0113 AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v04.0.0,-7.7748,-23.2094,-35.8326,-9.6289,-7.9634,-7.9884,-7.4403,-7.2619,-8.4801,-15.102,-7.7733,-23.2033,-35.8353,-9.1918 @@ -405,8 +403,8 @@ AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v10.0.0,-14.5635,-28.6623,-42.2078 AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v11.0.0,-14.4414,-28.7459,-42.8127,-16.2805,-13.8166,-13.9606,-19.1194,-17.9387,-14.744,-22.0561,-14.4387,-28.7501,-42.8152,-15.9416 AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v12.0.0,-14.4188,-28.806,-42.3632,-16.2444,-13.8062,-13.9051,-19.1585,-17.7906,-14.6812,-22.0225,-14.4157,-28.8042,-42.3552,-15.9073 AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v13.0.0,-14.2993,-28.8636,-41.7966,-16.1135,-15.0296,-13.7997,-18.938,-17.66,-14.5749,-21.8008,-14.2956,-28.8663,-41.798,-15.7896 -AI,A3,Johnny_1280x720_60.y4m,libaom-v3.12.0,0.0807,-2.9235,-2.7874,-0.1901,-0.2321,-0.0316,-2.8001,-2.4109,-1.027,-0.6942,0.0808,-2.9233,-2.7878,-0.2477 -AI,A3,Johnny_1280x720_60.y4m,libaom-v3.12.0-unconstrained,0.3598,-3.008,-3.2444,-0.03,0.0827,0.1993,0.8011,0.4617,0.0143,-1.0623,0.3596,-3.0072,-3.2427,-0.0307 +AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v14.0.0,-14.332,-28.8957,-41.8273,-16.1461,-15.058,-13.8367,-19.0019,-17.723,-14.6093,-21.8365,-14.3283,-28.8984,-41.8287,-15.8228 +AI,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v15.0.0,-14.332,-28.8957,-41.8273,-16.1461,-15.058,-13.8367,-19.0019,-17.723,-14.6093,-21.8365,-14.3283,-28.8984,-41.8287,-15.8228 AI,A3,Johnny_1280x720_60.y4m,v02.0.0,-4.8377,-13.4145,-10.1716,-5.6584,-5.0513,-4.6908,-5.1307,-5.2523,-5.5752,-8.757,-4.8398,-13.4228,-10.193,-5.6442 AI,A3,Johnny_1280x720_60.y4m,v03.0.0,-6.8326,-10.2233,-8.8876,-7.1523,-6.7654,-6.2742,-5.3132,-5.5311,-6.798,-8.9035,-6.8342,-10.2321,-8.909,-7.1687 AI,A3,Johnny_1280x720_60.y4m,v04.0.0,-10.8802,-18.2257,-18.242,-11.7497,-10.6173,-10.3138,-11.1761,-10.4698,-10.769,-14.3974,-10.8805,-18.2322,-18.257,-11.7256 @@ -419,8 +417,8 @@ AI,A3,Johnny_1280x720_60.y4m,v10.0.0,-21.5108,-27.5594,-26.1716,-22.1662,-20.371 AI,A3,Johnny_1280x720_60.y4m,v11.0.0,-21.4506,-27.3002,-26.8215,-22.1203,-20.3631,-20.1909,-24.8819,-23.7351,-20.7768,-24.0499,-21.4523,-27.2923,-26.8193,-22.1246 AI,A3,Johnny_1280x720_60.y4m,v12.0.0,-21.393,-27.2104,-26.7657,-22.0626,-20.2243,-19.8034,-25.041,-23.9036,-20.826,-24.0665,-21.3944,-27.1883,-26.7622,-22.065 AI,A3,Johnny_1280x720_60.y4m,v13.0.0,-21.0822,-28.2427,-26.1986,-21.8245,-20.2092,-19.7005,-24.7897,-23.6002,-20.6142,-24.052,-21.0832,-28.2412,-26.1894,-21.8267 -AI,A3,KristenAndSara_1280x720_60.y4m,libaom-v3.12.0,-0.2264,-2.2302,-1.931,-0.4142,-0.5162,-0.4226,-1.9392,-1.4304,-1.1889,-1.056,-0.2265,-2.2318,-1.9304,-0.4917 -AI,A3,KristenAndSara_1280x720_60.y4m,libaom-v3.12.0-unconstrained,0.2457,-4.2938,-3.9527,-0.2203,-0.0455,0.0568,0.3015,0.1113,-0.4943,-1.914,0.2465,-4.2922,-3.9535,-0.2654 +AI,A3,Johnny_1280x720_60.y4m,v14.0.0,-21.1725,-28.337,-26.292,-21.9153,-20.2851,-19.7845,-24.918,-23.7273,-20.7067,-24.1477,-21.1735,-28.3355,-26.2828,-21.9175 +AI,A3,Johnny_1280x720_60.y4m,v15.0.0,-21.1725,-28.337,-26.292,-21.9153,-20.2851,-19.7845,-24.918,-23.7273,-20.7067,-24.1477,-21.1735,-28.3355,-26.2828,-21.9175 AI,A3,KristenAndSara_1280x720_60.y4m,v02.0.0,-4.3527,-13.5774,-14.0494,-5.3879,-4.6735,-4.5548,-4.2277,-4.2947,-5.3295,-9.1268,-4.3523,-13.5746,-14.05,-5.3871 AI,A3,KristenAndSara_1280x720_60.y4m,v03.0.0,-6.7015,-13.4095,-14.3662,-7.4791,-6.6571,-6.5373,-5.9617,-5.6142,-6.8949,-10.9519,-6.7012,-13.4117,-14.3774,-7.4812 AI,A3,KristenAndSara_1280x720_60.y4m,v04.0.0,-10.4941,-21.3224,-24.2608,-11.8496,-9.9028,-9.8336,-10.1272,-9.6297,-10.7996,-15.6969,-10.4932,-21.3195,-24.2615,-11.8224 @@ -433,8 +431,8 @@ AI,A3,KristenAndSara_1280x720_60.y4m,v10.0.0,-21.4939,-32.5754,-32.0906,-22.7046 AI,A3,KristenAndSara_1280x720_60.y4m,v11.0.0,-21.54,-32.5513,-32.1656,-22.7457,-19.6163,-19.6798,-25.9851,-24.0178,-21.2125,-26.7082,-21.5405,-32.5296,-32.1667,-22.7817 AI,A3,KristenAndSara_1280x720_60.y4m,v12.0.0,-21.5163,-32.3914,-31.9353,-22.702,-19.6241,-19.6317,-26.1309,-24.1066,-21.1716,-26.5237,-21.5161,-32.3772,-31.9391,-22.7382 AI,A3,KristenAndSara_1280x720_60.y4m,v13.0.0,-21.2282,-33.2067,-31.6511,-22.4673,-21.8869,-19.1218,-25.7541,-23.7372,-20.812,-26.3404,-21.2279,-33.1949,-31.6541,-22.5021 -AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0,-0.2133,-0.4039,-0.1508,-0.2193,-0.1297,-0.2269,-2.5819,-5.8806,-0.5712,-0.2622,-0.2201,-0.4021,-0.1469,-0.2175 -AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,0.1844,-1.1191,-1.9388,0.0302,0.0616,0.0542,0.4769,0.5786,-0.0933,-0.7826,0.1764,-1.1185,-1.932,-0.0335 +AI,A3,KristenAndSara_1280x720_60.y4m,v14.0.0,-21.2968,-33.2726,-31.7169,-22.5357,-21.9516,-19.1902,-25.8451,-23.8279,-20.8819,-26.4109,-21.2965,-33.2608,-31.7199,-22.5706 +AI,A3,KristenAndSara_1280x720_60.y4m,v15.0.0,-21.2968,-33.2726,-31.7169,-22.5357,-21.9516,-19.1902,-25.8451,-23.8279,-20.8819,-26.4109,-21.2965,-33.2608,-31.7199,-22.5706 AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v02.0.0,-4.737,-2.8537,-9.807,-4.856,-5.0549,-5.1861,-4.94,-5.1601,-4.3309,-4.947,-4.7469,-2.8782,-9.8384,-4.8898 AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v03.0.0,-7.0165,-3.4292,-12.4693,-7.0689,-6.7868,-7.0773,-6.3599,-6.5466,-6.031,-6.7332,-7.0302,-3.4492,-12.4764,-7.0128 AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v04.0.0,-10.2627,-11.2871,-26.5435,-11.0596,-9.8789,-10.3477,-9.0017,-8.9621,-9.4109,-11.8209,-10.2724,-11.3183,-26.5726,-11.2871 @@ -447,8 +445,8 @@ AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v10.0.0,-16.9866,-14.1487,-32.3 AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v11.0.0,-16.8792,-14.3454,-32.6641,-17.4863,-15.1702,-15.8016,-18.5023,-17.6802,-15.1761,-18.9491,-16.8929,-14.3641,-32.6643,-17.6237 AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v12.0.0,-16.8692,-14.0024,-32.5659,-17.4543,-15.2289,-15.8514,-18.4389,-17.6711,-15.1741,-18.977,-16.884,-14.0334,-32.5774,-17.5842 AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v13.0.0,-16.8702,-14.3303,-32.1998,-17.4514,-18.0472,-15.9292,-18.4406,-17.6087,-15.1746,-19.2029,-16.8848,-14.3482,-32.2048,-17.6047 -AI,A3,Vidyo3_1280x720p_60fps.y4m,libaom-v3.12.0,-0.0631,-2.2475,-2.8513,-0.3092,-0.8071,-0.8513,-0.833,-1.1024,-1.1876,-1.0997,-0.0302,-2.2457,-2.8489,-0.3369 -AI,A3,Vidyo3_1280x720p_60fps.y4m,libaom-v3.12.0-unconstrained,0.5284,-1.289,-3.5319,0.2362,-1.4244,-1.4312,1.4457,1.2151,0.1152,-0.3284,0.5358,-1.2729,-3.5425,0.2403 +AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v14.0.0,-16.9262,-14.3905,-32.2482,-17.5072,-18.092,-15.9833,-18.5388,-17.7039,-15.226,-19.2615,-16.9407,-14.4084,-32.2532,-17.6613 +AI,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v15.0.0,-16.9262,-14.3905,-32.2482,-17.5072,-18.092,-15.9833,-18.5388,-17.7039,-15.226,-19.2615,-16.9407,-14.4084,-32.2532,-17.6613 AI,A3,Vidyo3_1280x720p_60fps.y4m,v02.0.0,-3.4364,-19.6259,-19.6765,-4.9303,-4.5025,-4.4138,-3.0675,-3.2332,-4.4492,-8.2954,-3.4381,-19.6677,-19.6967,-4.6314 AI,A3,Vidyo3_1280x720p_60fps.y4m,v03.0.0,-5.2284,-17.2436,-22.9147,-6.6888,-5.4479,-5.3392,-4.3423,-4.6281,-5.6544,-9.359,-5.2286,-17.1821,-22.9397,-6.398 AI,A3,Vidyo3_1280x720p_60fps.y4m,v04.0.0,-9.3218,-28.088,-26.5478,-11.0064,-9.5035,-9.4918,-9.4959,-8.9441,-9.3746,-15.5759,-9.3222,-28.1033,-26.5725,-10.6717 @@ -461,8 +459,8 @@ AI,A3,Vidyo3_1280x720p_60fps.y4m,v10.0.0,-17.9292,-32.9664,-38.7347,-19.7409,-16 AI,A3,Vidyo3_1280x720p_60fps.y4m,v11.0.0,-17.9454,-35.1878,-38.3644,-19.8004,-16.6673,-16.5957,-19.3634,-18.9472,-17.5303,-25.2567,-17.9415,-35.1079,-38.3566,-19.3904 AI,A3,Vidyo3_1280x720p_60fps.y4m,v12.0.0,-17.8342,-35.6045,-38.1839,-19.6964,-16.4676,-16.3702,-19.6152,-19.1487,-17.3264,-25.2459,-17.8317,-35.5687,-38.1806,-19.2763 AI,A3,Vidyo3_1280x720p_60fps.y4m,v13.0.0,-17.7492,-33.9054,-36.6541,-19.4496,-20.6548,-16.271,-19.6007,-19.072,-17.2265,-24.4306,-17.7456,-33.8664,-36.6396,-19.123 -AI,A3,Vidyo4_1280x720p_60fps.y4m,libaom-v3.12.0,0.1604,-2.1551,-2.9398,-0.0203,-0.3868,-0.199,-2.3736,-1.8998,-0.9653,-1.0199,0.164,-2.1545,-2.9346,-0.0799 -AI,A3,Vidyo4_1280x720p_60fps.y4m,libaom-v3.12.0-unconstrained,0.4147,-3.3847,-3.492,0.0179,0.2608,0.3384,1.2705,1.099,-0.125,-2.0305,0.4185,-3.3883,-3.4915,0.0642 +AI,A3,Vidyo3_1280x720p_60fps.y4m,v14.0.0,-17.831,-33.9799,-36.7137,-19.5299,-20.7348,-16.3579,-19.7176,-19.1863,-17.3076,-24.5131,-17.8275,-33.9409,-36.6992,-19.2044 +AI,A3,Vidyo3_1280x720p_60fps.y4m,v15.0.0,-17.831,-33.9799,-36.7137,-19.5299,-20.7348,-16.3579,-19.7176,-19.1863,-17.3076,-24.5131,-17.8275,-33.9409,-36.6992,-19.2044 AI,A3,Vidyo4_1280x720p_60fps.y4m,v02.0.0,-4.6479,-16.365,-14.4445,-5.8117,-4.1745,-4.2624,-4.7923,-4.8589,-5.2543,-9.9597,-4.6424,-16.36,-14.4743,-5.5768 AI,A3,Vidyo4_1280x720p_60fps.y4m,v03.0.0,-6.9377,-18.1294,-17.0069,-8.0798,-6.3413,-6.3907,-5.8743,-6.0054,-7.3015,-11.4482,-6.9329,-18.1321,-17.031,-7.8415 AI,A3,Vidyo4_1280x720p_60fps.y4m,v04.0.0,-10.7282,-23.9761,-21.9859,-12.0514,-9.5076,-9.7084,-11.2138,-10.4404,-10.8222,-15.5269,-10.7175,-23.9736,-21.9966,-11.7925 @@ -475,8 +473,8 @@ AI,A3,Vidyo4_1280x720p_60fps.y4m,v10.0.0,-18.6064,-31.3751,-27.1124,-19.7539,-16 AI,A3,Vidyo4_1280x720p_60fps.y4m,v11.0.0,-18.5124,-31.4905,-27.0074,-19.6681,-16.5312,-16.6927,-21.641,-19.7492,-18.0226,-23.6473,-18.5036,-31.4816,-27.0152,-19.4436 AI,A3,Vidyo4_1280x720p_60fps.y4m,v12.0.0,-18.5419,-31.0191,-27.0508,-19.668,-16.5124,-16.6725,-21.7572,-19.8399,-17.9885,-23.641,-18.534,-31.009,-27.0589,-19.4511 AI,A3,Vidyo4_1280x720p_60fps.y4m,v13.0.0,-18.3919,-31.3651,-25.5912,-19.4772,-18.4253,-16.4646,-21.1863,-19.624,-17.742,-23.2909,-18.3829,-31.3516,-25.5903,-19.2736 -AI,A3,WestWindEasy_1280x720p30_420.y4m,libaom-v3.12.0,0.0795,-1.6353,-2.4378,-0.0817,0.1234,-0.0025,-4.4164,-3.0143,-0.6967,-1.0687,0.0781,-1.6376,-2.4497,-0.0544 -AI,A3,WestWindEasy_1280x720p30_420.y4m,libaom-v3.12.0-unconstrained,0.386,-1.6394,-3.031,0.1599,0.6333,0.4788,2.398,1.5422,0.3084,-1.1196,0.3833,-1.6257,-3.0969,0.2628 +AI,A3,Vidyo4_1280x720p_60fps.y4m,v14.0.0,-18.4777,-31.443,-25.6761,-19.5626,-18.4938,-16.5399,-21.3063,-19.7428,-17.8235,-23.3759,-18.4687,-31.4295,-25.6753,-19.3594 +AI,A3,Vidyo4_1280x720p_60fps.y4m,v15.0.0,-18.4777,-31.443,-25.6761,-19.5626,-18.4938,-16.5399,-21.3063,-19.7428,-17.8235,-23.3759,-18.4687,-31.4295,-25.6753,-19.3594 AI,A3,WestWindEasy_1280x720p30_420.y4m,v02.0.0,-3.6144,-24.2758,-24.0536,-5.5264,-3.2471,-3.511,-2.0632,-2.8475,-3.9757,-9.1947,-3.6173,-24.2823,-24.0293,-4.332 AI,A3,WestWindEasy_1280x720p30_420.y4m,v03.0.0,-7.08,-29.3922,-30.3343,-9.2328,-5.3525,-5.7173,-4.1621,-4.9344,-6.58,-12.5036,-7.0836,-29.3724,-30.3113,-7.8787 AI,A3,WestWindEasy_1280x720p30_420.y4m,v04.0.0,-10.6957,-37.2701,-39.1936,-13.4446,-8.1799,-8.6427,-9.5629,-9.7064,-10.1228,-18.866,-10.6962,-37.254,-39.1845,-11.7791 @@ -489,8 +487,8 @@ AI,A3,WestWindEasy_1280x720p30_420.y4m,v10.0.0,-25.1315,-65.3321,-58.1289,-29.09 AI,A3,WestWindEasy_1280x720p30_420.y4m,v11.0.0,-25.74,-65.1888,-57.2703,-29.5794,-24.2581,-24.6102,-31.4772,-30.8161,-26.3353,-37.2977,-25.7347,-65.1762,-57.2225,-27.0705 AI,A3,WestWindEasy_1280x720p30_420.y4m,v12.0.0,-30.8963,-67.9658,-60.4103,-34.5034,-29.6808,-30.0712,-38.6967,-37.7756,-31.6243,-42.0431,-30.8945,-67.9557,-60.3776,-32.1843 AI,A3,WestWindEasy_1280x720p30_420.y4m,v13.0.0,-31.4262,-66.8548,-60.0962,-34.9463,-31.2473,-30.4504,-39.8534,-38.8639,-32.0503,-42.0158,-31.4222,-66.8685,-60.049,-32.7055 -AI,A4,BlueSky_360p25_v2.y4m,libaom-v3.12.0,0.6529,-0.0483,-1.2641,0.586,-0.8686,-0.8148,-7.1298,-5.728,6.8004,2.0428,0.653,-0.0486,-1.2636,0.5191 -AI,A4,BlueSky_360p25_v2.y4m,libaom-v3.12.0-unconstrained,0.5655,-0.8738,-0.5476,0.4858,-0.5567,-0.7633,-0.1858,-0.4137,1.8052,1.3099,0.5666,-0.8752,-0.5423,0.4081 +AI,A3,WestWindEasy_1280x720p30_420.y4m,v14.0.0,-31.4553,-66.8732,-60.118,-34.9745,-31.2725,-30.4801,-39.9029,-38.9117,-32.0786,-42.0426,-31.4513,-66.887,-60.0709,-32.7346 +AI,A3,WestWindEasy_1280x720p30_420.y4m,v15.0.0,-31.4553,-66.8732,-60.118,-34.9745,-31.2725,-30.4801,-39.9029,-38.9117,-32.0786,-42.0426,-31.4513,-66.887,-60.0709,-32.7346 AI,A4,BlueSky_360p25_v2.y4m,v02.0.0,-1.6845,-7.2012,-21.5093,-2.6816,-3.5806,-3.3669,-1.2821,-1.076,-1.2721,-5.2942,-1.6808,-7.2155,-21.5543,-2.6136 AI,A4,BlueSky_360p25_v2.y4m,v03.0.0,-5.1068,-14.3676,-29.1012,-6.4589,-8.0573,-5.8194,-2.6111,-2.2604,-2.4875,-10.5656,-5.1026,-14.3768,-29.1376,-6.463 AI,A4,BlueSky_360p25_v2.y4m,v04.0.0,-9.1554,-18.2874,-43.3775,-11.0558,-11.9831,-9.238,-4.7723,-4.3077,-5.9182,-15.8737,-9.1506,-18.2935,-43.3846,-11.0427 @@ -503,8 +501,8 @@ AI,A4,BlueSky_360p25_v2.y4m,v10.0.0,-17.0349,-39.0881,-62.7561,-20.6183,-18.0704 AI,A4,BlueSky_360p25_v2.y4m,v11.0.0,-16.8449,-39.6366,-63.1815,-20.5106,-17.8974,-15.8511,-13.7498,-13.3544,-15.3853,-31.4436,-16.8408,-39.6377,-63.1654,-20.4896 AI,A4,BlueSky_360p25_v2.y4m,v12.0.0,-16.8163,-39.0265,-62.4241,-20.387,-17.8722,-15.9045,-13.5922,-13.1915,-15.2447,-31.0204,-16.814,-39.0291,-62.4151,-20.3505 AI,A4,BlueSky_360p25_v2.y4m,v13.0.0,-16.9872,-38.7776,-62.2821,-20.5703,-18.2168,-16.0991,-14.5424,-14.1419,-15.4372,-31.4033,-16.9827,-38.7816,-62.2658,-20.5347 -AI,A4,RedKayak_360_2997.y4m,libaom-v3.12.0,-0.0419,0.0958,6.2843,0.0916,-1.1151,-1.1364,-6.3016,-4.7478,2.1458,1.8416,-0.04,0.0827,6.2913,0.077 -AI,A4,RedKayak_360_2997.y4m,libaom-v3.12.0-unconstrained,0.4686,-0.3021,-0.8926,0.4912,-0.693,-0.4377,0.0576,-1.111,0.8813,2.087,0.4665,-0.2801,-1.0965,0.4983 +AI,A4,BlueSky_360p25_v2.y4m,v14.0.0,-17.0965,-38.8429,-62.3374,-20.6745,-18.3191,-16.224,-14.7861,-14.38,-15.5635,-31.5062,-17.0921,-38.8469,-62.3211,-20.6422 +AI,A4,BlueSky_360p25_v2.y4m,v15.0.0,-17.0965,-38.8429,-62.3374,-20.6745,-18.3191,-16.224,-14.7861,-14.38,-15.5635,-31.5062,-17.0921,-38.8469,-62.3211,-20.6422 AI,A4,RedKayak_360_2997.y4m,v02.0.0,-3.9657,-19.1172,-22.6241,-5.3694,-6.9185,-7.5052,-7.2404,-6.9033,-5.9893,-7.5211,-3.9602,-19.1192,-21.7443,-4.5303 AI,A4,RedKayak_360_2997.y4m,v03.0.0,-6.2936,-21.6481,-26.4292,-7.7226,-10.0284,-9.0644,-7.7211,-7.1401,-7.1794,-10.4245,-6.2834,-21.5863,-25.7389,-6.8822 AI,A4,RedKayak_360_2997.y4m,v04.0.0,-8.2592,-22.7391,-37.4475,-10.0563,-12.0504,-10.7581,-9.9549,-9.4033,-8.8769,-12.6454,-8.2481,-22.7037,-36.1702,-8.9143 @@ -517,8 +515,8 @@ AI,A4,RedKayak_360_2997.y4m,v10.0.0,-12.6275,-45.4447,-44.4701,-15.6743,-15.261, AI,A4,RedKayak_360_2997.y4m,v11.0.0,-12.5962,-44.7452,-47.4008,-15.6729,-15.2569,-14.734,-17.1415,-16.5526,-15.4802,-23.6821,-12.5861,-44.5849,-46.4776,-13.8483 AI,A4,RedKayak_360_2997.y4m,v12.0.0,-12.6019,-45.4684,-45.3362,-15.6089,-15.2311,-14.7768,-17.6615,-16.9221,-15.5531,-23.9079,-12.5871,-45.3034,-43.8278,-13.851 AI,A4,RedKayak_360_2997.y4m,v13.0.0,-12.9815,-46.053,-43.3475,-15.8991,-15.7445,-15.416,-17.5405,-16.9577,-15.9932,-24.1161,-12.9656,-45.8251,-42.58,-14.2341 -AI,A4,SnowMountain_640x360_2997.y4m,libaom-v3.12.0,0.1417,0.974,1.5029,0.2182,-0.7895,-0.8025,-1.2929,-1.4352,3.48,1.5168,0.1417,0.9774,1.5078,0.2746 -AI,A4,SnowMountain_640x360_2997.y4m,libaom-v3.12.0-unconstrained,0.1703,15.5402,-0.376,0.4082,-0.5269,-0.3741,-0.7072,-0.9836,0.8446,1.864,0.1704,15.6055,-0.3188,0.269 +AI,A4,RedKayak_360_2997.y4m,v14.0.0,-13.1218,-46.2157,-43.614,-16.0472,-15.8532,-15.5953,-17.9171,-17.3255,-16.1692,-24.2995,-13.1059,-45.9894,-42.8536,-14.3768 +AI,A4,RedKayak_360_2997.y4m,v15.0.0,-13.1218,-46.2157,-43.614,-16.0472,-15.8532,-15.5953,-17.9171,-17.3255,-16.1692,-24.2995,-13.1059,-45.9894,-42.8536,-14.3768 AI,A4,SnowMountain_640x360_2997.y4m,v02.0.0,-4.7545,-42.3877,-58.3907,-8.3044,-6.8088,-6.2775,-5.2658,-5.107,-5.0879,-9.2006,-4.7389,-42.5071,-58.561,-5.686 AI,A4,SnowMountain_640x360_2997.y4m,v03.0.0,-8.013,-46.1122,-62.6309,-11.6153,-9.454,-8.0746,-7.8704,-7.2574,-7.7165,-12.151,-8.008,-46.2523,-62.7434,-9.0026 AI,A4,SnowMountain_640x360_2997.y4m,v04.0.0,-9.8928,-53.6411,-65.1039,-13.8763,-11.3474,-10.3822,-9.9435,-9.2101,-10.1196,-16.7479,-9.8886,-53.7482,-65.1613,-11.1169 @@ -531,8 +529,8 @@ AI,A4,SnowMountain_640x360_2997.y4m,v10.0.0,-14.0534,-66.4272,-71.6848,-18.8223, AI,A4,SnowMountain_640x360_2997.y4m,v11.0.0,-13.9999,-66.961,-75.9844,-19.1155,-14.2848,-13.6901,-18.7828,-17.3641,-16.4748,-23.755,-13.9995,-66.9822,-76.0389,-15.5664 AI,A4,SnowMountain_640x360_2997.y4m,v12.0.0,-13.9998,-66.9457,-76.4093,-19.1178,-14.2495,-13.6468,-18.8049,-17.3198,-16.4628,-23.7235,-13.9995,-66.98,-76.4772,-15.56 AI,A4,SnowMountain_640x360_2997.y4m,v13.0.0,-14.3544,-67.024,-73.1832,-19.2064,-14.7364,-14.4186,-19.5896,-17.9951,-16.9492,-23.9623,-14.3539,-67.0396,-73.194,-15.9051 -AI,A4,SpeedBag_640x360_2997.y4m,libaom-v3.12.0,1.9943,3.4958,10.3459,2.4331,-0.1253,-0.0305,-3.9636,-4.0549,6.5502,7.1257,1.9923,3.4772,10.1684,2.586 -AI,A4,SpeedBag_640x360_2997.y4m,libaom-v3.12.0-unconstrained,1.1475,0.6324,2.0475,1.1657,0.3533,0.5275,1.0375,0.3023,2.5799,2.2364,1.1359,0.646,2.0828,1.2077 +AI,A4,SnowMountain_640x360_2997.y4m,v14.0.0,-14.4278,-67.0699,-73.2303,-19.278,-14.8023,-14.5028,-19.7524,-18.1574,-17.0389,-24.0435,-14.4273,-67.0854,-73.2414,-15.9789 +AI,A4,SnowMountain_640x360_2997.y4m,v15.0.0,-14.4278,-67.0699,-73.2303,-19.278,-14.8023,-14.5028,-19.7524,-18.1574,-17.0389,-24.0435,-14.4273,-67.0854,-73.2414,-15.9789 AI,A4,SpeedBag_640x360_2997.y4m,v02.0.0,-5.6539,-7.6811,-14.1033,-6.1762,-6.5842,-4.7926,-7.353,-7.6473,-3.9874,-7.1055,-5.674,-7.6829,-13.9444,-6.1753 AI,A4,SpeedBag_640x360_2997.y4m,v03.0.0,-8.0248,-8.9391,-16.9105,-8.5136,-9.265,-6.2417,-9.4084,-9.6467,-5.7466,-8.1883,-8.0517,-8.9326,-16.7234,-8.4986 AI,A4,SpeedBag_640x360_2997.y4m,v04.0.0,-10.7499,-12.2063,-23.2968,-11.4685,-12.1277,-8.6399,-10.7436,-11.1694,-8.628,-11.7127,-10.7665,-12.125,-23.1104,-11.4713 @@ -545,8 +543,8 @@ AI,A4,SpeedBag_640x360_2997.y4m,v10.0.0,-20.3087,-26.5944,-29.82,-21.1597,-21.65 AI,A4,SpeedBag_640x360_2997.y4m,v11.0.0,-20.3897,-25.0958,-29.2073,-21.1191,-21.729,-17.4169,-22.5484,-22.1955,-19.0441,-22.7986,-20.4122,-25.0982,-29.0069,-21.3039 AI,A4,SpeedBag_640x360_2997.y4m,v12.0.0,-20.4586,-25.0613,-29.0504,-21.1667,-21.7504,-17.4828,-22.9636,-22.4902,-19.0717,-22.8332,-20.4727,-25.0373,-28.7381,-21.347 AI,A4,SpeedBag_640x360_2997.y4m,v13.0.0,-20.0707,-25.6551,-28.5436,-20.8287,-21.2887,-17.1307,-22.2813,-21.8441,-18.7515,-22.7523,-20.0939,-25.6494,-28.3646,-21.0426 -AI,A4,Stockholm_640x360_5994.y4m,libaom-v3.12.0,0.6819,-0.4407,1.0015,0.6608,-0.0741,-0.2993,-3.4259,-1.8708,4.5201,1.978,0.6816,-0.4407,1.0017,0.7024 -AI,A4,Stockholm_640x360_5994.y4m,libaom-v3.12.0-unconstrained,0.5952,-1.6456,2.4234,0.5831,-0.1398,-0.0707,-0.5769,-0.4737,1.5273,0.6119,0.5955,-1.6238,2.4071,0.5657 +AI,A4,SpeedBag_640x360_2997.y4m,v14.0.0,-20.4635,-26.0375,-28.9009,-21.2191,-21.6766,-17.5308,-22.876,-22.4186,-19.1323,-23.1764,-20.487,-26.0323,-28.7234,-21.4351 +AI,A4,SpeedBag_640x360_2997.y4m,v15.0.0,-20.4635,-26.0375,-28.9009,-21.2191,-21.6766,-17.5308,-22.876,-22.4186,-19.1323,-23.1764,-20.487,-26.0323,-28.7234,-21.4351 AI,A4,Stockholm_640x360_5994.y4m,v02.0.0,-2.8405,-23.8494,-20.7289,-4.4883,-4.3172,-4.0452,-3.0273,-2.9076,-2.6889,-10.2818,-2.8398,-23.8389,-20.7848,-3.9695 AI,A4,Stockholm_640x360_5994.y4m,v03.0.0,-4.3243,-28.1406,-23.8251,-6.1886,-6.205,-5.4386,-4.2737,-3.9228,-3.7379,-12.0789,-4.3239,-28.1554,-23.8893,-5.5862 AI,A4,Stockholm_640x360_5994.y4m,v04.0.0,-7.4856,-37.7918,-34.4765,-10.0621,-9.6914,-8.4631,-6.4328,-6.1396,-6.9804,-17.1413,-7.4841,-37.7992,-34.5145,-9.3708 @@ -559,8 +557,8 @@ AI,A4,Stockholm_640x360_5994.y4m,v10.0.0,-14.5971,-52.9461,-41.3262,-17.7374,-15 AI,A4,Stockholm_640x360_5994.y4m,v11.0.0,-14.5123,-53.1441,-41.2589,-17.7059,-15.7121,-14.4746,-16.4507,-15.6205,-15.4137,-27.4657,-14.5107,-53.135,-41.2943,-16.7805 AI,A4,Stockholm_640x360_5994.y4m,v12.0.0,-14.4501,-52.8059,-41.1814,-17.6134,-15.6848,-14.3927,-16.0108,-15.3092,-15.3414,-27.4216,-14.4478,-52.7959,-41.2107,-16.6975 AI,A4,Stockholm_640x360_5994.y4m,v13.0.0,-14.451,-53.7133,-41.2551,-17.6766,-15.676,-14.5163,-16.0747,-15.2575,-15.4444,-27.6814,-14.4483,-53.7006,-41.2875,-16.7314 -AI,A4,TouchdownPass_640x360_2997.y4m,libaom-v3.12.0,0.0523,7.8392,10.0755,0.752,-2.4037,-0.1066,-1.7248,-1.6564,4.2583,4.2125,0.0508,7.8392,10.09,0.4997 -AI,A4,TouchdownPass_640x360_2997.y4m,libaom-v3.12.0-unconstrained,0.544,4.6605,3.7153,0.9483,-1.1806,-0.0253,0.2394,-0.1157,2.2755,4.9495,0.5439,4.6893,3.7263,0.7913 +AI,A4,Stockholm_640x360_5994.y4m,v14.0.0,-14.5889,-53.8024,-41.3602,-17.8103,-15.795,-14.6756,-16.3619,-15.5389,-15.5834,-27.8243,-14.5862,-53.7898,-41.3927,-16.8689 +AI,A4,Stockholm_640x360_5994.y4m,v15.0.0,-14.5889,-53.8024,-41.3602,-17.8103,-15.795,-14.6756,-16.3619,-15.5389,-15.5834,-27.8243,-14.5862,-53.7898,-41.3927,-16.8689 AI,A4,TouchdownPass_640x360_2997.y4m,v02.0.0,-1.893,-16.7964,-7.1986,-2.958,-2.6549,-1.7858,-2.5092,-2.5457,-0.7155,-7.4016,-1.8888,-16.7497,-7.1505,-2.4101 AI,A4,TouchdownPass_640x360_2997.y4m,v03.0.0,-3.9216,-21.2586,-12.8171,-5.2993,-4.3417,-3.0712,-4.9481,-4.0714,-2.2589,-10.092,-3.9174,-21.2753,-12.7863,-4.5976 AI,A4,TouchdownPass_640x360_2997.y4m,v04.0.0,-6.0197,-21.5161,-17.7313,-7.4252,-6.5771,-5.1735,-6.3356,-5.7165,-4.2401,-11.9243,-6.0148,-21.498,-17.7096,-6.7125 @@ -573,8 +571,8 @@ AI,A4,TouchdownPass_640x360_2997.y4m,v10.0.0,-12.7328,-42.8142,-21.9667,-15.2281 AI,A4,TouchdownPass_640x360_2997.y4m,v11.0.0,-12.7713,-43.9298,-22.2469,-15.1454,-11.3194,-11.3248,-17.8737,-15.8219,-12.8632,-24.7704,-12.763,-43.9293,-22.2134,-13.8938 AI,A4,TouchdownPass_640x360_2997.y4m,v12.0.0,-12.7322,-42.9739,-22.3347,-15.0939,-11.3816,-11.4428,-17.7581,-15.8191,-12.8952,-24.6364,-12.7226,-42.9945,-22.2687,-13.8428 AI,A4,TouchdownPass_640x360_2997.y4m,v13.0.0,-12.7922,-42.497,-21.4785,-15.2204,-11.3851,-11.4573,-17.5922,-15.7717,-13.0043,-24.9461,-12.7856,-42.5051,-21.4418,-13.9252 -AI,A5,FourPeople_480x270_60.y4m,libaom-v3.12.0,-0.3125,-0.7236,-1.12,-0.365,-0.8922,-1.1962,-0.3791,-1.6227,-2.051,-0.8965,-0.3124,-0.7232,-1.124,-0.3794 -AI,A5,FourPeople_480x270_60.y4m,libaom-v3.12.0-unconstrained,0.6179,-2.0074,-3.4356,0.3237,-0.4514,-0.618,1.1398,0.7415,-0.6635,-1.0164,0.6178,-2.0125,-3.4281,0.3847 +AI,A4,TouchdownPass_640x360_2997.y4m,v14.0.0,-13.0063,-42.6462,-21.6553,-15.4277,-11.4827,-11.6025,-17.9516,-16.1312,-13.2011,-25.1106,-12.9997,-42.6548,-21.6192,-14.1381 +AI,A4,TouchdownPass_640x360_2997.y4m,v15.0.0,-13.0063,-42.6462,-21.6553,-15.4277,-11.4827,-11.6025,-17.9516,-16.1312,-13.2011,-25.1106,-12.9997,-42.6548,-21.6192,-14.1381 AI,A5,FourPeople_480x270_60.y4m,v02.0.0,-3.4725,-9.329,-10.6819,-4.0693,-4.9494,-4.8025,-5.1629,-5.2243,-5.2316,-10.5628,-3.4729,-9.3507,-10.7159,-4.0573 AI,A5,FourPeople_480x270_60.y4m,v03.0.0,-5.1384,-9.2552,-11.7719,-5.6179,-6.8649,-5.8738,-4.1834,-4.3537,-5.8391,-11.7406,-5.1383,-9.2809,-11.8017,-5.5944 AI,A5,FourPeople_480x270_60.y4m,v04.0.0,-7.8226,-15.3473,-16.7566,-8.5743,-9.9156,-8.4391,-6.044,-6.1241,-8.5743,-14.8502,-7.8219,-15.3406,-16.7674,-8.5531 @@ -587,8 +585,8 @@ AI,A5,FourPeople_480x270_60.y4m,v10.0.0,-14.7719,-23.5168,-21.368,-15.5002,-16.8 AI,A5,FourPeople_480x270_60.y4m,v11.0.0,-15.1342,-23.2457,-21.3038,-15.8091,-17.2486,-15.23,-18.5368,-17.0759,-15.0828,-22.8218,-15.1343,-23.2517,-21.3066,-15.8537 AI,A5,FourPeople_480x270_60.y4m,v12.0.0,-15.0611,-23.3478,-21.2674,-15.7473,-17.2046,-15.2891,-18.9524,-17.3565,-15.0887,-22.8452,-15.0612,-23.3457,-21.2748,-15.7803 AI,A5,FourPeople_480x270_60.y4m,v13.0.0,-14.9197,-23.8424,-21.2014,-15.624,-17.0548,-15.1403,-18.6458,-17.0782,-14.9357,-22.8211,-14.9196,-23.8467,-21.2114,-15.6613 -AI,A5,ParkJoy_480x270_50.y4m,libaom-v3.12.0,0.0184,-1.5991,-2.8294,-0.0968,-1.149,-0.7229,-4.3294,-4.3269,-1.0512,-0.1847,0.0206,-1.6124,-2.8468,-0.0867 -AI,A5,ParkJoy_480x270_50.y4m,libaom-v3.12.0-unconstrained,0.9938,-1.4281,-3.1233,0.8125,-0.5392,-0.3796,2.4077,2.6378,0.2848,0.3524,1.0034,-1.3879,-3.1625,0.8355 +AI,A5,FourPeople_480x270_60.y4m,v14.0.0,-15.0923,-23.9898,-21.3599,-15.7947,-17.2163,-15.3373,-18.9843,-17.4108,-15.1302,-23.0035,-15.0921,-23.994,-21.3699,-15.8353 +AI,A5,FourPeople_480x270_60.y4m,v15.0.0,-15.0601,-23.9623,-21.3304,-15.7629,-17.1862,-15.3006,-18.9213,-17.3489,-15.094,-22.9695,-15.06,-23.9666,-21.3403,-15.8029 AI,A5,ParkJoy_480x270_50.y4m,v02.0.0,-1.5173,-3.9872,-12.4609,-1.9617,-3.1249,-3.2444,-1.377,-1.2047,-2.7388,-3.9802,-1.5052,-4.0396,-12.6809,-1.8103 AI,A5,ParkJoy_480x270_50.y4m,v03.0.0,-2.5413,-3.8803,-15.7672,-3.0091,-4.1975,-3.8789,-1.7591,-1.4254,-2.9455,-4.4458,-2.5332,-3.892,-15.9666,-2.8038 AI,A5,ParkJoy_480x270_50.y4m,v04.0.0,-4.7855,-10.5372,-22.5191,-5.6334,-6.8926,-6.4883,-3.6866,-3.349,-5.5279,-8.2803,-4.7737,-10.4765,-22.6281,-5.5073 @@ -601,8 +599,8 @@ AI,A5,ParkJoy_480x270_50.y4m,v10.0.0,-9.243,-18.735,-18.0593,-10.0017,-9.8225,-1 AI,A5,ParkJoy_480x270_50.y4m,v11.0.0,-9.2678,-18.0757,-18.9306,-10.0259,-9.8735,-10.1829,-13.7748,-12.9421,-10.7551,-16.0633,-9.2385,-18.033,-19.0814,-10.0268 AI,A5,ParkJoy_480x270_50.y4m,v12.0.0,-9.2845,-17.9447,-19.5747,-10.0539,-9.8346,-10.0986,-13.4447,-12.7029,-10.8086,-16.3048,-9.2483,-17.861,-19.783,-10.0258 AI,A5,ParkJoy_480x270_50.y4m,v13.0.0,-9.1869,-18.2489,-18.1061,-9.9347,-9.9067,-10.1457,-13.5704,-12.7775,-10.6593,-16.0157,-9.1595,-18.1843,-18.2382,-9.9386 -AI,A5,SparksElevator_480x270p_5994_10bit.y4m,libaom-v3.12.0,0.0049,-1.2318,-1.5551,-0.0931,-1.5647,-1.1239,-0.4877,-0.9493,-0.7659,-0.3091,0.0045,-1.228,-1.5469,-0.0942 -AI,A5,SparksElevator_480x270p_5994_10bit.y4m,libaom-v3.12.0-unconstrained,-0.0162,-3.2843,-2.2781,-0.2547,-0.8078,-0.5837,0.4878,0.1566,-0.5776,-0.9579,-0.0148,-3.3228,-2.2707,-0.145 +AI,A5,ParkJoy_480x270_50.y4m,v14.0.0,-9.3518,-18.4183,-18.3132,-10.1011,-10.0526,-10.3631,-14.0126,-13.2108,-10.8887,-16.2069,-9.3238,-18.3541,-18.4466,-10.1077 +AI,A5,ParkJoy_480x270_50.y4m,v15.0.0,-9.3214,-18.3871,-18.2751,-10.0704,-10.0258,-10.3231,-13.9312,-13.131,-10.8464,-16.1717,-9.2936,-18.3228,-18.4082,-10.0765 AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v02.0.0,-2.3184,-19.847,-7.2711,-3.3551,-3.3146,-2.7233,-1.8156,-1.9763,-3.9035,-6.1963,-2.3171,-19.9086,-7.2884,-2.834 AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v03.0.0,-3.7799,-20.3842,-7.7541,-4.7207,-4.0793,-3.6422,-3.7117,-3.5312,-4.8922,-8.3226,-3.7785,-20.4211,-7.8026,-4.2493 AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v04.0.0,-5.7234,-30.9727,-12.9248,-7.3083,-6.1621,-5.7965,-7.0535,-6.2012,-7.4442,-12.0517,-5.7182,-30.986,-12.939,-6.5173 @@ -615,8 +613,8 @@ AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v10.0.0,-13.1743,-38.2308,-13.999,- AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v11.0.0,-13.3075,-34.0241,-11.7069,-14.2462,-12.2194,-13.6538,-18.3257,-17.6426,-15.2839,-18.5547,-13.3057,-33.8909,-11.7488,-13.6934 AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v12.0.0,-13.3036,-34.3295,-12.2894,-14.2744,-11.9575,-13.646,-18.3694,-17.3488,-15.2223,-18.8012,-13.3001,-34.1159,-12.3018,-13.7006 AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v13.0.0,-13.4891,-33.7245,-11.8277,-14.399,-12.6265,-13.8336,-18.2665,-17.1969,-15.3577,-19.1129,-13.4889,-33.3557,-11.8676,-13.8725 -AI,A5,Vertical_Bayshore_270x480_2997.y4m,libaom-v3.12.0,-0.6969,-1.6071,-2.0364,-0.7242,-0.6005,-0.5637,-0.1964,-1.3846,-0.759,0.2743,-0.6954,-1.5054,-1.9369,-0.6567 -AI,A5,Vertical_Bayshore_270x480_2997.y4m,libaom-v3.12.0-unconstrained,1.2206,-1.1414,-4.0279,0.9762,0.631,0.3568,0.464,0.3453,0.9882,1.5553,1.2234,-0.8028,-3.7602,1.1947 +AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v14.0.0,-13.8014,-34.0494,-12.2324,-14.7167,-12.9034,-14.1588,-18.8649,-17.7874,-15.6737,-19.4578,-13.8012,-33.6879,-12.2722,-14.1899 +AI,A5,SparksElevator_480x270p_5994_10bit.y4m,v15.0.0,-13.8014,-34.0494,-12.2324,-14.7167,-12.9034,-14.1588,-18.8649,-17.7874,-15.6737,-19.4578,-13.8012,-33.6879,-12.2722,-14.1899 AI,A5,Vertical_Bayshore_270x480_2997.y4m,v02.0.0,-3.6722,-29.3712,-28.9093,-6.5251,-3.394,-3.9632,-6.34,-6.6952,-5.6958,-11.4267,-3.6666,-29.4376,-28.9362,-4.397 AI,A5,Vertical_Bayshore_270x480_2997.y4m,v03.0.0,-4.7958,-31.5302,-30.7518,-7.7689,-4.4244,-5.174,-6.2644,-6.8578,-6.7442,-12.3306,-4.788,-31.9013,-30.8353,-5.5491 AI,A5,Vertical_Bayshore_270x480_2997.y4m,v04.0.0,-7.4858,-35.709,-34.0818,-10.6155,-7.0402,-7.6897,-10.1328,-10.9871,-9.1013,-14.3915,-7.4749,-35.9823,-34.1654,-8.2935 @@ -629,8 +627,8 @@ AI,A5,Vertical_Bayshore_270x480_2997.y4m,v10.0.0,-16.9923,-47.4383,-39.3556,-20. AI,A5,Vertical_Bayshore_270x480_2997.y4m,v11.0.0,-17.1445,-43.3055,-40.1596,-20.0993,-15.6904,-16.7146,-28.4797,-27.3306,-18.8245,-23.7618,-17.1367,-43.3345,-40.0673,-17.8999 AI,A5,Vertical_Bayshore_270x480_2997.y4m,v12.0.0,-17.1259,-42.2474,-38.6812,-19.914,-15.5517,-16.5793,-27.4082,-26.4329,-18.6169,-23.5929,-17.1225,-42.4237,-38.6132,-17.8507 AI,A5,Vertical_Bayshore_270x480_2997.y4m,v13.0.0,-16.5467,-41.4595,-38.884,-19.355,-15.3815,-16.0992,-26.1423,-24.9685,-17.9768,-22.6313,-16.539,-41.5877,-38.7878,-17.2705 -AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,libaom-v3.12.0,3.0184,4.4627,5.4889,3.235,8.1903,2.62,-8.0057,-9.5042,7.6045,8.6335,3.0102,4.4518,5.4504,3.1786 -AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,libaom-v3.12.0-unconstrained,1.8613,-0.0444,-2.8929,1.5533,3.5275,1.4147,1.6692,0.9064,3.4781,2.7601,1.8501,-0.0542,-2.9227,1.64 +AI,A5,Vertical_Bayshore_270x480_2997.y4m,v14.0.0,-16.9577,-41.9948,-39.3696,-19.7848,-15.6443,-16.4901,-22.5047,-21.304,-18.4467,-23.0895,-16.9498,-42.1204,-39.2738,-17.6872 +AI,A5,Vertical_Bayshore_270x480_2997.y4m,v15.0.0,-16.8812,-41.8955,-39.2795,-19.7048,-15.5953,-16.4174,-22.3239,-21.1266,-18.3593,-23.0043,-16.8733,-42.0216,-39.1836,-17.6096 AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v02.0.0,-3.2663,-8.3026,-13.3877,-4.0433,-0.9046,-3.3935,-4.3021,-4.0505,-0.9838,-5.117,-3.2689,-8.3304,-13.4483,-3.7657 AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v03.0.0,-5.3615,-13.2502,-20.4038,-6.5491,-1.9232,-4.7302,-4.7147,-4.4218,-2.4735,-8.085,-5.3712,-13.2748,-20.5053,-6.1225 AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v04.0.0,-7.81,-16.9142,-26.3815,-9.2565,-4.3886,-7.104,-7.1926,-6.8128,-4.925,-10.7365,-7.8217,-16.9294,-26.4541,-8.7877 @@ -643,8 +641,8 @@ AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v10.0.0,-15.2127,-32.8586,-39.836 AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v11.0.0,-15.0228,-32.993,-41.2242,-17.5729,-13.1904,-13.6355,-17.1677,-16.5104,-14.6591,-24.8834,-15.0233,-32.9911,-41.2875,-16.6762 AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v12.0.0,-14.9711,-32.8307,-41.1842,-17.5182,-12.8979,-13.3656,-17.1414,-16.5005,-14.5672,-24.8015,-14.9748,-32.8382,-41.2502,-16.6229 AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v13.0.0,-15.282,-33.7157,-40.9633,-17.8572,-15.3882,-13.6842,-17.5161,-16.7163,-14.8276,-25.5984,-15.2858,-33.7313,-41.0147,-16.9605 -AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,libaom-v3.12.0,-0.0114,1.5243,1.5552,0.1102,0.1033,-0.3885,-5.4446,-0.8719,3.7425,1.3714,-0.0114,1.5242,1.5557,0.1064 -AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,libaom-v3.12.0-unconstrained,0.4024,-1.1976,-1.5765,0.2685,0.7665,0.3603,-0.4584,0.8606,1.8326,0.4266,0.4024,-1.1959,-1.5738,0.3601 +AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v14.0.0,-15.3187,-33.7443,-40.9899,-17.8928,-15.4159,-13.7168,-17.5664,-16.765,-14.8585,-25.6325,-15.3225,-33.7598,-41.0413,-16.9967 +AI,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v15.0.0,-15.3187,-33.7443,-40.9899,-17.8928,-15.4159,-13.7168,-17.5664,-16.765,-14.8585,-25.6325,-15.3225,-33.7598,-41.0413,-16.9967 AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v02.0.0,-3.0356,-14.2092,-17.125,-4.2263,-2.4338,-2.6403,-5.6505,-5.6432,-2.0876,-6.8661,-3.0357,-14.2126,-17.1283,-3.6404 AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v03.0.0,-5.0771,-17.7091,-19.8012,-6.3756,-3.577,-4.05,-7.5133,-7.2143,-3.3595,-9.0881,-5.0772,-17.7134,-19.8036,-5.7607 AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v04.0.0,-7.8766,-22.753,-26.1868,-9.4762,-5.9069,-6.8094,-11.8899,-11.0046,-6.0388,-12.9328,-7.8768,-22.7555,-26.187,-8.7672 @@ -657,8 +655,8 @@ AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v10.0.0,-13.9232,-34.1018,-32.4825 AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v11.0.0,-13.8129,-33.3844,-31.0603,-15.6688,-12.0072,-12.3355,-22.5428,-21.6508,-13.7521,-20.4565,-13.8131,-33.3862,-31.057,-14.8953 AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v12.0.0,-13.9337,-33.2398,-31.0764,-15.7729,-12.1064,-12.3543,-22.6714,-21.6679,-13.8655,-20.5321,-13.9339,-33.2413,-31.0755,-15.0047 AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v13.0.0,-13.997,-33.3519,-30.7778,-15.8247,-12.7635,-12.5673,-22.9549,-22.0169,-13.9645,-20.6254,-13.9972,-33.3528,-30.7691,-15.0654 -AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,libaom-v3.12.0,1.892,4.5207,7.4319,2.3346,-0.5559,-1.5277,-3.9658,-3.6559,19.4022,16.6884,1.8923,4.4635,7.3309,2.6128 -AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,libaom-v3.12.0-unconstrained,0.6428,0.3198,2.3099,0.7225,-0.7584,-1.0382,-1.2582,-1.3378,3.3746,3.3107,0.6409,0.3025,2.271,0.7837 +AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v14.0.0,-14.0089,-33.3716,-30.7967,-15.8371,-12.7728,-12.5807,-22.9868,-22.045,-13.9748,-20.6404,-14.009,-33.3725,-30.7881,-15.0779 +AI,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v15.0.0,-14.0089,-33.3716,-30.7967,-15.8371,-12.7728,-12.5807,-22.9868,-22.045,-13.9748,-20.6404,-14.009,-33.3725,-30.7881,-15.0779 AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v02.0.0,-7.0405,-16.1077,-14.9995,-8.0276,-7.2548,-8.1157,-3.7236,-4.6286,-5.8003,-10.947,-7.0411,-15.9526,-14.8664,-8.2524 AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v03.0.0,-11.3624,-16.0062,-14.9397,-11.8372,-8.5224,-10.0991,-5.2597,-5.9951,-9.0451,-12.8416,-11.3673,-15.7473,-14.7038,-11.9455 AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v04.0.0,-18.1967,-28.4704,-29.0023,-19.4348,-16.1107,-17.4842,-11.7856,-12.8472,-16.7236,-22.0505,-18.2017,-28.3639,-28.8075,-19.7489 @@ -671,8 +669,8 @@ AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v10.0.0,-32.5917,-43.4833,-43.4863,- AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v11.0.0,-32.891,-43.674,-43.1406,-34.151,-28.9029,-30.3408,-34.6393,-31.8182,-32.3288,-42.0179,-32.8988,-43.4795,-42.9465,-34.474 AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v12.0.0,-33.2666,-43.8089,-43.3867,-34.4999,-29.0956,-30.5658,-34.8775,-31.9625,-32.6725,-42.3812,-33.2731,-43.6624,-43.226,-34.8178 AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v13.0.0,-33.4485,-43.9527,-43.3839,-34.6669,-35.8203,-30.9543,-35.1138,-32.2052,-32.9,-41.9959,-33.4551,-43.7818,-43.2001,-34.9765 -AI,B1,Life_1080p30_v2.y4m,libaom-v3.12.0,-0.3078,4.2087,3.1619,0.0805,-0.1828,-0.8355,-3.0665,-1.9131,3.9521,3.6162,-0.3079,4.2075,3.1632,0.0455 -AI,B1,Life_1080p30_v2.y4m,libaom-v3.12.0-unconstrained,0.5349,1.4049,0.9137,0.6399,0.2591,-0.0159,-0.0454,-0.1811,1.8476,2.5153,0.5349,1.4053,0.913,0.6275 +AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v14.0.0,-33.4791,-43.9826,-43.4101,-34.697,-35.848,-30.9848,-35.1669,-32.2579,-32.9308,-42.0269,-33.4857,-43.8116,-43.2267,-35.0065 +AI,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v15.0.0,-33.4791,-43.9826,-43.4101,-34.697,-35.848,-30.9848,-35.1669,-32.2579,-32.9308,-42.0269,-33.4857,-43.8116,-43.2267,-35.0065 AI,B1,Life_1080p30_v2.y4m,v02.0.0,-3.8622,-10.428,-8.1954,-4.5272,-3.2161,-3.4115,-4.3791,-4.6089,-3.2817,-7.5993,-3.8617,-10.4199,-8.1996,-4.4135 AI,B1,Life_1080p30_v2.y4m,v03.0.0,-6.4233,-10.5344,-7.7358,-6.7537,-4.7539,-5.2115,-6.1486,-5.8797,-4.8633,-9.4335,-6.4226,-10.5263,-7.7392,-6.6864 AI,B1,Life_1080p30_v2.y4m,v04.0.0,-10.5114,-21.7303,-17.2669,-11.6362,-8.8472,-9.1541,-10.4049,-10.1815,-9.3299,-15.8275,-10.5112,-21.7208,-17.2685,-11.4308 @@ -685,8 +683,8 @@ AI,B1,Life_1080p30_v2.y4m,v10.0.0,-19.3928,-33.0543,-26.4628,-20.736,-16.2223,-1 AI,B1,Life_1080p30_v2.y4m,v11.0.0,-19.3812,-32.4477,-26.0402,-20.6587,-16.2551,-16.4432,-22.5879,-21.5759,-18.8316,-26.03,-19.3801,-32.4398,-26.0412,-20.3766 AI,B1,Life_1080p30_v2.y4m,v12.0.0,-19.6075,-32.6478,-26.0312,-20.8666,-16.5495,-16.6822,-22.8009,-21.7216,-19.0859,-26.204,-19.6064,-32.6347,-26.0338,-20.5865 AI,B1,Life_1080p30_v2.y4m,v13.0.0,-19.6025,-32.7827,-25.8704,-20.8559,-17.2334,-16.716,-22.8372,-21.7658,-19.0321,-26.1002,-19.6015,-32.774,-25.8707,-20.5759 -AI,B1,MINECRAFT_1080p_60_8bit.y4m,libaom-v3.12.0,-5.8961,-3.8616,-3.3245,-5.7274,-4.7363,-5.6994,-5.7751,-5.9374,-0.862,-2.896,-6.5092,-4.2474,-3.6057,-6.0484 -AI,B1,MINECRAFT_1080p_60_8bit.y4m,libaom-v3.12.0-unconstrained,-3.7992,-3.5679,-3.0593,-3.7481,-0.6629,-1.8149,3.1703,1.779,0.038,-2.3165,-4.6261,-4.0642,-3.4484,-4.4019 +AI,B1,Life_1080p30_v2.y4m,v14.0.0,-19.6273,-32.802,-25.8968,-20.8792,-17.2516,-16.7399,-22.873,-21.8021,-19.0546,-26.1238,-19.6262,-32.7933,-25.897,-20.5993 +AI,B1,Life_1080p30_v2.y4m,v15.0.0,-19.6273,-32.802,-25.8968,-20.8792,-17.2516,-16.7399,-22.873,-21.8021,-19.0546,-26.1238,-19.6262,-32.7933,-25.897,-20.5993 AI,B1,MINECRAFT_1080p_60_8bit.y4m,v02.0.0,-2.1101,-15.469,-7.8482,-2.9786,-1.6604,-2.1775,-0.7647,-0.6911,-1.1176,-6.0868,-2.2157,-15.8899,-8.0547,-2.9216 AI,B1,MINECRAFT_1080p_60_8bit.y4m,v03.0.0,-3.5115,-20.2447,-8.823,-4.5239,-2.0935,-3.1567,-1.5534,-1.0555,-1.8322,-8.2921,-3.8164,-20.6568,-9.1162,-4.6283 AI,B1,MINECRAFT_1080p_60_8bit.y4m,v04.0.0,-7.0932,-37.9897,-20.8942,-9.3307,-5.3292,-6.5392,-4.3399,-3.8383,-6.0449,-16.6519,-7.2078,-38.1495,-20.6495,-9.2079 @@ -699,8 +697,8 @@ AI,B1,MINECRAFT_1080p_60_8bit.y4m,v10.0.0,-15.7243,-52.8252,-31.2218,-18.5305,-1 AI,B1,MINECRAFT_1080p_60_8bit.y4m,v11.0.0,-15.5619,-52.8439,-30.6695,-18.368,-15.6761,-15.9494,-19.002,-17.6052,-17.6416,-29.4915,-15.7373,-52.9932,-30.5117,-18.1198 AI,B1,MINECRAFT_1080p_60_8bit.y4m,v12.0.0,-16.2757,-53.5422,-31.4551,-19.0894,-16.366,-16.662,-19.1981,-17.8611,-18.4787,-30.231,-16.4778,-53.6943,-31.2949,-18.844 AI,B1,MINECRAFT_1080p_60_8bit.y4m,v13.0.0,-16.4828,-53.9333,-31.7677,-19.3284,-17.007,-16.9774,-19.6932,-18.4317,-18.764,-30.5138,-16.702,-54.0784,-31.594,-19.0828 -AI,B1,STARCRAFT_1080p60.y4m,libaom-v3.12.0,-1.4977,-0.7778,-0.2151,-1.4076,-2.6854,-3.0418,-5.8323,-8.0609,1.6651,13.0105,-1.4978,-0.7775,-0.2149,-1.3876 -AI,B1,STARCRAFT_1080p60.y4m,libaom-v3.12.0-unconstrained,-2.0967,-3.7897,-4.7126,-2.3198,-2.2248,-2.3144,-3.0906,-4.0363,-0.9287,4.5495,-2.0971,-3.7916,-4.7185,-2.2431 +AI,B1,MINECRAFT_1080p_60_8bit.y4m,v14.0.0,-16.5033,-53.9488,-31.7888,-19.3487,-17.019,-16.9966,-19.7407,-18.4772,-18.7882,-30.5331,-16.7228,-54.0939,-31.6152,-19.1038 +AI,B1,MINECRAFT_1080p_60_8bit.y4m,v15.0.0,-16.5033,-53.9488,-31.7888,-19.3487,-17.019,-16.9966,-19.7407,-18.4772,-18.7882,-30.5331,-16.7228,-54.0939,-31.6152,-19.1038 AI,B1,STARCRAFT_1080p60.y4m,v02.0.0,-4.6678,-14.198,-19.2461,-6.0111,-8.5701,-8.9501,-2.8869,-2.8749,-6.1942,-10.5828,-4.6689,-14.2165,-19.2562,-5.5966 AI,B1,STARCRAFT_1080p60.y4m,v03.0.0,-8.6429,-16.0025,-21.6308,-9.7696,-10.7183,-11.8186,-5.2404,-4.7535,-8.5562,-14.6437,-8.6442,-16.0209,-21.6428,-9.4151 AI,B1,STARCRAFT_1080p60.y4m,v04.0.0,-12.4106,-23.7988,-31.6899,-14.1729,-14.0942,-15.3366,-10.1114,-9.1639,-12.5754,-20.6971,-12.4117,-23.809,-31.6951,-13.6511 @@ -713,8 +711,8 @@ AI,B1,STARCRAFT_1080p60.y4m,v10.0.0,-23.3452,-34.2857,-40.4893,-24.9838,-23.1056 AI,B1,STARCRAFT_1080p60.y4m,v11.0.0,-23.7142,-34.9043,-41.026,-25.3797,-23.9755,-25.2043,-24.1311,-23.2499,-24.569,-37.5539,-23.7146,-34.9113,-41.0282,-24.94 AI,B1,STARCRAFT_1080p60.y4m,v12.0.0,-24.7578,-35.5529,-41.7615,-26.3792,-25.041,-26.2556,-25.1308,-24.2854,-25.6372,-38.3604,-24.7581,-35.5659,-41.7639,-25.9526 AI,B1,STARCRAFT_1080p60.y4m,v13.0.0,-24.9789,-35.7045,-41.509,-26.5654,-27.9927,-26.4139,-25.4974,-24.632,-25.8219,-38.257,-24.9796,-35.7143,-41.5141,-26.1547 -AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,libaom-v3.12.0,-0.521,1.7372,2.6595,-0.2835,-1.374,-1.7591,-2.6541,-2.6756,2.2802,3.4264,-0.4322,1.4058,2.2198,-0.1612 -AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,-0.6946,0.0581,-0.8126,-0.6481,-1.1595,-1.3277,-0.2145,-0.8766,0.3136,1.8714,-0.8536,-0.1631,-1.0766,-0.7809 +AI,B1,STARCRAFT_1080p60.y4m,v14.0.0,-24.9982,-35.7211,-41.5291,-26.5848,-28.0083,-26.4333,-25.5313,-24.6647,-25.8432,-38.2783,-24.9989,-35.731,-41.5342,-26.1742 +AI,B1,STARCRAFT_1080p60.y4m,v15.0.0,-24.9982,-35.7211,-41.5291,-26.5848,-28.0083,-26.4333,-25.5313,-24.6647,-25.8432,-38.2783,-24.9989,-35.731,-41.5342,-26.1742 AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v02.0.0,-2.6829,-13.1249,-14.8153,-3.7968,-5.1923,-5.2038,-4.0346,-3.7392,-3.7939,-4.0434,-2.5234,-13.7121,-15.2314,-3.1231 AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v03.0.0,-5.854,-18.8354,-21.2289,-7.2534,-6.8921,-7.3361,-5.003,-4.2876,-5.716,-8.8428,-5.8549,-19.3365,-21.5957,-6.5686 AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v04.0.0,-8.2962,-25.5435,-27.9638,-10.1565,-9.2971,-9.823,-9.057,-8.4911,-8.6576,-13.0691,-8.1863,-26.1077,-28.3444,-9.1885 @@ -727,8 +725,8 @@ AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v10.0.0,-14.8195,-35.6412,-38.3582,-17.15 AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v11.0.0,-14.7873,-36.0719,-38.6468,-17.1665,-14.981,-15.1842,-22.2898,-20.7855,-16.3211,-24.1218,-14.1191,-36.4916,-38.5725,-15.3618 AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v12.0.0,-14.8506,-35.9691,-38.7953,-17.2305,-15.0259,-15.2523,-21.9668,-20.504,-16.419,-24.1439,-14.1736,-36.411,-38.7539,-15.4197 AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v13.0.0,-14.9426,-36.4118,-39.1558,-17.3602,-16.0895,-15.4049,-22.4082,-20.721,-16.5675,-24.4306,-14.2857,-36.8445,-39.2155,-15.5498 -AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0,2.9538,-2.6771,-2.9705,2.3418,-0.6217,1.2252,-2.8572,-0.9382,-0.2346,1.6925,2.9188,-2.6997,-3.0233,2.1966 -AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0-unconstrained,1.4337,-3.0001,-2.6923,0.7482,0.5556,1.1821,0.292,1.189,0.0206,0.1125,1.4262,-2.9843,-2.6217,0.3121 +AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v14.0.0,-14.9691,-36.4411,-39.1798,-17.3868,-16.1079,-15.4318,-22.4623,-20.7738,-16.5961,-24.4594,-14.3111,-36.8749,-39.2399,-15.5754 +AI,B1,Sniper_1920x1080P_30fps_8bit.y4m,v15.0.0,-14.9691,-36.4411,-39.1798,-17.3868,-16.1079,-15.4318,-22.4623,-20.7738,-16.5961,-24.4594,-14.3111,-36.8749,-39.2399,-15.5754 AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v02.0.0,-3.1662,-8.4168,-6.9306,-3.9078,-3.4318,-3.7068,-4.7726,-4.3644,-4.1502,-4.3485,-3.1755,-8.4254,-6.8012,-4.5212 AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v03.0.0,-5.0886,-11.0077,-7.318,-5.7555,-5.053,-5.5358,-4.8486,-4.5438,-5.9471,-5.8652,-5.1239,-10.9919,-7.2641,-6.4071 AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v04.0.0,-13.8361,-26.277,-22.3756,-15.5758,-13.9065,-14.4521,-15.3329,-15.07,-15.5976,-16.345,-13.8651,-26.3053,-22.1156,-16.8139 @@ -741,8 +739,8 @@ AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v10.0.0,-21.0342,-27.179,-24. AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v11.0.0,-20.8243,-28.1944,-24.8394,-21.7282,-21.3139,-21.3792,-21.8067,-21.6764,-21.8714,-22.3332,-20.8485,-28.196,-24.6581,-22.4642 AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v12.0.0,-20.8561,-28.745,-25.1861,-21.8279,-21.2644,-21.3883,-22.2294,-22.0774,-21.9094,-22.4693,-20.877,-28.7551,-24.9557,-22.6297 AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v13.0.0,-24.7518,-40.342,-34.295,-26.9161,-25.7932,-24.4348,-26.139,-25.8998,-26.0094,-28.6796,-24.7593,-40.3384,-33.3318,-28.5573 -AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0,-1.039,-4.3997,-1.3694,-1.1086,-1.41,-1.0564,-1.7804,-2.2177,-1.6543,-1.4112,-1.0396,-4.3983,-1.361,-1.1977 -AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0-unconstrained,0.1116,-9.4752,-2.1841,-0.1738,-0.4153,-0.0319,-1.5381,-1.4155,-0.5084,-0.8756,0.1122,-9.4824,-2.1612,-0.0853 +AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v14.0.0,-24.8388,-40.4084,-34.3615,-26.9996,-25.8492,-24.5052,-26.2259,-25.985,-26.075,-28.7618,-24.8463,-40.4049,-33.398,-28.6384 +AI,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v15.0.0,-24.8388,-40.4084,-34.3615,-26.9996,-25.8492,-24.5052,-26.2259,-25.985,-26.075,-28.7618,-24.8463,-40.4049,-33.398,-28.6384 AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v02.0.0,-20.1756,-31.0448,-32.1277,-21.1228,-20.1729,-20.5083,-16.7288,-16.4206,-19.7841,-24.8899,-20.1806,-31.0395,-32.1347,-21.3717 AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v03.0.0,-25.5137,-34.1553,-38.4142,-26.3804,-23.172,-24.4617,-21.0888,-20.285,-23.381,-30.5339,-25.5183,-34.0755,-38.4111,-26.6328 AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v04.0.0,-29.5727,-38.3632,-48.4633,-30.8149,-26.2159,-27.7582,-23.528,-22.7547,-26.8613,-36.7932,-29.5786,-38.2969,-48.4634,-31.2789 @@ -755,8 +753,8 @@ AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v10.0.0,-37.6026,-39.4353,-55.86 AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v11.0.0,-38.0816,-47.9178,-56.4314,-39.3697,-33.5518,-35.3551,-30.6325,-30.3145,-34.9382,-46.6242,-38.0866,-47.9097,-56.4088,-39.6761 AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v12.0.0,-38.2205,-47.2974,-56.4096,-39.478,-33.6301,-35.4491,-31.0021,-30.6875,-35.0162,-46.788,-38.2253,-47.281,-56.3815,-39.7989 AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v13.0.0,-38.5526,-46.9765,-61.2763,-40.0233,-42.1288,-35.9033,-31.4378,-31.1467,-35.5595,-48.6656,-38.5573,-46.9103,-61.2599,-40.3574 -AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,libaom-v3.12.0,-0.396,11.3278,6.7104,0.211,-0.3448,-0.9568,-4.0314,-1.8382,2.7615,6.3028,-0.4043,11.3048,6.6972,0.0839 -AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,libaom-v3.12.0-unconstrained,0.6852,6.5056,3.0481,1.0703,0.1363,-0.1578,0.0948,-0.0752,2.1678,5.165,0.6839,6.4645,3.0476,0.9707 +AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v14.0.0,-38.6042,-47.0665,-61.3382,-40.077,-42.1564,-35.9547,-31.5399,-31.2462,-35.6116,-48.7289,-38.6089,-47.0008,-61.3219,-40.4127 +AI,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v15.0.0,-38.6042,-47.0665,-61.3382,-40.077,-42.1564,-35.9547,-31.5399,-31.2462,-35.6116,-48.7289,-38.6089,-47.0008,-61.3219,-40.4127 AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v02.0.0,-1.8088,-17.6392,-20.1232,-3.5306,-3.325,-3.6102,-1.0374,-1.1253,-1.7641,-9.2797,-1.8112,-17.5495,-20.1058,-2.7318 AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v03.0.0,-4.186,-16.7889,-22.0303,-5.7496,-4.324,-4.8956,-1.6037,-1.212,-3.0915,-11.2524,-4.1903,-16.7835,-22.0035,-5.0558 AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v04.0.0,-7.087,-21.5746,-24.8679,-8.718,-6.4363,-7.3455,-6.4085,-5.6729,-5.6254,-13.8543,-7.0866,-21.5325,-24.8425,-8.0212 @@ -769,8 +767,8 @@ AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v10.0.0,-16.1402,-39.0136,-40.4035,-18. AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v11.0.0,-16.4391,-39.0098,-42.38,-19.1245,-15.8631,-15.7422,-19.6688,-19.0998,-17.3634,-29.0162,-16.4337,-38.9353,-42.3745,-17.9998 AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v12.0.0,-16.7895,-39.6557,-42.4337,-19.4674,-16.2229,-16.0972,-20.7224,-20.0729,-17.6858,-29.2216,-16.7819,-39.5761,-42.4294,-18.3453 AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v13.0.0,-17.2063,-38.7032,-44.7057,-19.9115,-15.676,-16.3439,-22.3515,-21.6171,-18.1663,-30.2694,-17.1989,-38.6315,-44.7019,-18.7942 -AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,libaom-v3.12.0,-0.8958,-0.8662,-1.1356,-0.9002,-0.3425,-0.528,-0.8603,-1.1918,-0.9689,-3.0568,-0.8957,-0.8668,-1.1345,-0.8859 -AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,libaom-v3.12.0-unconstrained,-0.2803,-1.5085,-1.5048,-0.4042,0.8505,0.5567,-0.2795,-0.1712,-0.232,-3.6476,-0.2804,-1.5098,-1.5027,-0.416 +AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v14.0.0,-17.2617,-38.7744,-44.7672,-19.9678,-15.6949,-16.3796,-22.455,-21.7191,-18.2148,-30.3217,-17.2542,-38.7029,-44.7633,-18.8505 +AI,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v15.0.0,-17.2617,-38.7744,-44.7672,-19.9678,-15.6949,-16.3796,-22.455,-21.7191,-18.2148,-30.3217,-17.2542,-38.7029,-44.7633,-18.8505 AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v02.0.0,-2.0688,-9.1455,-9.6534,-2.8129,-1.5274,-2.3489,-3.5176,-3.1444,-2.7696,-8.3494,-2.0677,-9.1478,-9.6545,-2.9049 AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v03.0.0,-7.7468,-11.2057,-12.4558,-8.1572,-6.0113,-7.2241,-5.8288,-5.7785,-7.2747,-10.5219,-7.7468,-11.2046,-12.4581,-8.1799 AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v04.0.0,-13.7219,-19.0311,-21.2938,-14.3811,-11.4657,-13.1286,-11.7307,-11.9081,-13.529,-16.234,-13.7217,-19.0299,-21.2939,-14.5277 @@ -783,8 +781,8 @@ AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v10.0.0,-26.991 AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v11.0.0,-27.4967,-31.4177,-32.1608,-27.9394,-23.6695,-27.7304,-26.4843,-25.1349,-26.3851,-33.3077,-27.4966,-31.4118,-32.1503,-28.0662 AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v12.0.0,-27.4413,-31.5108,-31.9904,-27.8865,-23.4995,-27.5484,-26.2333,-24.9619,-26.3444,-33.0719,-27.4413,-31.506,-31.9832,-28.0114 AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v13.0.0,-27.7652,-31.8866,-32.7762,-28.2308,-36.3984,-27.9683,-26.4273,-25.2432,-26.6652,-32.5333,-27.765,-31.885,-32.7666,-28.3469 -AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,-0.8894,-1.0218,-1.5519,-0.9308,-0.5887,-1.1881,-1.2707,-1.4889,-1.2809,-0.5717,-0.8865,-1.0254,-1.521,-0.973 -AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,-2.3854,-1.1937,-1.2871,-2.281,-2.5784,-3.194,-3.4062,-3.3971,-3.1409,-4.0953,-2.3836,-1.178,-1.2447,-2.174 +AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v14.0.0,-27.7911,-31.9031,-32.7955,-28.2556,-36.4189,-27.9942,-26.4646,-25.2801,-26.6911,-32.5573,-27.7909,-31.9014,-32.7859,-28.3713 +AI,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v15.0.0,-27.7911,-31.9031,-32.7955,-28.2556,-36.4189,-27.9942,-26.4646,-25.2801,-26.6911,-32.5573,-27.7909,-31.9014,-32.7859,-28.3713 AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v02.0.0,2.3353,-6.9321,-0.1596,1.792,2.153,2.1069,-0.2608,0.512,0.7888,-4.6686,2.3315,-6.8516,-0.0753,1.647 AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v03.0.0,-8.459,-14.4285,-10.3418,-8.8167,-9.635,-9.7973,-7.9947,-7.9003,-10.2051,-17.025,-8.4664,-14.3467,-10.2425,-8.9074 AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v04.0.0,-22.9622,-42.042,-34.5816,-24.4931,-26.0229,-25.8109,-19.5142,-19.3387,-25.3994,-34.8643,-22.974,-41.9745,-34.5578,-25.2001 @@ -797,8 +795,8 @@ AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v10.0.0,-39.1608,-55.8151,-48.378,- AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v11.0.0,-41.3143,-56.3855,-49.9239,-42.5102,-41.5442,-42.1127,-38.6108,-36.8892,-41.1738,-52.2861,-41.3174,-56.2973,-49.9007,-43.1507 AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v12.0.0,-41.1548,-56.6098,-49.7836,-42.3722,-41.3347,-42.0465,-38.454,-36.6329,-40.904,-52.0065,-41.1611,-56.5465,-49.7758,-42.9923 AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v13.0.0,-41.0833,-56.7077,-50.3626,-42.3542,-45.1141,-42.2061,-39.8296,-37.6589,-39.1697,-52.0501,-40.9978,-56.628,-50.3519,-43.041 -AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,libaom-v3.12.0,4.3867,5.6577,4.3458,4.4886,5.0008,4.5946,4.0034,4.0016,4.7326,4.0236,4.2985,5.7181,4.4352,4.6826 -AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,libaom-v3.12.0-unconstrained,4.6464,5.1704,3.7138,4.641,4.7611,4.4799,4.601,4.4582,4.8332,3.7063,4.5271,5.4114,3.9084,4.6661 +AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v14.0.0,-41.9565,-56.7394,-50.4134,-43.1304,-45.3953,-43.0364,-39.928,-37.7634,-41.7511,-52.1539,-41.9663,-56.6595,-50.4041,-43.7851 +AI,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v15.0.0,-41.9565,-56.7394,-50.4134,-43.1304,-45.3953,-43.0364,-39.928,-37.7634,-41.7511,-52.1539,-41.9663,-56.6595,-50.4041,-43.7851 AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v02.0.0,-0.1038,-11.4361,-12.1517,-1.1418,-0.8532,-1.4096,0.4242,0.2818,-2.2948,-10.293,-0.0714,-11.4325,-12.142,-1.1246 AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v03.0.0,-8.052,-17.1128,-18.0494,-8.8997,-7.4837,-8.5374,-4.2148,-4.5458,-9.0275,-16.6138,-8.0391,-17.1297,-18.0396,-8.8828 AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v04.0.0,-15.5195,-29.7057,-28.3714,-16.7651,-16.2566,-17.193,-13.4414,-13.8112,-17.7106,-26.7432,-15.5015,-29.7007,-28.2979,-16.8079 @@ -811,8 +809,8 @@ AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v10.0.0,-31.03 AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v11.0.0,-32.6142,-47.9723,-49.535,-34.1181,-33.8341,-35.6739,-35.5298,-33.9973,-34.3262,-44.305,-32.6154,-48.0306,-49.5731,-34.4458 AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v12.0.0,-32.5123,-47.9691,-49.3749,-34.0163,-33.694,-35.5455,-35.6007,-33.9643,-34.232,-44.1288,-32.5129,-48.0268,-49.4071,-34.3352 AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v13.0.0,-32.8545,-48.4853,-49.2249,-34.3418,-40.618,-35.8865,-36.0543,-34.429,-34.5898,-44.2447,-32.8621,-48.5418,-49.2688,-34.6816 -AI,B2,MobileDeviceScreenSharing.y4m,libaom-v3.12.0,136.9899,62.4698,0.0,130.4466,134.0166,132.8872,143.3488,135.65,126.7865,112.1669,136.9991,62.4665,0.0,132.569 -AI,B2,MobileDeviceScreenSharing.y4m,libaom-v3.12.0-unconstrained,128.7444,73.8457,92.6646,123.5422,132.7672,130.7169,125.3481,127.0164,127.2943,123.0881,128.7453,74.2826,93.0861,125.7162 +AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v14.0.0,-32.8703,-48.5008,-49.2369,-34.3575,-40.6311,-35.8979,-36.0776,-34.4514,-34.6045,-44.2609,-32.8775,-48.5572,-49.2807,-34.6973 +AI,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v15.0.0,-32.8703,-48.5008,-49.2369,-34.3575,-40.6311,-35.8979,-36.0776,-34.4514,-34.6045,-44.2609,-32.8775,-48.5572,-49.2807,-34.6973 AI,B2,MobileDeviceScreenSharing.y4m,v02.0.0,-0.8301,-30.6909,-17.0633,-3.2898,0.6046,0.3971,0.9864,1.3695,-1.4331,-3.8378,-0.8294,-30.6425,-17.0379,-1.7067 AI,B2,MobileDeviceScreenSharing.y4m,v03.0.0,-13.3267,-42.0921,-29.4125,-15.7157,-12.8343,-13.0221,-10.1075,-9.8429,-13.0555,-19.4849,-13.3242,-42.2244,-29.5319,-14.135 AI,B2,MobileDeviceScreenSharing.y4m,v04.0.0,-21.303,-49.1901,-50.8646,-24.4092,-21.4965,-21.5709,-18.5236,-18.3642,-22.5209,-31.5537,-21.3005,-49.3144,-50.4564,-22.3536 @@ -825,8 +823,8 @@ AI,B2,MobileDeviceScreenSharing.y4m,v10.0.0,-39.6704,-64.3515,-65.2683,-42.7273, AI,B2,MobileDeviceScreenSharing.y4m,v11.0.0,-41.0233,-64.8375,-65.1826,-43.9184,-41.7004,-42.2177,-45.551,-43.305,-43.1193,-51.7713,-41.0207,-64.8561,-65.0569,-42.1074 AI,B2,MobileDeviceScreenSharing.y4m,v12.0.0,-41.0004,-65.1083,-65.374,-43.911,-41.888,-42.3373,-45.3591,-43.1077,-43.1168,-52.0276,-40.9971,-65.1365,-65.0827,-42.0825 AI,B2,MobileDeviceScreenSharing.y4m,v13.0.0,-41.3848,-64.6507,-65.3303,-44.2137,-43.8877,-42.4633,-45.5789,-43.4261,-43.479,-51.0615,-41.3823,-64.6444,-65.0474,-42.458 -AI,B2,SceneComposition_2.y4m,libaom-v3.12.0,34.2838,16.0651,5.0984,32.2118,35.1884,33.6198,34.2838,35.1072,31.3503,23.4514,34.2775,16.0838,5.1278,30.8335 -AI,B2,SceneComposition_2.y4m,libaom-v3.12.0-unconstrained,38.9576,21.8892,6.6896,36.0221,41.5136,40.0338,59.2563,51.3176,39.8357,31.3546,38.958,21.9026,6.7098,35.0913 +AI,B2,MobileDeviceScreenSharing.y4m,v14.0.0,-41.4065,-64.6681,-65.3489,-44.235,-43.9091,-42.4858,-45.6182,-43.4655,-43.5031,-51.0811,-41.404,-64.6619,-65.066,-42.4796 +AI,B2,MobileDeviceScreenSharing.y4m,v15.0.0,-41.4065,-64.6681,-65.3489,-44.235,-43.9091,-42.4858,-45.6182,-43.4655,-43.5031,-51.0811,-41.404,-64.6619,-65.066,-42.4796 AI,B2,SceneComposition_2.y4m,v02.0.0,-2.5738,-30.0126,-42.2316,-6.2425,-2.5346,-2.4466,0.8392,1.5909,-5.1235,-18.5198,-2.5716,-30.0074,-42.2172,-5.7145 AI,B2,SceneComposition_2.y4m,v03.0.0,-14.0215,-23.1804,-47.1082,-16.3036,-14.735,-14.5902,-17.419,-13.5669,-16.0868,-24.8293,-14.0191,-23.1808,-47.0979,-15.8644 AI,B2,SceneComposition_2.y4m,v04.0.0,-23.563,-39.6192,-58.1875,-26.5804,-26.2744,-26.4412,-23.5426,-22.6001,-27.7338,-40.3543,-23.5613,-39.6173,-58.175,-26.3218 @@ -839,8 +837,8 @@ AI,B2,SceneComposition_2.y4m,v10.0.0,-42.1296,-59.2731,-69.5084,-44.978,-44.0446 AI,B2,SceneComposition_2.y4m,v11.0.0,-44.6708,-61.6078,-70.9786,-47.498,-46.547,-47.2307,-45.2467,-44.9001,-48.1677,-57.8592,-44.6707,-61.6029,-70.9652,-47.1569 AI,B2,SceneComposition_2.y4m,v12.0.0,-44.4455,-61.0375,-70.8564,-47.1874,-46.2062,-47.068,-45.6302,-45.2912,-47.7053,-57.6693,-44.4449,-61.029,-70.8419,-46.906 AI,B2,SceneComposition_2.y4m,v13.0.0,-44.9884,-61.7276,-70.6157,-47.6859,-50.2706,-47.2656,-46.0042,-45.2004,-47.9741,-58.4471,-44.9882,-61.7202,-70.6001,-47.4256 -AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,22.0715,11.545,14.1273,21.2219,20.4311,19.8337,21.681,21.7173,18.4054,14.9641,22.1461,11.9768,14.4036,18.9296 -AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,21.3201,17.3103,19.8831,21.0521,25.2378,24.2759,25.594,25.5444,23.6091,19.7162,21.6298,17.5995,20.2466,20.6617 +AI,B2,SceneComposition_2.y4m,v14.0.0,-44.9905,-61.7308,-70.6315,-47.6931,-50.3223,-47.3073,-46.0292,-45.2291,-48.0142,-58.4763,-44.9906,-61.7233,-70.6158,-47.4358 +AI,B2,SceneComposition_2.y4m,v15.0.0,-44.9905,-61.7308,-70.6315,-47.6931,-50.3223,-47.3073,-46.0292,-45.2291,-48.0142,-58.4763,-44.9906,-61.7233,-70.6158,-47.4358 AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v02.0.0,0.0949,-9.8069,-10.2914,-0.8876,1.7015,1.294,0.3047,0.5652,-1.1517,-6.2776,0.1016,-9.673,-10.2462,-2.3686 AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v03.0.0,-7.8601,-11.9567,-16.3868,-8.4714,-6.5088,-6.4429,-7.1407,-6.9849,-8.1967,-12.1734,-7.8436,-11.9409,-16.3361,-9.6519 AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v04.0.0,-26.888,-44.1034,-45.2298,-28.7218,-25.9794,-25.8122,-18.4573,-18.7234,-26.7527,-36.0413,-26.8699,-44.024,-45.2052,-30.6085 @@ -853,8 +851,8 @@ AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v10.0.0,-47.5285,-69.8874,-72.1633,-5 AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v11.0.0,-49.7257,-70.9685,-73.1141,-52.552,-47.7325,-48.1393,-45.3719,-43.2527,-50.7594,-61.7887,-49.7224,-70.9913,-73.0805,-54.7741 AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v12.0.0,-49.6781,-70.8717,-73.0019,-52.478,-47.6521,-48.0777,-45.4004,-43.2228,-50.6492,-61.5663,-49.6744,-70.8919,-72.9744,-54.7084 AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v13.0.0,-49.8221,-71.0669,-72.747,-52.5945,-51.0452,-48.3972,-45.4645,-43.2756,-50.7987,-61.7592,-49.8196,-71.0852,-72.7216,-54.8182 -AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,10.669,11.2877,10.8894,10.7215,11.6378,10.975,15.8538,13.7414,10.8504,11.4242,9.3128,10.8965,10.2128,9.5815 -AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,10.0729,11.31,10.4238,10.1377,11.2968,10.4814,10.5534,10.2953,11.4412,9.4339,8.4772,10.5111,10.5378,8.8287 +AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v14.0.0,-49.8342,-71.0725,-72.7549,-52.6025,-51.0538,-48.4264,-45.4946,-43.2999,-50.8172,-61.7641,-49.8318,-71.0905,-72.7295,-54.8258 +AI,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v15.0.0,-49.8342,-71.0725,-72.7549,-52.6025,-51.0538,-48.4264,-45.4946,-43.2999,-50.8172,-61.7641,-49.8318,-71.0905,-72.7295,-54.8258 AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v02.0.0,-2.2616,-7.8833,-6.5511,-2.6211,-2.9581,-2.8101,-4.1827,-3.693,-1.4385,-5.664,-1.9238,-8.5987,-6.6306,-2.7914 AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v03.0.0,-9.667,-11.3284,-11.6889,-9.7995,-8.954,-9.4349,-7.2625,-6.6451,-9.0548,-12.6063,-10.0899,-12.0965,-11.7816,-10.3398 AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v04.0.0,-16.1335,-20.3077,-19.3965,-16.4064,-16.7057,-17.1925,-17.2666,-16.1097,-16.62,-23.801,-16.9414,-21.9826,-20.3734,-17.4619 @@ -867,8 +865,8 @@ AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v10.0.0,-35.409,-48.5122,-46.5392,-3 AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v11.0.0,-37.7107,-49.2105,-47.8901,-38.5532,-38.2453,-39.1877,-40.8704,-39.8273,-38.1568,-46.4214,-39.8267,-47.5206,-46.376,-40.622 AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v12.0.0,-37.6826,-49.1295,-47.7026,-38.5179,-38.4145,-39.1798,-40.781,-39.7657,-37.9533,-45.7125,-39.7459,-47.7306,-46.1434,-40.537 AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v13.0.0,-38.2654,-48.9466,-47.0486,-39.0174,-43.0779,-39.6742,-41.4919,-40.738,-38.4025,-45.9533,-40.3419,-47.8318,-45.3209,-41.0548 -AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,libaom-v3.12.0,-0.9184,-0.9157,-0.6177,-0.9049,-2.9485,-2.5055,-4.3625,-2.5781,-2.8008,-2.0562,-0.9172,-0.9096,-0.5962,-0.888 -AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,libaom-v3.12.0-unconstrained,-0.1149,-1.5398,-2.5672,-0.2957,-4.0881,-3.4325,-2.5373,-2.6978,-3.0149,-3.8994,-0.1213,-1.5536,-2.5539,-0.2472 +AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v14.0.0,-38.3014,-48.8811,-47.1129,-39.0507,-43.1377,-39.7323,-41.6256,-40.8536,-38.4216,-45.9381,-40.3722,-47.7851,-45.4329,-41.0898 +AI,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v15.0.0,-38.3014,-48.8811,-47.1129,-39.0507,-43.1377,-39.7323,-41.6256,-40.8536,-38.4216,-45.9381,-40.3722,-47.7851,-45.4329,-41.0898 AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v02.0.0,-1.6375,-29.2617,-21.4291,-4.1018,-2.1687,-2.3547,-0.8116,-1.1023,-5.2059,-19.4002,-1.6377,-29.2894,-21.4005,-3.3129 AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v03.0.0,-13.6336,-35.5072,-28.9184,-15.5401,-15.5619,-15.9224,-12.6655,-12.9378,-17.2321,-29.4166,-13.6285,-35.5434,-28.898,-14.9087 AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v04.0.0,-22.2459,-50.2073,-46.4965,-25.1684,-27.2468,-27.3871,-23.6346,-23.3698,-28.0001,-41.0457,-22.2486,-50.2169,-46.5024,-24.2512 @@ -881,8 +879,8 @@ AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v10.0.0,-50.6925,-66.9138,-6 AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v11.0.0,-53.3604,-68.0836,-66.3716,-55.0317,-52.4451,-53.5415,-48.848,-47.3919,-52.8339,-63.7768,-53.3691,-68.0946,-66.3754,-54.7406 AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v12.0.0,-53.3722,-68.0557,-66.2526,-55.0229,-52.5383,-53.5548,-49.0789,-47.6208,-52.848,-63.566,-53.3816,-68.0725,-66.2543,-54.7446 AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v13.0.0,-53.3073,-67.7504,-65.7225,-54.9197,-56.742,-53.3476,-48.7826,-47.3404,-52.5653,-62.7373,-53.3166,-67.7613,-65.7267,-54.6578 -AI,B2,Wikipedia_1920x1080p30.y4m,libaom-v3.12.0,-1.4273,-1.223,-0.1914,-1.3476,-2.3458,-1.8531,-0.9838,-2.0561,-2.7195,-1.6227,-1.4276,-1.2218,-0.1846,-1.2846 -AI,B2,Wikipedia_1920x1080p30.y4m,libaom-v3.12.0-unconstrained,-1.5817,-1.2357,-2.6529,-1.615,-2.4249,-2.1949,-3.8076,-2.8773,-2.5378,-2.6869,-1.5824,-1.242,-2.6547,-1.6057 +AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v14.0.0,-53.3418,-67.7657,-65.7415,-54.953,-56.8136,-53.3649,-48.7978,-47.3612,-52.6161,-62.7777,-53.3514,-67.7767,-65.7455,-54.6912 +AI,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v15.0.0,-53.3418,-67.7657,-65.7415,-54.953,-56.8136,-53.3649,-48.7978,-47.3612,-52.6161,-62.7777,-53.3514,-67.7767,-65.7455,-54.6912 AI,B2,Wikipedia_1920x1080p30.y4m,v02.0.0,-1.6127,-23.4913,-23.1859,-3.6948,-2.2197,-2.8289,-0.2134,-0.6694,-3.3957,-14.6347,-1.6153,-23.5198,-23.2399,-3.3718 AI,B2,Wikipedia_1920x1080p30.y4m,v03.0.0,-13.2936,-31.629,-32.4658,-15.0895,-14.734,-14.5653,-10.6982,-11.1071,-14.2768,-25.0194,-13.2916,-31.6555,-32.5128,-14.7735 AI,B2,Wikipedia_1920x1080p30.y4m,v04.0.0,-21.1588,-42.1199,-41.7041,-23.323,-24.824,-24.9218,-21.0788,-21.1009,-23.4721,-34.6667,-21.158,-42.1369,-41.7356,-23.0801 @@ -895,8 +893,8 @@ AI,B2,Wikipedia_1920x1080p30.y4m,v10.0.0,-35.1344,-54.324,-54.7564,-37.249,-39.4 AI,B2,Wikipedia_1920x1080p30.y4m,v11.0.0,-37.8417,-56.656,-56.9728,-39.9252,-41.6717,-41.9513,-37.6399,-37.0686,-39.1859,-50.2468,-37.8409,-56.6657,-56.9837,-39.5344 AI,B2,Wikipedia_1920x1080p30.y4m,v12.0.0,-37.7049,-55.8617,-56.5301,-39.7289,-41.8884,-42.1052,-37.5232,-36.7501,-38.9776,-48.8296,-37.7039,-55.8734,-56.5461,-39.375 AI,B2,Wikipedia_1920x1080p30.y4m,v13.0.0,-38.3304,-56.2376,-56.1198,-40.2579,-44.1796,-42.2392,-38.3345,-37.4988,-39.4441,-49.2105,-38.3295,-56.2474,-56.1349,-39.9644 -AI,E,Artistic_Concert_1920x1080_25fps.y4m,libaom-v3.12.0,-0.3754,-1.7794,-1.6464,-0.52,0.1914,-0.0856,-3.495,-2.8329,-0.2645,-0.7608,-0.3755,-1.7913,-1.7639,-0.4676 -AI,E,Artistic_Concert_1920x1080_25fps.y4m,libaom-v3.12.0-unconstrained,0.4546,-2.3033,-2.0441,0.1654,0.3212,0.2308,2.0436,2.0981,0.5775,-0.3333,0.4681,-2.3822,-1.9545,0.3133 +AI,B2,Wikipedia_1920x1080p30.y4m,v14.0.0,-38.3271,-56.2548,-56.1506,-40.2591,-44.1911,-42.245,-38.3437,-37.5114,-39.4604,-49.2158,-38.3261,-56.2646,-56.166,-39.9656 +AI,B2,Wikipedia_1920x1080p30.y4m,v15.0.0,-38.3271,-56.2548,-56.1506,-40.2591,-44.1911,-42.245,-38.3437,-37.5114,-39.4604,-49.2158,-38.3261,-56.2646,-56.166,-39.9656 AI,E,Artistic_Concert_1920x1080_25fps.y4m,v02.0.0,-3.5246,-25.7699,-23.1103,-6.1304,-2.7922,-3.0598,-3.786,-3.7613,-3.8721,-11.5704,-3.5361,-25.8636,-21.5187,-4.6369 AI,E,Artistic_Concert_1920x1080_25fps.y4m,v03.0.0,-5.0614,-26.8796,-24.9657,-7.661,-4.0671,-4.4566,-4.7154,-4.8142,-5.283,-12.8742,-5.0789,-26.8494,-23.1464,-6.1745 AI,E,Artistic_Concert_1920x1080_25fps.y4m,v04.0.0,-8.0327,-31.8589,-29.2738,-10.8867,-6.404,-6.9728,-8.9339,-8.5753,-7.8401,-15.6465,-8.0582,-31.9584,-27.5508,-9.2591 @@ -909,8 +907,8 @@ AI,E,Artistic_Concert_1920x1080_25fps.y4m,v10.0.0,-14.2676,-38.7334,-36.828,-17. AI,E,Artistic_Concert_1920x1080_25fps.y4m,v11.0.0,-14.182,-38.4669,-36.2195,-17.1143,-12.1788,-12.4717,-19.0247,-18.2025,-13.9232,-21.4681,-14.2019,-38.5427,-34.0609,-15.4036 AI,E,Artistic_Concert_1920x1080_25fps.y4m,v12.0.0,-14.2184,-38.2505,-36.3779,-17.1434,-12.1755,-12.4988,-19.0515,-18.2301,-13.9648,-21.5164,-14.2354,-38.3135,-34.2673,-15.4362 AI,E,Artistic_Concert_1920x1080_25fps.y4m,v13.0.0,-14.1002,-38.1778,-35.6556,-16.9891,-13.5402,-12.3155,-19.1216,-18.275,-13.7734,-21.0382,-14.1206,-38.2569,-33.5886,-15.3093 -AI,E,Artistic_Intro_1920x1080_2997fps.y4m,libaom-v3.12.0,0.5772,0.4703,-0.0099,0.5401,1.3487,1.0391,-5.8956,-4.1306,0.5078,0.4021,0.6627,0.4661,-0.0239,0.5891 -AI,E,Artistic_Intro_1920x1080_2997fps.y4m,libaom-v3.12.0-unconstrained,1.1222,-1.1425,-1.6367,0.8381,2.0448,1.9341,2.6649,2.4083,1.4026,0.3715,1.1134,-1.1205,-1.622,0.7432 +AI,E,Artistic_Concert_1920x1080_25fps.y4m,v14.0.0,-14.1307,-38.2098,-35.6843,-17.0196,-13.5596,-12.3392,-19.1665,-18.3174,-13.8034,-21.0723,-14.151,-38.2909,-33.6197,-15.3399 +AI,E,Artistic_Concert_1920x1080_25fps.y4m,v15.0.0,-14.1307,-38.2098,-35.6843,-17.0196,-13.5596,-12.3392,-19.1665,-18.3174,-13.8034,-21.0723,-14.151,-38.2909,-33.6197,-15.3399 AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v02.0.0,-2.9025,-5.8216,-8.9139,-3.3902,-2.3351,-2.1056,-4.1873,-3.958,-3.1934,-4.19,-2.9366,-5.7544,-8.8885,-3.4331 AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v03.0.0,-4.2032,-5.7701,-8.2506,-4.5097,-3.0603,-3.1079,-5.6628,-5.2469,-4.0709,-4.7952,-4.221,-5.7099,-8.1884,-4.5083 AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v04.0.0,-9.0783,-14.0369,-16.9534,-9.781,-7.9102,-8.0306,-9.3677,-9.0022,-8.8996,-10.6364,-9.007,-13.8904,-16.9075,-9.8181 @@ -923,8 +921,8 @@ AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v10.0.0,-17.259,-21.2408,-22.9943,-17. AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v11.0.0,-16.8819,-20.4983,-22.4167,-17.3895,-14.704,-15.1743,-19.4443,-18.3248,-16.1724,-18.3378,-16.7642,-20.4005,-22.4421,-17.3512 AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v12.0.0,-16.6223,-20.3426,-22.3423,-17.1496,-13.8964,-14.1203,-19.9737,-18.7274,-15.9241,-17.7365,-16.5053,-20.2236,-22.3468,-17.1026 AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v13.0.0,-16.9857,-21.124,-22.7826,-17.5385,-15.7173,-14.5694,-20.3667,-19.1003,-16.224,-18.1781,-16.8571,-21.0082,-22.79,-17.4999 -AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,libaom-v3.12.0,0.256,0.2992,-0.2428,0.2369,-0.1574,-0.3701,-4.6253,-2.6942,-0.3773,0.0238,0.3109,0.3101,-0.2152,0.2808 -AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,libaom-v3.12.0-unconstrained,0.7015,-1.1626,-2.3481,0.4388,0.659,0.5721,-0.4886,-0.2132,0.1235,-0.1307,0.796,-1.1601,-2.3196,0.396 +AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v14.0.0,-17.0081,-21.1435,-22.798,-17.5604,-15.7351,-14.5925,-20.3794,-19.1194,-16.2461,-18.1928,-16.879,-21.0274,-22.8037,-17.521 +AI,E,Artistic_Intro_1920x1080_2997fps.y4m,v15.0.0,-17.0081,-21.1435,-22.798,-17.5604,-15.7351,-14.5925,-20.3794,-19.1194,-16.2461,-18.1928,-16.879,-21.0274,-22.8037,-17.521 AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v02.0.0,-2.9287,-5.508,-8.1702,-3.3726,-2.308,-2.2775,-3.5797,-3.1825,-3.3229,-3.677,-2.8171,-5.5226,-8.0413,-3.4905 AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v03.0.0,-4.922,-6.1452,-9.7179,-5.2624,-3.7884,-3.8127,-4.9118,-4.6212,-4.6889,-5.2132,-4.8387,-6.0213,-9.5061,-5.2951 AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v04.0.0,-12.0127,-15.8941,-22.442,-12.8331,-10.0797,-10.0861,-11.8171,-11.2876,-11.7864,-13.6892,-11.6722,-16.0377,-22.4682,-12.9276 @@ -937,8 +935,8 @@ AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v10.0.0,-25.0267,-27.5059, AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v11.0.0,-25.0495,-26.8613,-33.0667,-25.6084,-23.2281,-22.708,-29.0944,-27.5847,-24.7908,-25.093,-24.837,-26.9865,-33.1384,-25.6521 AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v12.0.0,-25.3912,-26.9997,-33.1072,-25.9212,-23.4906,-23.0447,-28.952,-27.617,-25.06,-25.4108,-25.2139,-27.1173,-33.1871,-25.9776 AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v13.0.0,-25.563,-28.1368,-34.2111,-26.2037,-25.9605,-23.1695,-29.4467,-28.0803,-25.3704,-25.7648,-25.4008,-28.2505,-34.2755,-26.332 -AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,libaom-v3.12.0,-0.0643,-1.9974,-2.2729,-0.2191,-0.122,-0.3755,-1.063,-5.2599,-0.3714,-0.656,-0.05,-2.0323,-2.3105,-0.2801 -AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,libaom-v3.12.0-unconstrained,0.4393,-2.4728,-2.6947,0.1696,-0.416,-0.4138,1.2545,1.2339,-0.1903,-0.7004,0.4381,-2.5004,-2.7206,0.0974 +AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v14.0.0,-25.6449,-28.2229,-34.2927,-26.2859,-26.034,-23.2436,-29.5775,-28.2081,-25.4544,-25.848,-25.4826,-28.3365,-34.3572,-26.4146 +AI,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v15.0.0,-25.6449,-28.2229,-34.2927,-26.2859,-26.034,-23.2436,-29.5775,-28.2081,-25.4544,-25.848,-25.4826,-28.3365,-34.3572,-26.4146 AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v02.0.0,-8.4639,-8.6506,-11.2763,-8.638,-10.5733,-10.2401,-10.5448,-10.6031,-9.5625,-9.5291,-8.5548,-8.7305,-11.3982,-8.8304 AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v03.0.0,-11.6904,-8.9159,-10.2019,-11.4792,-13.7278,-13.3748,-13.9413,-13.8467,-12.3349,-11.6772,-11.8073,-9.0248,-10.3242,-11.6257 AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v04.0.0,-14.9207,-15.4852,-18.9394,-15.1653,-17.0036,-16.7511,-17.9503,-17.5019,-16.0341,-16.0709,-15.0466,-15.5924,-19.0571,-15.4244 @@ -951,8 +949,8 @@ AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v10.0.0,-22.8133,-23.3735,-2 AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v11.0.0,-22.8486,-23.0075,-26.1827,-23.0266,-24.5087,-24.1313,-28.7411,-27.9916,-24.0866,-23.7509,-22.9495,-23.1273,-26.3177,-23.2276 AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v12.0.0,-22.8924,-23.1428,-26.2541,-23.0767,-24.6046,-24.2275,-28.7635,-28.0432,-24.1503,-23.9249,-22.9911,-23.2603,-26.362,-23.2759 AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v13.0.0,-22.9473,-23.9571,-27.3184,-23.2304,-23.4563,-24.1663,-29.0336,-28.1698,-24.1877,-24.1135,-23.0507,-24.0578,-27.4029,-23.4308 -AI,E,MountainBike_1920x1080_30fps_8bit.y4m,libaom-v3.12.0,-0.2354,-1.6741,-1.6232,-0.3647,-0.3754,-0.5745,-0.8644,-0.8712,-0.9778,-0.9511,-0.2124,-1.6796,-1.6207,-0.3954 -AI,E,MountainBike_1920x1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,0.3279,-2.4381,-2.1999,0.0856,0.3196,0.0837,-0.5392,-0.7281,-0.0235,-0.6862,0.3663,-2.4408,-2.2022,0.1335 +AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v14.0.0,-22.9894,-24.0015,-27.3642,-23.2727,-23.4894,-24.2055,-29.1061,-28.2396,-24.2306,-24.1571,-23.0928,-24.1021,-27.4487,-23.4736 +AI,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v15.0.0,-22.9894,-24.0015,-27.3642,-23.2727,-23.4894,-24.2055,-29.1061,-28.2396,-24.2306,-24.1571,-23.0928,-24.1021,-27.4487,-23.4736 AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v02.0.0,-5.1224,-13.0597,-12.7174,-5.8508,-4.618,-5.2669,-4.4489,-4.748,-5.3914,-9.0584,-5.0476,-13.0775,-12.7456,-5.6774 AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v03.0.0,-7.7209,-13.6495,-14.6429,-8.3225,-5.9606,-7.0653,-5.3156,-5.6777,-7.3889,-10.8169,-7.6572,-13.6595,-14.6771,-8.2117 AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v04.0.0,-10.4731,-22.64,-20.8244,-11.5491,-7.9515,-9.3461,-8.5574,-8.6867,-9.9377,-14.8745,-10.3958,-22.6507,-20.8274,-11.3197 @@ -965,8 +963,8 @@ AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v10.0.0,-15.7272,-27.0556,-24.6681,-1 AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v11.0.0,-15.6265,-26.8228,-24.3951,-16.5772,-13.8946,-14.6759,-19.7563,-19.0113,-15.4295,-20.1745,-15.5063,-26.8426,-24.4239,-16.3703 AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v12.0.0,-15.7735,-26.8886,-24.4427,-16.7151,-14.0103,-14.8209,-19.7062,-19.0599,-15.5922,-20.3574,-15.6562,-26.9148,-24.4668,-16.5143 AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v13.0.0,-15.7915,-27.0993,-24.558,-16.7484,-16.6652,-14.8387,-20.2385,-19.4957,-15.6322,-20.2221,-15.677,-27.1265,-24.5761,-16.5524 -AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,libaom-v3.12.0,-4.589,-5.1313,5.8357,-4.4176,0.9576,-4.3253,-0.4842,0.4951,-1.7866,-4.8794,-4.5832,-5.1085,5.6514,-4.4094 -AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,libaom-v3.12.0-unconstrained,-1.5706,-3.2602,-1.3174,-1.6503,1.3388,-1.7933,-0.5727,-0.6068,0.0618,-2.6272,-1.5818,-3.2358,-1.4851,-1.701 +AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v14.0.0,-15.8007,-27.1186,-24.6004,-16.7597,-16.6732,-14.8605,-20.2642,-19.5219,-15.6477,-20.2307,-15.6859,-27.1443,-24.618,-16.564 +AI,E,MountainBike_1920x1080_30fps_8bit.y4m,v15.0.0,-15.8007,-27.1186,-24.6004,-16.7597,-16.6732,-14.8605,-20.2642,-19.5219,-15.6477,-20.2307,-15.6859,-27.1443,-24.618,-16.564 AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v02.0.0,-7.3369,-10.852,-18.844,-8.0926,-2.3202,-3.7278,-10.7864,-11.1416,-6.4278,-8.4024,-7.3202,-10.7986,-17.5911,-8.1319 AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v03.0.0,-10.8248,-11.473,-20.3581,-11.3366,-4.3667,-5.325,-16.9987,-17.1535,-8.8371,-10.9096,-10.8129,-11.3867,-19.2139,-11.262 AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v04.0.0,-14.544,-16.8144,-33.5197,-15.7396,-7.5987,-9.2242,-21.9218,-21.5496,-12.7926,-16.5077,-14.5473,-16.7275,-32.0846,-15.6026 @@ -979,8 +977,8 @@ AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v10.0.0,-22.6838,-24.1389,-44.6 AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v11.0.0,-22.5368,-23.4494,-43.9913,-23.7274,-17.7793,-17.5217,-33.5127,-33.0996,-21.9919,-24.0662,-22.5426,-23.2944,-42.7287,-23.3111 AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v12.0.0,-22.6302,-23.6903,-43.9865,-23.8259,-17.6864,-17.4314,-33.4308,-33.1942,-22.0279,-24.1906,-22.6401,-23.5344,-42.8082,-23.4309 AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v13.0.0,-22.9382,-23.962,-44.6215,-24.1583,-15.8205,-17.6259,-34.2577,-33.9016,-22.3075,-24.5942,-22.9555,-23.8191,-43.5397,-23.7817 -AI,E,Noise_Animation_1280x720_2398fps.y4m,libaom-v3.12.0,-5.8524,6.3146,15.3095,-3.3436,0.0,-5.6359,1.2477,7.9074,-1.213,-8.0841,-4.9176,6.5151,15.3862,-4.6253 -AI,E,Noise_Animation_1280x720_2398fps.y4m,libaom-v3.12.0-unconstrained,-1.5634,-3.4997,2.9985,-0.9279,0.2035,-1.2018,-0.3616,-0.0626,-0.2565,-5.8538,-2.77,-3.4527,3.0544,-2.9391 +AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v14.0.0,-22.9849,-23.9896,-44.647,-24.203,-15.8236,-17.6634,-34.336,-33.9825,-22.3747,-24.6287,-23.0009,-23.8473,-43.5638,-23.8236 +AI,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v15.0.0,-22.9849,-23.9896,-44.647,-24.203,-15.8236,-17.6634,-34.336,-33.9825,-22.3747,-24.6287,-23.0009,-23.8473,-43.5638,-23.8236 AI,E,Noise_Animation_1280x720_2398fps.y4m,v02.0.0,-7.703,-13.829,-7.3147,-7.8008,-4.2413,-5.0552,-7.995,-8.0344,-6.5701,-10.2238,-6.1826,-13.8677,-7.3467,-6.5891 AI,E,Noise_Animation_1280x720_2398fps.y4m,v03.0.0,-8.2627,-8.1789,-2.9039,-7.576,-3.8833,-4.2503,-9.797,-9.8032,-6.5769,-8.9178,-6.9415,-8.2157,-2.8755,-6.5214 AI,E,Noise_Animation_1280x720_2398fps.y4m,v04.0.0,-12.5433,-22.8974,-16.466,-13.2989,-9.0566,-8.6045,-16.3279,-16.3454,-12.7817,-15.0094,-11.1861,-22.9241,-16.3996,-11.9172 @@ -993,8 +991,8 @@ AI,E,Noise_Animation_1280x720_2398fps.y4m,v10.0.0,-22.0425,-44.8124,-33.4521,-24 AI,E,Noise_Animation_1280x720_2398fps.y4m,v11.0.0,-22.0057,-43.3934,-29.3144,-23.8432,-21.561,-17.9196,-39.804,-36.9882,-26.4985,-27.1407,-22.8464,-43.3657,-29.1852,-23.6705 AI,E,Noise_Animation_1280x720_2398fps.y4m,v12.0.0,-22.1849,-43.7059,-29.4923,-24.0413,-21.7825,-18.0271,-39.6652,-37.1879,-26.7074,-27.3708,-23.0506,-43.6844,-29.3735,-23.8655 AI,E,Noise_Animation_1280x720_2398fps.y4m,v13.0.0,-22.8474,-45.2191,-34.0244,-25.0897,-5.5973,-18.65,-40.5815,-37.9592,-27.5257,-28.6193,-23.6048,-45.2099,-33.9455,-24.9845 -AI,E,Noise_Ocean_1920x1080_60fps.y4m,libaom-v3.12.0,-4.8919,15.0154,10.5499,-2.0966,-6.3809,-6.352,-1.1747,-1.1717,-7.2606,-0.8463,-3.8095,15.4348,10.0995,-3.3517 -AI,E,Noise_Ocean_1920x1080_60fps.y4m,libaom-v3.12.0-unconstrained,4.8647,9.8299,-11.2757,6.7486,3.0187,2.2852,1.2887,1.8169,2.5628,6.6932,6.3427,10.1168,-11.2603,7.191 +AI,E,Noise_Animation_1280x720_2398fps.y4m,v14.0.0,-22.9697,-45.3268,-34.1553,-25.2127,-5.675,-18.7486,-40.7687,-38.1433,-27.6511,-28.7302,-23.7238,-45.3177,-34.0765,-25.1061 +AI,E,Noise_Animation_1280x720_2398fps.y4m,v15.0.0,-22.9697,-45.3268,-34.1553,-25.2127,-5.675,-18.7486,-40.7687,-38.1433,-27.6511,-28.7302,-23.7238,-45.3177,-34.0765,-25.1061 AI,E,Noise_Ocean_1920x1080_60fps.y4m,v02.0.0,0.3731,-26.0914,-26.3745,-5.6186,0.9549,0.5153,-2.8636,-2.5414,-0.6388,-7.6054,0.852,-25.7975,-25.3865,0.0504 AI,E,Noise_Ocean_1920x1080_60fps.y4m,v03.0.0,0.7233,-32.9545,-30.172,-6.3426,-0.4313,0.5367,-3.7575,-3.4452,-1.365,-9.5133,1.2357,-32.6191,-29.3673,0.2258 AI,E,Noise_Ocean_1920x1080_60fps.y4m,v04.0.0,-1.8016,-32.8632,-34.1838,-9.1379,-2.4776,-2.1405,-7.1882,-6.8989,-3.8211,-11.2062,-1.3273,-32.5516,-33.429,-2.2834 @@ -1007,8 +1005,8 @@ AI,E,Noise_Ocean_1920x1080_60fps.y4m,v10.0.0,-6.9799,-40.8779,-41.6938,-15.0016, AI,E,Noise_Ocean_1920x1080_60fps.y4m,v11.0.0,-6.8246,-43.1331,-45.7506,-15.2688,-14.2954,-10.2268,-10.7602,-11.6903,-13.5196,-19.3828,-6.602,-42.8832,-45.5368,-7.9291 AI,E,Noise_Ocean_1920x1080_60fps.y4m,v12.0.0,-7.1823,-44.3505,-46.016,-15.8129,-13.1431,-9.6996,-10.813,-11.5798,-12.9645,-19.5732,-7.0249,-44.0142,-45.8952,-8.35 AI,E,Noise_Ocean_1920x1080_60fps.y4m,v13.0.0,-7.4089,-41.8228,-44.0353,-15.4871,-3.7233,-9.7731,-10.9829,-11.9634,-13.0187,-19.9591,-7.2876,-41.5035,-44.1398,-8.5921 -AI,E,Noise_Soccer_1920x1080_50fps.y4m,libaom-v3.12.0,-2.3527,0.734,3.1362,-2.07,-3.9573,-2.824,-7.2219,-5.4555,-3.0256,-2.4688,-2.3527,0.7364,3.1582,-2.162 -AI,E,Noise_Soccer_1920x1080_50fps.y4m,libaom-v3.12.0-unconstrained,0.5056,-0.7698,6.2582,0.9356,-1.7671,-0.9023,-5.6652,-5.5539,-0.6175,0.0316,0.5053,-0.8096,6.285,0.7113 +AI,E,Noise_Ocean_1920x1080_60fps.y4m,v14.0.0,-7.5766,-42.1635,-44.3236,-15.6833,-3.7489,-9.8432,-11.1861,-12.1866,-13.153,-20.182,-7.4494,-41.8456,-44.4289,-8.7625 +AI,E,Noise_Ocean_1920x1080_60fps.y4m,v15.0.0,-7.5766,-42.1635,-44.3236,-15.6833,-3.7489,-9.8432,-11.1861,-12.1866,-13.153,-20.182,-7.4494,-41.8456,-44.4289,-8.7625 AI,E,Noise_Soccer_1920x1080_50fps.y4m,v02.0.0,-0.7018,-25.341,-7.2191,-2.6029,-1.4922,-0.9622,-5.9022,-5.3907,-4.1578,-3.7183,-0.7019,-25.3862,-7.2777,-1.4308 AI,E,Noise_Soccer_1920x1080_50fps.y4m,v03.0.0,-1.5611,-25.1101,-6.541,-3.2662,-3.1025,-1.6789,-8.5804,-7.714,-5.3863,-4.3589,-1.5612,-25.1567,-6.6045,-2.205 AI,E,Noise_Soccer_1920x1080_50fps.y4m,v04.0.0,-4.2045,-31.5548,-7.8553,-6.0569,-5.2645,-3.7672,-13.2402,-12.1158,-7.9216,-7.3215,-4.205,-31.5933,-7.9162,-4.9253 @@ -1021,8 +1019,8 @@ AI,E,Noise_Soccer_1920x1080_50fps.y4m,v10.0.0,-10.2718,-42.3491,-12.0196,-12.31, AI,E,Noise_Soccer_1920x1080_50fps.y4m,v11.0.0,-10.1385,-42.6187,-11.805,-12.201,-10.645,-8.9746,-24.3694,-22.9551,-14.4911,-13.7153,-10.1384,-42.6593,-11.8634,-10.8936 AI,E,Noise_Soccer_1920x1080_50fps.y4m,v12.0.0,-10.2325,-42.3035,-11.8321,-12.2603,-10.7211,-9.0552,-24.1797,-22.8814,-14.5155,-13.7956,-10.2322,-42.3443,-11.8922,-10.9781 AI,E,Noise_Soccer_1920x1080_50fps.y4m,v13.0.0,-10.2975,-42.9386,-11.9697,-12.3774,-6.3947,-9.1092,-24.5788,-23.1736,-14.6483,-13.8516,-10.2973,-42.9771,-12.0249,-11.0682 -AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,libaom-v3.12.0,2.3124,0.5428,0.4151,2.0531,3.0317,3.7053,-6.1602,-1.4155,2.9103,2.2247,2.636,0.5353,0.4626,1.9497 -AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,libaom-v3.12.0-unconstrained,1.8579,-0.9838,-1.0096,1.4531,1.4964,1.7237,2.0614,2.7259,1.5551,-0.0603,2.1929,-0.8187,-0.8988,1.213 +AI,E,Noise_Soccer_1920x1080_50fps.y4m,v14.0.0,-10.3087,-42.9679,-11.9556,-12.3882,-6.3934,-9.0986,-24.6061,-23.2113,-14.6544,-13.8636,-10.3084,-43.0066,-12.0111,-11.0796 +AI,E,Noise_Soccer_1920x1080_50fps.y4m,v15.0.0,-10.3087,-42.9679,-11.9556,-12.3882,-6.3934,-9.0986,-24.6061,-23.2113,-14.6544,-13.8636,-10.3084,-43.0066,-12.0111,-11.0796 AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v02.0.0,-1.4213,-4.9255,-4.6589,-1.889,-1.8475,-2.2855,-1.3822,-1.4747,-2.064,-3.4912,-1.0714,-4.7691,-4.6726,-2.2481 AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v03.0.0,-3.2219,-5.5087,-5.5922,-3.5436,-2.8347,-3.9472,-1.3054,-1.8403,-3.7038,-4.5412,-2.9074,-5.4353,-5.7646,-3.7818 AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v04.0.0,-7.2258,-13.1554,-12.1855,-7.988,-7.2821,-8.5162,-4.2929,-5.0745,-8.2119,-10.4159,-6.7489,-13.1391,-12.4232,-8.664 @@ -1035,8 +1033,8 @@ AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v10.0.0,-15.0435,-16.5393,-14.9065,-15 AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v11.0.0,-14.6968,-17.2845,-16.0192,-14.9786,-13.4101,-15.1897,-11.4579,-12.5237,-14.9636,-16.2764,-14.4733,-16.7536,-16.1827,-15.1435 AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v12.0.0,-14.5569,-17.5008,-15.9619,-14.868,-13.0115,-14.9169,-11.3986,-12.5853,-14.8609,-16.3025,-14.3144,-16.9579,-16.1305,-15.057 AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v13.0.0,-14.7852,-19.3757,-16.9563,-15.2754,-20.3454,-15.1981,-11.5719,-12.739,-15.3887,-17.3065,-14.5422,-18.6807,-16.9984,-15.6349 -AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,libaom-v3.12.0,1.143,-1.0602,-0.9027,0.9846,-0.3873,-0.2492,-3.7083,-2.957,0.172,-2.1855,1.3376,-0.2878,-0.4452,1.0133 -AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,libaom-v3.12.0-unconstrained,1.7104,-2.4014,-2.2625,1.1995,1.5996,1.3575,-0.04,0.363,0.9444,-2.0854,1.8808,-1.4692,-1.5659,1.1127 +AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v14.0.0,-14.8305,-19.4056,-16.994,-15.319,-20.3965,-15.2328,-11.6275,-12.7953,-15.4224,-17.3463,-14.585,-18.712,-17.0353,-15.6752 +AI,E,Shaky_Baseball_3840x2160_5994fps.y4m,v15.0.0,-14.8305,-19.4056,-16.994,-15.319,-20.3965,-15.2328,-11.6275,-12.7953,-15.4224,-17.3463,-14.585,-18.712,-17.0353,-15.6752 AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v02.0.0,-4.6086,-3.1627,-2.2309,-4.3419,-2.6459,-4.6772,-6.89,-6.708,-4.1857,-3.0603,-5.0782,-2.0677,-1.9033,-4.3403 AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v03.0.0,-8.8379,-7.6139,-6.7106,-8.6188,-5.5991,-8.1896,-10.6852,-10.9799,-8.3482,-8.1172,-8.973,-5.5115,-5.9987,-8.2192 AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v04.0.0,-15.5113,-15.6704,-16.8411,-15.6248,-6.6354,-12.9952,-12.4312,-12.9985,-13.7184,-14.1316,-16.4193,-16.314,-19.442,-16.7825 @@ -1049,8 +1047,8 @@ AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v10.0.0,-23.2451,-23.1024,-23.5654,-2 AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v11.0.0,-22.7937,-25.1548,-25.4981,-23.3236,-13.6865,-19.3518,-26.1663,-25.4156,-21.2231,-21.8422,-23.9155,-25.3504,-26.6557,-24.5528 AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v12.0.0,-22.7979,-24.9173,-25.2884,-23.3014,-13.5123,-19.3504,-26.2891,-25.3436,-21.219,-21.6718,-23.9117,-25.0318,-26.3931,-24.4852 AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v13.0.0,-23.037,-24.8971,-25.4813,-23.5013,-39.9303,-19.5569,-26.8752,-25.9985,-21.4704,-21.784,-24.1639,-25.3977,-26.9113,-24.7805 -AI,E,Shaky_Quad_1920x1080_30fps.y4m,libaom-v3.12.0,0.0787,-1.9284,-1.2115,-0.1045,-1.1178,-0.9762,-1.4893,-1.4631,-1.0947,-0.8405,0.0811,-1.9536,-1.2017,0.0024 -AI,E,Shaky_Quad_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,0.2292,-1.9513,-2.5176,0.0039,-1.1689,-0.9782,-7.0459,-5.9672,-0.3371,-1.6145,0.2402,-1.877,-2.3721,0.1604 +AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v14.0.0,-23.097,-24.9407,-25.5526,-23.5606,-39.9712,-19.5994,-26.9457,-26.0695,-21.5245,-21.8362,-24.2253,-25.4361,-26.9834,-24.8405 +AI,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v15.0.0,-23.097,-24.9407,-25.5526,-23.5606,-39.9712,-19.5994,-26.9457,-26.0695,-21.5245,-21.8362,-24.2253,-25.4361,-26.9834,-24.8405 AI,E,Shaky_Quad_1920x1080_30fps.y4m,v02.0.0,-1.1991,-48.3423,-44.7394,-6.8361,-2.9291,-2.5375,-4.5908,-3.9985,-3.8553,-16.4502,-1.2069,-48.3593,-44.5349,-2.415 AI,E,Shaky_Quad_1920x1080_30fps.y4m,v03.0.0,-2.0682,-49.3635,-47.5754,-7.8226,-3.6129,-3.3694,-6.6761,-5.901,-4.7299,-17.7129,-2.0807,-49.3049,-47.3587,-3.3069 AI,E,Shaky_Quad_1920x1080_30fps.y4m,v04.0.0,-4.2371,-49.9149,-50.0614,-9.9619,-6.432,-6.1476,-9.8359,-8.8692,-6.9802,-19.6884,-4.25,-49.9381,-49.8249,-5.4731 @@ -1063,8 +1061,8 @@ AI,E,Shaky_Quad_1920x1080_30fps.y4m,v10.0.0,-8.6716,-52.1005,-49.2782,-13.9574,- AI,E,Shaky_Quad_1920x1080_30fps.y4m,v11.0.0,-8.7417,-55.2716,-50.3028,-14.1006,-10.5282,-10.1778,-16.9371,-16.0842,-11.6895,-24.5515,-8.7636,-55.3756,-50.0506,-9.9129 AI,E,Shaky_Quad_1920x1080_30fps.y4m,v12.0.0,-8.719,-55.2431,-50.565,-14.098,-10.4794,-10.1551,-16.8479,-16.0281,-11.6627,-24.6116,-8.7427,-55.3282,-50.2854,-9.8941 AI,E,Shaky_Quad_1920x1080_30fps.y4m,v13.0.0,-8.8371,-53.4249,-48.1902,-13.9249,-9.6947,-10.2037,-16.8975,-16.1125,-11.6598,-24.0301,-8.8569,-53.5395,-47.9806,-9.9766 -AI,E,Shaky_Walk_1920x1080_25fps.y4m,libaom-v3.12.0,-0.1611,-2.0839,-2.667,-0.3776,-0.2598,-0.3814,-0.5909,-1.031,-0.6414,-1.0049,-0.1555,-2.1906,-2.735,-0.2511 -AI,E,Shaky_Walk_1920x1080_25fps.y4m,libaom-v3.12.0-unconstrained,0.482,0.3963,0.9826,0.5117,-0.0606,-0.1429,2.4348,4.2258,0.4416,-0.0691,0.4738,0.5776,1.1875,0.4569 +AI,E,Shaky_Quad_1920x1080_30fps.y4m,v14.0.0,-8.8621,-53.4525,-48.1791,-13.9475,-9.7157,-10.2163,-16.9285,-16.1407,-11.6984,-24.0546,-8.8818,-53.5666,-47.9736,-10.0011 +AI,E,Shaky_Quad_1920x1080_30fps.y4m,v15.0.0,-8.8621,-53.4525,-48.1791,-13.9475,-9.7157,-10.2163,-16.9285,-16.1407,-11.6984,-24.0546,-8.8818,-53.5666,-47.9736,-10.0011 AI,E,Shaky_Walk_1920x1080_25fps.y4m,v02.0.0,-3.221,-35.3472,-39.9742,-7.3839,-3.3524,-3.3419,-4.7183,-4.4634,-4.6194,-13.8348,-3.1066,-35.7785,-40.2537,-4.1934 AI,E,Shaky_Walk_1920x1080_25fps.y4m,v03.0.0,-4.6514,-37.2854,-43.6132,-9.0101,-4.614,-4.7207,-5.9687,-5.6391,-6.1267,-15.2855,-4.5681,-37.6795,-43.7377,-5.6899 AI,E,Shaky_Walk_1920x1080_25fps.y4m,v04.0.0,-6.7462,-38.4113,-45.5561,-11.0637,-6.6307,-6.8443,-8.3169,-7.8979,-8.0053,-17.2403,-6.7155,-38.7668,-45.6744,-7.8335 @@ -1077,8 +1075,8 @@ AI,E,Shaky_Walk_1920x1080_25fps.y4m,v10.0.0,-11.2637,-37.5466,-41.4367,-14.6247, AI,E,Shaky_Walk_1920x1080_25fps.y4m,v11.0.0,-11.2054,-37.9963,-41.6202,-14.6229,-11.263,-11.0245,-17.3408,-16.8518,-12.9277,-20.1838,-11.043,-38.2969,-41.752,-11.9975 AI,E,Shaky_Walk_1920x1080_25fps.y4m,v12.0.0,-11.2237,-37.9789,-42.079,-14.6657,-11.202,-10.975,-17.2472,-16.7449,-12.9359,-20.2676,-11.06,-38.2871,-42.1348,-12.017 AI,E,Shaky_Walk_1920x1080_25fps.y4m,v13.0.0,-11.2925,-37.4334,-40.2837,-14.5859,-11.0694,-11.0787,-17.3257,-16.7835,-12.9662,-19.9886,-11.1367,-37.7288,-40.3686,-12.0716 -AI,E,Vertical_Carnaby_1080x1920_5994.y4m,libaom-v3.12.0,0.3847,-0.2919,-0.2864,0.3044,0.7822,0.6587,-2.2229,-3.1001,0.2932,0.3314,0.3704,-0.2985,-0.3027,0.2174 -AI,E,Vertical_Carnaby_1080x1920_5994.y4m,libaom-v3.12.0-unconstrained,0.5645,-2.3486,-2.3868,0.2098,1.4897,1.2518,1.3244,1.3026,0.3161,-0.648,0.5513,-2.3641,-2.3965,-0.0733 +AI,E,Shaky_Walk_1920x1080_25fps.y4m,v14.0.0,-11.3064,-37.4438,-40.279,-14.5978,-11.0749,-11.0904,-17.3587,-16.8163,-12.9807,-19.9904,-11.1507,-37.739,-40.3642,-12.0849 +AI,E,Shaky_Walk_1920x1080_25fps.y4m,v15.0.0,-11.3064,-37.4438,-40.279,-14.5978,-11.0749,-11.0904,-17.3587,-16.8163,-12.9807,-19.9904,-11.1507,-37.739,-40.3642,-12.0849 AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v02.0.0,-4.6348,-4.4147,-4.5422,-4.6193,-3.8607,-4.262,-6.3108,-6.2653,-4.3594,-4.5033,-4.6546,-4.4322,-4.5494,-4.6443 AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v03.0.0,-6.9336,-6.4542,-6.5997,-6.8902,-6.1835,-6.683,-8.2041,-8.1999,-6.7057,-6.4025,-6.9396,-6.4542,-6.602,-6.8842 AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v04.0.0,-9.6935,-12.252,-11.9627,-9.9907,-8.7518,-9.3513,-10.875,-10.9654,-9.738,-10.2351,-9.6986,-12.2571,-11.9764,-10.2479 @@ -1091,8 +1089,8 @@ AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v10.0.0,-17.9491,-18.7379,-18.3747,-18. AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v11.0.0,-17.7195,-17.7585,-17.5563,-17.7131,-16.4885,-16.945,-22.7605,-22.0621,-17.3495,-17.4498,-17.7457,-17.7644,-17.5507,-17.7247 AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v12.0.0,-17.7545,-17.9095,-17.566,-17.753,-16.465,-16.9931,-22.6308,-22.0715,-17.424,-17.4212,-17.7592,-17.921,-17.5653,-17.7504 AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v13.0.0,-17.8532,-18.5394,-18.5241,-17.9321,-19.4274,-17.0398,-23.3122,-22.4551,-17.5443,-18.0229,-17.868,-18.5449,-18.5126,-17.9967 -AI,E,WalkingInStreet_1920x1080_30fps.y4m,libaom-v3.12.0,-0.292,-0.3587,-3.0983,-0.3904,0.5215,-0.0259,-1.0873,-0.4533,-0.3024,-0.6729,-0.2921,-0.3552,-3.1079,-0.3679 -AI,E,WalkingInStreet_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,0.7018,-1.27,-3.0925,0.457,1.0358,0.5325,3.0396,3.2629,0.9419,-0.2463,0.7021,-1.2687,-3.1027,0.4698 +AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v14.0.0,-17.9078,-18.5882,-18.5791,-17.9864,-19.4734,-17.0872,-23.3844,-22.5252,-17.5955,-18.0835,-17.9224,-18.5936,-18.5676,-18.0506 +AI,E,Vertical_Carnaby_1080x1920_5994.y4m,v15.0.0,-17.9078,-18.5882,-18.5791,-17.9864,-19.4734,-17.0872,-23.3844,-22.5252,-17.5955,-18.0835,-17.9224,-18.5936,-18.5676,-18.0506 AI,E,WalkingInStreet_1920x1080_30fps.y4m,v02.0.0,-3.9815,-5.1615,-15.3967,-4.4967,-4.2841,-4.2915,-5.8644,-5.6712,-4.2614,-6.6636,-3.9804,-5.158,-15.3711,-4.3333 AI,E,WalkingInStreet_1920x1080_30fps.y4m,v03.0.0,-6.2359,-7.0437,-16.2803,-6.676,-5.9437,-6.2238,-8.2743,-7.9342,-6.2025,-8.4516,-6.2342,-7.0485,-16.2552,-6.5443 AI,E,WalkingInStreet_1920x1080_30fps.y4m,v04.0.0,-8.2371,-10.7064,-20.9243,-8.8814,-7.8777,-8.4263,-10.5004,-9.8826,-8.0131,-11.4388,-8.2354,-10.7003,-20.9049,-8.7057 @@ -1105,8 +1103,8 @@ AI,E,WalkingInStreet_1920x1080_30fps.y4m,v10.0.0,-14.1416,-18.714,-25.6703,-14.8 AI,E,WalkingInStreet_1920x1080_30fps.y4m,v11.0.0,-13.9637,-18.309,-25.3882,-14.6897,-13.8407,-13.887,-19.4787,-18.7813,-14.0154,-18.3089,-13.9619,-18.294,-25.3605,-14.5669 AI,E,WalkingInStreet_1920x1080_30fps.y4m,v12.0.0,-13.9425,-17.9133,-24.4047,-14.608,-13.8573,-13.8537,-19.6254,-18.9995,-13.9826,-18.0509,-13.9399,-17.9026,-24.3819,-14.4988 AI,E,WalkingInStreet_1920x1080_30fps.y4m,v13.0.0,-13.9162,-17.951,-24.4812,-14.5908,-13.8512,-13.8883,-19.6387,-18.9718,-13.966,-18.0847,-13.9136,-17.9369,-24.4446,-14.4831 -AI,E,WorldCup_far_1920x1080_30p.y4m,libaom-v3.12.0,-0.2594,-0.7627,-0.5909,-0.3016,-0.3331,-0.4476,-1.4415,-8.0607,-0.6498,-0.4261,-0.2566,-0.7454,-0.5896,-0.3287 -AI,E,WorldCup_far_1920x1080_30p.y4m,libaom-v3.12.0-unconstrained,0.4863,-1.4973,-1.8181,0.262,0.458,0.2807,3.0213,2.0131,0.3029,-0.2955,0.4838,-1.4921,-1.821,0.1982 +AI,E,WalkingInStreet_1920x1080_30fps.y4m,v14.0.0,-13.9275,-17.9601,-24.4803,-14.6017,-13.8434,-13.8895,-19.6701,-19.0008,-13.9749,-18.1005,-13.9251,-17.9466,-24.4425,-14.4939 +AI,E,WalkingInStreet_1920x1080_30fps.y4m,v15.0.0,-13.9275,-17.9601,-24.4803,-14.6017,-13.8434,-13.8895,-19.6701,-19.0008,-13.9749,-18.1005,-13.9251,-17.9466,-24.4425,-14.4939 AI,E,WorldCup_far_1920x1080_30p.y4m,v02.0.0,-4.8278,-7.0891,-7.3843,-5.0822,-5.0546,-5.3559,-4.2225,-4.516,-4.9516,-6.5834,-4.8274,-7.0795,-7.3708,-5.1544 AI,E,WorldCup_far_1920x1080_30p.y4m,v03.0.0,-6.97,-9.9759,-8.1688,-7.194,-6.2156,-6.9367,-5.3492,-5.6079,-6.608,-9.0157,-6.9725,-9.9645,-8.1653,-7.2788 AI,E,WorldCup_far_1920x1080_30p.y4m,v04.0.0,-10.5546,-15.3428,-14.3981,-11.0137,-9.5607,-10.5311,-8.7346,-8.8652,-9.9158,-13.3413,-10.561,-15.3068,-14.3804,-11.1197 @@ -1119,8 +1117,8 @@ AI,E,WorldCup_far_1920x1080_30p.y4m,v10.0.0,-17.9216,-23.2212,-20.7377,-18.3591, AI,E,WorldCup_far_1920x1080_30p.y4m,v11.0.0,-17.8469,-22.9734,-20.3088,-18.2565,-16.0589,-17.3233,-18.5728,-18.2062,-16.7032,-21.4738,-17.8495,-22.9429,-20.2995,-18.3776 AI,E,WorldCup_far_1920x1080_30p.y4m,v12.0.0,-17.976,-23.1011,-20.5466,-18.3914,-16.1651,-17.446,-18.8724,-18.4698,-16.8174,-21.5999,-17.9792,-23.0654,-20.5342,-18.5106 AI,E,WorldCup_far_1920x1080_30p.y4m,v13.0.0,-17.8234,-23.4846,-20.3038,-18.2657,-19.4492,-17.2527,-18.6655,-18.3148,-16.6893,-21.5559,-17.8272,-23.4514,-20.292,-18.399 -AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,libaom-v3.12.0,-0.5081,-3.7136,-3.8711,-0.674,-1.5804,-0.5524,-1.8203,-2.0478,-0.879,-1.6134,-0.5084,-3.7147,-3.8664,-0.7032 -AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,0.3305,-5.419,-12.4149,-0.7436,0.0541,0.3057,-0.266,-0.3158,-0.1538,-1.7014,0.3303,-5.4233,-12.4075,-0.0873 +AI,E,WorldCup_far_1920x1080_30p.y4m,v14.0.0,-17.8419,-23.4894,-20.3438,-18.2846,-19.456,-17.2645,-18.6977,-18.348,-16.7113,-21.5706,-17.8455,-23.4559,-20.3293,-18.4171 +AI,E,WorldCup_far_1920x1080_30p.y4m,v15.0.0,-17.8419,-23.4894,-20.3438,-18.2846,-19.456,-17.2645,-18.6977,-18.348,-16.7113,-21.5706,-17.8455,-23.4559,-20.3293,-18.4171 AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v02.0.0,-4.299,-26.5481,-47.7804,-9.7889,-3.0149,-4.3789,-5.3971,-5.4994,-4.748,-15.0973,-4.2996,-26.5733,-47.7581,-6.472 AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v03.0.0,-6.8664,-31.8582,-50.9014,-12.2238,-4.2092,-6.2802,-6.1411,-6.477,-7.0058,-19.668,-6.8663,-31.8266,-50.9505,-9.0252 AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v04.0.0,-8.7422,-33.5656,-54.217,-14.0325,-4.9121,-8.022,-8.9795,-8.9294,-8.7551,-21.3507,-8.7431,-33.5282,-53.916,-10.8721 @@ -1133,8 +1131,8 @@ AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v10.0.0,-14.7559,-34.5562,0.0,-19.69 AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v11.0.0,-14.6056,-43.6221,-61.699,-20.8313,-12.6602,-13.7362,-19.1905,-18.5946,-15.2425,-29.6538,-14.606,-43.6383,-61.7057,-17.2745 AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v12.0.0,-14.6489,-43.0444,-60.3158,-20.767,-12.697,-13.6771,-19.2526,-18.6628,-15.2585,-29.375,-14.6496,-43.056,-60.4344,-17.2936 AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v13.0.0,-14.6593,-43.8867,-55.78,-20.4735,-15.8645,-13.7823,-19.1303,-18.4915,-15.2605,-29.2121,-14.6596,-43.905,-56.2913,-17.2445 -AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0,-0.3508,-1.5388,-0.2933,-0.3599,-0.4844,-0.2466,-1.0914,-1.2553,-0.4322,-0.7487,-0.3506,-1.5383,-0.2953,-0.4074 -AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0-unconstrained,0.4778,-1.6464,-5.7037,0.2791,0.3135,0.5841,0.2062,0.1568,0.4027,-0.7426,0.4776,-1.6536,-5.7404,0.3361 +AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v14.0.0,-14.6186,-43.8466,-55.7476,-20.4341,-15.8397,-13.7535,-19.0917,-18.4518,-15.2329,-29.1708,-14.6189,-43.8648,-56.2581,-17.2037 +AI,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v15.0.0,-14.6186,-43.8466,-55.7476,-20.4341,-15.8397,-13.7535,-19.0917,-18.4518,-15.2329,-29.1708,-14.6189,-43.8648,-56.2581,-17.2037 AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v02.0.0,-1.5026,-39.1281,-70.4702,-8.3623,-1.6895,-1.7249,-1.1616,-1.3272,-3.4988,-18.0597,-1.5011,-39.1301,-70.4061,-5.6557 AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v03.0.0,-4.6908,-42.4876,-69.4933,-11.1251,-3.5971,-4.4458,-7.9977,-7.7975,-6.2981,-21.9901,-4.69,-42.493,-69.5008,-8.754 AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v04.0.0,-8.7893,-47.4346,-72.0594,-15.2605,-6.6181,-8.3723,-12.1811,-11.6094,-10.0892,-25.8856,-8.7879,-47.4405,-72.0406,-13.159 @@ -1147,8 +1145,8 @@ AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v10.0.0,-15.6482,-62.0787,-69.8638 AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v11.0.0,-16.0324,-64.3177,-69.4909,-22.8682,-13.2677,-15.0736,-23.1296,-22.4772,-17.6784,-36.1736,-16.0324,-64.3285,-69.4753,-21.6541 AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v12.0.0,-15.9032,-64.3681,-69.5488,-22.7951,-13.1875,-14.8223,-23.1865,-22.4976,-17.5034,-36.1841,-15.9048,-64.373,-69.522,-21.5551 AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v13.0.0,-15.7242,-64.4318,-65.5072,-22.2165,-18.1925,-14.7846,-23.3127,-22.5497,-17.3171,-36.0056,-15.7243,-64.4392,-65.3577,-21.3419 -AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0,-4.2081,-3.8569,-1.2413,-4.1453,-1.5374,-3.3584,1.4512,1.5191,-2.177,-0.5118,-4.2141,-3.859,-1.2535,-3.5492 -AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0-unconstrained,-1.5516,-2.9567,-9.6988,-1.7877,0.5735,-0.8087,1.2839,1.5439,-0.0604,-4.6479,-1.5557,-2.9568,-9.7402,-1.3418 +AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v14.0.0,-15.6993,-64.4186,-65.4928,-22.1928,-18.177,-14.764,-23.2746,-22.5119,-17.2967,-35.9824,-15.6994,-64.426,-65.3433,-21.317 +AI,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v15.0.0,-15.6993,-64.4186,-65.4928,-22.1928,-18.177,-14.764,-23.2746,-22.5119,-17.2967,-35.9824,-15.6994,-64.426,-65.3433,-21.317 AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v02.0.0,-0.9274,-6.0012,-35.3794,-3.189,-2.148,-1.7465,-1.3962,-1.7365,-2.2582,-20.2823,-0.9318,-6.0636,-35.7208,-2.8756 AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v03.0.0,-6.0123,-5.5224,-35.392,-7.6754,-3.9771,-4.3842,-3.3056,-3.9343,-5.5739,-16.2278,-6.0196,-5.5833,-35.5066,-7.1794 AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v04.0.0,-9.0806,-7.709,-37.8502,-10.6457,-6.9625,-7.8596,-7.4309,-7.8289,-8.5647,-19.3388,-9.0863,-7.698,-38.0285,-10.1594 @@ -1161,8 +1159,8 @@ AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v10.0.0,-16.5881,-16.486,-43.6949,- AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v11.0.0,-17.1137,-17.1772,-50.5439,-19.1843,-14.9107,-15.8347,-17.216,-17.2425,-16.589,-39.4624,-17.1213,-17.2376,-50.6361,-18.3132 AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v12.0.0,-17.2597,-18.5645,-51.2634,-19.4002,-15.192,-15.9615,-18.4288,-18.2912,-16.7834,-42.1615,-17.2685,-18.6186,-51.3978,-18.6115 AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v13.0.0,-18.0912,-23.4868,-50.7785,-20.3338,-16.4463,-16.6051,-19.4947,-19.3968,-17.6732,-40.1196,-18.1008,-23.5298,-50.9305,-19.8467 -AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,libaom-v3.12.0,0.4318,-2.3109,-4.3984,0.1701,-1.4575,-0.7433,-7.1096,-7.9646,-1.6932,-1.1459,0.4471,-2.2792,-4.3828,0.0818 -AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,0.4655,-2.2065,-4.2693,0.2012,-0.3646,-0.1767,0.3862,0.6407,-0.4597,-1.0225,0.4808,-2.2702,-4.251,0.1601 +AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v14.0.0,-18.0187,-23.3788,-50.6461,-20.2572,-16.4311,-16.5582,-19.3638,-19.2691,-17.6129,-40.0218,-18.0282,-23.4212,-50.798,-19.7675 +AI,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v15.0.0,-18.0187,-23.3788,-50.6461,-20.2572,-16.4311,-16.5582,-19.3638,-19.2691,-17.6129,-40.0218,-18.0282,-23.4212,-50.798,-19.7675 AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v02.0.0,-12.2237,-30.3306,-31.1516,-13.9607,-9.2044,-10.9285,-11.9623,-11.9526,-11.5593,-17.868,-12.261,-30.7051,-31.2672,-13.6987 AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v03.0.0,-16.826,-38.385,-38.1453,-18.8267,-11.2197,-14.3813,-16.04,-15.9183,-15.1304,-23.7474,-16.8619,-38.8541,-38.2114,-18.6368 AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v04.0.0,-19.907,-45.5224,-43.665,-22.2324,-13.2802,-17.4765,-19.411,-18.9995,-18.1952,-27.8567,-19.927,-45.9595,-43.7087,-22.113 @@ -1175,8 +1173,8 @@ AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v10.0.0,-27.2775,-52.2626,-48.8225, AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v11.0.0,-27.2736,-53.2664,-49.8471,-29.6358,-20.017,-23.6361,-27.2988,-27.2776,-25.1262,-35.3152,-27.3123,-53.6805,-49.8944,-29.5053 AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v12.0.0,-27.217,-52.6588,-48.7487,-29.497,-19.9382,-23.401,-27.3229,-27.2829,-24.923,-35.0965,-27.2591,-53.0826,-48.8002,-29.3664 AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v13.0.0,-27.2574,-53.2699,-48.7036,-29.5798,-28.2402,-23.4396,-27.3739,-27.2757,-24.9495,-35.4375,-27.2982,-53.6923,-48.7668,-29.4317 -AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,libaom-v3.12.0,-0.4651,-1.0282,-1.0047,-0.5195,-0.2114,-0.2697,-1.173,-1.136,-0.4321,-0.8388,-0.465,-1.029,-1.004,-0.6325 -AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,libaom-v3.12.0-unconstrained,0.6207,-1.6568,-1.3863,0.313,0.8465,0.8929,0.538,0.5248,0.2394,-0.3901,0.621,-1.6582,-1.3863,0.0657 +AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v14.0.0,-27.2492,-53.2642,-48.695,-29.5716,-28.2316,-23.4295,-27.3611,-27.2627,-24.9436,-35.4305,-27.2901,-53.6867,-48.7582,-29.4233 +AI,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v15.0.0,-27.2492,-53.2642,-48.695,-29.5716,-28.2316,-23.4295,-27.3611,-27.2627,-24.9436,-35.4305,-27.2901,-53.6867,-48.7582,-29.4233 AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v02.0.0,-5.8327,-6.5272,-6.1572,-5.9065,-4.63,-4.9664,-6.8991,-6.8888,-5.0167,-5.7405,-5.8324,-6.5276,-6.1578,-5.9563 AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v03.0.0,-8.2553,-8.0211,-8.1025,-8.2341,-6.7667,-6.9705,-8.0358,-8.1235,-7.181,-7.624,-8.2547,-8.0214,-8.1047,-8.225 AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v04.0.0,-10.8572,-14.5373,-13.6586,-11.3274,-9.11,-9.3702,-11.0461,-10.967,-10.1373,-11.5258,-10.8572,-14.5356,-13.655,-11.6253 @@ -1189,8 +1187,8 @@ AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v10.0.0,-18.5228,-18.8798,-17.9699 AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v11.0.0,-18.4967,-18.9468,-17.6834,-18.4724,-16.6041,-16.72,-19.9958,-19.7198,-17.0266,-17.7059,-18.4967,-18.9477,-17.6809,-18.414 AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v12.0.0,-18.4019,-18.7921,-17.6612,-18.3782,-16.4411,-16.5167,-19.7575,-19.4483,-16.9683,-17.6818,-18.4008,-18.7905,-17.6595,-18.3201 AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v13.0.0,-18.6751,-19.4483,-18.8553,-18.7467,-21.6306,-16.7347,-19.9588,-19.7109,-17.2343,-18.2687,-18.6744,-19.4435,-18.8517,-18.7592 -AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,libaom-v3.12.0,1.1781,-1.6414,-0.5021,1.0427,2.3664,2.4098,-6.6863,-3.1119,1.318,0.6718,1.1893,-1.6321,-0.4422,1.0866 -AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,libaom-v3.12.0-unconstrained,1.1212,-1.3503,-2.8394,0.9083,1.6585,1.6584,0.0907,0.0961,1.302,0.397,1.1367,-1.359,-2.8354,0.976 +AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v14.0.0,-18.6208,-19.4055,-18.8106,-18.6938,-21.5827,-16.6864,-19.8931,-19.6461,-17.1908,-18.2186,-18.6201,-19.4008,-18.807,-18.707 +AI,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v15.0.0,-18.6208,-19.4055,-18.8106,-18.6938,-21.5827,-16.6864,-19.8931,-19.6461,-17.1908,-18.2186,-18.6201,-19.4008,-18.807,-18.707 AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v02.0.0,-3.4563,-17.4315,-32.1848,-5.3967,-2.3315,-2.5875,-4.5083,-4.1435,-3.3014,-9.9908,-3.4344,-17.5637,-32.2337,-4.6321 AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v03.0.0,-7.2202,-25.8052,-48.0354,-10.0393,-4.5472,-5.2264,-7.0482,-5.7084,-5.2651,-16.6973,-7.2141,-25.9312,-48.0815,-8.7987 AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v04.0.0,-9.2999,-35.6474,-53.9597,-12.894,-6.363,-7.1597,-8.5206,-7.2055,-7.5251,-22.052,-9.2939,-35.7704,-54.0072,-11.5549 @@ -1203,8 +1201,8 @@ AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v10.0.0,-16.6163,-47.1454,-57.5572,- AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v11.0.0,-16.4455,-47.916,-59.353,-20.4316,-14.3305,-14.6879,-18.1373,-17.4909,-15.9543,-32.4282,-16.4422,-48.0183,-59.414,-18.9316 AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v12.0.0,-16.4744,-47.6725,-59.4656,-20.446,-14.314,-14.6233,-18.1013,-17.4265,-16.0111,-32.3902,-16.4649,-47.7849,-59.5232,-18.9389 AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v13.0.0,-16.7948,-48.7923,-58.3119,-20.7522,-17.7226,-14.9348,-18.4748,-17.7808,-16.2342,-32.931,-16.7878,-48.9021,-58.3485,-19.2795 -AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,libaom-v3.12.0,-0.1091,-1.6184,-3.1766,-0.2483,-0.3049,0.039,-1.4342,-1.6117,-0.1212,-0.2942,-0.1091,-1.612,-3.183,-0.1752 -AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,0.3981,-1.1394,-8.2291,-0.1659,0.5546,0.5864,-0.1299,-0.1179,0.2792,-2.1417,0.3985,-1.1728,-8.2747,0.3022 +AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v14.0.0,-16.7661,-48.7684,-58.2913,-20.7241,-17.7005,-14.904,-18.4331,-17.7404,-16.2084,-32.9014,-16.7592,-48.8783,-58.3279,-19.2508 +AI,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v15.0.0,-16.7661,-48.7684,-58.2913,-20.7241,-17.7005,-14.904,-18.4331,-17.7404,-16.2084,-32.9014,-16.7592,-48.8783,-58.3279,-19.2508 AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v02.0.0,-3.1003,-55.9966,-62.4522,-9.349,-3.4985,-3.6095,-4.3074,-4.1261,-4.4016,-26.7421,-3.1,-56.0398,-62.5587,-4.59 AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v03.0.0,-4.5372,-55.7392,-63.6709,-10.5743,-4.3422,-4.5874,-4.3543,-4.1602,-5.4584,-27.3744,-4.5369,-55.547,-63.6978,-6.0056 AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v04.0.0,-7.2319,-58.4894,-63.4241,-13.1736,-6.9262,-7.3032,-8.5997,-8.0299,-7.9673,-28.9752,-7.2319,-58.4293,-63.3972,-8.7252 @@ -1217,8 +1215,8 @@ AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v10.0.0,-13.5554,-64.4485,-64.0168, AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v11.0.0,-13.4551,-65.1497,-65.5056,-19.8574,-12.4869,-12.7403,-17.0424,-16.3951,-14.1106,-34.7564,-13.4549,-65.1204,-65.4348,-15.0026 AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v12.0.0,-13.4477,-65.3501,-63.5397,-19.7331,-12.3891,-12.6355,-17.0235,-16.4001,-14.1376,-34.5115,-13.4476,-65.3096,-63.42,-14.9788 AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v13.0.0,-13.6243,-64.6274,0.0,-19.5954,-14.4648,-12.935,-17.2054,-16.44,-14.2794,-34.9734,-13.624,-64.5978,0.0,-15.1165 -AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,libaom-v3.12.0,-0.5888,-1.5622,-0.0746,-0.5708,-0.6258,-0.5349,-2.1939,-1.9518,-0.649,-0.7478,-0.5893,-1.5644,-0.0617,-0.6144 -AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,0.1032,-1.2674,-2.9685,-0.0862,0.3643,0.4425,-0.2116,-0.1984,0.1048,-1.0572,0.1027,-1.28,-2.8586,0.0419 +AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v14.0.0,-13.5675,-64.602,0.0,-19.5432,-14.4265,-12.8797,-17.1111,-16.3481,-14.2272,-34.9238,-13.5672,-64.5725,0.0,-15.0601 +AI,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v15.0.0,-13.5675,-64.602,0.0,-19.5432,-14.4265,-12.8797,-17.1111,-16.3481,-14.2272,-34.9238,-13.5672,-64.5725,0.0,-15.0601 AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v02.0.0,-7.4078,-33.8331,-41.012,-12.1243,-7.07,-7.1176,-7.9006,-7.8105,-8.7571,-21.3007,-7.409,-33.879,-40.9179,-9.3794 AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v03.0.0,-11.4625,-39.8126,-47.4401,-16.7837,-10.0031,-10.4599,-12.0753,-12.033,-12.6289,-26.7999,-11.4631,-39.708,-47.3882,-13.6103 AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v04.0.0,-14.6631,-41.6668,-46.8032,-19.5239,-12.6717,-13.2916,-15.4862,-15.079,-15.5912,-29.2061,-14.6637,-41.6266,-46.6654,-16.6735 @@ -1231,8 +1229,8 @@ AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v10.0.0,-23.8242,-45.7608,-47.4545,- AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v11.0.0,-23.8183,-50.5932,-47.9606,-28.6655,-21.2998,-21.9788,-26.3259,-25.5515,-24.6659,-39.2664,-23.8178,-50.5733,-48.0134,-25.8168 AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v12.0.0,-24.2553,-50.959,-48.6391,-29.0409,-21.7665,-22.4273,-26.7122,-25.9403,-25.142,-39.574,-24.2537,-50.9282,-48.5851,-26.2341 AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v13.0.0,-24.4943,-50.3747,-48.9087,-28.6917,-27.8824,-22.6622,-27.2029,-26.3546,-25.2296,-39.3235,-24.4929,-50.3362,-48.904,-26.3085 -AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,libaom-v3.12.0,-0.6438,-2.5911,-2.6372,-0.9455,-0.7906,-0.6558,-8.311,-7.0028,-0.877,-1.4046,-0.5315,-2.5805,-2.732,-0.9338 -AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,libaom-v3.12.0-unconstrained,0.518,-3.1282,-3.3065,-0.052,0.5879,0.7166,-1.5102,-1.3909,-0.1909,-1.0166,0.5368,-3.1417,-3.3179,-0.334 +AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v14.0.0,-24.3707,-50.2597,-48.8279,-28.5743,-27.7876,-22.5541,-27.0525,-26.207,-25.1248,-39.2072,-24.3693,-50.2209,-48.8208,-26.187 +AI,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v15.0.0,-24.3707,-50.2597,-48.8279,-28.5743,-27.7876,-22.5541,-27.0525,-26.207,-25.1248,-39.2072,-24.3693,-50.2209,-48.8208,-26.187 AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v02.0.0,-3.3419,-7.5441,-8.7926,-4.0595,-3.7559,-3.7583,-7.6336,-7.3009,-4.3298,-4.3594,-3.5373,-7.659,-8.7611,-4.4943 AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v03.0.0,-6.6708,-12.0689,-16.6197,-7.8534,-6.9255,-7.0552,-8.7727,-8.5475,-8.0504,-8.9591,-6.8778,-12.1784,-16.6363,-8.4959 AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v04.0.0,-10.7537,-20.227,-24.4689,-12.5727,-11.9045,-11.694,-13.1605,-12.9708,-13.1387,-13.9961,-10.9518,-20.4348,-24.6196,-13.4298 @@ -1245,8 +1243,8 @@ AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v10.0.0,-19.4894,-26.3742,-30.517 AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v11.0.0,-18.8855,-28.6042,-34.1414,-20.8732,-19.9645,-19.6774,-20.4956,-20.4381,-21.1721,-23.8115,-19.0881,-28.8032,-34.4831,-21.9188 AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v12.0.0,-18.8797,-29.2281,-34.1291,-20.9094,-19.9382,-19.6455,-20.5796,-20.5554,-21.2513,-23.9212,-19.1171,-29.4402,-34.438,-22.0132 AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v13.0.0,-22.5339,-39.6705,-50.0426,-26.2807,-27.9734,-22.8678,-24.4563,-24.4108,-25.9179,-31.4878,-22.7465,-39.7821,-49.8543,-27.6762 -AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,libaom-v3.12.0,-1.5353,-9.3379,-6.9492,-1.8359,-1.7495,-1.5677,-1.8651,-2.0415,-1.8949,-2.621,-1.5352,-9.3453,-6.9376,-1.6531 -AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,libaom-v3.12.0-unconstrained,-0.226,-12.0305,-8.418,-0.5679,-0.5328,-0.3073,-1.2584,-1.2179,-0.6036,-1.6306,-0.2265,-11.9776,-8.4157,-0.2812 +AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v14.0.0,-22.4008,-39.5668,-49.9614,-26.1545,-27.8763,-22.7592,-24.3223,-24.2791,-25.8126,-31.3666,-22.6128,-39.6784,-49.7726,-27.5515 +AI,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v15.0.0,-22.4008,-39.5668,-49.9614,-26.1545,-27.8763,-22.7592,-24.3223,-24.2791,-25.8126,-31.3666,-22.6128,-39.6784,-49.7726,-27.5515 AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v02.0.0,-16.8042,-55.2455,-56.3648,-22.018,-17.9346,-17.7071,-15.5217,-15.1047,-18.5322,-31.7542,-16.8091,-55.26,-56.2477,-19.0586 AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v03.0.0,-22.4224,-48.7726,-58.1349,-26.6607,-20.9976,-21.9433,-19.9309,-19.157,-22.1993,-37.4458,-22.428,-47.8025,-58.0878,-24.2776 AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v04.0.0,-25.6345,-52.8585,-60.0895,-29.9187,-23.3119,-24.572,-22.0605,-21.2911,-24.7588,-40.6472,-25.6413,-51.8206,-59.9893,-27.4793 @@ -1259,8 +1257,8 @@ AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v10.0.0,-33.6707,-40.7411,-64.5434,- AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v11.0.0,-34.5388,-64.5236,-71.4638,-39.3901,-30.6902,-32.5103,-27.3199,-27.1721,-33.0575,-50.437,-34.5434,-64.3026,-71.2662,-36.6138 AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v12.0.0,-34.4889,-64.7553,-72.9118,-39.4826,-30.6158,-32.4357,-27.4401,-27.3024,-33.024,-50.5228,-34.4924,-64.5621,-72.6542,-36.5998 AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v13.0.0,-34.9484,-60.8311,-71.8551,-39.6263,-40.2613,-32.9105,-27.9673,-27.8121,-33.4132,-50.5375,-34.9527,-60.4887,-71.5665,-36.9754 -AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,libaom-v3.12.0,-0.3051,-1.3647,-0.4001,-0.3218,0.2093,0.0635,-1.1611,-1.483,-0.238,-0.6752,-0.3051,-1.3655,-0.3967,-0.3333 -AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,0.2805,-4.1828,-2.2318,0.0808,0.418,0.3724,0.031,-0.1354,0.3017,-1.7315,0.2805,-4.1917,-2.2224,0.2231 +AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v14.0.0,-34.8624,-60.7114,-71.7627,-39.5376,-40.2259,-32.8308,-27.8032,-27.6496,-33.3324,-50.4393,-34.8667,-60.3668,-71.473,-36.8882 +AI,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v15.0.0,-34.8624,-60.7114,-71.7627,-39.5376,-40.2259,-32.8308,-27.8032,-27.6496,-33.3324,-50.4393,-34.8667,-60.3668,-71.473,-36.8882 AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v02.0.0,-3.2608,-50.5238,-42.7808,-7.1259,-2.6345,-2.742,-5.2207,-5.3473,-3.8485,-18.5372,-3.2604,-50.5558,-42.8222,-4.5805 AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v03.0.0,-5.355,-51.8442,-50.9421,-9.3359,-3.6326,-4.1558,-6.3704,-6.4341,-5.4423,-21.0612,-5.3551,-51.8599,-50.8405,-6.7307 AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v04.0.0,-8.2118,-53.9337,-53.9942,-12.2083,-5.8902,-6.6713,-10.0981,-9.9346,-8.0033,-23.7052,-8.2119,-53.8532,-53.7714,-9.6666 @@ -1273,8 +1271,8 @@ AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v10.0.0,-14.9485,-57.2063,-62.7762,-1 AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v11.0.0,-14.7644,-60.0247,-62.7595,-19.1775,-12.3171,-12.7136,-19.8314,-19.0708,-14.5598,-31.5164,-14.7644,-60.0427,-62.7131,-16.4216 AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v12.0.0,-14.8454,-59.9601,-60.1922,-19.1571,-12.3922,-12.7831,-20.3564,-19.4677,-14.6715,-31.6841,-14.8452,-59.9554,-59.9021,-16.4828 AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v13.0.0,-15.0517,-59.1249,-62.816,-19.2112,-14.4112,-13.0236,-20.7494,-19.7789,-14.8427,-31.9689,-15.0517,-59.1236,-62.4955,-16.6615 -AS,A1,BoxingPractice,libaom-v3.12.0,3.5313,-4.0571,-3.8451,2.3802,-0.3294,2.5675,12.4955,10.8896,2.0188,-1.4834,3.3791,-4.4985,-4.3202,2.3808 -AS,A1,BoxingPractice,libaom-v3.12.0-unconstrained,-5.7429,-11.9054,-11.5523,-6.6448,-8.1326,-8.3805,1.2008,0.1326,-6.9694,-11.5142,-6.0322,-12.0902,-11.7286,-6.7859 +AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v14.0.0,-15.0066,-59.0837,-62.7802,-19.1661,-14.3849,-12.9845,-20.6731,-19.7019,-14.8044,-31.9187,-15.0067,-59.0822,-62.4592,-16.6155 +AI,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v15.0.0,-15.0066,-59.0837,-62.7802,-19.1661,-14.3849,-12.9845,-20.6731,-19.7019,-14.8044,-31.9187,-15.0067,-59.0822,-62.4592,-16.6155 AS,A1,BoxingPractice,v02.0.0,-2.0683,-8.634,-10.7548,-3.18,-1.8327,-2.4182,-1.8993,-1.5512,-2.4365,-6.4932,-2.1011,-8.6148,-10.815,-2.9829 AS,A1,BoxingPractice,v03.0.0,-12.7948,-14.1418,-19.1759,-13.4548,-9.5296,-11.8217,-17.3383,-15.5463,-11.8633,-14.8235,-12.8613,-14.0937,-19.209,-13.3836 AS,A1,BoxingPractice,v04.0.0,-19.7242,-25.9643,-30.0654,-20.8256,-16.1441,-19.0368,-24.6822,-22.7465,-18.7992,-23.8424,-19.7917,-25.9412,-30.0883,-20.7156 @@ -1287,8 +1285,8 @@ AS,A1,BoxingPractice,v10.0.0,-30.0379,-34.9241,-42.6331,-31.2304,-24.9667,-27.95 AS,A1,BoxingPractice,v11.0.0,-30.4892,-35.2949,-43.6995,-31.6782,-25.1357,-27.8581,-35.7228,-33.9056,-29.3077,-34.547,-30.6892,-35.4041,-43.8156,-31.7567 AS,A1,BoxingPractice,v12.0.0,-30.8414,-35.2656,-42.9711,-31.9497,-25.382,-28.0636,-35.7766,-34.1695,-29.5966,-34.6038,-31.0374,-35.3766,-43.0917,-32.0356 AS,A1,BoxingPractice,v13.0.0,-30.8812,-35.0209,-42.7854,-31.9659,-30.9038,-28.1913,-36.1783,-34.4587,-29.5654,-34.6674,-31.0732,-35.1132,-42.9039,-32.0589 -AS,A1,Crosswalk,libaom-v3.12.0,-1.0126,-10.4155,-11.174,-2.3431,-6.0836,-4.7978,-1.5752,-1.9272,-3.6056,-5.5621,-1.0832,-10.8314,-11.73,-1.8446 -AS,A1,Crosswalk,libaom-v3.12.0-unconstrained,-6.841,0.3403,0.6749,-6.133,-7.7492,-7.3943,-4.3465,-4.6833,-7.7741,-5.1103,-7.1824,0.0022,0.2611,-6.7364 +AS,A1,BoxingPractice,v14.0.0,-30.4939,-34.7333,-42.6048,-31.5947,-30.6041,-27.8284,-35.7256,-34.0143,-29.2397,-34.296,-30.6864,-34.8247,-42.728,-31.6875 +AS,A1,BoxingPractice,v15.0.0,-30.4833,-34.7564,-42.6151,-31.587,-30.5785,-27.8048,-35.6825,-33.9785,-29.2242,-34.3053,-30.6768,-34.8476,-42.738,-31.6799 AS,A1,Crosswalk,v02.0.0,-3.0964,-5.8395,-6.0932,-3.4141,-2.748,-3.405,-1.7693,-3.3644,-3.431,-3.7831,-3.1452,-5.7341,-6.0578,-3.2993 AS,A1,Crosswalk,v03.0.0,-14.7415,-14.0345,-15.3612,-14.7059,-12.4739,-14.7591,-17.4275,-16.9684,-14.4271,-13.9101,-14.8113,-13.9605,-15.1902,-14.7762 AS,A1,Crosswalk,v04.0.0,-21.1362,-26.2189,-26.5613,-21.7861,-18.4963,-21.7456,-27.8251,-26.6782,-20.9401,-22.1955,-21.234,-26.2603,-26.3881,-21.6073 @@ -1301,8 +1299,8 @@ AS,A1,Crosswalk,v10.0.0,-31.3262,-36.7588,-36.4517,-31.9603,-27.2215,-30.3715,-3 AS,A1,Crosswalk,v11.0.0,-32.2279,-36.6357,-37.1515,-32.8029,-28.7673,-31.316,-36.2318,-35.3645,-31.5856,-33.3938,-32.4299,-36.8131,-37.2693,-32.8158 AS,A1,Crosswalk,v12.0.0,-32.4635,-37.7246,-37.3836,-33.1137,-28.8815,-31.455,-36.08,-35.3075,-31.7463,-33.5672,-32.7371,-37.9434,-37.4478,-33.1433 AS,A1,Crosswalk,v13.0.0,-32.7808,-37.5662,-38.0704,-33.4077,-34.8618,-31.7163,-36.4942,-35.7925,-32.024,-34.0332,-33.0025,-37.7372,-38.1961,-33.4047 -AS,A1,FoodMarket2,libaom-v3.12.0,-0.5979,-4.7145,-2.6103,-0.846,-2.4761,-1.2463,7.2377,6.5291,-1.7583,-2.0438,-1.151,-5.3074,-3.2773,-1.3201 -AS,A1,FoodMarket2,libaom-v3.12.0-unconstrained,-5.6189,-0.963,-0.6099,-4.9825,-6.1127,-6.982,-1.5798,-2.0117,-6.363,-4.7944,-6.6988,-2.6304,-2.4133,-6.1991 +AS,A1,Crosswalk,v14.0.0,-32.2622,-37.0734,-37.6031,-32.8941,-34.4524,-31.3358,-36.1379,-35.438,-31.5942,-33.4859,-32.4864,-37.2454,-37.7234,-32.8908 +AS,A1,Crosswalk,v15.0.0,-32.2566,-37.0665,-37.5569,-32.8872,-34.4536,-31.3387,-36.1625,-35.4546,-31.5817,-33.4761,-32.4808,-37.2398,-37.6731,-32.8847 AS,A1,FoodMarket2,v02.0.0,-2.8429,-11.2842,-6.8722,-3.4911,-1.9479,-2.7707,-4.0509,-4.2205,-2.9231,-5.3871,-2.7869,-11.5011,-6.997,-3.4062 AS,A1,FoodMarket2,v03.0.0,-13.4776,-16.8665,-13.1722,-13.6379,-10.189,-12.8629,-19.6894,-19.059,-12.6353,-14.2806,-13.3747,-17.0108,-13.0688,-13.5766 AS,A1,FoodMarket2,v04.0.0,-22.0456,-29.5159,-25.1226,-22.6271,-17.7175,-21.7269,-31.4225,-30.4033,-21.0189,-24.315,-21.8499,-29.6548,-24.9864,-22.4389 @@ -1315,8 +1313,8 @@ AS,A1,FoodMarket2,v10.0.0,-31.7702,-40.7389,-33.9557,-32.3689,-27.451,-30.3756,- AS,A1,FoodMarket2,v11.0.0,-32.4746,-41.0262,-33.8048,-33.0466,-28.1891,-30.6896,-41.2956,-40.4246,-30.9387,-34.7635,-32.2536,-41.1114,-33.7211,-32.8582 AS,A1,FoodMarket2,v12.0.0,-32.5801,-41.2089,-33.5738,-33.1309,-28.2623,-30.6639,-41.6206,-40.7298,-30.9839,-34.8568,-32.3638,-41.3319,-33.5388,-32.9546 AS,A1,FoodMarket2,v13.0.0,-32.7685,-41.4349,-33.4516,-33.2981,-32.5257,-30.8662,-41.6632,-40.8001,-31.1315,-35.0539,-32.5536,-41.5375,-33.3301,-33.1273 -AS,A1,Neon1224,libaom-v3.12.0,5.3294,-0.6499,4.4281,4.9945,-5.8042,-2.2519,11.1456,10.7111,2.5461,0.8566,6.3986,0.3506,5.6045,5.9931 -AS,A1,Neon1224,libaom-v3.12.0-unconstrained,-5.0609,-6.0021,-5.8863,-5.2577,-3.8756,-4.5714,-1.3004,-1.5768,-5.2145,-6.4276,-6.8415,-7.5596,-7.7479,-7.0759 +AS,A1,FoodMarket2,v14.0.0,-32.484,-41.2335,-33.1864,-33.019,-32.3357,-30.6392,-41.4484,-40.5777,-30.909,-34.7808,-32.2669,-41.3446,-33.0662,-32.8494 +AS,A1,FoodMarket2,v15.0.0,-32.4827,-41.2047,-33.1996,-33.0162,-32.3464,-30.6403,-41.454,-40.5783,-30.9133,-34.7693,-32.2683,-41.3086,-33.0748,-32.8454 AS,A1,Neon1224,v02.0.0,-3.249,-3.175,-2.9073,-3.2236,-3.9046,-3.2651,-0.7972,-0.9257,-3.5488,-3.0747,-3.3101,-3.1516,-2.8648,-3.2338 AS,A1,Neon1224,v03.0.0,-9.559,-4.8426,-5.2029,-8.9381,-7.9501,-8.8366,-8.8363,-8.81,-8.8837,-6.893,-9.5028,-4.6915,-5.1449,-8.6008 AS,A1,Neon1224,v04.0.0,-14.1614,-13.5273,-14.4734,-14.0828,-11.6553,-13.5247,-16.5432,-16.1952,-13.7247,-13.665,-14.13,-13.4372,-14.5248,-14.0199 @@ -1329,8 +1327,8 @@ AS,A1,Neon1224,v10.0.0,-24.7858,-21.2977,-23.1692,-24.4812,-20.7024,-23.9264,-30 AS,A1,Neon1224,v11.0.0,-24.642,-21.3611,-22.4797,-24.3478,-20.1339,-24.056,-29.3398,-28.6505,-23.4079,-22.5775,-24.7288,-21.563,-22.6374,-24.3191 AS,A1,Neon1224,v12.0.0,-24.7413,-21.2271,-22.4773,-24.4395,-20.8482,-24.0316,-29.815,-29.1866,-23.5713,-22.7343,-24.832,-21.4281,-22.6484,-24.4059 AS,A1,Neon1224,v13.0.0,-24.65,-21.5076,-22.2678,-24.3593,-28.6217,-23.9481,-29.5289,-28.896,-23.4648,-22.5952,-24.7416,-21.6768,-22.4396,-24.3116 -AS,A1,NocturneDance,libaom-v3.12.0,2.41,-7.5695,-14.0255,2.0368,-0.0445,2.5777,3.0119,2.6854,2.1151,-3.6717,2.3217,-7.8567,-14.2657,2.2981 -AS,A1,NocturneDance,libaom-v3.12.0-unconstrained,-13.7704,-13.783,-12.9041,-13.6789,-13.629,-16.7242,-11.6191,-11.6153,-13.5219,-19.5597,-14.6142,-14.2903,-12.9695,-14.9237 +AS,A1,Neon1224,v14.0.0,-24.5729,-21.4073,-22.137,-24.2721,-28.5826,-23.8839,-29.4662,-28.8446,-23.4002,-22.5251,-24.6631,-21.5815,-22.3071,-24.221 +AS,A1,Neon1224,v15.0.0,-24.5735,-21.4265,-22.1043,-24.2715,-28.5718,-23.8809,-29.3188,-28.7522,-23.3935,-22.5688,-24.6686,-21.6053,-22.2502,-24.2228 AS,A1,NocturneDance,v02.0.0,-1.8259,-11.3276,-13.4667,-2.5367,-2.2122,-1.7875,-2.743,-2.797,-2.3672,-4.8353,-1.8486,-11.4404,-13.5648,-2.9595 AS,A1,NocturneDance,v03.0.0,-10.3282,-19.0542,-24.6301,-11.1796,-9.9097,-8.9785,-14.1514,-13.7732,-10.2537,-14.9396,-10.3799,-19.1976,-24.6903,-11.8404 AS,A1,NocturneDance,v04.0.0,-15.0365,-30.1505,-36.5286,-16.7468,-13.4767,-13.8253,-20.7672,-19.9509,-15.346,-22.3961,-14.9494,-30.2565,-36.6233,-17.8932 @@ -1343,8 +1341,8 @@ AS,A1,NocturneDance,v10.0.0,-25.7161,-46.3821,-45.3087,-27.7827,-21.8419,-22.86, AS,A1,NocturneDance,v11.0.0,-25.5443,-47.1874,-47.2087,-27.7753,-21.4595,-22.3687,-32.2978,-31.7162,-26.043,-34.8897,-25.5663,-47.3906,-47.3755,-29.6436 AS,A1,NocturneDance,v12.0.0,-25.8343,-47.676,-48.308,-28.0276,-21.7577,-22.2537,-32.9622,-32.444,-25.8837,-35.256,-25.8367,-47.8709,-48.5051,-29.9532 AS,A1,NocturneDance,v13.0.0,-25.9151,-47.6978,-47.7502,-28.0822,-22.1222,-22.2879,-32.7754,-32.2705,-25.9567,-35.0203,-25.9184,-47.9085,-47.9286,-30.0137 -AS,A1,PierSeaSide,libaom-v3.12.0,3.9827,6.0071,6.9414,4.1536,-0.4375,1.104,18.5026,17.1381,4.0392,1.9644,4.0495,5.549,6.7771,4.1282 -AS,A1,PierSeaSide,libaom-v3.12.0-unconstrained,-8.7228,-8.2676,-13.1432,-9.0055,-4.9404,-5.1473,0.9105,0.1399,-7.5744,-8.9362,-9.174,-8.751,-13.5427,-9.3788 +AS,A1,NocturneDance,v14.0.0,-25.4057,-47.1435,-46.8622,-27.5562,-21.9519,-22.0007,-32.6095,-32.1022,-25.5239,-34.3267,-25.41,-47.3439,-47.0411,-29.483 +AS,A1,NocturneDance,v15.0.0,-25.3745,-47.1894,-46.8192,-27.5471,-21.9553,-22.0198,-32.5798,-32.1073,-25.5143,-34.3371,-25.3999,-47.3908,-46.9986,-29.4785 AS,A1,PierSeaSide,v02.0.0,-0.7816,-7.1358,-13.9835,-1.684,0.2101,-0.9002,0.4299,0.352,-1.008,-5.3223,-0.7777,-7.329,-14.5047,-2.0313 AS,A1,PierSeaSide,v03.0.0,-11.8341,-16.0419,-23.5305,-12.5944,-8.4718,-10.9194,-12.9786,-12.8169,-10.3804,-16.5783,-11.8981,-16.2585,-24.02,-13.1144 AS,A1,PierSeaSide,v04.0.0,-17.7295,-29.0834,-38.4342,-19.1904,-13.0655,-16.3088,-20.8934,-20.0658,-16.3705,-25.5275,-17.7036,-29.2354,-38.9141,-19.9348 @@ -1357,8 +1355,8 @@ AS,A1,PierSeaSide,v10.0.0,-30.1327,-39.4313,-46.2477,-31.3346,-24.9879,-27.5612, AS,A1,PierSeaSide,v11.0.0,-30.7329,-39.6398,-46.5513,-31.9273,-26.9442,-28.5914,-33.2957,-33.5332,-28.6669,-38.6587,-30.8305,-40.0046,-46.9908,-32.8123 AS,A1,PierSeaSide,v12.0.0,-31.1278,-39.8624,-46.4246,-32.3299,-27.3214,-28.956,-34.1201,-34.0946,-28.9859,-38.8531,-31.2029,-40.2282,-46.8473,-33.19 AS,A1,PierSeaSide,v13.0.0,-31.1504,-41.0247,-46.4868,-32.3558,-29.2419,-29.027,-33.7666,-33.8214,-29.0438,-39.8046,-31.2287,-41.3119,-46.8917,-33.2404 -AS,A1,Tango,libaom-v3.12.0,0.2703,-13.2592,-9.9534,-1.2153,-7.0319,-5.3947,-0.1946,-0.3543,-2.7581,-6.5511,0.3904,-13.5594,-10.3269,-0.5808 -AS,A1,Tango,libaom-v3.12.0-unconstrained,-7.0804,-0.1887,-4.3003,-6.5846,-9.7357,-8.8251,-3.1774,-3.0311,-7.859,-7.0053,-7.851,-0.7002,-5.1364,-7.4875 +AS,A1,PierSeaSide,v14.0.0,-30.171,-40.0615,-45.7176,-31.3979,-28.5336,-28.1402,-32.627,-32.7456,-28.2094,-38.7864,-30.274,-40.3966,-46.1287,-32.2714 +AS,A1,PierSeaSide,v15.0.0,-30.1689,-40.0819,-45.7097,-31.3971,-28.537,-28.1425,-32.6265,-32.746,-28.2116,-38.7892,-30.2708,-40.4183,-46.1194,-32.27 AS,A1,Tango,v02.0.0,-2.8441,-8.5553,-4.2945,-3.3087,-2.8685,-2.8513,-2.4539,-2.088,-3.1519,-4.1924,-2.8667,-8.4716,-4.2895,-3.1054 AS,A1,Tango,v03.0.0,-14.9166,-13.3132,-11.1754,-14.5473,-12.8485,-14.1504,-19.1604,-18.094,-14.1724,-14.5194,-15.048,-13.0507,-11.1251,-14.7403 AS,A1,Tango,v04.0.0,-21.5454,-26.7625,-22.3582,-21.9035,-19.3015,-21.5161,-28.1515,-26.4307,-21.099,-23.5928,-21.6754,-26.629,-22.3506,-21.8358 @@ -1371,8 +1369,8 @@ AS,A1,Tango,v10.0.0,-32.9518,-40.877,-33.9412,-33.5321,-28.7018,-31.3364,-40.464 AS,A1,Tango,v11.0.0,-33.7673,-42.0879,-35.4218,-34.4177,-30.0986,-32.3835,-40.8402,-39.2691,-32.8103,-36.2507,-34.0619,-42.1945,-35.6073,-34.3551 AS,A1,Tango,v12.0.0,-34.1537,-42.5773,-36.1631,-34.8623,-30.2636,-32.7424,-42.1575,-40.6554,-33.1787,-36.771,-34.4477,-42.6834,-36.3903,-34.7599 AS,A1,Tango,v13.0.0,-34.2937,-41.706,-35.394,-34.8685,-36.5964,-32.9738,-41.1856,-39.6306,-33.2505,-36.5179,-34.5918,-41.8158,-35.6365,-34.8383 -AS,A1,TimeLapse,libaom-v3.12.0,3.21,-9.0218,-13.6594,-0.0574,-5.5758,0.7684,20.0162,16.9526,0.5919,-7.0676,3.7998,-9.0604,-14.5281,1.7855 -AS,A1,TimeLapse,libaom-v3.12.0-unconstrained,-8.66,-16.6326,-16.4954,-10.209,-11.7313,-9.6693,-0.7287,-2.8928,-9.2042,-15.206,-8.3006,-16.4595,-15.5367,-9.3107 +AS,A1,Tango,v14.0.0,-33.9593,-41.1728,-35.1063,-34.527,-36.3593,-32.7277,-40.9999,-39.4584,-32.9897,-36.1212,-34.2601,-41.2869,-35.3292,-34.505 +AS,A1,Tango,v15.0.0,-33.9593,-41.271,-35.1044,-34.5313,-36.3613,-32.7318,-41.0038,-39.4619,-32.9935,-36.146,-34.2598,-41.3878,-35.3451,-34.4905 AS,A1,TimeLapse,v02.0.0,-0.4987,-13.5492,-13.6432,-2.9009,-0.4604,-0.5389,2.195,2.1071,-1.5049,-8.4581,-0.5098,-13.5271,-14.4591,-2.1169 AS,A1,TimeLapse,v03.0.0,-5.9625,-18.9629,-20.6793,-8.3297,-4.4241,-4.0356,-6.6333,-6.7313,-6.2325,-13.6923,-5.9512,-18.9769,-21.7611,-7.5607 AS,A1,TimeLapse,v04.0.0,-16.762,-31.1467,-34.8442,-19.2887,-12.1066,-13.7043,-16.1566,-16.9744,-15.6399,-25.5011,-16.4765,-31.218,-35.6517,-18.218 @@ -1385,8 +1383,8 @@ AS,A1,TimeLapse,v10.0.0,-27.3324,-43.3114,-40.3895,-29.7109,-20.8364,-22.83,-31. AS,A1,TimeLapse,v11.0.0,-27.5155,-44.8699,-43.574,-30.3271,-22.7965,-23.0832,-31.5235,-31.6324,-25.9591,-38.1889,-27.1787,-44.9138,-44.5568,-29.1124 AS,A1,TimeLapse,v12.0.0,-27.979,-45.6408,-43.5197,-30.8205,-22.7949,-23.5129,-31.5977,-31.881,-26.46,-38.7852,-27.6357,-45.6552,-44.4492,-29.5684 AS,A1,TimeLapse,v13.0.0,-28.2789,-45.3284,-43.4693,-31.0805,-25.8118,-23.815,-32.0093,-32.0888,-26.7189,-38.8971,-27.9392,-45.3614,-44.4075,-29.8548 -LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,5.3537,29.8446,35.066,7.0803,8.4618,11.5401,-3.1908,-4.5024,5.148,18.0444,3.0493,28.4925,34.2901,5.2307 -LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,5.5418,2.6109,3.877,5.3436,4.6673,4.858,5.9839,6.1808,5.219,4.0149,5.2847,2.669,3.8518,5.3556 +AS,A1,TimeLapse,v14.0.0,-27.6374,-44.8608,-42.8269,-30.4623,-25.3912,-23.3155,-31.2951,-31.3701,-26.1873,-38.3538,-27.2955,-44.8938,-43.7847,-29.2157 +AS,A1,TimeLapse,v15.0.0,-27.633,-44.8606,-42.8228,-30.4548,-25.3768,-23.3086,-31.2725,-31.3673,-26.1935,-38.3453,-27.2906,-44.8938,-43.7683,-29.2093 LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v02.0.0,-2.0141,-13.4047,-21.9694,-3.2722,-2.0688,-1.9386,-1.3545,-1.665,-2.3106,-5.4703,-2.0418,-13.7799,-22.2943,-3.248 LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v03.0.0,-3.2895,-18.5366,-25.5853,-4.8098,-2.7307,-2.6241,-1.8936,-2.5231,-3.4885,-8.3517,-3.1955,-18.9891,-25.8923,-4.6461 LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v04.0.0,-12.117,-25.3753,-33.6014,-13.5283,-9.6469,-10.4248,-8.3366,-9.3505,-11.2737,-16.247,-12.286,-25.8429,-33.8863,-13.6065 @@ -1399,8 +1397,8 @@ LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v10.0.0,-18.1956,-29.9398,-43.9856 LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v11.0.0,-21.6658,-32.3435,-45.4009,-23.0744,-17.7158,-18.2794,-18.8755,-20.2649,-19.8389,-25.3081,-21.9541,-32.8437,-45.6981,-23.2177 LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v12.0.0,-21.8759,-30.7862,-45.4137,-23.1959,-17.7947,-18.3811,-18.7004,-20.148,-19.9609,-25.2106,-22.1064,-31.2552,-45.6896,-23.3128 LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v13.0.0,-21.4229,-33.5611,-46.2318,-22.9361,-20.3571,-18.8539,-17.1667,-18.6496,-19.5523,-26.3203,-21.5241,-33.9157,-46.4898,-22.9113 -LD,A2,Boat_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,14.2821,6.588,23.3871,14.3074,17.0461,18.6854,20.9085,20.4099,15.9919,16.1157,16.6613,5.0419,22.6895,16.3213 -LD,A2,Boat_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,4.7575,0.9139,0.0895,4.3275,3.4361,2.8693,6.3721,6.2117,3.9056,2.7827,5.4996,0.9253,0.0802,5.6686 +LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v14.0.0,-21.1115,-33.3759,-45.9696,-22.6312,-20.1388,-18.6748,-17.2415,-18.6496,-19.2971,-25.9835,-21.1971,-33.7507,-46.232,-22.5867 +LD,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v15.0.0,-21.1147,-33.3922,-45.9685,-22.6348,-20.1423,-18.6713,-17.231,-18.6457,-19.3018,-25.9863,-21.2047,-33.7755,-46.2354,-22.5949 LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v02.0.0,-0.8548,-27.9989,-19.364,-2.8598,-0.9669,-0.9775,0.0342,-0.0648,-1.2614,-8.3571,-0.9809,-28.5564,-19.4384,-2.4771 LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v03.0.0,-3.3799,-28.8348,-18.756,-5.1734,-1.6522,-2.0938,-2.7909,-2.5158,-2.4779,-10.8268,-3.4826,-29.4332,-18.8369,-4.9261 LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v04.0.0,-6.6616,-49.6944,-30.5337,-9.8799,-4.6033,-5.1689,-6.4555,-5.9697,-5.6389,-19.2208,-6.7273,-50.3302,-30.542,-8.981 @@ -1413,8 +1411,8 @@ LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v10.0.0,-14.0125,-54.8165,-40.7982,-17.3 LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v11.0.0,-13.8417,-52.2091,-38.0397,-16.9052,-11.6027,-10.7028,-13.8722,-13.5464,-13.1949,-24.3507,-14.3061,-52.7902,-37.9446,-16.4524 LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v12.0.0,-14.0866,-52.4114,-37.0083,-17.0632,-11.4373,-10.7371,-13.8296,-13.4659,-13.2591,-24.4028,-14.55,-52.9872,-36.9141,-16.6395 LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v13.0.0,-14.571,-55.8571,-41.2862,-17.9138,-13.1374,-12.1654,-14.1516,-13.8084,-13.4324,-26.434,-14.8699,-56.4278,-41.131,-17.1265 -LD,A2,CrowdRun_1920x1080p50.y4m,libaom-v3.12.0,14.4533,-9.0746,-7.1902,12.4855,16.1784,11.7886,31.3121,30.7667,19.4,6.7063,21.5876,-8.6953,-6.6792,18.6373 -LD,A2,CrowdRun_1920x1080p50.y4m,libaom-v3.12.0-unconstrained,5.3337,1.9582,2.6618,4.9963,4.6176,4.2168,6.41,6.7581,5.453,4.854,6.0748,1.9836,2.8738,6.1946 +LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v14.0.0,-14.4948,-55.2808,-41.4908,-17.8246,-13.0642,-12.0434,-13.9843,-13.6593,-13.3738,-26.2916,-14.7876,-55.8374,-41.3643,-17.0398 +LD,A2,Boat_1920x1080_5994_10bit_420.y4m,v15.0.0,-14.4971,-55.2798,-41.492,-17.8274,-13.065,-12.0427,-13.9847,-13.6607,-13.3754,-26.2936,-14.7898,-55.8363,-41.3652,-17.0424 LD,A2,CrowdRun_1920x1080p50.y4m,v02.0.0,-1.0677,-5.4606,-7.1578,-1.5012,-1.0191,-1.1284,-2.1479,-1.9397,-0.5734,-2.467,-1.2617,-5.7057,-7.3771,-1.6968 LD,A2,CrowdRun_1920x1080p50.y4m,v03.0.0,-3.8823,-10.1578,-8.8463,-4.3447,-3.327,-3.3769,-5.6911,-4.9435,-2.5958,-6.9103,-4.0693,-10.4033,-9.0473,-4.5815 LD,A2,CrowdRun_1920x1080p50.y4m,v04.0.0,-7.68,-19.1525,-17.4988,-8.58,-6.5271,-6.5907,-10.4994,-9.4374,-6.2268,-12.3799,-7.9121,-19.5018,-17.7213,-8.9139 @@ -1427,8 +1425,8 @@ LD,A2,CrowdRun_1920x1080p50.y4m,v10.0.0,-14.0136,-20.8617,-19.0397,-14.5086,-10. LD,A2,CrowdRun_1920x1080p50.y4m,v11.0.0,-14.6909,-19.84,-18.1534,-15.0424,-10.7212,-10.5972,-18.8164,-17.6175,-13.1878,-18.0939,-15.3851,-20.3391,-18.4602,-15.8199 LD,A2,CrowdRun_1920x1080p50.y4m,v12.0.0,-15.1093,-20.5581,-19.152,-15.4984,-10.8199,-10.8727,-19.0014,-17.8232,-13.582,-18.553,-15.8086,-21.089,-19.4856,-16.2846 LD,A2,CrowdRun_1920x1080p50.y4m,v13.0.0,-14.8275,-21.8327,-20.0349,-15.3327,-12.5432,-11.605,-18.6043,-17.4293,-13.3193,-19.161,-15.4057,-22.2476,-20.2735,-15.9856 -LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,libaom-v3.12.0,6.0387,13.1051,-20.5648,4.7366,5.0764,2.8012,14.7598,13.8677,7.5392,6.7336,10.3037,19.5955,-20.9599,9.0057 -LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,3.6793,-13.4822,-10.3053,1.9764,-0.4327,0.6012,3.7019,2.7617,1.2542,-5.3296,3.836,-15.5648,-10.8283,1.1824 +LD,A2,CrowdRun_1920x1080p50.y4m,v14.0.0,-14.8294,-21.8146,-20.0595,-15.3352,-12.4793,-11.5575,-18.6898,-17.5308,-13.3082,-19.1023,-15.4091,-22.2367,-20.296,-15.9921 +LD,A2,CrowdRun_1920x1080p50.y4m,v15.0.0,-14.844,-21.8232,-20.045,-15.3482,-12.5144,-11.599,-18.701,-17.5395,-13.3308,-19.1183,-15.4233,-22.2465,-20.2811,-16.0036 LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v02.0.0,-1.1963,-4.5039,-11.279,-1.937,0.008,-0.8769,0.0014,-0.4223,-0.9095,-2.918,-1.1524,-4.7571,-11.4996,-2.0803 LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v03.0.0,-8.0845,-8.8731,-15.1691,-8.5364,-6.0121,-6.6913,-10.8495,-9.8099,-7.0814,-9.7499,-8.2963,-9.1493,-15.5685,-8.9343 LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v04.0.0,-11.9968,-15.826,-21.07,-12.712,-10.4335,-10.8936,-20.0438,-17.3626,-11.1302,-13.539,-12.3283,-16.0979,-21.4353,-13.2432 @@ -1441,8 +1439,8 @@ LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v10.0.0,-24.667,-29.183 LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v11.0.0,-26.655,-29.3775,-30.2518,-27.0403,-26.4157,-25.5347,-33.33,-31.5223,-26.5998,-26.5703,-27.6626,-30.7719,-31.0416,-28.3077 LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v12.0.0,-27.6495,-29.6356,-33.9526,-28.1408,-26.4969,-25.8328,-33.8619,-32.1702,-27.2697,-27.6627,-28.6996,-30.9955,-34.7254,-29.3558 LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v13.0.0,-26.5222,-31.0144,-30.5713,-26.9878,-21.9062,-24.847,-33.2929,-31.3292,-25.8471,-26.8172,-27.3668,-32.2466,-31.1871,-28.1426 -LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,10.5077,-2.9296,-1.4446,9.3943,5.7981,4.0941,14.017,14.4393,10.8828,2.8846,12.2723,-3.9029,-2.0894,10.9777 -LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,5.7133,2.3685,0.8083,5.2941,3.1743,3.6993,4.359,4.1638,3.9734,3.4093,6.1735,2.3806,0.9356,6.0388 +LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v14.0.0,-25.7643,-30.2923,-30.3562,-26.2543,-21.5637,-24.3612,-32.1059,-30.1334,-25.2806,-25.7319,-26.6005,-31.4667,-31.0163,-27.3829 +LD,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v15.0.0,-25.7747,-30.3105,-30.2679,-26.2602,-21.5901,-24.365,-32.076,-30.1265,-25.2838,-25.6846,-26.6113,-31.4755,-30.933,-27.3912 LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v02.0.0,-1.4233,-11.1627,-8.5623,-2.1928,-1.2125,-1.2326,-1.2782,-1.5456,-1.6316,-4.3971,-1.5505,-11.2942,-8.5247,-2.1851 LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v03.0.0,-5.1789,-17.2103,-14.8068,-6.1946,-4.012,-4.1666,-4.4456,-4.4273,-4.7929,-8.2866,-5.3331,-17.4488,-14.7777,-6.2011 LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v04.0.0,-12.3165,-25.4404,-22.1634,-13.4252,-10.4951,-10.7936,-13.5968,-12.9591,-11.5163,-15.7367,-12.5243,-25.5712,-22.1831,-13.4862 @@ -1455,8 +1453,8 @@ LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v10.0.0,-20.3328,-36.1819,-27.239, LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v11.0.0,-21.0867,-36.5262,-27.1633,-22.0846,-17.8956,-17.8712,-22.6009,-22.3141,-20.052,-24.9363,-21.5782,-36.7505,-27.2672,-22.3817 LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v12.0.0,-21.1067,-36.7118,-26.8728,-22.104,-17.4464,-17.5915,-22.5152,-22.2329,-19.9042,-24.687,-21.5875,-37.0168,-26.989,-22.4037 LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v13.0.0,-20.547,-37.5671,-27.8365,-21.6818,-18.635,-17.3185,-22.1689,-21.7699,-19.3245,-24.9986,-20.913,-37.7169,-27.9155,-21.8244 -LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,libaom-v3.12.0,14.2822,3.2584,-5.125,12.5539,11.5556,8.9541,37.4284,37.5772,13.6274,5.2325,22.9757,9.7039,-1.5886,21.6322 -LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,libaom-v3.12.0-unconstrained,3.3494,0.9256,-0.9363,2.9833,3.8726,3.6431,5.675,5.5471,2.4796,1.7675,3.6267,1.6893,-0.2424,3.479 +LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v14.0.0,-20.4438,-36.0239,-27.1764,-21.4865,-18.5885,-17.2954,-22.5002,-21.8716,-19.2206,-24.4151,-20.8116,-36.023,-27.2443,-21.6609 +LD,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v15.0.0,-20.4384,-36.0906,-27.2289,-21.4885,-18.5781,-17.2961,-22.5036,-21.8855,-19.2168,-24.4525,-20.8081,-36.0943,-27.3006,-21.6651 LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v02.0.0,-1.6212,-6.7726,-5.0012,-2.0905,-1.001,-1.2788,-2.5007,-2.1526,-1.4219,-3.6919,-1.6054,-7.2106,-4.8778,-1.9426 LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v03.0.0,-5.743,-16.501,-6.7845,-6.4208,-3.9562,-4.4526,-9.0203,-8.474,-4.9875,-10.7382,-5.6315,-17.1205,-6.7568,-6.1259 LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v04.0.0,-12.1814,-25.5659,-16.2482,-13.1939,-9.7594,-10.5929,-16.1235,-15.9004,-11.1076,-18.546,-12.0322,-25.6917,-16.0371,-12.7237 @@ -1469,8 +1467,8 @@ LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v10.0.0,-20.0485,-38.7 LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v11.0.0,-21.2304,-39.2817,-27.6601,-22.6855,-18.8384,-19.5117,-27.6781,-27.0869,-20.2372,-30.2356,-21.4341,-39.5137,-27.5397,-22.3481 LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v12.0.0,-20.8658,-39.2769,-26.7152,-22.3128,-18.071,-18.7113,-27.0839,-26.5849,-19.8108,-29.6896,-21.0523,-39.5743,-26.5678,-21.9636 LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v13.0.0,-20.7018,-39.3089,-26.9299,-22.1857,-20.4782,-18.6967,-26.8799,-26.3588,-19.7444,-29.717,-20.7901,-39.495,-26.8791,-21.7297 -LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,libaom-v3.12.0,21.7594,34.1868,35.829,23.1628,19.1873,19.3503,21.3314,23.1028,22.3423,28.5936,22.75,33.4452,34.7906,23.5173 -LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,libaom-v3.12.0-unconstrained,4.2062,-7.2131,-5.2391,2.9587,0.921,2.0359,0.4988,0.4894,1.7585,-1.3849,4.5865,-7.2852,-5.2485,3.8764 +LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v14.0.0,-20.6585,-39.2212,-27.4493,-22.1684,-20.5047,-18.6769,-26.7878,-26.2756,-19.732,-29.7536,-20.7448,-39.3343,-27.243,-21.6893 +LD,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v15.0.0,-20.6489,-39.1893,-27.4488,-22.1576,-20.4846,-18.6509,-26.788,-26.2752,-19.7203,-29.73,-20.7382,-39.3085,-27.2498,-21.6823 LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v02.0.0,-0.8718,-15.8509,-15.2514,-2.6364,-0.7906,-0.9248,-1.7098,-1.3807,-1.6377,-7.0042,-0.8402,-15.8876,-15.2925,-1.9419 LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v03.0.0,-7.0526,-21.8724,-25.8712,-9.2024,-5.5816,-6.4794,-10.0874,-8.6081,-6.9754,-14.297,-7.078,-21.9094,-25.9407,-8.372 LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v04.0.0,-11.874,-31.9393,-33.1943,-14.5405,-9.9129,-10.9678,-15.289,-13.3411,-11.7719,-20.6067,-11.8981,-31.9612,-33.2166,-13.5362 @@ -1483,8 +1481,8 @@ LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v10.0.0,-23.5081,-41.3612,-41.7 LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v11.0.0,-24.3004,-43.3284,-39.4282,-26.3966,-21.446,-22.2098,-25.3927,-24.5828,-23.9913,-32.7624,-24.5957,-43.3241,-39.4759,-25.905 LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v12.0.0,-25.5065,-43.5138,-40.7874,-27.557,-22.0425,-23.1015,-26.6977,-25.9799,-24.7973,-33.735,-25.8037,-43.4724,-40.8677,-27.0896 LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v13.0.0,-25.409,-47.7224,-45.5696,-28.0691,-27.4254,-23.1116,-29.3324,-27.7018,-24.5697,-36.5491,-25.629,-47.6902,-45.5695,-27.2441 -LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,libaom-v3.12.0,10.3544,-3.6136,-8.148,8.8933,11.115,10.1077,37.7717,36.2691,12.4657,6.0241,22.9085,1.9198,-4.0194,21.5151 -LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,3.2834,-1.4782,-4.0744,2.7509,4.5369,3.7503,8.6975,8.0613,3.4249,2.9368,3.5266,-1.2728,-3.8632,3.3114 +LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v14.0.0,-24.6159,-47.0024,-44.7206,-27.2779,-26.6503,-22.3541,-28.2896,-26.6823,-23.9806,-35.7163,-24.846,-46.9747,-44.6924,-26.4549 +LD,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v15.0.0,-24.5984,-47.0301,-44.7916,-27.2695,-26.6357,-22.3235,-28.3281,-26.6891,-23.9589,-35.7344,-24.8288,-47.0041,-44.7723,-26.443 LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v02.0.0,-1.1122,-3.407,-2.9013,-1.2903,-2.2461,-2.2936,-2.6249,-2.349,-1.1285,-0.7526,-1.2253,-3.4833,-2.951,-1.3801 LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v03.0.0,-4.479,-8.9114,-5.0746,-4.7086,-5.5518,-5.6842,-6.9554,-6.3002,-3.991,-5.4005,-4.6061,-9.121,-5.1601,-4.8425 LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v04.0.0,-7.4646,-17.3313,-16.2932,-8.3057,-8.9808,-9.1546,-12.1721,-11.5037,-7.4207,-10.7958,-7.6438,-17.5862,-16.4265,-8.3314 @@ -1497,8 +1495,8 @@ LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v10.0.0,-13.5659,-25.1294,-26.32,-14.6 LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v11.0.0,-14.3057,-24.3381,-25.6101,-15.279,-15.2736,-15.3791,-21.9582,-20.8435,-14.5985,-19.5836,-15.0647,-25.0394,-26.2812,-15.7531 LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v12.0.0,-14.3506,-24.0741,-24.8378,-15.2736,-14.9382,-15.1999,-21.7685,-20.6277,-14.5456,-19.4883,-15.1139,-24.7897,-25.5212,-15.7772 LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v13.0.0,-14.1854,-24.1263,-24.9026,-15.129,-16.335,-15.1293,-21.5784,-20.4664,-14.4599,-19.4021,-14.8125,-24.7804,-25.5439,-15.5013 -LD,A2,OldTownCross_1920x1080p50.y4m,libaom-v3.12.0,2.2271,43.3889,47.3047,5.0263,-1.691,0.0692,0.8043,-1.6512,6.9963,24.3328,2.8581,42.7887,46.3377,5.9869 -LD,A2,OldTownCross_1920x1080p50.y4m,libaom-v3.12.0-unconstrained,3.6931,10.1761,5.6382,3.7483,1.1936,1.0337,1.793,1.1343,5.2535,11.7607,3.2045,8.6766,5.2932,3.4324 +LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v14.0.0,-14.1751,-24.0545,-24.9249,-15.1167,-16.3135,-15.1274,-21.6173,-20.478,-14.4492,-19.4158,-14.8032,-24.6981,-25.5663,-15.4884 +LD,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v15.0.0,-14.1757,-24.0482,-24.9116,-15.1163,-16.3146,-15.1141,-21.6173,-20.478,-14.4343,-19.4189,-14.8023,-24.69,-25.5502,-15.4863 LD,A2,OldTownCross_1920x1080p50.y4m,v02.0.0,-2.0075,-28.228,-20.969,-3.7032,-2.7372,-3.2488,-4.5212,-4.2374,-0.4754,-10.3246,-2.4199,-29.5162,-21.1746,-3.9901 LD,A2,OldTownCross_1920x1080p50.y4m,v03.0.0,-3.8811,-30.9328,-21.8897,-5.5845,-3.3609,-3.6155,-2.731,-3.4893,-2.013,-12.6972,-4.3462,-32.3709,-22.1185,-5.9287 LD,A2,OldTownCross_1920x1080p50.y4m,v04.0.0,-13.1399,-39.8117,-31.8412,-14.8582,-11.8519,-11.9612,-12.069,-13.1412,-10.9363,-22.1762,-13.8402,-41.4042,-32.1101,-15.5063 @@ -1511,8 +1509,8 @@ LD,A2,OldTownCross_1920x1080p50.y4m,v10.0.0,-24.4257,-50.4409,-41.1717,-26.0386, LD,A2,OldTownCross_1920x1080p50.y4m,v11.0.0,-25.1134,-49.8402,-41.7579,-26.6883,-22.8025,-22.3623,-19.859,-22.5099,-23.9999,-37.661,-25.9116,-51.5146,-41.9897,-27.3535 LD,A2,OldTownCross_1920x1080p50.y4m,v12.0.0,-25.5723,-50.1197,-41.2686,-27.0929,-23.4476,-22.8711,-20.4474,-23.1045,-24.4598,-38.0175,-26.3768,-51.7848,-41.5103,-27.7844 LD,A2,OldTownCross_1920x1080p50.y4m,v13.0.0,-24.7829,-51.9112,-43.8606,-26.5601,-22.1461,-22.3643,-19.5448,-22.2258,-23.7425,-38.2067,-25.4607,-53.5341,-44.0502,-27.1252 -LD,A2,PedestrianArea_1920x1080p25.y4m,libaom-v3.12.0,11.3899,1.1316,5.9839,10.4461,7.2842,5.7656,11.8478,11.5395,11.794,10.7392,14.1298,1.5753,6.9064,12.9604 -LD,A2,PedestrianArea_1920x1080p25.y4m,libaom-v3.12.0-unconstrained,4.8738,2.1811,5.6604,4.749,3.4657,3.8988,2.1897,1.9672,4.6783,6.5257,5.2329,2.1727,5.887,5.1629 +LD,A2,OldTownCross_1920x1080p50.y4m,v14.0.0,-24.3909,-51.767,-43.3135,-26.1654,-21.7636,-21.9805,-18.88,-21.53,-23.3836,-37.9434,-25.0462,-53.3693,-43.4924,-26.7028 +LD,A2,OldTownCross_1920x1080p50.y4m,v15.0.0,-24.3417,-51.6093,-43.2917,-26.1145,-21.7041,-21.9453,-18.8332,-21.5036,-23.3309,-37.8818,-24.9991,-53.226,-43.4731,-26.6529 LD,A2,PedestrianArea_1920x1080p25.y4m,v02.0.0,-0.5815,-5.7826,-1.8347,-0.9181,-0.7861,-0.977,-2.249,-2.0016,0.2179,-0.2646,-0.6305,-5.9975,-2.0132,-0.9793 LD,A2,PedestrianArea_1920x1080p25.y4m,v03.0.0,-7.1184,-12.2959,-8.0114,-7.4405,-6.2886,-7.0918,-7.036,-6.8141,-5.4709,-5.6891,-7.2114,-12.4437,-8.213,-7.5622 LD,A2,PedestrianArea_1920x1080p25.y4m,v04.0.0,-11.9481,-22.3361,-17.5514,-12.819,-11.3423,-12.2367,-12.5527,-12.0881,-10.5341,-12.7962,-12.0656,-22.4626,-17.7225,-12.947 @@ -1525,8 +1523,8 @@ LD,A2,PedestrianArea_1920x1080p25.y4m,v10.0.0,-18.2624,-28.786,-24.0005,-19.1527 LD,A2,PedestrianArea_1920x1080p25.y4m,v11.0.0,-18.4808,-29.8224,-24.0828,-19.4033,-17.1724,-17.7061,-20.7459,-20.0702,-17.9802,-22.8006,-18.6626,-30.0639,-24.3713,-19.6179 LD,A2,PedestrianArea_1920x1080p25.y4m,v12.0.0,-18.4978,-30.2136,-24.7373,-19.4769,-16.8761,-17.5188,-21.1237,-20.5391,-17.8693,-23.0586,-18.674,-30.4449,-25.0295,-19.6731 LD,A2,PedestrianArea_1920x1080p25.y4m,v13.0.0,-18.1787,-29.7012,-24.4932,-19.1526,-20.055,-17.0917,-20.6412,-20.0136,-17.5198,-22.977,-18.3045,-29.8917,-24.7326,-19.3022 -LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,10.153,-7.7031,-4.2899,8.4859,4.3514,4.1383,15.1883,15.3457,8.6668,1.2591,15.1767,-6.8183,-2.4619,13.0763 -LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,2.7106,-3.6473,-2.3893,2.1113,1.4467,1.8166,2.4239,2.3164,1.8832,-0.5233,3.4965,-3.278,-1.8466,3.0719 +LD,A2,PedestrianArea_1920x1080p25.y4m,v14.0.0,-18.0572,-29.87,-24.6276,-19.0616,-19.9302,-17.1061,-20.9435,-20.0002,-17.4376,-22.9623,-18.1852,-30.0335,-24.8505,-19.2066 +LD,A2,PedestrianArea_1920x1080p25.y4m,v15.0.0,-18.0792,-29.8758,-24.5053,-19.0739,-19.9325,-17.0946,-20.9267,-20.0047,-17.4449,-22.9865,-18.209,-30.0363,-24.7288,-19.2213 LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v02.0.0,-1.5981,-12.5785,-8.2251,-2.4223,-1.1785,-1.2975,-2.0035,-1.9362,-1.7709,-4.4484,-1.6251,-12.8625,-8.6428,-2.4648 LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v03.0.0,-7.1716,-16.6928,-13.8564,-7.9362,-6.8493,-7.0481,-7.3447,-7.3528,-6.7291,-10.7643,-7.2136,-16.9973,-14.3296,-8.0626 LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v04.0.0,-14.9556,-26.4424,-22.1112,-15.849,-15.85,-15.8375,-16.0002,-15.9086,-14.6609,-18.0034,-14.9993,-26.8155,-22.3767,-16.0061 @@ -1539,8 +1537,8 @@ LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v10.0.0,-22.7504,-34.6198,-30.419 LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v11.0.0,-22.9756,-34.8716,-31.1736,-23.9563,-22.5864,-22.6154,-26.5258,-26.1178,-22.4005,-26.2715,-23.2858,-35.4689,-31.8037,-24.3449 LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v12.0.0,-23.1005,-34.8593,-30.7967,-24.0528,-22.4942,-22.606,-26.5035,-26.1689,-22.4504,-26.1774,-23.4023,-35.4171,-31.4447,-24.422 LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v13.0.0,-23.1597,-34.9647,-30.2817,-24.082,-25.1377,-22.8148,-26.5828,-26.1864,-22.4775,-26.3803,-23.4142,-35.4934,-30.838,-24.4077 -LD,A2,Riverbed_1920x1080p25.y4m,libaom-v3.12.0,18.7557,1.2391,-5.8514,17.2422,14.2736,15.593,32.5545,29.5621,13.6546,17.3829,32.1868,6.8448,-1.4985,30.886 -LD,A2,Riverbed_1920x1080p25.y4m,libaom-v3.12.0-unconstrained,2.9751,-2.0723,-2.5413,2.6456,1.7668,2.0635,3.1361,2.0526,2.2179,4.9764,3.2445,-2.432,-3.3548,3.1954 +LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v14.0.0,-23.0447,-34.8099,-30.2335,-23.9694,-25.0612,-22.6799,-26.4065,-26.0291,-22.3702,-26.4089,-23.299,-35.3463,-30.7839,-24.2948 +LD,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v15.0.0,-23.068,-34.6491,-30.2807,-23.9845,-25.1171,-22.729,-26.4115,-26.0347,-22.4056,-26.3792,-23.3224,-35.1944,-30.84,-24.3074 LD,A2,Riverbed_1920x1080p25.y4m,v02.0.0,-2.4008,-0.4578,-17.2541,-2.7146,-1.9225,-2.4537,-3.7262,-3.5769,-1.6227,-0.8769,-2.4449,-0.4576,-17.8382,-2.7642 LD,A2,Riverbed_1920x1080p25.y4m,v03.0.0,-5.2829,-10.0102,-11.2331,-5.5899,-3.5608,-4.5027,-4.1383,-4.1117,-4.2653,-6.8478,-5.3552,-10.1937,-11.4667,-5.8635 LD,A2,Riverbed_1920x1080p25.y4m,v04.0.0,-7.3796,-21.2699,-30.8132,-8.5654,-5.5073,-6.7844,-6.2666,-6.0343,-6.5582,-11.5146,-7.4915,-21.5597,-31.3174,-8.7483 @@ -1553,8 +1551,8 @@ LD,A2,Riverbed_1920x1080p25.y4m,v10.0.0,-14.776,-36.2635,-57.2698,-17.0601,-12.2 LD,A2,Riverbed_1920x1080p25.y4m,v11.0.0,-16.188,-37.9527,-54.9331,-18.3255,-13.9851,-14.8851,-18.3106,-18.2201,-15.8313,-22.6472,-16.7181,-38.8442,-55.9256,-18.4023 LD,A2,Riverbed_1920x1080p25.y4m,v12.0.0,-15.9875,-37.1471,-52.983,-18.0462,-13.6364,-14.5688,-17.8953,-17.8682,-15.624,-22.2491,-16.5142,-38.035,-53.885,-18.1741 LD,A2,Riverbed_1920x1080p25.y4m,v13.0.0,-15.8892,-37.6745,-53.8528,-18.0175,-16.7991,-14.5549,-18.0144,-17.8468,-15.5349,-22.3096,-16.3107,-38.5106,-54.7659,-18.0038 -LD,A2,RushFieldCuts_1920x1080_2997.y4m,libaom-v3.12.0,16.3741,-5.2228,-4.2653,14.5499,18.9902,16.5979,25.4575,25.124,19.8316,10.5885,24.9895,-4.7656,-4.2561,22.8362 -LD,A2,RushFieldCuts_1920x1080_2997.y4m,libaom-v3.12.0-unconstrained,7.0173,1.4935,2.9954,6.4735,6.8311,6.8773,7.3569,6.9941,6.8239,8.7467,7.6327,1.2151,2.7339,7.5691 +LD,A2,Riverbed_1920x1080p25.y4m,v14.0.0,-15.8773,-37.2978,-53.0623,-17.9687,-16.815,-14.569,-18.1825,-18.0095,-15.5226,-22.3979,-16.2979,-38.1321,-53.9398,-17.9818 +LD,A2,Riverbed_1920x1080p25.y4m,v15.0.0,-15.8757,-37.2936,-53.0735,-17.9675,-16.8229,-14.5761,-18.1911,-18.0213,-15.521,-22.39,-16.2955,-38.1289,-53.9517,-17.9798 LD,A2,RushFieldCuts_1920x1080_2997.y4m,v02.0.0,-0.4155,-6.8021,-8.6194,-1.0351,-1.3876,-1.3367,-0.8064,-0.7834,0.0952,-1.8558,-0.6457,-7.1597,-8.9053,-0.98 LD,A2,RushFieldCuts_1920x1080_2997.y4m,v03.0.0,-3.2729,-11.1038,-11.3195,-3.9519,-3.8887,-3.9785,-4.2681,-3.6666,-2.2628,-5.8672,-3.477,-11.564,-11.6902,-3.9021 LD,A2,RushFieldCuts_1920x1080_2997.y4m,v04.0.0,-5.5625,-18.6251,-16.8953,-6.6265,-6.4543,-6.3031,-6.4101,-5.8158,-4.545,-9.7546,-5.8609,-19.1354,-17.3083,-6.5358 @@ -1567,8 +1565,8 @@ LD,A2,RushFieldCuts_1920x1080_2997.y4m,v10.0.0,-11.3018,-21.2511,-14.5946,-11.88 LD,A2,RushFieldCuts_1920x1080_2997.y4m,v11.0.0,-11.8009,-21.2385,-15.7867,-12.3882,-11.7587,-11.1741,-12.6838,-12.3386,-11.3029,-16.8239,-12.6447,-21.7329,-16.1857,-12.9907 LD,A2,RushFieldCuts_1920x1080_2997.y4m,v12.0.0,-12.1143,-21.5655,-15.8259,-12.6989,-11.6664,-11.1915,-12.4617,-12.1272,-11.5102,-17.1492,-12.9521,-22.073,-16.2165,-13.2978 LD,A2,RushFieldCuts_1920x1080_2997.y4m,v13.0.0,-11.9524,-22.7279,-17.9568,-12.6932,-11.3014,-11.5399,-12.0607,-11.8183,-11.4219,-17.8213,-12.6457,-23.1023,-18.2327,-13.081 -LD,A2,Skater227_1920x1080_30fps.y4m,libaom-v3.12.0,20.3896,-8.6373,-11.8726,16.2307,10.2879,11.6486,30.6808,29.2551,15.4803,0.6365,27.9102,-6.2729,-10.0304,24.4987 -LD,A2,Skater227_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,1.5958,-4.7984,-5.7864,0.6219,0.4344,0.9464,3.7729,2.8137,0.7409,-3.4419,2.9101,-3.9812,-5.0895,2.2252 +LD,A2,RushFieldCuts_1920x1080_2997.y4m,v14.0.0,-11.9204,-23.2082,-17.67,-12.6737,-11.2202,-11.4581,-12.3618,-12.0685,-11.4022,-17.8381,-12.6114,-23.6056,-17.9297,-13.0603 +LD,A2,RushFieldCuts_1920x1080_2997.y4m,v15.0.0,-11.9125,-23.2048,-17.6335,-12.6649,-11.2164,-11.4551,-12.373,-12.0704,-11.3953,-17.8087,-12.6044,-23.6003,-17.8938,-13.0524 LD,A2,Skater227_1920x1080_30fps.y4m,v02.0.0,-1.3661,-5.3143,-6.104,-1.9018,-0.4839,-0.7542,-2.0085,-1.9218,-1.5072,-4.3335,-1.5007,-5.5918,-5.833,-1.8883 LD,A2,Skater227_1920x1080_30fps.y4m,v03.0.0,-11.5611,-10.4235,-10.8351,-11.4507,-11.6819,-12.0417,-10.9177,-11.1045,-11.1588,-10.615,-11.5061,-10.82,-10.2011,-11.4205 LD,A2,Skater227_1920x1080_30fps.y4m,v04.0.0,-18.6133,-20.8559,-20.9209,-18.9143,-19.0064,-19.2349,-18.1035,-18.251,-18.5034,-17.8723,-18.4488,-21.1446,-20.4677,-18.6923 @@ -1581,8 +1579,8 @@ LD,A2,Skater227_1920x1080_30fps.y4m,v10.0.0,-28.2125,-32.7595,-31.9515,-28.7265, LD,A2,Skater227_1920x1080_30fps.y4m,v11.0.0,-29.0984,-35.2681,-34.413,-29.8326,-29.1408,-29.3316,-30.7778,-30.6042,-29.2513,-32.1243,-29.0946,-36.0113,-35.1254,-29.712 LD,A2,Skater227_1920x1080_30fps.y4m,v12.0.0,-29.1596,-34.9516,-35.1367,-29.8965,-28.9899,-29.208,-31.3415,-31.3092,-29.2446,-32.1611,-29.167,-35.8659,-35.8154,-29.7901 LD,A2,Skater227_1920x1080_30fps.y4m,v13.0.0,-28.9866,-35.0618,-34.3773,-29.7046,-36.3127,-29.212,-30.5073,-30.5474,-29.0588,-31.7156,-28.954,-35.7639,-34.93,-29.5536 -LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,libaom-v3.12.0,15.6484,-14.7485,-13.6846,13.6601,13.8732,11.7931,47.3039,42.9436,14.9981,9.6942,30.2981,-13.0589,-10.9497,29.5695 -LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,libaom-v3.12.0-unconstrained,2.527,-10.2357,-10.6508,1.6194,1.0694,1.1679,5.4368,4.029,1.5647,0.9196,2.5665,-10.5344,-11.1191,2.4407 +LD,A2,Skater227_1920x1080_30fps.y4m,v14.0.0,-28.6873,-34.7502,-34.3894,-29.4306,-36.1306,-28.9147,-30.1761,-30.2373,-28.8146,-31.2205,-28.6282,-35.3053,-35.0029,-29.2399 +LD,A2,Skater227_1920x1080_30fps.y4m,v15.0.0,-28.7447,-35.3106,-34.4026,-29.5169,-36.2269,-28.8939,-30.1644,-30.28,-28.8532,-31.499,-28.7016,-36.0025,-35.0818,-29.3427 LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v02.0.0,-1.1082,-15.0371,-33.1848,-2.5379,-1.413,-1.3959,-2.0,-2.0838,-1.1606,-6.0154,-1.1711,-14.896,-33.7211,-1.8841 LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v03.0.0,-3.8111,-14.4982,-36.9981,-5.1605,-2.3942,-2.7267,-5.0144,-4.9232,-3.01,-11.4646,-3.8924,-14.0765,-37.349,-4.6747 LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v04.0.0,-5.8866,-26.3819,-48.0456,-7.9451,-4.6463,-5.2082,-7.851,-7.3427,-5.0548,-15.5218,-5.9973,-25.9869,-48.584,-7.0943 @@ -1595,8 +1593,8 @@ LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v10.0.0,-1 LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v11.0.0,-12.9643,-45.3009,-67.188,-16.5513,-10.6464,-11.2638,-19.0308,-18.5203,-12.7008,-25.887,-13.6777,-45.2594,-67.4139,-15.6136 LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v12.0.0,-13.0484,-43.4589,-68.4572,-16.5673,-10.6731,-11.294,-19.2583,-18.6031,-12.7988,-25.9807,-13.7666,-43.3904,-68.7226,-15.7059 LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v13.0.0,-12.6274,-46.8291,-68.7698,-16.3438,-12.1249,-10.9731,-19.0641,-18.2826,-12.4119,-26.1327,-13.2037,-46.773,-69.0313,-15.1782 -LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,libaom-v3.12.0,6.9987,-9.2844,-11.4062,5.6756,3.6685,2.344,15.6927,18.9559,9.759,4.0583,15.6344,-6.6388,-10.981,14.6074 -LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,4.5991,5.2891,3.3224,4.5969,5.4985,5.2751,10.6712,9.4723,6.1722,5.0364,4.5697,6.1594,3.6268,4.7619 +LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v14.0.0,-12.5814,-48.3395,-69.3306,-16.41,-12.0517,-10.9699,-18.8773,-18.0663,-12.4248,-26.6484,-13.155,-48.2596,-69.5906,-15.1667 +LD,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v15.0.0,-12.5799,-48.2703,-69.3388,-16.4063,-12.0492,-10.9787,-18.8715,-18.0725,-12.4318,-26.6145,-13.1537,-48.1897,-69.5981,-15.165 LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v02.0.0,0.5132,-8.2107,-13.3916,-0.4093,0.5753,0.5054,-1.4685,-1.4203,0.7568,-0.1259,0.2638,-8.1591,-13.0474,-0.0553 LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v03.0.0,-1.6757,-18.6099,-16.8645,-3.0498,-1.5419,-1.3009,-4.7082,-5.1213,-1.577,-3.1276,-1.9123,-18.8909,-16.7675,-2.495 LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v04.0.0,-7.725,-26.4809,-28.9799,-9.4683,-7.4425,-7.2107,-13.2242,-13.7392,-7.5612,-10.1623,-7.9447,-26.7457,-29.123,-8.6824 @@ -1609,8 +1607,8 @@ LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v10.0.0,-15.2486,-37.7188,-41.0092, LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v11.0.0,-16.9187,-37.8922,-42.6033,-19.08,-17.4275,-16.1262,-25.3642,-25.5763,-18.2796,-20.5739,-17.692,-38.7506,-43.3664,-18.4637 LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v12.0.0,-16.8512,-37.5123,-41.8579,-18.9623,-16.8977,-15.636,-25.3621,-25.5276,-17.997,-20.3519,-17.6123,-38.4082,-42.5752,-18.3752 LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v13.0.0,-16.6416,-38.6746,-41.6105,-18.79,-14.8314,-15.8109,-24.4665,-24.7511,-17.8643,-20.3447,-17.2348,-39.4649,-42.2221,-18.0351 -LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,8.137,-10.6634,-12.5327,6.1746,8.0867,3.9315,18.5072,18.4032,11.6305,-0.3316,11.8738,-12.0435,-14.167,9.9987 -LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,2.4278,-0.0938,-3.0828,1.8982,0.1453,0.8897,-2.0347,0.0006,1.2311,1.4317,2.9848,0.1881,-2.3893,2.991 +LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v14.0.0,-16.5539,-38.4427,-42.3739,-18.751,-14.7116,-15.6889,-24.2558,-24.515,-17.8259,-20.345,-17.1519,-39.2406,-42.9717,-17.9584 +LD,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v15.0.0,-16.5599,-38.4144,-42.4306,-18.7577,-14.7251,-15.6971,-24.2556,-24.5089,-17.8202,-20.3368,-17.1587,-39.2281,-43.022,-17.9653 LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v02.0.0,-2.9234,-37.343,-54.008,-7.4525,-2.4311,-2.6214,-4.2614,-3.6604,-3.9091,-13.8095,-2.9997,-38.1851,-54.8374,-5.4313 LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v03.0.0,-10.893,-43.6133,-58.2141,-15.1103,-9.0799,-9.9545,-16.379,-14.4048,-10.3454,-21.9077,-11.0785,-44.4223,-59.0205,-13.4163 LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v04.0.0,-24.8681,-55.3244,-79.6128,-29.9656,-22.0457,-24.0803,-31.6154,-29.0494,-23.7895,-35.3836,-25.0682,-55.9987,-79.9833,-27.5995 @@ -1623,8 +1621,8 @@ LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v10.0.0,-33.5246,-73.8994,-85.1026 LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v11.0.0,-33.5175,-74.1201,-83.1863,-39.3127,-30.2979,-32.1293,-40.349,-38.0882,-32.4075,-49.3561,-34.0169,-74.5195,-83.5307,-37.0273 LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v12.0.0,-33.6581,-73.3847,-83.1668,-39.3246,-29.9582,-31.5798,-40.7902,-38.4778,-32.3806,-48.8233,-34.1582,-73.7914,-83.4958,-37.0913 LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v13.0.0,-33.4169,-73.9725,-83.6742,-39.2174,-34.0259,-31.4225,-40.3431,-37.9808,-32.1185,-48.9747,-33.8517,-74.3435,-84.0078,-36.8293 -LD,A2,Vertical_bees_1080x1920_2997.y4m,libaom-v3.12.0,6.3152,3.3426,8.1789,6.2465,3.7909,4.2082,0.5859,0.737,9.4062,9.1397,7.6943,2.8083,7.9912,7.3437 -LD,A2,Vertical_bees_1080x1920_2997.y4m,libaom-v3.12.0-unconstrained,4.3051,3.9784,5.4664,4.2857,3.6406,3.2053,1.6251,1.516,5.3545,7.0741,4.6495,3.9518,5.8379,4.7209 +LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v14.0.0,-33.3768,-74.0301,-83.7946,-39.1991,-34.052,-31.454,-40.356,-37.9733,-32.0832,-48.9156,-33.8094,-74.4037,-84.1328,-36.7941 +LD,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v15.0.0,-33.3804,-74.0541,-83.7965,-39.2087,-34.01,-31.4216,-40.3559,-37.9731,-32.0909,-48.9114,-33.8142,-74.4263,-84.1344,-36.8028 LD,A2,Vertical_bees_1080x1920_2997.y4m,v02.0.0,-0.7081,-3.1633,-0.8238,-0.8534,-0.2817,-0.8124,-0.9213,-1.0287,0.5814,1.3042,-0.8005,-3.403,-0.8899,-0.9591 LD,A2,Vertical_bees_1080x1920_2997.y4m,v03.0.0,-6.1947,-8.2067,-2.6282,-6.1193,-6.6365,-7.3847,-7.0157,-6.5923,-4.6083,-3.6773,-6.328,-8.4814,-2.5473,-6.2928 LD,A2,Vertical_bees_1080x1920_2997.y4m,v04.0.0,-11.0857,-13.2255,-11.3874,-11.2298,-11.5932,-12.1436,-11.8861,-11.4849,-9.2594,-9.1727,-11.2821,-13.532,-11.4456,-11.435 @@ -1637,8 +1635,8 @@ LD,A2,Vertical_bees_1080x1920_2997.y4m,v10.0.0,-18.1939,-16.4599,-18.9264,-18.14 LD,A2,Vertical_bees_1080x1920_2997.y4m,v11.0.0,-18.2568,-15.7207,-17.8899,-18.1016,-17.6376,-17.7635,-17.8488,-17.5768,-16.9685,-17.2439,-18.6074,-16.0649,-18.0883,-18.386 LD,A2,Vertical_bees_1080x1920_2997.y4m,v12.0.0,-18.5558,-16.1374,-18.8351,-18.441,-17.7415,-17.9454,-18.0644,-17.8739,-17.1801,-17.4701,-18.8995,-16.4772,-19.1023,-18.7218 LD,A2,Vertical_bees_1080x1920_2997.y4m,v13.0.0,-18.5138,-18.7112,-18.5288,-18.5294,-19.4894,-18.145,-18.6953,-18.3909,-17.2123,-18.5965,-18.7511,-18.9895,-18.6113,-18.7422 -LD,A2,WorldCup_1920x1080_30p.y4m,libaom-v3.12.0,12.2438,-6.1572,1.4714,10.8011,4.0009,3.718,13.4024,13.398,10.6954,10.76,17.5063,-6.2021,2.4824,16.1872 -LD,A2,WorldCup_1920x1080_30p.y4m,libaom-v3.12.0-unconstrained,4.8608,3.91,6.5228,4.7965,2.6088,2.9816,3.2101,3.3096,5.4032,8.8742,5.3217,3.8731,6.956,5.4871 +LD,A2,Vertical_bees_1080x1920_2997.y4m,v14.0.0,-18.3389,-18.5381,-18.3673,-18.355,-19.2423,-17.8824,-18.5833,-18.2252,-17.0428,-18.5104,-18.5794,-18.8095,-18.4342,-18.5693 +LD,A2,Vertical_bees_1080x1920_2997.y4m,v15.0.0,-18.3264,-18.487,-18.217,-18.3327,-19.1896,-17.8526,-18.5851,-18.2245,-17.0162,-18.4209,-18.5683,-18.7579,-18.2764,-18.5462 LD,A2,WorldCup_1920x1080_30p.y4m,v02.0.0,-0.6299,1.4947,0.3673,-0.4731,-1.2246,-1.346,-1.2918,-1.3042,0.0409,4.0108,-0.7338,1.341,0.3919,-0.5373 LD,A2,WorldCup_1920x1080_30p.y4m,v03.0.0,-7.2298,-6.7442,-5.2488,-7.1068,-7.453,-7.8021,-8.2856,-7.8095,-5.947,-3.5634,-7.3712,-6.9445,-5.3951,-7.2382 LD,A2,WorldCup_1920x1080_30p.y4m,v04.0.0,-13.9041,-15.2253,-14.5428,-14.0029,-13.2751,-13.7153,-16.5236,-15.2825,-12.5776,-10.8524,-14.0882,-15.4151,-14.5958,-14.1425 @@ -1651,8 +1649,8 @@ LD,A2,WorldCup_1920x1080_30p.y4m,v10.0.0,-22.1394,-25.231,-23.9896,-22.3786,-18. LD,A2,WorldCup_1920x1080_30p.y4m,v11.0.0,-22.3697,-26.2064,-23.6146,-22.6173,-19.1361,-19.7403,-24.3836,-22.9496,-20.9,-22.9953,-22.7856,-26.5414,-23.9707,-22.9585 LD,A2,WorldCup_1920x1080_30p.y4m,v12.0.0,-22.5913,-25.5627,-24.3245,-22.8194,-19.0211,-19.6815,-24.7624,-23.2893,-21.032,-22.935,-23.0074,-25.9115,-24.7047,-23.1697 LD,A2,WorldCup_1920x1080_30p.y4m,v13.0.0,-22.2422,-26.0648,-23.9488,-22.5124,-23.5883,-19.5673,-24.4263,-23.0208,-20.7477,-22.7652,-22.5984,-26.3305,-24.2061,-22.7889 -LD,A3,ControlledBurn_1280x720p30_420.y4m,libaom-v3.12.0,8.6381,16.3467,18.7813,9.511,9.8585,11.087,19.4847,19.301,10.2523,11.6036,7.1627,17.3064,23.0578,8.2431 -LD,A3,ControlledBurn_1280x720p30_420.y4m,libaom-v3.12.0-unconstrained,1.3666,-2.704,-0.004,1.0764,0.7463,1.3543,2.3695,1.85,0.7129,0.4494,1.4124,-2.5871,0.6217,1.2744 +LD,A2,WorldCup_1920x1080_30p.y4m,v14.0.0,-22.152,-25.8039,-23.2946,-22.3857,-23.5291,-19.4797,-24.2843,-22.8074,-20.6419,-22.6215,-22.5107,-26.0206,-23.5561,-22.6765 +LD,A2,WorldCup_1920x1080_30p.y4m,v15.0.0,-22.1172,-26.486,-23.8997,-22.4177,-23.457,-19.3979,-24.4982,-23.0501,-20.6178,-22.9269,-22.4779,-26.7307,-24.1134,-22.6831 LD,A3,ControlledBurn_1280x720p30_420.y4m,v02.0.0,-0.7224,-8.7677,-7.0081,-1.5335,-0.9039,-0.8043,-0.9026,-0.9182,-1.2113,-3.1705,-0.7514,-7.8668,-5.1057,-1.1522 LD,A3,ControlledBurn_1280x720p30_420.y4m,v03.0.0,-4.031,-11.8164,-10.6647,-4.8477,-4.8032,-4.4765,-3.1841,-3.0556,-4.2551,-6.3047,-3.7776,-10.8595,-8.5334,-4.2026 LD,A3,ControlledBurn_1280x720p30_420.y4m,v04.0.0,-9.5432,-25.3876,-20.6159,-11.1108,-9.9696,-9.73,-8.7449,-8.8324,-9.6987,-13.5041,-9.0756,-24.7041,-19.0645,-10.0086 @@ -1665,8 +1663,8 @@ LD,A3,ControlledBurn_1280x720p30_420.y4m,v10.0.0,-16.6484,-39.2482,-33.1314,-19. LD,A3,ControlledBurn_1280x720p30_420.y4m,v11.0.0,-17.4989,-40.3052,-34.3221,-19.9485,-17.9027,-17.5549,-19.9603,-19.9518,-18.3106,-24.2417,-16.2831,-40.9887,-34.8145,-17.8757 LD,A3,ControlledBurn_1280x720p30_420.y4m,v12.0.0,-17.5157,-40.5845,-34.3942,-19.9858,-17.7485,-17.4732,-20.4321,-20.307,-18.2922,-24.1966,-16.3187,-41.3076,-34.9526,-17.9237 LD,A3,ControlledBurn_1280x720p30_420.y4m,v13.0.0,-18.3082,-41.149,-34.5237,-20.6951,-19.6075,-18.2379,-20.236,-19.9958,-18.7589,-25.2646,-17.7103,-41.7435,-34.5518,-19.203 -LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0,6.1293,12.6605,16.5562,6.6908,6.3645,5.7658,12.8988,9.7481,9.3048,8.6962,6.5747,9.7762,14.7387,6.8095 -LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,6.1179,2.6883,3.5753,5.8279,5.7112,5.6326,9.7083,8.1393,5.7746,4.6448,6.3595,2.905,3.7661,6.4356 +LD,A3,ControlledBurn_1280x720p30_420.y4m,v14.0.0,-18.1605,-41.367,-34.5425,-20.581,-19.4913,-18.0982,-20.0839,-19.8246,-18.6155,-25.2014,-17.5782,-41.9574,-34.5676,-19.0864 +LD,A3,ControlledBurn_1280x720p30_420.y4m,v15.0.0,-18.1619,-41.3102,-34.5611,-20.5795,-19.491,-18.1099,-20.0407,-19.8116,-18.6229,-25.2079,-17.5783,-41.9001,-34.5869,-19.0853 LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v02.0.0,-0.7934,-9.738,-21.111,-1.977,-0.8535,-0.8155,-0.0487,-0.4134,-1.301,-4.6319,-0.9319,-9.7439,-20.9999,-1.5739 LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v03.0.0,-2.7858,-16.0137,-24.7509,-4.2505,-2.7378,-2.5978,-2.1737,-2.5952,-3.1011,-8.5658,-2.928,-16.2598,-24.5794,-3.7736 LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v04.0.0,-11.7105,-25.9905,-38.38,-13.431,-11.7246,-11.6284,-11.8569,-12.3685,-11.7875,-18.5365,-11.9177,-26.0998,-38.2431,-12.9464 @@ -1679,8 +1677,8 @@ LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v10.0.0,-19.7552,-28.7601,-40.6977 LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v11.0.0,-19.5496,-28.1339,-41.8497,-20.831,-17.9737,-17.819,-19.3287,-20.6437,-19.4387,-24.9641,-20.112,-28.3481,-41.6859,-20.8359 LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v12.0.0,-20.1468,-28.6552,-41.5052,-21.382,-18.6238,-18.4402,-20.433,-21.6618,-19.9785,-25.4928,-20.6954,-28.9431,-41.2565,-21.4029 LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v13.0.0,-20.4336,-29.9879,-42.4168,-21.7418,-19.2291,-19.2297,-20.2056,-21.5373,-20.2086,-26.2493,-20.782,-29.9453,-41.954,-21.5375 -LD,A3,Johnny_1280x720_60.y4m,libaom-v3.12.0,10.5187,30.4734,27.4077,12.4031,3.096,3.1244,5.5422,7.649,7.7719,19.5019,10.7816,30.2414,27.1313,12.3732 -LD,A3,Johnny_1280x720_60.y4m,libaom-v3.12.0-unconstrained,3.779,3.1656,4.9416,3.7547,3.5081,2.9789,2.3438,2.5477,4.0005,2.8642,3.7834,3.1457,4.9251,3.802 +LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v14.0.0,-20.3662,-30.5147,-42.3173,-21.7044,-19.1811,-19.1836,-20.3408,-21.6456,-20.1325,-26.2887,-20.7107,-30.504,-41.8766,-21.481 +LD,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v15.0.0,-20.3839,-30.6495,-42.3773,-21.7296,-19.2114,-19.2261,-20.3371,-21.6537,-20.1884,-26.3404,-20.7284,-30.6469,-41.9402,-21.5057 LD,A3,Johnny_1280x720_60.y4m,v02.0.0,-0.6795,-9.5508,-9.8789,-1.7097,-0.3077,-0.4802,0.3946,0.1952,-0.8767,-5.1144,-0.6977,-9.5437,-9.8596,-1.4525 LD,A3,Johnny_1280x720_60.y4m,v03.0.0,-5.1908,-11.8771,-11.8603,-5.9618,-4.8717,-4.639,-7.4296,-6.35,-5.0775,-7.4786,-5.2099,-11.8926,-11.8591,-5.7844 LD,A3,Johnny_1280x720_60.y4m,v04.0.0,-13.1986,-20.8086,-19.7894,-14.015,-12.3153,-12.7474,-14.6541,-13.4546,-12.2523,-16.2418,-13.2705,-20.8207,-19.7733,-13.883 @@ -1693,8 +1691,8 @@ LD,A3,Johnny_1280x720_60.y4m,v10.0.0,-23.8014,-29.9568,-28.2742,-24.4093,-22.095 LD,A3,Johnny_1280x720_60.y4m,v11.0.0,-25.0541,-30.2553,-30.1297,-25.6475,-23.827,-23.9736,-27.3451,-25.7275,-23.6731,-27.2818,-25.1716,-30.2506,-30.1098,-25.6153 LD,A3,Johnny_1280x720_60.y4m,v12.0.0,-26.0257,-30.0289,-32.5869,-26.6296,-24.4607,-24.7098,-27.8009,-26.9263,-24.5249,-27.9092,-26.1491,-30.0239,-32.573,-26.592 LD,A3,Johnny_1280x720_60.y4m,v13.0.0,-25.9844,-34.2573,-32.8364,-26.8456,-26.3493,-24.9146,-29.0366,-27.6342,-24.2541,-28.4846,-26.0693,-34.2365,-32.819,-26.7098 -LD,A3,KristenAndSara_1280x720_60.y4m,libaom-v3.12.0,15.1339,30.0778,28.3468,16.5097,-0.6112,0.6716,15.1935,15.1974,6.9353,19.6655,15.4921,29.5908,27.8924,16.8077 -LD,A3,KristenAndSara_1280x720_60.y4m,libaom-v3.12.0-unconstrained,3.7872,2.5698,4.3655,3.7067,3.9416,4.2488,4.3867,3.548,3.5322,2.7707,3.7702,2.5268,4.2712,3.7575 +LD,A3,Johnny_1280x720_60.y4m,v14.0.0,-25.0815,-33.84,-32.1187,-25.9802,-25.7464,-24.0055,-27.2618,-26.0559,-23.4656,-27.7795,-25.1655,-33.8203,-32.1049,-25.8304 +LD,A3,Johnny_1280x720_60.y4m,v15.0.0,-25.0831,-33.8501,-32.1156,-25.9821,-25.7494,-24.0071,-27.2694,-26.0547,-23.4702,-27.7894,-25.1674,-33.8302,-32.102,-25.8325 LD,A3,KristenAndSara_1280x720_60.y4m,v02.0.0,-1.1451,-10.0264,-10.3976,-2.125,-1.0656,-1.0821,-0.1516,-0.9591,-1.7436,-4.9984,-1.1641,-9.9814,-10.3559,-1.9245 LD,A3,KristenAndSara_1280x720_60.y4m,v03.0.0,-4.9656,-15.0198,-14.3541,-6.0174,-4.715,-4.6132,-4.4373,-4.5079,-5.25,-8.6582,-4.9936,-14.9968,-14.3827,-5.8218 LD,A3,KristenAndSara_1280x720_60.y4m,v04.0.0,-11.7792,-23.5961,-22.5776,-13.0124,-11.0982,-11.2105,-12.4635,-11.7312,-11.6398,-16.8237,-11.8533,-23.5679,-22.5738,-12.8403 @@ -1707,8 +1705,8 @@ LD,A3,KristenAndSara_1280x720_60.y4m,v10.0.0,-21.9057,-32.6268,-30.4393,-22.9669 LD,A3,KristenAndSara_1280x720_60.y4m,v11.0.0,-22.1671,-31.9858,-30.2411,-23.1443,-20.9761,-21.0226,-24.1365,-23.4543,-21.6164,-25.9813,-22.2934,-32.0001,-30.2325,-23.0882 LD,A3,KristenAndSara_1280x720_60.y4m,v12.0.0,-23.4207,-33.1212,-29.9964,-24.3055,-22.1729,-22.2761,-25.8825,-25.0842,-22.7592,-27.4065,-23.5466,-33.1249,-30.005,-24.2831 LD,A3,KristenAndSara_1280x720_60.y4m,v13.0.0,-22.8756,-33.1698,-32.4126,-23.9637,-23.2972,-20.9493,-25.7652,-24.6767,-21.7144,-26.9284,-22.9423,-33.0981,-32.385,-23.8393 -LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0,8.6199,-2.4944,-3.4595,7.4322,5.0695,4.8325,10.8193,9.5971,9.1292,0.9003,10.709,-3.0788,-4.4108,8.6381 -LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,6.2772,4.4135,2.3277,5.9493,4.5163,5.033,3.1493,2.7039,4.8682,3.3557,6.7688,4.8071,2.4652,6.5449 +LD,A3,KristenAndSara_1280x720_60.y4m,v14.0.0,-22.4738,-33.5177,-31.9996,-23.6018,-23.0993,-20.6044,-25.7264,-24.4141,-21.3018,-26.9068,-22.5251,-33.4541,-31.9659,-23.4546 +LD,A3,KristenAndSara_1280x720_60.y4m,v15.0.0,-22.477,-33.5248,-31.9793,-23.6039,-23.1011,-20.6307,-25.7303,-24.4213,-21.318,-26.9321,-22.5284,-33.4636,-31.9449,-23.457 LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v02.0.0,-1.3028,-2.5483,-4.0994,-1.4944,-1.2686,-1.3011,-1.9121,-1.7301,-1.2987,-2.9078,-1.3305,-2.695,-4.0458,-1.6413 LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v03.0.0,-4.0631,-4.2824,-6.6494,-4.19,-3.7698,-3.7736,-5.4537,-5.2091,-3.5686,-5.5337,-4.073,-4.4064,-6.5027,-4.3042 LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v04.0.0,-14.0533,-17.2204,-25.2666,-14.7451,-13.5186,-13.5129,-15.794,-15.4537,-13.3613,-16.1691,-14.1394,-17.3625,-25.2085,-15.0121 @@ -1721,8 +1719,8 @@ LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v10.0.0,-22.06,-20.063,-28.2225 LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v11.0.0,-22.4107,-20.417,-28.2771,-22.5689,-20.1115,-20.2148,-22.9261,-22.7536,-21.0525,-23.1209,-22.7039,-20.7526,-28.2012,-22.8559 LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v12.0.0,-22.6079,-21.021,-29.1438,-22.8203,-20.1438,-20.2454,-23.2741,-23.1478,-21.278,-23.7804,-22.8895,-21.3757,-29.0576,-23.1118 LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v13.0.0,-22.885,-21.8716,-29.0579,-23.1105,-21.904,-20.9859,-23.7857,-23.4776,-21.5826,-24.3208,-23.0621,-22.056,-28.7773,-23.3212 -LD,A3,Vidyo3_1280x720p_60fps.y4m,libaom-v3.12.0,7.4714,13.7052,34.4902,8.9007,17.8941,16.6909,8.0264,8.3171,11.7144,14.2963,8.5808,13.3349,34.4151,9.6786 -LD,A3,Vidyo3_1280x720p_60fps.y4m,libaom-v3.12.0-unconstrained,3.6696,3.4765,2.7508,3.5541,4.6055,4.258,3.0805,2.8627,4.1224,2.9986,3.6348,3.4977,2.8164,3.7126 +LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v14.0.0,-22.4029,-21.0135,-28.825,-22.6211,-21.4927,-20.549,-23.2226,-22.8414,-21.1656,-23.9308,-22.5785,-21.1691,-28.5355,-22.814 +LD,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v15.0.0,-22.4437,-21.1005,-28.9006,-22.6657,-21.5473,-20.5852,-23.2638,-22.9076,-21.2051,-23.8653,-22.6172,-21.2506,-28.6498,-22.8564 LD,A3,Vidyo3_1280x720p_60fps.y4m,v02.0.0,-0.4003,-17.7092,-17.7395,-1.8784,-1.0988,-1.0844,-0.9235,-0.4319,-1.0695,-5.8815,-0.4275,-17.6809,-17.7431,-1.1775 LD,A3,Vidyo3_1280x720p_60fps.y4m,v03.0.0,-4.7,-17.6195,-21.4618,-5.9915,-4.4663,-4.7147,-7.221,-6.2145,-4.7242,-10.5025,-4.7354,-17.5744,-21.4798,-5.4549 LD,A3,Vidyo3_1280x720p_60fps.y4m,v04.0.0,-12.3808,-26.7063,-27.7165,-13.7042,-11.4098,-11.6361,-16.3066,-14.4348,-11.7295,-17.8426,-12.482,-26.6114,-27.717,-13.2403 @@ -1735,8 +1733,8 @@ LD,A3,Vidyo3_1280x720p_60fps.y4m,v10.0.0,-22.4429,-37.9505,-38.8816,-23.8664,-19 LD,A3,Vidyo3_1280x720p_60fps.y4m,v11.0.0,-22.8289,-39.503,-38.2554,-24.3052,-19.6622,-20.2838,-27.0211,-25.0296,-21.5608,-28.9423,-23.0063,-39.4474,-38.2721,-23.8354 LD,A3,Vidyo3_1280x720p_60fps.y4m,v12.0.0,-23.7214,-39.367,-38.4637,-25.0945,-20.8216,-21.5425,-27.9127,-26.1812,-22.4016,-29.7365,-23.9135,-39.3171,-38.4752,-24.7062 LD,A3,Vidyo3_1280x720p_60fps.y4m,v13.0.0,-23.2885,-42.04,-40.1359,-24.8666,-24.6835,-22.635,-28.1997,-26.273,-22.0961,-30.1931,-23.4278,-41.9381,-40.1156,-24.3296 -LD,A3,Vidyo4_1280x720p_60fps.y4m,libaom-v3.12.0,14.7419,20.9255,30.3784,15.7317,13.2704,13.1771,19.5139,17.2805,14.3756,22.7052,15.0549,20.008,29.6221,15.6782 -LD,A3,Vidyo4_1280x720p_60fps.y4m,libaom-v3.12.0-unconstrained,5.423,3.6295,5.5443,5.3085,7.0749,7.0435,5.8634,4.7266,5.5245,6.1517,5.4477,3.7811,6.0325,5.4611 +LD,A3,Vidyo3_1280x720p_60fps.y4m,v14.0.0,-22.7368,-41.5049,-39.7779,-24.3202,-24.2094,-22.1323,-27.2217,-25.3544,-21.5429,-29.6519,-22.8805,-41.3979,-39.7632,-23.7828 +LD,A3,Vidyo3_1280x720p_60fps.y4m,v15.0.0,-22.7356,-41.5047,-39.7725,-24.3181,-24.199,-22.1252,-27.2221,-25.353,-21.541,-29.6487,-22.8792,-41.3978,-39.758,-23.7807 LD,A3,Vidyo4_1280x720p_60fps.y4m,v02.0.0,-1.0963,-10.3027,-11.1998,-2.093,-0.7034,-0.7249,0.0863,-0.2036,-1.4697,-4.1535,-1.1462,-10.062,-10.8889,-1.6736 LD,A3,Vidyo4_1280x720p_60fps.y4m,v03.0.0,-5.4533,-12.9409,-16.1949,-6.3979,-5.0604,-5.1454,-5.9364,-5.682,-5.6661,-7.8178,-5.4962,-12.9493,-16.055,-6.0192 LD,A3,Vidyo4_1280x720p_60fps.y4m,v04.0.0,-12.1892,-22.4697,-23.4287,-13.3091,-11.0398,-11.0976,-13.2258,-12.4913,-12.0215,-15.1138,-12.3114,-22.4338,-23.2586,-12.9476 @@ -1749,8 +1747,8 @@ LD,A3,Vidyo4_1280x720p_60fps.y4m,v10.0.0,-21.3714,-30.1808,-30.001,-22.2702,-19. LD,A3,Vidyo4_1280x720p_60fps.y4m,v11.0.0,-22.1026,-31.2456,-29.7764,-22.9637,-20.0166,-20.1722,-22.8541,-22.1476,-21.2625,-24.628,-22.2631,-31.2866,-29.5123,-22.7477 LD,A3,Vidyo4_1280x720p_60fps.y4m,v12.0.0,-22.7086,-30.3847,-31.0686,-23.5351,-19.8989,-20.1504,-24.0952,-23.1271,-21.6704,-25.1949,-22.8163,-30.2651,-30.8187,-23.2891 LD,A3,Vidyo4_1280x720p_60fps.y4m,v13.0.0,-22.431,-32.642,-31.7792,-23.4416,-21.5276,-20.3645,-25.2743,-24.0327,-21.3475,-26.1772,-22.4206,-32.5705,-31.3312,-22.9977 -LD,A3,WestWindEasy_1280x720p30_420.y4m,libaom-v3.12.0,15.0474,-1.8622,-1.7434,13.6695,13.4044,13.5805,49.0575,46.4669,12.6923,13.7416,23.7826,0.3744,-0.548,23.1965 -LD,A3,WestWindEasy_1280x720p30_420.y4m,libaom-v3.12.0-unconstrained,3.4682,1.3727,1.6483,3.2651,3.0376,3.1989,6.627,6.2383,2.681,2.4712,2.9283,1.1411,1.4071,2.9248 +LD,A3,Vidyo4_1280x720p_60fps.y4m,v14.0.0,-22.109,-32.7848,-32.1396,-23.1817,-21.2933,-20.064,-24.766,-23.4508,-21.0741,-26.0539,-22.1018,-32.7462,-31.7505,-22.7183 +LD,A3,Vidyo4_1280x720p_60fps.y4m,v15.0.0,-22.0644,-32.6826,-32.2069,-23.1405,-21.2494,-20.021,-24.629,-23.3595,-21.0151,-25.9719,-22.0542,-32.6393,-31.8175,-22.6729 LD,A3,WestWindEasy_1280x720p30_420.y4m,v02.0.0,-1.691,-6.7413,-0.2192,-1.8953,-1.4352,-1.639,-1.2418,-0.7927,-1.4333,-4.4293,-1.7553,-6.4707,0.1041,-1.8275 LD,A3,WestWindEasy_1280x720p30_420.y4m,v03.0.0,-5.2135,-20.2426,-6.6207,-6.0202,-3.7427,-4.0038,-3.588,-3.0711,-4.3358,-9.2833,-5.2397,-19.9767,-6.2679,-5.5595 LD,A3,WestWindEasy_1280x720p30_420.y4m,v04.0.0,-9.3061,-38.9184,-24.9628,-11.5403,-6.7422,-7.1302,-7.1889,-6.9398,-7.9331,-18.4605,-9.3401,-38.7251,-24.79,-10.115 @@ -1763,8 +1761,8 @@ LD,A3,WestWindEasy_1280x720p30_420.y4m,v10.0.0,-16.288,-66.6352,-56.6655,-21.334 LD,A3,WestWindEasy_1280x720p30_420.y4m,v11.0.0,-17.3029,-65.2651,-54.1113,-22.0194,-14.9256,-15.3533,-15.4146,-15.5233,-16.4001,-29.4247,-17.528,-65.3845,-54.2763,-18.8677 LD,A3,WestWindEasy_1280x720p30_420.y4m,v12.0.0,-17.4945,-67.062,-54.2371,-22.3206,-14.9846,-15.4922,-14.5865,-15.007,-16.6763,-29.5698,-17.7048,-67.1746,-54.2614,-19.0663 LD,A3,WestWindEasy_1280x720p30_420.y4m,v13.0.0,-17.9176,-67.2631,-55.2838,-22.7015,-17.4432,-15.3026,-17.3082,-17.3325,-16.5783,-30.3481,-18.0091,-67.3242,-55.2478,-19.3856 -LD,A4,BlueSky_360p25_v2.y4m,libaom-v3.12.0,-6.4168,-9.4983,-7.9134,-6.6458,-12.5507,-11.5827,-0.093,-5.7789,-0.2251,-7.3003,-6.3513,-13.5954,-11.538,-7.4969 -LD,A4,BlueSky_360p25_v2.y4m,libaom-v3.12.0-unconstrained,1.9033,3.0767,2.6748,1.9196,1.0311,2.0564,6.2215,3.4031,5.7583,4.491,1.5826,3.2235,2.5166,2.2227 +LD,A3,WestWindEasy_1280x720p30_420.y4m,v14.0.0,-17.8205,-67.1383,-54.1622,-22.5576,-17.4103,-15.2204,-16.9704,-17.0508,-16.4998,-30.2375,-17.9107,-67.1252,-54.2255,-19.2811 +LD,A3,WestWindEasy_1280x720p30_420.y4m,v15.0.0,-17.8137,-67.1004,-54.1858,-22.5488,-17.4182,-15.2341,-16.9707,-17.05,-16.5193,-30.2198,-17.9039,-67.088,-54.2397,-19.2729 LD,A4,BlueSky_360p25_v2.y4m,v02.0.0,-3.6917,-15.4321,-32.3662,-5.4063,-4.7742,-3.7904,0.7257,-0.5598,-2.3353,-8.4814,-3.8758,-17.0957,-33.5491,-5.6448 LD,A4,BlueSky_360p25_v2.y4m,v03.0.0,-4.838,-26.6813,-39.052,-7.3311,-6.9102,-4.9891,1.7607,-0.7134,-2.6836,-12.6465,-4.987,-28.5635,-40.4797,-7.8107 LD,A4,BlueSky_360p25_v2.y4m,v04.0.0,-21.2173,-41.259,-61.2302,-24.1017,-23.1481,-20.1456,-12.2417,-15.0526,-17.2859,-30.9494,-21.4467,-43.0622,-62.7136,-24.3953 @@ -1777,8 +1775,8 @@ LD,A4,BlueSky_360p25_v2.y4m,v10.0.0,-31.5334,-51.823,-70.7785,-34.4877,-30.6014, LD,A4,BlueSky_360p25_v2.y4m,v11.0.0,-31.5528,-51.177,-68.6632,-34.3505,-29.9358,-27.4175,-23.5357,-27.0177,-28.7356,-41.5769,-32.0529,-52.9238,-69.6077,-34.8694 LD,A4,BlueSky_360p25_v2.y4m,v12.0.0,-32.2773,-51.8486,-68.6821,-35.0314,-30.5041,-28.0432,-25.1777,-28.2369,-29.3587,-42.4709,-32.783,-53.7554,-69.7366,-35.5739 LD,A4,BlueSky_360p25_v2.y4m,v13.0.0,-32.9643,-51.6684,-68.1756,-35.5925,-31.7372,-29.3899,-26.2278,-29.4034,-30.0538,-42.9927,-33.1248,-53.0965,-69.0919,-35.8734 -LD,A4,RedKayak_360_2997.y4m,libaom-v3.12.0,13.9517,0.701,-6.6267,12.87,8.4328,17.6284,44.6452,41.766,19.0323,15.4513,29.9725,7.163,-3.6913,29.7504 -LD,A4,RedKayak_360_2997.y4m,libaom-v3.12.0-unconstrained,3.5702,2.2032,1.1726,3.5434,0.6285,3.5872,1.1406,0.4609,3.4065,6.7366,3.757,3.6577,4.6579,3.8672 +LD,A4,BlueSky_360p25_v2.y4m,v14.0.0,-32.3935,-51.9561,-68.2685,-35.1064,-31.4015,-28.9803,-24.5856,-28.084,-29.5085,-42.8663,-32.5654,-53.4691,-69.1625,-35.3909 +LD,A4,BlueSky_360p25_v2.y4m,v15.0.0,-32.3914,-51.9549,-68.2676,-35.1045,-31.3995,-28.9779,-24.5816,-28.0803,-29.5063,-42.8644,-32.5634,-53.468,-69.1617,-35.3889 LD,A4,RedKayak_360_2997.y4m,v02.0.0,-2.3368,-0.0906,-8.0969,-2.4588,-5.2123,-4.6882,-3.7767,-3.5714,-3.1055,-0.2755,-2.5536,-0.2618,-2.6345,-2.5753 LD,A4,RedKayak_360_2997.y4m,v03.0.0,-5.5904,-14.9465,-4.276,-5.8967,-8.7352,-7.7964,-5.8717,-5.4339,-5.9268,-7.2653,-5.8239,-14.7902,-2.1441,-6.0339 LD,A4,RedKayak_360_2997.y4m,v04.0.0,-7.69,-18.6289,-27.5381,-8.8389,-11.1047,-10.0145,-7.3997,-6.9811,-8.1117,-10.7062,-7.9544,-18.2804,-24.3681,-8.3194 @@ -1791,8 +1789,8 @@ LD,A4,RedKayak_360_2997.y4m,v10.0.0,-14.2848,-49.013,-47.343,-17.3448,-16.9157,- LD,A4,RedKayak_360_2997.y4m,v11.0.0,-14.7695,-52.0758,-46.7423,-17.8796,-17.0882,-17.2518,-20.6326,-19.6898,-17.2536,-27.569,-15.6333,-52.8878,-44.3522,-16.8258 LD,A4,RedKayak_360_2997.y4m,v12.0.0,-14.9116,-51.1252,-42.8787,-17.7715,-17.1495,-17.3626,-20.6423,-19.6443,-17.3427,-27.2726,-15.7745,-51.8465,-41.4394,-16.9315 LD,A4,RedKayak_360_2997.y4m,v13.0.0,-14.9189,-48.5574,-37.4571,-17.4728,-17.0969,-17.335,-20.1994,-19.3722,-17.2812,-26.8548,-15.6257,-49.2775,-35.8088,-16.7312 -LD,A4,SnowMountain_640x360_2997.y4m,libaom-v3.12.0,13.6347,85.8048,95.3009,17.3442,28.2978,17.1615,-7.9491,-6.328,21.0384,34.87,13.5091,85.8496,95.3189,16.07 -LD,A4,SnowMountain_640x360_2997.y4m,libaom-v3.12.0-unconstrained,-1.1003,3.1728,1.4148,-0.8276,-1.4072,-1.142,-3.6144,-2.7397,5.6309,2.9724,-1.2825,3.1786,1.453,-1.0563 +LD,A4,RedKayak_360_2997.y4m,v14.0.0,-14.724,-48.749,-38.6522,-17.3168,-16.9796,-17.0128,-19.7587,-18.8975,-17.0573,-26.4562,-15.4259,-49.4075,-36.194,-16.528 +LD,A4,RedKayak_360_2997.y4m,v15.0.0,-14.7234,-48.7484,-38.6512,-17.3162,-16.9793,-17.0122,-19.7579,-18.8966,-17.0566,-26.4555,-15.4253,-49.4069,-36.193,-16.5274 LD,A4,SnowMountain_640x360_2997.y4m,v02.0.0,-1.0073,-23.8585,-35.2099,-3.4201,-2.5217,-2.9725,-2.8414,-3.4355,0.9326,-2.5323,-1.0815,-24.0895,-35.4428,-1.7169 LD,A4,SnowMountain_640x360_2997.y4m,v03.0.0,-4.9062,-25.6191,-39.1022,-7.3416,-6.0171,-5.6529,-6.8224,-6.8406,-2.598,-6.7249,-4.9945,-25.6909,-39.3189,-5.695 LD,A4,SnowMountain_640x360_2997.y4m,v04.0.0,-7.1949,-37.3672,-49.6829,-10.4603,-8.2109,-8.275,-9.3529,-9.2558,-5.0951,-11.7238,-7.2918,-37.46,-49.7443,-8.2753 @@ -1805,8 +1803,8 @@ LD,A4,SnowMountain_640x360_2997.y4m,v10.0.0,-18.9924,-54.0171,-64.6827,-22.8304, LD,A4,SnowMountain_640x360_2997.y4m,v11.0.0,-19.365,-58.9474,-64.8142,-23.4277,-17.9478,-19.2444,-26.441,-25.8528,-21.8164,-27.8246,-19.5559,-59.042,-64.874,-20.8276 LD,A4,SnowMountain_640x360_2997.y4m,v12.0.0,-20.9138,-53.4972,-66.2727,-24.6418,-19.4014,-20.6568,-28.4406,-28.0175,-22.8942,-28.4261,-21.1139,-53.5582,-66.332,-22.3245 LD,A4,SnowMountain_640x360_2997.y4m,v13.0.0,-20.7384,-57.631,-65.9642,-24.726,-20.341,-20.7171,-27.4571,-26.8373,-22.4933,-28.9927,-20.9209,-57.6991,-66.1018,-22.2442 -LD,A4,SpeedBag_640x360_2997.y4m,libaom-v3.12.0,14.4544,17.5108,23.5644,14.8892,13.6126,10.0407,9.8906,9.2818,16.7116,19.883,16.998,17.078,22.2877,17.2657 -LD,A4,SpeedBag_640x360_2997.y4m,libaom-v3.12.0-unconstrained,6.6556,6.573,13.653,6.9564,5.285,6.1755,2.7193,3.6186,8.8445,10.1113,6.4042,6.2708,12.7017,6.7944 +LD,A4,SnowMountain_640x360_2997.y4m,v14.0.0,-19.39,-56.8549,-65.3265,-23.4382,-19.2322,-19.3581,-25.3362,-24.7883,-21.1903,-27.7133,-19.5625,-56.9242,-65.4672,-20.8991 +LD,A4,SnowMountain_640x360_2997.y4m,v15.0.0,-19.3851,-56.8524,-65.324,-23.4336,-19.228,-19.3534,-25.3288,-24.7808,-21.1854,-27.7087,-19.5576,-56.9217,-65.4648,-20.8943 LD,A4,SpeedBag_640x360_2997.y4m,v02.0.0,0.7021,-2.2497,-2.9696,0.3651,-0.961,0.4274,-0.8467,-0.8091,2.4044,2.3465,0.4984,-2.6033,-2.7847,0.2241 LD,A4,SpeedBag_640x360_2997.y4m,v03.0.0,-4.856,-7.6311,-7.84,-5.1879,-7.3559,-4.482,-7.7286,-7.3415,-2.6101,-3.7743,-5.1996,-8.0895,-8.0705,-5.4821 LD,A4,SpeedBag_640x360_2997.y4m,v04.0.0,-15.1932,-17.7701,-21.5455,-15.6723,-18.1458,-15.3598,-17.2071,-16.987,-13.1556,-14.0587,-15.6992,-18.2543,-22.3994,-16.1179 @@ -1819,8 +1817,8 @@ LD,A4,SpeedBag_640x360_2997.y4m,v10.0.0,-23.8339,-27.9462,-32.3606,-24.4937,-24. LD,A4,SpeedBag_640x360_2997.y4m,v11.0.0,-27.2405,-31.076,-33.9757,-27.811,-28.3236,-24.9117,-29.5875,-28.803,-26.1915,-29.1865,-28.0086,-32.0574,-34.3996,-28.5298 LD,A4,SpeedBag_640x360_2997.y4m,v12.0.0,-28.8688,-32.7193,-37.7186,-29.5365,-29.339,-25.4854,-30.6308,-30.4862,-27.6162,-30.8089,-29.6426,-33.6811,-37.8605,-30.2187 LD,A4,SpeedBag_640x360_2997.y4m,v13.0.0,-30.1037,-35.389,-38.3206,-30.8177,-31.5279,-27.6903,-33.1515,-32.4015,-28.8284,-32.0569,-30.7552,-36.1382,-37.8103,-31.3922 -LD,A4,Stockholm_640x360_5994.y4m,libaom-v3.12.0,8.8988,39.9917,38.7406,11.6354,9.5754,8.5705,9.1603,6.8777,14.4638,22.401,8.5378,38.6539,37.5629,11.246 -LD,A4,Stockholm_640x360_5994.y4m,libaom-v3.12.0-unconstrained,5.9769,6.2136,8.1404,6.0567,4.0254,4.1612,3.7364,2.8685,11.1818,6.3763,6.0344,6.2482,8.1511,6.2221 +LD,A4,SpeedBag_640x360_2997.y4m,v14.0.0,-28.5773,-33.5709,-37.0111,-29.2867,-29.9848,-26.1711,-31.1087,-30.395,-27.3504,-30.5656,-29.245,-34.2722,-36.8656,-29.8742 +LD,A4,SpeedBag_640x360_2997.y4m,v15.0.0,-28.572,-33.5662,-37.0062,-29.2815,-29.9797,-26.166,-31.102,-30.3884,-27.3455,-30.5602,-29.2398,-34.2675,-36.8607,-29.8691 LD,A4,Stockholm_640x360_5994.y4m,v02.0.0,5.1389,-15.8851,-10.7837,3.2314,3.6437,3.9143,7.0803,6.849,7.4401,0.2698,5.0588,-16.0714,-11.0142,3.8527 LD,A4,Stockholm_640x360_5994.y4m,v03.0.0,4.1103,-18.3032,-11.789,2.1457,3.1329,3.3904,6.0244,5.3136,5.8684,-0.9494,4.0185,-18.441,-12.0249,2.7575 LD,A4,Stockholm_640x360_5994.y4m,v04.0.0,-8.6986,-34.4576,-29.1121,-11.143,-9.1537,-8.6419,-6.5508,-7.4666,-7.6469,-15.1062,-8.9347,-34.6618,-29.3575,-10.5249 @@ -1833,8 +1831,8 @@ LD,A4,Stockholm_640x360_5994.y4m,v10.0.0,-22.1534,-47.4239,-37.3162,-24.3162,-20 LD,A4,Stockholm_640x360_5994.y4m,v11.0.0,-22.9269,-45.8278,-36.2968,-24.855,-20.8095,-20.6738,-20.5193,-22.4858,-23.3322,-29.2316,-23.2123,-45.8377,-36.4847,-24.4711 LD,A4,Stockholm_640x360_5994.y4m,v12.0.0,-24.3353,-46.6434,-39.0624,-26.3075,-21.7828,-21.8466,-23.1262,-24.4371,-24.3495,-30.9636,-24.6197,-46.6629,-39.2317,-25.8986 LD,A4,Stockholm_640x360_5994.y4m,v13.0.0,-25.2068,-49.3938,-39.8013,-27.3027,-23.8215,-23.6429,-24.1461,-25.9141,-25.1274,-32.5368,-25.3981,-49.3114,-39.9053,-26.7777 -LD,A4,TouchdownPass_640x360_2997.y4m,libaom-v3.12.0,13.5645,-5.2072,-9.0351,11.7763,25.885,27.4126,9.003,6.3242,18.3777,18.4458,14.9597,-5.8823,-9.3287,13.966 -LD,A4,TouchdownPass_640x360_2997.y4m,libaom-v3.12.0-unconstrained,3.9429,1.0564,5.9484,3.8168,-2.0247,-2.5473,3.1655,2.7646,5.5158,2.3252,4.4751,0.6264,5.8487,4.5968 +LD,A4,Stockholm_640x360_5994.y4m,v14.0.0,-24.1213,-48.5508,-39.0252,-26.2511,-22.6846,-22.3298,-22.4747,-24.2341,-24.0536,-31.486,-24.3127,-48.4812,-39.1484,-25.7111 +LD,A4,Stockholm_640x360_5994.y4m,v15.0.0,-24.1169,-48.5483,-39.0222,-26.2469,-22.6802,-22.3248,-22.4672,-24.2269,-24.0493,-31.4818,-24.3083,-48.4787,-39.1455,-25.7067 LD,A4,TouchdownPass_640x360_2997.y4m,v02.0.0,-2.1019,-12.1551,-7.5067,-2.7963,-3.4154,-2.3458,-1.4762,-1.8471,0.0103,-2.4332,-2.2702,-12.355,-7.5218,-2.4826 LD,A4,TouchdownPass_640x360_2997.y4m,v03.0.0,-4.784,-18.6497,-11.1909,-5.6859,-5.0886,-4.0315,-3.3377,-4.2513,-2.6348,-6.8225,-4.9894,-18.8337,-11.2816,-5.3101 LD,A4,TouchdownPass_640x360_2997.y4m,v04.0.0,-11.5997,-23.3349,-18.7841,-12.4607,-11.8745,-10.4894,-8.8659,-10.2672,-8.8341,-12.5502,-11.8,-23.4627,-18.7829,-12.1038 @@ -1847,8 +1845,8 @@ LD,A4,TouchdownPass_640x360_2997.y4m,v10.0.0,-19.5251,-30.8576,-20.7317,-20.1993 LD,A4,TouchdownPass_640x360_2997.y4m,v11.0.0,-20.1374,-30.0272,-21.1395,-20.7105,-15.9821,-14.9389,-18.2567,-19.7512,-18.0397,-21.5496,-20.5723,-30.2234,-21.2435,-20.7201 LD,A4,TouchdownPass_640x360_2997.y4m,v12.0.0,-21.3457,-31.0316,-22.7934,-21.9466,-16.9169,-16.1024,-19.1609,-20.7932,-19.2963,-23.0316,-21.8214,-31.2438,-22.9026,-21.999 LD,A4,TouchdownPass_640x360_2997.y4m,v13.0.0,-21.845,-31.6769,-22.7475,-22.4106,-20.0577,-18.9928,-18.7642,-20.3894,-20.021,-24.161,-22.2394,-31.7658,-22.8564,-22.3764 -LD,A5,FourPeople_480x270_60.y4m,libaom-v3.12.0,20.1016,36.4897,33.4182,21.3467,20.7244,18.7216,14.6494,15.652,14.2026,29.6017,19.5538,35.9444,32.5777,20.9524 -LD,A5,FourPeople_480x270_60.y4m,libaom-v3.12.0-unconstrained,6.8936,7.4508,7.0194,6.8774,6.7048,6.6441,5.6303,5.3018,5.8928,6.67,6.758,7.5048,7.0033,6.9213 +LD,A4,TouchdownPass_640x360_2997.y4m,v14.0.0,-20.8426,-30.9982,-21.407,-21.4083,-19.4161,-18.1198,-17.5128,-19.0466,-19.0302,-23.6749,-21.2468,-31.1091,-21.4669,-21.3787 +LD,A4,TouchdownPass_640x360_2997.y4m,v15.0.0,-20.8397,-30.9954,-21.4042,-21.4054,-19.4144,-18.1176,-17.5079,-19.0419,-19.0274,-23.6722,-21.2439,-31.1062,-21.4641,-21.3758 LD,A5,FourPeople_480x270_60.y4m,v02.0.0,0.1255,-4.2777,-5.7694,-0.3665,-0.6426,-0.623,-0.6368,0.2059,-0.9884,-3.0283,-0.0088,-4.29,-5.8626,-0.2949 LD,A5,FourPeople_480x270_60.y4m,v03.0.0,-2.3385,-5.7803,-6.8744,-2.7175,-3.2173,-3.1173,-2.6578,-2.268,-2.9666,-5.1934,-2.4247,-5.7647,-6.9135,-2.6739 LD,A5,FourPeople_480x270_60.y4m,v04.0.0,-7.4956,-13.7158,-16.62,-8.2297,-7.7136,-7.9425,-9.8229,-8.5556,-8.8589,-11.4919,-7.6577,-13.7299,-16.6621,-8.1766 @@ -1861,8 +1859,8 @@ LD,A5,FourPeople_480x270_60.y4m,v10.0.0,-17.8494,-23.1978,-23.5767,-18.3719,-17. LD,A5,FourPeople_480x270_60.y4m,v11.0.0,-18.9763,-24.3638,-23.9849,-19.4716,-18.9053,-19.4373,-23.6788,-22.3422,-20.0466,-22.6916,-19.189,-24.3527,-23.9799,-19.5896 LD,A5,FourPeople_480x270_60.y4m,v12.0.0,-21.281,-25.6984,-25.9058,-21.7035,-21.1373,-21.7469,-28.1032,-26.5831,-22.273,-25.0066,-21.4819,-25.6602,-25.9232,-21.8588 LD,A5,FourPeople_480x270_60.y4m,v13.0.0,-21.5095,-28.8331,-27.8088,-22.1614,-21.8118,-21.5263,-27.3682,-25.9323,-21.4944,-26.0237,-21.5907,-28.7637,-27.7933,-22.1289 -LD,A5,ParkJoy_480x270_50.y4m,libaom-v3.12.0,5.0714,-13.5566,-11.7486,3.7306,0.0728,1.5913,13.7194,12.474,5.1991,-0.985,9.8191,-15.4737,-13.4166,7.9877 -LD,A5,ParkJoy_480x270_50.y4m,libaom-v3.12.0-unconstrained,4.6749,8.9936,9.7661,4.9432,6.2753,7.1897,6.4458,6.2269,5.7773,6.8204,3.6582,8.3861,9.6572,4.3018 +LD,A5,FourPeople_480x270_60.y4m,v14.0.0,-20.2842,-27.8103,-26.4193,-20.9375,-20.5611,-20.2173,-25.9635,-24.2786,-20.2888,-24.8528,-20.3603,-27.7495,-26.4296,-20.888 +LD,A5,FourPeople_480x270_60.y4m,v15.0.0,-20.2842,-27.8103,-26.4193,-20.9375,-20.5611,-20.2173,-25.9635,-24.2786,-20.2888,-24.8528,-20.3603,-27.7495,-26.4296,-20.888 LD,A5,ParkJoy_480x270_50.y4m,v02.0.0,-0.0148,-12.8373,-4.7899,-0.7174,-0.4231,-0.2842,-0.0973,-0.1042,-0.869,-1.3147,-0.5039,-13.801,-5.4523,-1.0785 LD,A5,ParkJoy_480x270_50.y4m,v03.0.0,-1.2662,-16.8984,-0.2449,-1.9062,-1.4271,-1.6561,-3.098,-2.9902,-2.2184,-3.9111,-1.6121,-18.1726,0.0624,-2.2637 LD,A5,ParkJoy_480x270_50.y4m,v04.0.0,-5.059,-27.2907,-12.3105,-6.2654,-5.1164,-5.9352,-9.6281,-9.1173,-6.51,-9.5745,-5.5195,-28.1203,-11.5526,-6.4998 @@ -1875,8 +1873,8 @@ LD,A5,ParkJoy_480x270_50.y4m,v10.0.0,-11.3201,-30.7387,-31.1973,-12.7989,-9.4454 LD,A5,ParkJoy_480x270_50.y4m,v11.0.0,-12.2904,-29.7767,-30.0039,-13.6029,-9.9584,-11.1121,-17.1856,-17.1406,-12.9773,-16.6019,-12.7723,-30.499,-30.449,-13.594 LD,A5,ParkJoy_480x270_50.y4m,v12.0.0,-13.2023,-30.9116,-25.8893,-14.3619,-10.8487,-12.3803,-19.8429,-19.5012,-13.8947,-17.3061,-13.626,-31.7363,-26.2154,-14.4319 LD,A5,ParkJoy_480x270_50.y4m,v13.0.0,-13.0596,-30.976,-28.4256,-14.3145,-11.0103,-12.5743,-19.5955,-19.3119,-14.0403,-17.0078,-13.3112,-31.6202,-28.766,-14.1615 -LD,A5,SparksElevator_480x270p_5994_10bit.y4m,libaom-v3.12.0,13.749,6.5879,4.7726,13.1069,22.7561,19.651,13.3395,11.8152,14.1579,14.6271,18.0819,5.1369,3.012,17.6704 -LD,A5,SparksElevator_480x270p_5994_10bit.y4m,libaom-v3.12.0-unconstrained,6.6267,2.0584,3.2685,6.2247,7.4338,6.8078,6.7019,6.6963,6.5774,6.4268,6.7172,2.2561,3.5028,6.7559 +LD,A5,ParkJoy_480x270_50.y4m,v14.0.0,-12.6462,-30.0403,-27.5336,-13.8704,-10.6286,-12.0602,-18.4932,-18.2499,-13.5647,-16.4734,-12.8935,-30.6403,-27.7223,-13.7128 +LD,A5,ParkJoy_480x270_50.y4m,v15.0.0,-12.6593,-30.1023,-27.7462,-13.892,-10.6039,-12.0307,-18.4514,-18.2434,-13.6577,-16.5002,-12.9063,-30.7006,-27.974,-13.7339 LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v02.0.0,0.286,-12.9408,-0.2051,-0.3077,0.5671,0.6461,0.115,-0.1358,-0.2419,-1.707,0.0897,-12.784,-0.2146,-0.055 LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v03.0.0,-1.1055,-16.3166,-2.2921,-1.8404,-0.4299,-0.1918,-3.8523,-3.8095,-1.2047,-4.0625,-1.2482,-16.2302,-2.5175,-1.4698 LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v04.0.0,-9.016,-37.642,-16.5174,-10.7647,-8.8009,-8.342,-10.4867,-10.3129,-9.3536,-14.1567,-9.2121,-37.5433,-16.6911,-9.735 @@ -1889,8 +1887,8 @@ LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v10.0.0,-20.7027,-35.6512,-15.5918, LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v11.0.0,-21.8486,-32.0979,-16.5509,-22.0617,-19.5365,-20.0304,-24.3423,-24.2513,-21.1711,-22.7437,-22.5147,-32.006,-16.8304,-22.5527 LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v12.0.0,-23.2233,-35.8982,-14.707,-23.4034,-20.3094,-20.9691,-26.8339,-26.5816,-22.2114,-24.579,-23.8823,-35.7533,-14.8613,-23.8707 LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v13.0.0,-24.1124,-40.7761,-23.8063,-24.8465,-23.3405,-22.8966,-27.4527,-26.9543,-23.4384,-26.9255,-24.504,-40.7001,-23.9185,-24.6864 -LD,A5,Vertical_Bayshore_270x480_2997.y4m,libaom-v3.12.0,7.6032,-10.6422,-11.8441,5.8936,2.4739,4.6956,14.9365,13.7044,9.2719,1.6098,9.7202,-14.098,-14.0459,9.0396 -LD,A5,Vertical_Bayshore_270x480_2997.y4m,libaom-v3.12.0-unconstrained,2.603,-1.5908,2.7112,2.2294,2.3741,3.8083,5.979,5.3862,3.5156,2.1546,2.5255,-0.8846,3.1239,2.5004 +LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v14.0.0,-23.3352,-39.4226,-22.2092,-24.0027,-22.7641,-22.2892,-25.5923,-25.1752,-22.6052,-26.0869,-23.7575,-39.3252,-22.2743,-23.9183 +LD,A5,SparksElevator_480x270p_5994_10bit.y4m,v15.0.0,-23.3352,-39.4226,-22.2092,-24.0027,-22.7641,-22.2892,-25.5923,-25.1752,-22.6052,-26.0869,-23.7575,-39.3252,-22.2743,-23.9183 LD,A5,Vertical_Bayshore_270x480_2997.y4m,v02.0.0,-1.3003,-20.2658,-10.0295,-2.7334,-1.5073,-1.3256,-0.4185,-0.3797,-1.667,-4.6055,-1.4276,-19.1701,-8.7353,-1.7818 LD,A5,Vertical_Bayshore_270x480_2997.y4m,v03.0.0,-5.0483,-27.231,-19.4681,-6.907,-3.7312,-4.1648,-9.3023,-8.0824,-4.9453,-8.6209,-5.2517,-24.699,-18.182,-5.7047 LD,A5,Vertical_Bayshore_270x480_2997.y4m,v04.0.0,-13.7158,-35.7932,-25.5273,-15.5041,-12.6544,-13.2739,-19.6995,-18.0646,-13.7124,-16.9189,-13.9408,-33.1972,-24.5569,-14.4058 @@ -1903,8 +1901,8 @@ LD,A5,Vertical_Bayshore_270x480_2997.y4m,v10.0.0,-25.4414,-52.133,-42.0541,-27.7 LD,A5,Vertical_Bayshore_270x480_2997.y4m,v11.0.0,-27.1269,-49.7743,-38.718,-28.9186,-24.6499,-25.7069,-35.7132,-33.7955,-26.6478,-31.8756,-27.4358,-49.7304,-39.1531,-27.9416 LD,A5,Vertical_Bayshore_270x480_2997.y4m,v12.0.0,-28.7608,-52.9401,-40.7927,-30.6698,-25.8954,-27.2646,-37.7796,-35.9928,-28.4058,-33.988,-29.0999,-52.564,-41.1048,-29.6357 LD,A5,Vertical_Bayshore_270x480_2997.y4m,v13.0.0,-27.9996,-48.6941,-39.0078,-29.6617,-25.4865,-26.5709,-37.1402,-35.1881,-27.494,-31.7068,-28.2039,-48.3211,-39.0211,-28.6751 -LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,libaom-v3.12.0,18.9721,-17.112,-13.382,15.8557,8.2052,7.0829,27.3084,26.5927,17.4818,10.4759,28.634,-15.6542,-12.1214,26.2873 -LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,libaom-v3.12.0-unconstrained,4.7994,2.5972,6.548,4.4271,4.2583,2.8732,5.7545,5.6816,5.2532,6.8211,5.4019,2.4462,5.9664,5.5783 +LD,A5,Vertical_Bayshore_270x480_2997.y4m,v14.0.0,-27.1211,-47.4524,-37.5238,-28.7265,-24.8938,-25.6401,-33.7806,-31.5986,-26.5218,-30.2728,-27.336,-46.3788,-37.0565,-27.7809 +LD,A5,Vertical_Bayshore_270x480_2997.y4m,v15.0.0,-27.1198,-47.4398,-37.5135,-28.7232,-24.8943,-25.6411,-33.7859,-31.6031,-26.5184,-30.2659,-27.335,-46.3639,-37.0448,-27.7785 LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v02.0.0,-0.5611,-15.7484,-13.1142,-1.8346,1.1544,-0.927,-2.5221,-2.4239,0.2201,-0.3891,-0.7108,-16.4442,-13.6742,-1.4684 LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v03.0.0,-3.0491,-23.4886,-22.0251,-4.8721,-1.9479,-3.3661,-5.5175,-5.1754,-2.0473,-4.1488,-3.2114,-24.0602,-22.6745,-4.2902 LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v04.0.0,-6.2218,-36.8516,-34.5,-9.1087,-5.9608,-7.1408,-12.1973,-11.3697,-5.4575,-10.3532,-6.4236,-37.2921,-34.8845,-8.0758 @@ -1917,8 +1915,8 @@ LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v10.0.0,-13.6602,-50.667,-43.2009 LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v11.0.0,-14.6301,-50.4281,-41.7905,-17.8422,-12.8678,-12.9419,-21.4397,-20.615,-14.5887,-23.9833,-15.2888,-51.1307,-42.313,-17.0539 LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v12.0.0,-14.8292,-51.153,-41.9753,-18.0909,-12.5785,-12.7296,-21.3926,-20.5461,-14.5461,-24.1884,-15.4842,-51.9043,-42.7267,-17.2688 LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v13.0.0,-14.531,-50.6866,-42.0083,-17.794,-14.2723,-13.035,-21.2088,-20.277,-14.3708,-23.6493,-15.063,-51.3412,-42.6904,-16.8688 -LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,libaom-v3.12.0,11.6286,-0.7357,9.1108,11.0422,6.6786,2.7551,32.2557,27.1786,14.5133,9.9271,20.1403,-2.4791,7.6042,19.3774 -LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,libaom-v3.12.0-unconstrained,4.9178,12.4621,8.8032,5.2592,4.1552,3.8292,7.289,5.8876,6.6807,7.7013,4.7395,12.6475,9.0054,5.208 +LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v14.0.0,-14.3042,-50.7737,-43.0797,-17.6493,-14.0729,-12.6616,-20.8836,-20.0195,-14.1771,-23.2942,-14.8421,-51.4389,-43.7442,-16.6695 +LD,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v15.0.0,-14.306,-50.7832,-42.9549,-17.6439,-14.0811,-12.656,-20.9038,-20.0173,-14.1711,-23.2745,-14.844,-51.4364,-43.6277,-16.667 LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v02.0.0,-0.2394,-18.461,-8.6325,-1.5382,-0.1095,-0.2005,-1.6472,-1.4477,0.6284,-1.3345,-0.4414,-18.9495,-8.5137,-1.0561 LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v03.0.0,-2.0091,-22.4999,-12.1896,-3.5124,-1.7355,-1.6361,-3.3948,-2.9432,-0.7008,-4.0319,-2.2092,-23.0244,-12.0855,-2.9444 LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v04.0.0,-8.228,-31.6507,-23.577,-10.1601,-8.8541,-9.0849,-12.9577,-11.6916,-7.0104,-11.395,-8.5716,-32.2003,-23.5136,-9.4851 @@ -1931,8 +1929,8 @@ LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v10.0.0,-15.7719,-45.546,-28.953,- LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v11.0.0,-16.6292,-43.3271,-26.1843,-18.5204,-17.2125,-17.1469,-20.3629,-20.3388,-16.7543,-22.0899,-17.5473,-43.9771,-26.237,-18.5084 LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v12.0.0,-16.3958,-43.4368,-27.1289,-18.3549,-16.3398,-16.1372,-20.1131,-20.21,-16.4182,-21.5103,-17.3002,-44.0938,-27.0522,-18.2712 LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v13.0.0,-16.3961,-44.1852,-29.676,-18.5285,-16.2681,-17.0358,-19.821,-19.8166,-16.5447,-22.1338,-17.1247,-44.6704,-29.4543,-18.1591 -LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,libaom-v3.12.0,13.6627,6.8411,5.6762,12.7932,8.9201,10.2217,9.0982,7.3577,15.7602,16.7738,16.6028,9.946,10.6425,14.7667 -LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,libaom-v3.12.0-unconstrained,-0.6756,2.8869,4.656,-0.1791,-2.8122,-3.557,-3.1402,-3.2343,2.6547,1.7059,-0.1839,2.5455,4.2806,0.8523 +LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v14.0.0,-16.2974,-44.2447,-29.2776,-18.4235,-16.1926,-16.8408,-19.1586,-19.3058,-16.4054,-22.0575,-17.0219,-44.7406,-29.0013,-18.0562 +LD,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v15.0.0,-16.2981,-44.3184,-29.1979,-18.4253,-16.1829,-16.8322,-19.1168,-19.2822,-16.3916,-22.0711,-17.0255,-44.8168,-28.9189,-18.0612 LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v02.0.0,-2.8685,-5.7847,-3.9237,-3.0949,-3.2974,-3.8,-2.9852,-3.146,-1.6411,-4.3246,-2.7159,-5.295,-2.81,-3.0414 LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v03.0.0,-7.8376,-8.1199,-7.2865,-7.8226,-6.2715,-7.4003,-6.0042,-6.1005,-4.8814,-9.5887,-7.5088,-8.2614,-5.8466,-7.3895 LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v04.0.0,-15.0229,-20.6329,-19.5527,-15.6118,-14.6778,-15.1566,-14.114,-14.1425,-12.8629,-18.8483,-14.2484,-19.6688,-16.7024,-15.3905 @@ -1945,8 +1943,8 @@ LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v10.0.0,-26.0611,-33.0213,-33.1993,- LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v11.0.0,-25.5228,-32.1139,-32.4265,-26.3176,-25.5025,-25.3901,-27.4304,-26.3792,-26.3303,-38.4042,-24.9028,-30.309,-28.6431,-26.1644 LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v12.0.0,-25.9808,-32.5268,-32.5445,-26.7507,-25.7275,-25.6609,-28.1094,-27.0677,-26.6953,-38.6223,-25.2986,-30.6583,-28.7347,-26.5092 LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v13.0.0,-27.3244,-32.5569,-32.685,-27.943,-29.541,-27.5345,-29.4066,-28.0696,-27.4763,-40.0228,-26.2392,-30.4029,-28.6019,-27.1433 -LD,B1,Life_1080p30_v2.y4m,libaom-v3.12.0,25.226,10.246,5.341,23.3973,25.4737,30.1879,12.3479,12.2051,22.9726,25.557,27.3285,10.9077,5.4074,25.7662 -LD,B1,Life_1080p30_v2.y4m,libaom-v3.12.0-unconstrained,7.0086,7.4941,8.9058,7.0778,4.4021,4.309,4.2622,4.3762,9.1867,9.5553,7.1847,8.015,8.8613,7.3349 +LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v14.0.0,-27.3068,-32.574,-32.6133,-27.9245,-29.5859,-27.5655,-29.1598,-27.8993,-27.4685,-40.504,-26.226,-30.465,-28.5108,-27.1276 +LD,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v15.0.0,-27.2525,-32.4433,-32.5785,-27.8673,-29.4583,-27.5255,-28.9929,-27.7769,-27.4173,-40.4633,-26.1402,-30.3222,-28.4815,-27.0423 LD,B1,Life_1080p30_v2.y4m,v02.0.0,0.7373,-4.237,0.4889,0.4343,0.5579,0.6251,0.1382,0.0566,2.5527,1.8064,0.6589,-4.0978,0.5163,0.4573 LD,B1,Life_1080p30_v2.y4m,v03.0.0,-2.9994,-6.9821,-3.8584,-3.2773,-2.3169,-2.0997,-3.5237,-3.1404,-0.8379,-2.7789,-3.1118,-6.8902,-3.9057,-3.3252 LD,B1,Life_1080p30_v2.y4m,v04.0.0,-9.1137,-19.7345,-14.2682,-10.0407,-8.4513,-7.9004,-11.0889,-10.7679,-7.4584,-10.8806,-9.3041,-19.6289,-14.2701,-10.0276 @@ -1959,8 +1957,8 @@ LD,B1,Life_1080p30_v2.y4m,v10.0.0,-17.192,-27.0346,-21.5081,-18.0353,-13.5667,-1 LD,B1,Life_1080p30_v2.y4m,v11.0.0,-17.2797,-25.3596,-21.2768,-17.9887,-13.6297,-12.8095,-17.1663,-17.8959,-16.959,-19.798,-17.7457,-25.3388,-21.4821,-18.2975 LD,B1,Life_1080p30_v2.y4m,v12.0.0,-17.5023,-26.0081,-21.4369,-18.2326,-13.6166,-12.7184,-17.6514,-18.2254,-17.026,-19.8671,-17.9653,-25.9848,-21.6408,-18.5305 LD,B1,Life_1080p30_v2.y4m,v13.0.0,-18.3423,-26.4343,-21.8036,-19.0192,-15.2839,-15.3521,-17.6768,-18.304,-17.4935,-21.2486,-18.6778,-26.2383,-21.8432,-19.1983 -LD,B1,MINECRAFT_1080p_60_8bit.y4m,libaom-v3.12.0,12.7362,0.6787,-3.7468,11.646,9.3645,6.4452,39.5268,36.1749,12.8849,6.5461,20.7958,1.4354,-3.4272,20.0467 -LD,B1,MINECRAFT_1080p_60_8bit.y4m,libaom-v3.12.0-unconstrained,6.9091,8.9285,5.6731,6.8281,6.7463,5.9071,19.3066,18.1206,9.1164,7.9873,8.9848,12.5748,9.169,9.5972 +LD,B1,Life_1080p30_v2.y4m,v14.0.0,-18.2584,-26.1834,-21.8598,-18.933,-15.207,-15.1985,-17.5905,-18.2185,-17.3759,-21.2436,-18.5962,-25.9689,-21.8972,-19.1145 +LD,B1,Life_1080p30_v2.y4m,v15.0.0,-18.2471,-26.1791,-21.8328,-18.921,-15.1756,-15.1832,-17.5792,-18.2203,-17.3765,-21.2151,-18.5839,-25.9639,-21.8651,-19.1012 LD,B1,MINECRAFT_1080p_60_8bit.y4m,v02.0.0,-0.5612,-13.8793,-4.9269,-1.3435,-0.566,-0.697,-1.1286,-1.2188,-0.0118,-3.1925,-0.6146,-14.6286,-5.5624,-1.2385 LD,B1,MINECRAFT_1080p_60_8bit.y4m,v03.0.0,-2.5485,-17.0429,-7.5949,-3.4023,-2.4591,-2.4067,-3.2328,-3.3134,-1.7192,-4.8513,-2.5639,-17.6278,-8.2916,-3.2178 LD,B1,MINECRAFT_1080p_60_8bit.y4m,v04.0.0,-10.1661,-39.1631,-23.1206,-12.1378,-9.8414,-9.9678,-13.3625,-13.1688,-9.6201,-15.9997,-10.2729,-39.8586,-23.3671,-11.6834 @@ -1973,8 +1971,8 @@ LD,B1,MINECRAFT_1080p_60_8bit.y4m,v10.0.0,-16.9562,-58.3412,-34.0115,-20.0789,-1 LD,B1,MINECRAFT_1080p_60_8bit.y4m,v11.0.0,-17.0931,-57.1435,-31.8586,-19.944,-15.8156,-15.8139,-22.9831,-21.9907,-17.6694,-29.4202,-17.4286,-58.0942,-32.1567,-19.461 LD,B1,MINECRAFT_1080p_60_8bit.y4m,v12.0.0,-17.6123,-57.0965,-32.5168,-20.4117,-15.9188,-15.9352,-23.2561,-22.3495,-18.0609,-29.4325,-17.9223,-58.0961,-32.8672,-19.886 LD,B1,MINECRAFT_1080p_60_8bit.y4m,v13.0.0,-17.5837,-56.8554,-32.764,-20.3821,-15.92,-16.3782,-23.1677,-22.1195,-18.2019,-29.5942,-17.8137,-57.7238,-32.9887,-19.7818 -LD,B1,STARCRAFT_1080p60.y4m,libaom-v3.12.0,10.9934,26.2396,40.2269,13.01,17.405,16.5053,17.1513,16.0103,19.3284,46.9631,13.1186,26.621,40.5083,14.4274 -LD,B1,STARCRAFT_1080p60.y4m,libaom-v3.12.0-unconstrained,4.3053,4.5853,6.3294,4.4151,2.4197,1.6586,-1.3386,-1.2553,7.3236,19.2114,4.305,4.489,6.2593,4.4904 +LD,B1,MINECRAFT_1080p_60_8bit.y4m,v14.0.0,-17.5286,-56.349,-31.9495,-20.2618,-15.9271,-16.3351,-23.0284,-21.9827,-18.1135,-29.3655,-17.758,-57.2541,-32.103,-19.6915 +LD,B1,MINECRAFT_1080p_60_8bit.y4m,v15.0.0,-17.5036,-56.7883,-33.2982,-20.3346,-15.9381,-16.3116,-23.3001,-22.2435,-18.1271,-29.5299,-17.7369,-57.682,-33.4696,-19.719 LD,B1,STARCRAFT_1080p60.y4m,v02.0.0,-1.5304,-7.9696,-11.2965,-2.4785,-3.4167,-4.2171,-2.111,-2.1878,-0.1956,-0.4198,-1.6412,-8.0665,-11.3284,-2.1142 LD,B1,STARCRAFT_1080p60.y4m,v03.0.0,-5.0198,-13.0622,-14.4189,-6.0327,-6.6651,-7.6897,-3.8579,-3.7417,-3.4222,-5.6011,-5.1268,-13.1533,-14.4523,-5.6648 LD,B1,STARCRAFT_1080p60.y4m,v04.0.0,-11.7407,-23.988,-27.11,-13.37,-14.0603,-15.3168,-10.5758,-10.6575,-10.1352,-14.2076,-11.9671,-24.0913,-27.1422,-12.8653 @@ -1987,8 +1985,8 @@ LD,B1,STARCRAFT_1080p60.y4m,v10.0.0,-18.9364,-30.5773,-34.6505,-20.5627,-19.643, LD,B1,STARCRAFT_1080p60.y4m,v11.0.0,-18.8788,-30.2825,-34.1269,-20.4646,-19.3539,-20.5673,-16.5695,-16.8389,-19.6723,-33.5532,-19.4805,-30.4987,-34.1995,-20.3677 LD,B1,STARCRAFT_1080p60.y4m,v12.0.0,-19.7885,-29.9777,-34.0392,-21.2346,-20.2155,-21.3622,-18.45,-18.386,-20.6636,-33.7251,-20.3926,-30.1859,-34.1152,-21.2052 LD,B1,STARCRAFT_1080p60.y4m,v13.0.0,-20.4458,-32.5002,-36.0716,-22.0885,-23.9498,-22.667,-20.0758,-19.9014,-21.141,-36.1293,-21.0093,-32.7099,-36.1344,-21.9397 -LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,libaom-v3.12.0,9.7733,-21.3421,-21.9055,7.4733,2.8445,1.9145,26.9254,24.6497,7.3234,3.8835,20.9463,-24.3993,-24.8891,20.0564 -LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,3.8762,4.3167,4.1739,3.9392,4.401,3.959,11.1054,10.3426,6.3301,7.1812,3.9347,3.8303,3.7925,4.1048 +LD,B1,STARCRAFT_1080p60.y4m,v14.0.0,-20.19,-32.505,-35.9273,-21.8586,-23.717,-22.4965,-19.4829,-19.3353,-21.0017,-35.9972,-20.7637,-32.7168,-35.9896,-21.7077 +LD,B1,STARCRAFT_1080p60.y4m,v15.0.0,-20.1759,-32.4196,-35.878,-21.8372,-23.7257,-22.5103,-19.4649,-19.3252,-20.9857,-35.9961,-20.7499,-32.6337,-35.9417,-21.6889 LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v02.0.0,-0.9209,-5.7552,-5.5124,-1.2851,-1.8469,-2.0935,-2.0306,-2.1024,-0.9929,0.7801,-1.0141,-5.7568,-6.1651,-1.1305 LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v03.0.0,-3.832,-13.7281,-12.0523,-4.5495,-4.7079,-4.9863,-4.8066,-4.4549,-4.0048,-3.8883,-3.8858,-13.791,-12.401,-4.1253 LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v04.0.0,-8.594,-27.2858,-23.9523,-10.0002,-9.4398,-9.7862,-12.6641,-12.2904,-9.1131,-11.29,-8.4429,-27.4668,-24.1151,-8.9047 @@ -2001,8 +1999,8 @@ LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v10.0.0,-13.3922,-39.6294,-38.2383,-15.61 LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v11.0.0,-13.6438,-38.6829,-38.2693,-15.7775,-15.1621,-14.9712,-22.5848,-21.7972,-15.8975,-20.3967,-14.0656,-38.9132,-38.8231,-14.7007 LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v12.0.0,-13.8324,-39.1766,-38.5463,-15.9891,-14.9275,-14.865,-22.0846,-21.4794,-16.0579,-20.7379,-14.2426,-39.7678,-39.031,-14.8969 LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v13.0.0,-14.2265,-39.3783,-40.1719,-16.43,-14.1776,-15.5572,-22.7807,-22.1064,-16.5447,-21.151,-14.2037,-39.0397,-40.4872,-14.8643 -LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0,23.6647,19.0143,14.4036,22.3801,15.5103,18.0815,18.497,18.2349,16.8037,17.4669,30.9572,26.8171,21.6413,28.5697 -LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0-unconstrained,3.1493,-0.0363,-1.0795,2.5643,0.7126,1.9129,-1.6769,-1.6833,0.9983,0.5001,3.1654,0.1598,-0.6042,2.0983 +LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v14.0.0,-14.2063,-39.8898,-39.4098,-16.4004,-14.1963,-15.5543,-22.7265,-22.0684,-16.5324,-21.1795,-14.1926,-39.6797,-39.6385,-14.8566 +LD,B1,Sniper_1920x1080P_30fps_8bit.y4m,v15.0.0,-14.2066,-39.7503,-39.445,-16.3955,-14.1959,-15.5397,-22.7108,-22.0647,-16.5093,-21.1485,-14.192,-39.5046,-39.679,-14.8522 LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v02.0.0,-1.6808,-3.0461,-2.9171,-1.8798,-2.0099,-2.1264,-3.9021,-3.5806,-1.8968,-1.9206,-1.8637,-3.1983,-3.1158,-2.1952 LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v03.0.0,-7.9099,-8.1572,-6.0344,-7.7806,-8.0903,-8.5777,-5.1273,-5.0269,-7.2036,-7.7559,-8.0838,-8.1818,-6.4488,-7.8158 LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v04.0.0,-13.3328,-20.8298,-17.5082,-14.2824,-14.2261,-14.5152,-11.119,-11.1593,-14.3069,-15.7213,-13.7766,-20.9023,-17.7533,-15.3024 @@ -2015,8 +2013,8 @@ LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v10.0.0,-25.218,-42.3191,-37. LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v11.0.0,-27.0732,-45.0435,-39.7983,-29.7427,-27.5564,-27.9158,-25.3398,-25.1884,-29.7291,-34.2283,-27.3771,-45.253,-38.7682,-31.856 LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v12.0.0,-26.8991,-44.8404,-39.5654,-29.5563,-27.3489,-27.7378,-24.9969,-24.8488,-29.4906,-34.0085,-27.1773,-45.0695,-38.5165,-31.6503 LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v13.0.0,-26.8532,-44.5197,-39.3539,-29.4763,-32.0028,-27.6671,-24.7093,-24.5835,-29.3852,-33.9824,-27.0582,-44.6512,-38.167,-31.4696 -LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0,15.0384,-6.0174,-4.691,13.61,14.1453,13.3586,24.2913,23.1528,13.8522,7.7456,29.7261,15.3856,6.8367,27.9056 -LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0-unconstrained,7.3001,0.7388,-0.8207,6.7129,5.3297,5.9372,5.4376,4.9167,5.3741,5.5073,8.0322,7.5315,0.724,7.9033 +LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v14.0.0,-26.7689,-44.4968,-39.3057,-29.3926,-31.9219,-27.5775,-24.6534,-24.5423,-29.3143,-33.885,-26.9713,-44.6354,-38.1117,-31.3817 +LD,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v15.0.0,-26.7692,-44.4566,-39.2953,-29.3883,-31.9118,-27.5874,-24.6473,-24.5349,-29.3187,-33.8726,-26.9672,-44.5897,-38.1013,-31.3723 LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v02.0.0,-5.24,-15.6834,-17.5724,-6.1514,-6.2235,-6.1376,-6.428,-6.2084,-5.4858,-10.0333,-4.0446,-15.9055,-11.959,-5.1978 LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v03.0.0,-12.032,-8.4272,-21.4548,-12.3299,-12.6693,-12.6877,-13.3639,-12.3389,-11.3284,-15.9639,-10.6477,-20.8746,-18.1794,-11.6926 LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v04.0.0,-17.5883,-28.2719,-32.1571,-18.6601,-17.6903,-17.9053,-18.5328,-17.6401,-16.7895,-25.0383,-15.8506,-42.0508,-28.8201,-18.2264 @@ -2029,8 +2027,8 @@ LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v10.0.0,-27.2322,-44.5704,-44.85 LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v11.0.0,-26.7108,-45.0267,-46.0332,-28.295,-25.6928,-26.2394,-27.8604,-27.1477,-25.4586,-36.7528,-26.0844,-57.1259,-42.4662,-28.8075 LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v12.0.0,-26.9844,-45.0014,-44.8517,-28.4844,-25.6905,-26.348,-28.1643,-27.4015,-25.5457,-36.5285,-26.3727,-56.7747,-40.8638,-28.9165 LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v13.0.0,-26.7847,-44.972,-45.7601,-28.3403,-30.326,-26.2093,-27.1511,-26.4301,-25.4524,-36.7304,-26.0122,-56.4156,-41.0802,-28.5886 -LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,libaom-v3.12.0,22.6631,27.1564,-0.1314,21.6931,10.7856,10.1881,38.3409,37.84,18.1616,15.2045,28.7549,31.0722,4.3576,28.1534 -LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,libaom-v3.12.0-unconstrained,8.2858,19.5745,2.5399,8.3726,6.0086,6.5561,8.9908,8.1721,8.961,9.2526,7.5268,19.606,5.016,7.7646 +LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v14.0.0,-26.748,-44.0365,-45.9067,-28.2811,-30.2977,-26.1878,-27.9352,-27.2237,-25.425,-36.7646,-25.9428,-56.1257,-41.1178,-28.5148 +LD,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v15.0.0,-26.7862,-44.014,-45.8697,-28.3121,-30.3163,-26.2003,-27.9412,-27.2096,-25.4448,-36.7809,-25.9678,-56.1682,-41.1363,-28.5395 LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v02.0.0,-0.4348,2.2063,-15.9282,-1.1601,-1.739,-2.0127,-1.3122,-1.3869,-0.2569,-2.6712,-0.577,1.5039,-16.6217,-1.089 LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v03.0.0,-4.817,0.8275,-22.1935,-5.5394,-4.7758,-5.1109,-4.8511,-4.8021,-4.0472,-7.4982,-4.8155,0.1768,-23.2362,-5.3898 LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v04.0.0,-12.2449,-13.8412,-31.6773,-13.4152,-12.4047,-12.9818,-12.1303,-11.343,-11.66,-16.4052,-12.2064,-14.629,-32.6762,-13.0226 @@ -2043,8 +2041,8 @@ LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v10.0.0,-23.6704,-34.5074,-53.4785,-26. LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v11.0.0,-24.9621,-37.6067,-53.2607,-27.3307,-24.7407,-24.9913,-26.7343,-25.8576,-25.8974,-37.399,-24.9014,-38.1338,-55.0878,-26.3956 LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v12.0.0,-25.0681,-35.0693,-54.2751,-27.3854,-24.6507,-25.056,-27.4134,-26.3089,-25.9835,-37.7574,-24.9992,-35.6693,-56.1549,-26.4956 LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v13.0.0,-25.1848,-38.3613,-54.2422,-27.6546,-25.005,-24.8706,-27.3692,-26.4695,-25.8307,-37.9846,-25.098,-38.7665,-55.9079,-26.6402 -LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,libaom-v3.12.0,25.2468,23.2473,22.9952,24.9908,13.0309,13.4064,18.4573,18.069,14.6523,25.7211,24.848,22.3125,22.0795,24.4901 -LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,libaom-v3.12.0-unconstrained,15.4038,7.554,12.1002,14.7696,29.9836,27.3372,35.3852,31.534,28.5864,0.2978,19.9359,13.9585,17.9334,19.4086 +LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v14.0.0,-25.1053,-37.5463,-53.7756,-27.5164,-24.9815,-24.81,-27.4114,-26.5035,-25.7099,-37.5834,-25.0228,-37.9544,-55.4486,-26.5407 +LD,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v15.0.0,-25.1096,-37.4801,-53.7103,-27.5096,-24.9854,-24.8315,-27.4919,-26.5349,-25.7117,-37.5563,-25.0196,-37.9199,-55.3911,-26.5328 LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v02.0.0,-1.1402,-4.257,-4.0349,-1.4654,-1.3561,-1.4414,-1.0326,-1.1568,-1.6466,-5.1764,-1.1725,-4.1728,-3.9212,-1.5489 LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v03.0.0,-8.7088,-9.4763,-10.2846,-8.8363,-8.7328,-9.3695,-9.2365,-9.0723,-8.9567,-10.1473,-8.9195,-9.7951,-10.591,-9.1008 LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v04.0.0,-14.4834,-19.0278,-19.6982,-15.0159,-14.6006,-15.3498,-15.5563,-15.2787,-15.0935,-19.2906,-14.6551,-19.263,-19.9175,-15.3904 @@ -2057,8 +2055,8 @@ LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v10.0.0,-23.604 LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v11.0.0,-24.3322,-26.7491,-27.5086,-24.6366,-25.295,-26.1756,-27.5152,-25.9453,-25.4427,-28.8292,-24.5509,-27.0203,-27.8354,-24.951 LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v12.0.0,-24.6503,-27.4431,-27.757,-24.9717,-25.522,-26.3017,-27.3477,-26.6668,-25.6938,-29.3721,-24.866,-27.732,-28.0815,-25.2859 LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v13.0.0,-25.1922,-27.5451,-27.7576,-25.4582,-28.5271,-25.8893,-26.4934,-25.993,-25.1941,-29.3499,-25.295,-27.6722,-27.9238,-25.6597 -LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,16.9686,18.7365,20.6461,17.2556,13.6006,14.4379,17.4833,17.487,12.624,17.8988,16.0959,18.2976,20.4475,17.1867 -LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,5.6821,-1.818,-2.1864,4.885,10.5676,9.9834,9.0958,6.4164,12.6572,-9.9289,8.0681,-0.3763,-0.8507,6.1975 +LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v14.0.0,-25.0005,-27.5697,-27.5566,-25.2781,-28.2136,-25.566,-26.3671,-25.7735,-25.0166,-29.3807,-25.0891,-27.709,-27.7072,-25.461 +LD,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v15.0.0,-24.9535,-27.4692,-27.4255,-25.2236,-28.2449,-25.5773,-26.3684,-25.7232,-25.0035,-29.2192,-25.0416,-27.6067,-27.5748,-25.4029 LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v02.0.0,1.2779,-1.5072,0.1416,1.0949,-0.2034,0.2627,1.3526,1.1734,-0.346,-2.4722,1.1282,-1.5571,0.1111,0.858 LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v03.0.0,-9.9559,-12.1777,-10.5721,-10.0907,-11.1734,-10.4101,-11.3674,-9.7614,-10.7065,-13.8151,-10.1928,-12.2817,-10.6091,-10.4065 LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v04.0.0,-26.1613,-36.5297,-32.5592,-26.9755,-27.0898,-26.8366,-26.0433,-24.1697,-26.761,-31.9113,-26.4035,-36.2969,-32.3847,-27.7383 @@ -2071,8 +2069,8 @@ LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v10.0.0,-42.5542,-53.0062,-48.1395, LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v11.0.0,-42.9316,-51.2141,-47.0329,-43.5265,-43.8399,-43.3089,-41.9724,-40.4748,-43.6049,-49.6894,-43.3061,-51.0588,-46.9883,-44.1916 LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v12.0.0,-43.7228,-52.0906,-47.0929,-44.284,-44.2851,-43.9161,-42.9246,-41.7226,-44.3691,-50.158,-44.0934,-51.9617,-47.0571,-44.9196 LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v13.0.0,-45.0317,-52.5262,-48.2412,-45.5429,-46.247,-45.2678,-44.6829,-42.9217,-45.1218,-51.2909,-45.2759,-52.2884,-48.1372,-46.0268 -LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,libaom-v3.12.0,3.0272,8.2979,11.4831,3.7074,-1.0854,-0.6519,-1.7942,-1.2528,1.5834,5.1459,4.028,10.9912,14.3132,4.9691 -LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,libaom-v3.12.0-unconstrained,13.9734,-4.3046,-4.0589,11.9429,20.0353,18.6835,29.9083,29.0043,20.8844,0.0232,22.1858,0.8921,-0.2882,20.2637 +LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v14.0.0,-44.5231,-52.2948,-48.1718,-45.0695,-45.7451,-44.7606,-44.1552,-42.2309,-44.6531,-50.9925,-44.7497,-52.0614,-48.0754,-45.5814 +LD,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v15.0.0,-44.7793,-52.4269,-48.4107,-45.3188,-46.028,-45.0337,-44.2563,-42.3175,-44.9741,-51.1676,-45.0194,-52.195,-48.3106,-45.8223 LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v02.0.0,0.5039,-5.2812,-4.6858,-0.0647,-0.2112,-0.2109,0.3454,0.5096,-0.4672,-3.8786,0.445,-5.5598,-4.883,-0.0142 LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v03.0.0,-6.242,-10.9046,-9.7518,-6.6697,-5.9312,-6.0953,-8.6404,-7.195,-6.5156,-9.556,-6.4043,-11.1596,-9.8912,-6.7648 LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v04.0.0,-23.9971,-32.3045,-30.707,-24.7859,-21.7173,-22.2431,-30.9204,-29.0651,-23.8449,-29.6812,-24.7038,-32.645,-30.9162,-25.4368 @@ -2085,8 +2083,8 @@ LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v10.0.0,-26.69 LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v11.0.0,-33.2971,-41.3746,-40.0811,-34.0747,-31.6187,-31.8542,-40.8462,-38.9855,-33.7593,-41.0339,-34.2978,-42.0914,-40.5842,-34.9809 LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v12.0.0,-33.3092,-41.4236,-40.9123,-34.142,-31.9962,-32.1591,-40.8919,-39.3084,-33.9762,-40.8507,-34.2823,-42.15,-41.4115,-34.9789 LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v13.0.0,-34.1564,-42.1709,-41.919,-34.9835,-33.4097,-32.3458,-41.549,-40.0463,-34.2499,-41.1923,-34.8264,-42.8964,-42.4079,-35.5883 -LD,B2,MobileDeviceScreenSharing.y4m,libaom-v3.12.0,80.4312,65.5231,63.761,79.096,82.7066,82.2215,76.221,80.9707,87.6549,85.6638,80.2441,66.5464,64.4035,78.843 -LD,B2,MobileDeviceScreenSharing.y4m,libaom-v3.12.0-unconstrained,81.703,75.7222,75.6751,81.1834,83.3654,82.7925,79.8421,82.8159,87.7218,81.9097,82.0939,76.2346,74.4219,81.5192 +LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v14.0.0,-33.0182,-41.9712,-41.5777,-33.9438,-32.6654,-31.4711,-39.6051,-38.0775,-33.2471,-40.7985,-33.6256,-42.6668,-42.0548,-34.4407 +LD,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v15.0.0,-33.0103,-42.0426,-41.552,-33.9394,-32.1291,-31.0044,-39.8303,-38.2658,-33.0323,-40.5629,-33.6204,-42.7456,-42.0336,-34.4373 LD,B2,MobileDeviceScreenSharing.y4m,v02.0.0,-3.6613,-10.7106,-7.6321,-4.1924,-3.1365,-3.3218,0.731,0.8263,-3.7889,-5.4719,-3.691,-10.6785,-8.2972,-3.9127 LD,B2,MobileDeviceScreenSharing.y4m,v03.0.0,-9.1907,-17.3444,-16.4082,-9.936,-6.8991,-7.1046,-6.3723,-4.9027,-7.3193,-13.1157,-9.2422,-17.052,-16.4854,-9.4973 LD,B2,MobileDeviceScreenSharing.y4m,v04.0.0,-27.2424,-35.5489,-36.2452,-28.0817,-26.2295,-26.6472,-23.009,-21.6848,-26.3665,-31.0809,-27.2497,-35.2821,-36.4615,-27.583 @@ -2099,8 +2097,8 @@ LD,B2,MobileDeviceScreenSharing.y4m,v10.0.0,-46.0039,-54.56,-53.5649,-46.8427,-4 LD,B2,MobileDeviceScreenSharing.y4m,v11.0.0,-44.3117,-51.8121,-52.5468,-45.1039,-44.479,-44.4692,-45.1671,-43.5612,-45.1628,-50.1805,-44.3762,-51.7163,-52.7502,-44.8364 LD,B2,MobileDeviceScreenSharing.y4m,v12.0.0,-45.6861,-53.0176,-51.5668,-46.3463,-45.7439,-45.7229,-46.3293,-44.4962,-46.5618,-49.8181,-45.755,-52.9336,-52.0264,-46.1434 LD,B2,MobileDeviceScreenSharing.y4m,v13.0.0,-45.9118,-52.6723,-53.1434,-46.5867,-46.2573,-45.57,-47.2068,-45.2638,-46.4885,-50.5365,-45.9578,-52.6836,-53.494,-46.3278 -LD,B2,SceneComposition_2.y4m,libaom-v3.12.0,53.9375,44.119,31.5191,52.0998,39.5059,40.1636,47.9378,51.1391,45.455,58.6064,53.8915,42.0624,28.2471,50.4212 -LD,B2,SceneComposition_2.y4m,libaom-v3.12.0-unconstrained,34.9607,30.4636,23.7748,33.9322,36.9723,38.3002,38.3934,38.3149,39.0382,35.3477,35.0334,32.0933,25.9066,34.2688 +LD,B2,MobileDeviceScreenSharing.y4m,v14.0.0,-45.8073,-52.6187,-53.4615,-46.5273,-46.2308,-45.4065,-46.5915,-44.7105,-46.4702,-50.5043,-45.8638,-52.5134,-53.708,-46.2476 +LD,B2,MobileDeviceScreenSharing.y4m,v15.0.0,-45.8089,-52.62,-53.4631,-46.5289,-46.2324,-45.4087,-46.6009,-44.7207,-46.4724,-50.5056,-45.8654,-52.5148,-53.7096,-46.2492 LD,B2,SceneComposition_2.y4m,v02.0.0,-2.5547,-25.8127,-29.2819,-5.4703,-3.135,-2.5077,2.6546,2.0015,-5.2308,-17.1731,-2.5818,-25.5809,-28.4608,-5.8482 LD,B2,SceneComposition_2.y4m,v03.0.0,-11.8199,-21.7804,-34.2078,-13.7238,-13.1928,-12.6545,-10.7724,-9.9384,-13.8218,-20.6984,-11.839,-22.0392,-33.5541,-14.1705 LD,B2,SceneComposition_2.y4m,v04.0.0,-21.8414,-39.5399,-47.1939,-24.5671,-22.8718,-22.5802,-22.5903,-21.1994,-24.5849,-37.4295,-21.854,-39.4683,-46.1176,-25.2456 @@ -2113,8 +2111,8 @@ LD,B2,SceneComposition_2.y4m,v10.0.0,-35.2471,-56.5214,-61.5888,-38.4837,-38.304 LD,B2,SceneComposition_2.y4m,v11.0.0,-37.8235,-58.5326,-62.956,-40.8977,-40.7903,-40.3696,-44.044,-42.368,-42.0987,-55.1195,-37.8962,-58.7085,-63.2853,-41.6659 LD,B2,SceneComposition_2.y4m,v12.0.0,-38.4091,-58.6158,-63.3376,-41.3871,-41.3363,-41.179,-43.7464,-42.7024,-42.7791,-55.157,-38.4841,-58.8069,-63.6508,-42.1389 LD,B2,SceneComposition_2.y4m,v13.0.0,-39.446,-58.9886,-63.3413,-42.3154,-41.2926,-40.7938,-43.5033,-42.4312,-42.516,-54.7553,-39.4797,-59.1335,-63.587,-43.0293 -LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,11.8081,12.2304,11.6169,11.8074,9.5129,9.9517,17.3521,17.2484,12.3441,15.6733,13.7931,14.05,16.4556,14.2618 -LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,20.3723,22.6795,23.298,20.6353,20.742,20.8203,24.9914,25.6625,20.6568,25.8141,21.648,22.2184,25.1931,22.3706 +LD,B2,SceneComposition_2.y4m,v14.0.0,-38.9268,-58.6854,-63.1239,-41.8331,-40.704,-40.5047,-43.4109,-42.2022,-42.0131,-54.719,-38.9569,-58.8404,-63.3361,-42.5619 +LD,B2,SceneComposition_2.y4m,v15.0.0,-38.9268,-58.6854,-63.1239,-41.8331,-40.704,-40.5047,-43.4109,-42.2022,-42.0131,-54.719,-38.9569,-58.8404,-63.3361,-42.5619 LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v02.0.0,-3.1895,-13.3113,-10.5577,-4.2068,-3.5251,-3.167,-4.0042,-3.564,-4.1583,-7.3744,-2.9137,-11.945,-15.2998,-5.4543 LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v03.0.0,-14.4826,-19.3714,-19.5889,-15.0326,-18.281,-17.4956,-18.2932,-16.3319,-15.9476,-13.2203,-14.4306,-20.5586,-23.959,-16.2653 LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v04.0.0,-33.4208,-40.2807,-39.7457,-34.1753,-36.1902,-35.6369,-34.95,-33.4648,-33.8687,-32.4478,-34.0931,-40.5748,-45.3876,-36.124 @@ -2127,8 +2125,8 @@ LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v10.0.0,-52.0829,-64.0393,-63.1396,-5 LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v11.0.0,-53.3728,-64.4444,-63.5988,-54.6845,-58.2091,-57.4991,-60.7411,-59.0812,-55.8673,-59.1684,-53.6868,-65.3192,-67.2008,-56.6715 LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v12.0.0,-53.6266,-63.5101,-63.0505,-54.8163,-58.4258,-57.6017,-61.2887,-59.6814,-56.0252,-58.222,-54.0426,-63.2818,-66.6155,-56.5864 LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v13.0.0,-53.7848,-61.9107,-63.3291,-54.8199,-56.4429,-57.6492,-61.2291,-59.6597,-55.6933,-57.9562,-54.2675,-62.9201,-66.534,-56.7243 -LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,-1.1803,-4.879,-5.4903,-1.5995,-1.0283,-2.0108,-4.5159,-3.7808,1.0847,-0.8959,-5.1383,-8.1239,-7.4996,-5.7234 -LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,4.5885,7.6268,6.9086,4.8514,3.6793,3.3159,5.0317,4.9932,4.4179,5.8965,6.288,8.8459,9.4232,6.9789 +LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v14.0.0,-53.5265,-61.4183,-63.0473,-54.6201,-56.2947,-57.5117,-60.7266,-59.147,-55.4541,-55.3757,-54.0275,-62.9116,-66.4499,-56.5263 +LD,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v15.0.0,-53.5105,-62.0296,-62.731,-54.6223,-56.2053,-57.3819,-60.6346,-59.089,-55.4819,-57.2936,-53.9806,-63.0681,-66.4542,-56.5015 LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v02.0.0,-1.7621,-17.7533,-17.9541,-3.2207,-2.595,-2.832,-1.9019,-1.5844,-2.7844,-5.4751,-1.6674,-7.104,-6.0894,-2.3269 LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v03.0.0,-9.9068,-22.0499,-23.0953,-11.0481,-9.3964,-9.624,-14.0229,-12.2477,-9.0132,-9.0572,-9.9204,-12.3265,-11.6066,-10.2597 LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v04.0.0,-19.7833,-34.2049,-31.3272,-20.9979,-19.9301,-20.3753,-22.875,-21.0811,-19.3617,-21.8042,-19.6312,-23.9181,-22.9313,-20.2313 @@ -2141,8 +2139,8 @@ LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v10.0.0,-31.2951,-43.8937,-43.8371,- LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v11.0.0,-33.0074,-42.7426,-43.1726,-33.9125,-34.8993,-35.1724,-41.9809,-41.5005,-33.6495,-33.3657,-32.5051,-32.8162,-32.4371,-32.4473 LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v12.0.0,-33.5148,-43.6076,-43.3988,-34.4214,-35.2452,-35.6288,-42.5778,-42.0849,-34.0818,-33.0218,-33.0214,-33.2588,-32.9692,-32.9617 LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v13.0.0,-33.5846,-42.0672,-42.6242,-34.3788,-36.7116,-35.9909,-42.1292,-41.6657,-34.2988,-31.1051,-32.5892,-33.1438,-32.436,-32.5458 -LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,libaom-v3.12.0,4.78,12.5495,10.5879,5.4227,4.9616,4.5499,7.5394,6.9484,6.5688,10.1783,4.0001,10.433,9.0517,4.9232 -LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,libaom-v3.12.0-unconstrained,15.7564,10.571,7.2611,15.0551,17.2705,17.326,27.7836,26.761,21.839,5.9681,16.3645,13.1488,9.1549,16.2086 +LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v14.0.0,-33.4688,-42.1497,-42.9164,-34.2895,-36.4924,-35.7644,-41.9726,-41.4983,-34.1336,-31.4003,-32.4661,-32.9389,-32.7429,-32.4405 +LD,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v15.0.0,-33.5079,-42.2716,-43.0016,-34.335,-36.5928,-35.9293,-41.8991,-41.4786,-34.2431,-31.5403,-32.4939,-33.0686,-32.784,-32.4779 LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v02.0.0,-4.478,-19.3282,-16.7175,-5.8521,-6.7607,-6.4284,-5.7877,-5.66,-7.3054,-15.4118,-4.8049,-19.5474,-17.0136,-6.1372 LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v03.0.0,-24.8073,-33.2622,-33.823,-25.6961,-24.263,-24.2878,-26.5515,-25.2133,-24.993,-31.7684,-24.8004,-32.7146,-34.1127,-25.6957 LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v04.0.0,-33.1538,-44.9205,-46.6225,-34.4927,-34.0077,-33.9299,-35.5614,-34.004,-34.3569,-42.259,-33.1704,-44.2674,-46.5355,-34.4762 @@ -2155,8 +2153,8 @@ LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v10.0.0,-51.4031,-63.4997,-6 LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v11.0.0,-52.5521,-63.8153,-64.4242,-53.8714,-53.6024,-53.693,-55.3195,-53.9088,-53.9972,-61.0632,-52.6268,-63.8502,-64.6213,-53.9163 LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v12.0.0,-52.9379,-63.4248,-64.8066,-54.1763,-53.3691,-53.4476,-55.7784,-54.2931,-54.1251,-61.186,-53.0178,-63.3822,-65.0381,-54.2271 LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v13.0.0,-53.3885,-63.6192,-65.1425,-54.61,-55.4928,-54.1154,-56.3711,-54.9183,-54.2825,-61.359,-53.3584,-63.601,-65.3196,-54.5627 -LD,B2,Wikipedia_1920x1080p30.y4m,libaom-v3.12.0,4.388,-1.5684,-0.9452,3.7237,10.6936,9.378,4.5233,2.2705,3.994,2.0716,3.8948,-3.7126,-1.5444,2.3867 -LD,B2,Wikipedia_1920x1080p30.y4m,libaom-v3.12.0-unconstrained,6.4807,6.7792,4.5382,6.2011,-1.4173,1.627,16.7752,13.9717,10.6364,-1.2474,11.8376,9.3818,7.7099,11.7544 +LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v14.0.0,-53.2477,-63.2259,-64.9738,-54.4515,-55.1236,-53.9155,-55.9843,-54.5657,-54.1082,-61.1536,-53.2164,-63.0631,-65.2614,-54.402 +LD,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v15.0.0,-53.318,-63.1929,-64.9374,-54.5073,-55.243,-53.935,-55.9618,-54.5673,-54.0945,-61.127,-53.2934,-63.0595,-65.2344,-54.464 LD,B2,Wikipedia_1920x1080p30.y4m,v02.0.0,-3.5396,-12.4255,-11.3905,-4.3063,-3.696,-4.0016,-3.3375,-2.9735,-4.0503,-8.0506,-3.7058,-12.3097,-11.0801,-4.6136 LD,B2,Wikipedia_1920x1080p30.y4m,v03.0.0,-10.7166,-17.7242,-16.7776,-11.3138,-10.3635,-10.5451,-11.6932,-10.5775,-10.1989,-14.4269,-10.7954,-17.7292,-16.6175,-11.5386 LD,B2,Wikipedia_1920x1080p30.y4m,v04.0.0,-22.7018,-32.1246,-31.6063,-23.5747,-22.3223,-22.6834,-24.0066,-23.2134,-22.6764,-27.8444,-22.9079,-31.7142,-30.7792,-24.0802 @@ -2169,8 +2167,8 @@ LD,B2,Wikipedia_1920x1080p30.y4m,v10.0.0,-36.8481,-49.8507,-49.5182,-38.1871,-37 LD,B2,Wikipedia_1920x1080p30.y4m,v11.0.0,-37.2138,-48.8766,-48.551,-38.3631,-37.3332,-37.3254,-39.6868,-38.4484,-37.7008,-43.3666,-37.5135,-49.0312,-48.1602,-39.0286 LD,B2,Wikipedia_1920x1080p30.y4m,v12.0.0,-38.3635,-49.1261,-48.4969,-39.3853,-38.6092,-38.7667,-41.569,-40.0491,-38.8322,-44.7882,-38.6753,-49.2161,-48.1075,-40.0032 LD,B2,Wikipedia_1920x1080p30.y4m,v13.0.0,-38.8958,-49.4057,-49.2483,-39.9038,-39.5991,-39.0492,-41.5217,-40.3927,-38.9837,-44.9344,-39.102,-49.3079,-48.4928,-40.3877 -RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,-1.0626,-7.4609,-5.5948,-1.8497,-3.3364,-1.5057,-0.709,-3.4861,-1.7217,-4.0622,-1.3114,-8.0205,-6.1621,-2.1825 -RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,-8.8454,-18.2121,-15.7564,-9.9609,-3.4668,-9.9436,-8.912,-10.6525,-9.04,-14.9952,-9.0573,-18.4062,-15.9166,-10.1466 +LD,B2,Wikipedia_1920x1080p30.y4m,v14.0.0,-38.6071,-49.1826,-48.666,-39.6041,-38.9225,-38.6301,-41.1408,-40.0278,-38.6541,-44.6551,-38.8247,-49.0937,-47.9862,-40.1055 +LD,B2,Wikipedia_1920x1080p30.y4m,v15.0.0,-38.6265,-49.3635,-48.4888,-39.624,-39.0198,-38.6371,-41.0833,-39.9839,-38.6951,-44.868,-38.8361,-49.2162,-47.8105,-40.1242 RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-1.9897,-8.2208,-10.4281,-2.9339,-1.189,-1.7161,-2.3202,-2.0966,-2.1006,-5.4279,-2.0249,-8.2465,-10.5335,-2.9755 RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-11.9956,-13.0431,-17.5101,-12.4241,-9.1523,-10.862,-17.613,-14.9277,-10.9226,-12.7673,-12.1101,-13.0872,-17.6521,-12.5617 RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-18.5691,-24.5224,-27.854,-19.5729,-15.3768,-17.6792,-25.5587,-22.2169,-17.5651,-21.4511,-18.6837,-24.5548,-27.9502,-19.6958 @@ -2183,8 +2181,8 @@ RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-27.3911,-33.0183,- RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-28.0937,-34.1223,-43.5976,-29.5676,-24.5324,-25.6521,-32.859,-30.7212,-27.235,-31.3081,-28.3216,-34.2684,-43.7596,-29.7898 RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-28.1352,-34.3508,-43.1691,-29.5828,-24.3374,-25.5904,-32.8972,-30.7473,-27.1895,-31.5052,-28.3606,-34.5039,-43.3365,-29.8023 RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-28.1705,-33.9906,-43.1861,-29.5909,-27.8294,-25.6049,-32.6673,-30.5839,-27.2404,-31.3809,-28.3927,-34.141,-43.3483,-29.8101 -RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,0.6062,-14.6651,-15.1181,-1.6492,-3.0227,-4.2092,-1.8623,-2.1811,-2.7544,-7.6616,0.7022,-14.9968,-15.4811,-0.8563 -RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,-4.7728,-0.2559,0.6725,-4.097,-2.2218,-5.221,-10.7628,-10.7747,-6.2804,-1.6316,-5.3881,-0.6264,0.2459,-4.8879 +RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-28.1031,-33.8964,-43.132,-29.5226,-27.7661,-25.5439,-32.49,-30.4456,-27.1791,-31.2988,-28.3248,-34.0456,-43.2953,-29.7416 +RA,A1,BoxingPractice_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-28.0982,-33.9391,-43.1735,-29.5247,-27.7534,-25.5357,-32.4889,-30.436,-27.1761,-31.323,-28.3201,-34.0889,-43.3397,-29.7434 RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-3.0489,-5.9398,-5.462,-3.4024,-1.3347,-3.0823,-3.8471,-3.7694,-3.0494,-3.7568,-3.1026,-5.9657,-5.5008,-3.3581 RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-16.5546,-17.198,-15.9678,-16.5516,-13.146,-16.7024,-19.9384,-19.1776,-15.7353,-16.1083,-16.6865,-17.2227,-15.9164,-16.6875 RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-23.0733,-28.1431,-27.9768,-23.7566,-19.3531,-23.4145,-29.1054,-27.6557,-22.3177,-24.5203,-23.2166,-28.2028,-27.9532,-23.6862 @@ -2197,8 +2195,8 @@ RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-32.5899,-38.9033,-37.30 RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-33.0868,-43.7405,-42.2149,-34.4527,-30.851,-33.374,-39.5031,-37.9683,-33.042,-36.9427,-33.3627,-43.9266,-42.399,-34.3084 RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-32.9567,-43.7887,-41.6737,-34.2979,-30.495,-33.1349,-39.3142,-37.7487,-32.8246,-36.6755,-33.2273,-43.9877,-41.88,-34.166 RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-33.1252,-43.6733,-41.8728,-34.4518,-36.6096,-33.2844,-39.5879,-38.0728,-32.9755,-36.6679,-33.4048,-43.8354,-42.0301,-34.3246 -RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,-3.1092,-6.9238,-5.9667,-3.5323,-2.2733,-4.331,-3.164,-2.0198,-3.7715,-5.5043,-3.7901,-7.5102,-6.5105,-4.2042 -RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,-6.9408,-7.5538,-8.0873,-7.0322,-5.0649,-8.53,-7.6013,-5.9881,-7.3284,-8.8227,-8.0458,-8.8692,-9.4119,-8.1406 +RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-33.0621,-43.621,-41.5393,-34.3679,-36.5511,-33.2443,-39.5205,-38.0067,-32.9124,-36.6054,-33.3388,-43.7873,-41.7097,-34.2488 +RA,A1,Crosswalk_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-33.0521,-43.6143,-41.5537,-34.3601,-36.5508,-33.2279,-39.5405,-38.0068,-32.8988,-36.6118,-33.3288,-43.7804,-41.7256,-34.24 RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-2.8109,-10.826,-8.345,-3.6123,-1.9651,-2.5519,-3.484,-3.1523,-2.7439,-5.3396,-2.8099,-11.0453,-8.3186,-3.5888 RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-13.6636,-17.0722,-14.752,-13.9268,-11.4496,-12.9037,-20.9345,-19.1356,-12.6162,-14.2532,-13.5964,-17.2153,-14.6105,-13.8747 RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-23.2456,-30.7971,-26.8354,-23.9131,-20.0429,-22.6768,-32.5747,-30.1187,-21.7536,-25.2729,-23.1434,-30.9453,-26.7097,-23.8131 @@ -2211,8 +2209,8 @@ RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-32.3293,-42.1086,-36. RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-33.1209,-42.3597,-37.2122,-33.9319,-30.6518,-31.9208,-42.7728,-40.3749,-31.4693,-35.8041,-32.9521,-42.3995,-37.0463,-33.7469 RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-32.8881,-42.5844,-37.0363,-33.7321,-30.1759,-31.5347,-42.767,-40.3051,-31.1916,-35.6584,-32.7263,-42.5935,-36.8764,-33.5509 RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-32.9598,-42.7587,-37.3046,-33.8221,-33.0657,-31.6465,-42.8811,-40.4372,-31.2707,-35.8183,-32.8019,-42.7628,-37.1399,-33.6393 -RA,A1,Neon1224_3840x2160_2997fps.y4m,libaom-v3.12.0,5.1335,1.7941,5.8439,4.9751,5.193,3.7372,10.4296,9.5692,5.3473,2.5017,7.1554,3.47,8.2961,7.0134 -RA,A1,Neon1224_3840x2160_2997fps.y4m,libaom-v3.12.0-unconstrained,-3.6719,-6.6448,-5.9606,-4.0214,-3.8444,-3.2204,-5.0013,-5.4605,-4.7267,-4.8387,-5.7274,-7.9583,-7.4438,-6.0736 +RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-32.9107,-42.7335,-37.2637,-33.775,-33.0176,-31.5858,-42.8416,-40.3892,-31.2235,-35.7773,-32.7527,-42.7404,-37.0945,-33.5919 +RA,A1,FoodMarket2_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-32.9103,-42.6922,-37.2596,-33.7717,-33.0217,-31.5863,-42.8414,-40.3892,-31.2262,-35.7566,-32.7519,-42.6917,-37.0897,-33.5878 RA,A1,Neon1224_3840x2160_2997fps.y4m,v02.0.0,-3.2099,-3.1859,-2.5952,-3.1674,-2.6911,-2.8021,-3.9936,-4.1205,-3.2405,-3.7272,-3.2132,-3.0497,-2.4712,-3.0927 RA,A1,Neon1224_3840x2160_2997fps.y4m,v03.0.0,-10.3126,-7.1591,-7.377,-9.9225,-8.3765,-9.9333,-11.9583,-11.995,-9.6811,-9.2974,-10.3785,-6.9994,-7.3213,-9.7198 RA,A1,Neon1224_3840x2160_2997fps.y4m,v04.0.0,-15.1261,-15.0074,-15.4906,-15.151,-13.0343,-14.9563,-19.3119,-18.6639,-14.7421,-15.3528,-15.2357,-14.8946,-15.4824,-15.2021 @@ -2225,8 +2223,8 @@ RA,A1,Neon1224_3840x2160_2997fps.y4m,v10.0.0,-24.9739,-24.2562,-24.5983,-24.908, RA,A1,Neon1224_3840x2160_2997fps.y4m,v11.0.0,-24.8074,-25.7891,-25.3759,-24.9092,-22.3565,-24.9854,-31.3077,-30.459,-24.4134,-26.4179,-25.0465,-25.9835,-25.5158,-25.1691 RA,A1,Neon1224_3840x2160_2997fps.y4m,v12.0.0,-24.81,-25.7308,-25.2743,-24.9008,-22.1532,-24.8769,-31.3872,-30.5222,-24.3595,-26.3195,-25.0473,-25.9276,-25.432,-25.1557 RA,A1,Neon1224_3840x2160_2997fps.y4m,v13.0.0,-24.7773,-25.6597,-25.174,-24.8613,-28.301,-24.8165,-31.4212,-30.5246,-24.3185,-26.3591,-25.0113,-25.8429,-25.3163,-25.1054 -RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,libaom-v3.12.0,2.9873,-5.3616,-8.9407,2.2566,1.209,1.1196,3.9007,3.7542,2.1419,-3.211,4.0518,-5.7156,-9.2012,2.9497 -RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,libaom-v3.12.0-unconstrained,-12.2962,-11.679,-10.8812,-12.2151,-13.3021,-15.3806,-11.1286,-11.2355,-12.1494,-16.9094,-13.3466,-12.402,-10.8643,-13.3771 +RA,A1,Neon1224_3840x2160_2997fps.y4m,v14.0.0,-24.7645,-25.6526,-25.1526,-24.8483,-28.285,-24.7955,-31.4051,-30.5094,-24.3046,-26.3388,-25.0002,-25.8357,-25.2938,-25.0932 +RA,A1,Neon1224_3840x2160_2997fps.y4m,v15.0.0,-24.7287,-25.5616,-25.0695,-24.8057,-28.266,-24.7674,-31.2927,-30.4464,-24.2635,-26.2553,-24.9666,-25.7384,-25.2027,-25.0467 RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v02.0.0,5.0649,-3.4551,-6.0691,4.3098,0.2429,2.7192,1.3782,1.1827,3.1875,0.5244,5.5217,-3.2257,-6.2722,4.6339 RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v03.0.0,-9.4453,-16.9588,-21.6842,-10.1847,-9.0799,-8.9982,-13.7415,-13.1041,-9.4619,-12.559,-9.702,-17.1107,-21.7781,-10.9346 RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v04.0.0,-15.979,-28.9508,-36.0269,-17.2814,-14.7861,-15.3304,-21.5647,-20.4736,-15.8421,-20.5704,-16.1142,-29.0926,-36.0819,-18.2746 @@ -2239,8 +2237,8 @@ RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v10.0.0,-25.6431,-45.7338,-46.104 RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v11.0.0,-25.6014,-46.5307,-48.8992,-27.4342,-24.1875,-24.2038,-34.9029,-33.6659,-25.5372,-32.2169,-25.9746,-46.7903,-49.1468,-29.2885 RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v12.0.0,-25.502,-46.9753,-49.4444,-27.3884,-23.9638,-23.9063,-34.6371,-33.4222,-25.4211,-32.3256,-25.867,-47.2558,-49.6836,-29.289 RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v13.0.0,-25.5386,-46.7272,-49.3162,-27.4041,-25.2072,-23.954,-34.7622,-33.5138,-25.4363,-32.1135,-25.8992,-47.0007,-49.5517,-29.289 -RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,libaom-v3.12.0,-0.3969,1.9378,2.5936,-0.1584,3.2194,0.5031,0.6243,-0.9271,0.0824,-0.2883,-0.4685,1.2167,1.9026,-0.141 -RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,libaom-v3.12.0-unconstrained,-13.5943,-14.8061,-22.9165,-13.9918,5.8818,-3.5339,-18.2192,-18.2725,-9.0244,-13.8378,-14.1065,-15.5954,-23.9703,-15.0358 +RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v14.0.0,-25.4992,-46.6685,-49.2707,-27.363,-25.1678,-23.9154,-34.7297,-33.4807,-25.4026,-32.0397,-25.8601,-46.9413,-49.5032,-29.2433 +RA,A1,NocturneDance_3840x2160p_10bit_60fps.y4m,v15.0.0,-25.5004,-46.6931,-49.2765,-27.3659,-25.173,-23.9228,-34.7454,-33.49,-25.4036,-32.0637,-25.8622,-46.9675,-49.5082,-29.2504 RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v02.0.0,-1.7615,-9.0277,-18.4434,-2.8117,-2.113,-2.0141,-1.8459,-2.0007,-1.8832,-7.6752,-1.7553,-9.2676,-19.1259,-3.4277 RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v03.0.0,-7.0979,-12.0453,-22.1811,-7.9567,-7.0326,-6.7385,-11.1791,-10.0951,-6.4702,-13.4569,-7.1044,-12.2484,-22.8887,-8.5709 RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v04.0.0,-13.7218,-27.0704,-39.5812,-15.5455,-12.6067,-12.8623,-19.8048,-17.9316,-12.9913,-24.0477,-13.5832,-27.3026,-40.2178,-16.5001 @@ -2253,8 +2251,8 @@ RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v10.0.0,-24.4822,-37.7406,- RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v11.0.0,-24.3486,-36.3356,-45.3205,-25.9001,-24.3146,-23.7898,-28.4541,-27.8642,-23.3801,-34.9954,-24.3825,-36.816,-45.9609,-26.9588 RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v12.0.0,-24.2646,-36.2029,-45.6377,-25.8325,-23.9097,-23.5265,-28.2347,-27.7809,-23.2706,-34.9635,-24.3143,-36.6975,-46.2857,-26.9149 RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v13.0.0,-24.1882,-37.3884,-45.7571,-25.8436,-23.5302,-23.544,-28.133,-27.6381,-23.2835,-35.6568,-24.2651,-37.817,-46.3682,-26.9523 -RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,-1.2338,-19.1218,-13.1323,-3.5748,-6.5762,-6.9879,-4.3341,-4.2726,-4.4556,-9.5593,-1.3551,-19.3416,-13.4816,-2.9318 -RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,-6.4501,-8.1955,-5.2272,-6.4514,-5.3257,-7.8223,-10.013,-10.0028,-8.1549,-6.2893,-7.2181,-8.4208,-5.9261,-7.1248 +RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v14.0.0,-24.0203,-37.2026,-45.6061,-25.6749,-23.3788,-23.3965,-27.9342,-27.4201,-23.1333,-35.4819,-24.1026,-37.6254,-46.2194,-26.786 +RA,A1,PierSeaSide_3840x2160_2997fps_10bit_420_v2.y4m,v15.0.0,-24.0206,-37.2451,-45.6009,-25.6777,-23.3859,-23.4033,-27.9408,-27.4269,-23.1344,-35.4955,-24.1011,-37.6699,-46.2123,-26.788 RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-2.0292,-6.1365,-4.7014,-2.518,-1.1745,-1.9936,-2.7371,-2.6919,-2.1296,-3.5203,-1.9843,-6.0655,-4.5697,-2.3062 RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-15.6721,-15.1894,-13.3496,-15.4568,-12.6288,-14.9307,-19.7733,-18.5636,-14.719,-15.7802,-15.8638,-15.2254,-13.3991,-15.6473 RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-22.3775,-28.5947,-24.4975,-22.9797,-19.0534,-21.9606,-29.4543,-27.2878,-21.5479,-24.4548,-22.5898,-28.6929,-24.532,-22.9382 @@ -2267,8 +2265,8 @@ RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-31.8566,-41.4413,-36.0858,- RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-32.878,-45.0252,-38.8826,-34.2418,-30.4057,-32.1718,-40.9693,-38.6777,-32.6419,-37.4759,-33.2313,-45.1948,-39.119,-34.096 RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-32.7738,-45.1995,-38.5925,-34.1419,-30.0171,-31.957,-40.8263,-38.5468,-32.464,-37.2513,-33.1256,-45.3599,-38.8269,-33.9817 RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-32.9234,-44.7861,-38.6445,-34.24,-35.1639,-32.0719,-40.8316,-38.6434,-32.5774,-37.2846,-33.278,-44.9435,-38.8612,-34.1066 -RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0,-1.8651,-10.0276,-19.6525,-3.5651,-8.8077,-4.5694,-6.0949,-8.4537,-5.3658,-7.6911,-1.5627,-10.1626,-20.3195,-2.8635 -RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,-11.5031,-19.9753,-20.6175,-12.607,-8.961,-11.8003,-16.7899,-18.3373,-10.5803,-18.0741,-10.9337,-19.6293,-18.5994,-11.7512 +RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-32.8605,-44.7587,-38.5778,-34.1794,-35.1073,-32.0162,-40.7829,-38.5894,-32.5247,-37.227,-33.215,-44.9162,-38.7947,-34.0448 +RA,A1,Tango_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-32.857,-44.7531,-38.6045,-34.1784,-35.1052,-32.0047,-40.7613,-38.5632,-32.5234,-37.2487,-33.2116,-44.9109,-38.8215,-34.0432 RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v02.0.0,-0.3952,-19.683,-19.1528,-2.8693,-0.4222,-0.1129,-0.2456,-0.0849,-1.2988,-9.6706,-0.4477,-19.7069,-19.4566,-2.3206 RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v03.0.0,-3.9729,-24.23,-27.3409,-6.8469,-3.7251,-1.9766,-2.5918,-3.5456,-4.5523,-13.9573,-3.9802,-24.3134,-28.1216,-6.1356 RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v04.0.0,-17.2967,-38.2057,-41.2221,-20.3511,-15.2333,-15.0112,-16.2627,-18.1859,-16.8017,-28.6343,-16.953,-38.2944,-41.738,-19.2541 @@ -2281,8 +2279,8 @@ RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v10.0.0,-26.1035,-50.7359,-48.60 RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v11.0.0,-26.2205,-52.9795,-51.9399,-29.9249,-26.5417,-23.9137,-26.3302,-28.1107,-26.1622,-40.7613,-25.8215,-53.0685,-52.4848,-28.5468 RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v12.0.0,-26.5089,-53.0732,-52.2448,-30.1972,-26.5018,-24.1129,-26.7995,-28.4923,-26.3163,-40.8705,-26.1031,-53.1525,-52.7797,-28.816 RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v13.0.0,-26.7155,-53.1315,-52.4032,-30.3939,-24.2161,-24.3246,-26.7599,-28.6146,-26.5527,-41.2192,-26.3088,-53.2148,-52.9465,-29.0163 -RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,-5.2165,16.6491,18.4539,-3.8212,-1.3877,-2.0809,-6.4268,-7.7904,-4.2562,3.853,-7.4744,15.8571,17.7683,-5.6108 -RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-9.8294,-6.4873,-5.9784,-9.5898,-14.7248,-12.8107,-13.6099,-13.7865,-12.6556,-8.937,-11.7459,-6.9502,-6.3353,-11.284 +RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v14.0.0,-26.6022,-53.1236,-52.3886,-30.2965,-24.1081,-24.2059,-26.6059,-28.4561,-26.4564,-41.1471,-26.1937,-53.206,-52.9277,-28.9117 +RA,A1,TimeLapse_3840x2160_5994fps_10bit_420.y4m,v15.0.0,-26.5998,-53.1264,-52.3209,-30.2893,-24.0927,-24.1899,-26.5925,-28.4528,-26.4469,-41.1377,-26.1902,-53.209,-52.8708,-28.9061 RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v02.0.0,-2.6569,-9.9294,-17.5985,-3.5185,-2.0754,-2.3474,-2.2062,-2.2542,-2.4378,-5.1333,-2.7134,-10.1382,-17.9505,-3.6574 RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v03.0.0,-10.8399,-19.5742,-26.5706,-11.781,-9.7457,-10.172,-18.5417,-17.4938,-9.7346,-14.0124,-10.581,-19.8156,-26.8523,-11.6569 RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v04.0.0,-16.6323,-26.2791,-35.0259,-17.7336,-14.6679,-15.4333,-23.6979,-22.8527,-15.0014,-19.8285,-16.2597,-26.5481,-35.347,-17.5717 @@ -2295,8 +2293,8 @@ RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v10.0.0,-24.455,-33.7325,-47.8042, RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v11.0.0,-25.1282,-31.8927,-46.3702,-26.2541,-21.3906,-21.8959,-32.7745,-32.5884,-22.9189,-27.4845,-25.058,-32.2398,-46.7447,-26.3167 RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v12.0.0,-25.1112,-32.0873,-46.2546,-26.2404,-21.343,-21.8513,-32.6013,-32.3684,-22.8002,-27.573,-25.0059,-32.4379,-46.612,-26.2721 RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v13.0.0,-25.1497,-31.8764,-46.7271,-26.2894,-22.0614,-21.8524,-32.9318,-32.7638,-22.8234,-27.5386,-25.0367,-32.2178,-47.0846,-26.3135 -RA,A2,Boat_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,3.1973,8.2861,15.4779,3.8809,4.0927,6.9893,3.8885,2.6364,2.6751,7.3519,2.8003,7.6199,15.178,3.4254 -RA,A2,Boat_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-6.6199,11.0431,13.5404,-5.2079,-11.9473,-8.2892,-13.0243,-12.7287,-8.6895,-1.8057,-7.7662,10.702,13.3356,-6.4215 +RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v14.0.0,-24.9729,-31.631,-46.4805,-26.1063,-21.9631,-21.6983,-32.6259,-32.4569,-22.6654,-27.3243,-24.8861,-31.9721,-46.8397,-26.1494 +RA,A2,Aerial3200_1920x1080_5994_10bit_420.y4m,v15.0.0,-24.9594,-31.635,-46.4422,-26.0924,-21.9363,-21.6793,-32.642,-32.4617,-22.6552,-27.3147,-24.876,-31.9759,-46.8035,-26.1391 RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v02.0.0,-2.2578,-22.2148,-19.4161,-3.9996,-2.1836,-2.2629,-2.0233,-1.8568,-2.522,-7.6634,-2.3736,-22.4154,-19.4846,-3.6018 RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v03.0.0,-7.5637,-22.9282,-20.0736,-8.8587,-6.5718,-6.8878,-12.8035,-11.2226,-6.604,-12.1788,-7.6623,-23.1264,-20.1145,-8.6961 RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v04.0.0,-11.2567,-40.5489,-32.9358,-13.7777,-9.8003,-10.707,-16.3822,-14.6563,-9.749,-20.4427,-11.326,-40.8191,-32.9787,-13.0991 @@ -2309,8 +2307,8 @@ RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v10.0.0,-18.4205,-47.2855,-43.6559,-21.1 RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v11.0.0,-18.3889,-44.0037,-39.984,-20.7741,-15.7135,-15.1504,-23.7549,-22.4976,-17.4176,-25.4648,-18.7559,-44.302,-40.0025,-20.4284 RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v12.0.0,-18.6472,-44.6167,-40.4132,-21.0462,-15.7236,-15.2938,-24.0837,-22.7313,-17.6227,-25.764,-19.0103,-44.9136,-40.4325,-20.6758 RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v13.0.0,-18.7892,-44.1961,-40.3777,-21.1572,-15.4196,-15.567,-24.2764,-22.9704,-17.7767,-25.7845,-19.156,-44.4999,-40.4082,-20.8099 -RA,A2,CrowdRun_1920x1080p50.y4m,libaom-v3.12.0,1.2965,-6.5946,-5.234,0.6676,1.9517,0.581,5.6818,5.1021,4.3186,-0.6406,1.1714,-7.2735,-5.7895,0.5599 -RA,A2,CrowdRun_1920x1080p50.y4m,libaom-v3.12.0-unconstrained,-9.0167,16.9679,19.2453,-6.9709,-12.6603,-10.525,-15.026,-14.5677,-6.6542,-0.0598,-11.2115,15.3306,17.7005,-8.7771 +RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v14.0.0,-18.7339,-44.148,-40.2995,-21.1004,-15.3727,-15.5204,-24.1859,-22.8785,-17.7384,-25.7305,-19.0999,-44.4516,-40.3282,-20.7522 +RA,A2,Boat_1920x1080_5994_10bit_420.y4m,v15.0.0,-18.7132,-44.1247,-40.3931,-21.0862,-15.3478,-15.4966,-24.114,-22.8245,-17.7187,-25.6961,-19.0804,-44.4278,-40.4274,-20.7359 RA,A2,CrowdRun_1920x1080p50.y4m,v02.0.0,-1.4207,-5.0947,-6.9836,-1.8267,-1.5112,-1.4983,-2.0961,-2.001,-1.0782,-2.3928,-1.6043,-5.2381,-7.1357,-1.953 RA,A2,CrowdRun_1920x1080p50.y4m,v03.0.0,-8.389,-10.9141,-10.4334,-8.5864,-7.7944,-8.1601,-13.34,-12.2327,-6.8718,-9.9956,-8.6264,-11.0551,-10.5704,-8.8547 RA,A2,CrowdRun_1920x1080p50.y4m,v04.0.0,-12.8898,-19.4569,-19.8856,-13.4893,-11.9055,-12.363,-18.7154,-17.491,-10.9651,-16.0013,-13.1366,-19.6357,-20.0278,-13.7853 @@ -2323,8 +2321,8 @@ RA,A2,CrowdRun_1920x1080p50.y4m,v10.0.0,-20.2404,-26.7928,-26.4575,-20.8073,-16. RA,A2,CrowdRun_1920x1080p50.y4m,v11.0.0,-20.8254,-27.0997,-27.2548,-21.3928,-16.6258,-17.1349,-27.004,-25.6803,-19.109,-24.7316,-21.4287,-27.5237,-27.5548,-22.0862 RA,A2,CrowdRun_1920x1080p50.y4m,v12.0.0,-21.2225,-28.2395,-27.6822,-21.8237,-16.9351,-17.4858,-27.0825,-25.7966,-19.4909,-25.2258,-21.8334,-28.6954,-28.0013,-22.5102 RA,A2,CrowdRun_1920x1080p50.y4m,v13.0.0,-21.194,-27.9279,-27.559,-21.7794,-18.5348,-17.5384,-27.3732,-26.0229,-19.4796,-25.2741,-21.8021,-28.3811,-27.8749,-22.4634 -RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,libaom-v3.12.0,-19.1537,-28.1797,-31.4009,-20.5548,-24.6255,-21.369,-26.1809,-26.4336,-23.8176,-25.2035,-23.4443,-31.4283,-32.8226,-24.5794 -RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,libaom-v3.12.0-unconstrained,-21.436,-40.0253,-31.3464,-23.5048,-28.7768,-25.939,-30.5025,-30.4992,-29.3321,-33.4243,-24.1745,-42.6068,-32.0935,-26.4836 +RA,A2,CrowdRun_1920x1080p50.y4m,v14.0.0,-21.1478,-27.9232,-27.4599,-21.7324,-18.4498,-17.4563,-27.313,-25.96,-19.4321,-25.2361,-21.7559,-28.3793,-27.7795,-22.4167 +RA,A2,CrowdRun_1920x1080p50.y4m,v15.0.0,-21.1445,-27.9122,-27.5928,-21.7353,-18.4436,-17.4556,-27.3222,-25.9704,-19.4521,-25.2103,-21.7522,-28.3655,-27.9095,-22.4192 RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v02.0.0,-1.6414,-6.7238,-11.9848,-2.5823,-0.5433,-1.3316,-2.6724,-2.5885,-1.7346,-2.191,-1.8376,-7.1242,-12.2195,-2.5305 RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v03.0.0,-19.7079,-18.5799,-22.8174,-19.8751,-17.273,-18.3752,-31.0747,-27.8368,-17.9737,-17.1337,-20.4171,-19.2703,-23.1527,-20.3884 RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v04.0.0,-24.7787,-25.327,-31.3253,-25.2495,-22.6666,-23.781,-39.586,-35.0415,-23.143,-22.7494,-25.5442,-25.9814,-31.6897,-25.7335 @@ -2337,8 +2335,8 @@ RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v10.0.0,-37.2915,-41.97 RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v11.0.0,-39.2196,-43.792,-44.2438,-39.7363,-38.1692,-38.0637,-52.7167,-49.3629,-38.6912,-38.0796,-40.368,-45.0371,-44.8039,-40.7776 RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v12.0.0,-39.7195,-44.3029,-44.4429,-40.219,-38.3486,-38.3186,-53.0735,-49.8476,-39.1011,-39.6887,-40.872,-45.5289,-45.0006,-41.2684 RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v13.0.0,-39.6556,-45.4598,-43.8669,-40.1863,-35.4136,-38.1956,-54.2121,-50.6404,-39.1435,-39.5006,-40.8273,-46.7585,-44.3821,-41.2954 -RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,-6.4076,-9.0306,-6.8899,-6.5464,-8.6184,-8.9331,-4.4768,-4.9337,-6.4035,-8.3837,-7.0062,-9.5508,-7.312,-7.0985 -RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-13.1358,-10.4228,-12.0889,-12.9609,-16.799,-16.6057,-14.3929,-14.2227,-14.0206,-14.2536,-14.04,-10.8473,-12.3143,-13.8297 +RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v14.0.0,-38.6189,-44.6267,-43.1553,-39.1859,-34.7353,-37.2388,-53.5878,-49.8925,-38.2507,-38.3085,-39.7727,-45.9213,-43.6695,-40.2685 +RA,A2,DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m,v15.0.0,-38.607,-44.6089,-43.0205,-39.162,-34.7086,-37.2307,-53.5836,-49.8919,-38.2251,-38.1811,-39.7631,-45.9053,-43.5329,-40.2521 RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v02.0.0,-2.0175,-9.0478,-7.8791,-2.6315,-2.2333,-2.4468,-2.2009,-2.232,-2.0397,-4.5258,-2.0558,-9.0794,-7.8066,-2.5163 RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v03.0.0,-13.4874,-17.4517,-16.6222,-13.8288,-12.7509,-13.3692,-18.8265,-17.2453,-12.5634,-14.6133,-13.6292,-17.4914,-16.5659,-13.9225 RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v04.0.0,-23.5753,-30.0915,-29.1696,-24.159,-22.6134,-23.5613,-30.6271,-28.4694,-22.0621,-25.9226,-23.7409,-30.235,-29.2094,-24.2243 @@ -2351,8 +2349,8 @@ RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v10.0.0,-33.1511,-45.6534,-36.829, RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v11.0.0,-34.3265,-46.6288,-37.3891,-35.0729,-31.9144,-32.5238,-41.1837,-39.5188,-32.7284,-37.9982,-34.6898,-46.8252,-37.5127,-35.302 RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v12.0.0,-34.389,-46.6704,-36.6497,-35.0943,-31.6153,-32.3413,-41.0318,-39.4636,-32.6641,-37.7012,-34.7525,-46.9038,-36.7825,-35.341 RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v13.0.0,-34.5413,-46.3217,-36.4857,-35.2108,-33.1086,-32.4869,-41.4658,-39.8051,-32.8142,-37.9644,-34.9054,-46.5358,-36.5915,-35.4713 -RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,libaom-v3.12.0,3.0793,-3.9134,-8.3752,2.0332,2.5124,0.6612,9.7454,10.1094,3.487,-2.3718,4.0012,-2.8145,-8.3409,3.3897 -RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,libaom-v3.12.0-unconstrained,-8.6017,-5.605,-9.6065,-8.4931,-12.6692,-11.7452,-16.6012,-16.549,-9.6387,-10.4174,-10.9527,-8.1841,-10.7581,-10.8202 +RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v14.0.0,-34.3731,-46.0447,-36.1151,-35.0272,-32.9514,-32.3483,-41.189,-39.5798,-32.6679,-37.7315,-34.7384,-46.2625,-36.2161,-35.294 +RA,A2,FoodMarket_1920x1080_5994_10bit_420.y4m,v15.0.0,-34.3731,-46.0564,-36.1192,-35.0279,-32.9464,-32.3411,-41.1908,-39.5713,-32.6665,-37.7334,-34.7392,-46.2753,-36.2221,-35.2956 RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v02.0.0,-2.4208,-4.1681,-3.5482,-2.5796,-1.5836,-1.8781,-2.7575,-2.6971,-1.9562,-3.2067,-2.4169,-4.3529,-3.1823,-2.5162 RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v03.0.0,-8.7294,-13.0878,-6.3017,-8.8603,-7.169,-7.6774,-11.643,-11.1469,-7.7377,-10.5866,-8.6917,-13.5207,-6.3674,-8.8114 RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v04.0.0,-15.8,-22.2272,-16.9939,-16.2454,-13.8037,-14.8213,-19.9804,-19.3332,-14.3692,-19.3817,-15.6401,-21.5668,-16.6458,-15.907 @@ -2365,8 +2363,8 @@ RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v10.0.0,-24.6053,-38.6 RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v11.0.0,-25.463,-40.37,-33.9854,-26.8715,-24.5512,-25.4172,-31.7365,-30.8957,-24.3506,-33.2812,-25.4347,-39.6385,-33.4921,-26.2069 RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v12.0.0,-25.5071,-40.6166,-34.1675,-26.9346,-24.4169,-25.3281,-31.7859,-30.9773,-24.3547,-33.2451,-25.4914,-39.843,-33.7107,-26.2738 RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v13.0.0,-25.5766,-40.3477,-33.6448,-26.9466,-26.8037,-25.4539,-31.9343,-31.0695,-24.4354,-33.2608,-25.5808,-39.7089,-33.267,-26.3405 -RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,libaom-v3.12.0,-1.0586,9.1694,10.1723,0.2435,-2.9019,-1.4588,-0.858,-0.7323,-2.0123,4.3091,-1.4194,8.8979,9.9467,-0.5538 -RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,libaom-v3.12.0-unconstrained,-12.2732,-18.9842,-20.2043,-13.2227,-12.4065,-12.2205,-14.1085,-14.4164,-12.8795,-16.2817,-12.6338,-19.0247,-20.254,-13.1453 +RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v14.0.0,-25.538,-40.3609,-33.7376,-26.9192,-26.7708,-25.4308,-31.9822,-31.1039,-24.4065,-33.2454,-25.5423,-39.6832,-33.3616,-26.3072 +RA,A2,GregoryScarf_1080x1920p30_yuv420p10le_130frames.y4m,v15.0.0,-25.5481,-40.3245,-33.6733,-26.9217,-26.7946,-25.4494,-31.982,-31.1018,-24.4151,-33.2368,-25.554,-39.6618,-33.2833,-26.3139 RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v02.0.0,-3.9886,-16.3191,-14.4373,-5.4442,-3.505,-3.8405,-4.3061,-4.2927,-4.3788,-9.1984,-4.0097,-16.3684,-14.4186,-4.995 RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v03.0.0,-17.7788,-28.5503,-28.9446,-19.2455,-15.0489,-16.2918,-25.0107,-22.6252,-16.5806,-23.0485,-17.8665,-28.5985,-28.9201,-18.8472 RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v04.0.0,-22.3884,-38.5043,-38.7422,-24.6186,-19.2112,-20.7686,-30.0517,-27.272,-21.1174,-29.9612,-22.458,-38.5645,-38.7478,-23.9067 @@ -2379,8 +2377,8 @@ RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v10.0.0,-34.2883,-49.7056,-48.1 RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v11.0.0,-34.8141,-49.941,-46.7139,-36.6002,-31.4361,-32.4566,-40.231,-37.7296,-33.7896,-42.2383,-35.0453,-50.0159,-46.7553,-36.2358 RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v12.0.0,-35.0188,-50.1797,-46.6162,-36.7993,-31.2535,-32.4539,-40.0754,-37.8559,-33.919,-42.2376,-35.2483,-50.2439,-46.6428,-36.4475 RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v13.0.0,-35.3703,-50.0309,-45.5906,-36.9989,-35.62,-32.7121,-40.4792,-38.1788,-34.0749,-42.7074,-35.5948,-50.1023,-45.5831,-36.7123 -RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,libaom-v3.12.0,3.6726,-4.6899,-6.7463,2.8786,4.9191,3.5268,12.5293,12.6872,5.601,1.3547,6.3191,-3.9321,-6.3348,5.8012 -RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,-4.4695,-0.3404,-3.232,-4.2451,-10.189,-8.9559,-16.173,-15.5463,-6.4214,-6.48,-8.4498,-3.114,-5.4211,-8.1896 +RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v14.0.0,-34.7512,-49.5033,-45.1114,-36.3967,-35.1228,-32.1741,-39.829,-37.5021,-33.5605,-42.1309,-34.9757,-49.574,-45.1036,-36.1004 +RA,A2,MeridianTalk_sdr_1920x1080p_5994_10bit.y4m,v15.0.0,-34.7611,-49.5365,-45.0807,-36.403,-35.1546,-32.2003,-39.8078,-37.4894,-33.6016,-42.1595,-34.9859,-49.6078,-45.0728,-36.1107 RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v02.0.0,-2.0743,-2.9425,-3.2027,-2.1603,-3.3867,-3.3212,-3.3471,-3.0081,-2.0869,-1.4636,-2.2673,-2.9424,-3.1909,-2.327 RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v03.0.0,-7.0217,-9.2306,-4.4881,-7.0212,-7.9648,-8.1975,-10.6103,-9.7112,-6.3851,-7.3394,-7.2398,-9.3235,-4.4862,-7.3216 RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v04.0.0,-10.0335,-17.1985,-14.3814,-10.5427,-11.6173,-11.8774,-16.1993,-14.9756,-9.6789,-12.5484,-10.3114,-17.3825,-14.3538,-10.7299 @@ -2393,8 +2391,8 @@ RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v10.0.0,-17.2981,-29.9936,-30.6386,-18 RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v11.0.0,-17.3843,-30.9002,-31.0104,-18.6242,-19.1472,-19.4557,-26.6645,-25.1536,-17.8009,-23.8865,-17.6485,-31.3843,-31.4883,-18.5116 RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v12.0.0,-17.5202,-31.1606,-31.0035,-18.7626,-19.0623,-19.4637,-26.6931,-25.1887,-17.881,-23.9685,-17.7875,-31.7166,-31.4734,-18.6527 RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v13.0.0,-17.5058,-30.6588,-30.4058,-18.692,-20.6033,-19.5401,-26.7404,-25.223,-17.9044,-23.8184,-17.7671,-31.1833,-30.8875,-18.6086 -RA,A2,OldTownCross_1920x1080p50.y4m,libaom-v3.12.0,-10.8995,14.3898,12.1682,-8.8889,-12.7735,-10.4887,-10.1663,-12.4851,-8.9964,4.9702,-12.2465,12.7894,11.4421,-9.6261 -RA,A2,OldTownCross_1920x1080p50.y4m,libaom-v3.12.0-unconstrained,-19.7034,-16.1126,-19.5721,-19.5299,-17.2671,-17.7401,-18.5127,-19.8701,-18.0448,-14.2714,-21.1058,-17.0312,-19.8625,-20.6511 +RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v14.0.0,-17.4929,-30.6332,-30.3995,-18.6787,-20.5932,-19.5267,-26.7166,-25.1982,-17.8903,-23.8081,-17.7553,-31.1623,-30.8801,-18.5962 +RA,A2,Motorcycle_1920x1080_30fps_8bit.y4m,v15.0.0,-17.4885,-30.664,-30.7284,-18.6903,-20.5656,-19.4867,-26.7329,-25.1948,-17.8841,-23.8395,-17.7504,-31.1929,-31.2048,-18.5965 RA,A2,OldTownCross_1920x1080p50.y4m,v02.0.0,-1.5543,-26.4103,-20.6129,-3.3638,-1.3858,-1.8718,-1.4062,-1.5527,-0.5101,-8.655,-1.6883,-27.1039,-20.857,-3.4009 RA,A2,OldTownCross_1920x1080p50.y4m,v03.0.0,-11.8905,-32.7835,-25.056,-13.2835,-10.8622,-12.1947,-15.6619,-14.7741,-9.5757,-17.8314,-12.1514,-33.6176,-25.3291,-13.5332 RA,A2,OldTownCross_1920x1080p50.y4m,v04.0.0,-18.2553,-41.2048,-33.0216,-19.8088,-16.7933,-18.3122,-21.9211,-21.232,-15.6613,-25.3073,-18.56,-42.0892,-33.3016,-20.1577 @@ -2407,8 +2405,8 @@ RA,A2,OldTownCross_1920x1080p50.y4m,v10.0.0,-29.9399,-53.4363,-46.5697,-31.6272, RA,A2,OldTownCross_1920x1080p50.y4m,v11.0.0,-30.9109,-53.8454,-46.7666,-32.5376,-28.0758,-29.0452,-31.5479,-32.0287,-29.5608,-41.9119,-31.342,-54.715,-47.0122,-33.0 RA,A2,OldTownCross_1920x1080p50.y4m,v12.0.0,-31.3135,-53.439,-46.1745,-32.852,-28.6418,-29.5777,-32.7078,-33.0565,-29.8418,-42.0843,-31.752,-54.314,-46.4197,-33.3308 RA,A2,OldTownCross_1920x1080p50.y4m,v13.0.0,-31.2992,-53.1328,-46.1191,-32.824,-30.3738,-29.6147,-32.0981,-32.5462,-29.9021,-42.0544,-31.7352,-53.9924,-46.3618,-33.3 -RA,A2,PedestrianArea_1920x1080p25.y4m,libaom-v3.12.0,2.667,-4.609,-0.4424,2.0574,0.3389,0.0242,0.8801,0.7115,2.3604,4.5885,3.146,-4.893,-0.7258,2.4961 -RA,A2,PedestrianArea_1920x1080p25.y4m,libaom-v3.12.0-unconstrained,-8.4842,-10.3695,-2.4676,-8.2387,-8.9564,-11.1338,-8.6673,-8.6175,-6.1761,-4.943,-8.9492,-10.6927,-2.9923,-8.7011 +RA,A2,OldTownCross_1920x1080p50.y4m,v14.0.0,-30.9971,-52.8845,-45.8264,-32.5239,-30.0486,-29.2575,-31.7552,-32.201,-29.6027,-41.7664,-31.4307,-53.7434,-46.0679,-32.9936 +RA,A2,OldTownCross_1920x1080p50.y4m,v15.0.0,-31.0078,-52.9192,-45.8228,-32.5347,-30.0688,-29.2672,-31.7387,-32.1839,-29.6148,-41.7602,-31.4415,-53.7782,-46.0643,-33.0049 RA,A2,PedestrianArea_1920x1080p25.y4m,v02.0.0,-2.4812,-6.6029,-2.7222,-2.6979,-0.8208,-2.3624,-1.894,-1.5782,0.0813,-2.9047,-2.0915,-6.5133,-2.5655,-2.3215 RA,A2,PedestrianArea_1920x1080p25.y4m,v03.0.0,-7.9014,-11.1576,-6.914,-8.0115,-6.9791,-7.714,-8.2265,-7.7613,-6.3265,-5.6976,-8.0276,-11.2396,-6.9799,-8.157 RA,A2,PedestrianArea_1920x1080p25.y4m,v04.0.0,-13.2878,-23.4422,-18.4385,-14.1023,-12.4348,-13.4295,-15.1253,-14.2743,-11.9202,-13.9205,-13.4058,-23.54,-18.4939,-14.1921 @@ -2421,8 +2419,8 @@ RA,A2,PedestrianArea_1920x1080p25.y4m,v10.0.0,-22.1225,-34.5293,-28.0996,-23.125 RA,A2,PedestrianArea_1920x1080p25.y4m,v11.0.0,-22.5622,-35.4403,-28.8547,-23.6094,-20.9481,-21.7233,-25.1995,-24.2487,-22.0376,-28.1835,-22.7306,-35.5569,-28.9944,-23.7571 RA,A2,PedestrianArea_1920x1080p25.y4m,v12.0.0,-22.5611,-35.9922,-29.5186,-23.6823,-20.7353,-21.6142,-25.7328,-24.7006,-22.0455,-28.1057,-22.7226,-36.1305,-29.6591,-23.8121 RA,A2,PedestrianArea_1920x1080p25.y4m,v13.0.0,-22.693,-36.0741,-29.1228,-23.7795,-24.3441,-21.7248,-25.1979,-24.2364,-22.1122,-28.2291,-22.8649,-36.2226,-29.2729,-23.9268 -RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,1.554,-8.1125,-6.8593,0.6213,-1.3022,-1.4486,3.4474,2.9393,0.9699,-4.6971,2.3311,-8.0956,-6.7263,1.4374 -RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-4.8717,-2.845,-4.5446,-4.7744,-5.7113,-6.1584,-6.0037,-6.2793,-4.8906,-6.6734,-5.6785,-3.6719,-5.7845,-5.4883 +RA,A2,PedestrianArea_1920x1080p25.y4m,v14.0.0,-22.5612,-35.965,-29.0063,-23.6497,-24.2299,-21.6051,-25.0469,-24.0879,-22.001,-28.1006,-22.7331,-36.1136,-29.1566,-23.7966 +RA,A2,PedestrianArea_1920x1080p25.y4m,v15.0.0,-22.5665,-35.9385,-28.981,-23.6513,-24.2329,-21.6064,-25.0759,-24.1025,-22.0013,-28.0776,-22.7384,-36.0865,-29.127,-23.7979 RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v02.0.0,-2.1961,-12.4353,-7.3216,-2.9332,-1.9045,-1.9737,-1.9487,-1.9846,-2.3959,-6.4228,-2.1821,-12.4883,-7.5516,-2.8484 RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v03.0.0,-10.9562,-16.7518,-14.1506,-11.3824,-10.1594,-10.4737,-12.2651,-11.7499,-10.3212,-13.9834,-10.962,-16.8596,-14.628,-11.4319 RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v04.0.0,-18.3272,-26.9627,-23.2818,-18.9854,-18.6983,-18.8771,-21.3341,-20.4311,-17.7855,-22.3307,-18.3578,-27.0557,-23.4493,-19.0594 @@ -2435,8 +2433,8 @@ RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v10.0.0,-27.613,-39.8153,-35.365, RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v11.0.0,-27.9977,-41.9829,-36.1627,-29.1122,-27.8768,-28.0981,-32.8779,-31.8061,-27.3514,-33.8254,-28.2826,-42.4846,-36.7869,-29.3807 RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v12.0.0,-28.1208,-41.7632,-35.8467,-29.2074,-27.86,-28.1009,-33.3151,-32.117,-27.4368,-33.4225,-28.3989,-42.3154,-36.3743,-29.4615 RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v13.0.0,-28.0467,-41.6047,-35.6343,-29.1093,-29.7413,-28.0278,-33.3682,-32.1026,-27.3256,-33.5487,-28.3317,-42.1669,-36.2368,-29.3805 -RA,A2,Riverbed_1920x1080p25.y4m,libaom-v3.12.0,7.8371,-5.1729,-7.0544,6.9267,6.4578,6.1696,11.7234,10.4561,6.4167,7.6419,10.1598,-4.9792,-7.3214,9.5986 -RA,A2,Riverbed_1920x1080p25.y4m,libaom-v3.12.0-unconstrained,-4.0233,0.3496,7.4683,-3.5778,-5.4182,-4.8998,-5.4567,-6.5541,-3.7325,0.2213,-6.7185,-1.7947,5.1232,-6.2965 +RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v14.0.0,-27.9956,-42.0155,-35.8813,-29.0997,-29.7364,-28.0417,-33.3657,-32.0702,-27.3032,-33.493,-28.2839,-42.5241,-36.4294,-29.3559 +RA,A2,RitualDance_1920x1080_5994_10bit_420.y4m,v15.0.0,-28.0006,-41.957,-35.8897,-29.1011,-29.737,-28.038,-33.4054,-32.0892,-27.2987,-33.4571,-28.2887,-42.4746,-36.4491,-29.3573 RA,A2,Riverbed_1920x1080p25.y4m,v02.0.0,-3.3113,-3.598,-23.1079,-3.8842,-3.1197,-3.425,-4.1754,-3.8115,-3.214,-2.3646,-3.2126,-3.1316,-23.2406,-3.6323 RA,A2,Riverbed_1920x1080p25.y4m,v03.0.0,-6.7742,-13.1826,-11.865,-7.1034,-5.2262,-6.0777,-5.5299,-5.2593,-5.943,-8.7198,-6.9612,-13.3792,-11.975,-7.5006 RA,A2,Riverbed_1920x1080p25.y4m,v04.0.0,-9.0172,-22.9178,-30.7778,-10.1117,-7.3622,-8.5073,-8.0085,-7.4683,-8.3442,-12.9969,-9.2516,-23.1575,-30.821,-10.3792 @@ -2449,8 +2447,8 @@ RA,A2,Riverbed_1920x1080p25.y4m,v10.0.0,-16.4611,-40.7139,-59.4745,-18.8626,-14. RA,A2,Riverbed_1920x1080p25.y4m,v11.0.0,-16.3857,-40.15,-59.6743,-18.7987,-14.4336,-15.4555,-18.147,-17.5975,-16.2372,-23.0393,-16.4107,-40.8175,-60.3927,-18.1842 RA,A2,Riverbed_1920x1080p25.y4m,v12.0.0,-16.2512,-40.588,-58.0493,-18.636,-14.2034,-15.2842,-17.9324,-17.4021,-16.0694,-23.155,-16.2658,-41.267,-58.748,-18.0384 RA,A2,Riverbed_1920x1080p25.y4m,v13.0.0,-16.4261,-39.8771,-57.9418,-18.7579,-17.996,-15.4951,-18.5142,-17.8468,-16.2227,-23.0102,-16.4438,-40.5259,-58.6246,-18.1917 -RA,A2,RushFieldCuts_1920x1080_2997.y4m,libaom-v3.12.0,1.8825,-7.6838,-6.119,1.069,3.8407,3.2922,2.0151,1.8066,3.7158,0.4664,1.6438,-8.5909,-7.0427,0.9833 -RA,A2,RushFieldCuts_1920x1080_2997.y4m,libaom-v3.12.0-unconstrained,-8.0465,7.3418,10.5617,-6.6059,-5.3942,-5.257,-12.0052,-12.0199,-6.1826,-0.397,-10.1347,5.9694,9.4115,-8.9543 +RA,A2,Riverbed_1920x1080p25.y4m,v14.0.0,-16.3975,-39.863,-57.9298,-18.7305,-17.9755,-15.4702,-18.4855,-17.8189,-16.1996,-22.9829,-16.4155,-40.5119,-58.6127,-18.1634 +RA,A2,Riverbed_1920x1080p25.y4m,v15.0.0,-16.3935,-39.8398,-57.9047,-18.7238,-17.9676,-15.4623,-18.4635,-17.7976,-16.1924,-22.9661,-16.4114,-40.488,-58.5871,-18.1566 RA,A2,RushFieldCuts_1920x1080_2997.y4m,v02.0.0,-1.6824,-8.1488,-9.3031,-2.3715,-1.7545,-1.8316,-1.7239,-1.7602,-1.1189,-2.5767,-1.8928,-8.4227,-9.5393,-2.2495 RA,A2,RushFieldCuts_1920x1080_2997.y4m,v03.0.0,-9.1693,-12.2023,-12.8052,-9.4972,-7.7952,-8.4854,-13.8097,-12.5509,-7.5207,-9.6051,-9.4156,-12.4646,-13.0193,-9.5967 RA,A2,RushFieldCuts_1920x1080_2997.y4m,v04.0.0,-12.8162,-22.3456,-20.7487,-13.6586,-11.8831,-12.5047,-17.9554,-16.7147,-11.2905,-15.5982,-13.0485,-22.6912,-21.0203,-13.5835 @@ -2463,8 +2461,8 @@ RA,A2,RushFieldCuts_1920x1080_2997.y4m,v10.0.0,-19.6621,-30.5219,-24.29,-20.4201 RA,A2,RushFieldCuts_1920x1080_2997.y4m,v11.0.0,-20.0747,-31.2023,-25.2462,-20.8665,-18.4571,-18.8088,-25.2175,-24.2519,-18.9878,-26.2089,-20.6016,-31.5608,-25.5477,-21.1642 RA,A2,RushFieldCuts_1920x1080_2997.y4m,v12.0.0,-20.415,-31.9037,-25.0864,-21.2023,-18.5885,-18.9989,-25.4508,-24.5049,-19.2878,-26.6517,-20.9423,-32.2656,-25.3891,-21.5113 RA,A2,RushFieldCuts_1920x1080_2997.y4m,v13.0.0,-20.2785,-32.0842,-24.1908,-21.0491,-19.4273,-18.9735,-25.2,-24.3366,-19.1951,-26.5909,-20.8052,-32.4476,-24.4816,-21.3681 -RA,A2,Skater227_1920x1080_30fps.y4m,libaom-v3.12.0,6.5574,-9.0216,-12.3056,4.301,2.1146,2.6684,7.0904,7.1668,4.6956,-3.9373,6.8306,-9.1548,-11.844,5.4325 -RA,A2,Skater227_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,-3.5788,3.866,3.7799,-2.671,-3.1823,-2.8637,-3.7797,-4.2391,-3.0174,-0.4538,-4.3666,2.515,3.8876,-3.7188 +RA,A2,RushFieldCuts_1920x1080_2997.y4m,v14.0.0,-20.2507,-32.0228,-24.1188,-21.0176,-19.407,-18.9366,-25.1797,-24.3113,-19.1616,-26.5087,-20.7777,-32.3864,-24.4086,-21.3379 +RA,A2,RushFieldCuts_1920x1080_2997.y4m,v15.0.0,-20.2082,-32.108,-24.1832,-20.9866,-19.3502,-18.8791,-25.1071,-24.2181,-19.1067,-26.5477,-20.7341,-32.468,-24.4796,-21.3024 RA,A2,Skater227_1920x1080_30fps.y4m,v02.0.0,-4.459,-7.5022,-10.9988,-5.0573,-4.702,-4.7575,-6.9155,-6.2444,-4.5339,-7.2563,-4.7294,-8.2464,-11.5392,-5.1093 RA,A2,Skater227_1920x1080_30fps.y4m,v03.0.0,-12.5396,-9.9844,-12.2342,-12.3824,-12.4357,-12.6771,-12.4274,-12.4222,-12.304,-11.3888,-12.6569,-10.1753,-11.9824,-12.5332 RA,A2,Skater227_1920x1080_30fps.y4m,v04.0.0,-18.5155,-22.7262,-23.6773,-19.123,-18.1818,-18.4481,-20.5564,-20.0802,-18.561,-19.1363,-18.5879,-23.0278,-23.5599,-18.9922 @@ -2477,8 +2475,8 @@ RA,A2,Skater227_1920x1080_30fps.y4m,v10.0.0,-31.2321,-35.3124,-36.4025,-31.8337, RA,A2,Skater227_1920x1080_30fps.y4m,v11.0.0,-31.6042,-38.8361,-38.7172,-32.5522,-31.3564,-31.7571,-34.752,-34.172,-31.7656,-35.588,-31.6706,-39.5762,-39.0362,-32.332 RA,A2,Skater227_1920x1080_30fps.y4m,v12.0.0,-31.7462,-38.8631,-37.5266,-32.5955,-31.3239,-31.7691,-34.7187,-34.2449,-31.803,-35.3766,-31.7943,-39.5717,-37.9027,-32.4003 RA,A2,Skater227_1920x1080_30fps.y4m,v13.0.0,-31.7839,-37.88,-37.4075,-32.5501,-37.8295,-31.9419,-34.9201,-34.4346,-31.8261,-34.7503,-31.8057,-38.6849,-37.905,-32.3674 -RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,libaom-v3.12.0,5.758,-21.8486,-16.3312,4.1097,4.2682,2.9806,15.1471,13.5246,6.1364,-0.6176,8.1894,-21.8924,-16.247,7.7877 -RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,libaom-v3.12.0-unconstrained,-6.574,-0.2718,-0.0342,-6.3364,-8.4376,-7.0083,-12.826,-13.352,-7.2265,-6.1452,-10.3198,-1.4788,-2.1352,-10.0971 +RA,A2,Skater227_1920x1080_30fps.y4m,v14.0.0,-31.5099,-37.7933,-37.4352,-32.3095,-37.5704,-31.6578,-34.6108,-34.1154,-31.5791,-34.5676,-31.5331,-38.5824,-37.9531,-32.1156 +RA,A2,Skater227_1920x1080_30fps.y4m,v15.0.0,-31.5228,-37.7156,-37.5739,-32.3245,-37.5702,-31.6426,-34.6896,-34.2097,-31.5902,-34.5111,-31.5638,-38.5006,-38.1173,-32.146 RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v02.0.0,-1.9084,-17.6557,-38.7968,-3.6333,-2.3022,-2.2669,-2.8374,-2.6715,-2.0994,-7.1291,-2.0491,-17.4751,-39.4343,-2.7949 RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v03.0.0,-5.281,-21.3569,-47.9532,-7.1598,-4.5727,-4.6984,-6.6671,-6.1623,-4.7147,-13.32,-5.4608,-21.0869,-48.6382,-6.3393 RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v04.0.0,-7.2715,-28.625,-51.4221,-9.4713,-6.3911,-6.74,-9.1615,-8.3798,-6.4682,-16.972,-7.4521,-28.3131,-52.0294,-8.4733 @@ -2491,8 +2489,8 @@ RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v10.0.0,-1 RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v11.0.0,-14.0718,-52.6766,-70.5826,-18.1,-12.3238,-12.7615,-19.7542,-18.6845,-13.6781,-28.3026,-14.2259,-52.6246,-70.7515,-16.1217 RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v12.0.0,-14.1346,-51.5155,-70.6209,-18.1211,-12.2972,-12.7554,-20.3695,-19.0516,-13.7282,-28.252,-14.2831,-51.4454,-70.826,-16.1772 RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v13.0.0,-14.0999,-52.3448,-69.5356,-18.059,-13.7409,-12.8387,-20.3961,-19.1381,-13.7503,-27.855,-14.2539,-52.3325,-69.6038,-16.1335 -RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,libaom-v3.12.0,-1.1203,-9.1905,-11.2619,-1.8305,-2.8376,-3.69,-7.808,-7.1928,0.2157,-2.6118,-0.4652,-7.9854,-11.1091,-0.7742 -RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,-12.3049,6.4647,-1.0438,-11.1062,-16.2225,-15.6542,-34.3455,-33.1888,-13.2931,-10.7985,-14.6976,8.6816,-0.8111,-13.8911 +RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v14.0.0,-14.071,-52.0297,-69.2589,-17.9889,-13.7292,-12.7995,-20.3228,-19.0636,-13.6947,-27.7384,-14.2247,-52.0102,-69.3117,-16.0847 +RA,A2,ToddlerFountainCropped_1080x1080p2997_yuv420p10le_130frames.y4m,v15.0.0,-14.0748,-52.0303,-69.2495,-17.9893,-13.7454,-12.8099,-20.3062,-19.059,-13.6963,-27.7505,-14.2334,-52.0108,-69.3033,-16.0912 RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v02.0.0,0.9238,-7.7584,-12.786,-0.0234,0.2708,-0.1393,-3.0622,-2.7683,0.5033,-0.0849,0.8345,-8.2297,-12.8911,0.5704 RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v03.0.0,-6.0912,-17.5975,-15.1233,-7.0075,-5.2865,-5.2515,-11.6052,-11.1436,-5.3353,-6.9637,-6.5318,-18.4075,-15.0234,-6.9172 RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v04.0.0,-18.1586,-31.1932,-34.4585,-19.4889,-17.9638,-18.4307,-26.9863,-26.2987,-17.5603,-20.0987,-18.9501,-32.1877,-34.9979,-19.5005 @@ -2505,8 +2503,8 @@ RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v10.0.0,-25.9591,-41.843,-46.5012,- RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v11.0.0,-28.1496,-44.2734,-49.0362,-29.9463,-29.1115,-28.8882,-39.0661,-38.6857,-29.5216,-31.5206,-29.085,-45.1363,-49.9101,-29.7671 RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v12.0.0,-28.0043,-43.7924,-48.7688,-29.7839,-28.7719,-28.4646,-38.8192,-38.472,-29.2591,-31.2658,-28.9474,-44.6688,-49.6186,-29.62 RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v13.0.0,-28.1319,-44.0093,-48.4825,-29.8918,-27.9727,-28.535,-38.8719,-38.5141,-29.3755,-31.3541,-29.0749,-44.8767,-49.3059,-29.7489 -RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0,1.7497,1.7467,0.3313,1.7179,2.9185,1.9101,21.6679,13.7462,3.809,1.7243,1.7296,1.4374,0.1102,1.7575 -RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-4.9715,25.1511,22.2367,-2.5563,-3.864,-3.3857,2.2526,-4.3102,-3.1944,4.47,-6.2546,24.8366,22.1376,-4.5371 +RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v14.0.0,-28.141,-43.9348,-48.5052,-29.8933,-27.9603,-28.5762,-38.9769,-38.5932,-29.3983,-31.3492,-29.0874,-44.8086,-49.3294,-29.7584 +RA,A2,TreesAndGrass_1920_1080_30fps_8bit.y4m,v15.0.0,-28.1505,-43.9368,-48.5289,-29.9035,-27.9669,-28.5686,-38.9588,-38.5855,-29.3879,-31.3668,-29.0984,-44.8022,-49.3507,-29.7692 RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v02.0.0,-3.675,-23.1757,-27.8916,-5.8964,-2.7386,-3.4698,-4.8268,-5.5503,-3.4819,-9.1551,-3.7226,-23.182,-27.7836,-4.7466 RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v03.0.0,-22.5109,-34.0413,-38.349,-23.8651,-19.4248,-20.7986,-29.8843,-29.3172,-20.1247,-25.8567,-22.7293,-34.0828,-38.3018,-23.3861 RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v04.0.0,-32.7811,-43.7315,-63.1658,-34.9832,-29.6147,-31.788,-40.9853,-39.6813,-30.2542,-36.2766,-33.0491,-43.7785,-63.1303,-33.9272 @@ -2519,8 +2517,8 @@ RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v10.0.0,-44.5135,-70.2133,-75.7771 RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v11.0.0,-43.9925,-69.371,-74.7591,-47.2122,-40.2609,-42.1514,-53.1234,-51.9636,-41.3527,-52.9267,-44.417,-69.3968,-74.7448,-45.8612 RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v12.0.0,-44.2411,-69.6789,-74.5434,-47.436,-40.1337,-41.9693,-53.4907,-52.3394,-41.4889,-53.2534,-44.6661,-69.7185,-74.5066,-46.0999 RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v13.0.0,-44.2809,-69.6336,-74.9402,-47.4923,-44.4688,-42.0957,-53.4423,-52.3218,-41.5587,-53.2131,-44.7057,-69.665,-74.9249,-46.1441 -RA,A2,Vertical_bees_1080x1920_2997.y4m,libaom-v3.12.0,0.7459,1.8871,5.8908,1.0529,0.1296,0.3831,-5.1234,-4.8327,3.187,6.9546,0.4791,1.321,5.2968,0.7944 -RA,A2,Vertical_bees_1080x1920_2997.y4m,libaom-v3.12.0-unconstrained,-5.8481,-2.903,2.223,-5.2686,-7.7239,-7.3687,-13.1043,-12.152,-3.3384,-1.0314,-6.4151,-3.1504,2.0012,-5.7315 +RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v14.0.0,-44.2446,-69.6484,-74.9226,-47.4606,-44.4403,-42.0528,-53.3412,-52.2458,-41.53,-53.186,-44.6677,-69.6807,-74.9069,-46.1085 +RA,A2,TunnelFlag_1920x1080_5994_10bit_420.y4m,v15.0.0,-44.25,-69.6374,-74.9253,-47.4643,-44.4445,-42.0651,-53.341,-52.2457,-41.5374,-53.1915,-44.6745,-69.6686,-74.9102,-46.1138 RA,A2,Vertical_bees_1080x1920_2997.y4m,v02.0.0,-1.6381,-3.7765,-1.6069,-1.7563,-0.9756,-1.6948,-1.8327,-1.9403,-0.0156,1.3238,-1.6672,-3.9136,-1.6724,-1.7966 RA,A2,Vertical_bees_1080x1920_2997.y4m,v03.0.0,-6.8264,-6.9721,-3.5419,-6.6552,-7.1636,-7.6785,-10.561,-9.0386,-4.7811,-3.4827,-6.8719,-7.163,-3.4979,-6.707 RA,A2,Vertical_bees_1080x1920_2997.y4m,v04.0.0,-12.8471,-12.6324,-12.9796,-12.838,-12.2158,-13.0922,-16.4435,-14.8783,-10.3226,-9.9401,-12.9128,-12.8377,-12.9889,-12.8765 @@ -2533,8 +2531,8 @@ RA,A2,Vertical_bees_1080x1920_2997.y4m,v10.0.0,-23.0034,-20.5246,-22.1234,-22.81 RA,A2,Vertical_bees_1080x1920_2997.y4m,v11.0.0,-23.3998,-20.1479,-21.7397,-23.1272,-21.8204,-22.0458,-25.2115,-24.4718,-21.5322,-22.4057,-23.6105,-20.4154,-22.0773,-23.2835 RA,A2,Vertical_bees_1080x1920_2997.y4m,v12.0.0,-23.5127,-20.3676,-22.015,-23.2524,-21.7656,-22.0825,-25.0387,-24.4306,-21.6248,-22.4543,-23.7162,-20.6414,-22.3264,-23.4029 RA,A2,Vertical_bees_1080x1920_2997.y4m,v13.0.0,-23.5603,-20.8684,-21.7022,-23.3059,-22.4998,-21.9784,-25.2301,-24.5499,-21.6458,-22.6002,-23.7666,-21.1448,-22.0513,-23.4694 -RA,A2,WorldCup_1920x1080_30p.y4m,libaom-v3.12.0,2.0668,-3.4122,-1.8706,1.5078,-2.143,-2.6091,1.4001,1.09,2.101,7.4961,2.821,-3.7572,-1.9466,2.5483 -RA,A2,WorldCup_1920x1080_30p.y4m,libaom-v3.12.0-unconstrained,-3.9213,5.4695,5.9635,-3.0218,-6.7663,-6.7127,-6.895,-6.8591,-3.3316,4.3418,-4.6253,4.9462,5.6091,-3.8392 +RA,A2,Vertical_bees_1080x1920_2997.y4m,v14.0.0,-23.3993,-20.9308,-21.6741,-23.1651,-22.3549,-21.8051,-25.0462,-24.3348,-21.512,-22.5666,-23.603,-21.2127,-22.0272,-23.331 +RA,A2,Vertical_bees_1080x1920_2997.y4m,v15.0.0,-23.4002,-20.9074,-21.6661,-23.1641,-22.3478,-21.7864,-25.0573,-24.3422,-21.4862,-22.5387,-23.6052,-21.1906,-22.0204,-23.3307 RA,A2,WorldCup_1920x1080_30p.y4m,v02.0.0,-1.2476,0.2924,-0.3193,-1.124,-2.0367,-2.1703,-2.1256,-2.1237,-0.5539,3.5745,-1.3076,0.3691,-0.2794,-1.1012 RA,A2,WorldCup_1920x1080_30p.y4m,v03.0.0,-10.6687,-6.6887,-6.3393,-10.263,-10.8042,-11.2772,-12.455,-11.7503,-9.3552,-5.8728,-10.8141,-6.7483,-6.2851,-10.4434 RA,A2,WorldCup_1920x1080_30p.y4m,v04.0.0,-17.6069,-17.8218,-17.2405,-17.5843,-16.8886,-17.4973,-21.1999,-19.7515,-16.2062,-13.3816,-17.7726,-17.8381,-17.2489,-17.6882 @@ -2547,8 +2545,8 @@ RA,A2,WorldCup_1920x1080_30p.y4m,v10.0.0,-28.523,-34.6718,-31.7888,-29.0045,-25. RA,A2,WorldCup_1920x1080_30p.y4m,v11.0.0,-29.0172,-36.4898,-32.5095,-29.5793,-26.0751,-26.9251,-32.4548,-30.7537,-27.7428,-31.4435,-29.294,-36.7032,-32.7038,-29.6567 RA,A2,WorldCup_1920x1080_30p.y4m,v12.0.0,-29.186,-37.0136,-33.5733,-29.8125,-26.0556,-26.9316,-32.5245,-30.9585,-27.9077,-31.9474,-29.4589,-37.2498,-33.7665,-29.8622 RA,A2,WorldCup_1920x1080_30p.y4m,v13.0.0,-29.1448,-36.3005,-32.8458,-29.7007,-30.6738,-26.8703,-32.4701,-30.8224,-27.8099,-31.311,-29.417,-36.4874,-33.0449,-29.7754 -RA,A3,ControlledBurn_1280x720p30_420.y4m,libaom-v3.12.0,1.0838,4.3524,5.9049,1.4762,0.6495,1.5192,4.0943,4.0734,0.4819,2.7874,-0.8006,3.9183,6.2443,-0.2605 -RA,A3,ControlledBurn_1280x720p30_420.y4m,libaom-v3.12.0-unconstrained,-10.0816,-3.9854,-0.386,-9.2601,-5.8616,-6.0014,-2.9115,-3.0743,-7.9441,-8.0228,-14.5821,-2.8462,2.7696,-13.334 +RA,A2,WorldCup_1920x1080_30p.y4m,v14.0.0,-29.0774,-36.3733,-32.4579,-29.6242,-30.6605,-26.8821,-32.5063,-30.8159,-27.764,-31.3122,-29.3476,-36.5637,-32.6318,-29.6993 +RA,A2,WorldCup_1920x1080_30p.y4m,v15.0.0,-29.0263,-36.1208,-32.3824,-29.5613,-30.5638,-26.7236,-32.507,-30.8282,-27.7052,-31.3247,-29.3004,-36.312,-32.5741,-29.6465 RA,A3,ControlledBurn_1280x720p30_420.y4m,v02.0.0,-1.5533,-8.9088,-8.0771,-2.3172,-1.7467,-1.7659,-2.0913,-2.065,-2.0954,-3.9846,-1.4879,-7.8713,-5.9907,-1.8613 RA,A3,ControlledBurn_1280x720p30_420.y4m,v03.0.0,-5.4472,-13.8475,-12.2956,-6.2881,-6.1153,-5.9157,-5.1281,-5.1228,-5.8766,-7.893,-5.1235,-13.0814,-10.1375,-5.5612 RA,A3,ControlledBurn_1280x720p30_420.y4m,v04.0.0,-9.7974,-26.0014,-20.2081,-11.306,-10.1379,-10.0386,-9.2604,-9.3474,-10.0307,-14.0664,-9.2792,-25.5469,-18.7232,-10.1844 @@ -2561,8 +2559,8 @@ RA,A3,ControlledBurn_1280x720p30_420.y4m,v10.0.0,-16.6542,-38.3509,-32.6904,-18. RA,A3,ControlledBurn_1280x720p30_420.y4m,v11.0.0,-17.3789,-39.4074,-33.7244,-19.6886,-17.7686,-17.566,-19.9155,-19.8264,-18.3297,-23.3569,-16.3351,-39.9403,-33.5412,-17.7941 RA,A3,ControlledBurn_1280x720p30_420.y4m,v12.0.0,-17.3988,-39.7449,-34.352,-19.7773,-17.7499,-17.5669,-19.7618,-19.7852,-18.4633,-23.761,-16.3919,-40.2337,-34.3132,-17.8902 RA,A3,ControlledBurn_1280x720p30_420.y4m,v13.0.0,-17.4703,-39.3596,-33.6758,-19.7542,-16.9881,-17.632,-19.6391,-19.5815,-18.4359,-23.6,-16.4915,-39.8652,-33.5274,-17.9346 -RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0,-1.0751,6.0528,9.159,-0.4397,-1.5039,-0.8241,-2.8631,-3.8765,-0.8999,2.3357,-1.9562,4.9044,8.4095,-1.3724 -RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-4.7655,9.0706,10.8916,-3.6869,-7.6069,-5.7965,-13.7798,-13.7634,-6.9525,-1.3265,-6.0789,8.2277,10.3896,-5.0268 +RA,A3,ControlledBurn_1280x720p30_420.y4m,v14.0.0,-17.3193,-39.2999,-33.5066,-19.6094,-16.8343,-17.4869,-19.4411,-19.4264,-18.3165,-23.4528,-16.3329,-39.8177,-33.3558,-17.7781 +RA,A3,ControlledBurn_1280x720p30_420.y4m,v15.0.0,-17.3194,-39.298,-33.4773,-19.6074,-16.8227,-17.4841,-19.41,-19.4054,-18.3151,-23.4346,-16.3354,-39.8179,-33.3354,-17.7791 RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v02.0.0,-2.4671,-11.2192,-23.1489,-3.6821,-3.2441,-3.3303,-2.8955,-2.9773,-3.1078,-6.9491,-2.5527,-11.2353,-23.1529,-3.2735 RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v03.0.0,-13.5867,-21.8927,-31.544,-14.6739,-14.3283,-14.5957,-21.4231,-20.3677,-13.3093,-18.8502,-13.6604,-21.9551,-31.5413,-14.4076 RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v04.0.0,-21.5758,-32.6938,-43.7458,-22.9949,-22.9121,-23.3138,-30.5585,-29.2828,-21.2257,-28.1756,-21.6776,-32.7552,-43.7577,-22.6602 @@ -2575,8 +2573,8 @@ RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v10.0.0,-31.5915,-38.6678,-50.5747 RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v11.0.0,-31.5766,-36.9843,-49.9359,-32.5564,-31.5476,-31.5718,-40.5738,-39.8439,-31.2115,-36.4823,-31.9133,-37.2293,-49.9628,-32.6014 RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v12.0.0,-31.9444,-37.7126,-50.4555,-32.9469,-31.769,-31.8178,-40.9425,-40.1872,-31.6099,-36.7215,-32.2845,-37.9456,-50.4872,-32.9803 RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v13.0.0,-31.99,-37.3838,-49.5006,-32.9346,-31.2367,-31.8705,-40.8645,-40.2159,-31.6871,-36.6048,-32.3403,-37.6018,-49.5333,-33.0117 -RA,A3,Johnny_1280x720_60.y4m,libaom-v3.12.0,-1.0236,11.9542,11.0915,0.3634,-4.0386,-3.6914,-0.0438,-0.9427,-2.7856,4.2074,-1.396,11.8015,10.8942,-0.1652 -RA,A3,Johnny_1280x720_60.y4m,libaom-v3.12.0-unconstrained,-9.919,-9.002,-9.1233,-9.8333,-11.201,-10.6507,-6.3448,-7.9485,-9.4756,-10.1854,-10.1711,-9.0533,-9.2072,-10.0769 +RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v14.0.0,-31.8014,-37.422,-49.3927,-32.7604,-31.0819,-31.6703,-40.5929,-39.9344,-31.5199,-36.4922,-32.1512,-37.6482,-49.4286,-32.8288 +RA,A3,DrivingPOV_1280x720p_5994_10bit_420.y4m,v15.0.0,-31.7931,-37.279,-49.2684,-32.7404,-31.0951,-31.7065,-40.608,-39.9356,-31.5514,-36.4239,-32.1407,-37.5019,-49.3009,-32.8102 RA,A3,Johnny_1280x720_60.y4m,v02.0.0,-1.3803,-11.1166,-8.8961,-2.4074,-1.3251,-1.2859,-0.1363,-0.2275,-1.6636,-6.001,-1.4056,-11.0897,-8.9134,-2.209 RA,A3,Johnny_1280x720_60.y4m,v03.0.0,-11.8899,-16.0091,-15.4057,-12.3468,-10.7913,-11.073,-16.3388,-14.4446,-11.4195,-13.668,-11.9447,-16.0336,-15.4281,-12.3086 RA,A3,Johnny_1280x720_60.y4m,v04.0.0,-18.9553,-25.3734,-24.8805,-19.6994,-17.3506,-18.1119,-23.1148,-20.9877,-17.8998,-21.4951,-19.0139,-25.3984,-24.8607,-19.6041 @@ -2589,8 +2587,8 @@ RA,A3,Johnny_1280x720_60.y4m,v10.0.0,-30.6204,-35.2724,-34.4977,-31.1294,-28.973 RA,A3,Johnny_1280x720_60.y4m,v11.0.0,-30.9512,-34.5547,-32.9096,-31.2859,-29.1284,-29.6015,-34.7893,-32.8655,-29.4454,-32.5939,-31.066,-34.5699,-32.9162,-31.334 RA,A3,Johnny_1280x720_60.y4m,v12.0.0,-31.468,-35.0239,-34.0497,-31.8386,-29.8045,-30.0588,-35.8309,-33.8903,-29.9068,-32.953,-31.5766,-35.0429,-34.064,-31.8708 RA,A3,Johnny_1280x720_60.y4m,v13.0.0,-31.6023,-34.952,-33.1996,-31.8932,-31.7539,-30.3587,-35.7705,-33.9244,-29.985,-32.5284,-31.7138,-34.9719,-33.223,-31.9476 -RA,A3,KristenAndSara_1280x720_60.y4m,libaom-v3.12.0,0.6983,10.7065,11.3838,1.7519,-8.5998,-7.6033,-1.0892,-0.5539,-4.8922,3.4368,0.3469,10.525,11.2492,1.4266 -RA,A3,KristenAndSara_1280x720_60.y4m,libaom-v3.12.0-unconstrained,-9.8745,-8.9624,-8.3004,-9.7387,-8.9121,-8.6376,-10.6974,-10.8624,-8.7414,-9.8768,-10.2024,-9.0425,-8.3539,-10.0434 +RA,A3,Johnny_1280x720_60.y4m,v14.0.0,-30.7876,-33.9901,-32.3215,-31.0656,-31.0561,-29.6306,-34.6388,-32.8364,-29.1476,-31.6502,-30.8989,-34.0071,-32.3457,-31.1213 +RA,A3,Johnny_1280x720_60.y4m,v15.0.0,-30.7665,-34.0787,-32.3701,-31.0557,-31.0291,-29.6372,-34.646,-32.8474,-29.1508,-31.6797,-30.8765,-34.0941,-32.3947,-31.1087 RA,A3,KristenAndSara_1280x720_60.y4m,v02.0.0,-1.7166,-11.1134,-10.6796,-2.7642,-1.8171,-1.7113,-0.7437,-1.1019,-2.2938,-6.4123,-1.73,-11.059,-10.6767,-2.5997 RA,A3,KristenAndSara_1280x720_60.y4m,v03.0.0,-12.4412,-19.7636,-17.6128,-13.156,-12.721,-12.7759,-14.6456,-13.5956,-12.6684,-15.7561,-12.4823,-19.7479,-17.6146,-13.0816 RA,A3,KristenAndSara_1280x720_60.y4m,v04.0.0,-18.8659,-27.9269,-26.8537,-19.8476,-18.6011,-18.8498,-22.517,-20.5695,-18.7085,-23.4605,-18.9115,-27.895,-26.8253,-19.7422 @@ -2603,8 +2601,8 @@ RA,A3,KristenAndSara_1280x720_60.y4m,v10.0.0,-29.072,-39.538,-35.3734,-30.0431,- RA,A3,KristenAndSara_1280x720_60.y4m,v11.0.0,-29.2818,-38.2654,-34.7357,-30.1138,-29.32,-29.5136,-33.2191,-31.2688,-29.2107,-33.5488,-29.367,-38.2625,-34.729,-30.0885 RA,A3,KristenAndSara_1280x720_60.y4m,v12.0.0,-29.8497,-38.9836,-36.293,-30.7513,-29.5295,-29.7177,-34.5372,-32.4132,-29.7975,-34.2159,-29.9404,-38.9981,-36.2807,-30.7135 RA,A3,KristenAndSara_1280x720_60.y4m,v13.0.0,-29.6744,-38.5017,-34.8547,-30.4784,-30.9948,-29.4166,-34.294,-32.0004,-29.5065,-33.0491,-29.7658,-38.5039,-34.8346,-30.4685 -RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0,-0.5405,-3.7382,-4.0193,-0.8938,-1.9955,-1.659,0.8951,-0.8051,-0.7577,-3.3021,-0.7534,-4.4739,-4.6439,-1.1843 -RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,libaom-v3.12.0-unconstrained,-5.35,2.3055,3.2258,-4.591,-7.1289,-6.6754,-7.8377,-8.4542,-4.722,-3.3144,-6.0479,1.5586,2.6384,-4.889 +RA,A3,KristenAndSara_1280x720_60.y4m,v14.0.0,-29.06,-37.8847,-34.2561,-29.8646,-30.3956,-28.8375,-33.5685,-31.248,-28.91,-32.4176,-29.1522,-37.8851,-34.2359,-29.8538 +RA,A3,KristenAndSara_1280x720_60.y4m,v15.0.0,-29.0666,-37.873,-34.2614,-29.87,-30.3993,-28.8548,-33.5614,-31.2525,-28.9253,-32.4134,-29.1586,-37.8733,-34.2411,-29.8589 RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v02.0.0,-3.3971,-2.6568,-6.6669,-3.5067,-3.034,-3.1152,-4.1273,-4.1405,-2.9353,-3.6535,-3.4459,-2.6633,-6.6356,-3.5552 RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v03.0.0,-14.3679,-8.9766,-13.8898,-14.0523,-13.7682,-13.8883,-18.8489,-18.0896,-13.1029,-13.3037,-14.4792,-9.0349,-13.783,-14.049 RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v04.0.0,-26.041,-24.1664,-32.4332,-26.2383,-25.1307,-25.4031,-31.2337,-30.1372,-24.3654,-25.8887,-26.1968,-24.2447,-32.435,-26.3622 @@ -2617,8 +2615,8 @@ RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v10.0.0,-35.7825,-31.4221,-39.4 RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v11.0.0,-36.1428,-32.0926,-40.051,-36.1075,-34.106,-34.387,-40.8095,-39.7721,-34.3391,-35.4919,-36.4318,-32.4369,-40.1572,-36.3369 RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v12.0.0,-36.3088,-32.0976,-40.2024,-36.264,-34.351,-34.6215,-41.287,-40.2469,-34.5532,-35.6443,-36.6048,-32.4247,-40.3465,-36.4997 RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v13.0.0,-36.3055,-32.5099,-39.7792,-36.262,-35.0177,-34.6868,-41.3484,-40.2219,-34.597,-35.9251,-36.5879,-32.8175,-39.8833,-36.4947 -RA,A3,Vidyo3_1280x720p_60fps.y4m,libaom-v3.12.0,-1.5644,6.3642,16.0497,-0.372,7.7439,6.9176,-0.9398,-1.76,1.4861,4.6717,-2.061,6.171,15.8193,-0.9986 -RA,A3,Vidyo3_1280x720p_60fps.y4m,libaom-v3.12.0-unconstrained,-10.4074,-6.8378,-10.7389,-10.2964,-11.5741,-11.2721,-10.2076,-10.6599,-9.7861,-10.2402,-10.7733,-6.8726,-10.8621,-10.6387 +RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v14.0.0,-36.0874,-32.2276,-39.5235,-36.0388,-34.8531,-34.4562,-41.2361,-40.0721,-34.3863,-35.703,-36.3731,-32.5336,-39.6262,-36.2718 +RA,A3,RollerCoaster_1280x720p_5994_10bit_420.y4m,v15.0.0,-36.0851,-32.1869,-39.5408,-36.0351,-34.8532,-34.4584,-41.288,-40.1105,-34.3609,-35.6943,-36.3699,-32.5013,-39.6606,-36.2661 RA,A3,Vidyo3_1280x720p_60fps.y4m,v02.0.0,-0.8986,-17.7334,-17.4999,-2.4551,-1.289,-1.1926,-0.2573,-0.0792,-1.5876,-6.3028,-0.9553,-17.6617,-17.4806,-1.8491 RA,A3,Vidyo3_1280x720p_60fps.y4m,v03.0.0,-11.8899,-23.5362,-26.1316,-13.1129,-11.241,-11.553,-16.7514,-15.2495,-11.8201,-16.4713,-12.0195,-23.3932,-26.1449,-12.7769 RA,A3,Vidyo3_1280x720p_60fps.y4m,v04.0.0,-19.7868,-35.0323,-34.5512,-21.218,-18.7898,-19.1946,-26.7642,-24.179,-19.0344,-25.0497,-19.8654,-34.8412,-34.5625,-20.7751 @@ -2631,8 +2629,8 @@ RA,A3,Vidyo3_1280x720p_60fps.y4m,v10.0.0,-30.7278,-46.642,-44.9804,-32.2143,-28. RA,A3,Vidyo3_1280x720p_60fps.y4m,v11.0.0,-30.2831,-44.5838,-43.5031,-31.631,-26.823,-27.3747,-34.8787,-32.988,-28.9859,-35.1922,-30.4614,-44.5321,-43.556,-31.3279 RA,A3,Vidyo3_1280x720p_60fps.y4m,v12.0.0,-30.7843,-46.6735,-44.7398,-32.24,-27.5671,-28.0948,-35.9188,-34.0986,-29.5843,-36.3393,-30.9669,-46.6371,-44.768,-31.8887 RA,A3,Vidyo3_1280x720p_60fps.y4m,v13.0.0,-30.6028,-44.3026,-42.9441,-31.8659,-31.1513,-27.8834,-34.956,-33.2078,-29.3488,-35.0441,-30.7836,-44.2784,-42.9828,-31.6159 -RA,A3,Vidyo4_1280x720p_60fps.y4m,libaom-v3.12.0,-0.2984,5.1245,9.2479,0.4114,1.9595,1.9004,1.3058,0.6784,0.1255,5.3383,-0.8836,4.8271,9.0235,-0.3296 -RA,A3,Vidyo4_1280x720p_60fps.y4m,libaom-v3.12.0-unconstrained,-10.6257,-11.9356,-10.5029,-10.698,-9.4224,-9.3732,-10.0978,-10.1705,-9.7238,-11.5904,-11.071,-12.1454,-10.5049,-11.0868 +RA,A3,Vidyo3_1280x720p_60fps.y4m,v14.0.0,-30.1056,-43.9477,-42.5446,-31.3805,-30.6214,-27.3219,-34.2505,-32.5293,-28.8466,-34.5664,-30.2832,-43.9312,-42.5831,-31.1204 +RA,A3,Vidyo3_1280x720p_60fps.y4m,v15.0.0,-30.1064,-43.8951,-42.5778,-31.3808,-30.5984,-27.3268,-34.2687,-32.5596,-28.8468,-34.5251,-30.2832,-43.8759,-42.6144,-31.1203 RA,A3,Vidyo4_1280x720p_60fps.y4m,v02.0.0,-1.4795,-10.817,-10.2177,-2.4535,-1.3361,-1.3762,0.2579,-0.0292,-1.8812,-4.8628,-1.4991,-10.6839,-10.0891,-2.0611 RA,A3,Vidyo4_1280x720p_60fps.y4m,v03.0.0,-12.1478,-17.9076,-18.7082,-12.8101,-11.2785,-11.6036,-13.736,-13.202,-12.1748,-14.2017,-12.193,-17.8412,-18.5228,-12.5789 RA,A3,Vidyo4_1280x720p_60fps.y4m,v04.0.0,-19.8221,-28.2298,-28.8168,-20.7706,-18.4834,-18.8235,-24.1961,-22.3979,-19.4886,-22.6625,-19.889,-28.1202,-28.6378,-20.4688 @@ -2645,8 +2643,8 @@ RA,A3,Vidyo4_1280x720p_60fps.y4m,v10.0.0,-29.6899,-39.4483,-36.8274,-30.6102,-27 RA,A3,Vidyo4_1280x720p_60fps.y4m,v11.0.0,-29.9033,-38.8072,-34.905,-30.6488,-27.7066,-28.0417,-32.8069,-31.1221,-29.2084,-32.1948,-30.0374,-38.8167,-34.8607,-30.4897 RA,A3,Vidyo4_1280x720p_60fps.y4m,v12.0.0,-30.414,-38.5194,-36.554,-31.1882,-28.1495,-28.5609,-33.2357,-31.7148,-29.6742,-32.7777,-30.546,-38.5065,-36.4481,-31.017 RA,A3,Vidyo4_1280x720p_60fps.y4m,v13.0.0,-30.2795,-38.1223,-35.3062,-30.9711,-29.3988,-28.3462,-33.1367,-31.6138,-29.5421,-32.3546,-30.4357,-38.084,-35.1625,-30.8553 -RA,A3,WestWindEasy_1280x720p30_420.y4m,libaom-v3.12.0,4.0451,-10.9988,-7.1325,2.8776,3.9043,3.4478,14.7952,16.4216,3.5475,2.5505,4.4377,-10.5083,-6.7398,4.1506 -RA,A3,WestWindEasy_1280x720p30_420.y4m,libaom-v3.12.0-unconstrained,-5.1549,-3.7602,-6.962,-5.1561,-6.5608,-6.2999,-8.1609,-7.3416,-6.2137,-8.2066,-8.3744,-5.2768,-7.6474,-8.2563 +RA,A3,Vidyo4_1280x720p_60fps.y4m,v14.0.0,-29.7706,-37.5425,-34.8128,-30.459,-28.9289,-27.8546,-32.5362,-30.9843,-29.0567,-31.8105,-29.9263,-37.5038,-34.6698,-30.343 +RA,A3,Vidyo4_1280x720p_60fps.y4m,v15.0.0,-29.7581,-37.4701,-34.8073,-30.4436,-28.8775,-27.8397,-32.5537,-30.9908,-29.0588,-31.7727,-29.9141,-37.4301,-34.6647,-30.3286 RA,A3,WestWindEasy_1280x720p30_420.y4m,v02.0.0,-2.3488,-5.0813,3.3074,-2.2679,-2.0752,-2.3615,-2.4835,-1.6611,-2.0492,-6.1742,-2.4385,-4.7245,3.8332,-2.4384 RA,A3,WestWindEasy_1280x720p30_420.y4m,v03.0.0,-6.3965,-21.0675,-9.4271,-7.2736,-5.1784,-5.5489,-7.3588,-5.3065,-5.5618,-11.9875,-6.4707,-20.7717,-9.1968,-6.7657 RA,A3,WestWindEasy_1280x720p30_420.y4m,v04.0.0,-10.3645,-39.0535,-21.4612,-12.4324,-8.2165,-8.7242,-11.2015,-9.3693,-8.9829,-20.7924,-10.4203,-38.9348,-20.8216,-11.0755 @@ -2659,8 +2657,8 @@ RA,A3,WestWindEasy_1280x720p30_420.y4m,v10.0.0,-18.6276,-75.2793,-61.3746,-24.60 RA,A3,WestWindEasy_1280x720p30_420.y4m,v11.0.0,-18.6717,-74.3245,-59.3521,-24.4888,-16.7252,-17.4012,-18.6163,-17.3449,-18.0232,-33.7043,-18.5335,-74.6633,-59.4916,-19.9915 RA,A3,WestWindEasy_1280x720p30_420.y4m,v12.0.0,-19.4322,-75.3078,-59.8455,-25.2881,-17.3336,-18.0966,-19.6488,-18.1602,-18.7142,-34.5773,-19.2891,-75.6454,-59.8742,-20.7542 RA,A3,WestWindEasy_1280x720p30_420.y4m,v13.0.0,-19.5611,-74.5767,-59.401,-25.2881,-20.0839,-18.257,-19.2351,-18.032,-18.879,-33.8895,-19.4287,-74.9116,-59.5323,-20.8718 -RA,A4,BlueSky_360p25_v2.y4m,libaom-v3.12.0,-3.964,-0.8681,6.1562,-3.2538,-3.7301,-5.1583,-11.0937,-10.1046,-0.3542,1.7847,-5.3444,-3.2894,4.35,-4.432 -RA,A4,BlueSky_360p25_v2.y4m,libaom-v3.12.0-unconstrained,-3.5684,21.7478,33.0007,-1.0377,-1.5583,-8.2173,-15.8893,-14.8613,-4.2218,10.7796,-5.8052,18.7753,31.0153,-1.4111 +RA,A3,WestWindEasy_1280x720p30_420.y4m,v14.0.0,-19.4408,-75.2775,-59.2825,-25.2406,-20.0193,-18.1557,-18.8899,-17.7935,-18.7861,-33.7172,-19.3077,-75.5758,-59.427,-20.7612 +RA,A3,WestWindEasy_1280x720p30_420.y4m,v15.0.0,-19.451,-75.3151,-59.337,-25.2572,-19.9904,-18.1647,-19.0925,-17.8902,-18.7662,-33.7388,-19.3163,-75.6261,-59.498,-20.7714 RA,A4,BlueSky_360p25_v2.y4m,v02.0.0,-1.2222,-8.4348,-24.0804,-2.6859,-2.2447,-2.2357,-0.5719,-0.5296,-0.1486,-4.5857,-1.3157,-9.3481,-24.8148,-2.7229 RA,A4,BlueSky_360p25_v2.y4m,v03.0.0,-9.339,-20.8282,-34.1665,-11.126,-10.4321,-10.4723,-11.0621,-10.636,-6.2185,-14.9763,-9.513,-21.6907,-34.855,-11.3805 RA,A4,BlueSky_360p25_v2.y4m,v04.0.0,-23.3181,-32.6917,-52.8927,-25.3025,-24.9824,-24.2059,-27.8236,-26.6045,-19.6267,-29.8059,-23.4311,-33.6075,-53.6224,-25.4848 @@ -2673,8 +2671,8 @@ RA,A4,BlueSky_360p25_v2.y4m,v10.0.0,-36.9345,-47.949,-64.7559,-39.0271,-35.1722, RA,A4,BlueSky_360p25_v2.y4m,v11.0.0,-37.3401,-49.1138,-65.4976,-39.5379,-35.1561,-34.7372,-41.0744,-40.8081,-34.8954,-45.2492,-37.7474,-50.1899,-66.1271,-39.8397 RA,A4,BlueSky_360p25_v2.y4m,v12.0.0,-37.5531,-47.3995,-65.0346,-39.6089,-35.294,-34.9752,-41.2246,-40.9539,-35.1006,-45.0205,-37.9617,-48.5271,-65.6413,-39.8707 RA,A4,BlueSky_360p25_v2.y4m,v13.0.0,-37.7238,-47.2733,-65.4334,-39.7365,-35.5378,-35.199,-41.8981,-41.6823,-35.3523,-45.0689,-38.1638,-48.4446,-66.0403,-40.0568 -RA,A4,RedKayak_360_2997.y4m,libaom-v3.12.0,6.2548,-5.2623,-14.9851,5.2123,2.3917,8.6871,14.3816,13.5087,9.5419,6.4295,9.8923,-4.2759,-14.0914,9.7735 -RA,A4,RedKayak_360_2997.y4m,libaom-v3.12.0-unconstrained,-5.3271,0.2171,8.6717,-4.609,-4.7068,-8.7908,-17.5036,-17.0608,-8.3278,-3.955,-10.8998,-2.9497,6.7622,-10.7017 +RA,A4,BlueSky_360p25_v2.y4m,v14.0.0,-37.3155,-46.9275,-65.2437,-39.3438,-35.1175,-34.7389,-41.1937,-41.0031,-34.9516,-44.6423,-37.765,-48.0992,-65.8628,-39.6625 +RA,A4,BlueSky_360p25_v2.y4m,v15.0.0,-37.314,-46.9312,-65.2412,-39.3425,-35.1194,-34.7428,-41.1879,-40.9975,-34.9549,-44.6422,-37.764,-48.104,-65.8605,-39.6616 RA,A4,RedKayak_360_2997.y4m,v02.0.0,-3.5821,-0.7393,-7.9603,-3.6483,-6.2337,-5.944,-5.5399,-5.2748,-4.4188,-1.7436,-4.0436,-0.4499,-5.9184,-4.0439 RA,A4,RedKayak_360_2997.y4m,v03.0.0,-7.3893,-12.6102,9.1914,-7.0564,-10.3012,-9.6449,-7.5787,-7.1284,-7.8429,-7.6912,-7.8399,-12.3342,10.3207,-7.948 RA,A4,RedKayak_360_2997.y4m,v04.0.0,-9.5688,-17.5744,-21.5396,-10.2703,-12.9104,-12.1031,-10.422,-9.8583,-10.189,-11.608,-10.0409,-17.4182,-17.8571,-10.3073 @@ -2687,8 +2685,8 @@ RA,A4,RedKayak_360_2997.y4m,v10.0.0,-16.7213,-57.8965,-53.4206,-20.2185,-19.1636 RA,A4,RedKayak_360_2997.y4m,v11.0.0,-15.8271,-57.6516,-50.7869,-19.2879,-18.2868,-18.8443,-21.9824,-21.1371,-18.4363,-29.7643,-16.1328,-58.5433,-48.623,-17.3294 RA,A4,RedKayak_360_2997.y4m,v12.0.0,-15.9798,-58.1687,-49.4253,-19.3847,-18.4436,-18.8028,-21.5129,-20.6967,-18.471,-30.0015,-16.251,-59.0964,-47.8822,-17.446 RA,A4,RedKayak_360_2997.y4m,v13.0.0,-16.217,-58.1147,-47.104,-19.4658,-18.6075,-19.1433,-21.9223,-21.1511,-18.7915,-29.7881,-16.5241,-58.9181,-44.9538,-17.7092 -RA,A4,SnowMountain_640x360_2997.y4m,libaom-v3.12.0,1.0385,27.5215,29.4096,2.6261,7.2346,2.1719,-10.1871,-11.3721,6.5712,11.0669,0.7182,27.5076,29.3609,1.9749 -RA,A4,SnowMountain_640x360_2997.y4m,libaom-v3.12.0-unconstrained,-6.9023,-5.9369,-6.4149,-6.7778,-10.0776,-2.1981,0.1373,0.5251,9.193,-5.7036,-6.2803,-5.7559,-6.2181,-6.2074 +RA,A4,RedKayak_360_2997.y4m,v14.0.0,-16.071,-58.0281,-47.1081,-19.3219,-18.5211,-18.9873,-21.7353,-20.9749,-18.631,-29.621,-16.3794,-58.8537,-44.9566,-17.563 +RA,A4,RedKayak_360_2997.y4m,v15.0.0,-16.0702,-58.027,-47.1069,-19.3207,-18.5192,-18.9847,-21.7337,-20.9726,-18.6284,-29.6194,-16.3785,-58.8527,-44.9554,-17.562 RA,A4,SnowMountain_640x360_2997.y4m,v02.0.0,-1.8701,-23.3451,-33.3887,-4.0151,-3.4069,-3.663,-2.6973,-3.6188,-0.3041,-4.2194,-1.9242,-23.3801,-33.5116,-2.4955 RA,A4,SnowMountain_640x360_2997.y4m,v03.0.0,-8.1154,-26.5246,-37.273,-10.0939,-9.2602,-9.6727,-11.2208,-11.3082,-6.7527,-10.3622,-8.18,-26.5621,-37.3806,-8.7607 RA,A4,SnowMountain_640x360_2997.y4m,v04.0.0,-10.8763,-36.1875,-47.2476,-13.5153,-11.9626,-12.4382,-14.8775,-14.5309,-10.0884,-15.3571,-10.9278,-36.2088,-47.3038,-11.7701 @@ -2701,8 +2699,8 @@ RA,A4,SnowMountain_640x360_2997.y4m,v10.0.0,-17.3621,-51.6993,-60.016,-20.8995,- RA,A4,SnowMountain_640x360_2997.y4m,v11.0.0,-17.4348,-55.4042,-62.052,-21.2745,-16.8386,-18.8693,-24.1861,-23.7394,-20.7291,-25.8896,-17.5444,-55.4355,-62.0711,-18.7246 RA,A4,SnowMountain_640x360_2997.y4m,v12.0.0,-17.8388,-54.2247,-60.3185,-21.4732,-17.2252,-19.2776,-25.4497,-24.7832,-21.0707,-25.9754,-17.9494,-54.2486,-60.3581,-19.0935 RA,A4,SnowMountain_640x360_2997.y4m,v13.0.0,-18.0882,-52.569,-60.0465,-21.5623,-17.3888,-19.7104,-25.2642,-24.9822,-21.4744,-25.9074,-18.2012,-52.6292,-60.1036,-19.3361 -RA,A4,SpeedBag_640x360_2997.y4m,libaom-v3.12.0,5.1669,9.688,14.6918,5.7574,5.3716,2.7072,-0.5182,-0.9716,7.1735,11.6605,5.771,8.4834,13.4219,6.3082 -RA,A4,SpeedBag_640x360_2997.y4m,libaom-v3.12.0-unconstrained,3.9304,10.0906,11.4852,4.5743,4.0924,1.7057,-0.8241,-2.0305,5.1494,10.4402,2.9397,9.5104,10.9247,3.7952 +RA,A4,SnowMountain_640x360_2997.y4m,v14.0.0,-17.3468,-52.1806,-59.6604,-20.853,-16.7491,-18.9998,-24.0342,-23.7639,-20.7177,-25.2005,-17.4571,-52.2392,-59.7167,-18.5959 +RA,A4,SnowMountain_640x360_2997.y4m,v15.0.0,-17.3408,-52.1773,-59.6576,-20.8472,-16.7438,-18.994,-24.0244,-23.7542,-20.7115,-25.1947,-17.4511,-52.2358,-59.7138,-18.59 RA,A4,SpeedBag_640x360_2997.y4m,v02.0.0,0.5613,-1.167,-3.5101,0.263,-1.1402,0.1967,-0.477,-0.6258,2.5566,2.7472,0.1636,-1.5845,-3.1627,-0.0277 RA,A4,SpeedBag_640x360_2997.y4m,v03.0.0,-8.0399,-6.9534,-11.0998,-8.1552,-9.9852,-8.2339,-11.0895,-11.0082,-5.3708,-4.9612,-8.4562,-7.4035,-11.491,-8.4991 RA,A4,SpeedBag_640x360_2997.y4m,v04.0.0,-18.7499,-18.4705,-24.6405,-19.0459,-21.0868,-19.0331,-22.4608,-21.9485,-16.0495,-16.6672,-19.1012,-18.9077,-24.6769,-19.313 @@ -2715,8 +2713,8 @@ RA,A4,SpeedBag_640x360_2997.y4m,v10.0.0,-32.1304,-33.1093,-39.8589,-32.5896,-32. RA,A4,SpeedBag_640x360_2997.y4m,v11.0.0,-32.4004,-33.6944,-39.5709,-32.8463,-32.3899,-30.5683,-35.3216,-34.9425,-31.0671,-33.5126,-33.1015,-34.4633,-40.1863,-33.5059 RA,A4,SpeedBag_640x360_2997.y4m,v12.0.0,-33.7632,-34.3576,-40.6566,-34.1504,-33.57,-31.648,-37.2704,-36.7849,-32.3787,-34.9238,-34.3652,-35.0917,-40.8558,-34.7142 RA,A4,SpeedBag_640x360_2997.y4m,v13.0.0,-33.9532,-35.1318,-39.2646,-34.2907,-33.9829,-31.9856,-37.1245,-36.8646,-32.5769,-35.1596,-34.6052,-35.8918,-39.7599,-34.9409 -RA,A4,Stockholm_640x360_5994.y4m,libaom-v3.12.0,-1.9634,14.7274,16.831,-0.2658,-1.0939,-2.1291,-3.43,-4.8499,3.5415,6.1894,-2.4976,14.3625,16.5561,-0.7573 -RA,A4,Stockholm_640x360_5994.y4m,libaom-v3.12.0-unconstrained,-9.2731,-3.1156,-1.0096,-8.5528,-9.7764,-10.8221,-10.3475,-11.7572,-5.6623,-6.2702,-9.7786,-3.3494,-1.1948,-9.0206 +RA,A4,SpeedBag_640x360_2997.y4m,v14.0.0,-32.7891,-33.9673,-38.0317,-33.1228,-32.836,-30.8376,-35.6052,-35.3733,-31.4577,-33.884,-33.449,-34.7607,-38.5433,-33.7807 +RA,A4,SpeedBag_640x360_2997.y4m,v15.0.0,-32.7821,-33.9586,-38.0236,-33.1156,-32.8228,-30.8257,-35.5811,-35.3581,-31.4472,-33.8737,-33.4414,-34.7522,-38.5362,-33.773 RA,A4,Stockholm_640x360_5994.y4m,v02.0.0,-0.7396,-18.2455,-12.7204,-2.3014,-1.9592,-1.8668,-0.2876,-0.325,1.1523,-5.6812,-0.8024,-18.3904,-12.7916,-1.8313 RA,A4,Stockholm_640x360_5994.y4m,v03.0.0,-12.8485,-27.5716,-21.5222,-14.0928,-14.292,-14.5889,-19.952,-18.8979,-10.2925,-16.9586,-12.9283,-27.6594,-21.5828,-13.7843 RA,A4,Stockholm_640x360_5994.y4m,v04.0.0,-19.5611,-40.241,-33.9949,-21.4954,-21.017,-20.6506,-25.331,-24.5416,-18.0071,-25.6368,-19.6369,-40.3843,-34.0739,-20.9674 @@ -2729,8 +2727,8 @@ RA,A4,Stockholm_640x360_5994.y4m,v10.0.0,-32.4667,-52.5835,-42.8566,-34.1676,-31 RA,A4,Stockholm_640x360_5994.y4m,v11.0.0,-32.3806,-52.2632,-42.0612,-34.0077,-30.9387,-31.0849,-35.9532,-36.4539,-32.1514,-38.5254,-32.5551,-52.3655,-42.157,-33.6566 RA,A4,Stockholm_640x360_5994.y4m,v12.0.0,-32.9106,-51.3464,-41.7094,-34.4122,-31.5771,-31.6349,-36.8931,-37.3355,-32.682,-38.7998,-33.0913,-51.4521,-41.8101,-34.1162 RA,A4,Stockholm_640x360_5994.y4m,v13.0.0,-33.1486,-52.3035,-41.9804,-34.7084,-31.8217,-31.987,-37.5865,-37.7891,-33.0963,-39.0558,-33.3244,-52.3869,-42.0688,-34.3864 -RA,A4,TouchdownPass_640x360_2997.y4m,libaom-v3.12.0,5.7437,3.3707,-1.7217,5.2857,16.9128,16.551,-1.1622,-2.6779,9.5618,14.7535,5.4973,2.8206,-2.3235,5.3029 -RA,A4,TouchdownPass_640x360_2997.y4m,libaom-v3.12.0-unconstrained,-5.2328,21.5933,17.5624,-3.1573,-4.4249,-6.193,-12.7507,-12.9946,-3.213,3.7313,-5.2366,21.7531,17.5,-4.0818 +RA,A4,Stockholm_640x360_5994.y4m,v14.0.0,-32.2307,-51.8737,-41.4108,-33.8368,-30.9192,-30.9877,-36.1885,-36.45,-32.2577,-38.2271,-32.4064,-51.9673,-41.5045,-33.4975 +RA,A4,Stockholm_640x360_5994.y4m,v15.0.0,-32.2237,-51.8693,-41.4055,-33.83,-30.9123,-30.9799,-36.1771,-36.439,-32.2509,-38.2206,-32.3994,-51.9629,-41.4992,-33.4906 RA,A4,TouchdownPass_640x360_2997.y4m,v02.0.0,-0.4252,-8.5429,-7.8183,-1.1838,0.2017,0.3573,-1.7314,-1.6957,1.3296,-0.4683,-0.5253,-8.6532,-7.8963,-0.8179 RA,A4,TouchdownPass_640x360_2997.y4m,v03.0.0,-8.3611,-19.6326,-14.5377,-9.1893,-5.5489,-6.0867,-13.6503,-13.5254,-6.0632,-8.8215,-8.4207,-19.5974,-14.4862,-8.7591 RA,A4,TouchdownPass_640x360_2997.y4m,v04.0.0,-14.5797,-26.1018,-21.0366,-15.4468,-11.2666,-11.6725,-19.6813,-19.8746,-11.7332,-15.4311,-14.6269,-26.1934,-21.0289,-14.9932 @@ -2743,8 +2741,8 @@ RA,A4,TouchdownPass_640x360_2997.y4m,v10.0.0,-25.3521,-40.6885,-27.6848,-26.2895 RA,A4,TouchdownPass_640x360_2997.y4m,v11.0.0,-25.3429,-37.2089,-30.3473,-26.2346,-16.1256,-17.0572,-30.5268,-30.8535,-22.9838,-26.4302,-25.6388,-37.3662,-30.5321,-26.0401 RA,A4,TouchdownPass_640x360_2997.y4m,v12.0.0,-26.0252,-38.2048,-29.9017,-26.8911,-16.4682,-17.2613,-31.6238,-32.1326,-23.5651,-27.5375,-26.3057,-38.3968,-30.0565,-26.6893 RA,A4,TouchdownPass_640x360_2997.y4m,v13.0.0,-26.1443,-39.0414,-31.1408,-27.0633,-16.6278,-17.4954,-31.906,-32.3206,-23.5793,-27.1804,-26.448,-39.126,-31.2987,-26.8563 -RA,A5,FourPeople_480x270_60.y4m,libaom-v3.12.0,6.8264,16.5237,16.1316,7.6465,7.8514,6.2687,0.8114,1.9046,2.0966,12.1287,6.1772,16.3018,15.784,7.2062 -RA,A5,FourPeople_480x270_60.y4m,libaom-v3.12.0-unconstrained,-1.8399,1.6361,4.0297,-1.4041,-0.575,-2.5435,-7.7113,-6.7851,-3.2822,-1.0734,-2.2381,1.6222,4.0032,-1.7266 +RA,A4,TouchdownPass_640x360_2997.y4m,v14.0.0,-25.4706,-38.3181,-30.2456,-26.3725,-16.1809,-16.9688,-31.0467,-31.4259,-23.0235,-26.5204,-25.7804,-38.3801,-30.4034,-26.1791 +RA,A4,TouchdownPass_640x360_2997.y4m,v15.0.0,-25.4656,-38.3133,-30.2404,-26.3675,-16.1779,-16.9649,-31.0391,-31.4185,-23.0188,-26.5158,-25.7754,-38.3754,-30.3982,-26.1741 RA,A5,FourPeople_480x270_60.y4m,v02.0.0,-0.2679,-4.6159,-5.7013,-0.7559,-1.2574,-1.2233,-1.4689,-0.1262,-1.5899,-3.5301,-0.3523,-4.6214,-5.6898,-0.6752 RA,A5,FourPeople_480x270_60.y4m,v03.0.0,-10.8179,-12.8982,-13.4758,-11.0565,-11.9269,-11.6228,-14.9704,-13.4318,-11.8087,-13.5032,-10.9112,-12.9014,-13.4189,-11.0759 RA,A5,FourPeople_480x270_60.y4m,v04.0.0,-14.8743,-21.4418,-22.3653,-15.57,-15.8094,-15.7357,-19.222,-17.4986,-16.3348,-19.1199,-14.9566,-21.4432,-22.3641,-15.5232 @@ -2757,8 +2755,8 @@ RA,A5,FourPeople_480x270_60.y4m,v10.0.0,-24.6133,-30.0276,-29.7389,-25.1296,-25. RA,A5,FourPeople_480x270_60.y4m,v11.0.0,-24.7057,-29.3456,-28.8785,-25.1369,-25.1929,-25.3527,-31.2394,-29.3128,-26.4075,-28.1503,-24.8777,-29.3689,-28.9029,-25.278 RA,A5,FourPeople_480x270_60.y4m,v12.0.0,-25.6051,-29.3003,-29.3987,-25.9793,-25.903,-26.1332,-33.0493,-31.1032,-27.1939,-28.7683,-25.7824,-29.3194,-29.4224,-26.1414 RA,A5,FourPeople_480x270_60.y4m,v13.0.0,-25.3415,-29.1558,-29.5295,-25.7326,-25.7224,-26.1786,-32.1914,-30.1453,-27.0449,-28.2033,-25.5267,-29.1645,-29.5418,-25.9027 -RA,A5,ParkJoy_480x270_50.y4m,libaom-v3.12.0,-1.188,-5.5552,-2.6209,-1.437,-0.8375,-0.0462,-2.297,-2.5813,-0.9989,-1.962,-2.4056,-6.8461,-3.5873,-2.6134 -RA,A5,ParkJoy_480x270_50.y4m,libaom-v3.12.0-unconstrained,-8.5192,32.6881,52.3868,-5.6799,-3.1314,-4.8966,-17.7872,-17.2879,-6.7529,2.1708,-12.3552,30.5148,51.474,-9.7109 +RA,A5,FourPeople_480x270_60.y4m,v14.0.0,-24.2836,-28.3591,-28.6225,-24.6948,-24.6527,-25.0512,-30.5003,-28.4561,-25.9014,-27.1851,-24.4605,-28.3713,-28.6369,-24.8469 +RA,A5,FourPeople_480x270_60.y4m,v15.0.0,-24.2841,-28.3609,-28.6235,-24.6955,-24.6544,-25.052,-30.4993,-28.4548,-25.8992,-27.1873,-24.4609,-28.3732,-28.6381,-24.8475 RA,A5,ParkJoy_480x270_50.y4m,v02.0.0,-0.6164,-6.8877,-4.4361,-1.0386,-0.9022,-0.9879,-0.0704,-0.1651,-1.2849,-1.6826,-1.0847,-7.4628,-4.542,-1.3484 RA,A5,ParkJoy_480x270_50.y4m,v03.0.0,-4.6907,-11.7194,-8.626,-5.1468,-5.2729,-6.1142,-8.5664,-8.2115,-5.4378,-6.1798,-5.184,-12.4333,-8.6757,-5.5239 RA,A5,ParkJoy_480x270_50.y4m,v04.0.0,-8.4242,-21.433,-19.7441,-9.4137,-9.4275,-10.4958,-14.1771,-13.839,-9.6914,-11.5134,-8.8834,-21.9756,-19.5608,-9.5442 @@ -2771,8 +2769,8 @@ RA,A5,ParkJoy_480x270_50.y4m,v10.0.0,-16.4748,-27.2151,-26.2027,-17.3051,-15.441 RA,A5,ParkJoy_480x270_50.y4m,v11.0.0,-17.9078,-26.7938,-26.1943,-18.6021,-16.3548,-18.1475,-25.1452,-25.3157,-18.9401,-20.9874,-18.394,-27.183,-26.1196,-18.8459 RA,A5,ParkJoy_480x270_50.y4m,v12.0.0,-18.5837,-28.0363,-26.0406,-19.2747,-16.9564,-19.0012,-26.1718,-26.4704,-19.7759,-21.917,-19.0494,-28.4109,-25.8544,-19.4978 RA,A5,ParkJoy_480x270_50.y4m,v13.0.0,-18.5887,-27.5729,-25.1844,-19.2246,-17.0047,-18.9019,-26.3349,-26.5316,-19.809,-21.1688,-19.0753,-27.9831,-25.1855,-19.505 -RA,A5,SparksElevator_480x270p_5994_10bit.y4m,libaom-v3.12.0,3.178,3.9994,1.1215,3.1486,11.7954,8.1353,-1.2312,-2.1549,3.4052,4.5429,3.1775,3.0211,0.006,3.173 -RA,A5,SparksElevator_480x270p_5994_10bit.y4m,libaom-v3.12.0-unconstrained,-4.1228,15.0184,8.6523,-2.6597,-3.1457,-6.4807,-15.6409,-15.7844,-7.1037,-1.7384,-4.7313,14.5816,8.2411,-4.1407 +RA,A5,ParkJoy_480x270_50.y4m,v14.0.0,-18.2333,-27.2377,-24.7855,-18.8687,-16.7101,-18.4935,-25.6834,-25.9009,-19.4161,-20.794,-18.7208,-27.6493,-24.7805,-19.1465 +RA,A5,ParkJoy_480x270_50.y4m,v15.0.0,-18.2438,-27.2226,-24.5839,-18.8709,-16.743,-18.5442,-25.6688,-25.9099,-19.4112,-20.7644,-18.729,-27.6259,-24.5386,-19.1479 RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v02.0.0,-0.2907,-14.3981,-1.3151,-1.0172,0.2755,-0.1063,-0.1887,-0.2886,-0.9547,-2.5228,-0.5488,-14.1423,-1.2381,-0.7057 RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v03.0.0,-4.8273,-15.8699,-3.079,-5.2641,-3.6224,-4.3527,-9.2147,-8.7712,-5.1394,-7.0568,-5.0717,-15.573,-3.0561,-5.1612 RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v04.0.0,-11.7408,-34.7829,-15.3855,-13.1377,-10.5422,-10.9841,-15.7797,-15.3825,-12.0578,-16.0147,-12.0184,-34.6341,-15.4184,-12.3923 @@ -2785,8 +2783,8 @@ RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v10.0.0,-24.8013,-37.5881,-18.36,-2 RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v11.0.0,-25.8765,-35.464,-19.37,-26.0145,-21.5892,-23.8818,-31.9083,-31.8144,-25.5509,-27.1319,-26.3382,-35.6321,-19.6048,-26.3273 RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v12.0.0,-26.8409,-36.4041,-19.3307,-26.9375,-22.5986,-24.7758,-33.319,-33.1158,-26.362,-27.5676,-27.3444,-36.4808,-19.5691,-27.3131 RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v13.0.0,-27.1026,-38.3193,-20.1189,-27.3188,-22.7521,-24.8493,-34.1091,-33.6332,-26.6648,-28.2377,-27.5839,-38.2754,-20.2945,-27.5733 -RA,A5,Vertical_Bayshore_270x480_2997.y4m,libaom-v3.12.0,-0.5784,-7.957,-8.0114,-1.0861,-1.4486,-0.6893,-3.0717,-3.9268,-0.3623,-3.0071,-1.0708,-10.043,-9.734,-1.2049 -RA,A5,Vertical_Bayshore_270x480_2997.y4m,libaom-v3.12.0-unconstrained,-6.6042,-6.6528,-0.1753,-6.1689,-4.1603,-7.3698,-21.3496,-21.5917,-10.3045,-8.3506,-8.9581,-6.8374,-0.8658,-8.777 +RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v14.0.0,-26.2341,-37.474,-18.7131,-26.426,-21.8819,-24.0529,-33.0147,-32.4144,-25.9018,-27.2668,-26.727,-37.4125,-18.8729,-26.7034 +RA,A5,SparksElevator_480x270p_5994_10bit.y4m,v15.0.0,-26.2341,-37.474,-18.7131,-26.426,-21.8819,-24.0529,-33.0147,-32.4144,-25.9018,-27.2668,-26.727,-37.4125,-18.8729,-26.7034 RA,A5,Vertical_Bayshore_270x480_2997.y4m,v02.0.0,-4.2836,-18.1514,-13.4504,-5.561,-3.8924,-3.8823,-5.4497,-5.7058,-4.4677,-7.5088,-4.591,-17.5564,-12.9485,-4.838 RA,A5,Vertical_Bayshore_270x480_2997.y4m,v03.0.0,-14.526,-31.0526,-20.9348,-15.7896,-11.9634,-12.976,-24.6984,-23.4629,-14.3531,-16.8011,-15.0563,-29.247,-19.1331,-15.2962 RA,A5,Vertical_Bayshore_270x480_2997.y4m,v04.0.0,-23.1947,-38.9863,-30.717,-24.5099,-21.7217,-22.3797,-33.2442,-31.8069,-22.7722,-25.4223,-23.7322,-37.5564,-29.6115,-23.998 @@ -2799,8 +2797,8 @@ RA,A5,Vertical_Bayshore_270x480_2997.y4m,v10.0.0,-41.1905,-54.0774,-48.9994,-42. RA,A5,Vertical_Bayshore_270x480_2997.y4m,v11.0.0,-42.4863,-55.581,-46.9445,-43.4447,-41.6729,-42.2708,-50.0195,-48.6262,-41.9513,-44.7903,-43.3219,-56.1092,-47.7114,-43.5472 RA,A5,Vertical_Bayshore_270x480_2997.y4m,v12.0.0,-43.2179,-56.6638,-46.0237,-44.1002,-42.0012,-42.6259,-52.2083,-50.3285,-42.5784,-45.2981,-44.0723,-57.0049,-46.8653,-44.2779 RA,A5,Vertical_Bayshore_270x480_2997.y4m,v13.0.0,-43.0855,-53.6439,-45.063,-43.8149,-42.2415,-42.8491,-51.6426,-49.8534,-42.4504,-44.7327,-43.9743,-54.4731,-45.5591,-44.1478 -RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,libaom-v3.12.0,1.5948,-9.8083,-7.9843,0.6984,-3.2896,-4.6097,1.8381,1.8412,1.4499,3.239,1.9941,-10.2726,-8.8417,1.5789 -RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,libaom-v3.12.0-unconstrained,-12.5055,9.5457,16.2494,-10.5019,-15.7233,-16.7404,-19.8603,-19.6138,-13.0376,-6.9307,-14.8369,7.4332,13.4613,-13.7737 +RA,A5,Vertical_Bayshore_270x480_2997.y4m,v14.0.0,-42.2381,-52.3457,-43.9405,-42.9235,-41.605,-42.0331,-48.1003,-46.2589,-41.592,-43.5623,-43.1039,-53.146,-44.4061,-43.2662 +RA,A5,Vertical_Bayshore_270x480_2997.y4m,v15.0.0,-42.2567,-52.5666,-44.1305,-42.9661,-41.6265,-42.1892,-48.0881,-46.2565,-41.6785,-43.7276,-43.1195,-53.3488,-44.6041,-43.2878 RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v02.0.0,-1.2124,-8.6796,-8.8009,-1.9644,0.6348,-1.1673,-1.9527,-1.7336,-0.2596,1.1578,-1.4282,-9.2255,-9.8452,-1.7452 RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v03.0.0,-5.888,-11.9411,-17.2498,-6.7268,-4.5463,-6.2349,-11.6329,-10.7328,-4.4473,-3.9688,-6.162,-12.3755,-18.0943,-6.5423 RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v04.0.0,-9.9542,-24.2675,-25.6223,-11.4591,-9.3876,-11.0432,-17.5571,-16.2645,-8.456,-10.2631,-10.2177,-24.7298,-26.4441,-10.9341 @@ -2813,8 +2811,8 @@ RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v10.0.0,-18.724,-45.096,-44.5179, RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v11.0.0,-19.2591,-45.3396,-44.1013,-22.0105,-18.3364,-18.8522,-27.8147,-26.5293,-18.7646,-27.5227,-19.6712,-45.8661,-44.5033,-20.893 RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v12.0.0,-19.3809,-46.5832,-44.8584,-22.2406,-18.1393,-18.7091,-27.6616,-26.319,-18.7208,-27.8776,-19.7982,-47.1459,-45.4086,-21.0703 RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v13.0.0,-19.4451,-45.2548,-44.7539,-22.2211,-19.6786,-18.857,-27.6028,-26.387,-18.8137,-27.4719,-19.8774,-45.802,-45.2851,-21.1085 -RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,libaom-v3.12.0,-0.0659,-1.4847,-0.6226,-0.1076,-0.8239,-1.8882,-1.0129,-2.0832,1.611,0.9205,-0.3821,-2.4816,-1.3919,-0.3639 -RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,libaom-v3.12.0-unconstrained,-7.8119,18.8957,13.2493,-5.3811,-11.3819,-8.2262,-22.7773,-21.3004,-7.7542,-2.0556,-10.7625,17.5985,12.6157,-9.5551 +RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v14.0.0,-19.3565,-45.1768,-44.6586,-22.1313,-19.5836,-18.7524,-27.3945,-26.1828,-18.7332,-27.3663,-19.7889,-45.7246,-45.1909,-21.0196 +RA,B1,CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m,v15.0.0,-19.3706,-45.4217,-44.5413,-22.1528,-19.6509,-18.7863,-27.5775,-26.295,-18.7476,-27.3876,-19.8009,-45.9713,-45.0932,-21.0387 RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v02.0.0,-2.5838,-12.6841,-10.3053,-3.5687,-2.3308,-2.5982,-4.6953,-4.1885,-1.5121,-3.2028,-2.8158,-12.8418,-10.2762,-3.1667 RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v03.0.0,-9.4879,-16.7316,-17.3472,-10.3035,-9.8947,-9.685,-20.4932,-17.435,-8.0477,-10.3366,-9.816,-16.8732,-17.3229,-10.1165 RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v04.0.0,-18.385,-28.4748,-29.4558,-19.5329,-20.8599,-21.2261,-30.5376,-27.1428,-16.816,-20.5713,-18.7932,-28.5937,-29.4444,-19.2185 @@ -2827,8 +2825,8 @@ RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v10.0.0,-28.9268,-44.3817,-36.8499 RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v11.0.0,-29.2822,-43.5717,-36.3158,-30.4758,-32.3971,-32.8955,-39.8786,-37.5639,-29.3744,-33.3631,-29.9753,-43.9364,-36.4839,-30.476 RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v12.0.0,-29.2932,-43.8618,-36.8763,-30.529,-31.9892,-32.2719,-39.8388,-37.6471,-29.2951,-33.4511,-29.9843,-44.2277,-37.0429,-30.4975 RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v13.0.0,-29.3891,-42.8217,-36.1099,-30.5096,-31.0622,-32.5734,-40.2025,-37.9527,-29.4057,-32.9897,-30.0818,-43.1752,-36.281,-30.5555 -RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,libaom-v3.12.0,7.0908,3.09,1.1946,6.5223,2.4698,3.2802,1.3561,0.5077,9.1213,13.0779,7.3632,3.9676,3.5843,6.3622 -RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,libaom-v3.12.0-unconstrained,-11.681,-7.2076,-6.3905,-11.1422,-16.5111,-16.3065,-16.3264,-16.548,-7.8248,-13.3055,-7.738,-2.9134,-0.3219,-6.0714 +RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v14.0.0,-29.3256,-42.7003,-35.758,-30.4275,-30.9955,-32.5058,-39.9819,-37.7743,-29.3497,-32.8979,-30.016,-43.0514,-35.9123,-30.4841 +RA,B1,EuroTruckSimulator2_1920x1080p60_v2.y4m,v15.0.0,-29.3397,-42.6897,-35.752,-30.4388,-31.0436,-32.545,-39.9699,-37.7663,-29.3734,-32.9162,-30.0312,-43.0392,-35.9095,-30.4981 RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v02.0.0,-18.6368,-26.5716,-30.464,-19.8256,-16.1243,-16.6679,-22.8177,-21.3676,-15.6566,-17.2517,-22.3769,-31.3862,0.0,-25.2988 RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v03.0.0,-8.8399,-6.6608,-5.9501,-8.5581,-7.8386,-8.8916,-7.3939,-7.6051,-5.0952,-8.3876,-8.6637,-6.6418,-5.2713,-7.98 RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v04.0.0,-15.7235,-19.1223,-17.9766,-16.0476,-15.8256,-16.3496,-15.8671,-15.8095,-12.8732,-18.5533,-15.0769,-17.9911,-15.2072,-15.5566 @@ -2841,8 +2839,8 @@ RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v10.0.0,-27.34,-32.5781,-32.0715,-27 RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v11.0.0,-26.1363,-32.7582,-32.0158,-26.8668,-25.6896,-25.6312,-30.632,-28.9784,-26.3948,-36.2219,-25.6164,-30.1946,-28.1061,-26.5682 RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v12.0.0,-26.4048,-32.6104,-32.0419,-27.0954,-25.7408,-25.8166,-30.4834,-29.037,-26.666,-35.6163,-25.8934,-30.1917,-28.2893,-26.7936 RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v13.0.0,-26.4501,-32.6977,-31.6414,-27.1171,-27.5339,-25.8216,-30.768,-29.0332,-26.5883,-35.6072,-25.8952,-30.2516,-28.0792,-26.777 -RA,B1,Life_1080p30_v2.y4m,libaom-v3.12.0,9.4877,7.8732,4.6861,9.106,12.6248,14.8151,-0.5259,-1.1109,9.334,17.2552,9.49,7.699,4.2587,9.2575 -RA,B1,Life_1080p30_v2.y4m,libaom-v3.12.0-unconstrained,-5.3776,4.781,1.3444,-4.4145,-10.9911,-10.3254,-11.2767,-11.1752,-3.4653,-2.3256,-5.0036,4.7658,2.1767,-4.2495 +RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v14.0.0,-26.4142,-32.6144,-31.5491,-27.0746,-27.4736,-25.8028,-30.8334,-29.0729,-26.5194,-35.603,-25.8639,-30.2159,-27.9799,-26.7362 +RA,B1,GlassHalf_1920x1080p_24p_8bit_420.y4m,v15.0.0,-26.4548,-32.7406,-31.6579,-27.1249,-27.5163,-25.8867,-30.6404,-29.1108,-26.6093,-35.6491,-25.8963,-30.324,-28.0634,-26.7863 RA,B1,Life_1080p30_v2.y4m,v02.0.0,-1.4009,-4.973,-1.4749,-1.6295,-0.8403,-0.979,-2.5718,-2.5211,0.2138,-0.0513,-1.406,-4.7522,-1.3361,-1.5331 RA,B1,Life_1080p30_v2.y4m,v03.0.0,-11.0241,-11.1835,-8.5136,-10.8934,-9.4508,-9.0814,-18.3554,-16.3136,-8.6833,-9.132,-11.0926,-11.0039,-8.4747,-10.9796 RA,B1,Life_1080p30_v2.y4m,v04.0.0,-18.0171,-24.2858,-21.3202,-18.6077,-16.4343,-16.2083,-26.1982,-24.1467,-15.8152,-18.9574,-18.1975,-24.0754,-21.3255,-18.6032 @@ -2855,8 +2853,8 @@ RA,B1,Life_1080p30_v2.y4m,v10.0.0,-27.9163,-37.5263,-32.7632,-28.8348,-23.1697,- RA,B1,Life_1080p30_v2.y4m,v11.0.0,-27.4896,-37.438,-32.4593,-28.4475,-22.2266,-21.353,-34.4531,-33.2346,-26.9755,-30.8553,-27.8887,-37.3933,-32.7506,-28.544 RA,B1,Life_1080p30_v2.y4m,v12.0.0,-27.8259,-37.4352,-32.6808,-28.75,-22.3932,-21.5749,-34.671,-33.3969,-27.2671,-30.8186,-28.2421,-37.4261,-32.974,-28.8749 RA,B1,Life_1080p30_v2.y4m,v13.0.0,-27.8027,-37.7523,-32.2795,-28.7287,-20.0308,-21.4945,-34.9849,-33.5929,-27.2222,-31.042,-28.2157,-37.7396,-32.5981,-28.8489 -RA,B1,MINECRAFT_1080p_60_8bit.y4m,libaom-v3.12.0,2.4543,3.4698,-2.4152,2.2973,-0.2532,-1.3106,5.5115,4.9857,2.6283,2.9867,2.8571,2.89,-3.4666,2.9097 -RA,B1,MINECRAFT_1080p_60_8bit.y4m,libaom-v3.12.0-unconstrained,-2.3906,27.7785,18.3632,-0.4005,-6.2719,-4.5828,-12.0536,-11.6068,-1.8456,7.7018,-6.1802,26.2779,16.5769,-4.8051 +RA,B1,Life_1080p30_v2.y4m,v14.0.0,-27.7159,-37.589,-32.1514,-28.6312,-19.9546,-21.4068,-34.7573,-33.411,-27.1138,-31.0102,-28.1313,-37.5866,-32.4838,-28.7576 +RA,B1,Life_1080p30_v2.y4m,v15.0.0,-27.6815,-37.5591,-32.1435,-28.6,-19.9186,-21.3682,-34.7421,-33.3986,-27.0862,-30.9777,-28.0993,-37.5568,-32.4689,-28.7277 RA,B1,MINECRAFT_1080p_60_8bit.y4m,v02.0.0,-0.2333,-6.7328,-1.2754,-0.5753,0.2961,0.1566,-1.714,-1.5835,1.1096,-0.5763,-0.5565,-6.9268,-1.4407,-0.7726 RA,B1,MINECRAFT_1080p_60_8bit.y4m,v03.0.0,-4.08,-7.7864,-3.1102,-4.1994,-3.8648,-3.7121,-6.4772,-6.1911,-2.6969,-2.9412,-4.4639,-7.6243,-3.2369,-4.5682 RA,B1,MINECRAFT_1080p_60_8bit.y4m,v04.0.0,-13.7561,-29.7722,-19.9091,-14.8224,-14.7603,-14.7544,-18.8616,-18.3116,-12.9286,-16.2746,-14.3389,-29.65,-19.8524,-15.0111 @@ -2869,8 +2867,8 @@ RA,B1,MINECRAFT_1080p_60_8bit.y4m,v10.0.0,-24.4965,-53.9796,-35.9597,-26.6966,-2 RA,B1,MINECRAFT_1080p_60_8bit.y4m,v11.0.0,-24.9725,-54.0463,-35.8177,-27.1168,-26.5512,-26.148,-34.6368,-33.1777,-26.2483,-34.4077,-25.6494,-54.7758,-36.2667,-27.0091 RA,B1,MINECRAFT_1080p_60_8bit.y4m,v12.0.0,-25.5357,-54.3993,-36.1376,-27.6387,-26.9544,-26.5699,-35.1169,-33.7829,-26.7764,-34.7805,-26.2307,-55.2417,-36.5644,-27.557 RA,B1,MINECRAFT_1080p_60_8bit.y4m,v13.0.0,-25.4222,-54.4291,-36.1065,-27.5352,-24.143,-26.4852,-35.0569,-33.7571,-26.6557,-34.6636,-26.1433,-55.2403,-36.5699,-27.4694 -RA,B1,STARCRAFT_1080p60.y4m,libaom-v3.12.0,0.8068,9.1932,16.5644,1.9451,7.3695,6.561,-2.0605,-2.7647,8.6518,27.3045,0.4955,8.6575,16.4305,1.3391 -RA,B1,STARCRAFT_1080p60.y4m,libaom-v3.12.0-unconstrained,-9.7823,0.3625,2.8985,-8.7025,-8.3191,-8.1281,-15.4386,-15.6939,-1.9197,8.8785,-8.2009,1.904,3.9704,-7.4032 +RA,B1,MINECRAFT_1080p_60_8bit.y4m,v14.0.0,-25.4132,-54.3953,-36.0639,-27.5243,-24.1769,-26.4521,-34.9003,-33.5408,-26.633,-34.6394,-26.1277,-55.222,-36.4967,-27.4519 +RA,B1,MINECRAFT_1080p_60_8bit.y4m,v15.0.0,-25.479,-54.319,-36.1546,-27.5835,-24.2397,-26.5221,-34.7764,-33.4535,-26.6884,-34.7142,-26.1781,-55.0927,-36.5874,-27.4997 RA,B1,STARCRAFT_1080p60.y4m,v02.0.0,-2.29,-9.4009,-12.337,-3.302,-4.8226,-5.6049,-2.901,-2.8282,-1.1668,-1.9422,-2.4299,-9.4151,-12.3525,-2.9654 RA,B1,STARCRAFT_1080p60.y4m,v03.0.0,-6.0758,-12.7553,-15.152,-7.0089,-7.4476,-8.7996,-5.3326,-5.0937,-4.2777,-6.3775,-6.2757,-12.9055,-15.188,-6.7825 RA,B1,STARCRAFT_1080p60.y4m,v04.0.0,-12.1518,-24.3422,-27.6507,-13.8134,-13.6714,-15.2162,-11.8883,-11.7196,-10.4784,-16.0796,-12.5289,-24.4217,-27.6616,-13.465 @@ -2883,8 +2881,8 @@ RA,B1,STARCRAFT_1080p60.y4m,v10.0.0,-21.9357,-33.8382,-37.5698,-23.6102,-21.7462 RA,B1,STARCRAFT_1080p60.y4m,v11.0.0,-22.4154,-32.8829,-36.18,-23.8786,-21.7912,-22.9481,-23.0573,-22.8564,-23.0299,-35.1639,-23.0902,-33.0783,-36.2609,-23.9391 RA,B1,STARCRAFT_1080p60.y4m,v12.0.0,-23.3485,-33.4531,-36.5923,-24.7543,-22.5626,-23.7503,-24.1403,-23.9415,-23.8178,-36.6532,-24.0275,-33.6539,-36.6339,-24.8433 RA,B1,STARCRAFT_1080p60.y4m,v13.0.0,-23.442,-32.9156,-36.5142,-24.7982,-24.6549,-23.862,-24.1867,-24.0588,-23.9182,-35.8317,-24.1214,-33.1184,-36.581,-24.9093 -RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,libaom-v3.12.0,0.6658,-16.6514,-21.3944,-0.6927,-1.095,-1.9896,4.7611,3.8894,0.1938,-2.1817,2.2152,-19.7416,-24.7639,1.8517 -RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,-8.7013,10.3685,0.6343,-7.6684,-14.1284,-12.1765,-22.2628,-22.0074,-10.9577,-7.8158,-11.1351,9.237,-0.4274,-10.7679 +RA,B1,STARCRAFT_1080p60.y4m,v14.0.0,-23.3088,-32.9857,-36.3999,-24.6785,-24.5341,-23.715,-23.9323,-23.8272,-23.7565,-35.7507,-23.9867,-33.1951,-36.4632,-24.7842 +RA,B1,STARCRAFT_1080p60.y4m,v15.0.0,-23.3023,-32.9535,-36.3847,-24.6699,-24.5126,-23.6894,-23.9087,-23.821,-23.7424,-35.7278,-23.985,-33.162,-36.4477,-24.7806 RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v02.0.0,-1.7212,-3.4558,-3.149,-1.8478,-2.7634,-2.9845,-3.1007,-2.9629,-1.6493,0.3653,-2.0868,-2.5831,-2.6876,-2.0886 RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v03.0.0,-6.481,-12.4196,-12.8235,-6.9767,-7.2067,-7.5413,-9.2242,-8.7002,-6.4684,-6.1112,-6.8631,-11.9683,-12.4793,-7.0126 RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v04.0.0,-11.8855,-28.3505,-26.3761,-13.1833,-13.126,-13.6859,-17.8489,-16.9266,-12.0811,-14.3192,-12.2114,-28.3673,-26.1878,-12.5691 @@ -2897,8 +2895,8 @@ RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v10.0.0,-18.7709,-49.0864,-47.3592,-21.50 RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v11.0.0,-18.794,-50.4799,-49.1247,-21.6981,-22.6023,-22.4621,-29.1936,-28.3094,-21.9333,-27.7628,-19.041,-51.8511,-50.3268,-19.8211 RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v12.0.0,-19.0305,-51.3376,-49.5807,-21.9881,-22.599,-22.525,-29.5923,-28.6125,-22.1245,-28.1143,-19.2905,-52.7863,-50.8226,-20.0877 RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v13.0.0,-19.0527,-50.6976,-49.1171,-21.9392,-20.8319,-22.6971,-29.7848,-28.7691,-22.1909,-28.0799,-19.2721,-51.9795,-50.3789,-20.0564 -RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0,7.4995,4.9138,2.1835,6.8345,3.2317,4.4441,1.2791,1.461,4.5838,4.1081,8.251,5.8608,2.5735,6.9529 -RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0-unconstrained,-4.6289,-1.4237,-3.0438,-4.2281,-4.9229,-4.3723,-6.2424,-6.4538,-4.1023,-4.1788,-6.6401,-3.6285,-5.4474,-6.034 +RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v14.0.0,-19.0682,-50.8709,-49.2775,-21.9737,-20.9167,-22.7934,-29.767,-28.7128,-22.2238,-28.0858,-19.2968,-52.1878,-50.4987,-20.083 +RA,B1,Sniper_1920x1080P_30fps_8bit.y4m,v15.0.0,-19.0841,-50.7419,-49.1313,-21.9727,-20.9229,-22.7942,-29.6913,-28.6737,-22.2366,-28.1175,-19.3125,-52.0759,-50.3478,-20.0957 RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v02.0.0,-2.4569,-2.9922,-2.7677,-2.5184,-2.856,-2.8713,-4.1846,-3.8816,-2.5225,-2.2986,-2.6818,-3.0558,-2.9904,-2.7233 RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v03.0.0,-9.7435,-8.7914,-6.4752,-9.4274,-9.9294,-10.2658,-7.2304,-7.2013,-8.8572,-8.8637,-9.9693,-8.7991,-6.6998,-9.3358 RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v04.0.0,-15.2937,-21.0939,-18.1167,-15.969,-16.0685,-16.2666,-14.1882,-14.1769,-15.935,-16.9474,-15.7651,-21.0507,-18.3456,-16.8163 @@ -2911,8 +2909,8 @@ RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v10.0.0,-27.7288,-43.3503,-38 RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v11.0.0,-28.6702,-45.6986,-40.9736,-31.1384,-29.3074,-29.6375,-27.9309,-27.755,-31.1248,-35.3417,-28.7283,-45.8458,-39.8083,-32.8368 RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v12.0.0,-28.4881,-45.3835,-40.5681,-30.9272,-29.0393,-29.4116,-27.8428,-27.6876,-30.8732,-35.0617,-28.5515,-45.5338,-39.4253,-32.6183 RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v13.0.0,-28.7146,-45.3646,-40.612,-31.1146,-34.0483,-29.595,-28.0152,-27.8443,-31.0085,-35.16,-28.7521,-45.4301,-39.4403,-32.7469 -RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0,2.9379,-11.281,-10.2654,2.0078,2.2725,1.6986,4.9879,4.5709,2.9862,-2.7573,5.751,1.8472,-3.7508,5.2673 -RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,libaom-v3.12.0-unconstrained,-10.6857,-13.1491,-14.6642,-10.8773,-15.6955,-14.3138,-18.312,-18.272,-12.2551,-14.7781,-8.8603,-2.9669,-8.092,-8.6014 +RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v14.0.0,-28.603,-45.2087,-40.518,-31.002,-33.9837,-29.5063,-27.7573,-27.5878,-30.9193,-35.0863,-28.6559,-45.2705,-39.3586,-32.6454 +RA,B1,SolLevanteDragons_sdr_1920x1080_24_10bit.y4m,v15.0.0,-28.6029,-45.2086,-40.5147,-31.0016,-33.984,-29.5068,-27.7539,-27.5858,-30.9199,-35.085,-28.6566,-45.2704,-39.3544,-32.6453 RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v02.0.0,-6.5567,-15.1556,-18.4212,-7.3736,-7.9115,-7.5341,-7.165,-6.8685,-6.7402,-9.7952,-5.546,-13.2426,-11.8415,-6.3102 RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v03.0.0,-14.9093,-11.6012,-24.3879,-15.1989,-15.7824,-15.6163,-19.8867,-18.9892,-14.0924,-17.917,-13.7503,-16.2453,-20.2323,-14.3582 RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v04.0.0,-21.0131,-32.1166,-36.6536,-22.1265,-21.501,-21.5748,-26.1014,-25.0772,-20.0178,-27.644,-19.3949,-36.7461,-30.1699,-20.9995 @@ -2925,8 +2923,8 @@ RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v10.0.0,-32.2576,-46.7539,-50.17 RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v11.0.0,-31.7811,-48.5241,-52.4559,-33.3811,-30.9843,-31.6877,-34.4928,-33.7229,-30.1661,-41.2178,-30.2254,-52.9931,-46.3435,-32.3288 RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v12.0.0,-32.0285,-48.8667,-52.0467,-33.5964,-31.1515,-31.915,-35.405,-34.6826,-30.3652,-41.4025,-30.5004,-53.1987,-45.8284,-32.5383 RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v13.0.0,-31.9104,-48.8847,-52.4835,-33.5078,-35.1743,-31.7963,-34.6924,-33.9579,-30.2477,-41.3476,-30.4062,-52.7988,-45.6869,-32.4232 -RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,libaom-v3.12.0,4.5408,17.9634,0.9442,4.8014,-1.5406,-1.7364,7.3532,7.5144,2.6248,7.2449,4.0011,18.1056,1.7783,4.1943 -RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,libaom-v3.12.0-unconstrained,-11.6651,1.7042,-5.9896,-10.7371,-17.275,-15.703,-17.6079,-17.8836,-12.6004,-6.4626,-13.284,1.9334,-6.0787,-12.7492 +RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v14.0.0,-31.877,-48.7443,-52.4626,-33.47,-35.1551,-31.768,-34.6456,-33.9019,-30.2157,-41.3057,-30.3823,-52.669,-45.6846,-32.3938 +RA,B1,SolLevanteFace_sdr_1920x1080_24_10bit.y4m,v15.0.0,-31.8595,-48.2388,-52.4485,-33.4346,-35.1116,-31.773,-34.5388,-33.8358,-30.2063,-41.2154,-30.3765,-52.5747,-45.6946,-32.3853 RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v02.0.0,-0.6754,1.7824,-2.3075,-0.7196,-1.8412,-2.1032,-0.8828,-0.9101,-0.3136,2.5132,-0.7869,1.0239,-2.7934,-0.8053 RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v03.0.0,-6.7466,0.007,-8.1313,-6.5636,-6.9515,-7.2532,-7.0235,-6.5111,-5.8586,-2.0512,-6.7427,-0.6804,-8.7633,-6.698 RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v04.0.0,-13.1919,-12.852,-19.2203,-13.5378,-14.0123,-14.537,-13.8098,-12.9397,-12.4953,-10.6948,-13.1562,-13.7142,-19.8359,-13.3816 @@ -2939,8 +2937,8 @@ RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v10.0.0,-26.8527,-39.2134,-47.8338,-28. RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v11.0.0,-27.7534,-43.0176,-51.2112,-30.0713,-29.7249,-30.0676,-30.3615,-29.141,-29.4652,-39.6997,-27.6061,-43.4414,-52.585,-28.8579 RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v12.0.0,-28.2978,-42.7038,-51.3525,-30.5416,-30.0097,-30.4424,-30.3737,-29.1463,-29.8333,-40.0001,-28.1768,-43.2028,-52.7303,-29.4007 RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v13.0.0,-28.3744,-42.435,-51.7282,-30.618,-30.1308,-30.57,-30.985,-29.7397,-29.9948,-40.3166,-28.2699,-42.9236,-53.1516,-29.5 -RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,libaom-v3.12.0,6.1387,7.514,6.5548,6.2265,-0.3355,-0.5026,1.9724,1.8471,0.1024,6.7598,5.8784,7.1463,6.2524,6.0628 -RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,libaom-v3.12.0-unconstrained,-0.9136,1.8093,1.1792,-0.6488,-0.471,-0.6913,-3.3054,-2.9993,-1.003,1.3094,-1.1159,1.6883,1.0577,-0.6896 +RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v14.0.0,-28.193,-43.2389,-51.5753,-30.4888,-30.0042,-30.4435,-30.8513,-29.4959,-29.8508,-40.3843,-28.0933,-43.7115,-52.9671,-29.338 +RA,B1,WITCHER3_1920x1080_60_8bit_420.y4m,v15.0.0,-28.1727,-43.1564,-51.6792,-30.4761,-29.9747,-30.4033,-30.8512,-29.4682,-29.8156,-40.3785,-28.0699,-43.6282,-53.0657,-29.3197 RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v02.0.0,-1.7006,-5.1548,-5.2656,-2.0827,-1.7176,-1.9303,-2.6811,-2.6859,-2.3309,-6.3038,-1.7309,-5.1063,-5.2286,-2.1811 RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v03.0.0,-7.8492,-7.9571,-8.9569,-7.917,-6.9233,-7.6273,-7.5527,-7.0335,-7.6123,-9.8604,-7.8399,-7.8899,-8.919,-7.9069 RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v04.0.0,-13.818,-18.2292,-18.8289,-14.3354,-12.6378,-13.5983,-14.6675,-13.9041,-13.9053,-18.4107,-13.8073,-18.2037,-18.7919,-14.4797 @@ -2953,8 +2951,8 @@ RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v10.0.0,-24.976 RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v11.0.0,-24.6009,-26.6022,-27.7438,-24.8822,-25.4118,-26.4021,-29.3181,-27.4622,-25.9119,-29.1988,-24.6547,-26.6753,-27.8239,-25.0055 RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v12.0.0,-24.9015,-26.8125,-27.5497,-25.1504,-25.48,-26.5341,-29.8113,-28.0477,-26.085,-29.8291,-24.9552,-26.8708,-27.6357,-25.263 RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v13.0.0,-24.9911,-26.7565,-27.4523,-25.2222,-29.0654,-26.7229,-28.5968,-27.3346,-26.1289,-28.8238,-25.0442,-26.8225,-27.5273,-25.3314 -RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,5.6699,7.3324,7.8739,5.8722,4.0631,4.0363,4.5914,4.321,2.8255,4.2096,5.277,7.1993,7.9048,5.9756 -RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,4.1463,5.0165,4.6902,4.2202,3.402,3.3762,3.7017,3.4418,3.2504,2.6084,3.8664,4.9397,4.8035,4.2336 +RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v14.0.0,-24.8128,-26.636,-27.3405,-25.0506,-28.9044,-26.5531,-28.3514,-27.0746,-25.9942,-28.7055,-24.8621,-26.6931,-27.4174,-25.1565 +RA,B2,BigBuckBunnyStudio1_1920x1080_60fps_10bit_420_020_0149.y4m,v15.0.0,-24.8157,-26.6645,-27.3385,-25.0545,-28.937,-26.5345,-28.3475,-27.0466,-25.9884,-28.7048,-24.8654,-26.725,-27.417,-25.1617 RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v02.0.0,3.2788,-0.3531,2.0573,3.0567,1.9394,2.1808,2.3744,1.8197,1.1445,-1.6862,3.1998,-0.3587,2.0692,2.7726 RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v03.0.0,-8.5245,-10.0678,-9.2047,-8.63,-10.1996,-9.7614,-11.368,-9.669,-9.8397,-13.5427,-8.593,-10.0855,-9.1616,-8.8502 RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v04.0.0,-24.4601,-36.8724,-32.4788,-25.4407,-25.7726,-25.7175,-25.7465,-24.0491,-26.2505,-32.3511,-24.5607,-36.7454,-32.3906,-26.4452 @@ -2967,8 +2965,8 @@ RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v10.0.0,-41.3436,-53.3323,-47.9684, RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v11.0.0,-41.8384,-52.5136,-47.4093,-42.6189,-43.28,-43.0563,-42.4904,-41.0139,-43.703,-50.0113,-41.9904,-52.4353,-47.3421,-43.4284 RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v12.0.0,-42.1177,-52.7452,-47.8733,-42.9045,-43.0231,-43.0881,-41.6218,-40.6077,-43.866,-50.0417,-42.267,-52.6785,-47.8154,-43.705 RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v13.0.0,-42.4494,-52.508,-47.8588,-43.1918,-44.3723,-43.4917,-42.5818,-41.1113,-44.1452,-50.0447,-42.5943,-52.4496,-47.8098,-43.9815 -RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,libaom-v3.12.0,8.7916,12.3539,10.9236,9.091,6.9885,7.2649,-0.3693,0.7184,5.6208,7.4886,5.5825,11.5164,10.9555,6.3852 -RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,libaom-v3.12.0-unconstrained,-2.025,-0.8446,-0.3709,-1.8727,-3.6677,-3.1367,-8.0167,-7.5781,-2.3343,-3.0579,-2.0568,-0.1396,0.4071,-1.7397 +RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v14.0.0,-42.3533,-52.4108,-47.7643,-43.0957,-44.2216,-43.3081,-42.2364,-40.7453,-43.9532,-49.7708,-42.4988,-52.3533,-47.7182,-43.871 +RA,B2,Debugging_1920x1080_30fps_8bit_420.y4m,v15.0.0,-42.3675,-52.4262,-47.8134,-43.1119,-44.2268,-43.3343,-42.3369,-40.8059,-43.9497,-49.8226,-42.5134,-52.3566,-47.7689,-43.8995 RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v02.0.0,0.2819,-7.8345,-8.0395,-0.5987,-0.4576,-0.5192,0.2678,0.4269,-1.3447,-7.2824,0.1146,-7.7548,-7.9054,-0.6367 RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v03.0.0,-7.9966,-13.2059,-13.2898,-8.5521,-7.4669,-8.0827,-8.2454,-7.5063,-8.6687,-13.5237,-8.2482,-13.2287,-13.2534,-8.7226 RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v04.0.0,-19.7238,-28.5506,-28.4036,-20.6689,-19.7118,-20.103,-23.6567,-22.3273,-20.8518,-27.857,-20.8095,-28.7122,-28.5304,-21.626 @@ -2981,8 +2979,8 @@ RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v10.0.0,-28.94 RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v11.0.0,-32.3278,-41.5597,-42.1226,-33.3642,-32.201,-32.7079,-39.8755,-38.6659,-34.1142,-41.5741,-34.4349,-42.4543,-42.7069,-35.272 RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v12.0.0,-32.4489,-41.5614,-42.0385,-33.4643,-32.1573,-32.6867,-40.3966,-38.8499,-34.1712,-41.7118,-34.5231,-42.4271,-42.5968,-35.3303 RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v13.0.0,-32.9775,-42.0327,-42.2078,-33.9722,-33.976,-33.2146,-41.2719,-39.7424,-34.7982,-41.7503,-35.0779,-42.8765,-42.7549,-35.8742 -RA,B2,MobileDeviceScreenSharing.y4m,libaom-v3.12.0,92.3389,70.3034,67.5221,90.387,91.7003,91.8652,95.1722,91.9305,88.8641,86.2994,92.4022,72.7951,69.0034,91.0135 -RA,B2,MobileDeviceScreenSharing.y4m,libaom-v3.12.0-unconstrained,89.236,70.5228,61.8075,87.3627,97.418,95.8149,85.9532,84.8242,86.9684,79.0705,89.2985,72.123,64.4826,88.2464 +RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v14.0.0,-32.8441,-42.0391,-42.2221,-33.855,-33.8802,-33.0879,-41.2258,-39.6667,-34.6446,-41.7015,-34.9422,-42.8843,-42.8025,-35.7559 +RA,B2,MissionControlClip1_1920x1080_60fps_10bit_420_0450_0579.y4m,v15.0.0,-32.8466,-42.0537,-42.1426,-33.8535,-33.8814,-33.1068,-41.2207,-39.6368,-34.639,-41.6391,-34.9414,-42.9046,-42.7187,-35.7525 RA,B2,MobileDeviceScreenSharing.y4m,v02.0.0,0.0,-15.6751,-9.6289,0.0,0.0,0.0,0.0,0.0,0.0,-7.8673,0.0,-13.4551,-10.0669,0.0 RA,B2,MobileDeviceScreenSharing.y4m,v03.0.0,-11.9042,-28.3922,-24.9134,-13.2319,-9.8602,-10.3197,-10.3938,-8.7298,-11.541,-20.3258,-11.9032,-27.0971,-24.8048,-12.4015 RA,B2,MobileDeviceScreenSharing.y4m,v04.0.0,-25.9921,-39.0902,-43.0349,-27.2917,-24.1608,-24.7743,-24.1979,-22.1074,-26.3788,-34.9947,-25.9937,-37.4524,-41.5258,-26.455 @@ -2995,8 +2993,8 @@ RA,B2,MobileDeviceScreenSharing.y4m,v10.0.0,-43.2138,-56.456,-61.1947,-44.6775,- RA,B2,MobileDeviceScreenSharing.y4m,v11.0.0,-42.9439,-55.1953,-55.8558,-44.1742,-42.5404,-42.6515,-45.5504,-43.8188,-44.583,-51.0343,-42.9583,-54.9401,-56.1658,-43.6746 RA,B2,MobileDeviceScreenSharing.y4m,v12.0.0,-43.5703,-55.2768,-59.1462,-44.8355,-43.4629,-43.5145,-46.635,-44.7987,-45.3612,-51.8973,-43.5813,-55.3317,-58.867,-44.2609 RA,B2,MobileDeviceScreenSharing.y4m,v13.0.0,-43.9977,-56.0622,-58.0791,-45.201,-44.7517,-43.8504,-47.7113,-45.877,-45.7933,-51.7054,-44.006,-55.9643,-57.3394,-44.6699 -RA,B2,SceneComposition_2.y4m,libaom-v3.12.0,33.7728,18.6161,13.7918,31.7838,27.7708,27.7367,31.5707,32.327,26.4077,27.4648,33.6304,18.0883,12.6229,30.3369 -RA,B2,SceneComposition_2.y4m,libaom-v3.12.0-unconstrained,24.843,11.9498,8.397,23.1257,21.3928,22.4427,27.766,27.5957,23.4835,20.7711,24.8341,12.2267,9.1127,22.3935 +RA,B2,MobileDeviceScreenSharing.y4m,v14.0.0,-43.6642,-55.7377,-57.85,-44.8708,-44.3847,-43.355,-47.1295,-45.2616,-45.345,-51.3489,-43.6708,-55.6213,-57.0093,-44.3268 +RA,B2,MobileDeviceScreenSharing.y4m,v15.0.0,-43.6702,-55.6529,-57.8704,-44.8737,-44.3551,-43.3608,-47.117,-45.2642,-45.3541,-51.3555,-43.6766,-55.5612,-57.0223,-44.3314 RA,B2,SceneComposition_2.y4m,v02.0.0,-2.9567,-24.9282,-28.9739,-5.7866,-3.1203,-2.9826,1.1833,1.3982,-5.6586,-16.6377,-2.9631,-24.613,-28.059,-6.1367 RA,B2,SceneComposition_2.y4m,v03.0.0,-13.6487,-23.2123,-35.3567,-15.5212,-13.5506,-13.6184,-13.9203,-12.5526,-15.3857,-22.5659,-13.6606,-23.4252,-34.5336,-15.9442 RA,B2,SceneComposition_2.y4m,v04.0.0,-23.343,-39.938,-47.2533,-25.8847,-24.1017,-24.4476,-24.9807,-23.4185,-26.226,-38.496,-23.3466,-39.7703,-45.7965,-26.3754 @@ -3009,8 +3007,8 @@ RA,B2,SceneComposition_2.y4m,v10.0.0,-38.5978,-57.6125,-62.3973,-41.4439,-41.152 RA,B2,SceneComposition_2.y4m,v11.0.0,-40.0565,-58.8716,-63.7131,-42.8358,-42.7629,-42.7394,-46.2431,-44.8257,-44.4816,-55.9433,-40.0804,-59.0232,-64.0054,-43.382 RA,B2,SceneComposition_2.y4m,v12.0.0,-40.5421,-58.7249,-63.2538,-43.1914,-42.5807,-43.0942,-45.6934,-44.4503,-44.6965,-55.6552,-40.5674,-58.862,-63.4644,-43.7364 RA,B2,SceneComposition_2.y4m,v13.0.0,-40.5911,-58.8046,-63.569,-43.2626,-43.6297,-43.1659,-45.7098,-44.626,-44.7837,-55.8441,-40.6156,-58.974,-63.8331,-43.8073 -RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,5.0945,2.0741,0.0967,4.6474,3.2501,3.1305,8.5392,7.8476,4.1413,4.8964,5.2726,3.6738,4.8243,4.9481 -RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,8.3917,10.5826,5.9519,8.3696,9.6066,9.5036,16.0038,14.0425,9.5176,17.849,5.9086,0.0681,2.5508,4.3867 +RA,B2,SceneComposition_2.y4m,v14.0.0,-40.2809,-58.6791,-63.3974,-42.969,-43.261,-42.8163,-45.3506,-44.2041,-44.5794,-55.6288,-40.3039,-58.8502,-63.6525,-43.501 +RA,B2,SceneComposition_2.y4m,v15.0.0,-40.2515,-58.6057,-63.307,-42.9324,-43.2344,-42.7836,-45.3289,-44.1837,-44.5297,-55.5727,-40.2744,-58.7778,-63.5533,-43.4661 RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v02.0.0,-0.9899,-11.5035,-9.8602,-2.0508,-2.1263,-2.0298,-2.8138,-1.9271,-2.289,-7.4136,-1.0153,-8.619,-9.7145,-3.1827 RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v03.0.0,-11.7683,-17.982,-15.086,-12.2872,-12.7908,-12.6486,-12.9347,-11.9987,-11.9635,-12.251,-11.8566,-18.5052,-18.6952,-13.6357 RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v04.0.0,-31.5215,-39.312,-39.0119,-32.3885,-31.1571,-31.5621,-30.6558,-30.0477,-30.682,-30.0245,-32.1597,-42.7629,-44.3588,-35.1109 @@ -3023,8 +3021,8 @@ RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v10.0.0,-52.1742,-63.6304,-63.6442,-5 RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v11.0.0,-52.2455,-64.5876,-63.2341,-53.7149,-54.4461,-54.5352,-54.5068,-54.4063,-53.6942,-58.0595,-52.0153,-66.8477,-66.3579,-55.8169 RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v12.0.0,-52.5129,-63.444,-62.2968,-53.8014,-54.8133,-55.0005,-55.1137,-54.705,-53.8379,-58.0422,-52.2101,-64.8541,-65.8014,-55.6065 RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v13.0.0,-52.6373,-63.4936,-62.1246,-53.841,-55.5937,-55.0499,-55.0404,-54.9415,-53.7701,-57.1296,-52.4205,-64.8296,-65.9535,-55.7757 -RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0,5.2477,3.2057,3.4199,5.0315,2.3392,1.9937,2.6936,2.9001,3.0478,3.5902,0.2075,-0.565,-0.3196,0.0923 -RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,libaom-v3.12.0-unconstrained,2.7235,0.8492,1.0412,2.5051,2.2689,1.876,-1.5277,-1.3486,3.0524,7.4313,-2.8043,-7.9576,-7.1021,-3.8886 +RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v14.0.0,-52.491,-63.6959,-62.2168,-53.7691,-55.2981,-54.5157,-54.3197,-54.3796,-53.7386,-57.698,-52.2847,-64.6404,-65.8567,-55.6376 +RA,B2,Slides1_1920x1080_30fps_8bit_420.y4m,v15.0.0,-52.4989,-63.6447,-62.2788,-53.7766,-55.3188,-54.5298,-54.2723,-54.3355,-53.7282,-57.6221,-52.309,-64.662,-65.9177,-55.6655 RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v02.0.0,-1.0324,-13.0,-10.4755,-2.1221,-1.5196,-1.9312,0.2883,0.1475,-1.9215,-5.0491,-0.5142,-5.1621,-4.8974,-1.2873 RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v03.0.0,-10.7893,-20.2926,-17.946,-11.6397,-11.5918,-11.7816,-13.695,-11.7847,-11.2391,-7.7501,-10.1964,-12.9361,-11.588,-10.597 RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v04.0.0,-17.7191,-30.2355,-28.359,-18.9359,-20.0328,-20.6353,-20.7856,-18.7714,-19.2313,-24.6525,-16.8755,-22.0522,-22.4131,-17.8995 @@ -3037,8 +3035,8 @@ RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v10.0.0,-32.5836,-42.8252,-41.7236,- RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v11.0.0,-33.725,-43.6326,-42.5439,-34.7482,-37.3999,-37.9221,-38.2564,-37.4776,-35.9315,-39.9198,-33.1059,-35.7535,-36.1344,-33.5812 RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v12.0.0,-34.0896,-43.7319,-42.6379,-35.0934,-37.8688,-38.4283,-38.6888,-37.7591,-36.2168,-40.9291,-33.3849,-35.7326,-36.3427,-33.8275 RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v13.0.0,-34.1821,-42.9651,-41.4972,-35.0605,-39.5297,-38.528,-38.2139,-37.4458,-36.1226,-35.8619,-33.3815,-35.8521,-36.0617,-33.8221 -RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,libaom-v3.12.0,1.2381,9.7406,9.3764,2.0354,2.774,1.9634,1.2276,0.4273,3.2104,7.6325,0.5043,8.4953,8.4565,1.8002 -RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,libaom-v3.12.0-unconstrained,0.3287,4.6621,4.7542,0.7344,-1.3424,-1.9991,-2.2511,-2.5488,-1.1881,0.2841,-0.289,4.3039,4.3192,0.4639 +RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v14.0.0,-34.0864,-42.9073,-41.473,-34.9709,-39.2406,-38.2358,-37.9137,-37.2069,-35.924,-35.9846,-33.2647,-35.6127,-35.9337,-33.6899 +RA,B2,Slides2r_1920x1080_30fps_8bit_420.y4m,v15.0.0,-34.086,-42.8217,-41.83,-34.9846,-39.3633,-38.3612,-38.2166,-37.4149,-36.0174,-36.1773,-33.3085,-35.6901,-36.1493,-33.7525 RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v02.0.0,7.382,-8.734,-8.981,5.6729,7.9468,8.3893,-3.8827,-3.7232,7.2705,-8.467,0.0,-7.2004,-7.5257,24.902 RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v03.0.0,-12.3676,-22.165,-21.7306,-13.3505,-11.2001,-11.7751,-14.6832,-12.789,-12.973,-21.8973,-12.4183,-21.8973,-22.0438,-13.4785 RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v04.0.0,-25.0227,-40.0396,-41.0369,-26.702,-24.9236,-25.4848,-27.7162,-25.8893,-26.58,-37.3428,-25.0108,-39.8384,-41.0631,-26.749 @@ -3051,8 +3049,8 @@ RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v10.0.0,-44.6333,-59.8209,-6 RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v11.0.0,-45.4127,-59.3851,-60.4605,-47.0685,-46.5532,-46.9266,-47.9558,-46.4881,-47.5259,-56.652,-45.4561,-59.3378,-60.6875,-47.1444 RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v12.0.0,-45.5377,-58.4235,-60.3593,-47.1007,-46.8771,-47.3012,-48.2909,-46.8229,-47.7251,-56.4928,-45.5899,-58.3056,-60.5531,-47.1892 RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v13.0.0,-45.7326,-58.7413,-59.9336,-47.263,-48.7053,-47.0978,-48.6089,-46.9235,-47.7943,-56.0707,-45.7808,-58.6243,-60.1374,-47.352 -RA,B2,Wikipedia_1920x1080p30.y4m,libaom-v3.12.0,19.3725,10.984,11.5508,18.4884,21.8178,20.1299,20.7646,17.4725,16.3244,14.6632,19.5732,9.8725,11.6957,17.6537 -RA,B2,Wikipedia_1920x1080p30.y4m,libaom-v3.12.0-unconstrained,16.0285,12.237,10.8185,15.6025,13.1071,12.8738,17.8992,16.1028,12.4758,12.5706,16.2118,12.0491,11.3017,15.4694 +RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v14.0.0,-45.6293,-58.5581,-60.03,-47.1681,-48.3756,-46.8948,-48.2607,-46.6022,-47.5786,-56.1072,-45.6556,-58.4776,-60.2369,-47.2365 +RA,B2,Spreadsheet_1920x1080_30fps_8bit_420_130f.y4m,v15.0.0,-45.4876,-58.3265,-59.8892,-47.0227,-48.3364,-46.9184,-48.2777,-46.5841,-47.4711,-55.9518,-45.5216,-58.2263,-60.0629,-47.0975 RA,B2,Wikipedia_1920x1080p30.y4m,v02.0.0,-2.1702,-13.6159,-14.3966,-3.3109,-4.36,-4.5641,-6.4757,-6.5913,-4.312,-9.5616,-2.1467,-13.5331,-14.5071,-3.6079 RA,B2,Wikipedia_1920x1080p30.y4m,v03.0.0,-12.9817,-22.3458,-22.8872,-13.9073,-13.5762,-13.8253,-13.5048,-12.5334,-13.4309,-18.6074,-12.9331,-22.5589,-23.0307,-14.1896 RA,B2,Wikipedia_1920x1080p30.y4m,v04.0.0,-22.8692,-34.6672,-36.3941,-24.1413,-23.5981,-23.7689,-24.2193,-23.4458,-24.3046,-30.4386,-22.8674,-34.5785,-36.3953,-24.6244 @@ -3065,8 +3063,8 @@ RA,B2,Wikipedia_1920x1080p30.y4m,v10.0.0,-35.5483,-49.9371,-50.4774,-37.1359,-37 RA,B2,Wikipedia_1920x1080p30.y4m,v11.0.0,-36.4746,-50.2401,-50.5433,-37.9549,-37.6483,-37.8995,-38.8072,-37.5046,-37.9258,-45.3174,-36.4861,-50.6485,-50.6534,-38.5194 RA,B2,Wikipedia_1920x1080p30.y4m,v12.0.0,-36.9611,-50.0616,-50.9956,-38.3919,-38.1483,-38.3094,-39.3964,-38.5285,-38.6015,-46.3463,-36.9714,-50.3704,-51.0326,-38.9228 RA,B2,Wikipedia_1920x1080p30.y4m,v13.0.0,-37.2644,-50.5279,-50.747,-38.6738,-38.8522,-38.3425,-39.6233,-38.443,-38.5891,-46.1794,-37.2548,-50.8081,-50.8346,-39.1759 -RA,E,Artistic_Concert_1920x1080_25fps.y4m,libaom-v3.12.0,3.4414,-14.8521,-14.1148,1.564,2.5058,2.2439,10.0971,8.9797,3.6931,-0.9671,3.9204,-11.7931,-12.5721,3.3933 -RA,E,Artistic_Concert_1920x1080_25fps.y4m,libaom-v3.12.0-unconstrained,-6.1951,-9.8693,-10.2793,-6.4767,-5.1747,-5.0877,-9.0321,-9.1607,-5.7309,-6.9097,-8.8228,-10.0175,-10.6444,-8.8016 +RA,B2,Wikipedia_1920x1080p30.y4m,v14.0.0,-36.8332,-50.0503,-50.5228,-38.2465,-38.4392,-37.9845,-39.1934,-38.0912,-38.2585,-45.843,-36.8218,-50.3806,-50.5328,-38.7454 +RA,B2,Wikipedia_1920x1080p30.y4m,v15.0.0,-36.8434,-50.0376,-50.5254,-38.2557,-38.4415,-37.9856,-39.1992,-38.0954,-38.2717,-45.8438,-36.832,-50.357,-50.5356,-38.7531 RA,E,Artistic_Concert_1920x1080_25fps.y4m,v02.0.0,-1.6562,-3.22,-4.611,-1.9132,-1.155,-1.2571,-2.5826,-2.4347,-1.304,-2.3507,-1.8395,-3.2389,-4.139,-1.9211 RA,E,Artistic_Concert_1920x1080_25fps.y4m,v03.0.0,-6.182,-6.0413,-11.9671,-6.5175,-4.8171,-5.0646,-7.392,-7.216,-5.4772,-6.0457,-6.3936,-6.7844,-11.4165,-6.5158 RA,E,Artistic_Concert_1920x1080_25fps.y4m,v04.0.0,-10.035,-19.1609,-19.3415,-11.1082,-7.8289,-8.2618,-13.1655,-12.5038,-8.9196,-11.8219,-10.2949,-18.7483,-18.698,-10.6489 @@ -3079,8 +3077,8 @@ RA,E,Artistic_Concert_1920x1080_25fps.y4m,v10.0.0,-17.7001,-41.9464,-39.6449,-20 RA,E,Artistic_Concert_1920x1080_25fps.y4m,v11.0.0,-18.0379,-43.8147,-41.0043,-21.0764,-14.9133,-15.3826,-24.6749,-23.4133,-16.9427,-25.0465,-18.1115,-41.9381,-40.239,-19.0885 RA,E,Artistic_Concert_1920x1080_25fps.y4m,v12.0.0,-18.0116,-43.2632,-41.7068,-21.066,-14.6029,-15.1713,-24.6266,-23.3563,-16.859,-25.1168,-18.0583,-41.3098,-40.8692,-19.0446 RA,E,Artistic_Concert_1920x1080_25fps.y4m,v13.0.0,-17.9771,-41.3827,-39.6508,-20.7616,-17.1454,-15.2161,-24.777,-23.4397,-16.7988,-24.1012,-18.0361,-39.8386,-38.9825,-18.9558 -RA,E,Artistic_Intro_1920x1080_2997fps.y4m,libaom-v3.12.0,2.9978,-1.378,-2.0665,2.5663,1.4525,1.0019,0.5332,1.1721,1.3048,-0.8187,3.7245,-1.3659,-2.5813,3.197 -RA,E,Artistic_Intro_1920x1080_2997fps.y4m,libaom-v3.12.0-unconstrained,-6.5287,4.2108,5.9368,-5.5256,-6.1789,-6.1251,-6.4243,-6.3961,-7.2036,-1.707,-7.9814,1.8787,1.5766,-6.8922 +RA,E,Artistic_Concert_1920x1080_25fps.y4m,v14.0.0,-17.9024,-41.7025,-39.2313,-20.6897,-17.0974,-15.137,-24.5992,-23.2917,-16.7212,-23.9209,-17.9612,-40.0547,-38.6495,-18.8718 +RA,E,Artistic_Concert_1920x1080_25fps.y4m,v15.0.0,-17.8978,-41.7423,-39.1848,-20.6854,-17.0901,-15.1307,-24.5772,-23.2691,-16.7124,-23.9214,-17.9546,-40.0839,-38.6078,-18.8651 RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v02.0.0,-6.7061,-20.9956,-32.5359,-8.7328,0.3319,-6.0772,106.5429,113.6211,-8.8189,-22.6607,-6.3419,-27.047,-47.5819,-9.4562 RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v03.0.0,-6.5844,-7.4329,-7.3762,-6.6642,-5.8228,-6.2418,-7.352,-6.9944,-6.6761,-7.0457,-6.6424,-7.8954,-7.8797,-6.7409 RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v04.0.0,-15.8493,-21.752,-21.6319,-16.4072,-15.8431,-16.5179,-18.1701,-16.8357,-16.2657,-18.6815,-15.74,-22.0746,-20.961,-16.3312 @@ -3093,8 +3091,8 @@ RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v10.0.0,-30.6919,-35.6478,-34.8465,-31 RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v11.0.0,-30.3652,-34.7852,-33.6707,-30.7301,-29.4348,-30.7841,-32.7264,-30.8074,-29.5179,-31.7537,-30.3049,-35.7664,-34.4231,-30.7986 RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v12.0.0,-30.037,-35.3262,-33.8771,-30.4728,-29.2138,-30.5197,-32.6448,-30.5371,-29.2198,-31.5704,-29.9515,-36.1785,-34.37,-30.4997 RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v13.0.0,-30.3963,-35.4554,-34.4431,-30.8309,-31.9105,-30.775,-32.9614,-30.9797,-29.5015,-31.9823,-30.3608,-36.3109,-34.9796,-30.9041 -RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,libaom-v3.12.0,-0.8942,-0.1971,-2.7487,-0.9556,-2.0103,-1.9612,1.7138,1.2311,0.7657,0.4911,-0.4749,0.5033,-2.6054,-0.4546 -RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,libaom-v3.12.0-unconstrained,-8.063,-5.9116,-6.1322,-7.8362,-8.6258,-8.4243,-11.2662,-11.1845,-8.3315,-6.7349,-8.7348,-5.7189,-6.2659,-8.2495 +RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v14.0.0,-30.3097,-35.3562,-34.3544,-30.743,-31.7768,-30.6891,-32.8875,-30.9033,-29.461,-31.9374,-30.2712,-36.2661,-34.8956,-30.8157 +RA,E,Artistic_Intro_1920x1080_2997fps.y4m,v15.0.0,-30.3059,-35.35,-34.4238,-30.7425,-31.729,-30.6823,-32.7036,-30.7495,-29.4676,-31.9357,-30.248,-36.2319,-34.9312,-30.792 RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v02.0.0,-1.8165,-3.3637,-0.8765,-1.8525,-4.4058,-3.6595,-8.1114,-8.014,-3.3381,-4.203,-1.7673,-3.6469,-0.9467,-1.8913 RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v03.0.0,-9.108,-7.1235,-4.3409,-8.7437,-8.7446,-8.6585,-12.8473,-11.3501,-8.0136,-7.4316,-9.1712,-7.0168,-4.3025,-8.6676 RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v04.0.0,-17.1579,-17.2201,-17.688,-17.1917,-17.0982,-16.8255,-21.598,-20.3983,-16.1787,-16.1668,-17.0578,-17.0225,-17.4173,-17.0846 @@ -3107,8 +3105,8 @@ RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v10.0.0,-30.1418,-31.8738, RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v11.0.0,-30.7631,-33.3731,-34.8006,-31.1544,-30.5205,-29.9772,-37.0986,-35.4785,-29.6876,-30.7275,-30.6539,-33.576,-34.809,-31.2003 RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v12.0.0,-30.8825,-33.4107,-34.6126,-31.2468,-30.6227,-30.1412,-37.1504,-35.5052,-29.7672,-30.7669,-30.7616,-33.69,-34.6196,-31.2906 RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v13.0.0,-31.0506,-33.1862,-33.9876,-31.344,-32.8785,-30.1205,-36.6556,-35.2664,-29.7979,-30.5517,-30.9389,-33.421,-33.9958,-31.3769 -RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,libaom-v3.12.0,-0.3264,-5.9291,-7.3285,-0.9139,-3.0623,-3.1571,3.4859,2.6181,-0.2465,-3.5218,0.0379,-5.7186,-7.4819,-0.5731 -RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,libaom-v3.12.0-unconstrained,-8.0625,-7.5637,-7.545,-8.0115,-11.016,-10.3947,-12.5107,-12.5133,-9.77,-9.3772,-10.0419,-9.1019,-9.0998,-9.9283 +RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v14.0.0,-30.7624,-32.9499,-34.1877,-31.0852,-32.5798,-29.8118,-36.4154,-35.0713,-29.5723,-30.4391,-30.6525,-33.2253,-34.2095,-31.1239 +RA,E,MixedCoding_NewsIntroAnchor_1280x720_2997fps.y4m,v15.0.0,-30.7268,-33.0571,-34.1747,-31.0607,-32.6201,-29.7767,-36.1597,-34.9222,-29.5036,-30.4894,-30.611,-33.3644,-34.1901,-31.105 RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v02.0.0,-5.5141,-4.6285,-3.5107,-5.377,-6.7933,-6.7354,-6.4665,-6.3405,-5.4648,-5.7385,-5.6018,-4.497,-3.6591,-5.4962 RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v03.0.0,-14.0756,-8.7133,-2.623,-13.3043,-15.1993,-15.1868,-18.279,-16.9637,-13.2672,-12.8871,-14.2149,-8.7016,-2.7951,-13.5129 RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v04.0.0,-19.1378,-17.456,-12.435,-18.7513,-20.3075,-20.4182,-26.2067,-24.2466,-18.1425,-19.4942,-19.342,-17.6476,-12.7546,-19.0643 @@ -3121,8 +3119,8 @@ RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v10.0.0,-29.8823,-33.2321,-2 RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v11.0.0,-30.5281,-33.7796,-30.1759,-30.6841,-31.7649,-32.0271,-37.1585,-35.4567,-29.5154,-32.7305,-30.6432,-33.6734,-30.6583,-30.8996 RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v12.0.0,-30.5746,-33.9193,-31.0942,-30.7772,-31.6184,-31.9133,-36.9847,-35.2961,-29.5521,-32.8714,-30.6872,-33.8921,-31.6115,-30.9856 RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v13.0.0,-30.661,-34.0457,-31.0029,-30.8568,-34.5902,-32.0647,-37.007,-35.3679,-29.6324,-32.88,-30.7864,-34.0344,-31.5017,-31.0738 -RA,E,MountainBike_1920x1080_30fps_8bit.y4m,libaom-v3.12.0,2.4134,-6.548,-5.2588,1.7004,3.7541,2.5869,7.052,8.1695,3.3871,-0.0218,4.1223,-6.2468,-4.9764,3.629 -RA,E,MountainBike_1920x1080_30fps_8bit.y4m,libaom-v3.12.0-unconstrained,-6.8076,-5.883,-5.898,-6.7278,-10.8166,-9.881,-16.9742,-16.3496,-8.4822,-8.137,-10.2387,-7.5528,-8.2298,-10.1582 +RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v14.0.0,-30.5467,-34.1264,-30.847,-30.7517,-34.4481,-31.8759,-36.8056,-35.188,-29.5419,-32.8505,-30.6807,-34.0539,-31.3434,-30.9718 +RA,E,MixedCoding_NewsIntroOnly_1280x720_2997fps.y4m,v15.0.0,-30.5239,-33.7938,-30.7608,-30.7113,-34.386,-31.8583,-36.838,-35.1004,-29.5138,-32.6224,-30.65,-33.7482,-31.299,-30.9303 RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v02.0.0,-2.8749,0.0341,-1.065,-2.6696,-2.7965,-3.1029,-2.9123,-2.886,-2.6201,-2.2491,-3.0148,0.4713,-0.7572,-2.9333 RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v03.0.0,-7.8829,-3.4497,-5.4043,-7.5893,-6.6114,-7.2551,-9.7105,-9.0511,-7.0605,-7.0731,-7.9939,-3.3242,-5.1103,-7.9216 RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v04.0.0,-12.837,-17.7575,-15.1404,-13.1643,-12.2354,-13.0249,-16.601,-15.9108,-12.1244,-14.6681,-12.9735,-17.2096,-14.7051,-13.2506 @@ -3135,8 +3133,8 @@ RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v10.0.0,-20.3304,-34.8285,-34.5059,-2 RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v11.0.0,-20.8715,-36.5639,-35.8158,-22.3269,-21.5568,-22.1367,-29.2226,-28.0436,-21.028,-27.7657,-20.733,-36.0531,-35.7951,-21.6588 RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v12.0.0,-20.9085,-36.3742,-35.5946,-22.3396,-21.4026,-22.054,-29.064,-27.8785,-20.999,-27.6723,-20.7545,-35.8945,-35.5505,-21.6682 RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v13.0.0,-20.9052,-36.476,-35.4356,-22.3314,-22.9965,-22.1377,-29.2929,-28.0667,-21.0239,-27.5471,-20.7587,-35.9745,-35.4003,-21.6713 -RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,libaom-v3.12.0,-0.3219,2.3987,-12.6031,-0.6177,-10.8931,-8.671,-1.9094,-1.8736,-1.978,-0.26,-2.9256,-0.6175,-13.1552,-2.8951 -RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,libaom-v3.12.0-unconstrained,-13.7607,-9.3405,-11.2239,-13.3789,-20.7543,-15.0444,-20.7757,-20.4428,-15.3993,-12.1804,-18.461,-13.0917,-13.3181,-17.8845 +RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v14.0.0,-20.904,-36.2214,-35.3817,-22.3148,-22.997,-22.1167,-29.3106,-28.0914,-21.0115,-27.4816,-20.7534,-35.7366,-35.3509,-21.6599 +RA,E,MountainBike_1920x1080_30fps_8bit.y4m,v15.0.0,-20.9075,-36.2258,-35.4098,-22.3197,-23.0066,-22.1258,-29.3121,-28.0894,-21.0234,-27.4854,-20.757,-35.7362,-35.3812,-21.6651 RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v02.0.0,-2.9195,-9.8422,-13.7467,-3.9397,-0.922,-1.3853,-3.9968,-3.8735,-2.3635,-6.0675,-3.2788,-10.1952,-13.2146,-4.1106 RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v03.0.0,-11.2857,-13.2171,-16.5965,-11.7444,-6.174,-6.1633,-12.8641,-12.6417,-8.9226,-11.2125,-11.8529,-13.6393,-16.139,-12.1735 RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v04.0.0,-17.3643,-22.9711,-29.7646,-18.4193,-10.0537,-9.956,-23.5566,-22.0088,-14.8373,-21.0211,-18.0545,-23.4213,-29.3739,-18.8914 @@ -3149,8 +3147,8 @@ RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v10.0.0,-26.4496,-34.2644,-47.7 RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v11.0.0,-28.1386,-35.3169,-48.5145,-29.8275,-19.7846,-18.9125,-33.7394,-32.8325,-25.1176,-32.6305,-28.9703,-36.1917,-48.3453,-30.2569 RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v12.0.0,-28.5559,-35.3511,-49.2023,-30.2483,-19.8987,-18.9705,-34.4431,-33.4144,-25.4907,-32.7703,-29.399,-36.1562,-48.9898,-30.6633 RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v13.0.0,-28.5236,-34.9694,-49.2791,-30.195,-18.6843,-19.0514,-33.9726,-33.0721,-25.4351,-32.5785,-29.3701,-35.8118,-49.0764,-30.6076 -RA,E,Noise_Animation_1280x720_2398fps.y4m,libaom-v3.12.0,-8.5201,-18.3265,-11.2543,-9.7426,-8.8174,-7.5786,-3.3324,-6.9977,-7.4343,-12.8135,-9.4278,-18.8623,-11.7369,-9.7186 -RA,E,Noise_Animation_1280x720_2398fps.y4m,libaom-v3.12.0-unconstrained,-19.1985,-16.1959,-19.1505,-19.4115,-17.7379,-16.6009,-12.668,-14.6219,-17.9713,-18.907,-19.8535,-16.2932,-20.1382,-18.9135 +RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v14.0.0,-28.2369,-34.6325,-48.856,-29.8954,-18.4889,-18.8686,-33.5765,-32.7564,-25.159,-32.1,-29.0748,-35.4585,-48.6704,-30.3031 +RA,E,Noise_AnimationCrayon_1920x1080_2398fps.y4m,v15.0.0,-28.2686,-34.7648,-48.7304,-29.9187,-18.554,-18.9569,-33.7115,-32.8402,-25.1948,-32.1404,-29.1015,-35.5939,-48.5425,-30.3299 RA,E,Noise_Animation_1280x720_2398fps.y4m,v02.0.0,-4.294,-8.985,-4.2901,-4.8016,-2.8251,-4.1357,-7.2548,-6.7169,-4.3407,-5.2611,-4.9183,-9.2553,-4.332,-5.003 RA,E,Noise_Animation_1280x720_2398fps.y4m,v03.0.0,-8.8227,-8.3599,-6.2166,-8.6301,-6.8129,-8.0635,-13.6486,-13.0382,-8.219,-8.5906,-9.6519,-8.3477,-6.6376,-9.212 RA,E,Noise_Animation_1280x720_2398fps.y4m,v04.0.0,-17.4731,-21.5024,-18.5811,-18.0968,-15.7269,-16.1751,-22.7738,-22.0734,-16.9848,-17.4365,-18.7081,-22.1383,-18.4762,-18.6981 @@ -3163,8 +3161,8 @@ RA,E,Noise_Animation_1280x720_2398fps.y4m,v10.0.0,-33.3756,-40.4558,-34.5622,-33 RA,E,Noise_Animation_1280x720_2398fps.y4m,v11.0.0,-33.1067,-38.6324,-34.5088,-33.5955,-30.5159,-30.422,-39.2621,-37.7824,-32.6137,-33.4203,-34.371,-38.9033,-35.1553,-34.5401 RA,E,Noise_Animation_1280x720_2398fps.y4m,v12.0.0,-34.3045,-41.6555,-35.7147,-34.9466,-31.9582,-32.0283,-40.6752,-39.119,-33.9695,-35.5354,-35.5687,-41.8809,-36.3424,-35.8396 RA,E,Noise_Animation_1280x720_2398fps.y4m,v13.0.0,-34.4513,-41.4941,-35.6199,-35.0407,-28.5312,-32.2287,-40.8583,-39.6201,-34.1043,-35.0232,-35.731,-41.8854,-36.2194,-35.9432 -RA,E,Noise_Ocean_1920x1080_60fps.y4m,libaom-v3.12.0,-8.9482,-25.8663,-26.2284,-11.6779,-13.4276,-11.4782,-22.9551,-22.9289,-12.8439,-12.4637,-16.4495,-28.8315,-29.5211,-16.529 -RA,E,Noise_Ocean_1920x1080_60fps.y4m,libaom-v3.12.0-unconstrained,-18.3437,-35.8845,-27.4527,-22.8385,-28.4529,-22.1587,-44.0137,-44.0629,-26.1671,-22.1044,-31.8664,-37.4497,-29.1152,-31.4931 +RA,E,Noise_Animation_1280x720_2398fps.y4m,v14.0.0,-33.8555,-40.8901,-34.892,-34.4193,-27.9983,-31.6623,-40.1841,-38.9237,-33.448,-34.2802,-35.103,-41.2975,-35.4653,-35.2806 +RA,E,Noise_Animation_1280x720_2398fps.y4m,v15.0.0,-33.8483,-40.9836,-34.9298,-34.4232,-27.899,-31.5674,-40.4622,-39.1223,-33.4132,-34.3009,-35.1062,-41.3471,-35.5201,-35.2967 RA,E,Noise_Ocean_1920x1080_60fps.y4m,v02.0.0,0.7918,-9.8907,-19.5509,-4.1188,1.5198,1.5759,-2.0701,-1.7542,0.3438,-5.0906,0.204,-9.0442,-18.8048,-0.6328 RA,E,Noise_Ocean_1920x1080_60fps.y4m,v03.0.0,-6.4164,-20.8166,-24.1242,-11.2746,-3.8748,-2.8837,-6.3078,-6.5494,-6.4116,-13.9592,-6.9175,-19.8792,-23.6809,-8.0527 RA,E,Noise_Ocean_1920x1080_60fps.y4m,v04.0.0,-11.45,-32.3525,-36.027,-18.5881,-8.3973,-7.2054,-10.9175,-11.4203,-11.5894,-22.1602,-12.0704,-31.7671,-35.9608,-13.4372 @@ -3177,8 +3175,8 @@ RA,E,Noise_Ocean_1920x1080_60fps.y4m,v10.0.0,-19.5199,-42.13,-42.6368,-26.6612,- RA,E,Noise_Ocean_1920x1080_60fps.y4m,v11.0.0,-22.0269,-53.9959,-46.1424,-30.6636,-20.0436,-16.795,-18.5121,-19.9943,-23.2378,-36.1465,-23.7459,-54.9596,-47.5522,-25.1295 RA,E,Noise_Ocean_1920x1080_60fps.y4m,v12.0.0,-21.9596,-53.9602,-48.3375,-31.0916,-19.1525,-16.1272,-18.2094,-19.4633,-22.7743,-36.6681,-23.7015,-54.8951,-49.6854,-25.1714 RA,E,Noise_Ocean_1920x1080_60fps.y4m,v13.0.0,-22.1231,-50.0728,-44.3669,-29.9179,-7.7109,-16.3902,-17.901,-19.2639,-22.9233,-33.7181,-23.9666,-50.8002,-45.3559,-25.3304 -RA,E,Noise_Soccer_1920x1080_50fps.y4m,libaom-v3.12.0,-2.618,-12.446,2.3313,-2.7732,-4.7182,-5.1948,-4.8691,-4.7956,-4.1343,-3.8756,-3.5537,-13.2012,1.8428,-3.6383 -RA,E,Noise_Soccer_1920x1080_50fps.y4m,libaom-v3.12.0-unconstrained,-8.2215,35.6583,-2.8597,-6.1433,9.178,3.3418,-23.8521,-23.8475,-7.9671,-3.1327,-15.7752,34.4774,-7.3126,-15.2858 +RA,E,Noise_Ocean_1920x1080_60fps.y4m,v14.0.0,-21.0916,-50.3807,-43.9366,-29.2437,-7.5747,-15.8845,-17.4543,-18.7527,-22.1057,-33.1838,-22.9202,-51.1169,-44.8196,-24.2857 +RA,E,Noise_Ocean_1920x1080_60fps.y4m,v15.0.0,-21.057,-50.5302,-43.8193,-29.1681,-7.5143,-15.8093,-17.2131,-18.5308,-22.0462,-33.1463,-22.8772,-51.2514,-44.6903,-24.2386 RA,E,Noise_Soccer_1920x1080_50fps.y4m,v02.0.0,0.2071,-9.2657,4.202,-0.1447,3.6446,1.2087,-1.0144,-1.2257,0.7515,-1.2971,-0.7606,-9.1505,4.2207,-0.8644 RA,E,Noise_Soccer_1920x1080_50fps.y4m,v03.0.0,-2.0629,-12.3321,-0.2259,-2.628,0.8722,-0.542,-10.6577,-9.0812,-2.6391,-3.0163,-3.1122,-12.2135,-0.3757,-3.2492 RA,E,Noise_Soccer_1920x1080_50fps.y4m,v04.0.0,-5.7901,-26.3616,-7.3739,-7.3785,-4.1071,-4.0973,-20.1918,-17.9072,-7.0704,-7.525,-6.8315,-26.4091,-7.6057,-7.2195 @@ -3191,8 +3189,8 @@ RA,E,Noise_Soccer_1920x1080_50fps.y4m,v10.0.0,-11.4915,-39.6763,-12.0075,-13.573 RA,E,Noise_Soccer_1920x1080_50fps.y4m,v11.0.0,-13.9241,-38.7866,-12.2792,-15.6176,-16.0508,-13.5218,-30.3167,-29.1127,-18.332,-15.4761,-13.8455,-38.9747,-12.4255,-14.2758 RA,E,Noise_Soccer_1920x1080_50fps.y4m,v12.0.0,-14.2547,-40.2009,-12.509,-16.0321,-16.501,-13.83,-31.3724,-30.1542,-18.8033,-15.9108,-14.198,-40.4157,-12.6287,-14.643 RA,E,Noise_Soccer_1920x1080_50fps.y4m,v13.0.0,-14.3623,-40.1661,-11.7034,-16.0518,-10.052,-13.6971,-31.5268,-30.2814,-18.7515,-15.9612,-14.3346,-40.377,-11.848,-14.7533 -RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,libaom-v3.12.0,2.2251,-3.0142,-1.5017,1.7015,-0.5885,-1.0134,0.5303,0.4022,0.7256,-0.6663,-0.7327,-4.211,-2.7888,-1.1633 -RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,libaom-v3.12.0-unconstrained,-4.6119,4.3567,4.4192,-3.5407,12.5518,4.5947,-6.8244,-7.0645,-4.1282,2.0631,-10.7431,1.2653,1.5853,-8.6221 +RA,E,Noise_Soccer_1920x1080_50fps.y4m,v14.0.0,-14.2986,-39.9883,-11.8547,-15.9976,-9.987,-13.668,-31.7195,-30.4027,-18.7133,-15.9063,-14.2545,-40.1993,-11.9997,-14.6755 +RA,E,Noise_Soccer_1920x1080_50fps.y4m,v15.0.0,-14.3079,-39.8277,-11.9828,-16.0024,-10.0305,-13.6293,-31.664,-30.3516,-18.6483,-15.8968,-14.2828,-40.0358,-12.1135,-14.7026 RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v02.0.0,-0.7045,-0.6068,-1.3918,-0.7413,1.7367,0.2571,-1.1606,-1.0987,-0.5461,-0.4051,-1.3065,-0.9637,-1.6854,-1.3044 RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v03.0.0,-8.7503,-6.8517,-8.6397,-8.6284,-7.548,-8.7149,-12.0167,-11.5146,-8.6445,-7.8634,-9.2502,-7.4169,-9.0667,-9.0788 RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v04.0.0,-18.2103,-21.7041,-21.6921,-18.6451,-16.91,-18.3456,-21.4778,-20.8832,-18.1842,-19.4429,-18.3574,-22.5087,-22.4063,-19.0872 @@ -3205,8 +3203,8 @@ RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v10.0.0,-29.6023,-31.6458,-32.692,-29. RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v11.0.0,-30.7327,-33.8459,-34.7876,-31.1796,-29.6507,-30.8398,-33.713,-32.6996,-30.2261,-32.7728,-30.3666,-34.5728,-35.4911,-31.1819 RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v12.0.0,-30.3058,-33.5942,-34.3791,-30.7649,-29.0819,-30.2849,-33.214,-32.2023,-29.7927,-32.3279,-30.0191,-34.3555,-35.1098,-30.8438 RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v13.0.0,-30.4548,-33.9732,-34.4756,-30.925,-33.9586,-30.4181,-33.1439,-32.1989,-29.9588,-32.5728,-30.2166,-34.6299,-35.1467,-31.0355 -RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,libaom-v3.12.0,5.7496,-3.5661,-2.931,4.458,2.3235,1.4325,1.8649,2.29,4.3027,-1.1054,6.5809,-0.8774,-0.2576,5.2268 -RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,libaom-v3.12.0-unconstrained,-6.7792,-8.6747,-8.5244,-7.0228,-6.2939,-5.7948,-6.2352,-6.3651,-6.692,-8.1308,-8.4337,-10.963,-10.9688,-8.8554 +RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v14.0.0,-30.3983,-33.8523,-34.3581,-30.8605,-33.8976,-30.3873,-33.2102,-32.2346,-29.887,-32.4739,-30.1562,-34.5155,-35.0794,-30.9694 +RA,E,Shaky_Baseball_3840x2160_5994fps.y4m,v15.0.0,-30.4492,-33.8734,-34.385,-30.9081,-33.9197,-30.4401,-33.2687,-32.274,-29.9388,-32.5469,-30.1979,-34.5244,-35.0946,-31.0059 RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v02.0.0,-0.1375,-7.9704,-2.4067,-0.9358,-1.2061,-1.2403,-4.1744,-3.9927,-1.1565,-4.7069,-0.6682,-5.9841,-2.1274,-1.5458 RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v03.0.0,-4.5649,-17.8112,-10.7485,-6.0911,-7.0529,-7.7712,-4.7475,-5.3302,-6.5199,-12.3564,-5.9443,-15.5579,-10.8598,-7.7444 RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v04.0.0,-7.3916,-18.275,-13.6316,-8.7,-9.3656,-10.5939,-7.1836,-7.7895,-8.8721,-14.0282,-8.8689,-17.0659,-14.5711,-10.4579 @@ -3219,8 +3217,8 @@ RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v10.0.0,-23.5965,-41.8743,-36.3336,-2 RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v11.0.0,-23.6082,-45.4827,-39.7642,-26.9809,-21.2478,-23.0403,-17.937,-18.5173,-26.7129,-37.2779,-24.4658,-43.2455,-40.1322,-28.4522 RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v12.0.0,-23.8657,-45.6905,-40.2346,-27.2511,-21.3793,-23.2263,-18.2197,-18.7754,-27.0037,-38.0165,-24.7185,-43.3237,-40.3341,-28.6846 RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v13.0.0,-23.6697,-45.8946,-39.755,-27.091,-31.9088,-23.1101,-17.8026,-18.4124,-26.8082,-37.9606,-24.5486,-43.417,-40.1354,-28.5381 -RA,E,Shaky_Quad_1920x1080_30fps.y4m,libaom-v3.12.0,1.6552,-18.6912,-22.0005,-0.1403,-0.3865,-0.2853,2.3632,3.8751,2.0551,-2.9918,2.5062,-18.7123,-22.8943,2.1853 -RA,E,Shaky_Quad_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,-5.0286,-18.1457,-10.7784,-5.6785,-10.1414,-8.9993,-12.9559,-12.4148,-7.0883,-6.5466,-8.3883,-20.3151,-13.6934,-8.4721 +RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v14.0.0,-23.587,-45.425,-39.598,-26.9857,-31.8234,-23.0451,-17.3338,-17.9788,-26.6966,-37.5636,-24.4535,-43.1704,-40.0963,-28.4387 +RA,E,Shaky_Fireworks_3840x2160_2997fps.y4m,v15.0.0,-23.573,-45.2363,-39.5342,-26.956,-31.8012,-23.05,-17.4951,-18.0817,-26.6775,-37.428,-24.4277,-43.0158,-40.1012,-28.4045 RA,E,Shaky_Quad_1920x1080_30fps.y4m,v02.0.0,-0.7969,-31.186,-37.9042,-3.6941,-1.5639,-1.3797,-3.344,-2.8876,-1.5796,-5.5662,-1.0001,-30.6168,-37.0224,-1.3992 RA,E,Shaky_Quad_1920x1080_30fps.y4m,v03.0.0,-4.0379,-41.6432,-39.314,-7.1866,-4.838,-4.635,-9.0968,-8.5139,-4.8723,-9.7133,-4.2586,-41.5287,-38.4574,-4.7049 RA,E,Shaky_Quad_1920x1080_30fps.y4m,v04.0.0,-5.8615,-46.7051,-44.1873,-9.3779,-8.4825,-7.8672,-15.7613,-14.6623,-7.4309,-13.4364,-6.1342,-46.5596,-43.5132,-6.6711 @@ -3233,8 +3231,8 @@ RA,E,Shaky_Quad_1920x1080_30fps.y4m,v10.0.0,-12.0606,-66.3276,-63.4038,-17.5907, RA,E,Shaky_Quad_1920x1080_30fps.y4m,v11.0.0,-11.7157,-68.7815,-64.9925,-17.6241,-15.0638,-14.5062,-23.2698,-22.1284,-13.9051,-25.148,-11.8381,-69.4283,-65.0572,-12.7459 RA,E,Shaky_Quad_1920x1080_30fps.y4m,v12.0.0,-11.9091,-68.1759,-64.0136,-17.666,-15.0964,-14.605,-23.2582,-22.0946,-14.0655,-25.2066,-12.0426,-68.805,-64.1136,-12.9394 RA,E,Shaky_Quad_1920x1080_30fps.y4m,v13.0.0,-11.9568,-66.605,-61.73,-17.3877,-13.4438,-14.6074,-23.5522,-22.3243,-14.0988,-24.6053,-12.0923,-67.1306,-61.7187,-12.9616 -RA,E,Shaky_Walk_1920x1080_25fps.y4m,libaom-v3.12.0,0.4109,-12.3153,-12.5497,-0.7627,-0.8841,-1.3923,7.4646,6.143,0.8299,-3.1364,0.4047,-12.107,-12.5922,0.1661 -RA,E,Shaky_Walk_1920x1080_25fps.y4m,libaom-v3.12.0-unconstrained,-8.5708,-8.0756,-10.8307,-8.6286,-12.2569,-11.6845,-13.5627,-13.8385,-9.9349,-10.2228,-12.8657,-10.9564,-13.4066,-12.8654 +RA,E,Shaky_Quad_1920x1080_30fps.y4m,v14.0.0,-11.9265,-66.6018,-61.4882,-17.3468,-13.3978,-14.5645,-23.4708,-22.2684,-14.034,-24.5667,-12.0596,-67.1336,-61.4662,-12.9284 +RA,E,Shaky_Quad_1920x1080_30fps.y4m,v15.0.0,-11.9419,-66.9858,-61.8168,-17.4086,-13.4017,-14.5516,-23.4266,-22.2076,-14.0485,-24.5811,-12.0748,-67.5428,-61.8193,-12.9464 RA,E,Shaky_Walk_1920x1080_25fps.y4m,v02.0.0,-1.9692,-2.1722,-4.2372,-2.09,-1.7236,-1.8001,-3.138,-3.5152,-1.7635,-1.6698,-2.108,-0.8296,-2.8838,-2.1078 RA,E,Shaky_Walk_1920x1080_25fps.y4m,v03.0.0,-6.2628,-8.9653,-0.6374,-6.1714,-5.7747,-5.7354,-9.7313,-9.7827,-5.9976,-5.2554,-6.4189,-8.0024,0.8312,-6.4054 RA,E,Shaky_Walk_1920x1080_25fps.y4m,v04.0.0,-12.0828,-20.3313,-13.7556,-12.5894,-11.8272,-11.8306,-18.4016,-17.9175,-11.8114,-13.1369,-12.3092,-19.5003,-12.4627,-12.4298 @@ -3247,8 +3245,8 @@ RA,E,Shaky_Walk_1920x1080_25fps.y4m,v10.0.0,-19.3605,-45.4629,-46.0945,-22.2281, RA,E,Shaky_Walk_1920x1080_25fps.y4m,v11.0.0,-20.585,-48.5926,-49.6821,-23.7141,-21.697,-21.304,-30.3208,-29.4745,-21.5796,-28.3992,-20.8362,-48.4618,-49.5809,-21.5157 RA,E,Shaky_Walk_1920x1080_25fps.y4m,v12.0.0,-20.5836,-47.6817,-49.3027,-23.6278,-21.4552,-21.1536,-30.1857,-29.3232,-21.482,-28.1712,-20.8269,-47.5862,-49.1446,-21.4886 RA,E,Shaky_Walk_1920x1080_25fps.y4m,v13.0.0,-20.7337,-46.3195,-45.8482,-23.4992,-20.0487,-21.3332,-30.4272,-29.5815,-21.6266,-27.7259,-20.9841,-46.0646,-45.6469,-21.5999 -RA,E,Vertical_Carnaby_1080x1920_5994.y4m,libaom-v3.12.0,2.384,-3.1821,-4.5748,1.7024,-0.9435,-1.0811,2.3756,2.2163,1.7385,-2.6035,2.9589,-3.3543,-4.7344,2.0096 -RA,E,Vertical_Carnaby_1080x1920_5994.y4m,libaom-v3.12.0-unconstrained,-6.1593,-3.8669,-3.618,-5.9154,-6.9057,-6.6496,-7.814,-8.09,-6.3601,-5.3623,-7.6828,-5.0934,-4.8832,-7.3236 +RA,E,Shaky_Walk_1920x1080_25fps.y4m,v14.0.0,-20.6899,-46.152,-45.2925,-23.4225,-20.0251,-21.2734,-30.3146,-29.433,-21.572,-27.688,-20.9326,-45.8975,-45.0347,-21.5432 +RA,E,Shaky_Walk_1920x1080_25fps.y4m,v15.0.0,-20.69,-46.1519,-45.3341,-23.4258,-20.0122,-21.2625,-30.3155,-29.4451,-21.5698,-27.7002,-20.9287,-45.9042,-45.0836,-21.5407 RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v02.0.0,-1.8348,-1.374,-1.4732,-1.7946,-1.623,-1.6792,-1.5822,-1.6085,-1.599,-1.4641,-1.7673,-1.3429,-1.5275,-1.7298 RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v03.0.0,-6.9563,-5.808,-4.8316,-6.7924,-6.8642,-7.0898,-8.2519,-8.0817,-6.6204,-5.8357,-6.8935,-5.8557,-4.8601,-6.7249 RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v04.0.0,-10.8986,-13.6832,-11.8042,-11.0844,-10.9532,-11.3574,-13.1997,-12.9269,-10.5504,-11.6153,-10.6688,-13.8191,-11.8093,-10.9509 @@ -3261,8 +3259,8 @@ RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v10.0.0,-18.5691,-21.2607,-20.3271,-18. RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v11.0.0,-18.7341,-22.5557,-21.3059,-19.0709,-18.5097,-19.094,-24.3048,-23.308,-18.2329,-21.1299,-18.4266,-22.8583,-21.3979,-18.8443 RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v12.0.0,-18.6488,-22.4711,-21.8906,-19.0188,-18.3472,-19.0199,-24.8345,-23.6535,-18.173,-21.1733,-18.3436,-22.7622,-21.9821,-18.8009 RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v13.0.0,-18.6395,-22.7676,-21.7998,-19.0191,-23.3819,-19.1267,-24.6624,-23.5236,-18.176,-21.3702,-18.3425,-23.0506,-21.9459,-18.8148 -RA,E,WalkingInStreet_1920x1080_30fps.y4m,libaom-v3.12.0,-0.999,-5.7677,-9.3122,-1.4961,-2.3458,-3.5745,-5.8781,-4.4672,0.0224,-4.0704,-1.6982,-6.0999,-10.6325,-2.1196 -RA,E,WalkingInStreet_1920x1080_30fps.y4m,libaom-v3.12.0-unconstrained,-10.9643,0.5679,5.2574,-9.869,-9.975,-9.6946,-20.8295,-20.8358,-12.0229,-6.3269,-14.4625,-2.7874,3.0379,-13.3674 +RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v14.0.0,-18.5648,-22.536,-21.7058,-18.9354,-23.3129,-19.0979,-24.5266,-23.4364,-18.1139,-21.136,-18.2731,-22.8213,-21.8262,-18.7311 +RA,E,Vertical_Carnaby_1080x1920_5994.y4m,v15.0.0,-18.5952,-22.0377,-21.6214,-18.9335,-23.2874,-18.9846,-24.3264,-23.2689,-18.0953,-21.0188,-18.2819,-22.3169,-21.7318,-18.7115 RA,E,WalkingInStreet_1920x1080_30fps.y4m,v02.0.0,-1.7596,-4.7548,-16.3942,-2.4024,-0.7888,-1.2497,-2.6203,-2.6937,-1.5934,-3.8912,-1.9887,-4.943,-16.6484,-2.4035 RA,E,WalkingInStreet_1920x1080_30fps.y4m,v03.0.0,-7.4691,-10.6778,-16.3702,-7.9311,-6.136,-6.5499,-12.6637,-11.9441,-6.5716,-9.1082,-7.7882,-11.1297,-16.5748,-8.1841 RA,E,WalkingInStreet_1920x1080_30fps.y4m,v04.0.0,-12.3894,-17.1654,-27.0747,-13.1441,-11.2477,-11.788,-19.2336,-18.2385,-11.1446,-15.8832,-12.7656,-17.6791,-27.4491,-13.3806 @@ -3275,8 +3273,8 @@ RA,E,WalkingInStreet_1920x1080_30fps.y4m,v10.0.0,-19.1507,-26.0183,-38.9116,-20. RA,E,WalkingInStreet_1920x1080_30fps.y4m,v11.0.0,-20.3588,-26.7872,-38.1959,-21.3308,-19.375,-19.2531,-27.7673,-26.7776,-18.9097,-24.5508,-20.7549,-27.5956,-38.838,-21.5651 RA,E,WalkingInStreet_1920x1080_30fps.y4m,v12.0.0,-20.5575,-27.452,-37.5428,-21.523,-19.1866,-19.2393,-27.9075,-26.9478,-19.0225,-24.6075,-20.9457,-28.3251,-38.1374,-21.7759 RA,E,WalkingInStreet_1920x1080_30fps.y4m,v13.0.0,-20.5949,-26.8989,-37.4313,-21.5198,-19.6089,-19.408,-28.0162,-27.0344,-19.0729,-24.6025,-20.9873,-27.7424,-38.0449,-21.7778 -RA,E,WorldCup_far_1920x1080_30p.y4m,libaom-v3.12.0,1.7338,-5.1748,-5.0334,1.0009,1.3069,2.6683,-2.3203,-0.6408,0.1886,-0.4645,1.326,-5.9127,-5.6654,0.3755 -RA,E,WorldCup_far_1920x1080_30p.y4m,libaom-v3.12.0-unconstrained,-6.0667,-3.3275,-0.9542,-5.6615,-10.7025,-8.0299,-12.4376,-11.3635,-8.1507,-6.0253,-7.1451,-4.5179,-2.0633,-6.6179 +RA,E,WalkingInStreet_1920x1080_30fps.y4m,v14.0.0,-20.5663,-26.9412,-37.4742,-21.4981,-19.5885,-19.4113,-27.9866,-26.9931,-19.0775,-24.6136,-20.9627,-27.7844,-38.0922,-21.7594 +RA,E,WalkingInStreet_1920x1080_30fps.y4m,v15.0.0,-20.5377,-27.1244,-37.6763,-21.4896,-19.5545,-19.352,-27.944,-26.952,-19.0399,-24.6407,-20.9347,-27.9627,-38.2817,-21.7464 RA,E,WorldCup_far_1920x1080_30p.y4m,v02.0.0,-2.3967,-4.2514,-3.8943,-2.5751,-2.0166,-2.2147,-2.7467,-2.5678,-2.3346,-3.7372,-2.4732,-4.3653,-3.9043,-2.6701 RA,E,WorldCup_far_1920x1080_30p.y4m,v03.0.0,-8.2888,-8.9649,-6.7168,-8.2413,-6.7253,-7.3024,-12.1803,-10.7587,-7.3536,-8.8957,-8.3873,-9.1095,-6.6907,-8.3674 RA,E,WorldCup_far_1920x1080_30p.y4m,v04.0.0,-14.9111,-17.4987,-15.4249,-15.0767,-13.1173,-13.793,-18.3968,-17.0352,-13.4673,-16.4782,-15.0405,-17.7525,-15.4623,-15.287 @@ -3289,8 +3287,8 @@ RA,E,WorldCup_far_1920x1080_30p.y4m,v10.0.0,-22.9585,-25.2329,-22.4503,-23.0528, RA,E,WorldCup_far_1920x1080_30p.y4m,v11.0.0,-22.8643,-25.4771,-22.8631,-23.0031,-19.2581,-20.0569,-25.4676,-24.346,-20.9162,-24.1604,-23.1406,-25.8922,-23.062,-23.3667 RA,E,WorldCup_far_1920x1080_30p.y4m,v12.0.0,-23.3067,-25.9997,-23.5087,-23.4603,-19.5085,-20.4064,-25.8943,-24.8183,-21.2991,-24.5405,-23.5871,-26.4217,-23.7182,-23.8311 RA,E,WorldCup_far_1920x1080_30p.y4m,v13.0.0,-23.1595,-25.8099,-23.1417,-23.2999,-22.0605,-20.2074,-25.8011,-24.6581,-21.1657,-24.2469,-23.4349,-26.2243,-23.3473,-23.6657 -RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,libaom-v3.12.0,-4.9388,-0.6166,3.87,-4.4479,-7.1432,-5.9363,-4.8979,-5.1851,-6.6076,-3.4578,-5.3793,-0.8661,3.5575,-5.1084 -RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,-7.4273,-4.9573,-15.0579,-7.7136,-0.4693,-7.6794,-9.8419,-10.021,-9.395,-7.2649,-7.8118,-5.0455,-15.2477,-7.7517 +RA,E,WorldCup_far_1920x1080_30p.y4m,v14.0.0,-23.1575,-25.8494,-23.2477,-23.3061,-22.0512,-20.2493,-25.8077,-24.7107,-21.1686,-24.2341,-23.4312,-26.2621,-23.4616,-23.6698 +RA,E,WorldCup_far_1920x1080_30p.y4m,v15.0.0,-23.1473,-25.8409,-23.2528,-23.2968,-22.0443,-20.2328,-25.8036,-24.702,-21.1562,-24.2181,-23.4208,-26.2506,-23.4689,-23.6604 RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v02.0.0,-2.0342,-11.7468,-25.2906,-4.5499,0.5061,-1.4959,-3.1371,-3.1553,-1.9882,-6.9771,-2.0841,-11.7286,-25.3154,-2.8179 RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v03.0.0,-17.8786,-24.6578,-37.2744,-19.5864,-13.696,-16.7788,-28.1151,-26.6887,-16.7146,-21.1853,-18.0234,-24.5884,-37.1387,-18.5734 RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v04.0.0,-27.1755,-32.5865,-50.8776,-29.1647,-23.2656,-26.8138,-39.3144,-37.128,-25.8962,-30.1626,-27.3501,-32.533,-50.8688,-27.9207 @@ -3303,8 +3301,8 @@ RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v10.0.0,-41.1057,-47.8028,-58.6605,- RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v11.0.0,-42.5217,-49.6973,-57.6267,-44.1053,-42.6896,-42.3976,-51.9769,-50.1819,-41.5371,-45.8625,-42.8263,-49.8036,-57.6927,-43.2972 RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v12.0.0,-42.4781,-50.5863,-53.7408,-43.8634,-42.2795,-42.1713,-52.0541,-50.2755,-41.3363,-46.0398,-42.7807,-50.6849,-53.8391,-43.2451 RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v13.0.0,-42.6354,-49.4133,-54.6337,-43.9479,-41.6149,-42.3674,-52.1808,-50.2892,-41.48,-45.9091,-42.9372,-49.534,-54.7115,-43.3705 -RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0,3.0091,-8.4467,-16.7818,1.9266,1.6874,2.1229,3.2784,3.0962,2.472,-2.2133,3.8672,-8.6496,-16.6107,3.5015 -RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0-unconstrained,-12.5044,0.3136,6.0544,-11.3549,-12.2651,-14.6481,-11.5524,-11.7338,-12.0424,-15.7296,-13.1773,0.3286,6.3364,-12.516 +RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v14.0.0,-42.4296,-49.1779,-54.3018,-43.7358,-41.4687,-42.1874,-52.0411,-50.1515,-41.311,-45.6857,-42.7313,-49.2998,-54.3804,-43.1602 +RA,G1,MeridianRoad_3840x2160_5994_hdr10.y4m,v15.0.0,-42.4214,-49.2243,-54.288,-43.7284,-41.4575,-42.1806,-52.084,-50.168,-41.3027,-45.7016,-42.7232,-49.3461,-54.3653,-43.1544 RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v02.0.0,9.1953,-18.2776,-48.7348,4.5998,4.6474,8.6421,6.4908,6.3347,7.2331,1.9893,9.6764,-18.7382,-48.4753,8.2874 RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v03.0.0,-10.0811,-38.7541,-52.4197,-13.5413,-9.7408,-9.7247,-14.6463,-14.0092,-10.4541,-19.5974,-10.2731,-38.9533,-52.3341,-11.9848 RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v04.0.0,-15.7683,-47.8797,-59.7132,-19.5701,-14.3937,-15.1639,-22.7164,-21.5473,-15.8739,-26.7155,-15.8972,-47.9948,-59.6468,-17.9312 @@ -3317,8 +3315,8 @@ RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v10.0.0,-25.5264,-62.4888,-62.7456 RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v11.0.0,-25.5999,-63.3576,-62.9502,-29.342,-24.3951,-24.2566,-35.5854,-34.2128,-25.568,-38.7151,-25.9493,-63.5654,-63.0113,-28.5279 RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v12.0.0,-24.9379,-63.7481,-63.4565,-28.7992,-23.666,-23.3515,-34.9938,-33.6391,-24.8443,-38.7185,-25.2829,-63.9059,-63.5157,-27.9293 RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v13.0.0,-24.957,-62.8105,-61.2922,-28.6202,-24.4117,-23.3838,-34.9931,-33.6336,-24.8416,-37.7295,-25.3059,-62.9592,-61.3273,-27.8938 -RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0,-3.031,-14.6605,-34.5593,-4.1096,1.9622,-4.1118,0.6064,0.5115,-4.0272,-12.1149,-4.5401,-17.2542,-35.6944,-5.2514 -RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,libaom-v3.12.0-unconstrained,-15.3832,-9.9252,-0.1263,-14.5031,-17.3907,-17.664,-24.5605,-24.5136,-16.1085,-20.0229,-19.6056,-12.829,-1.9531,-18.7759 +RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v14.0.0,-24.8586,-62.8038,-61.4689,-28.5339,-24.3125,-23.2737,-34.9226,-33.5452,-24.7437,-37.6994,-25.2057,-62.9464,-61.5103,-27.7964 +RA,G1,NocturneDance_3840x2160_60fps_hdr10.y4m,v15.0.0,-24.8702,-63.0511,-61.7409,-28.5734,-24.2949,-23.3063,-34.8504,-33.4897,-24.7609,-37.88,-25.2199,-63.2084,-61.7619,-27.8203 RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v02.0.0,-25.5545,-26.5747,-38.6338,-27.1435,-13.05,-23.2687,4.7635,4.0182,-21.2155,-38.7416,-25.8695,-26.3272,-38.6201,-26.6847 RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v03.0.0,-14.2897,-25.6181,-33.2079,-15.8206,-14.1009,-11.629,-27.2371,-25.8293,-13.2786,-23.7028,-14.521,-26.0354,-32.0338,-16.015 RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v04.0.0,-17.2062,-33.0821,-45.7937,-19.5146,-17.0417,-14.735,-33.8392,-31.562,-16.3309,-28.3957,-17.4621,-33.4226,-46.249,-19.6645 @@ -3331,8 +3329,8 @@ RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v10.0.0,-30.2729,-48.0562,-60.4746, RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v11.0.0,-30.3172,-52.0137,-65.7951,-33.1525,-29.4217,-26.1075,-48.9703,-46.1255,-28.8543,-56.4873,-31.1131,-53.0143,-65.7848,-33.7978 RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v12.0.0,-30.7668,-53.9429,-65.985,-33.7338,-29.0505,-26.3027,-49.5893,-46.5169,-29.4701,-58.99,-31.4553,-54.9345,-66.093,-34.3378 RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v13.0.0,-30.6605,-53.7316,-61.3747,-33.3629,-22.7956,-26.1597,-49.9003,-46.9164,-29.2812,-56.7169,-31.3869,-54.7939,-62.2715,-34.1549 -RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,libaom-v3.12.0,7.9637,-6.5155,-7.5098,6.9345,4.0126,5.432,10.431,10.0042,6.8303,0.7782,10.1932,-5.361,-7.2154,9.587 -RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,-4.2581,-7.8339,-10.0392,-4.5653,-6.619,-5.0473,-3.9405,-4.4028,-4.8311,-7.9361,-6.6053,-8.5317,-11.5184,-6.7595 +RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v14.0.0,-30.3042,-53.427,-60.8018,-32.9907,-22.6493,-25.927,-49.4405,-46.5122,-28.9811,-56.3663,-31.0245,-54.498,-61.6955,-33.7845 +RA,G1,NocturneRoom_3840x2160_60fps_hdr10.y4m,v15.0.0,-30.2975,-53.6575,-60.5727,-32.9855,-22.6525,-25.9124,-49.8465,-46.7356,-28.9762,-56.156,-30.9868,-54.7405,-61.2384,-33.7605 RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v02.0.0,-6.3989,-17.2395,-22.9628,-7.6957,-6.9919,-7.9824,-12.1085,-11.9766,-7.3993,-8.6565,-5.9203,-18.0971,-25.1786,-6.5898 RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v03.0.0,-15.7085,-31.2138,-31.4554,-16.9388,-11.1117,-13.4077,-14.6503,-14.6474,-14.4429,-17.6095,-15.8705,-31.937,-32.6287,-16.6733 RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v04.0.0,-21.0425,-43.4422,-41.8802,-22.7735,-15.7528,-19.0131,-21.4423,-21.247,-19.9611,-25.5527,-21.2504,-44.1694,-43.0265,-22.5545 @@ -3345,8 +3343,8 @@ RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v10.0.0,-29.3899,-60.2015,-61.2876, RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v11.0.0,-28.8228,-60.0842,-61.6087,-31.6425,-22.4359,-26.0575,-31.7374,-31.4253,-27.7952,-37.1354,-29.109,-61.4179,-62.9546,-30.9841 RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v12.0.0,-28.6585,-60.4598,-61.3879,-31.5067,-22.5387,-25.9498,-31.9629,-31.585,-27.6161,-37.0772,-28.9247,-61.7848,-62.7834,-30.8117 RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v13.0.0,-28.6689,-59.6581,-61.2689,-31.4533,-30.9107,-25.9456,-31.8282,-31.4893,-27.6104,-36.8521,-28.9232,-61.0257,-62.6578,-30.771 -RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,libaom-v3.12.0,0.8104,-2.0857,-3.039,0.2424,-1.3824,-0.632,0.4059,0.0045,-1.2435,-1.0565,1.7699,-1.4272,-2.4544,0.9573 -RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,libaom-v3.12.0-unconstrained,-3.5638,-5.4855,-4.8283,-3.795,-6.3968,-6.0422,-5.4996,-5.2637,-3.9645,-5.9117,-3.3131,-5.4691,-4.9199,-3.6416 +RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v14.0.0,-28.6502,-59.6605,-61.2164,-31.4292,-30.8971,-25.9207,-31.7892,-31.4515,-27.5929,-36.8237,-28.905,-61.036,-62.6176,-30.7526 +RA,G1,SparksWelding_4096x2160_5994_hdr10.y4m,v15.0.0,-28.6435,-59.7053,-61.2021,-31.4258,-30.8879,-25.9114,-31.7797,-31.4158,-27.5844,-36.6573,-28.8951,-61.0855,-62.6104,-30.7427 RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v02.0.0,-2.4401,-3.9908,-2.5278,-2.5559,-1.4515,-1.6277,-2.8481,-2.7095,-1.9524,-2.178,-2.4823,-4.0254,-2.5465,-2.6011 RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v03.0.0,-12.1737,-9.3164,-8.3958,-11.6923,-11.1053,-11.1703,-16.9282,-15.6855,-10.9383,-9.8952,-12.241,-9.4055,-8.4317,-11.6188 RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v04.0.0,-18.6023,-19.2423,-18.011,-18.607,-17.6546,-17.7162,-25.9709,-24.1163,-17.5859,-17.4896,-18.6959,-19.3137,-18.1308,-18.6699 @@ -3359,8 +3357,8 @@ RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v10.0.0,-27.9465,-24.7188,-23.7101 RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v11.0.0,-28.7211,-24.644,-23.6728,-28.0636,-26.5437,-26.6133,-35.7875,-34.2008,-26.9996,-24.7999,-29.0516,-24.8556,-23.9928,-28.1537 RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v12.0.0,-28.6303,-24.9727,-24.5287,-28.0724,-26.2717,-26.3487,-35.8303,-34.252,-26.9061,-24.9742,-28.9475,-25.1764,-24.7639,-28.177 RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v13.0.0,-28.9338,-25.6998,-24.3243,-28.3681,-30.5818,-26.7009,-36.2978,-34.6575,-27.1619,-25.3512,-29.254,-25.9305,-24.5644,-28.4736 -RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,libaom-v3.12.0,0.9384,-10.6853,-10.6651,0.0854,-1.5033,-1.6087,1.9327,1.8728,1.3042,-3.5245,1.2843,-10.9569,-11.3573,0.9221 -RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,libaom-v3.12.0-unconstrained,-12.5493,7.7506,9.5662,-10.9168,-16.4661,-15.6166,-20.3537,-20.239,-14.2562,-12.3314,-15.3051,6.6691,8.4091,-14.4205 +RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v14.0.0,-28.562,-25.4432,-24.1091,-28.0158,-30.2587,-26.3536,-35.6629,-34.0329,-26.8572,-25.0455,-28.9004,-25.6872,-24.3656,-28.1445 +RA,G2,CosmosCaterpillar_2048x858p24_hdr10.y4m,v15.0.0,-28.5653,-25.3547,-24.0924,-28.0114,-30.261,-26.356,-35.6561,-34.0328,-26.8542,-25.0358,-28.9014,-25.5856,-24.3423,-28.1363 RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v02.0.0,1.5756,-2.1118,-10.7323,0.8327,1.125,0.9983,-2.8813,-2.7268,0.4172,6.2804,2.0309,-3.937,-13.0034,1.7423 RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v03.0.0,-7.2653,-15.633,-33.3921,-8.9514,-6.5781,-6.9972,-13.1865,-12.126,-6.2832,-10.2449,-7.429,-16.5979,-34.8507,-8.1192 RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v04.0.0,-11.3192,-31.8559,-44.8199,-14.145,-10.6626,-11.1607,-19.0659,-17.6748,-10.3381,-17.8564,-11.4471,-32.8776,-46.1447,-12.6564 @@ -3373,8 +3371,8 @@ RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v10.0.0,-20.8322,-47.1811,-53.6642,- RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v11.0.0,-21.4249,-47.4509,-56.0959,-24.6932,-20.2119,-20.8783,-30.094,-29.021,-20.6677,-31.5802,-21.848,-48.1518,-57.3211,-23.2242 RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v12.0.0,-21.6118,-48.4259,-55.7607,-24.8948,-20.1245,-20.8457,-30.0547,-29.0571,-20.7325,-31.377,-22.0355,-49.107,-56.9625,-23.4319 RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v13.0.0,-21.7995,-48.1889,-54.0052,-24.9413,-21.6489,-21.1318,-30.0723,-29.0138,-20.9273,-32.0774,-22.2381,-49.009,-55.2918,-23.6012 -RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,libaom-v3.12.0,2.7906,16.749,0.7737,3.1123,10.0304,8.2687,6.0201,5.0884,3.5512,7.7169,2.534,16.6178,0.7867,2.7179 -RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,-14.302,-7.9901,-17.7522,-14.2859,-19.7221,-17.788,-18.8431,-18.9428,-15.8499,-15.2448,-15.6127,-7.9408,-17.5096,-15.5082 +RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v14.0.0,-21.6848,-47.8824,-53.7922,-24.8094,-21.5561,-21.0009,-30.0235,-28.9553,-20.8199,-31.8534,-22.1207,-48.7175,-55.096,-23.4781 +RA,G2,CosmosTreeTrunk_2048x858p24_hdr10.y4m,v15.0.0,-21.6808,-47.8942,-53.9598,-24.8162,-21.5494,-21.0191,-30.1356,-29.0463,-20.8381,-31.9261,-22.1151,-48.7041,-55.2218,-23.472 RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v02.0.0,-2.0854,-51.2349,-59.9434,-8.1409,-2.2423,-2.2531,-0.7076,-0.932,-2.8145,-15.7637,-2.1528,-51.2256,-59.6344,-3.0918 RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v03.0.0,-10.2462,-55.2016,-60.9314,-15.517,-9.7389,-10.1193,-14.4454,-13.8835,-10.2196,-21.0679,-10.3346,-55.0955,-60.5523,-11.2069 RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v04.0.0,-14.4157,-60.4477,-68.2175,-20.2358,-14.3223,-14.7222,-21.1414,-20.3542,-14.2704,-27.4911,-14.4786,-60.3786,-68.0147,-15.4528 @@ -3387,8 +3385,8 @@ RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v10.0.0,-23.0777,-65.8804,-72.1529, RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v11.0.0,-23.7279,-63.4552,-70.8054,-28.8559,-21.1042,-21.7618,-30.9319,-29.7078,-23.8586,-35.1538,-24.1315,-63.4291,-70.7822,-25.0294 RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v12.0.0,-24.0564,-67.4252,-70.5857,-29.2861,-21.3739,-22.0833,-31.7761,-30.5698,-24.1662,-35.9671,-24.4467,-67.4864,-70.5763,-25.3696 RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v13.0.0,-24.2033,-65.2477,-65.9376,-29.0113,-22.7075,-22.2287,-32.1649,-30.7083,-24.2845,-34.7512,-24.5976,-65.2857,-65.8387,-25.4602 -RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,libaom-v3.12.0,2.2,7.9819,6.5543,2.6401,-0.7046,0.7102,0.1382,0.6951,0.9549,6.2195,1.9865,7.9081,6.4255,2.2017 -RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,-9.6383,-12.9221,-13.9107,-10.0011,-8.0271,-8.4947,-11.5916,-12.172,-9.1915,-11.9424,-9.9133,-12.9735,-13.9174,-10.0331 +RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v14.0.0,-23.7876,-65.017,-65.4956,-28.5929,-22.3862,-21.8282,-31.5808,-30.1365,-23.9067,-34.325,-24.1799,-65.0563,-65.3944,-25.0426 +RA,G2,MeridianShore_1920x1080_5994_hdr10.y4m,v15.0.0,-23.7821,-64.99,-65.5308,-28.5931,-22.3822,-21.8364,-31.6136,-30.1622,-23.9123,-34.334,-24.1743,-65.0287,-65.4294,-25.0374 RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v02.0.0,-5.0078,-20.7919,-32.856,-7.7667,-4.5595,-4.7583,-5.8603,-5.8659,-5.4725,-10.9366,-5.0118,-20.7508,-32.7297,-5.8127 RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v03.0.0,-20.6909,-36.3142,-43.5008,-23.1559,-17.982,-19.2498,-28.4839,-26.6469,-19.8809,-26.8085,-20.7201,-36.1859,-43.4234,-21.4755 RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v04.0.0,-25.1693,-43.017,-52.3517,-28.0471,-22.2652,-23.6616,-34.9043,-31.9037,-24.2815,-32.697,-25.1943,-42.9553,-52.1241,-26.08 @@ -3401,8 +3399,8 @@ RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v10.0.0,-35.4572,-49.2674,-53.2465,- RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v11.0.0,-35.5362,-51.5545,-53.4408,-37.5995,-32.2049,-33.4059,-42.6509,-40.5666,-34.4447,-42.3,-35.6665,-51.5503,-53.3748,-36.3619 RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v12.0.0,-36.1662,-50.6054,-55.3233,-38.248,-32.4936,-33.8656,-44.3756,-41.8768,-34.9349,-42.0224,-36.2916,-50.6036,-55.3062,-36.971 RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v13.0.0,-36.1893,-49.8451,-47.5878,-37.6675,-37.0939,-33.9882,-42.9342,-40.7561,-34.9155,-41.7333,-36.3193,-49.8245,-47.3774,-36.8783 -RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,libaom-v3.12.0,8.7376,1.6784,-1.444,7.4139,4.3354,5.9894,0.1051,0.3055,5.6221,3.5799,9.6127,2.7499,-1.0121,7.8026 -RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,libaom-v3.12.0-unconstrained,-3.7948,-2.2515,-1.2899,-3.5165,-3.7418,-3.3239,-5.1876,-5.455,-3.3794,-4.3646,-6.2014,-3.8815,-2.9834,-5.6994 +RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v14.0.0,-35.2372,-49.1744,-46.7987,-36.7406,-36.3014,-33.125,-41.903,-39.7035,-34.0729,-40.8362,-35.3685,-49.154,-46.5516,-35.934 +RA,G2,MeridianTalk_1920x1080_5994_hdr10.y4m,v15.0.0,-35.228,-49.2018,-46.8192,-36.7369,-36.287,-33.1059,-41.8645,-39.6972,-34.0624,-40.8595,-35.3594,-49.1816,-46.5715,-35.9271 RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v02.0.0,-1.7051,-4.3143,-4.3047,-2.0635,-2.0688,-1.9022,-4.8996,-4.6664,-2.3318,-2.3913,-2.0516,-4.3999,-3.975,-2.456 RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v03.0.0,-9.6247,-12.9262,-12.669,-10.064,-11.3366,-10.8515,-9.1626,-9.2604,-10.2995,-10.8714,-10.1384,-13.0731,-12.2913,-10.6082 RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v04.0.0,-12.7561,-20.9792,-20.3911,-13.8827,-14.7114,-14.1142,-13.9067,-13.9994,-14.2733,-15.933,-13.5886,-21.1238,-19.9903,-14.9432 @@ -3415,8 +3413,8 @@ RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v10.0.0,-24.212,-39.206,-46.3577, RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v11.0.0,-25.231,-44.3107,-53.3495,-28.9145,-26.9303,-26.5283,-26.9574,-27.0827,-28.9629,-36.1257,-25.4115,-44.6307,-52.0606,-29.8391 RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v12.0.0,-25.2661,-44.3259,-53.1665,-28.9268,-26.8579,-26.4885,-26.6768,-26.7984,-28.9571,-36.193,-25.5026,-44.6024,-51.7765,-29.8873 RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v13.0.0,-25.638,-44.4003,-53.0051,-29.2358,-34.8326,-26.823,-26.6964,-26.8474,-29.2233,-36.3032,-25.8277,-44.5581,-51.6051,-30.1384 -RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,libaom-v3.12.0,2.5223,-16.5678,-16.8395,1.1068,1.6724,1.3412,3.3256,3.1945,2.4975,-3.0742,5.0239,0.6534,-8.5708,4.8197 -RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,libaom-v3.12.0-unconstrained,-11.2832,-18.2578,-19.8063,-11.2676,-15.9254,-14.3664,-18.7934,-18.8504,-12.3253,-15.6221,-8.5343,3.9436,-10.1315,-8.2406 +RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v14.0.0,-25.4882,-44.1607,-52.6763,-29.0572,-34.7467,-26.682,-26.9106,-27.0467,-29.0824,-36.1184,-25.6597,-44.3116,-51.3133,-29.9482 +RA,G2,SolLevanteDragons_1920x1080p24_hdr10.y4m,v15.0.0,-25.4855,-44.1597,-52.6758,-29.0549,-34.7442,-26.6785,-26.9156,-27.05,-29.0802,-36.1167,-25.6574,-44.3107,-51.3133,-29.9463 RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v02.0.0,-6.0875,-33.475,-34.3868,-9.0902,-7.6827,-7.1087,-8.4817,-8.2495,-6.8258,-13.8429,-5.0717,-19.6341,-27.744,-5.9552 RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v03.0.0,-15.2538,-26.7423,-36.7985,-16.9424,-16.2907,-15.9476,-21.0342,-20.3327,-14.9596,-22.3804,-13.8906,-24.8176,-34.1481,-14.6455 RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v04.0.0,-20.2722,-42.6314,-49.5004,-23.2485,-20.776,-20.8397,-27.3702,-26.6424,-19.7461,-31.2296,-18.6297,-43.2505,-44.1258,-19.9925 @@ -3429,8 +3427,8 @@ RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v10.0.0,-32.1172,-55.1855,-66.5191,- RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v11.0.0,-31.8992,-59.6186,-70.338,-35.8854,-30.9894,-31.6427,-34.5096,-34.0531,-30.7454,-46.0466,-30.1066,-61.0193,-68.2749,-31.9306 RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v12.0.0,-31.9787,-62.4546,-71.2583,-36.2165,-30.9029,-31.6134,-34.4705,-34.0189,-30.8039,-46.6529,-30.2045,-62.4464,-68.6619,-32.0795 RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v13.0.0,-32.0252,-56.9266,-68.5409,-35.6895,-34.3455,-31.6833,-34.1985,-33.7156,-30.7601,-45.7642,-30.3428,-60.6645,-66.9788,-32.1195 -RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,libaom-v3.12.0,5.7957,-1.679,-5.5008,5.2588,1.5403,4.9645,-0.5179,-2.8871,0.9165,5.4048,5.3519,-1.7558,-5.5481,5.26 -RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,libaom-v3.12.0-unconstrained,-10.487,-13.7174,-18.481,-10.8001,-12.0308,-12.0955,-7.117,-8.2582,-10.4119,-11.7897,-10.8842,-13.7075,-18.5188,-10.8428 +RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v14.0.0,-31.8145,-57.602,-68.7211,-35.553,-34.2712,-31.5155,-34.1748,-33.698,-30.5819,-45.5995,-30.088,-60.8052,-67.1742,-31.8839 +RA,G2,SolLevanteFace_1920x1080p24_hdr10.y4m,v15.0.0,-31.7995,-57.5536,-68.7014,-35.5396,-34.2349,-31.4805,-34.2015,-33.715,-30.5588,-45.6467,-30.049,-60.6969,-66.9702,-31.8379 RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v02.0.0,-2.3122,-41.5694,-50.5436,-5.5607,-2.6821,-2.5395,-4.1367,-4.0079,-3.0809,-12.0462,-2.3503,-41.5793,-50.7202,-3.4046 RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v03.0.0,-11.8774,-47.2902,-57.6506,-14.8741,-11.774,-11.9206,-21.6376,-20.4986,-12.2314,-21.301,-11.9327,-47.3013,-57.7842,-13.0132 RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v04.0.0,-17.0898,-56.4125,-64.8023,-20.4458,-16.6151,-16.9814,-26.2659,-25.3277,-17.2091,-28.3722,-17.1437,-56.4323,-64.9138,-18.4008 @@ -3443,8 +3441,8 @@ RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v10.0.0,-26.4032,-60.5365,-69.7141,-2 RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v11.0.0,-25.9622,-62.5596,-69.0527,-29.1749,-25.6031,-25.0795,-35.5519,-35.2113,-26.9234,-36.3753,-26.1004,-62.5621,-69.1328,-27.3566 RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v12.0.0,-26.3384,-62.8249,-68.6296,-29.5202,-25.8884,-25.3459,-36.33,-35.7923,-27.2778,-37.2188,-26.4733,-62.8135,-68.7013,-27.7252 RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v13.0.0,-26.3883,-62.181,-70.2713,-29.6371,-23.8288,-25.5674,-36.561,-36.1059,-27.3452,-37.7814,-26.5273,-62.1885,-70.3532,-27.7894 -Still,F1,animals_00.y4m,libaom-v3.12.0,0.2778,-1.3431,-1.2539,0.1646,-1.6668,-0.3627,-0.6545,-0.4339,-0.5993,-0.0616,0.2778,-1.3431,-1.2539,0.1564 -Still,F1,animals_00.y4m,libaom-v3.12.0-unconstrained,0.9743,-3.8121,-2.6978,0.5839,-1.704,0.2182,0.6499,0.6586,0.3025,0.4292,0.9743,-3.8121,-2.6978,0.7545 +RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v14.0.0,-25.9688,-61.7239,-69.9844,-29.2148,-23.4873,-25.1412,-35.9579,-35.4802,-26.9361,-37.2915,-26.1071,-61.7306,-70.0634,-27.3626 +RA,G2,SparksTruck_2048x1080_5994_hdr10.y4m,v15.0.0,-25.9565,-61.789,-69.8657,-29.1989,-23.4746,-25.1181,-35.9509,-35.4447,-26.9164,-37.3185,-26.0938,-61.7976,-69.9462,-27.3479 Still,F1,animals_00.y4m,v02.0.0,-2.0283,-15.2001,-23.7721,-3.7068,-3.1935,-2.6214,-2.9732,-2.9657,-4.6621,-6.3335,-2.0283,-15.2001,-23.7721,-2.8635 Still,F1,animals_00.y4m,v03.0.0,-2.8485,-17.0582,-25.3236,-4.623,-3.0352,-3.3886,-3.7623,-3.5019,-5.4134,-7.3418,-2.8485,-17.0582,-25.3236,-3.739 Still,F1,animals_00.y4m,v04.0.0,-4.5574,-19.4488,-28.8411,-6.4672,-3.2409,-5.2266,-4.4811,-4.0401,-6.9554,-9.4072,-4.5574,-19.4488,-28.8411,-5.4851 @@ -3457,8 +3455,8 @@ Still,F1,animals_00.y4m,v10.0.0,-7.9969,-21.9763,-30.4154,-9.7613,-8.0746,-8.962 Still,F1,animals_00.y4m,v11.0.0,-7.7383,-22.0851,-31.0917,-9.5615,-7.58,-8.8117,-11.0619,-10.2986,-10.6311,-12.4697,-7.7383,-22.0851,-31.0917,-8.678 Still,F1,animals_00.y4m,v12.0.0,-7.6666,-21.8961,-30.8663,-9.4757,-7.8613,-8.6911,-10.7138,-10.1442,-10.5585,-12.3785,-7.6666,-21.8961,-30.8663,-8.5999 Still,F1,animals_00.y4m,v13.0.0,-7.6074,-22.0547,-30.89,-9.4364,-8.048,-8.5836,-10.7909,-10.1382,-10.4738,-12.3294,-7.6074,-22.0547,-30.89,-8.5519 -Still,F1,animals_03.y4m,libaom-v3.12.0,0.3033,-2.9385,-3.3162,0.1008,0.0883,0.3773,-0.728,0.1043,0.4325,-0.3238,0.3033,-2.9385,-3.3162,0.1867 -Still,F1,animals_03.y4m,libaom-v3.12.0-unconstrained,0.8924,-0.9373,-1.3858,0.7177,-0.4517,0.7685,2.2195,1.9639,1.2359,0.5295,0.8924,-0.9373,-1.3858,0.7846 +Still,F1,animals_00.y4m,v14.0.0,-7.7151,-22.0278,-30.9352,-9.5272,-8.2267,-8.7532,-11.0666,-10.3415,-10.4877,-12.4445,-7.7151,-22.0278,-30.9352,-8.6521 +Still,F1,animals_00.y4m,v15.0.0,-7.7151,-22.0278,-30.9352,-9.5272,-8.2267,-8.7532,-11.0666,-10.3415,-10.4877,-12.4445,-7.7151,-22.0278,-30.9352,-8.6521 Still,F1,animals_03.y4m,v02.0.0,-1.3789,-14.3092,-13.4302,-2.374,-2.1602,-1.1948,-1.67,-1.8656,-1.9856,-4.1366,-1.3789,-14.3092,-13.4302,-1.9041 Still,F1,animals_03.y4m,v03.0.0,-2.271,-16.9974,-16.7193,-3.4393,-3.516,-2.3108,-3.2091,-2.831,-3.0532,-5.3388,-2.271,-16.9974,-16.7193,-2.8772 Still,F1,animals_03.y4m,v04.0.0,-4.0898,-22.8504,-21.1834,-5.5415,-3.6576,-4.2151,-4.9141,-4.1327,-4.5427,-7.7806,-4.0898,-22.8504,-21.1834,-4.8344 @@ -3471,8 +3469,8 @@ Still,F1,animals_03.y4m,v10.0.0,-8.5795,-25.362,-22.9474,-9.8527,-9.7093,-9.1629 Still,F1,animals_03.y4m,v11.0.0,-8.2987,-25.2517,-22.5945,-9.5651,-9.8454,-9.1142,-12.7054,-11.4929,-9.5088,-11.6726,-8.2987,-25.2517,-22.5945,-8.9533 Still,F1,animals_03.y4m,v12.0.0,-8.2636,-24.8837,-22.8867,-9.5347,-9.6028,-9.0324,-12.3162,-11.2435,-9.4176,-11.6089,-8.2636,-24.8837,-22.8867,-8.9195 Still,F1,animals_03.y4m,v13.0.0,-8.1485,-25.2415,-22.6216,-9.4303,-8.4201,-8.9507,-12.3569,-11.2762,-9.3001,-11.4857,-8.1485,-25.2415,-22.6216,-8.813 -Still,F1,animals_09.y4m,libaom-v3.12.0,-0.4896,-1.4794,-1.9694,-0.5878,-0.3005,-0.4534,0.9048,0.3828,-0.3185,-0.5471,-0.4896,-1.4794,-1.9694,-0.5625 -Still,F1,animals_09.y4m,libaom-v3.12.0-unconstrained,0.4476,-5.3958,-2.962,-0.0523,1.1131,0.1973,1.1455,1.2589,0.4859,-0.5306,0.4476,-5.3958,-2.962,0.1766 +Still,F1,animals_03.y4m,v14.0.0,-8.252,-25.3432,-23.2278,-9.5559,-8.516,-8.9724,-12.9654,-11.5708,-9.2904,-11.6584,-8.252,-25.3432,-23.2278,-8.9266 +Still,F1,animals_03.y4m,v15.0.0,-8.252,-25.3432,-23.2278,-9.5559,-8.516,-8.9724,-12.9654,-11.5708,-9.2904,-11.6584,-8.252,-25.3432,-23.2278,-8.9266 Still,F1,animals_09.y4m,v02.0.0,-3.8052,-7.7953,-8.8438,-4.2792,-3.765,-3.6286,-5.3552,-5.308,-3.5803,-4.9369,-3.8052,-7.7953,-8.8438,-4.0772 Still,F1,animals_09.y4m,v03.0.0,-5.9135,-7.8617,-9.5253,-6.2028,-5.3701,-5.7666,-7.3191,-6.9366,-5.6898,-6.4401,-5.9135,-7.8617,-9.5253,-6.0634 Still,F1,animals_09.y4m,v04.0.0,-8.0381,-15.5232,-18.617,-8.9825,-6.1224,-7.7322,-10.6106,-9.2649,-7.7271,-9.476,-8.0381,-15.5232,-18.617,-8.5589 @@ -3485,8 +3483,8 @@ Still,F1,animals_09.y4m,v10.0.0,-13.9127,-19.8629,-22.03,-14.6401,-13.6305,-13.2 Still,F1,animals_09.y4m,v11.0.0,-13.6374,-19.6084,-20.1484,-14.2843,-13.3508,-13.1198,-18.1172,-17.7196,-13.245,-14.3252,-13.6374,-19.6084,-20.1484,-13.9717 Still,F1,animals_09.y4m,v12.0.0,-13.4679,-19.7662,-20.3862,-14.158,-13.5684,-13.0496,-17.9794,-17.0508,-13.1873,-14.1505,-13.4679,-19.7662,-20.3862,-13.8232 Still,F1,animals_09.y4m,v13.0.0,-13.4793,-19.8545,-19.9935,-14.1586,-13.3815,-13.0456,-18.1995,-17.1834,-13.1664,-13.9171,-13.4793,-19.8545,-19.9935,-13.837 -Still,F1,buildings_02.y4m,libaom-v3.12.0,0.4247,-1.3714,-1.1661,0.3106,-2.2412,-3.1055,-0.7784,-0.5505,-1.2386,-0.1076,0.4247,-1.3714,-1.1661,0.3174 -Still,F1,buildings_02.y4m,libaom-v3.12.0-unconstrained,0.7325,-4.5102,-5.6155,0.155,-1.7055,-1.7009,0.4999,0.2432,-1.3167,-1.1698,0.7325,-4.5102,-5.6155,0.489 +Still,F1,animals_09.y4m,v14.0.0,-13.9132,-19.9436,-20.1161,-14.5557,-13.8413,-13.3251,-18.5621,-17.9394,-13.4562,-14.3733,-13.9132,-19.9436,-20.1161,-14.2511 +Still,F1,animals_09.y4m,v15.0.0,-13.9132,-19.9436,-20.1161,-14.5557,-13.8413,-13.3251,-18.5621,-17.9394,-13.4562,-14.3733,-13.9132,-19.9436,-20.1161,-14.2511 Still,F1,buildings_02.y4m,v02.0.0,-2.3244,-25.0,-27.3501,-4.761,-5.2421,-4.2182,-4.7822,-4.8982,-6.8034,-10.4565,-2.3244,-25.0,-27.3501,-3.3032 Still,F1,buildings_02.y4m,v03.0.0,-3.8361,-25.6149,-27.8847,-6.183,-7.3546,-5.7716,-5.9328,-5.9728,-8.3347,-11.3949,-3.8361,-25.6149,-27.8847,-4.8012 Still,F1,buildings_02.y4m,v04.0.0,-6.913,-33.0579,-35.3722,-9.6966,-10.3862,-9.4288,-8.9995,-8.6135,-11.6998,-15.6341,-6.913,-33.0579,-35.3722,-8.0708 @@ -3499,8 +3497,8 @@ Still,F1,buildings_02.y4m,v10.0.0,-16.4884,-39.908,-41.8355,-18.9852,-17.6178,-1 Still,F1,buildings_02.y4m,v11.0.0,-15.815,-40.8398,-42.6957,-18.5086,-17.0365,-18.5275,-25.4605,-24.0457,-22.2099,-24.237,-15.815,-40.8398,-42.6957,-17.0014 Still,F1,buildings_02.y4m,v12.0.0,-16.8907,-41.0296,-43.4651,-19.5166,-18.4763,-19.6946,-27.4096,-25.9173,-23.5231,-25.0175,-16.8907,-41.0296,-43.4651,-18.065 Still,F1,buildings_02.y4m,v13.0.0,-17.1989,-41.5746,-42.8607,-19.7833,-17.5738,-19.7414,-27.6666,-26.0663,-23.6162,-25.3728,-17.1989,-41.5746,-42.8607,-18.3549 -Still,F1,buildings_03.y4m,libaom-v3.12.0,0.3225,-2.2478,-2.5085,0.1291,-1.3314,-0.1841,-1.2301,-0.768,-1.2333,-0.2812,0.3225,-2.2478,-2.5085,0.1211 -Still,F1,buildings_03.y4m,libaom-v3.12.0-unconstrained,0.8475,-1.5675,0.3618,0.6845,-1.479,0.4669,1.7979,1.6257,0.823,1.58,0.8475,-1.5675,0.3618,0.7409 +Still,F1,buildings_02.y4m,v14.0.0,-17.4285,-41.7418,-42.8645,-19.9985,-17.7392,-19.9632,-27.9754,-26.5007,-23.7788,-25.5101,-17.4285,-41.7418,-42.8645,-18.5861 +Still,F1,buildings_02.y4m,v15.0.0,-17.4285,-41.7418,-42.8645,-19.9985,-17.7392,-19.9632,-27.9754,-26.5007,-23.7788,-25.5101,-17.4285,-41.7418,-42.8645,-18.5861 Still,F1,buildings_03.y4m,v02.0.0,-1.1592,-18.4205,-21.4632,-2.8168,-2.4671,-1.6229,-1.7126,-1.6901,-3.8305,-5.5734,-1.1592,-18.4205,-21.4632,-1.8048 Still,F1,buildings_03.y4m,v03.0.0,-1.6568,-22.0385,-23.3978,-3.5112,-1.8928,-2.0071,-4.0246,-2.6539,-4.2704,-6.5545,-1.6568,-22.0385,-23.3978,-2.3875 Still,F1,buildings_03.y4m,v04.0.0,-3.8365,-30.2476,-30.7418,-6.218,-2.3259,-4.0321,-4.889,-3.2737,-6.7153,-9.5211,-3.8365,-30.2476,-30.7418,-4.7802 @@ -3513,8 +3511,8 @@ Still,F1,buildings_03.y4m,v10.0.0,-6.0676,-29.7494,-30.9469,-8.2495,-5.7701,-7.1 Still,F1,buildings_03.y4m,v11.0.0,-5.6111,-30.179,-31.5272,-7.8864,-5.399,-6.8318,-10.227,-8.8594,-9.5528,-11.3005,-5.6111,-30.179,-31.5272,-6.5671 Still,F1,buildings_03.y4m,v12.0.0,-5.6027,-30.0536,-31.3186,-7.8494,-5.441,-6.713,-10.363,-8.823,-9.5163,-11.3247,-5.6027,-30.0536,-31.3186,-6.5552 Still,F1,buildings_03.y4m,v13.0.0,-5.5092,-30.084,-31.4941,-7.7733,-6.4292,-6.6496,-9.7671,-8.64,-9.4166,-11.2043,-5.5092,-30.084,-31.4941,-6.4632 -Still,F1,church.y4m,libaom-v3.12.0,0.7757,0.0706,0.6709,0.7422,-0.0723,0.7232,0.5285,0.3765,0.4432,1.0975,0.7757,0.0706,0.6709,0.6743 -Still,F1,church.y4m,libaom-v3.12.0-unconstrained,0.9719,-1.9958,-2.2027,0.6299,1.8579,1.1072,1.8865,1.9833,0.8862,-0.3803,0.9719,-1.9958,-2.2027,0.467 +Still,F1,buildings_03.y4m,v14.0.0,-5.5745,-30.2123,-31.4193,-7.829,-6.6147,-6.7522,-9.7857,-8.6429,-9.5049,-11.2644,-5.5745,-30.2123,-31.4193,-6.5279 +Still,F1,buildings_03.y4m,v15.0.0,-5.5745,-30.2123,-31.4193,-7.829,-6.6147,-6.7522,-9.7857,-8.6429,-9.5049,-11.2644,-5.5745,-30.2123,-31.4193,-6.5279 Still,F1,church.y4m,v02.0.0,-4.1279,-4.0775,-3.8486,-4.1143,-2.6647,-3.8616,-4.2016,-4.1568,-3.9783,-3.8175,-4.1279,-4.0775,-3.8486,-4.0814 Still,F1,church.y4m,v03.0.0,-6.5098,-5.6216,-4.7804,-6.3793,-5.096,-6.7011,-6.3795,-6.1958,-6.5096,-5.599,-6.5098,-5.6216,-4.7804,-6.2714 Still,F1,church.y4m,v04.0.0,-10.7548,-15.3723,-15.7151,-11.2673,-8.2759,-10.6685,-10.4135,-10.0164,-11.1287,-12.2591,-10.7548,-15.3723,-15.7151,-11.6141 @@ -3527,8 +3525,8 @@ Still,F1,church.y4m,v10.0.0,-17.8383,-21.8547,-22.3847,-18.3003,-14.6936,-17.293 Still,F1,church.y4m,v11.0.0,-17.4982,-21.3402,-22.3865,-17.97,-14.9615,-16.9354,-20.3425,-19.5097,-17.4792,-18.6864,-17.4982,-21.3402,-22.3865,-18.2442 Still,F1,church.y4m,v12.0.0,-17.4162,-21.367,-22.5945,-17.9129,-14.4475,-16.8936,-19.4243,-18.7305,-17.4879,-18.651,-17.4162,-21.367,-22.5945,-18.1994 Still,F1,church.y4m,v13.0.0,-17.5662,-22.7964,-23.6082,-18.1921,-18.424,-16.9916,-20.469,-19.6574,-17.8154,-19.44,-17.5662,-22.7964,-23.6082,-18.5475 -Still,F1,fireworks_01.y4m,libaom-v3.12.0,-0.1743,-0.4384,-4.2569,-0.2655,-2.2407,0.5711,-0.514,-0.7391,0.4906,-0.6969,-0.1743,-0.4384,-4.2569,-0.1915 -Still,F1,fireworks_01.y4m,libaom-v3.12.0-unconstrained,2.1287,2.7397,-4.4875,2.0764,-0.5862,1.9568,1.9611,1.3969,3.0004,2.1396,2.1287,2.7397,-4.4875,2.1482 +Still,F1,church.y4m,v14.0.0,-17.9555,-23.1527,-23.3416,-18.5397,-18.8964,-17.4126,-21.351,-20.3041,-18.0854,-19.6346,-17.9555,-23.1527,-23.3416,-18.8907 +Still,F1,church.y4m,v15.0.0,-17.9555,-23.1527,-23.3416,-18.5397,-18.8964,-17.4126,-21.351,-20.3041,-18.0854,-19.6346,-17.9555,-23.1527,-23.3416,-18.8907 Still,F1,fireworks_01.y4m,v02.0.0,-1.0465,-24.7181,-27.4602,-3.6265,-2.6788,-0.6603,-2.3149,-2.5191,-2.4612,-9.4407,-1.0465,-24.7181,-27.4602,-1.6634 Still,F1,fireworks_01.y4m,v03.0.0,-1.7983,-27.4825,-29.5253,-4.5433,-1.9339,-1.3499,-5.4485,-5.0462,-3.3397,-10.8066,-1.7983,-27.4825,-29.5253,-2.4553 Still,F1,fireworks_01.y4m,v04.0.0,-4.2077,-34.2715,-37.687,-7.5707,-2.9848,-3.7368,-6.6509,-6.1886,-5.4058,-13.5859,-4.2077,-34.2715,-37.687,-4.9909 @@ -3541,8 +3539,8 @@ Still,F1,fireworks_01.y4m,v10.0.0,-9.151,-38.0181,-38.2442,-12.2247,-11.0385,-9. Still,F1,fireworks_01.y4m,v11.0.0,-8.6305,-39.2824,-40.9566,-11.9334,-10.9578,-9.7125,-14.7804,-14.1107,-11.8297,-18.0249,-8.6305,-39.2824,-40.9566,-9.441 Still,F1,fireworks_01.y4m,v12.0.0,-8.6147,-39.1373,-40.4355,-11.8865,-10.8579,-9.6101,-14.8478,-14.0189,-11.6421,-17.8339,-8.6147,-39.1373,-40.4355,-9.4154 Still,F1,fireworks_01.y4m,v13.0.0,-8.5908,-38.7533,-39.4579,-11.7861,-8.348,-9.6217,-14.8593,-14.3689,-11.6151,-17.7369,-8.5908,-38.7533,-39.4579,-9.3801 -Still,F1,flowerfield.y4m,libaom-v3.12.0,0.9116,-0.1722,-0.4102,0.7677,1.6355,1.6257,0.776,0.7212,1.5707,0.8237,0.9116,-0.1722,-0.4102,0.5191 -Still,F1,flowerfield.y4m,libaom-v3.12.0-unconstrained,0.5001,-0.3638,-0.7153,0.374,2.8208,0.9587,2.3131,2.0599,0.7321,0.379,0.5001,-0.3638,-0.7153,0.1872 +Still,F1,fireworks_01.y4m,v14.0.0,-8.6968,-38.9101,-39.495,-11.8863,-8.4272,-9.6865,-15.0097,-14.319,-11.6727,-17.7104,-8.6968,-38.9101,-39.495,-9.4876 +Still,F1,fireworks_01.y4m,v15.0.0,-8.6968,-38.9101,-39.495,-11.8863,-8.4272,-9.6865,-15.0097,-14.319,-11.6727,-17.7104,-8.6968,-38.9101,-39.495,-9.4876 Still,F1,flowerfield.y4m,v02.0.0,-2.729,-3.2506,-3.6841,-2.7996,-1.5434,-2.097,-3.581,-3.5889,-2.5815,-2.4951,-2.729,-3.2506,-3.6841,-2.9231 Still,F1,flowerfield.y4m,v03.0.0,-3.9467,-3.1116,-2.7039,-3.8151,-2.737,-3.4177,-4.0882,-4.3616,-3.7613,-2.9916,-3.9467,-3.1116,-2.7039,-3.6239 Still,F1,flowerfield.y4m,v04.0.0,-6.1254,-7.3465,-7.8285,-6.2911,-4.0042,-5.51,-6.471,-6.6944,-6.3663,-6.1357,-6.1254,-7.3465,-7.8285,-6.5616 @@ -3555,8 +3553,8 @@ Still,F1,flowerfield.y4m,v10.0.0,-12.9735,-10.2207,-11.118,-12.6955,-12.0524,-12 Still,F1,flowerfield.y4m,v11.0.0,-12.6098,-9.7813,-10.2354,-12.2956,-11.527,-11.8604,-15.8333,-15.0834,-11.8722,-11.0727,-12.6098,-9.7813,-10.2354,-11.7725 Still,F1,flowerfield.y4m,v12.0.0,-12.5253,-9.5206,-10.3356,-12.2115,-11.8679,-11.9575,-15.1204,-14.7898,-11.9576,-10.9114,-12.5253,-9.5206,-10.3356,-11.6843 Still,F1,flowerfield.y4m,v13.0.0,-12.2401,-9.6263,-10.3288,-11.9682,-12.6251,-11.6833,-15.2326,-14.5535,-11.6881,-10.8212,-12.2401,-9.6263,-10.3288,-11.5121 -Still,F1,flowers_08.y4m,libaom-v3.12.0,0.4191,-0.9424,-1.1082,0.2879,-1.3788,-0.4203,-1.4178,-0.9242,-0.7288,-0.1939,0.4191,-0.9424,-1.1082,0.2539 -Still,F1,flowers_08.y4m,libaom-v3.12.0-unconstrained,0.8395,-2.4954,-2.2762,0.523,-2.537,-0.5311,0.0932,0.1,-0.2023,-0.327,0.8395,-2.4954,-2.2762,0.5768 +Still,F1,flowerfield.y4m,v14.0.0,-12.2484,-9.6073,-10.3116,-11.9734,-12.6183,-11.6846,-15.2134,-14.5565,-11.683,-10.8143,-12.2484,-9.6073,-10.3116,-11.5119 +Still,F1,flowerfield.y4m,v15.0.0,-12.2484,-9.6073,-10.3116,-11.9734,-12.6183,-11.6846,-15.2134,-14.5565,-11.683,-10.8143,-12.2484,-9.6073,-10.3116,-11.5119 Still,F1,flowers_08.y4m,v02.0.0,-2.036,-6.1729,-10.9337,-2.6704,-3.8248,-3.3695,-3.1404,-3.0752,-3.8403,-4.7619,-2.036,-6.1729,-10.9337,-2.5346 Still,F1,flowers_08.y4m,v03.0.0,-3.053,-7.1806,-11.4539,-3.6621,-3.7996,-4.1606,-3.9271,-3.2501,-4.5141,-5.5923,-3.053,-7.1806,-11.4539,-3.5352 Still,F1,flowers_08.y4m,v04.0.0,-4.9699,-9.7863,-16.9348,-5.7977,-4.8295,-6.4735,-4.9351,-4.3325,-6.5885,-8.2081,-4.9699,-9.7863,-16.9348,-5.5736 @@ -3569,8 +3567,8 @@ Still,F1,flowers_08.y4m,v10.0.0,-8.7962,-12.1755,-18.9801,-9.4537,-8.6134,-10.47 Still,F1,flowers_08.y4m,v11.0.0,-8.5327,-12.0096,-19.1692,-9.2187,-8.4157,-10.2481,-10.6916,-9.6704,-10.3994,-11.1788,-8.5327,-12.0096,-19.1692,-9.0695 Still,F1,flowers_08.y4m,v12.0.0,-8.5251,-11.9107,-19.2228,-9.2081,-8.6826,-10.28,-10.6502,-9.7224,-10.3765,-11.2571,-8.5251,-11.9107,-19.2228,-9.0563 Still,F1,flowers_08.y4m,v13.0.0,-8.4648,-12.0891,-19.1283,-9.1572,-9.7476,-10.087,-10.2809,-9.5713,-10.2696,-11.1334,-8.4648,-12.0891,-19.1283,-9.0024 -Still,F1,flowers_12.y4m,libaom-v3.12.0,0.3614,-2.7418,-3.2122,0.118,-0.7132,0.1384,-1.4992,-0.758,-0.3148,-0.4748,0.3614,-2.7418,-3.2122,0.1763 -Still,F1,flowers_12.y4m,libaom-v3.12.0-unconstrained,0.2611,-4.3742,-3.7637,-0.1992,-0.2358,0.3862,1.7948,1.3033,0.4297,-0.7571,0.2611,-4.3742,-3.7637,0.0481 +Still,F1,flowers_08.y4m,v14.0.0,-8.5771,-12.0289,-19.122,-9.2556,-9.9115,-10.2259,-10.6619,-9.7332,-10.3595,-11.235,-8.5771,-12.0289,-19.122,-9.0997 +Still,F1,flowers_08.y4m,v15.0.0,-8.5771,-12.0289,-19.122,-9.2556,-9.9115,-10.2259,-10.6619,-9.7332,-10.3595,-11.235,-8.5771,-12.0289,-19.122,-9.0997 Still,F1,flowers_12.y4m,v02.0.0,-3.055,-17.6217,-20.0997,-4.6397,-3.0855,-3.3479,-3.3665,-3.8318,-3.8203,-7.4218,-3.055,-17.6217,-20.0997,-3.7902 Still,F1,flowers_12.y4m,v03.0.0,-4.8449,-19.8828,-21.262,-6.421,-4.658,-4.9688,-5.7245,-5.6425,-6.0443,-9.0477,-4.8449,-19.8828,-21.262,-5.5954 Still,F1,flowers_12.y4m,v04.0.0,-6.939,-24.5892,-27.5287,-8.8655,-4.4607,-6.9146,-4.9505,-5.817,-7.9028,-11.9055,-6.939,-24.5892,-27.5287,-7.8455 @@ -3583,8 +3581,8 @@ Still,F1,flowers_12.y4m,v10.0.0,-11.3377,-26.9704,-29.803,-13.0599,-10.1793,-11. Still,F1,flowers_12.y4m,v11.0.0,-11.1975,-27.4849,-30.4082,-12.9815,-10.2256,-11.6766,-14.066,-13.6563,-12.6293,-15.8496,-11.1975,-27.4849,-30.4082,-12.0553 Still,F1,flowers_12.y4m,v12.0.0,-11.0278,-27.2491,-29.9629,-12.793,-10.134,-11.3789,-12.3604,-12.6134,-12.3739,-15.6656,-11.0278,-27.2491,-29.9629,-11.8778 Still,F1,flowers_12.y4m,v13.0.0,-10.9531,-27.569,-30.081,-12.7496,-11.2656,-11.3604,-12.6489,-12.7306,-12.3615,-15.6537,-10.9531,-27.569,-30.081,-11.8162 -Still,F1,food_02.y4m,libaom-v3.12.0,0.4064,-2.3719,-2.2525,0.2205,-0.224,0.4702,-0.4182,-0.1067,0.5255,0.108,0.4064,-2.3719,-2.2525,0.2731 -Still,F1,food_02.y4m,libaom-v3.12.0-unconstrained,0.3449,-3.5328,-2.1643,-0.0485,0.6757,0.9739,0.5531,0.5027,0.8365,-0.1419,0.3449,-3.5328,-2.1643,0.1655 +Still,F1,flowers_12.y4m,v14.0.0,-11.15,-27.4695,-30.2706,-12.9282,-11.5527,-11.6415,-14.0217,-13.5732,-12.5559,-15.7971,-11.15,-27.4695,-30.2706,-12.0064 +Still,F1,flowers_12.y4m,v15.0.0,-11.15,-27.4695,-30.2706,-12.9282,-11.5527,-11.6415,-14.0217,-13.5732,-12.5559,-15.7971,-11.15,-27.4695,-30.2706,-12.0064 Still,F1,food_02.y4m,v02.0.0,-5.278,-13.706,-19.8681,-6.5018,-5.5844,-4.9649,-7.2141,-7.6824,-5.293,-7.4551,-5.278,-13.706,-19.8681,-5.8296 Still,F1,food_02.y4m,v03.0.0,-7.5639,-16.33,-22.519,-8.8297,-7.9385,-6.9967,-9.1317,-9.4891,-7.662,-9.2663,-7.5639,-16.33,-22.519,-8.1358 Still,F1,food_02.y4m,v04.0.0,-10.0297,-22.6752,-32.3435,-11.9405,-8.3528,-9.245,-11.0645,-11.2034,-9.8575,-12.9825,-10.0297,-22.6752,-32.3435,-10.86 @@ -3597,8 +3595,8 @@ Still,F1,food_02.y4m,v10.0.0,-15.5442,-28.7274,-36.458,-17.4216,-15.1566,-14.861 Still,F1,food_02.y4m,v11.0.0,-15.4143,-28.171,-36.0027,-17.2463,-15.1301,-14.6986,-19.7748,-19.127,-15.6267,-18.2595,-15.4143,-28.171,-36.0027,-16.2321 Still,F1,food_02.y4m,v12.0.0,-15.2779,-27.5762,-36.2844,-17.104,-14.682,-14.5478,-17.4173,-17.9456,-15.6214,-18.0511,-15.2779,-27.5762,-36.2844,-16.084 Still,F1,food_02.y4m,v13.0.0,-15.2559,-28.187,-36.3772,-17.1274,-13.9447,-14.496,-17.7673,-18.1434,-15.5679,-18.1773,-15.2559,-28.187,-36.3772,-16.0836 -Still,F1,fountain.y4m,libaom-v3.12.0,0.1601,-0.7822,-0.7904,0.1233,-1.8713,0.341,2.0721,1.2995,0.5286,0.2085,0.1601,-0.7822,-0.7904,0.1484 -Still,F1,fountain.y4m,libaom-v3.12.0-unconstrained,1.9185,-2.7628,-3.4566,1.2637,0.1421,1.485,3.3332,3.0,1.6118,0.8853,1.9185,-2.7628,-3.4566,1.495 +Still,F1,food_02.y4m,v14.0.0,-15.5592,-27.8556,-36.5712,-17.3865,-14.4376,-14.8031,-20.0628,-19.498,-15.7414,-18.2333,-15.5592,-27.8556,-36.5712,-16.3697 +Still,F1,food_02.y4m,v15.0.0,-15.5592,-27.8556,-36.5712,-17.3865,-14.4376,-14.8031,-20.0628,-19.498,-15.7414,-18.2333,-15.5592,-27.8556,-36.5712,-16.3697 Still,F1,fountain.y4m,v02.0.0,-3.1115,-6.4063,-7.9818,-3.5685,-4.6894,-2.8594,-4.7818,-5.1142,-3.9652,-4.2685,-3.1115,-6.4063,-7.9818,-3.4371 Still,F1,fountain.y4m,v03.0.0,-4.477,-7.7153,-9.4652,-4.9356,-6.4098,-4.255,-6.205,-6.6365,-5.5942,-5.3858,-4.477,-7.7153,-9.4652,-4.8174 Still,F1,fountain.y4m,v04.0.0,-8.1118,-20.7347,-22.9424,-9.6915,-8.9967,-8.0085,-10.3069,-10.6132,-9.8154,-11.5539,-8.1118,-20.7347,-22.9424,-9.2047 @@ -3611,8 +3609,8 @@ Still,F1,fountain.y4m,v10.0.0,-15.0402,-27.3512,-33.8855,-16.8674,-15.6833,-14.9 Still,F1,fountain.y4m,v11.0.0,-14.881,-26.6894,-33.5742,-16.6664,-15.5462,-14.7807,-20.4679,-19.8818,-16.8053,-18.4481,-14.881,-26.6894,-33.5742,-16.0902 Still,F1,fountain.y4m,v12.0.0,-14.759,-25.9894,-32.398,-16.4421,-15.3525,-14.693,-20.3526,-19.718,-16.6873,-18.1558,-14.759,-25.9894,-32.398,-15.9098 Still,F1,fountain.y4m,v13.0.0,-14.7138,-26.3711,-32.6298,-16.4408,-13.3672,-14.6502,-20.5166,-19.7272,-16.6652,-18.3114,-14.7138,-26.3711,-32.6298,-15.8964 -Still,F1,lady.y4m,libaom-v3.12.0,-2.7446,-3.6301,-3.8043,-3.0712,-2.5984,-3.0194,-4.0749,-3.6014,-2.2916,-3.1006,-2.7446,-3.6301,-3.8043,-2.9408 -Still,F1,lady.y4m,libaom-v3.12.0-unconstrained,2.2632,-6.6895,-6.028,0.6309,0.8162,3.0925,3.1576,2.8414,1.0588,-2.2418,2.2632,-6.6895,-6.028,1.5949 +Still,F1,fountain.y4m,v14.0.0,-15.0792,-26.8384,-33.2368,-16.8263,-13.7348,-14.9503,-20.5912,-20.0333,-17.0016,-18.6747,-15.0792,-26.8384,-33.2368,-16.2751 +Still,F1,fountain.y4m,v15.0.0,-15.0792,-26.8384,-33.2368,-16.8263,-13.7348,-14.9503,-20.5912,-20.0333,-17.0016,-18.6747,-15.0792,-26.8384,-33.2368,-16.2751 Still,F1,lady.y4m,v02.0.0,-3.3407,-9.1775,-5.6196,-3.9026,-1.5838,-3.4982,-3.0359,-3.1637,-4.0243,-4.2238,-3.3407,-9.1775,-5.6196,-3.6033 Still,F1,lady.y4m,v03.0.0,-4.9015,-11.36,-7.1358,-5.4913,-2.628,-5.1509,-4.8536,-5.0886,-6.0449,-5.8491,-4.9015,-11.36,-7.1358,-5.19 Still,F1,lady.y4m,v04.0.0,-7.6783,-23.1329,-16.1549,-9.2606,-3.4298,-7.8197,-6.018,-6.2348,-8.6165,-10.5783,-7.6783,-23.1329,-16.1549,-8.3577 @@ -3625,8 +3623,8 @@ Still,F1,lady.y4m,v10.0.0,-14.5511,-29.3308,-22.5869,-16.062,-10.6052,-15.7695,- Still,F1,lady.y4m,v11.0.0,-14.2623,-33.2352,-26.2959,-16.3369,-10.4466,-15.5516,-17.2396,-16.6651,-16.4208,-19.14,-14.2623,-33.2352,-26.2959,-15.1602 Still,F1,lady.y4m,v12.0.0,-14.1158,-31.2057,-23.4325,-15.8808,-10.4064,-15.124,-16.587,-16.3402,-16.0733,-18.6538,-14.1158,-31.2057,-23.4325,-14.8887 Still,F1,lady.y4m,v13.0.0,-14.2564,-32.6116,-24.2683,-16.1473,-13.5741,-15.2302,-17.114,-16.6394,-16.1877,-18.696,-14.2564,-32.6116,-24.2683,-15.0764 -Still,F1,landscape_05.y4m,libaom-v3.12.0,0.3349,-1.4615,-1.9717,0.1634,-1.1836,-0.0465,-0.0101,-0.0223,-0.274,-0.2443,0.3349,-1.4615,-1.9717,0.1674 -Still,F1,landscape_05.y4m,libaom-v3.12.0-unconstrained,0.8049,-3.7318,-4.6122,0.2696,-2.0926,-0.3506,0.7379,0.4662,0.0037,-0.5789,0.8049,-3.7318,-4.6122,0.4446 +Still,F1,lady.y4m,v14.0.0,-14.2416,-33.6156,-24.9175,-16.247,-13.4657,-15.1966,-17.501,-16.9388,-16.2126,-18.8999,-14.2416,-33.6156,-24.9175,-15.1107 +Still,F1,lady.y4m,v15.0.0,-14.2416,-33.6156,-24.9175,-16.247,-13.4657,-15.1966,-17.501,-16.9388,-16.2126,-18.8999,-14.2416,-33.6156,-24.9175,-15.1107 Still,F1,landscape_05.y4m,v02.0.0,-2.0932,-9.2009,-14.369,-3.0912,-3.65,-2.8262,-2.5384,-2.7831,-3.3712,-5.0085,-2.0932,-9.2009,-14.369,-2.777 Still,F1,landscape_05.y4m,v03.0.0,-3.4082,-10.077,-15.7875,-4.3806,-3.577,-4.0539,-4.1402,-3.861,-4.7593,-6.0151,-3.4082,-10.077,-15.7875,-4.0764 Still,F1,landscape_05.y4m,v04.0.0,-5.6327,-14.0671,-21.2366,-6.8765,-4.7054,-6.3751,-5.3532,-5.1579,-6.9566,-8.9383,-5.6327,-14.0671,-21.2366,-6.4801 @@ -3639,8 +3637,8 @@ Still,F1,landscape_05.y4m,v10.0.0,-10.0894,-18.9851,-25.9147,-11.3819,-9.2434,-1 Still,F1,landscape_05.y4m,v11.0.0,-9.8878,-18.6319,-25.5931,-11.1674,-9.2105,-10.6251,-11.5665,-11.0544,-11.4045,-13.2636,-9.8878,-18.6319,-25.5931,-10.7583 Still,F1,landscape_05.y4m,v12.0.0,-9.8117,-18.4646,-25.6072,-11.0859,-9.185,-10.4443,-10.9393,-10.8179,-11.341,-13.175,-9.8117,-18.4646,-25.6072,-10.6785 Still,F1,landscape_05.y4m,v13.0.0,-9.7141,-18.6447,-25.8529,-11.0237,-10.0647,-10.3572,-10.8599,-10.7208,-11.238,-13.1688,-9.7141,-18.6447,-25.8529,-10.6042 -Still,F1,landscape_15.y4m,libaom-v3.12.0,0.3653,-0.6126,0.0073,0.319,-2.1469,-0.5893,0.3707,0.3014,-0.3773,0.0074,0.3653,-0.6126,0.0073,0.3066 -Still,F1,landscape_15.y4m,libaom-v3.12.0-unconstrained,1.0033,-1.9378,-1.2287,0.7462,-2.1935,-0.1164,1.577,1.4684,0.7412,0.0648,1.0033,-1.9378,-1.2287,0.9146 +Still,F1,landscape_05.y4m,v14.0.0,-9.896,-18.8302,-26.1144,-11.209,-10.3583,-10.6053,-11.5053,-11.0587,-11.4038,-13.3757,-9.896,-18.8302,-26.1144,-10.7887 +Still,F1,landscape_05.y4m,v15.0.0,-9.896,-18.8302,-26.1144,-11.209,-10.3583,-10.6053,-11.5053,-11.0587,-11.4038,-13.3757,-9.896,-18.8302,-26.1144,-10.7887 Still,F1,landscape_15.y4m,v02.0.0,-1.8378,-21.7251,-23.6472,-3.9078,-3.4295,-2.7121,-1.9192,-1.9027,-3.4666,-7.1823,-1.8378,-21.7251,-23.6472,-2.5893 Still,F1,landscape_15.y4m,v03.0.0,-2.7412,-25.0726,-24.4885,-4.9505,-3.4604,-3.7819,-3.2617,-2.9759,-4.6067,-8.6966,-2.7412,-25.0726,-24.4885,-3.5489 Still,F1,landscape_15.y4m,v04.0.0,-5.0582,-32.3854,-29.435,-7.7087,-6.2478,-6.1801,-4.4121,-4.3468,-6.88,-12.3945,-5.0582,-32.3854,-29.435,-6.0264 @@ -3653,8 +3651,8 @@ Still,F1,landscape_15.y4m,v10.0.0,-9.1831,-38.5891,-34.3015,-11.998,-11.1069,-10 Still,F1,landscape_15.y4m,v11.0.0,-9.0515,-38.8602,-34.7944,-11.9211,-10.793,-10.0503,-10.6641,-10.4447,-11.2434,-17.4186,-9.0515,-38.8602,-34.7944,-10.0989 Still,F1,landscape_15.y4m,v12.0.0,-9.0427,-38.5898,-35.5598,-11.9678,-11.0452,-10.0317,-10.5403,-10.2325,-11.2118,-17.4715,-9.0427,-38.5898,-35.5598,-10.1049 Still,F1,landscape_15.y4m,v13.0.0,-8.9361,-38.791,-35.0743,-11.8367,-9.502,-9.8426,-11.1673,-10.7465,-11.0673,-17.2697,-8.9361,-38.791,-35.0743,-9.9934 -Still,F1,landscape_16.y4m,libaom-v3.12.0,-0.1361,-2.6452,-2.977,-0.3439,-1.7352,-0.7473,0.7778,0.5568,-0.5841,-0.7304,-0.1361,-2.6452,-2.977,-0.2302 -Still,F1,landscape_16.y4m,libaom-v3.12.0-unconstrained,0.2657,-2.7648,-0.0245,0.0978,-1.1514,-0.332,1.6317,1.6219,0.256,-2.4363,0.2657,-2.7648,-0.0245,0.2092 +Still,F1,landscape_15.y4m,v14.0.0,-8.9562,-38.851,-34.4959,-11.8224,-9.5195,-9.8331,-10.7914,-10.4417,-11.0892,-17.2752,-8.9562,-38.851,-34.4959,-10.0029 +Still,F1,landscape_15.y4m,v15.0.0,-8.9562,-38.851,-34.4959,-11.8224,-9.5195,-9.8331,-10.7914,-10.4417,-11.0892,-17.2752,-8.9562,-38.851,-34.4959,-10.0029 Still,F1,landscape_16.y4m,v02.0.0,-1.4275,-20.9108,-18.468,-3.4582,-2.928,-1.6675,-1.4833,-1.4801,-1.8809,-7.2302,-1.4275,-20.9108,-18.468,-1.8927 Still,F1,landscape_16.y4m,v03.0.0,-2.8108,-23.6483,-25.4738,-4.9686,-4.3308,-2.9202,-2.9811,-2.5274,-3.294,-10.0061,-2.8108,-23.6483,-25.4738,-3.2974 Still,F1,landscape_16.y4m,v04.0.0,-4.8753,-24.4763,-28.0094,-6.9818,-5.2303,-5.0559,-5.528,-4.3679,-5.0647,-11.2899,-4.8753,-24.4763,-28.0094,-5.3618 @@ -3667,8 +3665,8 @@ Still,F1,landscape_16.y4m,v10.0.0,-9.6949,-25.2866,-28.713,-11.4207,-9.5647,-9.0 Still,F1,landscape_16.y4m,v11.0.0,-9.4087,-24.9687,-29.2695,-11.184,-9.6996,-8.9245,-11.4749,-10.728,-9.1322,-15.7454,-9.4087,-24.9687,-29.2695,-9.7815 Still,F1,landscape_16.y4m,v12.0.0,-8.8117,-24.7543,-29.7974,-10.6233,-9.5137,-8.5784,-11.4331,-10.5258,-9.0092,-15.1266,-8.8117,-24.7543,-29.7974,-9.1979 Still,F1,landscape_16.y4m,v13.0.0,-8.6974,-23.7058,-27.7324,-10.3682,-8.7399,-8.5529,-11.3164,-10.3709,-8.8532,-14.7635,-8.6974,-23.7058,-27.7324,-9.0672 -Still,F1,landscape_18.y4m,libaom-v3.12.0,0.2315,-0.7167,0.3381,0.2045,-2.7673,0.2302,-0.8306,-0.3475,0.0707,-0.0289,0.2315,-0.7167,0.3381,0.2127 -Still,F1,landscape_18.y4m,libaom-v3.12.0-unconstrained,1.4377,1.2414,7.0183,1.685,-3.7583,-0.109,1.4515,1.7675,1.0363,1.0144,1.4377,1.2414,7.0183,1.4998 +Still,F1,landscape_16.y4m,v14.0.0,-9.4208,-23.6717,-27.6542,-11.0273,-9.5277,-8.8333,-12.0667,-10.9598,-9.1298,-15.3334,-9.4208,-23.6717,-27.6542,-9.7712 +Still,F1,landscape_16.y4m,v15.0.0,-9.4208,-23.6717,-27.6542,-11.0273,-9.5277,-8.8333,-12.0667,-10.9598,-9.1298,-15.3334,-9.4208,-23.6717,-27.6542,-9.7712 Still,F1,landscape_18.y4m,v02.0.0,-1.0505,-26.987,-37.5159,-4.2262,-2.4212,-1.6136,-1.9731,-1.5876,-3.1715,-8.5512,-1.0505,-26.987,-37.5159,-1.8739 Still,F1,landscape_18.y4m,v03.0.0,-1.8802,-31.7622,-39.1013,-5.2592,-3.3776,-2.5782,-3.4163,-2.5137,-4.0992,-10.0657,-1.8802,-31.7622,-39.1013,-2.7577 Still,F1,landscape_18.y4m,v04.0.0,-4.2946,-39.3586,-45.4932,-8.2144,-5.7612,-4.9986,-4.5518,-3.7261,-6.5419,-13.3607,-4.2946,-39.3586,-45.4932,-5.2969 @@ -3681,8 +3679,8 @@ Still,F1,landscape_18.y4m,v10.0.0,-8.6069,-45.4108,-48.4605,-12.5783,-10.7977,-9 Still,F1,landscape_18.y4m,v11.0.0,-8.2498,-47.7689,-50.9509,-12.6056,-10.2254,-9.2687,-11.7212,-10.6276,-11.545,-18.5135,-8.2498,-47.7689,-50.9509,-9.3472 Still,F1,landscape_18.y4m,v12.0.0,-8.2334,-47.6805,-50.4653,-12.5461,-10.8772,-9.1739,-11.7449,-10.631,-11.4091,-18.4328,-8.2334,-47.6805,-50.4653,-9.3188 Still,F1,landscape_18.y4m,v13.0.0,-8.2446,-47.1923,-50.2615,-12.4618,-8.5026,-9.34,-11.4551,-10.512,-11.6121,-18.3496,-8.2446,-47.1923,-50.2615,-9.3173 -Still,F1,landscape_25.y4m,libaom-v3.12.0,-0.087,-4.2266,-2.3377,-0.2552,-0.0994,0.0224,-1.9865,-1.1116,-0.1607,-1.1217,-0.087,-4.2266,-2.3377,-0.2476 -Still,F1,landscape_25.y4m,libaom-v3.12.0-unconstrained,1.3684,8.6955,21.2621,2.1271,-1.252,0.3763,4.9038,4.2897,2.2545,3.2691,1.3684,8.6955,21.2621,1.4469 +Still,F1,landscape_18.y4m,v14.0.0,-8.2284,-47.1637,-50.6587,-12.5271,-8.4412,-9.1943,-11.3849,-10.416,-11.4422,-18.4185,-8.2284,-47.1637,-50.6587,-9.3154 +Still,F1,landscape_18.y4m,v15.0.0,-8.2284,-47.1637,-50.6587,-12.5271,-8.4412,-9.1943,-11.3849,-10.416,-11.4422,-18.4185,-8.2284,-47.1637,-50.6587,-9.3154 Still,F1,landscape_25.y4m,v02.0.0,-0.9833,-22.761,-44.1165,-3.1234,-2.0225,-1.1821,-0.1635,-0.3323,-2.1951,-7.35,-0.9833,-22.761,-44.1165,-1.6947 Still,F1,landscape_25.y4m,v03.0.0,-1.8529,-27.0918,-48.1172,-4.2389,-0.0915,-1.5295,-2.4373,-1.7613,-2.2089,-8.7922,-1.8529,-27.0918,-48.1172,-2.6509 Still,F1,landscape_25.y4m,v04.0.0,-3.8919,-30.2995,-52.6819,-6.4396,-0.7923,-3.7952,-2.4879,-1.985,-4.0688,-10.9399,-3.8919,-30.2995,-52.6819,-4.7484 @@ -3695,8 +3693,8 @@ Still,F1,landscape_25.y4m,v10.0.0,-8.1553,-34.7493,-54.9348,-10.6992,-6.9369,-8. Still,F1,landscape_25.y4m,v11.0.0,-7.9999,-34.4008,-55.4987,-10.568,-6.6321,-8.3393,-8.9144,-8.7167,-9.3786,-15.7657,-7.9999,-34.4008,-55.4987,-8.9181 Still,F1,landscape_25.y4m,v12.0.0,-7.9796,-34.2645,-54.5086,-10.5113,-7.0881,-8.2337,-10.196,-9.8612,-9.3796,-15.7394,-7.9796,-34.2645,-54.5086,-8.8822 Still,F1,landscape_25.y4m,v13.0.0,-7.9882,-33.7685,-52.9841,-10.4243,-7.8117,-8.1797,-8.9062,-9.163,-9.2223,-15.5382,-7.9882,-33.7685,-52.9841,-8.8728 -Still,F1,landscape_26.y4m,libaom-v3.12.0,-0.0593,-1.6469,-1.5348,-0.1371,-2.04,-0.6962,0.1805,-0.2585,-0.587,-0.3785,-0.0593,-1.6469,-1.5348,-0.1015 -Still,F1,landscape_26.y4m,libaom-v3.12.0-unconstrained,0.6103,-4.5746,-2.8807,0.2272,-2.1389,-0.6039,0.9181,0.4997,-0.1199,-0.4649,0.6103,-4.5746,-2.8807,0.4912 +Still,F1,landscape_25.y4m,v14.0.0,-8.0629,-33.5673,-52.9735,-10.4877,-7.9536,-8.2878,-8.5042,-8.8821,-9.2678,-15.6124,-8.0629,-33.5673,-52.9735,-8.9436 +Still,F1,landscape_25.y4m,v15.0.0,-8.0629,-33.5673,-52.9735,-10.4877,-7.9536,-8.2878,-8.5042,-8.8821,-9.2678,-15.6124,-8.0629,-33.5673,-52.9735,-8.9436 Still,F1,landscape_26.y4m,v02.0.0,-2.3256,-36.8237,-37.2445,-5.3518,-3.452,-2.7823,-2.9512,-3.3291,-4.5266,-7.6951,-2.3256,-36.8237,-37.2445,-3.2461 Still,F1,landscape_26.y4m,v03.0.0,-3.4736,-39.3837,-38.4449,-6.6097,-3.6926,-3.9752,-4.0712,-4.2208,-5.7233,-8.8646,-3.4736,-39.3837,-38.4449,-4.4325 Still,F1,landscape_26.y4m,v04.0.0,-5.9544,-45.7246,-41.6924,-9.3541,-5.8885,-6.7028,-6.2091,-6.1447,-8.2081,-11.7295,-5.9544,-45.7246,-41.6924,-7.0177 @@ -3709,8 +3707,8 @@ Still,F1,landscape_26.y4m,v10.0.0,-11.3596,-50.3886,-44.5823,-14.6465,-10.1918,- Still,F1,landscape_26.y4m,v11.0.0,-11.1399,-51.0854,-45.7341,-14.5392,-10.0815,-11.6502,-14.3126,-13.7488,-13.7625,-17.1651,-11.1399,-51.0854,-45.7341,-12.2251 Still,F1,landscape_26.y4m,v12.0.0,-11.0916,-51.1241,-45.5078,-14.4816,-9.848,-11.4881,-14.4712,-13.7546,-13.6986,-17.0078,-11.0916,-51.1241,-45.5078,-12.172 Still,F1,landscape_26.y4m,v13.0.0,-11.0553,-51.0976,-44.7035,-14.4192,-10.9619,-11.3784,-13.6664,-13.3088,-13.6418,-16.7733,-11.0553,-51.0976,-44.7035,-12.1265 -Still,F1,landscape_28.y4m,libaom-v3.12.0,0.6036,-1.2324,-1.1343,0.4593,-2.2014,-0.5096,-2.0794,-0.8114,-0.1234,0.0373,0.6036,-1.2324,-1.1343,0.4542 -Still,F1,landscape_28.y4m,libaom-v3.12.0-unconstrained,1.0199,-2.9954,-3.9848,0.5579,-1.8359,0.0359,1.4632,1.4437,0.7123,-0.1866,1.0199,-2.9954,-3.9848,0.7481 +Still,F1,landscape_26.y4m,v14.0.0,-11.2903,-51.3851,-45.2317,-14.6631,-11.284,-11.6274,-13.3736,-13.3968,-13.8664,-17.0796,-11.2903,-51.3851,-45.2317,-12.3702 +Still,F1,landscape_26.y4m,v15.0.0,-11.2903,-51.3851,-45.2317,-14.6631,-11.284,-11.6274,-13.3736,-13.3968,-13.8664,-17.0796,-11.2903,-51.3851,-45.2317,-12.3702 Still,F1,landscape_28.y4m,v02.0.0,-1.2593,-11.2944,-13.8853,-2.4049,-2.9363,-1.8919,-1.8632,-1.6627,-2.5711,-5.4323,-1.2593,-11.2944,-13.8853,-1.9241 Still,F1,landscape_28.y4m,v03.0.0,-2.1008,-13.8789,-18.4315,-3.5582,-4.6763,-2.761,-3.5271,-2.4556,-3.3413,-6.664,-2.1008,-13.8789,-18.4315,-2.9135 Still,F1,landscape_28.y4m,v04.0.0,-4.7156,-18.2839,-24.8494,-6.4622,-6.5719,-5.7218,-4.8555,-3.9774,-6.1336,-10.0328,-4.7156,-18.2839,-24.8494,-5.7012 @@ -3723,8 +3721,8 @@ Still,F1,landscape_28.y4m,v10.0.0,-9.2967,-23.1067,-29.8336,-11.1031,-8.6284,-10 Still,F1,landscape_28.y4m,v11.0.0,-8.9912,-23.0121,-30.0653,-10.8575,-8.4455,-10.1114,-12.1037,-10.543,-11.0128,-15.017,-8.9912,-23.0121,-30.0653,-10.0657 Still,F1,landscape_28.y4m,v12.0.0,-9.1305,-23.1943,-30.1913,-10.9904,-8.2337,-10.04,-12.5535,-10.9261,-11.1139,-15.2453,-9.1305,-23.1943,-30.1913,-10.1977 Still,F1,landscape_28.y4m,v13.0.0,-9.0636,-23.3936,-29.7988,-10.9216,-9.606,-9.9739,-12.6529,-10.9902,-10.9474,-15.0682,-9.0636,-23.3936,-29.7988,-10.1314 -Still,F1,lodge.y4m,libaom-v3.12.0,0.4044,-0.7092,-1.5108,0.2638,-2.5603,-0.0438,0.6194,0.2742,-0.2809,0.0328,0.4044,-0.7092,-1.5108,0.2361 -Still,F1,lodge.y4m,libaom-v3.12.0-unconstrained,1.209,-1.3282,-2.94,0.8883,-2.8261,-0.1066,1.4504,1.5077,0.9513,0.1169,1.209,-1.3282,-2.94,0.9504 +Still,F1,landscape_28.y4m,v14.0.0,-9.1535,-23.4974,-29.8048,-10.9972,-9.8134,-10.131,-12.3845,-10.8523,-11.0922,-15.0705,-9.1535,-23.4974,-29.8048,-10.2122 +Still,F1,landscape_28.y4m,v15.0.0,-9.1535,-23.4974,-29.8048,-10.9972,-9.8134,-10.131,-12.3845,-10.8523,-11.0922,-15.0705,-9.1535,-23.4974,-29.8048,-10.2122 Still,F1,lodge.y4m,v02.0.0,-1.9558,-9.5608,-5.2107,-2.4978,-3.6439,-2.6756,-2.3832,-2.3209,-2.3318,-3.7752,-1.9558,-9.5608,-5.2107,-2.4784 Still,F1,lodge.y4m,v03.0.0,-3.3365,-10.7877,-6.4843,-3.8766,-4.2607,-3.9903,-3.3206,-3.1707,-3.5736,-5.1061,-3.3365,-10.7877,-6.4843,-3.8437 Still,F1,lodge.y4m,v04.0.0,-5.4286,-19.5687,-10.7748,-6.4416,-5.6345,-6.0903,-5.2976,-4.8724,-5.5052,-8.9617,-5.4286,-19.5687,-10.7748,-6.4176 @@ -3737,8 +3735,8 @@ Still,F1,lodge.y4m,v10.0.0,-10.6469,-26.8314,-15.8471,-11.7857,-8.4902,-10.7771, Still,F1,lodge.y4m,v11.0.0,-10.3187,-26.6721,-16.021,-11.4933,-8.3086,-10.511,-11.7365,-11.2144,-10.2666,-14.6995,-10.3187,-26.6721,-16.021,-11.4371 Still,F1,lodge.y4m,v12.0.0,-10.3782,-26.7387,-16.2266,-11.5633,-8.101,-10.4721,-11.6884,-11.1777,-10.3261,-14.8005,-10.3782,-26.7387,-16.2266,-11.5033 Still,F1,lodge.y4m,v13.0.0,-10.3343,-26.826,-16.4087,-11.5441,-10.538,-10.4898,-11.8132,-11.3023,-10.2819,-14.9848,-10.3343,-26.826,-16.4087,-11.4723 -Still,F1,party.y4m,libaom-v3.12.0,-3.3784,-2.8095,-0.5913,-3.4058,-1.51,-5.0038,-2.5489,-1.0157,-3.1049,-3.5481,-3.3784,-2.8095,-0.5913,-3.4932 -Still,F1,party.y4m,libaom-v3.12.0-unconstrained,1.0796,-5.6138,-5.0038,-0.6168,-1.9977,-0.3621,1.0687,0.9922,-0.6892,-2.8147,1.0796,-5.6138,-5.0038,0.325 +Still,F1,lodge.y4m,v14.0.0,-10.4398,-26.9436,-16.3977,-11.6454,-10.6319,-10.5242,-12.0138,-11.4997,-10.358,-15.0441,-10.4398,-26.9436,-16.3977,-11.5756 +Still,F1,lodge.y4m,v15.0.0,-10.4398,-26.9436,-16.3977,-11.6454,-10.6319,-10.5242,-12.0138,-11.4997,-10.358,-15.0441,-10.4398,-26.9436,-16.3977,-11.5756 Still,F1,party.y4m,v02.0.0,-3.509,-10.1598,-9.951,-4.5641,-2.4175,-3.3044,-5.7901,-6.2631,-4.3961,-4.417,-3.509,-10.1598,-9.951,-3.9767 Still,F1,party.y4m,v03.0.0,-5.4471,-10.4221,-8.115,-6.0772,-4.708,-5.0889,-7.117,-8.3172,-6.641,-6.1059,-5.4471,-10.4221,-8.115,-5.7613 Still,F1,party.y4m,v04.0.0,-9.2789,-21.7517,-20.3012,-11.1693,-7.3457,-8.8244,-11.2536,-11.6426,-10.2845,-11.4643,-9.2789,-21.7517,-20.3012,-10.0886 @@ -3751,8 +3749,8 @@ Still,F1,party.y4m,v10.0.0,-15.6699,-30.5092,-27.2055,-17.7786,-13.3023,-14.9991 Still,F1,party.y4m,v11.0.0,-15.4771,-32.7563,-30.1242,-18.0786,-13.318,-14.9454,-22.9339,-22.0443,-17.0533,-19.6293,-15.4771,-32.7563,-30.1242,-16.5818 Still,F1,party.y4m,v12.0.0,-15.5972,-31.5922,-29.6264,-18.0387,-13.2046,-15.0395,-25.0456,-23.2264,-17.2652,-19.4857,-15.5972,-31.5922,-29.6264,-16.6383 Still,F1,party.y4m,v13.0.0,-15.5925,-31.7774,-29.0449,-18.0069,-12.5382,-14.9316,-24.655,-23.0662,-17.1478,-19.3147,-15.5925,-31.7774,-29.0449,-16.6182 -Still,F1,river.y4m,libaom-v3.12.0,2.1437,3.402,3.2653,3.3695,4.1524,2.2228,4.0158,2.8188,2.6716,3.9327,2.1437,3.402,3.2653,3.2089 -Still,F1,river.y4m,libaom-v3.12.0-unconstrained,0.807,-3.089,-2.5155,0.194,2.6998,0.8688,2.7383,2.7513,0.7185,-1.7326,0.807,-3.089,-2.5155,0.0556 +Still,F1,party.y4m,v14.0.0,-15.8958,-32.906,-30.2706,-18.4526,-12.9285,-15.2324,-24.6271,-23.0628,-17.3358,-19.7367,-15.8958,-32.906,-30.2706,-16.9973 +Still,F1,party.y4m,v15.0.0,-15.8958,-32.906,-30.2706,-18.4526,-12.9285,-15.2324,-24.6271,-23.0628,-17.3358,-19.7367,-15.8958,-32.906,-30.2706,-16.9973 Still,F1,river.y4m,v02.0.0,-2.2819,-5.3917,-15.0091,-3.1901,-2.6054,-2.481,-2.5046,-2.6641,-3.006,-3.0549,-2.2819,-5.3917,-15.0091,-3.0989 Still,F1,river.y4m,v03.0.0,-4.1833,-7.4547,-15.6088,-5.0332,-3.6985,-4.2151,-5.8352,-5.646,-5.0586,-4.8362,-4.1833,-7.4547,-15.6088,-4.9676 Still,F1,river.y4m,v04.0.0,-6.4734,-11.4873,-25.3358,-7.8878,-4.1793,-6.2722,-8.0875,-7.5323,-7.1971,-7.8918,-6.4734,-11.4873,-25.3358,-7.732 @@ -3765,8 +3763,8 @@ Still,F1,river.y4m,v10.0.0,-13.8383,-18.8182,-43.455,-16.1369,-13.1196,-13.5849, Still,F1,river.y4m,v11.0.0,-13.5617,-18.4051,-43.6515,-15.9105,-12.4505,-13.315,-19.0997,-17.3676,-14.5995,-15.8257,-13.5617,-18.4051,-43.6515,-15.4377 Still,F1,river.y4m,v12.0.0,-13.6873,-18.1261,-43.4986,-15.9858,-12.973,-13.3973,-19.509,-17.6167,-14.6265,-15.4816,-13.6873,-18.1261,-43.4986,-15.5077 Still,F1,river.y4m,v13.0.0,-13.7293,-18.4701,-43.3456,-16.0213,-14.2073,-13.4333,-19.8563,-17.8504,-14.6797,-15.5761,-13.7293,-18.4701,-43.3456,-15.5651 -Still,F1,santa.y4m,libaom-v3.12.0,1.5883,2.5019,2.8758,2.9145,3.9724,0.6878,1.241,1.7236,2.9172,3.2036,1.5883,2.5019,2.8758,2.5834 -Still,F1,santa.y4m,libaom-v3.12.0-unconstrained,0.5848,-1.5598,-1.2436,0.1681,1.3403,0.4715,1.9813,2.108,0.4046,-0.9357,0.5848,-1.5598,-1.2436,0.1048 +Still,F1,river.y4m,v14.0.0,-13.6206,-18.4538,-42.7803,-15.8634,-14.107,-13.3692,-19.4052,-17.4125,-14.5567,-15.5126,-13.6206,-18.4538,-42.7803,-15.4369 +Still,F1,river.y4m,v15.0.0,-13.6206,-18.4538,-42.7803,-15.8634,-14.107,-13.3692,-19.4052,-17.4125,-14.5567,-15.5126,-13.6206,-18.4538,-42.7803,-15.4369 Still,F1,santa.y4m,v02.0.0,-2.6953,-5.3483,-3.8153,-2.8839,-2.8879,-2.5542,-4.2582,-3.878,-3.0307,-2.8348,-2.6953,-5.3483,-3.8153,-2.9159 Still,F1,santa.y4m,v03.0.0,-4.4461,-7.1388,-4.3072,-4.5832,-4.8328,-4.2271,-6.6762,-6.1964,-4.8267,-4.5192,-4.4461,-7.1388,-4.3072,-4.5989 Still,F1,santa.y4m,v04.0.0,-8.1934,-15.952,-12.6811,-8.9408,-7.184,-7.8028,-10.141,-9.7254,-8.7053,-10.1229,-8.1934,-15.952,-12.6811,-8.9619 @@ -3779,8 +3777,8 @@ Still,F1,santa.y4m,v10.0.0,-16.0566,-24.2783,-18.7593,-16.9142,-14.3969,-15.3043 Still,F1,santa.y4m,v11.0.0,-15.6039,-24.0238,-18.1079,-16.468,-14.0465,-14.8734,-19.1993,-18.5196,-16.1539,-17.5063,-15.6039,-24.0238,-18.1079,-16.386 Still,F1,santa.y4m,v12.0.0,-15.3631,-23.2933,-17.521,-16.167,-13.7565,-14.7292,-18.5889,-17.853,-16.0311,-17.1745,-15.3631,-23.2933,-17.521,-16.0869 Still,F1,santa.y4m,v13.0.0,-15.7095,-25.0823,-19.0885,-16.7102,-15.4891,-15.0289,-19.9926,-19.1903,-16.5383,-18.4196,-15.7095,-25.0823,-19.0885,-16.657 -Still,F1,seafood.y4m,libaom-v3.12.0,-0.0678,-1.8727,-1.9756,-0.1291,-1.7565,-0.184,-1.118,-0.8328,0.2239,-0.6614,-0.0678,-1.8727,-1.9756,-0.1088 -Still,F1,seafood.y4m,libaom-v3.12.0-unconstrained,1.1572,-3.5774,-3.5636,0.519,-0.7848,1.7225,2.3736,2.0691,1.076,-0.9254,1.1572,-3.5774,-3.5636,0.7 +Still,F1,santa.y4m,v14.0.0,-16.2954,-25.8564,-19.8745,-17.2936,-16.0796,-15.3816,-20.3637,-19.6444,-16.9065,-19.0165,-16.2954,-25.8564,-19.8745,-17.2596 +Still,F1,santa.y4m,v15.0.0,-16.2954,-25.8564,-19.8745,-17.2936,-16.0796,-15.3816,-20.3637,-19.6444,-16.9065,-19.0165,-16.2954,-25.8564,-19.8745,-17.2596 Still,F1,seafood.y4m,v02.0.0,-2.9057,-8.4662,-9.8381,-3.5713,-3.9653,-3.0234,-3.4254,-3.6894,-3.5408,-5.8015,-2.9057,-8.4662,-9.8381,-3.4166 Still,F1,seafood.y4m,v03.0.0,-4.4273,-9.6099,-11.2263,-5.0687,-5.1766,-4.4786,-4.6711,-5.0,-5.1171,-6.9445,-4.4273,-9.6099,-11.2263,-4.9243 Still,F1,seafood.y4m,v04.0.0,-7.0058,-15.6147,-18.2905,-8.095,-6.4377,-7.1824,-7.341,-7.3478,-7.6608,-11.1121,-7.0058,-15.6147,-18.2905,-7.8218 @@ -3793,8 +3791,8 @@ Still,F1,seafood.y4m,v10.0.0,-13.5565,-23.805,-32.1988,-15.2001,-12.0836,-13.594 Still,F1,seafood.y4m,v11.0.0,-13.4418,-23.6218,-32.0072,-15.0764,-11.6344,-13.4081,-17.0633,-16.2913,-14.2687,-18.9655,-13.4418,-23.6218,-32.0072,-14.6042 Still,F1,seafood.y4m,v12.0.0,-13.586,-23.5971,-31.6415,-15.176,-12.1707,-13.5721,-17.7289,-16.7605,-14.4166,-18.9809,-13.586,-23.5971,-31.6415,-14.7235 Still,F1,seafood.y4m,v13.0.0,-13.544,-23.6467,-31.3415,-15.1223,-13.1055,-13.5681,-17.6587,-16.7872,-14.4537,-18.8611,-13.544,-23.6467,-31.3415,-14.6753 -Still,F1,snow_00.y4m,libaom-v3.12.0,-0.112,-2.1915,-1.9301,-0.2166,-1.6054,-0.6711,3.1347,2.1603,0.1301,-0.4083,-0.112,-2.1915,-1.9301,-0.1337 -Still,F1,snow_00.y4m,libaom-v3.12.0-unconstrained,1.2212,-1.3678,-3.2946,0.8379,-1.8605,0.1121,0.948,0.8282,0.4983,0.0737,1.2212,-1.3678,-3.2946,1.0986 +Still,F1,seafood.y4m,v14.0.0,-13.6998,-23.6419,-30.9635,-15.2353,-13.2417,-13.6405,-17.9413,-16.8855,-14.4853,-19.0462,-13.6998,-23.6419,-30.9635,-14.8048 +Still,F1,seafood.y4m,v15.0.0,-13.6998,-23.6419,-30.9635,-15.2353,-13.2417,-13.6405,-17.9413,-16.8855,-14.4853,-19.0462,-13.6998,-23.6419,-30.9635,-14.8048 Still,F1,snow_00.y4m,v02.0.0,-1.1488,-20.5531,-29.2382,-3.5452,-2.0691,-1.4467,-1.8413,-1.9258,-2.5168,-6.7068,-1.1488,-20.5531,-29.2382,-1.8554 Still,F1,snow_00.y4m,v03.0.0,-1.8959,-20.869,-30.4175,-4.3622,-3.5929,-2.3554,-2.6834,-2.8,-3.7523,-7.336,-1.8959,-20.869,-30.4175,-2.6172 Still,F1,snow_00.y4m,v04.0.0,-4.4479,-24.6117,-38.5403,-7.2538,-5.1139,-5.4064,-3.823,-3.8408,-6.1072,-10.2054,-4.4479,-24.6117,-38.5403,-5.2204 @@ -3807,8 +3805,8 @@ Still,F1,snow_00.y4m,v10.0.0,-9.7421,-26.6658,-44.0733,-12.4603,-11.186,-10.9458 Still,F1,snow_00.y4m,v11.0.0,-9.6156,-26.8446,-44.7044,-12.3612,-10.7416,-10.8898,-11.7772,-11.0635,-11.6385,-14.8699,-9.6156,-26.8446,-44.7044,-10.3288 Still,F1,snow_00.y4m,v12.0.0,-9.4956,-26.7029,-44.3924,-12.2463,-10.4703,-10.8094,-10.86,-10.4845,-11.5285,-14.6919,-9.4956,-26.7029,-44.3924,-10.208 Still,F1,snow_00.y4m,v13.0.0,-9.4616,-26.7584,-44.879,-12.2311,-9.8269,-10.7862,-11.2453,-10.8562,-11.451,-14.4968,-9.4616,-26.7584,-44.879,-10.1756 -Still,F1,trees.y4m,libaom-v3.12.0,0.4484,-1.2769,-1.6332,0.2572,-0.8213,0.2692,-0.435,-0.2194,-0.1237,-0.6133,0.4484,-1.2769,-1.6332,0.2189 -Still,F1,trees.y4m,libaom-v3.12.0-unconstrained,0.765,-3.1202,-3.3283,0.3609,-1.3141,-0.1401,1.616,1.4521,0.5002,-1.3035,0.765,-3.1202,-3.3283,0.4105 +Still,F1,snow_00.y4m,v14.0.0,-9.6665,-26.8173,-44.7067,-12.4023,-9.9852,-10.96,-11.5513,-11.1094,-11.636,-14.6456,-9.6665,-26.8173,-44.7067,-10.3738 +Still,F1,snow_00.y4m,v15.0.0,-9.6665,-26.8173,-44.7067,-12.4023,-9.9852,-10.96,-11.5513,-11.1094,-11.636,-14.6456,-9.6665,-26.8173,-44.7067,-10.3738 Still,F1,trees.y4m,v02.0.0,-2.6054,-11.1359,-11.3992,-3.5219,-3.1683,-2.9353,-2.8137,-2.9235,-2.8964,-7.7907,-2.6054,-11.1359,-11.3992,-3.3586 Still,F1,trees.y4m,v03.0.0,-4.6353,-14.4975,-15.5459,-5.782,-4.007,-4.4642,-3.514,-3.7035,-4.7959,-9.5512,-4.6353,-14.4975,-15.5459,-5.54 Still,F1,trees.y4m,v04.0.0,-6.7654,-19.5707,-21.1684,-8.2643,-4.3628,-6.2961,-5.2751,-5.2036,-6.6591,-12.7234,-6.7654,-19.5707,-21.1684,-7.9644 @@ -3821,8 +3819,8 @@ Still,F1,trees.y4m,v10.0.0,-12.3914,-26.756,-27.752,-14.0789,-10.6688,-11.6901,- Still,F1,trees.y4m,v11.0.0,-12.2521,-26.5852,-27.9547,-13.946,-10.6087,-11.5196,-11.6959,-11.9433,-11.9269,-17.3155,-12.2521,-26.5852,-27.9547,-13.5406 Still,F1,trees.y4m,v12.0.0,-12.1548,-25.5542,-26.8553,-13.7266,-10.6877,-11.3988,-11.6413,-11.757,-11.8135,-17.0245,-12.1548,-25.5542,-26.8553,-13.3588 Still,F1,trees.y4m,v13.0.0,-12.002,-25.4988,-26.9608,-13.6028,-12.253,-11.2952,-11.401,-11.6951,-11.6875,-16.9197,-12.002,-25.4988,-26.9608,-13.2232 -Still,F1,underwater_01.y4m,libaom-v3.12.0,0.1653,0.0143,-0.1719,0.2141,-0.4532,0.4857,-0.8756,0.0564,0.7543,0.2866,0.1653,0.0143,-0.1719,0.1929 -Still,F1,underwater_01.y4m,libaom-v3.12.0-unconstrained,0.8075,-0.0186,-1.6366,0.5848,2.249,1.3041,3.012,2.9796,1.3468,0.4338,0.8075,-0.0186,-1.6366,0.5966 +Still,F1,trees.y4m,v14.0.0,-12.0783,-25.3997,-27.1322,-13.6793,-12.3308,-11.3466,-11.6055,-11.7756,-11.7402,-16.9276,-12.0783,-25.3997,-27.1322,-13.2993 +Still,F1,trees.y4m,v15.0.0,-12.0783,-25.3997,-27.1322,-13.6793,-12.3308,-11.3466,-11.6055,-11.7756,-11.7402,-16.9276,-12.0783,-25.3997,-27.1322,-13.2993 Still,F1,underwater_01.y4m,v02.0.0,-3.0279,-5.8477,-8.0959,-3.4727,-2.1208,-2.7794,-2.0241,-2.0781,-3.287,-4.2353,-3.0279,-5.8477,-8.0959,-3.4883 Still,F1,underwater_01.y4m,v03.0.0,-4.7405,-7.2011,-10.6396,-5.2103,-3.309,-4.587,-3.7574,-3.7121,-5.0622,-5.9447,-4.7405,-7.2011,-10.6396,-5.2136 Still,F1,underwater_01.y4m,v04.0.0,-6.9215,-16.0554,-22.124,-8.35,-3.7391,-6.7175,-4.6646,-4.6051,-7.6177,-10.777,-6.9215,-16.0554,-22.124,-8.2981 @@ -3835,8 +3833,8 @@ Still,F1,underwater_01.y4m,v10.0.0,-12.3994,-25.7192,-35.066,-14.6364,-11.5044,- Still,F1,underwater_01.y4m,v11.0.0,-12.2383,-25.2261,-34.2617,-14.4118,-11.8408,-12.6996,-14.9461,-14.1865,-14.3514,-17.5364,-12.2383,-25.2261,-34.2617,-14.2424 Still,F1,underwater_01.y4m,v12.0.0,-12.1338,-25.15,-34.5798,-14.3364,-11.4788,-12.5744,-14.545,-13.738,-14.2861,-17.4992,-12.1338,-25.15,-34.5798,-14.1594 Still,F1,underwater_01.y4m,v13.0.0,-12.1037,-25.1738,-34.9872,-14.3388,-12.3251,-12.4459,-14.5468,-13.8063,-14.1904,-17.5415,-12.1037,-25.1738,-34.9872,-14.1536 -Still,F2,Adventure_with_the_Windmills.y4m,libaom-v3.12.0,0.0955,0.0,0.0,-0.0269,-0.0857,-0.1338,-0.9274,-0.9614,-0.9226,-0.213,0.0955,0.0,0.0,0.0192 -Still,F2,Adventure_with_the_Windmills.y4m,libaom-v3.12.0-unconstrained,0.9662,0.0,0.0,0.7398,-0.3275,-0.5166,-0.1313,0.1301,-0.0643,1.6725,0.9662,0.0,0.0,0.9376 +Still,F1,underwater_01.y4m,v14.0.0,-12.2195,-25.5075,-34.9765,-14.4678,-12.4725,-12.5859,-14.8769,-14.0319,-14.3267,-17.7119,-12.2195,-25.5075,-34.9765,-14.2884 +Still,F1,underwater_01.y4m,v15.0.0,-12.2195,-25.5075,-34.9765,-14.4678,-12.4725,-12.5859,-14.8769,-14.0319,-14.3267,-17.7119,-12.2195,-25.5075,-34.9765,-14.2884 Still,F2,Adventure_with_the_Windmills.y4m,v02.0.0,-0.619,0.0,0.0,-6.163,-1.3614,-1.185,-1.5796,-0.9782,-5.0479,-7.0678,-0.619,0.0,0.0,-1.2537 Still,F2,Adventure_with_the_Windmills.y4m,v03.0.0,-3.004,0.0,0.0,-9.4518,-2.4389,-2.6758,-2.6493,-1.9779,-6.5539,-10.6971,-3.004,0.0,0.0,-3.7467 Still,F2,Adventure_with_the_Windmills.y4m,v04.0.0,-4.7913,0.0,0.0,-11.5215,-4.2852,-4.5417,-4.9226,-4.0342,-9.2399,-14.3909,-4.7913,0.0,0.0,-5.7723 @@ -3849,8 +3847,8 @@ Still,F2,Adventure_with_the_Windmills.y4m,v10.0.0,-7.5458,0.0,0.0,-15.6707,-8.50 Still,F2,Adventure_with_the_Windmills.y4m,v11.0.0,-7.4183,0.0,0.0,-15.7638,-8.6886,-8.2521,-11.7969,-10.6313,-14.0685,-18.8714,-7.4183,0.0,0.0,-8.5264 Still,F2,Adventure_with_the_Windmills.y4m,v12.0.0,-7.4858,0.0,0.0,-15.6018,-8.6389,-8.2125,-12.0244,-10.7447,-14.0289,-18.7331,-7.4858,0.0,0.0,-8.5829 Still,F2,Adventure_with_the_Windmills.y4m,v13.0.0,-7.6164,0.0,0.0,-15.5677,-8.1956,-8.2822,-12.2315,-10.9731,-14.0377,-18.6127,-7.6164,0.0,0.0,-8.7112 -Still,F2,Agapanthus_Postbloom2.y4m,libaom-v3.12.0,-0.22,0.0933,-1.4922,-0.248,-0.2482,-0.4513,-2.1813,-1.4234,-0.8358,0.0396,-0.22,0.0933,-1.4922,-0.266 -Still,F2,Agapanthus_Postbloom2.y4m,libaom-v3.12.0-unconstrained,0.1405,-1.4974,-1.7057,-0.027,0.6607,0.3387,1.6349,1.6625,0.0529,-1.0203,0.1405,-1.4974,-1.7057,-0.1538 +Still,F2,Adventure_with_the_Windmills.y4m,v14.0.0,-7.6191,0.0,0.0,-15.5702,-8.1985,-8.2849,-12.2368,-10.9783,-14.0408,-18.6155,-7.6191,0.0,0.0,-8.7139 +Still,F2,Adventure_with_the_Windmills.y4m,v15.0.0,-7.6191,0.0,0.0,-15.5702,-8.1985,-8.2849,-12.2368,-10.9783,-14.0408,-18.6155,-7.6191,0.0,0.0,-8.7139 Still,F2,Agapanthus_Postbloom2.y4m,v02.0.0,-6.7137,-4.6528,-11.8114,-6.7841,-5.8202,-6.7181,-5.7321,-5.9869,-6.5915,-6.4763,-6.7137,-4.6528,-11.8114,-6.6458 Still,F2,Agapanthus_Postbloom2.y4m,v03.0.0,-10.213,-6.6141,-11.516,-10.0503,-7.5573,-9.2871,-7.8488,-7.8567,-8.9906,-9.0087,-10.213,-6.6141,-11.516,-9.7785 Still,F2,Agapanthus_Postbloom2.y4m,v04.0.0,-13.74,-10.7566,-15.8403,-13.6448,-11.5548,-12.9328,-10.2192,-10.4753,-12.4326,-13.2095,-13.74,-10.7566,-15.8403,-13.4579 @@ -3863,8 +3861,8 @@ Still,F2,Agapanthus_Postbloom2.y4m,v10.0.0,-20.0207,-17.2945,-21.0644,-19.8954,- Still,F2,Agapanthus_Postbloom2.y4m,v11.0.0,-20.0678,-16.6496,-20.1243,-19.8648,-17.5715,-19.1539,-19.2347,-18.4918,-18.5035,-20.0772,-20.0678,-16.6496,-20.1243,-19.6403 Still,F2,Agapanthus_Postbloom2.y4m,v12.0.0,-19.9419,-17.0242,-19.5225,-19.7521,-17.7753,-19.3217,-18.6226,-17.8231,-18.5882,-20.128,-19.9419,-17.0242,-19.5225,-19.5724 Still,F2,Agapanthus_Postbloom2.y4m,v13.0.0,-19.8743,-17.5008,-19.7619,-19.7286,-21.6977,-18.8402,-18.6539,-18.1626,-18.4627,-20.3958,-19.8743,-17.5008,-19.7619,-19.5905 -Still,F2,Baruch.y4m,libaom-v3.12.0,0.0316,0.0,0.0,-0.1365,0.1076,-0.2858,-1.2594,-0.5255,-1.5329,-0.5343,0.0316,0.0,0.0,-0.0503 -Still,F2,Baruch.y4m,libaom-v3.12.0-unconstrained,1.1203,0.0,0.0,0.1099,1.2238,0.5089,-0.3917,0.4054,0.1797,-0.8674,1.1203,0.0,0.0,0.9774 +Still,F2,Agapanthus_Postbloom2.y4m,v14.0.0,-19.8925,-17.5184,-19.779,-19.7468,-21.7169,-18.8593,-18.6827,-18.1908,-18.482,-20.4137,-19.8925,-17.5184,-19.779,-19.6088 +Still,F2,Agapanthus_Postbloom2.y4m,v15.0.0,-19.8925,-17.5184,-19.779,-19.7468,-21.7169,-18.8593,-18.6827,-18.1908,-18.482,-20.4137,-19.8925,-17.5184,-19.779,-19.6088 Still,F2,Baruch.y4m,v02.0.0,-0.4985,0.0,0.0,-7.3679,-0.5396,-1.0544,-1.8559,-1.3649,-6.6205,-9.4029,-0.4985,0.0,0.0,-1.1345 Still,F2,Baruch.y4m,v03.0.0,-2.4495,0.0,0.0,-9.3111,-2.2674,-2.8061,-4.526,-3.7609,-7.7523,-12.202,-2.4495,0.0,0.0,-3.1258 Still,F2,Baruch.y4m,v04.0.0,-4.4778,0.0,0.0,-11.3558,-3.7348,-4.1099,-4.7208,-3.7889,-9.4646,-14.3839,-4.4778,0.0,0.0,-5.2079 @@ -3877,8 +3875,8 @@ Still,F2,Baruch.y4m,v10.0.0,-7.834,0.0,0.0,-15.1009,-8.1824,-8.5354,-11.6974,-10 Still,F2,Baruch.y4m,v11.0.0,-7.4199,0.0,0.0,-15.0653,-7.8168,-8.1212,-10.4844,-10.1538,-14.9196,-18.7775,-7.4199,0.0,0.0,-8.2691 Still,F2,Baruch.y4m,v12.0.0,-7.6737,0.0,0.0,-14.7873,-7.9411,-8.3591,-10.9764,-10.4311,-14.9051,-18.726,-7.6737,0.0,0.0,-8.5086 Still,F2,Baruch.y4m,v13.0.0,-7.8724,0.0,0.0,-15.5613,-8.9632,-8.6899,-10.8999,-10.6466,-15.1304,-18.9127,-7.8724,0.0,0.0,-8.7152 -Still,F2,Berlin-Fernsehturm.y4m,libaom-v3.12.0,-0.2124,-0.9002,-0.7526,-0.2647,-1.1205,-0.9666,-1.4761,-0.3857,-1.4027,-0.9374,-0.2124,-0.9002,-0.7526,-0.3034 -Still,F2,Berlin-Fernsehturm.y4m,libaom-v3.12.0-unconstrained,0.7189,-1.4828,-0.5988,0.5526,0.5235,0.793,-0.3357,-0.2336,0.3287,-1.1902,0.7189,-1.4828,-0.5988,0.5548 +Still,F2,Baruch.y4m,v14.0.0,-7.8749,0.0,0.0,-15.5636,-8.9661,-8.6925,-10.9045,-10.6511,-15.1334,-18.9152,-7.8749,0.0,0.0,-8.7177 +Still,F2,Baruch.y4m,v15.0.0,-7.8749,0.0,0.0,-15.5636,-8.9661,-8.6925,-10.9045,-10.6511,-15.1334,-18.9152,-7.8749,0.0,0.0,-8.7177 Still,F2,Berlin-Fernsehturm.y4m,v02.0.0,-3.1664,-12.3261,-8.9809,-3.8603,-4.4412,-4.1154,-4.4105,-4.1661,-4.6891,-8.1345,-3.1664,-12.3261,-8.9809,-3.9333 Still,F2,Berlin-Fernsehturm.y4m,v03.0.0,-5.3857,-13.6629,-10.5039,-6.0047,-5.7902,-5.6411,-3.1553,-3.1837,-6.0078,-9.9337,-5.3857,-13.6629,-10.5039,-6.0647 Still,F2,Berlin-Fernsehturm.y4m,v04.0.0,-8.5946,-21.3101,-17.1542,-9.5928,-9.0259,-8.8465,-8.8833,-8.0749,-9.6078,-15.3619,-8.5946,-21.3101,-17.1542,-9.7594 @@ -3891,8 +3889,8 @@ Still,F2,Berlin-Fernsehturm.y4m,v10.0.0,-15.6783,-27.7451,-28.0725,-16.8458,-15. Still,F2,Berlin-Fernsehturm.y4m,v11.0.0,-15.602,-29.8849,-25.261,-16.7522,-15.8882,-16.0557,-16.5318,-15.1109,-16.9638,-23.1727,-15.602,-29.8849,-25.261,-16.9998 Still,F2,Berlin-Fernsehturm.y4m,v12.0.0,-15.3963,-29.1276,-25.1079,-16.5211,-15.6172,-15.6142,-15.1604,-14.9619,-16.5443,-22.1495,-15.3963,-29.1276,-25.1079,-16.7527 Still,F2,Berlin-Fernsehturm.y4m,v13.0.0,-15.3022,-28.1449,-24.9931,-16.3766,-16.9233,-15.7534,-14.8058,-14.3351,-16.6487,-22.2858,-15.3022,-28.1449,-24.9931,-16.6303 -Still,F2,Big_Easy_chair.y4m,libaom-v3.12.0,2.4159,8.269,6.5939,2.843,1.2343,1.691,-5.299,-3.7159,1.1643,5.02,2.4159,8.269,6.5939,3.5941 -Still,F2,Big_Easy_chair.y4m,libaom-v3.12.0-unconstrained,0.1426,-3.0854,-2.3552,-0.1184,1.5935,1.3646,-1.7133,-0.5016,0.5336,-0.779,0.1426,-3.0854,-2.3552,-0.335 +Still,F2,Berlin-Fernsehturm.y4m,v14.0.0,-15.3429,-28.1837,-25.0295,-16.4171,-16.9603,-15.7933,-14.8817,-14.4089,-16.6939,-22.3276,-15.3429,-28.1837,-25.0295,-16.6713 +Still,F2,Berlin-Fernsehturm.y4m,v15.0.0,-15.3429,-28.1837,-25.0295,-16.4171,-16.9603,-15.7933,-14.8817,-14.4089,-16.6939,-22.3276,-15.3429,-28.1837,-25.0295,-16.6713 Still,F2,Big_Easy_chair.y4m,v02.0.0,-8.6202,-3.6783,-6.4856,-8.3422,-5.3444,-6.3056,-5.7944,-7.049,-7.2168,-6.1651,-8.6202,-3.6783,-6.4856,-8.1104 Still,F2,Big_Easy_chair.y4m,v03.0.0,-12.9921,-6.0957,-9.0165,-12.5328,-9.482,-10.379,-12.5035,-12.73,-11.2081,-9.9251,-12.9921,-6.0957,-9.0165,-12.0887 Still,F2,Big_Easy_chair.y4m,v04.0.0,-16.4715,-13.1899,-17.9392,-16.4242,-12.2974,-13.0135,-17.7221,-17.1644,-14.5643,-14.4126,-16.4715,-13.1899,-17.9392,-16.3748 @@ -3905,8 +3903,8 @@ Still,F2,Big_Easy_chair.y4m,v10.0.0,-26.3202,-26.0123,-28.565,-26.43,-22.0111,-2 Still,F2,Big_Easy_chair.y4m,v11.0.0,-26.4474,-25.9661,-27.5211,-26.482,-22.2164,-22.579,-30.779,-29.7591,-24.3412,-24.7655,-26.4474,-25.9661,-27.5211,-26.5593 Still,F2,Big_Easy_chair.y4m,v12.0.0,-25.8715,-26.3288,-25.9874,-25.9141,-21.8671,-22.2601,-29.1762,-28.0869,-23.939,-24.5782,-25.8715,-26.3288,-25.9874,-26.0031 Still,F2,Big_Easy_chair.y4m,v13.0.0,-25.9499,-26.27,-28.8018,-26.1044,-23.7501,-22.2507,-31.6774,-29.3665,-24.1064,-24.9768,-25.9499,-26.27,-28.8018,-26.2676 -Still,F2,Butterfly.y4m,libaom-v3.12.0,-0.7171,3.5344,4.1964,-0.1716,3.6318,1.0081,-4.273,-2.1086,1.7434,1.3573,-0.7171,3.5344,4.1964,0.2632 -Still,F2,Butterfly.y4m,libaom-v3.12.0-unconstrained,0.8098,-0.7709,-2.7408,0.4439,0.4566,1.2481,1.5409,1.224,0.6344,-0.6034,0.8098,-0.7709,-2.7408,0.2517 +Still,F2,Big_Easy_chair.y4m,v14.0.0,-26.0277,-26.3489,-28.8824,-26.1823,-23.8083,-22.3131,-31.7785,-29.4699,-24.1786,-25.0536,-26.0277,-26.3489,-28.8824,-26.3466 +Still,F2,Big_Easy_chair.y4m,v15.0.0,-26.0277,-26.3489,-28.8824,-26.1823,-23.8083,-22.3131,-31.7785,-29.4699,-24.1786,-25.0536,-26.0277,-26.3489,-28.8824,-26.3466 Still,F2,Butterfly.y4m,v02.0.0,-4.9242,-5.8028,-9.1571,-5.2123,-5.2053,-5.7316,-6.0716,-6.1948,-6.0638,-5.6902,-4.9242,-5.8028,-9.1571,-5.3809 Still,F2,Butterfly.y4m,v03.0.0,-8.0382,-7.425,-10.8755,-8.1712,-8.051,-8.4326,-9.3939,-8.851,-8.9363,-7.6596,-8.0382,-7.425,-10.8755,-8.2297 Still,F2,Butterfly.y4m,v04.0.0,-10.7062,-18.0054,-20.2925,-11.6819,-11.0032,-11.4153,-11.2853,-11.4769,-12.3204,-12.6366,-10.7062,-18.0054,-20.2925,-12.2433 @@ -3919,8 +3917,8 @@ Still,F2,Butterfly.y4m,v10.0.0,-17.1404,-32.2553,-37.4179,-19.2667,-18.2982,-18. Still,F2,Butterfly.y4m,v11.0.0,-17.4293,-32.2574,-36.6869,-19.4887,-18.465,-18.1376,-20.7187,-20.3915,-19.9892,-22.4147,-17.4293,-32.2574,-36.6869,-20.5697 Still,F2,Butterfly.y4m,v12.0.0,-17.0238,-32.0153,-37.1254,-19.1384,-18.6203,-17.8697,-19.7114,-19.3197,-19.5504,-21.9462,-17.0238,-32.0153,-37.1254,-20.2183 Still,F2,Butterfly.y4m,v13.0.0,-17.3798,-32.2577,-37.349,-19.479,-16.779,-18.405,-20.4414,-20.4165,-20.0831,-22.5711,-17.3798,-32.2577,-37.349,-20.5483 -Still,F2,Cecret_Lake_Panorama.y4m,libaom-v3.12.0,0.2995,-1.2873,-1.3647,0.1796,-0.2779,-0.2373,-0.8274,-0.7246,-0.6913,-0.2833,0.2995,-1.2873,-1.3647,0.076 -Still,F2,Cecret_Lake_Panorama.y4m,libaom-v3.12.0-unconstrained,1.4353,-0.888,-0.3565,1.2869,0.8411,0.7954,1.4454,1.6622,1.106,0.6921,1.4353,-0.888,-0.3565,1.26 +Still,F2,Butterfly.y4m,v14.0.0,-17.4135,-32.2887,-37.379,-19.5123,-16.7997,-18.4341,-20.5033,-20.4769,-20.1222,-22.604,-17.4135,-32.2887,-37.379,-20.5817 +Still,F2,Butterfly.y4m,v15.0.0,-17.4135,-32.2887,-37.379,-19.5123,-16.7997,-18.4341,-20.5033,-20.4769,-20.1222,-22.604,-17.4135,-32.2887,-37.379,-20.5817 Still,F2,Cecret_Lake_Panorama.y4m,v02.0.0,-0.9714,-11.1188,-14.8575,-1.9218,-1.9818,-1.8882,-1.4982,-1.1928,-2.6675,-4.3928,-0.9714,-11.1188,-14.8575,-1.5419 Still,F2,Cecret_Lake_Panorama.y4m,v03.0.0,-2.0144,-13.7404,-16.8124,-3.0748,-2.5257,-2.6942,-0.8386,-0.6069,-3.0117,-5.5172,-2.0144,-13.7404,-16.8124,-2.6268 Still,F2,Cecret_Lake_Panorama.y4m,v04.0.0,-3.596,-15.7467,-22.5748,-4.9209,-4.3914,-4.7095,-2.3136,-2.1798,-5.1018,-7.8817,-3.596,-15.7467,-22.5748,-4.4197 @@ -3933,8 +3931,8 @@ Still,F2,Cecret_Lake_Panorama.y4m,v10.0.0,-5.9058,-20.8933,-28.8838,-7.5886,-8.7 Still,F2,Cecret_Lake_Panorama.y4m,v11.0.0,-6.1753,-20.1085,-28.4187,-7.7839,-8.8421,-8.7209,-9.4504,-9.0579,-9.5994,-11.7642,-6.1753,-20.1085,-28.4187,-7.3156 Still,F2,Cecret_Lake_Panorama.y4m,v12.0.0,-6.1969,-20.2688,-28.7989,-7.8041,-8.5196,-8.4243,-9.8676,-9.3716,-9.6003,-11.884,-6.1969,-20.2688,-28.7989,-7.3428 Still,F2,Cecret_Lake_Panorama.y4m,v13.0.0,-6.1713,-20.1328,-28.8213,-7.8131,-7.579,-8.3106,-10.4407,-9.7431,-9.5039,-12.0439,-6.1713,-20.1328,-28.8213,-7.317 -Still,F2,Claudette.y4m,libaom-v3.12.0,0.1021,-1.547,-2.5688,-0.0255,-0.4095,-0.4712,-0.5778,-0.8856,-0.6388,-0.6013,0.1021,-1.547,-2.5688,-0.0106 -Still,F2,Claudette.y4m,libaom-v3.12.0-unconstrained,1.4104,14.3596,11.1134,1.97,1.4168,0.8886,2.4967,3.1116,1.7208,2.6543,1.4104,14.3596,11.1134,1.4838 +Still,F2,Cecret_Lake_Panorama.y4m,v14.0.0,-6.1757,-20.1363,-28.8249,-7.8175,-7.5835,-8.3161,-10.4528,-9.755,-9.5101,-12.0483,-6.1757,-20.1363,-28.8249,-7.3215 +Still,F2,Cecret_Lake_Panorama.y4m,v15.0.0,-6.1757,-20.1363,-28.8249,-7.8175,-7.5835,-8.3161,-10.4528,-9.755,-9.5101,-12.0483,-6.1757,-20.1363,-28.8249,-7.3215 Still,F2,Claudette.y4m,v02.0.0,-0.84,-42.1827,-49.4267,-4.2423,-1.8374,-1.7479,-1.6296,-0.9937,-3.4425,-11.3717,-0.84,-42.1827,-49.4267,-1.8186 Still,F2,Claudette.y4m,v03.0.0,-2.5403,-44.185,-52.0185,-5.9535,-1.733,-2.848,-0.8634,-0.042,-3.853,-13.064,-2.5403,-44.185,-52.0185,-3.5539 Still,F2,Claudette.y4m,v04.0.0,-4.5113,-48.2383,-61.7141,-8.5426,-3.5255,-4.9659,-0.855,-0.3773,-6.0712,-16.8279,-4.5113,-48.2383,-61.7141,-5.8051 @@ -3947,8 +3945,8 @@ Still,F2,Claudette.y4m,v10.0.0,-7.1366,-57.6075,-68.4166,-11.9496,-7.9076,-8.402 Still,F2,Claudette.y4m,v11.0.0,-7.4038,-58.371,-66.1897,-12.0484,-8.1766,-8.6981,-7.1301,-6.9535,-10.8595,-22.4643,-7.4038,-58.371,-66.1897,-8.9468 Still,F2,Claudette.y4m,v12.0.0,-7.3825,-59.6542,-68.5985,-12.142,-8.2451,-8.7386,-8.2386,-8.0967,-10.6562,-22.4811,-7.3825,-59.6542,-68.5985,-8.9171 Still,F2,Claudette.y4m,v13.0.0,-7.4157,-58.6376,-68.3793,-12.1819,-8.8733,-8.8471,-9.2737,-8.8636,-11.0642,-22.411,-7.4157,-58.6376,-68.3793,-8.9578 -Still,F2,Collage_Oppeln.y4m,libaom-v3.12.0,0.0655,-0.7699,-0.8333,-0.0098,-0.0735,-0.4453,-0.7812,-0.4515,-0.8506,-0.2079,0.0655,-0.7699,-0.8333,-0.0467 -Still,F2,Collage_Oppeln.y4m,libaom-v3.12.0-unconstrained,0.8549,-2.4081,-1.9495,0.5923,0.3266,0.0619,0.328,0.6855,-0.0456,-0.2296,0.8549,-2.4081,-1.9495,0.5976 +Still,F2,Claudette.y4m,v14.0.0,-7.4222,-58.6425,-68.3836,-12.1883,-8.8794,-8.8549,-9.2923,-8.8819,-11.0732,-22.4178,-7.4222,-58.6425,-68.3836,-8.9645 +Still,F2,Claudette.y4m,v15.0.0,-7.4222,-58.6425,-68.3836,-12.1883,-8.8794,-8.8549,-9.2923,-8.8819,-11.0732,-22.4178,-7.4222,-58.6425,-68.3836,-8.9645 Still,F2,Collage_Oppeln.y4m,v02.0.0,-2.4893,-9.5528,-10.8306,-3.1902,-2.8222,-3.4596,-3.7924,-3.1618,-4.3965,-6.467,-2.4893,-9.5528,-10.8306,-3.0953 Still,F2,Collage_Oppeln.y4m,v03.0.0,-4.7061,-10.7638,-11.5937,-5.296,-4.1041,-5.0507,-3.3787,-2.7898,-5.3075,-8.1017,-4.7061,-10.7638,-11.5937,-5.1988 Still,F2,Collage_Oppeln.y4m,v04.0.0,-7.599,-18.085,-19.3692,-8.6404,-7.0025,-8.0704,-6.9089,-6.3065,-8.8988,-12.7147,-7.599,-18.085,-19.3692,-8.5712 @@ -3961,8 +3959,8 @@ Still,F2,Collage_Oppeln.y4m,v10.0.0,-12.1175,-24.9579,-24.4592,-13.3009,-12.6163 Still,F2,Collage_Oppeln.y4m,v11.0.0,-11.7304,-24.7363,-24.3735,-12.9296,-12.3831,-12.9583,-14.8736,-13.3785,-13.9615,-18.1261,-11.7304,-24.7363,-24.3735,-12.9905 Still,F2,Collage_Oppeln.y4m,v12.0.0,-11.8597,-24.0198,-23.7987,-12.9792,-12.3905,-13.0279,-15.2777,-13.5573,-13.8365,-17.8682,-11.8597,-24.0198,-23.7987,-13.049 Still,F2,Collage_Oppeln.y4m,v13.0.0,-11.77,-24.2075,-23.9705,-12.9156,-13.1946,-12.9819,-14.8271,-13.5407,-14.0968,-17.9866,-11.77,-24.2075,-23.9705,-12.9724 -Still,F2,Corona_Arch.y4m,libaom-v3.12.0,0.8709,-0.2104,-0.4069,0.773,-1.8673,-0.8407,1.2619,0.6529,-0.7869,0.5464,0.8709,-0.2104,-0.4069,0.6965 -Still,F2,Corona_Arch.y4m,libaom-v3.12.0-unconstrained,1.7438,-3.4142,-2.6029,1.3151,3.1011,1.9756,4.8266,4.5301,2.3855,1.0118,1.7438,-3.4142,-2.6029,1.3768 +Still,F2,Collage_Oppeln.y4m,v14.0.0,-11.7778,-24.2147,-23.9779,-12.9233,-13.202,-12.9903,-14.8434,-13.5568,-14.1062,-17.9943,-11.7778,-24.2147,-23.9779,-12.9803 +Still,F2,Collage_Oppeln.y4m,v15.0.0,-11.7778,-24.2147,-23.9779,-12.9233,-13.202,-12.9903,-14.8434,-13.5568,-14.1062,-17.9943,-11.7778,-24.2147,-23.9779,-12.9803 Still,F2,Corona_Arch.y4m,v02.0.0,-2.907,-10.1419,-1.0657,-3.1034,-2.9024,-3.5004,-1.4382,-1.8067,-3.1962,-2.8948,-2.907,-10.1419,-1.0657,-2.9609 Still,F2,Corona_Arch.y4m,v03.0.0,-4.3436,-8.2612,-3.9989,-4.4827,-4.0347,-4.5462,-2.6941,-3.1269,-4.1909,-4.31,-4.3436,-8.2612,-3.9989,-4.3844 Still,F2,Corona_Arch.y4m,v04.0.0,-6.9842,-25.0211,-10.3808,-7.9241,-6.6096,-7.2936,-5.9605,-6.3554,-6.8983,-8.116,-6.9842,-25.0211,-10.3808,-7.7544 @@ -3975,8 +3973,8 @@ Still,F2,Corona_Arch.y4m,v10.0.0,-12.0194,-31.1483,-19.1952,-13.2192,-12.9654,-1 Still,F2,Corona_Arch.y4m,v11.0.0,-11.9771,-31.031,-18.8961,-13.158,-13.4157,-13.2489,-15.2951,-15.498,-13.4769,-13.6053,-11.9771,-31.031,-18.8961,-13.1038 Still,F2,Corona_Arch.y4m,v12.0.0,-11.8664,-30.7895,-17.1692,-12.9605,-13.101,-13.0371,-14.1012,-14.1518,-13.3229,-13.2861,-11.8664,-30.7895,-17.1692,-12.8559 Still,F2,Corona_Arch.y4m,v13.0.0,-11.7332,-31.7417,-17.6823,-12.9039,-12.2741,-12.8848,-14.6161,-14.3331,-13.2141,-13.3516,-11.7332,-31.7417,-17.6823,-12.786 -Still,F2,Correfocs_Festa_Major_del_Clot.y4m,libaom-v3.12.0,0.1468,-0.6258,0.0977,0.1118,-0.6466,-0.7037,-1.6873,-1.596,-0.9859,0.1488,0.1468,-0.6258,0.0977,0.0894 -Still,F2,Correfocs_Festa_Major_del_Clot.y4m,libaom-v3.12.0-unconstrained,0.3973,-1.5401,-1.4527,0.219,-1.3082,-1.2443,2.6031,1.4815,-0.606,-1.1082,0.3973,-1.5401,-1.4527,0.1841 +Still,F2,Corona_Arch.y4m,v14.0.0,-11.7447,-31.7562,-17.695,-12.9157,-12.2846,-12.8984,-14.6461,-14.3625,-13.2296,-13.3637,-11.7447,-31.7562,-17.695,-12.7979 +Still,F2,Corona_Arch.y4m,v15.0.0,-11.7447,-31.7562,-17.695,-12.9157,-12.2846,-12.8984,-14.6461,-14.3625,-13.2296,-13.3637,-11.7447,-31.7562,-17.695,-12.7979 Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v02.0.0,-4.0733,-8.527,-5.5961,-4.3457,-4.7984,-4.9629,-0.8421,-2.6736,-5.0957,-5.047,-4.0733,-8.527,-5.5961,-4.2294 Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v03.0.0,-9.7541,-11.9635,-7.9723,-9.7556,-8.4353,-9.0206,-5.8553,-6.6625,-8.3072,-9.1442,-9.7541,-11.9635,-7.9723,-9.5353 Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v04.0.0,-12.75,-16.8389,-15.1957,-13.0627,-12.199,-12.7593,-8.4794,-9.717,-12.0375,-13.5054,-12.75,-16.8389,-15.1957,-13.0617 @@ -3989,8 +3987,8 @@ Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v10.0.0,-17.2424,-26.2367,-21.6353,- Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v11.0.0,-17.1571,-24.8679,-20.9105,-17.6925,-17.0944,-17.4892,-15.6471,-16.1303,-17.3745,-19.2311,-17.1571,-24.8679,-20.9105,-17.8069 Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v12.0.0,-17.438,-25.4548,-20.6453,-17.9789,-17.3277,-17.6975,-15.7362,-16.9353,-17.5997,-19.4956,-17.438,-25.4548,-20.6453,-18.0356 Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v13.0.0,-17.3978,-26.0886,-20.425,-17.9466,-18.6525,-17.1053,-16.766,-17.3041,-17.0366,-19.3162,-17.3978,-26.0886,-20.425,-18.0047 -Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,libaom-v3.12.0,0.0987,-1.415,-1.6433,-0.0033,0.0528,0.0506,-0.2892,0.0347,-0.1026,-0.3558,0.0987,-1.415,-1.6433,-0.043 -Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,libaom-v3.12.0-unconstrained,1.7706,-1.4812,-3.4132,1.4461,3.1388,2.1778,3.0464,3.3328,2.0728,0.4943,1.7706,-1.4812,-3.4132,1.4888 +Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v14.0.0,-17.414,-26.1025,-20.4404,-17.9626,-18.6674,-17.1219,-16.7969,-17.3336,-17.054,-19.3319,-17.414,-26.1025,-20.4404,-18.021 +Still,F2,Correfocs_Festa_Major_del_Clot.y4m,v15.0.0,-17.414,-26.1025,-20.4404,-17.9626,-18.6674,-17.1219,-16.7969,-17.3336,-17.054,-19.3319,-17.414,-26.1025,-20.4404,-18.021 Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v02.0.0,-2.1115,-3.6717,-2.5876,-2.1954,-1.8795,-2.4027,-2.7633,-2.4137,-2.0662,-2.9052,-2.1115,-3.6717,-2.5876,-2.1763 Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v03.0.0,-3.5885,-5.0877,-3.5777,-3.6472,-3.0039,-3.7528,-3.1283,-3.0842,-3.3838,-3.9883,-3.5885,-5.0877,-3.5777,-3.6192 Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v04.0.0,-6.1792,-15.0427,-11.2261,-6.8111,-5.5313,-6.3449,-6.5902,-6.0644,-6.6273,-8.6245,-6.1792,-15.0427,-11.2261,-6.8297 @@ -4003,8 +4001,8 @@ Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v10.0.0,-10.4348, Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v11.0.0,-10.2923,-22.3289,-17.1344,-11.1843,-12.2707,-11.9786,-15.2792,-14.799,-12.7202,-14.2673,-10.2923,-22.3289,-17.1344,-11.324 Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v12.0.0,-10.3376,-22.1062,-16.857,-11.192,-12.1594,-11.8879,-15.4293,-14.7147,-12.5676,-14.0662,-10.3376,-22.1062,-16.857,-11.3133 Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v13.0.0,-10.2805,-22.7068,-17.2579,-11.1928,-10.9166,-11.9882,-15.4723,-14.9595,-12.674,-14.1567,-10.2805,-22.7068,-17.2579,-11.304 -Still,F2,Esquibien_Jean_Perrot.y4m,libaom-v3.12.0,0.262,-2.6167,-2.4348,0.119,0.1135,0.0589,0.5375,-0.5237,-0.6552,-0.1683,0.262,-2.6167,-2.4348,0.1316 -Still,F2,Esquibien_Jean_Perrot.y4m,libaom-v3.12.0-unconstrained,1.6612,0.7297,0.9772,1.5827,1.3717,1.204,3.6436,2.8177,1.4552,1.7395,1.6612,0.7297,0.9772,1.5889 +Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v14.0.0,-10.2929,-22.7257,-17.2767,-11.2057,-10.9265,-12.0039,-15.5109,-14.9977,-12.6909,-14.1716,-10.2929,-22.7257,-17.2767,-11.317 +Still,F2,Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m,v15.0.0,-10.2929,-22.7257,-17.2767,-11.2057,-10.9265,-12.0039,-15.5109,-14.9977,-12.6909,-14.1716,-10.2929,-22.7257,-17.2767,-11.317 Still,F2,Esquibien_Jean_Perrot.y4m,v02.0.0,-0.9052,-43.284,-35.68,-3.9976,-1.2074,-1.0792,-0.2634,-0.4867,-2.9678,-7.747,-0.9052,-43.284,-35.68,-1.8933 Still,F2,Esquibien_Jean_Perrot.y4m,v03.0.0,-2.0957,-45.8158,-37.763,-5.312,-2.3491,-2.0694,-1.7937,-1.6305,-4.0814,-9.4357,-2.0957,-45.8158,-37.763,-3.1454 Still,F2,Esquibien_Jean_Perrot.y4m,v04.0.0,-4.5831,-53.6321,-46.7639,-8.417,-4.8194,-4.8614,-4.3827,-4.1955,-7.3639,-13.3965,-4.5831,-53.6321,-46.7639,-6.0807 @@ -4017,8 +4015,8 @@ Still,F2,Esquibien_Jean_Perrot.y4m,v10.0.0,-9.8483,-63.3411,-54.2629,-14.2125,-1 Still,F2,Esquibien_Jean_Perrot.y4m,v11.0.0,-10.282,-63.2941,-53.4563,-14.5413,-11.5035,-11.3218,-16.9472,-17.1558,-15.1591,-21.3279,-10.282,-63.2941,-53.4563,-12.0955 Still,F2,Esquibien_Jean_Perrot.y4m,v12.0.0,-11.2772,-65.0802,-55.9277,-15.675,-12.9343,-12.6466,-18.6988,-18.9043,-16.7846,-22.8616,-11.2772,-65.0802,-55.9277,-13.1421 Still,F2,Esquibien_Jean_Perrot.y4m,v13.0.0,-11.2358,-64.419,-53.9792,-15.5122,-10.8371,-12.4476,-18.7747,-19.1843,-16.3253,-22.5685,-11.2358,-64.419,-53.9792,-13.0732 -Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,libaom-v3.12.0,0.275,-1.2004,-1.566,0.1791,-0.3469,-0.2893,-0.0224,-0.1885,-0.7374,-0.0344,0.275,-1.2004,-1.566,0.1489 -Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,libaom-v3.12.0-unconstrained,1.3993,-1.5035,-3.5476,1.1437,0.8828,0.9071,2.2412,2.2525,0.9675,0.3764,1.3993,-1.5035,-3.5476,1.1619 +Still,F2,Esquibien_Jean_Perrot.y4m,v14.0.0,-11.2449,-64.427,-53.9882,-15.5213,-10.844,-12.457,-18.8026,-19.2117,-16.338,-22.5781,-11.2449,-64.427,-53.9882,-13.0826 +Still,F2,Esquibien_Jean_Perrot.y4m,v15.0.0,-11.2449,-64.427,-53.9882,-15.5213,-10.844,-12.457,-18.8026,-19.2117,-16.338,-22.5781,-11.2449,-64.427,-53.9882,-13.0826 Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v02.0.0,-1.0717,-15.8811,-13.7622,-2.1952,-2.1588,-2.0934,-1.75,-0.7028,-2.3971,-4.3066,-1.0717,-15.8811,-13.7622,-1.7211 Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v03.0.0,-2.4222,-16.345,-14.2134,-3.502,-2.9114,-2.9424,-0.139,0.0813,-2.9852,-5.3534,-2.4222,-16.345,-14.2134,-3.0495 Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v04.0.0,-4.3186,-18.458,-18.3771,-5.485,-4.3776,-4.8821,-3.6023,-2.9019,-5.1794,-7.3833,-4.3186,-18.458,-18.3771,-5.0856 @@ -4031,8 +4029,8 @@ Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v10.0.0,-6.4447,-23.1512,-28.9006 Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v11.0.0,-7.2603,-23.0968,-27.682,-8.7917,-8.9806,-9.014,-9.3399,-9.0661,-9.7505,-11.2984,-7.2603,-23.0968,-27.682,-8.5211 Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v12.0.0,-7.2746,-23.3616,-28.1282,-8.8179,-8.6842,-8.8138,-11.0979,-10.4104,-9.8115,-11.3658,-7.2746,-23.3616,-28.1282,-8.5216 Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v13.0.0,-7.2205,-22.764,-27.9871,-8.7295,-8.2804,-8.7457,-10.1561,-9.4654,-9.809,-11.4504,-7.2205,-22.764,-27.9871,-8.4738 -Still,F2,Fontaine_Place_Stanislas.y4m,libaom-v3.12.0,0.0654,-0.5388,-0.5767,0.0163,-0.6005,-0.9031,0.1836,-0.8175,-1.2782,-0.008,0.0654,-0.5388,-0.5767,-0.0037 -Still,F2,Fontaine_Place_Stanislas.y4m,libaom-v3.12.0-unconstrained,1.0199,0.3253,-0.558,0.9218,-0.1808,-0.2496,0.9821,0.9072,0.1009,0.3967,1.0199,0.3253,-0.558,0.9122 +Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v14.0.0,-7.2269,-22.7697,-27.9925,-8.7358,-8.2857,-8.7525,-10.1728,-9.4816,-9.8169,-11.4571,-7.2269,-22.7697,-27.9925,-8.4804 +Still,F2,Florac-Le_Vibron-Source_du_Pecher.y4m,v15.0.0,-7.2269,-22.7697,-27.9925,-8.7358,-8.2857,-8.7525,-10.1728,-9.4816,-9.8169,-11.4571,-7.2269,-22.7697,-27.9925,-8.4804 Still,F2,Fontaine_Place_Stanislas.y4m,v02.0.0,-2.7593,-10.4751,-20.0914,-3.8366,-3.9712,-4.0902,-2.712,-2.92,-4.7965,-7.8697,-2.7593,-10.4751,-20.0914,-3.3903 Still,F2,Fontaine_Place_Stanislas.y4m,v03.0.0,-5.2607,-12.7253,-25.5525,-6.4248,-5.2917,-5.6815,-2.6895,-2.2255,-5.501,-10.0202,-5.2607,-12.7253,-25.5525,-5.9517 Still,F2,Fontaine_Place_Stanislas.y4m,v04.0.0,-7.6943,-16.4867,-30.1398,-9.0219,-8.4486,-8.8405,-4.2516,-4.3945,-8.7008,-13.1734,-7.6943,-16.4867,-30.1398,-8.658 @@ -4045,8 +4043,8 @@ Still,F2,Fontaine_Place_Stanislas.y4m,v10.0.0,-12.1601,-22.182,-35.5796,-13.6976 Still,F2,Fontaine_Place_Stanislas.y4m,v11.0.0,-11.9523,-22.0928,-36.1022,-13.5069,-13.2147,-13.5944,-12.5472,-12.1306,-14.0823,-19.3826,-11.9523,-22.0928,-36.1022,-13.1206 Still,F2,Fontaine_Place_Stanislas.y4m,v12.0.0,-12.6523,-21.7872,-35.7489,-14.149,-14.4235,-14.7263,-13.7384,-13.2458,-14.923,-19.8761,-12.6523,-21.7872,-35.7489,-13.7754 Still,F2,Fontaine_Place_Stanislas.y4m,v13.0.0,-12.6951,-22.4043,-35.3368,-14.1986,-14.9404,-14.5846,-13.7712,-13.2036,-15.1194,-19.8888,-12.6951,-22.4043,-35.3368,-13.8234 -Still,F2,Genmaicha_Tea.y4m,libaom-v3.12.0,-0.1699,-1.4101,-0.8168,-0.2446,-0.6445,-0.8449,-1.331,-1.4529,-1.1104,0.3494,-0.1699,-1.4101,-0.8168,-0.2946 -Still,F2,Genmaicha_Tea.y4m,libaom-v3.12.0-unconstrained,0.9394,-2.983,-3.6406,0.5836,-1.1173,-0.9672,1.0205,0.6453,0.6345,-1.4711,0.9394,-2.983,-3.6406,0.6204 +Still,F2,Fontaine_Place_Stanislas.y4m,v14.0.0,-12.7053,-22.4133,-35.3444,-14.2086,-14.95,-14.5952,-13.7931,-13.225,-15.1319,-19.8992,-12.7053,-22.4133,-35.3444,-13.8338 +Still,F2,Fontaine_Place_Stanislas.y4m,v15.0.0,-12.7053,-22.4133,-35.3444,-14.2086,-14.95,-14.5952,-13.7931,-13.225,-15.1319,-19.8992,-12.7053,-22.4133,-35.3444,-13.8338 Still,F2,Genmaicha_Tea.y4m,v02.0.0,-4.0225,-14.6038,-9.7659,-4.786,-5.0281,-4.8453,-6.1004,-6.2009,-5.7024,-12.589,-4.0225,-14.6038,-9.7659,-4.7054 Still,F2,Genmaicha_Tea.y4m,v03.0.0,-7.0901,-17.102,-12.1905,-7.7943,-6.9793,-6.7499,-8.3125,-7.9498,-7.8051,-12.1896,-7.0901,-17.102,-12.1905,-7.7041 Still,F2,Genmaicha_Tea.y4m,v04.0.0,-9.9758,-27.1892,-19.5886,-11.1853,-10.8154,-10.4367,-10.1964,-10.5305,-11.1001,-19.4663,-9.9758,-27.1892,-19.5886,-11.1497 @@ -4059,8 +4057,8 @@ Still,F2,Genmaicha_Tea.y4m,v10.0.0,-18.3903,-32.4527,-25.8989,-19.4338,-20.0409, Still,F2,Genmaicha_Tea.y4m,v11.0.0,-18.1786,-35.4325,-26.9831,-19.422,-19.0034,-18.8745,-19.2948,-19.3234,-19.561,-26.9562,-18.1786,-35.4325,-26.9831,-19.3636 Still,F2,Genmaicha_Tea.y4m,v12.0.0,-18.3482,-33.2884,-26.6189,-19.4565,-18.7605,-18.8871,-19.3229,-19.1728,-19.6284,-26.6999,-18.3482,-33.2884,-26.6189,-19.4189 Still,F2,Genmaicha_Tea.y4m,v13.0.0,-18.5064,-34.9191,-24.5682,-19.5992,-20.256,-19.2187,-19.2474,-19.0835,-19.8774,-25.7429,-18.5064,-34.9191,-24.5682,-19.544 -Still,F2,Homestead_in_Montana.y4m,libaom-v3.12.0,-0.1738,-0.8298,-0.7933,-0.241,0.4579,0.0331,-0.2297,-0.1755,-0.2692,-0.3491,-0.1738,-0.8298,-0.7933,-0.3252 -Still,F2,Homestead_in_Montana.y4m,libaom-v3.12.0-unconstrained,0.6022,-0.923,-2.1324,0.3686,1.3475,1.0788,3.6971,3.2507,1.2443,0.076,0.6022,-0.923,-2.1324,0.2108 +Still,F2,Genmaicha_Tea.y4m,v14.0.0,-18.5325,-34.9398,-24.5944,-19.625,-20.2863,-19.2493,-19.2935,-19.1287,-19.9122,-25.7694,-18.5325,-34.9398,-24.5944,-19.5703 +Still,F2,Genmaicha_Tea.y4m,v15.0.0,-18.5325,-34.9398,-24.5944,-19.625,-20.2863,-19.2493,-19.2935,-19.1287,-19.9122,-25.7694,-18.5325,-34.9398,-24.5944,-19.5703 Still,F2,Homestead_in_Montana.y4m,v02.0.0,-2.8242,-3.811,-3.5389,-2.918,-1.367,-2.0086,-1.6322,-1.8395,-2.1734,-2.7626,-2.8242,-3.811,-3.5389,-2.9583 Still,F2,Homestead_in_Montana.y4m,v03.0.0,-4.9814,-5.0909,-5.1016,-4.998,-3.0283,-3.8185,-2.8603,-2.9534,-3.9399,-4.5677,-4.9814,-5.0909,-5.1016,-4.9668 Still,F2,Homestead_in_Montana.y4m,v04.0.0,-8.1566,-12.8197,-11.5824,-8.6185,-6.2834,-7.2578,-7.1217,-6.5861,-7.4056,-8.6285,-8.1566,-12.8197,-11.5824,-8.877 @@ -4073,8 +4071,8 @@ Still,F2,Homestead_in_Montana.y4m,v10.0.0,-14.5766,-16.7386,-17.928,-14.9047,-14 Still,F2,Homestead_in_Montana.y4m,v11.0.0,-14.1918,-15.7623,-16.7603,-14.443,-13.5419,-14.3637,-14.9911,-14.8221,-13.6243,-14.9502,-14.1918,-15.7623,-16.7603,-14.6127 Still,F2,Homestead_in_Montana.y4m,v12.0.0,-14.4613,-16.468,-16.8715,-14.7193,-14.2402,-14.815,-15.9961,-15.5905,-14.0643,-15.4476,-14.4613,-16.468,-16.8715,-14.8957 Still,F2,Homestead_in_Montana.y4m,v13.0.0,-14.1448,-17.1941,-17.7798,-14.5358,-14.9016,-14.5277,-13.9809,-14.3409,-13.9369,-15.0417,-14.1448,-17.1941,-17.7798,-14.7973 -Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,libaom-v3.12.0,-0.0283,-0.2987,-0.1382,-0.0483,-0.4112,-0.3893,-0.5921,-0.7362,-0.657,-0.0845,-0.0283,-0.2987,-0.1382,-0.0661 -Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,libaom-v3.12.0-unconstrained,0.6255,-1.0238,-1.3608,0.4317,1.3542,1.1649,1.3951,1.175,1.0358,0.0504,0.6255,-1.0238,-1.3608,0.3178 +Still,F2,Homestead_in_Montana.y4m,v14.0.0,-14.1603,-17.2087,-17.7943,-14.5513,-14.9174,-14.5444,-14.0102,-14.3693,-13.9539,-15.0572,-14.1603,-17.2087,-17.7943,-14.8128 +Still,F2,Homestead_in_Montana.y4m,v15.0.0,-14.1603,-17.2087,-17.7943,-14.5513,-14.9174,-14.5444,-14.0102,-14.3693,-13.9539,-15.0572,-14.1603,-17.2087,-17.7943,-14.8128 Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v02.0.0,-3.5525,-2.5986,-4.0226,-3.5259,-3.2052,-3.3248,-2.3317,-2.9712,-3.1201,-3.422,-3.5525,-2.5986,-4.0226,-3.4857 Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v03.0.0,-5.6811,-3.9002,-4.7818,-5.5425,-4.3894,-4.8353,-2.502,-3.4163,-4.4996,-4.9085,-5.6811,-3.9002,-4.7818,-5.3925 Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v04.0.0,-8.2405,-8.3409,-10.6113,-8.3721,-6.6403,-7.298,-3.4706,-4.5169,-6.6049,-8.2272,-8.2405,-8.3409,-10.6113,-8.4102 @@ -4087,8 +4085,8 @@ Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v10.0.0,-13.4246,-12.872 Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v11.0.0,-13.3761,-12.5196,-15.131,-13.4154,-12.492,-12.8433,-13.9392,-13.3397,-12.1017,-13.5387,-13.3761,-12.5196,-15.131,-13.4503 Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v12.0.0,-13.2429,-12.3599,-15.1082,-13.2853,-12.235,-12.5634,-13.3194,-12.9937,-11.9011,-13.4298,-13.2429,-12.3599,-15.1082,-13.3146 Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v13.0.0,-13.1572,-12.6059,-15.41,-13.237,-13.1987,-12.476,-13.1529,-13.1066,-11.9165,-13.3295,-13.1572,-12.6059,-15.41,-13.2979 -Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,libaom-v3.12.0,0.2231,-0.9845,-0.2906,0.1402,-0.4297,-0.3381,-2.7599,-1.8867,-1.0496,-0.3071,0.2231,-0.9845,-0.2906,0.0762 -Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,libaom-v3.12.0-unconstrained,1.1644,-2.5095,-1.7845,0.8548,0.9072,0.7939,-1.0923,-1.0047,0.0303,-0.3249,1.1644,-2.5095,-1.7845,0.7862 +Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v14.0.0,-13.1667,-12.6154,-15.4196,-13.2465,-13.2073,-12.4857,-13.1728,-13.126,-11.9266,-13.3391,-13.1667,-12.6154,-15.4196,-13.3075 +Still,F2,Madeira_151_Funchal_Mercado_dos_Lavradores.y4m,v15.0.0,-13.1667,-12.6154,-15.4196,-13.2465,-13.2073,-12.4857,-13.1728,-13.126,-11.9266,-13.3391,-13.1667,-12.6154,-15.4196,-13.3075 Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v02.0.0,-2.0017,-6.0823,-8.1857,-2.5092,-2.5089,-2.4346,-4.4691,-4.1544,-3.6291,-4.8657,-2.0017,-6.0823,-8.1857,-2.6366 Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v03.0.0,-4.5149,-7.7256,-8.817,-4.886,-4.4493,-4.6064,-4.8558,-4.7098,-4.9677,-6.4352,-4.5149,-7.7256,-8.817,-4.9435 Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v04.0.0,-6.4452,-11.0881,-12.7576,-6.9935,-6.2913,-6.5779,-8.4212,-7.4608,-7.338,-9.3956,-6.4452,-11.0881,-12.7576,-7.0887 @@ -4101,8 +4099,8 @@ Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v10.0.0,-10.6309,-16.450 Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v11.0.0,-10.67,-16.3858,-22.911,-11.5619,-11.8755,-11.5725,-16.3272,-14.8063,-12.5588,-15.561,-10.67,-16.3858,-22.911,-11.8753 Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v12.0.0,-10.6674,-16.1426,-22.6689,-11.5333,-11.801,-11.4247,-16.1947,-15.167,-12.3032,-15.0486,-10.6674,-16.1426,-22.6689,-11.8301 Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v13.0.0,-10.6734,-16.2063,-22.9178,-11.5522,-10.9709,-11.4156,-17.791,-16.1262,-12.4815,-15.2259,-10.6734,-16.2063,-22.9178,-11.8481 -Still,F2,MagicKindom.y4m,libaom-v3.12.0,0.172,-1.371,-1.6982,0.0687,-0.0108,-0.1533,-0.9919,-1.205,-0.9091,-0.071,0.172,-1.371,-1.6982,0.0359 -Still,F2,MagicKindom.y4m,libaom-v3.12.0-unconstrained,1.2265,-2.4975,-0.9682,1.0064,1.0292,1.0392,1.0659,0.2693,0.9009,0.487,1.2265,-2.4975,-0.9682,0.9902 +Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v14.0.0,-10.6784,-16.211,-22.9221,-11.557,-10.9751,-11.4205,-17.802,-16.137,-12.4874,-15.2308,-10.6784,-16.211,-22.9221,-11.853 +Still,F2,Madeira_159_Funchal_Mercado_dos_Lavradores.y4m,v15.0.0,-10.6784,-16.211,-22.9221,-11.557,-10.9751,-11.4205,-17.802,-16.137,-12.4874,-15.2308,-10.6784,-16.211,-22.9221,-11.853 Still,F2,MagicKindom.y4m,v02.0.0,-2.0637,-11.7723,-11.4289,-2.8189,-2.6178,-2.524,-1.6127,-2.793,-3.6413,-4.0953,-2.0637,-11.7723,-11.4289,-2.5222 Still,F2,MagicKindom.y4m,v03.0.0,-3.5853,-15.935,-16.1705,-4.613,-3.6862,-4.0049,-2.4923,-2.6917,-4.3738,-5.8505,-3.5853,-15.935,-16.1705,-4.1458 Still,F2,MagicKindom.y4m,v04.0.0,-5.3025,-18.7631,-18.6923,-6.4704,-5.2531,-5.9167,-3.439,-3.9289,-6.229,-8.0677,-5.3025,-18.7631,-18.6923,-6.026 @@ -4115,8 +4113,8 @@ Still,F2,MagicKindom.y4m,v10.0.0,-8.7742,-25.631,-21.476,-10.0942,-9.2312,-9.758 Still,F2,MagicKindom.y4m,v11.0.0,-8.6205,-27.0723,-20.9241,-9.9795,-9.3012,-9.6422,-11.4188,-11.3268,-10.6663,-12.3729,-8.6205,-27.0723,-20.9241,-9.6327 Still,F2,MagicKindom.y4m,v12.0.0,-8.5357,-26.3284,-21.5847,-9.894,-9.062,-9.4179,-11.6001,-11.5946,-10.5778,-12.2089,-8.5357,-26.3284,-21.5847,-9.5236 Still,F2,MagicKindom.y4m,v13.0.0,-8.537,-26.4902,-20.6675,-9.8644,-9.5507,-9.5111,-10.8357,-10.6822,-10.406,-12.1289,-8.537,-26.4902,-20.6675,-9.4922 -Still,F2,Michigan_Stadium.y4m,libaom-v3.12.0,0.1047,0.2368,-0.275,0.0952,-1.1975,-1.2667,-0.8507,-0.9792,-1.333,0.0708,0.1047,0.2368,-0.275,0.0929 -Still,F2,Michigan_Stadium.y4m,libaom-v3.12.0-unconstrained,1.2762,-0.2702,-2.6674,1.033,-1.1424,-0.9621,-1.2174,-1.1764,-0.7505,0.2023,1.2762,-0.2702,-2.6674,0.9835 +Still,F2,MagicKindom.y4m,v14.0.0,-8.5417,-26.4945,-20.6711,-9.869,-9.5549,-9.5165,-10.8484,-10.6946,-10.4121,-12.1337,-8.5417,-26.4945,-20.6711,-9.4971 +Still,F2,MagicKindom.y4m,v15.0.0,-8.5417,-26.4945,-20.6711,-9.869,-9.5549,-9.5165,-10.8484,-10.6946,-10.4121,-12.1337,-8.5417,-26.4945,-20.6711,-9.4971 Still,F2,Michigan_Stadium.y4m,v02.0.0,-1.4326,-1.1681,-3.1623,-1.496,-2.8452,-3.0716,-2.4583,-2.4512,-2.8326,-2.0889,-1.4326,-1.1681,-3.1623,-1.4954 Still,F2,Michigan_Stadium.y4m,v03.0.0,-3.3367,-1.8681,-4.9595,-3.3339,-3.6853,-4.3231,-2.9111,-2.4099,-3.4925,-3.3329,-3.3367,-1.8681,-4.9595,-3.2698 Still,F2,Michigan_Stadium.y4m,v04.0.0,-5.1317,-4.278,-10.5261,-5.3346,-6.1928,-6.8606,-5.1758,-4.6528,-6.1549,-5.8912,-5.1317,-4.278,-10.5261,-5.3279 @@ -4129,8 +4127,8 @@ Still,F2,Michigan_Stadium.y4m,v10.0.0,-8.0214,-8.2385,-14.417,-8.3317,-10.6467,- Still,F2,Michigan_Stadium.y4m,v11.0.0,-7.7886,-8.1577,-14.1488,-8.1045,-10.823,-11.0327,-10.9581,-10.0596,-9.8684,-9.4218,-7.7886,-8.1577,-14.1488,-8.3002 Still,F2,Michigan_Stadium.y4m,v12.0.0,-7.837,-7.6419,-14.382,-8.1309,-10.4508,-10.881,-11.0681,-10.3112,-9.8406,-9.2202,-7.837,-7.6419,-14.382,-8.2969 Still,F2,Michigan_Stadium.y4m,v13.0.0,-7.7414,-7.8102,-14.6184,-8.067,-10.5513,-10.9252,-11.2576,-10.3081,-9.757,-9.3091,-7.7414,-7.8102,-14.6184,-8.2409 -Still,F2,OperaLamps.y4m,libaom-v3.12.0,-0.128,0.0084,-0.3741,-0.1272,-0.6919,-0.8494,-1.3001,-1.2061,-0.8187,0.013,-0.128,0.0084,-0.3741,-0.1182 -Still,F2,OperaLamps.y4m,libaom-v3.12.0-unconstrained,0.8439,-0.6338,-1.184,0.6785,0.6403,0.6471,1.7897,1.5726,0.5606,0.0588,0.8439,-0.6338,-1.184,0.5905 +Still,F2,Michigan_Stadium.y4m,v14.0.0,-7.7443,-7.8125,-14.6204,-8.0698,-10.5543,-10.9284,-11.2634,-10.3139,-9.7604,-9.3118,-7.7443,-7.8125,-14.6204,-8.2438 +Still,F2,Michigan_Stadium.y4m,v15.0.0,-7.7443,-7.8125,-14.6204,-8.0698,-10.5543,-10.9284,-11.2634,-10.3139,-9.7604,-9.3118,-7.7443,-7.8125,-14.6204,-8.2438 Still,F2,OperaLamps.y4m,v02.0.0,-4.0131,-2.0181,-5.9672,-4.0118,-4.441,-4.8028,-3.2713,-3.5282,-4.0226,-4.4956,-4.0131,-2.0181,-5.9672,-3.9607 Still,F2,OperaLamps.y4m,v03.0.0,-6.9471,-4.7268,-7.2193,-6.8532,-6.0874,-6.8363,-4.3767,-4.3207,-5.5098,-7.1288,-6.9471,-4.7268,-7.2193,-6.6378 Still,F2,OperaLamps.y4m,v04.0.0,-9.099,-6.507,-12.6231,-9.1531,-8.2004,-9.215,-4.5852,-5.0979,-7.5463,-9.2962,-9.099,-6.507,-12.6231,-9.0429 @@ -4143,8 +4141,8 @@ Still,F2,OperaLamps.y4m,v10.0.0,-13.6299,-10.72,-20.3763,-13.8303,-12.7083,-13.7 Still,F2,OperaLamps.y4m,v11.0.0,-13.4781,-10.3662,-21.1293,-13.7153,-12.5896,-13.5794,-11.9217,-11.9982,-11.7363,-14.7333,-13.4781,-10.3662,-21.1293,-13.8486 Still,F2,OperaLamps.y4m,v12.0.0,-13.4865,-10.077,-20.9947,-13.7011,-12.5374,-13.5517,-11.0304,-11.291,-11.8313,-14.5089,-13.4865,-10.077,-20.9947,-13.7699 Still,F2,OperaLamps.y4m,v13.0.0,-13.497,-10.3187,-20.8372,-13.7162,-14.998,-13.5728,-11.0387,-11.3906,-11.5949,-14.5921,-13.497,-10.3187,-20.8372,-13.7932 -Still,F2,Orion_Nebula.y4m,libaom-v3.12.0,0.8795,-0.0351,-0.2231,0.8003,1.1593,1.1073,0.2967,0.3051,0.6018,0.8623,0.8795,-0.0351,-0.2231,0.6988 -Still,F2,Orion_Nebula.y4m,libaom-v3.12.0-unconstrained,0.8479,-2.0631,-2.189,0.5247,1.3445,1.2133,1.1465,0.705,1.4067,-0.2138,0.8479,-2.0631,-2.189,0.4014 +Still,F2,OperaLamps.y4m,v14.0.0,-13.5027,-10.3237,-20.8413,-13.7218,-15.0036,-13.5791,-11.0509,-11.4025,-11.6013,-14.5974,-13.5027,-10.3237,-20.8413,-13.7988 +Still,F2,OperaLamps.y4m,v15.0.0,-13.5027,-10.3237,-20.8413,-13.7218,-15.0036,-13.5791,-11.0509,-11.4025,-11.6013,-14.5974,-13.5027,-10.3237,-20.8413,-13.7988 Still,F2,Orion_Nebula.y4m,v02.0.0,-2.9099,-2.253,0.3053,-2.714,-2.1849,-2.4646,-4.3211,-4.0657,-1.8703,-3.1633,-2.9099,-2.253,0.3053,-2.6345 Still,F2,Orion_Nebula.y4m,v03.0.0,-4.8025,-3.224,-2.4399,-4.611,-3.3654,-3.6402,-5.6114,-5.5499,-3.6733,-4.4826,-4.8025,-3.224,-2.4399,-4.5295 Still,F2,Orion_Nebula.y4m,v04.0.0,-6.4405,-8.0699,-7.271,-6.608,-4.5598,-5.1203,-6.6067,-6.3958,-5.1715,-7.4906,-6.4405,-8.0699,-7.271,-6.7569 @@ -4157,8 +4155,8 @@ Still,F2,Orion_Nebula.y4m,v10.0.0,-13.1162,-11.8536,-13.6093,-13.096,-11.9188,-1 Still,F2,Orion_Nebula.y4m,v11.0.0,-12.6961,-10.2073,-13.0116,-12.6054,-11.7964,-11.8834,-17.4252,-15.9547,-11.8739,-12.4615,-12.6961,-10.2073,-13.0116,-12.6396 Still,F2,Orion_Nebula.y4m,v12.0.0,-12.713,-10.9486,-12.608,-12.6285,-11.7173,-11.9034,-17.1125,-16.4185,-11.8934,-12.9506,-12.713,-10.9486,-12.608,-12.6437 Still,F2,Orion_Nebula.y4m,v13.0.0,-12.785,-11.1177,-14.0473,-12.7853,-12.7094,-11.8541,-17.0416,-15.3421,-12.0008,-13.3774,-12.785,-11.1177,-14.0473,-12.8588 -Still,F2,Saint_Catherine-Caravaggio.y4m,libaom-v3.12.0,-0.0677,0.4669,0.4842,0.0201,-0.5345,-0.5185,-1.1821,-0.9831,-0.1393,0.7374,-0.0677,0.4669,0.4842,0.056 -Still,F2,Saint_Catherine-Caravaggio.y4m,libaom-v3.12.0-unconstrained,0.97,-2.0063,-3.8082,0.5571,-0.1532,0.2682,2.1872,1.9428,0.1045,0.1739,0.97,-2.0063,-3.8082,0.7344 +Still,F2,Orion_Nebula.y4m,v14.0.0,-12.8385,-11.1761,-14.1014,-12.8391,-12.7452,-11.8992,-17.1299,-15.4301,-12.0472,-13.4328,-12.8385,-11.1761,-14.1014,-12.9131 +Still,F2,Orion_Nebula.y4m,v15.0.0,-12.8385,-11.1761,-14.1014,-12.8391,-12.7452,-11.8992,-17.1299,-15.4301,-12.0472,-13.4328,-12.8385,-11.1761,-14.1014,-12.9131 Still,F2,Saint_Catherine-Caravaggio.y4m,v02.0.0,-4.1689,-14.896,-10.2189,-4.9083,-4.5628,-4.2888,-6.1515,-6.174,-5.7116,-7.5463,-4.1689,-14.896,-10.2189,-4.7576 Still,F2,Saint_Catherine-Caravaggio.y4m,v03.0.0,-7.7246,-20.3123,-13.3201,-8.5137,-6.727,-7.057,-6.0349,-6.1163,-7.7349,-10.2846,-7.7246,-20.3123,-13.3201,-8.3592 Still,F2,Saint_Catherine-Caravaggio.y4m,v04.0.0,-10.4153,-26.4145,-20.8607,-11.5934,-9.4136,-9.6937,-9.2369,-9.6505,-10.8241,-14.7327,-10.4153,-26.4145,-20.8607,-11.385 @@ -4171,8 +4169,8 @@ Still,F2,Saint_Catherine-Caravaggio.y4m,v10.0.0,-15.1458,-40.948,-27.6483,-16.93 Still,F2,Saint_Catherine-Caravaggio.y4m,v11.0.0,-15.2476,-39.7097,-26.7622,-16.9269,-13.7785,-14.2054,-18.5464,-18.0899,-16.5284,-21.5421,-15.2476,-39.7097,-26.7622,-16.6013 Still,F2,Saint_Catherine-Caravaggio.y4m,v12.0.0,-15.2497,-39.8183,-26.871,-16.9443,-14.1027,-14.3294,-18.8419,-18.3374,-16.7372,-21.8549,-15.2497,-39.8183,-26.871,-16.5981 Still,F2,Saint_Catherine-Caravaggio.y4m,v13.0.0,-15.1616,-38.9577,-26.046,-16.7904,-14.4046,-14.3577,-19.8443,-18.6056,-16.4701,-21.572,-15.1616,-38.9577,-26.046,-16.4711 -Still,F2,Streptopelia_orientalis.y4m,libaom-v3.12.0,-0.0724,-0.2102,-0.695,-0.116,0.7162,0.2341,-1.7531,-1.2357,0.0699,-0.1798,-0.0724,-0.2102,-0.695,-0.151 -Still,F2,Streptopelia_orientalis.y4m,libaom-v3.12.0-unconstrained,0.2216,-1.1358,-2.7011,-0.0233,1.6257,0.9517,2.73,2.0481,0.8971,-0.5071,0.2216,-1.1358,-2.7011,-0.1649 +Still,F2,Saint_Catherine-Caravaggio.y4m,v14.0.0,-15.1792,-38.976,-26.0669,-16.8082,-14.4156,-14.3738,-19.8854,-18.6461,-16.4908,-21.5907,-15.1792,-38.976,-26.0669,-16.4893 +Still,F2,Saint_Catherine-Caravaggio.y4m,v15.0.0,-15.1792,-38.976,-26.0669,-16.8082,-14.4156,-14.3738,-19.8854,-18.6461,-16.4908,-21.5907,-15.1792,-38.976,-26.0669,-16.4893 Still,F2,Streptopelia_orientalis.y4m,v02.0.0,-4.6476,-4.0956,-5.5542,-4.6651,-2.1212,-3.4609,-4.1687,-4.6973,-3.6249,-4.6236,-4.6476,-4.0956,-5.5542,-4.643 Still,F2,Streptopelia_orientalis.y4m,v03.0.0,-7.6176,-5.2488,-6.1956,-7.4067,-4.5653,-6.2351,-5.0281,-5.654,-5.8219,-6.2525,-7.6176,-5.2488,-6.1956,-7.206 Still,F2,Streptopelia_orientalis.y4m,v04.0.0,-10.1807,-8.3881,-11.272,-10.1418,-6.649,-8.6629,-7.9932,-8.275,-8.0651,-9.5337,-10.1807,-8.3881,-11.272,-10.061 @@ -4185,8 +4183,8 @@ Still,F2,Streptopelia_orientalis.y4m,v10.0.0,-15.8364,-13.9629,-13.8098,-15.6203 Still,F2,Streptopelia_orientalis.y4m,v11.0.0,-15.758,-13.4548,-13.8368,-15.5207,-13.4169,-14.7396,-15.6577,-15.4124,-13.9158,-14.7665,-15.758,-13.4548,-13.8368,-15.3331 Still,F2,Streptopelia_orientalis.y4m,v12.0.0,-15.8067,-13.4814,-13.9465,-15.5707,-13.2858,-14.6801,-14.6905,-14.9903,-13.9397,-14.8632,-15.8067,-13.4814,-13.9465,-15.3758 Still,F2,Streptopelia_orientalis.y4m,v13.0.0,-15.7011,-13.8754,-13.6341,-15.486,-16.5795,-14.6197,-16.2545,-15.982,-13.8074,-14.8515,-15.7011,-13.8754,-13.6341,-15.3394 -Still,F2,Swallowtail.y4m,libaom-v3.12.0,1.6908,1.8234,0.9681,1.8136,1.3107,-0.7244,1.2262,0.6007,1.0058,1.7301,1.6908,1.8234,0.9681,1.7456 -Still,F2,Swallowtail.y4m,libaom-v3.12.0-unconstrained,1.0402,-1.8502,-2.4737,0.6228,1.2219,0.8224,2.2601,2.102,0.8395,0.0174,1.0402,-1.8502,-2.4737,0.4986 +Still,F2,Streptopelia_orientalis.y4m,v14.0.0,-15.7151,-13.8884,-13.6473,-15.4999,-16.5929,-14.6336,-16.2778,-16.0047,-13.8209,-14.8655,-15.7151,-13.8884,-13.6473,-15.3532 +Still,F2,Streptopelia_orientalis.y4m,v15.0.0,-15.7151,-13.8884,-13.6473,-15.4999,-16.5929,-14.6336,-16.2778,-16.0047,-13.8209,-14.8655,-15.7151,-13.8884,-13.6473,-15.3532 Still,F2,Swallowtail.y4m,v02.0.0,-3.0308,-3.1336,-4.1779,-3.1061,-3.2403,-3.0913,-4.1326,-4.087,-3.0136,-3.1959,-3.0308,-3.1336,-4.1779,-3.1196 Still,F2,Swallowtail.y4m,v03.0.0,-4.7523,-5.4572,-6.1392,-4.8784,-4.3238,-4.5172,-4.0224,-4.6139,-4.6099,-5.2031,-4.7523,-5.4572,-6.1392,-4.9067 Still,F2,Swallowtail.y4m,v04.0.0,-7.6199,-10.1447,-13.0643,-8.0688,-6.9872,-7.3142,-6.2875,-7.0294,-7.4147,-8.6812,-7.6199,-10.1447,-13.0643,-8.1982 @@ -4199,8 +4197,8 @@ Still,F2,Swallowtail.y4m,v10.0.0,-14.0099,-19.2782,-20.0784,-14.6731,-13.7572,-1 Still,F2,Swallowtail.y4m,v11.0.0,-13.9195,-19.8064,-19.3639,-14.5761,-13.8424,-13.2352,-16.0997,-15.6884,-13.7928,-15.8988,-13.9195,-19.8064,-19.3639,-14.7903 Still,F2,Swallowtail.y4m,v12.0.0,-13.8367,-19.2991,-19.0174,-14.4506,-13.8607,-13.1864,-15.8265,-15.4927,-13.7168,-15.7938,-13.8367,-19.2991,-19.0174,-14.6505 Still,F2,Swallowtail.y4m,v13.0.0,-13.7909,-19.7855,-18.4232,-14.401,-13.1212,-13.1023,-15.7308,-15.5638,-13.7599,-15.6914,-13.7909,-19.7855,-18.4232,-14.6063 -Still,F2,Washington_Monument.y4m,libaom-v3.12.0,-0.0079,-1.9898,-1.5784,-0.1183,-0.4197,-0.4084,-0.5973,-0.8283,-0.8974,-0.5664,-0.0079,-1.9898,-1.5784,-0.1462 -Still,F2,Washington_Monument.y4m,libaom-v3.12.0-unconstrained,0.8395,-2.1753,-1.8542,0.6117,-0.1447,-0.2371,1.5596,1.64,0.0854,-0.5025,0.8395,-2.1753,-1.8542,0.7506 +Still,F2,Swallowtail.y4m,v14.0.0,-13.8035,-19.798,-18.4359,-14.4135,-13.1315,-13.1141,-15.7541,-15.5864,-13.7736,-15.7039,-13.8035,-19.798,-18.4359,-14.6189 +Still,F2,Swallowtail.y4m,v15.0.0,-13.8035,-19.798,-18.4359,-14.4135,-13.1315,-13.1141,-15.7541,-15.5864,-13.7736,-15.7039,-13.8035,-19.798,-18.4359,-14.6189 Still,F2,Washington_Monument.y4m,v02.0.0,-1.6183,-21.5777,-24.2321,-3.2048,-1.891,-2.3108,-1.7568,-1.523,-3.4802,-6.7718,-1.6183,-21.5777,-24.2321,-2.3015 Still,F2,Washington_Monument.y4m,v03.0.0,-2.6965,-24.0546,-27.1138,-4.4683,-2.2996,-2.9649,-0.2378,-0.4415,-4.1652,-8.3617,-2.6965,-24.0546,-27.1138,-3.4327 Still,F2,Washington_Monument.y4m,v04.0.0,-5.0939,-30.6685,-33.8242,-7.2597,-4.7644,-5.5245,-3.8541,-3.9612,-6.8943,-11.9949,-5.0939,-30.6685,-33.8242,-6.1276 @@ -4213,8 +4211,8 @@ Still,F2,Washington_Monument.y4m,v10.0.0,-8.4894,-39.7892,-43.4484,-11.2751,-9.8 Still,F2,Washington_Monument.y4m,v11.0.0,-8.2912,-38.2591,-42.3183,-10.9452,-10.0596,-9.7605,-12.0766,-12.4554,-11.863,-18.6425,-8.2912,-38.2591,-42.3183,-9.5859 Still,F2,Washington_Monument.y4m,v12.0.0,-8.2695,-38.2761,-41.0199,-10.8632,-9.8191,-9.6488,-13.2952,-12.6432,-11.8171,-18.1591,-8.2695,-38.2761,-41.0199,-9.5362 Still,F2,Washington_Monument.y4m,v13.0.0,-8.1813,-39.3184,-40.4068,-10.8317,-9.6155,-9.6927,-12.4592,-11.6337,-11.8849,-18.4473,-8.1813,-39.3184,-40.4068,-9.475 -Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,libaom-v3.12.0,0.1211,0.5156,-1.6634,0.0967,-0.3534,-0.5187,-0.6249,-0.8826,-0.8573,0.2986,0.1211,0.5156,-1.6634,0.1069 -Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,libaom-v3.12.0-unconstrained,0.8965,5.4561,7.8295,1.2022,-0.0092,0.0309,0.3597,0.124,0.7091,1.3937,0.8965,5.4561,7.8295,0.9786 +Still,F2,Washington_Monument.y4m,v14.0.0,-8.1928,-39.3297,-40.4175,-10.8432,-9.6257,-9.7047,-12.487,-11.6611,-11.8988,-18.4598,-8.1928,-39.3297,-40.4175,-9.4868 +Still,F2,Washington_Monument.y4m,v15.0.0,-8.1928,-39.3297,-40.4175,-10.8432,-9.6257,-9.7047,-12.487,-11.6611,-11.8988,-18.4598,-8.1928,-39.3297,-40.4175,-9.4868 Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v02.0.0,-2.0186,-37.8257,-39.9521,-5.1204,-2.8759,-2.9608,-2.3945,-2.7491,-4.026,-8.6663,-2.0186,-37.8257,-39.9521,-2.8213 Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v03.0.0,-3.8299,-39.3114,-40.1198,-6.8204,-4.0732,-4.2838,-1.9906,-2.734,-5.0619,-10.544,-3.8299,-39.3114,-40.1198,-4.644 Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v04.0.0,-5.7874,-41.3118,-46.4844,-9.2357,-6.0732,-6.5637,-4.6568,-4.5718,-7.2615,-13.3779,-5.7874,-41.3118,-46.4844,-6.8872 @@ -4227,8 +4225,8 @@ Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v10.0.0,-8.8385,-49.1836,- Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v11.0.0,-8.6956,-48.7787,-55.0082,-13.0093,-10.0969,-10.1623,-10.5517,-10.3874,-11.7434,-18.3928,-8.6956,-48.7787,-55.0082,-10.1733 Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v12.0.0,-8.649,-46.9365,-54.2167,-12.8866,-9.7419,-9.9632,-10.4004,-10.3781,-11.4527,-18.325,-8.649,-46.9365,-54.2167,-10.0859 Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v13.0.0,-8.6344,-48.8681,-56.1821,-12.9881,-9.7137,-10.2506,-11.5436,-11.314,-11.7693,-18.3582,-8.6344,-48.8681,-56.1821,-10.0901 -Still,F2,Zoo_de_la_Barben.y4m,libaom-v3.12.0,-0.3627,-0.7031,0.0807,-0.3618,1.5299,0.9496,-0.9885,-0.6576,0.6184,0.453,-0.3627,-0.7031,0.0807,-0.3646 -Still,F2,Zoo_de_la_Barben.y4m,libaom-v3.12.0-unconstrained,0.843,-0.2539,-1.5252,0.6469,1.3523,1.096,1.826,1.8707,1.3991,1.0183,0.843,-0.2539,-1.5252,0.6105 +Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v14.0.0,-8.6407,-48.8731,-56.1876,-12.9943,-9.7195,-10.2573,-11.5586,-11.3287,-11.7771,-18.3647,-8.6407,-48.8731,-56.1876,-10.0965 +Still,F2,Wasserfassstelle_von_1898_im_Schanerloch.y4m,v15.0.0,-8.6407,-48.8731,-56.1876,-12.9943,-9.7195,-10.2573,-11.5586,-11.3287,-11.7771,-18.3647,-8.6407,-48.8731,-56.1876,-10.0965 Still,F2,Zoo_de_la_Barben.y4m,v02.0.0,-5.757,-3.5903,-3.5158,-5.5534,-4.4705,-4.9931,-8.0909,-6.8528,-4.5574,-3.3491,-5.757,-3.5903,-3.5158,-5.4126 Still,F2,Zoo_de_la_Barben.y4m,v03.0.0,-7.6705,-4.9423,-2.4439,-7.3023,-6.6145,-7.0992,-7.6487,-7.5054,-6.3361,-7.3936,-7.6705,-4.9423,-2.4439,-7.047 Still,F2,Zoo_de_la_Barben.y4m,v04.0.0,-11.2548,-13.0522,-13.599,-11.5079,-8.6708,-9.8592,-11.0712,-10.7417,-9.9936,-13.1817,-11.2548,-13.0522,-13.599,-11.5781 @@ -4241,3 +4239,5 @@ Still,F2,Zoo_de_la_Barben.y4m,v10.0.0,-17.5046,-20.4443,-18.5815,-17.7209,-16.54 Still,F2,Zoo_de_la_Barben.y4m,v11.0.0,-17.3404,-19.56,-19.7386,-17.5898,-16.5599,-16.8376,-19.3365,-19.1757,-17.0326,-19.3991,-17.3404,-19.56,-19.7386,-17.7397 Still,F2,Zoo_de_la_Barben.y4m,v12.0.0,-17.4219,-19.523,-18.4271,-17.5893,-16.5454,-16.9019,-19.7527,-19.3475,-17.0259,-18.453,-17.4219,-19.523,-18.4271,-17.6885 Still,F2,Zoo_de_la_Barben.y4m,v13.0.0,-17.3942,-19.3209,-20.0798,-17.645,-18.2715,-16.9698,-19.8057,-19.2785,-16.9972,-20.0324,-17.3942,-19.3209,-20.0798,-17.7839 +Still,F2,Zoo_de_la_Barben.y4m,v14.0.0,-17.4369,-19.3635,-20.1263,-17.688,-18.3115,-17.0177,-19.8835,-19.3539,-17.047,-20.0811,-17.4369,-19.3635,-20.1263,-17.8271 +Still,F2,Zoo_de_la_Barben.y4m,v15.0.0,-17.4369,-19.3635,-20.1263,-17.688,-18.3115,-17.0177,-19.8835,-19.3539,-17.047,-20.0811,-17.4369,-19.3635,-20.1263,-17.8271 diff --git a/tools/convexhull_framework/src/AV2CTCProgress.py b/tools/convexhull_framework/src/AV2CTCProgress.py index e8274d5e12..9ba62ad660 100644 --- a/tools/convexhull_framework/src/AV2CTCProgress.py +++ b/tools/convexhull_framework/src/AV2CTCProgress.py @@ -8,7 +8,6 @@ ## License 1.0 was not distributed with this source code in the PATENTS file, you ## can obtain it at aomedia.org/license/patent-license/. ## -from platform import release __author__ = "maggie.sun@intel.com, ryanlei@meta.com" @@ -78,20 +77,6 @@ "0", os.path.join(CTC_RESULT_PATH, "AV2-CTC-v1.0.0-alt-anchor-r4.0-scale"), ], - "libaom-v3.12.0": [ - "libaom-v3.12.0", - "av1", - "aom", - "0", - os.path.join(CTC_RESULT_PATH, "AV1-CTC-v3.12.0-constrained"), - ], - "libaom-v3.12.0-unconstrained": [ - "libaom-v3.12.0-unconstrained", - "av1", - "aom", - "0", - os.path.join(CTC_RESULT_PATH, "AV1-CTC-v3.12.0-unconstrained"), - ], "v02.0.0": [ "v02.0.0", "av2", @@ -176,8 +161,37 @@ "0", os.path.join(CTC_RESULT_PATH, "AV2-CTC-v13.0.0-scale"), ], + "v14.0.0": [ + "v14.0.0", + "av2", + "aom", + "0", + os.path.join(CTC_RESULT_PATH, "AV2-CTC-v14.0.0"), + ], + "v15.0.0": [ + "v15.0.0", + "av2", + "aom", + "0", + os.path.join(CTC_RESULT_PATH, "AV2-CTC-v15.0.0"), + ], } - +""" + "libaom-v3.12.0": [ + "libaom-v3.12.0", + "av1", + "aom", + "0", + os.path.join(CTC_RESULT_PATH, "AV1-CTC-v3.12.0-constrained"), + ], + "libaom-v3.12.0-unconstrained": [ + "libaom-v3.12.0-unconstrained", + "av1", + "aom", + "0", + os.path.join(CTC_RESULT_PATH, "AV1-CTC-v3.12.0-unconstrained"), + ], + """ CONFIG = ["AI", "LD", "RA", "Still", "AS"] @@ -199,13 +213,15 @@ "v06.0.0": ["y", "-.", "o"], "v07.0.0": ["k", ":", "+"], "v08.0.0": ["w", ":", "^"], - "libaom-v3.12.0": ["r", "--", "<"], - "libaom-v3.12.0-unconstrained": ["g", "--", "<"], + # "libaom-v3.12.0": ["r", "--", "<"], + # "libaom-v3.12.0-unconstrained": ["g", "--", "<"], "v09.0.0": ["b", "-.", "^"], "v10.0.0": ["c", "-.", "+"], "v11.0.0": ["m", "-.", "o"], "v12.0.0": ["r", ":", "x"], "v13.0.0": ["g", ":", "+"], + "v14.0.0": ["b", ":", "x"], + "v15.0.0": ["c", ":", "o"], } # key is the release @@ -224,8 +240,50 @@ "v11.0.0": "08/29/2025", "v12.0.0": "10/27/2025", "v13.0.0": "12/19/2025", - "libaom-v3.12.0": "02/10/2025", - "libaom-v3.12.0-unconstrained": "01/10/2025", + "v14.0.0": "04/01/2026", + "v15.0.0": "05/05/2026", + # "libaom-v3.12.0": "02/10/2025", + # "libaom-v3.12.0-unconstrained": "01/10/2025", +} + + +# key is the test configuration. The colors are validated for color-vision +# deficiency as a set, and the marker shape repeats the identity on a second, +# non-color channel. Keyed by name so a configuration keeps its color on charts +# where only some of the configurations are present. +cfg_styles = { + "AI": ("#2a78d6", "o"), + "AS": ("#eda100", "s"), + "LD": ("#e87ba4", "^"), + "RA": ("#008300", "D"), + "Still": ("#4a3aa7", "v"), +} + +# key is the video class, value is what the class is made of. Used to expand the +# class name in chart legends; a class with no entry here is legended bare. +class_content = { + "A1": "2160p", + "A2": "1080p", + "A3": "720p", + "A4": "360p", + "A5": "270p", + "B1": "1080p Synthetic", + "B2": "1080p Screen Content", + "E": "UGC", + "G1": "2160p HDR", + "G2": "1080p HDR", + "F1": "High Resolution Image", + "F2": "Medium Resolution Image", +} + +# quality metrics drawn as per-configuration trend lines, key is the csv column +trend_metrics = { + "psnr_y": "PSNR-Y", + "overall_psnr": "PSNR-YUV", + "ssim_y": "SSIM", + "ms_ssim_y": "MS-SSIM", + "vmaf": "VMAF", + "vmaf_neg": "VMAF-NEG", } @@ -310,7 +368,7 @@ def WriteSheet(csv_file, sht, start_row): def get_anchor_tag(tag): if tag in ["v01.0.0-scale"]: anchor_tag = "None" - elif tag in ["v13.0.0"]: + elif tag in ["v13.0.0", "v14.0.0", "v15.0.0"]: anchor_tag = "v01.0.0-scale" else: anchor_tag = "v01.0.0" @@ -722,7 +780,9 @@ def write_bdrate(bdrate, bdrate_csv): ) fc.writeheader() for row in bdrate: - fc.writerow({k: v.strip() if isinstance(v, str) else v for k, v in row.items()}) + fc.writerow( + {k: v.strip() if isinstance(v, str) else v for k, v in row.items()} + ) def write_avg_bdrate( @@ -822,6 +882,84 @@ def write_avg_bdrate( average_bdrate_by_video.to_csv(per_video_bdrate_csv, index=False) +def plot_bdrate_trend_by_cfg(df, tags, qty, title, export_pdf): + """Write one BDRATE trend page: x is the release date, one line per + configuration. Configurations absent from df are skipped, so the caller can + pass a slice covering only some of them.""" + date_labels = [ + pd.to_datetime(dates[tag]).strftime("%m/%d/%y") if tag in dates else tag + for tag in tags + ] + release_labels = [re.sub(r"^v0*(\d+).*", r"v\1", tag) for tag in tags] + x_positions = list(range(len(tags))) + + fig, ax = plt.subplots(figsize=(16, 15)) + + series = {} + for cfg, (color, marker) in cfg_styles.items(): + cfg_df = df[df["cfg"] == cfg] + if cfg_df.empty: + continue + series[cfg] = [ + cfg_df.loc[tag, qty] if tag in cfg_df.index else np.nan for tag in tags + ] + ax.plot( + x_positions, + series[cfg], + color=color, + marker=marker, + markersize=10, + linewidth=2, + label=cfg, + ) + + if not series: + plt.close() + return + + # Tag the topmost point at each release, so the version reads once per + # x position instead of being repeated on every line. + for x, release in zip(x_positions, release_labels): + column = [series[cfg][x] for cfg in series if pd.notna(series[cfg][x])] + if not column: + continue + ax.annotate( + release, + (x, max(column)), + textcoords="offset points", + xytext=(0, 14), + ha="center", + fontsize=16, + color="#52514e", + ) + + ax.set_title(title, fontsize=40) + ax.set_xlabel("Release Date", fontsize=20) + ax.set_ylabel("BDRATE (%)", fontsize=20) + ax.set_xticks(x_positions) + ax.set_xticklabels( + date_labels, + rotation=45, + rotation_mode="anchor", + ha="right", + fontsize=16, + ) + ax.tick_params(axis="y", labelsize=16) + ax.grid(True, linestyle="--", color="#e1e0d9", linewidth=0.8) + ax.set_axisbelow(True) + + # Open space at the bottom so the legend never lands on a line. + ymin, ymax = ax.get_ylim() + ax.set_ylim(ymin - 0.12 * (ymax - ymin), ymax) + # A lone line is already named by the title; a legend box would be noise. + if len(series) > 1: + ax.legend(loc="lower left", fontsize=20, framealpha=0.9) + + plt.tight_layout() + export_pdf.savefig() + plt.close() + + def plot_avg_bdrate_by_tag(avg_bdrate_by_tag_csv, avg_bdrate_by_tag_pdf): df = pd.read_csv(avg_bdrate_by_tag_csv, index_col=0) # print(df) @@ -905,6 +1043,17 @@ def plot_avg_bdrate_by_tag(avg_bdrate_by_tag_csv, avg_bdrate_by_tag_pdf): export_pdf.savefig() plt.close() + # New line charts - one chart per quality metric, one line per configuration + tags = df.index.unique().tolist() + for qty, qty_label in trend_metrics.items(): + plot_bdrate_trend_by_cfg( + df, + tags, + qty, + f"BDRATE {qty_label} by Configuration", + export_pdf, + ) + def plot_avg_bdrate_by_tag_class( avg_bdrate_by_tag_class_csv, avg_bdrate_by_tag_class_pdf @@ -944,45 +1093,56 @@ def plot_avg_bdrate_by_tag_class( # New line charts - one chart per configuration and quality metric # Each chart has multiple series (one per video class) - quality_labels = { - "overall_psnr": "PSNR-Overall", - "ssim_y": "SSIM-Y", - "vmaf": "VMAF", - } - - # Define colors for different video classes - class_colors = [ - "#1f77b4", # Blue - "#ff7f0e", # Orange - "#2ca02c", # Green - "#d62728", # Red - "#9467bd", # Purple - "#8c564b", # Brown - "#e377c2", # Pink - "#7f7f7f", # Gray - "#bcbd22", # Yellow-green - "#17becf", # Cyan + # Hue comes from a color-vision-validated set, indexed off the full + # class list so a class keeps its color on every chart. A configuration + # can code more than eight classes, in which case a hue repeats; those + # classes are drawn dashed and with their own marker so the pair sharing + # a hue stays distinguishable. + class_hues = [ + "#2a78d6", # Blue + "#eb6834", # Orange + "#1baf7a", # Aqua + "#eda100", # Yellow + "#e87ba4", # Magenta + "#008300", # Green + "#4a3aa7", # Violet + "#e34948", # Red ] - - class_markers = ["o", "s", "^", "D", "v", "p", "h", "*", "X", "P"] + class_markers = ["o", "s", "^", "D", "v", "p", "h", "*", "X", "P", "<", ">"] + class_styles = { + cls: ( + class_hues[i % len(class_hues)], + class_markers[i % len(class_markers)], + "-" if i < len(class_hues) else "--", + ) + for i, cls in enumerate(df["class"].unique().tolist()) + } for cfg in df["cfg"].unique().tolist(): - for qty in ["overall_psnr", "ssim_y", "vmaf"]: - fig, ax = plt.subplots(figsize=(30, 15)) + cfg_df = df[df["cfg"] == cfg] + # AS codes only class A1, so a by-class chart of it is a single line + # with nothing to compare against. Skip any such configuration. + if cfg_df["class"].nunique() < 2: + continue - cfg_df = df[df["cfg"] == cfg] - if cfg_df.empty: - plt.close() - continue + for qty, qty_label in trend_metrics.items(): + fig, ax = plt.subplots(figsize=(16, 15)) # Get unique tags and classes for this configuration tags = cfg_df.index.unique().tolist() classes = cfg_df["class"].unique().tolist() - x_labels = [f"{tag}\n{dates[tag]}" for tag in tags] + x_labels = [ + ( + f"{tag}\n{pd.to_datetime(dates[tag]).strftime('%m/%d/%y')}" + if tag in dates + else tag + ) + for tag in tags + ] x_positions = range(len(tags)) # Plot each class as a separate line - for i, cls in enumerate(classes): + for cls in classes: cls_data = cfg_df[cfg_df["class"] == cls] if cls_data.empty: continue @@ -1000,29 +1160,44 @@ def plot_avg_bdrate_by_tag_class( if not y_values: continue - color = class_colors[i % len(class_colors)] - marker = class_markers[i % len(class_markers)] + color, marker, linestyle = class_styles[cls] + label = ( + f"{cls} - {class_content[cls]}" if cls in class_content else cls + ) ax.plot( valid_x, y_values, color=color, marker=marker, + linestyle=linestyle, markersize=10, linewidth=2, - label=cls, + label=label, ) ax.set_title( - f"BDRATE {quality_labels[qty]} Trends by Class for {cfg} Configuration", - fontsize=40, + f"BDRATE {qty_label} Trends by Class for {cfg} Configuration", + fontsize=32, ) ax.set_xlabel("Release Tag / Date", fontsize=20) - ax.set_ylabel("BDRATE (%)", fontsize=20) + ax.set_ylabel(f"BDRATE {qty_label} for {cfg} (%)", fontsize=20) ax.set_xticks(x_positions) - ax.set_xticklabels(x_labels, rotation=30, ha="center", fontsize=16) + ax.set_xticklabels( + x_labels, + rotation=45, + rotation_mode="anchor", + ha="right", + fontsize=16, + ) ax.tick_params(axis="y", labelsize=16) ax.grid(True, linestyle="--", alpha=0.7) + + # Open space at the bottom so the legend never lands on a line. + # Scaled by series count, since the legend grows with it. + ymin, ymax = ax.get_ylim() + pad = 0.04 * max(1, len(ax.get_lines())) + ax.set_ylim(ymin - pad * (ymax - ymin), ymax) ax.legend(loc="lower left", fontsize=18, framealpha=0.9) plt.tight_layout() diff --git a/tools/convexhull_framework/src/AV2CTCTest.py b/tools/convexhull_framework/src/AV2CTCTest.py index dd83926784..650e7752d1 100644 --- a/tools/convexhull_framework/src/AV2CTCTest.py +++ b/tools/convexhull_framework/src/AV2CTCTest.py @@ -53,6 +53,7 @@ md5, ParseDecLogFile, SetupLogging, + str2bool, ) @@ -74,7 +75,7 @@ def WriteToJobScript(cmd): """Write a command to the current job shell script""" if Utils.CurrentJobFile: Utils.CurrentJobFile.write(cmd + "\n") - Utils.CurrentJobFile.write("wait\n") + # Utils.CurrentJobFile.write("wait\n") def EndJobScript(): @@ -415,7 +416,7 @@ def Run_Decode_Test(test_cfg, clip, codec, method, preset, LogCmdOnly=False): ) -def Run_Concatenate_Test(test_cfg, clip, codec, method, preset, LogCmdOnly=False): +def Run_Concatenate_Test(test_cfg, clip, codec, method, preset, LogCmdOnly): if EnableParallelGopEncoding: Utils.Logger.info( "start running %s concatenate tests with %s" % (test_cfg, clip.file_name) @@ -681,7 +682,7 @@ def ParseArguments(raw_args): "-s", "--SaveMemory", dest="SaveMemory", - type=bool, + type=str2bool, default=True, metavar="", help="save memory mode will delete most files in" @@ -692,7 +693,7 @@ def ParseArguments(raw_args): "-CmdOnly", "--LogCmdOnly", dest="LogCmdOnly", - type=bool, + type=str2bool, default=True, metavar="", help="LogCmdOnly mode will only capture the command sequences" diff --git a/tools/convexhull_framework/src/CheckEncoding.py b/tools/convexhull_framework/src/CheckEncoding.py index 073288031e..0655947ac7 100644 --- a/tools/convexhull_framework/src/CheckEncoding.py +++ b/tools/convexhull_framework/src/CheckEncoding.py @@ -10,20 +10,22 @@ ## __author__ = "maggie.sun@intel.com, ryanlei@meta.com" +import argparse import os import re import subprocess +import sys +from Config import EnableParallelGopEncoding, FrameNum, GOP_SIZE, WorkPath from Utils import CreateNewSubfolder, GetTestCfgSubfolder -from Config import WorkPath, FrameNum, EnableParallelGopEncoding, GOP_SIZE -root_path = '/project/tenjin/fba/design/ryanlei/AV2-CTC/AV2-CTC-v11.0.0/' -test_path = os.path.join(root_path, 'test') -dec_path = os.path.join(test_path, 'decodedYUVs') -dec_log_path = os.path.join(test_path, 'decLogs') +root_path = "/project/tenjin/fba/design/ryanlei/AV2-CTC/AV2-CTC-v14.0.0/" +test_path = os.path.join(root_path, "test") +dec_path = os.path.join(test_path, "decodedYUVs") +dec_log_path = os.path.join(test_path, "decLogs") ra_cmd_log_file = os.path.join(test_path, "AV2CTC_TestCmd_RA.log") as_cmd_log_file = os.path.join(test_path, "AV2CTC_TestCmd_AS.log") -decoder = "%s/bin/aomdec-v11.0.0" % root_path +decoder = "%s/bin/aomdec-v14.0.0" % root_path ra_dec_error_log = os.path.join(test_path, "ra_decode_error.log") as_dec_error_log = os.path.join(test_path, "as_decode_error.log") updated_ra_cmd_log = os.path.join(test_path, "AV2CTC_TestCmd_Update_RA.log") @@ -31,9 +33,9 @@ def get_expected_frames(cfg): - if cfg in ['LD', 'AI', 'STILL']: + if cfg in ["LD", "AI", "STILL"]: total_frame = FrameNum[cfg] - elif cfg in ['RA', 'AS']: + elif cfg in ["RA", "AS"]: if EnableParallelGopEncoding: total_frame = GOP_SIZE else: @@ -56,13 +58,13 @@ def check_decode_log(dec_log_file, cfg): print("%s does not exists\n" % dec_log_file) return False else: - dec_log = open(dec_log_file, 'r') + dec_log = open(dec_log_file, "r") for line in dec_log: m = re.search(r"(\d+) decoded frames", line) if m: frames = int(m.group(1)) - #print ("%s has %d frames" % (dec_log_file, frames)) - if (frames == get_expected_frames(cfg)): + # print ("%s has %d frames" % (dec_log_file, frames)) + if frames == get_expected_frames(cfg): return True else: print("%s has %d frames\n" % (dec_log_file, frames)) @@ -71,11 +73,12 @@ def check_decode_log(dec_log_file, cfg): dec_log.close() return False + def run_decode(cmd_log_file): CreateNewSubfolder(WorkPath, dec_log_path) - cmd_log = open(cmd_log_file, 'r') + cmd_log = open(cmd_log_file, "r") for line in cmd_log: - m = re.search(r"-o (.*).obu",line) + m = re.search(r"-o (.*).obu", line) if m: bitstream = m.group(1) output_file = bitstream + ".obu" @@ -85,26 +88,32 @@ def run_decode(cmd_log_file): cfg_dec_path = get_dec_path_for_cfg(cfg) dec_log = os.path.join(cfg_dec_log_path, video + "_DecLog.txt") dec_output = os.path.join(cfg_dec_path, video + ".y4m") - #print("bitstrams file is %s\n" % output_file) - #print("decoding log file is %s\n" % dec_log) + # print("bitstrams file is %s\n" % output_file) + # print("decoding log file is %s\n" % dec_log) args = " --codec=av2 --summary -o %s %s" % (dec_output, output_file) - dec_cmd = decoder + args + "> %s 2>&1"%dec_log - #print("=== decoding %s \n" %video) - #print(dec_cmd) - #os.system(dec_cmd) - cmd = "ENABLE_CONTAINER_CONFIG=1 grid run -autokill 0 -C modeling_c9 -r+ RAM/0" + " '" + dec_cmd + "'" - #print(cmd) + dec_cmd = decoder + args + "> %s 2>&1" % dec_log + # print("=== decoding %s \n" %video) + # print(dec_cmd) + # os.system(dec_cmd) + cmd = ( + "ENABLE_CONTAINER_CONFIG=1 grid run -autokill 0 -C modeling_c9 -r+ RAM/0" + + " '" + + dec_cmd + + "'" + ) + # print(cmd) subprocess.call(cmd, shell=True) cmd_log.close() + def check_decoding(cmd_log_file, dec_error_log): - cmd_log = open(cmd_log_file, 'r') + cmd_log = open(cmd_log_file, "r") error_list = [] - error_log = open(dec_error_log, 'wt') + error_log = open(dec_error_log, "wt") for line in cmd_log: - m = re.search(r"-o (.*).obu(\s)",line) + m = re.search(r"-o (.*).obu(\s)", line) if m: - #print(line) + # print(line) bitstream = m.group(1) output_file = bitstream + ".obu" video = bitstream.split("/")[-1] @@ -113,7 +122,7 @@ def check_decoding(cmd_log_file, dec_error_log): cfg_dec_path = get_dec_path_for_cfg(cfg) dec_log = os.path.join(cfg_dec_log_path, video + "_DecLog.txt") dec_output = os.path.join(cfg_dec_path, video + ".y4m") - #print("checking %s for %s" % (dec_log, cfg)) + # print("checking %s for %s" % (dec_log, cfg)) if check_decode_log(dec_log, cfg) == False: print("%s decoding error" % video) @@ -122,17 +131,17 @@ def check_decoding(cmd_log_file, dec_error_log): if os.path.exists(dec_output): del_cmd = "rm %s" % dec_output - #print("=== deleting %s \n" %video) + # print("=== deleting %s \n" %video) os.system(del_cmd) - #input("press any key to continue") + # input("press any key to continue") cmd_log.close() error_log.close() return error_list def filter_cmd_log(cmd_log_file, updated_cmd_log_file, error_list): - cmd_log = open(cmd_log_file, 'r') - updated_cmd_log = open(updated_cmd_log_file, 'wt') + cmd_log = open(cmd_log_file, "r") + updated_cmd_log = open(updated_cmd_log_file, "wt") start_copy = False for line in cmd_log: @@ -155,28 +164,30 @@ def filter_cmd_log(cmd_log_file, updated_cmd_log_file, error_list): cmd_log.close() updated_cmd_log.close() + def get_config(file_name): - if ('_LD_' in file_name): - return 'LD' - elif ('_AS_' in file_name): - return 'AS' - elif ('_AI_' in file_name): - return 'AI' - elif ('_STILL_' in file_name): - return 'STILL' - elif ('_RA_' in file_name): - return 'RA' + if "_LD_" in file_name: + return "LD" + elif "_AS_" in file_name: + return "AS" + elif "_AI_" in file_name: + return "AI" + elif "_STILL_" in file_name: + return "STILL" + elif "_RA_" in file_name: + return "RA" else: print("unsupported configuration") - return '' + return "" + def check_ld_decoding(): - cmd_log = open(cmd_log_file, 'r') + cmd_log = open(cmd_log_file, "r") error_list = [] - error_log = open(dec_error_log, 'wt') + error_log = open(dec_error_log, "wt") for line in cmd_log: m = re.search(r"=* (.*) Job Start", line) - #m = re.search(r"-o (.*).obu",line) + # m = re.search(r"-o (.*).obu",line) if m: bitstream = m.group(1) output_file = bitstream + ".obu" @@ -189,52 +200,61 @@ def check_ld_decoding(): dec_output = os.path.join(cfg_dec_path, video + ".y4m") if check_decode_log(dec_log, cfg) == False: - #print(line) + # print(line) print("%s decoding error" % video) error_log.write(output_file + "\n") error_list.append(video) if os.path.exists(dec_output): del_cmd = "rm %s" % dec_output - #print("=== deleting %s \n" %video) + # print("=== deleting %s \n" %video) os.system(del_cmd) - #input("press any key to continue") + # input("press any key to continue") cmd_log.close() error_log.close() return error_list + +def ParseArguments(raw_args): + parser = argparse.ArgumentParser( + prog="CheckEncoding.py", usage="%(prog)s [options]", description="" + ) + parser.add_argument( + "-c", + "--config", + dest="Config", + type=str, + required=True, + metavar="", + choices=["RA", "AS"], + help="configurations to check: RA, AS", + ) + + if len(raw_args) == 1: + parser.print_help() + sys.exit(1) + args = parser.parse_args(raw_args[1:]) + return args + + ###################################### # main ###################################### if __name__ == "__main__": - """ steps for RA and AS - #1. trigger decoding process, needed for RA - run_decode(cmd_log_file) - """ + args = ParseArguments(sys.argv) - """ - #2. check decoding errors - error_list = check_decoding(ra_cmd_log_file, ra_dec_error_log) + if args.Config == "RA": + # 1. check decoding errors + error_list = check_decoding(ra_cmd_log_file, ra_dec_error_log) - print("There are %d missing encodings" % len(error_list)) - filter_cmd_log(ra_cmd_log_file, updated_ra_cmd_log, error_list) - """ + print("There are %d missing encodings" % len(error_list)) + filter_cmd_log(ra_cmd_log_file, updated_ra_cmd_log, error_list) + elif args.Config == "AS": + # 1. check decoding errors + error_list = check_decoding(as_cmd_log_file, as_dec_error_log) - - #steps for AS - #1. check decoding errors - error_list = check_decoding(as_cmd_log_file, as_dec_error_log) - - print("There are %d missing encodings" % len(error_list)) - filter_cmd_log(as_cmd_log_file, updated_as_cmd_log, error_list) - - - """ - # steps for AI, LD, STILL - #1. check decoding errors - error_list = check_decoding(cmd_log_file, dec_error_log) - - print("There are %d missing encodings" % len(error_list)) - filter_cmd_log(cmd_log_file, updated_cmd_log, error_list) - """ + print("There are %d missing encodings" % len(error_list)) + filter_cmd_log(as_cmd_log_file, updated_as_cmd_log, error_list) + else: + print("Wrong encoding configurations") diff --git a/tools/convexhull_framework/src/ConvexHullTest.py b/tools/convexhull_framework/src/ConvexHullTest.py index 085019066f..52e602ca29 100755 --- a/tools/convexhull_framework/src/ConvexHullTest.py +++ b/tools/convexhull_framework/src/ConvexHullTest.py @@ -66,6 +66,7 @@ md5, ParseDecLogFile, SetupLogging, + str2bool, ) from VideoScaler import DownScaling, GetDownScaledOutFile, UpScaling @@ -492,7 +493,12 @@ def SaveConvexHullResults( filesize = os.path.getsize(bs) bitrate = round( - (filesize * 8 * (clip.fps_num / clip.fps_denom) / frame_num) + ( + filesize + * 8 + * (clip.fps_num / clip.fps_denom) + / frame_num + ) / 1000.0, 6, ) @@ -576,7 +582,7 @@ def SaveConvexHullResults( def Run_AS_Concatenate_Test( - test_cfg, clip, dnScalAlgo, codec, method, preset, LogCmdOnly=False + test_cfg, clip, dnScalAlgo, codec, method, preset, LogCmdOnly ): if EnableParallelGopEncoding: Utils.Logger.info( @@ -834,7 +840,7 @@ def ParseArguments(raw_args): "-k", "--KeepUpscaleOutput", dest="KeepUpscaledOutput", - type=bool, + type=str2bool, default=False, metavar="", help="in function clean, if keep upscaled yuv files. It" " is false by default", @@ -843,7 +849,7 @@ def ParseArguments(raw_args): "-s", "--SaveMemory", dest="SaveMemory", - type=bool, + type=str2bool, default=True, metavar="", help="save memory mode will delete most files in" @@ -854,7 +860,7 @@ def ParseArguments(raw_args): "-CmdOnly", "--LogCmdOnly", dest="LogCmdOnly", - type=bool, + type=str2bool, default=True, metavar="", help="LogCmdOnly mode will only capture the command sequences" diff --git a/tools/convexhull_framework/src/Utils.py b/tools/convexhull_framework/src/Utils.py index d8b5d7a532..b5d80b30d6 100755 --- a/tools/convexhull_framework/src/Utils.py +++ b/tools/convexhull_framework/src/Utils.py @@ -915,6 +915,18 @@ def ConvertYUVToY4M(clip, yuv_file, y4m_file, LogCmdOnly=False): ExecuteCmd(cmd, LogCmdOnly) +def str2bool(v): + if isinstance(v, bool): + return v + if v.lower() in ("yes", "true", "t", "y", "1"): + return True + if v.lower() in ("no", "false", "f", "n", "0", ""): + return False + raise argparse.ArgumentTypeError( + f"Boolean value expected, got {v!r}. Use one of: 1/0, true/false, yes/no, y/n." + ) + + ###################################### # main ###################################### From 316dac30ccf2d5625d30cd6836b2a8a9d2aa6da8 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Wed, 12 Aug 2026 08:55:24 -0700 Subject: [PATCH 042/205] Partially undo avm_highbd_upsampled_pred_c changes (#5245) In commit 1d89973 (PR #5204), avm_highbd_upsampled_pred_sse2() was removed and its code was copied to avm_highbd_upsampled_pred_c(). This change introduced a use of uninitialized value in the avm_highbd_convolve8_vert() call at the end of the avm_highbd_upsampled_pred_c() function when the C version (avm_highbd_convolve8_vert_c) is used. Fix this bug by partially reverting the changes to avm_highbd_upsampled_pred_c(). The change of the avm_highbd_convolve8_horiz_c() and avm_highbd_convolve8_vert_c() to avm_highbd_convolve8_horiz() and avm_highbd_convolve8_vert() is kept, and the change to call avm_highbd_convolve_copy() is also kept. Add AV2HighbdUpsampledPredTest to test/comp_mask_variance_test.cc (ported from AV1HighbdUpsampledPredTest in libaom's test/comp_mask_pred_test.cc). Fixes issue https://github.com/AOMediaCodec/avm/issues/5243. Co-authored-by: Urvang Joshi --- avm_dsp/avm_dsp_rtcd_defs.pl | 1 + avm_dsp/variance.c | 23 ++-- avm_dsp/x86/highbd_variance_sse2.c | 76 ++++++++++++++ test/comp_mask_variance_test.cc | 162 ++++++++++++++++++++++++++++- 4 files changed, 247 insertions(+), 15 deletions(-) diff --git a/avm_dsp/avm_dsp_rtcd_defs.pl b/avm_dsp/avm_dsp_rtcd_defs.pl index 78144569d4..270b45baa8 100644 --- a/avm_dsp/avm_dsp_rtcd_defs.pl +++ b/avm_dsp/avm_dsp_rtcd_defs.pl @@ -585,6 +585,7 @@ () const MV *const mv, uint16_t *comp_pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, int ref_stride, int bd, int subpel_search, int is_scaled_ref"; + specialize qw/avm_highbd_upsampled_pred sse2/; add_proto qw/void avm_highbd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, diff --git a/avm_dsp/variance.c b/avm_dsp/variance.c index 798da810a6..f7c77b84cd 100644 --- a/avm_dsp/variance.c +++ b/avm_dsp/variance.c @@ -536,7 +536,7 @@ void avm_highbd_upsampled_pred_c(MACROBLOCKD *xd, } const InterpFilterParams *filter = av2_get_filter(subpel_search); - int filter_taps = (subpel_search <= USE_4_TAPS) ? 4 : SUBPEL_TAPS; + if (!subpel_x_q3 && !subpel_y_q3) { avm_highbd_convolve_copy(ref, ref_stride, comp_pred, width, width, height); } else if (!subpel_y_q3) { @@ -550,24 +550,21 @@ void avm_highbd_upsampled_pred_c(MACROBLOCKD *xd, avm_highbd_convolve8_vert(ref, ref_stride, comp_pred, width, NULL, -1, kernel, 16, width, height, bd); } else { - uint16_t *temp = comp_pred; + DECLARE_ALIGNED(16, uint16_t, + temp[((MAX_SB_SIZE + 16) + 16) * MAX_SB_SIZE]); const int16_t *const kernel_x = av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); const int16_t *const kernel_y = av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); - const uint16_t *ref_start = ref - ref_stride * ((filter_taps >> 1) - 1); - uint16_t *temp_start_horiz = (subpel_search <= USE_4_TAPS) - ? temp + (filter_taps >> 1) * MAX_SB_SIZE - : temp; - uint16_t *temp_start_vert = temp + MAX_SB_SIZE * ((filter->taps >> 1) - 1); const int intermediate_height = - (((height - 1) * 8 + subpel_y_q3) >> 3) + filter_taps; + (((height - 1) * 8 + subpel_y_q3) >> 3) + filter->taps; assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16); - avm_highbd_convolve8_horiz(ref_start, ref_stride, temp_start_horiz, - MAX_SB_SIZE, kernel_x, 16, NULL, -1, width, - intermediate_height, bd); - avm_highbd_convolve8_vert(temp_start_vert, MAX_SB_SIZE, comp_pred, width, - NULL, -1, kernel_y, 16, width, height, bd); + avm_highbd_convolve8_horiz(ref - ref_stride * ((filter->taps >> 1) - 1), + ref_stride, temp, MAX_SB_SIZE, kernel_x, 16, + NULL, -1, width, intermediate_height, bd); + avm_highbd_convolve8_vert(temp + MAX_SB_SIZE * ((filter->taps >> 1) - 1), + MAX_SB_SIZE, comp_pred, width, NULL, -1, kernel_y, + 16, width, height, bd); } } diff --git a/avm_dsp/x86/highbd_variance_sse2.c b/avm_dsp/x86/highbd_variance_sse2.c index bcbc8f0a53..36fdfa51d9 100644 --- a/avm_dsp/x86/highbd_variance_sse2.c +++ b/avm_dsp/x86/highbd_variance_sse2.c @@ -724,6 +724,82 @@ FNS(sse2); #undef FNS #undef FN +void avm_highbd_upsampled_pred_sse2(MACROBLOCKD *xd, + const struct AV2Common *const cm, + int mi_row, int mi_col, const MV *const mv, + uint16_t *comp_pred, int width, int height, + int subpel_x_q3, int subpel_y_q3, + const uint16_t *ref, int ref_stride, int bd, + int subpel_search, int is_scaled_ref) { + // expect xd == NULL only in tests + if (xd != NULL) { + const MB_MODE_INFO *mi = xd->mi[0]; + const int ref_num = 0; + const int is_intrabc = is_intrabc_block(mi, xd->tree_type); + const struct scale_factors *const sf = + (is_intrabc || is_scaled_ref) ? &cm->sf_identity + : xd->block_ref_scale_factors[ref_num]; + + const int is_scaled = av2_is_scaled(sf); + + if (is_scaled) { + int plane = 0; + const int mi_x = mi_col * MI_SIZE; + const int mi_y = mi_row * MI_SIZE; + const struct macroblockd_plane *const pd = &xd->plane[plane]; + const struct buf_2d *const dst_buf = &pd->dst; + const struct buf_2d *const pre_buf = + is_intrabc ? dst_buf : &pd->pre[ref_num]; + + InterPredParams inter_pred_params; + inter_pred_params.conv_params = get_conv_params(0, plane, xd->bd); + const InterpFilter filters = EIGHTTAP_REGULAR; + av2_init_inter_params( + &inter_pred_params, width, height, mi_y >> pd->subsampling_y, + mi_x >> pd->subsampling_x, pd->subsampling_x, pd->subsampling_y, + xd->bd, is_intrabc, sf, pre_buf, filters); + av2_enc_build_one_inter_predictor(comp_pred, width, mv, + &inter_pred_params); + return; + } + } + + const InterpFilterParams *filter = av2_get_filter(subpel_search); + int filter_taps = (subpel_search <= USE_4_TAPS) ? 4 : SUBPEL_TAPS; + if (!subpel_x_q3 && !subpel_y_q3) { + avm_highbd_convolve_copy(ref, ref_stride, comp_pred, width, width, height); + } else if (!subpel_y_q3) { + const int16_t *const kernel = + av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); + avm_highbd_convolve8_horiz(ref, ref_stride, comp_pred, width, kernel, 16, + NULL, -1, width, height, bd); + } else if (!subpel_x_q3) { + const int16_t *const kernel = + av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); + avm_highbd_convolve8_vert(ref, ref_stride, comp_pred, width, NULL, -1, + kernel, 16, width, height, bd); + } else { + uint16_t *temp = comp_pred; + const int16_t *const kernel_x = + av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); + const int16_t *const kernel_y = + av2_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1); + const uint16_t *ref_start = ref - ref_stride * ((filter_taps >> 1) - 1); + uint16_t *temp_start_horiz = (subpel_search <= USE_4_TAPS) + ? temp + (filter_taps >> 1) * MAX_SB_SIZE + : temp; + uint16_t *temp_start_vert = temp + MAX_SB_SIZE * ((filter->taps >> 1) - 1); + const int intermediate_height = + (((height - 1) * 8 + subpel_y_q3) >> 3) + filter_taps; + assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16); + avm_highbd_convolve8_horiz(ref_start, ref_stride, (temp_start_horiz), + MAX_SB_SIZE, kernel_x, 16, NULL, -1, width, + intermediate_height, bd); + avm_highbd_convolve8_vert((temp_start_vert), MAX_SB_SIZE, comp_pred, width, + NULL, -1, kernel_y, 16, width, height, bd); + } +} + void avm_highbd_comp_avg_upsampled_pred_sse2( MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred16, const uint16_t *pred, int width, diff --git a/test/comp_mask_variance_test.cc b/test/comp_mask_variance_test.cc index d904376fbc..f98d22322c 100644 --- a/test/comp_mask_variance_test.cc +++ b/test/comp_mask_variance_test.cc @@ -31,14 +31,12 @@ #include "third_party/googletest/src/googletest/include/gtest/gtest.h" namespace AV2CompMaskVariance { -#if (HAVE_SSSE3 || HAVE_SSE2 || HAVE_AVX2) const BLOCK_SIZE kValidBlockSize[] = { BLOCK_8X8, BLOCK_8X16, BLOCK_8X32, BLOCK_16X8, BLOCK_16X16, BLOCK_16X32, BLOCK_32X8, BLOCK_32X16, BLOCK_32X32, BLOCK_32X64, BLOCK_64X32, BLOCK_64X64, BLOCK_64X128, BLOCK_128X64, BLOCK_128X128, BLOCK_16X64, BLOCK_64X16 }; -#endif typedef void (*highbd_comp_mask_pred_func)(uint16_t *comp_pred8, const uint16_t *pred8, int width, @@ -203,6 +201,166 @@ INSTANTIATE_TEST_SUITE_P( ::testing::Range(8, 13, 2))); #endif +using highbd_upsampled_pred_func = + void (*)(MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, + int mi_col, const MV *const mv, uint16_t *comp_pred, int width, + int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, + int ref_stride, int bd, int subpel_search, int is_scaled_ref); + +using HighbdUpsampledPredParam = + std::tuple; + +class AV2HighbdUpsampledPredTest + : public ::testing::TestWithParam { + public: + ~AV2HighbdUpsampledPredTest(); + void SetUp(); + + void TearDown(); + + protected: + void RunCheckOutput(highbd_upsampled_pred_func test_impl, BLOCK_SIZE bsize); + void RunSpeedTest(highbd_upsampled_pred_func test_impl, BLOCK_SIZE bsize, + int havSub); + bool CheckResult(int width, int height) { + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + const int idx = y * width + x; + if (comp_pred1_[idx] != comp_pred2_[idx]) { + printf("%dx%d mismatch @%d(%d,%d) ", width, height, idx, y, x); + printf("%d != %d ", comp_pred1_[idx], comp_pred2_[idx]); + return false; + } + } + } + return true; + } + + libavm_test::ACMRandom rnd_; + uint16_t *comp_pred1_; + uint16_t *comp_pred2_; + uint16_t *pred_; + uint16_t *ref_buffer_; + uint16_t *ref_; +}; + +AV2HighbdUpsampledPredTest::~AV2HighbdUpsampledPredTest() = default; + +void AV2HighbdUpsampledPredTest::SetUp() { + rnd_.Reset(libavm_test::ACMRandom::DeterministicSeed()); + av2_init_wedge_masks(); + + comp_pred1_ = + (uint16_t *)avm_memalign(16, MAX_SB_SQUARE * sizeof(*comp_pred1_)); + comp_pred2_ = + (uint16_t *)avm_memalign(16, MAX_SB_SQUARE * sizeof(*comp_pred2_)); + pred_ = (uint16_t *)avm_memalign(16, MAX_SB_SQUARE * sizeof(*pred_)); + ref_buffer_ = (uint16_t *)avm_memalign( + 16, (MAX_SB_SQUARE + (8 * MAX_SB_SIZE)) * sizeof(*ref_buffer_)); + ref_ = ref_buffer_ + (8 * MAX_SB_SIZE); +} + +void AV2HighbdUpsampledPredTest::TearDown() { + avm_free(comp_pred1_); + avm_free(comp_pred2_); + avm_free(pred_); + avm_free(ref_buffer_); + libavm_test::ClearSystemState(); +} + +void AV2HighbdUpsampledPredTest::RunCheckOutput( + highbd_upsampled_pred_func test_impl, BLOCK_SIZE bsize) { + int bd_ = GET_PARAM(2); + const int w = block_size_wide[bsize]; + const int h = block_size_high[bsize]; + + for (int i = 0; i < MAX_SB_SQUARE; ++i) { + pred_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + for (int i = 0; i < MAX_SB_SQUARE + (8 * MAX_SB_SIZE); ++i) { + ref_buffer_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + + for (int subpel_search = 1; subpel_search <= 2; ++subpel_search) { + // loop through subx and suby + for (int sub = 0; sub < 8 * 8; ++sub) { + int subx = sub & 0x7; + int suby = (sub >> 3); + + avm_highbd_upsampled_pred_c(nullptr, nullptr, 0, 0, nullptr, comp_pred1_, + w, h, subx, suby, ref_, MAX_SB_SIZE, bd_, + subpel_search, 0); + + test_impl(nullptr, nullptr, 0, 0, nullptr, comp_pred2_, w, h, subx, suby, + ref_, MAX_SB_SIZE, bd_, subpel_search, 0); + + ASSERT_EQ(CheckResult(w, h), true) + << "sub (" << subx << "," << suby << ")"; + } + } +} + +void AV2HighbdUpsampledPredTest::RunSpeedTest( + highbd_upsampled_pred_func test_impl, BLOCK_SIZE bsize, int havSub) { + int bd_ = GET_PARAM(2); + const int w = block_size_wide[bsize]; + const int h = block_size_high[bsize]; + const int subx = havSub ? 3 : 0; + const int suby = havSub ? 4 : 0; + + for (int i = 0; i < MAX_SB_SQUARE; ++i) { + pred_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + for (int i = 0; i < MAX_SB_SQUARE + (8 * MAX_SB_SIZE); ++i) { + ref_buffer_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + + const int num_loops = 1000000000 / (w + h); + highbd_upsampled_pred_func funcs[2] = { &avm_highbd_upsampled_pred_c, + test_impl }; + double elapsed_time[2] = { 0 }; + for (int i = 0; i < 2; ++i) { + avm_usec_timer timer; + avm_usec_timer_start(&timer); + highbd_upsampled_pred_func func = funcs[i]; + int subpel_search = 2; // set to 1 to test 4-tap filter. + for (int j = 0; j < num_loops; ++j) { + func(nullptr, nullptr, 0, 0, nullptr, comp_pred1_, w, h, subx, suby, ref_, + MAX_SB_SIZE, bd_, subpel_search, 0); + } + avm_usec_timer_mark(&timer); + double time = static_cast(avm_usec_timer_elapsed(&timer)); + elapsed_time[i] = 1000.0 * time / num_loops; + } + printf("CompMaskUp[%d] %3dx%-3d:%7.2f/%7.2fns", havSub, w, h, elapsed_time[0], + elapsed_time[1]); + printf("(%3.2f)\n", elapsed_time[0] / elapsed_time[1]); +} + +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2HighbdUpsampledPredTest); + +TEST_P(AV2HighbdUpsampledPredTest, CheckOutput) { + RunCheckOutput(GET_PARAM(0), GET_PARAM(1)); +} + +TEST_P(AV2HighbdUpsampledPredTest, DISABLED_Speed) { + RunSpeedTest(GET_PARAM(0), GET_PARAM(1), 1); +} + +INSTANTIATE_TEST_SUITE_P( + C, AV2HighbdUpsampledPredTest, + ::testing::Combine(::testing::Values(&avm_highbd_upsampled_pred_c), + ::testing::ValuesIn(kValidBlockSize), + ::testing::Range(8, 13, 2))); + +#if HAVE_SSE2 +INSTANTIATE_TEST_SUITE_P( + SSE2, AV2HighbdUpsampledPredTest, + ::testing::Combine(::testing::Values(&avm_highbd_upsampled_pred_sse2), + ::testing::ValuesIn(kValidBlockSize), + ::testing::Range(8, 13, 2))); +#endif + #ifndef avm_highbd_comp_mask_pred // can't run this test if avm_highbd_comp_mask_pred is defined to // avm_highbd_comp_mask_pred_c From c9431c43d9cf19e49acf681df02b1b18c13709a5 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Wed, 12 Aug 2026 17:00:56 -0700 Subject: [PATCH 043/205] avm_highbd_upsampled_pred_c: Set temp to comp_pred (#5259) This ports libaom CL https://aomedia-review.googlesource.com/c/aom/+/215601. Use the heap allocated buffer `comp_pred` as a temporary buffer in avm_highbd_upsampled_pred_c(), as done in avm_highbd_upsampled_pred_sse2(). --- avm_dsp/variance.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/avm_dsp/variance.c b/avm_dsp/variance.c index f7c77b84cd..16d223333d 100644 --- a/avm_dsp/variance.c +++ b/avm_dsp/variance.c @@ -550,8 +550,7 @@ void avm_highbd_upsampled_pred_c(MACROBLOCKD *xd, avm_highbd_convolve8_vert(ref, ref_stride, comp_pred, width, NULL, -1, kernel, 16, width, height, bd); } else { - DECLARE_ALIGNED(16, uint16_t, - temp[((MAX_SB_SIZE + 16) + 16) * MAX_SB_SIZE]); + uint16_t *temp = comp_pred; const int16_t *const kernel_x = av2_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1); const int16_t *const kernel_y = From c3d517bddb11a7dfa2676ae287e0d33280289a2e Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 17 Aug 2026 12:32:38 -0700 Subject: [PATCH 044/205] decoder: check profile interop conformance ASAP (#5181) read_sequence_header_obu() should call av2_check_profile_interop_conformance() as soon as it has read all the members of seq_params checked by that function. This allows the av2_max_level_bitrate() call in read_sequence_header_obu() to assume seq_params->seq_profile_idc is a supported profile. Document the members of seq_params checked by av2_check_profile_interop_conformance(). --- av2/common/annexA.c | 8 ++++++++ av2/decoder/obu.c | 12 ++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/av2/common/annexA.c b/av2/common/annexA.c index d23b3447c4..814d0b4a93 100644 --- a/av2/common/annexA.c +++ b/av2/common/annexA.c @@ -196,6 +196,14 @@ static avm_codec_err_t check_mlayer_count(int profile_idc, int seq_max_mcount) { } // Checks the profile conformance -- Top-level function +// +// Checks the following members of seq_params: +// * seq_params->seq_profile_idc +// * seq_params->bit_depth +// * seq_params->monochrome +// * seq_params->subsampling_x +// * seq_params->subsampling_y +// * seq_params->seq_max_mlayer_cnt int av2_check_profile_interop_conformance( struct SequenceHeader *seq_params, struct avm_internal_error_info *error_info, int is_decoder) { diff --git a/av2/decoder/obu.c b/av2/decoder/obu.c index 7f2f0c2808..dcb00e5328 100644 --- a/av2/decoder/obu.c +++ b/av2/decoder/obu.c @@ -599,6 +599,12 @@ static uint32_t read_sequence_header_obu(AV2Decoder *pbi, int xlayer_id, seq_params->monotonic_output_order_flag = avm_rb_read_bit(rb); } + if (!av2_check_profile_interop_conformance(seq_params, &cm->error, 1)) { + avm_internal_error(&cm->error, AVM_CODEC_UNSUP_BITSTREAM, + "Unsupported profile, bitdepth, chroma format or number " + "of embedded layers"); + } + const int num_bits_width = avm_rb_read_literal(rb, 4) + 1; const int num_bits_height = avm_rb_read_literal(rb, 4) + 1; const int max_frame_width = avm_rb_read_literal(rb, num_bits_width) + 1; @@ -688,12 +694,6 @@ static uint32_t read_sequence_header_obu(AV2Decoder *pbi, int xlayer_id, } } - if (!av2_check_profile_interop_conformance(seq_params, &cm->error, 1)) { - avm_internal_error( - &cm->error, AVM_CODEC_UNSUP_BITSTREAM, - "Unsupported Bitdepth, Chroma format or number of embedded layers"); - } - av2_read_sequence_header(rb, seq_params); seq_params->film_grain_params_present = avm_rb_read_bit(rb); From 8a2a0a92cf7e2a36a80e3ca7dbd0bc741a0520a9 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 17 Aug 2026 23:56:08 -0700 Subject: [PATCH 045/205] check_frame_unit_data returns 0 if vcl_found false (#5277) check_frame_unit_data() should return data_sz at the end of the function only when vcl_found is true. Fixes issue https://github.com/AOMediaCodec/avm/issues/5276. --- av2/av2_dx_iface.c | 1 + 1 file changed, 1 insertion(+) diff --git a/av2/av2_dx_iface.c b/av2/av2_dx_iface.c index d65e86fff9..b0e55987b4 100644 --- a/av2/av2_dx_iface.c +++ b/av2/av2_dx_iface.c @@ -891,6 +891,7 @@ static size_t check_frame_unit_data(struct AV2Decoder *pbi, const uint8_t *data, bytes_available -= bytes_read + payload_size; } + if (!vcl_found) return 0; // one frame unit in this data return data_sz; } From 4cdeb66a868cbb7564a06968f9d24b29574d3f88 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Tue, 18 Aug 2026 21:01:26 -0700 Subject: [PATCH 046/205] Remove local var bfirst in check_frame_unit_data() (#5278) A simple analysis shows that the local variables bfirst and vcl_found in check_frame_unit_data() are always opposite to each other. Remove bfirst and replace it with !vcl_found. --- av2/av2_dx_iface.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/av2/av2_dx_iface.c b/av2/av2_dx_iface.c index b0e55987b4..72e18e9a6d 100644 --- a/av2/av2_dx_iface.c +++ b/av2/av2_dx_iface.c @@ -640,7 +640,6 @@ static size_t check_frame_unit_data(struct AV2Decoder *pbi, const uint8_t *data, const uint8_t *data_read = data; size_t bytes_available = data_sz; ObuHeader obu_header; - bool bfirst = true; // True until we encounter the first VCL OBU bool vcl_found = false; // Track if we've found any VCL OBU // Temporary tracking for CMVS-end activation check. @@ -685,12 +684,11 @@ static size_t check_frame_unit_data(struct AV2Decoder *pbi, const uint8_t *data, : ((first_byte_payload & 128) >> 7); // If this is a first_tile_group and we already saw a VCL OBU, // this marks the start of a NEW picture unit - if (is_first_tile && !bfirst) { + if (is_first_tile && vcl_found) { // Boundary detected! Return WITHOUT including this OBU return data_read - data; } // This VCL OBU is part of the current picture unit - bfirst = false; vcl_found = true; // Capture layer IDs from the FIRST VCL OBU (the picture unit's layer) if (*mlayer_id == -1) { // Only set once, from first VCL OBU @@ -699,14 +697,14 @@ static size_t check_frame_unit_data(struct AV2Decoder *pbi, const uint8_t *data, *xlayer_id = obu_header.obu_xlayer_id; } } else { - // Special case: Temporal delimiter after VCL always starts new TU - if (obu_header.type == OBU_TEMPORAL_DELIMITER && vcl_found) { - // Boundary detected! Return WITHOUT including this TD - return data_read - data; - } - // Check if this non-VCL OBU appears after a VCL OBU - if (!bfirst) { + if (vcl_found) { + // Special case: Temporal delimiter after VCL always starts new TU + if (obu_header.type == OBU_TEMPORAL_DELIMITER) { + // Boundary detected! Return WITHOUT including this TD + return data_read - data; + } + // Determine if this is suffix metadata/padding (part of current frame // unit) or prefix HLS (start of next frame unit) bool is_suffix_or_padding = false; From dcc6b02459df9ffc999545d3a9822330ed0bf78c Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Wed, 19 Aug 2026 19:00:11 -0700 Subject: [PATCH 047/205] Call memcpy() in avm_[highbd_]convolve_copy_*() (#5258) Call memcpy() instead of memmove() in avm_convolve_copy_*() and avm_highbd_convolve_copy_*(). The SIMD intrinsics code does not handle overlapping src and dst buffers, so it is not necessary to call memmove(). --- avm_dsp/avm_convolve.c | 2 +- avm_dsp/mips/avm_convolve_copy_msa.c | 2 +- avm_dsp/x86/avm_convolve_copy_avx2.c | 12 ++++++------ avm_dsp/x86/avm_convolve_copy_sse2.c | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/avm_dsp/avm_convolve.c b/avm_dsp/avm_convolve.c index b3c211210f..f33027fb13 100644 --- a/avm_dsp/avm_convolve.c +++ b/avm_dsp/avm_convolve.c @@ -115,7 +115,7 @@ void avm_highbd_convolve8_c(const uint16_t *src, ptrdiff_t src_stride, void avm_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, int w, int h) { for (int r = h; r > 0; --r) { - memmove(dst, src, w); + memcpy(dst, src, w); src += src_stride; dst += dst_stride; } diff --git a/avm_dsp/mips/avm_convolve_copy_msa.c b/avm_dsp/mips/avm_convolve_copy_msa.c index 81a7c1c69c..57420f29d2 100644 --- a/avm_dsp/mips/avm_convolve_copy_msa.c +++ b/avm_dsp/mips/avm_convolve_copy_msa.c @@ -232,7 +232,7 @@ void avm_convolve_copy_msa(const uint8_t *src, ptrdiff_t src_stride, default: { uint32_t cnt; for (cnt = h; cnt--;) { - memmove(dst, src, w); + memcpy(dst, src, w); src += src_stride; dst += dst_stride; } diff --git a/avm_dsp/x86/avm_convolve_copy_avx2.c b/avm_dsp/x86/avm_convolve_copy_avx2.c index 7552b5ac58..053d6319e4 100644 --- a/avm_dsp/x86/avm_convolve_copy_avx2.c +++ b/avm_dsp/x86/avm_convolve_copy_avx2.c @@ -32,20 +32,20 @@ void avm_convolve_copy_avx2(const uint8_t *src, ptrdiff_t src_stride, if (w == 2) { do { - memmove(dst, src, 2 * sizeof(*src)); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; - memmove(dst, src, 2 * sizeof(*src)); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2; } while (h); } else if (w == 4) { do { - memmove(dst, src, 4 * sizeof(*src)); + memcpy(dst, src, 4 * sizeof(*src)); src += src_stride; dst += dst_stride; - memmove(dst, src, 4 * sizeof(*src)); + memcpy(dst, src, 4 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2; @@ -157,10 +157,10 @@ void avm_highbd_convolve_copy_avx2(const uint16_t *src, ptrdiff_t src_stride, int h) { if (w == 2) { do { - memmove(dst, src, 2 * sizeof(*src)); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; - memmove(dst, src, 2 * sizeof(*src)); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2; diff --git a/avm_dsp/x86/avm_convolve_copy_sse2.c b/avm_dsp/x86/avm_convolve_copy_sse2.c index 30210036af..0a7f465e98 100644 --- a/avm_dsp/x86/avm_convolve_copy_sse2.c +++ b/avm_dsp/x86/avm_convolve_copy_sse2.c @@ -40,20 +40,20 @@ void avm_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, if (w == 2) { do { - memmove(dst, src, 2 * sizeof(*src)); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; - memmove(dst, src, 2 * sizeof(*src)); + memcpy(dst, src, 2 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2; } while (h); } else if (w == 4) { do { - memmove(dst, src, 4 * sizeof(*src)); + memcpy(dst, src, 4 * sizeof(*src)); src += src_stride; dst += dst_stride; - memmove(dst, src, 4 * sizeof(*src)); + memcpy(dst, src, 4 * sizeof(*src)); src += src_stride; dst += dst_stride; h -= 2; From 61038ee988648053a569f530d28c22ec9d2861bf Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Thu, 20 Aug 2026 09:07:07 -0700 Subject: [PATCH 048/205] Fix MSDO/LCR conformance check for the 12-bit profile (#5290) conformance_check_msdo_lcr() compared against enumerated profile labels, which were never updated for MAIN_444C_12_IP2, so no legal multistream was possible with the 12-bit profile. Add av2_get_interop_from_profile() and express the checks in terms of interoperability points instead. Also fixes two related defects: get_lcr_global_interop() returned a profile_idc where lcr_max_interop is an IOP, and the single-xlayer/multi-mlayer check OR'd the LCR presence flags, letting the absent-LCR fallback admit an IOP 0 stream. Fix issue #5234. --- av2/common/annexA.c | 37 ++++++++++++----- av2/common/annexA.h | 23 +++++++++++ av2/decoder/obu.c | 97 ++++++++++++++++++++++++++------------------- test/lcr_test.cc | 97 ++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 201 insertions(+), 53 deletions(-) diff --git a/av2/common/annexA.c b/av2/common/annexA.c index 814d0b4a93..692b0044ae 100644 --- a/av2/common/annexA.c +++ b/av2/common/annexA.c @@ -84,14 +84,6 @@ typedef enum { */ /* clang-format on */ -typedef enum { - INTEROP_0, - INTEROP_1, - INTEROP_2, - INTEROP_3, - NUM_INTEROP_POINTS = 16, -} INTEROP_POINTS; - static const int seq_profile_max_mlayer_cnt[MAX_PROFILES] = { 1, 2, 3, 2, 2, #if CONFIG_12BIT_PROFILE @@ -143,8 +135,33 @@ static const int seq_profile_max_mlayer_cnt[MAX_PROFILES] = { // Profile Conformance Functions //================================================================= // Helper functions -// Get interoperability point from seq_profile_idc -// Return -1 for reserved seq_profile_idc values + +// Interoperability point of each defined profile, per Table A.1. Keep in sync +// with the BITSTREAM_PROFILE enum in enums.h when a profile is added. +static const int seq_profile_interop[] = { + INTEROP_0, // MAIN_420_10_IP0 + INTEROP_1, // MAIN_420_10_IP1 + INTEROP_2, // MAIN_420_10_IP2 + INTEROP_1, // MAIN_422_10_IP1 + INTEROP_1, // MAIN_444_10_IP1 +#if CONFIG_12BIT_PROFILE + INTEROP_2, // MAIN_444C_12_IP2 +#endif // CONFIG_12BIT_PROFILE +}; + +static_assert((int)(sizeof(seq_profile_interop) / + sizeof(seq_profile_interop[0])) == + (int)RESERVED_PROFILES_START, + "seq_profile_interop[] must cover every defined profile"); + +int av2_get_interop_from_profile(int seq_profile_idc) { + if (seq_profile_idc < 0 || seq_profile_idc >= MAX_PROFILES) + return INTEROP_INVALID; + // CONFIGURABLE has no interoperability point in Table A.1. + if (seq_profile_idc == CONFIGURABLE) return INTEROP_NONE; + if (seq_profile_idc >= RESERVED_PROFILES_START) return INTEROP_INVALID; + return seq_profile_interop[seq_profile_idc]; +} static INLINE int av2_get_max_mlayer_cnt_from_profile(int seq_profile_idc) { if (seq_profile_idc < 0 || seq_profile_idc >= MAX_PROFILES) return -1; diff --git a/av2/common/annexA.h b/av2/common/annexA.h index 3b0b5fe4f0..2603b62eda 100644 --- a/av2/common/annexA.h +++ b/av2/common/annexA.h @@ -34,6 +34,29 @@ extern "C" { struct avm_internal_error_info; struct SequenceHeader; +//========================================== +// Interoperability Points +//=========================================== +// Interoperability points (Table A.3). The values 0..15 are the ones that can +// be signalled in the bitstream (e.g. lcr_max_interop, ops_max_interop); the +// two negative values are returned by av2_get_interop_from_profile() for +// profiles that have no interoperability point. +typedef enum { + INTEROP_INVALID = -2, // Reserved or out-of-range seq_profile_idc + INTEROP_NONE = -1, // CONFIGURABLE: no interoperability point (Table A.1) + INTEROP_0 = 0, + INTEROP_1 = 1, + INTEROP_2 = 2, + INTEROP_3 = 3, + INTEROP_MAX = 15, + NUM_INTEROP_POINTS = 16, +} INTEROP_POINTS; + +// Returns the interoperability point of seq_profile_idc (Table A.1): +// INTEROP_0, INTEROP_1 or INTEROP_2 for a defined profile, INTEROP_NONE for +// CONFIGURABLE, and INTEROP_INVALID for reserved or out-of-range values. +int av2_get_interop_from_profile(int seq_profile_idc); + //========================================== // Profile Conformance Function //=========================================== diff --git a/av2/decoder/obu.c b/av2/decoder/obu.c index dcb00e5328..b0de9de3a3 100644 --- a/av2/decoder/obu.c +++ b/av2/decoder/obu.c @@ -2098,52 +2098,67 @@ static void check_valid_layer_id(ObuHeader obu_header, AV2_COMMON *const cm) { } } -static BITSTREAM_PROFILE get_msdo_profile(struct AV2Decoder *pbi) { - return pbi->common.msdo_params.multistream_profile_idc; +static int get_msdo_interop(struct AV2Decoder *pbi) { + return av2_get_interop_from_profile( + pbi->common.msdo_params.multistream_profile_idc); } -static BITSTREAM_PROFILE get_lcr_global_profile(struct AV2Decoder *pbi) { - // Return the lcr_max_interop from the first valid global LCR's aggregate PTL. - // lcr_max_interop maps directly to the IOP (0, 1, 2) which corresponds to - // MAIN_420_10_IP0, MAIN_420_10_IP1, MAIN_420_10_IP2 respectively. +static int get_lcr_global_interop(struct AV2Decoder *pbi) { + // Return the interoperability point of the first valid global LCR. + // lcr_max_interop in the aggregate PTL is already an interoperability point, + // so it is used directly; the seq PTL fallback signals a profile instead and + // must be mapped through Table A.1. for (int j = 0; j < MAX_NUM_LCR; j++) { if (pbi->lcr_list[GLOBAL_XLAYER_ID][j].valid) { const struct GlobalLayerConfigurationRecord *glcr = &pbi->lcr_list[GLOBAL_XLAYER_ID][j].global_lcr; if (glcr->lcr_aggregate_info_present_flag) - return (BITSTREAM_PROFILE)glcr->aggregate_ptl.lcr_max_interop; + return glcr->aggregate_ptl.lcr_max_interop; // Fall back to the first seq PTL if aggregate PTL is not present. if (glcr->lcr_seq_profile_tier_level_info_present_flag && glcr->LcrMaxNumXLayerCount > 0) - return (BITSTREAM_PROFILE)glcr->seq_ptl[glcr->LcrXLayerID[0]] - .lcr_seq_profile_idc; + return av2_get_interop_from_profile( + glcr->seq_ptl[glcr->LcrXLayerID[0]].lcr_seq_profile_idc); } } - (void)pbi; - return MAIN_420_10_IP2; // Fallback + return INTEROP_2; // Fallback } -static BITSTREAM_PROFILE get_lcr_local_profile(struct AV2Decoder *pbi) { - // Return the lcr_seq_profile_idc from the first valid local LCR. +static int get_lcr_local_interop(struct AV2Decoder *pbi) { + // Return the interoperability point of the first valid local LCR, mapped + // from its lcr_seq_profile_idc. for (int i = 0; i < GLOBAL_XLAYER_ID; i++) { for (int j = 0; j < MAX_NUM_LCR; j++) { if (pbi->lcr_list[i][j].valid) { const struct LocalLayerConfigurationRecord *llcr = &pbi->lcr_list[i][j].local_lcr; if (llcr->lcr_profile_tier_level_info_present_flag) - return (BITSTREAM_PROFILE)llcr->seq_ptl.lcr_seq_profile_idc; + return av2_get_interop_from_profile( + llcr->seq_ptl.lcr_seq_profile_idc); } } } - (void)pbi; - return MAIN_420_10_IP2; // Fallback + return INTEROP_2; // Fallback +} + +// Returns true if the Annex A OBU requirements table does not constrain this +// interoperability point: INTEROP_NONE (the CONFIGURABLE profile) and any IOP +// >= INTEROP_3 (reserved and max) are unconstrained. INTEROP_INVALID (a +// reserved profile) is not exempted, so such a stream is rejected here. +static bool interop_is_unconstrained(int interop) { + return interop == INTEROP_NONE || interop >= INTEROP_3; } // Conformance check for the presence of MSDO and LCR. // The OBU requirements table in Annex A only applies when IOP < 3, i.e. -// when the MSDO profile or LCR profile is one of the IP profiles (0, 1, 2). -// For profile == 31 (CONFIGURABLE) the table does +// when the MSDO profile or LCR profile has an interoperability point of +// 0, 1 or 2. For the CONFIGURABLE profile and for IOPs >= 3 the table does // not impose additional constraints, so we return true. +// +// The checks below are expressed in terms of interoperability points rather +// than individual profile labels, so that profiles sharing an IOP (e.g. +// MAIN_420_10_IP2 and MAIN_444C_12_IP2) are treated identically and newly +// added profiles need no change here. bool conformance_check_msdo_lcr(struct AV2Decoder *pbi, bool global_lcr_present, bool local_lcr_present) { int msdo_present = pbi->multistream_decoder_mode; @@ -2165,17 +2180,16 @@ bool conformance_check_msdo_lcr(struct AV2Decoder *pbi, bool global_lcr_present, } assert(num_extended_layers > 0 && num_embedded_layers > 0); - // Determine the effective MSDO and LCR profiles. - const BITSTREAM_PROFILE msdo_prof = get_msdo_profile(pbi); - const BITSTREAM_PROFILE glcr_prof = get_lcr_global_profile(pbi); - const BITSTREAM_PROFILE llcr_prof = get_lcr_local_profile(pbi); + // Determine the effective MSDO and LCR interoperability points. + const int msdo_iop = get_msdo_interop(pbi); + const int glcr_iop = get_lcr_global_interop(pbi); + const int llcr_iop = get_lcr_local_interop(pbi); - // The IOP table only applies for IOPs 0-2 (profiles IP0, IP1, IP2). - // If the signaled profile is >= 3, the table does not apply. - if (msdo_present && msdo_prof == CONFIGURABLE) return true; - if (global_lcr_present && glcr_prof == CONFIGURABLE) return true; + // The IOP table only applies for IOPs 0-2. + if (msdo_present && interop_is_unconstrained(msdo_iop)) return true; + if (global_lcr_present && interop_is_unconstrained(glcr_iop)) return true; if (!msdo_present && !global_lcr_present && local_lcr_present && - llcr_prof == CONFIGURABLE) { + interop_is_unconstrained(llcr_iop)) { return true; } if (!msdo_present && !global_lcr_present && !local_lcr_present) { @@ -2187,31 +2201,32 @@ bool conformance_check_msdo_lcr(struct AV2Decoder *pbi, bool global_lcr_present, } if (num_extended_layers > 1 && num_embedded_layers == 1) { - if (msdo_present && - (msdo_prof == MAIN_420_10_IP0 || msdo_prof == MAIN_420_10_IP1 || - msdo_prof == MAIN_420_10_IP2 || msdo_prof == MAIN_422_10_IP1 || - msdo_prof == MAIN_444_10_IP1)) - return true; + // Every IOP constrained by the table (0..2) allows multiple extended layers + // with a single embedded layer. + if (msdo_present && msdo_iop >= INTEROP_0) return true; - if (global_lcr_present && glcr_prof == MAIN_420_10_IP2) return true; + if (global_lcr_present && glcr_iop >= INTEROP_2) return true; } if (num_extended_layers == 1 && num_embedded_layers > 1) { - if (!msdo_present && local_lcr_present && - (llcr_prof == MAIN_420_10_IP1 || llcr_prof == MAIN_422_10_IP1 || - llcr_prof == MAIN_444_10_IP1)) + // Multiple embedded layers require IOP >= 1. + if (!msdo_present && local_lcr_present && llcr_iop >= INTEROP_1) return true; - if (!msdo_present && (global_lcr_present || local_lcr_present) && - (glcr_prof == MAIN_420_10_IP2 || llcr_prof == MAIN_420_10_IP2)) + // Each interoperability point is only consulted when the corresponding LCR + // is actually present, so that the permissive fallback returned by + // get_lcr_{global,local}_interop() for an absent LCR cannot allow a + // configuration the present LCR's IOP forbids. + if (!msdo_present && ((global_lcr_present && glcr_iop >= INTEROP_2) || + (local_lcr_present && llcr_iop >= INTEROP_2))) return true; } if (num_extended_layers > 1 && num_embedded_layers > 1) { - if (msdo_present && local_lcr_present && msdo_prof == MAIN_420_10_IP2) - return true; + // Combinations of multiple extended and embedded layers require IOP 2. + if (msdo_present && local_lcr_present && msdo_iop >= INTEROP_2) return true; - if (global_lcr_present && glcr_prof == MAIN_420_10_IP2) return true; + if (global_lcr_present && glcr_iop >= INTEROP_2) return true; } return false; } diff --git a/test/lcr_test.cc b/test/lcr_test.cc index 940b2336c3..c112fb6a0e 100644 --- a/test/lcr_test.cc +++ b/test/lcr_test.cc @@ -16,6 +16,7 @@ #include "av2/encoder/lcr_syntax.h" #include "av2/encoder/atlas_syntax.h" +#include "av2/common/annexA.h" #include "av2/decoder/decoder.h" #include "av2/decoder/decodeframe.h" extern "C" { @@ -840,7 +841,7 @@ TEST_F(LcrTest, ConformanceCheckMsdoConfigurable) { EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, false, false)); } -TEST_F(LcrTest, ConformanceCheckGlobalLcrConfigurable) { +TEST_F(LcrTest, ConformanceCheckGlobalLcrMaxInterop) { pbi_->xlayer_id_map[0] = 1; pbi_->mlayer_id_map[0][0] = 1; pbi_->lcr_list[GLOBAL_XLAYER_ID][1].valid = 1; @@ -848,7 +849,26 @@ TEST_F(LcrTest, ConformanceCheckGlobalLcrConfigurable) { pbi_->lcr_list[GLOBAL_XLAYER_ID][1] .global_lcr.lcr_aggregate_info_present_flag = 1; pbi_->lcr_list[GLOBAL_XLAYER_ID][1].global_lcr.aggregate_ptl.lcr_max_interop = - CONFIGURABLE; + INTEROP_MAX; + EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, true, false)); +} + +// A global LCR without an aggregate PTL falls back to the seq PTL, which +// signals a profile_idc; CONFIGURABLE has no interoperability point. +TEST_F(LcrTest, ConformanceCheckGlobalLcrConfigurableSeqPtl) { + pbi_->xlayer_id_map[0] = 1; + pbi_->mlayer_id_map[0][0] = 1; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1].valid = 1; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1].is_global = true; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1] + .global_lcr.lcr_aggregate_info_present_flag = 0; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1] + .global_lcr.lcr_seq_profile_tier_level_info_present_flag = 1; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1].global_lcr.LcrMaxNumXLayerCount = 1; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1].global_lcr.LcrXLayerID[0] = 0; + pbi_->lcr_list[GLOBAL_XLAYER_ID][1] + .global_lcr.seq_ptl[0] + .lcr_seq_profile_idc = CONFIGURABLE; EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, true, false)); } @@ -882,6 +902,79 @@ TEST_F(LcrTest, ConformanceCheckMultiMlayerLocalLcr) { EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, false, true)); } +// Profiles are checked via their interoperability point, so any profile sharing +// an IOP with an already-allowed profile must also be allowed. +TEST(AnnexATest, InteropFromProfile) { + EXPECT_EQ(av2_get_interop_from_profile(MAIN_420_10_IP0), INTEROP_0); + EXPECT_EQ(av2_get_interop_from_profile(MAIN_420_10_IP1), INTEROP_1); + EXPECT_EQ(av2_get_interop_from_profile(MAIN_420_10_IP2), INTEROP_2); + EXPECT_EQ(av2_get_interop_from_profile(MAIN_422_10_IP1), INTEROP_1); + EXPECT_EQ(av2_get_interop_from_profile(MAIN_444_10_IP1), INTEROP_1); +#if CONFIG_12BIT_PROFILE + EXPECT_EQ(av2_get_interop_from_profile(MAIN_444C_12_IP2), INTEROP_2); +#endif // CONFIG_12BIT_PROFILE + EXPECT_EQ(av2_get_interop_from_profile(CONFIGURABLE), INTEROP_NONE); + EXPECT_EQ(av2_get_interop_from_profile(RESERVED_PROFILES_START), + INTEROP_INVALID); + EXPECT_EQ(av2_get_interop_from_profile(CONFIGURABLE - 1), INTEROP_INVALID); + EXPECT_EQ(av2_get_interop_from_profile(-1), INTEROP_INVALID); + EXPECT_EQ(av2_get_interop_from_profile(MAX_PROFILES), INTEROP_INVALID); +} + +#if CONFIG_12BIT_PROFILE +// MAIN_444C_12_IP2 has the same interoperability point (2) as MAIN_420_10_IP2, +// so it must permit the same multistream configurations. Before these checks +// were expressed in terms of interoperability points, no legal multistream was +// possible with the 12-bit profile. +TEST_F(LcrTest, ConformanceCheckMultiXlayerMsdo12Bit) { + pbi_->multistream_decoder_mode = 1; + pbi_->common.msdo_params.multistream_profile_idc = MAIN_444C_12_IP2; + pbi_->xlayer_id_map[0] = 1; + pbi_->xlayer_id_map[1] = 1; + pbi_->mlayer_id_map[0][0] = 1; + EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, false, false)); +} + +TEST_F(LcrTest, ConformanceCheckMultiMlayerLocalLcr12Bit) { + pbi_->xlayer_id_map[0] = 1; + pbi_->mlayer_id_map[0][0] = 1; + pbi_->mlayer_id_map[0][1] = 1; + pbi_->lcr_list[0][1].valid = 1; + pbi_->lcr_list[0][1].is_global = false; + pbi_->lcr_list[0][1].local_lcr.lcr_profile_tier_level_info_present_flag = 1; + pbi_->lcr_list[0][1].local_lcr.seq_ptl.lcr_seq_profile_idc = MAIN_444C_12_IP2; + EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, false, true)); +} + +// Multiple extended layers combined with multiple embedded layers requires +// IOP 2, which MAIN_444C_12_IP2 satisfies. +TEST_F(LcrTest, ConformanceCheckMultiXlayerMultiMlayerMsdo12Bit) { + pbi_->multistream_decoder_mode = 1; + pbi_->common.msdo_params.multistream_profile_idc = MAIN_444C_12_IP2; + pbi_->xlayer_id_map[0] = 1; + pbi_->xlayer_id_map[1] = 1; + pbi_->mlayer_id_map[0][0] = 1; + pbi_->mlayer_id_map[0][1] = 1; + pbi_->lcr_list[0][1].valid = 1; + pbi_->lcr_list[0][1].is_global = false; + pbi_->lcr_list[0][1].local_lcr.lcr_profile_tier_level_info_present_flag = 1; + pbi_->lcr_list[0][1].local_lcr.seq_ptl.lcr_seq_profile_idc = MAIN_444C_12_IP2; + EXPECT_TRUE(conformance_check_msdo_lcr(pbi_, false, true)); +} +#endif // CONFIG_12BIT_PROFILE + +// IOP 0 does not permit multiple embedded layers, so this must still fail. +TEST_F(LcrTest, ConformanceCheckMultiMlayerLocalLcrIop0Fails) { + pbi_->xlayer_id_map[0] = 1; + pbi_->mlayer_id_map[0][0] = 1; + pbi_->mlayer_id_map[0][1] = 1; + pbi_->lcr_list[0][1].valid = 1; + pbi_->lcr_list[0][1].is_global = false; + pbi_->lcr_list[0][1].local_lcr.lcr_profile_tier_level_info_present_flag = 1; + pbi_->lcr_list[0][1].local_lcr.seq_ptl.lcr_seq_profile_idc = MAIN_420_10_IP0; + EXPECT_FALSE(conformance_check_msdo_lcr(pbi_, false, true)); +} + TEST_F(LcrTest, LcrIdBoundarySweep) { const int lcr_ids[] = { 1, 4, 7 }; for (int li = 0; li < 3; li++) { From 21ad150ed2ad8516f4757f5f92c7a63f4c419f0e Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Thu, 20 Aug 2026 15:05:26 -0700 Subject: [PATCH 049/205] Add range check min_gf_interval in validate_config (#5298) --min-gf-interval=1..3 bypasses the clamp the auto path applies, which defeats the baseline_gf_interval < min_gf_interval guard in define_gf_group(). A degenerate end-of-sequence group then builds an ARF whose temporal filter reads past the end of the lookahead and segfaults. Valid configurations are bit-identical; 1..3 now match min=4. This resolves issue #5297. --- av2/av2_cx_iface.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/av2/av2_cx_iface.c b/av2/av2_cx_iface.c index 06a08cb5ba..57ce39989b 100644 --- a/av2/av2_cx_iface.c +++ b/av2/av2_cx_iface.c @@ -696,9 +696,14 @@ static avm_codec_err_t validate_config(avm_codec_alg_priv_t *ctx, RANGE_CHECK_HI(cfg, g_lag_in_frames, MAX_TOTAL_BUFFERS); RANGE_CHECK_HI(extra_cfg, min_gf_interval, MAX_LAG_BUFFERS - 1); RANGE_CHECK_HI(extra_cfg, max_gf_interval, MAX_LAG_BUFFERS - 1); + if (extra_cfg->min_gf_interval > 0) { + RANGE_CHECK(extra_cfg, min_gf_interval, MIN_GF_INTERVAL, + (MAX_LAG_BUFFERS - 1)); + } if (extra_cfg->max_gf_interval > 0) { RANGE_CHECK(extra_cfg, max_gf_interval, - AVMMAX(2, extra_cfg->min_gf_interval), (MAX_LAG_BUFFERS - 1)); + AVMMAX(MIN_GF_INTERVAL, extra_cfg->min_gf_interval), + (MAX_LAG_BUFFERS - 1)); } RANGE_CHECK_HI(extra_cfg, gf_min_pyr_height, 5); RANGE_CHECK_HI(extra_cfg, gf_max_pyr_height, 5); From 4bdc679181083f5ae0102a48ad07392b93b85fc6 Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Fri, 21 Aug 2026 10:59:23 -0700 Subject: [PATCH 050/205] Fix encoder segfault when a GF group is truncated to one frame (#5302) define_gf_group() sets max_layer_depth_allowed from gf_max_pyr_height, then set_baseline_gf_interval() can shorten baseline_gf_interval to 1. Nothing rechecks the pyramid height afterwards, so an ARF is scheduled for a group with no room for one and av2_lookahead_peek() returns NULL in the temporal filter. Reproduces with --kf-max-dist=1 --gf-min-pyr-height=2 --enable-fwd-kf=1 on any input. define_gf_group_pass0() already has this guard. Bounded at 2 rather than min_gf_interval so that only the degenerate 1-frame group is affected; all non-crashing streams stay bit-exact. Fix #5301. --- av2/encoder/pass2_strategy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/av2/encoder/pass2_strategy.c b/av2/encoder/pass2_strategy.c index 0792038c80..c5994861bb 100644 --- a/av2/encoder/pass2_strategy.c +++ b/av2/encoder/pass2_strategy.c @@ -1817,6 +1817,8 @@ static void define_gf_group(AV2_COMP *cpi, FIRSTPASS_STATS *this_frame, set_baseline_gf_interval(cpi, (i - 1), active_max_gf_interval, use_alt_ref, frame_params->frame_type); + if (rc->baseline_gf_interval < 2) gf_group->max_layer_depth_allowed = 0; + const int forward_frames = (rc->frames_to_key - i + 1 >= (i - 1)) ? (i - 1) : AVMMAX(0, rc->frames_to_key - i + 1); From cf3856973a09436a89ab5b871634143434242ead Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Tue, 25 Aug 2026 14:58:07 -0700 Subject: [PATCH 051/205] Use encoder-only method for reduced-tx-part-set option (#5313) - Always enable all tx types at sequence level - Disable 4way/5way tx types only during RDO Fixes https://github.com/AOMediaCodec/av2-spec-internal/issues/1262 using encoder-only method. --- av2/common/blockd.h | 3 ++- av2/encoder/encoder.c | 7 ++++++- av2/encoder/tx_search.c | 6 ++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/av2/common/blockd.h b/av2/common/blockd.h index 3805e61707..67bd4c293a 100644 --- a/av2/common/blockd.h +++ b/av2/common/blockd.h @@ -2331,7 +2331,8 @@ typedef struct macroblockd { /*! \brief Flag to decide whether CFL is allowed for a particular chroma * block as passed down from the parent tree */ CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_in_sdp; - /*! \brief Flag to indicate whether reduced transform partition mode is on */ + /*! \brief Flag to indicate whether reduced transform partition mode is on and + * is the same as `cm->seq_params.reduced_tx_part_set` */ int reduced_tx_part_set; } MACROBLOCKD; diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index df551c3cfc..f8791f1ebb 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -577,7 +577,12 @@ void av2_init_seq_coding_tools(AV2_COMP *cpi, SequenceHeader *seq, seq->enable_mhccp = oxcf->intra_mode_cfg.enable_mhccp; seq->enable_inter_ddt = seq->single_picture_header_flag ? 0 : oxcf->txfm_cfg.enable_inter_ddt; - seq->reduced_tx_part_set = oxcf->txfm_cfg.reduced_tx_part_set; + // Note: we always keep the sequence header flag `reduced_tx_part_set` off, + // ignoring the encoder option `oxcf->txfm_cfg.reduced_tx_part_set`. This is + // because the restricting the transform partition types during encoder RDO + // only has been found to be more compression-efficient than using the + // sequence header option. + seq->reduced_tx_part_set = 0; seq->enable_cctx = oxcf->txfm_cfg.enable_cctx; seq->enable_ibp = oxcf->intra_mode_cfg.enable_ibp; seq->enable_adaptive_mvd = diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 559c7d1da9..31d3c2b8fc 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -3048,8 +3048,7 @@ static void select_tx_partition_type( uint8_t full_blk_skip[MAX_TX_PARTITIONS] = { 0 }; for (TX_PARTITION_TYPE type = 0; type < TX_PARTITION_TYPES; ++type) { - if (cpi->common.seq_params.reduced_tx_part_set && - type > TX_PARTITION_VERT) { + if (cpi->oxcf.txfm_cfg.reduced_tx_part_set && type > TX_PARTITION_VERT) { break; } // Skip any illegal partitions for this block size @@ -3362,8 +3361,7 @@ static void choose_tx_size_type_from_rd(const AV2_COMP *const cpi, int64_t cur_rd = INT64_MAX; const bool is_rect = is_rect_tx(max_tx_size); for (TX_PARTITION_TYPE type = 0; type < TX_PARTITION_TYPES; ++type) { - if (cpi->common.seq_params.reduced_tx_part_set && - type > TX_PARTITION_VERT) { + if (cpi->oxcf.txfm_cfg.reduced_tx_part_set && type > TX_PARTITION_VERT) { break; } // Skip any illegal partitions for this block size From 868edb077a476ef65854b4926c197c07fe078278 Mon Sep 17 00:00:00 2001 From: jjustiss-apple Date: Tue, 25 Aug 2026 15:03:48 -0700 Subject: [PATCH 052/205] Add NEON for highbd convolve_2d_sr, convolve_x_sr, convolve_y_sr (#5312) Add NEON intrinsics for av2_highbd_convolve_2d_sr, convolve_x_sr, and convolve_y_sr. The 2D kernel uses lane-indexed multiply-accumulate with a register-tiled sliding-window vertical pass. The x_sr and y_sr kernels use lane-indexed widening MAC to compute 8 output pixels simultaneously. Micro-benchmark results (Apple Silicon M2, 10-bit, bench_kernels): | Kernel | 8x8 | 16x16 | 32x32 | 64x64 | |--------|-----|-------|-------|-------| | convolve_x_sr | 6.61x | 8.32x | 9.80x | 9.47x | | convolve_y_sr | 11.72x | 15.54x | 16.18x | 15.90x | | convolve_2d_sr | 10.30x | 11.94x | 12.15x | 12.37x | CTC results (RA, cpu-used=1, 33 frames, A5, ARM Apple Silicon): | Metric | Delta | |--------|-------| | Encode time | -7.1% | | Decode time | -11.3% | | BD-rate Y | 0.000% | | BD-rate Cb | 0.000% | | BD-rate Cr | 0.000% | Unit tests included (BD 8/10/12 coverage for all three functions). --- av2/av2.cmake | 1 + av2/common/arm/highbd_convolve_neon.c | 769 ++++++++++++++++++++++++++ av2/common/av2_rtcd_defs.pl | 6 +- test/av2_convolve_test.cc | 15 + 4 files changed, 788 insertions(+), 3 deletions(-) create mode 100644 av2/common/arm/highbd_convolve_neon.c diff --git a/av2/av2.cmake b/av2/av2.cmake index 6087b88661..d36f132a33 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -439,6 +439,7 @@ list( "${AVM_ROOT}/av2/common/arm/cfl_neon.c" "${AVM_ROOT}/av2/common/arm/convolve_neon.c" "${AVM_ROOT}/av2/common/arm/convolve_neon.h" + "${AVM_ROOT}/av2/common/arm/highbd_convolve_neon.c" "${AVM_ROOT}/av2/common/arm/highbd_inv_txfm_neon.c" "${AVM_ROOT}/av2/common/arm/reconinter_neon.c" "${AVM_ROOT}/av2/common/arm/highbd_warp_affine_neon.c" diff --git a/av2/common/arm/highbd_convolve_neon.c b/av2/common/arm/highbd_convolve_neon.c new file mode 100644 index 0000000000..84e62b78d4 --- /dev/null +++ b/av2/common/arm/highbd_convolve_neon.c @@ -0,0 +1,769 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause + * Clear License was not distributed with this source code in the LICENSE file, + * you can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. + * If the Alliance for Open Media Patent License 1.0 was not distributed with + * this source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "config/av2_rtcd.h" + +#include "av2/common/convolve.h" +#include "av2/common/filter.h" +#include "avm_dsp/avm_dsp_common.h" +#include "avm_dsp/avm_filter.h" + +void av2_highbd_convolve_x_sr_neon(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, int h, + const InterpFilterParams *filter_params_x, + const int subpel_x_qn, + ConvolveParams *conv_params, int bd) { + const int fo_horiz = filter_params_x->taps / 2 - 1; + const int bits = FILTER_BITS - conv_params->round_0; + assert(bits >= 0); + + const int16_t *x_filter = av2_get_interp_filter_subpel_kernel( + filter_params_x, subpel_x_qn & SUBPEL_MASK); + + const int32x4_t round0_shift = vdupq_n_s32(-conv_params->round_0); + const int32x4_t bits_shift = vdupq_n_s32(-bits); + const int16x8_t zero_s16 = vdupq_n_s16(0); + const int16x8_t max_val = vdupq_n_s16((1 << bd) - 1); + + const int16x8_t filt = vld1q_s16(x_filter); + const int16x4_t f_lo = vget_low_s16(filt); + const int16x4_t f_hi = vget_high_s16(filt); + + for (int y = 0; y < h; ++y) { + const int16_t *s = (const int16_t *)src + y * src_stride - fo_horiz; + uint16_t *d = dst + y * dst_stride; + int x = 0; + + for (; x + 8 <= w; x += 8) { + int16x8_t s0 = vld1q_s16(s + x + 0); + int16x8_t s1 = vld1q_s16(s + x + 1); + int16x8_t s2 = vld1q_s16(s + x + 2); + int16x8_t s3 = vld1q_s16(s + x + 3); + int16x8_t s4 = vld1q_s16(s + x + 4); + int16x8_t s5 = vld1q_s16(s + x + 5); + int16x8_t s6 = vld1q_s16(s + x + 6); + int16x8_t s7 = vld1q_s16(s + x + 7); + + int32x4_t sum_lo = + vmlal_lane_s16(vdupq_n_s32(0), vget_low_s16(s0), f_lo, 0); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s1), f_lo, 1); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s2), f_lo, 2); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s3), f_lo, 3); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s4), f_hi, 0); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s5), f_hi, 1); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s6), f_hi, 2); + sum_lo = vmlal_lane_s16(sum_lo, vget_low_s16(s7), f_hi, 3); + + int32x4_t sum_hi = + vmlal_lane_s16(vdupq_n_s32(0), vget_high_s16(s0), f_lo, 0); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s1), f_lo, 1); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s2), f_lo, 2); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s3), f_lo, 3); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s4), f_hi, 0); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s5), f_hi, 1); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s6), f_hi, 2); + sum_hi = vmlal_lane_s16(sum_hi, vget_high_s16(s7), f_hi, 3); + + sum_lo = vrshlq_s32(sum_lo, round0_shift); + sum_hi = vrshlq_s32(sum_hi, round0_shift); + sum_lo = vrshlq_s32(sum_lo, bits_shift); + sum_hi = vrshlq_s32(sum_hi, bits_shift); + int16x8_t res = vcombine_s16(vqmovn_s32(sum_lo), vqmovn_s32(sum_hi)); + res = vmaxq_s16(res, zero_s16); + res = vminq_s16(res, max_val); + vst1q_u16(d + x, vreinterpretq_u16_s16(res)); + } + + if (x + 4 <= w) { + int16x4_t s0 = vld1_s16(s + x + 0); + int16x4_t s1 = vld1_s16(s + x + 1); + int16x4_t s2 = vld1_s16(s + x + 2); + int16x4_t s3 = vld1_s16(s + x + 3); + int16x4_t s4 = vld1_s16(s + x + 4); + int16x4_t s5 = vld1_s16(s + x + 5); + int16x4_t s6 = vld1_s16(s + x + 6); + int16x4_t s7 = vld1_s16(s + x + 7); + + int32x4_t sum = vmlal_lane_s16(vdupq_n_s32(0), s0, f_lo, 0); + sum = vmlal_lane_s16(sum, s1, f_lo, 1); + sum = vmlal_lane_s16(sum, s2, f_lo, 2); + sum = vmlal_lane_s16(sum, s3, f_lo, 3); + sum = vmlal_lane_s16(sum, s4, f_hi, 0); + sum = vmlal_lane_s16(sum, s5, f_hi, 1); + sum = vmlal_lane_s16(sum, s6, f_hi, 2); + sum = vmlal_lane_s16(sum, s7, f_hi, 3); + + sum = vrshlq_s32(sum, round0_shift); + sum = vrshlq_s32(sum, bits_shift); + int16x4_t res = vqmovn_s32(sum); + res = vmax_s16(res, vget_low_s16(zero_s16)); + res = vmin_s16(res, vget_low_s16(max_val)); + vst1_u16(d + x, vreinterpret_u16_s16(res)); + x += 4; + } + + for (; x < w; ++x) { + int32_t res = 0; + for (int k = 0; k < filter_params_x->taps; ++k) { + res += x_filter[k] * s[x + k]; + } + res = ROUND_POWER_OF_TWO(res, conv_params->round_0); + d[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(res, bits), bd); + } + } +} + +void av2_highbd_convolve_y_sr_neon(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, int h, + const InterpFilterParams *filter_params_y, + const int subpel_y_qn, int bd) { + const int fo_vert = filter_params_y->taps / 2 - 1; + const int16_t *y_filter_ptr = av2_get_interp_filter_subpel_kernel( + filter_params_y, subpel_y_qn & SUBPEL_MASK); + + if (w < 4 || h < 4 || (h % 4) != 0) { + for (int y = 0; y < h; ++y) { + uint16_t *d = dst + y * dst_stride; + for (int x = 0; x < w; ++x) { + int32_t res = 0; + for (int k = 0; k < filter_params_y->taps; ++k) { + res += y_filter_ptr[k] * + ((const int16_t *)src)[(y - fo_vert + k) * src_stride + x]; + } + d[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(res, FILTER_BITS), bd); + } + } + return; + } + assert(h % 4 == 0); + + const int16x8_t filter = vld1q_s16(y_filter_ptr); + const int16x4_t f_lo = vget_low_s16(filter); + const int16x4_t f_hi = vget_high_s16(filter); + const int32x4_t round_shift = vdupq_n_s32(-FILTER_BITS); + const int16x8_t max_val_q = vdupq_n_s16((1 << bd) - 1); + const int16x4_t max_val_d = vdup_n_s16((1 << bd) - 1); + + const int16_t *src_col = (const int16_t *)src - fo_vert * src_stride; + int col = 0; + + for (; col + 8 <= w; col += 8) { + const int16_t *s = src_col + col; + uint16_t *d = dst + col; + + int16x8_t s0 = vld1q_s16(s + 0 * src_stride); + int16x8_t s1 = vld1q_s16(s + 1 * src_stride); + int16x8_t s2 = vld1q_s16(s + 2 * src_stride); + int16x8_t s3 = vld1q_s16(s + 3 * src_stride); + int16x8_t s4 = vld1q_s16(s + 4 * src_stride); + int16x8_t s5 = vld1q_s16(s + 5 * src_stride); + int16x8_t s6 = vld1q_s16(s + 6 * src_stride); + s += 7 * src_stride; + + int height = h; + do { + int16x8_t s7 = vld1q_s16(s + 0 * src_stride); + int16x8_t s8 = vld1q_s16(s + 1 * src_stride); + int16x8_t s9 = vld1q_s16(s + 2 * src_stride); + int16x8_t s10 = vld1q_s16(s + 3 * src_stride); + s += 4 * src_stride; + + int32x4_t lo, hi; + int16x8_t res; + + lo = vmlal_lane_s16(vdupq_n_s32(0), vget_low_s16(s0), f_lo, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s1), f_lo, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s2), f_lo, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s3), f_lo, 3); + lo = vmlal_lane_s16(lo, vget_low_s16(s4), f_hi, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s5), f_hi, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s6), f_hi, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s7), f_hi, 3); + hi = vmlal_lane_s16(vdupq_n_s32(0), vget_high_s16(s0), f_lo, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s1), f_lo, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s2), f_lo, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s3), f_lo, 3); + hi = vmlal_lane_s16(hi, vget_high_s16(s4), f_hi, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s5), f_hi, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s6), f_hi, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s7), f_hi, 3); + lo = vrshlq_s32(lo, round_shift); + hi = vrshlq_s32(hi, round_shift); + res = vcombine_s16(vqmovn_s32(lo), vqmovn_s32(hi)); + res = vmaxq_s16(res, vdupq_n_s16(0)); + res = vminq_s16(res, max_val_q); + vst1q_u16(d, vreinterpretq_u16_s16(res)); + d += dst_stride; + + lo = vmlal_lane_s16(vdupq_n_s32(0), vget_low_s16(s1), f_lo, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s2), f_lo, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s3), f_lo, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s4), f_lo, 3); + lo = vmlal_lane_s16(lo, vget_low_s16(s5), f_hi, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s6), f_hi, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s7), f_hi, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s8), f_hi, 3); + hi = vmlal_lane_s16(vdupq_n_s32(0), vget_high_s16(s1), f_lo, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s2), f_lo, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s3), f_lo, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s4), f_lo, 3); + hi = vmlal_lane_s16(hi, vget_high_s16(s5), f_hi, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s6), f_hi, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s7), f_hi, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s8), f_hi, 3); + lo = vrshlq_s32(lo, round_shift); + hi = vrshlq_s32(hi, round_shift); + res = vcombine_s16(vqmovn_s32(lo), vqmovn_s32(hi)); + res = vmaxq_s16(res, vdupq_n_s16(0)); + res = vminq_s16(res, max_val_q); + vst1q_u16(d, vreinterpretq_u16_s16(res)); + d += dst_stride; + + lo = vmlal_lane_s16(vdupq_n_s32(0), vget_low_s16(s2), f_lo, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s3), f_lo, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s4), f_lo, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s5), f_lo, 3); + lo = vmlal_lane_s16(lo, vget_low_s16(s6), f_hi, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s7), f_hi, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s8), f_hi, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s9), f_hi, 3); + hi = vmlal_lane_s16(vdupq_n_s32(0), vget_high_s16(s2), f_lo, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s3), f_lo, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s4), f_lo, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s5), f_lo, 3); + hi = vmlal_lane_s16(hi, vget_high_s16(s6), f_hi, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s7), f_hi, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s8), f_hi, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s9), f_hi, 3); + lo = vrshlq_s32(lo, round_shift); + hi = vrshlq_s32(hi, round_shift); + res = vcombine_s16(vqmovn_s32(lo), vqmovn_s32(hi)); + res = vmaxq_s16(res, vdupq_n_s16(0)); + res = vminq_s16(res, max_val_q); + vst1q_u16(d, vreinterpretq_u16_s16(res)); + d += dst_stride; + + lo = vmlal_lane_s16(vdupq_n_s32(0), vget_low_s16(s3), f_lo, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s4), f_lo, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s5), f_lo, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s6), f_lo, 3); + lo = vmlal_lane_s16(lo, vget_low_s16(s7), f_hi, 0); + lo = vmlal_lane_s16(lo, vget_low_s16(s8), f_hi, 1); + lo = vmlal_lane_s16(lo, vget_low_s16(s9), f_hi, 2); + lo = vmlal_lane_s16(lo, vget_low_s16(s10), f_hi, 3); + hi = vmlal_lane_s16(vdupq_n_s32(0), vget_high_s16(s3), f_lo, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s4), f_lo, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s5), f_lo, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s6), f_lo, 3); + hi = vmlal_lane_s16(hi, vget_high_s16(s7), f_hi, 0); + hi = vmlal_lane_s16(hi, vget_high_s16(s8), f_hi, 1); + hi = vmlal_lane_s16(hi, vget_high_s16(s9), f_hi, 2); + hi = vmlal_lane_s16(hi, vget_high_s16(s10), f_hi, 3); + lo = vrshlq_s32(lo, round_shift); + hi = vrshlq_s32(hi, round_shift); + res = vcombine_s16(vqmovn_s32(lo), vqmovn_s32(hi)); + res = vmaxq_s16(res, vdupq_n_s16(0)); + res = vminq_s16(res, max_val_q); + vst1q_u16(d, vreinterpretq_u16_s16(res)); + d += dst_stride; + + s0 = s4; + s1 = s5; + s2 = s6; + s3 = s7; + s4 = s8; + s5 = s9; + s6 = s10; + height -= 4; + } while (height > 0); + } + + for (; col + 4 <= w; col += 4) { + const int16_t *s = src_col + col; + uint16_t *d = dst + col; + + int16x4_t s0 = vld1_s16(s + 0 * src_stride); + int16x4_t s1 = vld1_s16(s + 1 * src_stride); + int16x4_t s2 = vld1_s16(s + 2 * src_stride); + int16x4_t s3 = vld1_s16(s + 3 * src_stride); + int16x4_t s4 = vld1_s16(s + 4 * src_stride); + int16x4_t s5 = vld1_s16(s + 5 * src_stride); + int16x4_t s6 = vld1_s16(s + 6 * src_stride); + s += 7 * src_stride; + + int height = h; + do { + int16x4_t s7 = vld1_s16(s + 0 * src_stride); + int16x4_t s8 = vld1_s16(s + 1 * src_stride); + int16x4_t s9 = vld1_s16(s + 2 * src_stride); + int16x4_t s10 = vld1_s16(s + 3 * src_stride); + s += 4 * src_stride; + + int32x4_t sum; + int16x4_t res; + + sum = vmlal_lane_s16(vdupq_n_s32(0), s0, f_lo, 0); + sum = vmlal_lane_s16(sum, s1, f_lo, 1); + sum = vmlal_lane_s16(sum, s2, f_lo, 2); + sum = vmlal_lane_s16(sum, s3, f_lo, 3); + sum = vmlal_lane_s16(sum, s4, f_hi, 0); + sum = vmlal_lane_s16(sum, s5, f_hi, 1); + sum = vmlal_lane_s16(sum, s6, f_hi, 2); + sum = vmlal_lane_s16(sum, s7, f_hi, 3); + sum = vrshlq_s32(sum, round_shift); + res = vqmovn_s32(sum); + res = vmax_s16(res, vdup_n_s16(0)); + res = vmin_s16(res, max_val_d); + vst1_u16(d, vreinterpret_u16_s16(res)); + d += dst_stride; + + sum = vmlal_lane_s16(vdupq_n_s32(0), s1, f_lo, 0); + sum = vmlal_lane_s16(sum, s2, f_lo, 1); + sum = vmlal_lane_s16(sum, s3, f_lo, 2); + sum = vmlal_lane_s16(sum, s4, f_lo, 3); + sum = vmlal_lane_s16(sum, s5, f_hi, 0); + sum = vmlal_lane_s16(sum, s6, f_hi, 1); + sum = vmlal_lane_s16(sum, s7, f_hi, 2); + sum = vmlal_lane_s16(sum, s8, f_hi, 3); + sum = vrshlq_s32(sum, round_shift); + res = vqmovn_s32(sum); + res = vmax_s16(res, vdup_n_s16(0)); + res = vmin_s16(res, max_val_d); + vst1_u16(d, vreinterpret_u16_s16(res)); + d += dst_stride; + + sum = vmlal_lane_s16(vdupq_n_s32(0), s2, f_lo, 0); + sum = vmlal_lane_s16(sum, s3, f_lo, 1); + sum = vmlal_lane_s16(sum, s4, f_lo, 2); + sum = vmlal_lane_s16(sum, s5, f_lo, 3); + sum = vmlal_lane_s16(sum, s6, f_hi, 0); + sum = vmlal_lane_s16(sum, s7, f_hi, 1); + sum = vmlal_lane_s16(sum, s8, f_hi, 2); + sum = vmlal_lane_s16(sum, s9, f_hi, 3); + sum = vrshlq_s32(sum, round_shift); + res = vqmovn_s32(sum); + res = vmax_s16(res, vdup_n_s16(0)); + res = vmin_s16(res, max_val_d); + vst1_u16(d, vreinterpret_u16_s16(res)); + d += dst_stride; + + sum = vmlal_lane_s16(vdupq_n_s32(0), s3, f_lo, 0); + sum = vmlal_lane_s16(sum, s4, f_lo, 1); + sum = vmlal_lane_s16(sum, s5, f_lo, 2); + sum = vmlal_lane_s16(sum, s6, f_lo, 3); + sum = vmlal_lane_s16(sum, s7, f_hi, 0); + sum = vmlal_lane_s16(sum, s8, f_hi, 1); + sum = vmlal_lane_s16(sum, s9, f_hi, 2); + sum = vmlal_lane_s16(sum, s10, f_hi, 3); + sum = vrshlq_s32(sum, round_shift); + res = vqmovn_s32(sum); + res = vmax_s16(res, vdup_n_s16(0)); + res = vmin_s16(res, max_val_d); + vst1_u16(d, vreinterpret_u16_s16(res)); + d += dst_stride; + + s0 = s4; + s1 = s5; + s2 = s6; + s3 = s7; + s4 = s8; + s5 = s9; + s6 = s10; + height -= 4; + } while (height > 0); + } + + for (int y = 0; y < h; ++y) { + uint16_t *d = dst + y * dst_stride; + for (int x = col; x < w; ++x) { + int32_t res = 0; + for (int k = 0; k < filter_params_y->taps; ++k) { + res += y_filter_ptr[k] * + ((const int16_t *)src)[(y - fo_vert + k) * src_stride + x]; + } + d[x] = clip_pixel_highbd(ROUND_POWER_OF_TWO(res, FILTER_BITS), bd); + } + } +} + +static inline int16x8_t highbd_convolve8_8_2d_h( + const int16x8_t s0, const int16x8_t s1, const int16x8_t s2, + const int16x8_t s3, const int16x8_t s4, const int16x8_t s5, + const int16x8_t s6, const int16x8_t s7, const int16x8_t x_filter, + const int32x4_t offset, const int32x4_t round_shift) { + const int16x4_t f_lo = vget_low_s16(x_filter); + const int16x4_t f_hi = vget_high_s16(x_filter); + + int32x4_t sum0 = vmlal_lane_s16(offset, vget_low_s16(s0), f_lo, 0); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s1), f_lo, 1); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s2), f_lo, 2); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s3), f_lo, 3); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s4), f_hi, 0); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s5), f_hi, 1); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s6), f_hi, 2); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s7), f_hi, 3); + + int32x4_t sum1 = vmlal_lane_s16(offset, vget_high_s16(s0), f_lo, 0); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s1), f_lo, 1); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s2), f_lo, 2); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s3), f_lo, 3); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s4), f_hi, 0); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s5), f_hi, 1); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s6), f_hi, 2); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s7), f_hi, 3); + + sum0 = vrshlq_s32(sum0, round_shift); + sum1 = vrshlq_s32(sum1, round_shift); + return vcombine_s16(vmovn_s32(sum0), vmovn_s32(sum1)); +} + +static inline int16x4_t highbd_convolve8_4_2d_h( + const int16x4_t s0, const int16x4_t s1, const int16x4_t s2, + const int16x4_t s3, const int16x4_t s4, const int16x4_t s5, + const int16x4_t s6, const int16x4_t s7, const int16x4_t x_filter_lo, + const int16x4_t x_filter_hi, const int32x4_t offset, + const int32x4_t round_shift) { + int32x4_t sum = vmlal_lane_s16(offset, s0, x_filter_lo, 0); + sum = vmlal_lane_s16(sum, s1, x_filter_lo, 1); + sum = vmlal_lane_s16(sum, s2, x_filter_lo, 2); + sum = vmlal_lane_s16(sum, s3, x_filter_lo, 3); + sum = vmlal_lane_s16(sum, s4, x_filter_hi, 0); + sum = vmlal_lane_s16(sum, s5, x_filter_hi, 1); + sum = vmlal_lane_s16(sum, s6, x_filter_hi, 2); + sum = vmlal_lane_s16(sum, s7, x_filter_hi, 3); + sum = vrshlq_s32(sum, round_shift); + return vmovn_s32(sum); +} + +static inline void highbd_convolve_2d_sr_horiz_8wide_neon( + const uint16_t *src, int src_stride, int16_t *im, int im_stride, int w, + int h, const int16x8_t x_filter, const int32x4_t offset, + const int32x4_t round_shift) { + do { + int width = w; + const int16_t *s = (const int16_t *)src; + int16_t *d = im; + do { + int16x8_t s0 = vld1q_s16(s + 0); + int16x8_t s1 = vld1q_s16(s + 1); + int16x8_t s2 = vld1q_s16(s + 2); + int16x8_t s3 = vld1q_s16(s + 3); + int16x8_t s4 = vld1q_s16(s + 4); + int16x8_t s5 = vld1q_s16(s + 5); + int16x8_t s6 = vld1q_s16(s + 6); + int16x8_t s7 = vld1q_s16(s + 7); + int16x8_t r = highbd_convolve8_8_2d_h(s0, s1, s2, s3, s4, s5, s6, s7, + x_filter, offset, round_shift); + vst1q_s16(d, r); + s += 8; + d += 8; + width -= 8; + } while (width > 0); + src += src_stride; + im += im_stride; + } while (--h > 0); +} + +static inline void highbd_convolve_2d_sr_horiz_4wide_neon( + const uint16_t *src, int src_stride, int16_t *im, int im_stride, int h, + const int16x4_t x_filter_lo, const int16x4_t x_filter_hi, + const int32x4_t offset, const int32x4_t round_shift) { + do { + const int16_t *s = (const int16_t *)src; + int16x4_t s0 = vld1_s16(s + 0); + int16x4_t s1 = vld1_s16(s + 1); + int16x4_t s2 = vld1_s16(s + 2); + int16x4_t s3 = vld1_s16(s + 3); + int16x4_t s4 = vld1_s16(s + 4); + int16x4_t s5 = vld1_s16(s + 5); + int16x4_t s6 = vld1_s16(s + 6); + int16x4_t s7 = vld1_s16(s + 7); + int16x4_t r = + highbd_convolve8_4_2d_h(s0, s1, s2, s3, s4, s5, s6, s7, x_filter_lo, + x_filter_hi, offset, round_shift); + vst1_s16(im, r); + src += src_stride; + im += im_stride; + } while (--h > 0); +} + +static inline uint16x8_t highbd_convolve8_8_2d_v( + const int16x8_t s0, const int16x8_t s1, const int16x8_t s2, + const int16x8_t s3, const int16x8_t s4, const int16x8_t s5, + const int16x8_t s6, const int16x8_t s7, const int16x4_t f_lo, + const int16x4_t f_hi, const int32x4_t offset, const int32x4_t round_shift, + const int32x4_t sub_v, const int16x8_t max_val) { + int32x4_t sum0 = vmlal_lane_s16(offset, vget_low_s16(s0), f_lo, 0); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s1), f_lo, 1); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s2), f_lo, 2); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s3), f_lo, 3); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s4), f_hi, 0); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s5), f_hi, 1); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s6), f_hi, 2); + sum0 = vmlal_lane_s16(sum0, vget_low_s16(s7), f_hi, 3); + + int32x4_t sum1 = vmlal_lane_s16(offset, vget_high_s16(s0), f_lo, 0); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s1), f_lo, 1); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s2), f_lo, 2); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s3), f_lo, 3); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s4), f_hi, 0); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s5), f_hi, 1); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s6), f_hi, 2); + sum1 = vmlal_lane_s16(sum1, vget_high_s16(s7), f_hi, 3); + + sum0 = vrshlq_s32(sum0, round_shift); + sum1 = vrshlq_s32(sum1, round_shift); + sum0 = vsubq_s32(sum0, sub_v); + sum1 = vsubq_s32(sum1, sub_v); + + int16x8_t res = vcombine_s16(vqmovn_s32(sum0), vqmovn_s32(sum1)); + res = vmaxq_s16(res, vdupq_n_s16(0)); + res = vminq_s16(res, max_val); + return vreinterpretq_u16_s16(res); +} + +static inline uint16x4_t highbd_convolve8_4_2d_v( + const int16x4_t s0, const int16x4_t s1, const int16x4_t s2, + const int16x4_t s3, const int16x4_t s4, const int16x4_t s5, + const int16x4_t s6, const int16x4_t s7, const int16x4_t f_lo, + const int16x4_t f_hi, const int32x4_t offset, const int32x4_t round_shift, + const int32x4_t sub_v, const int16x4_t max_val) { + int32x4_t sum = vmlal_lane_s16(offset, s0, f_lo, 0); + sum = vmlal_lane_s16(sum, s1, f_lo, 1); + sum = vmlal_lane_s16(sum, s2, f_lo, 2); + sum = vmlal_lane_s16(sum, s3, f_lo, 3); + sum = vmlal_lane_s16(sum, s4, f_hi, 0); + sum = vmlal_lane_s16(sum, s5, f_hi, 1); + sum = vmlal_lane_s16(sum, s6, f_hi, 2); + sum = vmlal_lane_s16(sum, s7, f_hi, 3); + + sum = vrshlq_s32(sum, round_shift); + sum = vsubq_s32(sum, sub_v); + + int16x4_t res = vqmovn_s32(sum); + res = vmax_s16(res, vdup_n_s16(0)); + res = vmin_s16(res, max_val); + return vreinterpret_u16_s16(res); +} + +static inline void highbd_convolve_2d_sr_vert_8wide_neon( + const int16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, + int h, const int16x8_t y_filter, const int32x4_t offset, + const int32x4_t round_shift, const int32x4_t sub_v, int bd) { + const int16x8_t max_val = vdupq_n_s16((1 << bd) - 1); + const int16x4_t f_lo = vget_low_s16(y_filter); + const int16x4_t f_hi = vget_high_s16(y_filter); + + do { + int height = h; + const int16_t *s = src; + uint16_t *d = dst; + + int16x8_t s0 = vld1q_s16(s); + s += src_stride; + int16x8_t s1 = vld1q_s16(s); + s += src_stride; + int16x8_t s2 = vld1q_s16(s); + s += src_stride; + int16x8_t s3 = vld1q_s16(s); + s += src_stride; + int16x8_t s4 = vld1q_s16(s); + s += src_stride; + int16x8_t s5 = vld1q_s16(s); + s += src_stride; + int16x8_t s6 = vld1q_s16(s); + s += src_stride; + + do { + int16x8_t s7 = vld1q_s16(s); + s += src_stride; + int16x8_t s8 = vld1q_s16(s); + s += src_stride; + int16x8_t s9 = vld1q_s16(s); + s += src_stride; + int16x8_t s10 = vld1q_s16(s); + s += src_stride; + + uint16x8_t d0 = + highbd_convolve8_8_2d_v(s0, s1, s2, s3, s4, s5, s6, s7, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + uint16x8_t d1 = + highbd_convolve8_8_2d_v(s1, s2, s3, s4, s5, s6, s7, s8, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + uint16x8_t d2 = + highbd_convolve8_8_2d_v(s2, s3, s4, s5, s6, s7, s8, s9, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + uint16x8_t d3 = + highbd_convolve8_8_2d_v(s3, s4, s5, s6, s7, s8, s9, s10, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + + vst1q_u16(d, d0); + d += dst_stride; + vst1q_u16(d, d1); + d += dst_stride; + vst1q_u16(d, d2); + d += dst_stride; + vst1q_u16(d, d3); + d += dst_stride; + + s0 = s4; + s1 = s5; + s2 = s6; + s3 = s7; + s4 = s8; + s5 = s9; + s6 = s10; + height -= 4; + } while (height > 0); + src += 8; + dst += 8; + w -= 8; + } while (w > 0); +} + +static inline void highbd_convolve_2d_sr_vert_4wide_neon( + const int16_t *src, int src_stride, uint16_t *dst, int dst_stride, int h, + const int16x8_t y_filter, const int32x4_t offset, + const int32x4_t round_shift, const int32x4_t sub_v, int bd) { + const int16x4_t max_val = vdup_n_s16((1 << bd) - 1); + const int16x4_t f_lo = vget_low_s16(y_filter); + const int16x4_t f_hi = vget_high_s16(y_filter); + + const int16_t *s = src; + uint16_t *d = dst; + + int16x4_t s0 = vld1_s16(s); + s += src_stride; + int16x4_t s1 = vld1_s16(s); + s += src_stride; + int16x4_t s2 = vld1_s16(s); + s += src_stride; + int16x4_t s3 = vld1_s16(s); + s += src_stride; + int16x4_t s4 = vld1_s16(s); + s += src_stride; + int16x4_t s5 = vld1_s16(s); + s += src_stride; + int16x4_t s6 = vld1_s16(s); + s += src_stride; + + do { + int16x4_t s7 = vld1_s16(s); + s += src_stride; + int16x4_t s8 = vld1_s16(s); + s += src_stride; + int16x4_t s9 = vld1_s16(s); + s += src_stride; + int16x4_t s10 = vld1_s16(s); + s += src_stride; + + uint16x4_t d0 = + highbd_convolve8_4_2d_v(s0, s1, s2, s3, s4, s5, s6, s7, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + uint16x4_t d1 = + highbd_convolve8_4_2d_v(s1, s2, s3, s4, s5, s6, s7, s8, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + uint16x4_t d2 = + highbd_convolve8_4_2d_v(s2, s3, s4, s5, s6, s7, s8, s9, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + uint16x4_t d3 = + highbd_convolve8_4_2d_v(s3, s4, s5, s6, s7, s8, s9, s10, f_lo, f_hi, + offset, round_shift, sub_v, max_val); + + vst1_u16(d, d0); + d += dst_stride; + vst1_u16(d, d1); + d += dst_stride; + vst1_u16(d, d2); + d += dst_stride; + vst1_u16(d, d3); + d += dst_stride; + + s0 = s4; + s1 = s5; + s2 = s6; + s3 = s7; + s4 = s8; + s5 = s9; + s6 = s10; + h -= 4; + } while (h > 0); +} + +void av2_highbd_convolve_2d_sr_neon(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, int h, + const InterpFilterParams *filter_params_x, + const InterpFilterParams *filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams *conv_params, int bd) { + if (w < 4 || h < 4 || (w != 4 && (w % 8) != 0) || (h % 4) != 0) { + av2_highbd_convolve_2d_sr_c(src, src_stride, dst, dst_stride, w, h, + filter_params_x, filter_params_y, subpel_x_qn, + subpel_y_qn, conv_params, bd); + return; + } + + int16_t im_block[(MAX_SB_SIZE + MAX_FILTER_TAP) * MAX_SB_SIZE]; + const int im_h = h + filter_params_y->taps - 1; + const int im_stride = w; + assert(w <= MAX_SB_SIZE && h <= MAX_SB_SIZE); + assert(w == 4 || (w % 8) == 0); + assert(h % 4 == 0); + assert(bd + FILTER_BITS + 2 - conv_params->round_0 <= 16); + + const int fo_vert = filter_params_y->taps / 2 - 1; + const int fo_horiz = filter_params_x->taps / 2 - 1; + + const int16_t *x_filter_ptr = av2_get_interp_filter_subpel_kernel( + filter_params_x, subpel_x_qn & SUBPEL_MASK); + const int16_t *y_filter_ptr = av2_get_interp_filter_subpel_kernel( + filter_params_y, subpel_y_qn & SUBPEL_MASK); + + const int32_t horiz_offset = 1 << (bd + FILTER_BITS - 1); + const int32x4_t horiz_offset_v = vdupq_n_s32(horiz_offset); + const int32x4_t horiz_round_shift = vdupq_n_s32(-conv_params->round_0); + + const int offset_bits = bd + 2 * FILTER_BITS - conv_params->round_0; + const int32_t vert_offset = 1 << offset_bits; + const int32x4_t vert_offset_v = vdupq_n_s32(vert_offset); + const int32x4_t round_shift = vdupq_n_s32(-conv_params->round_1); + const int32_t sub_const = (1 << (offset_bits - conv_params->round_1)) + + (1 << (offset_bits - conv_params->round_1 - 1)); + const int32x4_t sub_v = vdupq_n_s32(sub_const); + + const uint16_t *src_horiz = src - fo_vert * src_stride - fo_horiz; + + const int16x8_t x_filter = vld1q_s16(x_filter_ptr); + const int16x8_t y_filter = vld1q_s16(y_filter_ptr); + + if (w == 4) { + const int16x4_t xf_lo = vget_low_s16(x_filter); + const int16x4_t xf_hi = vget_high_s16(x_filter); + highbd_convolve_2d_sr_horiz_4wide_neon(src_horiz, src_stride, im_block, + im_stride, im_h, xf_lo, xf_hi, + horiz_offset_v, horiz_round_shift); + highbd_convolve_2d_sr_vert_4wide_neon(im_block, im_stride, dst, dst_stride, + h, y_filter, vert_offset_v, + round_shift, sub_v, bd); + } else { + highbd_convolve_2d_sr_horiz_8wide_neon(src_horiz, src_stride, im_block, + im_stride, w, im_h, x_filter, + horiz_offset_v, horiz_round_shift); + highbd_convolve_2d_sr_vert_8wide_neon(im_block, im_stride, dst, dst_stride, + w, h, y_filter, vert_offset_v, + round_shift, sub_v, bd); + } +} diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index d49aa62a33..e1ff520426 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -425,9 +425,9 @@ () specialize qw/av2_highbd_dist_wtd_convolve_x sse4_1 avx2/; specialize qw/av2_highbd_dist_wtd_convolve_y sse4_1 avx2/; specialize qw/av2_highbd_dist_wtd_convolve_2d_copy sse4_1 avx2/; -specialize qw/av2_highbd_convolve_2d_sr ssse3 avx2/; -specialize qw/av2_highbd_convolve_x_sr ssse3 avx2/; -specialize qw/av2_highbd_convolve_y_sr ssse3 avx2/; +specialize qw/av2_highbd_convolve_2d_sr ssse3 avx2 neon/; +specialize qw/av2_highbd_convolve_x_sr ssse3 avx2 neon/; +specialize qw/av2_highbd_convolve_y_sr ssse3 avx2 neon/; specialize qw/av2_highbd_convolve_2d_scale sse4_1/; # INTRA_EDGE functions diff --git a/test/av2_convolve_test.cc b/test/av2_convolve_test.cc index 1deb3f02c8..c2c2aa0bd6 100644 --- a/test/av2_convolve_test.cc +++ b/test/av2_convolve_test.cc @@ -387,6 +387,11 @@ INSTANTIATE_TEST_SUITE_P(AVX2, AV2ConvolveXHighbdTest, BuildHighbdParams(av2_highbd_convolve_x_sr_avx2)); #endif +#if HAVE_NEON +INSTANTIATE_TEST_SUITE_P(NEON, AV2ConvolveXHighbdTest, + BuildHighbdParams(av2_highbd_convolve_x_sr_neon)); +#endif + ///////////////////////////////////////////////////////// // Single reference convolve-y functions (high bit-depth) ///////////////////////////////////////////////////////// @@ -440,6 +445,11 @@ INSTANTIATE_TEST_SUITE_P(AVX2, AV2ConvolveYHighbdTest, BuildHighbdParams(av2_highbd_convolve_y_sr_avx2)); #endif +#if HAVE_NEON +INSTANTIATE_TEST_SUITE_P(NEON, AV2ConvolveYHighbdTest, + BuildHighbdParams(av2_highbd_convolve_y_sr_neon)); +#endif + /////////////////////////////////////////////////////////////// // Single reference convolve-copy functions (high bit-depth) /////////////////////////////////////////////////////////////// @@ -598,6 +608,11 @@ INSTANTIATE_TEST_SUITE_P(AVX2, AV2Convolve2DHighbdTest, BuildHighbdParams(av2_highbd_convolve_2d_sr_avx2)); #endif +#if HAVE_NEON +INSTANTIATE_TEST_SUITE_P(NEON, AV2Convolve2DHighbdTest, + BuildHighbdParams(av2_highbd_convolve_2d_sr_neon)); +#endif + ////////////////////////// // Compound Convolve Tests ////////////////////////// From 493a008b916684df52a8bc78607fdda3edb301ae Mon Sep 17 00:00:00 2001 From: Xin Zhao Date: Tue, 25 Aug 2026 15:04:35 -0700 Subject: [PATCH 053/205] Do not enable simple_motion_search_prune_rect (#5311) av2_simple_motion_search_prune_rect() is not implemented for the AV2 partition set and asserts "Not implemented" since e2d056635. With --disable-ml-partition-speed-features=0 the speed feature turned on, the assert was compiled out under NDEBUG, and the encoder segfaulted: av2_prune_partitions_before_search() calls the function for rectangular block sizes, where convert_bsize_to_idx() returns -1 and sms_tree is NULL because fill_sms_buf() only populates square sizes. This fixes #5310. Co-authored-by: Xin Zhao --- av2/encoder/speed_features.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 997ced107b..15e0c6a95a 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -296,7 +296,9 @@ static void set_good_speed_features_framesize_independent( sf->gm_sf.disable_gm_search_based_on_stats = 1; sf->part_sf.less_rectangular_check_level = 1; - sf->part_sf.simple_motion_search_prune_rect = 1; + // This speed feature is currently not implemented. See comment in + // av2_simple_motion_search_prune_rect() function. + sf->part_sf.simple_motion_search_prune_rect = 0; sf->inter_sf.disable_wedge_search_var_thresh = 0; // TODO(debargha): Test, tweak and turn on either 1 or 2 From e7c2e35e53cd95f9af6cece89b1119b5ca853f5c Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Wed, 1 Jul 2026 14:07:57 -0700 Subject: [PATCH 054/205] Rework speed features 2 - 5 (#5080) Anchor: research-v15.0.0 CTC: v9 Baseline: speed 0 Configuration: RA 33frames (A2 - A5) Original (research-v15.0.0) Speed 1: PSNR-YUV: +0.66% | VMAF: +0.51% | EncTime: 71.38% Speed 2: PSNR-YUV: +4.46% | VMAF: +5.00% | EncTime: 31.91% Speed 3: PSNR-YUV: +13.00% | VMAF: +14.41% | EncTime: 16.95% Speed 4: PSNR-YUV: +16.86% | VMAF: +18.32% | EncTime: 13.32% Speed 5: PSNR-YUV: +21.24% | VMAF: +23.32% | EncTime: 9.53% New Speed 1: PSNR-YUV: +0.66% | VMAF: +0.51% | EncTime: 71.38% Speed 2: PSNR-YUV: +3.37% | VMAF: +3.51% | EncTime: 32.26% Speed 3: PSNR-YUV: +8.45% | VMAF: +9.50% | EncTime: 19.44% Speed 4: PSNR-YUV: +10.48% | VMAF: +11.55% | EncTime: 14.91% Speed 5: PSNR-YUV: +11.45% | VMAF: +12.80% | EncTime: 13.95% Configuration: RA 17frames (A1) Original (research-v15.0.0) Speed 1: PSNR-YUV: +0.42% | VMAF: +0.35% | EncTime: 82.13% Speed 2: PSNR-YUV: +5.96% | VMAF: +5.92% | EncTime: 40.46% Speed 3: PSNR-YUV: +15.80% | VMAF: +16.50% | EncTime: 25.52% Speed 4: PSNR-YUV: +20.19% | VMAF: +21.10% | EncTime: 22.01% Speed 5: PSNR-YUV: +25.91% | VMAF: +30.35% | EncTime: 16.90% New Speed 1: PSNR-YUV: +0.42% | VMAF: +0.35% | EncTime: 82.13% Speed 2: PSNR-YUV: +4.27% | VMAF: +4.07% | EncTime: 42.26% Speed 3: PSNR-YUV: +9.82% | VMAF: +10.11% | EncTime: 29.48% Speed 4: PSNR-YUV: +12.02% | VMAF: +12.67% | EncTime: 24.22% Speed 5: PSNR-YUV: +13.34% | VMAF: +13.82% | EncTime: 23.12% --- av2/av2_dx_iface.c | 6 +++- av2/encoder/compound_type.c | 12 +++---- av2/encoder/partition_search.c | 17 ++++++++-- av2/encoder/rdopt.c | 55 ++----------------------------- av2/encoder/rdopt_utils.h | 8 +---- av2/encoder/speed_features.c | 59 +++++++++------------------------- av2/encoder/speed_features.h | 24 ++------------ av2/encoder/tx_search.c | 19 ++++------- 8 files changed, 51 insertions(+), 149 deletions(-) diff --git a/av2/av2_dx_iface.c b/av2/av2_dx_iface.c index 72e18e9a6d..dbb8533e0c 100644 --- a/av2/av2_dx_iface.c +++ b/av2/av2_dx_iface.c @@ -1106,7 +1106,11 @@ static avm_codec_err_t decoder_decode(avm_codec_alg_priv_t *ctx, res = decode_one(ctx, &data_start, frame_unit_size, user_priv); - if (res != AVM_CODEC_OK) return res; + if (res != AVM_CODEC_OK) { + free(frame_worker_data->pbi->obu_list); + frame_worker_data->pbi->num_obus_with_frame_unit = 0; + return res; + } set_last_frame_unit(frame_worker_data->pbi); free(frame_worker_data->pbi->obu_list); diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index 5dc2ab909a..d636ded207 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -121,8 +121,7 @@ static INLINE bool enable_wedge_interinter_search(MACROBLOCK *const x, static INLINE bool enable_wedge_interintra_search(MACROBLOCK *const x, const AV2_COMP *const cpi) { return enable_wedge_search(x, cpi) && - cpi->oxcf.comp_type_cfg.enable_interintra_wedge && - !cpi->sf.inter_sf.disable_wedge_interintra_search; + cpi->oxcf.comp_type_cfg.enable_interintra_wedge; } static int8_t estimate_wedge_sign(const AV2_COMP *cpi, const MACROBLOCK *x, @@ -582,8 +581,7 @@ static int handle_smooth_inter_intra_mode( } args->inter_intra_mode[mbmi->ref_frame[0]] = *best_interintra_mode; } - assert(IMPLIES(!cpi->oxcf.comp_type_cfg.enable_smooth_interintra || - cpi->sf.inter_sf.disable_smooth_interintra, + assert(IMPLIES(!cpi->oxcf.comp_type_cfg.enable_smooth_interintra, *best_interintra_mode != II_SMOOTH_PRED)); // Recompute prediction if required bool interintra_mode_reuse = cpi->sf.inter_sf.reuse_inter_intra_mode || @@ -634,8 +632,7 @@ static int handle_wedge_inter_intra_mode( const AV2_COMMON *const cm = &cpi->common; const int bw = block_size_wide[bsize]; const int try_smooth_interintra = - cpi->oxcf.comp_type_cfg.enable_smooth_interintra && - !cpi->sf.inter_sf.disable_smooth_interintra; + cpi->oxcf.comp_type_cfg.enable_smooth_interintra; mbmi->use_wedge_interintra = 1; assert(IMPLIES(!mbmi->warp_inter_intra, mbmi->motion_mode == INTERINTRA)); @@ -757,8 +754,7 @@ int av2_handle_inter_intra_mode(const AV2_COMP *const cpi, MACROBLOCK *const x, const MOTION_MODE org_motion_mode = mbmi->motion_mode; const MOTION_MODE org_warp_inter_intra = mbmi->warp_inter_intra; const int try_smooth_interintra = - cpi->oxcf.comp_type_cfg.enable_smooth_interintra && - !cpi->sf.inter_sf.disable_smooth_interintra; + cpi->oxcf.comp_type_cfg.enable_smooth_interintra; const int is_wedge_used = av2_is_wedge_used(bsize); const int try_wedge_interintra = diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 5f27120720..d856f45625 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2960,7 +2960,8 @@ static INLINE void accumulate_partition_timing_stats( static AVM_INLINE void init_allowed_partitions( PartitionSearchState *part_search_state, const PartitionCfg *part_cfg, - const int bru_skip, const bool *partition_allowed) { + const SPEED_FEATURES *const sf, const int bru_skip, + const bool *partition_allowed) { const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const BLOCK_SIZE bsize = blk_params->bsize; if (bru_skip) { @@ -2997,6 +2998,7 @@ static AVM_INLINE void init_allowed_partitions( is_bsize_geq(vert_subsize, min_partition_size); part_search_state->partition_3_allowed[HORZ] = + !sf->part_sf.disable_ext_partitions && partition_allowed[PARTITION_HORZ_3] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_3), blk_params->min_partition_size) && @@ -3004,6 +3006,7 @@ static AVM_INLINE void init_allowed_partitions( blk_params->min_partition_size); part_search_state->partition_3_allowed[VERT] = + !sf->part_sf.disable_ext_partitions && partition_allowed[PARTITION_VERT_3] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_3), blk_params->min_partition_size) && @@ -3011,18 +3014,26 @@ static AVM_INLINE void init_allowed_partitions( blk_params->min_partition_size); part_search_state->partition_4a_allowed[HORZ] = + !sf->part_sf.disable_ext_partitions && + !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_HORZ_4A] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_4A), blk_params->min_partition_size); part_search_state->partition_4b_allowed[HORZ] = + !sf->part_sf.disable_ext_partitions && + !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_HORZ_4B] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_4B), blk_params->min_partition_size); part_search_state->partition_4a_allowed[VERT] = + !sf->part_sf.disable_ext_partitions && + !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_VERT_4A] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_4A), blk_params->min_partition_size); part_search_state->partition_4b_allowed[VERT] = + !sf->part_sf.disable_ext_partitions && + !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_VERT_4B] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_4B), blk_params->min_partition_size); @@ -3147,7 +3158,7 @@ static void init_partition_search_state_params( pc_tree->region_type, partition_allowed); init_allowed_partitions( - part_search_state, &cpi->oxcf.part_cfg, + part_search_state, &cpi->oxcf.part_cfg, &cpi->sf, is_bru_not_active_and_not_on_partial_border(cm, mi_col, mi_row, bsize), partition_allowed); @@ -5730,7 +5741,7 @@ bool av2_rd_pick_partition( (pc_tree->parent ? pc_tree->parent->region_type : INTRA_REGION), mi_row, mi_col, ss_x, ss_y, bsize, &pc_tree->chroma_ref_info); init_allowed_partitions( - &part_search_state, &cpi->oxcf.part_cfg, + &part_search_state, &cpi->oxcf.part_cfg, &cpi->sf, is_bru_not_active_and_not_on_partial_border(cm, mi_col, mi_row, bsize), partition_allowed); #if CONFIG_ML_PART_SPLIT diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 35e43132f1..f1655bedc6 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -6323,9 +6323,7 @@ static AVM_INLINE void rd_pick_skip_mode( assert(second_ref_frame != NONE_FRAME); const PREDICTION_MODE this_mode = NEAR_NEARMV; - if ((!cpi->oxcf.ref_frm_cfg.enable_onesided_comp || - cpi->sf.inter_sf.disable_onesided_comp) && - cpi->all_one_sided_refs) { + if (!cpi->oxcf.ref_frm_cfg.enable_onesided_comp && cpi->all_one_sided_refs) { return; } @@ -6881,8 +6879,7 @@ static AVM_INLINE int prune_ref_frame(const AV2_COMP *cpi, const MACROBLOCK *x, av2_set_ref_frame(rf, ref_frame); const int comp_pred = is_inter_ref_frame(rf[1]); if (comp_pred) { - if (!cpi->oxcf.ref_frm_cfg.enable_onesided_comp || - cpi->sf.inter_sf.disable_onesided_comp) { + if (!cpi->oxcf.ref_frm_cfg.enable_onesided_comp) { // Disable all compound references if (cpi->all_one_sided_refs) return 1; // If both references are on the same side prune @@ -7651,47 +7648,6 @@ static int compound_skip_by_single_states( return 0; } -// Check if ref frames of current block matches with given block. -static INLINE void match_ref_frame(const MB_MODE_INFO *const mbmi, - const MV_REFERENCE_FRAME *ref_frames, - int *const is_ref_match) { - if (is_inter_block(mbmi, SHARED_PART)) { - is_ref_match[0] |= ref_frames[0] == mbmi->ref_frame[0]; - is_ref_match[1] |= ref_frames[1] == mbmi->ref_frame[0]; - if (has_second_ref(mbmi)) { - is_ref_match[0] |= ref_frames[0] == mbmi->ref_frame[1]; - is_ref_match[1] |= ref_frames[1] == mbmi->ref_frame[1]; - } - } -} - -// Prune compound mode using ref frames of neighbor blocks. -static INLINE int compound_skip_using_neighbor_refs( - MACROBLOCKD *const xd, const PREDICTION_MODE this_mode, - const MV_REFERENCE_FRAME *ref_frames, int prune_compound_using_neighbors) { - // Exclude non-extended compound modes from pruning - if (this_mode == NEAR_NEARMV || this_mode == NEW_NEWMV || - this_mode == GLOBAL_GLOBALMV) - return 0; - - int is_ref_match[2] = { 0 }; // 0 - match for forward refs - // 1 - match for backward refs - // Check if ref frames of this block matches with left neighbor. - if (xd->left_available) - match_ref_frame(xd->left_mbmi, ref_frames, is_ref_match); - - // Check if ref frames of this block matches with above neighbor. - if (xd->up_available) - match_ref_frame(xd->above_mbmi, ref_frames, is_ref_match); - - // Combine ref frame match with neighbors in forward and backward refs. - const int track_ref_match = is_ref_match[0] + is_ref_match[1]; - - // Pruning based on ref frame match with neighbors. - if (track_ref_match >= prune_compound_using_neighbors) return 0; - return 1; -} - // Update best single mode for the given reference frame based on simple rd. static INLINE void update_best_single_mode(InterModeSearchState *search_state, const PREDICTION_MODE this_mode, @@ -7989,13 +7945,6 @@ static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, const BLOCK_SIZE bsize, return 1; } - if (sf->inter_sf.prune_compound_using_neighbors && comp_pred) { - if (compound_skip_using_neighbor_refs( - xd, this_mode, ref_frames, - sf->inter_sf.prune_compound_using_neighbors)) - return 1; - } - if (sf->inter_sf.prune_comp_using_best_single_mode_ref && comp_pred) { if (skip_compound_using_best_single_mode_ref( this_mode, ref_frames, args->search_state->best_single_mode, diff --git a/av2/encoder/rdopt_utils.h b/av2/encoder/rdopt_utils.h index ff54a35a4c..ff31f0eb76 100644 --- a/av2/encoder/rdopt_utils.h +++ b/av2/encoder/rdopt_utils.h @@ -199,11 +199,6 @@ static INLINE int is_winner_mode_processing_enabled( sf->tx_sf.tx_type_search.fast_inter_tx_type_search && !cpi->oxcf.txfm_cfg.use_inter_dct_only) return 1; - } else { - if (sf->tx_sf.tx_type_search.fast_intra_tx_type_search && - !cpi->oxcf.txfm_cfg.use_intra_default_tx_only && - !cpi->oxcf.txfm_cfg.use_intra_dct_only) - return 1; } // Check speed feature related to winner mode processing @@ -315,8 +310,7 @@ static INLINE void set_mode_eval_params(const struct AV2_COMP *cpi, break; case MODE_EVAL: txfm_params->use_default_intra_tx_type = - (cpi->sf.tx_sf.tx_type_search.fast_intra_tx_type_search || - cpi->oxcf.txfm_cfg.use_intra_default_tx_only); + cpi->oxcf.txfm_cfg.use_intra_default_tx_only; txfm_params->use_default_inter_tx_type = cpi->sf.tx_sf.tx_type_search.fast_inter_tx_type_search; txfm_params->skip_txfm_level = diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 15e0c6a95a..48aa08ba50 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -199,10 +199,6 @@ static void set_good_speed_feature_framesize_dependent( if (speed >= 3) { sf->part_sf.use_square_partition_only_threshold = BLOCK_128X128; - if (is_480p_or_larger) { - sf->tx_sf.tx_type_search.prune_tx_type_using_stats = 1; - } - sf->part_sf.ml_early_term_after_part_split_level = 0; if (is_720p_or_larger) { @@ -223,7 +219,7 @@ static void set_good_speed_feature_framesize_dependent( } if (is_480p_or_larger) { - sf->tx_sf.tx_type_search.prune_tx_type_using_stats = 2; + sf->tx_sf.tx_type_search.prune_tx_type_using_stats = 1; } } @@ -328,8 +324,6 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.model_based_prune_tx_search_level = 1; sf->tx_sf.prune_tx_rd_eval_sec_tx_sse = true; sf->tx_sf.tx_type_search.use_reduced_intra_txset = 1; - sf->tx_sf.tx_type_search.skip_stx_search = 0; - sf->tx_sf.tx_type_search.skip_cctx_search = 0; if (cpi->twopass.fr_content_type == FC_HIGHMOTION || cpi->is_screen_content_type) { @@ -357,6 +351,9 @@ static void set_good_speed_features_framesize_independent( // speed feature accordingly sf->part_sf.simple_motion_search_split = allow_screen_content_tools ? 1 : 2; + sf->part_sf.disable_uneven_4way_partitions = true; + sf->part_sf.disable_ext_partitions = true; + if (cpi->twopass.fr_content_type == FC_HIGHMOTION || cpi->is_screen_content_type) { sf->mv_sf.exhaustive_searches_thresh = (1 << 21); @@ -378,17 +375,13 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.selective_ref_frame = 2; sf->inter_sf.skip_repeated_newmv = 1; - sf->interp_sf.use_interp_filter = 1; sf->intra_sf.prune_palette_search_level = 1; - sf->intra_sf.skip_intra_dip_search = true; sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; sf->tx_sf.model_based_prune_tx_search_level = 0; sf->tx_sf.tx_type_search.prune_2d_txfm_mode = TX_TYPE_PRUNE_2; - sf->tx_sf.tx_type_search.skip_tx_search = 1; - sf->rd_sf.disable_tcq = 1; sf->rd_sf.perform_coeff_opt = boosted ? 2 : 3; sf->rd_sf.tx_domain_dist_level = boosted ? 1 : 2; sf->rd_sf.tx_domain_dist_thres_level = 1; @@ -401,6 +394,14 @@ static void set_good_speed_features_framesize_independent( } if (speed >= 3) { + // These features are moved down from speed 2 + // --- Start --- + sf->interp_sf.use_interp_filter = 1; + sf->tx_sf.tx_type_search.skip_tx_search = 1; + sf->intra_sf.skip_intra_dip_search = true; + sf->rd_sf.disable_tcq = 1; + // --- End --- + sf->hl_sf.high_precision_mv_usage = CURRENT_Q; sf->hl_sf.recode_loop = ALLOW_RECODE_KFARFGF; @@ -419,7 +420,6 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.full_pixel_search_level = 1; sf->mv_sf.simple_motion_subpel_force_stop = QUARTER_PEL; sf->mv_sf.subpel_search_method = SUBPEL_TREE_PRUNED; - sf->mv_sf.search_method = DIAMOND; sf->gm_sf.num_refinement_steps = 0; @@ -431,19 +431,13 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.comp_inter_joint_search_thresh = BLOCK_SIZES_ALL; sf->inter_sf.disable_wedge_search_var_thresh = 100; sf->inter_sf.fast_interintra_wedge_search = 1; - sf->inter_sf.prune_compound_using_neighbors = 1; sf->inter_sf.prune_comp_type_by_comp_avg = 2; sf->inter_sf.disable_sb_level_mv_cost_upd = 1; - // TODO(yunqing): evaluate this speed feature for speed 1 & 2, and combine - // it with cpi->sf.disable_wedge_search_var_thresh. - sf->inter_sf.disable_wedge_interintra_search = 1; - sf->inter_sf.disable_smooth_interintra = boosted ? 0 : 1; // TODO(any): Experiment with the early exit mechanism for speeds 0, 1 and 2 // and clean-up the speed feature sf->inter_sf.perform_best_rd_based_gating_for_chroma = 1; sf->inter_sf.prune_inter_modes_based_on_tpl = boosted ? 0 : 1; sf->inter_sf.prune_comp_search_by_single_result = boosted ? 4 : 2; - sf->inter_sf.selective_ref_frame = 4; sf->inter_sf.skip_repeated_ref_mv = 1; sf->inter_sf.skip_repeated_full_newmv = 1; // TODO(any): Set this speed feature to 2 after correcting the match @@ -464,8 +458,6 @@ static void set_good_speed_features_framesize_independent( sf->tpl_sf.subpel_force_stop = QUARTER_PEL; sf->tpl_sf.search_method = DIAMOND; - sf->tx_sf.tx_type_search.skip_stx_search = 1; - sf->tx_sf.tx_type_search.skip_cctx_search = 1; sf->tx_sf.adaptive_tx_type_search_idx = boosted ? 4 : 5; sf->tx_sf.adaptive_tx_partition_type_search_idx = boosted ? 4 : 5; sf->tx_sf.tx_type_search.use_skip_flag_prediction = 2; @@ -499,12 +491,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 4; sf->inter_sf.prune_inter_modes_based_on_tpl = boosted ? 0 : 3; - sf->inter_sf.prune_compound_using_neighbors = 2; sf->inter_sf.prune_comp_using_best_single_mode_ref = 2; - sf->inter_sf.disable_smooth_interintra = 1; - sf->inter_sf.disable_onesided_comp = 1; - - sf->interp_sf.use_interp_filter = 2; sf->intra_sf.intra_uv_mode_mask[TX_16X16] = UV_INTRA_DC_H_V_CFL; sf->intra_sf.intra_uv_mode_mask[TX_32X32] = UV_INTRA_DC_H_V_CFL; @@ -516,21 +503,18 @@ static void set_good_speed_features_framesize_independent( // presets as well sf->intra_sf.skip_intra_in_interframe = 2; - sf->mv_sf.simple_motion_subpel_force_stop = HALF_PEL; - sf->tpl_sf.prune_starting_mv = 2; sf->tpl_sf.subpel_force_stop = HALF_PEL; sf->tpl_sf.search_method = FAST_BIGDIA; sf->tx_sf.tx_type_search.winner_mode_tx_type_pruning = 1; - sf->tx_sf.tx_type_search.fast_intra_tx_type_search = 1; - sf->tx_sf.tx_type_search.prune_2d_txfm_mode = TX_TYPE_PRUNE_3; + sf->tx_sf.tx_type_search.prune_2d_txfm_mode = TX_TYPE_PRUNE_2; sf->tx_sf.tx_type_search.prune_tx_type_est_rd = 1; sf->rd_sf.perform_coeff_opt = is_boosted_arf2_bwd_type ? 3 : 5; sf->rd_sf.perform_coeff_opt_based_on_satd = is_boosted_arf2_bwd_type ? 1 : 2; - sf->rd_sf.tx_domain_dist_thres_level = 2; + sf->rd_sf.tx_domain_dist_thres_level = 1; // TODO(any): Extend multi-winner mode processing support for inter frames sf->winner_mode_sf.multi_winner_mode_type = @@ -555,15 +539,10 @@ static void set_good_speed_features_framesize_independent( frame_is_intra_only(&cpi->common) ? MULTI_WINNER_MODE_FAST : MULTI_WINNER_MODE_OFF; - sf->lpf_sf.disable_lr_filter = 1; - sf->mv_sf.prune_mesh_search = 1; sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; sf->tpl_sf.prune_starting_mv = 3; - - sf->winner_mode_sf.dc_blk_pred_level = 1; - sf->winner_mode_sf.tx_size_search_level = USE_LARGESTALL; } if (speed >= 6) { @@ -663,6 +642,8 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->prune_split_ml_level = -2; // default pruning part_sf->prune_split_ml_level_inter = -1; #endif // CONFIG_ML_PART_SPLIT + part_sf->disable_ext_partitions = false; + part_sf->disable_uneven_4way_partitions = false; } static AVM_INLINE void init_mv_sf(MV_SPEED_FEATURES *mv_sf) { @@ -719,16 +700,12 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->skip_repeated_full_newmv = 0; inter_sf->inter_mode_rd_model_estimation = 0; inter_sf->prune_compound_using_single_ref = 0; - inter_sf->prune_compound_using_neighbors = 0; inter_sf->prune_comp_using_best_single_mode_ref = 0; - inter_sf->disable_onesided_comp = 0; inter_sf->prune_mode_search_simple_translation = 0; inter_sf->prune_comp_type_by_comp_avg = 0; inter_sf->disable_interinter_wedge_newmv_search = 0; inter_sf->enable_interinter_diffwtd_newmv_search = 0; - inter_sf->disable_smooth_interintra = 0; inter_sf->prune_motion_mode_level = 0; - inter_sf->disable_wedge_interintra_search = 0; inter_sf->fast_interintra_wedge_search = 0; inter_sf->prune_comp_type_by_model_rd = 0; inter_sf->perform_best_rd_based_gating_for_chroma = 0; @@ -768,7 +745,6 @@ static AVM_INLINE void init_tx_sf(TX_SPEED_FEATURES *tx_sf) { tx_sf->tx_type_search.prune_2d_txfm_mode = TX_TYPE_PRUNE_1; tx_sf->tx_type_search.use_skip_flag_prediction = 1; tx_sf->tx_type_search.use_reduced_intra_txset = 0; - tx_sf->tx_type_search.fast_intra_tx_type_search = 0; tx_sf->tx_type_search.fast_inter_tx_type_search = 0; tx_sf->tx_type_search.skip_tx_search = 0; tx_sf->tx_type_search.prune_tx_type_using_stats = 0; @@ -1054,9 +1030,6 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { cpi->common.seq_params.enable_masked_compound &= !sf->inter_sf.disable_masked_comp; - if (sf->inter_sf.disable_wedge_interintra_search) { - cpi->common.seq_params.seq_enabled_motion_modes &= ~(1 << INTERINTRA); - } if (sf->intra_sf.skip_intra_dip_search) { cpi->common.seq_params.enable_intra_dip = 0; } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 11989675e9..8ea2d293b4 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -146,7 +146,6 @@ enum { typedef struct { TX_TYPE_PRUNE_MODE prune_2d_txfm_mode; - int fast_intra_tx_type_search; int fast_inter_tx_type_search; // prune two least frequently chosen transforms for each intra mode @@ -170,10 +169,6 @@ typedef struct { // mode evaluation and disables tx type mode pruning for winner mode // processing. int winner_mode_tx_type_pruning; - // Speed feature to disable intra secondary transform - int skip_stx_search; - // Speed feature to disable cross chroma component transform - int skip_cctx_search; } TX_TYPE_SEARCH; enum { @@ -433,6 +428,9 @@ typedef struct PARTITION_SPEED_FEATURES { int prune_split_ml_level_inter; int prune_none_with_ml; #endif // CONFIG_ML_PART_SPLIT + + bool disable_ext_partitions; + bool disable_uneven_4way_partitions; } PARTITION_SPEED_FEATURES; typedef struct MV_SPEED_FEATURES { @@ -599,13 +597,6 @@ typedef struct INTER_MODE_SPEED_FEATURES { // the single reference modes, it is one of the two best performers. int prune_compound_using_single_ref; - // Skip extended compound mode using ref frames of above and left neighbor - // blocks. - // 0 : no pruning - // 1 : prune extended compound mode (less aggressiveness) - // 2 : prune extended compound mode (high aggressiveness) - int prune_compound_using_neighbors; - // Skip extended compound mode when ref frame corresponding to NEWMV does not // have NEWMV as single mode winner. // 0 : no pruning @@ -616,9 +607,6 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Based on previous ref_mv_idx search result, prune the following search. int prune_ref_mv_idx_search; - // Disable one sided compound modes. - int disable_onesided_comp; - // Prune/gate motion mode evaluation based on token based rd // during transform search for inter blocks // Values are 0 (not used) , 1 - 3 with progressively increasing @@ -631,9 +619,6 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Prune warpmv with mvd search using previous frame stats. int prune_warpmv_prob_thresh; - // Enable/disable interintra wedge search. - int disable_wedge_interintra_search; - // De-couple wedge and mode search during interintra RDO. int fast_interintra_wedge_search; @@ -653,9 +638,6 @@ typedef struct INTER_MODE_SPEED_FEATURES { // ~0.1 on the lowres test set, but ~15% slower computation. int enable_interinter_diffwtd_newmv_search; - // Enable/disable smooth inter-intra mode - int disable_smooth_interintra; - // Disable interinter_wedge int disable_interinter_wedge; diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 31d3c2b8fc..23e0a989c8 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -1804,14 +1804,10 @@ get_tx_mask(const AV2_COMP *cpi, MACROBLOCK *x, int plane, int block, if (cpi->sf.tx_sf.tx_type_search.prune_tx_type_using_stats) { // TODO(yunqing): adjust the thresholds. - static const int thresh_arr[2][FRAME_UPDATE_TYPES] = { - { 10, 15, 15, 10, 15, 15, 15, 0, 0 }, - { 10, 17, 17, 10, 17, 17, 17, 0, 0 } - }; - - const int thresh = - thresh_arr[cpi->sf.tx_sf.tx_type_search.prune_tx_type_using_stats - 1] - [update_type]; + static const int thresh_arr[FRAME_UPDATE_TYPES] = { 10, 17, 17, 10, 17, + 17, 17, 0, 0 }; + + const int thresh = thresh_arr[update_type]; uint16_t prune = 0; int max_prob = -1; int max_idx = 0; @@ -2315,7 +2311,6 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, xd->enable_ist = (is_inter_block(mbmi, xd->tree_type) ? cm->seq_params.enable_inter_ist : cm->seq_params.enable_ist) && - !cpi->sf.tx_sf.tx_type_search.skip_stx_search && !mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && !xd->lossless[mbmi->segment_id]; @@ -2648,8 +2643,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // Intra mode needs decoded pixels such that the next transform block // can use them for prediction. If cctx is enabled, this reconstruction // should be done later in search_cctx_type, when cctx type is chosen. - if (plane == AVM_PLANE_Y || !is_cctx_allowed(cm, xd) || - cpi->sf.tx_sf.tx_type_search.skip_cctx_search) { + if (plane == AVM_PLANE_Y || !is_cctx_allowed(cm, xd)) { recon_intra(cpi, x, plane, block, blk_row, blk_col, plane_bsize, tx_size, txb_ctx, skip_trellis, best_tx_type, 0, &rate_cost, best_eob); p->dqcoeff = orig_dqcoeff; @@ -4028,8 +4022,7 @@ int av2_txfm_uvrd(const AV2_COMP *const cpi, MACROBLOCK *x, RD_STATS *rd_stats, const int skip_trellis = 0; int is_cost_valid = 1; - if (is_cctx_allowed(&cpi->common, xd) && - !cpi->sf.tx_sf.tx_type_search.skip_cctx_search) { + if (is_cctx_allowed(&cpi->common, xd)) { RD_STATS this_rd_stats; int64_t chroma_ref_best_rd = ref_best_rd; if (cpi->sf.inter_sf.perform_best_rd_based_gating_for_chroma && is_inter && From 00e6f499e56dced73a42bbabc0914213b16d6643 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Tue, 7 Jul 2026 19:21:40 -0700 Subject: [PATCH 055/205] Move set_sb_size() to encoder dir (#5084) --- av2/common/av2_common_int.h | 9 --------- av2/common/common_data.h | 16 ---------------- av2/encoder/block.h | 16 ++++++++++++++++ av2/encoder/encoder_utils.h | 9 +++++++++ 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index e90a00f57b..c87601f852 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -5394,15 +5394,6 @@ static AVM_INLINE void av2_set_frame_sb_size(AV2_COMMON *cm, cm->mib_size_log2 = mi_size_wide_log2[sb_size]; } -static INLINE void set_sb_size(AV2_COMMON *cm, BLOCK_SIZE sb_size) { - SequenceHeader *const seq_params = &cm->seq_params; - seq_params->sb_size = sb_size; - seq_params->mib_size = mi_size_wide[sb_size]; - seq_params->mib_size_log2 = mi_size_wide_log2[sb_size]; - - av2_set_frame_sb_size(cm, sb_size); -} - // Sets the frame's lr specific fields in feature params depending on // which tools are enabled for the frame for the given plane. static INLINE void av2_set_lr_tools(uint8_t lr_tools_disable_mask, int plane, diff --git a/av2/common/common_data.h b/av2/common/common_data.h index cb96f419fb..5e3ecdb781 100644 --- a/av2/common/common_data.h +++ b/av2/common/common_data.h @@ -802,22 +802,6 @@ static const int av2_size_class[TX_SIZES_ALL] = { 0, 1, 2, 3, 3, 0, 0, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; -static AVM_INLINE bool is_bsize_geq(BLOCK_SIZE bsize1, BLOCK_SIZE bsize2) { - if (bsize1 == BLOCK_INVALID || bsize2 == BLOCK_INVALID) { - return false; - } - return block_size_wide[bsize1] >= block_size_wide[bsize2] && - block_size_high[bsize1] >= block_size_high[bsize2]; -} - -static AVM_INLINE bool is_bsize_gt(BLOCK_SIZE bsize1, BLOCK_SIZE bsize2) { - if (bsize1 == BLOCK_INVALID || bsize2 == BLOCK_INVALID) { - return false; - } - return block_size_wide[bsize1] > block_size_wide[bsize2] && - block_size_high[bsize1] > block_size_high[bsize2]; -} - static const int fwd_tx_shift[TX_SIZES_ALL][2] = { { 1, 10 }, // TX_4X4, // 4x4 transform { 2, 10 }, // TX_8X8, // 8x8 transform diff --git a/av2/encoder/block.h b/av2/encoder/block.h index cf9bc195d7..30752e4f39 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -1709,6 +1709,22 @@ static INLINE int is_rect_tx_allowed(const MACROBLOCKD *xd, !xd->lossless[mbmi->segment_id]; } +static AVM_INLINE bool is_bsize_geq(BLOCK_SIZE bsize1, BLOCK_SIZE bsize2) { + if (bsize1 == BLOCK_INVALID || bsize2 == BLOCK_INVALID) { + return false; + } + return block_size_wide[bsize1] >= block_size_wide[bsize2] && + block_size_high[bsize1] >= block_size_high[bsize2]; +} + +static AVM_INLINE bool is_bsize_gt(BLOCK_SIZE bsize1, BLOCK_SIZE bsize2) { + if (bsize1 == BLOCK_INVALID || bsize2 == BLOCK_INVALID) { + return false; + } + return block_size_wide[bsize1] > block_size_wide[bsize2] && + block_size_high[bsize1] > block_size_high[bsize2]; +} + static INLINE void set_blk_skip(uint8_t txb_skip[], int blk_idx, int skip) { if (skip) txb_skip[blk_idx] |= 1UL; diff --git a/av2/encoder/encoder_utils.h b/av2/encoder/encoder_utils.h index d6012ba3e4..5878a1909a 100644 --- a/av2/encoder/encoder_utils.h +++ b/av2/encoder/encoder_utils.h @@ -69,6 +69,15 @@ static AVM_INLINE void set_mb_mi(CommonModeInfoParams *mi_params, int width, mi_size_high[mi_params->mi_alloc_bsize]); } +static INLINE void set_sb_size(AV2_COMMON *cm, BLOCK_SIZE sb_size) { + SequenceHeader *const seq_params = &cm->seq_params; + seq_params->sb_size = sb_size; + seq_params->mib_size = mi_size_wide[sb_size]; + seq_params->mib_size_log2 = mi_size_wide_log2[sb_size]; + + av2_set_frame_sb_size(cm, sb_size); +} + static AVM_INLINE void enc_free_mi(CommonModeInfoParams *mi_params) { avm_free(mi_params->mi_alloc); mi_params->mi_alloc = NULL; From 7712b857b05280ca55d07f6fdb989c54b55c13de Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Thu, 9 Jul 2026 09:35:51 -0700 Subject: [PATCH 056/205] Move get_partition() to enc dir (#5091) These functions are only needed by the encoder. --- av2/common/av2_common_int.h | 102 --------------------------------- av2/encoder/partition_search.c | 1 + av2/encoder/partition_search.h | 82 ++++++++++++++++++++++++++ av2/encoder/tx_search.h | 19 ++++++ 4 files changed, 102 insertions(+), 102 deletions(-) diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index c87601f852..ba6514b682 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -3207,14 +3207,6 @@ static INLINE int frame_is_intra_only(const AV2_COMMON *const cm) { cm->current_frame.frame_type == INTRA_ONLY_FRAME; } -// Check whether this is chroma component of an intra region in inter frame -static INLINE int is_inter_sdp_chroma(const AV2_COMMON *const cm, - REGION_TYPE cur_region_type, - TREE_TYPE cur_tree_type) { - return !frame_is_intra_only(cm) && cur_region_type == INTRA_REGION && - cur_tree_type == CHROMA_PART; -} - static INLINE int frame_is_sframe(const AV2_COMMON *cm) { return cm->current_frame.frame_type == S_FRAME; } @@ -5178,26 +5170,6 @@ static INLINE TX_SIZE get_tx_partition_one_size(TX_PARTITION_TYPE partition, return get_tx_size(sub_txw, sub_txh); } -/* -Gets the type to signal for the 4 way split tree in the tx partition -type signaling. -*/ -static INLINE int get_split4_partition(TX_PARTITION_TYPE partition) { - switch (partition) { - case TX_PARTITION_NONE: - case TX_PARTITION_SPLIT: - case TX_PARTITION_VERT: - case TX_PARTITION_HORZ: - case TX_PARTITION_VERT4: - case TX_PARTITION_HORZ4: - case TX_PARTITION_HORZ5: - case TX_PARTITION_VERT5: return partition; - default: assert(0); - } - assert(0); - return 0; -} - /* Gets tx type group table if TX partition supports both vertical and horizontal partitions. @@ -5308,80 +5280,6 @@ static INLINE int use_tx_partition(TX_PARTITION_TYPE partition, return 0; } -// Compute the next partition in the direction of the sb_type stored in the mi -// array, starting with bsize. -static INLINE PARTITION_TYPE get_partition(const AV2_COMMON *const cm, - const int plane_type, int mi_row, - int mi_col, BLOCK_SIZE bsize) { - const CommonModeInfoParams *const mi_params = &cm->mi_params; - if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) - return PARTITION_INVALID; - - const int offset = mi_row * mi_params->mi_stride + mi_col; - MB_MODE_INFO **mi = mi_params->mi_grid_base + offset; - const BLOCK_SIZE subsize = mi[0]->sb_type[plane_type]; - - assert(bsize < BLOCK_SIZES_ALL); - - if (subsize == bsize) return PARTITION_NONE; - - const int bhigh = mi_size_high[bsize]; - const int bwide = mi_size_wide[bsize]; - const int sshigh = mi_size_high[subsize]; - const int sswide = mi_size_wide[subsize]; - - if (bsize > BLOCK_8X8 && mi_row + bwide / 2 < mi_params->mi_rows && - mi_col + bhigh / 2 < mi_params->mi_cols) { - // In this case, the block might be using an extended partition - // type. - const MB_MODE_INFO *const mbmi_right = mi[bwide / 2]; - const MB_MODE_INFO *const mbmi_below = mi[bhigh / 2 * mi_params->mi_stride]; - - if (sswide == bwide) { - // Smaller height but same width. Is PARTITION_HORZ_4, PARTITION_HORZ or - // PARTITION_HORZ_B. To distinguish the latter two, check if the lower - // half was split. - if (sshigh * 4 == bhigh) { - return PARTITION_HORZ_4A; - } - if (mbmi_below->sb_type[plane_type] == subsize) return PARTITION_HORZ; - } else if (sshigh == bhigh) { - // Smaller width but same height. Is PARTITION_VERT_4, PARTITION_VERT or - // PARTITION_VERT_B. To distinguish the latter two, check if the right - // half was split. - if (sswide * 4 == bwide) { - return PARTITION_VERT_4A; - } - if (mbmi_right->sb_type[plane_type] == subsize) return PARTITION_VERT; - - } else { - // Smaller width and smaller height. Might be PARTITION_SPLIT or could be - // PARTITION_HORZ_A or PARTITION_VERT_A. If subsize isn't halved in both - // dimensions, we immediately know this is a split (which will recurse to - // get to subsize). Otherwise look down and to the right. With - // PARTITION_VERT_A, the right block will have height bhigh; with - // PARTITION_HORZ_A, the lower block with have width bwide. Otherwise - // it's PARTITION_SPLIT. - if (sswide * 2 != bwide || sshigh * 2 != bhigh) { - if (mi_size_wide[mbmi_below->sb_type[plane_type]] < bwide && - mi_size_high[mbmi_right->sb_type[plane_type]] < bhigh) - return PARTITION_SPLIT; - } - return PARTITION_SPLIT; - } - } - const int vert_split = sswide < bwide; - const int horz_split = sshigh < bhigh; - const int split_idx = (vert_split << 1) | horz_split; - assert(split_idx != 0); - - static const PARTITION_TYPE base_partitions[4] = { - PARTITION_INVALID, PARTITION_HORZ, PARTITION_VERT, PARTITION_SPLIT - }; - - return base_partitions[split_idx]; -} - static AVM_INLINE void av2_set_frame_sb_size(AV2_COMMON *cm, BLOCK_SIZE sb_size) { // BLOCK_256X256 gives no benefits in all intra encoding, so downsize the diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index d856f45625..201bb34cf9 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -34,6 +34,7 @@ #include "av2/encoder/partition_strategy.h" #include "av2/encoder/reconinter_enc.h" #include "av2/encoder/tokenize.h" +#include "av2/encoder/tx_search.h" #include "av2/common/reconinter.h" #include "av2/encoder/erp_ml.h" diff --git a/av2/encoder/partition_search.h b/av2/encoder/partition_search.h index e7ff3079fc..944c4dc9e7 100644 --- a/av2/encoder/partition_search.h +++ b/av2/encoder/partition_search.h @@ -55,4 +55,86 @@ void setup_block_rdmult(const AV2_COMP *const cpi, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, AQ_MODE aq_mode, MB_MODE_INFO *mbmi); +// Check whether this is chroma component of an intra region in inter frame +static INLINE int is_inter_sdp_chroma(const AV2_COMMON *const cm, + REGION_TYPE cur_region_type, + TREE_TYPE cur_tree_type) { + return !frame_is_intra_only(cm) && cur_region_type == INTRA_REGION && + cur_tree_type == CHROMA_PART; +} + +// Compute the next partition in the direction of the sb_type stored in the mi +// array, starting with bsize. +static INLINE PARTITION_TYPE get_partition(const AV2_COMMON *const cm, + const int plane_type, int mi_row, + int mi_col, BLOCK_SIZE bsize) { + const CommonModeInfoParams *const mi_params = &cm->mi_params; + if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) + return PARTITION_INVALID; + + const int offset = mi_row * mi_params->mi_stride + mi_col; + MB_MODE_INFO **mi = mi_params->mi_grid_base + offset; + const BLOCK_SIZE subsize = mi[0]->sb_type[plane_type]; + + assert(bsize < BLOCK_SIZES_ALL); + + if (subsize == bsize) return PARTITION_NONE; + + const int bhigh = mi_size_high[bsize]; + const int bwide = mi_size_wide[bsize]; + const int sshigh = mi_size_high[subsize]; + const int sswide = mi_size_wide[subsize]; + + if (bsize > BLOCK_8X8 && mi_row + bwide / 2 < mi_params->mi_rows && + mi_col + bhigh / 2 < mi_params->mi_cols) { + // In this case, the block might be using an extended partition + // type. + const MB_MODE_INFO *const mbmi_right = mi[bwide / 2]; + const MB_MODE_INFO *const mbmi_below = mi[bhigh / 2 * mi_params->mi_stride]; + + if (sswide == bwide) { + // Smaller height but same width. Is PARTITION_HORZ_4, PARTITION_HORZ or + // PARTITION_HORZ_B. To distinguish the latter two, check if the lower + // half was split. + if (sshigh * 4 == bhigh) { + return PARTITION_HORZ_4A; + } + if (mbmi_below->sb_type[plane_type] == subsize) return PARTITION_HORZ; + } else if (sshigh == bhigh) { + // Smaller width but same height. Is PARTITION_VERT_4, PARTITION_VERT or + // PARTITION_VERT_B. To distinguish the latter two, check if the right + // half was split. + if (sswide * 4 == bwide) { + return PARTITION_VERT_4A; + } + if (mbmi_right->sb_type[plane_type] == subsize) return PARTITION_VERT; + + } else { + // Smaller width and smaller height. Might be PARTITION_SPLIT or could be + // PARTITION_HORZ_A or PARTITION_VERT_A. If subsize isn't halved in both + // dimensions, we immediately know this is a split (which will recurse to + // get to subsize). Otherwise look down and to the right. With + // PARTITION_VERT_A, the right block will have height bhigh; with + // PARTITION_HORZ_A, the lower block with have width bwide. Otherwise + // it's PARTITION_SPLIT. + if (sswide * 2 != bwide || sshigh * 2 != bhigh) { + if (mi_size_wide[mbmi_below->sb_type[plane_type]] < bwide && + mi_size_high[mbmi_right->sb_type[plane_type]] < bhigh) + return PARTITION_SPLIT; + } + return PARTITION_SPLIT; + } + } + const int vert_split = sswide < bwide; + const int horz_split = sshigh < bhigh; + const int split_idx = (vert_split << 1) | horz_split; + assert(split_idx != 0); + + static const PARTITION_TYPE base_partitions[4] = { + PARTITION_INVALID, PARTITION_HORZ, PARTITION_VERT, PARTITION_SPLIT + }; + + return base_partitions[split_idx]; +} + #endif // AVM_AV2_ENCODER_PARTITION_SEARCH_H_ diff --git a/av2/encoder/tx_search.h b/av2/encoder/tx_search.h index 27c750f798..1397405441 100644 --- a/av2/encoder/tx_search.h +++ b/av2/encoder/tx_search.h @@ -33,6 +33,25 @@ enum { FTXS_USE_TRANSFORM_DOMAIN = 1 << 2 } UENUM1BYTE(FAST_TX_SEARCH_MODE); +/* +Gets the type to signal for the 4 way split tree in the tx partition +type signaling. +*/ +static INLINE int get_split4_partition(TX_PARTITION_TYPE partition) { + switch (partition) { + case TX_PARTITION_NONE: + case TX_PARTITION_SPLIT: + case TX_PARTITION_VERT: + case TX_PARTITION_HORZ: + case TX_PARTITION_VERT4: + case TX_PARTITION_HORZ4: + case TX_PARTITION_HORZ5: + case TX_PARTITION_VERT5: return partition; + default: assert(0); + } + return 0; +} + static AVM_INLINE int inter_tx_partition_cost(const MACROBLOCK *const x, TX_PARTITION_TYPE partition, BLOCK_SIZE bsize, From a78da9eabf7dbacf6c2d90101a5d71b4f5b00800 Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Fri, 10 Jul 2026 20:26:51 -0700 Subject: [PATCH 057/205] Partitioning bugfix (#5095) Only assign pc_tree->partitioning = partition when last_part_rdc represents a valid RDO search result. Guard the do_recon block so reconstruction is only attempted on a valid partition. Fixes #5092 Co-authored-by: Urvang Joshi --- av2/encoder/partition_search.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 201bb34cf9..1cc4754703 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2781,7 +2781,13 @@ void av2_rd_use_partition(AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, // If last_part is better set the partitioning to that. const int plane_type = (xd->tree_type == CHROMA_PART); mib[0]->sb_type[plane_type] = bsize; - if (bsize >= BLOCK_8X8) pc_tree->partitioning = partition; + if (bsize >= BLOCK_8X8) { + if (last_part_rdc.rate < INT_MAX && last_part_rdc.dist < INT64_MAX) { + pc_tree->partitioning = partition; + } else { + pc_tree->partitioning = PARTITION_NONE; + } + } av2_restore_context(cm, x, &x_ctx, mi_row, mi_col, bsize, num_planes); @@ -2790,7 +2796,8 @@ void av2_rd_use_partition(AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, if (bsize == cm->sb_size) assert(last_part_rdc.rate < INT_MAX && last_part_rdc.dist < INT64_MAX); - if (do_recon) { + if (do_recon && last_part_rdc.rate < INT_MAX && + last_part_rdc.dist < INT64_MAX) { if (bsize == cm->sb_size) { // NOTE: To get estimate for rate due to the tokens, use: // int rate_coeffs = 0; From 6eb10093f2f47018d5d6d0242aa2a771e641044a Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Tue, 14 Jul 2026 15:32:06 -0700 Subject: [PATCH 058/205] Inter mode search: restructure loop, prune_motion_mode (#5098) Drive the main inter-mode loop in av2_rd_pick_inter_mode_sb from a static ref-frame-centric LUT and revise the motion-mode pruning heuristic. STATS_CHANGED Anchor: commit 165345b Speed 1 (cpu-used=1): FG16 CTC (33 frames, class A1 and A2, RA) Speed 0 (cpu-used=0): VCWG CTC (130 frames, all classes, RA and LD). Speed 4 (cpu-used=4): FG16 CTC (33 frames, class A1 and A2, RA) ``` 1) This change in isolation (loop restructure + motion-mode pruning). Speed 1 (cpu-used=1), RA: +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.18 | -0.03 | -0.20 | 0.14 | 95 | 101 | | A2 | 0.18 | 0.67 | 0.35 | 0.20 | 93 | 100 | | Avg w/o B2 | 0.18 | 0.47 | 0.19 | 0.18 | 94 | 100 | +------------+------+-------+-------+------+------+------+ Speed 0 (cpu-used=0), RA: +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.01 | 0.05 | -0.05 | -0.01 | 100 | 101 | | A2 | 0.01 | 0.02 | 0.06 | 0.01 | 100 | 100 | | A3 | 0.00 | 0.01 | 0.10 | 0.01 | 100 | 100 | | A4 | -0.02 | 0.01 | -0.51 | -0.03 | 99 | 100 | | A5 | -0.01 | -0.50 | 0.05 | -0.03 | 101 | 100 | | B1 | 0.05 | 0.18 | -0.04 | 0.04 | 100 | 101 | | B2 | 0.36 | 0.36 | 0.32 | 0.36 | 101 | 108 | | Avg w/o B2 | 0.01 | 0.01 | -0.03 | 0.00 | 100 | 100 | +------------+-------+-------+-------+-------+------+------+ Speed 0 (cpu-used=0), LD: +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A2 | 0.02 | -0.01 | -0.14 | 0.01 | 100 | 100 | | A3 | -0.03 | 0.01 | 0.63 | -0.01 | 101 | 101 | | A4 | -0.00 | -0.26 | -1.13 | -0.05 | 100 | 100 | | A5 | 0.16 | 0.60 | 0.05 | 0.16 | 102 | 103 | | B1 | 0.02 | -0.07 | -0.03 | 0.01 | 101 | 100 | | B2 | 0.36 | 0.34 | 0.61 | 0.38 | 101 | 102 | | Avg w/o B2 | 0.02 | 0.00 | -0.10 | 0.01 | 101 | 100 | +------------+-------+-------+-------+-------+------+------+ 2) For reference, the two follow-up commits (single-ref to compound pruning, and per-ref RD-based pruning for single-ref NEWMV / WARP_NEWMV) combined, Speed 1 (cpu-used=1), RA: +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.20 | -0.08 | -0.06 | 0.16 | 83 | 102 | | A2 | 0.22 | 0.53 | 0.15 | 0.23 | 84 | 101 | | Avg w/o B2 | 0.22 | 0.35 | 0.09 | 0.21 | 84 | 101 | +------------+------+-------+-------+------+------+------+ 3) Overall, motion-mode pruning stacked on top of (2), Speed 1 (cpu-used=1), RA: +------------+------+------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+------+-------+------+------+------+ | A1 | 0.31 | 0.29 | -0.20 | 0.28 | 80 | 101 | | A2 | 0.32 | 0.90 | 0.58 | 0.35 | 80 | 100 | | Avg w/o B2 | 0.32 | 0.72 | 0.35 | 0.33 | 80 | 100 | +------------+------+------+-------+------+------+------+ 4) Overall, motion-mode pruning, single-ref to compound pruning, and per-ref RD-based pruning for single-ref NEWMV / WARP_NEWMV combined, Speed 4 (cpu-used=4), RA: +------------+------+------+------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+------+------+------+------+------+ | A1 | 0.27 | 0.17 | 0.00 | 0.24 | 82 | 102 | | A2 | 0.42 | 0.63 | 0.15 | 0.42 | 81 | 102 | | Avg w/o B2 | 0.38 | 0.49 | 0.11 | 0.36 | 81 | 102 | +------------+------+------+------+------+------+------+ ``` --- av2/encoder/rd.h | 14 +- av2/encoder/rdopt.c | 733 ++++++++++++++++++++--------------- av2/encoder/rdopt.h | 2 +- av2/encoder/speed_features.c | 3 +- av2/encoder/speed_features.h | 7 + 5 files changed, 439 insertions(+), 320 deletions(-) diff --git a/av2/encoder/rd.h b/av2/encoder/rd.h index 933fca43e0..ebf902e9bf 100644 --- a/av2/encoder/rd.h +++ b/av2/encoder/rd.h @@ -92,9 +92,6 @@ typedef struct RD_OPT { } RD_OPT; static INLINE void av2_init_rd_stats(RD_STATS *rd_stats) { -#if CONFIG_RD_DEBUG - int plane; -#endif rd_stats->rate = 0; rd_stats->dist = 0; rd_stats->rdcost = 0; @@ -104,13 +101,12 @@ static INLINE void av2_init_rd_stats(RD_STATS *rd_stats) { #if CONFIG_RD_DEBUG // This may run into problems when monochrome video is // encoded, as there will only be 1 plane - for (plane = 0; plane < MAX_MB_PLANE; ++plane) { + for (int plane = 0; plane < MAX_MB_PLANE; ++plane) { rd_stats->txb_coeff_cost[plane] = 0; - { - int r, c; - for (r = 0; r < TXB_COEFF_COST_MAP_SIZE; ++r) - for (c = 0; c < TXB_COEFF_COST_MAP_SIZE; ++c) - rd_stats->txb_coeff_cost_map[plane][r][c] = 0; + for (int r = 0; r < TXB_COEFF_COST_MAP_SIZE; ++r) { + for (int c = 0; c < TXB_COEFF_COST_MAP_SIZE; ++c) { + rd_stats->txb_coeff_cost_map[plane][r][c] = 0; + } } } #endif diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index f1655bedc6..ede65e2e9f 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -2080,28 +2080,84 @@ static int av2_adjust_mvs_for_derive_sign(const AV2_COMP *const cpi, return (best_model_rd != INT64_MAX); } -// Reject this motion mode if modelrd is larder that the stored model rd values +// Returns 1 for the simplest inter-mode setting: SIMPLE_TRANSLATION +// (or a warp mode with no side-info tweaks), top-ranked ref frame, +// first DRL index, and no CWP/BAWP/JMVD/RefineMV modifiers. This +// setting is always fully evaluated (never pruned by the model-RD +// heuristic) so the search keeps a stable point to compare against. +static int motion_mode_is_prune_exempt(const AV2_COMMON *const cm, + const MACROBLOCKD *const xd, + BLOCK_SIZE bsize) { + const MB_MODE_INFO *const mbmi = xd->mi[0]; + + // Motion mode: only SIMPLE_TRANSLATION, or a warp mode (WARP_CAUSAL / + // WARP_DELTA / WARP_EXTEND) with all warp side-info knobs at their + // default (no warp+inter-intra combo, first warp ref candidate, no + // warp MVD, first warp precision). + if (mbmi->motion_mode != SIMPLE_TRANSLATION) { + if (!is_warp_mode(mbmi->motion_mode)) return 0; + if (mbmi->warp_inter_intra != 0 || mbmi->warp_ref_idx != 0 || + mbmi->warpmv_with_mvd_flag != 0 || mbmi->warp_precision_idx != 0) + return 0; + } + + // Reference frames: top ranked ref for single, (0, 1) pair for compound. + if (has_second_ref(mbmi)) { + if (mbmi->ref_frame[0] != 0 || mbmi->ref_frame[1] != 1) return 0; + } else if (mbmi->ref_frame[0] != 0) { + return 0; + } + + // DRL index: first candidate, for both lists when a separate DRL is used. + if (mbmi->ref_mv_idx[0] != 0) return 0; + if (has_second_drl(mbmi) && mbmi->ref_mv_idx[1] != 0) return 0; + + // CWP: equal weighting, when CWP is allowed for this mode. + if (is_cwp_allowed(mbmi) && mbmi->cwp_idx != CWP_EQUAL) return 0; + + // BAWP: off or basic on (exclude explicit-scale variants), when allowed. + if (av2_allow_bawp(cm, mbmi, xd->mi_row, xd->mi_col) && + mbmi->bawp_flag[0] > 1) + return 0; + + // JMVD scale index: no scaling, when joint-MVD coding is used. + if (is_joint_mvd_coding_mode(mbmi->mode) && mbmi->jmvd_scale_mode != 0) + return 0; + + // RefineMV: disabled, when refinemv is allowed. + if (is_refinemv_allowed(cm, mbmi, bsize) && mbmi->refinemv_flag != 0) + return 0; + + return 1; +} + +// Reject this motion mode if modelrd is larger than the stored model rd values. +// Maintains a sorted list of the best model rd values seen so far. // Return 1 means reject this mode // Return 0 means compute full RD static int prune_motion_mode(int64_t this_model_rd, - int64_t top_motion_mode_model_rd[]) { - const double thresh_top = 1.00; + int64_t top_motion_mode_model_rd[], + const AV2_COMMON *const cm, + const MACROBLOCKD *const xd, BLOCK_SIZE bsize) { + // top_motion_mode_model_rd[] holds the smallest model RDs seen so far in + // ascending order, padded with the INT64_MAX sentinel. Insert this_model_rd + // if it ranks among them. for (int i = 0; i < TOP_MOTION_MODE_MODEL_COUNT; i++) { if (this_model_rd < top_motion_mode_model_rd[i]) { for (int j = TOP_MOTION_MODE_MODEL_COUNT - 1; j > i; j--) { top_motion_mode_model_rd[j] = top_motion_mode_model_rd[j - 1]; } top_motion_mode_model_rd[i] = this_model_rd; - break; + return 0; // Ranked among the best -> compute full RD. } } - if (top_motion_mode_model_rd[TOP_MOTION_MODE_MODEL_COUNT - 1] != INT64_MAX && - this_model_rd > - thresh_top * - top_motion_mode_model_rd[TOP_MOTION_MODE_MODEL_COUNT - 1]) - return 1; - - return 0; + // Never prune the prune-exempt setting, even when its model RD does not rank. + if (motion_mode_is_prune_exempt(cm, xd, bsize)) return 0; + // Did not rank: this_model_rd is >= every kept value. Prune only when it + // strictly exceeds the largest kept RD. An unfilled pool keeps the INT64_MAX + // sentinel in the last slot, which can never be exceeded, so it returns 0. + return this_model_rd > + top_motion_mode_model_rd[TOP_MOTION_MODE_MODEL_COUNT - 1]; } // Handle SIMPLE_TRANSLATION motion mode: adjust MVD sign if needed. @@ -2802,7 +2858,8 @@ static AVM_INLINE int evaluate_motion_mode_trial( NULL, &curr_sse, NULL, NULL, NULL); int64_t est_rd = RDCOST(x->rdmult, rd_stats->rate + est_residue_cost, est_dist); - if (prune_motion_mode(est_rd, top_motion_mode_model_rd)) return -1; + if (prune_motion_mode(est_rd, top_motion_mode_model_rd, cm, xd, bsize)) + return -1; } // Do transform search @@ -7123,8 +7180,6 @@ static AVM_INLINE void init_inter_mode_search_state( static bool mask_says_skip(const mode_skip_mask_t *mode_skip_mask, const MV_REFERENCE_FRAME *ref_frame, const PREDICTION_MODE this_mode) { - if (is_tip_ref_frame(ref_frame[0])) return false; - if (mode_skip_mask->pred_modes[COMPACT_INDEX0_NRS(ref_frame[0])] & ((int64_t)1 << this_mode)) { return true; @@ -7134,33 +7189,6 @@ static bool mask_says_skip(const mode_skip_mask_t *mode_skip_mask, [COMPACT_INDEX0_NRS(ref_frame[1]) + 1]; } -static int inter_mode_compatible_skip(const AV2_COMP *cpi, const MACROBLOCK *x, - BLOCK_SIZE bsize, - PREDICTION_MODE curr_mode, - const MV_REFERENCE_FRAME *ref_frames) { - const int comp_pred = is_inter_ref_frame(ref_frames[1]); - if (comp_pred) { - if (!is_comp_ref_allowed(bsize)) return 1; - if (!(cpi->common.ref_frame_flags & (1 << ref_frames[1]))) return 1; - - const AV2_COMMON *const cm = &cpi->common; - if (frame_is_intra_only(cm)) return 1; - - const CurrentFrame *const current_frame = &cm->current_frame; - if (current_frame->reference_mode == SINGLE_REFERENCE) return 1; - - (void)x; - } - - if (is_inter_ref_frame(ref_frames[0]) && ref_frames[1] == INTRA_FRAME) { - // Mode must be compatible - if (!is_interintra_allowed_bsize(bsize)) return 1; - if (!is_interintra_allowed_mode(curr_mode)) return 1; - } - - return 0; -} - static uint64_t fetch_picked_ref_frames_mask(const MACROBLOCK *const x, BLOCK_SIZE bsize, int mib_size) { const int sb_size_mask = mib_size - 1; @@ -7379,6 +7407,7 @@ static INLINE void init_mbmi(MB_MODE_INFO *mbmi, PREDICTION_MODE curr_mode, } set_default_interp_filters(mbmi, cm, xd, cm->features.interp_filter); mbmi->use_intrabc[xd->tree_type == CHROMA_PART] = 0; + mbmi->use_intrabc[xd->tree_type != CHROMA_PART] = 0; mbmi->morph_pred = 0; mbmi->local_rest_type = 1; mbmi->local_ccso_blk_flag = 1; @@ -7398,6 +7427,7 @@ static INLINE void init_mbmi(MB_MODE_INFO *mbmi, PREDICTION_MODE curr_mode, mbmi->bawp_flag[0] = 0; mbmi->bawp_flag[1] = 0; mbmi->jmvd_scale_mode = 0; + mbmi->interinter_comp.type = COMPOUND_AVERAGE; } static AVM_INLINE void collect_single_states(const AV2_COMMON *const cm, @@ -7865,8 +7895,8 @@ typedef struct { } InterModeSFArgs; /*!\endcond */ -static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, const BLOCK_SIZE bsize, - int64_t *ref_frame_rd, PREDICTION_MODE this_mode, +static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, int64_t *ref_frame_rd, + PREDICTION_MODE this_mode, const MV_REFERENCE_FRAME *ref_frames, InterModeSFArgs *args) { const SPEED_FEATURES *const sf = &cpi->sf; @@ -7875,18 +7905,7 @@ static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, const BLOCK_SIZE bsize, const MV_REFERENCE_FRAME second_ref_frame = ref_frames[1]; const int comp_pred = is_inter_ref_frame(second_ref_frame); - if (is_tip_ref_frame(ref_frame) && - cpi->common.features.tip_frame_mode == TIP_FRAME_DISABLED) { - return 1; - } else if (is_tip_ref_frame(ref_frame)) { - return 0; - } - - // Check if this mode should be skipped because it is incompatible with the - // current frame - if (inter_mode_compatible_skip(cpi, x, bsize, this_mode, ref_frames)) - return 1; - + if (is_tip_ref_frame(ref_frame)) return 0; if (this_mode == WARPMV) return 0; const int ret = inter_mode_search_order_independent_skip( @@ -7913,23 +7932,18 @@ static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, const BLOCK_SIZE bsize, if (args->search_state->best_rd < mode_threshold) return 1; + if (!comp_pred) return 0; + // Skip this compound mode based on the RD results from the single // prediction modes if (sf->inter_sf.prune_comp_search_by_single_result > 0 && - this_mode < NEAR_NEARMV_OPTFLOW && comp_pred && - !has_second_drl(xd->mi[0])) { + this_mode < NEAR_NEARMV_OPTFLOW && !has_second_drl(xd->mi[0])) { if (compound_skip_by_single_states(cpi, args->search_state, this_mode, ref_frame, second_ref_frame, x)) return 1; } - // Speed features to prune out INTRA frames - if (ref_frame == INTRA_FRAME) { - // Intra modes will be handled in another loop later - return 1; - } - - if (sf->inter_sf.prune_compound_using_single_ref && comp_pred) { + if (sf->inter_sf.prune_compound_using_single_ref) { // After we done with single reference modes, find the 2nd best RD // for a reference frame. Only search compound modes that have a reference // frame at least as good as 110% the best one. @@ -7945,7 +7959,7 @@ static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, const BLOCK_SIZE bsize, return 1; } - if (sf->inter_sf.prune_comp_using_best_single_mode_ref && comp_pred) { + if (sf->inter_sf.prune_comp_using_best_single_mode_ref) { if (skip_compound_using_best_single_mode_ref( this_mode, ref_frames, args->search_state->best_single_mode, sf->inter_sf.prune_comp_using_best_single_mode_ref)) @@ -8152,20 +8166,6 @@ static void handle_winner_cand( } } -static INLINE int is_tip_mode(PREDICTION_MODE mode) { - return (mode == NEARMV || mode == NEWMV); -} - -static INLINE int is_compound_mode_disallowed(PREDICTION_MODE mode, - int ref_frame0, int ref_frame1) { - if (ref_frame0 == ref_frame1 && - (mode == NEW_NEARMV || mode == NEW_NEARMV_OPTFLOW)) { - return 1; - } - - return 0; -} - // Initialize the table that stores best RD Costs of NONE transform partition static INLINE void init_top_tx_part_rd_for_inter_modes( MACROBLOCK *const x, bool prune_inter_tx_part_rd_eval) { @@ -8360,6 +8360,127 @@ static void av2_evaluate_intra_modes_in_inter_frame( } } +/*!\cond */ +// (mode, rf0, rf1) tuple describing one entry of the ref-frame-centric +// evaluation order. rf1 == NONE_FRAME marks a single-reference entry; +// rf0 == TIP_FRAME marks a TIP entry; rf0 == rf1 marks a same-ref compound +// entry. +typedef struct { + PREDICTION_MODE mode; + MV_REFERENCE_FRAME rf0; + MV_REFERENCE_FRAME rf1; +} MODE_REF_TUPLE; +/*!\endcond */ + +// Pre-computed (mode, rf0, rf1) evaluation order used by +// av2_rd_pick_inter_mode_sb. +// +// Traversal: +// 1. TIP entries: TIP/NEARMV, TIP/NEWMV. +// 2. For max_ref = 0..INTER_REFS_PER_FRAME-1 (= 0..6): +// a. All single inter modes with (rf0=max_ref, rf1=NONE_FRAME). +// b. All compound inter modes with (rf0, rf1=max_ref) for +// rf0 in [0, min(max_ref, RANKED_REF0_TO_PRUNE)). +// RANKED_REF0_TO_PRUNE = 3, so rf0 ∈ {0, 1, 2} for max_ref >= 3. +// c. Same-ref compound modes (rf0=max_ref, rf1=max_ref) only when +// max_ref < num_same_ref_compound (= 2, so max_ref ∈ {0, 1}). +// Restricted to modes that permit same-ref compound: +// NEAR_NEARMV, NEAR_NEWMV, GLOBAL_GLOBALMV, NEW_NEWMV. +// +// Frame-level feasibility checks (tip_allowed, comp_ref_allowed, opfl, +// joint MVD, BRU, ref_frame_flags, warpmv, global_motion, etc.) still +// apply at the use site via existing skip/continue logic. +// clang-format off +#define MODE_REF_SINGLE_GROUP(rf) \ + { NEARMV, (rf), NONE_FRAME }, \ + { GLOBALMV, (rf), NONE_FRAME }, \ + { NEWMV, (rf), NONE_FRAME }, \ + { WARPMV, (rf), NONE_FRAME }, \ + { WARP_NEWMV, (rf), NONE_FRAME } + +#define MODE_REF_COMPOUND_GROUP(rf0, rf1) \ + { NEAR_NEARMV, (rf0), (rf1) }, \ + { NEAR_NEWMV, (rf0), (rf1) }, \ + { NEW_NEARMV, (rf0), (rf1) }, \ + { GLOBAL_GLOBALMV, (rf0), (rf1) }, \ + { NEW_NEWMV, (rf0), (rf1) }, \ + { JOINT_NEWMV, (rf0), (rf1) }, \ + { NEAR_NEARMV_OPTFLOW, (rf0), (rf1) }, \ + { NEAR_NEWMV_OPTFLOW, (rf0), (rf1) }, \ + { NEW_NEARMV_OPTFLOW, (rf0), (rf1) }, \ + { NEW_NEWMV_OPTFLOW, (rf0), (rf1) }, \ + { JOINT_NEWMV_OPTFLOW, (rf0), (rf1) } + +#define MODE_REF_SAME_REF_GROUP(rf) \ + { NEAR_NEARMV, (rf), (rf) }, \ + { NEAR_NEWMV, (rf), (rf) }, \ + { GLOBAL_GLOBALMV, (rf), (rf) }, \ + { NEW_NEWMV, (rf), (rf) } + +#define MODE_REF_TIP_GROUP \ + { NEARMV, TIP_FRAME, NONE_FRAME }, \ + { NEWMV, TIP_FRAME, NONE_FRAME } + +static const MODE_REF_TUPLE ref_frame_centric_eval_order[] = { + // TIP entries : TIP/NEARMV, TIP/NEWMV + MODE_REF_TIP_GROUP, + + // max_ref = 0 : single, same-ref(0,0) + MODE_REF_SINGLE_GROUP(0), + MODE_REF_SAME_REF_GROUP(0), + + // max_ref = 1 : single, cross(0,1), same-ref(1,1) + MODE_REF_SINGLE_GROUP(1), + MODE_REF_COMPOUND_GROUP(0, 1), + MODE_REF_SAME_REF_GROUP(1), + + // max_ref = 2 : single, cross(0,2), cross(1,2) + MODE_REF_SINGLE_GROUP(2), + MODE_REF_COMPOUND_GROUP(0, 2), + MODE_REF_COMPOUND_GROUP(1, 2), + + // max_ref = 3 : single, cross(0,3), cross(1,3), cross(2,3) + MODE_REF_SINGLE_GROUP(3), + MODE_REF_COMPOUND_GROUP(0, 3), + MODE_REF_COMPOUND_GROUP(1, 3), + MODE_REF_COMPOUND_GROUP(2, 3), + + // max_ref = 4 : single, cross(0..2, 4) (rf0 clamped by RANKED_REF0_TO_PRUNE) + MODE_REF_SINGLE_GROUP(4), + MODE_REF_COMPOUND_GROUP(0, 4), + MODE_REF_COMPOUND_GROUP(1, 4), + MODE_REF_COMPOUND_GROUP(2, 4), + + // max_ref = 5 : single, cross(0..2, 5) + MODE_REF_SINGLE_GROUP(5), + MODE_REF_COMPOUND_GROUP(0, 5), + MODE_REF_COMPOUND_GROUP(1, 5), + MODE_REF_COMPOUND_GROUP(2, 5), + + // max_ref = 6 : single, cross(0..2, 6) + MODE_REF_SINGLE_GROUP(6), + MODE_REF_COMPOUND_GROUP(0, 6), + MODE_REF_COMPOUND_GROUP(1, 6), + MODE_REF_COMPOUND_GROUP(2, 6), +}; +#undef MODE_REF_SINGLE_GROUP +#undef MODE_REF_COMPOUND_GROUP +#undef MODE_REF_SAME_REF_GROUP +#undef MODE_REF_TIP_GROUP +// clang-format on + +static const int ref_frame_centric_eval_order_num = + (int)(sizeof(ref_frame_centric_eval_order) / + sizeof(ref_frame_centric_eval_order[0])); +// Tripwire: if the LUT above grows or shrinks, this assert fires so any +// caller-side dependencies on the count are re-audited before shipping. +// Update the literal deliberately. +static_assert(sizeof(ref_frame_centric_eval_order) / + sizeof(ref_frame_centric_eval_order[0]) == + 210, + "ref_frame_centric_eval_order size changed; audit callers."); + +// TODO(chiyotsai@google.com): See the todo for av2_rd_pick_intra_mode_sb. void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, struct TileDataEnc *tile_data, struct macroblock *x, struct RD_STATS *rd_cost, @@ -8387,9 +8508,9 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, INTERINTRA_MODES, INTERINTRA_MODES, INTERINTRA_MODES, INTERINTRA_MODES }; HandleInterModeArgs args = { - NULL, - NULL, - NULL, + search_state.single_newmv, + search_state.single_newmv_rate, + search_state.single_newmv_valid, search_state.modelled_rd, INT_MAX, INT_MAX, @@ -8641,254 +8762,248 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, mode_thresh_mul_fact, &num_single_modes_processed, 0 }; - // This is the main loop of this function. It loops over all possible modes - // and calls handle_inter_mode() to compute the RD for each. - // Here midx is just an iterator index that should not be used by itself - // except to keep track of the number of modes searched. It should be used - // with av2_default_mode_order to get the enum that defines the mode, which - // can be used with av2_mode_defs to get the prediction mode and the ref - // frames. - for (PREDICTION_MODE this_mode = 0; this_mode < MB_MODE_COUNT; ++this_mode) { - int64_t top_motion_mode_model_rd[TOP_MOTION_MODE_MODEL_COUNT]; - uint8_t enable_tx_prune = do_tx_search; - if (enable_tx_prune) { + + const uint8_t enable_tx_prune = do_tx_search; + // Pool of top model RDs used by prune_motion_mode(). When + // share_across_modes is 1, every prediction mode shares pool_shared + // (smaller working set, more pruning). When 0, each prediction mode + // keeps its own row in pool_per_mode. + const int share_across_modes = cpi->sf.inter_sf.share_motion_mode_prune_pool; + int64_t pool_shared[TOP_MOTION_MODE_MODEL_COUNT]; + int64_t pool_per_mode[MB_MODE_COUNT][TOP_MOTION_MODE_MODEL_COUNT]; + if (enable_tx_prune) { + if (share_across_modes) { for (int k = 0; k < TOP_MOTION_MODE_MODEL_COUNT; k++) { - top_motion_mode_model_rd[k] = INT64_MAX; + pool_shared[k] = INT64_MAX; + } + } else { + for (int m = 0; m < MB_MODE_COUNT; m++) { + for (int k = 0; k < TOP_MOTION_MODE_MODEL_COUNT; k++) { + pool_per_mode[m][k] = INT64_MAX; + } } } + } + // This is the main loop of this function. It loops over all inter modes + // and calls handle_inter_mode() to compute the RD for each. - for (MV_REFERENCE_FRAME rf = NONE_FRAME; - rf < cm->ref_frames_info.num_total_refs + 1; ++rf) { - const MV_REFERENCE_FRAME ref_frame = - (rf == NONE_FRAME) - ? INTRA_FRAME - : ((rf == cm->ref_frames_info.num_total_refs) ? TIP_FRAME : rf); - if (is_tip_ref_frame(ref_frame) && - (!is_tip_allowed(cm, xd) || !is_tip_mode(this_mode))) + // Intra modes are evaluated separately after this loop. + const int prune_comp_by_single = + sf->inter_sf.prune_comp_search_by_single_result > 0; + const int prune_comp_best_single = + sf->inter_sf.prune_comp_using_best_single_mode_ref > 0; + const int prune_comp_using_single_ref = + sf->inter_sf.prune_compound_using_single_ref; + const int motion_mode_winner = + cpi->sf.winner_mode_sf.motion_mode_for_winner_cand; + const int reference_mode_select = + cm->current_frame.reference_mode == REFERENCE_MODE_SELECT; + + const int num_total_refs = cm->ref_frames_info.num_total_refs; + // Suppress TIP on frames that must decode correctly under base-only + // implicit-ref-map decode: base-layer frames (mlayer_id == 0) of a + // multi-layer sequence (number_mlayers > 1) using implicit ref-map + // signalling. TIP's virtual reference is derived from frames that may + // be absent under such decode, so a TIP-winning block on these frames + // would not be correctly decodable. + const int must_avoid_tip_for_base_only_decode = + cm->number_mlayers > 1 && cm->mlayer_id == 0 && + !cm->seq_params.enable_explicit_ref_frame_map; + const int tip_allowed = + is_tip_allowed(cm, xd) && !must_avoid_tip_for_base_only_decode; + const int comp_ref_allowed = + cm->current_frame.reference_mode != SINGLE_REFERENCE && + is_comp_ref_allowed(bsize); + const int warpmv_allowed = + (cm->features.enabled_motion_modes & (1 << WARP_DELTA)) != 0 && + cm->features.allow_warpmv_mode && is_warpmv_allowed_bsize(bsize); + const int warp_newmv_allowed = + is_motion_variation_allowed_bsize(bsize, mi_row, mi_col) && + !xd->cur_frame_force_integer_mv; + const int thin_4xn_nx4 = is_thin_4xn_nx4_block(bsize); + // OPTFLOW modes are only useful with REFINE_SWITCHABLE; REFINE_NONE disables + // opfl entirely, REFINE_ALL applies opfl to all compound (explicit modes + // redundant), and sframes/seq-level disable also kill it. + const int opfl_modes_allowed = + cm->seq_params.enable_opfl_refine != AVM_OPFL_REFINE_NONE && + cm->features.opfl_refine_type == REFINE_SWITCHABLE && + !frame_is_sframe(cm) && !thin_4xn_nx4; + + for (int mode_refs_pair_idx = 0; + mode_refs_pair_idx < ref_frame_centric_eval_order_num; + ++mode_refs_pair_idx) { + if (bsize == BLOCK_4X4) break; + const PREDICTION_MODE this_mode = + ref_frame_centric_eval_order[mode_refs_pair_idx].mode; + const MV_REFERENCE_FRAME ref_frame = + ref_frame_centric_eval_order[mode_refs_pair_idx].rf0; + const MV_REFERENCE_FRAME second_ref_frame = + ref_frame_centric_eval_order[mode_refs_pair_idx].rf1; + const int is_comp_mode = (second_ref_frame != NONE_FRAME); + const int is_single_pred = !is_comp_mode; + const int comp_pred = is_comp_mode; + + // Gate LUT entries by runtime ref-frame availability. + if (is_tip_ref_frame(ref_frame)) { + if (!tip_allowed) continue; + } else if ((int)ref_frame >= num_total_refs) { + continue; + } + if (is_comp_mode) { + if (!comp_ref_allowed) continue; + if ((int)second_ref_frame >= num_total_refs) continue; + // Same-ref compound only when permitted at runtime. + if (ref_frame == second_ref_frame && + (int)ref_frame >= cm->ref_frames_info.num_same_ref_compound) continue; + } - if (this_mode < INTRA_MODE_END && ref_frame != INTRA_FRAME) continue; - if (this_mode >= INTRA_MODE_END && ref_frame == INTRA_FRAME) continue; - if (ref_frame != INTRA_FRAME && bsize == BLOCK_4X4) { - continue; // disable 4x4 inter blocks - } - for (MV_REFERENCE_FRAME second_rf = NONE_FRAME; - second_rf < cm->ref_frames_info.num_total_refs; ++second_rf) { - MV_REFERENCE_FRAME second_ref_frame = second_rf; - // write this to a function - if (cm->bru.enabled) { - assert(xd->sbi->sb_active_mode == BRU_ACTIVE_SB); - if (xd->sbi->sb_active_mode == BRU_ACTIVE_SB) { - if (ref_frame != INVALID_IDX && - cm->bru.update_ref_idx == ref_frame) { - continue; - } - if (second_ref_frame != INVALID_IDX && - cm->bru.update_ref_idx == second_ref_frame) { - continue; - } - } - } - if ((ref_frame == second_ref_frame) && - (is_joint_mvd_coding_mode(this_mode))) - continue; - - if (second_ref_frame != NONE_FRAME && this_mode < COMP_INTER_MODE_START) - continue; - if (this_mode >= COMP_INTER_MODE_START && - this_mode < COMP_INTER_MODE_END && second_ref_frame == NONE_FRAME) - continue; - if (is_inter_ref_frame(second_ref_frame) && - ((second_ref_frame < ref_frame) || - is_compound_mode_disallowed(this_mode, ref_frame, - second_ref_frame) || - ((second_ref_frame == ref_frame) && - (ref_frame >= cm->ref_frames_info.num_same_ref_compound)))) - continue; - - if (is_tip_ref_frame(ref_frame) && second_ref_frame != NONE_FRAME) - continue; - - const MV_REFERENCE_FRAME ref_frames[2] = { ref_frame, - second_ref_frame }; - - const int is_single_pred = - ref_frame != INTRA_FRAME && second_ref_frame == NONE_FRAME; - const int comp_pred = is_inter_ref_frame(second_ref_frame); - - init_mbmi(mbmi, this_mode, ref_frames, cm, xd, xd->sbi); - - if ((this_mode == WARPMV || this_mode == WARP_NEWMV) && - !is_warpmv_mode_allowed(cm, mbmi, bsize)) - continue; - - if (this_mode == WARP_NEWMV && - !is_warp_newmv_allowed(cm, xd, mbmi, bsize)) - continue; - - set_mv_precision(mbmi, mbmi->max_mv_precision); - if (is_pb_mv_precision_active(cm, mbmi, bsize)) - set_most_probable_mv_precision(cm, mbmi, bsize); + if (this_mode == WARPMV && !warpmv_allowed) continue; + if (this_mode == WARP_NEWMV && (!warpmv_allowed || !warp_newmv_allowed)) + continue; + if (this_mode >= NEAR_NEARMV_OPTFLOW && !opfl_modes_allowed) continue; + if (is_joint_mvd_coding_mode(this_mode) && + cm->seq_params.enable_joint_mvd == 0) + continue; - // Initialize compound average type for optical flow refinement - mbmi->interinter_comp.type = COMPOUND_AVERAGE; + const int num_amvd_modes = + 1 + (cm->seq_params.enable_adaptive_mvd && allow_amvd_mode(this_mode)); + // Asymmetric NEAR/NEW compound modes default to AMVD on, invert the flag + const int amvd_inverted = + (this_mode == NEW_NEARMV || this_mode == NEAR_NEWMV || + this_mode == NEAR_NEWMV_OPTFLOW || this_mode == NEW_NEARMV_OPTFLOW); - // Optical flow compound modes are only enabled - // when prediction is bi-directional - if (this_mode >= NEAR_NEARMV_OPTFLOW && - (!opfl_allowed_cur_refs_bsize(cm, xd, mbmi) || - cm->features.opfl_refine_type == REFINE_ALL)) - continue; - // Optical flow is disabled for 4xn/nx4 blocks - if (is_thin_4xn_nx4_block(bsize) && (this_mode >= NEAR_NEARMV_OPTFLOW)) + if (cm->bru.enabled) { + assert(xd->sbi->sb_active_mode == BRU_ACTIVE_SB); + if (xd->sbi->sb_active_mode == BRU_ACTIVE_SB) { + if (cm->bru.update_ref_idx == ref_frame) continue; + if (second_ref_frame != NONE_FRAME && + cm->bru.update_ref_idx == second_ref_frame) continue; + } + } - int num_amvd_modes = 1 + allow_amvd_mode(mbmi->mode); - for (int use_amvd_mode = 0; use_amvd_mode < num_amvd_modes; - ++use_amvd_mode) { - mbmi->use_amvd = use_amvd_mode; - - if (mbmi->mode == NEW_NEARMV || mbmi->mode == NEAR_NEWMV || - mbmi->mode == NEAR_NEWMV_OPTFLOW || - mbmi->mode == NEW_NEARMV_OPTFLOW) { - mbmi->use_amvd = use_amvd_mode ? 0 : 1; - - if (!mbmi->use_amvd && - search_state.best_mbmode.mode != mbmi->mode) { - continue; - } - } - - txfm_info->skip_txfm = 0; - num_single_modes_processed += is_single_pred; - set_ref_ptrs(cm, xd, ref_frame, second_ref_frame); + if (comp_pred && !(cm->ref_frame_flags & (1 << second_ref_frame))) continue; - // Apply speed features to decide if this inter mode can be skipped - if (skip_inter_mode(cpi, x, bsize, ref_frame_rd, this_mode, - ref_frames, &sf_args)) - continue; + const MV_REFERENCE_FRAME ref_frames[2] = { ref_frame, second_ref_frame }; + init_mbmi(mbmi, this_mode, ref_frames, cm, xd, xd->sbi); + mbmi->fsc_mode[PLANE_TYPE_Y] = 0; + mbmi->fsc_mode[PLANE_TYPE_UV] = 0; + mbmi->angle_delta[PLANE_TYPE_Y] = 0; + mbmi->angle_delta[PLANE_TYPE_UV] = 0; + mbmi->use_dpcm_y = 0; + mbmi->dpcm_mode_y = 0; + mbmi->use_dpcm_uv = 0; + mbmi->dpcm_mode_uv = 0; - if (cm->seq_params.enable_adaptive_mvd == 0 && mbmi->use_amvd == 1) - continue; + // Bi-directional ref check for OPTFLOW (frame-level checks already + // passed via opfl_modes_allowed) + if (this_mode >= NEAR_NEARMV_OPTFLOW && + !opfl_allowed_cur_refs_bsize(cm, xd, mbmi)) + continue; - if (is_joint_mvd_coding_mode(this_mode) && - cm->seq_params.enable_joint_mvd == 0) - continue; + set_ref_ptrs(cm, xd, ref_frame, second_ref_frame); - // Select prediction reference frames. - for (i = 0; i < num_planes; i++) { - xd->plane[i].pre[0] = yv12_mb[COMPACT_INDEX0_NRS(ref_frame)][i]; - if (comp_pred) - xd->plane[i].pre[1] = - yv12_mb[COMPACT_INDEX0_NRS(second_ref_frame)][i]; - } + if (skip_inter_mode(cpi, x, ref_frame_rd, this_mode, ref_frames, &sf_args)) + continue; - mbmi->fsc_mode[PLANE_TYPE_Y] = 0; - mbmi->fsc_mode[PLANE_TYPE_UV] = 0; - mbmi->use_intrabc[0] = 0; - mbmi->use_intrabc[1] = 0; - mbmi->angle_delta[PLANE_TYPE_Y] = 0; - mbmi->angle_delta[PLANE_TYPE_UV] = 0; - mbmi->use_intra_dip = 0; - mbmi->use_dpcm_y = 0; - mbmi->dpcm_mode_y = 0; - mbmi->use_dpcm_uv = 0; - mbmi->dpcm_mode_uv = 0; - mbmi->ref_mv_idx[0] = 0; - mbmi->ref_mv_idx[1] = 0; - mbmi->warp_ref_idx = 0; - mbmi->max_num_warp_candidates = 0; - mbmi->warpmv_with_mvd_flag = 0; - const int64_t ref_best_rd = search_state.best_rd; - RD_STATS rd_stats, rd_stats_y, rd_stats_uv; - av2_init_rd_stats(&rd_stats); - - const int ref_frame_index = COMPACT_INDEX0_NRS(ref_frame); - - const int ref_frame_cost = - comp_pred ? ref_costs_comp[ref_frame][second_ref_frame] - : ref_costs_single[ref_frame_index]; - - const int compmode_cost = - (is_comp_ref_allowed(mbmi->sb_type[PLANE_TYPE_Y]) && - !is_tip_ref_frame(ref_frame)) - ? comp_inter_cost[comp_pred] - : 0; - const int real_compmode_cost = - cm->current_frame.reference_mode == REFERENCE_MODE_SELECT - ? compmode_cost - : 0; - // Point to variables that are maintained between loop iterations - args.single_newmv = search_state.single_newmv; - args.single_newmv_rate = search_state.single_newmv_rate; - args.single_newmv_valid = search_state.single_newmv_valid; - args.single_comp_cost = real_compmode_cost; - args.ref_frame_cost = ref_frame_cost; - - int64_t skip_rd[2] = { search_state.best_skip_rd[0], - search_state.best_skip_rd[1] }; - - int64_t this_rd = handle_inter_mode( - cpi, tile_data, x, bsize, &rd_stats, &rd_stats_y, &rd_stats_uv, - &args, ref_best_rd, tmp_buf, &x->comp_rd_buffer, &best_est_rd, - do_tx_search, inter_modes_info, &motion_mode_cand, skip_rd, - search_state.best_mbmode.mode, - enable_tx_prune ? top_motion_mode_model_rd : NULL, - &inter_cost_info_from_tpl); - - if (sf->inter_sf.prune_comp_search_by_single_result > 0 && - is_inter_singleref_mode(this_mode)) { - collect_single_states(cm, x, &search_state, mbmi); - } + // Select prediction reference frames. + for (i = 0; i < num_planes; i++) { + xd->plane[i].pre[0] = yv12_mb[COMPACT_INDEX0_NRS(ref_frame)][i]; + if (comp_pred) + xd->plane[i].pre[1] = yv12_mb[COMPACT_INDEX0_NRS(second_ref_frame)][i]; + } + + const int ref_frame_index = COMPACT_INDEX0_NRS(ref_frame); + const int ref_frame_cost = comp_pred + ? ref_costs_comp[ref_frame][second_ref_frame] + : ref_costs_single[ref_frame_index]; + const int compmode_cost = (comp_ref_allowed && !is_tip_ref_frame(ref_frame)) + ? comp_inter_cost[comp_pred] + : 0; + const int real_compmode_cost = reference_mode_select ? compmode_cost : 0; + // Point to variables that are maintained between loop iterations + args.single_comp_cost = real_compmode_cost; + args.ref_frame_cost = ref_frame_cost; + + for (int use_amvd_mode = 0; use_amvd_mode < num_amvd_modes; + ++use_amvd_mode) { + mbmi->use_amvd = (num_amvd_modes > 1 && amvd_inverted) ? !use_amvd_mode + : use_amvd_mode; + + if (amvd_inverted && !mbmi->use_amvd && + search_state.best_mbmode.mode != mbmi->mode) { + continue; + } - if (sf->inter_sf.prune_comp_using_best_single_mode_ref > 0 && - is_inter_singleref_mode(this_mode)) - update_best_single_mode(&search_state, this_mode, ref_frame, - this_rd); + num_single_modes_processed += is_single_pred; + txfm_info->skip_txfm = 0; + + const int64_t ref_best_rd = search_state.best_rd; + int64_t skip_rd[2] = { search_state.best_skip_rd[0], + search_state.best_skip_rd[1] }; + + RD_STATS rd_stats, rd_stats_y, rd_stats_uv; + av2_init_rd_stats(&rd_stats); + + int64_t *const pool = + enable_tx_prune + ? (share_across_modes ? pool_shared : pool_per_mode[this_mode]) + : NULL; + int64_t this_rd = handle_inter_mode( + cpi, tile_data, x, bsize, &rd_stats, &rd_stats_y, &rd_stats_uv, &args, + ref_best_rd, tmp_buf, &x->comp_rd_buffer, &best_est_rd, do_tx_search, + inter_modes_info, &motion_mode_cand, skip_rd, + search_state.best_mbmode.mode, pool, &inter_cost_info_from_tpl); + + // collect_single_states uses simple_rd/modelled_rd populated by + // handle_inter_mode even when this_rd == INT64_MAX, so call before + // the early exit. + if (is_single_pred && prune_comp_by_single) + collect_single_states(cm, x, &search_state, mbmi); + + if (this_rd == INT64_MAX) continue; + + if (is_single_pred) { + if (prune_comp_best_single) + update_best_single_mode(&search_state, this_mode, ref_frame, this_rd); + if (prune_comp_using_single_ref && + this_rd < ref_frame_rd[ref_frame_index]) + ref_frame_rd[ref_frame_index] = this_rd; + } - if (this_rd == INT64_MAX) continue; - if (mbmi->skip_txfm[xd->tree_type == CHROMA_PART]) { - rd_stats_y.rate = 0; - rd_stats_uv.rate = 0; - } + if (mbmi->skip_txfm[xd->tree_type == CHROMA_PART]) { + rd_stats_y.rate = 0; + rd_stats_uv.rate = 0; + } - if (sf->inter_sf.prune_compound_using_single_ref && is_single_pred && - this_rd < ref_frame_rd[ref_frame_index]) { - ref_frame_rd[ref_frame_index] = this_rd; - } + // Did this mode help, i.e., is it the new best mode + if (this_rd < search_state.best_rd) { + if (is_tip_ref_frame(ref_frame) && + this_rd + TIP_RD_CORRECTION > search_state.best_rd) { + continue; + } - // Did this mode help, i.e., is it the new best mode - if (this_rd < search_state.best_rd) { - if (is_tip_ref_frame(ref_frame) && - this_rd + TIP_RD_CORRECTION > search_state.best_rd) { - continue; - } - assert(IMPLIES(comp_pred, cm->current_frame.reference_mode != - SINGLE_REFERENCE)); - update_search_state(&search_state, rd_cost, ctx, &rd_stats, - &rd_stats_y, &rd_stats_uv, this_mode, x, - do_tx_search, cm); - if (do_tx_search) search_state.best_skip_rd[0] = skip_rd[0]; - search_state.best_skip_rd[1] = skip_rd[1]; - } - if (cpi->sf.winner_mode_sf.motion_mode_for_winner_cand) { - // Add this mode to motion mode candidate list for motion mode - // search if using motion_mode_for_winner_cand speed feature - handle_winner_cand(mbmi, &best_motion_mode_cands, - max_winner_motion_mode_cand, this_rd, - &motion_mode_cand, args.skip_motion_mode); - } + assert(IMPLIES(comp_pred, + cm->current_frame.reference_mode != SINGLE_REFERENCE)); + update_search_state(&search_state, rd_cost, ctx, &rd_stats, &rd_stats_y, + &rd_stats_uv, this_mode, x, do_tx_search, cm); + if (do_tx_search) search_state.best_skip_rd[0] = skip_rd[0]; + search_state.best_skip_rd[1] = skip_rd[1]; + } + if (motion_mode_winner) { + handle_winner_cand(mbmi, &best_motion_mode_cands, + max_winner_motion_mode_cand, this_rd, + &motion_mode_cand, args.skip_motion_mode); + } - /* keep record of best compound/single-only prediction */ - record_best_compound(cm->current_frame.reference_mode, &rd_stats, - comp_pred, x->rdmult, &search_state, - compmode_cost); - } // end of use_amvd mode loop - } // end of ref1 loop - } // end of ref0 loop - } // end of mode loop + /* keep record of best compound/single-only prediction */ + record_best_compound(cm->current_frame.reference_mode, &rd_stats, + comp_pred, x->rdmult, &search_state, compmode_cost); + } // end of use_amvd mode loop + } // end of LUT entry loop - if (cpi->sf.winner_mode_sf.motion_mode_for_winner_cand) { + if (motion_mode_winner) { // For the single ref winner candidates, evaluate other motion modes (non // simple translation). evaluate_motion_mode_for_winner_candidates( diff --git a/av2/encoder/rdopt.h b/av2/encoder/rdopt.h index 4607390495..d514bc40e3 100644 --- a/av2/encoder/rdopt.h +++ b/av2/encoder/rdopt.h @@ -31,7 +31,7 @@ extern "C" { #define COMP_TYPE_RD_THRESH_SCALE 11 #define COMP_TYPE_RD_THRESH_SHIFT 4 #define MAX_WINNER_MOTION_MODES 10 -#define TOP_MOTION_MODE_MODEL_COUNT 10 +#define TOP_MOTION_MODE_MODEL_COUNT 11 struct TileInfo; struct macroblock; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 48aa08ba50..0b1a2131d2 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -302,7 +302,6 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.inter_mode_rd_model_estimation = 0; sf->inter_sf.model_based_post_interp_filter_breakout = 1; - sf->inter_sf.prune_compound_using_single_ref = 1; sf->inter_sf.prune_mode_search_simple_translation = 1; sf->inter_sf.prune_motion_mode_level = 1; sf->inter_sf.prune_ref_frames = 0; @@ -336,6 +335,7 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.perform_coeff_opt = 1; if (speed >= 1) { sf->inter_sf.selective_ref_frame = 2; + sf->inter_sf.share_motion_mode_prune_pool = 1; sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; @@ -685,6 +685,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->reduce_inter_modes = 0; inter_sf->alt_ref_search_fp = 0; inter_sf->selective_ref_frame = 0; + inter_sf->share_motion_mode_prune_pool = 0; inter_sf->prune_ref_frames = 0; inter_sf->disable_wedge_search_var_thresh = 0; inter_sf->fast_wedge_sign_estimate = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 8ea2d293b4..e0186b73ed 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -527,6 +527,13 @@ typedef struct INTER_MODE_SPEED_FEATURES { // aggressively than lower ones. (0 means no pruning). int selective_ref_frame; + // When 1, the top_motion_mode_model_rd[] pool used by + // prune_motion_mode() is shared across all prediction modes for the + // block (more aggressive pruning, faster, slight coding loss). When 0, + // each prediction mode keeps its own pool (slower, no coding loss). + // Enabled at speed >= 1. + int share_motion_mode_prune_pool; + // Prune reference frames. // 0 implies no pruning // 1 implies prune for extended partition From 9a98ca1e537e9f9445f272b43ee16de74ff68072 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Tue, 14 Jul 2026 17:24:46 -0700 Subject: [PATCH 059/205] Remove FSC path from intra joint UV function (#5111) The intra chroma component will not use FSC mode. Simplify the encoding functions therein. --- av2/encoder/encodemb.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index 76c53730a9..9a704371ae 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -1767,11 +1767,7 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, &quant_param); av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); - const uint8_t fsc_mode = - ((cm->seq_params.enable_fsc && - xd->mi[0]->fsc_mode[xd->tree_type == CHROMA_PART] && - plane == PLANE_TYPE_Y) || - use_inter_fsc(cm, plane, tx_type, 0 /*is_inter*/)); + if (quant_param.use_optimize_b && do_trellis) { const ENTROPY_CONTEXT *a = &args->ta[blk_col + (plane - AVM_PLANE_U) * MAX_MIB_SIZE]; @@ -1781,12 +1777,8 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, get_txb_ctx(plane_bsize, tx_size, plane, a, l, &txb_ctx, xd->mi[0]->fsc_mode[xd->tree_type == CHROMA_PART] && cm->seq_params.enable_fsc); - if (fsc_mode) - av2_optimize_fsc(args->cpi, x, plane, block, tx_size, tx_type, &txb_ctx, - &dummy_rate_cost); - else - av2_optimize_b(args->cpi, x, plane, block, tx_size, tx_type, cctx_type, - &txb_ctx, &dummy_rate_cost); + av2_optimize_b(args->cpi, x, plane, block, tx_size, tx_type, cctx_type, + &txb_ctx, &dummy_rate_cost); } if (do_dropout) { av2_dropout_qcoeff(x, plane, block, tx_size, tx_type, @@ -1810,12 +1802,8 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, get_txb_ctx(plane_bsize, tx_size, plane, a, l, &txb_ctx, xd->mi[0]->fsc_mode[xd->tree_type == CHROMA_PART] && cm->seq_params.enable_fsc); - if (fsc_mode) - av2_optimize_fsc(args->cpi, x, plane, block, tx_size, tx_type, - &txb_ctx, &dummy_rate_cost); - else - av2_optimize_b(args->cpi, x, plane, block, tx_size, tx_type, - cctx_type, &txb_ctx, &dummy_rate_cost); + av2_optimize_b(args->cpi, x, plane, block, tx_size, tx_type, cctx_type, + &txb_ctx, &dummy_rate_cost); } if (do_dropout) { av2_dropout_qcoeff(x, plane, block, tx_size, tx_type, From 46ce6245350f2dc002e235ac80b81fe4a12acdec Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Tue, 14 Jul 2026 22:43:23 -0700 Subject: [PATCH 060/205] Rework single-ref to compound pruning (#5099) Revive prune_compound_using_single_ref: refresh the per-ref RD snapshot every iteration and prune compound (refs[0], refs[1]) pairs via the single-ref RD cutoff. Enabled at speed >= 1. STATS_CHANGED Anchor: commit https://github.com/AOMediaCodec/avm/commit/165345bf9efbf3a2eb6876c53acbc1b9f9c312d8 Speed 1 (cpu-used=1): FG16 CTC (33 frames, class A1 and A2, RA) ``` +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.10 | -0.15 | -0.27 | 0.07 | 92 | 101 | | A2 | 0.09 | 0.28 | -0.12 | 0.08 | 93 | 101 | | Avg w/o B2 | 0.09 | 0.15 | -0.17 | 0.08 | 93 | 101 | +------------+------+-------+-------+------+------+------+ ``` --- av2/encoder/rdopt.c | 94 +++++++++++++----------------------- av2/encoder/speed_features.c | 6 +++ av2/encoder/speed_features.h | 9 ++++ 3 files changed, 49 insertions(+), 60 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index ede65e2e9f..fc0dedbb48 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -7721,18 +7721,6 @@ static INLINE int skip_compound_using_best_single_mode_ref( return 1; } -static int compare_int64(const void *a, const void *b) { - int64_t a64 = *((int64_t *)a); - int64_t b64 = *((int64_t *)b); - if (a64 < b64) { - return -1; - } else if (a64 == b64) { - return 0; - } else { - return 1; - } -} - static INLINE void update_search_state( InterModeSearchState *search_state, RD_STATS *best_rd_stats_dst, PICK_MODE_CONTEXT *ctx, const RD_STATS *new_best_rd_stats, @@ -7777,31 +7765,21 @@ static INLINE void update_search_state( ctx->num_4x4_blk_chroma); } -// Find the best RD for a reference frame (among single reference modes) -// and store +10% of it in the 0-th (or last for NRS) element in ref_frame_rd. -static AVM_INLINE void find_top_ref(int64_t *ref_frame_rd) { - int64_t ref_copy[MAX_COMPOUND_REF_INDEX - 1]; - assert(ref_frame_rd[INTRA_FRAME_INDEX] == INT64_MAX); - memcpy(ref_copy, ref_frame_rd, - sizeof(ref_frame_rd[0]) * (MAX_COMPOUND_REF_INDEX - 1)); - qsort(ref_copy, MAX_COMPOUND_REF_INDEX - 1, sizeof(int64_t), compare_int64); - - int64_t cutoff = AVMMIN(ref_copy[0], ref_frame_rd[TIP_FRAME_INDEX]); - // The cut-off is within 10% of the best. +// Check if either ref frame is within a ~10% cutoff of the best single-ref-mode +// RD seen so far. best_single_mode_rd is INT64_MAX until any single-ref mode +// has completed, in which case both refs pass. +static INLINE bool in_single_ref_cutoff(const int64_t *ref_frame_rd, + int64_t best_single_mode_rd, + MV_REFERENCE_FRAME frame1, + MV_REFERENCE_FRAME frame2) { + assert(is_inter_ref_frame(frame2)); + int64_t cutoff = best_single_mode_rd; + // Keep the cut-off within 10% of the best. if (cutoff != INT64_MAX) { assert(cutoff < INT64_MAX / 200); cutoff = (110 * cutoff) / 100; } - ref_frame_rd[INTRA_FRAME_INDEX] = cutoff; -} - -// Check if either frame is within the cutoff. -static INLINE bool in_single_ref_cutoff(int64_t *ref_frame_rd, - MV_REFERENCE_FRAME frame1, - MV_REFERENCE_FRAME frame2) { - assert(is_inter_ref_frame(frame2)); - return ref_frame_rd[frame1] <= ref_frame_rd[INTRA_FRAME_INDEX] || - ref_frame_rd[frame2] <= ref_frame_rd[INTRA_FRAME_INDEX]; + return ref_frame_rd[frame1] <= cutoff || ref_frame_rd[frame2] <= cutoff; } static AVM_INLINE void evaluate_motion_mode_for_winner_candidates( @@ -7890,12 +7868,12 @@ typedef struct { uint64_t skip_ref_frame_mask; int reach_first_comp_mode; int mode_thresh_mul_fact; - int *num_single_modes_processed; - int prune_cpd_using_sr_stats_ready; } InterModeSFArgs; /*!\endcond */ -static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, int64_t *ref_frame_rd, +static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, + const int64_t *ref_frame_rd, + int64_t best_single_mode_rd, PREDICTION_MODE this_mode, const MV_REFERENCE_FRAME *ref_frames, InterModeSFArgs *args) { @@ -7944,18 +7922,13 @@ static int skip_inter_mode(AV2_COMP *cpi, MACROBLOCK *x, int64_t *ref_frame_rd, } if (sf->inter_sf.prune_compound_using_single_ref) { - // After we done with single reference modes, find the 2nd best RD - // for a reference frame. Only search compound modes that have a reference - // frame at least as good as 110% the best one. - if (!args->prune_cpd_using_sr_stats_ready && - *args->num_single_modes_processed == - cpi->common.ref_frames_info.num_total_refs * - SINGLE_INTER_MODE_NUM) { - find_top_ref(ref_frame_rd); - args->prune_cpd_using_sr_stats_ready = 1; - } - if (args->prune_cpd_using_sr_stats_ready && - !in_single_ref_cutoff(ref_frame_rd, ref_frame, second_ref_frame)) + // Prune compound modes whose refs are not within the ~10% cutoff of the + // best single-ref-mode RD seen so far. + if (!(ref_frame < sf->inter_sf.skip_compound_prune_top_refs_num_ref0 && + second_ref_frame < + sf->inter_sf.skip_compound_prune_top_refs_num_ref1) && + !in_single_ref_cutoff(ref_frame_rd, best_single_mode_rd, ref_frame, + second_ref_frame)) return 1; } @@ -8663,18 +8636,19 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, InterModesInfo *inter_modes_info = x->inter_modes_info; inter_modes_info->num = 0; - int num_single_modes_processed = 0; - // Temporary buffers used by handle_inter_mode(). uint16_t *const tmp_buf = x->tmp_pred_bufs[0]; // The best RD found for the reference frame, among single reference modes. - // Note that the 0-th element will contain a cut-off that is later used - // to determine if we should skip a compound mode. + // Read by in_single_ref_cutoff() to check whether either ref of a compound + // trial is within ~10% of the best single-ref-mode RD. int64_t ref_frame_rd[SINGLE_REF_FRAMES] = { INT64_MAX, INT64_MAX, INT64_MAX, INT64_MAX, INT64_MAX, INT64_MAX, INT64_MAX, INT64_MAX, INT64_MAX }; + // Running minimum RD across all single-ref inter modes evaluated so far. + // Used as the anchor for the single-ref cutoff in in_single_ref_cutoff(). + int64_t best_single_mode_rd = INT64_MAX; // Prepared stats used later to check if we could skip intra mode eval. int64_t inter_cost = -1; @@ -8759,9 +8733,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, &search_state, skip_ref_frame_mask, 0, - mode_thresh_mul_fact, - &num_single_modes_processed, - 0 }; + mode_thresh_mul_fact }; const uint8_t enable_tx_prune = do_tx_search; // Pool of top model RDs used by prune_motion_mode(). When @@ -8904,7 +8876,8 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, set_ref_ptrs(cm, xd, ref_frame, second_ref_frame); - if (skip_inter_mode(cpi, x, ref_frame_rd, this_mode, ref_frames, &sf_args)) + if (skip_inter_mode(cpi, x, ref_frame_rd, best_single_mode_rd, this_mode, + ref_frames, &sf_args)) continue; // Select prediction reference frames. @@ -8936,7 +8909,6 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, continue; } - num_single_modes_processed += is_single_pred; txfm_info->skip_txfm = 0; const int64_t ref_best_rd = search_state.best_rd; @@ -8967,9 +8939,11 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, if (is_single_pred) { if (prune_comp_best_single) update_best_single_mode(&search_state, this_mode, ref_frame, this_rd); - if (prune_comp_using_single_ref && - this_rd < ref_frame_rd[ref_frame_index]) - ref_frame_rd[ref_frame_index] = this_rd; + if (prune_comp_using_single_ref) { + if (this_rd < ref_frame_rd[ref_frame_index]) + ref_frame_rd[ref_frame_index] = this_rd; + if (this_rd < best_single_mode_rd) best_single_mode_rd = this_rd; + } } if (mbmi->skip_txfm[xd->tree_type == CHROMA_PART]) { diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 0b1a2131d2..477824c170 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -336,6 +336,10 @@ static void set_good_speed_features_framesize_independent( if (speed >= 1) { sf->inter_sf.selective_ref_frame = 2; sf->inter_sf.share_motion_mode_prune_pool = 1; + sf->inter_sf.prune_compound_using_single_ref = 1; + // TODO (Yeqing Wu): need to be tuned for speed > 1. + sf->inter_sf.skip_compound_prune_top_refs_num_ref0 = 1; + sf->inter_sf.skip_compound_prune_top_refs_num_ref1 = 2; sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; @@ -701,6 +705,8 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->skip_repeated_full_newmv = 0; inter_sf->inter_mode_rd_model_estimation = 0; inter_sf->prune_compound_using_single_ref = 0; + inter_sf->skip_compound_prune_top_refs_num_ref0 = 0; + inter_sf->skip_compound_prune_top_refs_num_ref1 = 0; inter_sf->prune_comp_using_best_single_mode_ref = 0; inter_sf->prune_mode_search_simple_translation = 0; inter_sf->prune_comp_type_by_comp_avg = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index e0186b73ed..e2d9fed1b5 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -604,6 +604,15 @@ typedef struct INTER_MODE_SPEED_FEATURES { // the single reference modes, it is one of the two best performers. int prune_compound_using_single_ref; + // Top-ref0 / top-ref1 cutoffs used inside the prune_compound_using_single_ref + // pruning. Compound pairs with refs[0] < + // skip_compound_prune_top_refs_num_ref0 AND refs[1] < + // skip_compound_prune_top_refs_num_ref1 are exempt from the single-ref-cutoff + // pruning. Enabled at speed >= 1. + // TODO (Yeqing Wu): need to be tuned for speed > 1. + int skip_compound_prune_top_refs_num_ref0; + int skip_compound_prune_top_refs_num_ref1; + // Skip extended compound mode when ref frame corresponding to NEWMV does not // have NEWMV as single mode winner. // 0 : no pruning From 5056908eea615ede3dc17c0dd7e802c771b2a4f2 Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Wed, 15 Jul 2026 09:31:09 -0700 Subject: [PATCH 061/205] Fix latent assert in handle_newmv MV-precision cache lookup (#5114) Tighten the loop lower bound to pb_mv_precision + 1 so the found cache precision is strictly greater than the current pb_mv_precision, matching the assert's intent. --- av2/encoder/rdopt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index fc0dedbb48..39461f416a 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -1392,7 +1392,7 @@ static int64_t handle_newmv(const AV2_COMP *const cpi, MACROBLOCK *const x, is_pb_mv_precision_active(&cpi->common, mbmi, bsize); if (do_refine_ms) { int valid_mv0_found = 0; - for (int prev_mv_precision = pb_mv_precision; + for (int prev_mv_precision = pb_mv_precision + 1; prev_mv_precision <= mbmi->max_mv_precision; prev_mv_precision++) { assert(get_ref_mv_idx(mbmi, 1) == get_ref_mv_idx(mbmi, 0)); if (args->single_newmv_valid[prev_mv_precision][get_ref_mv_idx(mbmi, 0)] From 47f964b5cff6ef6d0f98353bed9c49b55ba85502 Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Wed, 15 Jul 2026 11:33:30 -0700 Subject: [PATCH 062/205] Add per-ref RD-based pruning for single-ref NEWMV / WARP_NEWMV (#5100) Prune single-ref NEWMV / WARP_NEWMV trials whose prior-mode RD for the current ref frame is far from the best across all refs. Gated by prune_newmv_modes_using_prior_rd, enabled at speed >= 1. STATS_CHANGED Anchor: commit https://github.com/AOMediaCodec/avm/commit/165345bf9efbf3a2eb6876c53acbc1b9f9c312d8 Speed 1 (cpu-used=1): FG16 CTC (33 frames, class A1 and A2, RA) ``` +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.14 | -0.04 | -0.14 | 0.11 | 88 | 101 | | A2 | 0.17 | 0.66 | 0.10 | 0.18 | 88 | 101 | | Avg w/o B2 | 0.16 | 0.45 | 0.03 | 0.16 | 88 | 101 | +------------+------+-------+-------+------+------+------+ ``` --- av2/encoder/interp_search.h | 22 +++++ av2/encoder/rdopt.c | 172 ++++++++++++++++++++++++++++++++++- av2/encoder/speed_features.c | 2 + av2/encoder/speed_features.h | 6 ++ 4 files changed, 200 insertions(+), 2 deletions(-) diff --git a/av2/encoder/interp_search.h b/av2/encoder/interp_search.h index f28bcfb03f..1baa33e5de 100644 --- a/av2/encoder/interp_search.h +++ b/av2/encoder/interp_search.h @@ -32,6 +32,18 @@ typedef struct { int64_t rd; unsigned int pred_sse; } INTERPOLATION_FILTER_STATS; + +// Holds the best fast (model-based, pre-tx) and full (post-tx) RD seen for a +// given (mode, refs) tuple across all motion modes, ref_mv_idx, MV precisions, +// jmvd, bawp and refinemv variants. Used as input to mode-pruning heuristics. +typedef struct InterModeRdPair { + int64_t fast_rd; + int64_t full_rd; +} InterModeRdPair; + +// Number of slots in the use_amvd dimension of the inter-mode RD tables. +// mbmi->use_amvd is 0 or 1, so this dimension has size 2. +#define NUM_USE_AMVD_OPTIONS 2 /*!\endcond */ /*!\brief Miscellaneous arguments for inter mode search. @@ -89,6 +101,16 @@ typedef struct { */ int64_t (*simple_rd)[MAX_REF_MV_SEARCH][SINGLE_REF_FRAMES]; + /*! + * Pointer to a 3D array storing the best fast/full RD per single-ref inter + * mode, use_amvd option, and reference frame. The aggregation is the + * minimum across all motion modes, ref_mv_idx, MV precisions, bawp, + * refinemv and jmvd tuples for a given (mode, use_amvd, ref). Indexed by + * [mode_idx][use_amvd][ref_frame_idx] where + * mode_idx = mode - SINGLE_INTER_MODE_START. + */ + InterModeRdPair (*single_inter_rd)[NUM_USE_AMVD_OPTIONS][SINGLE_REF_FRAMES]; + /*! * An integer value 0 or 1 which indicates whether or not to skip the motion * mode search and default to SIMPLE_TRANSLATION as a speed feature. diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 39461f416a..fa3fd7d2eb 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -110,6 +110,12 @@ typedef struct SingleInterModeState { int valid; } SingleInterModeState; +// Returns the index into single_inter_rd[] for a single-ref inter mode. +static INLINE int single_inter_mode_idx(PREDICTION_MODE mode) { + assert(mode >= SINGLE_INTER_MODE_START && mode < SINGLE_INTER_MODE_END); + return mode - SINGLE_INTER_MODE_START; +} + typedef struct InterModeSearchState { int64_t best_rd; int64_t best_skip_rd[2]; @@ -134,6 +140,12 @@ typedef struct InterModeSearchState { int64_t modelled_rd[MB_MODE_COUNT][MAX_REF_MV_SEARCH][SINGLE_REF_FRAMES]; // The rd of simple translation in single inter modes int64_t simple_rd[MB_MODE_COUNT][MAX_REF_MV_SEARCH][SINGLE_REF_FRAMES]; + // Best fast/full RD per single-ref inter mode, use_amvd option, and + // reference frame. Aggregated as the minimum across all motion modes, + // ref_mv_idx, MV precisions, bawp, refinemv and jmvd tuples for a given + // (mode, use_amvd, ref). + InterModeRdPair single_inter_rd[SINGLE_INTER_MODE_NUM][NUM_USE_AMVD_OPTIONS] + [SINGLE_REF_FRAMES]; int64_t best_single_rd[SINGLE_REF_FRAMES]; PREDICTION_MODE best_single_mode[SINGLE_REF_FRAMES]; @@ -2160,6 +2172,135 @@ static int prune_motion_mode(int64_t this_model_rd, top_motion_mode_model_rd[TOP_MOTION_MODE_MODEL_COUNT - 1]; } +// Records the best fast/full RD for a given (mode, refs) into the +// single_inter_rd table in args. is_fast == 1 selects the fast (model-based, +// pre-transform) slot; is_fast == 0 selects the full (post av2_txfm_search) +// slot. True compound modes (refs[1] is an inter ref) are not tracked. +// Interintra (refs[1] == INTRA_FRAME) is folded into the single-ref table +// via refs[0]. +static AVM_INLINE void update_inter_mode_rd(HandleInterModeArgs *args, + const MB_MODE_INFO *mbmi, + int64_t rd, int is_fast) { + // Fast path when the consuming speed feature + // (prune_newmv_modes_using_prior_rd) is off: caller wires this pointer to + // NULL, so the whole tracker collapses to one pointer load + branch. + if (args->single_inter_rd == NULL) return; + const PREDICTION_MODE this_mode = mbmi->mode; + if (has_second_ref(mbmi) && mbmi->ref_frame[1] != INTRA_FRAME) return; + if (!is_inter_singleref_mode(this_mode)) return; + const int use_amvd = mbmi->use_amvd; + assert(use_amvd == 0 || use_amvd == 1); + const int rf0 = COMPACT_INDEX0_NRS(mbmi->ref_frame[0]); + assert(rf0 >= 0 && rf0 < SINGLE_REF_FRAMES); + InterModeRdPair *slot = + &args->single_inter_rd[single_inter_mode_idx(this_mode)][use_amvd][rf0]; + int64_t *p = is_fast ? &slot->fast_rd : &slot->full_rd; + if (rd < *p) *p = rd; +} + +// Returns 1 if a single-ref mode (e.g. NEWMV or GLOBALMV) for this ref frame +// should be skipped because the matching reference RD is not within +// (1 / slack_denom) of the best reference RD across all ref frames. Decision +// rule: keep when EITHER full_rd OR fast_rd is within slack of its respective +// best; prune when neither is (this includes the no-reference-data case). +// slack_denom = 10 means 10% slack; slack_denom = 4 means 25% slack; lower +// values are looser. +static AVM_INLINE int prune_single_by_reference_rd( + const InterModeRdPair reference_rd[SINGLE_REF_FRAMES], int this_ref_idx, + int slack_denom) { + if (this_ref_idx < 0 || this_ref_idx >= SINGLE_REF_FRAMES) return 0; + if (slack_denom <= 0) return 0; + if (reference_rd[this_ref_idx].full_rd != INT64_MAX) { + int64_t best_full = INT64_MAX; + for (int r = 0; r < SINGLE_REF_FRAMES; ++r) { + if (reference_rd[r].full_rd < best_full) + best_full = reference_rd[r].full_rd; + } + if (reference_rd[this_ref_idx].full_rd <= + best_full + best_full / slack_denom) { + return 0; + } + } + if (reference_rd[this_ref_idx].fast_rd != INT64_MAX) { + int64_t best_fast = INT64_MAX; + for (int r = 0; r < SINGLE_REF_FRAMES; ++r) { + if (reference_rd[r].fast_rd < best_fast) + best_fast = reference_rd[r].fast_rd; + } + if (reference_rd[this_ref_idx].fast_rd <= + best_fast + best_fast / slack_denom) { + return 0; + } + } + return 1; +} + +// Returns 1 if a single-ref NEWMV / WARP_NEWMV trial for this +// (this_mode, ref_frame, use_amvd) should be skipped because the best RD +// seen so far for this ref in a prior mode is far from the best +// prior-mode RD across all refs. Returns 0 to keep evaluating, including +// for any mode other than NEWMV / WARP_NEWMV and when the speed feature +// is off. +// +// Exemptions: +// - speed feature prune_newmv_modes_using_prior_rd is off. +// - NEWMV with ref_frame <= 2 (top refs) or TIP. +// - WARP_NEWMV when lag_in_frames == 0. +// +// Prior-mode source selection (single_inter_rd is populated by earlier +// outer-mode-loop iterations of NEARMV / NEWMV / WARPMV): +// - NEWMV with use_amvd == 1: prefer NEWMV[*][use_amvd=0] when +// populated (use_amvd=0 is searched first in the outer use_amvd +// loop), else fall back to NEARMV[*][0]. +// - NEWMV with use_amvd == 0: NEARMV[*][0]. +// - WARP_NEWMV: first populated of {NEWMV[*][0], WARPMV[*][0], +// NEWMV[*][1], NEARMV[*][0]}. WARP_NEWMV does not support AMVD, +// so use_amvd is always 0 here. +// +// NEARMV / WARPMV / WARP_NEWMV do not support AMVD, so they are +// always written to the use_amvd=0 slot. +static AVM_INLINE int prune_newmv_modes_by_prior_rd( + const AV2_COMP *cpi, const InterModeSearchState *search_state, + PREDICTION_MODE this_mode, int ref_frame, int use_amvd) { + if (!cpi->sf.inter_sf.prune_newmv_modes_using_prior_rd) return 0; + if (this_mode != NEWMV && this_mode != WARP_NEWMV) return 0; + if (this_mode == NEWMV && (ref_frame <= 2 || is_tip_ref_frame(ref_frame))) { + return 0; + } + if (this_mode == WARP_NEWMV && cpi->oxcf.gf_cfg.lag_in_frames == 0) return 0; + + const int slack_denom = 10; + const int rf_idx = COMPACT_INDEX0_NRS(ref_frame); + const InterModeRdPair *prior = + search_state->single_inter_rd[single_inter_mode_idx(NEARMV)][0]; + if (this_mode == NEWMV) { + if (use_amvd == 1) { + const InterModeRdPair *newmv_amvd0 = + search_state->single_inter_rd[single_inter_mode_idx(NEWMV)][0]; + if (newmv_amvd0[rf_idx].full_rd != INT64_MAX || + newmv_amvd0[rf_idx].fast_rd != INT64_MAX) { + prior = newmv_amvd0; + } + } + return prune_single_by_reference_rd(prior, rf_idx, slack_denom); + } + + // WARP_NEWMV + const InterModeRdPair *const candidates[3] = { + search_state->single_inter_rd[single_inter_mode_idx(NEWMV)][0], + search_state->single_inter_rd[single_inter_mode_idx(WARPMV)][0], + search_state->single_inter_rd[single_inter_mode_idx(NEWMV)][1], + }; + for (int cand = 0; cand < 3; ++cand) { + if (candidates[cand][rf_idx].full_rd != INT64_MAX || + candidates[cand][rf_idx].fast_rd != INT64_MAX) { + prior = candidates[cand]; + break; + } + } + return prune_single_by_reference_rd(prior, rf_idx, slack_denom); +} + // Handle SIMPLE_TRANSLATION motion mode: adjust MVD sign if needed. // Returns -1 to skip this motion mode iteration, 0 on success. static AVM_INLINE int handle_simple_translation_mode( @@ -2816,6 +2957,7 @@ static AVM_INLINE int evaluate_motion_mode_trial( rd_stats->rate += est_residue_cost; rd_stats->dist = est_dist; rd_stats->rdcost = est_rd; + update_inter_mode_rd(args, mbmi, est_rd, 1); if (rd_stats->rdcost < *best_est_rd) { *best_est_rd = rd_stats->rdcost; assert(sse_y >= 0); @@ -2858,6 +3000,7 @@ static AVM_INLINE int evaluate_motion_mode_trial( NULL, &curr_sse, NULL, NULL, NULL); int64_t est_rd = RDCOST(x->rdmult, rd_stats->rate + est_residue_cost, est_dist); + update_inter_mode_rd(args, mbmi, est_rd, 1); if (prune_motion_mode(est_rd, top_motion_mode_model_rd, cm, xd, bsize)) return -1; } @@ -2872,6 +3015,7 @@ static AVM_INLINE int evaluate_motion_mode_trial( return -1; } const int64_t curr_rd = RDCOST(x->rdmult, rd_stats->rate, rd_stats->dist); + update_inter_mode_rd(args, mbmi, curr_rd, 0); if (curr_rd < *ref_best_rd) { *ref_best_rd = curr_rd; ref_skip_rd[0] = skip_rd; @@ -7146,6 +7290,17 @@ static AVM_INLINE void init_inter_mode_search_state( } } + if (cpi->sf.inter_sf.prune_newmv_modes_using_prior_rd) { + for (int m = 0; m < SINGLE_INTER_MODE_NUM; ++m) { + for (int u = 0; u < NUM_USE_AMVD_OPTIONS; ++u) { + for (int r = 0; r < SINGLE_REF_FRAMES; ++r) { + search_state->single_inter_rd[m][u][r].fast_rd = INT64_MAX; + search_state->single_inter_rd[m][u][r].full_rd = INT64_MAX; + } + } + } + } + for (int dir = 0; dir < 2; ++dir) { for (int mode = 0; mode < SINGLE_INTER_MODE_NUM; ++mode) { for (int ref_frame = 0; ref_frame < SINGLE_REF_FRAMES; ++ref_frame) { @@ -7984,7 +8139,7 @@ static void tx_search_best_inter_candidates( int64_t best_rd_so_far, BLOCK_SIZE bsize, struct buf_2d yv12_mb[SINGLE_REF_FRAMES][MAX_MB_PLANE], int mi_row, int mi_col, InterModeSearchState *search_state, RD_STATS *rd_cost, - PICK_MODE_CONTEXT *ctx) { + PICK_MODE_CONTEXT *ctx, HandleInterModeArgs *args) { AV2_COMMON *const cm = &cpi->common; MACROBLOCKD *const xd = &x->e_mbd; TxfmSearchInfo *txfm_info = &x->txfm_search_info; @@ -8074,6 +8229,7 @@ static void tx_search_best_inter_candidates( [skip_ctx][mbmi->skip_txfm[xd->tree_type == CHROMA_PART]]); } rd_stats.rdcost = RDCOST(x->rdmult, rd_stats.rate, rd_stats.dist); + update_inter_mode_rd(args, mbmi, rd_stats.rdcost, 0); const MV_REFERENCE_FRAME refs[2] = { mbmi->ref_frame[0], mbmi->ref_frame[1] }; @@ -8488,6 +8644,9 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, INT_MAX, INT_MAX, search_state.simple_rd, + cpi->sf.inter_sf.prune_newmv_modes_using_prior_rd + ? search_state.single_inter_rd + : NULL, 0, interintra_modes, { { 0, { { 0 } }, { 0 }, 0, 0, 0 } }, @@ -8909,6 +9068,15 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, continue; } + // Skip single-ref NEWMV / WARP_NEWMV when prior-mode RD for this + // ref frame is far from the best across all refs. See + // prune_newmv_modes_by_prior_rd() for source selection and + // exemptions. + if (prune_newmv_modes_by_prior_rd(cpi, &search_state, this_mode, + ref_frame, mbmi->use_amvd)) { + continue; + } + txfm_info->skip_txfm = 0; const int64_t ref_best_rd = search_state.best_rd; @@ -8994,7 +9162,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, // top mode candidates tx_search_best_inter_candidates(cpi, tile_data, x, best_rd_so_far, bsize, yv12_mb, mi_row, mi_col, &search_state, - rd_cost, ctx); + rd_cost, ctx, &args); } #if CONFIG_COLLECT_COMPONENT_TIMING end_timing(cpi, do_tx_search_time); diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 477824c170..e3cbe00f7f 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -335,6 +335,7 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.perform_coeff_opt = 1; if (speed >= 1) { sf->inter_sf.selective_ref_frame = 2; + sf->inter_sf.prune_newmv_modes_using_prior_rd = 1; sf->inter_sf.share_motion_mode_prune_pool = 1; sf->inter_sf.prune_compound_using_single_ref = 1; // TODO (Yeqing Wu): need to be tuned for speed > 1. @@ -689,6 +690,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->reduce_inter_modes = 0; inter_sf->alt_ref_search_fp = 0; inter_sf->selective_ref_frame = 0; + inter_sf->prune_newmv_modes_using_prior_rd = 0; inter_sf->share_motion_mode_prune_pool = 0; inter_sf->prune_ref_frames = 0; inter_sf->disable_wedge_search_var_thresh = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index e2d9fed1b5..240939eb8d 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -527,6 +527,12 @@ typedef struct INTER_MODE_SPEED_FEATURES { // aggressively than lower ones. (0 means no pruning). int selective_ref_frame; + // When 1, prune single-ref NEWMV / WARP_NEWMV for a given ref frame + // when the best RD seen so far for that ref (taken from a prior mode + // such as NEARMV, NEWMV[amvd=0], or WARPMV) is far from the best RD + // across all refs. 0 disables this pruning. Enabled at speed >= 1. + int prune_newmv_modes_using_prior_rd; + // When 1, the top_motion_mode_model_rd[] pool used by // prune_motion_mode() is shared across all prediction modes for the // block (more aggressive pruning, faster, slight coding loss). When 0, From ada5dd7ecbfeed68b1fdb3b688d91af884142df8 Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Wed, 15 Jul 2026 15:36:51 -0700 Subject: [PATCH 063/205] Single-ref NEWMV DRL search speed features (#5101) Adds three single-ref NEWMV DRL search speed features, enabled at speed >= 1: * mv_sf.skip_second_best_subpel: the subpel search normally refines both the best and the second-best full-pel candidate and keeps the lower-variance result; with this feature set, only the best full-pel candidate is refined. * mv_sf.predict_repeated_newmv: when a previously searched ref_mv_idx has a reference MV within one full pel of the current one, reuse the cached NEWMV result and only recompute the MV rate, avoiding the full-pel and subpel search entirely. * mv_sf.newmv_drl_search_limit: once ref_mv_idx reaches the limit, reuse the nearest already-searched result regardless of ref-MV distance instead of running a fresh search. Enabled with a cap of 2. Shares the same search-loop pass as the predict_repeated_newmv reuse. STATS_CHANGED Anchor: commit 165345b Speed 1 (cpu-used=1): FG16 CTC (33 frames, class A1 and A2, RA) Speed 4 (cpu-used=4): FG16 CTC (33 frames, class A1 and A2, RA) ``` 1) Speed 1 a) Overall performance (all three features combined) +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.04 | -0.08 | -0.36 | 0.00 | 99 | 101 | | A2 | 0.04 | -0.04 | -0.18 | 0.03 | 98 | 100 | | Avg w/o B2 | 0.04 | -0.05 | -0.23 | 0.02 | 98 | 100 | +------------+------+-------+-------+------+------+------+ b) Performance of skip_second_best_subpel only +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.10 | -0.32 | 0.09 | -0.11 | 99.5 | 101 | | A2 | -0.01 | -0.09 | -0.34 | -0.02 | 99.5 | 100 | | Avg w/o B2 | -0.04 | -0.16 | -0.21 | -0.05 | 99.5 | 100 | +------------+-------+-------+-------+-------+------+------+ c) Performance of predict_repeated_newmv only +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | 0.00 | -0.08 | 0.08 | 0.00 | 100 | 100 | | A2 | -0.03 | -0.04 | -0.04 | -0.03 | 100 | 100 | | Avg w/o B2 | -0.02 | -0.05 | -0.00 | -0.02 | 100 | 100 | +------------+-------+-------+-------+-------+------+------+ d) Performance of newmv_drl_search_limit only +------------+------+-------+------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+------+------+------+------+ | A1 | 0.05 | -0.17 | 0.09 | 0.03 | 99 | 101 | | A2 | 0.00 | 0.36 | 0.01 | 0.02 | 99 | 100 | | Avg w/o B2 | 0.01 | 0.20 | 0.03 | 0.02 | 99 | 100 | +------------+------+-------+------+------+------+------+ 2) Speed 4 Overall performance (all three features combined) +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.01 | -0.13 | 0.07 | 0.00 | 96 | 101 | | A2 | 0.05 | -0.13 | -0.25 | 0.03 | 96 | 100 | | Avg w/o B2 | 0.04 | -0.13 | -0.15 | 0.02 | 96 | 100 | +------------+------+-------+-------+------+------+------+ ``` --- av2/encoder/motion_search_facade.c | 3 +- av2/encoder/rdopt.c | 66 ++++++++++++++++++++++++++++++ av2/encoder/speed_features.c | 14 +++++++ av2/encoder/speed_features.h | 15 +++++++ 4 files changed, 97 insertions(+), 1 deletion(-) diff --git a/av2/encoder/motion_search_facade.c b/av2/encoder/motion_search_facade.c index 087631bcfb..905a06f261 100644 --- a/av2/encoder/motion_search_facade.c +++ b/av2/encoder/motion_search_facade.c @@ -382,7 +382,8 @@ void av2_single_motion_search(const AV2_COMP *const cpi, MACROBLOCK *x, switch (mbmi->motion_mode) { case SIMPLE_TRANSLATION: if (cpi->sf.mv_sf.subpel_search_type) { - const int try_second = second_best_mv.as_int != INVALID_MV && + const int try_second = !cpi->sf.mv_sf.skip_second_best_subpel && + second_best_mv.as_int != INVALID_MV && second_best_mv.as_int != best_mv->as_int; const int best_mv_var = mv_search_params->find_fractional_mv_step( xd, cm, &ms_params, subpel_start_mv, &best_mv->as_mv, &dis, diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index fa3fd7d2eb..899ac81ae6 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -1432,6 +1432,72 @@ static int64_t handle_newmv(const AV2_COMP *const cpi, MACROBLOCK *const x, mode_info, &start_mv, &best_mv); } else { + // Predictive NEWMV reuse across the DRL. Two triggers select a match: + // Tier 1 (predict_repeated_newmv): match when reference MVs are + // within one full pel. + // Tier 2 (newmv_drl_search_limit): once ref_mv_idx reaches the limit, + // reuse the nearest searched result regardless of distance. + const int t1_active = cpi->sf.mv_sf.predict_repeated_newmv != 0; + const int drl_limit = cpi->sf.mv_sf.newmv_drl_search_limit; + const int t2_active = + drl_limit > 0 && mbmi->ref_mv_idx[ref_idx] >= drl_limit; + if ((t1_active || t2_active) && !mbmi->use_amvd && + mbmi->ref_mv_idx[ref_idx] > 0) { + const MV ref_mv = av2_get_ref_mv(x, ref_idx).as_mv; + int near_diff = INT_MAX; + int near_idx = -1; + for (int idx = 0; idx < mbmi->ref_mv_idx[ref_idx]; ++idx) { + if (!args->single_newmv_valid[pb_mv_precision][idx][refs[0]]) + continue; + const MV prev_ref_mv = + av2_get_ref_mv_from_stack(ref_idx, mbmi->ref_frame, idx, + x->mbmi_ext, mbmi) + .as_mv; + const int ref_mv_diff = AVMMAX(abs(ref_mv.row - prev_ref_mv.row), + abs(ref_mv.col - prev_ref_mv.col)); + if (ref_mv_diff < near_diff) { + near_diff = ref_mv_diff; + near_idx = idx; + } + } + int best_match = -1; + // Reuse the nearest previously-searched ref-mv when Tier 1 (within + // one full pel -- (1 << 3) in 1/8-pel units) or Tier 2 (no distance + // cap) fires. + if (near_idx >= 0 && + ((t1_active && near_diff <= (1 << 3)) || t2_active)) { + best_match = near_idx; + } + if (best_match >= 0) { + const int_mv reuse_mv = + args->single_newmv[pb_mv_precision][best_match][refs[0]]; + SubpelMvLimits mv_limits; + av2_set_subpel_mv_search_range(&mv_limits, &x->mv_limits, &ref_mv, + pb_mv_precision); + const int is_adaptive_mvd = enable_adaptive_mvd_resolution(cm, mbmi); + // The reused MV was searched against a different reference MV, so + // check that its MVD relative to the *current* reference MV is + // representable at pb_mv_precision (otherwise the decoder would + // reconstruct a different MV -- bitstream mismatch). + MV reuse_mvd; + get_mvd_from_ref_mv(reuse_mv.as_mv, ref_mv, is_adaptive_mvd, + pb_mv_precision, &reuse_mvd); + if (av2_is_subpelmv_in_range(&mv_limits, reuse_mv.as_mv) && + is_this_mv_precision_compliant(reuse_mvd, pb_mv_precision)) { + *rate_mv = + av2_mv_bit_cost(&reuse_mv.as_mv, &ref_mv, pb_mv_precision, + &x->mv_costs, MV_COST_WEIGHT, is_adaptive_mvd); + const int cur_idx = get_ref_mv_idx(mbmi, 0); + args->single_newmv[pb_mv_precision][cur_idx][refs[0]] = reuse_mv; + args->single_newmv_rate[pb_mv_precision][cur_idx][refs[0]] = + *rate_mv; + args->single_newmv_valid[pb_mv_precision][cur_idx][refs[0]] = 1; + cur_mv[0].as_int = reuse_mv.as_int; + return 0; + } + } + } + int search_range = INT_MAX; if (cpi->sf.mv_sf.reduce_search_range && mbmi->ref_mv_idx[0] > 0) { const MV ref_mv = av2_get_ref_mv(x, ref_idx).as_mv; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index e3cbe00f7f..fcc046e88a 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -346,6 +346,17 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; sf->inter_sf.prune_comp_search_by_single_result = boosted ? 2 : 1; + + // Skip the second-best full-pel candidate's subpel refinement in the + // single-ref NEWMV search. + sf->mv_sf.skip_second_best_subpel = 1; + + // Predictive single-ref NEWMV reuse across the DRL. + sf->mv_sf.predict_repeated_newmv = 1; + + // Cap the DRL depth for a fresh single-ref NEWMV search; reuse the + // nearest searched result beyond the cap. + sf->mv_sf.newmv_drl_search_limit = 2; } if (speed >= 2) { @@ -657,6 +668,9 @@ static AVM_INLINE void init_mv_sf(MV_SPEED_FEATURES *mv_sf) { mv_sf->exhaustive_searches_thresh = 0; mv_sf->prune_mesh_search = 0; mv_sf->reduce_search_range = 0; + mv_sf->skip_second_best_subpel = 0; + mv_sf->predict_repeated_newmv = 0; + mv_sf->newmv_drl_search_limit = 0; mv_sf->search_method = NSTEP; mv_sf->simple_motion_subpel_force_stop = EIGHTH_PEL; mv_sf->subpel_force_stop = EIGHTH_PEL; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 240939eb8d..1bcbbaf9d2 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -477,6 +477,21 @@ typedef struct MV_SPEED_FEATURES { // Reduce single motion search range based on MV result of prior ref_mv_idx. int reduce_search_range; + // When set, skip the second-best full-pel candidate's subpel refinement in + // the single-ref NEWMV search. + int skip_second_best_subpel; + + // Predictively reuse single-ref NEWMV results across the DRL. + // 0: off + // 1: reuse when reference MVs are within one full pel. + int predict_repeated_newmv; + + // Cap the DRL depth that runs a fresh single-ref NEWMV motion search; + // beyond the cap, reuse the nearest searched result. + // 0: off (no cap). + // K: search ref_mv_idx 0..K-1, reuse for ref_mv_idx >= K. + int newmv_drl_search_limit; + // Prune mesh search. int prune_mesh_search; From 7201c3ca551ca0a57c4f3c95c92f61cd88a301b4 Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Thu, 16 Jul 2026 09:25:03 -0700 Subject: [PATCH 064/205] Add pruning for refinemv, INTERINTRA, and WARP_DELTA (#5102) Enables three ref-index based pruning speed features at speed >= 1: - prune_refinemv_by_ref_idx: skip refinemv_loop == 1 for ref-pairs other than (0, 1). - prune_interintra_by_ref_idx: skip INTERINTRA motion mode when ref_frame[0] > 1. - prune_warp_delta_by_ref_idx: skip WARP_DELTA motion mode when ref_frame[0] > 2. STATS_CHANGED Anchor: commit 165345b Speed 1 (cpu-used=1): FG16 CTC (33 frames, class A1 and A2, RA) Speed 4 (cpu-used=4): FG16 CTC (33 frames, class A1 and A2, RA) ``` 1) Speed 1 a) Overall performance (all three features combined) +------------+------+-------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+-------+------+------+------+ | A1 | 0.02 | -0.15 | 0.05 | 0.01 | 93 | 101 | | A2 | 0.12 | 0.36 | -0.03 | 0.12 | 93 | 100 | | Avg w/o B2 | 0.09 | 0.21 | -0.00 | 0.09 | 93 | 100 | +------------+------+-------+-------+------+------+------+ b) Performance of prune_refinemv_by_ref_idx only +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.01 | -0.14 | -0.34 | -0.04 | 99 | 101 | | A2 | 0.04 | 0.06 | -0.25 | 0.02 | 99 | 100 | | Avg w/o B2 | 0.02 | 0.00 | -0.28 | 0.00 | 99 | 100 | +------------+-------+-------+-------+-------+------+------+ c) Performance of prune_interintra_by_ref_idx only +------------+------+-------+------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+-------+------+------+------+------+ | A1 | 0.04 | -0.02 | 0.04 | 0.04 | 98 | 100 | | A2 | 0.02 | 0.27 | 0.08 | 0.03 | 98 | 100 | | Avg w/o B2 | 0.03 | 0.18 | 0.07 | 0.03 | 98 | 100 | +------------+------+-------+------+------+------+------+ d) Performance of prune_warp_delta_by_ref_idx only +------------+------+------+-------+------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+------+------+-------+------+------+------+ | A1 | 0.03 | 0.00 | 0.12 | 0.03 | 95 | 101 | | A2 | 0.07 | 0.11 | -0.07 | 0.07 | 96 | 100 | | Avg w/o B2 | 0.06 | 0.08 | -0.01 | 0.06 | 96 | 100 | +------------+------+------+-------+------+------+------+ 2) Speed 4 Overall performance (all three features combined) +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.01 | -0.09 | -0.01 | -0.02 | 90 | 101 | | A2 | 0.14 | 0.33 | 0.18 | 0.14 | 89 | 101 | | Avg w/o B2 | 0.09 | 0.20 | 0.12 | 0.09 | 89 | 101 | +------------+------+-------+-------+-------+------+------+ ``` --- av2/encoder/rdopt.c | 15 +++++++++++++++ av2/encoder/speed_features.c | 6 ++++++ av2/encoder/speed_features.h | 12 ++++++++++++ 3 files changed, 33 insertions(+) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 899ac81ae6..d5a03f60c3 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -2964,11 +2964,15 @@ static AVM_INLINE int evaluate_motion_mode_trial( &tmp_rate2) < 0) return -1; } else if (mbmi->motion_mode == INTERINTRA) { + if (cpi->sf.inter_sf.prune_interintra_by_ref_idx && mbmi->ref_frame[0] > 1) + return -1; if (av2_handle_inter_intra_mode(cpi, x, bsize, mbmi, args, *ref_best_rd, &tmp_rate_mv, &tmp_rate2, orig_dst) < 0) return -1; assert(mbmi->motion_mode == INTERINTRA); } else if (mbmi->motion_mode == WARP_DELTA) { + if (cpi->sf.inter_sf.prune_warp_delta_by_ref_idx && mbmi->ref_frame[0] > 2) + return -1; if (handle_warp_delta_mode( cpi, x, bsize, mbmi, mbmi_ext, args, *ref_best_rd, orig_dst, ctx->previous_mvs, ctx->prev_best_models, org_warp_inter_intra, @@ -5025,6 +5029,12 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, } } restore_dst_buf(xd, *env->orig_dst, num_planes); + // motion_mode_rd() may leave mbmi->motion_mode set to a non-SIMPLE + // winner. The winning value has already been captured into + // search_state->best_mbmi and winner_mode_stats above. Restore here so + // the outer caller (handle_inter_mode) sees SIMPLE_TRANSLATION at the + // top of its next per-precision iteration. + mbmi->motion_mode = SIMPLE_TRANSLATION; } /*!\brief AV2 inter mode RD computation @@ -5634,6 +5644,11 @@ static int64_t handle_inter_mode( &base_mbmi, 0, num_planes, args->skip_motion_mode); for (int refinemv_loop = 0; refinemv_loop < REFINEMV_NUM_MODES; refinemv_loop++) { + if (refinemv_loop == 1 && + cpi->sf.inter_sf.prune_refinemv_by_ref_idx && + !(base_mbmi.ref_frame[0] == 0 && + base_mbmi.ref_frame[1] == 1)) + continue; it_ctx.refinemv_loop = refinemv_loop; evaluate_inter_predictor( cpi, tile_data, x, &env, &it_ctx, &search_state, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index fcc046e88a..04a13bed52 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -341,6 +341,9 @@ static void set_good_speed_features_framesize_independent( // TODO (Yeqing Wu): need to be tuned for speed > 1. sf->inter_sf.skip_compound_prune_top_refs_num_ref0 = 1; sf->inter_sf.skip_compound_prune_top_refs_num_ref1 = 2; + sf->inter_sf.prune_refinemv_by_ref_idx = 1; + sf->inter_sf.prune_interintra_by_ref_idx = 1; + sf->inter_sf.prune_warp_delta_by_ref_idx = 1; sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; @@ -723,6 +726,9 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->prune_compound_using_single_ref = 0; inter_sf->skip_compound_prune_top_refs_num_ref0 = 0; inter_sf->skip_compound_prune_top_refs_num_ref1 = 0; + inter_sf->prune_refinemv_by_ref_idx = 0; + inter_sf->prune_interintra_by_ref_idx = 0; + inter_sf->prune_warp_delta_by_ref_idx = 0; inter_sf->prune_comp_using_best_single_mode_ref = 0; inter_sf->prune_mode_search_simple_translation = 0; inter_sf->prune_comp_type_by_comp_avg = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 1bcbbaf9d2..208a59dd1a 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -634,6 +634,18 @@ typedef struct INTER_MODE_SPEED_FEATURES { int skip_compound_prune_top_refs_num_ref0; int skip_compound_prune_top_refs_num_ref1; + // Skip refinemv_loop == 1 for ref-pairs other than (0, 1). Enabled at + // speed >= 1. + int prune_refinemv_by_ref_idx; + + // Skip INTERINTRA motion mode when ref_frame[0] > 1. Enabled at + // speed >= 1. + int prune_interintra_by_ref_idx; + + // Skip WARP_DELTA motion mode when ref_frame[0] > 2. Enabled at + // speed >= 1. + int prune_warp_delta_by_ref_idx; + // Skip extended compound mode when ref frame corresponding to NEWMV does not // have NEWMV as single mode winner. // 0 : no pruning From f46e69e5f87c273e5bb2e116846df8580c95fa71 Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Thu, 16 Jul 2026 13:33:34 -0700 Subject: [PATCH 065/205] Skip IST/STX cascade for intra-luma zero-quant primary (#5103) Extend the intra-luma IST/STX pre-skip and post-trellis gates to cover eob == 0 in addition to the existing eob == 1 (DC-only) case. The eob == 0 branch kills candidates only when stx > 0, so a non-DCT primary with stx == 0 that quantizes to all-zero can still win via skip coding. Add a pre-quant L-infinity gate that predicts primary FP-quant eob = 0 directly from the post-primary coefficients (max |coeff| below the FP quantizer kill threshold min(dq0, dq1) >> (4 + log_scale)). When fired, av2_quant + av2_optimize_b + cost_coeffs are skipped and the same eob_found / DCT_DCT propagation as the post-quant gate is applied. Scoped to intra Y, stx == 0, non-DC-only, IST-enabled, non-QM blocks. Gated behind a new tx_sf.prune_intra_ist_stx_by_zero_eob flag, off by default and enabled at speed >= 1. Encoding at speed 0 is unchanged from the baseline. STATS_CHANGED Anchor: commit dd84ac96d1 Speed 1 (cpu-used=1): FG16 CTC (33 frames, RA) ``` +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | 0.06 | -0.20 | -0.34 | 0.02 | 98 | 100 | | A2 | 0.09 | -0.18 | -0.12 | 0.07 | 97 | 100 | | A3 | 0.05 | 0.58 | 0.48 | 0.07 | 96 | 99 | | A4 | 0.09 | 0.22 | -3.02 | -0.01 | 97 | 99 | | A5 | -0.12 | -2.35 | 2.22 | -0.12 | 97 | 101 | | B1 | 0.14 | -0.94 | -0.28 | 0.09 | 97 | 101 | | B2 | -0.48 | -0.71 | 0.30 | -0.46 | 97 | 97 | | Avg w/o B2 | 0.07 | -0.32 | -0.24 | 0.04 | 97 | 100 | +------------+-------+-------+-------+-------+------+------+ ``` --- av2/encoder/speed_features.c | 2 + av2/encoder/speed_features.h | 8 ++++ av2/encoder/tx_search.c | 75 ++++++++++++++++++++++++++++++++++-- 3 files changed, 82 insertions(+), 3 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 04a13bed52..85b71a2abc 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -347,6 +347,7 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; + sf->tx_sf.prune_intra_ist_stx_by_zero_eob = true; sf->inter_sf.prune_comp_search_by_single_result = boosted ? 2 : 1; @@ -788,6 +789,7 @@ static AVM_INLINE void init_tx_sf(TX_SPEED_FEATURES *tx_sf) { tx_sf->restrict_tx_partition_type_search = 0; tx_sf->prune_inter_tx_part_rd_eval = false; tx_sf->enable_tx_partition = true; + tx_sf->prune_intra_ist_stx_by_zero_eob = false; } static AVM_INLINE void init_rd_sf(RD_CALC_SPEED_FEATURES *rd_sf, diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 208a59dd1a..7cccf56326 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -814,6 +814,14 @@ typedef struct TX_SPEED_FEATURES { // Enable txfm partition search bool enable_tx_partition; + + // Skip IST/STX cascade for intra-luma candidates whose primary transform + // quantizes to zero. Extends the intra-luma pre-skip / post-trellis gates + // from eob == 1 to also cover eob == 0 (stx > 0 only, so skip-coded + // non-DCT winners survive) and adds a pre-quant L-infinity gate that + // predicts eob == 0 from the post-primary coefficients to skip + // av2_quant + trellis + cost_coeffs. + bool prune_intra_ist_stx_by_zero_eob; } TX_SPEED_FEATURES; typedef struct RD_CALC_SPEED_FEATURES { diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 23e0a989c8..373a194f89 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -2094,6 +2094,29 @@ static bool prune_sec_txfm_rd_eval(int64_t sec_tx_sse_to_be_coded, // Encoder-only variable to reudce the search complexity of IST #define IST_REDUCED_SEARCH_SET_SIZE 4 +// Return 1 if primary FP-quant is guaranteed to produce eob = 0 across the +// IST window, 0 otherwise. Uses an L-infinity scan of the post-primary +// coefficients against the FP quantizer's kill threshold +// abs(coeff) < min(dequant[0], dequant[1]) >> (4 + log_scale) +// which upper-bounds the per-position quantizer kill rule +// (av2_highbd_quantize_fp_facade in av2_quantize.c). +static INLINE int check_primary_quant_all_zero(const tran_low_t *coeff, + const int32_t dequant_QTX[2], + int width, int height, + int log_scale) { + const int shift = 4 + log_scale; + const int32_t deq_min = AVMMIN(dequant_QTX[0], dequant_QTX[1]); + const int32_t thr = deq_min >> shift; + if (thr <= 0) return 0; + const uint32_t uthr = (uint32_t)thr; + const int n = width * height; + for (int i = 0; i < n; ++i) { + const int32_t a = (coeff[i] < 0) ? -coeff[i] : coeff[i]; + if ((uint32_t)a >= uthr) return 0; + } + return 1; +} + // Search for the best transform type for a given transform block. // This function can be used for both inter and intra, both luma and chroma. static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, @@ -2399,6 +2422,30 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, } *coeffs_available = 1; + // Pre-IST quant-zero gate. Predict primary FP-quant eob = 0 from the + // post-primary coefficients and, if so, skip av2_quant / trellis / + // cost_coeffs and propagate the same eob_found / DCT_DCT handling as + // the post-quant eob == 1 gate below. Scoped to intra Y, stx == 0, + // non-DC-only, IST-enabled, non-QM blocks. + if (cpi->sf.tx_sf.prune_intra_ist_stx_by_zero_eob && + plane == PLANE_TYPE_Y && !is_inter && stx == 0 && !dc_only_blk && + xd->enable_ist && + !av2_use_qmatrix(&cm->quant_params, xd, mbmi->segment_id)) { + const int tr_w = AVMMIN(tx_size_wide[tx_size], 32); + const int tr_h = AVMMIN(tx_size_high[tx_size], 32); + const int log_scale = av2_get_tx_scale(tx_size); + if (check_primary_quant_all_zero(p->coeff + BLOCK_OFFSET(block), + x->plane[plane].dequant_QTX, tr_w, + tr_h, log_scale)) { + p->eobs[block] = 0; + if (tx_type1 == DCT_DCT) eob_found = 1; + if (tx_type1 != DCT_DCT || (stx && primary_tx_type)) { + update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); + continue; + } + } + } + const TX_CLASS tx_class = tx_type_to_class[get_primary_tx_type(tx_type)]; if (tcq_enable(cm->features.tcq_mode, @@ -2424,11 +2471,22 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, } } - // pre-skip DC only case to make things faster + // Pre-skip the all-zero (eob == 0) and DC-only (eob == 1) cases on + // intra luma. The eob == 1 branch kills the candidate when the + // primary is non-DCT or stx > 0. The eob == 0 branch is narrower: + // it only kills stx > 0 candidates, so a non-DCT primary with + // stx == 0 that quantized to all-zero can still win via skip + // coding (bitstream signals the tx_type and elides the + // coefficients). uint16_t *const eob = &p->eobs[block]; - if (*eob == 1 && plane == PLANE_TYPE_Y && !is_inter) { + if (plane == PLANE_TYPE_Y && !is_inter && + (*eob == 1 || + (cpi->sf.tx_sf.prune_intra_ist_stx_by_zero_eob && *eob == 0))) { if (tx_type1 == DCT_DCT) eob_found = 1; - if (tx_type1 != DCT_DCT || (stx && primary_tx_type)) { + const int kill = + (*eob == 1) ? (tx_type1 != DCT_DCT || (stx && primary_tx_type)) + : (stx > 0); + if (kill) { update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); continue; } @@ -2456,6 +2514,9 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, cost_coeffs(cm, x, plane, block, tx_size, tx_type, CCTX_NONE, txb_ctx, cm->features.reduced_tx_set_used); } + // Post-trellis safety net: re-apply the same eob == 0 / eob == 1 + // pre-skip logic in case trellis (RDOQ) adjusted the eob across + // the threshold. if (*eob == 1 && plane == PLANE_TYPE_Y && !is_inter) { if (tx_type1 == DCT_DCT) eob_found = 1; if (tx_type1 != DCT_DCT || (stx && primary_tx_type)) { @@ -2465,6 +2526,14 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, if (get_secondary_tx_type(tx_type) > 0) continue; if (txfm_param.sec_tx_type > 0) continue; } + if (cpi->sf.tx_sf.prune_intra_ist_stx_by_zero_eob && *eob == 0 && + plane == PLANE_TYPE_Y && !is_inter) { + if (tx_type1 == DCT_DCT) eob_found = 1; + if (stx > 0) { + update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); + continue; + } + } if (*eob <= 3 && plane == PLANE_TYPE_Y && is_inter && stx) { update_txk_array(xd, blk_row, blk_col, tx_size, primary_tx_type); continue; From 80564986cf2d92c850d1e45e6c311c834f15dad5 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Thu, 16 Jul 2026 14:51:50 -0700 Subject: [PATCH 066/205] Rework av2_encode_block_intra_joint_uv (#5118) Make it properly handle cctx cases. Take out coeff dropout to be consistent with what's used in RD search stage. Re-do u plane if its eob is different from that's in RD search to avoid potential mismatch issues due to the change of cctx_type. Tested for A2 and A4 in speed 1 with 33 frames. No coding stats change observed. --- av2/encoder/encodemb.c | 107 +++++++++-------------------------------- 1 file changed, 23 insertions(+), 84 deletions(-) diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index 9a704371ae..3598d97247 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -1708,67 +1708,36 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, av2_setup_quant(tx_size, use_trellis, quant_idx, cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); - // Settings for optimization type. NOTE: To set optimization type for all - // intra frames, both `KEY_BLOCK_OPT_TYPE` and `INTRA_BLOCK_OPT_TYPE` should - // be set. - // TODO(yjshen): These settings are hard-coded and look okay for now. They - // should be made configurable later. - // Blocks of key frames ONLY. - OPT_TYPE KEY_BLOCK_OPT_TYPE = TRELLIS_DROPOUT_OPT; - // Blocks of intra frames (key frames EXCLUSIVE). - OPT_TYPE INTRA_BLOCK_OPT_TYPE = TRELLIS_DROPOUT_OPT; - - int use_tcq = cm->features.tcq_mode != 0; - if (use_tcq) { - // Dropout setting should be disabled when Trellis Coded Quant is - // enabled. - KEY_BLOCK_OPT_TYPE = TRELLIS_OPT; - // Blocks of intra frames (key frames EXCLUSIVE). - INTRA_BLOCK_OPT_TYPE = TRELLIS_OPT; - } - - // Whether trellis or dropout optimization is required for key frames and - // intra frames. - const bool do_trellis = (frame_is_intra_only(cm) && - (KEY_BLOCK_OPT_TYPE == TRELLIS_OPT || - KEY_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT)) || - (!frame_is_intra_only(cm) && - (INTRA_BLOCK_OPT_TYPE == TRELLIS_OPT || - INTRA_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT)); - const bool do_dropout = (frame_is_intra_only(cm) && - (KEY_BLOCK_OPT_TYPE == DROPOUT_OPT || - KEY_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT)) || - (!frame_is_intra_only(cm) && - (INTRA_BLOCK_OPT_TYPE == DROPOUT_OPT || - INTRA_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT)); for (int plane = AVM_PLANE_U; plane <= AVM_PLANE_V; plane++) { - if (plane == AVM_PLANE_V && !is_inter_block(xd->mi[0], xd->tree_type) && - *eob_c1 == 1) { - update_cctx_array(xd, blk_row, blk_col, 0, 0, - args->dry_run ? TX_4X4 : tx_size, CCTX_NONE); - cctx_type = av2_get_cctx_type(xd, blk_row, blk_col); - } - // Since eob can be updated here, make sure cctx_type is always CCTX_NONE - // when eob of U is 0. - if (plane == AVM_PLANE_V && *eob_c1 == 0) { - // In dry run, cctx type will not be referenced by neighboring blocks, - // so there is no need to fill in the whole chroma region. In addition, - // ctx->cctx_type_map size in dry run may not be aligned with actual - // chroma coding region for some partition types. - update_cctx_array(xd, blk_row, blk_col, 0, 0, - args->dry_run ? TX_4X4 : tx_size, CCTX_NONE); - } - if (plane == AVM_PLANE_V && *eob_c1 == 0 && cctx_type > CCTX_NONE) { - av2_quantize_skip(av2_get_max_eob(tx_size), - p_c2->qcoeff + BLOCK_OFFSET(block), dqcoeff_c2, eob_c2); - break; + if (plane == AVM_PLANE_V && (*eob_c1 == 0 || *eob_c1 == 1) && + cctx_type != CCTX_NONE) { + cctx_type = CCTX_NONE; + // If the encoding stage uses a different cctx_type from the one + // used in the rd stage, re-do the u plane with the updated cctx_type. + av2_setup_xform(cm, x, AVM_PLANE_U, tx_size, tx_type, cctx_type, + &txfm_param); + av2_setup_qmatrix(&cm->quant_params, xd, AVM_PLANE_U, tx_size, tx_type, + &quant_param); + av2_xform_quant(cm, x, AVM_PLANE_U, block, blk_row, blk_col, plane_bsize, + &txfm_param, &quant_param); + if (quant_param.use_optimize_b) { + const ENTROPY_CONTEXT *a = &args->ta[blk_col]; + const ENTROPY_CONTEXT *l = &args->tl[blk_row]; + TXB_CTX txb_ctx; + get_txb_ctx(plane_bsize, tx_size, AVM_PLANE_U, a, l, &txb_ctx, + xd->mi[0]->fsc_mode[xd->tree_type == CHROMA_PART] && + cm->seq_params.enable_fsc); + av2_optimize_b(args->cpi, x, AVM_PLANE_U, block, tx_size, tx_type, + cctx_type, &txb_ctx, &dummy_rate_cost); + } } + av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); - if (quant_param.use_optimize_b && do_trellis) { + if (quant_param.use_optimize_b) { const ENTROPY_CONTEXT *a = &args->ta[blk_col + (plane - AVM_PLANE_U) * MAX_MIB_SIZE]; const ENTROPY_CONTEXT *l = @@ -1780,36 +1749,6 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, av2_optimize_b(args->cpi, x, plane, block, tx_size, tx_type, cctx_type, &txb_ctx, &dummy_rate_cost); } - if (do_dropout) { - av2_dropout_qcoeff(x, plane, block, tx_size, tx_type, - cm->quant_params.base_qindex); - } - if (plane == AVM_PLANE_V && !is_inter_block(xd->mi[0], xd->tree_type) && - *eob_c1 == 1) { - update_cctx_array(xd, blk_row, blk_col, 0, 0, - args->dry_run ? TX_4X4 : tx_size, CCTX_NONE); - cctx_type = av2_get_cctx_type(xd, blk_row, blk_col); - av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, - &quant_param); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, - &txfm_param, &quant_param); - if (quant_param.use_optimize_b && do_trellis) { - const ENTROPY_CONTEXT *a = - &args->ta[blk_col + (plane - AVM_PLANE_U) * MAX_MIB_SIZE]; - const ENTROPY_CONTEXT *l = - &args->tl[blk_row + (plane - AVM_PLANE_U) * MAX_MIB_SIZE]; - TXB_CTX txb_ctx; - get_txb_ctx(plane_bsize, tx_size, plane, a, l, &txb_ctx, - xd->mi[0]->fsc_mode[xd->tree_type == CHROMA_PART] && - cm->seq_params.enable_fsc); - av2_optimize_b(args->cpi, x, plane, block, tx_size, tx_type, cctx_type, - &txb_ctx, &dummy_rate_cost); - } - if (do_dropout) { - av2_dropout_qcoeff(x, plane, block, tx_size, tx_type, - cm->quant_params.base_qindex); - } - } } if (*eob_c1 || *eob_c2) { From 3b750ab32287c808f0995e5242764b3b810902ed Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Fri, 17 Jul 2026 13:23:37 -0700 Subject: [PATCH 067/205] Remove mlayer/implicit-ref-map TIP suppression (#5119) The unit tests that exercised base-only implicit-ref-map decode of a multi-layer bitstream (the only path where a TIP-winning base-layer block would fail to reconstruct) were removed in 9f0dfe5 (Fix setting in multi_layers tests, #5116), so this encoder-side workaround is no longer needed. --- av2/encoder/rdopt.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index d5a03f60c3..56bdf5e348 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -9012,17 +9012,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, cm->current_frame.reference_mode == REFERENCE_MODE_SELECT; const int num_total_refs = cm->ref_frames_info.num_total_refs; - // Suppress TIP on frames that must decode correctly under base-only - // implicit-ref-map decode: base-layer frames (mlayer_id == 0) of a - // multi-layer sequence (number_mlayers > 1) using implicit ref-map - // signalling. TIP's virtual reference is derived from frames that may - // be absent under such decode, so a TIP-winning block on these frames - // would not be correctly decodable. - const int must_avoid_tip_for_base_only_decode = - cm->number_mlayers > 1 && cm->mlayer_id == 0 && - !cm->seq_params.enable_explicit_ref_frame_map; - const int tip_allowed = - is_tip_allowed(cm, xd) && !must_avoid_tip_for_base_only_decode; + const int tip_allowed = is_tip_allowed(cm, xd); const int comp_ref_allowed = cm->current_frame.reference_mode != SINGLE_REFERENCE && is_comp_ref_allowed(bsize); From ffa92649d17924e64fb83f4009ba62c16ce8308e Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Sat, 18 Jul 2026 08:58:49 -0700 Subject: [PATCH 068/205] Add cctx type array update back (#5123) Fixed issue #5122 --- av2/encoder/encodemb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index 3598d97247..ebf9416215 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -1712,6 +1712,8 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, if (plane == AVM_PLANE_V && (*eob_c1 == 0 || *eob_c1 == 1) && cctx_type != CCTX_NONE) { cctx_type = CCTX_NONE; + update_cctx_array(xd, blk_row, blk_col, 0, 0, + args->dry_run ? TX_4X4 : tx_size, CCTX_NONE); // If the encoding stage uses a different cctx_type from the one // used in the rd stage, re-do the u plane with the updated cctx_type. av2_setup_xform(cm, x, AVM_PLANE_U, tx_size, tx_type, cctx_type, From c6667819b6018b92658cf5bea800314f14bc1742 Mon Sep 17 00:00:00 2001 From: jadhuran Date: Tue, 21 Jul 2026 15:26:06 -0500 Subject: [PATCH 069/205] Skip temporary prediction for opfl modes. (#5126) Skip process_compound_inter() function for opfl modes. Tests - cpu-used =1 Anchor: https://github.com/AOMediaCodec/avm/commit/6e71b0c85924e61d9403b6222921cd4bb8cf870e Results (RA): A1 - 17 frames A2 - 33 frames MR7 --- av2/encoder/rdopt.c | 18 ++++++++++++------ av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 3 +++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 56bdf5e348..625128ebe0 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -4891,10 +4891,15 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, } int compmode_interinter_cost = 0; - + int is_opfl_mode = + (cpi->sf.inter_sf.skip_temporary_pred_for_opfl && + mbmi->mode >= NEAR_NEARMV_OPTFLOW && mbmi->mode < COMP_INTER_MODE_END) + ? 1 + : 0; // Handle a compound predictor, continue if it is determined // this cannot be the best compound mode - if (is_comp_pred && !is_joint_amvd_coding_mode(mbmi->mode, mbmi->use_amvd) && + if (!is_opfl_mode && is_comp_pred && + !is_joint_amvd_coding_mode(mbmi->mode, mbmi->use_amvd) && (!mbmi->refinemv_flag || !switchable_refinemv_flag(cm, mbmi))) { const int not_best_mode = process_compound_inter_mode( cpi, x, env->args, *search_state->ref_best_rd, tmp_cur_mv, bsize, @@ -4916,9 +4921,10 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, int64_t ret_val; // Determine the interpolation filter for this mode - ret_val = av2_interpolation_filter_search( - x, cpi, tile_data, bsize, env->tmp_dst, env->orig_dst, &rd, &rs, - &skip_build_pred, env->args, *search_state->ref_best_rd); + if (!is_opfl_mode) + ret_val = av2_interpolation_filter_search( + x, cpi, tile_data, bsize, env->tmp_dst, env->orig_dst, &rd, &rs, + &skip_build_pred, env->args, *search_state->ref_best_rd); assert(check_mv_precision(cm, mbmi, x)); @@ -4926,7 +4932,7 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, env->args->modelled_rd[eval_mode][ref_mv_idx_type][refs[0]] = rd; } - if (mbmi->mode != WARPMV) { + if (mbmi->mode != WARPMV && !is_opfl_mode) { if (ret_val != 0) { restore_dst_buf(xd, *env->orig_dst, num_planes); return; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 85b71a2abc..e239569354 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -361,6 +361,7 @@ static void set_good_speed_features_framesize_independent( // Cap the DRL depth for a fresh single-ref NEWMV search; reuse the // nearest searched result beyond the cap. sf->mv_sf.newmv_drl_search_limit = 2; + sf->inter_sf.skip_temporary_pred_for_opfl = 1; } if (speed >= 2) { @@ -705,6 +706,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->comp_inter_joint_search_thresh = BLOCK_4X4; inter_sf->adaptive_rd_thresh = 0; inter_sf->model_based_post_interp_filter_breakout = 0; + inter_sf->skip_temporary_pred_for_opfl = 0; inter_sf->reduce_inter_modes = 0; inter_sf->alt_ref_search_fp = 0; inter_sf->selective_ref_frame = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 7cccf56326..722485c968 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -708,6 +708,9 @@ typedef struct INTER_MODE_SPEED_FEATURES { // 1: use model based rd breakout int model_based_post_interp_filter_breakout; + // skip temporary predictions for opfl modes + int skip_temporary_pred_for_opfl; + // Reuse compound type rd decision when exact match is found // 0: No reuse // 1: Reuse the compound type rd data From 38b6c95f31f704894a7170da4d99f246056b88c4 Mon Sep 17 00:00:00 2001 From: jadhuran Date: Tue, 21 Jul 2026 17:46:25 -0500 Subject: [PATCH 070/205] Hybrid search of multi way transform in rough search and winner mode search (#5125) Enable winner transform search Add small fix for winner transform Disable 4 way and 5 way transform in rough search and enable in winner Set winner transform candidates to three Disable existing winner transform speed features. Tests - cpu-used =1 Anchor: 6e71b0c85924e61d9403b6222921cd4bb8cf870e Results (RA): A1 - 17 frames A2 - 33 frames
+---------+-------+--------+-------+-------+----------+----------+
| Summary |   Y   |   U    |   V   |  YUV  | Enc-time | Dec-time |
+---------+-------+--------+-------+-------+----------+----------+
| A1      | 0.13% | 0.01%  | 0.20% | 0.13% | 93.6%    | 100%   |
| A2      | 0.17% | -0.15% | 0.06% | 0.15% | 92.3%    | 100%   |
+---------+-------+--------+-------+-------+----------+----------+
--- av2/encoder/block.h | 10 ++++++- av2/encoder/rdopt.c | 51 ++++++++++++++++++++++++++-------- av2/encoder/rdopt_utils.h | 9 ++++-- av2/encoder/speed_features.c | 24 ++++++++++++++++ av2/encoder/speed_features.h | 3 ++ av2/encoder/tx_search.c | 54 ++++++++++++++++++++++++++++++++++-- 6 files changed, 133 insertions(+), 18 deletions(-) diff --git a/av2/encoder/block.h b/av2/encoder/block.h index 30752e4f39..8d75f4e5e2 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -37,7 +37,8 @@ extern "C" { //! Number of intra winner modes kept #define MAX_WINNER_MODE_COUNT_INTRA 3 //! Number of inter winner modes kept -#define MAX_WINNER_MODE_COUNT_INTER 1 +#define MAX_WINNER_MODE_COUNT_INTER 3 + //! Number of txfm hash records kept for the partition block. #define RD_RECORD_BUFFER_LEN 8 //! Number of txfm hash records kept for the txfm block. @@ -772,6 +773,13 @@ typedef struct { * Flag to enable/disable DC block prediction. */ unsigned int predict_dc_level; + /*! \brief Flag to enable/disable multi-way partition for transform. + * + * 0 means mode default. + * 1 means mode eval + * 2 means mode winner + */ + int eval_mode_type; } TxfmSearchParams; /*!\cond */ diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 625128ebe0..ccfb287aab 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -6855,7 +6855,8 @@ static AVM_INLINE MB_MODE_INFO *get_winner_mode_stats( MACROBLOCK *x, MB_MODE_INFO *best_mbmode, RD_STATS *best_rd_cost, int best_rate_y, int best_rate_uv, RD_STATS **winner_rd_cost, int *winner_rate_y, int *winner_rate_uv, PREDICTION_MODE *winner_mode, - MULTI_WINNER_MODE_TYPE multi_winner_mode_type, int mode_idx) { + MULTI_WINNER_MODE_TYPE multi_winner_mode_type, int mode_idx, + const AV2_COMMON *const cm, BLOCK_SIZE bsize) { MB_MODE_INFO *winner_mbmi; if (multi_winner_mode_type) { assert(mode_idx >= 0 && mode_idx < x->winner_mode_count); @@ -6866,12 +6867,30 @@ static AVM_INLINE MB_MODE_INFO *get_winner_mode_stats( *winner_rate_y = winner_mode_stat->rate_y; *winner_rate_uv = winner_mode_stat->rate_uv; *winner_mode = winner_mode_stat->mode; + MACROBLOCKD *xd = &x->e_mbd; + if (is_warp_mode(winner_mbmi->motion_mode)) { + if (!winner_mbmi->wm_params[0].invalid) + assign_warpmv(cm, xd->submi, bsize, &winner_mbmi->wm_params[0], + xd->mi_row, xd->mi_col, 0); + if (!winner_mbmi->wm_params[1].invalid) + assign_warpmv(cm, xd->submi, bsize, &winner_mbmi->wm_params[1], + xd->mi_row, xd->mi_col, 1); + } } else { winner_mbmi = best_mbmode; *winner_rd_cost = best_rd_cost; *winner_rate_y = best_rate_y; *winner_rate_uv = best_rate_uv; *winner_mode = best_mbmode->mode; + MACROBLOCKD *xd = &x->e_mbd; + if (is_warp_mode(winner_mbmi->motion_mode)) { + if (!winner_mbmi->wm_params[0].invalid) + assign_warpmv(cm, xd->submi, bsize, &winner_mbmi->wm_params[0], + xd->mi_row, xd->mi_col, 0); + if (!winner_mbmi->wm_params[1].invalid) + assign_warpmv(cm, xd->submi, bsize, &winner_mbmi->wm_params[1], + xd->mi_row, xd->mi_col, 1); + } } return winner_mbmi; } @@ -6914,7 +6933,7 @@ static AVM_INLINE void refine_winner_mode_tx( MB_MODE_INFO *winner_mbmi = get_winner_mode_stats( x, best_mbmode, rd_cost, best_rate_y, best_rate_uv, &winner_rd_stats, &winner_rate_y, &winner_rate_uv, &winner_mode, - cpi->sf.winner_mode_sf.multi_winner_mode_type, mode_idx); + cpi->sf.winner_mode_sf.multi_winner_mode_type, mode_idx, cm, bsize); if (xd->lossless[winner_mbmi->segment_id] == 0 && winner_mode != MODE_INVALID && @@ -6926,6 +6945,11 @@ static AVM_INLINE void refine_winner_mode_tx( const int skip_ctx = av2_get_skip_txfm_context(xd); *mbmi = *winner_mbmi; + struct macroblockd_plane *p = xd->plane; + const BUFFER_SET orig_dst = { + { p[0].dst.buf, p[1].dst.buf, p[2].dst.buf }, + { p[0].dst.stride, p[1].dst.stride, p[2].dst.stride }, + }; set_ref_ptrs(cm, xd, mbmi->ref_frame[0], mbmi->ref_frame[1]); @@ -6941,15 +6965,14 @@ static AVM_INLINE void refine_winner_mode_tx( if (is_inter_mode(mbmi->mode)) { const int mi_row = xd->mi_row; const int mi_col = xd->mi_col; - av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, NULL, bsize, 0, - av2_num_planes(cm) - 1); + av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, &orig_dst, bsize, + 0, av2_num_planes(cm) - 1); av2_subtract_plane(x, bsize, 0, cm->width, cm->height); if (txfm_params->tx_mode_search_type == TX_MODE_SELECT && !xd->lossless[mbmi->segment_id]) { av2_pick_recursive_tx_size_type_yrd(cpi, x, &rd_stats_y, bsize, 1, INT64_MAX); - assert(rd_stats_y.rate != INT_MAX); } else { av2_pick_uniform_tx_size_type_yrd(cpi, x, &rd_stats_y, bsize, INT64_MAX); @@ -8025,7 +8048,7 @@ static INLINE bool in_single_ref_cutoff(const int64_t *ref_frame_rd, } static AVM_INLINE void evaluate_motion_mode_for_winner_candidates( - const AV2_COMP *const cpi, MACROBLOCK *const x, RD_STATS *const rd_cost, + AV2_COMP *const cpi, MACROBLOCK *const x, RD_STATS *const rd_cost, HandleInterModeArgs *const args, TileDataEnc *const tile_data, PICK_MODE_CONTEXT *const ctx, struct buf_2d yv12_mb[SINGLE_REF_FRAMES][MAX_MB_PLANE], @@ -9266,12 +9289,18 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, int winner_mode_count = cpi->sf.winner_mode_sf.multi_winner_mode_type ? x->winner_mode_count : 1; - // In effect only when fast tx search speed features are enabled. - refine_winner_mode_tx(cpi, x, rd_cost, bsize, ctx, &search_state.best_mbmode, - yv12_mb, search_state.best_rate_y, - search_state.best_rate_uv, &search_state.best_skip2, - winner_mode_count); + if (!(winner_mode_count == 1 && search_state.best_mode_skippable)) { + // In effect only when fast tx search speed features are enabled. + refine_winner_mode_tx(cpi, x, rd_cost, bsize, ctx, + &search_state.best_mbmode, yv12_mb, + search_state.best_rate_y, search_state.best_rate_uv, + &search_state.best_skip2, winner_mode_count); + } + + if (search_state.best_rd != rd_cost->rdcost) { + search_state.best_rd = rd_cost->rdcost; + } // Initialize default mode evaluation params set_mode_eval_params(cpi, x, DEFAULT_EVAL); diff --git a/av2/encoder/rdopt_utils.h b/av2/encoder/rdopt_utils.h index ff31f0eb76..8711ccadea 100644 --- a/av2/encoder/rdopt_utils.h +++ b/av2/encoder/rdopt_utils.h @@ -207,6 +207,9 @@ static INLINE int is_winner_mode_processing_enabled( cpi->optimize_seg_arr[mbmi->segment_id] != FINAL_PASS_TRELLIS_OPT) return 1; if (sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch) return 1; + if (sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode && + mbmi->region_type == MIXED_INTER_INTRA_REGION) + return 1; return 0; } @@ -301,7 +304,7 @@ static INLINE void set_mode_eval_params(const struct AV2_COMP *cpi, winner_mode_params->coeff_opt_dist_threshold, 0, 0); txfm_params->coeff_opt_satd_threshold = get_rd_opt_coeff_thresh( winner_mode_params->coeff_opt_satd_threshold, 0, 0); - + txfm_params->eval_mode_type = DEFAULT_EVAL; // Set default transform size search method set_tx_size_search_method(cm, winner_mode_params, txfm_params, 0, 0, x, sf->tx_sf.use_largest_tx_size_for_small_bsize); @@ -330,7 +333,7 @@ static INLINE void set_mode_eval_params(const struct AV2_COMP *cpi, txfm_params->coeff_opt_satd_threshold = get_rd_opt_coeff_thresh( winner_mode_params->coeff_opt_satd_threshold, sf->winner_mode_sf.enable_winner_mode_for_coeff_opt, 0); - + txfm_params->eval_mode_type = MODE_EVAL; // Set the transform size search method for mode evaluation set_tx_size_search_method( cm, winner_mode_params, txfm_params, @@ -348,7 +351,7 @@ static INLINE void set_mode_eval_params(const struct AV2_COMP *cpi, winner_mode_params->skip_txfm_level[WINNER_MODE_EVAL]; txfm_params->predict_dc_level = winner_mode_params->predict_dc_level[WINNER_MODE_EVAL]; - + txfm_params->eval_mode_type = WINNER_MODE_EVAL; // Set transform domain distortion type for winner mode evaluation set_tx_domain_dist_params( winner_mode_params, txfm_params, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index e239569354..0bad05c6e7 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -351,6 +351,20 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_comp_search_by_single_result = boosted ? 2 : 1; + sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode = 1; + if (!frame_is_intra_only(cm) && + sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode) { + sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_DEFAULT; + + sf->tx_sf.tx_type_search.winner_mode_tx_type_pruning = 0; + sf->winner_mode_sf.tx_size_search_level = 0; + sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch = 0; + + sf->tx_sf.tx_type_search.fast_inter_tx_type_search = 0; + sf->inter_sf.prune_warpmv_prob_thresh = 0; + sf->rd_sf.perform_coeff_opt = 0; + } + // Skip the second-best full-pel candidate's subpel refinement in the // single-ref NEWMV search. sf->mv_sf.skip_second_best_subpel = 1; @@ -831,6 +845,7 @@ static AVM_INLINE void init_winner_mode_sf( // Set this at the appropriate speed levels winner_mode_sf->tx_size_search_level = USE_FULL_RD; winner_mode_sf->enable_winner_mode_for_coeff_opt = 0; + winner_mode_sf->disable_multiway_tx_part_in_rough_mode = 0; winner_mode_sf->enable_winner_mode_for_tx_size_srch = 0; winner_mode_sf->enable_winner_mode_for_use_tx_domain_dist = 0; winner_mode_sf->multi_winner_mode_type = 0; @@ -1231,8 +1246,10 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { const int boosted = frame_is_boosted(cpi); const int is_720p_or_larger = AVMMIN(cm->width, cm->height) >= 720; const int is_1080p_or_larger = AVMMIN(cm->width, cm->height) >= 1080; + const int is_2160p_or_larger = AVMMIN(cm->width, cm->height) >= 2160; const int qindex_offset = MAXQ_OFFSET * (cm->seq_params.bit_depth - 8); + const int qindex_thresh3 = 195 + qindex_offset; if (cpi->oxcf.mode == GOOD && speed == 0) { const int qindex_thresh = 124 + qindex_offset; @@ -1295,6 +1312,13 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { } } + if (is_2160p_or_larger && cm->quant_params.base_qindex >= qindex_thresh3 && + speed >= 1) { + sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode = 0; + if (!frame_is_intra_only(cm)) + sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_OFF; + } + set_erp_speed_features(cpi); set_erp_speed_features_framesize_dependent(cpi); set_erp_speed_features_qindex_dependent(cpi); diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 722485c968..f4fddc9c92 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -865,6 +865,9 @@ typedef struct WINNER_MODE_SPEED_FEATURES { // Flag used to control the winner mode processing for better R-D optimization // of quantized coeffs int enable_winner_mode_for_coeff_opt; + // Disable multiway 4, 5 way transform partition in rough mode + // and enable them in winner mode + int disable_multiway_tx_part_in_rough_mode; // Flag used to control the winner mode processing for transform size // search method diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 373a194f89..c9975fc30e 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -3074,6 +3074,22 @@ static INLINE bool prune_tx_part_eval_using_none_rd( return false; } +static AVM_INLINE int skip_tx_partition_by_eval_type( + TX_PARTITION_TYPE type, int eval_mode_type, REGION_TYPE region_type, + int disable_multiway_tx_part_in_rough_mode) { + if (!disable_multiway_tx_part_in_rough_mode) return 0; + + if (eval_mode_type == MODE_EVAL && region_type == MIXED_INTER_INTRA_REGION && + type > TX_PARTITION_VERT) + return 1; + + if (eval_mode_type == WINNER_MODE_EVAL && + region_type == MIXED_INTER_INTRA_REGION && type <= TX_PARTITION_VERT) + return 1; + + return 0; +} + // Search for the best tx partition type for a given luma block. static void select_tx_partition_type( const AV2_COMP *cpi, MACROBLOCK *x, int blk_row, int blk_col, int block, @@ -3105,7 +3121,18 @@ static void select_tx_partition_type( TX_SIZE sub_txs[MAX_TX_PARTITIONS] = { 0 }; int64_t best_rd = INT64_MAX; - TX_PARTITION_TYPE best_tx_partition = TX_PARTITION_INVALID; + + const TxfmSearchParams *txfm_params = &x->txfm_search_params; + const int txb_size_index = + is_inter_block(mbmi, xd->tree_type) + ? av2_get_txb_size_index(plane_bsize, blk_row, blk_col) + : 0; + TX_PARTITION_TYPE best_tx_partition = + txfm_params->eval_mode_type == WINNER_MODE_EVAL && + mbmi->region_type == MIXED_INTER_INTRA_REGION && + cpi->sf.winner_mode_sf.disable_multiway_tx_part_in_rough_mode + ? mbmi->tx_partition_type[txb_size_index] + : TX_PARTITION_INVALID; uint8_t best_partition_entropy_ctxs[MAX_TX_PARTITIONS] = { 0 }; TX_TYPE best_partition_tx_types[MAX_TX_PARTITIONS] = { 0 }; uint8_t full_blk_skip[MAX_TX_PARTITIONS] = { 0 }; @@ -3114,6 +3141,12 @@ static void select_tx_partition_type( if (cpi->oxcf.txfm_cfg.reduced_tx_part_set && type > TX_PARTITION_VERT) { break; } + + if (skip_tx_partition_by_eval_type( + type, txfm_params->eval_mode_type, mbmi->region_type, + cpi->sf.winner_mode_sf.disable_multiway_tx_part_in_rough_mode)) + continue; + // Skip any illegal partitions for this block size if (!use_tx_partition(type, plane_bsize, max_tx_size)) continue; if (cpi->sf.tx_sf.enable_tx_partition == false && type) continue; @@ -3418,7 +3451,13 @@ static void choose_tx_size_type_from_rd(const AV2_COMP *const cpi, TX_SIZE best_tx_size = max_tx_size; int is_wide_angle_mapped[MAX_TX_PARTITIONS] = { 0 }; int mapped_wide_angle[MAX_TX_PARTITIONS] = { 0 }; - TX_PARTITION_TYPE best_tx_partition_type = TX_PARTITION_NONE; + assert(!is_inter_block(mbmi, xd->tree_type)); + TX_PARTITION_TYPE best_tx_partition_type = + txfm_params->eval_mode_type == WINNER_MODE_EVAL && + mbmi->region_type == MIXED_INTER_INTRA_REGION && + cpi->sf.winner_mode_sf.disable_multiway_tx_part_in_rough_mode + ? mbmi->tx_partition_type[0] + : TX_PARTITION_NONE; int64_t best_rd = INT64_MAX; x->rd_model = FULL_TXFM_RD; int64_t cur_rd = INT64_MAX; @@ -3427,6 +3466,12 @@ static void choose_tx_size_type_from_rd(const AV2_COMP *const cpi, if (cpi->oxcf.txfm_cfg.reduced_tx_part_set && type > TX_PARTITION_VERT) { break; } + + if (skip_tx_partition_by_eval_type( + type, txfm_params->eval_mode_type, mbmi->region_type, + cpi->sf.winner_mode_sf.disable_multiway_tx_part_in_rough_mode)) + continue; + // Skip any illegal partitions for this block size if (!use_tx_partition(type, bs, max_tx_size)) continue; if (cpi->sf.tx_sf.enable_tx_partition == false && type) continue; @@ -3990,7 +4035,10 @@ void av2_pick_recursive_tx_size_type_yrd(const AV2_COMP *cpi, MACROBLOCK *x, // We should always find at least one candidate unless ref_best_rd is less // than INT64_MAX (in which case, all the calls to select_tx_size_fix_type // might have failed to find something better) - assert(ref_best_rd != INT64_MAX); + assert(IMPLIES(txfm_params->eval_mode_type != WINNER_MODE_EVAL, + ref_best_rd != INT64_MAX)); + + // In winner ref_best_rd is INT64_MAX to avoid any early termination by cost av2_invalid_rd_stats(rd_stats); return; } From a42125211a960187df798c12410fa4d0249feff5 Mon Sep 17 00:00:00 2001 From: leolzhao Date: Tue, 21 Jul 2026 18:38:39 -0700 Subject: [PATCH 071/205] Add a speed level for intra region in inter frames (#5130) Squash merge branch 'leo/inter-sdp-mr' into 'avm-encoder-development' Add a speed level for inter sdp fast method: 1) Early terminate inter-sdp when there is no intra coded blocks in the this region after searching mixed intra and inter region; 2) Early terminate inter-sdp when more than half of the blocks are inter -coded; 3) Early terminate inter-sdp when the best block partitioning is partition-none STATS_CHANGED cpu-use-1 is at commit 6e71b0c859 is used as anchor. A1 - 17 frames (0.02% loss with 95.3% run-time) A2 - 33 frames (0.09% loss with 94.6% run-time) ``` +---------+-------+--------+-------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+-------+--------+-------+-------+----------+----------+ | A1 | 0.01% | 0.17% | 0.11% | 0.02% | 95.3% | 100% | | A2 | 0.07% | 0.14% | 0.42% | 0.09% | 94.6% | 100% | +---------+-------+--------+-------+-------+----------+----------+ ``` --- av2/encoder/partition_search.c | 30 +++++++++++++++++++++--------- av2/encoder/speed_features.c | 6 ++++++ av2/encoder/speed_features.h | 9 +++++++++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 1cc4754703..00dd0293ae 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -4589,8 +4589,8 @@ static AVM_INLINE void prune_ext_partitions_3way( // Early termination of SDP for intra blocks in inter frames static INLINE void early_termination_inter_sdp(PC_TREE *pc_tree, - float *total_count, - float *inter_mode_count) { + unsigned int *total_count, + unsigned int *inter_mode_count) { REGION_TYPE cur_region_type = pc_tree->region_type; if (pc_tree->partitioning == PARTITION_NONE) { if (pc_tree->none[cur_region_type] == NULL) return; @@ -4692,17 +4692,29 @@ static INLINE void search_intra_region_partitioning( MACROBLOCKD *const xd = &x->e_mbd; assert(pc_tree != NULL); + // store the current best partitioning + PARTITION_TYPE cur_best_partitioning = pc_tree->partitioning; + // Add one encoder fast method for early terminating inter-sdp - float total_count = 0; - float inter_mode_count = 0; + unsigned int total_count = 0; + unsigned int inter_mode_count = 0; early_termination_inter_sdp(pc_tree, &total_count, &inter_mode_count); - // if over 60% of the coded blocks under this region are inter coded blocks, - // skip the rdo for inter-sdp - if (total_count * 0.7 < inter_mode_count) return; + if (cpi->sf.part_sf.inter_sdp_fast_method_level >= 1) { + // Optimized fast method (enabled at cpu-used >= 1): + // Check whether there are at least 1 intra coded blocks under this region + if (total_count - inter_mode_count < 1) return; + if (inter_mode_count * 2 > total_count) return; + // if current best partitioning is partition_none, early skip + if (cur_best_partitioning == PARTITION_NONE) return; + } else { + // Original fast method (used at cpu-used == 0): + // if over 70% of the coded blocks under this region are inter coded blocks, + // skip the rdo for inter-sdp + if (total_count * 7 / 10 < inter_mode_count) return; + } pc_tree->region_type = INTRA_REGION; - // store the current best partitioning - PARTITION_TYPE cur_best_partitioning = pc_tree->partitioning; + pc_tree->partitioning = PARTITION_NONE; RD_STATS *sum_rdc = &part_search_state->sum_rdc; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 0bad05c6e7..2f3ae6ae21 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -376,6 +376,11 @@ static void set_good_speed_features_framesize_independent( // nearest searched result beyond the cap. sf->mv_sf.newmv_drl_search_limit = 2; sf->inter_sf.skip_temporary_pred_for_opfl = 1; + + // Enable the optimized inter-SDP fast method (requires >=1 intra coded + // block, prunes when inter-mode ratio exceeds 50%, and early skips when + // the current best partitioning is PARTITION_NONE). + sf->part_sf.inter_sdp_fast_method_level = 1; } if (speed >= 2) { @@ -671,6 +676,7 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->ext_recur_depth_level = 0; part_sf->prune_rect_with_split_depth = 0; part_sf->prune_part_h_with_partition_boundary = 0; + part_sf->inter_sdp_fast_method_level = 0; #if CONFIG_ML_PART_SPLIT part_sf->prune_split_with_ml = 0; part_sf->prune_none_with_ml = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index f4fddc9c92..01852deea1 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -422,6 +422,15 @@ typedef struct PARTITION_SPEED_FEATURES { // the current best partition's boundary after searching NONE, HORZ, VERT, and // H-parts. int prune_part_4_with_partition_boundary; + + // Controls the early termination fast method for inter-SDP (search of intra + // region partitioning in inter frames). + // 0: Use the original fast method that early-terminates inter-SDP when more + // than 70% of the coded blocks under this region are inter coded. + // 1: Use the optimized fast method that additionally requires at least one + // intra coded block, prunes when inter ratio exceeds 50%, and early skips + // when current best partitioning is PARTITION_NONE. + int inter_sdp_fast_method_level; #if CONFIG_ML_PART_SPLIT int prune_split_with_ml; int prune_split_ml_level; From 8c38c929744e9ff6e195994d62334d11aa258dfe Mon Sep 17 00:00:00 2001 From: jadhuran Date: Wed, 22 Jul 2026 14:46:52 -0500 Subject: [PATCH 072/205] Add 6 param warp search in winner mode by tid (#5129) Enable winner motion mode. Based on tid threshold, choose to perform six parameter warp searches in either winner mode or rough mode. Tests - cpu-used =1 Anchor: https://github.com/AOMediaCodec/avm/commit/6e71b0c85924e61d9403b6222921cd4bb8cf870e Results (RA): A1 - 17 frames A2 - 33 frames ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | -0.01% | 0.02% | 0.08% | -0.01% | 98.2% | 100% | | A2 | 0.01% | -0.07% | -0.01% | 0.01% | 98.4% | 101% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/encoder/rdopt.c | 61 +++++++++++++++++++++++++----------- av2/encoder/speed_features.c | 9 ++++++ av2/encoder/speed_features.h | 6 +++- 3 files changed, 56 insertions(+), 20 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index ccfb287aab..0aca26ea1c 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -1655,7 +1655,7 @@ static INLINE int select_modes_to_search(const AV2_COMP *const cpi, // the motion_mode_for_winner_cand speed feature, avoid searching it again. if (cpi->sf.winner_mode_sf.motion_mode_for_winner_cand) { if (!eval_motion_mode) { - modes_to_search = (1 << SIMPLE_TRANSLATION); + modes_to_search |= (1 << SIMPLE_TRANSLATION); } else { // Skip translation, as will have already been evaluated modes_to_search &= ~(1 << SIMPLE_TRANSLATION); @@ -2537,7 +2537,8 @@ static AVM_INLINE int handle_warp_delta_mode( MB_MODE_INFO_EXT *mbmi_ext, HandleInterModeArgs *args, int64_t ref_best_rd, const BUFFER_SET *orig_dst, int_mv *previous_mvs, warp_mode_info_array *prev_best_models, int org_warp_inter_intra, - int rate2_nocoeff, int rate_mv0, int *tmp_rate_mv, int *tmp_rate2) { + int rate2_nocoeff, int rate_mv0, int *tmp_rate_mv, int *tmp_rate2, + int eval_motion_mode) { const AV2_COMMON *cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; const int mi_row = xd->mi_row; @@ -2599,14 +2600,23 @@ static AVM_INLINE int handle_warp_delta_mode( mbmi->mv[0].as_int = previous_mvs[mbmi->warp_ref_idx].as_int; } } - valid = av2_refine_mv_for_base_param_warp_model( - cm, xd, mbmi, mbmi_ext, &ms_params, cpi->sf.mv_sf.warp_search_method, - cpi->sf.mv_sf.warp_search_iters); + if (!cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode || + !eval_motion_mode) + valid = av2_refine_mv_for_base_param_warp_model( + cm, xd, mbmi, mbmi_ext, &ms_params, cpi->sf.mv_sf.warp_search_method, + cpi->sf.mv_sf.warp_search_iters); } else { mbmi->six_param_warp_model_flag = get_default_six_param_flag(cm, mbmi); - valid = av2_pick_warp_delta( - cm, xd, mbmi, &ms_params, &x->mode_costs, prev_best_models, - mbmi_ext->warp_param_stack[av2_ref_frame_type(mbmi->ref_frame)]); + const int six_param_enabled_by_tid = + mbmi->six_param_warp_model_flag && + cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode_by_tid; + const bool use_six_param_in_winner = + (eval_motion_mode == six_param_enabled_by_tid); + if (use_six_param_in_winner || + !cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode) + valid = av2_pick_warp_delta( + cm, xd, mbmi, &ms_params, &x->mode_costs, prev_best_models, + mbmi_ext->warp_param_stack[av2_ref_frame_type(mbmi->ref_frame)]); } if (!valid) return -1; @@ -2917,7 +2927,7 @@ static AVM_INLINE int evaluate_motion_mode_trial( int do_tx_search, InterModesInfo *inter_modes_info, int64_t top_motion_mode_model_rd[], const MB_MODE_INFO *base_mbmi, const MotionModeTrialParams *trial, const MotionModeTrialCtx *ctx, - MotionModeBestState *best) { + MotionModeBestState *best, int eval_motion_mode) { const AV2_COMMON *const cm = &cpi->common; TxfmSearchInfo *txfm_info = &x->txfm_search_info; const int num_planes = av2_num_planes(cm); @@ -2973,10 +2983,11 @@ static AVM_INLINE int evaluate_motion_mode_trial( } else if (mbmi->motion_mode == WARP_DELTA) { if (cpi->sf.inter_sf.prune_warp_delta_by_ref_idx && mbmi->ref_frame[0] > 2) return -1; - if (handle_warp_delta_mode( - cpi, x, bsize, mbmi, mbmi_ext, args, *ref_best_rd, orig_dst, - ctx->previous_mvs, ctx->prev_best_models, org_warp_inter_intra, - ctx->rate2_nocoeff, ctx->rate_mv0, &tmp_rate_mv, &tmp_rate2) < 0) + if (handle_warp_delta_mode(cpi, x, bsize, mbmi, mbmi_ext, args, + *ref_best_rd, orig_dst, ctx->previous_mvs, + ctx->prev_best_models, org_warp_inter_intra, + ctx->rate2_nocoeff, ctx->rate_mv0, &tmp_rate_mv, + &tmp_rate2, eval_motion_mode) < 0) return -1; } else if (mbmi->motion_mode == WARP_EXTEND) { if (handle_warp_extend_mode(cpi, x, bsize, mbmi, mbmi_ext, @@ -3269,7 +3280,10 @@ static int64_t motion_mode_rd( for (int mode_index = SIMPLE_TRANSLATION; mode_index < mode_index_end; mode_index++) { if ((modes_to_search & (1 << mode_index)) == 0) continue; - + if (cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode && + eval_motion_mode && + (mode_index == WARP_CAUSAL || mode_index == WARP_EXTEND)) + continue; const int warp_ref_idx_limit = get_warp_ref_idx_limit(xd, &base_mbmi, mbmi_ext, mode_index); @@ -3282,7 +3296,7 @@ static int64_t motion_mode_rd( cpi, tile_data, x, bsize, rd_stats, rd_stats_y, rd_stats_uv, args, &ref_best_rd, ref_skip_rd, orig_dst, best_est_rd, do_tx_search, inter_modes_info, top_motion_mode_model_rd, &base_mbmi, &trial, &ctx, - &best); + &best, eval_motion_mode); if (ret > 0) return INT64_MAX; } else if (base_mbmi.mode == WARPMV) { // WARP_DELTA + WARPMV: iterate warp_inter_intra × ref_idx × mvd_flag @@ -3308,7 +3322,7 @@ static int64_t motion_mode_rd( cpi, tile_data, x, bsize, rd_stats, rd_stats_y, rd_stats_uv, args, &ref_best_rd, ref_skip_rd, orig_dst, best_est_rd, do_tx_search, inter_modes_info, top_motion_mode_model_rd, - &base_mbmi, &trial, &ctx, &best); + &base_mbmi, &trial, &ctx, &best, eval_motion_mode); if (ret > 0) return INT64_MAX; } } @@ -3333,7 +3347,7 @@ static int64_t motion_mode_rd( cpi, tile_data, x, bsize, rd_stats, rd_stats_y, rd_stats_uv, args, &ref_best_rd, ref_skip_rd, orig_dst, best_est_rd, do_tx_search, inter_modes_info, top_motion_mode_model_rd, &base_mbmi, &trial, - &ctx, &best); + &ctx, &best, eval_motion_mode); if (ret > 0) return INT64_MAX; } } @@ -8360,8 +8374,17 @@ static void tx_search_best_inter_candidates( } // Indicates number of winner simple translation modes to be used -static const unsigned int num_winner_motion_modes[3] = { 0, 10, 3 }; +static const unsigned int num_winner_motion_modes[3] = { 0, 10, 6 }; + +// Returns true if a mode is added to the winner mode check. +static AVM_INLINE int is_check_in_winner(const AV2_COMP *cpi, + const MB_MODE_INFO *const mbmi) { + if (!cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode) return 0; + PREDICTION_MODE this_mode = mbmi->mode; + if (this_mode == WARP_NEWMV) return 1; + return 0; +} // Adds a motion mode to the candidate list for motion_mode_for_winner_cand // speed feature. This list consists of modes that have only searched // SIMPLE_TRANSLATION. The final list will be used to search other motion @@ -9233,7 +9256,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, if (do_tx_search) search_state.best_skip_rd[0] = skip_rd[0]; search_state.best_skip_rd[1] = skip_rd[1]; } - if (motion_mode_winner) { + if (motion_mode_winner && is_check_in_winner(cpi, mbmi)) { handle_winner_cand(mbmi, &best_motion_mode_cands, max_winner_motion_mode_cand, this_rd, &motion_mode_cand, args.skip_motion_mode); diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 2f3ae6ae21..8b9e0621fe 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -371,6 +371,7 @@ static void set_good_speed_features_framesize_independent( // Predictive single-ref NEWMV reuse across the DRL. sf->mv_sf.predict_repeated_newmv = 1; + sf->inter_sf.enable_six_param_warp_in_winner_mode = 1; // Cap the DRL depth for a fresh single-ref NEWMV search; reuse the // nearest searched result beyond the cap. @@ -605,6 +606,12 @@ static void set_good_speed_features_framesize_independent( sf->winner_mode_sf.dc_blk_pred_level = 2; sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_OFF; } + + if (sf->inter_sf.enable_six_param_warp_in_winner_mode) { + sf->winner_mode_sf.motion_mode_for_winner_cand = 2; + sf->inter_sf.enable_six_param_warp_in_winner_mode_by_tid = + cm->current_frame.pyramid_level >= 3 ? 1 : 0; + } } static AVM_INLINE void init_hl_sf(HIGH_LEVEL_SPEED_FEATURES *hl_sf) { @@ -723,6 +730,8 @@ static AVM_INLINE void init_flexmv_sf( } static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { + inter_sf->enable_six_param_warp_in_winner_mode = 0; + inter_sf->enable_six_param_warp_in_winner_mode_by_tid = 0; inter_sf->comp_inter_joint_search_thresh = BLOCK_4X4; inter_sf->adaptive_rd_thresh = 0; inter_sf->model_based_post_interp_filter_breakout = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 01852deea1..c07035d59e 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -545,7 +545,11 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Aggressively prune inter modes when best mode is skippable. int prune_inter_modes_if_skippable; - + // Enable six param warp in winner mode + int enable_six_param_warp_in_winner_mode; + // Enable six parameter warp in winner mode by tid. If set to 1, enable six + // parameter warp in winner mode by tid threshold. + int enable_six_param_warp_in_winner_mode_by_tid; // Drop less likely to be picked reference frames in the RD search. // Has five levels for now: 0, 1, 2, 3 and 4, where higher levels prune more // aggressively than lower ones. (0 means no pruning). From 61dd9599ddba1922dc9a0efebfb30cf41b51c2dd Mon Sep 17 00:00:00 2001 From: kslu-aom Date: Wed, 22 Jul 2026 13:01:14 -0700 Subject: [PATCH 073/205] Disable switchable SMVR at speed >= 1 and rename DMVR as SMVR or refinemv (#5134) Tested on 962f1c4f99 at speed 1, RA 33 frames +------------+-------+-------+-------+-------+-------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+-------+ | A1 | +0.06 | +0.01 | +0.07 | +0.06 | 97.06 | | A2 | +0.08 | -0.08 | +0.03 | +0.07 | 96.94 | | Avg | +0.07 | -0.05 | +0.04 | +0.06 | 96.98 | +------------+-------+-------+-------+-------+-------+ --- av2/common/blockd.h | 8 ++++---- av2/common/enums.h | 4 ++-- av2/common/reconinter.c | 26 +++++++++++++------------- av2/common/reconinter.h | 4 ++-- av2/common/tip.c | 10 +++++----- av2/decoder/decodeframe.c | 10 +++++----- av2/decoder/decoder.h | 2 +- av2/encoder/block.h | 2 +- av2/encoder/compound_type.c | 2 +- av2/encoder/encoder.c | 4 ++-- av2/encoder/encoder.h | 2 +- av2/encoder/encoder_alloc.h | 2 +- av2/encoder/ethread.c | 6 +++--- av2/encoder/rdopt.c | 8 ++++++-- av2/encoder/reconinter_enc.c | 20 ++++++++++---------- av2/encoder/speed_features.c | 4 +++- av2/encoder/speed_features.h | 3 +++ 17 files changed, 63 insertions(+), 54 deletions(-) diff --git a/av2/common/blockd.h b/av2/common/blockd.h index 67bd4c293a..c6b5476b69 100644 --- a/av2/common/blockd.h +++ b/av2/common/blockd.h @@ -330,11 +330,11 @@ typedef struct { #define REF_BUFFER_WIDTH \ (REFINEMV_SUBBLOCK_WIDTH + (AVM_INTERP_EXTEND - 1) + AVM_INTERP_EXTEND + \ - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) #define REF_BUFFER_HEIGHT \ (REFINEMV_SUBBLOCK_HEIGHT + (AVM_INTERP_EXTEND - 1) + AVM_INTERP_EXTEND + \ - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) typedef struct PadOffset { int left; @@ -476,7 +476,7 @@ typedef struct MB_MODE_INFO { */ uint8_t mb_precision_set; - /*! \brief The flag to signal if DMVR is used for the inter prediction. */ + /*! \brief The flag to signal if SMVR is used for the inter prediction. */ uint8_t refinemv_flag; /*! \brief The motion mode used by the inter prediction. */ @@ -2298,7 +2298,7 @@ typedef struct macroblockd { int16_t *opfl_gxy_bufs; /*! * Temporary buffers used to store intermediate prediction data calculated - * during the OPFL/DMVR. + * during the OPFL/SMVR. */ uint16_t *opfl_dst_bufs; diff --git a/av2/common/enums.h b/av2/common/enums.h index 7aaee8f46a..3dc219a8c4 100644 --- a/av2/common/enums.h +++ b/av2/common/enums.h @@ -73,7 +73,7 @@ extern "C" { #define SUBBLK_REF_EXT_LINES 2 -#define DMVR_SEARCH_EXT_LINES 2 +#define SMVR_SEARCH_EXT_LINES 2 #define WARP_STATS_BUFFER_SIZE \ (MAX_WARP_REF_CANDIDATES * NUM_WARP_PRECISION_MODES) @@ -261,7 +261,7 @@ enum { #define IBC_RIGHT_INTERP_BORDER 1 #define IBC_BOTTOM_INTERP_BORDER 1 -#define DMVR_SEARCH_NUM_NEIGHBORS 24 +#define SMVR_SEARCH_NUM_NEIGHBORS 24 #define MULTI_SEQ_CONFIG_BITS 6 #define PROFILE_BITS 5 #define CONFIG_BITS 6 diff --git a/av2/common/reconinter.c b/av2/common/reconinter.c index 2fa0d8de3a..71742fcb11 100644 --- a/av2/common/reconinter.c +++ b/av2/common/reconinter.c @@ -2742,9 +2742,9 @@ void apply_mv_refinement(const AV2_COMMON *cm, MACROBLOCKD *xd, int plane, bh += 2 * SUBBLK_REF_EXT_LINES; const int dsts_offset = (REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) * + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) * (REFINEMV_SUBBLOCK_HEIGHT + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)); + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)); uint16_t *dsts0[2] = { dst_ref0, dst_ref0 + dsts_offset }; uint16_t *dsts1[2] = { dst_ref1, dst_ref1 + dsts_offset }; int dsts_cur = 0; @@ -2797,7 +2797,7 @@ void apply_mv_refinement(const AV2_COMMON *cm, MACROBLOCKD *xd, int plane, // select sad0 Set sad0 a large value so // that it does not be selected const int dst_stride = REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES); + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES); int sad0 = INT32_MAX >> 1; if (!switchable_refinemv_flags) { av2_refinemv_build_predictors( @@ -2830,7 +2830,7 @@ void apply_mv_refinement(const AV2_COMMON *cm, MACROBLOCKD *xd, int plane, refined_mv[0] = center_mvs[0]; refined_mv[1] = center_mvs[1]; - static const MV neighbors[DMVR_SEARCH_NUM_NEIGHBORS] = { + static const MV neighbors[SMVR_SEARCH_NUM_NEIGHBORS] = { { -2, -2 }, { -2, -1 }, { -2, 0 }, { -2, 1 }, { -2, 2 }, { -1, -2 }, { -1, -1 }, { -1, 0 }, { -1, 1 }, { -1, 2 }, { 0, -2 }, { 0, -1 }, { 0, 1 }, { 0, 2 }, { 1, -2 }, { 1, -1 }, { 1, 0 }, { 1, 1 }, @@ -2853,15 +2853,15 @@ void apply_mv_refinement(const AV2_COMMON *cm, MACROBLOCKD *xd, int plane, inter_pred_params[ref].block_height = ext_bh; inter_pred_params[ref].original_pu_width = pu_width + 4; inter_pred_params[ref].original_pu_height = pu_height + 4; - refined_mv[ref].row -= 8 * DMVR_SEARCH_EXT_LINES; - refined_mv[ref].col -= 8 * DMVR_SEARCH_EXT_LINES; + refined_mv[ref].row -= 8 * SMVR_SEARCH_EXT_LINES; + refined_mv[ref].col -= 8 * SMVR_SEARCH_EXT_LINES; } av2_refinemv_build_predictors(xd, mi_x, mi_y, mc_buf, calc_subpel_params_func, dst_ref0, dst_ref1, dst_stride, refined_mv[0], refined_mv[1], inter_pred_params); - for (int idx = 0; idx < DMVR_SEARCH_NUM_NEIGHBORS; ++idx) { + for (int idx = 0; idx < SMVR_SEARCH_NUM_NEIGHBORS; ++idx) { const MV offset = { neighbors[idx].row, neighbors[idx].col }; uint16_t *dst_ref0_offset = @@ -3030,7 +3030,7 @@ static void build_inter_predictors_8x8_and_bigger_refinemv( dst_ref1, &refinemv_ref0, &refinemv_ref1, best_mv_ref, pu_width, pu_height, ref_area); if (sb_refined_mv) { - // store the DMVR refined MV so that + // store the SMVR refined MV so that // chroma can use it sb_refined_mv[0] = best_mv_ref[0]; sb_refined_mv[1] = best_mv_ref[1]; @@ -3120,7 +3120,7 @@ static void build_inter_predictors_8x8_and_bigger_refinemv( dst0 = refinemv_ref0; dst1 = refinemv_ref1; opfl_dst_stride = REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES); + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES); do_pred = 0; } @@ -3310,15 +3310,15 @@ static void build_inter_predictors_8x8_and_bigger( uint16_t dst0_16_refinemv[2 * (REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) * + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) * (REFINEMV_SUBBLOCK_HEIGHT + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES))]; + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES))]; uint16_t dst1_16_refinemv[2 * (REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) * + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) * (REFINEMV_SUBBLOCK_HEIGHT + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES))]; + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES))]; ReferenceArea ref_area[2]; CONV_BUF_TYPE *tmp_conv_dst = xd->tmp_conv_dst; diff --git a/av2/common/reconinter.h b/av2/common/reconinter.h index 245ce08770..cf3591101d 100644 --- a/av2/common/reconinter.h +++ b/av2/common/reconinter.h @@ -691,7 +691,7 @@ static INLINE int is_refinemv_allowed_reference(const AV2_COMMON *cm, int d0, d1; int is_tip = (mbmi->ref_frame[0] == TIP_FRAME); // In error resilient mode, whether a frame is scaled may be unknown, and the - // following logic for parsing is not reliable, so DMVR is disabled. + // following logic for parsing is not reliable, so SMVR is disabled. if (frame_is_sframe(cm)) return 0; if ((get_ref_frame_buf(cm, mbmi->ref_frame[0]) != NULL && @@ -725,7 +725,7 @@ static INLINE int is_refinemv_allowed_reference(const AV2_COMMON *cm, ref1->display_order_hint); } - // reference frame has to be both sides to apply dmvr + // reference frame has to be both sides to apply refinemv if (!((d0 <= 0) ^ (d1 <= 0))) return 0; // Current implementation only supports when both has the same distance diff --git a/av2/common/tip.c b/av2/common/tip.c index a46176bf84..fe3e2d098a 100644 --- a/av2/common/tip.c +++ b/av2/common/tip.c @@ -490,7 +490,7 @@ static AVM_INLINE void tip_build_inter_predictors_8x8( dst0 = refinemv_ref0; dst1 = refinemv_ref1; opfl_dst_stride = REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES); + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES); do_pred = 0; } @@ -627,15 +627,15 @@ static AVM_INLINE void tip_build_inter_predictors_8x8_and_bigger( uint16_t dst0_16_refinemv[2 * (REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) * + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) * (REFINEMV_SUBBLOCK_HEIGHT + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES))]; + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES))]; uint16_t dst1_16_refinemv[2 * (REFINEMV_SUBBLOCK_WIDTH + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES)) * + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES)) * (REFINEMV_SUBBLOCK_HEIGHT + - 2 * (SUBBLK_REF_EXT_LINES + DMVR_SEARCH_EXT_LINES))]; + 2 * (SUBBLK_REF_EXT_LINES + SMVR_SEARCH_EXT_LINES))]; const int apply_refinemv = (cm->seq_params.enable_refinemv && cm->seq_params.enable_tip_refinemv && diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index f56533e75a..4f617ffa4a 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -630,7 +630,7 @@ static void copy_tip_worker_data(AV2Decoder *pbi, AV2_COMMON *cm) { tip_worker_data->mc_buf[0] = thread_data->td->mc_buf[0]; tip_worker_data->mc_buf[1] = thread_data->td->mc_buf[1]; tip_worker_data->tmp_conv_dst = thread_data->td->tmp_conv_dst; - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. tip_worker_data->xd.opfl_vxy_bufs = thread_data->td->opfl_vxy_bufs; tip_worker_data->xd.opfl_gxy_bufs = thread_data->td->opfl_gxy_bufs; tip_worker_data->xd.opfl_dst_bufs = thread_data->td->opfl_dst_bufs; @@ -4762,7 +4762,7 @@ static const uint8_t *decode_tiles(AV2Decoder *pbi, const uint8_t *data, td->dcb.mc_buf[1] = td->mc_buf[1]; td->dcb.xd.tmp_conv_dst = td->tmp_conv_dst; - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. td->dcb.xd.opfl_vxy_bufs = td->opfl_vxy_bufs; td->dcb.xd.opfl_gxy_bufs = td->opfl_gxy_bufs; td->dcb.xd.opfl_dst_bufs = td->opfl_dst_bufs; @@ -5321,7 +5321,7 @@ void av2_free_mc_tmp_buf(ThreadData *thread_data) { thread_data->tmp_conv_dst = NULL; } -// Free-up the temporary buffers created for DMVR and OPFL processing. +// Free-up the temporary buffers created for SMVR and OPFL processing. void av2_free_opfl_tmp_bufs(ThreadData *thread_data) { avm_free(thread_data->opfl_vxy_bufs); thread_data->opfl_vxy_bufs = NULL; @@ -5333,7 +5333,7 @@ void av2_free_opfl_tmp_bufs(ThreadData *thread_data) { thread_data->opfl_dst_bufs = NULL; } -// Allocate memory for temporary buffers used during the DMVR and OPFL +// Allocate memory for temporary buffers used during the SMVR and OPFL // processing. static AVM_INLINE void allocate_opfl_tmp_bufs(AV2_COMMON *const cm, ThreadData *thread_data) { @@ -5385,7 +5385,7 @@ static AVM_INLINE void reset_dec_workers(AV2Decoder *pbi, thread_data->td->dcb.mc_buf[0] = thread_data->td->mc_buf[0]; thread_data->td->dcb.mc_buf[1] = thread_data->td->mc_buf[1]; thread_data->td->dcb.xd.tmp_conv_dst = thread_data->td->tmp_conv_dst; - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. thread_data->td->dcb.xd.opfl_vxy_bufs = thread_data->td->opfl_vxy_bufs; thread_data->td->dcb.xd.opfl_gxy_bufs = thread_data->td->opfl_gxy_bufs; thread_data->td->dcb.xd.opfl_dst_bufs = thread_data->td->opfl_dst_bufs; diff --git a/av2/decoder/decoder.h b/av2/decoder/decoder.h index 5672354c17..656fc12468 100644 --- a/av2/decoder/decoder.h +++ b/av2/decoder/decoder.h @@ -134,7 +134,7 @@ typedef struct ThreadData { // Temporary buffers used to store the OPFL gradient information. int16_t *opfl_gxy_bufs; // Temporary buffers used to store intermediate prediction data calculated - // during the OPFL/DMVR. + // during the OPFL/SMVR. uint16_t *opfl_dst_bufs; decode_block_visitor_fn_t read_coeffs_tx_intra_block_visit; diff --git a/av2/encoder/block.h b/av2/encoder/block.h index 8d75f4e5e2..e17322d3ca 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -1374,7 +1374,7 @@ typedef struct macroblock { //! Temporary buffers used to store the OPFL gradient information. int16_t *opfl_gxy_bufs; //! Temporary buffers used to store intermediate prediction data calculated - //! during the OPFL/DMVR. + //! during the OPFL/SMVR. uint16_t *opfl_dst_bufs; /*! \brief Temporary buffer to hold prediction. * diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index d636ded207..e9b35f7425 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -51,7 +51,7 @@ static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, if (is_global_mv_block(mi, wm->wmtype) != st->is_global[i]) return 0; } - // TODO(any): Consider tools like OPFL, DMVR in the match criteria. + // TODO(any): Consider tools like OPFL, SMVR in the match criteria. // Store the stats for COMPOUND_AVERAGE and COMPOUND_DISTWTD for (int comp_type = COMPOUND_AVERAGE; comp_type < COMPOUND_WEDGE; diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index f8791f1ebb..2f922fc768 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1325,7 +1325,7 @@ void av2_change_config(struct AV2_COMP *cpi, const AV2EncoderConfig *oxcf) { avm_malloc(MAX_TX_SQUARE * sizeof(*x->coef_info))); } - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. if (x->opfl_vxy_bufs == NULL) { CHECK_MEM_ERROR( cm, x->opfl_vxy_bufs, @@ -1809,7 +1809,7 @@ static AVM_INLINE void free_thread_data(AV2_COMP *cpi) { avm_free(thread_data->td->upsample_pred); avm_free(thread_data->td->coef_info); - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. avm_free(thread_data->td->opfl_vxy_bufs); avm_free(thread_data->td->opfl_gxy_bufs); avm_free(thread_data->td->opfl_dst_bufs); diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index 15df43f57f..0ec1e1600c 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -1647,7 +1647,7 @@ typedef struct ThreadData { // Temporary buffers used to store the OPFL gradient information. int16_t *opfl_gxy_bufs; // Temporary buffers used to store intermediate prediction data calculated - // during the OPFL/DMVR. + // during the OPFL/SMVR. uint16_t *opfl_dst_bufs; uint16_t *tmp_pred_bufs[2]; // Buffer used for upsampled prediction. diff --git a/av2/encoder/encoder_alloc.h b/av2/encoder/encoder_alloc.h index a55cd13f18..1d8ac29469 100644 --- a/av2/encoder/encoder_alloc.h +++ b/av2/encoder/encoder_alloc.h @@ -247,7 +247,7 @@ static AVM_INLINE void dealloc_compressor_data(AV2_COMP *cpi) { avm_free(cpi->td.mb.upsample_pred); avm_free(cpi->td.mb.coef_info); - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. avm_free(cpi->td.mb.opfl_vxy_bufs); avm_free(cpi->td.mb.opfl_gxy_bufs); avm_free(cpi->td.mb.opfl_dst_bufs); diff --git a/av2/encoder/ethread.c b/av2/encoder/ethread.c index 5a19f5723f..ecf87c570b 100644 --- a/av2/encoder/ethread.c +++ b/av2/encoder/ethread.c @@ -602,7 +602,7 @@ static AVM_INLINE void create_enc_workers(AV2_COMP *cpi, int num_workers) { cm, thread_data->td->coef_info, avm_malloc(MAX_TX_SQUARE * sizeof(*thread_data->td->coef_info))); - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. CHECK_MEM_ERROR( cm, thread_data->td->opfl_vxy_bufs, avm_memalign( @@ -846,7 +846,7 @@ static AVM_INLINE void prepare_enc_workers(AV2_COMP *cpi, AVxWorkerHook hook, thread_data->td->mb.tmp_conv_dst = thread_data->td->tmp_conv_dst; thread_data->td->mb.upsample_pred = thread_data->td->upsample_pred; thread_data->td->mb.coef_info = thread_data->td->coef_info; - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. thread_data->td->mb.opfl_vxy_bufs = thread_data->td->opfl_vxy_bufs; thread_data->td->mb.opfl_gxy_bufs = thread_data->td->opfl_gxy_bufs; thread_data->td->mb.opfl_dst_bufs = thread_data->td->opfl_dst_bufs; @@ -859,7 +859,7 @@ static AVM_INLINE void prepare_enc_workers(AV2_COMP *cpi, AVxWorkerHook hook, thread_data->td->mb.e_mbd.tmp_conv_dst = thread_data->td->mb.tmp_conv_dst; thread_data->td->mb.e_mbd.tmp_upsample_pred = thread_data->td->mb.upsample_pred; - // Temporary buffers used during the DMVR and OPFL processing. + // Temporary buffers used during the SMVR and OPFL processing. thread_data->td->mb.e_mbd.opfl_vxy_bufs = thread_data->td->mb.opfl_vxy_bufs; thread_data->td->mb.e_mbd.opfl_gxy_bufs = diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 0aca26ea1c..dcec51060e 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -4852,7 +4852,6 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, rd_stats->rate += drl_cost; rd_stats->rate += jmvd_scale_mode_cost; - if (refinemv_loop && !switchable_refinemv_flag(cm, mbmi)) return; mbmi->refinemv_flag = switchable_refinemv_flag(cm, mbmi) ? refinemv_loop : get_default_refinemv_flag(cm, mbmi); @@ -5493,7 +5492,7 @@ static int64_t handle_inter_mode( } } - // Get the default value of DMVR flag based on mode + // Get the default value of SMVR flag based on mode assert(mbmi->motion_mode == SIMPLE_TRANSLATION); mbmi->refinemv_flag = get_default_refinemv_flag(cm, mbmi); @@ -5662,8 +5661,13 @@ static int64_t handle_inter_mode( this_mode, refs, flex_mv_cost, drl_cost, jmvd_scale_mode_cost, base_rate, cur_mv, rate_mv, &base_mbmi, 0, num_planes, args->skip_motion_mode); + for (int refinemv_loop = 0; refinemv_loop < REFINEMV_NUM_MODES; refinemv_loop++) { + if (refinemv_loop == 1 && + (!switchable_refinemv_flag(cm, mbmi) || + cpi->sf.inter_sf.disable_switchable_refinemv)) + continue; if (refinemv_loop == 1 && cpi->sf.inter_sf.prune_refinemv_by_ref_idx && !(base_mbmi.ref_frame[0] == 0 && diff --git a/av2/encoder/reconinter_enc.c b/av2/encoder/reconinter_enc.c index f7e529bb74..cf9a2ffe2c 100644 --- a/av2/encoder/reconinter_enc.c +++ b/av2/encoder/reconinter_enc.c @@ -200,27 +200,27 @@ void av2_enc_build_inter_predictor(const AV2_COMMON *cm, MACROBLOCKD *xd, int is_refinemv_supported = mbmi->refinemv_flag && !is_intrabc_block(mbmi, xd->tree_type); - int need_chroma_dmvr = xd->is_chroma_ref && - (plane_from != 0 || plane_to != 0) && - is_refinemv_supported; - assert(IMPLIES(need_chroma_dmvr, !is_interintra_pred(mbmi))); - - if (need_chroma_dmvr && default_refinemv_modes(mbmi)) - need_chroma_dmvr &= (mbmi->comp_group_idx == 0 && - mbmi->interinter_comp.type == COMPOUND_AVERAGE); + int need_chroma_refinemv = xd->is_chroma_ref && + (plane_from != 0 || plane_to != 0) && + is_refinemv_supported; + assert(IMPLIES(need_chroma_refinemv, !is_interintra_pred(mbmi))); + + if (need_chroma_refinemv && default_refinemv_modes(mbmi)) + need_chroma_refinemv &= (mbmi->comp_group_idx == 0 && + mbmi->interinter_comp.type == COMPOUND_AVERAGE); // Set the prediction buffer as reference frames of TIP_FRAME if (is_tip_ref_frame(mbmi->ref_frame[0])) { setup_pred_planes_for_tip(&cm->tip_ref, xd, plane_from, plane_to + 1, mi_col, mi_row); } - if (need_chroma_dmvr) { + if (need_chroma_refinemv) { fill_subblock_refine_mv(xd->refinemv_subinfo, xd->plane[0].width, xd->plane[0].height, mbmi->mv[0].as_mv, mbmi->mv[1].as_mv); // if luma build is not available, we need to get refinemv based on luma - // need to search DMVR here based on luma plane + // need to search SMVR here based on luma plane if (plane_from != 0) { enc_build_inter_predictors(cm, xd, 0, xd->mi[0], ctx, 1, xd->plane[0].width, xd->plane[0].height, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 8b9e0621fe..47a75418ee 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -341,6 +341,7 @@ static void set_good_speed_features_framesize_independent( // TODO (Yeqing Wu): need to be tuned for speed > 1. sf->inter_sf.skip_compound_prune_top_refs_num_ref0 = 1; sf->inter_sf.skip_compound_prune_top_refs_num_ref1 = 2; + sf->inter_sf.disable_switchable_refinemv = 1; sf->inter_sf.prune_refinemv_by_ref_idx = 1; sf->inter_sf.prune_interintra_by_ref_idx = 1; sf->inter_sf.prune_warp_delta_by_ref_idx = 1; @@ -482,7 +483,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.skip_repeated_ref_mv = 1; sf->inter_sf.skip_repeated_full_newmv = 1; // TODO(any): Set this speed feature to 2 after correcting the match - // criteria by considering tools like OPFL, DMVR. + // criteria by considering tools like OPFL, SMVR. sf->inter_sf.reuse_compound_type_data = 0; sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : (is_boosted_arf2_bwd_type ? 1 : 2); @@ -738,6 +739,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->skip_temporary_pred_for_opfl = 0; inter_sf->reduce_inter_modes = 0; inter_sf->alt_ref_search_fp = 0; + inter_sf->disable_switchable_refinemv = 0; inter_sf->selective_ref_frame = 0; inter_sf->prune_newmv_modes_using_prior_rd = 0; inter_sf->share_motion_mode_prune_pool = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index c07035d59e..3c4ea7a863 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -577,6 +577,9 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Prune reference frames for ALTREF int alt_ref_search_fp; + // Disable switchable subblock refine MV at the block level + int disable_switchable_refinemv; + // flag to skip NEWMV mode in drl if the motion search result is the same int skip_repeated_newmv; From 9e44a607ef34246307f7591d58a4e040c80ce395 Mon Sep 17 00:00:00 2001 From: leolzhao Date: Wed, 22 Jul 2026 14:43:33 -0700 Subject: [PATCH 074/205] Enhanced inter mode cache reuse (#5133) Reuse model RD when one of the following conditions are met. - Current mode is the same as the cached mode and at least one of the reference frame is the same as the cached one - All the reference frames is the same as the reference frame of the cached mode Otherwise, skip processing current mode or reference frame STATS_CHANGED Results are tested on top of 6e71b0c85924e61d9 with cpu-used = 1. ``` +---------+-------+--------+-------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+-------+--------+-------+-------+----------+----------+ | A1 | 0.03% | -0.05% | 0.00% | 0.03% | 97.8% | 100% | | A2 | 0.03% | 0.41% | 0.13% | 0.05% | 96.6% | 100% | +---------+-------+--------+-------+-------+----------+----------+ ``` --- av2/encoder/rdopt.c | 57 ++++++++++++++++++++++++++++-------- av2/encoder/speed_features.c | 3 ++ av2/encoder/speed_features.h | 8 +++++ 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index dcec51060e..f705d70f2a 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -7495,12 +7495,30 @@ static INLINE int is_mode_intra(PREDICTION_MODE mode) { return mode < INTRA_MODE_END; } +// Check whether one of the reference frames are the same as that of the cached +// mode +static INLINE int is_ref_frame_same_as_cache( + const MB_MODE_INFO *cached_mi2, const MV_REFERENCE_FRAME *ref_frame, + int this_mode_is_single) { + const int cached_mode_is_single = is_inter_singleref_mode(cached_mi2->mode); + if (ref_frame[0] == cached_mi2->ref_frame[0]) return 1; + if (!cached_mode_is_single && (ref_frame[0] == cached_mi2->ref_frame[1])) + return 1; + if (!this_mode_is_single) { + if (ref_frame[1] == cached_mi2->ref_frame[0]) return 1; + if (!cached_mode_is_single && (ref_frame[1] == cached_mi2->ref_frame[1])) + return 1; + } + return 0; +} + // Reuse the prediction mode in cache. // Returns 0 if no pruning is done, 1 if we are skipping the current mod // completely, 2 if we skip compound only, but still try single motion modes static INLINE int skip_inter_mode_with_cached_mode( - const AV2_COMMON *cm, const MACROBLOCK *x, PREDICTION_MODE mode, + const AV2_COMP *cpi, const MACROBLOCK *x, PREDICTION_MODE mode, const MV_REFERENCE_FRAME *ref_frame) { + const AV2_COMMON *const cm = &cpi->common; const MB_MODE_INFO *cached_mi = x->inter_mode_cache[0]; // If there is no cache, then no pruning is possible. @@ -7517,19 +7535,32 @@ static INLINE int skip_inter_mode_with_cached_mode( if (cached_mi2 && !is_mode_intra(cached_mi2->mode)) { const int cached_mode_is_single = is_inter_singleref_mode(cached_mi2->mode); - if (mode == cached_mi2->mode) return 0; - // if (mode == cached_mi2->mode) { - if (ref_frame[0] == cached_mi2->ref_frame[0]) return 0; - if (!cached_mode_is_single && - (ref_frame[0] == cached_mi2->ref_frame[1])) - return 0; - if (!this_mode_is_single) { - if (ref_frame[1] == cached_mi2->ref_frame[0]) return 0; - if (!cached_mode_is_single && - (ref_frame[1] == cached_mi2->ref_frame[1])) + if (cpi->sf.inter_sf.enable_enhanced_inter_mode_cache_reuse) { + // For single prediction mode, when reference frame is the same, + // return 0. + // For compound prediction mode, when both reference frames + // are the same, return 0. + if (cached_mode_is_single) { + if (ref_frame[0] == cached_mi2->ref_frame[0]) return 0; + } else { + if (ref_frame[0] == cached_mi2->ref_frame[0] && + ref_frame[1] == cached_mi2->ref_frame[1]) + return 0; + } + // When prediction mode is the same, if one + // of the reference frames are the same, return 0 + if (mode == cached_mi2->mode) { + if (is_ref_frame_same_as_cache(cached_mi2, ref_frame, + this_mode_is_single)) + return 0; + } + } else { + // Original cache reuse logic. + if (mode == cached_mi2->mode) return 0; + if (is_ref_frame_same_as_cache(cached_mi2, ref_frame, + this_mode_is_single)) return 0; } - //} } } } @@ -7607,7 +7638,7 @@ static int inter_mode_search_order_independent_skip( return 1; } const int cached_skip_ret = - skip_inter_mode_with_cached_mode(cm, x, mode, ref_frame); + skip_inter_mode_with_cached_mode(cpi, x, mode, ref_frame); if (cached_skip_ret > 0) { return cached_skip_ret; } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 47a75418ee..0c220b6c96 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -377,6 +377,8 @@ static void set_good_speed_features_framesize_independent( // Cap the DRL depth for a fresh single-ref NEWMV search; reuse the // nearest searched result beyond the cap. sf->mv_sf.newmv_drl_search_limit = 2; + + sf->inter_sf.enable_enhanced_inter_mode_cache_reuse = 1; sf->inter_sf.skip_temporary_pred_for_opfl = 1; // Enable the optimized inter-SDP fast method (requires >=1 intra coded @@ -782,6 +784,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->skip_mode_eval_based_on_rate_cost = 0; inter_sf->reuse_erp_mode_flag = 0; inter_sf->prune_warpmv_prob_thresh = 32; + inter_sf->enable_enhanced_inter_mode_cache_reuse = 0; } static AVM_INLINE void init_interp_sf(INTERP_FILTER_SPEED_FEATURES *interp_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 3c4ea7a863..6a6a62284a 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -743,6 +743,14 @@ typedef struct INTER_MODE_SPEED_FEATURES { // if a block with the same (mi_row, mi_col, bsize) is visited more than one // by the encoder. int reuse_erp_mode_flag; + + // When set, enable enhanced inter mode cache reuse logic in + // skip_inter_mode_with_cached_mode(). It allows additional cache hits based + // on matching reference frames against single-ref/compound cached modes, + // which can avoid skipping useful inter modes during cache-based pruning. + // 0: original cache reuse logic. + // 1: enhanced cache reuse logic (more modes are searched). + int enable_enhanced_inter_mode_cache_reuse; } INTER_MODE_SPEED_FEATURES; typedef struct INTERP_FILTER_SPEED_FEATURES { From 7180f49594225daf2ce31e18de8a483cdc9aa769 Mon Sep 17 00:00:00 2001 From: Mudassir Galaganath Date: Thu, 23 Jul 2026 04:25:11 +0530 Subject: [PATCH 075/205] Refactor search_tx_type() (#5136) This pull request refactors search_tx_type() to improve code readability, reduce search loop complexity, fix compilation errors under debug configuration (COLLECT_TX_SIZE_DATA). --- av2/encoder/tx_search.c | 398 ++++++++++++++++++++-------------------- av2/encoder/tx_search.h | 55 ++++++ 2 files changed, 249 insertions(+), 204 deletions(-) diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index c9975fc30e..f17736674a 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -2091,9 +2091,6 @@ static bool prune_sec_txfm_rd_eval(int64_t sec_tx_sse_to_be_coded, return false; } -// Encoder-only variable to reudce the search complexity of IST -#define IST_REDUCED_SEARCH_SET_SIZE 4 - // Return 1 if primary FP-quant is guaranteed to produce eob = 0 across the // IST window, 0 otherwise. Uses an L-infinity scan of the post-primary // coefficients against the FP quantizer's kill threshold @@ -2117,6 +2114,82 @@ static INLINE int check_primary_quant_all_zero(const tran_low_t *coeff, return 1; } +// Prune transform type search based on EOB count and block properties. +static AVM_INLINE bool prune_tx_search_by_eob( + MACROBLOCKD *const xd, int blk_row, int blk_col, TX_SIZE tx_size, int eob, + int plane, bool is_inter, TX_TYPE primary_tx_type, int stx, + bool *const eob_found, bool prune_intra_ist_stx_by_zero_eob) { + if (plane == AVM_PLANE_Y && !is_inter && + (eob == 1 || (prune_intra_ist_stx_by_zero_eob && eob == 0))) { + if (primary_tx_type == DCT_DCT && stx == 0) *eob_found = true; + const bool kill = + (eob == 1) ? (primary_tx_type != DCT_DCT || stx > 0) : (stx > 0); + if (kill) { + update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); + return true; + } + } + if (eob <= 3 && plane == AVM_PLANE_Y && is_inter && stx) { + update_txk_array(xd, blk_row, blk_col, tx_size, primary_tx_type); + return true; + } + return false; +} + +// Prune rectangular transform types for 32xN/Nx32 and 64xN/Nx64 blocks. +static AVM_INLINE bool prune_rectangular_tx_type( + int tx_idx, TxSetType tx_set_type, int plane, bool is_fsc, + bool is_rect_horz, uint16_t allowed_tx_mask, TX_TYPE best_tx_type, + TX_TYPE *const primary_tx_type, TX_TYPE *const best_long_side_tx_type) { + if (tx_set_type == EXT_TX_SET_LONG_SIDE_32 && plane == AVM_PLANE_Y && + !is_fsc) { + // tx_mask_32[0:is_rect_horz==false, 1: is_rect_horz==true][0: + // long_side_tx_type==DCT_DCT: 1: long_side_tx_type==Identity] + const uint16_t tx_mask_32[2][2] = { + { 0x0425 & allowed_tx_mask, 0xAA00 & allowed_tx_mask }, + { 0x0813 & allowed_tx_mask, 0x5600 & allowed_tx_mask } + }; + const TX_TYPE txk_map_rect_horz_32[TX_TYPES] = { + DCT_DCT, V_DCT, ADST_DCT, DCT_ADST, + ADST_ADST, FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, + ADST_FLIPADST, FLIPADST_ADST, IDTX, H_DCT, + V_ADST, H_ADST, V_FLIPADST, H_FLIPADST + }; + const TX_TYPE txk_map_rect_vert_32[TX_TYPES] = { + DCT_DCT, H_DCT, ADST_DCT, DCT_ADST, + ADST_ADST, FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, + ADST_FLIPADST, FLIPADST_ADST, IDTX, V_DCT, + V_ADST, H_ADST, V_FLIPADST, H_FLIPADST + }; + assert(tx_idx < TX_TYPES); + *primary_tx_type = is_rect_horz ? txk_map_rect_horz_32[tx_idx] + : txk_map_rect_vert_32[tx_idx]; + if (tx_idx == 2) { + *best_long_side_tx_type = get_primary_tx_type(best_tx_type); + } + if (tx_idx > 1 && + tx_mask_32[is_rect_horz][*best_long_side_tx_type != DCT_DCT] != 0 && + (!(tx_mask_32[is_rect_horz][*best_long_side_tx_type != DCT_DCT] & + (1 << *primary_tx_type)))) { + return true; + } + } + + if (tx_set_type == EXT_TX_SET_LONG_SIDE_64 || + tx_set_type == EXT_TX_SET_LONG_SIDE_32) { + if (*primary_tx_type == DCT_FLIPADST && + get_primary_tx_type(best_tx_type) == DCT_ADST) { + return true; + } + if (*primary_tx_type == FLIPADST_DCT && + get_primary_tx_type(best_tx_type) == ADST_DCT) { + return true; + } + } + + return false; +} + // Search for the best transform type for a given transform block. // This function can be used for both inter and intra, both luma and chroma. static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, @@ -2126,37 +2199,56 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, FAST_TX_SEARCH_MODE ftxs_mode, int skip_trellis, int64_t ref_best_rd, RD_STATS *best_rd_stats) { const AV2_COMMON *cm = &cpi->common; + const TX_SPEED_FEATURES *const tx_sf = &cpi->sf.tx_sf; MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; const TxfmSearchParams *txfm_params = &x->txfm_search_params; + const bool is_fsc = mbmi->fsc_mode[xd->tree_type == CHROMA_PART]; + const PREDICTION_MODE intra_mode = get_intra_mode(mbmi, plane); + const bool is_inter = is_inter_block(mbmi, xd->tree_type); + const bool is_lossless = xd->lossless[mbmi->segment_id]; int64_t best_rd = INT64_MAX; uint16_t best_eob = 0; TX_TYPE best_tx_type = DCT_DCT; int rate_cost = 0; // The buffer used to swap dqcoeff in macroblockd_plane so we can keep dqcoeff - // of the best tx_type + // of the best tx_type. DECLARE_ALIGNED(32, tran_low_t, this_dqcoeff[MAX_SB_SQUARE]); - struct macroblock_plane *const p = &x->plane[plane]; - tran_low_t *orig_dqcoeff = p->dqcoeff; + struct macroblock_plane *const mb_plane = &x->plane[plane]; + tran_low_t *orig_dqcoeff = mb_plane->dqcoeff; tran_low_t *best_dqcoeff = this_dqcoeff; const int tx_type_map_idx = plane ? 0 : blk_row * xd->tx_type_map_stride + blk_col; av2_invalid_rd_stats(best_rd_stats); - skip_trellis |= !is_trellis_used(cpi->optimize_seg_arr[xd->mi[0]->segment_id], - DRY_RUN_NORMAL); + skip_trellis |= + !is_trellis_used(cpi->optimize_seg_arr[mbmi->segment_id], DRY_RUN_NORMAL); uint8_t best_txb_ctx = 0; - // txk_allowed = TX_TYPES: >1 tx types are allowed + // txk_allowed = TX_TYPES: >1 tx types are allowed. // txk_allowed < TX_TYPES: only that specific tx type is allowed. TX_TYPE txk_allowed = TX_TYPES; - int txk_map[TX_TYPES] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - }; + int txk_map[TX_TYPES] = { DCT_DCT, + ADST_DCT, + DCT_ADST, + ADST_ADST, + FLIPADST_DCT, + DCT_FLIPADST, + FLIPADST_FLIPADST, + ADST_FLIPADST, + FLIPADST_ADST, + IDTX, + V_DCT, + H_DCT, + V_ADST, + H_ADST, + V_FLIPADST, + H_FLIPADST }; + const int dequant_shift = xd->bd - 5; const int qstep = - ROUND_POWER_OF_TWO(x->plane[plane].dequant_QTX[1], QUANT_TABLE_BITS) >> + ROUND_POWER_OF_TWO(mb_plane->dequant_QTX[1], QUANT_TABLE_BITS) >> dequant_shift; const uint8_t txw = tx_size_wide[tx_size]; @@ -2173,13 +2265,13 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, &per_px_mean, &dc_only_blk, cm); if (best_rd_stats->skip_txfm == 1) { // Ensure that xd->tx_type_map is initialized. - if (plane == 0) update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); + if (plane == AVM_PLANE_Y) + update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); return; } } else { block_sse = pixel_diff_dist(cm, x, plane, blk_row, blk_col, plane_bsize, - tx_size_wide[tx_size], tx_size_high[tx_size], - &block_mse_q8); + txw, txh, &block_mse_q8); assert(block_mse_q8 != UINT_MAX); } @@ -2204,8 +2296,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // effective. // TODO(any): Experiment with variance and mean based thresholds int perform_block_coeff_opt = 0; - if (tcq_enable(cm->features.tcq_mode, xd->lossless[xd->mi[0]->segment_id], - plane, TX_CLASS_2D)) { + if (tcq_enable(cm->features.tcq_mode, is_lossless, plane, TX_CLASS_2D)) { perform_block_coeff_opt = 1; } else { perform_block_coeff_opt = @@ -2240,7 +2331,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, (txk_allowed < TX_TYPES || allowed_tx_mask == 0x0001)) calc_pixel_domain_distortion_final = use_transform_domain_distortion = 0; - const uint16_t *eobs_ptr = x->plane[plane].eobs; + const uint16_t *eobs_ptr = mb_plane->eobs; TxfmParam txfm_param; QUANT_PARAM quant_param; @@ -2253,101 +2344,62 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, skip_trellis ? xform_quant_b : AV2_XFORM_QUANT_FP, cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); - int eob_found = 0; - const int is_inter = is_inter_block(mbmi, xd->tree_type); + bool eob_found = false; const TxSetType tx_set_type = av2_get_ext_tx_set_type( tx_size, is_inter, cm->features.reduced_tx_set_used); - const int is_rect_horz = txw > txh; - - int txk_map_rect_horz_32[TX_TYPES] = { 0, 10, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 11, 12, 13, 14, 15 }; - int txk_map_rect_vert_32[TX_TYPES] = { 0, 11, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 12, 13, 14, 15 }; - // tx_mask_32[0:is_rect_horz==false, 1: is_rect_horz==true][0: - // long_side_tx_type==DCT_DCT: 1: long_side_tx_type==Identity] - const uint16_t tx_mask_32[2][2] = { - { 0x0425 & allowed_tx_mask, 0xAA00 & allowed_tx_mask }, - { 0x0813 & allowed_tx_mask, 0x5600 & allowed_tx_mask } - }; + const bool is_rect_horz = txw > txh; + TX_TYPE best_long_side_tx_type = DCT_DCT; const int is_border_block = get_visible_dimensions( xd, plane, blk_col, blk_row, txw, txh, cm->width, cm->height, NULL, NULL); + xd->enable_ist = (is_inter ? cm->seq_params.enable_inter_ist + : cm->seq_params.enable_ist) && + !is_fsc && !is_lossless; + const int max_eob = av2_get_max_eob(tx_size); // Iterate through all transform type candidates. - for (int idx = 0; idx < TX_TYPES; ++idx) { - TX_TYPE primary_tx_type = (TX_TYPE)txk_map[idx]; - if (tx_set_type == EXT_TX_SET_LONG_SIDE_32 && plane == PLANE_TYPE_Y && - !mbmi->fsc_mode[xd->tree_type == CHROMA_PART]) { - primary_tx_type = is_rect_horz ? (TX_TYPE)txk_map_rect_horz_32[idx] - : (TX_TYPE)txk_map_rect_vert_32[idx]; - if (idx == 2) { - best_long_side_tx_type = get_primary_tx_type(best_tx_type); - } - if (idx > 1 && - tx_mask_32[is_rect_horz][best_long_side_tx_type != DCT_DCT] != 0 && - (!(tx_mask_32[is_rect_horz][best_long_side_tx_type != DCT_DCT] & - (1 << primary_tx_type)))) { - continue; - } + for (int tx_idx = 0; tx_idx < TX_TYPES; ++tx_idx) { + TX_TYPE primary_tx_type = (TX_TYPE)txk_map[tx_idx]; + if (prune_rectangular_tx_type(tx_idx, tx_set_type, plane, is_fsc, + is_rect_horz, allowed_tx_mask, best_tx_type, + &primary_tx_type, &best_long_side_tx_type)) { + continue; } if (!(allowed_tx_mask & (1 << primary_tx_type))) continue; - int skip_trellis_in = skip_trellis; - av2_update_trellisq(!skip_trellis_in, - skip_trellis_in ? xform_quant_b : AV2_XFORM_QUANT_FP, - cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); - if (mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && - primary_tx_type != IDTX && plane == PLANE_TYPE_Y) { + if (is_fsc && primary_tx_type != IDTX && plane == AVM_PLANE_Y) { continue; } - if (!xd->lossless[mbmi->segment_id]) { - if (!mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && - primary_tx_type == IDTX && !is_inter) { + if (!is_lossless) { + if (!is_fsc && primary_tx_type == IDTX && !is_inter) { continue; } } - if (mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && - (tx_size_wide[tx_size] > FSC_MAXWIDTH || - tx_size_high[tx_size] > FSC_MAXHEIGHT) && - plane == PLANE_TYPE_Y) { - continue; - } - if (tx_set_type == EXT_TX_SET_LONG_SIDE_64 || - tx_set_type == EXT_TX_SET_LONG_SIDE_32) { - if (primary_tx_type == DCT_FLIPADST && - get_primary_tx_type(best_tx_type) == DCT_ADST) { - continue; - } - if (primary_tx_type == FLIPADST_DCT && - get_primary_tx_type(best_tx_type) == ADST_DCT) { - continue; - } + if (is_fsc && (txw > FSC_MAXWIDTH || txh > FSC_MAXHEIGHT) && + plane == AVM_PLANE_Y) { + break; } + const int skip_trellis_in = skip_trellis; + av2_update_trellisq(!skip_trellis_in, + skip_trellis_in ? xform_quant_b : AV2_XFORM_QUANT_FP, + cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); if (is_border_block) av2_subtract_txb(x, plane, plane_bsize, blk_col, blk_row, tx_size, cm->width, cm->height, primary_tx_type); - bool skip_idx = false; - xd->enable_ist = - (is_inter_block(mbmi, xd->tree_type) ? cm->seq_params.enable_inter_ist - : cm->seq_params.enable_ist) && - !mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && - !xd->lossless[mbmi->segment_id]; - const PREDICTION_MODE intra_mode = get_intra_mode(mbmi, plane); bool skip_stx = ((primary_tx_type != DCT_DCT && primary_tx_type != ADST_ADST) || - plane != 0 || - (is_inter_block(mbmi, xd->tree_type) - ? (primary_tx_type != DCT_DCT || txw < 16 || txh < 16) - : intra_mode >= PAETH_PRED) || + plane != AVM_PLANE_Y || + (is_inter ? (primary_tx_type != DCT_DCT || txw < 16 || txh < 16) + : intra_mode >= PAETH_PRED) || dc_only_blk || (eob_found) || !xd->enable_ist); int init_set_id = 0; - int max_set_id = - (skip_stx || is_inter_block(mbmi, xd->tree_type)) ? 1 : IST_SET_SIZE; + bool skip_idx = false; + int max_set_id = (skip_stx || is_inter) ? 1 : IST_SET_SIZE; int max_set_id_ptx_type[4] = { IST_REDUCED_SEARCH_SET_SIZE, 1, 1, IST_REDUCED_SET_SIZE }; if (max_set_id == IST_SET_SIZE) { @@ -2358,7 +2410,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, for (int set_idx = init_set_id; set_idx < max_set_id; ++set_idx) { txfm_param.sec_tx_set_idx = set_idx; uint8_t set_id = set_idx; - if (!is_inter_block(mbmi, xd->tree_type)) { + if (!is_inter) { const PREDICTION_MODE mode = AVMMIN(intra_mode, SMOOTH_H_PRED); int intra_stx_mode = stx_transpose_mapping[mode]; if (txw < 8 || txh < 8) { @@ -2374,10 +2426,9 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, set_id = ist_intra_stx_mapping[intra_stx_mode][set_idx]; } } - const int max_stx = xd->enable_ist && !(eob_found) ? 4 : 1; - for (int stx = 0; stx < max_stx; ++stx) { - // Skip repeated evaluation of no secondary transform. - if (set_idx && !stx) continue; + const int max_stx = xd->enable_ist && !(eob_found) ? STX_TYPES : 1; + const int init_stx = (set_idx > 0) ? 1 : 0; + for (int stx = init_stx; stx < max_stx; ++stx) { TX_TYPE tx_type = primary_tx_type; if (eob_found) skip_stx = true; uint16_t stx_set = 0; @@ -2388,7 +2439,6 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, txfm_param.tx_type = primary_tx_type; txfm_param.sec_tx_type = stx; - TX_TYPE tx_type1 = tx_type; // does not keep set info stx_set = (primary_tx_type == ADST_ADST && stx) ? set_id + IST_SET_SIZE : set_id; set_secondary_tx_set(&tx_type, stx_set); @@ -2403,13 +2453,12 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); } - if (plane == 0) xd->tx_type_map[tx_type_map_idx] = tx_type; + if (plane == AVM_PLANE_Y) xd->tx_type_map[tx_type_map_idx] = tx_type; RD_STATS this_rd_stats; av2_invalid_rd_stats(&this_rd_stats); int64_t sec_tx_sse_to_be_coded = INT64_MAX; int64_t *const sec_tx_sse_ptr = - cpi->sf.tx_sf.prune_tx_rd_eval_sec_tx_sse ? &sec_tx_sse_to_be_coded - : NULL; + tx_sf->prune_tx_rd_eval_sec_tx_sse ? &sec_tx_sse_to_be_coded : NULL; if (!dc_only_blk) av2_xform(x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, 1, sec_tx_sse_ptr); @@ -2417,7 +2466,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, av2_xform_dc_only(x, plane, block, &txfm_param, per_px_mean); if (prune_sec_txfm_rd_eval(sec_tx_sse_to_be_coded, block_sse, best_rd, x->rdmult, - cpi->sf.tx_sf.prune_tx_rd_eval_sec_tx_sse)) { + tx_sf->prune_tx_rd_eval_sec_tx_sse)) { continue; } *coeffs_available = 1; @@ -2427,19 +2476,18 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // cost_coeffs and propagate the same eob_found / DCT_DCT handling as // the post-quant eob == 1 gate below. Scoped to intra Y, stx == 0, // non-DC-only, IST-enabled, non-QM blocks. - if (cpi->sf.tx_sf.prune_intra_ist_stx_by_zero_eob && - plane == PLANE_TYPE_Y && !is_inter && stx == 0 && !dc_only_blk && - xd->enable_ist && + if (tx_sf->prune_intra_ist_stx_by_zero_eob && plane == PLANE_TYPE_Y && + !is_inter && stx == 0 && !dc_only_blk && xd->enable_ist && !av2_use_qmatrix(&cm->quant_params, xd, mbmi->segment_id)) { - const int tr_w = AVMMIN(tx_size_wide[tx_size], 32); - const int tr_h = AVMMIN(tx_size_high[tx_size], 32); + const int tr_w = AVMMIN(txw, 32); + const int tr_h = AVMMIN(txh, 32); const int log_scale = av2_get_tx_scale(tx_size); - if (check_primary_quant_all_zero(p->coeff + BLOCK_OFFSET(block), - x->plane[plane].dequant_QTX, tr_w, - tr_h, log_scale)) { - p->eobs[block] = 0; - if (tx_type1 == DCT_DCT) eob_found = 1; - if (tx_type1 != DCT_DCT || (stx && primary_tx_type)) { + if (check_primary_quant_all_zero( + mb_plane->coeff + BLOCK_OFFSET(block), + x->plane[plane].dequant_QTX, tr_w, tr_h, log_scale)) { + mb_plane->eobs[block] = 0; + if (primary_tx_type == DCT_DCT) eob_found = true; + if (primary_tx_type != DCT_DCT) { update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); continue; } @@ -2448,8 +2496,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, const TX_CLASS tx_class = tx_type_to_class[get_primary_tx_type(tx_type)]; - if (tcq_enable(cm->features.tcq_mode, - xd->lossless[xd->mi[0]->segment_id], plane, tx_class)) { + if (tcq_enable(cm->features.tcq_mode, is_lossless, plane, tx_class)) { skip_trellis_based_on_satd[txfm_param.tx_type] = skip_trellis; } else skip_trellis_based_on_satd[txfm_param.tx_type] = @@ -2459,14 +2506,13 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, txfm_params->coeff_opt_satd_threshold, skip_trellis_in, dc_only_blk); - uint8_t fsc_mode_in = ((cm->seq_params.enable_fsc && - mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && - plane == PLANE_TYPE_Y) || - use_inter_fsc(cm, plane, tx_type, is_inter)); + uint8_t fsc_mode_in = + ((cm->seq_params.enable_fsc && is_fsc && plane == AVM_PLANE_Y) || + use_inter_fsc(cm, plane, tx_type, is_inter)); av2_quant(x, plane, block, &txfm_param, &quant_param); if (fsc_mode_in) { if (primary_tx_type == IDTX) { - uint16_t *const eob = &p->eobs[block]; + uint16_t *const eob = &mb_plane->eobs[block]; if (*eob != 0) *eob = av2_get_max_eob(txfm_param.tx_size); } } @@ -2478,21 +2524,10 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // stx == 0 that quantized to all-zero can still win via skip // coding (bitstream signals the tx_type and elides the // coefficients). - uint16_t *const eob = &p->eobs[block]; - if (plane == PLANE_TYPE_Y && !is_inter && - (*eob == 1 || - (cpi->sf.tx_sf.prune_intra_ist_stx_by_zero_eob && *eob == 0))) { - if (tx_type1 == DCT_DCT) eob_found = 1; - const int kill = - (*eob == 1) ? (tx_type1 != DCT_DCT || (stx && primary_tx_type)) - : (stx > 0); - if (kill) { - update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); - continue; - } - } - if (*eob <= 3 && plane == PLANE_TYPE_Y && is_inter && stx) { - update_txk_array(xd, blk_row, blk_col, tx_size, primary_tx_type); + uint16_t *const eob = &mb_plane->eobs[block]; + if (prune_tx_search_by_eob(xd, blk_row, blk_col, tx_size, *eob, plane, + is_inter, primary_tx_type, stx, &eob_found, + tx_sf->prune_intra_ist_stx_by_zero_eob)) { continue; } if (fsc_mode_in && quant_param.use_optimize_b) { @@ -2503,10 +2538,10 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, txb_ctx, &rate_cost); } else { bool enable_parity_hiding = - cm->features.allow_parity_hiding && - !xd->lossless[xd->mi[0]->segment_id] && plane == PLANE_TYPE_Y && + cm->features.allow_parity_hiding && !is_lossless && + plane == AVM_PLANE_Y && ph_allowed_tx_types[get_primary_tx_type(tx_type)] && - (p->eobs[block] > PHTHRESH); + (mb_plane->eobs[block] > PHTHRESH); if (enable_parity_hiding) parity_hiding_trellis_off(cpi, x, plane, block, tx_size, tx_type); @@ -2517,27 +2552,12 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // Post-trellis safety net: re-apply the same eob == 0 / eob == 1 // pre-skip logic in case trellis (RDOQ) adjusted the eob across // the threshold. - if (*eob == 1 && plane == PLANE_TYPE_Y && !is_inter) { - if (tx_type1 == DCT_DCT) eob_found = 1; - if (tx_type1 != DCT_DCT || (stx && primary_tx_type)) { - update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); - continue; - } - if (get_secondary_tx_type(tx_type) > 0) continue; - if (txfm_param.sec_tx_type > 0) continue; - } - if (cpi->sf.tx_sf.prune_intra_ist_stx_by_zero_eob && *eob == 0 && - plane == PLANE_TYPE_Y && !is_inter) { - if (tx_type1 == DCT_DCT) eob_found = 1; - if (stx > 0) { - update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); - continue; - } - } - if (*eob <= 3 && plane == PLANE_TYPE_Y && is_inter && stx) { - update_txk_array(xd, blk_row, blk_col, tx_size, primary_tx_type); + if (prune_tx_search_by_eob(xd, blk_row, blk_col, tx_size, *eob, plane, + is_inter, primary_tx_type, stx, &eob_found, + tx_sf->prune_intra_ist_stx_by_zero_eob)) { continue; } + // If rd cost based on coeff rate alone is already more than best_rd, // terminate early. if (RDCOST(x->rdmult, rate_cost, 0) > best_rd) continue; @@ -2547,7 +2567,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // When eob is 0, pixel domain distortion is more efficient and // accurate. this_rd_stats.dist = this_rd_stats.sse = block_sse; - } else if (dc_only_blk || (fsc_mode_in && plane == PLANE_TYPE_Y)) { + } else if (dc_only_blk || (fsc_mode_in && plane == AVM_PLANE_Y)) { this_rd_stats.sse = block_sse; this_rd_stats.dist = dist_block_px_domain(cpi, x, plane, block, blk_row, blk_col, tx_size); @@ -2556,7 +2576,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, &this_rd_stats.sse); } else { int64_t sse_diff = INT64_MAX; - // high_energy threshold assumes that every pixel within a txfm block + // High_energy threshold assumes that every pixel within a txfm block // has a residue energy of at least 25% of the maximum, i.e. 128 * 128 // for 8 bit. const int64_t high_energy_thresh = @@ -2596,7 +2616,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, const int64_t rd = RDCOST(x->rdmult, this_rd_stats.rate, this_rd_stats.dist); - if (xd->lossless[mbmi->segment_id]) { + if (is_lossless) { assert(this_rd_stats.dist == 0); } @@ -2604,63 +2624,33 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, best_rd = rd; *best_rd_stats = this_rd_stats; best_tx_type = tx_type; - best_txb_ctx = x->plane[plane].txb_entropy_ctx[block]; - best_eob = x->plane[plane].eobs[block]; - // Swap dqcoeff buffers + best_txb_ctx = mb_plane->txb_entropy_ctx[block]; + best_eob = mb_plane->eobs[block]; + // Swap dqcoeff buffers. tran_low_t *const tmp_dqcoeff = best_dqcoeff; - best_dqcoeff = p->dqcoeff; - p->dqcoeff = tmp_dqcoeff; + best_dqcoeff = mb_plane->dqcoeff; + mb_plane->dqcoeff = tmp_dqcoeff; } #if CONFIG_COLLECT_RD_STATS == 1 - if (plane == 0) { + if (plane == AVM_PLANE_Y) { PrintTransformUnitStats(cpi, x, &this_rd_stats, blk_row, blk_col, plane_bsize, tx_size, tx_type, rd); } #endif // CONFIG_COLLECT_RD_STATS == 1 #if COLLECT_TX_SIZE_DATA - // Generate small sample to restrict output size. - static unsigned int seed = 21743; - if (lcg_rand16(&seed) % 200 == 0) { - FILE *fp = NULL; - - if (within_border) { - fp = fopen(av2_tx_size_data_output_file, "a"); - } - - if (fp) { - // Transform info and RD - const int txb_w = tx_size_wide[tx_size]; - const int txb_h = tx_size_high[tx_size]; - - // Residue signal. - const int diff_stride = block_size_wide[plane_bsize]; - struct macroblock_plane *const p = &x->plane[plane]; - const int16_t *src_diff = - &p->src_diff[(blk_row * diff_stride + blk_col) * 4]; - - for (int r = 0; r < txb_h; ++r) { - for (int c = 0; c < txb_w; ++c) { - fprintf(fp, "%d,", src_diff[c]); - } - src_diff += diff_stride; - } - - fprintf(fp, "%d,%d,%d,%" PRId64, txb_w, txb_h, tx_type, rd); - fprintf(fp, "\n"); - fclose(fp); - } - } + collect_tx_size_data(cpi, x, plane, blk_row, blk_col, plane_bsize, + tx_size, tx_type, rd); #endif // COLLECT_TX_SIZE_DATA - assert(cpi->sf.tx_sf.adaptive_tx_type_search_idx < 6); + assert(tx_sf->adaptive_tx_type_search_idx < 6); // Terminate the search early, If the best rd is higher than the // reference best rd and number of coded coefficients are smaller // than a threshold. const int search_level = - tx_type_prune_level[p->eobs[block] < max_eob / 8] - [cpi->sf.tx_sf.adaptive_tx_type_search_idx]; + tx_type_prune_level[mb_plane->eobs[block] < max_eob / 8] + [tx_sf->adaptive_tx_type_search_idx]; if (search_level && (best_rd - (best_rd >> search_level)) > ref_best_rd) { skip_idx = true; @@ -2669,7 +2659,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // Terminate transform type search if the block has been quantized to // all zero. - if (cpi->sf.tx_sf.tx_type_search.skip_tx_search && !best_eob) { + if (tx_sf->tx_type_search.skip_tx_search && !best_eob) { skip_idx = true; break; } @@ -2680,23 +2670,23 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, } if (((best_eob == 1 && get_primary_tx_type(best_tx_type) != DCT_DCT && - plane == 0) || + plane == AVM_PLANE_Y) || best_rd == INT64_MAX) && !is_inter) { best_tx_type = DCT_DCT; - if (plane == 0) update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT); } best_rd_stats->skip_txfm = best_eob == 0; - if (plane == 0) update_txk_array(xd, blk_row, blk_col, tx_size, best_tx_type); - x->plane[plane].txb_entropy_ctx[block] = best_txb_ctx; - x->plane[plane].eobs[block] = best_eob; + if (plane == AVM_PLANE_Y) + update_txk_array(xd, blk_row, blk_col, tx_size, best_tx_type); + mb_plane->txb_entropy_ctx[block] = best_txb_ctx; + mb_plane->eobs[block] = best_eob; skip_trellis = skip_trellis_based_on_satd[get_primary_tx_type(best_tx_type)]; // Point dqcoeff to the quantized coefficients corresponding to the best // transform type, then we can skip transform and quantization, e.g. in the // final pixel domain distortion calculation and recon_intra(). - p->dqcoeff = best_dqcoeff; + mb_plane->dqcoeff = best_dqcoeff; if (calc_pixel_domain_distortion_final && best_eob) { best_rd_stats->dist = @@ -2704,7 +2694,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, best_rd_stats->sse = block_sse; } - if (plane == 0 && x->plane[plane].eobs[block] == 1 && + if (plane == AVM_PLANE_Y && best_eob == 1 && get_primary_tx_type(best_tx_type) != DCT_DCT && !is_inter) { av2_invalid_rd_stats(best_rd_stats); } @@ -2715,7 +2705,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, if (plane == AVM_PLANE_Y || !is_cctx_allowed(cm, xd)) { recon_intra(cpi, x, plane, block, blk_row, blk_col, plane_bsize, tx_size, txb_ctx, skip_trellis, best_tx_type, 0, &rate_cost, best_eob); - p->dqcoeff = orig_dqcoeff; + mb_plane->dqcoeff = orig_dqcoeff; } } diff --git a/av2/encoder/tx_search.h b/av2/encoder/tx_search.h index 1397405441..ccc316d6ba 100644 --- a/av2/encoder/tx_search.h +++ b/av2/encoder/tx_search.h @@ -19,11 +19,66 @@ extern "C" { #endif +// Encoder-only configuration to reduce the search complexity of IST. +#define IST_REDUCED_SEARCH_SET_SIZE 4 + // Set this macro as 1 to collect data about tx size selection. #define COLLECT_TX_SIZE_DATA 0 #if COLLECT_TX_SIZE_DATA +#include +#include "av2/encoder/random.h" + static const char av2_tx_size_data_output_file[] = "tx_size_data.txt"; + +static AVM_INLINE void collect_tx_size_data(const AV2_COMP *cpi, + const MACROBLOCK *x, int plane, + int blk_row, int blk_col, + BLOCK_SIZE plane_bsize, + TX_SIZE tx_size, TX_TYPE tx_type, + int64_t rd) { + // Generate small sample to restrict output size. + static unsigned int seed = 21743; + if (lcg_rand16(&seed) % 200 == 0) { + FILE *fp = NULL; + const MACROBLOCKD *xd = &x->e_mbd; + const MB_MODE_INFO *mbmi = xd->mi[0]; + const int mi_row = xd->mi_row; + const int mi_col = xd->mi_col; + const BLOCK_SIZE luma_bsize = mbmi->sb_type[PLANE_TYPE_Y]; + const int within_border = + mi_row >= xd->tile.mi_row_start && + (mi_row + mi_size_high[luma_bsize] < xd->tile.mi_row_end) && + mi_col >= xd->tile.mi_col_start && + (mi_col + mi_size_wide[luma_bsize] < xd->tile.mi_col_end); + if (within_border) { + fp = fopen(av2_tx_size_data_output_file, "a"); + } + + if (fp) { + // Transform info and RD + const int txb_w = tx_size_wide[tx_size]; + const int txb_h = tx_size_high[tx_size]; + + // Residue signal. + const int diff_stride = block_size_wide[plane_bsize]; + const struct macroblock_plane *const p = &x->plane[plane]; + const int16_t *src_diff = + &p->src_diff[(blk_row * diff_stride + blk_col) * 4]; + + for (int r = 0; r < txb_h; ++r) { + for (int c = 0; c < txb_w; ++c) { + fprintf(fp, "%d,", src_diff[c]); + } + src_diff += diff_stride; + } + + fprintf(fp, "%d,%d,%d,%" PRId64, txb_w, txb_h, tx_type, rd); + fprintf(fp, "\n"); + fclose(fp); + } + } +} #endif enum { From f7f6b5b7ae091560ddc24f49633e35abe0839b74 Mon Sep 17 00:00:00 2001 From: motongxu Date: Thu, 23 Jul 2026 10:10:20 -0700 Subject: [PATCH 076/205] Increase TCQ threshold based on base QP (#5132) Increase TCQ zero threshold to 9 * abs_coef >= 10 * dequant when base_qindex < 185. Anchor: https://github.com/AOMediaCodec/avm/commit/6e71b0c85924e61d9403b6222921cd4bb8cf870e Tests: cpu-used =1, RA A1 - 17 frames A2 - 33 frames ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | -0.01% | -0.01% | 0.00% | -0.01% | 98.6% | 98.6% | | A2 | 0.00% | -0.06% | -0.05% | 0.00% | 98.9% | 100.1% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/common/av2_rtcd_defs.pl | 2 +- av2/encoder/av2_quantize.c | 78 +++++++++++++--------- av2/encoder/av2_quantize.h | 12 ++-- av2/encoder/encodemb.c | 74 +++++++++++--------- av2/encoder/encodemb.h | 13 ++-- av2/encoder/partition_ml.c | 3 +- av2/encoder/speed_features.c | 4 ++ av2/encoder/speed_features.h | 6 ++ av2/encoder/tpl_model.c | 3 +- av2/encoder/tx_search.c | 45 +++++++++---- av2/encoder/x86/av2_highbd_quantize_avx2.c | 29 +++++--- av2/encoder/x86/av2_highbd_quantize_sse4.c | 31 ++++++--- avm_dsp/avm_dsp_rtcd_defs.pl | 2 +- avm_dsp/quantize.c | 15 ++--- avm_dsp/quantize.h | 14 ++-- avm_dsp/x86/highbd_quantize_intrin_avx2.c | 5 +- avm_dsp/x86/highbd_quantize_intrin_sse2.c | 5 +- test/av2_quantize_test.cc | 68 +++++++++++-------- test/quantize_func_test.cc | 18 ++--- 19 files changed, 257 insertions(+), 170 deletions(-) diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index e1ff520426..95e64ca4f7 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -266,7 +266,7 @@ () add_proto qw/int64_t av2_highbd_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd"; specialize qw/av2_highbd_block_error sse2 avx2/; - add_proto qw/void av2_highbd_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale"; + add_proto qw/void av2_highbd_quantize_fp/, "const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale"; specialize qw/av2_highbd_quantize_fp sse4_1 avx2/; add_proto qw/void av2_highbd_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride"; diff --git a/av2/encoder/av2_quantize.c b/av2/encoder/av2_quantize.c index c2b1a10073..c75ca00bf4 100644 --- a/av2/encoder/av2_quantize.c +++ b/av2/encoder/av2_quantize.c @@ -36,12 +36,12 @@ void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, } static void highbd_quantize_fp_helper_c( - const tran_low_t *coeff_ptr, intptr_t count, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, - const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, - const int16_t *scan, const int16_t *iscan, const qm_val_t *qm_ptr, - const qm_val_t *iqm_ptr, int log_scale) { + const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, + intptr_t count, const int32_t *zbin_ptr, const int32_t *round_ptr, + const int32_t *quant_ptr, const int32_t *quant_shift_ptr, + tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, + uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, + const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, int log_scale) { int i; int eob = -1; const int shift = 16 - log_scale + QUANT_FP_BITS; @@ -50,7 +50,12 @@ static void highbd_quantize_fp_helper_c( (void)zbin_ptr; (void)quant_shift_ptr; (void)iscan; - + int abs_coeff_scale = 1; + int dequant_ptr_scale = 1; + if (use_tcq_deadzone_boost == 1) { // 5/9 + abs_coeff_scale = 9; + dequant_ptr_scale = 10; + } if (qm_ptr || iqm_ptr) { // Quantization pass: All coefficients with index >= zero_flag are // skippable. Note: zero_flag can be zero. @@ -65,10 +70,11 @@ static void highbd_quantize_fp_helper_c( const int coeff_sign = AVMSIGN(coeff); const int64_t abs_coeff = (coeff ^ coeff_sign) - coeff_sign; int abs_qcoeff = 0; - - if ((((tran_high_t)abs_coeff * wt) << QUANT_TABLE_BITS) >= - ((tran_high_t)dequant_ptr[rc != 0] - << (AVM_QM_BITS - (1 + log_scale)))) { + // Raise deadzone threshold to 10/9 of dequant when TCQ is enabled + if (abs_coeff_scale * + (((tran_high_t)abs_coeff * wt) << QUANT_TABLE_BITS) >= + dequant_ptr_scale * ((tran_high_t)dequant_ptr[rc != 0] + << (AVM_QM_BITS - (1 + log_scale)))) { const int64_t tmp = abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], log_scale); abs_qcoeff = @@ -99,9 +105,10 @@ static void highbd_quantize_fp_helper_c( const int coeff_sign = AVMSIGN(coeff); const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; const int log_scaled_round = log_scaled_round_arr[rc01]; - - if (((tran_high_t)abs_coeff << (1 + log_scale + QUANT_TABLE_BITS)) >= - (tran_high_t)dequant_ptr[rc01]) { + // Raise deadzone threshold to 10/9 of dequant when TCQ is enabled + if (abs_coeff_scale * + ((tran_high_t)abs_coeff << (1 + log_scale + QUANT_TABLE_BITS)) >= + dequant_ptr_scale * (tran_high_t)dequant_ptr[rc01]) { const int quant = quant_ptr[rc01]; const int dequant = dequant_ptr[rc01]; const int64_t tmp = (int64_t)abs_coeff + log_scaled_round; @@ -124,7 +131,8 @@ static void highbd_quantize_fp_helper_c( *eob_ptr = eob + 1; } -void av2_highbd_quantize_fp_facade(const tran_low_t *coeff_ptr, +void av2_highbd_quantize_fp_facade(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, @@ -133,24 +141,28 @@ void av2_highbd_quantize_fp_facade(const tran_low_t *coeff_ptr, const qm_val_t *qm_ptr = qparam->qmatrix; const qm_val_t *iqm_ptr = qparam->iqmatrix; if (qm_ptr != NULL && iqm_ptr != NULL) { - highbd_quantize_fp_helper_c( - coeff_ptr, n_coeffs, p->zbin_QTX, p->round_fp_QTX, p->quant_fp_QTX, - p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX, eob_ptr, - sc->scan, sc->iscan, qm_ptr, iqm_ptr, qparam->log_scale); + highbd_quantize_fp_helper_c(use_tcq_deadzone_boost, coeff_ptr, n_coeffs, + p->zbin_QTX, p->round_fp_QTX, p->quant_fp_QTX, + p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr, + p->dequant_QTX, eob_ptr, sc->scan, sc->iscan, + qm_ptr, iqm_ptr, qparam->log_scale); } else { - av2_highbd_quantize_fp(coeff_ptr, n_coeffs, p->zbin_QTX, p->round_fp_QTX, - p->quant_fp_QTX, p->quant_shift_QTX, qcoeff_ptr, - dqcoeff_ptr, p->dequant_QTX, eob_ptr, sc->scan, - sc->iscan, qparam->log_scale); + av2_highbd_quantize_fp(use_tcq_deadzone_boost, coeff_ptr, n_coeffs, + p->zbin_QTX, p->round_fp_QTX, p->quant_fp_QTX, + p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr, + p->dequant_QTX, eob_ptr, sc->scan, sc->iscan, + qparam->log_scale); } } -void av2_highbd_quantize_b_facade(const tran_low_t *coeff_ptr, +void av2_highbd_quantize_b_facade(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, const SCAN_ORDER *sc, const QUANT_PARAM *qparam) { + (void)use_tcq_deadzone_boost; const qm_val_t *qm_ptr = qparam->qmatrix; const qm_val_t *iqm_ptr = qparam->iqmatrix; if (qparam->use_quant_b_adapt) { @@ -189,7 +201,7 @@ void av2_highbd_quantize_b_facade(const tran_low_t *coeff_ptr, p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX, eob_ptr, sc->scan, sc->iscan, qm_ptr, iqm_ptr, qparam->log_scale); } else { - avm_highbd_quantize_b(coeff_ptr, n_coeffs, p->zbin_QTX, p->round_QTX, + avm_highbd_quantize_b(0, coeff_ptr, n_coeffs, p->zbin_QTX, p->round_QTX, p->quant_QTX, p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX, eob_ptr, sc->scan, sc->iscan, qparam->log_scale); @@ -234,7 +246,8 @@ static INLINE void highbd_quantize_dc( *eob_ptr = eob + 1; } -void av2_highbd_quantize_dc_facade(const tran_low_t *coeff_ptr, +void av2_highbd_quantize_dc_facade(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, @@ -245,14 +258,15 @@ void av2_highbd_quantize_dc_facade(const tran_low_t *coeff_ptr, const qm_val_t *qm_ptr = qparam->qmatrix; const qm_val_t *iqm_ptr = qparam->iqmatrix; (void)sc; + (void)use_tcq_deadzone_boost; highbd_quantize_dc(coeff_ptr, (int)n_coeffs, skip_block, p->round_QTX, p->quant_fp_QTX[0], qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX[0], eob_ptr, qm_ptr, iqm_ptr, qparam->log_scale); } - -void av2_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t count, +void av2_highbd_quantize_fp_c(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t count, const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, @@ -260,10 +274,10 @@ void av2_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t count, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale) { - highbd_quantize_fp_helper_c(coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, - quant_shift_ptr, qcoeff_ptr, dqcoeff_ptr, - dequant_ptr, eob_ptr, scan, iscan, NULL, NULL, - log_scale); + highbd_quantize_fp_helper_c(use_tcq_deadzone_boost, coeff_ptr, count, + zbin_ptr, round_ptr, quant_ptr, quant_shift_ptr, + qcoeff_ptr, dqcoeff_ptr, dequant_ptr, eob_ptr, + scan, iscan, NULL, NULL, log_scale); } static void invert_quant(int32_t *quant, int32_t *shift, int d) { diff --git a/av2/encoder/av2_quantize.h b/av2/encoder/av2_quantize.h index ba48d00638..e5893ca74a 100644 --- a/av2/encoder/av2_quantize.h +++ b/av2/encoder/av2_quantize.h @@ -36,7 +36,8 @@ typedef struct QUANT_PARAM { int xform_quant_idx; } QUANT_PARAM; -typedef void (*AV2_QUANT_FACADE)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, +typedef void (*AV2_QUANT_FACADE)(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, @@ -129,21 +130,24 @@ int av2_qindex_to_quantizer(int qindex, avm_bit_depth_t bit_depth); void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr); -void av2_highbd_quantize_fp_facade(const tran_low_t *coeff_ptr, +void av2_highbd_quantize_fp_facade(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, const SCAN_ORDER *sc, const QUANT_PARAM *qparam); -void av2_highbd_quantize_b_facade(const tran_low_t *coeff_ptr, +void av2_highbd_quantize_b_facade(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, const SCAN_ORDER *sc, const QUANT_PARAM *qparam); -void av2_highbd_quantize_dc_facade(const tran_low_t *coeff_ptr, +void av2_highbd_quantize_dc_facade(const int use_tcq_deadzone_boost, + const tran_low_t *coeff_ptr, intptr_t n_coeffs, const MACROBLOCK_PLANE *p, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr, diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index ebf9416215..fc9e00abfc 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -593,10 +593,10 @@ void av2_xform_dc_only(MACROBLOCK *x, int plane, int block, coeff[0] = (tran_low_t)((per_px_mean * dc_coeff_scale[txfm_param->tx_size]) >> 12); } - -void av2_xform_quant(const AV2_COMMON *cm, MACROBLOCK *x, int plane, int block, - int blk_row, int blk_col, BLOCK_SIZE plane_bsize, - TxfmParam *txfm_param, QUANT_PARAM *qparam) { +void av2_xform_quant(const int use_tcq_deadzone_boost, const AV2_COMMON *cm, + MACROBLOCK *x, int plane, int block, int blk_row, + int blk_col, BLOCK_SIZE plane_bsize, TxfmParam *txfm_param, + QUANT_PARAM *qparam) { MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; const struct macroblock_plane *const p = &x->plane[plane]; @@ -625,7 +625,7 @@ void av2_xform_quant(const AV2_COMMON *cm, MACROBLOCK *x, int plane, int block, mbmi->fsc_mode[xd->tree_type == CHROMA_PART] && plane == PLANE_TYPE_Y) || use_inter_fsc(cm, plane, txfm_param->tx_type, is_inter)); - av2_quant(x, plane, block, txfm_param, qparam); + av2_quant(use_tcq_deadzone_boost, x, plane, block, txfm_param, qparam); if (fsc_mode) { if (get_primary_tx_type(txfm_param->tx_type) == IDTX) { uint16_t *const eob = &p->eobs[block]; @@ -712,9 +712,8 @@ void set_bob(MACROBLOCK *x, int plane, int block, TX_SIZE tx_size, } *bob_ptr = av2_get_max_eob(tx_size) - bob; } - -void av2_quant(MACROBLOCK *x, int plane, int block, TxfmParam *txfm_param, - QUANT_PARAM *qparam) { +void av2_quant(const int use_tcq_deadzone_boost, MACROBLOCK *x, int plane, + int block, TxfmParam *txfm_param, QUANT_PARAM *qparam) { const struct macroblock_plane *const p = &x->plane[plane]; const SCAN_ORDER *const scan_order = get_scan(txfm_param->tx_size, txfm_param->tx_type); @@ -727,8 +726,9 @@ void av2_quant(MACROBLOCK *x, int plane, int block, TxfmParam *txfm_param, if (qparam->xform_quant_idx != AV2_XFORM_QUANT_SKIP_QUANT) { const int n_coeffs = av2_get_max_eob(txfm_param->tx_size); if (LIKELY(!x->seg_skip_block)) { - quant_func_list[qparam->xform_quant_idx]( - coeff, n_coeffs, p, qcoeff, dqcoeff, eob, scan_order, qparam); + quant_func_list[qparam->xform_quant_idx](use_tcq_deadzone_boost, coeff, + n_coeffs, p, qcoeff, dqcoeff, + eob, scan_order, qparam); } else { av2_quantize_skip(n_coeffs, qcoeff, dqcoeff, eob); } @@ -915,14 +915,6 @@ static void encode_block(int plane, int block, int blk_row, int blk_col, cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, - &txfm_param, &quant_param); - - bool enable_parity_hiding = - cm->features.allow_parity_hiding && !xd->lossless[mbmi->segment_id] && - plane == PLANE_TYPE_Y && - ph_allowed_tx_types[get_primary_tx_type(tx_type)] && - (p->eobs[block] > PHTHRESH); // Settings for optimization type. NOTE: To set optimization type for all // intra frames, both `KEY_BLOCK_OPT_TYPE` and `INTRA_BLOCK_OPT_TYPE` should // be set. @@ -949,6 +941,20 @@ static void encode_block(int plane, int block, int blk_row, int blk_col, INTER_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT; const bool do_dropout = INTER_BLOCK_OPT_TYPE == DROPOUT_OPT || INTER_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT; + const int use_tcq_deadzone_boost = + use_tcq && quant_param.use_optimize_b && do_trellis && !fsc_mode && + cpi->sf.tx_sf.enable_adaptive_tcq_threshold && + cm->quant_params.base_qindex < + cpi->sf.tx_sf.adaptive_tcq_threshold_qidx; + av2_xform_quant(use_tcq_deadzone_boost, cm, x, plane, block, blk_row, + blk_col, plane_bsize, &txfm_param, &quant_param); + + bool enable_parity_hiding = + cm->features.allow_parity_hiding && !xd->lossless[mbmi->segment_id] && + plane == PLANE_TYPE_Y && + ph_allowed_tx_types[get_primary_tx_type(tx_type)] && + (p->eobs[block] > PHTHRESH); + if (quant_param.use_optimize_b && do_trellis) { TXB_CTX txb_ctx; get_txb_ctx(plane_bsize, tx_size, plane, a, l, &txb_ctx, @@ -1210,9 +1216,8 @@ static void encode_block_pass1(int plane, int block, int blk_row, int blk_col, &quant_param); av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, DCT_DCT, &quant_param); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, + av2_xform_quant(0, cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); - if (p->eobs[block] > 0) { txfm_param.eob = p->eobs[block]; av2_highbd_inv_txfm_add(dqcoeff, dst, pd->dst.stride, &txfm_param); @@ -1412,13 +1417,6 @@ void av2_encode_block_intra(int plane, int block, int blk_row, int blk_col, cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, - &txfm_param, &quant_param); - - bool enable_parity_hiding = - cm->features.allow_parity_hiding && !xd->lossless[mbmi->segment_id] && - plane == PLANE_TYPE_Y && - ph_allowed_tx_types[get_primary_tx_type(tx_type)] && (*eob > PHTHRESH); // Settings for optimization type. NOTE: To set optimization type for all // intra frames, both `KEY_BLOCK_OPT_TYPE` and `INTRA_BLOCK_OPT_TYPE` should @@ -1455,6 +1453,18 @@ void av2_encode_block_intra(int plane, int block, int blk_row, int blk_col, (!frame_is_intra_only(cm) && (INTRA_BLOCK_OPT_TYPE == DROPOUT_OPT || INTRA_BLOCK_OPT_TYPE == TRELLIS_DROPOUT_OPT)); + const int use_tcq_deadzone_boost = + use_tcq && quant_param.use_optimize_b && do_trellis && !fsc_mode && + cpi->sf.tx_sf.enable_adaptive_tcq_threshold && + cm->quant_params.base_qindex < + cpi->sf.tx_sf.adaptive_tcq_threshold_qidx; + av2_xform_quant(use_tcq_deadzone_boost, cm, x, plane, block, blk_row, + blk_col, plane_bsize, &txfm_param, &quant_param); + + bool enable_parity_hiding = + cm->features.allow_parity_hiding && !xd->lossless[mbmi->segment_id] && + plane == PLANE_TYPE_Y && + ph_allowed_tx_types[get_primary_tx_type(tx_type)] && (*eob > PHTHRESH); if (quant_param.use_optimize_b && do_trellis) { TXB_CTX txb_ctx; @@ -1485,8 +1495,8 @@ void av2_encode_block_intra(int plane, int block, int blk_row, int blk_col, cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, - &txfm_param, &quant_param); + av2_xform_quant(use_tcq_deadzone_boost, cm, x, plane, block, blk_row, + blk_col, plane_bsize, &txfm_param, &quant_param); if (quant_param.use_optimize_b && do_trellis) { TXB_CTX txb_ctx; get_txb_ctx(plane_bsize, tx_size, plane, a, l, &txb_ctx, @@ -1720,8 +1730,8 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, &txfm_param); av2_setup_qmatrix(&cm->quant_params, xd, AVM_PLANE_U, tx_size, tx_type, &quant_param); - av2_xform_quant(cm, x, AVM_PLANE_U, block, blk_row, blk_col, plane_bsize, - &txfm_param, &quant_param); + av2_xform_quant(0, cm, x, AVM_PLANE_U, block, blk_row, blk_col, + plane_bsize, &txfm_param, &quant_param); if (quant_param.use_optimize_b) { const ENTROPY_CONTEXT *a = &args->ta[blk_col]; const ENTROPY_CONTEXT *l = &args->tl[blk_row]; @@ -1736,7 +1746,7 @@ void av2_encode_block_intra_joint_uv(int block, int blk_row, int blk_col, av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, + av2_xform_quant(0, cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); if (quant_param.use_optimize_b) { diff --git a/av2/encoder/encodemb.h b/av2/encoder/encodemb.h index 177adaa1bf..b886c3cb52 100644 --- a/av2/encoder/encodemb.h +++ b/av2/encoder/encodemb.h @@ -89,10 +89,10 @@ void av2_setup_qmatrix(const CommonQuantParams *quant_params, void av2_xform_dc_only(MACROBLOCK *x, int plane, int block, TxfmParam *txfm_param, int64_t per_px_mean); - -void av2_xform_quant(const AV2_COMMON *cm, MACROBLOCK *x, int plane, int block, - int blk_row, int blk_col, BLOCK_SIZE plane_bsize, - TxfmParam *txfm_param, QUANT_PARAM *qparam); +void av2_xform_quant(const int use_tcq_deadzone_boost, const AV2_COMMON *cm, + MACROBLOCK *x, int plane, int block, int blk_row, + int blk_col, BLOCK_SIZE plane_bsize, TxfmParam *txfm_param, + QUANT_PARAM *qparam); void av2_xform(MACROBLOCK *x, int plane, int block, int blk_row, int blk_col, BLOCK_SIZE plane_bsize, TxfmParam *txfm_param, const int reuse, @@ -104,9 +104,8 @@ void forward_cross_chroma_transform(MACROBLOCK *x, int block, TX_SIZE tx_size, // This function sets the first position index in a TU. void set_bob(MACROBLOCK *x, int plane, int block, TX_SIZE tx_size, TX_TYPE tx_type); - -void av2_quant(MACROBLOCK *x, int plane, int block, TxfmParam *txfm_param, - QUANT_PARAM *qparam); +void av2_quant(const int use_tcq_deadzone_boost, MACROBLOCK *x, int plane, + int block, TxfmParam *txfm_param, QUANT_PARAM *qparam); int av2_optimize_fsc(const struct AV2_COMP *cpi, MACROBLOCK *mb, int plane, int block, TX_SIZE tx_size, TX_TYPE tx_type, diff --git a/av2/encoder/partition_ml.c b/av2/encoder/partition_ml.c index 621182ff82..905f8498b7 100644 --- a/av2/encoder/partition_ml.c +++ b/av2/encoder/partition_ml.c @@ -65,7 +65,8 @@ void compute_residual_stats(AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, &quant_param); av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, DCT_DCT, &quant_param); - av2_xform_quant(cm, x, plane, block, 0, 0, bsize, &txfm_param, &quant_param); + av2_xform_quant(0, cm, x, plane, block, 0, 0, bsize, &txfm_param, + &quant_param); const int n_coeffs = av2_get_max_eob(txfm_param.tx_size); for (int i = 0; i < n_coeffs; i++) { int abs_qcoeff = abs(qcoeff[i]); diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 0c220b6c96..9b17e14e5f 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -323,6 +323,8 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.model_based_prune_tx_search_level = 1; sf->tx_sf.prune_tx_rd_eval_sec_tx_sse = true; sf->tx_sf.tx_type_search.use_reduced_intra_txset = 1; + sf->tx_sf.enable_adaptive_tcq_threshold = false; + sf->tx_sf.adaptive_tcq_threshold_qidx = 185; if (cpi->twopass.fr_content_type == FC_HIGHMOTION || cpi->is_screen_content_type) { @@ -378,6 +380,8 @@ static void set_good_speed_features_framesize_independent( // nearest searched result beyond the cap. sf->mv_sf.newmv_drl_search_limit = 2; + sf->tx_sf.enable_adaptive_tcq_threshold = true; + sf->tx_sf.adaptive_tcq_threshold_qidx = 185; sf->inter_sf.enable_enhanced_inter_mode_cache_reuse = 1; sf->inter_sf.skip_temporary_pred_for_opfl = 1; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 6a6a62284a..019e11017a 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -842,6 +842,12 @@ typedef struct TX_SPEED_FEATURES { // Enable txfm partition search bool enable_tx_partition; + // Enable adaptive TCQ threshold: + bool enable_adaptive_tcq_threshold; + + // Base qindex upper bound for applying the adaptive TCQ threshold + int adaptive_tcq_threshold_qidx; + // Skip IST/STX cascade for intra-luma candidates whose primary transform // quantizes to zero. Extends the intra-luma pre-skip / post-trellis gates // from eob == 1 to also cover eob == 0 (stx > 0 only, so skip-coded diff --git a/av2/encoder/tpl_model.c b/av2/encoder/tpl_model.c index ab118c5e01..92451c42ff 100644 --- a/av2/encoder/tpl_model.c +++ b/av2/encoder/tpl_model.c @@ -48,8 +48,7 @@ static AVM_INLINE void get_quantize_error(const MACROBLOCK *x, int plane, QUANT_PARAM quant_param; av2_setup_quant(tx_size, 0, AV2_XFORM_QUANT_FP, 0, &quant_param); - - av2_highbd_quantize_fp_facade(coeff, pix_num, p, qcoeff, dqcoeff, eob, + av2_highbd_quantize_fp_facade(0, coeff, pix_num, p, qcoeff, dqcoeff, eob, scan_order, &quant_param); *recon_error = av2_highbd_block_error(coeff, dqcoeff, pix_num, sse, xd->bd) >> shift; diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index f17736674a..08a1732393 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -51,7 +51,7 @@ typedef struct tx_size_rd_info_node { // Mapping of index to IST kernel set (for encoder search only) static const uint8_t ist_intra_stx_mapping[IST_SET_SIZE][IST_SET_SIZE] = { { 6, 1, 0, 5, 4, 3, 2 }, // DC_PRED - { 1, 6, 0, 4, 2, 5, 3 }, // V_PRED, H_PRED, SMOOTH_V_PRED, SMOOTH_H_PRED + { 1, 6, 0, 4, 2, 5, 3 }, // V_PRED, H_PRED, SMOOTH_V_PRED, SMOOTH_H_PRED { 2, 6, 0, 5, 1, 4, 3 }, // D45_PRED { 3, 4, 6, 1, 0, 2, 5 }, // D135_PRED { 4, 1, 3, 6, 0, 5, 2 }, // D113_PRED, D157_PRED @@ -61,7 +61,7 @@ static const uint8_t ist_intra_stx_mapping[IST_SET_SIZE][IST_SET_SIZE] = { static const uint8_t ist_intra_stx_mapping_ADST_ADST[IST_SET_SIZE][IST_REDUCED_SET_SIZE] = { { 3, 1, 0, 2 }, // DC_PRED - { 1, 3, 0, 2 }, // V_PRED, H_PRED, SMOOTH_V_PRED, SMOOTH_H_PRED + { 1, 3, 0, 2 }, // V_PRED, H_PRED, SMOOTH_V_PRED, SMOOTH_H_PRED { 1, 3, 0, 2 }, // D45_PRED { 0, 2, 3, 1 }, // D135_PRED { 2, 1, 0, 3 }, // D113_PRED, D157_PRED @@ -920,13 +920,25 @@ static INLINE void recon_intra(const AV2_COMP *cpi, MACROBLOCK *x, int plane, av2_subtract_txb(x, plane, plane_bsize, blk_col, blk_row, tx_size, cm->width, cm->height, get_primary_tx_type(best_tx_type)); - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, - &txfm_param_intra, &quant_param_intra); const uint8_t fsc_mode = ((cm->seq_params.enable_fsc && xd->mi[0]->fsc_mode[xd->tree_type == CHROMA_PART] && plane == PLANE_TYPE_Y) || use_inter_fsc(cm, plane, best_tx_type, 0 /*is_inter*/)); + const TX_CLASS tx_class = + tx_type_to_class[get_primary_tx_type(best_tx_type)]; + int use_tcq = + tcq_enable(cpi->common.features.tcq_mode, + xd->lossless[x->e_mbd.mi[0]->segment_id], plane, tx_class); + const int use_tcq_deadzone_boost = + use_tcq && quant_param_intra.use_optimize_b && !fsc_mode && + cpi->sf.tx_sf.enable_adaptive_tcq_threshold && + cm->quant_params.base_qindex < + cpi->sf.tx_sf.adaptive_tcq_threshold_qidx; + av2_xform_quant(use_tcq_deadzone_boost, cm, x, plane, block, blk_row, + blk_col, plane_bsize, &txfm_param_intra, + &quant_param_intra); + if (fsc_mode && quant_param_intra.use_optimize_b) { av2_optimize_fsc(cpi, x, plane, block, tx_size, best_tx_type, txb_ctx, rate_cost); @@ -1249,8 +1261,7 @@ uint16_t prune_txk_type_separ(const AV2_COMP *cpi, MACROBLOCK *x, int plane, for (idx = 0; idx < 4; ++idx) { tx_type = idx_map[idx]; txfm_param.tx_type = tx_type; - - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, + av2_xform_quant(0, cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); dist_block_tx_domain(x, plane, block, tx_size, &dist, &sse); @@ -1279,8 +1290,7 @@ uint16_t prune_txk_type_separ(const AV2_COMP *cpi, MACROBLOCK *x, int plane, for (idx = start_v; idx < end_v; ++idx) { tx_type = idx_map_v[idx_v[idx] * 4]; txfm_param.tx_type = tx_type; - - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, + av2_xform_quant(0, cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); dist_block_tx_domain(x, plane, block, tx_size, &dist, &sse); @@ -1365,7 +1375,7 @@ uint16_t prune_txk_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, txfm_param.tx_type = tx_type; // do txfm and quantization - av2_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, + av2_xform_quant(0, cm, x, plane, block, blk_row, blk_col, plane_bsize, &txfm_param, &quant_param); // estimate rate cost rate_cost = av2_cost_coeffs_txb_laplacian(cm, x, plane, block, tx_size, @@ -2509,7 +2519,16 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, uint8_t fsc_mode_in = ((cm->seq_params.enable_fsc && is_fsc && plane == AVM_PLANE_Y) || use_inter_fsc(cm, plane, tx_type, is_inter)); - av2_quant(x, plane, block, &txfm_param, &quant_param); + int use_tcq = + tcq_enable(cpi->common.features.tcq_mode, + xd->lossless[xd->mi[0]->segment_id], plane, tx_class); + const int use_tcq_deadzone_boost = + use_tcq && quant_param.use_optimize_b && !fsc_mode_in && + cpi->sf.tx_sf.enable_adaptive_tcq_threshold && + cm->quant_params.base_qindex < + cpi->sf.tx_sf.adaptive_tcq_threshold_qidx; + av2_quant(use_tcq_deadzone_boost, x, plane, block, &txfm_param, + &quant_param); if (fsc_mode_in) { if (primary_tx_type == IDTX) { uint16_t *const eob = &mb_plane->eobs[block]; @@ -2752,11 +2771,11 @@ static void search_cctx_type(const AV2_COMP *cpi, MACROBLOCK *x, int block, if (av2_use_qmatrix(&cm->quant_params, xd, mbmi->segment_id)) av2_setup_qmatrix(&cm->quant_params, xd, AVM_PLANE_U, tx_size, tx_type, &quant_param); - av2_quant(x, AVM_PLANE_U, block, &txfm_param, &quant_param); + av2_quant(0, x, AVM_PLANE_U, block, &txfm_param, &quant_param); if (av2_use_qmatrix(&cm->quant_params, xd, mbmi->segment_id)) av2_setup_qmatrix(&cm->quant_params, xd, AVM_PLANE_V, tx_size, tx_type, &quant_param); - av2_quant(x, AVM_PLANE_V, block, &txfm_param, &quant_param); + av2_quant(0, x, AVM_PLANE_V, block, &txfm_param, &quant_param); } int rate_cost[2] = { 0, 0 }; @@ -2810,7 +2829,7 @@ static void search_cctx_type(const AV2_COMP *cpi, MACROBLOCK *x, int block, if (av2_use_qmatrix(&cm->quant_params, xd, mbmi->segment_id)) av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, &quant_param); - av2_quant(x, plane, block, &txfm_param, &quant_param); + av2_quant(0, x, plane, block, &txfm_param, &quant_param); skip_cctx_eval = skip_cctx_eval_based_on_eob( plane, is_inter, eobs_ptr_c1[block], cctx_type); diff --git a/av2/encoder/x86/av2_highbd_quantize_avx2.c b/av2/encoder/x86/av2_highbd_quantize_avx2.c index 43b92f861a..2a91ac6fc7 100644 --- a/av2/encoder/x86/av2_highbd_quantize_avx2.c +++ b/av2/encoder/x86/av2_highbd_quantize_avx2.c @@ -65,12 +65,20 @@ static AVM_FORCE_INLINE __m256i get_max_lane_eob(const int16_t *iscan_ptr, static INLINE void quantize(const __m256i *qp, const tran_low_t *coeff_ptr, const int16_t *iscan_ptr, int log_scale, tran_low_t *qcoeff, tran_low_t *dqcoeff, - __m256i *eob) { + __m256i *eob, int use_tcq_deadzone_boost) { const __m256i coeff = _mm256_loadu_si256((const __m256i *)coeff_ptr); const __m256i abs_coeff = _mm256_abs_epi32(coeff); const __m256i abs_s = _mm256_slli_epi32(abs_coeff, 1 + log_scale + QUANT_TABLE_BITS); - const __m256i mask = _mm256_cmpgt_epi32(qp[2], abs_s); + __m256i mask; + if (use_tcq_deadzone_boost == 1) { + const __m256i abs_s9 = _mm256_add_epi32(_mm256_slli_epi32(abs_s, 3), abs_s); + const __m256i dq10 = _mm256_add_epi32(_mm256_slli_epi32(qp[2], 3), + _mm256_add_epi32(qp[2], qp[2])); + mask = _mm256_cmpgt_epi32(dq10, abs_s9); + } else { + mask = _mm256_cmpgt_epi32(qp[2], abs_s); + } const __m256i zbin_mask = _mm256_xor_si256(mask, _mm256_set1_epi32(-1)); // If all the transformed coefficient values are less than the dequantized @@ -107,11 +115,12 @@ static INLINE void quantize(const __m256i *qp, const tran_low_t *coeff_ptr, } void av2_highbd_quantize_fp_avx2( - const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, - const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, - const int16_t *scan, const int16_t *iscan, int log_scale) { + const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, + intptr_t n_coeffs, const int32_t *zbin_ptr, const int32_t *round_ptr, + const int32_t *quant_ptr, const int32_t *quant_shift_ptr, + tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, + uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, + int log_scale) { (void)scan; (void)zbin_ptr; (void)quant_shift_ptr; @@ -121,7 +130,8 @@ void av2_highbd_quantize_fp_avx2( init_qp(round_ptr, quant_ptr, dequant_ptr, log_scale, qp); __m256i eob = _mm256_setzero_si256(); - quantize(qp, coeff_ptr, iscan, log_scale, qcoeff_ptr, dqcoeff_ptr, &eob); + quantize(qp, coeff_ptr, iscan, log_scale, qcoeff_ptr, dqcoeff_ptr, &eob, + use_tcq_deadzone_boost); coeff_ptr += step; qcoeff_ptr += step; @@ -131,7 +141,8 @@ void av2_highbd_quantize_fp_avx2( update_qp(qp); while (n_coeffs > 0) { - quantize(qp, coeff_ptr, iscan, log_scale, qcoeff_ptr, dqcoeff_ptr, &eob); + quantize(qp, coeff_ptr, iscan, log_scale, qcoeff_ptr, dqcoeff_ptr, &eob, + use_tcq_deadzone_boost); coeff_ptr += step; qcoeff_ptr += step; diff --git a/av2/encoder/x86/av2_highbd_quantize_sse4.c b/av2/encoder/x86/av2_highbd_quantize_sse4.c index fe15fdf42a..167e68a434 100644 --- a/av2/encoder/x86/av2_highbd_quantize_sse4.c +++ b/av2/encoder/x86/av2_highbd_quantize_sse4.c @@ -23,7 +23,8 @@ static INLINE void quantize_coeff_phase1(__m128i *coeff, const __m128i *param, const int shift, const int scale, __m128i *qcoeff, __m128i *dquan, - __m128i *sign) { + __m128i *sign, + int use_tcq_deadzone_boost) { const __m128i zero = _mm_setzero_si128(); const __m128i one = _mm_set1_epi32(1); const __m128i round = _mm_set1_epi64x((1 << QUANT_TABLE_BITS) >> 1); @@ -43,7 +44,14 @@ static INLINE void quantize_coeff_phase1(__m128i *coeff, const __m128i *param, dquan[0] = _mm_srli_epi64(dquan[0], scale); const __m128i abs_s = _mm_slli_epi32(*coeff, 1 + scale); - qcoeff[2] = _mm_cmplt_epi32(abs_s, param[3]); + if (use_tcq_deadzone_boost == 1) { + const __m128i abs_s9 = _mm_add_epi32(_mm_slli_epi32(abs_s, 3), abs_s); + const __m128i dq10 = _mm_add_epi32(_mm_slli_epi32(param[3], 3), + _mm_add_epi32(param[3], param[3])); + qcoeff[2] = _mm_cmpgt_epi32(dq10, abs_s9); + } else { + qcoeff[2] = _mm_cmplt_epi32(abs_s, param[3]); + } } // Coefficient quantization phase 2 @@ -122,11 +130,12 @@ static INLINE uint16_t get_accumulated_eob(__m128i *eob) { } void av2_highbd_quantize_fp_sse4_1( - const tran_low_t *coeff_ptr, intptr_t count, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, - const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, - const int16_t *scan, const int16_t *iscan, int log_scale) { + const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, + intptr_t count, const int32_t *zbin_ptr, const int32_t *round_ptr, + const int32_t *quant_ptr, const int32_t *quant_shift_ptr, + tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, + uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, + int log_scale) { __m128i coeff[2], qcoeff[3], dequant[2], qparam[4], coeff_sign; __m128i eob = _mm_setzero_si128(); const tran_low_t *src = coeff_ptr; @@ -158,7 +167,7 @@ void av2_highbd_quantize_fp_sse4_1( // DC and first 3 AC quantize_coeff_phase1(&coeff[0], qparam, shift, log_scale, qcoeff, dequant, - &coeff_sign); + &coeff_sign, use_tcq_deadzone_boost); // update round/quan/dquan for AC qparam[0] = _mm_unpackhi_epi64(qparam[0], qparam[0]); @@ -171,7 +180,7 @@ void av2_highbd_quantize_fp_sse4_1( // next 4 AC coeff[1] = _mm_loadu_si128((__m128i const *)(src + coeff_stride)); quantize_coeff_phase1(&coeff[1], qparam, shift, log_scale, qcoeff, dequant, - &coeff_sign); + &coeff_sign, use_tcq_deadzone_boost); quantize_coeff_phase2(qcoeff, dequant, &coeff_sign, qparam, shift, log_scale, quanAddr + quan_stride, dquanAddr + quan_stride); @@ -190,12 +199,12 @@ void av2_highbd_quantize_fp_sse4_1( coeff[1] = _mm_loadu_si128((__m128i const *)(src + coeff_stride)); quantize_coeff_phase1(&coeff[0], qparam, shift, log_scale, qcoeff, dequant, - &coeff_sign); + &coeff_sign, use_tcq_deadzone_boost); quantize_coeff_phase2(qcoeff, dequant, &coeff_sign, qparam, shift, log_scale, quanAddr, dquanAddr); quantize_coeff_phase1(&coeff[1], qparam, shift, log_scale, qcoeff, dequant, - &coeff_sign); + &coeff_sign, use_tcq_deadzone_boost); quantize_coeff_phase2(qcoeff, dequant, &coeff_sign, qparam, shift, log_scale, quanAddr + quan_stride, dquanAddr + quan_stride); diff --git a/avm_dsp/avm_dsp_rtcd_defs.pl b/avm_dsp/avm_dsp_rtcd_defs.pl index 270b45baa8..254cf8424e 100644 --- a/avm_dsp/avm_dsp_rtcd_defs.pl +++ b/avm_dsp/avm_dsp_rtcd_defs.pl @@ -240,7 +240,7 @@ () # Quantization # if (avm_config("CONFIG_AV2_ENCODER") eq "yes") { - add_proto qw/void avm_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const int log_scale"; + add_proto qw/void avm_highbd_quantize_b/, "int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const int log_scale"; specialize qw/avm_highbd_quantize_b avx2 sse2/; add_proto qw/void avm_highbd_quantize_b_adaptive/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; diff --git a/avm_dsp/quantize.c b/avm_dsp/quantize.c index 4f96309ebe..f7f2df4106 100644 --- a/avm_dsp/quantize.c +++ b/avm_dsp/quantize.c @@ -201,14 +201,13 @@ void avm_highbd_quantize_b_64x64_adaptive_c( eob_ptr, scan, iscan, NULL, NULL, 2); } -void avm_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, - const int32_t *zbin_ptr, const int32_t *round_ptr, - const int32_t *quant_ptr, - const int32_t *quant_shift_ptr, - tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, - const int32_t *dequant_ptr, uint16_t *eob_ptr, - const int16_t *scan, const int16_t *iscan, - const int log_scale) { +void avm_highbd_quantize_b_c( + int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t n_coeffs, + const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, + const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, + tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, + const int16_t *scan, const int16_t *iscan, const int log_scale) { + (void)use_tcq_deadzone_boost; avm_highbd_quantize_b_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr, quant_ptr, quant_shift_ptr, qcoeff_ptr, dqcoeff_ptr, dequant_ptr, eob_ptr, scan, iscan, diff --git a/avm_dsp/quantize.h b/avm_dsp/quantize.h index 4068b05ae8..81d76e9787 100644 --- a/avm_dsp/quantize.h +++ b/avm_dsp/quantize.h @@ -58,14 +58,12 @@ void avm_highbd_quantize_b_helper_c( const int16_t *scan, const int16_t *iscan, const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale); -void avm_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, - const int32_t *zbin_ptr, const int32_t *round_ptr, - const int32_t *quant_ptr, - const int32_t *quant_shift_ptr, - tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, - const int32_t *dequant_ptr, uint16_t *eob_ptr, - const int16_t *scan, const int16_t *iscan, - const int log_scale); +void avm_highbd_quantize_b_c( + int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t n_coeffs, + const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, + const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, + tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, + const int16_t *scan, const int16_t *iscan, const int log_scale); #ifdef __cplusplus } // extern "C" #endif diff --git a/avm_dsp/x86/highbd_quantize_intrin_avx2.c b/avm_dsp/x86/highbd_quantize_intrin_avx2.c index 6e8169b97c..5d0144a57a 100644 --- a/avm_dsp/x86/highbd_quantize_intrin_avx2.c +++ b/avm_dsp/x86/highbd_quantize_intrin_avx2.c @@ -120,11 +120,12 @@ static INLINE void quantize(const __m256i *qp, const tran_low_t *coeff_ptr, } void avm_highbd_quantize_b_avx2( - const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, + int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t n_coeffs, + const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const int log_scale) { + (void)use_tcq_deadzone_boost; (void)scan; const unsigned int step = 8; diff --git a/avm_dsp/x86/highbd_quantize_intrin_sse2.c b/avm_dsp/x86/highbd_quantize_intrin_sse2.c index ac4495ca05..9c1349a2c9 100644 --- a/avm_dsp/x86/highbd_quantize_intrin_sse2.c +++ b/avm_dsp/x86/highbd_quantize_intrin_sse2.c @@ -219,11 +219,12 @@ void highbd_quantize_b_64x64_sse2( } void avm_highbd_quantize_b_sse2( - const tran_low_t *coeff_ptr, intptr_t count, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, + int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t count, + const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const int log_scale) { + (void)use_tcq_deadzone_boost; switch (log_scale) { case 0: highbd_quantize_b_sse2(coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, diff --git a/test/av2_quantize_test.cc b/test/av2_quantize_test.cc index db817e149b..fa9651221d 100644 --- a/test/av2_quantize_test.cc +++ b/test/av2_quantize_test.cc @@ -25,8 +25,8 @@ namespace { typedef void (*QuantizeFpFunc)( - const tran_low_t *coeff_ptr, intptr_t count, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, + int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t count, + const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale); @@ -97,25 +97,32 @@ class AV2QuantizeTest : public ::testing::TestWithParam { quant_ptr[j] = quant_ptr[1]; round_ptr[j] = round_ptr[1]; } - quanFuncRef(coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, - quant_shift_ptr, ref_qcoeff_ptr, ref_dqcoeff_ptr, dequant_ptr, - &ref_eob, scanOrder.scan, scanOrder.iscan, log_scale); - - ASM_REGISTER_STATE_CHECK( - quanFunc(coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, - quant_shift_ptr, qcoeff_ptr, dqcoeff_ptr, dequant_ptr, &eob, - scanOrder.scan, scanOrder.iscan, log_scale)); - - for (int j = 0; j < count; ++j) { - err_count += (ref_qcoeff_ptr[j] != qcoeff_ptr[j]) | - (ref_dqcoeff_ptr[j] != dqcoeff_ptr[j]); - ASSERT_EQ(ref_qcoeff_ptr[j], qcoeff_ptr[j]) - << "qcoeff error: i = " << i << " j = " << j << "\n"; - EXPECT_EQ(ref_dqcoeff_ptr[j], dqcoeff_ptr[j]) - << "dqcoeff error: i = " << i << " j = " << j << "\n"; + for (int boost = 0; boost < 2; ++boost) { + ref_eob = eob = UINT16_MAX; + quanFuncRef(boost, coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, + quant_shift_ptr, ref_qcoeff_ptr, ref_dqcoeff_ptr, + dequant_ptr, &ref_eob, scanOrder.scan, scanOrder.iscan, + log_scale); + + ASM_REGISTER_STATE_CHECK( + quanFunc(boost, coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, + quant_shift_ptr, qcoeff_ptr, dqcoeff_ptr, dequant_ptr, + &eob, scanOrder.scan, scanOrder.iscan, log_scale)); + + for (int j = 0; j < count; ++j) { + err_count += (ref_qcoeff_ptr[j] != qcoeff_ptr[j]) | + (ref_dqcoeff_ptr[j] != dqcoeff_ptr[j]); + ASSERT_EQ(ref_qcoeff_ptr[j], qcoeff_ptr[j]) + << "qcoeff error: i = " << i << " j = " << j + << " boost = " << boost << "\n"; + EXPECT_EQ(ref_dqcoeff_ptr[j], dqcoeff_ptr[j]) + << "dqcoeff error: i = " << i << " j = " << j + << " boost = " << boost << "\n"; + } + EXPECT_EQ(ref_eob, eob) + << "eob error: " << "i = " << i << " boost = " << boost << "\n"; + err_count += (ref_eob != eob); } - EXPECT_EQ(ref_eob, eob) << "eob error: " << "i = " << i << "\n"; - err_count += (ref_eob != eob); if (err_count && !err_count_total) { first_failure = i; } @@ -175,15 +182,20 @@ class AV2QuantizeTest : public ::testing::TestWithParam { round_ptr[j] = round_ptr[1]; } - quanFuncRef(coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, - quant_shift_ptr, ref_qcoeff_ptr, ref_dqcoeff_ptr, dequant_ptr, - &ref_eob, scanOrder.scan, scanOrder.iscan, log_scale); + for (int boost = 0; boost < 2; ++boost) { + ref_eob = eob = UINT16_MAX; + quanFuncRef(boost, coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, + quant_shift_ptr, ref_qcoeff_ptr, ref_dqcoeff_ptr, + dequant_ptr, &ref_eob, scanOrder.scan, scanOrder.iscan, + log_scale); - ASM_REGISTER_STATE_CHECK( - quanFunc(coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, - quant_shift_ptr, qcoeff_ptr, dqcoeff_ptr, dequant_ptr, &eob, - scanOrder.scan, scanOrder.iscan, log_scale)); - EXPECT_EQ(ref_eob, eob) << "eob error: " << "i = " << i << "\n"; + ASM_REGISTER_STATE_CHECK( + quanFunc(boost, coeff_ptr, count, zbin_ptr, round_ptr, quant_ptr, + quant_shift_ptr, qcoeff_ptr, dqcoeff_ptr, dequant_ptr, + &eob, scanOrder.scan, scanOrder.iscan, log_scale)); + EXPECT_EQ(ref_eob, eob) + << "eob error: " << "i = " << i << " boost = " << boost << "\n"; + } } } diff --git a/test/quantize_func_test.cc b/test/quantize_func_test.cc index bc10a19236..06aadfd84e 100644 --- a/test/quantize_func_test.cc +++ b/test/quantize_func_test.cc @@ -31,8 +31,8 @@ namespace { using libavm_test::ACMRandom; typedef void (*QuantizeFuncHbd)( - const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int32_t *zbin_ptr, - const int32_t *round_ptr, const int32_t *quant_ptr, + int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t n_coeffs, + const int32_t *zbin_ptr, const int32_t *round_ptr, const int32_t *quant_ptr, const int32_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int32_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale); @@ -122,13 +122,13 @@ class QuantizeTest : public ::testing::TestWithParam { memset(qcoeff_ref, 0, 5 * n_coeffs * sizeof(*qcoeff_ref)); - quant_ref_(coeff_ptr, n_coeffs, zbin, round, quant, quant_shift, + quant_ref_(0, coeff_ptr, n_coeffs, zbin, round, quant, quant_shift, qcoeff_ref, dqcoeff_ref, dequant, &eob[0], sc->scan, sc->iscan, log_scale); - ASM_REGISTER_STATE_CHECK(quant_(coeff_ptr, n_coeffs, zbin, round, quant, - quant_shift, qcoeff, dqcoeff, dequant, - &eob[1], sc->scan, sc->iscan, log_scale)); + ASM_REGISTER_STATE_CHECK(quant_( + 0, coeff_ptr, n_coeffs, zbin, round, quant, quant_shift, qcoeff, + dqcoeff, dequant, &eob[1], sc->scan, sc->iscan, log_scale)); for (int j = 0; j < n_coeffs; ++j) { ASSERT_EQ(qcoeff_ref[j], qcoeff[j]) @@ -289,15 +289,15 @@ TEST_P(QuantizeTest, DISABLED_Speed) { avm_usec_timer_start(&timer); for (int n = 0; n < kNumTests; ++n) { - quant_ref_(coeff_ptr, n_coeffs, zbin, round_fp, quant_fp, quant_shift, + quant_ref_(0, coeff_ptr, n_coeffs, zbin, round_fp, quant_fp, quant_shift, qcoeff, dqcoeff, dequant, eob, sc->scan, sc->iscan, log_scale); } avm_usec_timer_mark(&timer); avm_usec_timer_start(&simd_timer); for (int n = 0; n < kNumTests; ++n) { - quant_(coeff_ptr, n_coeffs, zbin, round_fp, quant_fp, quant_shift, qcoeff, - dqcoeff, dequant, eob, sc->scan, sc->iscan, log_scale); + quant_(0, coeff_ptr, n_coeffs, zbin, round_fp, quant_fp, quant_shift, + qcoeff, dqcoeff, dequant, eob, sc->scan, sc->iscan, log_scale); } avm_usec_timer_mark(&simd_timer); From 61f689a1f1ff6adc02580c5e7e6efe4cec59fc9b Mon Sep 17 00:00:00 2001 From: Ranjit Kumar Tulabandu Date: Wed, 22 Jul 2026 13:12:36 +0530 Subject: [PATCH 077/205] Add a speed feature to improve intra mode pruning A speed feature is added to prune intra modes more by updating top_intra_model_rd[] with model RD cost of DIP modes and also prune DIP modes using the same. This also improves the possibility of pruning intra modes evaluated subsequently. The speed feature aids intra mode pruning in mixed inter intra regions of inter frames. STATS_CHANGED --- av2/encoder/intra_mode_search.c | 51 ++++++++++++++++++++++++++++----- av2/encoder/speed_features.c | 3 ++ av2/encoder/speed_features.h | 7 +++++ 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index 1b39b84885..04b8b85ad6 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1004,6 +1004,39 @@ static AVM_INLINE int intra_block_yrd(const AV2_COMP *const cpi, MACROBLOCK *x, return 0; } +/*!\brief Prune a DIP mode candidate based on model RD cost. + * + * \ingroup intra_mode_search + * \callergraph + * This function estimates the model RD cost for the current DIP mode and + * prunes it if it falls outside the top N model RD candidates. Pruning is + * skipped when the speed feature is disabled or when the block is lossless + * with DPCM enabled. + * + * \param[in] cpi Top-level encoder structure. + * \param[in] x Pointer to macroblock structure. + * \param[in,out] top_intra_model_rd Top intra model RD cost array. + * \param[in,out] best_model_rd Best model RD cost seen so far. + * \param[in] bsize Block size. + * \param[in] mode_cost Mode signaling cost. + * + * \return 1 if the mode should be pruned, 0 otherwise. + */ +static INLINE int prune_intra_dip_mode(const AV2_COMP *cpi, MACROBLOCK *x, + int64_t top_intra_model_rd[], + int64_t *best_model_rd, BLOCK_SIZE bsize, + int mode_cost) { + if (!cpi->sf.intra_sf.include_dip_for_top_n_model_rd_pruning) return 0; + + const MACROBLOCKD *xd = &x->e_mbd; + const MB_MODE_INFO *const mbmi = xd->mi[0]; + const int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); + if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd) && + (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) + return 1; + return 0; +} + /*!\brief Search for the best data-driven intra mode when coding inter frame. * * \ingroup intra_mode_search @@ -1012,12 +1045,11 @@ static AVM_INLINE int intra_block_yrd(const AV2_COMP *const cpi, MACROBLOCK *x, * * Returns nothing, but updates the mbmi and rd_stats. */ -static INLINE void handle_intra_dip_mode(const AV2_COMP *cpi, MACROBLOCK *x, - BLOCK_SIZE bsize, - const PICK_MODE_CONTEXT *ctx, - RD_STATS *rd_stats_y, int mode_cost, - int64_t best_rd, - int64_t best_rd_so_far) { +static INLINE void handle_intra_dip_mode( + const AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, + const PICK_MODE_CONTEXT *ctx, RD_STATS *rd_stats_y, int mode_cost, + int64_t best_rd, int64_t best_rd_so_far, int64_t *best_model_rd, + int64_t top_intra_model_rd[]) { MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; assert(mbmi->mode == DC_PRED && @@ -1049,6 +1081,11 @@ static INLINE void handle_intra_dip_mode(const AV2_COMP *cpi, MACROBLOCK *x, int mode = (transpose << 4) + ml_mode; mbmi->intra_dip_mode = mode; + if (prune_intra_dip_mode(cpi, x, top_intra_model_rd, best_model_rd, bsize, + mode_cost)) { + continue; + } + av2_pick_uniform_tx_size_type_yrd(cpi, x, &rd_stats_y_iml, bsize, best_rd); @@ -1225,7 +1262,7 @@ int64_t av2_handle_intra_mode(IntraModeSearchState *intra_search_state, } if (try_intra_dip) { handle_intra_dip_mode(cpi, x, bsize, ctx, rd_stats_y, mode_cost, best_rd, - best_rd_so_far); + best_rd_so_far, best_model_rd, top_intra_model_rd); } } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 9b17e14e5f..54621bb199 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -348,6 +348,8 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_interintra_by_ref_idx = 1; sf->inter_sf.prune_warp_delta_by_ref_idx = 1; + sf->intra_sf.include_dip_for_top_n_model_rd_pruning = true; + sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; sf->tx_sf.prune_intra_ist_stx_by_zero_eob = true; @@ -801,6 +803,7 @@ static AVM_INLINE void init_intra_sf(INTRA_MODE_SPEED_FEATURES *intra_sf) { intra_sf->src_var_thresh_intra_skip = 1; intra_sf->prune_palette_search_level = 0; intra_sf->reuse_uv_mode_rd_info = false; + intra_sf->include_dip_for_top_n_model_rd_pruning = false; intra_sf->skip_intra_dip_search = false; for (int i = 0; i < TX_SIZES; i++) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 019e11017a..31f2c6c440 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -795,6 +795,13 @@ typedef struct INTRA_MODE_SPEED_FEATURES { // False: No reuse // True: Reuse UV mode RD info. bool reuse_uv_mode_rd_info; + + // Use model RD cost of DIP modes to build top N model RD cost table for + // better pruning. This logic is applied to mixed inter intra regions. + // False: Do not use model RD cost of DIP modes + // True: Use model RD cost of DIP modes + bool include_dip_for_top_n_model_rd_pruning; + bool skip_intra_dip_search; } INTRA_MODE_SPEED_FEATURES; From 31b7299609147269ea21e21ef3e1ae793f2fd53e Mon Sep 17 00:00:00 2001 From: motongxu Date: Thu, 23 Jul 2026 16:27:43 -0700 Subject: [PATCH 078/205] Enable skip tx search when max_eob<512 (#5144) Skip remaining tx type search for small blocks when best eob is 0. Anchor: https://github.com/AOMediaCodec/avm/commit/6e71b0c85924e61d9403b6222921cd4bb8cf870e Tests: cpu-used =1, RA A1 - 17 frames A2 - 33 frames ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | 0.09% | 0.20% | 0.04% | 0.09% | 96.9% | 99.0% | | A2 | -0.02% | 0.04% | -0.49% | -0.04% | 97.0% | 100.0% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/encoder/speed_features.c | 6 ++++++ av2/encoder/speed_features.h | 4 ++++ av2/encoder/tx_search.c | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 54621bb199..77d22fee8a 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -382,6 +382,10 @@ static void set_good_speed_features_framesize_independent( // nearest searched result beyond the cap. sf->mv_sf.newmv_drl_search_limit = 2; + sf->tx_sf.tx_type_search.skip_tx_search = 1; + sf->tx_sf.tx_type_search.eob_adapt_skip_tx_search = true; + sf->tx_sf.tx_type_search.skip_tx_search_max_eob = 256; + sf->tx_sf.enable_adaptive_tcq_threshold = true; sf->tx_sf.adaptive_tcq_threshold_qidx = 185; sf->inter_sf.enable_enhanced_inter_mode_cache_reuse = 1; @@ -820,6 +824,8 @@ static AVM_INLINE void init_tx_sf(TX_SPEED_FEATURES *tx_sf) { tx_sf->tx_type_search.use_reduced_intra_txset = 0; tx_sf->tx_type_search.fast_inter_tx_type_search = 0; tx_sf->tx_type_search.skip_tx_search = 0; + tx_sf->tx_type_search.eob_adapt_skip_tx_search = false; + tx_sf->tx_type_search.skip_tx_search_max_eob = 1024; tx_sf->tx_type_search.prune_tx_type_using_stats = 0; tx_sf->tx_type_search.prune_tx_type_est_rd = 0; tx_sf->tx_type_search.winner_mode_tx_type_pruning = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 31f2c6c440..7df5f118b0 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -158,6 +158,10 @@ typedef struct { // skip remaining transform type search when we found the rdcost of skip is // better than applying transform int skip_tx_search; + // adaptively enable skip tx search based on block size + bool eob_adapt_skip_tx_search; + // Maximum block size used for skip tx search + int skip_tx_search_max_eob; // Prune tx type search using previous frame stats. int prune_tx_type_using_stats; diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 08a1732393..8ba4d22809 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -2678,7 +2678,9 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // Terminate transform type search if the block has been quantized to // all zero. - if (tx_sf->tx_type_search.skip_tx_search && !best_eob) { + if (tx_sf->tx_type_search.skip_tx_search && !best_eob && + (!cpi->sf.tx_sf.tx_type_search.eob_adapt_skip_tx_search || + max_eob <= cpi->sf.tx_sf.tx_type_search.skip_tx_search_max_eob)) { skip_idx = true; break; } From 6ab2b4195fb44c64a80568e0c28139a8c3a87272 Mon Sep 17 00:00:00 2001 From: Lin Zheng Date: Wed, 22 Jul 2026 19:42:49 +0000 Subject: [PATCH 079/205] Encoder speedup for pruning partitions 1) Add early termination after split; 2) Remove qp restriction for resolution <= 720p in av2_ml_part_split_infer(). Both changes can affect all speeds >= speed 1. Here are the breakdown for the changes: Anchor: commit 6e71b0c8 Overall performances: Speed 1 (cpu-used=1): FG16 CTC (33 frames, RA) class psnr-y psnr-u psnr-v psnr-yuv Enctime A1 +0.00% +0.09% +0.09% +0.01% 99.10% A2 +0.00% +0.19% +0.29% +0.02% 98.51% A3 +0.06% -0.32% +0.31% +0.06% 95.58% A4 -0.15% +0.83% +2.96% -0.00% 93.29% A5 +0.04% +0.03% -1.62% -0.05% 93.38% B1 +0.04% +0.21% +0.22% +0.05% 97.61% Avg w/o B2 +0.00% +0.16% +0.40% +0.02% 97.04% Speed 4 (cpu-used=4): FG16 CTC (33 frames, RA) psnr-y psnr-u psnr-v psnr-yuv Enctime Avg w/o B2 +0.02% +0.52% +0.07% +0.04% 96.28% STATS_CHANGED --- av2/encoder/partition_ml.c | 6 +- av2/encoder/partition_model_weights.h | 747 ++++++++++++++++++++++++++ av2/encoder/partition_search.c | 32 ++ av2/encoder/partition_search.h | 9 + av2/encoder/partition_strategy.c | 143 +++++ av2/encoder/speed_features.c | 7 + av2/encoder/speed_features.h | 1 + 7 files changed, 943 insertions(+), 2 deletions(-) diff --git a/av2/encoder/partition_ml.c b/av2/encoder/partition_ml.c index 905f8498b7..82881f1b3b 100644 --- a/av2/encoder/partition_ml.c +++ b/av2/encoder/partition_ml.c @@ -660,8 +660,10 @@ int av2_ml_part_split_infer(AV2_COMP *const cpi, MACROBLOCK *x, int mi_row, for (int mi = 0; mi < num_models; mi++) { MODEL_TYPE model_type = model_types[mi]; struct ModelParams params = model_params[mi]; - bool model_disabled = - qp > (params.qp_high + qp_offset) || qp < (params.qp_low + qp_offset); + bool model_disabled = (cpi->sf.part_sf.remove_qp_restriction_with_ml + ? 0 + : (qp > (params.qp_high + qp_offset) || + qp < (params.qp_low + qp_offset))); model_disabled |= get_model_part_type(model_type) == PT_NONE && !cpi->sf.part_sf.prune_none_with_ml; if (model_disabled) continue; diff --git a/av2/encoder/partition_model_weights.h b/av2/encoder/partition_model_weights.h index 64430094ee..7aa9a1138e 100644 --- a/av2/encoder/partition_model_weights.h +++ b/av2/encoder/partition_model_weights.h @@ -2725,6 +2725,753 @@ static const float av2_simple_motion_search_term_none_model_16[] = { -0.5396254205f, }; +#define FEATURES 31 +#define HIDDEN_NODES 32 +static const float av2_early_term_after_split_nn_weights_64_layer0[] = { + -0.306296f, -0.691664f, 0.335148f, -0.298465f, -0.509241f, -0.632796f, + -0.527979f, -0.009904f, -0.503646f, -0.494002f, -0.575101f, 0.239911f, + -0.413312f, -0.622825f, -0.405448f, -0.419103f, -0.505903f, -0.392550f, + -0.240293f, 0.121749f, -0.489777f, -0.756647f, 0.001047f, -0.016528f, + 0.145714f, 0.172910f, 0.086197f, 0.162882f, -0.070588f, -0.077104f, + 0.502730f, -0.244954f, 0.265605f, -0.323994f, 0.223397f, -1.086453f, + 0.391886f, 0.200343f, 0.253878f, 0.018925f, 0.201819f, -0.205136f, + 0.427314f, 0.041155f, 0.070484f, 0.159925f, -0.057095f, -0.146544f, + -0.073792f, 0.152628f, 0.003986f, -0.515965f, -0.209754f, 0.037457f, + 0.070622f, -0.143571f, -0.059602f, 0.111734f, 0.319674f, 0.149894f, + -0.219883f, 0.206678f, 0.015809f, -0.210549f, 0.130156f, -0.189502f, + -0.850392f, -0.156363f, -0.060354f, 0.189044f, 0.266495f, 0.151305f, + -0.563677f, -0.354896f, 0.300637f, 0.257568f, -0.008359f, -0.535497f, + -0.003127f, 0.293054f, -0.020212f, -0.157278f, 0.229972f, -0.309799f, + -0.329927f, -0.077140f, 0.001177f, -0.024415f, 0.134044f, -0.181587f, + -0.135380f, 0.230989f, -0.281451f, 0.912282f, 0.511562f, -3.900779f, + -0.039917f, 1.956406f, -0.357589f, 0.292998f, -0.950158f, 0.422041f, + 0.526572f, 0.605746f, -0.147110f, 0.256576f, 0.090010f, 0.221641f, + 0.029763f, 0.351592f, 0.458324f, -0.005888f, 0.010521f, -0.389326f, + -0.094006f, -0.171489f, -0.013153f, 0.026333f, -0.454571f, -1.932891f, + -0.168211f, 0.051298f, -0.258061f, -0.028936f, -0.555937f, -0.475566f, + -0.304046f, -0.318113f, 0.099697f, -0.217145f, 0.139433f, -0.203986f, + -0.164012f, 0.051527f, 0.138603f, -0.085100f, -0.082887f, -0.242955f, + -0.663410f, -0.535772f, -0.181665f, -0.197883f, 0.071319f, 0.135086f, + 0.146200f, 0.184827f, -0.199041f, 0.162570f, -0.300167f, 0.017748f, + -0.140111f, 0.103553f, 0.206929f, 0.193446f, 0.123141f, -1.201898f, + -0.052254f, -0.750121f, 0.111741f, 0.204092f, -0.166266f, 0.124008f, + -0.455496f, 0.306035f, 0.275903f, 0.193599f, -0.730011f, 0.126808f, + 0.051059f, 0.103634f, -0.044334f, 0.048889f, 0.405228f, 0.574099f, + 0.061167f, 0.260576f, 0.070032f, -0.038040f, 0.229183f, -0.243269f, + -0.130116f, -0.538563f, -0.070199f, -0.129249f, -0.205153f, -0.268530f, + -0.290828f, -0.233006f, 0.068712f, 0.618085f, -0.407008f, 0.686868f, + 0.172247f, 0.826287f, -0.002672f, 0.239825f, -0.051548f, 0.420773f, + 0.218747f, 0.041057f, -0.071189f, 0.286987f, -0.113915f, 0.122561f, + 0.013979f, -0.049046f, 0.148175f, 0.031313f, -0.248601f, 0.209488f, + 0.069008f, 0.072763f, 0.332475f, 0.079986f, -0.151042f, -0.205110f, + -0.155550f, -0.510408f, 0.330429f, 0.577729f, 0.266524f, -0.378489f, + 0.228204f, 0.055318f, 0.117583f, -0.588557f, -0.778201f, 0.434622f, + -0.227820f, 0.611642f, 0.170548f, 0.817761f, 0.006642f, -1.005794f, + -0.911490f, 1.633684f, -0.290664f, 0.308128f, 0.295986f, 0.243377f, + -0.001275f, -0.131156f, 0.275205f, -0.041865f, -0.201951f, -0.016380f, + 0.336604f, -0.258118f, 0.890810f, 0.441065f, -0.968006f, 0.135989f, + -1.447191f, 0.353426f, -0.343235f, 0.376837f, -0.071602f, -0.319639f, + -0.072347f, 0.547450f, -0.215380f, 0.182141f, -0.066186f, 0.033787f, + 0.257482f, 0.217428f, -0.130249f, 0.057525f, 0.263991f, 0.230664f, + -0.245113f, 0.048610f, -0.079955f, 0.251737f, -0.070368f, -0.017968f, + -0.151815f, 0.025945f, -0.257769f, 0.299735f, 0.077263f, -0.565526f, + 0.326263f, 0.096429f, 0.113414f, 0.092754f, -0.141908f, 0.172060f, + 0.393117f, -0.216755f, 0.331051f, -0.363369f, -0.113363f, -0.095164f, + -0.072784f, 0.214572f, 0.010993f, 0.209456f, 0.260381f, -0.314747f, + -0.422173f, -0.189963f, -0.225130f, 0.339448f, 0.153814f, 0.265616f, + -0.103575f, -0.123841f, -0.106236f, 0.155894f, -0.156264f, -1.361406f, + -0.040736f, -0.614998f, -0.468200f, -0.266505f, -0.342786f, -0.908088f, + 0.105758f, 0.040788f, -0.313589f, -1.359318f, 0.071329f, 0.176404f, + -0.476141f, 0.010108f, -0.201440f, -0.221167f, -0.197448f, -0.013927f, + -0.610270f, -0.607285f, 0.178070f, 0.174320f, 0.313115f, 0.026191f, + -0.112330f, 0.122338f, -0.367751f, 0.196794f, 0.153709f, -0.205454f, + -0.397471f, -1.879336f, -0.030129f, 0.143429f, -0.079832f, 0.435259f, + -1.729539f, 0.518301f, -0.141393f, 0.199399f, -1.914601f, 0.142865f, + -0.219899f, 0.508458f, 0.086365f, -0.220740f, -0.012507f, 1.263320f, + 0.042136f, 0.050922f, -0.329644f, -0.188198f, 0.251522f, 0.394731f, + -0.047866f, -0.260853f, -0.267207f, -0.248489f, 0.146474f, 0.359257f, + -0.427732f, -0.100652f, 0.192129f, 0.075572f, 0.916708f, 0.255747f, + 0.486384f, 0.127989f, -0.556449f, -0.484913f, 0.392298f, 0.045401f, + -0.839551f, -0.703619f, 0.069263f, -0.040720f, 0.542265f, 0.443739f, + 0.862552f, -0.021726f, 0.230858f, -0.261004f, -0.125697f, -0.106435f, + 0.002341f, 0.013904f, 0.011034f, 0.542296f, -0.284325f, 0.135736f, + 0.113882f, 0.040610f, -0.255485f, 0.224061f, -0.087140f, 0.127872f, + -0.002638f, 0.164889f, -0.335958f, -0.031166f, -0.393581f, 0.075455f, + 0.055995f, 0.087934f, -0.133859f, -0.342187f, 0.002492f, -0.340722f, + 0.058304f, 0.104165f, -0.142136f, -0.351111f, -0.158037f, -0.079924f, + -0.253209f, -0.092840f, -0.174646f, -0.202772f, -0.353438f, -0.031111f, + 0.076088f, -0.232091f, -0.070052f, 0.097595f, 0.063173f, -0.211195f, + 0.126478f, -0.178828f, 0.278723f, -0.070807f, -0.179783f, 0.034123f, + 0.035721f, -0.200431f, 0.170640f, 0.107933f, 0.226594f, -0.301499f, + -0.291096f, 0.228076f, -0.272951f, 0.002490f, -0.210707f, -0.128033f, + -0.194009f, -0.011347f, -0.256694f, -0.011841f, -0.005167f, -0.163203f, + -0.253796f, -0.198877f, -0.055827f, -0.882685f, -0.443471f, 0.349601f, + 0.749334f, -1.161845f, 0.505480f, 0.221733f, 0.210490f, -0.234984f, + 0.014183f, -0.510401f, 0.238692f, -0.134111f, 0.083844f, -0.478751f, + -0.088434f, 0.304063f, 0.150336f, -0.749682f, -0.081999f, 0.729739f, + 0.412508f, 0.132571f, 0.058306f, -0.047451f, -0.117435f, -0.445395f, + -0.005182f, -0.025757f, 0.175051f, -0.258194f, -0.150311f, -0.196533f, + -1.314316f, -0.428627f, 0.512451f, 0.045138f, -0.200925f, 0.081538f, + -0.346151f, -0.358197f, -0.422258f, -0.028542f, -0.383534f, -0.026163f, + -0.419858f, -0.154321f, 0.376970f, 0.094017f, 0.783520f, 0.110641f, + 0.077966f, -0.093064f, 0.160522f, -0.863041f, 0.086210f, 0.560764f, + 0.057032f, 0.159224f, 0.323068f, -0.173109f, 0.014042f, -0.126856f, + -0.128237f, -0.245273f, -0.317312f, -0.257597f, -0.181977f, 0.259485f, + -0.215834f, 0.062076f, -0.270596f, 0.271581f, -0.153486f, -0.247165f, + 0.079737f, -0.157049f, -0.027459f, -0.299397f, 0.136729f, -0.334192f, + -0.191722f, 0.145865f, -0.031324f, -0.307165f, -0.244923f, -0.228027f, + 0.063807f, 0.054965f, -0.005709f, -0.041977f, -0.276245f, 0.020003f, + 0.133323f, -0.145992f, -0.951030f, 0.414083f, -1.063323f, 0.137872f, + 0.104732f, -0.123728f, 0.542532f, 0.213654f, 0.542954f, 0.155619f, + 0.543072f, 0.399067f, 0.191402f, -0.102552f, -0.176734f, -0.136776f, + -0.012814f, -0.021298f, -0.802467f, -0.957481f, -0.238787f, -0.138482f, + 0.058331f, 0.126601f, 0.104420f, -0.148684f, 0.343218f, 0.093604f, + -0.055642f, -0.383918f, -0.045250f, -0.090480f, -0.155464f, 0.278299f, + 0.042791f, -0.029084f, -0.373861f, -0.073233f, -0.085172f, 0.186841f, + -0.070898f, -0.156415f, 0.112831f, -0.065931f, -0.353007f, 0.058453f, + -0.136982f, 0.233393f, 0.017240f, -0.018428f, 0.229104f, -0.371440f, + -0.262212f, 0.203075f, -0.263293f, 0.034413f, -0.299354f, 0.227269f, + 0.204977f, -0.118107f, -0.359832f, -0.068252f, 0.480105f, -0.214711f, + -0.614381f, 0.209048f, -0.456014f, -0.188819f, -0.220995f, -0.322104f, + -0.191457f, 0.420874f, -0.454919f, 0.023119f, 0.291700f, -0.532885f, + -0.032642f, 0.043271f, 0.133974f, 0.002399f, -0.179899f, -0.044158f, + -0.027078f, -0.350075f, 0.236766f, 0.346771f, -0.118534f, -0.421221f, + 0.019544f, 0.109349f, 0.141517f, 0.403561f, 0.409102f, 0.054555f, + -0.561751f, 0.577183f, -0.705156f, -0.231188f, -1.969772f, 0.172289f, + -0.048122f, 0.205671f, -0.667130f, -0.066870f, 0.202838f, -0.095538f, + -0.842651f, 0.254170f, 0.046256f, -0.271891f, -0.369254f, 0.492101f, + 0.001189f, -0.186525f, 0.188470f, -0.207072f, 0.030086f, -0.132904f, + 0.127001f, 0.116662f, -0.079246f, 0.227241f, -0.462178f, 0.446304f, + -1.660753f, 0.241832f, -0.288040f, 0.054663f, -0.435804f, 0.296782f, + -0.026421f, -0.115618f, 0.163416f, 0.834001f, 0.008019f, -0.014243f, + 0.524658f, 0.067894f, -0.253936f, -0.100657f, 1.285389f, -0.005952f, + 0.087134f, -0.088375f, -0.121866f, -0.171172f, 0.279463f, -0.598593f, + -0.727761f, 0.189831f, -0.822575f, -0.291141f, -0.012410f, -0.069999f, + 0.098842f, -0.218513f, 0.009494f, 0.100106f, -0.402884f, -0.299236f, + -0.345668f, -0.057739f, -0.213248f, -0.426661f, -0.360268f, -0.349860f, + -0.382177f, -0.357802f, -0.032030f, -0.110597f, -0.155442f, -0.418794f, + -0.012113f, -0.032962f, -0.450648f, 0.129060f, -0.135227f, -0.298593f, + 0.001435f, 0.278790f, -0.272945f, 0.162759f, -0.290208f, 0.058481f, + -0.490971f, 0.019630f, -0.210347f, 0.000520f, -0.340413f, 0.641562f, + 0.023104f, 0.194832f, -0.441894f, -0.253538f, -0.228332f, 0.423264f, + -1.094073f, -0.475657f, -0.238752f, 0.033910f, 0.440425f, 0.036320f, + 0.566989f, -0.065326f, -0.297939f, 0.406098f, 0.529561f, -0.113084f, + 0.141472f, -0.024462f, -0.179212f, 0.187801f, -0.235787f, -0.229624f, + 0.357791f, 0.061110f, -0.607788f, -1.713694f, -0.651041f, 1.734283f, + -0.334701f, 0.161687f, 0.010215f, 0.320708f, 0.169447f, 0.513558f, + 0.488340f, -0.619036f, -0.525441f, -1.144352f, -0.546154f, 0.669973f, + 0.327028f, -0.100539f, 0.012048f, -0.223013f, -0.239680f, 0.323035f, + 0.165950f, -0.155110f, 0.128664f, -0.157378f, -0.124490f, 0.291553f, + 0.055849f, -0.221664f, 0.077770f, -0.350658f, -0.181939f, 0.110230f, + -0.078219f, 0.007472f, -0.031620f, 0.007708f, -0.201794f, 0.017594f, + -0.027480f, 0.058884f, -0.369166f, -0.369770f, 0.181635f, -0.183318f, + -0.389184f, -0.256661f, 0.160107f, 0.037127f, -0.082573f, -0.095815f, + -0.322782f, 0.072528f, -0.348875f, 0.216247f, -0.161757f, -0.385502f, + -0.315738f, 0.020123f, -0.155609f, 0.114403f, -0.383232f, 0.629529f, + 0.066142f, 0.448392f, -0.389557f, -0.083315f, 0.829535f, -0.015531f, + -0.050728f, -0.325127f, 0.812992f, -0.196780f, 0.021060f, -0.952647f, + 0.006687f, -0.512715f, -0.066778f, 0.410067f, -0.116945f, -0.288283f, + 0.189334f, -0.083153f, 0.159980f, -0.068208f, 0.107358f, -0.154411f, + -0.068914f, 0.186816f, 0.032251f, 0.109242f, 0.134825f, 0.035101f, + -0.253175f, 0.157309f, -0.363597f, -0.138176f, -0.334141f, -0.172697f, + 0.045800f, -0.286057f, 0.173403f, -0.172444f, -0.117996f, -0.383848f, + -0.173303f, -0.258482f, -0.021404f, -0.017898f, -0.001970f, 0.003273f, + 0.056121f, 0.155046f, 0.044708f, -0.295609f, -0.211688f, -0.233229f, + -0.264980f, 0.145549f, 0.045323f, -0.027112f, 0.175638f, -0.207251f, + -0.055274f, 0.092706f, 0.086200f, -0.241340f, -0.147416f, 0.024510f, + -0.357194f, -0.181944f, -0.050104f, -0.079024f, -0.290473f, -0.169790f, + -0.277982f, -0.017781f, -0.004854f, -0.094132f, -0.348555f, 0.199291f, + -0.343989f, -0.319299f, -0.268935f, -0.021208f, 0.020938f, -0.090609f, + 0.006595f, -0.200790f, 0.171856f, -0.027766f, -0.032017f, -0.006745f, + 0.566426f, -0.096850f, 0.727633f, -0.408065f, -0.012436f, 0.005646f, + -0.305148f, -0.095075f, -0.391549f, -0.020378f, -0.236498f, -0.252773f, + -0.231385f, -0.203175f, 0.041903f, -0.373694f, 0.058239f, -0.101116f, + 0.183772f, 0.164523f, -0.099046f, -0.201272f, -0.394523f, -0.157517f, + 0.032079f, -0.381173f, -0.238496f, -0.037990f, -0.294553f, 0.141473f, + 0.100268f, -0.023806f, 0.004978f, 0.184916f, 0.142699f, -0.113240f, + -0.213364f, -0.160059f, -0.216263f, -0.406387f, -0.301140f, -0.406355f, + -0.113085f, -0.279699f, -0.267434f, 0.126263f, -0.260527f, -0.153904f, + -0.494653f, -0.355144f, 0.030549f, -0.216400f, -0.123363f, 0.189090f, + 0.219122f, 0.096677f, -0.202037f, -0.014489f, -0.137859f, -0.114184f, + -0.279423f, -0.270683f, +}; + +static const float av2_early_term_after_split_nn_bias_64_layer0[] = { + -0.491455f, 0.464538f, -0.005742f, -0.219951f, -0.073682f, 0.102027f, + 0.567071f, 0.441402f, 0.277521f, 0.314498f, -0.448199f, -0.065032f, + 0.488139f, -0.079632f, 0.000000f, 0.521555f, -0.151950f, -0.034616f, + 0.393438f, -0.072242f, -0.087343f, -0.571308f, 0.017372f, -0.126144f, + 0.372261f, -0.451537f, -0.140238f, -0.092377f, -0.074475f, -0.068879f, + -0.109614f, -0.164492f, +}; + +static const float av2_early_term_after_split_nn_weights_64_layer1[] = { + -0.373195f, -0.283141f, 0.416113f, 0.483659f, 0.230583f, 0.349197f, + -0.168582f, -0.813338f, -0.472369f, -0.173872f, 1.297845f, 0.339355f, + -0.828033f, 0.019617f, 0.118757f, -0.619360f, 0.282295f, -0.054116f, + -0.730596f, 0.068567f, -0.248707f, 0.461225f, 0.330224f, -0.287080f, + -0.458103f, 0.591852f, -0.008491f, 0.632119f, -0.007872f, 0.007869f, + -0.230698f, -0.011437f, +}; + +static const float av2_early_term_after_split_nn_bias_64_layer1[] = { + -0.55403697f, +}; + +static const NN_CONFIG av2_early_term_after_split_nnconfig_64 = { + FEATURES, + 1, + 1, + { + HIDDEN_NODES, + }, + { + av2_early_term_after_split_nn_weights_64_layer0, + av2_early_term_after_split_nn_weights_64_layer1, + }, + { + av2_early_term_after_split_nn_bias_64_layer0, + av2_early_term_after_split_nn_bias_64_layer1, + }, +}; + +static const float av2_early_term_after_split_nn_weights_32_layer0[] = { + 0.026050f, -0.226531f, 0.308107f, -0.083744f, 0.201785f, 0.098562f, + 0.147595f, -0.495771f, -0.245741f, 0.201616f, -0.272070f, -0.579545f, + -0.127261f, -0.229588f, 0.250831f, -0.176929f, -0.031689f, 0.284718f, + 0.085845f, -0.285027f, 0.012304f, 0.382402f, -0.204591f, 0.272514f, + -0.065854f, -0.054228f, -0.231174f, -0.174504f, 0.258287f, 0.195689f, + 0.242530f, 0.023528f, -0.294242f, -0.272132f, 0.460180f, -0.731281f, + -0.208103f, 0.208204f, 0.348250f, 0.016328f, 0.043707f, -0.169551f, + 0.108521f, 0.226895f, -0.020471f, 0.102443f, 0.429640f, -0.252555f, + -0.218434f, -0.163665f, 0.175531f, 0.101588f, -0.135798f, -0.158102f, + 0.142565f, 0.128277f, 0.174985f, -0.100073f, 0.113967f, 0.223682f, + -0.145576f, -0.008443f, 0.112748f, -0.037845f, 0.076954f, -0.287137f, + -0.518185f, -0.106833f, 0.175359f, 0.031408f, 0.219069f, -0.294440f, + 0.007766f, 0.067754f, -0.049168f, -0.212368f, -0.261708f, 0.309252f, + 0.220859f, -0.274852f, -0.653157f, 0.083438f, -0.265386f, 0.174429f, + -0.116931f, -0.091594f, -0.244897f, -0.089015f, 0.274453f, 0.212890f, + 0.272053f, -0.425315f, -0.107726f, 0.294444f, -0.354629f, 0.104402f, + -0.307663f, 0.558430f, 0.140334f, -0.054831f, -0.449456f, 0.058274f, + -0.033768f, -0.354117f, -0.331618f, -0.411772f, 0.232064f, -0.079297f, + -0.638571f, 0.181823f, -0.039611f, 0.206310f, -0.659157f, -0.102930f, + -0.067303f, -0.176881f, -0.001038f, 0.091835f, 0.079739f, -0.121923f, + 0.211070f, 0.362719f, -0.154915f, -0.151876f, -0.165460f, 0.023469f, + -0.251036f, 0.210014f, -0.537125f, 0.156832f, -0.216987f, 0.062975f, + -0.198462f, 0.329123f, 0.125870f, 0.225830f, 0.086377f, -0.128773f, + -0.179673f, -0.074612f, 0.456645f, 0.021905f, -0.243140f, 0.059145f, + -0.273942f, -0.277822f, 0.154556f, -0.025459f, 0.227614f, -0.313076f, + 0.044705f, -0.019017f, 0.108999f, -0.020243f, -0.016373f, 0.560270f, + -0.064818f, 0.050880f, -0.218458f, 0.825699f, -0.534056f, -0.258253f, + 0.222073f, 0.013295f, 0.477870f, -0.386727f, 0.388509f, 0.004128f, + 0.451388f, -0.175788f, 0.264093f, -0.109812f, 0.358132f, 0.500992f, + -0.446933f, -0.222397f, 0.345834f, 0.370943f, -0.233115f, -0.047005f, + -0.111335f, -0.111586f, 0.026975f, -0.052191f, -0.111800f, -0.129782f, + 0.225132f, 0.102524f, 0.544557f, -0.111674f, -0.857884f, 0.133258f, + 0.310001f, 0.043829f, 0.104143f, 0.256493f, 0.242520f, -0.342082f, + 0.421447f, 0.124227f, 0.061542f, -0.090206f, 0.316681f, 0.353452f, + -0.918408f, -0.001903f, -0.052303f, -0.004816f, -0.446393f, -0.053038f, + 0.255725f, -0.126346f, 0.034095f, -0.240276f, -0.135918f, 0.095682f, + -0.147457f, -0.338216f, -0.200426f, 0.010265f, -0.243915f, -0.231375f, + -0.323924f, -0.014353f, 0.150252f, -0.264346f, 0.205303f, -0.194610f, + -0.282527f, 0.180555f, -0.000087f, 0.027240f, -0.000903f, -0.345877f, + -0.353274f, -0.311829f, 0.172985f, -0.111748f, -0.309380f, 0.108110f, + -0.260914f, -0.164990f, 0.183625f, -0.319692f, -0.096988f, 0.094147f, + -0.047062f, -0.080978f, 0.227387f, -0.000450f, -0.220159f, -0.211448f, + -0.020885f, -0.139646f, -0.086721f, 0.067928f, -0.033084f, -0.251996f, + 0.090317f, 0.086313f, -0.228420f, -0.111356f, -0.314304f, -0.223664f, + 0.188176f, -0.002360f, -0.029491f, -0.006000f, -0.075343f, 0.173699f, + -0.272800f, -0.238507f, -0.272071f, -0.015000f, -0.215305f, -0.192943f, + -0.038595f, 0.119537f, 0.260477f, -0.168014f, -0.172751f, 0.532861f, + -0.753250f, -0.017485f, -0.115541f, -0.109291f, -1.098943f, 0.418559f, + -0.532110f, 0.359323f, -0.254786f, 0.471316f, -0.545024f, 0.291912f, + -0.836939f, 0.443427f, -0.441709f, 0.168866f, -0.140372f, 0.546607f, + -0.315465f, 0.023328f, 0.137709f, -0.083492f, -0.049986f, -0.071302f, + -0.293680f, -0.105049f, 0.315317f, 0.279569f, 0.220762f, 0.088161f, + -0.756456f, -0.074512f, 0.958318f, -0.332924f, -0.004906f, -0.629271f, + 0.212050f, 0.279123f, 0.311523f, -0.599580f, 0.516150f, 0.456952f, + 0.020255f, 0.247290f, -0.182670f, -0.335554f, 0.021203f, 0.131081f, + -0.208584f, 0.112530f, -0.198980f, 0.211583f, -0.101271f, -0.206453f, + -0.502688f, -0.294976f, -0.187019f, -0.114473f, 0.282050f, -0.165483f, + 0.094953f, -0.182578f, 0.055068f, 0.135605f, -0.266941f, -0.297556f, + 0.199181f, 0.015979f, -0.158659f, -0.226841f, 0.171306f, 0.013438f, + -0.286309f, -0.071753f, -0.170300f, -0.238188f, 0.093572f, -0.026230f, + -0.254502f, -0.297786f, -0.063480f, -0.300799f, -0.065644f, 0.074710f, + 0.248576f, -0.144425f, -0.113948f, -0.247297f, 0.276682f, 0.010963f, + -0.737786f, 0.026347f, 0.007830f, 0.753543f, 0.371904f, 0.305614f, + 0.105028f, 0.073530f, -0.119137f, 0.102352f, -0.080523f, 0.176366f, + -0.159457f, -0.339948f, 0.360131f, -0.007051f, -0.388378f, -0.101695f, + 0.663041f, -0.234486f, -0.142536f, -0.099931f, 0.041478f, 0.230425f, + 0.005743f, 0.154060f, 0.056233f, -0.080668f, -0.009754f, -0.194356f, + 0.185474f, -0.296474f, 0.192700f, 0.257767f, 0.348529f, 0.458265f, + 0.060276f, -0.130473f, 0.139889f, 0.310073f, -0.306869f, -0.272922f, + -0.259862f, 0.409207f, 0.431991f, -0.100357f, -0.050415f, -0.071830f, + -0.239665f, 0.153399f, 0.177192f, -0.611644f, -0.176114f, -0.022694f, + -0.033701f, -0.345842f, 0.015660f, 0.158931f, -0.097586f, 0.222001f, + 0.257887f, -0.171307f, -0.222607f, -0.245508f, -0.145742f, -0.096461f, + -0.010895f, 0.052815f, -0.265306f, -0.081059f, 0.219162f, -0.256084f, + -0.372676f, 0.148977f, 0.174831f, 0.086980f, 0.108518f, 0.074011f, + 0.038032f, -0.070856f, -0.109407f, 0.126174f, 0.022341f, -0.249786f, + -0.356164f, -0.202841f, -0.087437f, -0.133740f, 0.090956f, -0.017953f, + -0.028353f, 0.233621f, 0.109426f, 0.232798f, -0.104950f, -0.241798f, + -0.018995f, -0.167954f, 0.002473f, 0.060418f, -0.232717f, -0.195980f, + -0.283971f, -0.371881f, 0.219728f, 0.018072f, -0.166694f, -0.083301f, + -0.000616f, -0.212641f, -0.173158f, 0.222739f, -0.235302f, 0.237624f, + 0.222232f, -0.041235f, -0.342411f, 0.121194f, 0.211291f, -0.032237f, + -0.249401f, -0.291668f, 0.206055f, -0.148200f, 0.011824f, -0.272728f, + -0.194854f, 0.367175f, -0.257243f, 0.103433f, -0.231077f, 0.236734f, + 0.135733f, -0.362845f, 0.197147f, 0.242782f, -0.135289f, 0.123311f, + 0.259420f, -0.116278f, 0.127287f, 0.236789f, -0.097438f, 0.118073f, + 0.112796f, -0.035949f, 0.184408f, 0.200948f, -0.008859f, 0.195989f, + 0.161970f, -0.295320f, -0.330389f, 0.141034f, 0.066081f, -0.707857f, + 0.357037f, 0.149633f, 0.679877f, 0.548674f, 0.469076f, 0.194123f, + -0.209872f, -0.071764f, -0.126960f, 0.199420f, 0.327116f, -0.169053f, + -0.429156f, 0.443429f, -0.225530f, -0.130738f, -0.028351f, 0.644393f, + 0.049606f, -0.243602f, -0.409920f, 0.117028f, -0.258557f, 0.073865f, + -0.200454f, -0.139957f, -0.031314f, 0.162325f, 0.247221f, 0.071909f, + -0.336276f, 0.079922f, 0.192780f, -0.148882f, 0.133192f, -0.143177f, + -0.121327f, 0.126221f, -0.089521f, -0.181826f, 0.149923f, -0.280682f, + 0.391572f, 0.108990f, -0.445494f, -0.170787f, 0.225182f, 0.223313f, + -0.234828f, -0.071072f, -0.072673f, -0.093686f, 0.223892f, -0.049377f, + 0.057976f, 0.033558f, 0.068733f, -0.283353f, 0.217877f, 0.158093f, + -0.276761f, -0.097049f, -0.351913f, -0.383604f, 0.002863f, -0.474510f, + -0.096738f, 0.256940f, 0.234203f, -0.226667f, -0.260576f, -0.183403f, + -0.035578f, 0.141570f, 0.078764f, -0.028086f, 0.155800f, -0.251115f, + -0.286703f, -0.014739f, -0.072621f, -0.311506f, -0.048639f, 0.081621f, + 0.043057f, 0.068136f, -0.179903f, 0.143699f, -0.002571f, 0.239012f, + 0.197456f, 0.035745f, -0.311927f, 0.220320f, 0.102687f, -0.294105f, + 0.426740f, 0.209050f, 0.211907f, 0.083453f, 0.006578f, -0.143338f, + 0.003157f, 0.040295f, 0.234497f, 0.035344f, -0.163909f, 0.411115f, + 0.289453f, -0.075357f, -0.008884f, 0.469798f, -0.033304f, -0.153293f, + -0.229322f, -0.004162f, 0.113363f, 0.395381f, 0.067414f, -0.188966f, + -0.117424f, -0.166423f, 0.066839f, 0.595641f, -0.204782f, -0.451727f, + 0.198509f, -0.921583f, -0.246765f, -0.153411f, 0.046491f, 0.365906f, + 0.376710f, -0.017355f, -0.035232f, 0.138785f, -0.163918f, -0.283449f, + -0.094340f, 0.192127f, 0.154815f, 0.035787f, -0.029087f, 0.115649f, + -0.220133f, -0.452741f, 0.311667f, 0.157666f, 0.091401f, 0.236040f, + -0.168523f, 0.122176f, -0.219016f, -0.214856f, 0.172824f, -0.091810f, + 0.031520f, -0.857420f, 0.643446f, -0.017471f, 0.206082f, -0.933517f, + -0.020070f, -0.065091f, -0.117680f, -1.271870f, -0.069177f, -0.149409f, + 0.289970f, -0.889775f, -0.044741f, 0.232647f, -0.319416f, 0.073030f, + 0.278549f, 0.238782f, -0.202206f, 0.272540f, 0.201412f, 0.175574f, + -0.127971f, -0.253164f, -0.086352f, -0.005381f, 0.114714f, 0.505169f, + -0.175049f, -1.534280f, -0.320666f, -2.119298f, -0.023075f, -0.021259f, + -0.161019f, 0.344837f, 0.361958f, -0.097050f, 0.014375f, 0.267110f, + 0.341442f, -0.016688f, 0.073393f, 0.131500f, 0.246331f, 0.011059f, + 0.033597f, 0.014779f, -0.269366f, -0.504788f, 0.048651f, 0.295682f, + 0.237363f, 0.227484f, -0.235814f, -0.160530f, 0.182682f, -0.172999f, + -0.126630f, 0.168357f, -0.078729f, 0.052805f, 0.377021f, -0.004727f, + 0.230415f, -0.876673f, 0.458457f, 0.099401f, -0.019616f, 0.611982f, + -0.231508f, -0.070894f, -0.056142f, 0.548969f, -0.376599f, -0.600428f, + 0.241930f, -0.592893f, 0.189371f, 0.488651f, -0.092446f, -0.272569f, + 0.251643f, 0.315945f, -0.301468f, 0.112961f, 0.052119f, -0.066076f, + -0.082249f, 0.252805f, -0.195539f, 0.150386f, -0.865534f, 0.673447f, + 0.030177f, -0.438528f, -1.006174f, 0.575176f, -0.271656f, 0.035835f, + -1.056916f, 0.495267f, -0.092428f, -0.109511f, -0.192359f, 0.166669f, + -0.624326f, -0.000354f, -0.089075f, 0.176279f, -0.289347f, 0.021346f, + 0.020375f, 0.255282f, -0.045588f, 0.173675f, 0.100957f, -0.294373f, + 0.049303f, -0.134132f, -0.255731f, -0.025559f, -0.307463f, -0.205100f, + 0.079024f, 0.101113f, 0.135742f, -0.348869f, -0.026759f, -0.134155f, + -0.179275f, -0.054297f, -0.054948f, 0.029351f, 0.190560f, 0.102476f, + -0.025785f, 0.169442f, -0.271303f, 0.200667f, 0.099063f, 0.074767f, + -0.326533f, 0.044426f, -0.290251f, -0.082443f, -0.164482f, -0.349412f, + 0.045109f, -0.157330f, 0.165935f, 0.012672f, -0.059818f, 0.399140f, + -0.316620f, 0.386638f, -0.285399f, -0.296777f, -0.200473f, -0.144232f, + 0.251851f, -0.203768f, 0.001071f, -0.179063f, 0.248952f, -0.143029f, + 0.010423f, -0.030293f, -0.046786f, -0.196195f, -0.016845f, 0.295023f, + 0.322825f, 0.133683f, 0.017388f, 0.142467f, 0.221320f, 0.004059f, + -0.115770f, 0.143363f, 0.137972f, -0.272584f, 0.489366f, -0.091828f, + -0.014703f, 0.082332f, -0.476226f, -0.202859f, 0.356094f, -0.283049f, + 0.218086f, 0.202015f, 0.201724f, 0.012617f, 0.050720f, 0.255695f, + 0.244653f, 0.111296f, -0.151450f, -0.056210f, -0.757348f, 0.441724f, + -0.022455f, -0.244662f, 0.296205f, -0.421883f, -0.217386f, -0.254301f, + 0.409105f, -0.031309f, 0.050147f, -0.337170f, -0.106620f, -0.606455f, + 0.308024f, 0.298144f, 0.363993f, 0.704870f, -0.047292f, 0.166901f, + 0.105991f, -0.536757f, -0.424031f, -0.226034f, 0.213635f, -0.526754f, + 0.310990f, -0.116038f, 0.007775f, 0.538330f, -0.177912f, 0.445357f, + -0.290365f, 0.451169f, 0.030931f, 0.033388f, 0.209905f, -0.244492f, + -0.097792f, -0.246042f, 0.132047f, 0.032576f, 0.115516f, 0.022890f, + 0.093508f, -0.071840f, 0.362948f, -0.135245f, 0.659911f, -0.321413f, + 0.193118f, -0.795001f, -0.218311f, 0.024862f, 0.206172f, -0.832878f, + -0.255670f, 0.343402f, -0.275211f, -0.898363f, -0.025172f, 0.158565f, + 0.171347f, -0.127518f, -0.215156f, -0.159198f, 0.250355f, -0.132452f, + 0.061254f, -0.097544f, -0.223246f, 0.013183f, 0.239468f, 0.259017f, + -0.217739f, -0.032263f, 0.123755f, -0.701777f, 0.150049f, -0.555293f, + 0.062430f, -0.260304f, 0.494894f, -0.168702f, -0.134829f, -0.113989f, + 0.150092f, -0.060248f, 0.115711f, -0.277202f, 0.499811f, 0.417116f, + 0.191081f, -0.376432f, -0.321092f, 0.033992f, 0.057193f, 0.127077f, + -0.009042f, 0.014443f, 0.142808f, -0.124349f, 0.213087f, -0.381686f, + 0.129726f, -0.038396f, +}; + +static const float av2_early_term_after_split_nn_bias_32_layer0[] = { + -0.107171f, 0.060848f, -0.069480f, -0.121982f, 0.037637f, -0.291839f, + 0.102257f, -0.065889f, -0.032452f, 0.034171f, -0.073984f, -0.005236f, + 0.218820f, 0.132123f, -0.089621f, -0.067679f, 0.049368f, 0.329444f, + -0.184729f, 0.031702f, 0.009735f, -0.039964f, -0.018024f, -0.073031f, + -0.030166f, -0.191037f, -0.074862f, -0.076548f, 0.076537f, 0.216609f, + -0.078358f, -0.007740f, +}; + +static const float av2_early_term_after_split_nn_weights_32_layer1[] = { + 0.047869f, -0.231773f, -0.185663f, 0.460676f, -0.208182f, 0.590555f, + -0.622627f, 0.279377f, 0.351681f, 0.633504f, 1.069884f, 0.332449f, + -0.457703f, -0.435817f, -0.028853f, 0.327490f, -0.282469f, -0.975792f, + -0.062975f, -0.147187f, 0.348340f, -1.207116f, 0.516159f, -1.509626f, + -0.805072f, 0.522999f, 0.143671f, 0.304246f, -0.360720f, -0.612472f, + 0.260045f, -0.223243f, +}; + +static const float av2_early_term_after_split_nn_bias_32_layer1[] = { + -0.07571174f, +}; + +static const NN_CONFIG av2_early_term_after_split_nnconfig_32 = { + FEATURES, + 1, + 1, + { + HIDDEN_NODES, + }, + { + av2_early_term_after_split_nn_weights_32_layer0, + av2_early_term_after_split_nn_weights_32_layer1, + }, + { + av2_early_term_after_split_nn_bias_32_layer0, + av2_early_term_after_split_nn_bias_32_layer1, + }, +}; + +static const float av2_early_term_after_split_nn_weights_16_layer0[] = { + -0.113798f, 0.053357f, -0.037947f, -0.477171f, 0.276517f, -0.349252f, + -0.177284f, 0.189597f, 0.141744f, 0.230207f, -0.328104f, 0.074328f, + 0.247717f, 0.233533f, 0.145167f, 0.018029f, -0.398725f, -0.226199f, + -0.309724f, 0.125279f, 0.194759f, 0.025531f, 0.349714f, -0.273944f, + 0.186871f, 0.181735f, -0.520614f, -0.264076f, 0.308207f, 0.157438f, + -0.137791f, -0.054582f, 0.125879f, 0.796218f, -0.897562f, 0.885439f, + 0.381640f, 0.106625f, -2.027456f, 0.000874f, 0.179581f, 0.013287f, + -2.329439f, -0.163169f, -0.136191f, 0.320108f, -2.318779f, -0.196722f, + -0.295721f, 0.203658f, -0.182275f, 0.615941f, 0.015762f, 0.257181f, + -0.115297f, 0.295774f, -0.026144f, -0.022686f, -0.219423f, -0.042861f, + 0.207647f, -0.057791f, 0.201671f, -0.169569f, 0.291492f, -0.994991f, + 0.137473f, 0.230948f, 0.505626f, -1.065860f, 0.275225f, -0.250861f, + 0.519466f, -1.217242f, -0.087384f, 0.053441f, 0.030729f, -1.702304f, + -0.034635f, 0.010177f, -0.035422f, -0.749979f, 0.355499f, 0.408166f, + -0.086883f, 0.017203f, 0.195706f, -0.218056f, -0.029153f, 0.367335f, + -0.061732f, -0.241068f, 0.078496f, -0.370346f, -0.124223f, -0.172708f, + 0.037971f, 0.038875f, -0.282489f, -0.266323f, -0.210864f, 0.214714f, + 0.234695f, -0.045625f, 0.015357f, -0.007464f, -0.362003f, -0.113465f, + 0.145141f, 0.238470f, -0.202664f, -0.286587f, -0.347112f, 0.054501f, + -0.190290f, -0.283256f, 0.062179f, 0.041165f, -0.006935f, -0.220351f, + -0.088800f, 0.220924f, -0.200982f, 0.058493f, -0.225175f, 0.057175f, + -0.618187f, 0.761023f, -0.743774f, -0.500599f, -0.584999f, 1.545211f, + 0.123055f, -0.106848f, -0.353057f, 1.552187f, 0.174104f, 0.068060f, + -0.449859f, 1.254299f, -0.161716f, -0.060630f, -0.230721f, 0.165976f, + -0.101582f, -0.422415f, 0.110384f, -0.130098f, 0.104428f, 0.083518f, + 0.031626f, 0.083048f, 0.158877f, 0.173340f, 0.063962f, 0.427845f, + 0.663268f, 0.376996f, 0.146435f, -0.091329f, 0.443447f, 0.518432f, + -0.182777f, -0.091313f, 0.331229f, 0.532604f, -0.187001f, 0.054774f, + 0.298068f, 0.502295f, -0.362378f, 0.054283f, 0.292806f, 0.168901f, + -0.214787f, 0.025637f, 0.458009f, -0.322714f, -0.264059f, 0.140313f, + -0.102696f, -0.431208f, -0.134450f, -0.545415f, 0.253851f, -0.009061f, + -0.050681f, 0.108681f, 0.043272f, -1.073133f, 0.206410f, 0.469576f, + 0.291494f, -2.021244f, -0.001183f, -0.067542f, 0.364907f, -2.470543f, + 0.049147f, -0.018868f, 0.658500f, -2.531048f, 0.275433f, -0.034224f, + -0.171386f, 0.096369f, 0.728069f, 0.272332f, 0.222255f, -0.030426f, + 0.026994f, 0.208928f, -0.173943f, -0.227581f, -0.214798f, 0.079341f, + 0.032344f, -0.253575f, -0.044353f, -0.239265f, -0.055852f, -0.162582f, + -0.086592f, 0.066487f, 0.337353f, -0.168704f, 0.015702f, 0.022607f, + 0.286647f, 0.218106f, 0.193319f, -0.358714f, 0.030796f, 0.007646f, + -0.045617f, 0.165007f, -0.284641f, -0.291812f, 0.207544f, 0.082823f, + -0.141907f, -0.331336f, -0.052908f, 0.120716f, 0.202521f, 0.232782f, + -0.348141f, -0.017332f, 1.191126f, -0.391987f, -0.154537f, -0.206551f, + -2.378690f, 0.057918f, -0.328183f, 2.151556f, 0.238803f, 0.164880f, + -0.480039f, 1.616200f, 0.260243f, 0.083704f, -0.174461f, 1.804634f, + 0.194810f, 0.223837f, 0.550107f, -0.068171f, -0.293435f, -0.186770f, + -0.364846f, 0.127181f, 0.105556f, -0.016202f, 0.278403f, -0.344995f, + -0.009761f, -0.082555f, 0.046731f, -0.301452f, 0.604259f, 0.055895f, + 0.049862f, 0.314249f, -0.305811f, -0.112937f, 0.658787f, -0.549288f, + -0.307567f, -0.460650f, -0.840643f, 0.082576f, 0.373711f, 0.138318f, + 0.336901f, 0.284984f, -0.281400f, 0.408210f, -0.449858f, 0.461054f, + 0.227629f, -0.131705f, 0.301769f, -0.278540f, 0.189290f, -0.269041f, + 0.111350f, -0.300257f, 0.436858f, -0.265920f, -0.211938f, 0.272631f, + 0.206291f, 0.253273f, -0.229776f, -0.031112f, -0.171183f, -0.109676f, + -0.202390f, -0.068857f, 0.182125f, -0.140523f, -0.308742f, -0.045840f, + 0.256545f, -0.262405f, 0.225951f, -0.287463f, -0.189203f, -0.055552f, + -0.052448f, -0.242839f, -0.278877f, 0.140920f, -0.175755f, 0.215402f, + -0.248841f, -0.264080f, -0.178303f, 0.147777f, 0.049460f, -0.279877f, + -0.539725f, -0.004622f, 0.182874f, 0.338814f, 0.265974f, 0.249851f, + -0.141154f, 0.157228f, -0.090972f, 0.179444f, 0.305255f, 0.127788f, + 0.123270f, 0.355320f, 0.076797f, 0.263495f, 0.235965f, -0.133816f, + 0.243624f, 0.227062f, -0.213629f, 0.002075f, 0.061203f, -0.077820f, + -0.008807f, -0.247324f, -0.051464f, -0.191894f, -0.238713f, -0.389526f, + -0.274248f, 0.053950f, -0.225750f, -0.367097f, -0.122391f, 0.181212f, + -0.411824f, -0.084241f, -0.302288f, 0.077860f, -0.187443f, -0.300262f, + 0.083156f, -0.392461f, -0.332320f, -0.346474f, 0.140658f, -0.283656f, + 0.120714f, -0.056577f, -0.280968f, 0.017795f, -0.024686f, 0.073113f, + -0.346637f, 0.082567f, -0.036556f, -0.369730f, 0.081225f, -0.005211f, + 0.144886f, -0.003544f, 0.178307f, -0.366035f, -0.063887f, -0.191767f, + 0.105835f, -0.273978f, -0.266532f, -0.023984f, 0.039166f, 0.065848f, + -0.026802f, -0.268923f, 0.189659f, 0.086300f, 0.030718f, 0.216565f, + -0.130025f, -0.215687f, 0.146341f, -0.286438f, -0.394226f, -0.181509f, + -0.005612f, 0.186040f, 0.133491f, 0.032096f, -0.261609f, 0.074007f, + -0.042929f, -0.234479f, 0.189704f, 0.088395f, -0.003671f, -0.125055f, + -0.252418f, -0.086387f, 0.111197f, -0.297071f, -0.018793f, -0.031902f, + -0.333191f, -0.186279f, 0.039868f, 0.091419f, -0.264438f, -0.216150f, + -0.212550f, 0.203412f, -0.113028f, -0.197169f, -0.346771f, 0.086066f, + 0.091443f, -0.128507f, -0.007281f, -0.118389f, 0.003370f, -0.338661f, + 0.026739f, -0.063571f, -0.281567f, -0.166824f, 0.167455f, 0.216173f, + 0.199163f, 0.256314f, -0.222679f, 0.040282f, -0.154808f, -0.133943f, + -0.270163f, -0.357398f, 0.260373f, 0.176950f, -0.125162f, -0.085050f, + 0.226376f, -0.124585f, -0.324804f, 0.035536f, -0.133600f, 0.173450f, + 0.068107f, -0.337442f, 0.169629f, 0.047223f, 0.057878f, 0.055555f, + -0.317449f, -0.103768f, 0.080899f, -0.194759f, -1.137593f, 0.508999f, + 0.045372f, 1.746454f, 1.250347f, -0.342930f, -0.127821f, -0.220175f, + -0.417649f, -0.480595f, 0.071902f, 0.050231f, -0.562554f, -0.677866f, + -0.121416f, -0.247558f, -0.483876f, -0.504157f, 1.731953f, 0.572936f, + 0.047325f, 0.050619f, 0.112611f, -0.035393f, 0.052585f, -0.071076f, + -0.015798f, -0.050228f, -0.142875f, 0.189329f, 0.048833f, 0.503633f, + 0.249588f, 0.175492f, -0.137664f, -0.018533f, 0.288453f, -0.025644f, + 0.079131f, 0.195096f, -0.154039f, -0.104220f, -0.224072f, 0.095946f, + -0.208424f, 0.214745f, 0.056468f, 0.182603f, 0.341784f, -0.134664f, + -0.194050f, 0.058532f, -0.107336f, -0.087783f, -0.238795f, -0.387212f, + 0.049055f, -0.127417f, -0.299919f, -0.094371f, -0.011735f, -0.264753f, + 0.407375f, -0.462654f, -0.609488f, 0.027742f, -0.985512f, -0.109154f, + -0.423276f, 2.347960f, 0.129240f, 0.187610f, -0.057081f, 2.424892f, + 0.087666f, 0.106716f, -0.039379f, 2.764866f, 0.113309f, 0.028196f, + -0.582789f, 0.335385f, -0.538029f, -0.477337f, -0.114207f, 0.178829f, + 0.006276f, 0.123179f, 0.095101f, 0.139898f, -0.372074f, -0.111010f, + 0.136330f, 0.272900f, 0.126737f, -0.097808f, -0.363697f, 0.108665f, + -0.227749f, -0.083421f, 1.714677f, 0.451943f, 0.107931f, -0.392281f, + 1.615846f, 0.022307f, -0.247011f, 0.257703f, 1.039134f, 0.537789f, + 0.022177f, -0.271532f, 0.351350f, -0.399205f, -0.240534f, -0.315399f, + 0.026928f, -0.005618f, 0.053179f, -0.010277f, 0.000501f, 0.040896f, + -0.109160f, 0.018282f, 0.003887f, 0.199599f, 0.095349f, -0.337284f, + 0.169929f, -0.109409f, -0.166983f, 0.059908f, -0.226574f, -0.120114f, + 0.077329f, -0.333133f, -0.220936f, 0.114309f, -0.233965f, -0.281551f, + 0.042948f, 0.100940f, 0.116037f, -0.313122f, 0.215149f, -0.309057f, + -0.341052f, -0.294417f, -0.179722f, 0.010795f, 0.192053f, -0.275261f, + -0.033077f, 0.117348f, 0.090206f, 0.781573f, 0.602456f, -0.220296f, + 0.172159f, 0.758513f, 0.157910f, -0.217897f, -0.372659f, 0.031935f, + 0.791463f, 0.267195f, 0.931593f, -0.057349f, 0.405512f, -0.058512f, + -0.641663f, -0.076592f, 0.550227f, -0.024094f, 0.048218f, -0.289971f, + 0.180940f, 0.167533f, 0.052711f, -0.360726f, 0.019210f, -0.488879f, + 0.380498f, 0.151608f, -0.276895f, -0.596554f, 0.106076f, -0.245833f, + -0.048783f, 0.073823f, 0.098780f, 0.000211f, 0.113958f, -0.068964f, + -0.265533f, -0.185457f, 0.175586f, -0.163621f, -0.204919f, 0.145802f, + -0.163421f, 0.129576f, -0.153486f, -0.105573f, 0.067289f, -0.213120f, + -0.286103f, 0.249543f, -0.044970f, -0.170464f, -0.105501f, -0.094765f, + -0.050734f, -0.369468f, 0.180020f, -0.363328f, -0.151654f, -0.262550f, + -0.424503f, 0.829032f, -0.559452f, 0.506837f, 0.143823f, 0.276660f, + -1.808608f, -0.259517f, -0.053945f, 0.035676f, -1.842195f, -0.065960f, + -0.069285f, 0.462022f, -2.319453f, -0.370299f, 0.183329f, -0.146412f, + -0.563875f, 0.305068f, 0.480904f, 0.044319f, -0.016098f, 0.168516f, + 0.114874f, -0.097621f, -0.030373f, 0.177700f, 0.181591f, -0.146003f, + -0.330853f, -0.259200f, 0.779319f, -1.517524f, 0.178781f, 0.135451f, + 0.088784f, -2.076089f, 0.628717f, -0.048685f, 0.281327f, -2.341596f, + 0.422171f, 0.006135f, 0.367096f, -1.663118f, 0.365253f, -0.072884f, + -0.197620f, -0.688634f, 0.477354f, 0.395841f, -0.098505f, 0.208709f, + -0.027523f, 0.127119f, 0.106274f, 0.114424f, -0.122877f, -0.087245f, + 0.086923f, -0.527398f, -0.342062f, -0.764662f, 0.713094f, -0.626453f, + -0.081454f, -0.087683f, 0.885047f, 0.323440f, -0.018579f, -0.217166f, + 1.617984f, -0.159038f, 0.265991f, -0.390313f, 1.933182f, -0.032431f, + -0.057513f, -0.300841f, 0.461248f, -0.072147f, -0.287052f, -0.078056f, + 0.011734f, 0.044013f, 0.177174f, 0.093400f, 0.028819f, 0.193686f, + -0.224853f, 0.268321f, -0.075059f, 0.074526f, -0.015618f, 0.165615f, + -0.276780f, -0.063908f, -0.369264f, -0.171497f, -0.173624f, -0.130743f, + -0.224625f, -0.124980f, -0.104482f, 0.076864f, -0.009631f, -0.164682f, + 0.150480f, -0.111880f, -0.260425f, 0.086234f, -0.176936f, -0.136771f, + -0.168867f, -0.405626f, -0.288716f, -0.128950f, -0.207327f, 0.015581f, + -0.109061f, -0.098970f, 0.090792f, -0.109623f, 0.349851f, 0.266341f, + -0.088602f, -0.108071f, 0.082519f, 0.472650f, -1.838758f, 0.456694f, + 0.119927f, 0.461077f, -2.860022f, 0.231495f, 0.235771f, 0.256424f, + -1.938516f, -0.188202f, -0.000832f, -0.518206f, 0.194644f, 0.505510f, + 0.615657f, 0.193760f, 0.224600f, 0.265732f, -0.121553f, -0.354597f, + -0.242414f, -0.276639f, -0.057591f, 0.026369f, -0.261148f, -0.356155f, + -0.149178f, -0.353566f, -0.340835f, -0.141776f, 0.076535f, 0.221299f, + -0.108857f, -0.156514f, 0.050901f, 0.058541f, -0.077141f, 0.071515f, + -0.333283f, -0.181489f, -0.212900f, -0.224698f, -0.174693f, -0.178665f, + -0.143374f, -0.091811f, 0.165161f, 0.060156f, -0.086103f, -0.039031f, + -0.377759f, -0.370533f, 0.074431f, 0.064192f, 0.186576f, 0.447858f, + -0.082260f, -0.020268f, -0.123089f, -0.402017f, 0.080500f, 0.176286f, + 2.850013f, 0.019385f, -0.225361f, -0.235315f, 1.654694f, -0.073978f, + -0.341412f, -1.187575f, 2.815900f, -0.228063f, -0.174547f, 0.623825f, + -0.010676f, 0.157189f, 0.111879f, -0.198965f, 0.051851f, 0.158396f, + 0.045194f, 0.293531f, -0.246714f, -0.351493f, 0.026954f, 0.076233f, + 0.420367f, 0.168154f, -0.131450f, 0.134487f, -0.288851f, -0.134553f, + 0.014902f, 0.756381f, 0.277713f, 0.190080f, -0.020869f, 1.446672f, + 0.029792f, -0.025927f, 0.060640f, 0.559864f, 0.422229f, 0.198459f, + 0.036167f, 0.029432f, 0.001882f, 0.038480f, -0.160528f, -0.288855f, + -0.310886f, 0.291296f, 0.190558f, -0.182816f, -0.002252f, 0.073101f, + -0.172245f, -0.305980f, 0.112492f, -0.422839f, -0.295999f, -0.078160f, + -0.173405f, -0.032819f, 0.373774f, -0.715223f, 0.018911f, 0.131753f, + -0.237364f, -0.128499f, -0.228406f, 0.341619f, 0.343552f, -0.521581f, + -0.263790f, 0.362502f, -0.018450f, 0.054233f, 0.183068f, 0.382772f, + 0.188811f, -0.627287f, 0.040399f, -0.487338f, -0.192591f, 0.247426f, + 0.154372f, -0.483994f, +}; + +static const float av2_early_term_after_split_nn_bias_16_layer0[] = { + -0.173976f, 0.305495f, 0.250981f, -0.067127f, -0.313100f, 0.242464f, + 0.315196f, -0.056052f, -0.241227f, -0.253308f, -0.002697f, 0.003687f, + -0.124421f, -0.090383f, -0.070366f, -0.064074f, -0.056115f, 0.123313f, + -0.239698f, -0.182082f, -0.065296f, 0.021503f, -0.036787f, 0.311861f, + 0.118135f, -0.320456f, -0.110719f, 0.220692f, -0.071727f, -0.088226f, + -0.110874f, -0.111671f, +}; + +static const float av2_early_term_after_split_nn_weights_16_layer1[] = { + -0.338573f, 0.398159f, 0.314774f, -0.037448f, -0.271950f, -0.774991f, + 0.950901f, -0.225380f, -1.841906f, -0.350379f, -0.079350f, 0.383148f, + -0.183676f, -0.313132f, -0.340820f, -0.309401f, -1.050540f, -0.432267f, + -0.657195f, 0.927632f, -0.040150f, 0.578920f, 0.212301f, 0.292495f, + 0.563590f, -0.205735f, 0.195877f, 0.582122f, -0.217860f, 1.613379f, + 0.313278f, -0.555802f, +}; + +static const float av2_early_term_after_split_nn_bias_16_layer1[] = { + 0.16553f, +}; + +static const NN_CONFIG av2_early_term_after_split_nnconfig_16 = { + FEATURES, + 1, + 1, + { + HIDDEN_NODES, + }, + { + av2_early_term_after_split_nn_weights_16_layer0, + av2_early_term_after_split_nn_weights_16_layer1, + }, + { + av2_early_term_after_split_nn_bias_16_layer0, + av2_early_term_after_split_nn_bias_16_layer1, + }, +}; + +static const float av2_early_term_after_split_nn_weights_8_layer0[] = { + -0.719472f, 0.305806f, 0.855829f, 0.100094f, 0.412517f, 1.254673f, + 1.552105f, -5.890773f, -0.089957f, -0.016736f, 1.418074f, -5.393506f, + -0.028214f, 0.117758f, 1.479209f, -5.299794f, 0.171585f, -0.084182f, + -0.162105f, 0.388577f, -0.044319f, -0.025861f, 0.251782f, -0.181462f, + -0.101545f, -0.079999f, -0.033014f, -0.191627f, -0.032802f, -0.053404f, + 0.038038f, -0.119492f, 0.049104f, -0.344384f, -0.354513f, 0.036977f, + 0.017513f, -0.004025f, -0.163212f, -0.261999f, 0.146575f, 0.207541f, + 0.130365f, -0.252127f, 0.097419f, -0.231057f, -0.309421f, 0.347866f, + -0.064670f, -0.283171f, -0.244193f, -0.193323f, -0.226954f, -0.276194f, + -0.233553f, 0.156354f, -0.184009f, 0.344289f, -0.308058f, -0.205202f, + -0.325068f, 0.183820f, -0.361667f, -0.069559f, -0.121834f, -0.038357f, + -0.210043f, -0.266129f, 0.003188f, 0.074902f, -0.328843f, 0.293679f, + -0.234698f, -0.428268f, -0.308772f, -0.136538f, -0.008384f, -0.078227f, + 0.166074f, -0.262899f, 0.102114f, -0.323420f, 0.057064f, -0.203318f, + -0.397413f, -0.317324f, -0.307093f, 0.020574f, -0.188627f, 0.132529f, + 0.118992f, -0.487387f, -0.282975f, 0.573231f, -0.266071f, 0.125140f, + -0.970034f, 1.424008f, -0.487366f, -0.196415f, 3.680273f, -0.008407f, + 0.081109f, -0.187479f, 3.876021f, 0.159168f, 0.111721f, -0.337423f, + 3.901760f, 0.261268f, -0.245555f, -0.187632f, -0.324298f, 0.167234f, + 0.170986f, -0.473055f, 0.087016f, -0.003469f, 0.051035f, 0.251794f, + 0.153549f, 0.217609f, -0.326870f, -0.175511f, 0.637341f, -0.694837f, + -0.873487f, -0.186614f, -1.089884f, -0.607316f, -0.523519f, 5.256331f, + 0.071414f, 0.215265f, -0.835999f, 5.735746f, 0.300101f, 0.089626f, + -0.450261f, 5.608051f, 0.190491f, 0.110220f, -0.595360f, -0.446324f, + 0.311380f, 0.268812f, -0.339656f, -0.008708f, 0.011111f, -0.027557f, + 0.171534f, 0.000676f, 0.227232f, 0.033993f, 0.146684f, 0.094817f, + -0.175381f, -0.211927f, -0.362471f, 0.168834f, 0.264149f, -0.350538f, + -0.463249f, -0.288105f, 0.347155f, 0.183231f, -0.229732f, -0.252202f, + -0.218074f, -0.008769f, -0.156103f, 0.181233f, -0.354736f, 0.263270f, + -0.106636f, 0.081057f, 0.060634f, -0.046887f, 0.050468f, 0.071259f, + 0.221287f, 0.199071f, -0.180185f, -0.406902f, -0.239351f, -0.034957f, + 0.369140f, 0.864600f, 0.233798f, 0.423612f, -0.468918f, 0.976987f, + 0.691198f, -1.597908f, 0.102926f, 0.305546f, 0.391196f, -3.909059f, + 0.333635f, 0.311561f, 0.738886f, -4.002001f, 0.236394f, -0.233141f, + 0.263342f, 0.679898f, 0.136233f, 0.254743f, -0.367571f, 0.066412f, + 0.001606f, -0.059542f, 0.051726f, -0.347145f, -0.045501f, -0.313847f, + -0.021952f, 1.386316f, -0.579139f, -1.275844f, -0.003493f, -1.716577f, + 0.250209f, 0.192086f, 4.177055f, 0.351835f, 0.338177f, 0.140163f, + 4.099592f, 0.321866f, -0.128153f, -0.360414f, 4.350767f, 0.025943f, + -0.116740f, -0.664107f, -0.064558f, -0.039553f, -0.208186f, -0.678774f, + 0.149441f, -0.019823f, 0.012759f, 0.404442f, -0.108881f, 0.067974f, + -0.188278f, 0.136327f, 0.109927f, -0.179270f, -0.272342f, 0.018064f, + -0.304216f, -0.469470f, 0.109310f, -0.326214f, 0.061909f, -0.278997f, + -0.352329f, -0.333770f, -0.186522f, -0.328567f, -0.206211f, -0.008804f, + 0.042441f, -0.126699f, -0.420399f, -0.033842f, 0.016773f, -0.273789f, + 0.081928f, -0.191552f, -0.179533f, -0.263070f, -0.471807f, 0.062601f, + -0.232576f, 0.082955f, -0.490080f, 0.073820f, -0.090384f, 0.035781f, + -0.158880f, -0.506793f, -0.069132f, 0.047602f, -0.349640f, -0.058389f, + -0.017387f, -0.194636f, -0.457227f, -0.143105f, 0.222045f, -0.548909f, + -0.131561f, 0.247196f, -0.207923f, 0.133056f, -0.509854f, -0.193685f, + -0.181327f, -0.242442f, 0.091821f, 0.114430f, -0.375233f, -0.015254f, + -0.336632f, -0.060279f, -0.169169f, -0.429914f, -0.036563f, -0.400560f, + -0.076332f, -0.186232f, -0.268491f, 0.075561f, -0.389082f, -0.077435f, + 0.352562f, -0.020086f, -0.338181f, -0.404629f, 0.254983f, 0.150477f, + -0.265903f, 0.003341f, 0.099969f, -0.211964f, -0.129372f, -0.166366f, + 0.327712f, -0.276234f, 0.140675f, -0.433677f, -0.163050f, -0.143578f, + -0.397840f, -0.422130f, -0.293835f, -0.075362f, -0.468375f, 1.021238f, + 1.394155f, -0.922486f, -1.350222f, 2.030201f, 0.057717f, 0.227650f, + -0.193179f, 0.037224f, 0.065555f, 0.020558f, -0.059205f, -0.023690f, + -0.008718f, 0.095976f, -0.549587f, -0.321164f, -0.243728f, 1.344381f, + -1.254107f, 0.294244f, -0.154737f, -0.152597f, 0.342419f, 0.301883f, + 0.069866f, -0.327766f, 0.209323f, -0.364913f, -0.005530f, -0.558972f, + 0.057684f, -0.309357f, -0.283325f, -0.278445f, -0.420115f, -0.418457f, + -0.391481f, -0.418460f, -0.003897f, -0.023744f, -0.312330f, -0.366213f, + 0.269628f, -0.274877f, -0.189988f, -0.419555f, -0.034033f, 0.192874f, + -0.135487f, -0.326108f, -0.039019f, 0.185029f, -0.264883f, -0.563447f, + -0.163532f, -0.447652f, -0.141851f, 0.001714f, -0.193184f, 0.032609f, + -0.112883f, 0.074599f, 0.490665f, 0.434764f, 0.021652f, -0.219618f, + 0.743267f, 0.147195f, -0.303479f, -0.097674f, 0.195813f, 0.704007f, + -1.290851f, 0.119701f, 0.224065f, 0.260246f, -0.580657f, -0.096201f, + -0.333214f, -0.586689f, 0.567178f, 0.157340f, -0.043184f, 0.194358f, + -0.026506f, -0.339894f, -0.571803f, -0.234828f, 0.147054f, -0.564178f, + -0.156933f, -0.366055f, -0.691687f, -0.187501f, 0.215834f, -0.346106f, + -0.256892f, 0.110915f, -0.337464f, -0.341474f, -0.216113f, 0.249445f, + -0.070175f, -0.412141f, 0.153458f, -0.081280f, 0.164669f, -0.356396f, + -0.294971f, -0.165121f, -0.133585f, -0.071467f, 0.295147f, -0.253233f, + -0.213833f, -0.343416f, -0.474344f, -0.304000f, -0.341379f, -0.331456f, + -0.393952f, -0.508004f, -0.569518f, -0.509864f, 0.121961f, 0.011957f, + 0.000498f, -0.201969f, -0.407195f, -0.414375f, -0.295846f, 0.247492f, + 0.124249f, -0.550804f, -0.420397f, -0.123462f, 0.333292f, -0.240230f, + -0.025604f, 0.337536f, -0.295006f, -0.272614f, -0.496850f, -0.278521f, + 0.234591f, -0.052775f, -0.014052f, -0.260078f, -0.279128f, -0.036385f, + 0.008714f, -0.064018f, -0.124873f, -0.334014f, +}; + +static const float av2_early_term_after_split_nn_bias_8_layer0[] = { + 1.202379f, -0.117005f, -0.135527f, -0.262255f, -0.443658f, -0.078981f, + 0.615653f, -0.124482f, -0.227768f, -0.227014f, -0.135898f, 0.143216f, + -0.225995f, 0.370877f, -0.214821f, -0.227752f, +}; + +static const float av2_early_term_after_split_nn_weights_8_layer1[] = { + 0.376594f, 0.266703f, -0.039847f, 1.680142f, -0.879939f, 0.286806f, + -0.378223f, -0.405295f, -0.021107f, 0.039188f, 0.259308f, 0.193091f, + 0.077994f, -0.269141f, 0.011180f, -0.019262f, +}; + +static const float av2_early_term_after_split_nn_bias_8_layer1[] = { + -1.29585564f, +}; + +static const NN_CONFIG av2_early_term_after_split_nnconfig_8 = { + FEATURES, + 1, + 1, + { + 16, + }, + { + av2_early_term_after_split_nn_weights_8_layer0, + av2_early_term_after_split_nn_weights_8_layer1, + }, + { + av2_early_term_after_split_nn_bias_8_layer0, + av2_early_term_after_split_nn_bias_8_layer1, + }, +}; +#undef FEATURES +#undef HIDDEN_NODES + #ifdef __cplusplus } // extern "C" #endif diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 00dd0293ae..5282e18315 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3886,6 +3886,30 @@ static void none_partition_search( restore_level_banks(&x->e_mbd, level_banks); } +// Decide early termination by ml based on PARTITION_NONE and PARTITION_SPLIT +// costs. +static void av2_ml_prune_after_split(AV2_COMP *const cpi, MACROBLOCK *x, + SIMPLE_MOTION_DATA_TREE *sms_tree, + PartitionSearchState *part_search_state, + RD_STATS *best_rdc, int64_t part_none_rd, + int64_t part_split_rd) { + const AV2_COMMON *const cm = &cpi->common; + + // Early termination: using the rd costs of PARTITION_NONE and subblocks + // from PARTITION_SPLIT to determine an early breakout. + if (cpi->sf.part_sf.ml_early_term_after_part_split_level && + !frame_is_intra_only(cm) && + !part_search_state->terminate_partition_search && + part_search_state->do_rectangular_split && + (part_search_state->partition_rect_allowed[HORZ] || + part_search_state->partition_rect_allowed[VERT]) && + sms_tree) { + av2_ml_early_term_after_split( + cpi, x, sms_tree, best_rdc->rdcost, part_none_rd, part_split_rd, + part_search_state->split_rd, part_search_state); + } +} + // PARTITION_SPLIT search. static void split_partition_search( AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, @@ -5813,6 +5837,14 @@ bool av2_rd_pick_partition( prune_partitions_after_split(cpi, pc_tree, &part_search_state); // Based on split result, decide if we want to further delay the search to // after rect + + if (!search_none_after_rect && !search_none_after_split && + partition_none_allowed) { + // Prune partitions based on PARTITION_NONE and PARTITION_SPLIT. + av2_ml_prune_after_split(cpi, x, sms_tree, &part_search_state, &best_rdc, + part_none_rd, part_split_rd); + } + if (search_none_after_split && pc_tree->partitioning == PARTITION_SPLIT) { for (int idx = 0; idx < SUB_PARTITIONS_SPLIT; idx++) { const int depth = diff --git a/av2/encoder/partition_search.h b/av2/encoder/partition_search.h index 944c4dc9e7..f47eb7fecf 100644 --- a/av2/encoder/partition_search.h +++ b/av2/encoder/partition_search.h @@ -48,6 +48,15 @@ bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, int prune_rect_flags[3] #endif // CONFIG_ML_PART_SPLIT ); + +// Attempts an early termination after PARTITION_SPLIT. +void av2_ml_early_term_after_split(AV2_COMP *const cpi, MACROBLOCK *const x, + SIMPLE_MOTION_DATA_TREE *const sms_tree, + int64_t best_rd, int64_t part_none_rd, + int64_t part_split_rd, + int64_t *split_block_rd, + PartitionSearchState *part_state); + void av2_build_partition_tree_fixed_partitioning( AV2_COMMON *const cm, TREE_TYPE tree_type, int mi_row, int mi_col, BLOCK_SIZE bsize, PARTITION_TREE *ptree, const PARTITION_TREE *ptree_luma); diff --git a/av2/encoder/partition_strategy.c b/av2/encoder/partition_strategy.c index 7fd4ca27d7..62b9678f09 100644 --- a/av2/encoder/partition_strategy.c +++ b/av2/encoder/partition_strategy.c @@ -1439,6 +1439,149 @@ static AVM_INLINE int64_t clip_rate(const int rate) { return rate; } +// Get the minimum partition block width and height(in log scale) under a +// SIMPLE_MOTION_DATA_TREE. +static inline void get_min_bsize(const SIMPLE_MOTION_DATA_TREE *sms_tree, + int *min_bw, int *min_bh) { + if (!sms_tree) return; + + const BLOCK_SIZE bsize = sms_tree->block_size; + if (bsize == BLOCK_4X4) { + *min_bw = 0; + *min_bh = 0; + return; + } + + PARTITION_TYPE part_type = sms_tree->partitioning; + if (part_type == PARTITION_INVALID) return; + + if (part_type == PARTITION_SPLIT) { + for (int i = 0; i < SUB_PARTITIONS_SPLIT; ++i) { + get_min_bsize(sms_tree->split[i], min_bw, min_bh); + } + } else { + if (part_type == PARTITION_HORZ_4A || part_type == PARTITION_HORZ_4B || + part_type == PARTITION_VERT_4A || part_type == PARTITION_VERT_4B || + part_type == PARTITION_HORZ_3 || part_type == PARTITION_VERT_3) + part_type = PARTITION_SPLIT; + const BLOCK_SIZE subsize = get_partition_subsize(bsize, part_type); + if (subsize != BLOCK_INVALID) { + *min_bw = AVMMIN(*min_bw, mi_size_wide_log2[subsize]); + *min_bh = AVMMIN(*min_bh, mi_size_high_log2[subsize]); + } + } +} + +static inline void add_rd_feature(int64_t rd, int64_t best_rd, float *features, + int *feature_idx) { + const int rd_valid = rd > 0 && rd < INT64_MAX; + const float rd_ratio = rd_valid ? (float)rd / best_rd : 1.0f; + features[(*feature_idx)++] = (float)rd_valid; + features[(*feature_idx)++] = rd_ratio; +} + +#define FEATURES 31 +void av2_ml_early_term_after_split(AV2_COMP *const cpi, MACROBLOCK *const x, + SIMPLE_MOTION_DATA_TREE *const sms_tree, + int64_t best_rd, int64_t part_none_rd, + int64_t part_split_rd, + int64_t *split_block_rd, + PartitionSearchState *part_state) { + const PartitionBlkParams *blk_params = &part_state->part_blk_params; + const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; + const BLOCK_SIZE bsize = blk_params->bsize; + + if (best_rd <= 0 || best_rd == INT64_MAX || + part_state->terminate_partition_search || bsize == BLOCK_256X256) + return; + + const AV2_COMMON *const cm = &cpi->common; + const NN_CONFIG *nn_config = NULL; + const float thresholds[5] = { 0.0035648215612127795f, 0.0014665436382494844f, + 5.110332251005399e-5f, 3.749879965048595e-5f, + 9.213190802080392e-4f }; + float thresh = -1e6; + switch (bsize) { + case BLOCK_128X128: + nn_config = &av2_early_term_after_split_nnconfig_64; + thresh = thresholds[0]; + break; + case BLOCK_64X64: + nn_config = &av2_early_term_after_split_nnconfig_64; + thresh = thresholds[1]; + break; + case BLOCK_32X32: + nn_config = &av2_early_term_after_split_nnconfig_32; + thresh = thresholds[2]; + break; + case BLOCK_16X16: + nn_config = &av2_early_term_after_split_nnconfig_16; + thresh = thresholds[3]; + break; + case BLOCK_8X8: + nn_config = &av2_early_term_after_split_nnconfig_8; + thresh = thresholds[4]; + break; + case BLOCK_4X4: break; + default: + assert(0 && "Invalid block size in av2_ml_early_term_after_split()."); + break; + } + if (!nn_config) return; + + const MACROBLOCKD *const xd = &x->e_mbd; + const int dc_q = av2_dc_quant_QTX(x->qindex, 0, + cm->seq_params.base_y_dc_delta_q, xd->bd) >> + (xd->bd - 8); + const int bs = block_size_wide[bsize]; + int f_idx = 0; + float features[FEATURES] = { 0.0f }; + + features[f_idx++] = log1pf((float)dc_q / 4.0f); + features[f_idx++] = log1pf((float)best_rd / bs / bs / 1024.0f); + + add_rd_feature(part_none_rd, best_rd, features, &f_idx); + add_rd_feature(part_split_rd, best_rd, features, &f_idx); + + for (int i = 0; i < SUB_PARTITIONS_SPLIT; ++i) { + add_rd_feature(split_block_rd[i], best_rd, features, &f_idx); + int min_bw = MAX_SB_SIZE_LOG2; + int min_bh = MAX_SB_SIZE_LOG2; + get_min_bsize(sms_tree->split[i], &min_bw, &min_bh); + features[f_idx++] = (float)min_bw; + features[f_idx++] = (float)min_bh; + } + + simple_motion_search_prune_part_features(cpi, x, sms_tree, mi_row, mi_col, + bsize, NULL, + FEATURE_SMS_PRUNE_PART_FLAG); + + features[f_idx++] = log1pf((float)sms_tree->sms_none_feat[1]); + + features[f_idx++] = log1pf((float)sms_tree->split[0]->sms_none_feat[1]); + features[f_idx++] = log1pf((float)sms_tree->split[1]->sms_none_feat[1]); + features[f_idx++] = log1pf((float)sms_tree->split[2]->sms_none_feat[1]); + features[f_idx++] = log1pf((float)sms_tree->split[3]->sms_none_feat[1]); + + features[f_idx++] = log1pf((float)sms_tree->sms_rect_feat[1]); + features[f_idx++] = log1pf((float)sms_tree->sms_rect_feat[3]); + features[f_idx++] = log1pf((float)sms_tree->sms_rect_feat[5]); + features[f_idx++] = log1pf((float)sms_tree->sms_rect_feat[7]); + + assert(f_idx == FEATURES); + + float score = 0.0f; + av2_nn_predict(features, nn_config, 1, &score); + + float thresh_score = (float)log(thresh / (1 - thresh)); + + // Score is indicator of confidence that we should NOT terminate. + if (score < thresh_score) { + part_state->terminate_partition_search = 1; + } +} +#undef FEATURES + void av2_gather_erp_rect_features( float *ml_features, AV2_COMP *cpi, MACROBLOCK *x, const TileInfo *tile_info, const PC_TREE *pc_tree, const PartitionSearchState *part_search_state, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 77d22fee8a..bce935e009 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -702,6 +702,7 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->prune_none_with_ml = 0; part_sf->prune_split_ml_level = -2; // default pruning part_sf->prune_split_ml_level_inter = -1; + part_sf->remove_qp_restriction_with_ml = 0; #endif // CONFIG_ML_PART_SPLIT part_sf->disable_ext_partitions = false; part_sf->disable_uneven_4way_partitions = false; @@ -969,6 +970,11 @@ static AVM_INLINE void set_erp_speed_features_framesize_dependent( sf->part_sf.simple_motion_search_early_term_none = cm->current_frame.pyramid_level > 4 ? 1 : 0; } +#if CONFIG_ML_PART_SPLIT + if (is_720p_or_lesser) { + sf->part_sf.remove_qp_restriction_with_ml = 1; + } +#endif // CONFIG_ML_PART_SPLIT } if (cpi->speed >= 2) { @@ -1059,6 +1065,7 @@ static AVM_INLINE void set_erp_speed_features(AV2_COMP *cpi) { if (cpi->speed >= 1) { // Emulate erp_pruning_level = 6. sf->part_sf.ext_recur_depth_level = 1; + sf->part_sf.ml_early_term_after_part_split_level = 2; } if (cpi->speed >= 2) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 7df5f118b0..1b76aa5fed 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -440,6 +440,7 @@ typedef struct PARTITION_SPEED_FEATURES { int prune_split_ml_level; int prune_split_ml_level_inter; int prune_none_with_ml; + int remove_qp_restriction_with_ml; #endif // CONFIG_ML_PART_SPLIT bool disable_ext_partitions; From dcffe9a987ff41caf214f9d9b17da4dea87aafa5 Mon Sep 17 00:00:00 2001 From: Jerome Jiang Date: Wed, 22 Jul 2026 14:41:14 -0400 Subject: [PATCH 080/205] Add realtime(rt) flag, encoder options / config Also added unit test with rtc mode Default remains GOOD quality mode. --- apps/avmenc.c | 3 + av2/arg_defs.c | 1 + av2/arg_defs.h | 1 + av2/av2_cx_iface.c | 418 ++++++++++++++++++++++++++++-------------- av2/encoder/encoder.h | 4 +- avm/avm_encoder.h | 2 + test/rtc_test.cc | 111 +++++++++++ test/test.cmake | 1 + 8 files changed, 399 insertions(+), 142 deletions(-) create mode 100644 test/rtc_test.cc diff --git a/apps/avmenc.c b/apps/avmenc.c index 435639dcb3..18e175cb58 100644 --- a/apps/avmenc.c +++ b/apps/avmenc.c @@ -147,6 +147,7 @@ const arg_def_t *main_args[] = { &g_av2_codec_arg_defs.help, &g_av2_codec_arg_defs.skip, &g_av2_codec_arg_defs.step, &g_av2_codec_arg_defs.good_dl, + &g_av2_codec_arg_defs.rt_dl, &g_av2_codec_arg_defs.quietarg, &g_av2_codec_arg_defs.verbosearg, &g_av2_codec_arg_defs.psnrarg, @@ -702,6 +703,8 @@ static void parse_global_config(struct AvxEncoderConfig *global, char ***argv) { global->usage = arg_parse_uint(&arg); } else if (arg_match(&arg, &g_av2_codec_arg_defs.good_dl, argi)) { global->usage = AVM_USAGE_GOOD_QUALITY; // Good quality usage + } else if (arg_match(&arg, &g_av2_codec_arg_defs.rt_dl, argi)) { + global->usage = AVM_USAGE_REALTIME; // REALTIME usage } else if (arg_match(&arg, &g_av2_codec_arg_defs.use_yv12, argi)) { global->color_type = YV12; } else if (arg_match(&arg, &g_av2_codec_arg_defs.use_i420, argi)) { diff --git a/av2/arg_defs.c b/av2/arg_defs.c index 9df0368685..74d4e8510b 100644 --- a/av2/arg_defs.c +++ b/av2/arg_defs.c @@ -177,6 +177,7 @@ const av2_codec_arg_definitions_t g_av2_codec_arg_defs = { .step = ARG_DEF(NULL, "step", 1, "Encode every n-th frame (after the --skip frames)"), .good_dl = ARG_DEF(NULL, "good", 0, "Use Good Quality Deadline"), + .rt_dl = ARG_DEF(NULL, "rt", 0, "Use Realtime Quality Deadline"), .quietarg = ARG_DEF("q", "quiet", 0, "Do not print encode progress"), .verbosearg = ARG_DEF("v", "verbose", 0, "Show encoder parameters"), .psnrarg = ARG_DEF( diff --git a/av2/arg_defs.h b/av2/arg_defs.h index 7fe25641bc..b79087dc5a 100644 --- a/av2/arg_defs.h +++ b/av2/arg_defs.h @@ -50,6 +50,7 @@ typedef struct av2_codec_arg_definitions { arg_def_t skip; arg_def_t step; arg_def_t good_dl; + arg_def_t rt_dl; arg_def_t quietarg; arg_def_t verbosearg; arg_def_t psnrarg; diff --git a/av2/av2_cx_iface.c b/av2/av2_cx_iface.c index 57ce39989b..c4927e6e8d 100644 --- a/av2/av2_cx_iface.c +++ b/av2/av2_cx_iface.c @@ -1236,7 +1236,10 @@ static avm_codec_err_t set_encoder_config(AV2EncoderConfig *oxcf, const int is_vbr = cfg->rc_end_usage == AVM_VBR; oxcf->profile = cfg->g_profile; oxcf->max_threads = (int)cfg->g_threads; - oxcf->mode = GOOD; + switch (cfg->g_usage) { + case AVM_USAGE_REALTIME: oxcf->mode = REALTIME; break; + default: oxcf->mode = GOOD; break; + } // Set frame-dimension related configuration. frm_dim_cfg->width = cfg->g_w; @@ -3204,10 +3207,6 @@ static avm_codec_err_t encoder_encode(avm_codec_alg_priv_t *ctx, } } } - if (ctx->oxcf.mode != GOOD) { - ctx->oxcf.mode = GOOD; - av2_change_config(ctx->cpi, &ctx->oxcf); - } avm_codec_pkt_list_init(&ctx->pkt_list); @@ -4739,141 +4738,278 @@ static avm_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { CTRL_MAP_END, }; -static const avm_codec_enc_cfg_t encoder_usage_cfg[] = { { - // NOLINT - AVM_USAGE_GOOD_QUALITY, // g_usage - non-realtime usage - 0, // g_threads - 0, // g_profile - - 320, // g_w - 240, // g_h - 0, // g_limit - 0, // g_forced_max_frame_width - 0, // g_forced_max_frame_height - AVM_BITS_8, // g_bit_depth - 8, // g_input_bit_depth - - { 1, 30 }, // g_timebase - - 0, // g_error_resilient - - AVM_RC_ONE_PASS, // g_pass - - 19, // g_lag_in_frames - - 0, // rc_dropframe_thresh - RESIZE_NONE, // rc_resize_mode - SCALE_NUMERATOR, // rc_resize_denominator - SCALE_NUMERATOR, // rc_resize_kf_denominator - - AVM_VBR, // rc_end_usage - { NULL, 0 }, // rc_firstpass_mb_stats_in - 256, // rc_target_bandwidth - 0, // rc_min_quantizer - 255, // rc_max_quantizer - 25, // rc_undershoot_pct - 25, // rc_overshoot_pct - - 6000, // rc_max_buffer_size - 4000, // rc_buffer_initial_size - 5000, // rc_buffer_optimal_size - - 0, // rc_two_pass_vbrmin_section - 2000, // rc_two_pass_vbrmax_section - - // keyframing settings (kf) - 0, // fwd_kf_enabled - AVM_KF_AUTO, // kf_mode - 0, // kf_min_dist - 9999, // kf_max_dist - 0, // enable_sframe - 0, // sframe_dist - 1, // sframe_mode - 0, // sframe_type - 0, // monochrome - 0, // full_still_picture_hdr - 1, // enable_tcq - 0, // enable_lcr - 0, // enable_ops - 1, // num_ops - 0, // enable_atlas - 0, // tile_width_count - 0, // tile_height_count - { 0 }, // tile_widths - { 0 }, // tile_heights - 0, // use_fixed_qp_offsets - { -1, -1, -1, -1, -1, -1 }, // fixed_qp_offsets - 0, // frame_hash_metadata; - 0, // frame_hash_per_plane; - 0, // use_short_metadata; - { - 0, // init_by_cfg_file - 128, // superblock_size - 128, // max_partition_size - 4, // min_partition_size - 1, // enable_rect_partitions - 1, // enable_uneven_4way_partitions - 1, // disable_ml_partition_speed_features - 5, // erp_pruning_level - 0, // use_ml_erp_pruning - 1, // enable_ext_partitions - 1, // enable_tx_partition - 8, // max_partition_aspect_ratio - 0, 1, 1, /*extended sdp*/ 1, - 1, - 1, // enable RefineMv and OPFL for TIP - 1, // MV traj - 0, // enable_high_motion - 1, 1, 1, 1, - 1, // enable idtx intra for fsc is disabled case - 1, - 1, // IST - 1, // inter IST - 0, // chroma DCT only - 1, // inter DDT - 1, // enable_cctx - 1, 1, 1, - 3, // select_cfl_ds - 1, 1, 1, 1, - 1, 1, 1, 0, - 1, 1, 1, 1, - 0, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 0, 0, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, - 0, // reduced_tx_part_set - 1, 1, 1, 1, - 3, 1, - 0, // reduced_ref_frame_mvs_mode - 1, // enable_reduced_reference_set - 0, // explicit_ref_frame_map - 0, // add_sef_for_hidden_frames - 0, // monotonic_output_order - 0, // reduced_tx_type_set - 0, // max_drl_refmvs - - 0, // max_drl_refbvs - 1, 1, 1, - 1, // enable_avg_cdf - 1, // avg_cdf_type - 1, - 1, // enable_short_refresh_frame_flags - 0, // enable_ext_seg - 8, // dpb_size - 0, // enable_bru - 0, // disable_loopfilters_across_tiles - 0, // enable cropping window - 0, // crop_win_left_offset - 0, // crop_win_right_offset - 0, // crop_win_top_offset - 0, // crop_win_bottom_offset - NULL, 0, 0, - 0, // enable_mfh_obu_signaling - 1, - }, // cfg -} }; +static const avm_codec_enc_cfg_t encoder_usage_cfg[] = { + { + // NOLINT + AVM_USAGE_GOOD_QUALITY, // g_usage - non-realtime usage + 0, // g_threads + 0, // g_profile + + 320, // g_w + 240, // g_h + 0, // g_limit + 0, // g_forced_max_frame_width + 0, // g_forced_max_frame_height + AVM_BITS_8, // g_bit_depth + 8, // g_input_bit_depth + + { 1, 30 }, // g_timebase + + 0, // g_error_resilient + + AVM_RC_ONE_PASS, // g_pass + + 19, // g_lag_in_frames + + 0, // rc_dropframe_thresh + RESIZE_NONE, // rc_resize_mode + SCALE_NUMERATOR, // rc_resize_denominator + SCALE_NUMERATOR, // rc_resize_kf_denominator + + AVM_VBR, // rc_end_usage + { NULL, 0 }, // rc_firstpass_mb_stats_in + 256, // rc_target_bandwidth + 0, // rc_min_quantizer + 255, // rc_max_quantizer + 25, // rc_undershoot_pct + 25, // rc_overshoot_pct + + 6000, // rc_max_buffer_size + 4000, // rc_buffer_initial_size + 5000, // rc_buffer_optimal_size + + 0, // rc_two_pass_vbrmin_section + 2000, // rc_two_pass_vbrmax_section + + // keyframing settings (kf) + 0, // fwd_kf_enabled + AVM_KF_AUTO, // kf_mode + 0, // kf_min_dist + 9999, // kf_max_dist + 0, // enable_sframe + 0, // sframe_dist + 1, // sframe_mode + 0, // sframe_type + 0, // monochrome + 0, // full_still_picture_hdr + 1, // enable_tcq + 0, // enable_lcr + 0, // enable_ops + 1, // num_ops + 0, // enable_atlas + 0, // tile_width_count + 0, // tile_height_count + { 0 }, // tile_widths + { 0 }, // tile_heights + 0, // use_fixed_qp_offsets + { -1, -1, -1, -1, -1, -1 }, // fixed_qp_offsets + 0, // frame_hash_metadata; + 0, // frame_hash_per_plane; + 0, // use_short_metadata; + { + 0, // init_by_cfg_file + 128, // superblock_size + 128, // max_partition_size + 4, // min_partition_size + 1, // enable_rect_partitions + 1, // enable_uneven_4way_partitions + 1, // disable_ml_partition_speed_features + 5, // erp_pruning_level + 0, // use_ml_erp_pruning + 1, // enable_ext_partitions + 1, // enable_tx_partition + 8, // max_partition_aspect_ratio + 0, 1, 1, /*extended sdp*/ 1, + 1, + 1, // enable RefineMv and OPFL for TIP + 1, // MV traj + 0, // enable_high_motion + 1, 1, 1, 1, + 1, // enable idtx intra for fsc is disabled case + 1, + 1, // IST + 1, // inter IST + 0, // chroma DCT only + 1, // inter DDT + 1, // enable_cctx + 1, 1, 1, + 3, // select_cfl_ds + 1, 1, 1, 1, + 1, 1, 1, 0, + 1, 1, 1, 1, + 0, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 0, 0, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, + 0, // reduced_tx_part_set + 1, 1, 1, 1, + 3, 1, + 0, // reduced_ref_frame_mvs_mode + 1, // enable_reduced_reference_set + 0, // explicit_ref_frame_map + 0, // add_sef_for_hidden_frames + 0, // monotonic_output_order + 0, // reduced_tx_type_set + 0, // max_drl_refmvs + + 0, // max_drl_refbvs + 1, 1, 1, + 1, // enable_avg_cdf + 1, // avg_cdf_type + 1, + 1, // enable_short_refresh_frame_flags + 0, // enable_ext_seg + 8, // dpb_size + 0, // enable_bru + 0, // disable_loopfilters_across_tiles + 0, // enable cropping window + 0, // crop_win_left_offset + 0, // crop_win_right_offset + 0, // crop_win_top_offset + 0, // crop_win_bottom_offset + NULL, 0, 0, + 0, // enable_mfh_obu_signaling + 1, + }, // cfg + }, + { + // NOLINT + AVM_USAGE_REALTIME, // g_usage - realtime usage + 0, // g_threads + 0, // g_profile + + 320, // g_w + 240, // g_h + 0, // g_limit + 0, // g_forced_max_frame_width + 0, // g_forced_max_frame_height + AVM_BITS_8, // g_bit_depth + 8, // g_input_bit_depth + + { 1, 30 }, // g_timebase + + 0, // g_error_resilient + + AVM_RC_ONE_PASS, // g_pass + + 0, // g_lag_in_frames + + 0, // rc_dropframe_thresh + RESIZE_NONE, // rc_resize_mode + SCALE_NUMERATOR, // rc_resize_denominator + SCALE_NUMERATOR, // rc_resize_kf_denominator + + AVM_VBR, // rc_end_usage + { NULL, 0 }, // rc_firstpass_mb_stats_in + 256, // rc_target_bandwidth + 0, // rc_min_quantizer + 255, // rc_max_quantizer + 25, // rc_undershoot_pct + 25, // rc_overshoot_pct + + 6000, // rc_max_buffer_size + 4000, // rc_buffer_initial_size + 5000, // rc_buffer_optimal_size + + 0, // rc_two_pass_vbrmin_section + 2000, // rc_two_pass_vbrmax_section + + // keyframing settings (kf) + 0, // fwd_kf_enabled + AVM_KF_AUTO, // kf_mode + 0, // kf_min_dist + 9999, // kf_max_dist + 0, // enable_sframe + 0, // sframe_dist + 1, // sframe_mode + 0, // sframe_type + 0, // monochrome + 0, // full_still_picture_hdr + 0, // enable_tcq + 0, // enable_lcr + 0, // enable_ops + 1, // num_ops + 0, // enable_atlas + 0, // tile_width_count + 0, // tile_height_count + { 0 }, // tile_widths + { 0 }, // tile_heights + 0, // use_fixed_qp_offsets + { -1, -1, -1, -1, -1, -1 }, // fixed_qp_offsets + 0, // frame_hash_metadata; + 0, // frame_hash_per_plane; + 0, // use_short_metadata; + { + 0, // init_by_cfg_file + 128, // superblock_size + 128, // max_partition_size + 4, // min_partition_size + 1, // enable_rect_partitions + 1, // enable_uneven_4way_partitions + 1, // disable_ml_partition_speed_features + 5, // erp_pruning_level + 0, // use_ml_erp_pruning + 1, // enable_ext_partitions + 1, // enable_tx_partition + 8, // max_partition_aspect_ratio + 0, 1, 1, /*extended sdp*/ 1, + 1, + 1, // enable RefineMv and OPFL for TIP + 1, // MV traj + 0, // enable_high_motion + 1, 1, 1, 1, + 1, // enable idtx intra for fsc is disabled case + 1, + 1, // IST + 1, // inter IST + 0, // chroma DCT only + 1, // inter DDT + 1, // enable_cctx + 1, 1, 1, + 3, // select_cfl_ds + 1, 1, 1, 1, + 1, 1, 1, 0, + 1, 1, 1, 1, + 0, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 0, 0, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, + 0, // reduced_tx_part_set + 1, 1, 1, 1, + 3, 1, + 0, // reduced_ref_frame_mvs_mode + 1, // enable_reduced_reference_set + 0, // explicit_ref_frame_map + 0, // add_sef_for_hidden_frames + 0, // monotonic_output_order + 0, // reduced_tx_type_set + 0, // max_drl_refmvs + + 0, // max_drl_refbvs + 1, 1, 1, + 1, // enable_avg_cdf + 1, // avg_cdf_type + 1, + 1, // enable_short_refresh_frame_flags + 0, // enable_ext_seg + 8, // dpb_size + 0, // enable_bru + 0, // disable_loopfilters_across_tiles + 0, // enable cropping window + 0, // crop_win_left_offset + 0, // crop_win_right_offset + 0, // crop_win_top_offset + 0, // crop_win_bottom_offset + NULL, 0, 0, + 0, // enable_mfh_obu_signaling + 1, + }, // cfg + }, +}; // This data structure and function are exported in avm/avmcx.h #ifndef VERSION_STRING @@ -4897,7 +5033,7 @@ avm_codec_iface_t avm_codec_av2_cx_algo = { }, { // NOLINT - 1, // 1 cfg + 2, // 2 cfg encoder_usage_cfg, // avm_codec_enc_cfg_t encoder_encode, // avm_codec_encode_fn_t encoder_get_cxdata, // avm_codec_get_cx_data_fn_t diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index 0ec1e1600c..b0656d6b72 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -96,7 +96,9 @@ enum { enum { // Good Quality Fast Encoding. The encoder balances quality with the amount of // time it takes to encode the output. Speed setting controls how fast. - GOOD + GOOD, + // Realtime Fast Encoding. + REALTIME } UENUM1BYTE(MODE); enum { diff --git a/avm/avm_encoder.h b/avm/avm_encoder.h index 9a82ee009d..87cb9adcae 100644 --- a/avm/avm_encoder.h +++ b/avm/avm_encoder.h @@ -1324,6 +1324,8 @@ avm_fixed_buf_t *avm_codec_get_global_headers(avm_codec_ctx_t *ctx); /*!\brief usage parameter analogous to AV2 GOOD QUALITY mode. */ #define AVM_USAGE_GOOD_QUALITY (0) +/*!\brief usage parameter analogous to AV2 REALTIME mode. */ +#define AVM_USAGE_REALTIME (1) /*!\brief Encode a frame * diff --git a/test/rtc_test.cc b/test/rtc_test.cc new file mode 100644 index 0000000000..4e168f8440 --- /dev/null +++ b/test/rtc_test.cc @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2021, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ +#include "avm/avm_codec.h" +#include "third_party/googletest/src/googletest/include/gtest/gtest.h" +#include "test/codec_factory.h" +#include "test/encode_test_driver.h" +#include "test/y4m_video_source.h" +#include "test/util.h" + +namespace { +// This class is used to validate realtime encoding path. +class RtcTestLarge : public ::libavm_test::CodecTestWithParam, + public ::libavm_test::EncoderTest { + protected: + RtcTestLarge() : EncoderTest(GET_PARAM(0)), tune_content_(GET_PARAM(1)) {} + virtual ~RtcTestLarge() {} + + virtual void SetUp() { + const avm_codec_err_t res = + codec_->DefaultEncoderConfig(&cfg_, AVM_USAGE_REALTIME); + ASSERT_EQ(AVM_CODEC_OK, res); + passes_ = 1; + cfg_.g_usage = AVM_USAGE_REALTIME; + const avm_rational timebase = { 1, 30 }; + cfg_.g_timebase = timebase; + cfg_.rc_target_bitrate = 1000; + cfg_.rc_end_usage = AVM_Q; + cfg_.rc_min_quantizer = 120; + cfg_.rc_max_quantizer = 120; + cfg_.g_threads = 1; + cfg_.g_lag_in_frames = 0; + cfg_.g_profile = 0; + cfg_.g_bit_depth = AVM_BITS_8; + cfg_.enable_tcq = 0; + } + + virtual bool DoDecode() const { return true; } + + virtual void PreEncodeFrameHook(::libavm_test::VideoSource *video, + ::libavm_test::Encoder *encoder) { + if (video->frame() == 0) { + encoder->Control(AV2E_SET_TUNE_CONTENT, tune_content_); + encoder->Control(AVME_SET_CPUUSED, 6); + // Other RTC settings, to be updated. + encoder->Control(AVME_SET_ENABLEAUTOALTREF, 0); + encoder->Control(AV2E_SET_ENABLE_KEYFRAME_FILTERING, 0); + encoder->Control(AV2E_SET_ENABLE_RECT_PARTITIONS, 0); + encoder->Control(AV2E_SET_ENABLE_INTRA_EDGE_FILTER, 0); + encoder->Control(AV2E_SET_ENABLE_MASKED_COMP, 0); + encoder->Control(AV2E_SET_ENABLE_ONESIDED_COMP, 0); + encoder->Control(AV2E_SET_ENABLE_INTERINTRA_COMP, 0); + encoder->Control(AV2E_SET_ENABLE_SMOOTH_INTERINTRA, 0); + encoder->Control(AV2E_SET_ENABLE_DIFF_WTD_COMP, 0); + encoder->Control(AV2E_SET_ENABLE_INTERINTER_WEDGE, 0); + encoder->Control(AV2E_SET_ENABLE_INTERINTRA_WEDGE, 0); + encoder->Control(AV2E_SET_ENABLE_GLOBAL_MOTION, 0); + encoder->Control(AV2E_SET_ENABLE_WARPED_MOTION, 0); + encoder->Control(AV2E_SET_ENABLE_SMOOTH_INTRA, 0); + encoder->Control(AV2E_SET_ENABLE_PAETH_INTRA, 0); + encoder->Control(AV2E_SET_ENABLE_CFL_INTRA, 0); + encoder->Control(AV2E_SET_ENABLE_OVERLAY, 0); + encoder->Control(AV2E_SET_QUANT_B_ADAPT, 0); + encoder->Control(AV2E_SET_ENABLE_TPL_MODEL, 0); + encoder->Control(AV2E_SET_FRAME_PERIODIC_BOOST, 0); + encoder->Control(AV2E_SET_MAX_REFERENCE_FRAMES, 3); + encoder->Control(AV2E_SET_REDUCED_REFERENCE_SET, 1); + encoder->Control(AV2E_SET_ENABLE_REF_FRAME_MVS, 0); + encoder->Control(AV2E_SET_ENABLE_QM, 0); + encoder->Control(AV2E_SET_ENABLE_ANGLE_DELTA, 0); + encoder->Control(AV2E_SET_ENABLE_RESTORATION, 0); + encoder->Control(AV2E_SET_ENABLE_BRU, 0); + encoder->Control(AV2E_SET_AQ_MODE, 0); + encoder->Control(AV2E_SET_CDF_UPDATE_MODE, 1); + encoder->Control(AV2E_SET_ENABLE_DEBLOCKING, 1); + encoder->Control(AV2E_SET_ENABLE_CDEF, 1); + encoder->Control(AV2E_SET_ENABLE_PALETTE, 1); + encoder->Control(AV2E_SET_ENABLE_INTRABC, 1); + encoder->Control(AV2E_SET_INTRA_DCT_ONLY, 1); + encoder->Control(AV2E_SET_INTER_DCT_ONLY, 1); + encoder->Control(AV2E_SET_FORCE_VIDEO_MODE, 1); + encoder->Control(AV2E_SET_COEFF_COST_UPD_FREQ, 2); + encoder->Control(AV2E_SET_MODE_COST_UPD_FREQ, 2); + encoder->Control(AV2E_SET_MV_COST_UPD_FREQ, 3); + } + } + + virtual bool HandleDecodeResult(const avm_codec_err_t res_dec, + libavm_test::Decoder *decoder) { + EXPECT_EQ(AVM_CODEC_OK, res_dec) << decoder->DecodeError(); + return AVM_CODEC_OK == res_dec; + } + + int tune_content_; +}; + +TEST_P(RtcTestLarge, RtcTest) { + ::libavm_test::Y4mVideoSource video_nonsc("niklas_1280_720_30.y4m", 0, 5); + ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); +} + +AV2_INSTANTIATE_TEST_SUITE(RtcTestLarge, ::testing::Range(0, 2)); +} // namespace diff --git a/test/test.cmake b/test/test.cmake index b212feb0ea..b5d3b6b948 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -141,6 +141,7 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/quant_test.cc" "${AVM_ROOT}/test/qm_test.cc" "${AVM_ROOT}/test/ras_frame_pruning_test.cc" + "${AVM_ROOT}/test/rtc_test.cc" "${AVM_ROOT}/test/sb_multipass_test.cc" "${AVM_ROOT}/test/screen_content_test.cc" "${AVM_ROOT}/test/sef_test.cc" From d7a266efa1d5dc212b93ec4f048b0c564fb99f44 Mon Sep 17 00:00:00 2001 From: jadhuran Date: Mon, 27 Jul 2026 12:06:55 -0500 Subject: [PATCH 081/205] Speed up on uneven 4way partition and MV precision. (#5149) This has two contributions Contribution 1 Block size based partition depth reduction for uneven 4 way Q index threshold is applied only to key frames. Apply separate partition depth for uneven 4 way partition from H - partition Contribution 2 Prune mv using best precision Do not prune one pel when maximum precision is quarter pel. Results: Anchor: 1d2febc43d7dd206e68ac178cf7e69e17652d0dd Test: Contribution 1 + Contribution 2 ``` +---------+--------+-------+-------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+-------+-------+-------+----------+----------+ | A1 | -0.02% | 0.24% | 0.21% | 0.00% | 97.8% | 100.5% | | A2 | 0.10% | 0.15% | 0.03% | 0.09% | 95.8% | 99.8% | +---------+--------+-------+-------+-------+----------+----------+ ``` Test: Contribution 1 ``` +---------+--------+-------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+-------+--------+--------+----------+----------+ | A1 | -0.02% | 0.05% | -0.14% | -0.02% | 99.0% | 100.5% | | A2 | 0.06% | 0.09% | 0.19% | 0.07% | 97.6% | 99.3% | +---------+--------+-------+--------+--------+----------+----------+ ``` --- av2/encoder/partition_search.c | 17 ++++++++++++++--- av2/encoder/rdopt.c | 6 +++--- av2/encoder/rdopt.h | 24 +++++++++++++++++------- av2/encoder/speed_features.c | 10 ++++++++++ av2/encoder/speed_features.h | 6 ++++++ 5 files changed, 50 insertions(+), 13 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 5282e18315..bc62a0db80 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -5883,9 +5883,19 @@ bool av2_rd_pick_partition( } // Search extended partitions. + const int ext_recur_depth_val = + get_ext_partitions_recur_depth(&cpi->sf.part_sf, bsize); const int ext_recur_depth = - AVMMIN(max_recursion_depth - 1, - get_ext_partitions_recur_depth(&cpi->sf.part_sf, bsize)); + AVMMIN(max_recursion_depth - 1, ext_recur_depth_val); + + const int uneven_4way_recur_depth_val = + cpi->sf.part_sf.uneven_4way_recur_depth_level && + (block_size_wide[bsize] < 64 || block_size_high[bsize] < 64) + ? 1 + : ext_recur_depth_val; + const int uneven_4way_recur_depth = + AVMMIN(max_recursion_depth - 1, uneven_4way_recur_depth_val); + const bool track_ptree_luma = is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); bool partition_boundaries[MAX_MIB_SQUARE] = { 0 }; @@ -5910,7 +5920,8 @@ bool av2_rd_pick_partition( search_extended_partition( &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, + &part_search_state, &level_banks, multi_pass_mode, + uneven_4way_recur_depth, is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize), partition_type); prune_4way_partitions_based_on_4way_search( diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index f705d70f2a..ed751ee8e1 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -5477,9 +5477,9 @@ static int64_t handle_inter_mode( pb_mv_precision < MV_PRECISION_FOUR_PEL && best_precision_so_far >= MV_PRECISION_QTR_PEL) continue; - if (prune_curr_mv_precision_eval( - cpi->sf.flexmv_sf.prune_mv_prec_using_best_mv_prec_so_far, - precision_dx, best_precision_dx_so_far)) + if (prune_curr_mv_precision_eval(cpi, mbmi, precision_def, + precision_dx, + best_precision_dx_so_far)) continue; if (mbmi->ref_mv_idx[0] || mbmi->ref_mv_idx[1]) { if (cpi->sf.flexmv_sf.do_not_search_8_pel_precision && diff --git a/av2/encoder/rdopt.h b/av2/encoder/rdopt.h index d514bc40e3..bf650d910d 100644 --- a/av2/encoder/rdopt.h +++ b/av2/encoder/rdopt.h @@ -375,14 +375,24 @@ static INLINE void update_mv_precision(const MV ref_mv, // Prune the evaluation of current MV precision based on best MV precision // chosen so far. static INLINE bool prune_curr_mv_precision_eval( - int prune_mv_prec_using_best_mv_prec_so_far, int precision_dx, + const AV2_COMP *const cpi, const MB_MODE_INFO *mbmi, + const PRECISION_SET *precision_def, int precision_dx, int best_precision_dx) { - if (!prune_mv_prec_using_best_mv_prec_so_far) return false; - if (prune_mv_prec_using_best_mv_prec_so_far >= 1) { - // If the current MV precision index is farther from the best MV precision, - // prune the evaluation of current MV precision. - if (best_precision_dx - precision_dx > 1) return true; - } + const int prune_mv_using_best_mv_prec = + cpi->sf.flexmv_sf.prune_non_one_pel_mv_using_best_mv_prec || + cpi->sf.flexmv_sf.prune_mv_prec_using_best_mv_prec_so_far; + + if (!prune_mv_using_best_mv_prec) return false; + // If the current MV precision index is farther from the best MV precision, + // prune the evaluation of current MV precision. + + // Avoid pruning one pel precision for boosted frames based + // on qindex when mbmi->max_mv_precision is QTR_PEL. + if (cpi->sf.flexmv_sf.prune_non_one_pel_mv_using_best_mv_prec && + mbmi->max_mv_precision == MV_PRECISION_QTR_PEL && + precision_def->precision[precision_dx] == MV_PRECISION_ONE_PEL) + return false; + if (best_precision_dx - precision_dx > 1) return true; return false; } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index bce935e009..842316cf65 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -336,6 +336,7 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.perform_coeff_opt = 1; if (speed >= 1) { + sf->flexmv_sf.prune_non_one_pel_mv_using_best_mv_prec = 1; sf->inter_sf.selective_ref_frame = 2; sf->inter_sf.prune_newmv_modes_using_prior_rd = 1; sf->inter_sf.share_motion_mode_prune_pool = 1; @@ -694,6 +695,7 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->prune_rect_with_ml = 0; part_sf->end_part_search_after_consec_failures = 0; part_sf->ext_recur_depth_level = 0; + part_sf->uneven_4way_recur_depth_level = 0; part_sf->prune_rect_with_split_depth = 0; part_sf->prune_part_h_with_partition_boundary = 0; part_sf->inter_sdp_fast_method_level = 0; @@ -741,6 +743,7 @@ static AVM_INLINE void init_flexmv_sf( flexmv_sf->fast_mv_refinement = 0; flexmv_sf->fast_motion_search_low_precision = 0; flexmv_sf->prune_mv_prec_using_best_mv_prec_so_far = 0; + flexmv_sf->prune_non_one_pel_mv_using_best_mv_prec = 0; } static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { @@ -1275,6 +1278,10 @@ static AVM_INLINE void set_erp_speed_features_qindex_dependent(AV2_COMP *cpi) { if (!boosted && cm->quant_params.base_qindex < qindex_thresh3) { sf->part_sf.simple_motion_search_split = 1; } + sf->part_sf.uneven_4way_recur_depth_level = 1; + if (frame_is_intra_only(cm) && + cm->quant_params.base_qindex >= qindex_thresh3) + sf->part_sf.uneven_4way_recur_depth_level = 0; } } @@ -1348,6 +1355,9 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { if (cm->quant_params.base_qindex <= qindex_thresh && !cm->features.allow_screen_content_tools) { sf->flexmv_sf.prune_mv_prec_using_best_mv_prec_so_far = boosted ? 0 : 1; + if (!boosted) { + sf->flexmv_sf.prune_non_one_pel_mv_using_best_mv_prec = 0; + } sf->tx_sf.prune_inter_tx_part_rd_eval = true; } } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 1b76aa5fed..b130efaf37 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -411,6 +411,9 @@ typedef struct PARTITION_SPEED_FEATURES { // to INT_MAX. If set to 2, recursion depth is set to 1. int ext_recur_depth_level; + // Reduce the recursion depth for uneven 4way partitions based on block size + int uneven_4way_recur_depth_level; + // Prune rect partitions if PARTITION_SPLIT goes deep. int prune_rect_with_split_depth; @@ -982,6 +985,9 @@ typedef struct FLEXMV_PRECISION_SPEED_FEATURES { // Prune the evaluation of current MV precision based on best MV precision // chosen so far. int prune_mv_prec_using_best_mv_prec_so_far; + // Enable prune mv precision using best mv precision but restrict pruning one + // pel + int prune_non_one_pel_mv_using_best_mv_prec; } FLEXMV_PRECISION_SPEED_FEATURES; /*!\endcond */ From 6b587a1dcce427c733852406e61c85b1e2df3a7e Mon Sep 17 00:00:00 2001 From: deepa-kg Date: Mon, 27 Jul 2026 22:44:47 +0530 Subject: [PATCH 082/205] Add SSE2 optimization for interp_cubic() (#5135) This patch refactors av2_model_rd_curvfit() by consolidating two interp_cubic() calls for computing rate and distortion. Also, the relevant SSE2 implementation for the combined interp_cubic() function along with its corresponding unit test is added. The SSE2 implementation achieves ~1.21x speedup compared to the scalar C version. (adopted from libaom: https://aomedia-review.googlesource.com/c/aom/+/211441) Also, unnecessary calls to the function get_dqv() in update_coeff_general(), update_coeff_simple(), and update_coeff_eob() are removed. Test results (RA) Anchor: commit 165345b A1 - 17 frames A2 - 33 frames ``` -------------------------------------- Speed Class Encoder Instruction Count Reduction (%) ------------------------------------- 0 A2 0.32 A1 0.23 ------------------------------------- 1 A2 0.31 A1 0.21 ------------------------------------- 2 A2 0.19 A1 0.10 ------------------------------------- 3 A2 0.26 A1 0.11 ------------------------------------- ``` --- av2/av2.cmake | 1 + av2/common/av2_rtcd_defs.pl | 3 + av2/encoder/encodetxb.c | 6 +- av2/encoder/model_rd.h | 9 +-- av2/encoder/rd.c | 11 ++- av2/encoder/rd.h | 17 ++++- av2/encoder/x86/model_rd_sse2.c | 61 +++++++++++++++ test/model_rd_test.cc | 127 ++++++++++++++++++++++++++++++++ test/test.cmake | 1 + 9 files changed, 224 insertions(+), 12 deletions(-) create mode 100644 av2/encoder/x86/model_rd_sse2.c create mode 100644 test/model_rd_test.cc diff --git a/av2/av2.cmake b/av2/av2.cmake index d36f132a33..3a3d95266d 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -396,6 +396,7 @@ list( "${AVM_ROOT}/av2/encoder/x86/encodetxb_sse2.c" "${AVM_ROOT}/av2/encoder/x86/highbd_block_error_intrin_sse2.c" "${AVM_ROOT}/av2/encoder/x86/highbd_temporal_filter_sse2.c" + "${AVM_ROOT}/av2/encoder/x86/model_rd_sse2.c" "${AVM_ROOT}/av2/encoder/x86/wedge_utils_sse2.c") list(APPEND AVM_AV2_ENCODER_INTRIN_SSE3 "${AVM_ROOT}/av2/encoder/x86/ml_sse3.c") diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index 95e64ca4f7..a92d1ee256 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -303,6 +303,9 @@ () add_proto qw/void av2_get_horver_correlation_full/, " const int16_t *diff, int stride, int w, int h, float *hcorr, float *vcorr"; specialize qw/av2_get_horver_correlation_full sse4_1 avx2 neon/; + add_proto qw/void av2_interp_cubic_rate_dist/, "const double *p1, const double *p2, double x, double rate_dist_f[2]"; + specialize qw/av2_interp_cubic_rate_dist sse2/; + add_proto qw/void av2_nn_predict/, " const float *input_nodes, const NN_CONFIG *const nn_config, int reduce_prec, float *const output"; if (avm_config("CONFIG_EXCLUDE_SIMD_MISMATCH") ne "yes") { specialize qw/av2_nn_predict sse3 neon/; diff --git a/av2/encoder/encodetxb.c b/av2/encoder/encodetxb.c index 8f9b72c84f..ad70f096ca 100644 --- a/av2/encoder/encodetxb.c +++ b/av2/encoder/encodetxb.c @@ -2581,7 +2581,6 @@ static INLINE void update_coeff_general( tran_low_t *qcoeff, tran_low_t *dqcoeff, uint8_t *levels, const qm_val_t *iqmatrix, int32_t *tmp_sign, int plane, coeff_info *coef_info, bool enable_parity_hiding, int *hr_level_avg) { - const int dqv = get_dqv(dequant, scan[si], iqmatrix); const int ci = scan[si]; const tran_low_t qc = qcoeff[ci]; const int is_last = si == (eob - 1); @@ -2608,6 +2607,7 @@ static INLINE void update_coeff_general( if (qc == 0) { *accu_rate += limits ? base_lf_cost : base_cost; } else { + const int dqv = get_dqv(dequant, scan[si], iqmatrix); const int sign = (qc < 0) ? 1 : 0; const tran_low_t abs_qc = abs(qc); const tran_low_t tqc = tcoeff[ci]; @@ -2666,7 +2666,6 @@ static AVM_FORCE_INLINE void update_coeff_simple( tran_low_t *qcoeff, tran_low_t *dqcoeff, uint8_t *levels, const qm_val_t *iqmatrix, coeff_info *coef_info, bool enable_parity_hiding, int plane, int *hr_level_avg) { - const int dqv = get_dqv(dequant, scan[si], iqmatrix); (void)eob; // this simple version assumes the coeff's scan_idx is not DC (scan_idx != 0) // and not the last (scan_idx != eob - 1) @@ -2709,6 +2708,7 @@ static AVM_FORCE_INLINE void update_coeff_simple( } } } else { + const int dqv = get_dqv(dequant, scan[si], iqmatrix); const tran_low_t abs_qc = abs(qc); const tran_low_t abs_tqc = abs(tcoeff[ci]); const tran_low_t abs_dqc = abs(dqcoeff[ci]); @@ -2905,7 +2905,6 @@ static AVM_FORCE_INLINE void update_coeff_eob( int *hr_level_avg) { const int bwl = get_txb_bwl(tx_size); const int height = get_txb_high(tx_size); - const int dqv = get_dqv(dequant, scan[si], iqmatrix); assert(si != *eob - 1); const int ci = scan[si]; const tran_low_t qc = qcoeff[ci]; @@ -2945,6 +2944,7 @@ static AVM_FORCE_INLINE void update_coeff_eob( } } } else { + const int dqv = get_dqv(dequant, scan[si], iqmatrix); int64_t rd_eob_low = INT64_MAX >> 1; int rate_eob_low = INT32_MAX >> 1; int lower_level = 0; diff --git a/av2/encoder/model_rd.h b/av2/encoder/model_rd.h index e64d088ff5..8c096fec6c 100644 --- a/av2/encoder/model_rd.h +++ b/av2/encoder/model_rd.h @@ -126,12 +126,11 @@ static AVM_INLINE void model_rd_with_curvfit(const AV2_COMP *const cpi, const double sse_norm = (double)sse / num_samples; const double qstepsqr = (double)qstep * qstep; const double xqr = log2(sse_norm / qstepsqr); - double rate_f, dist_by_sse_norm_f; - av2_model_rd_curvfit(plane_bsize, sse_norm, xqr, &rate_f, - &dist_by_sse_norm_f); + double rate_dist_f[2]; + av2_model_rd_curvfit(plane_bsize, sse_norm, xqr, rate_dist_f); - const double dist_f = dist_by_sse_norm_f * sse_norm; - int rate_i = (int)(AVMMAX(0.0, rate_f * num_samples) + 0.5); + const double dist_f = rate_dist_f[1] * sse_norm; + int rate_i = (int)(AVMMAX(0.0, rate_dist_f[0] * num_samples) + 0.5); int64_t dist_i = (int64_t)(AVMMAX(0.0, dist_f * num_samples) + 0.5); avm_clear_system_state(); diff --git a/av2/encoder/rd.c b/av2/encoder/rd.c index 6fc74a995c..dd6dd866f5 100644 --- a/av2/encoder/rd.c +++ b/av2/encoder/rd.c @@ -1419,6 +1419,12 @@ static double interp_cubic(const double *p, double x) { x * (3.0 * (p[1] - p[2]) + p[3] - p[0]))); } +void av2_interp_cubic_rate_dist_c(const double *p1, const double *p2, double x, + double rate_dist_f[2]) { + rate_dist_f[0] = interp_cubic(p1, x); + rate_dist_f[1] = interp_cubic(p2, x); +} + /* static double interp_bicubic(const double *p, int p_stride, double x, double y) { @@ -1533,7 +1539,7 @@ static const double interp_dgrid_curv[3][65] = { }; void av2_model_rd_curvfit(BLOCK_SIZE bsize, double sse_norm, double xqr, - double *rate_f, double *distbysse_f) { + double rate_dist_f[2]) { const double x_start = -15.5; const double x_end = 16.5; const double x_step = 0.5; @@ -1551,9 +1557,8 @@ void av2_model_rd_curvfit(BLOCK_SIZE bsize, double sse_norm, double xqr, assert(xi > 0); const double *prate = &interp_rgrid_curv[rcat][(xi - 1)]; - *rate_f = interp_cubic(prate, xo); const double *pdist = &interp_dgrid_curv[dcat][(xi - 1)]; - *distbysse_f = interp_cubic(pdist, xo); + av2_interp_cubic_rate_dist(prate, pdist, xo, rate_dist_f); } static void get_entropy_contexts_plane(BLOCK_SIZE plane_bsize, diff --git a/av2/encoder/rd.h b/av2/encoder/rd.h index ebf902e9bf..db40c656d4 100644 --- a/av2/encoder/rd.h +++ b/av2/encoder/rd.h @@ -219,8 +219,23 @@ void av2_set_sad_per_bit(const struct AV2_COMP *cpi, MvCosts *mv_costs, void av2_model_rd_from_var_lapndz(int64_t var, unsigned int n, unsigned int qstep, int *rate, int64_t *dist); +/*!\brief Estimate rate and distortion for a block. + * + * \param[in] bsize Block size + * \param[in] sse_norm Normalized SSE + * \param[in] xqr The log2 ratio of normalized SSE to the + * squared quantization step size, computed + * as: log2(sse_norm / qstep^2) + * \param[out] rate_dist_f Pointer to store the results + * rate_dist_f[0] stores the estimated rate + * rate_dist_f[1] stores the estimated + * distortion by normalized SSE + * + * \remark Nothing is returned. Results are saved in rate_dist_f[0] + * and rate_dist_f[1]. + */ void av2_model_rd_curvfit(BLOCK_SIZE bsize, double sse_norm, double xqr, - double *rate_f, double *distbysse_f); + double rate_dist_f[2]); int av2_get_switchable_rate(const MACROBLOCK *x, const MACROBLOCKD *xd, InterpFilter interp_filter); diff --git a/av2/encoder/x86/model_rd_sse2.c b/av2/encoder/x86/model_rd_sse2.c new file mode 100644 index 0000000000..888118437c --- /dev/null +++ b/av2/encoder/x86/model_rd_sse2.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include + +#include "config/av2_rtcd.h" + +void av2_interp_cubic_rate_dist_sse2(const double *p1, const double *p2, + double x, double rate_dist_f[2]) { + const __m128d half = _mm_set1_pd(0.5); + const __m128d two = _mm_set1_pd(2.0); + const __m128d three = _mm_set1_pd(3.0); + const __m128d four = _mm_set1_pd(4.0); + const __m128d five = _mm_set1_pd(5.0); + + const __m128d reg_x = _mm_set1_pd(x); + const __m128d reg_p0 = _mm_set_pd(p2[0], p1[0]); + const __m128d reg_p1 = _mm_set_pd(p2[1], p1[1]); + const __m128d reg_p2 = _mm_set_pd(p2[2], p1[2]); + const __m128d reg_p3 = _mm_set_pd(p2[3], p1[3]); + + // To ensure that results are bit-identical to the C code, we need to perform + // exactly the same sequence of operations here as in the C code. + // reg_res_0 = x * (3.0 * (p[1] - p[2]) + p[3] - p[0]) + __m128d reg_res_0 = _mm_sub_pd(reg_p1, reg_p2); + reg_res_0 = _mm_mul_pd(three, reg_res_0); + reg_res_0 = _mm_add_pd(reg_res_0, reg_p3); + reg_res_0 = _mm_sub_pd(reg_res_0, reg_p0); + reg_res_0 = _mm_mul_pd(reg_x, reg_res_0); + + // reg_res_1 = 2.0 * p[0] - 5.0 * p[1] + 4.0 * p[2]- p[3] + const __m128d regp0_x_2 = _mm_mul_pd(two, reg_p0); + const __m128d regp1_x_5 = _mm_mul_pd(five, reg_p1); + const __m128d regp2_x_4 = _mm_mul_pd(four, reg_p2); + __m128d reg_res_1 = _mm_sub_pd(regp0_x_2, regp1_x_5); + reg_res_1 = _mm_add_pd(reg_res_1, regp2_x_4); + reg_res_1 = _mm_sub_pd(reg_res_1, reg_p3); + + // reg_res_2 = x * (reg_res_1 + reg_res_0) + __m128d reg_res_2 = _mm_add_pd(reg_res_1, reg_res_0); + reg_res_2 = _mm_mul_pd(reg_x, reg_res_2); + + // reg_res_3 = p[2] - p[0] + reg_res_2 + __m128d reg_res_3 = _mm_sub_pd(reg_p2, reg_p0); + reg_res_3 = _mm_add_pd(reg_res_3, reg_res_2); + + // reg_res_4 = p[1] + 0.5 * x * reg_res_3 + __m128d reg_res_4 = _mm_mul_pd(_mm_mul_pd(half, reg_x), reg_res_3); + reg_res_4 = _mm_add_pd(reg_p1, reg_res_4); + + _mm_storeu_pd(rate_dist_f, reg_res_4); +} diff --git a/test/model_rd_test.cc b/test/model_rd_test.cc new file mode 100644 index 0000000000..bc1345d738 --- /dev/null +++ b/test/model_rd_test.cc @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "gtest/gtest.h" + +#include "config/av2_rtcd.h" +#include "avm_ports/avm_timer.h" +#include "test/acm_random.h" +#include "test/register_state_check.h" + +namespace { + +using InterpCubicRateDistFunc = void (*)(const double *p1, const double *p2, + double x, double rate_dist_f[2]); + +class InterpCubicTest + : public ::testing::TestWithParam { + public: + InterpCubicTest() + : target_func_(GetParam()), + rnd_(libavm_test::ACMRandom::DeterministicSeed()) {} + double GenerateRandomDouble(double min, double max) { + return min + (static_cast(rnd_.Rand31()) / ((1U << 31) - 1)) * + (max - min); + } + + protected: + void CheckOutput(); + void SpeedTest(); + InterpCubicRateDistFunc target_func_; + libavm_test::ACMRandom rnd_; +}; +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(InterpCubicTest); + +#if ARCH_X86 || ARCH_X86_64 +/* On x86, disable the x87 unit's internal 80 bit precision for better + * consistency with the SSE unit's 64 bit precision. + */ +#include "avm_ports/x86.h" +#define FLOATING_POINT_SET_PRECISION \ + unsigned short x87_orig_mode = x87_set_double_precision(); +#define FLOATING_POINT_RESTORE_PRECISION x87_set_control_word(x87_orig_mode); +#else +#define FLOATING_POINT_SET_PRECISION +#define FLOATING_POINT_RESTORE_PRECISION +#endif // ARCH_X86 || ARCH_X86_64 + +void InterpCubicTest::CheckOutput() { + double p1[4], p2[4], out_ref[2], out_mod[2]; + constexpr int kNumIters = 10000; + for (int iter = 0; iter < kNumIters; ++iter) { + for (int i = 0; i < 4; ++i) { + p1[i] = GenerateRandomDouble(0.0000, 4096.000000); + p2[i] = GenerateRandomDouble(0.0000, 16.0000); + } + const double x = GenerateRandomDouble(0.0000, 1.0000); + + FLOATING_POINT_SET_PRECISION + av2_interp_cubic_rate_dist_c(p1, p2, x, out_ref); + FLOATING_POINT_RESTORE_PRECISION + + API_REGISTER_STATE_CHECK(target_func_(p1, p2, x, out_mod)); + + EXPECT_EQ(out_ref[0], out_mod[0]) << "Error: rate_f value mismatch"; + EXPECT_EQ(out_ref[1], out_mod[1]) << "Error: distbysse_f value mismatch"; + } +} + +void InterpCubicTest::SpeedTest() { + double p1[4], p2[4], out_ref[2], out_mod[2]; + + for (int i = 0; i < 4; ++i) { + p1[i] = GenerateRandomDouble(0.0000, 4096.0000); + p2[i] = GenerateRandomDouble(0.0000, 16.0000); + } + const double x = GenerateRandomDouble(0.0000, 1.0000); + + constexpr int kNumIters = 100000000; + + avm_usec_timer ref_timer, test_timer; + FLOATING_POINT_SET_PRECISION + avm_usec_timer_start(&ref_timer); + for (int iter = 0; iter < kNumIters; ++iter) { + av2_interp_cubic_rate_dist_c(p1, p2, x, out_ref); + } + avm_usec_timer_mark(&ref_timer); + FLOATING_POINT_RESTORE_PRECISION + const int elapsed_time_c = + static_cast(avm_usec_timer_elapsed(&ref_timer)); + + avm_usec_timer_start(&test_timer); + for (int iter = 0; iter < kNumIters; ++iter) { + API_REGISTER_STATE_CHECK(target_func_(p1, p2, x, out_mod)); + } + avm_usec_timer_mark(&test_timer); + const int elapsed_time_simd = + static_cast(avm_usec_timer_elapsed(&test_timer)); + + printf( + "c_time=%d \t simd_time=%d \t " + "Scaling=%lf \n", + elapsed_time_c, elapsed_time_simd, + (static_cast(elapsed_time_c) / elapsed_time_simd)); +} + +TEST_P(InterpCubicTest, CheckOutput) { CheckOutput(); } + +TEST_P(InterpCubicTest, DISABLED_Speed) { SpeedTest(); } + +#if HAVE_SSE2 +INSTANTIATE_TEST_SUITE_P(SSE2, InterpCubicTest, + ::testing::Values(av2_interp_cubic_rate_dist_sse2)); +#endif // HAVE_SSE2 + +} // namespace diff --git a/test/test.cmake b/test/test.cmake index b5d3b6b948..e2eed9ff56 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -221,6 +221,7 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/horver_correlation_test.cc" "${AVM_ROOT}/test/masked_sad_test.cc" "${AVM_ROOT}/test/masked_variance_test.cc" + "${AVM_ROOT}/test/model_rd_test.cc" "${AVM_ROOT}/test/motion_vector_test.cc" "${AVM_ROOT}/test/noise_model_test.cc" "${AVM_ROOT}/test/quantize_func_test.cc" From a8999fdec16e53a3a3b9ae2480de39e586e029ae Mon Sep 17 00:00:00 2001 From: linzhen-beep Date: Mon, 27 Jul 2026 16:15:13 -0400 Subject: [PATCH 083/205] Transform partition encoder speedup (#5165) Tweak the speed feature 'restrict_tx_partition_type_search'. Anchor: 41fc9bf31dcbecb6d6943441fe3e5be0962ff70c Test condition: CTC, RA, 33 frames, speed 1 ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.07% | 0.04% | 0.04% | 0.07% | 96.91% | | A2 | 0.05% | 0.03% | 0.22% | 0.05% | 96.22% | |avg wo b2| 0.06% | 0.04% | -0.02% | 0.06% | 96.24% | +---------+--------+--------+--------+--------+----------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 842316cf65..df570661b1 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -1340,6 +1340,7 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { if (cpi->oxcf.mode == GOOD && speed >= 0) { const int qindex_thresh = 135 + qindex_offset; const int qindex_thresh2 = 113 + qindex_offset; + const int qindex_thresh4 = 160 + qindex_offset; if (cpi->oxcf.gf_cfg.lag_in_frames == 0) { if (cm->quant_params.base_qindex <= (frame_is_intra_only(&cpi->common) ? qindex_thresh2 @@ -1347,7 +1348,8 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { sf->tx_sf.restrict_tx_partition_type_search = 2; } } else { - if (cm->quant_params.base_qindex <= qindex_thresh2) { + if (cm->quant_params.base_qindex <= + ((speed < 1) ? qindex_thresh2 : qindex_thresh4)) { sf->tx_sf.restrict_tx_partition_type_search = 1; } } From d5d4752c11f51cea4f9714fc04603d6509a7a306 Mon Sep 17 00:00:00 2001 From: kslu-aom Date: Mon, 27 Jul 2026 13:20:54 -0700 Subject: [PATCH 084/205] Pruning compound reference frame search in speed >= 1 (#5163) Introduce a speed feature for speed >= 1 to 1. Allow only one same reference compound (0,0) and disallow (1,1) 2. Define a priority array for compound reference pairs based on selection frequency, and only allow the top 2 in the array for all compound modes other than NEAR_NEARMV and NEAR_NEARMV_OPTFLOW The macro SAME_REF_COMPOUND_PRUNE in entropymode.h is renamed and moved to encoder.c because it is only used by the encoder. RA 33 frames, speed 1 Anchor: 8fbe5622b2 +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | +0.01% | +0.06% | -0.05% | +0.01% | 97.9% | 100.0% | | A2 | +0.04% | +0.00% | +0.35% | +0.04% | 97.4% | 100.6% | | Avg | +0.03% | +0.02% | +0.23% | +0.03% | 97.6% | 100.4% | +---------+--------+--------+--------+--------+----------+----------+ --- av2/common/entropymode.h | 2 -- av2/encoder/encoder.c | 3 ++- av2/encoder/rdopt.c | 34 ++++++++++++++++++++++++++++++++++ av2/encoder/speed_features.c | 7 +++++++ av2/encoder/speed_features.h | 7 +++++++ 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/av2/common/entropymode.h b/av2/common/entropymode.h index f25e1061be..bc8d691bc1 100644 --- a/av2/common/entropymode.h +++ b/av2/common/entropymode.h @@ -46,8 +46,6 @@ extern "C" { #define COMPREF_BIT_TYPES 2 #define RANKED_REF0_TO_PRUNE 3 -// The number of reference pictures for the same reference compound mode -#define SAME_REF_COMPOUND_PRUNE 2 #define MAX_REFS_ARF 4 #define WIENERNS_4PART_CTX_MAX 1 diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index 2f922fc768..113f325006 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -99,6 +99,7 @@ #define DEF_MAX_DRL_REFMVS 4 #define DEF_MAX_DRL_REFBVS 4 +#define NUM_SAME_REF_COMPOUND 2 #if CONFIG_ENTROPY_STATS FRAME_COUNTS aggregate_fc; #endif // CONFIG_ENTROPY_STATS @@ -481,7 +482,7 @@ void av2_init_seq_coding_tools(AV2_COMP *cpi, SequenceHeader *seq, // Disable frame by frame update for now. Can be changed later. seq->allow_frame_max_bvp_drl_bits = 0; seq->num_same_ref_compound = - seq->single_picture_header_flag ? 0 : SAME_REF_COMPOUND_PRUNE; + seq->single_picture_header_flag ? 0 : NUM_SAME_REF_COMPOUND; seq->max_frame_width = frm_dim_cfg->forced_max_frame_width ? frm_dim_cfg->forced_max_frame_width diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index ed751ee8e1..789d549e58 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -2264,6 +2264,35 @@ static AVM_INLINE void update_inter_mode_rd(HandleInterModeArgs *args, if (rd < *p) *p = rd; } +// Priority list of cross compound reference pairs ordered based on selection +// frequency. +static const int comp_ref_priority[15][2] = { + { 0, 1 }, { 0, 2 }, { 0, 3 }, { 1, 2 }, { 0, 4 }, + { 0, 5 }, { 2, 3 }, { 1, 4 }, { 1, 3 }, { 1, 5 }, + { 2, 5 }, { 0, 6 }, { 1, 6 }, { 2, 4 }, { 2, 6 }, +}; + +// Returns 1 if a compound reference pair (ref_frame, second_ref_frame) should +// be pruned based on the reduce_comp_refs speed feature limit. +static AVM_INLINE int prune_comp_ref_by_priority( + const INTER_MODE_SPEED_FEATURES *inter_sf, PREDICTION_MODE mode, + int ref_frame, int second_ref_frame) { + const int reduce_comp_refs = inter_sf->reduce_comp_refs; + if (!reduce_comp_refs || ref_frame == second_ref_frame) return 0; + + // In compound modes other than NEAR_NEARMV and NEAR_NEARMV_OPTFLOW, search + // top-N compound reference pairs in the priority list. + if (mode == NEAR_NEARMV || mode == NEAR_NEARMV_OPTFLOW) return 0; + const int limit = AVMMIN(reduce_comp_refs, 15); + for (int ref_idx = 0; ref_idx < limit; ++ref_idx) { + if (comp_ref_priority[ref_idx][0] == ref_frame && + comp_ref_priority[ref_idx][1] == second_ref_frame) { + return 0; + } + } + return 1; +} + // Returns 1 if a single-ref mode (e.g. NEWMV or GLOBALMV) for this ref frame // should be skipped because the matching reference RD is not within // (1 / slack_denom) of the best reference RD across all ref frames. Decision @@ -9174,6 +9203,11 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, if (comp_pred && !(cm->ref_frame_flags & (1 << second_ref_frame))) continue; + if (comp_pred && prune_comp_ref_by_priority(&sf->inter_sf, this_mode, + ref_frame, second_ref_frame)) { + continue; + } + const MV_REFERENCE_FRAME ref_frames[2] = { ref_frame, second_ref_frame }; init_mbmi(mbmi, this_mode, ref_frames, cm, xd, xd->sbi); mbmi->fsc_mode[PLANE_TYPE_Y] = 0; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index df570661b1..a513df4470 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -344,6 +344,7 @@ static void set_good_speed_features_framesize_independent( // TODO (Yeqing Wu): need to be tuned for speed > 1. sf->inter_sf.skip_compound_prune_top_refs_num_ref0 = 1; sf->inter_sf.skip_compound_prune_top_refs_num_ref1 = 2; + sf->inter_sf.reduce_comp_refs = 2; sf->inter_sf.disable_switchable_refinemv = 1; sf->inter_sf.prune_refinemv_by_ref_idx = 1; sf->inter_sf.prune_interintra_by_ref_idx = 1; @@ -756,6 +757,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->reduce_inter_modes = 0; inter_sf->alt_ref_search_fp = 0; inter_sf->disable_switchable_refinemv = 0; + inter_sf->reduce_comp_refs = 0; inter_sf->selective_ref_frame = 0; inter_sf->prune_newmv_modes_using_prior_rd = 0; inter_sf->share_motion_mode_prune_pool = 0; @@ -1121,6 +1123,11 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { cpi->common.seq_params.enable_masked_compound &= !sf->inter_sf.disable_masked_comp; + if (sf->inter_sf.reduce_comp_refs) { + cpi->common.seq_params.num_same_ref_compound = + AVMMIN(cpi->common.seq_params.num_same_ref_compound, 1); + } + if (sf->intra_sf.skip_intra_dip_search) { cpi->common.seq_params.enable_intra_dip = 0; } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index b130efaf37..706ff724eb 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -582,6 +582,13 @@ typedef struct INTER_MODE_SPEED_FEATURES { // 2 implies prune horiz, vert and extended partition int prune_ref_frames; + // When set to N>0, this flag limits the maximum number of compound + // reference frame combinations evaluated in the RD search. For all compound + // modes, same reference compound is restricted to (0,0). For non-NEAR_NEARMV + // and non-NEAR_NEARMV_OPTFLOW modes, the evaluation is limited to top N + // compound reference combinations in priority order. + int reduce_comp_refs; + // Prune reference frames for ALTREF int alt_ref_search_fp; From 802013f4b0d2a0b4866a25e120fa3341308c609a Mon Sep 17 00:00:00 2001 From: arnabdey-ittiam Date: Tue, 28 Jul 2026 01:55:37 +0530 Subject: [PATCH 085/205] Add macro for maximum qp selection (#5145) This change adds a macro `MAXQ_FOR_GIVEN_BIT_DEPTH()` and replaces the ternary operators used to compute max-qp using the macro. No stats changed. --- av2/common/av2_common_int.h | 5 +++++ av2/common/quant_common.c | 15 ++++----------- av2/decoder/decodemv.c | 4 +--- av2/encoder/aq_cyclicrefresh.c | 13 +++---------- av2/encoder/encodeframe_utils.c | 5 +---- av2/encoder/ratectrl.c | 4 +--- av2/encoder/rd.c | 9 ++------- 7 files changed, 17 insertions(+), 38 deletions(-) diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index ba6514b682..863a65b781 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -103,6 +103,11 @@ extern "C" { #define MIN_BSIZE_WARP_DELTA 8 +#define MAXQ_FOR_GIVEN_BIT_DEPTH(bit_depth) \ + ((bit_depth) == AVM_BITS_8 ? MAXQ_8_BITS \ + : (bit_depth) == AVM_BITS_10 ? MAXQ_10_BITS \ + : MAXQ_12_BITS) + /*!\cond */ #if CONFIG_PARAKIT_COLLECT_DATA diff --git a/av2/common/quant_common.c b/av2/common/quant_common.c index ed86343ca7..14b38e6d66 100644 --- a/av2/common/quant_common.c +++ b/av2/common/quant_common.c @@ -99,9 +99,7 @@ int av2_q_clamped(int qindex, int delta, int base_dc_delta_q, q_clamped = 0; else q_clamped = clamp(qindex + base_dc_delta_q + delta, 1, - bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + MAXQ_FOR_GIVEN_BIT_DEPTH(bit_depth)); return q_clamped; } // Add the deltaq offset value @@ -142,10 +140,8 @@ static int32_t get_q(int qindex, int delta, avm_bit_depth_t bit_depth) { return ac_qlookup_QTX[0]; } - const int q_clamped = clamp(qindex + delta, 1, - bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + const int q_clamped = + clamp(qindex + delta, 1, MAXQ_FOR_GIVEN_BIT_DEPTH(bit_depth)); return qlookup(q_clamped); } @@ -165,10 +161,7 @@ int av2_get_qindex(const struct segmentation *seg, int segment_id, const int data = get_segdata(seg, segment_id, SEG_LVL_ALT_Q); const int seg_qindex = base_qindex + data; - return clamp(seg_qindex, 0, - bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + return clamp(seg_qindex, 0, MAXQ_FOR_GIVEN_BIT_DEPTH(bit_depth)); } else { return base_qindex; } diff --git a/av2/decoder/decodemv.c b/av2/decoder/decodemv.c index 03dc9055e3..51919c2170 100644 --- a/av2/decoder/decodemv.c +++ b/av2/decoder/decodemv.c @@ -1497,9 +1497,7 @@ static void read_delta_q_params(AV2_COMMON *const cm, MACROBLOCKD *const xd, /* Normative: Clamp to [1,MAXQ] to not interfere with lossless mode */ xd->current_base_qindex = clamp(xd->current_base_qindex, 1, - cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + MAXQ_FOR_GIVEN_BIT_DEPTH(cm->seq_params.bit_depth)); } } diff --git a/av2/encoder/aq_cyclicrefresh.c b/av2/encoder/aq_cyclicrefresh.c index b94a0e90e7..7e3cf8a3f0 100644 --- a/av2/encoder/aq_cyclicrefresh.c +++ b/av2/encoder/aq_cyclicrefresh.c @@ -44,9 +44,7 @@ CYCLIC_REFRESH *av2_cyclic_refresh_alloc(int mi_rows, int mi_cols, : bit_depth == AVM_BITS_10 ? (MAXQ_10_BITS <= (QINDEX_RANGE_10_BITS - 1)) : (MAXQ_12_BITS <= (QINDEX_RANGE_12_BITS - 1))); - const uint16_t qinit = bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS; + const uint16_t qinit = MAXQ_FOR_GIVEN_BIT_DEPTH(bit_depth); for (int i = 0; i < mi_rows * mi_cols; ++i) cr->last_coded_q_map[i] = qinit; cr->avg_frame_low_motion = 0.0; @@ -428,9 +426,7 @@ void av2_cyclic_refresh_setup(AV2_COMP *const cpi) { if (cm->current_frame.frame_type == KEY_FRAME) { for (int i = 0; i <= (cm->mi_params.mi_rows * cm->mi_params.mi_cols); i++) cr->last_coded_q_map[i] = - cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS; + MAXQ_FOR_GIVEN_BIT_DEPTH(cm->seq_params.bit_depth); cr->sb_index = 0; } @@ -477,10 +473,7 @@ void av2_cyclic_refresh_setup(AV2_COMP *const cpi) { const int qindex2 = clamp( quant_params->base_qindex + quant_params->y_dc_delta_q + qindex_delta, - 0, - cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + 0, MAXQ_FOR_GIVEN_BIT_DEPTH(cm->seq_params.bit_depth)); cr->rdmult = av2_compute_rd_mult(cpi, qindex2); diff --git a/av2/encoder/encodeframe_utils.c b/av2/encoder/encodeframe_utils.c index 64df5e5c7d..b1c0757b66 100644 --- a/av2/encoder/encodeframe_utils.c +++ b/av2/encoder/encodeframe_utils.c @@ -1077,10 +1077,7 @@ int av2_get_q_for_deltaq_objective(AV2_COMP *const cpi, BLOCK_SIZE bsize, offset = AVMMAX(offset, -delta_q_info->delta_q_res * 9 + 1); int qindex = cm->quant_params.base_qindex + offset; - qindex = - AVMMIN(qindex, cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + qindex = AVMMIN(qindex, MAXQ_FOR_GIVEN_BIT_DEPTH(cm->seq_params.bit_depth)); qindex = AVMMAX(qindex, MINQ); return qindex; diff --git a/av2/encoder/ratectrl.c b/av2/encoder/ratectrl.c index 6e580daedf..bf6814e51c 100644 --- a/av2/encoder/ratectrl.c +++ b/av2/encoder/ratectrl.c @@ -1078,9 +1078,7 @@ static int apply_tcq_qp_offset(const AV2_COMP *cpi, int qp_tcq) { } else { tcq_qp_offset_shift = 0; } - int max_qp = bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS; + int max_qp = MAXQ_FOR_GIVEN_BIT_DEPTH(bit_depth); return clamp(qp_tcq + tcq_qp_offset_shift, 0, max_qp); } diff --git a/av2/encoder/rd.c b/av2/encoder/rd.c index dd6dd866f5..ad5f41d65b 100644 --- a/av2/encoder/rd.c +++ b/av2/encoder/rd.c @@ -701,9 +701,7 @@ int av2_get_deltaq_offset(const AV2_COMP *cpi, int qindex, double beta) { int newq = (int)rint(q / sqrt(beta)); int orig_qindex = qindex; const int max_qindex = - cpi->common.seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cpi->common.seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS; + MAXQ_FOR_GIVEN_BIT_DEPTH(cpi->common.seq_params.bit_depth); if (newq < q) { do { qindex--; @@ -811,10 +809,7 @@ static void set_block_thresholds(const AV2_COMMON *cm, RD_OPT *rd) { clamp(av2_get_qindex(&cm->seg, segment_id, cm->quant_params.base_qindex, cm->seq_params.bit_depth) + cm->quant_params.y_dc_delta_q, - 0, - cm->seq_params.bit_depth == AVM_BITS_8 ? MAXQ_8_BITS - : cm->seq_params.bit_depth == AVM_BITS_10 ? MAXQ_10_BITS - : MAXQ_12_BITS); + 0, MAXQ_FOR_GIVEN_BIT_DEPTH(cm->seq_params.bit_depth)); const int q = compute_rd_thresh_factor( qindex, cm->seq_params.base_y_dc_delta_q, cm->seq_params.bit_depth); From b17b42a230f0a4e55eb3e7a6de75023b712bea83 Mon Sep 17 00:00:00 2001 From: leolzhao Date: Mon, 27 Jul 2026 16:31:12 -0700 Subject: [PATCH 086/205] Fast method for AMVD with newmv mode (#5166) Add a tid based fast method for AMVD under newmv mode. The results are tested on top of commit 5c2906938fcc38504. Class A1 and A2 results are llisted below. ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.07% | -0.12% | -0.03% | 0.05% | 98.2% | | A2 | 0.06% | 00.14% | -0.24% | 0.05% | 97.9% | +---------+--------+--------+--------+--------+----------+ ``` STATS_CHANGED --- av2/encoder/rdopt.c | 7 +++++++ av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 789d549e58..931917981b 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -9260,6 +9260,13 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, continue; } + if (sf->inter_sf.prune_amvd_newmv && + cm->current_frame.pyramid_level >= 4 && (mbmi->mode == NEWMV)) { + if (mbmi->use_amvd && search_state.best_mbmode.mode != mbmi->mode) { + continue; + } + } + // Skip single-ref NEWMV / WARP_NEWMV when prior-mode RD for this // ref frame is far from the best across all refs. See // prune_newmv_modes_by_prior_rd() for source selection and diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index a513df4470..955edb8e2d 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -383,6 +383,7 @@ static void set_good_speed_features_framesize_independent( // Cap the DRL depth for a fresh single-ref NEWMV search; reuse the // nearest searched result beyond the cap. sf->mv_sf.newmv_drl_search_limit = 2; + sf->inter_sf.prune_amvd_newmv = 1; sf->tx_sf.tx_type_search.skip_tx_search = 1; sf->tx_sf.tx_type_search.eob_adapt_skip_tx_search = true; @@ -800,6 +801,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->skip_mode_eval_based_on_rate_cost = 0; inter_sf->reuse_erp_mode_flag = 0; inter_sf->prune_warpmv_prob_thresh = 32; + inter_sf->prune_amvd_newmv = 0; inter_sf->enable_enhanced_inter_mode_cache_reuse = 0; } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 706ff724eb..4ba658bd9e 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -766,6 +766,11 @@ typedef struct INTER_MODE_SPEED_FEATURES { // 0: original cache reuse logic. // 1: enhanced cache reuse logic (more modes are searched). int enable_enhanced_inter_mode_cache_reuse; + + // When set, skip AMVD evaluation for NEWMV if the + // current best mode is not the same mode as the one being evaluated, because + // AMVD on top of these modes is unlikely to win over the non-AMVD best mode. + int prune_amvd_newmv; } INTER_MODE_SPEED_FEATURES; typedef struct INTERP_FILTER_SPEED_FEATURES { From a4c1b1f4e924cfd7ee6276113a9c31bc8137f8e3 Mon Sep 17 00:00:00 2001 From: jadhuran Date: Mon, 27 Jul 2026 18:36:31 -0500 Subject: [PATCH 087/205] Skip AMVD modes for NEAR NEWMV, NEW NEARMV modes (#5167) Skip AMVD modes for NEAR NEWMV, NEW NEARMV, NEAR NEWMV OPFL and NEW NEARMV OPFL Skip AMVD modes when tid level is greater than 3 Results: Anchor: 0d25d5803a23907057f2ef018462425bc823a9c2 ``` +---------+-------+-------+--------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+-------+-------+--------+-------+----------+----------+ | A1 | 0.06% | 0.09% | 0.17% | 0.07% | 97.6% | 99.7% | | A2 | 0.04% | 0.13% | -0.04% | 0.04% | 97.1% | 101.3% | +---------+-------+-------+--------+-------+----------+----------+ ``` --- av2/encoder/rdopt.c | 3 +++ av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 931917981b..af935eb8de 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -9260,6 +9260,9 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, continue; } + if (sf->inter_sf.skip_amvd_new_near_near_new_modes && amvd_inverted && + mbmi->use_amvd && cm->current_frame.pyramid_level > 3) + continue; if (sf->inter_sf.prune_amvd_newmv && cm->current_frame.pyramid_level >= 4 && (mbmi->mode == NEWMV)) { if (mbmi->use_amvd && search_state.best_mbmode.mode != mbmi->mode) { diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 955edb8e2d..521ca04694 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -341,6 +341,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_newmv_modes_using_prior_rd = 1; sf->inter_sf.share_motion_mode_prune_pool = 1; sf->inter_sf.prune_compound_using_single_ref = 1; + sf->inter_sf.skip_amvd_new_near_near_new_modes = 1; // TODO (Yeqing Wu): need to be tuned for speed > 1. sf->inter_sf.skip_compound_prune_top_refs_num_ref0 = 1; sf->inter_sf.skip_compound_prune_top_refs_num_ref1 = 2; @@ -777,6 +778,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->skip_repeated_full_newmv = 0; inter_sf->inter_mode_rd_model_estimation = 0; inter_sf->prune_compound_using_single_ref = 0; + inter_sf->skip_amvd_new_near_near_new_modes = 0; inter_sf->skip_compound_prune_top_refs_num_ref0 = 0; inter_sf->skip_compound_prune_top_refs_num_ref1 = 0; inter_sf->prune_refinemv_by_ref_idx = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 4ba658bd9e..92bd8a363e 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -656,6 +656,10 @@ typedef struct INTER_MODE_SPEED_FEATURES { // the single reference modes, it is one of the two best performers. int prune_compound_using_single_ref; + // skip amvd for new near and near new modes for both regular + // and opfl modes by tid + int skip_amvd_new_near_near_new_modes; + // Top-ref0 / top-ref1 cutoffs used inside the prune_compound_using_single_ref // pruning. Compound pairs with refs[0] < // skip_compound_prune_top_refs_num_ref0 AND refs[1] < From 888d484386209061b115e17ba64775601d926239 Mon Sep 17 00:00:00 2001 From: jadhuran Date: Tue, 28 Jul 2026 00:53:17 -0500 Subject: [PATCH 088/205] Add warp interintra in winner based on wrl index (#5164) Search warp interintra in rough mode when wrl index is greater than or equal to 2 Search warp interintra in winner mode for remaing wrl indices if warp interintra is selected in rough mode Search warp interintra in winner mode for warpmv with mvd flag if warp interintra is selected in rough mode with warpmv with mvd flag off Anchor: ef64fa8137f58586f3e4c1a8ffcb34872e7f3c0d Results: ``` +---------+-------+--------+-------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+-------+--------+-------+-------+----------+----------+ | A1 | 0.07% | -0.01% | 0.23% | 0.07% | 97.6% | 100.1% | | A2 | 0.05% | -0.03% | 0.28% | 0.06% | 96.8% | 99.0% | +---------+-------+--------+-------+-------+----------+----------+ ``` --- av2/encoder/rdopt.c | 17 ++++++++++++++--- av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 3 ++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index af935eb8de..954466216b 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -3341,6 +3341,14 @@ static int64_t motion_mode_rd( warp_inter_intra++) { for (int warp_ref_idx = 0; warp_ref_idx < warp_ref_idx_limit; warp_ref_idx++) { + // Search warp interintra in winner mode for remaing wrl indices + // if warp interintra is selected in rough mode + if (cpi->sf.inter_sf.enable_warp_inter_intra_in_winner && + (eval_motion_mode != (warp_inter_intra && warp_ref_idx < 2))) + continue; + assert(IMPLIES(cpi->sf.inter_sf.enable_warp_inter_intra_in_winner && + !eval_motion_mode, + (!warp_inter_intra || warp_ref_idx >= 2))); for (int warpmv_with_mvd_flag = 0; warpmv_with_mvd_flag < 2; warpmv_with_mvd_flag++) { const MotionModeTrialParams trial = { @@ -8443,10 +8451,13 @@ static const unsigned int num_winner_motion_modes[3] = { 0, 10, 6 }; // Returns true if a mode is added to the winner mode check. static AVM_INLINE int is_check_in_winner(const AV2_COMP *cpi, const MB_MODE_INFO *const mbmi) { - if (!cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode) return 0; PREDICTION_MODE this_mode = mbmi->mode; - - if (this_mode == WARP_NEWMV) return 1; + if (cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode) { + if (this_mode == WARP_NEWMV) return 1; + } + if (cpi->sf.inter_sf.enable_warp_inter_intra_in_winner) { + if (this_mode == WARPMV && mbmi->warp_inter_intra) return 1; + } return 0; } // Adds a motion mode to the candidate list for motion_mode_for_winner_cand diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 521ca04694..425e40f86e 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -394,6 +394,7 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.adaptive_tcq_threshold_qidx = 185; sf->inter_sf.enable_enhanced_inter_mode_cache_reuse = 1; sf->inter_sf.skip_temporary_pred_for_opfl = 1; + sf->inter_sf.enable_warp_inter_intra_in_winner = 1; // Enable the optimized inter-SDP fast method (requires >=1 intra coded // block, prunes when inter-mode ratio exceeds 50%, and early skips when @@ -756,6 +757,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->adaptive_rd_thresh = 0; inter_sf->model_based_post_interp_filter_breakout = 0; inter_sf->skip_temporary_pred_for_opfl = 0; + inter_sf->enable_warp_inter_intra_in_winner = 0; inter_sf->reduce_inter_modes = 0; inter_sf->alt_ref_search_fp = 0; inter_sf->disable_switchable_refinemv = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 92bd8a363e..9b79d50fc3 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -745,7 +745,8 @@ typedef struct INTER_MODE_SPEED_FEATURES { // skip temporary predictions for opfl modes int skip_temporary_pred_for_opfl; - + // Enable warp inter intra in winner mode. + int enable_warp_inter_intra_in_winner; // Reuse compound type rd decision when exact match is found // 0: No reuse // 1: Reuse the compound type rd data From 01d2e36a2a9da84247a2a321ae270a8c1824775a Mon Sep 17 00:00:00 2001 From: Mudassir Galaganath Date: Tue, 28 Jul 2026 21:36:10 +0530 Subject: [PATCH 089/205] Improve readability of search_tx_type() (#5160) - Abstract distortion calculation into helper function get_tx_blk_distortion() returning RD_STATS. - Introduce get_ist_max_set_id() and get_ist_set_id() helper functions. - Improve readability of prune_rectangular_tx_type() by removing redundant tx_mask_32[][] lookup table. - Eliminate redundant call to av2_get_ext_tx_set_type() in search_tx_type() by reusing txfm_param.tx_set_type. - Add early loop exit for FSC mode when transform dimensions exceed FSC_MAXWIDTH / FSC_MAXHEIGHT on luma plane. No stats changed. --- av2/encoder/tx_search.c | 331 ++++++++++++++++++++++------------------ av2/encoder/tx_search.h | 3 + 2 files changed, 182 insertions(+), 152 deletions(-) diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 8ba4d22809..0fd431cb61 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -1713,11 +1713,17 @@ static void prune_tx_2D(MACROBLOCK *x, BLOCK_SIZE bsize, TX_SIZE tx_size, *allowed_tx_mask = allow_bitmask; } -static INLINE uint16_t +static AVM_INLINE uint16_t get_tx_mask(const AV2_COMP *cpi, MACROBLOCK *x, int plane, int block, int blk_row, int blk_col, BLOCK_SIZE plane_bsize, TX_SIZE tx_size, const TXB_CTX *const txb_ctx, FAST_TX_SEARCH_MODE ftxs_mode, - int64_t ref_best_rd, TX_TYPE *allowed_txk_types, int *txk_map) { + int64_t ref_best_rd, int dc_only_blk, TX_TYPE *allowed_txk_types, + int *txk_map) { + if (dc_only_blk) { + *allowed_txk_types = DCT_DCT; + return ALLOW_TX_MASK(DCT_DCT); + } + const AV2_COMMON *cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; @@ -2146,6 +2152,41 @@ static AVM_INLINE bool prune_tx_search_by_eob( return false; } +// Returns the maximum number of IST set candidates to evaluate based on block +// properties. +static AVM_INLINE int get_ist_max_set_id(bool skip_stx, bool is_inter, int txw, + int txh, TX_TYPE primary_tx_type) { + if (skip_stx || is_inter) return 1; + const int max_set_id_ptx_type[4] = { IST_REDUCED_SEARCH_SET_SIZE, 1, 1, + IST_REDUCED_SET_SIZE }; + assert(primary_tx_type == DCT_DCT || primary_tx_type == ADST_ADST); + assert(IST_REDUCED_SEARCH_SET_SIZE <= IST_SET_SIZE); + return (txw < 8 || txh < 8) ? IST_REDUCED_SEARCH_SET_SIZE + : max_set_id_ptx_type[primary_tx_type]; +} + +// Maps candidate search set index to the actual IST set ID. +static AVM_INLINE uint8_t get_ist_set_id(int set_idx, bool is_inter, + PREDICTION_MODE intra_mode, int txw, + int txh, TX_TYPE primary_tx_type) { + if (is_inter) return (uint8_t)set_idx; + + const PREDICTION_MODE mode = AVMMIN(intra_mode, SMOOTH_H_PRED); + const int intra_stx_mode = stx_transpose_mapping[mode]; + if (txw < 8 || txh < 8) { + assert(set_idx < IST_REDUCED_SEARCH_SET_SIZE); + return ist_intra_stx_mapping[intra_stx_mode][set_idx]; + } else { + assert((primary_tx_type == DCT_DCT) ? set_idx < IST_REDUCED_SEARCH_SET_SIZE + : (primary_tx_type == ADST_ADST) ? set_idx < IST_REDUCED_SET_SIZE + : !set_idx); + if (primary_tx_type == ADST_ADST) + return ist_intra_stx_mapping_ADST_ADST[intra_stx_mode][set_idx]; + else + return ist_intra_stx_mapping[intra_stx_mode][set_idx]; + } +} + // Prune rectangular transform types for 32xN/Nx32 and 64xN/Nx64 blocks. static AVM_INLINE bool prune_rectangular_tx_type( int tx_idx, TxSetType tx_set_type, int plane, bool is_fsc, @@ -2153,12 +2194,6 @@ static AVM_INLINE bool prune_rectangular_tx_type( TX_TYPE *const primary_tx_type, TX_TYPE *const best_long_side_tx_type) { if (tx_set_type == EXT_TX_SET_LONG_SIDE_32 && plane == AVM_PLANE_Y && !is_fsc) { - // tx_mask_32[0:is_rect_horz==false, 1: is_rect_horz==true][0: - // long_side_tx_type==DCT_DCT: 1: long_side_tx_type==Identity] - const uint16_t tx_mask_32[2][2] = { - { 0x0425 & allowed_tx_mask, 0xAA00 & allowed_tx_mask }, - { 0x0813 & allowed_tx_mask, 0x5600 & allowed_tx_mask } - }; const TX_TYPE txk_map_rect_horz_32[TX_TYPES] = { DCT_DCT, V_DCT, ADST_DCT, DCT_ADST, ADST_ADST, FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, @@ -2174,14 +2209,23 @@ static AVM_INLINE bool prune_rectangular_tx_type( assert(tx_idx < TX_TYPES); *primary_tx_type = is_rect_horz ? txk_map_rect_horz_32[tx_idx] : txk_map_rect_vert_32[tx_idx]; - if (tx_idx == 2) { + + if (tx_idx == 2) *best_long_side_tx_type = get_primary_tx_type(best_tx_type); - } - if (tx_idx > 1 && - tx_mask_32[is_rect_horz][*best_long_side_tx_type != DCT_DCT] != 0 && - (!(tx_mask_32[is_rect_horz][*best_long_side_tx_type != DCT_DCT] & - (1 << *primary_tx_type)))) { - return true; + + if (tx_idx >= 2) { + if (!(ALLOW_TX_MASK(*primary_tx_type) & allowed_tx_mask)) return true; + const TX_TYPE_1D best_long_side_1d = + is_rect_horz ? htx_tab[*best_long_side_tx_type] + : vtx_tab[*best_long_side_tx_type]; + const TX_TYPE_1D cand_long_side_1d = + is_rect_horz ? htx_tab[*primary_tx_type] : vtx_tab[*primary_tx_type]; + + // Prune the current transform if its long side doesn't match with best + // long side. + if (cand_long_side_1d != best_long_side_1d) { + return true; + } } } @@ -2200,6 +2244,65 @@ static AVM_INLINE bool prune_rectangular_tx_type( return false; } +// Calculate distortion for a given transform block +static AVM_INLINE RD_STATS get_tx_blk_distortion( + const AV2_COMP *cpi, MACROBLOCK *x, int plane, int block, int blk_row, + int blk_col, TX_SIZE tx_size, int64_t block_sse, int eob, int dc_only_blk, + int fsc_mode_in, int use_transform_domain_distortion) { + RD_STATS this_rd_stats; + av2_invalid_rd_stats(&this_rd_stats); + + if (eob == 0) { + // When eob is 0, pixel domain distortion is more efficient and + // accurate. + this_rd_stats.dist = this_rd_stats.sse = block_sse; + } else if (dc_only_blk || (fsc_mode_in && plane == AVM_PLANE_Y)) { + this_rd_stats.sse = block_sse; + this_rd_stats.dist = + dist_block_px_domain(cpi, x, plane, block, blk_row, blk_col, tx_size); + } else if (use_transform_domain_distortion) { + dist_block_tx_domain(x, plane, block, tx_size, &this_rd_stats.dist, + &this_rd_stats.sse); + } else { + int64_t sse_diff = INT64_MAX; + // high_energy threshold assumes that every pixel within a txfm block + // has a residue energy of at least 25% of the maximum, i.e. 128 * 128 + // for 8 bit. + const int64_t high_energy_thresh = + ((int64_t)128 * 128 * tx_size_2d[tx_size]); + const int is_high_energy = (block_sse >= high_energy_thresh); + if (tx_size == TX_64X64 || is_high_energy) { + // Because 3 out 4 quadrants of transform coefficients are forced to + // zero, the inverse transform has a tendency to overflow. sse_diff + // is effectively the energy of those 3 quadrants, here we use it + // to decide if we should do pixel domain distortion. If the energy + // is mostly in first quadrant, then it is unlikely that we have + // overflow issue in inverse transform. + dist_block_tx_domain(x, plane, block, tx_size, &this_rd_stats.dist, + &this_rd_stats.sse); + sse_diff = block_sse - this_rd_stats.sse; + } + + if (tx_size != TX_64X64 || !is_high_energy || + (sse_diff * 2) < this_rd_stats.sse) { + const int64_t tx_domain_dist = this_rd_stats.dist; + this_rd_stats.dist = + dist_block_px_domain(cpi, x, plane, block, blk_row, blk_col, tx_size); + // For high energy blocks, occasionally, the pixel domain distortion + // can be artificially low due to clamping at reconstruction stage + // even when inverse transform output is hugely different from the + // actual residue. + if (is_high_energy && this_rd_stats.dist < tx_domain_dist) + this_rd_stats.dist = tx_domain_dist; + } else { + assert(sse_diff < INT64_MAX); + this_rd_stats.dist += sse_diff; + } + this_rd_stats.sse = block_sse; + } + return this_rd_stats; +} + // Search for the best transform type for a given transform block. // This function can be used for both inter and intra, both luma and chroma. static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, @@ -2286,16 +2389,9 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, } // Bit mask to indicate which transform types are allowed in the RD search. - uint16_t tx_mask; - - // Use DCT_DCT transform for DC only block. - if (dc_only_blk) - tx_mask = 1 << DCT_DCT; - else - tx_mask = get_tx_mask(cpi, x, plane, block, blk_row, blk_col, plane_bsize, - tx_size, txb_ctx, ftxs_mode, ref_best_rd, - &txk_allowed, txk_map); - const uint16_t allowed_tx_mask = tx_mask; + const uint16_t allowed_tx_mask = get_tx_mask( + cpi, x, plane, block, blk_row, blk_col, plane_bsize, tx_size, txb_ctx, + ftxs_mode, ref_best_rd, dc_only_blk, &txk_allowed, txk_map); block_sse = ROUND_POWER_OF_TWO(block_sse, (xd->bd - 8) * 2); block_mse_q8 = ROUND_POWER_OF_TWO(block_mse_q8, (xd->bd - 8) * 2); @@ -2355,11 +2451,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, cpi->oxcf.q_cfg.quant_b_adapt, &quant_param); bool eob_found = false; - const TxSetType tx_set_type = av2_get_ext_tx_set_type( - tx_size, is_inter, cm->features.reduced_tx_set_used); - const bool is_rect_horz = txw > txh; - TX_TYPE best_long_side_tx_type = DCT_DCT; const int is_border_block = get_visible_dimensions( @@ -2372,8 +2464,13 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, const int max_eob = av2_get_max_eob(tx_size); // Iterate through all transform type candidates. for (int tx_idx = 0; tx_idx < TX_TYPES; ++tx_idx) { + if (is_fsc && (txw > FSC_MAXWIDTH || txh > FSC_MAXHEIGHT) && + plane == AVM_PLANE_Y) { + break; + } + TX_TYPE primary_tx_type = (TX_TYPE)txk_map[tx_idx]; - if (prune_rectangular_tx_type(tx_idx, tx_set_type, plane, is_fsc, + if (prune_rectangular_tx_type(tx_idx, txfm_param.tx_set_type, plane, is_fsc, is_rect_horz, allowed_tx_mask, best_tx_type, &primary_tx_type, &best_long_side_tx_type)) { continue; @@ -2389,10 +2486,6 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, } } - if (is_fsc && (txw > FSC_MAXWIDTH || txh > FSC_MAXHEIGHT) && - plane == AVM_PLANE_Y) { - break; - } const int skip_trellis_in = skip_trellis; av2_update_trellisq(!skip_trellis_in, skip_trellis_in ? xform_quant_b : AV2_XFORM_QUANT_FP, @@ -2407,65 +2500,46 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, (is_inter ? (primary_tx_type != DCT_DCT || txw < 16 || txh < 16) : intra_mode >= PAETH_PRED) || dc_only_blk || (eob_found) || !xd->enable_ist); - int init_set_id = 0; + bool skip_idx = false; - int max_set_id = (skip_stx || is_inter) ? 1 : IST_SET_SIZE; - int max_set_id_ptx_type[4] = { IST_REDUCED_SEARCH_SET_SIZE, 1, 1, - IST_REDUCED_SET_SIZE }; - if (max_set_id == IST_SET_SIZE) { - assert(primary_tx_type == DCT_DCT || primary_tx_type == ADST_ADST); - max_set_id = (txw < 8 || txh < 8) ? IST_REDUCED_SEARCH_SET_SIZE - : max_set_id_ptx_type[primary_tx_type]; - } - for (int set_idx = init_set_id; set_idx < max_set_id; ++set_idx) { + const int max_set_id = + get_ist_max_set_id(skip_stx, is_inter, txw, txh, primary_tx_type); + assert(max_set_id < IST_SET_SIZE); + + for (int set_idx = 0; set_idx < max_set_id; ++set_idx) { txfm_param.sec_tx_set_idx = set_idx; - uint8_t set_id = set_idx; - if (!is_inter) { - const PREDICTION_MODE mode = AVMMIN(intra_mode, SMOOTH_H_PRED); - int intra_stx_mode = stx_transpose_mapping[mode]; - if (txw < 8 || txh < 8) { - assert(set_idx < IST_REDUCED_SEARCH_SET_SIZE); - set_id = ist_intra_stx_mapping[intra_stx_mode][set_idx]; - } else { - assert((primary_tx_type == DCT_DCT || primary_tx_type == ADST_ADST) - ? set_idx < max_set_id_ptx_type[primary_tx_type] - : !set_idx); - if (primary_tx_type == ADST_ADST) - set_id = ist_intra_stx_mapping_ADST_ADST[intra_stx_mode][set_idx]; - else - set_id = ist_intra_stx_mapping[intra_stx_mode][set_idx]; - } - } + const uint8_t set_id = get_ist_set_id(set_idx, is_inter, intra_mode, txw, + txh, primary_tx_type); + const int max_stx = xd->enable_ist && !(eob_found) ? STX_TYPES : 1; const int init_stx = (set_idx > 0) ? 1 : 0; for (int stx = init_stx; stx < max_stx; ++stx) { - TX_TYPE tx_type = primary_tx_type; if (eob_found) skip_stx = true; - uint16_t stx_set = 0; - if (skip_stx && stx) continue; - set_secondary_tx_type(&tx_type, stx); + TX_TYPE packed_tx_type = primary_tx_type; + set_secondary_tx_type(&packed_tx_type, stx); txfm_param.tx_type = primary_tx_type; txfm_param.sec_tx_type = stx; - stx_set = (primary_tx_type == ADST_ADST && stx) ? set_id + IST_SET_SIZE - : set_id; - set_secondary_tx_set(&tx_type, stx_set); + const uint16_t stx_set = (primary_tx_type == ADST_ADST && stx) + ? set_id + IST_SET_SIZE + : set_id; + set_secondary_tx_set(&packed_tx_type, stx_set); txfm_param.sec_tx_set = stx_set; + if (txw < 8 || txh < 8) - assert(stx_set < IST_4x4_SET_SIZE); + assert(txfm_param.sec_tx_set < IST_4x4_SET_SIZE); else - assert(stx_set < IST_8x8_SET_SIZE); - assert(tx_type < (1 << (PRIMARY_TX_BITS + SECONDARY_TX_BITS + - SECONDARY_TX_SET_BITS))); + assert(txfm_param.sec_tx_set < IST_8x8_SET_SIZE); + assert(packed_tx_type < (1 << (PRIMARY_TX_BITS + SECONDARY_TX_BITS + + SECONDARY_TX_SET_BITS))); if (av2_use_qmatrix(&cm->quant_params, xd, mbmi->segment_id)) { - av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, tx_type, - &quant_param); + av2_setup_qmatrix(&cm->quant_params, xd, plane, tx_size, + packed_tx_type, &quant_param); } - if (plane == AVM_PLANE_Y) xd->tx_type_map[tx_type_map_idx] = tx_type; - RD_STATS this_rd_stats; - av2_invalid_rd_stats(&this_rd_stats); + if (plane == AVM_PLANE_Y) + xd->tx_type_map[tx_type_map_idx] = packed_tx_type; int64_t sec_tx_sse_to_be_coded = INT64_MAX; int64_t *const sec_tx_sse_ptr = tx_sf->prune_tx_rd_eval_sec_tx_sse ? &sec_tx_sse_to_be_coded : NULL; @@ -2504,34 +2578,32 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, } } - const TX_CLASS tx_class = - tx_type_to_class[get_primary_tx_type(tx_type)]; - if (tcq_enable(cm->features.tcq_mode, is_lossless, plane, tx_class)) { + const TX_CLASS tx_class = tx_type_to_class[primary_tx_type]; + const bool use_tcq = tcq_enable(cpi->common.features.tcq_mode, + is_lossless, plane, tx_class); + if (use_tcq) { skip_trellis_based_on_satd[txfm_param.tx_type] = skip_trellis; - } else + } else { skip_trellis_based_on_satd[txfm_param.tx_type] = skip_trellis_opt_based_on_satd( x, &quant_param, plane, block, tx_size, cpi->oxcf.q_cfg.quant_b_adapt, qstep, txfm_params->coeff_opt_satd_threshold, skip_trellis_in, dc_only_blk); + } uint8_t fsc_mode_in = ((cm->seq_params.enable_fsc && is_fsc && plane == AVM_PLANE_Y) || - use_inter_fsc(cm, plane, tx_type, is_inter)); - int use_tcq = - tcq_enable(cpi->common.features.tcq_mode, - xd->lossless[xd->mi[0]->segment_id], plane, tx_class); + use_inter_fsc(cm, plane, packed_tx_type, is_inter)); const int use_tcq_deadzone_boost = use_tcq && quant_param.use_optimize_b && !fsc_mode_in && - cpi->sf.tx_sf.enable_adaptive_tcq_threshold && - cm->quant_params.base_qindex < - cpi->sf.tx_sf.adaptive_tcq_threshold_qidx; + tx_sf->enable_adaptive_tcq_threshold && + cm->quant_params.base_qindex < tx_sf->adaptive_tcq_threshold_qidx; av2_quant(use_tcq_deadzone_boost, x, plane, block, &txfm_param, &quant_param); + uint16_t *const eob = &mb_plane->eobs[block]; if (fsc_mode_in) { if (primary_tx_type == IDTX) { - uint16_t *const eob = &mb_plane->eobs[block]; if (*eob != 0) *eob = av2_get_max_eob(txfm_param.tx_size); } } @@ -2543,30 +2615,29 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // stx == 0 that quantized to all-zero can still win via skip // coding (bitstream signals the tx_type and elides the // coefficients). - uint16_t *const eob = &mb_plane->eobs[block]; if (prune_tx_search_by_eob(xd, blk_row, blk_col, tx_size, *eob, plane, is_inter, primary_tx_type, stx, &eob_found, tx_sf->prune_intra_ist_stx_by_zero_eob)) { continue; } if (fsc_mode_in && quant_param.use_optimize_b) { - av2_optimize_fsc(cpi, x, plane, block, tx_size, tx_type, txb_ctx, - &rate_cost); + av2_optimize_fsc(cpi, x, plane, block, tx_size, packed_tx_type, + txb_ctx, &rate_cost); } else if (quant_param.use_optimize_b) { - av2_optimize_b(cpi, x, plane, block, tx_size, tx_type, CCTX_NONE, - txb_ctx, &rate_cost); + av2_optimize_b(cpi, x, plane, block, tx_size, packed_tx_type, + CCTX_NONE, txb_ctx, &rate_cost); } else { - bool enable_parity_hiding = + const bool enable_parity_hiding = cm->features.allow_parity_hiding && !is_lossless && - plane == AVM_PLANE_Y && - ph_allowed_tx_types[get_primary_tx_type(tx_type)] && + plane == AVM_PLANE_Y && ph_allowed_tx_types[primary_tx_type] && (mb_plane->eobs[block] > PHTHRESH); if (enable_parity_hiding) - parity_hiding_trellis_off(cpi, x, plane, block, tx_size, tx_type); + parity_hiding_trellis_off(cpi, x, plane, block, tx_size, + packed_tx_type); rate_cost = - cost_coeffs(cm, x, plane, block, tx_size, tx_type, CCTX_NONE, - txb_ctx, cm->features.reduced_tx_set_used); + cost_coeffs(cm, x, plane, block, tx_size, packed_tx_type, + CCTX_NONE, txb_ctx, cm->features.reduced_tx_set_used); } // Post-trellis safety net: re-apply the same eob == 0 / eob == 1 // pre-skip logic in case trellis (RDOQ) adjusted the eob across @@ -2581,54 +2652,10 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // terminate early. if (RDCOST(x->rdmult, rate_cost, 0) > best_rd) continue; - // Calculate distortion. - if (eobs_ptr[block] == 0) { - // When eob is 0, pixel domain distortion is more efficient and - // accurate. - this_rd_stats.dist = this_rd_stats.sse = block_sse; - } else if (dc_only_blk || (fsc_mode_in && plane == AVM_PLANE_Y)) { - this_rd_stats.sse = block_sse; - this_rd_stats.dist = dist_block_px_domain(cpi, x, plane, block, - blk_row, blk_col, tx_size); - } else if (use_transform_domain_distortion) { - dist_block_tx_domain(x, plane, block, tx_size, &this_rd_stats.dist, - &this_rd_stats.sse); - } else { - int64_t sse_diff = INT64_MAX; - // High_energy threshold assumes that every pixel within a txfm block - // has a residue energy of at least 25% of the maximum, i.e. 128 * 128 - // for 8 bit. - const int64_t high_energy_thresh = - ((int64_t)128 * 128 * tx_size_2d[tx_size]); - const int is_high_energy = (block_sse >= high_energy_thresh); - if (tx_size == TX_64X64 || is_high_energy) { - // Because 3 out 4 quadrants of transform coefficients are forced to - // zero, the inverse transform has a tendency to overflow. sse_diff - // is effectively the energy of those 3 quadrants, here we use it - // to decide if we should do pixel domain distortion. If the energy - // is mostly in first quadrant, then it is unlikely that we have - // overflow issue in inverse transform. - dist_block_tx_domain(x, plane, block, tx_size, &this_rd_stats.dist, - &this_rd_stats.sse); - sse_diff = block_sse - this_rd_stats.sse; - } - if (tx_size != TX_64X64 || !is_high_energy || - (sse_diff * 2) < this_rd_stats.sse) { - const int64_t tx_domain_dist = this_rd_stats.dist; - this_rd_stats.dist = dist_block_px_domain( - cpi, x, plane, block, blk_row, blk_col, tx_size); - // For high energy blocks, occasionally, the pixel domain distortion - // can be artificially low due to clamping at reconstruction stage - // even when inverse transform output is hugely different from the - // actual residue. - if (is_high_energy && this_rd_stats.dist < tx_domain_dist) - this_rd_stats.dist = tx_domain_dist; - } else { - assert(sse_diff < INT64_MAX); - this_rd_stats.dist += sse_diff; - } - this_rd_stats.sse = block_sse; - } + RD_STATS this_rd_stats = get_tx_blk_distortion( + cpi, x, plane, block, blk_row, blk_col, tx_size, block_sse, + eobs_ptr[block], dc_only_blk, fsc_mode_in, + use_transform_domain_distortion); this_rd_stats.rate = rate_cost; @@ -2642,7 +2669,7 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, if (rd < best_rd) { best_rd = rd; *best_rd_stats = this_rd_stats; - best_tx_type = tx_type; + best_tx_type = packed_tx_type; best_txb_ctx = mb_plane->txb_entropy_ctx[block]; best_eob = mb_plane->eobs[block]; // Swap dqcoeff buffers. @@ -2654,13 +2681,13 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, #if CONFIG_COLLECT_RD_STATS == 1 if (plane == AVM_PLANE_Y) { PrintTransformUnitStats(cpi, x, &this_rd_stats, blk_row, blk_col, - plane_bsize, tx_size, tx_type, rd); + plane_bsize, tx_size, packed_tx_type, rd); } #endif // CONFIG_COLLECT_RD_STATS == 1 #if COLLECT_TX_SIZE_DATA - collect_tx_size_data(cpi, x, plane, blk_row, blk_col, plane_bsize, - tx_size, tx_type, rd); + record_tx_type_info(cpi, x, plane, block, plane_bsize, blk_row, blk_col, + tx_size, packed_tx_type, rd); #endif // COLLECT_TX_SIZE_DATA assert(tx_sf->adaptive_tx_type_search_idx < 6); diff --git a/av2/encoder/tx_search.h b/av2/encoder/tx_search.h index ccc316d6ba..8b804983f3 100644 --- a/av2/encoder/tx_search.h +++ b/av2/encoder/tx_search.h @@ -25,6 +25,9 @@ extern "C" { // Set this macro as 1 to collect data about tx size selection. #define COLLECT_TX_SIZE_DATA 0 +// Convert a transform type enum into a bitmask flag. +#define ALLOW_TX_MASK(tx) (1 << (tx)) + #if COLLECT_TX_SIZE_DATA #include #include "av2/encoder/random.h" From 1d12946b08e9cabfd30a139da14f32fd4bcf0b7a Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Tue, 28 Jul 2026 09:55:40 -0700 Subject: [PATCH 090/205] MLP intra mode pruning (#5162) * MLP intra mode pruning Replace HOG-based directional mode pruning with an MLP that predicts the top-5 most likely luma intra base modes per block. The 4-layer network (104->128->64->32->13) takes an 8x8 downsampled source patch, neighbor modes, QP, block size, and a 32-bin HOG histogram as inputs. Active in both all-intra (AI) and inter (RA/LD) frames; falls back to HOG for 4x4, 4x8, and 8x4 blocks. Enabled at speed >= 1 via sf.intra_sf.intra_pruning_with_mlp. Anchor: commit b4e5915 Performance of this change in isolation, Speed 1 (cpu-used=1), FG16 CTC (33 frames): AI: ``` +------------+-------+-------+-------+-------+---------+---------+ | Class | Y | Cb | Cr | wAvg | EncWall | DecWall | +------------+-------+-------+-------+-------+---------+---------+ | A1 | 0.14 | 0.05 | -0.02 | 0.13 | 91 | 101 | | A2 | 0.17 | 0.06 | -0.03 | 0.15 | 90 | 99 | +------------+-------+-------+-------+-------+---------+---------+ | Avg w/o B2 | 0.17 | -0.02 | 0.07 | 0.16 | 90 | 101 | +------------+-------+-------+-------+-------+---------+---------+ ``` RA: ``` +------------+-------+-------+-------+-------+---------+---------+ | Class | Y | Cb | Cr | wAvg | EncWall | DecWall | +------------+-------+-------+-------+-------+---------+---------+ | A1 | 0.13 | 0.17 | -0.58 | 0.09 | 97 | 100 | | A2 | 0.11 | 0.04 | 0.05 | 0.10 | 96 | 100 | +------------+-------+-------+-------+-------+---------+---------+ | Avg w/o B2 | 0.03 | 0.03 | -0.32 | 0.01 | 96 | 100 | +------------+-------+-------+-------+-------+---------+---------+ ``` STATS_CHANGED --- av2/av2.cmake | 6 + av2/common/av2_rtcd_defs.pl | 5 + av2/encoder/arm/neon/intra_mode_mlp_neon.c | 46 + av2/encoder/intra_mode_mlp.c | 140 + av2/encoder/intra_mode_mlp.h | 39 + av2/encoder/intra_mode_mlp_weights.h | 6063 ++++++++++++++++++++ av2/encoder/intra_mode_search.c | 128 +- av2/encoder/intra_mode_search.h | 34 +- av2/encoder/rdopt.c | 26 + av2/encoder/speed_features.c | 2 + av2/encoder/speed_features.h | 4 + av2/encoder/x86/intra_mode_mlp_avx2.c | 56 + av2/encoder/x86/intra_mode_mlp_sse2.c | 46 + test/av2_intra_mlp_layer_test.cc | 110 + test/intra_mode_mlp_test.cc | 239 + test/test.cmake | 2 + 16 files changed, 6925 insertions(+), 21 deletions(-) create mode 100644 av2/encoder/arm/neon/intra_mode_mlp_neon.c create mode 100644 av2/encoder/intra_mode_mlp.c create mode 100644 av2/encoder/intra_mode_mlp.h create mode 100644 av2/encoder/intra_mode_mlp_weights.h create mode 100644 av2/encoder/x86/intra_mode_mlp_avx2.c create mode 100644 av2/encoder/x86/intra_mode_mlp_sse2.c create mode 100644 test/av2_intra_mlp_layer_test.cc create mode 100644 test/intra_mode_mlp_test.cc diff --git a/av2/av2.cmake b/av2/av2.cmake index 3a3d95266d..5ed3a4a650 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -291,6 +291,9 @@ list( "${AVM_ROOT}/av2/encoder/intra_mode_search.c" "${AVM_ROOT}/av2/encoder/intra_mode_search.h" "${AVM_ROOT}/av2/encoder/intra_mode_search_utils.h" + "${AVM_ROOT}/av2/encoder/intra_mode_mlp.c" + "${AVM_ROOT}/av2/encoder/intra_mode_mlp.h" + "${AVM_ROOT}/av2/encoder/intra_mode_mlp_weights.h" "${AVM_ROOT}/av2/encoder/wedge_utils.c" "${AVM_ROOT}/av2/encoder/av2_noise_estimate.c" "${AVM_ROOT}/av2/encoder/av2_noise_estimate.h" @@ -396,6 +399,7 @@ list( "${AVM_ROOT}/av2/encoder/x86/encodetxb_sse2.c" "${AVM_ROOT}/av2/encoder/x86/highbd_block_error_intrin_sse2.c" "${AVM_ROOT}/av2/encoder/x86/highbd_temporal_filter_sse2.c" + "${AVM_ROOT}/av2/encoder/x86/intra_mode_mlp_sse2.c" "${AVM_ROOT}/av2/encoder/x86/model_rd_sse2.c" "${AVM_ROOT}/av2/encoder/x86/wedge_utils_sse2.c") @@ -419,6 +423,7 @@ list( "${AVM_ROOT}/av2/encoder/x86/highbd_fwd_txfm_avx2.c" "${AVM_ROOT}/av2/encoder/x86/wedge_utils_avx2.c" "${AVM_ROOT}/av2/encoder/x86/encodetxb_avx2.c" + "${AVM_ROOT}/av2/encoder/x86/intra_mode_mlp_avx2.c" "${AVM_ROOT}/av2/encoder/x86/rdopt_avx2.c" "${AVM_ROOT}/av2/encoder/x86/pickrst_avx2.c") @@ -426,6 +431,7 @@ list( APPEND AVM_AV2_ENCODER_INTRIN_NEON "${AVM_ROOT}/av2/encoder/arm/neon/ml_neon.c" + "${AVM_ROOT}/av2/encoder/arm/neon/intra_mode_mlp_neon.c" "${AVM_ROOT}/av2/encoder/arm/neon/rdopt_neon.c" "${AVM_ROOT}/av2/encoder/arm/neon/encodetxb_neon.c" "${AVM_ROOT}/av2/encoder/arm/neon/hybrid_fwd_txfm_neon.c") diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index a92d1ee256..497298ad04 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -310,6 +310,11 @@ () if (avm_config("CONFIG_EXCLUDE_SIMD_MISMATCH") ne "yes") { specialize qw/av2_nn_predict sse3 neon/; } + + add_proto qw/void av2_intra_mlp_layer/, " const float *input, int in_dim, const float *weights, const float *bias, float *output, int out_dim, int apply_relu"; + if (avm_config("CONFIG_EXCLUDE_SIMD_MISMATCH") ne "yes") { + specialize qw/av2_intra_mlp_layer sse2 avx2 neon/; + } } # end encoder functions diff --git a/av2/encoder/arm/neon/intra_mode_mlp_neon.c b/av2/encoder/arm/neon/intra_mode_mlp_neon.c new file mode 100644 index 0000000000..0118564f85 --- /dev/null +++ b/av2/encoder/arm/neon/intra_mode_mlp_neon.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include + +#include "config/av2_rtcd.h" + +// Processes 4 output neurons at a time. Assumes out_dim is a multiple of 4, +// true for all layer sizes this is called with (MLP_H1/H2/H3_DIM). +void av2_intra_mlp_layer_neon(const float *input, int in_dim, + const float *weights, const float *bias, + float *output, int out_dim, int apply_relu) { + for (int i = 0; i < out_dim; i += 4) { + float32x4_t sum0 = vld1q_f32(&bias[i]); + float32x4_t sum1 = vdupq_n_f32(0.0f); + int j = 0; + for (; j + 1 < in_dim; j += 2) { + float32x4_t w0 = vld1q_f32(&weights[(j + 0) * out_dim + i]); + float32x4_t w1 = vld1q_f32(&weights[(j + 1) * out_dim + i]); + float32x4_t f0 = vdupq_n_f32(input[j + 0]); + float32x4_t f1 = vdupq_n_f32(input[j + 1]); + sum0 = vmlaq_f32(sum0, f0, w0); + sum1 = vmlaq_f32(sum1, f1, w1); + } + sum0 = vaddq_f32(sum0, sum1); + for (; j < in_dim; j++) { + float32x4_t w = vld1q_f32(&weights[j * out_dim + i]); + float32x4_t f = vdupq_n_f32(input[j]); + sum0 = vmlaq_f32(sum0, f, w); + } + if (apply_relu) { + float32x4_t zero = vdupq_n_f32(0.0f); + sum0 = vmaxq_f32(sum0, zero); + } + vst1q_f32(&output[i], sum0); + } +} diff --git a/av2/encoder/intra_mode_mlp.c b/av2/encoder/intra_mode_mlp.c new file mode 100644 index 0000000000..61757dfcc5 --- /dev/null +++ b/av2/encoder/intra_mode_mlp.c @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this file, you can obtain it at + * aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include + +#include "avm_dsp/avm_dsp_common.h" + +#include "av2/encoder/intra_mode_mlp.h" +#include "av2/encoder/intra_mode_mlp_weights.h" + +#include "config/av2_rtcd.h" + +void intra_mode_mlp_prepare_features( + const uint16_t *src, int src_stride, int bd, int bw, int bh, int qp, + int neighbor_above_mode, int neighbor_above_delta, int neighbor_left_mode, + int neighbor_left_delta, int is_inter_frame, float *features) { + const float pixel_norm = (float)((1 << bd) - 1); + + // Nearest-neighbor downsample to 8x8 + for (int r = 0; r < 8; r++) { + const int src_r = (r * bh) >> 3; + for (int c = 0; c < 8; c++) { + const int src_c = (c * bw) >> 3; + features[r * 8 + c] = (float)src[src_r * src_stride + src_c] / pixel_norm; + } + } + + // Neighbor mode features (normalized) + int above_mode = (neighbor_above_mode < 0) ? 13 : neighbor_above_mode; + int left_mode = (neighbor_left_mode < 0) ? 13 : neighbor_left_mode; + int above_delta = (neighbor_above_mode < 0) ? 0 : neighbor_above_delta; + int left_delta = (neighbor_left_mode < 0) ? 0 : neighbor_left_delta; + + features[64] = (float)above_mode / MLP_NORM_NEIGHBOR_MODE; + features[65] = + ((float)above_delta + MLP_NORM_DELTA_OFFSET) / MLP_NORM_DELTA_RANGE; + features[66] = (float)left_mode / MLP_NORM_NEIGHBOR_MODE; + features[67] = + ((float)left_delta + MLP_NORM_DELTA_OFFSET) / MLP_NORM_DELTA_RANGE; + + // Block size and QP (normalized) + features[68] = (float)bw / MLP_NORM_BW; + features[69] = (float)bh / MLP_NORM_BH; + features[70] = (float)qp / MLP_NORM_QP; + + // is_inter_frame flag (binary, no normalization) + features[71] = (float)is_inter_frame; + + // HOG 32-bin histogram, appended after the 72 base features above. + float *hog = &features[72]; + for (int i = 0; i < 32; i++) hog[i] = 0.0f; + float hog_total = 0.1f; + for (int r = 1; r < bh - 1; r++) { + for (int c = 1; c < bw - 1; c++) { + const int idx_center = r * src_stride + c; + const int dx = + (int)src[idx_center + 1 - src_stride] + 2 * (int)src[idx_center + 1] + + (int)src[idx_center + 1 + src_stride] - + (int)src[idx_center - 1 - src_stride] - 2 * (int)src[idx_center - 1] - + (int)src[idx_center - 1 + src_stride]; + const int dy = (int)src[idx_center + src_stride - 1] + + 2 * (int)src[idx_center + src_stride] + + (int)src[idx_center + src_stride + 1] - + (int)src[idx_center - src_stride - 1] - + 2 * (int)src[idx_center - src_stride] - + (int)src[idx_center - src_stride + 1]; + if (dx == 0 && dy == 0) continue; + const int mag = abs(dx) + abs(dy); + hog_total += mag; + if (dx == 0) { + hog[0] += mag / 2; + hog[31] += mag / 2; + } else { + float angle = atan2f((float)dy, (float)dx); + if (angle < 0) angle += 3.14159265f; + int bin = (int)(angle * 32.0f / 3.14159265f); + if (bin >= 32) bin = 31; + if (bin < 0) bin = 0; + hog[bin] += mag; + } + } + } + for (int i = 0; i < 32; i++) hog[i] /= hog_total; +} + +// Scalar reference implementation of one fully-connected layer. +void av2_intra_mlp_layer_c(const float *input, int in_dim, const float *weights, + const float *bias, float *output, int out_dim, + int apply_relu) { + for (int i = 0; i < out_dim; i++) { + float sum = bias[i]; + for (int j = 0; j < in_dim; j++) sum += input[j] * weights[j * out_dim + i]; + output[i] = apply_relu ? AVMMAX(sum, 0.0f) : sum; + } +} + +void intra_mode_mlp_predict(const float *features, float *logits) { + float h1[MLP_H1_DIM], h2[MLP_H2_DIM], h3[MLP_H3_DIM]; + av2_intra_mlp_layer(features, MLP_INPUT_DIM, mlp_w1, mlp_b1, h1, MLP_H1_DIM, + 1); + av2_intra_mlp_layer(h1, MLP_H1_DIM, mlp_w2, mlp_b2, h2, MLP_H2_DIM, 1); + av2_intra_mlp_layer(h2, MLP_H2_DIM, mlp_w3, mlp_b3, h3, MLP_H3_DIM, 1); + // Layer 4: output dim=13, not a multiple of the SIMD widths above — scalar. + for (int i = 0; i < MLP_OUTPUT_DIM; i++) { + float sum = mlp_b4[i]; + for (int j = 0; j < MLP_H3_DIM; j++) + sum += h3[j] * mlp_w4[j * MLP_OUTPUT_DIM + i]; + logits[i] = sum; + } +} + +void intra_mode_mlp_get_topk(const float *logits, int k, int *modes) { + uint8_t used[MLP_OUTPUT_DIM] = { 0 }; + for (int t = 0; t < k; t++) { + float best_val = -1e30f; + int best_idx = -1; + for (int i = 0; i < MLP_OUTPUT_DIM; i++) { + if (used[i]) continue; + // First unused index is a NaN-safe fallback: logits[i] > best_val is + // always false when logits[i] is NaN, so without this best_idx could + // otherwise stay unset (or, previously, default to an already-used 0). + if (best_idx < 0) best_idx = i; + if (logits[i] > best_val) { + best_val = logits[i]; + best_idx = i; + } + } + modes[t] = best_idx; + used[best_idx] = 1; + } +} diff --git a/av2/encoder/intra_mode_mlp.h b/av2/encoder/intra_mode_mlp.h new file mode 100644 index 0000000000..15132f80a2 --- /dev/null +++ b/av2/encoder/intra_mode_mlp.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this file, you can obtain it at + * aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#ifndef AV2_ENCODER_INTRA_MODE_MLP_H_ +#define AV2_ENCODER_INTRA_MODE_MLP_H_ + +#include + +#include "av2/encoder/intra_mode_mlp_weights.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Fills all MLP_INPUT_DIM (104) features: 64 downsampled pixels, 4 neighbor +// mode/delta, 3 size/QP, 1 is_inter_frame flag, and a 32-bin HOG histogram. +void intra_mode_mlp_prepare_features( + const uint16_t *src, int src_stride, int bd, int bw, int bh, int qp, + int neighbor_above_mode, int neighbor_above_delta, int neighbor_left_mode, + int neighbor_left_delta, int is_inter_frame, float *features); + +void intra_mode_mlp_predict(const float *features, float *logits); + +void intra_mode_mlp_get_topk(const float *logits, int k, int *modes); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AV2_ENCODER_INTRA_MODE_MLP_H_ diff --git a/av2/encoder/intra_mode_mlp_weights.h b/av2/encoder/intra_mode_mlp_weights.h new file mode 100644 index 0000000000..40b7270e5a --- /dev/null +++ b/av2/encoder/intra_mode_mlp_weights.h @@ -0,0 +1,6063 @@ +#ifndef INTRA_MODE_MLP_WEIGHTS_H +#define INTRA_MODE_MLP_WEIGHTS_H + +#define MLP_INPUT_DIM 104 +#define MLP_H1_DIM 128 +#define MLP_H2_DIM 64 +#define MLP_H3_DIM 32 +#define MLP_OUTPUT_DIM 13 +#define MLP_TOP_K 5 + +#define MLP_NORM_BW 128.0f +#define MLP_NORM_BH 128.0f +#define MLP_NORM_QP 255.0f +#define MLP_NORM_NEIGHBOR_MODE 13.0f +#define MLP_NORM_DELTA_OFFSET 3.0f +#define MLP_NORM_DELTA_RANGE 6.0f + +static const float mlp_w1[13312] = { + 0.17737798f, -0.1561107f, -0.013872765f, -0.0055373209f, + -0.53413951f, 0.076213501f, -0.061730616f, -0.028927729f, + -1.2440031f, -0.038547136f, 0.02111572f, 0.14673002f, + -0.83307439f, 0.10184125f, -0.43235195f, -0.0092930067f, + 0.30972514f, 1.831935f, -0.29676157f, 0.41224214f, + 1.4357947f, 0.06483914f, 0.20389302f, 0.1615268f, + -0.85993528f, -0.40446055f, 0.10356506f, 0.055708788f, + -0.11757834f, -0.50345427f, -0.75764674f, 0.11190297f, + -0.18862733f, 0.65100306f, 0.07679186f, 0.014537814f, + 0.19257659f, -0.19064981f, 0.045883354f, -0.0020593673f, + -0.10618062f, 0.73559809f, -0.20703243f, 0.10023515f, + -0.26876986f, -0.0047572553f, -0.050980464f, -0.13829954f, + 0.38159737f, 0.45210293f, -0.043461289f, -0.0075368173f, + 0.74155438f, 0.031956788f, 0.007025429f, 0.0032351357f, + 0.77250767f, 0.034152661f, 0.058898356f, -0.28023592f, + -0.10500064f, 0.0022570542f, -0.085772678f, -0.014561569f, + -0.055529982f, 0.11289185f, -0.32911849f, 0.56219983f, + 0.014043358f, -0.17800553f, 0.53773707f, -0.59729356f, + -0.059340432f, -0.049359154f, -0.044825643f, -0.014257497f, + 0.51902872f, 0.32219008f, -0.068632193f, 1.2133563f, + 0.083967231f, -0.0018024718f, -0.32353196f, -1.7328943f, + 0.89117992f, -1.1684462f, -0.59873551f, 0.017621636f, + 1.6599392f, -0.19513693f, 0.24721965f, 0.52598459f, + -1.9297857f, 0.95894879f, -0.55910289f, 0.22213544f, + -0.28185597f, -0.18776117f, 0.0016202215f, 0.0064618387f, + -0.030228604f, -0.3437334f, 0.17622325f, 0.47328109f, + 0.18824351f, 0.029583074f, 0.540631f, -0.093755595f, + -0.015510612f, 0.052101959f, -0.19369963f, 0.0063542794f, + 0.057250127f, -0.030848579f, 0.030420249f, -0.028051406f, + 0.65731174f, 0.020911399f, -1.0347539f, 0.26916376f, + 0.025774412f, 0.68601185f, 0.13106222f, -0.17248201f, + 0.99018764f, -0.061417542f, 0.0041520824f, 0.0040060775f, + 1.1100454f, 0.031893671f, -0.011769726f, 0.029926004f, + 0.004938337f, 0.5100832f, 0.19934863f, 0.041691933f, + 0.73097426f, -0.0044808858f, 0.0054330179f, 0.25520211f, + -0.56242436f, -0.024162525f, 0.41960722f, -0.016784448f, + -0.060247485f, 0.11156812f, -0.13575847f, -0.031994376f, + -0.28611368f, -0.18525158f, -0.4347882f, 0.14978234f, + 0.29457676f, 0.9650808f, 0.32974771f, -0.19416237f, + -0.1347536f, 0.18883407f, 0.44633138f, 0.026742944f, + -0.62288058f, 0.10422551f, -0.018461939f, -0.12256289f, + -0.055831417f, 0.13498937f, -0.085893936f, 0.010586221f, + 0.0069736619f, 0.44289505f, 0.092022464f, 0.2726056f, + 0.080857642f, -0.84575403f, 0.068345271f, 0.18591359f, + 0.26526532f, -0.0031543446f, 0.031470928f, 0.039250907f, + 0.1101921f, 0.10190034f, 0.015290121f, -0.016099364f, + -0.75364029f, 0.039620176f, 0.68343788f, -0.42663282f, + 0.11403301f, -0.024060357f, -0.024415599f, 0.082938001f, + -0.13859239f, -0.028449686f, -0.34059715f, 0.059708126f, + -0.0067142281f, -0.3811217f, 0.12194543f, -0.701684f, + 0.024416713f, -0.21784851f, 0.058617983f, 0.0044293264f, + 0.084234931f, -0.090525642f, 0.51792681f, 0.66573435f, + 0.21931644f, -0.11235578f, -0.059075747f, -0.98487228f, + 0.52120411f, 0.44154522f, -0.017577324f, -0.015082968f, + 0.6612128f, -0.023552783f, -0.25024033f, -0.3627212f, + -0.22018488f, 0.55578572f, -0.51416558f, 0.014518001f, + -0.0075687636f, -0.00066311221f, 0.039353509f, 0.0043803751f, + 0.040977158f, -0.11991261f, -0.098153874f, 0.067071401f, + -0.10968567f, -0.22791299f, -0.10408456f, 0.50604182f, + 0.25815725f, -0.018192485f, -0.078307472f, 0.032473076f, + -0.035179231f, 0.0089574223f, -0.23111513f, -0.014241488f, + -0.47551224f, -0.12191301f, 0.33059457f, -0.20466362f, + -0.021284143f, -0.016632471f, 0.070279479f, -0.075920954f, + -1.0091239f, 0.064078659f, 0.024335835f, 0.033879269f, + 1.0642718f, 0.10424954f, 0.11737838f, -0.029764056f, + 0.033541046f, -0.72645438f, 0.2462717f, -0.0058540707f, + 0.51764745f, 0.16668779f, 0.016274244f, -0.19072585f, + -0.504116f, -0.055189289f, 0.59680426f, 0.042080909f, + 0.064020514f, 0.054227661f, -0.01598672f, -0.16688386f, + -0.12171074f, -0.10460442f, -0.39823651f, 0.33994272f, + 0.2748453f, 0.87264842f, 0.25493953f, -0.1085732f, + -0.034617476f, 0.062427241f, 0.25166553f, 0.2733669f, + -0.35331535f, -0.21706107f, 0.056447268f, 0.062389076f, + 0.009465754f, 0.51509726f, 0.024776621f, -0.015062355f, + 0.080261655f, 0.42574251f, 0.14739123f, 0.2077771f, + -0.041519307f, -0.76547015f, -0.071012743f, 0.14445989f, + 0.4250268f, -0.12535615f, 0.032572668f, -0.11953216f, + -0.012709544f, 0.30070403f, 0.012472651f, 0.0053310241f, + -0.80089843f, 0.037226461f, 0.63279742f, 0.37592819f, + 0.022707725f, 0.073001795f, -0.11678543f, 0.028603626f, + 0.043853443f, 0.02456427f, -0.13192223f, 0.0028603855f, + 0.015391055f, -0.59867448f, -0.091056339f, -0.35031432f, + 0.13735461f, -0.50738633f, 0.010992547f, -0.0343704f, + 0.057667818f, 0.16482595f, -0.20789689f, 0.67738372f, + 0.17928398f, -0.052719217f, 0.10944238f, -0.72329324f, + 0.27877104f, 1.1366984f, -0.18347332f, 0.028282365f, + -0.19711028f, -0.17042032f, 0.0044234204f, -0.061260283f, + 0.23079751f, 0.30124161f, -0.3878884f, -0.042618431f, + -0.028621288f, -0.0080060726f, 0.13701008f, -0.01798737f, + -0.005025031f, -0.10808533f, 0.15107107f, -0.041252896f, + -0.021866808f, -0.31468052f, -0.15811031f, 0.40465784f, + 0.12970039f, 0.0025061406f, 0.007941992f, -0.015027796f, + 0.023469711f, -0.023558402f, -0.094120197f, 0.0034879914f, + -0.11093089f, -0.10183609f, 0.39221245f, -0.10213699f, + 0.01221031f, -0.3835507f, 0.14922415f, -0.11938486f, + -0.65025824f, -0.0041884873f, 0.012750758f, 0.092739403f, + 0.92630333f, -0.0087874522f, -0.016292114f, -0.085425876f, + 0.030437412f, -0.06043452f, -0.0093507348f, -0.02911062f, + 0.65011609f, -0.1862269f, -0.037985563f, -0.54468513f, + -0.48411226f, 0.010007249f, 0.49034739f, -0.10923675f, + 0.083669946f, 0.076551236f, 0.089814246f, -0.026001701f, + -0.052512575f, -0.05665103f, 0.048101783f, 0.30944672f, + -0.015991455f, 0.6796366f, 0.27113268f, -0.12129602f, + -0.075811207f, 0.096579939f, 0.21206579f, -0.13630196f, + 0.084360868f, -0.24125057f, -0.08716888f, 0.07158833f, + -0.051349968f, 0.57674593f, 0.0088210357f, -0.034667023f, + -0.069430113f, 0.4905729f, 0.088195823f, 0.32208478f, + -0.12067134f, -0.80912846f, -0.028899089f, -0.077997141f, + 0.3901284f, -0.42033002f, 0.071408674f, -0.12126859f, + -0.0087281577f, 0.16418712f, -0.029545071f, 0.0046975403f, + 0.33423012f, 0.11646362f, 0.16149569f, 0.89230227f, + -0.1761132f, -0.05624567f, 0.16390255f, -0.022358609f, + -0.11379658f, -0.0056671933f, 0.016747046f, 0.11045671f, + -0.0078404145f, -0.43155262f, 0.048246287f, -0.56198275f, + 0.06215091f, 0.133531f, 0.020299682f, -0.012706934f, + 0.12336056f, 0.050683904f, -0.61918175f, 0.73780465f, + -0.022501588f, 0.076361082f, 0.35298657f, -0.48049745f, + -0.07263092f, 0.638973f, -0.49663809f, 0.0028522233f, + -0.87322295f, -0.034147535f, 0.0065851137f, 0.70469648f, + 0.51450646f, 0.31447393f, 0.031246765f, 0.055996936f, + 0.12169229f, -0.040055819f, 0.12569074f, 0.00046158f, + 0.01926513f, -0.10719904f, 0.045842722f, 0.078450091f, + -0.19245952f, 0.091794491f, -0.40325338f, -1.0717717f, + 0.11109289f, 0.0058924351f, 0.14677849f, 0.013374325f, + -0.063702576f, 0.071957253f, -0.19647793f, -0.0039462685f, + -0.39544982f, -0.089285389f, 0.39836249f, 0.08387953f, + -0.013395789f, -0.76971936f, 0.020699736f, -0.055342138f, + 0.037979864f, -0.010286289f, -0.0083585894f, -0.26341867f, + 0.7014147f, -0.027208081f, 0.041555233f, 0.0017781792f, + -0.056072373f, 0.79509991f, -0.18439361f, 0.020424843f, + 0.75832433f, 0.082698204f, -0.017779408f, -0.75291222f, + -0.52178192f, 0.11589564f, 0.12513219f, -0.19244793f, + -0.21604431f, 0.0037707924f, -0.048438128f, 0.00262525f, + 0.12324759f, 0.0096194167f, -0.069241345f, 0.23795211f, + 0.00038967168f, 0.34327173f, 0.16185305f, -0.053711079f, + -0.10011836f, -0.069962762f, 0.39034617f, -0.57575715f, + 0.34957761f, 0.11504158f, -0.072871417f, 0.024409486f, + -0.1407045f, -0.21439546f, 0.054863695f, 0.029898494f, + -0.22294857f, 0.51014137f, 0.021393996f, 0.27612439f, + -0.21954803f, -0.44018477f, -0.080841109f, 0.047525648f, + 0.63866556f, -0.4734306f, -0.0010865966f, -0.05782228f, + -0.3027001f, -0.029066171f, 0.0016515962f, -0.027410787f, + 0.89088959f, 0.17238182f, 0.06079527f, 0.67351121f, + -0.35034341f, -0.050475869f, 0.13910809f, -0.033483919f, + 0.027569767f, -0.077321619f, 0.12048414f, 0.11430272f, + -0.01056168f, 0.18285693f, 0.069052249f, -0.18043056f, + 0.065750107f, 0.60089797f, -0.018008497f, -0.0059976727f, + 0.050853524f, -0.025681717f, -0.0095049897f, 0.57996356f, + -0.10613468f, -0.1472196f, -0.055001408f, -0.39690319f, + -0.1716141f, -0.40849081f, -0.46540982f, -0.027354959f, + -0.89695024f, -0.083748274f, 0.05027378f, 0.77389055f, + 0.53475392f, 0.16904835f, 0.38640088f, -0.30713153f, + 0.17976002f, 0.027397832f, 0.14660791f, -0.0013917604f, + -0.03651949f, -0.034294117f, -0.12662815f, 0.056762461f, + 0.019696459f, 0.48652214f, 0.076387592f, -0.78996909f, + -0.070061438f, 0.016098997f, 0.32504496f, 0.014217239f, + -0.0025554062f, 0.02803982f, -0.062341772f, 0.009595233f, + -0.61359966f, -0.2409049f, -0.0037219836f, 0.11220261f, + -0.007733894f, -0.64293939f, -0.10295341f, -0.10392882f, + 0.35239741f, -0.11642592f, -0.023052001f, -0.19481336f, + 0.48249969f, -0.082934231f, 0.060813215f, 0.050029557f, + 0.12189154f, 0.041818641f, -0.13826379f, -0.023524709f, + 1.0092827f, 0.0061184145f, 0.01110813f, -0.46907583f, + -0.58889753f, 0.033180635f, 0.24124636f, 0.037283964f, + -0.15431233f, 0.29367167f, -0.13919835f, 0.049790338f, + -0.028561715f, -0.031541586f, -0.47687998f, 0.26563728f, + -0.13978313f, -0.068286709f, 0.2682822f, -0.19133855f, + -0.10141551f, -0.028011421f, 0.22552621f, -0.70570999f, + 0.68708825f, 0.054549545f, -0.0040927478f, -0.030751713f, + -0.070053637f, -0.82074893f, 0.016111279f, 0.027728729f, + -0.092550956f, 0.42352498f, 0.0029132636f, 0.25132677f, + -0.03898428f, -0.45487311f, -0.099902287f, 0.020203214f, + 0.89251405f, 0.23683369f, 0.039739404f, 0.018036749f, + -0.38626805f, -0.048481315f, -0.024551991f, 0.0048309118f, + 0.14982799f, 0.12156249f, 0.16852881f, -0.12282108f, + -0.45939291f, -0.082481757f, 0.33313021f, -0.016629543f, + -0.083263554f, 0.11148994f, 0.25802886f, 0.12418094f, + -0.0082022129f, 0.59404093f, -0.011648189f, 0.61604619f, + -0.10762659f, 0.69187307f, -0.0018731999f, 0.044149552f, + -0.013657985f, -0.08656203f, 0.76043081f, 0.42731333f, + -0.11781889f, 0.046983313f, -0.28425863f, -0.1339355f, + 0.052414641f, -0.66388834f, -0.091180794f, -0.01231599f, + -0.42731369f, -0.15947002f, 0.037954047f, -0.091455743f, + 0.49980304f, -0.057329386f, 0.73188192f, -0.25369301f, + 0.1435415f, 0.14545047f, 0.20136759f, 0.010228579f, + 0.032308046f, 0.061993439f, 0.057814516f, 0.0041024988f, + 0.1377126f, 0.48630261f, -0.12646379f, 0.4035134f, + -0.26144299f, -0.010221017f, 0.64437521f, -0.0035624709f, + -0.013863221f, 0.099185206f, 0.18953884f, 0.014282199f, + -0.74958527f, -0.60137957f, 0.2763052f, 0.032588035f, + -0.011623956f, -0.23289768f, -0.044375382f, -0.073711552f, + 0.31705382f, -0.098400265f, 0.0091501456f, 0.21711263f, + 0.11933531f, 0.11904302f, 0.013301663f, 0.029956523f, + 0.41899836f, -1.2645292f, 0.11622371f, -0.11346393f, + 0.6562658f, 0.10291426f, -0.011679935f, -0.010966144f, + -0.50531018f, -0.0091576427f, 0.23828132f, -0.099036373f, + -0.11640458f, 0.26294655f, -0.093774937f, 0.023775091f, + 0.14914565f, -0.080447093f, -0.50690407f, 0.12945697f, + 0.11162316f, -0.53736073f, 0.20132574f, -0.27220109f, + 0.041337043f, 0.020869873f, 0.27034298f, 0.064443618f, + 0.083980598f, -0.068932362f, -0.048529457f, -0.037127361f, + 0.0017329379f, -0.41453588f, 0.017670393f, 0.040111344f, + 0.10181614f, 0.27181095f, -0.055996325f, 0.18700041f, + 0.0078513278f, -0.58233249f, -0.071478397f, -0.076391369f, + 0.69960344f, 0.38489634f, 0.056282066f, -0.07027705f, + -0.52852595f, 0.054233301f, -0.0084840665f, -0.0013399236f, + -0.47363141f, -0.23760077f, 0.97853452f, -0.62986934f, + -0.30205125f, -0.055363238f, 0.064445771f, 0.085390233f, + -0.024714349f, -0.0002691129f, 0.26036495f, -0.24982394f, + -0.0038992502f, 0.44841707f, -0.027307011f, 0.92746878f, + -0.051750682f, 0.15973446f, -0.016362229f, 0.017983388f, + 0.14450389f, 0.0053049168f, 0.41577128f, 0.21062721f, + -0.098329782f, 0.019229751f, -0.22243325f, -0.071809031f, + -0.16347818f, -0.20108244f, -0.014211453f, 0.0041778022f, + 0.085067011f, -0.27114069f, 0.11794338f, -0.609622f, + 0.3684862f, -0.41198647f, 1.0457724f, -0.03231122f, + 0.074728653f, 0.19168283f, -0.15684041f, -0.043890405f, + 0.017906146f, 0.18922465f, 0.12098996f, -0.017354043f, + -0.20409402f, -0.10683572f, -0.4921034f, 0.91929251f, + -0.086273938f, -0.0043185907f, 0.74701619f, -0.034245882f, + -0.019751318f, -0.051115923f, 0.2587603f, 0.011422788f, + -0.39899734f, -0.96102774f, 0.17275253f, -0.041231506f, + 0.012993785f, 0.25763184f, 0.054465976f, 0.044543672f, + 0.081567109f, -0.047280278f, 0.0065805633f, 0.60914332f, + -0.093558304f, 0.22781003f, 0.12367821f, -0.0061503607f, + 0.60394007f, 0.74383426f, 0.38932174f, 0.021905424f, + -0.49011433f, 0.16232736f, 0.014355064f, 1.5801724f, + -0.60552144f, -0.066150971f, 0.45942309f, 0.18137044f, + -0.28476086f, 0.33340749f, 0.11250301f, 0.051298577f, + -0.20870271f, 0.21246758f, 0.14991523f, 0.24535552f, + 0.03788447f, -0.74156356f, 0.2149923f, 0.3307901f, + -0.19954188f, 0.26210999f, -0.13581614f, -0.45347634f, + -0.57991219f, -0.47286913f, -0.10018554f, -0.16740449f, + 0.080569446f, 0.5208711f, -0.021953315f, -0.065993614f, + 0.22803581f, 0.4276095f, -0.074020334f, 0.09709277f, + -0.057746042f, -0.71593499f, -0.03381272f, 0.23737651f, + -0.14987983f, -0.56344175f, -0.0055962428f, 0.05542732f, + -0.59391057f, 0.12597163f, -0.011981506f, -0.0045149261f, + -0.13513196f, -1.4143244f, 0.41436669f, -1.5084689f, + -0.5356133f, 0.039829548f, -0.32178807f, -0.045569435f, + -0.2749888f, -0.021413773f, -0.011502539f, -0.8189562f, + -0.00092121528f, 0.093522049f, 0.28999656f, 0.63639003f, + 0.041754499f, -0.79919499f, -0.026049757f, 0.11330689f, + 0.089825898f, -0.19625339f, -1.0072776f, 0.23071045f, + -0.17066225f, -0.10785905f, 1.4073185f, 0.11313616f, + -0.96984148f, 0.17388821f, 0.25663161f, -0.0056466181f, + 0.29690993f, 0.53942776f, -0.30928868f, -0.39645147f, + -0.1048094f, -0.93192959f, 1.5606078f, 0.13267528f, + 0.50128174f, 0.12138738f, -0.70860839f, 0.0059213205f, + 0.040134538f, 0.37980151f, -0.057852853f, 0.01732647f, + 0.25638288f, -0.57252145f, -0.64420462f, -0.036625661f, + -0.1124623f, -0.0078337593f, 1.2230468f, 0.0098585216f, + 0.0170816f, 0.044114053f, 0.12424286f, 0.051069573f, + 0.12849928f, -1.4704472f, 0.1294537f, 0.066953003f, + 0.016667517f, 0.67294014f, -0.19891499f, 0.89685142f, + -0.18197812f, -0.1576483f, -0.025931051f, 0.13709305f, + -1.3437753f, -0.099008985f, 0.035371576f, -0.014744754f, + -0.13257025f, -0.11235475f, -0.051996827f, -0.020967264f, + -0.54540467f, 0.055208933f, -0.030406222f, 0.11798099f, + 0.67715096f, -0.021826634f, -0.11053622f, -0.10017804f, + 0.09646529f, 0.3225787f, -0.17432766f, 0.060986914f, + -0.097957075f, 0.40861687f, 0.6279462f, -0.27312654f, + -0.18008955f, 0.42628312f, -0.63486928f, 0.067848533f, + 0.25931737f, -0.059151415f, 0.21375914f, -0.077419311f, + 0.051814955f, 0.44496444f, -0.056476187f, 0.024157578f, + 0.031247409f, -0.1497439f, 0.052936528f, -0.02521988f, + -0.15453298f, 0.54318273f, 0.086713418f, -0.41000268f, + 0.028333567f, 0.53678685f, 0.014668604f, 0.0041924436f, + 0.036704767f, -0.075384438f, 0.0093836179f, -0.042646021f, + 0.24842121f, -0.025808521f, -0.0034249013f, 0.020569507f, + -0.063560598f, -0.071343035f, -0.12429927f, 0.2286378f, + -0.18841711f, 0.042021625f, 0.01771708f, -0.077342995f, + -0.19474974f, -0.060541268f, -0.057653524f, 0.075421154f, + -0.0063054459f, -1.0556407f, 0.24489871f, 0.58971435f, + 0.0419714f, -0.02783647f, 0.039017428f, 0.054140817f, + -0.061255239f, 0.007883722f, -0.15271348f, 0.17714238f, + -0.147039f, -0.1029197f, 0.0030689165f, -0.76045638f, + 0.27573973f, -0.68480021f, -0.16959429f, 0.020836262f, + -0.10722709f, 0.12135819f, 0.059607185f, 0.6851213f, + -0.87037808f, 0.90728557f, 0.50099552f, -0.12030022f, + -0.028527897f, -0.21023551f, -0.032024689f, 0.004080832f, + 0.0088927513f, 0.0086885067f, 0.014785405f, 0.077998437f, + -0.096164607f, -0.12402817f, 0.548832f, -0.036762223f, + 0.072488621f, -0.018108388f, -0.20447558f, -0.0026825264f, + -0.046960212f, -0.010704515f, -0.13897499f, 0.028420832f, + 0.14246613f, 0.31302041f, -0.14863858f, -0.034416627f, + -0.0066476502f, 0.66943794f, -0.08647541f, 0.12238201f, + 0.59239978f, 0.064611264f, -0.029445114f, 0.014092337f, + -0.43188283f, 0.018741464f, -0.042590708f, -0.087364167f, + 0.047236018f, 0.64182931f, 0.017193243f, -0.024159376f, + 0.48022786f, -0.17679992f, 0.023503091f, 0.24714886f, + 0.55573487f, 0.020029372f, -0.068283781f, 0.032787412f, + -0.062704444f, -0.29548812f, -0.18285689f, 0.073447958f, + -0.31288165f, -0.37166238f, -0.17623208f, -0.26166812f, + 0.18704055f, 0.090953901f, -0.61271191f, 0.1016204f, + 0.083733633f, 0.10432331f, 0.24484563f, 0.38611847f, + -0.040825091f, 0.15631801f, 0.039276704f, 0.07850267f, + -0.071460523f, -0.056414269f, 0.0034513874f, 0.011343725f, + 0.086598523f, 0.21017925f, 0.053859852f, -0.28486949f, + 0.13497792f, -0.10160115f, -0.031843044f, 0.010876791f, + 0.058582366f, -0.22190775f, -0.023814918f, 0.030251233f, + -0.17421328f, 0.0057430794f, -0.010089237f, -0.0034391547f, + -0.28659448f, -0.031879317f, 0.11428581f, -0.47006202f, + 0.16312298f, 0.051823691f, -0.018530874f, 0.029220313f, + 0.058345001f, -0.059198104f, -0.082244068f, -0.0088962242f, + -0.0077696783f, -0.23711969f, 0.083103448f, -0.093614802f, + -0.07984256f, -0.1505505f, -0.050105311f, -0.023156513f, + -0.17836201f, 0.12159229f, 0.32127839f, -0.31997806f, + -0.05183376f, -0.095012784f, -0.33975625f, 0.32022268f, + 0.17400998f, 0.55640012f, 0.40916449f, 0.023569901f, + -0.69176143f, -0.028476683f, 0.046467394f, -0.083811492f, + 0.57397187f, 0.2312468f, 0.55709076f, -0.13301669f, + 0.07903783f, 0.15415306f, 0.0077321078f, 0.027702453f, + -0.031866726f, 0.14810587f, -0.045550589f, -0.040752936f, + -0.019317944f, -0.029694155f, 0.22988994f, 0.45326596f, + -0.091144487f, 0.011643684f, -0.13566692f, -0.0031835421f, + -0.011387408f, 0.03821284f, -0.051994275f, 0.017327521f, + -0.31791863f, 0.089630418f, -0.005785042f, -0.039584398f, + 0.010555628f, -0.085757196f, -0.15007262f, 0.052023795f, + -0.77390021f, -0.081202038f, -0.028460028f, 0.021155532f, + -0.43406785f, 0.12784639f, 0.0028882129f, -0.070831656f, + 0.02545624f, -0.30304155f, 0.051708337f, 0.070695184f, + -0.55868596f, -0.054975089f, -0.0085686957f, 0.16148485f, + 0.6232906f, -0.002494131f, -0.28410426f, 0.045831837f, + 0.20738719f, -0.025236979f, -0.1790673f, 0.013241543f, + 0.056078818f, 0.04435043f, 0.10849927f, -0.34235987f, + 0.00094555196f, -0.40196642f, -0.49901906f, 0.34928164f, + 0.095943943f, 0.050702605f, -0.54530334f, 0.54630488f, + 0.25876197f, -0.041018642f, -0.06999848f, 0.020053796f, + 0.051956624f, 0.20796543f, -0.088201247f, 0.13274242f, + 0.27238756f, 0.2663615f, -0.03952872f, -0.29495671f, + 0.010515757f, -0.067362979f, 0.089679435f, -0.11146843f, + 0.097054474f, 0.34663534f, -0.055757586f, 0.13456836f, + -0.12809937f, -0.067910776f, -0.0044327811f, -0.007368139f, + 0.16811079f, 0.041518599f, 0.13436574f, -0.21995945f, + 0.27143469f, -0.095479906f, -0.062776975f, -0.078811489f, + 0.18641658f, 0.037264794f, 0.036431935f, -0.0039408919f, + 0.0057804314f, 0.043523319f, 0.012209559f, -0.23715083f, + 0.022282546f, -0.095575623f, 0.0046795802f, 0.00060906418f, + -0.16106246f, -0.025883252f, -0.047620811f, -0.17820163f, + 0.075400695f, 0.0024409725f, -0.19102536f, 0.27277711f, + 0.14290366f, 0.34489691f, 0.63951105f, -0.023133172f, + -0.41239658f, -0.054258849f, -0.12002662f, -0.14344978f, + 0.49506012f, 0.052134756f, 0.47835842f, 0.049488004f, + 0.033401765f, 0.06536983f, 0.020852253f, -0.00014020664f, + 0.021195024f, 0.10630494f, -0.050584033f, -0.1348822f, + 0.14280689f, -0.094465397f, 0.0041186023f, 0.25529921f, + -0.091615491f, 0.013180645f, -0.085230187f, -0.025117094f, + -0.0032962272f, 0.013506291f, -0.027223285f, 0.0083514564f, + -0.10308556f, -0.15323843f, -0.10509019f, 0.076978095f, + 0.0073454641f, -0.2219069f, 0.068219781f, -0.096112482f, + -0.11016303f, 0.048339725f, 0.00067112211f, 0.12339675f, + -0.33167487f, 0.079404198f, -0.014249505f, 0.014017239f, + 0.016515296f, -0.060241077f, -0.096317194f, -0.074213915f, + -0.48548484f, -0.13272975f, 0.0021529123f, 0.20081989f, + 0.49184403f, -0.07479009f, -0.40606529f, 0.023870718f, + 0.15965398f, 0.063706368f, -0.091346316f, -0.023564357f, + -0.043479461f, 0.12790263f, 0.039983194f, -0.41290766f, + 0.062666506f, -0.51072454f, -0.56162691f, 0.18868013f, + 0.15356661f, -0.0031535309f, -0.22247916f, 0.64634103f, + 0.064174011f, 0.12728605f, 0.032693695f, 0.0063482029f, + 0.031245306f, 0.4141241f, 0.0097397165f, -0.16956401f, + 0.043229137f, 0.24343403f, -0.040419668f, -0.44704738f, + -0.035460573f, -0.0549527f, -0.067015767f, -0.040761542f, + 0.13339828f, 0.28769073f, -0.048743077f, 0.063277408f, + -0.18898831f, -0.15245011f, -0.0083099371f, 0.0019807902f, + 0.53934997f, 0.10543253f, 0.36747018f, 0.010020692f, + 0.28622711f, 0.033145133f, -0.11396542f, -0.032449f, + -0.0098796925f, 0.013782804f, 0.027573364f, -0.010146799f, + 0.016245231f, 0.37184623f, 0.23829657f, -0.54247326f, + -0.027700284f, -0.16565542f, 0.0058283862f, -0.022511309f, + -0.085643463f, -0.059220813f, -0.25477028f, -0.2019918f, + -0.066219963f, 0.065728568f, 0.13320971f, 0.27277496f, + 0.11567014f, -0.13490744f, 0.45320013f, 0.0048008054f, + -0.14705998f, 0.21039611f, 0.014152396f, -0.16637875f, + 0.31181338f, -0.10654974f, 0.21921954f, 0.039349157f, + 0.037515953f, 0.0069268239f, 0.14293599f, -0.00098647561f, + 0.0073656449f, 0.10369151f, -0.085507356f, -0.2299504f, + 0.080408305f, -0.14157403f, -0.15613358f, -0.29975638f, + -0.13055016f, -0.01988633f, -0.15946546f, 0.032346833f, + 0.055765685f, -0.03799656f, 0.087063238f, 0.01635382f, + 0.25967774f, -0.12877724f, -0.036972277f, 0.092489325f, + -0.010424206f, -0.31581998f, 0.070965514f, -0.1010097f, + 0.27465224f, 0.0044179116f, -0.013104435f, -0.053562086f, + -0.1977917f, 0.075075589f, -0.039613158f, 0.0092999013f, + -0.069190681f, 0.61779845f, -0.12417265f, 0.052530728f, + -0.18969484f, -0.057139907f, 0.031258401f, 0.097678714f, + 0.55499339f, -0.10735302f, -0.32841936f, 0.013053485f, + 0.039587528f, -0.020449946f, -0.18516988f, 0.18012805f, + -0.22367547f, 0.13930193f, -0.052718986f, -0.38598526f, + 0.024931433f, -0.22089297f, -0.54667133f, -0.044680424f, + 0.10412083f, -0.021509493f, 0.13090254f, 0.060345802f, + 0.0998668f, 0.11835362f, -0.11428219f, -0.061109293f, + 0.026882078f, -0.077426903f, 0.064167663f, -0.0011300684f, + -0.078336403f, 0.21000643f, -0.075703241f, -0.43504292f, + -0.0055437363f, 0.082675546f, 0.027716244f, 0.028504752f, + 0.26844922f, 0.098545745f, -0.030934086f, -0.042824298f, + -0.058612913f, -0.15961544f, 0.014942184f, 0.020024959f, + 0.099285893f, 0.39359602f, 0.14960991f, 0.29432049f, + 0.29008242f, -0.02363006f, -0.031760205f, -0.075930178f, + 0.055511579f, -0.0073679043f, -0.045274489f, 0.19684403f, + 0.0077135763f, 0.51968342f, 0.16253731f, -0.696944f, + -0.023920743f, 0.066407576f, 0.013339908f, 0.053689126f, + -0.14446238f, -0.050404169f, -0.1570639f, -0.21816215f, + 0.061729681f, 0.042907555f, 0.14773625f, 0.13762473f, + 0.081300981f, -0.47751069f, 0.41301599f, 0.039194278f, + 0.24663512f, 0.072351962f, -0.071482159f, -0.38549832f, + 0.2880927f, -0.077344321f, -0.065921135f, 0.018486135f, + -0.0028348737f, 0.0018905824f, 0.11362818f, 0.054219291f, + -0.0031066937f, -0.078353353f, -0.11312409f, 0.015678104f, + -0.11913723f, 0.27176577f, 0.063881509f, 0.33382085f, + -0.17127362f, 0.014900069f, -0.16354562f, 0.021232678f, + 0.023573814f, 0.032769125f, -0.061945468f, 0.0012130018f, + 0.2249383f, 0.044593222f, -0.32423109f, -0.050719213f, + 0.012850842f, -0.18700168f, 0.05092391f, -0.070603922f, + 0.26840299f, -0.019196285f, 0.021546889f, 0.13471839f, + 0.044283632f, 0.0082735857f, 0.024348587f, -0.035533842f, + -0.1970696f, 0.26626357f, -0.21658865f, 0.096639298f, + -0.22490717f, -0.081685647f, 0.015091502f, -0.19077323f, + 0.56876296f, 0.082664616f, -0.17691226f, -0.0038947389f, + 0.040401649f, -0.066074751f, -0.1176908f, 0.10124389f, + -0.24576145f, 0.026377907f, -0.054530885f, -0.35151094f, + -0.12999815f, -0.21735428f, -0.53884012f, -0.048637047f, + 0.072588153f, -0.013366074f, 0.060003836f, 0.031155054f, + 0.28706023f, 0.11925715f, -0.047881499f, -0.029702215f, + 0.021580653f, -0.39127594f, -0.060037542f, -0.031183138f, + -0.045971725f, 0.14776166f, -0.026920864f, -0.39950931f, + -0.024931189f, 0.14449154f, -0.094687715f, -0.12185112f, + 0.3440547f, -0.13108224f, -0.034338359f, 0.020747941f, + 0.23405121f, -0.14507885f, 0.038901813f, 0.013489017f, + -0.41041797f, 0.68340582f, 0.17831141f, 0.47735056f, + 0.024116851f, 0.06365893f, 0.17946111f, -0.028068759f, + 0.028401632f, -0.031756941f, 0.087137982f, 0.20376742f, + 0.020958997f, 0.34593743f, -0.0020518918f, -0.46727967f, + -0.030353624f, 0.21842438f, 0.016499283f, -0.02098364f, + -0.052408822f, 0.040555242f, 0.22932942f, -0.08616972f, + 0.0029212926f, -0.028564645f, -0.19853118f, 0.092101559f, + 0.20681527f, -0.047234908f, 0.44455492f, 0.0060428339f, + 0.45369074f, 0.040269427f, 0.1048385f, -0.59312773f, + 0.021700213f, -0.36471742f, -0.43604004f, 0.25737059f, + -0.10752191f, 0.087871313f, 0.047031704f, 0.024476871f, + 0.0092694983f, -0.10749492f, -0.067996912f, 0.051330928f, + 0.13390945f, 0.34240511f, 0.013544935f, 0.51866078f, + -0.20039783f, 8.1731683e-05f, -0.18733761f, 0.02458101f, + 0.034305718f, 0.0091689164f, -0.027361104f, -0.0027671726f, + 0.18298055f, 0.061705593f, -0.14483389f, -0.23755644f, + 0.0089981668f, 0.093053065f, 0.0079661943f, -0.10226841f, + -0.022098277f, 0.069437779f, -0.0015841268f, 0.59924054f, + 0.44554886f, -0.20726782f, -0.0804011f, -0.065382704f, + -0.012878977f, -0.5908078f, -0.06049452f, 0.045530926f, + -0.34476167f, -0.1237476f, -0.0086398032f, -0.53056037f, + 0.5755192f, 0.035025492f, -0.20720772f, 0.00015907732f, + 0.1302233f, -0.013676145f, -0.045216095f, -0.10751105f, + 0.068953633f, -0.049182549f, -0.3000263f, -0.29754043f, + -0.16072297f, -0.22865671f, -0.50790107f, -0.017159749f, + 0.32924739f, 0.012517953f, -0.077225678f, 0.4971602f, + 0.23094471f, 0.10108223f, 0.057513032f, 0.081479318f, + -0.026315449f, -0.21828793f, 0.0051632989f, 0.0056248023f, + -0.055093795f, 0.05166322f, -0.020013692f, -0.18297558f, + -0.0089556109f, 0.201928f, -0.027747918f, -0.11187031f, + 0.22676854f, 0.056915008f, -0.019582989f, 0.081084549f, + 0.22857314f, -0.051541541f, 0.012127536f, 0.0013897334f, + -0.26621178f, 0.60338557f, 0.24869116f, 0.36428395f, + -0.13103744f, -0.022981199f, -0.1001212f, -0.066329077f, + 0.14386061f, -0.039369084f, 0.095124952f, 0.051591262f, + 0.0083764251f, 0.044211559f, -0.058109768f, 0.040348936f, + -0.087308146f, 0.21912543f, 0.0014579473f, -0.043671761f, + -0.066427119f, 0.17505379f, 0.37346035f, -0.036871392f, + 0.1183658f, -0.037806898f, -0.74870503f, 0.065166771f, + 0.2007637f, 0.28717861f, 0.33597863f, -0.0055149468f, + 0.27039659f, -0.20522739f, -0.049309287f, -0.29125136f, + -0.059438199f, -0.53047252f, -0.71321303f, 0.01531694f, + -0.24593464f, 0.016838623f, 0.059086539f, -0.017264783f, + -0.014803927f, -0.039024532f, 0.10031326f, -0.092255205f, + -0.03368137f, 0.1825393f, -0.14070086f, 0.51685667f, + 0.021084443f, -0.010971929f, -0.12691084f, -0.012982094f, + 0.00229557f, -0.093056783f, 0.14372532f, -0.016349752f, + 0.23533188f, -0.07040529f, -0.041891012f, -0.11279663f, + 0.00044361429f, 0.19630446f, 0.21161786f, -0.30511856f, + -0.10414063f, 0.17366971f, 0.01113754f, 0.49479353f, + 0.60451746f, -0.12623556f, -0.091138385f, -0.082898751f, + 0.1317154f, 0.40368858f, 0.03887536f, 0.0099838246f, + -0.39656845f, -0.091932088f, 0.0279344f, -0.22262776f, + 0.70439422f, -0.0020746307f, -0.32385489f, 0.063785091f, + 0.1347606f, -0.12928908f, -0.056997582f, 0.048233919f, + -0.33371964f, 0.034002185f, -0.0090268319f, -0.23483469f, + 0.026305852f, -0.10400786f, -0.55280513f, -0.10583585f, + 0.14926153f, -0.020484373f, -0.26106119f, -0.051309198f, + -0.29638091f, -0.031469852f, -0.050074268f, 0.1050384f, + -0.082088016f, 0.41971651f, -0.03203962f, 0.060899425f, + -0.15700781f, 0.059200563f, 0.042762894f, -0.31523627f, + -0.2200046f, -0.14306566f, 0.035713822f, 0.059805553f, + -0.18887788f, 0.20127244f, -0.0037354836f, -0.017350765f, + 0.097125158f, -0.0017471587f, -0.0075369747f, 0.0045715002f, + 0.23686993f, -0.031736013f, 0.070474274f, -0.00029108947f, + -0.65595978f, 0.018822283f, -0.26907545f, -0.046860304f, + -0.16066331f, -0.005623213f, 0.046918761f, -0.14544961f, + 0.012901711f, -0.24717091f, -0.0051738387f, 0.33958176f, + 0.020601241f, -0.083264209f, 0.017347191f, -0.042673912f, + -0.18645036f, 0.16633187f, -0.23880018f, -0.074989095f, + 0.17230241f, -0.076245353f, -0.4053975f, 0.090466127f, + -0.12274485f, 0.10075715f, 0.36812091f, -0.019266091f, + -0.048623968f, 0.019144125f, 0.044047941f, 0.31735557f, + -0.34192136f, -0.89723879f, -0.87320966f, -0.25726336f, + -0.20390098f, -0.01992256f, -0.26915482f, 0.022091478f, + 0.010803286f, -0.0071715219f, 0.069714934f, 0.0076880245f, + -0.093381435f, -0.19846052f, -0.3770659f, -0.26900744f, + -0.0022793363f, 0.028792104f, 0.25024742f, 0.018679878f, + -0.014427328f, -0.002577069f, 0.20633832f, 0.0058899545f, + 0.27420065f, -0.20805208f, -0.038836751f, 0.30986732f, + -0.039147731f, 0.34522322f, -0.024716889f, -0.096104942f, + -0.14415276f, 0.10834198f, 0.0070761796f, 0.22573654f, + -0.39983803f, -0.069378182f, -0.013825407f, -0.052287746f, + -0.051244408f, -0.36883307f, -0.080010526f, -0.0051574167f, + 0.087959468f, 0.10642793f, 0.010959086f, -0.19044679f, + 0.63647264f, 0.019250222f, 0.18989845f, -0.044114906f, + -0.12679735f, 0.1570532f, 0.013885902f, 0.12483708f, + -0.15848809f, 0.79640383f, 0.2869682f, 0.15062538f, + 0.065292388f, 0.88586479f, 0.26107919f, 0.09204264f, + -0.070695303f, 0.083985098f, 0.065184161f, -0.63928121f, + -0.44501442f, 0.31017292f, -0.060828742f, -0.014194785f, + 0.14233847f, -0.10174803f, -0.05124446f, 0.019886525f, + -0.051680513f, 0.34151086f, 0.0034280489f, -0.32520744f, + -0.20279443f, 0.30122468f, -0.060165588f, 0.24288054f, + -0.14188424f, -0.31117269f, 0.0026039465f, -0.039805844f, + -0.12927112f, 0.026987927f, 0.035457198f, 0.0019073518f, + -0.50557667f, -0.14073077f, -0.29733151f, 0.12474847f, + -0.27803195f, -0.056469042f, -0.034671325f, -0.068114385f, + -0.19670929f, -0.008197559f, -0.34616658f, 0.11302499f, + -0.011764429f, -0.77989322f, 0.17744727f, 0.74157637f, + 0.0919488f, 0.63740903f, 0.008582091f, 0.0052140662f, + -0.064524353f, -0.11968285f, -0.15429464f, -0.18831086f, + -0.27496773f, -0.071782351f, 0.39823428f, -0.36887035f, + 0.35542116f, -0.39827067f, -0.10383669f, 0.0056675863f, + -0.63108987f, 0.13009141f, 0.0091436952f, -0.34197071f, + -0.2345625f, 0.64788342f, 0.30542013f, 0.087266102f, + 0.075638793f, -0.50872362f, 0.072879136f, -0.026037408f, + 0.020356551f, 0.0061253388f, -0.093109965f, 0.048999846f, + -0.086337432f, -0.09949185f, 0.46316284f, -0.29548976f, + 0.084069103f, 0.00683332f, -0.25182721f, -0.027479606f, + 0.0053621917f, -0.0015403329f, -0.062678546f, -0.016297817f, + 0.085219048f, 0.12679094f, 0.1905185f, -0.1020946f, + 0.013275808f, 0.69231218f, -0.094603144f, 0.1393231f, + 0.50916028f, -0.027615566f, -0.0096511068f, -0.11700621f, + -0.14855137f, -0.11778621f, 0.10719332f, -0.035909526f, + 0.17119814f, 0.18583317f, -0.0064286762f, 0.042761207f, + 0.61620343f, -0.0043120459f, -0.020233782f, 0.14424533f, + 0.15967339f, 0.08055342f, -0.15316412f, 0.03320393f, + -0.15706693f, -0.11505452f, 0.077395163f, 0.17351685f, + 0.018420614f, -0.4487431f, 0.11849824f, 0.16083531f, + 0.024698503f, -0.32198793f, 0.062286161f, -0.09882357f, + -0.19808097f, 0.066057496f, -0.4359695f, 0.33196321f, + -0.066587664f, -0.0031561509f, -0.081798069f, 0.039866298f, + -0.058103818f, -0.0013986749f, 0.07002911f, -0.034299634f, + -0.056465406f, 0.15510835f, -0.04605503f, -0.21320157f, + 0.050348733f, -0.18343037f, 0.020829838f, -0.046075784f, + 0.15179215f, -0.25187951f, 0.01867068f, -0.032024249f, + -0.12022445f, -0.11240615f, -0.008763738f, -0.00057182339f, + 0.18525209f, -0.12493791f, 0.045769662f, -0.27224541f, + -0.029545184f, -0.086362176f, 0.041618556f, 0.017059203f, + -0.045923743f, -0.00061991817f, 0.15181237f, -0.0449351f, + 0.0024688523f, 0.27143875f, 0.16734177f, -0.024327539f, + -0.03912155f, 0.4452424f, -0.013612485f, 0.031615596f, + -0.049146116f, -0.060884554f, 0.26931298f, -0.3562465f, + 0.025964489f, 0.14449385f, -0.056227844f, 0.38579673f, + 0.068535149f, 0.25002152f, 0.4579986f, -0.022002963f, + -0.33346739f, 0.012612161f, 0.073041007f, -0.27658537f, + 0.25235742f, 0.20070565f, 0.11842387f, 0.20212545f, + 0.15044749f, 0.086320132f, 0.034577936f, -0.019469084f, + -0.016686279f, 0.17915158f, -0.012191715f, 0.0036329105f, + 0.16440575f, 0.26616395f, 0.39326733f, 0.033670597f, + -0.047480993f, 0.011499006f, -0.23803316f, -0.001501075f, + 0.040777236f, 0.073988803f, 0.096517324f, -0.0033943371f, + -0.20007104f, -0.043447334f, 0.31412956f, -0.038045321f, + -0.042510826f, -0.084156781f, -0.084888995f, 0.11697356f, + -0.71322137f, 0.028752413f, 0.01568622f, -0.29888356f, + -0.50533813f, -0.029866224f, 0.063596614f, -0.076509148f, + -0.013862053f, -0.52152306f, -0.012461018f, 0.041665226f, + -0.14978799f, 0.17416626f, 0.018111082f, 0.087403141f, + 0.10735387f, -0.03348555f, -0.27078176f, -0.012836196f, + -0.12108521f, -0.061368357f, -0.075934418f, 0.065803334f, + -0.11160614f, -0.15024672f, 0.22899212f, 0.12401284f, + 0.057029355f, -0.43443826f, 0.11883919f, -0.12654601f, + 0.035611112f, 0.055495303f, -0.48881385f, 0.37775716f, + 0.24152726f, -0.086537495f, 0.00044267406f, -0.0092839105f, + -0.088353127f, 0.20998316f, 0.059735239f, -0.044846788f, + -0.061102506f, 0.18966602f, 0.10338835f, -0.15479411f, + 0.038516704f, -0.10523438f, 0.028552016f, 0.028647045f, + -0.068202309f, -0.22221263f, 0.00090305001f, -0.019552685f, + 0.050814029f, 0.056486379f, -0.0029328351f, 0.0022932948f, + 0.45102623f, -0.026188137f, -0.38386127f, -0.14366308f, + 0.16135928f, -0.056664463f, 0.13647416f, -0.025950408f, + 0.14697398f, -0.016228577f, 0.14164172f, -0.070059933f, + 0.0093530035f, 0.41452432f, 0.033606093f, 0.0037025947f, + 0.043666955f, 0.29268384f, 0.022219755f, 0.0050817905f, + -0.097360894f, -0.071187124f, 0.033951409f, -0.34315339f, + -0.056037482f, 0.009522602f, -0.020802183f, 0.19764167f, + 0.10415332f, 0.083346874f, 0.56597179f, -0.002890052f, + 0.077447347f, 0.015313541f, -0.144269f, -0.11432461f, + -0.028296672f, 0.10187818f, -0.082547173f, -0.067971438f, + 0.050152309f, 0.11706162f, -0.052834935f, -0.0056866645f, + -0.0076826368f, 0.022895779f, 0.088454589f, 0.029443832f, + -0.060787186f, 0.046406064f, -0.00019303783f, -0.33364275f, + -0.14361463f, -0.056119736f, -0.1475087f, 0.0067112581f, + 0.0073669725f, -0.020406142f, 0.22217706f, -0.0025109393f, + -0.054102868f, -0.15886678f, 0.21504925f, 0.1982719f, + 0.03121078f, -0.33541808f, 0.034369759f, 0.032554924f, + -0.012547334f, 0.029924246f, 0.022111204f, -0.17244761f, + -0.21926257f, 0.065024547f, -0.0033872207f, -0.021595653f, + 0.20061922f, -0.28120434f, 0.18595324f, -0.0070948382f, + -0.082923688f, -0.015982039f, -0.015240188f, 0.24944848f, + 0.078469038f, 0.014130221f, -0.026521033f, 0.077945404f, + 0.11884207f, -0.023571162f, 0.062194411f, 0.01995869f, + -0.098623134f, -0.09738782f, 0.26966599f, 0.15620066f, + -0.032570299f, -0.19432048f, 0.24384695f, -0.13607918f, + -0.087669894f, -0.060970306f, -0.13084239f, 0.34599003f, + -0.03117051f, -0.14360279f, -0.0048892996f, -0.057387512f, + -0.036504716f, 0.39720371f, -0.014927314f, 0.0010104069f, + -0.041171879f, 0.1117042f, 0.0077820015f, -0.097098f, + -0.088667877f, -0.23619962f, 0.051209658f, -0.043802824f, + 0.044583745f, 0.63309991f, -0.00081130629f, 0.053319737f, + 0.024026345f, -0.035239827f, 0.0036710997f, -0.01413883f, + 0.12645762f, 0.036409829f, -0.22048663f, 0.018091729f, + 0.11989666f, -0.01595599f, 0.094627239f, 0.0074298233f, + 0.12567875f, -0.019707544f, 0.073913395f, 0.03446532f, + -4.4121582e-05f, 0.34929883f, -0.050605543f, 0.21578984f, + -0.054189224f, -0.27426443f, -0.030208068f, 0.0081052687f, + 0.048696909f, -0.11708041f, -0.17468382f, -0.31172872f, + -0.0063912994f, -0.10888397f, -0.17791748f, 0.065935917f, + 0.044682667f, -0.088298902f, 0.42686287f, -0.057030264f, + 0.30276754f, -0.031145923f, 0.057106495f, -0.30156946f, + -0.036158431f, -0.017244114f, -0.25710937f, -0.12766248f, + -0.080946185f, 0.044603001f, -0.14083989f, -0.0065940712f, + -0.045578934f, 0.049954601f, 0.1132937f, -0.088807866f, + 0.089789718f, 0.095499694f, -0.10021325f, -0.4664143f, + 0.10247778f, 0.013405713f, -0.2588599f, -0.027535725f, + -0.026287826f, -0.066418275f, -0.029388288f, -0.038112193f, + 0.29007149f, -0.21816432f, 0.18529034f, 0.054528814f, + -0.011554761f, -0.37264314f, -0.018492687f, -0.080431089f, + 0.18406279f, -0.002638266f, 0.0095324423f, -0.1064245f, + -0.06954775f, 0.07662379f, -0.0050159199f, -0.053771008f, + -0.0057740095f, 0.18548891f, 0.025642168f, 0.058159482f, + -0.025416793f, 0.17136651f, 0.0030171962f, 0.26721987f, + 0.10168042f, -0.047271829f, 0.028731218f, -0.02105294f, + 0.071503058f, -0.086045846f, -0.042449005f, -0.093017578f, + 0.063561969f, -0.0425229f, -0.039872769f, 0.12715855f, + 0.015185724f, 0.011263358f, 0.19464929f, 0.011164744f, + -0.01080649f, 0.029265862f, 0.46771967f, 0.29318726f, + -0.20420773f, -0.10368004f, 0.001924981f, -0.015294404f, + -0.0080209989f, -0.11689939f, -0.0073973266f, 0.011256498f, + -0.041333444f, 0.073462076f, 0.052908529f, -0.17265016f, + 0.0093132649f, -0.11970732f, -0.04600108f, -0.15385479f, + -0.0039016653f, 0.24338636f, -0.030047288f, 0.08345516f, + 0.052398186f, 0.0051175389f, 0.0066937543f, 0.0028346444f, + -0.20234078f, 0.24395873f, 0.32678527f, 0.079110429f, + 0.2182115f, 0.084075242f, -0.046018496f, -0.089221872f, + -0.018815555f, 0.0035298148f, 0.17581972f, 0.093098201f, + -0.0022805699f, 0.16297951f, -0.02511544f, -0.086141199f, + 0.082865693f, -0.60391325f, 0.01000235f, -0.071654685f, + -0.041993171f, -0.0043132133f, -0.15870656f, -0.28905892f, + 0.012884711f, -0.031260915f, 0.092034429f, 0.010649554f, + 0.0092364019f, -0.0055341963f, 0.28820649f, 0.030714411f, + 0.47603777f, -0.032623794f, -0.13469683f, -0.30605689f, + 0.1028792f, -0.081199393f, -0.19964738f, 0.18319081f, + 0.00042358873f, 0.11936491f, -0.029138023f, 0.011826665f, + 0.039819051f, 0.050001554f, -0.10876027f, 0.012306384f, + -0.055326574f, 0.1308164f, -0.0052206125f, -0.30351597f, + 0.063889921f, -0.023225846f, -0.24911597f, 0.015704684f, + 0.00096266263f, -0.05651886f, 0.00088316691f, -0.023434149f, + 0.43056569f, -0.22751269f, -0.13110742f, -0.10518619f, + 0.019746738f, -0.23336552f, -0.019844946f, 0.068647183f, + 0.1762408f, 0.019592479f, 0.01706419f, -0.012461587f, + 0.090071134f, -0.05475954f, -0.019282134f, 0.06152175f, + -0.011968409f, -0.049354047f, -0.055732276f, -0.045647178f, + -0.28453082f, -0.0057657808f, -0.0053890003f, 0.17689075f, + 0.088842168f, -0.036764618f, 0.072160348f, 0.088891961f, + 0.019834826f, -0.035465986f, -0.025024747f, -0.16857325f, + -0.21733446f, -0.010772684f, 0.049681164f, 0.1630408f, + -0.19517429f, 0.10080395f, 0.14772178f, 0.025034089f, + -0.081618436f, -0.054097816f, 0.15355113f, 0.27816197f, + -0.17461057f, -0.12799709f, -0.08419919f, 0.034749601f, + -0.010543418f, -0.38726544f, 0.038338777f, 0.092504248f, + 0.04257397f, 0.094177f, -0.028919967f, -0.23129629f, + -0.048366848f, -0.085639574f, -0.051747873f, -0.072754063f, + 0.041364938f, -0.14612089f, 0.044582088f, 0.067897856f, + -0.0035473297f, -0.012064255f, -0.012315891f, -0.028791899f, + -0.26886982f, 0.33142337f, -0.3402566f, 0.18530729f, + 0.12822326f, 0.0081827175f, 0.065898314f, -0.048312139f, + -0.071390852f, 0.00076784816f, 0.17591077f, 0.11149811f, + -0.019545481f, -0.042370517f, -0.069951877f, -0.35418901f, + 0.027481556f, -0.49614921f, 0.0010892544f, -0.082891978f, + -0.18708253f, -0.040156502f, 0.048364431f, -0.24213561f, + 0.027995601f, 0.00017279052f, 0.22016141f, 0.10727899f, + -0.1119635f, 0.2105249f, 0.25836957f, -0.031436615f, + 0.16621201f, 0.06044618f, 0.11132894f, 0.15986857f, + 0.059493236f, -0.18675871f, -0.31469062f, -0.12888113f, + -0.065887503f, 0.047745701f, 0.22531918f, -0.035526745f, + 0.016647872f, -0.10286362f, 0.00058122951f, 0.054023862f, + -0.072303765f, 0.27464715f, 0.12864491f, 0.051853456f, + 0.15656753f, 0.010490845f, -0.25215578f, -0.022445841f, + -0.023295537f, 0.026143208f, -0.010534219f, 0.013942447f, + 0.15672064f, -0.12129117f, -0.15722027f, -0.20157716f, + -0.030671807f, -0.028591784f, -0.063412353f, 0.02098869f, + 0.041469175f, 0.080083787f, -0.021153785f, 0.095237263f, + 0.049377114f, 0.1108567f, 0.014403543f, -0.093306035f, + -0.022253741f, -0.67387283f, 0.038004857f, 0.0025340412f, + -0.53303844f, 0.054726992f, 0.0075189658f, -0.10086695f, + 0.015468624f, -0.07316003f, 0.13602668f, -0.15573658f, + 0.13766831f, -0.23957439f, -0.080644779f, -0.14469136f, + 0.14972147f, -0.022454999f, -0.029332105f, 0.22682077f, + 0.039770715f, -0.011479881f, 0.1027329f, 0.067271926f, + -0.16200392f, 0.033868335f, 0.02715726f, 0.59647137f, + -0.25632846f, 0.0011859211f, -0.010157485f, -0.025361547f, + -0.033067066f, -0.16416629f, 0.014234489f, -0.032635238f, + -0.016348444f, 0.085013486f, 0.0039283992f, -0.12101649f, + 0.13016908f, 0.13971184f, -0.030307623f, -0.11979999f, + -0.097393766f, -0.27640283f, -0.055947624f, -0.04048517f, + 0.072842434f, 0.098103829f, 0.022405285f, -0.0021032537f, + 0.010528006f, 0.13331325f, -0.052266698f, 0.31957838f, + 0.020137521f, -0.084997341f, 0.10593625f, 0.050221112f, + -0.067718521f, 0.059767697f, 0.19166279f, 0.18364555f, + -0.010123167f, 0.011774546f, -0.23844075f, -0.39785638f, + 0.15617324f, -0.16527517f, 0.04024069f, 0.026113676f, + -0.011707763f, 0.037426434f, 0.34314001f, -0.14102308f, + -0.070524439f, 0.027936604f, -0.024723217f, 0.018281648f, + -0.0400455f, 0.1512493f, 0.098437324f, 0.0038316566f, + -0.0092396894f, -0.22768462f, 0.012796065f, 0.41929501f, + -0.028619856f, -0.37040651f, -0.42415208f, -0.084713981f, + -0.095274225f, 0.063491717f, -0.034018211f, 0.031975482f, + -0.021323044f, 0.020974705f, 0.0026936554f, 0.080671653f, + 0.030182844f, 0.094729379f, 0.038762555f, -0.11519086f, + 0.22842446f, 0.0028587454f, -0.29715565f, 0.010733023f, + 0.022782421f, -0.0028672179f, 0.040143315f, -0.024093283f, + -0.089376785f, 0.1778388f, 0.070082188f, -0.037334744f, + 0.010465144f, 0.1167322f, 0.031387039f, -0.049609773f, + 0.014910205f, 0.064177729f, 0.012081055f, -0.20832321f, + 0.42990944f, -0.051021896f, -0.015808692f, -0.014505049f, + 0.1473942f, 0.080815628f, -0.040103074f, -0.042053312f, + -0.49403244f, 0.070764914f, -0.026352907f, -0.37705311f, + 0.15502754f, -0.046455417f, -0.12190183f, -0.050495327f, + 0.008730595f, -0.33808094f, -0.14543556f, 0.21514964f, + 0.18843482f, -0.03637157f, 0.15099631f, 0.14714487f, + 0.084883548f, 0.028372759f, 0.11412565f, -0.18404041f, + -0.053757563f, -0.15108652f, 0.1940977f, 0.38027424f, + -0.045497846f, -0.03651784f, 0.014483728f, 0.036605172f, + 0.0086497925f, 0.25920385f, -0.010465873f, -0.050164502f, + 0.10868282f, 0.061664548f, -0.026711984f, -0.16725594f, + -0.016400678f, -0.087614298f, 0.018788183f, -0.12026688f, + -0.031153517f, 0.24652338f, 0.036134262f, -0.053021114f, + 0.041276917f, 0.021462006f, -0.012749595f, 0.0017512904f, + 0.14325948f, -0.30556613f, -0.1544627f, -0.024468862f, + -0.42553326f, 0.080140568f, -0.060285609f, 0.016821912f, + -0.012434325f, -0.011085237f, 0.056302421f, 0.089099497f, + 0.0019958469f, 0.012082741f, -0.05250534f, 0.13827588f, + -0.024217509f, 0.14775303f, -0.013956954f, 0.025872018f, + -0.017371437f, -0.087109856f, -0.20941328f, -0.10186563f, + 0.011633124f, -0.059714645f, -0.50571913f, -0.065346316f, + -0.16078451f, -0.094840415f, 0.05592066f, 0.013792405f, + -0.23735669f, -0.084668711f, -0.023807637f, 0.3136673f, + -0.19577116f, -0.62421668f, -0.47555584f, -0.065267697f, + -0.24482067f, 0.026606098f, -0.148458f, -0.014514706f, + -0.016513631f, -0.04012065f, 0.020538062f, 0.045382995f, + -0.014234803f, 0.053550251f, -0.40499425f, -0.58552152f, + 0.12708391f, -0.0063589625f, 0.00930175f, -0.051321823f, + 0.012706817f, -0.038834494f, 0.06565699f, -0.030821808f, + 0.046309371f, 0.15232104f, -0.01184642f, 0.25511703f, + 0.011761046f, 0.27638075f, 0.092504159f, -0.1740368f, + -0.036392994f, 0.0888156f, -0.0063045491f, -0.036827885f, + -0.31830704f, 0.14080243f, 0.075197674f, 0.039094429f, + -0.19183752f, -0.055581979f, -0.11329791f, 0.033291176f, + 0.31921577f, 0.1340865f, 0.017506549f, -0.50305963f, + 0.14845847f, -0.034828182f, -0.028041303f, -0.075462565f, + 0.20023023f, 0.034268893f, 0.20582803f, 0.064064234f, + 0.040921852f, 1.2474422f, -0.41325846f, 0.0045764842f, + 0.20393325f, 0.6873194f, 0.88174039f, 0.39657184f, + 0.090088926f, -0.036578938f, 0.14841893f, -0.96222878f, + -0.16986653f, 0.25656614f, -0.052675791f, 0.018436989f, + 0.20064016f, -0.32225099f, -0.049671289f, -0.027606472f, + -0.18821816f, 0.2521351f, 0.04793537f, 0.071810283f, + -0.094625093f, 0.34688303f, -0.079384856f, 0.1934164f, + -0.058775444f, -0.13608508f, -0.081767388f, 0.042144801f, + 0.30211529f, 0.24793555f, 0.012914439f, 0.010451543f, + -0.5379076f, -0.16273105f, 0.014957445f, 0.072607853f, + -0.069973968f, 0.0069546471f, -0.12720133f, 0.010527776f, + -0.21022274f, 0.0030391496f, -0.70509118f, 0.12050018f, + 0.0071483185f, 0.29311669f, -0.22056928f, 0.68632233f, + 0.080119118f, 0.48037672f, 0.024665406f, -0.013722155f, + -0.053182501f, -0.022241f, -0.20823026f, -0.46327063f, + -0.10375974f, 0.01383832f, 0.30970576f, -0.3193171f, + 0.34159729f, 0.13488542f, 0.006266247f, -0.03184915f, + -0.58792853f, 0.16881792f, -0.058267742f, -1.397277f, + -0.013711041f, 0.50473446f, -0.04749484f, -0.03235548f, + -0.073458813f, -0.71754938f, 0.084354244f, -0.019954389f, + -0.053553049f, -0.048553921f, 0.064717375f, -0.026989808f, + -0.043646324f, -0.24971019f, 0.36000961f, -0.075908467f, + 0.010393898f, -0.011875345f, 0.22528686f, 0.031782094f, + 0.013744853f, -0.081925169f, -0.28134418f, 0.016496712f, + 0.41559878f, 0.38917175f, -0.020579761f, -0.030937506f, + -0.023768974f, 0.66595632f, 0.012727298f, -0.079797611f, + 0.38062906f, -0.021789417f, 0.029945245f, -0.02841069f, + -0.2926743f, 0.12866133f, -0.036771946f, -0.045591556f, + 0.079103723f, 0.45693052f, -0.045059595f, 0.035465401f, + 0.3239288f, 0.081363216f, 0.01075694f, 0.068149731f, + -0.16286425f, 0.032699123f, -0.019523075f, -0.073790535f, + -0.17705256f, -0.05537178f, 0.1310802f, 0.06067808f, + 0.059122708f, -0.72373003f, 0.50894302f, -0.0066971099f, + 0.089367278f, -0.45525008f, 0.45822793f, -0.098679043f, + -0.0060155736f, -0.034966648f, -0.29567125f, -0.28775519f, + 0.25989339f, -0.10456544f, 0.051417019f, -0.12978311f, + 0.020951673f, 0.060711991f, -0.0066101607f, 0.048331201f, + 0.11430655f, 0.036157958f, 0.030384863f, -0.18258797f, + 0.020139743f, -0.088513032f, -0.049696848f, -0.017609637f, + -0.060080681f, 0.29482949f, 0.031606603f, -0.088365525f, + 0.0017253571f, -0.0065622483f, -0.021297345f, -0.019975824f, + 0.42266408f, -0.11983827f, 0.11624102f, -0.5170759f, + -0.14664362f, 0.057604585f, 0.17982024f, -0.0051995236f, + -0.072460689f, 0.021812448f, 0.4104411f, -0.039809961f, + 0.00030516018f, 0.51460594f, -0.10676676f, 0.0063009025f, + -0.0029799594f, 0.36724466f, -0.0022561392f, -0.024643237f, + -0.022488382f, -0.025110792f, 0.35323566f, -0.34006873f, + 0.095871136f, -0.13147984f, -0.18707216f, 0.33866996f, + 0.085724771f, 0.1324622f, 0.17235106f, -0.0095112063f, + 0.011611086f, 0.026234748f, 0.08826793f, -0.10330611f, + -0.1495703f, 0.1314922f, -0.098856181f, -0.12779748f, + 0.054526888f, 0.080669329f, 0.02906407f, 0.021468297f, + 0.0063800164f, 0.090201713f, -0.083166316f, 0.14735137f, + 0.091184117f, 0.064072371f, -0.018274615f, 0.016826417f, + -0.1849061f, 0.014324261f, -0.26618767f, 0.014795935f, + -0.045272633f, -0.0010723398f, 0.12742379f, -0.0074387142f, + 0.25860971f, 0.009909655f, 0.093463793f, -0.011119536f, + 0.02847179f, -0.20418797f, -0.18083899f, 0.044818137f, + -0.59197783f, -0.015707338f, -0.023597859f, -0.11790786f, + -0.36318406f, -0.047303021f, -0.015857f, -0.049658868f, + -0.010429949f, -0.2893596f, 0.025946049f, -0.030541785f, + 0.1141111f, -0.091508165f, -0.0096157752f, 0.26364571f, + -0.049658764f, -0.018166097f, -0.076578565f, -0.03877664f, + -0.25300875f, -0.038205288f, -0.11188482f, -0.16361095f, + 0.0020655338f, -0.34844467f, 0.50785339f, -0.054037124f, + 0.1384429f, -0.15200317f, 0.47101155f, -0.12271539f, + -0.045917675f, -0.053386215f, -0.18934359f, -0.22413237f, + 0.23955382f, 0.030582314f, -0.094402842f, 0.12436175f, + -0.13367826f, 0.33806348f, 0.018128833f, 0.0064417864f, + -0.14763492f, 0.085893996f, -0.045369763f, -0.065218218f, + 0.056610599f, 0.095925711f, 0.068997145f, -0.043709658f, + -0.050043419f, 0.34610489f, 0.049813155f, 0.069158159f, + 0.048007216f, -0.02685545f, -0.0035540843f, -0.00012824062f, + 0.38609111f, 0.07019116f, -0.19259058f, -0.093782529f, + -0.11957791f, -0.090912364f, -0.18253276f, -0.054654166f, + 0.054607127f, -0.017055122f, 0.13768554f, -0.031242382f, + 0.010095585f, 0.30682448f, -0.19557388f, -0.12029585f, + 0.036177598f, 0.0071197771f, 0.021834165f, 0.008639602f, + 0.052974805f, 0.03609629f, 0.027315592f, -0.35154361f, + 0.10316098f, -0.0220719f, 0.037811548f, 0.18313856f, + -0.067291953f, -0.13621514f, 0.24301569f, 0.023547431f, + 0.22307876f, -0.017574128f, 0.14208674f, 0.16785878f, + -0.16684064f, 0.049554665f, -0.095395237f, -0.086769082f, + 0.10029644f, 0.12047232f, 0.044219598f, 0.038337294f, + -0.0055617113f, 0.05317992f, -0.12682864f, 0.044619508f, + -0.13064046f, 0.087467298f, -0.092375293f, -0.22783543f, + -0.17090613f, 0.026106341f, -0.13846523f, -0.017959306f, + 0.0099050794f, -7.8265228e-05f, 0.1077747f, -0.018690934f, + 0.16901456f, -0.0029486476f, 0.11811167f, 0.15256391f, + -0.019626884f, -0.26511693f, -0.0091026165f, 0.033517417f, + 0.030344069f, 0.092363387f, -0.001030284f, 0.27374277f, + -0.088595159f, -0.055070218f, 0.0034791715f, -0.094385222f, + 0.055447917f, -0.018296104f, 0.081199534f, -0.073371254f, + -0.017467584f, -0.12658706f, -0.0026550998f, 0.2074731f, + -0.044011407f, 0.048866071f, -0.014462227f, -0.052633245f, + -0.02192639f, 0.091032475f, 0.029383063f, -0.053469714f, + -0.055294503f, -0.15313143f, 0.46751904f, 0.034518018f, + 0.13479908f, 0.19842981f, 0.3829338f, -0.11462662f, + 0.0088887494f, 0.0094576664f, 0.18901873f, -0.25855801f, + 0.22262529f, -0.022867184f, -0.07995002f, 0.020034285f, + -0.08816091f, 0.21781687f, -0.052052703f, -0.036746107f, + -0.14753282f, 0.044817675f, -0.00042425873f, -0.10323938f, + 0.21180183f, -0.044231024f, -0.08285179f, -0.074586064f, + -0.037350569f, 0.44223472f, 0.020740997f, -0.13683371f, + -0.1594341f, -0.0051775635f, -0.0030123799f, 0.003189649f, + -0.029981181f, 0.14841902f, -0.16210777f, -0.028834492f, + 0.025180953f, -0.032379534f, 0.010251699f, 0.068543851f, + 0.091431282f, 0.040814217f, 0.088376276f, 0.072696745f, + 0.0050743213f, 0.10542393f, -0.19365159f, 0.038443521f, + 0.011529519f, -0.30757833f, -0.0022249823f, 0.029085623f, + 0.014921389f, -0.013725318f, -0.22155677f, -0.28939748f, + 0.037783485f, 0.043115824f, 0.13318437f, 0.05541404f, + 0.0378168f, -0.22817233f, -0.042625718f, -0.0097664613f, + 0.28908855f, -0.030910039f, 0.034844384f, 0.077062249f, + 0.013759133f, 0.013918248f, -0.15046436f, 0.067982204f, + 0.10324843f, 0.050312221f, -0.11544022f, -0.027275762f, + 0.031140804f, 0.11922835f, 0.061667025f, 0.037814904f, + -0.048140135f, 0.026252942f, 0.023488056f, -0.2293525f, + -0.07153745f, -0.013857696f, -0.19478491f, -0.019784098f, + 0.0071475762f, -0.023269985f, 0.029378176f, 0.0022567175f, + 0.19847168f, -0.062000591f, -0.018738454f, 0.0080410922f, + -0.0022511219f, -0.21541512f, 0.0099009974f, -0.01936334f, + 0.15709357f, -0.025885837f, -0.0060464549f, 0.23610926f, + -0.063174382f, -0.10858611f, -0.076179177f, 0.065199964f, + 0.0052554905f, 0.33080351f, 0.036806077f, 0.051065907f, + 0.027357904f, 0.051377032f, 0.014204293f, 0.26221091f, + -0.13077265f, -0.045505255f, 0.085508853f, -0.010954021f, + -0.13885145f, -0.078364566f, 0.051960979f, 0.11907285f, + 0.00029363498f, -0.056404542f, 0.23835662f, 0.028513221f, + 0.15716802f, 0.11777501f, 0.39858592f, -0.2039519f, + 0.021396622f, 0.033341888f, 0.50572151f, -0.32786992f, + 0.12477819f, 0.0083834538f, -0.055095538f, 0.087891094f, + -0.0355752f, -0.22803393f, 0.0064017158f, 0.079297379f, + 0.017820699f, -0.024481513f, -0.042215973f, -0.073219955f, + 0.15530673f, 0.094069757f, -0.042958103f, -0.05555404f, + 0.044616126f, -0.37307498f, 0.010811945f, 0.026332652f, + 0.083314151f, -0.011874026f, -0.001882331f, 0.0032543815f, + -0.33894485f, 0.14609638f, 0.27232406f, 0.13677733f, + -0.015836686f, -0.049920637f, 0.020232489f, -0.045501854f, + 0.022181243f, 0.0009739938f, 0.020016432f, 0.043936465f, + -0.0055651208f, -0.042557757f, -0.14072482f, 0.042423617f, + 0.043193992f, -0.55048513f, 0.0058073844f, 0.0085158283f, + -0.0047307662f, 0.1361524f, -0.16205366f, -0.28274208f, + 0.058904208f, -0.01013676f, 0.093330435f, 0.054709688f, + -0.10312972f, 0.042759791f, -0.05619802f, -0.0001453299f, + 0.23434721f, 0.024895456f, 0.028486803f, 0.11191059f, + 0.030769791f, 0.015419939f, -0.080278218f, 0.11592754f, + 0.046346243f, 0.10623524f, -0.086045861f, 0.0044403644f, + -0.038178459f, -0.044611841f, -0.16285791f, -0.036950529f, + -0.026160406f, -0.067931995f, -0.2920934f, 0.019403705f, + -0.039416108f, 0.042181425f, -0.23383817f, -0.0097203376f, + -0.00031746752f, -0.021672735f, -0.01314733f, -0.0011491885f, + 0.22643171f, 0.091945142f, -0.18765302f, -0.048005681f, + -0.0058291759f, -0.19839095f, 0.073281564f, 0.034662206f, + 0.078833193f, 0.026141681f, 0.005506997f, -0.14941025f, + -0.0091698021f, -0.13308954f, 0.035012815f, -0.10841392f, + -0.13923548f, 0.094024092f, 0.086243898f, 0.03241761f, + -0.19662407f, -0.19943316f, -0.033118773f, 0.099561386f, + -0.053639717f, 0.042345602f, 0.12939221f, 0.10897914f, + -0.10597505f, -0.016449325f, 0.013523181f, 0.2012215f, + -0.18450524f, 0.056895573f, 0.26980972f, -0.027196437f, + 0.037012558f, 0.045600601f, 0.35361019f, -0.12915182f, + -0.03375712f, 0.033122495f, -0.0060768435f, -0.097213812f, + -0.073035039f, 0.018533047f, 0.0052690995f, -0.12072659f, + -0.011468729f, -0.36819404f, -0.0087216534f, -0.046607871f, + -0.015943f, 0.038977306f, 0.037489463f, -0.068324909f, + -0.056601062f, 0.079446994f, 0.086617574f, 0.060863551f, + -0.05478093f, -0.29377311f, -0.0089189084f, -0.011956458f, + -0.21505818f, 0.044498395f, 0.030270452f, 0.015068873f, + -0.086192437f, 0.12221194f, -0.33295041f, 0.2016478f, + -0.16852634f, -0.10537563f, 0.12441675f, -0.0055083232f, + -0.059582528f, -0.059483722f, 0.26032209f, 0.077048339f, + -0.012455289f, -0.18639413f, -0.31256387f, -0.17504059f, + -0.015807375f, -0.28857428f, 0.014465875f, 0.0016953059f, + -0.0011301658f, 0.0064305072f, 0.15302952f, -0.21053948f, + -0.088885255f, -0.19197589f, 0.28848916f, 0.067036882f, + -0.015842892f, 0.12466326f, -0.15438455f, 0.033069216f, + 0.084717646f, 0.067954488f, 0.0072929305f, 0.34722969f, + 0.051223341f, -0.081897862f, -0.001903941f, -0.061200958f, + 0.084463537f, 0.15937495f, 0.15541479f, 0.0095698508f, + -0.0066254064f, -0.019076576f, -0.027503721f, -0.14731148f, + 0.031302683f, -0.087186731f, 0.072506659f, 0.14897563f, + -0.18593298f, -0.011357795f, -0.16265541f, 0.0052269441f, + 0.0025513654f, 0.083003454f, -0.03243858f, 0.060369462f, + 0.024480294f, 0.1644682f, -0.17883323f, 0.02540982f, + -0.0015299151f, -0.092874706f, -0.098095253f, 0.18384826f, + -0.032525647f, -0.075697392f, 0.009172719f, -0.18047111f, + -0.17677605f, 0.015081247f, 0.064198636f, -0.024960011f, + -0.16891541f, -0.33534664f, -0.0084272204f, -0.044449508f, + -0.32857266f, -0.012069382f, -0.011583069f, -0.016994724f, + -0.076496422f, 0.075478338f, 0.0080906823f, 0.037063289f, + -0.012049289f, -0.10409402f, -0.043965708f, 0.47293788f, + 0.26780063f, 0.022674736f, 0.13985315f, -0.019863784f, + 0.10293131f, 0.006074572f, 0.34583727f, -0.034125414f, + -0.02986519f, 0.037995383f, -0.26343605f, 0.28122491f, + -0.042825133f, -0.062527612f, 0.035883538f, -0.054208234f, + 0.012841734f, -0.17501579f, -0.0058515845f, -0.0028739625f, + 0.13603075f, -0.0022721835f, 0.0044629155f, -0.12246499f, + 0.043378588f, 0.074076325f, -0.082638741f, -0.061921641f, + -0.31707659f, -0.46392584f, 0.00013399631f, -0.0094845798f, + -0.036680628f, 0.026772797f, -0.036343627f, -0.0048531867f, + 0.064423256f, -0.084938236f, -0.073010266f, 0.31302014f, + -0.21142243f, -0.01998671f, 0.12265605f, 0.049590513f, + -0.057046119f, -0.033547174f, 0.2150792f, -0.0043075024f, + 0.011607289f, -0.18875164f, -0.25141093f, -0.2434842f, + -0.094025165f, -0.010572129f, -0.051602643f, -0.007031207f, + 0.051081445f, 0.018194452f, 0.19104773f, -0.14523901f, + -0.057173353f, 0.036128581f, 0.37006611f, 0.069895618f, + -0.20748845f, -0.015776243f, -0.12902167f, -0.022525987f, + -0.061389182f, 0.0043662204f, -0.30469897f, 0.33418247f, + 0.04133999f, -0.14123827f, -0.044159267f, -0.021431254f, + 0.020874003f, 0.14674604f, 0.028243244f, -0.011087305f, + 0.030999828f, 0.04845399f, -0.059704002f, 0.017019577f, + 0.012803303f, -0.14011039f, -0.074396305f, 0.053213712f, + 0.060208835f, -0.00045820492f, -0.2892465f, 0.009925534f, + -0.034329981f, -0.044272881f, -0.010007272f, -0.003086641f, + -0.14005515f, 0.38683909f, 0.0010958512f, 0.040817227f, + -0.013071286f, 0.031440984f, -0.065346278f, 0.046448503f, + -0.055940669f, -0.074666172f, -0.016372416f, -0.43963474f, + 0.12822747f, 0.0011049995f, -0.089919597f, -0.018873563f, + -0.22128415f, 0.25136796f, 0.002226487f, -0.10375933f, + -0.15662345f, -0.14360598f, 0.010522478f, -0.21351045f, + -0.16638145f, 0.037130035f, 0.074200757f, -0.03562998f, + 0.0098397415f, -0.21358037f, 0.081971385f, 0.11125028f, + -0.22630115f, -0.03852063f, 0.095366612f, -0.043066729f, + 0.14916566f, 0.087474205f, 0.40442616f, -0.36943826f, + -0.060581859f, -0.10328505f, -0.29364151f, 0.19143559f, + 0.37174997f, -0.082818776f, -0.039670628f, 0.030101473f, + 0.0048186267f, 0.17490707f, -0.011094363f, 0.012809157f, + 0.07703843f, 0.03936119f, 0.021511313f, -0.013653985f, + -0.079381265f, 0.009133541f, 0.092703447f, 0.033245534f, + -0.17726301f, 0.0065790457f, -0.023851326f, -0.11107012f, + 0.014790374f, 0.0081738187f, 0.0023113694f, 0.016794806f, + 0.14674343f, -0.39607471f, 0.25893441f, 0.015585741f, + -0.64356339f, -0.10610931f, -0.31398359f, 0.064908288f, + -0.0075018536f, 0.066527694f, -0.0082905218f, 0.022757573f, + 0.0025368033f, -0.17969015f, -0.23966025f, 0.039363284f, + -0.12556112f, 0.33389753f, 0.0047992528f, -0.022939553f, + 0.073417574f, -0.021184014f, -0.10658645f, -0.25547603f, + 0.059005119f, -0.022997264f, -0.075360909f, 0.0017978824f, + -0.18349642f, -0.032177478f, -0.10623042f, 0.016209817f, + -0.18504088f, -0.052019712f, 0.0043850727f, 0.18053888f, + -0.14122878f, -0.33256248f, -0.1814401f, 0.17486319f, + -0.05142976f, 0.067750253f, -0.10741917f, -0.0055353269f, + -0.039756041f, 0.060193807f, -0.045410842f, -0.035513986f, + -0.2184041f, -0.22092733f, -0.34127808f, -0.55853963f, + -0.025605591f, -0.001095549f, -0.14734012f, 0.015456444f, + -0.0094413487f, -0.053780161f, -0.079823121f, 0.0045806309f, + -0.00087538327f, 0.59852004f, -0.061025377f, 0.29257116f, + -0.0044688317f, 0.22436465f, -0.036383964f, -0.0042773965f, + -0.062784903f, -0.070252232f, 0.020896252f, 0.17656474f, + 0.011931998f, -0.090243675f, -0.028479317f, -0.033921435f, + -0.10115558f, 0.1428901f, -0.1527562f, 0.081937686f, + 0.25928599f, -0.024393884f, 0.022007793f, -0.55030692f, + -0.1730376f, 0.016275078f, 0.047681797f, -0.017301125f, + 0.3793841f, 0.13642906f, 0.030147295f, -0.19318567f, + 0.16265851f, 1.2968328f, -1.1161833f, -0.10880425f, + -0.054530259f, 0.1944678f, 0.035192031f, 0.21044198f, + 0.14021529f, -0.34980172f, 0.41281155f, -0.081121355f, + -0.28944686f, 0.24042287f, -0.014728174f, -0.029906111f, + 0.043644097f, -0.27414078f, 0.070834137f, 0.026967227f, + -0.17021419f, 0.050512638f, 0.040012423f, 0.78088778f, + -0.21931559f, 0.22574294f, -0.055648066f, 0.083885401f, + -0.29156801f, -0.22480273f, -0.030762861f, 0.14770903f, + 0.70165557f, 0.42351294f, 0.0060538617f, -0.017503152f, + -0.19604248f, -0.074601382f, 0.45677114f, 0.26729381f, + 0.11505033f, -0.030453272f, -0.01888602f, 0.077064112f, + -0.15481497f, 0.015208898f, -0.82059938f, 0.26499322f, + 0.0094783828f, 1.0172418f, -0.28478071f, 0.40459725f, + -0.0067860824f, -0.93497634f, -0.011744315f, -0.080381401f, + -0.016584516f, -0.030250037f, -0.13297072f, -0.55197167f, + -0.045097299f, -0.10556156f, 0.10280353f, -0.33570147f, + 0.38354731f, 0.50020379f, 0.16474093f, -0.014402667f, + -0.18711022f, -0.021138873f, -0.16302891f, -0.83289236f, + -0.15376033f, 0.3204205f, 0.078610107f, -0.088836692f, + -0.16929887f, -0.79623181f, 0.25108576f, -0.0055403686f, + 0.0086340718f, -0.11163231f, 0.12217908f, 0.0024911216f, + -0.10647231f, -0.22290517f, 0.078209892f, 0.43440768f, + 0.064320624f, 0.0064570806f, 0.38527414f, 0.0042407224f, + 0.0053104879f, -0.027230943f, -0.25058293f, -0.0021604514f, + 0.81995368f, 0.27083573f, -0.19408955f, -0.1746681f, + 0.028965734f, 0.47385108f, 0.24971697f, -0.28078851f, + 0.35870251f, 0.004828875f, -0.02275967f, 0.28112626f, + -0.11497205f, -0.01845634f, 0.0075249686f, -0.11509672f, + 0.034451395f, 0.47360379f, -0.093172103f, 0.045136198f, + 0.27941662f, -0.032106925f, -0.01321551f, -0.089598633f, + -0.23024964f, -0.026222106f, 0.012022197f, 0.058214732f, + -0.068291366f, -0.10499399f, -0.14876015f, -0.060996879f, + -0.062995307f, -0.80335331f, 0.18266892f, -0.11857773f, + -0.16473299f, -0.14934185f, -0.040326849f, 0.31623954f, + -0.022517933f, -0.026816808f, -0.052997481f, -0.0069634262f, + -0.12987362f, -0.14218558f, -0.066408902f, -0.11600652f, + 0.14067629f, 0.095223695f, -0.068845578f, -0.070508674f, + -0.042664904f, -0.070568971f, -0.01136506f, 0.2778905f, + -0.043645397f, -0.088790156f, -0.012218999f, -0.10656158f, + 0.11752042f, 0.35583407f, -0.0013558976f, -0.016810734f, + 0.09880051f, -0.15643229f, -0.033531826f, 0.0025714361f, + 0.27929264f, -0.22981593f, 0.14910845f, -0.41251853f, + -0.049217232f, -0.057735495f, -0.18328084f, 0.035679359f, + 0.10846651f, -0.010340681f, 0.61010891f, 0.024942769f, + -0.014039923f, 0.2593185f, -0.10374393f, 0.18348353f, + -0.035554189f, -0.06399212f, 0.016508481f, 0.014965654f, + -0.021797534f, 0.12007097f, 0.47493488f, -0.29880244f, + 0.070895948f, 0.11477858f, -0.49133804f, 0.2496504f, + 0.10934578f, -0.15245366f, 0.00061086059f, 0.038809255f, + 0.095156282f, -0.034056418f, 0.012354343f, 0.35224226f, + -0.10160334f, 0.10883579f, 0.030002689f, -0.085935898f, + -0.018694464f, 0.046820864f, 0.10293165f, -0.0026044734f, + 0.021841509f, 0.040128294f, 0.040265355f, 0.085950501f, + -0.078670233f, 0.073442817f, 0.029939f, 0.44268328f, + -0.15585354f, -0.016836394f, -0.38857156f, -0.022534132f, + -0.024708115f, 0.014021264f, -0.17290783f, 0.0055177896f, + 0.38243973f, 0.11803322f, 0.12671274f, 0.11018722f, + -0.03177581f, -0.11521649f, -0.1225685f, -0.084103853f, + -0.52870595f, -0.0011025907f, -0.016764447f, 0.02650781f, + -0.13243631f, -0.046659585f, 0.027840754f, 0.051138256f, + 0.21469052f, -0.18375339f, -0.026671985f, -0.0055679302f, + 0.06407176f, 0.076677904f, 0.007080656f, 0.12685409f, + -0.1405737f, -0.0043610702f, 0.054582559f, -0.049153022f, + -0.087153912f, 0.010101264f, -0.11131462f, -0.052514903f, + 0.039836481f, -0.44797069f, 0.16005953f, -0.082834333f, + -0.021661492f, 0.029838523f, -0.069979727f, 0.55770993f, + 0.072204776f, -0.027549498f, -0.36195633f, -0.25844756f, + -0.083334073f, 0.005146191f, -0.051764064f, -0.007823512f, + -0.12866622f, 0.34221911f, -0.014554419f, 0.051966008f, + -0.13416146f, -0.010286723f, -0.010335099f, 0.34849018f, + 0.15087104f, 0.07425274f, -0.089156941f, 0.037715614f, + -0.018507792f, 0.26307675f, -0.022008728f, -0.15830593f, + -0.18060499f, -0.16297555f, 0.011233189f, 0.012104372f, + 0.26138031f, -0.14064208f, 0.18190522f, -0.075392842f, + -0.16976f, -0.011494699f, -0.082413211f, 0.0061269575f, + 0.11511787f, 0.028831813f, 0.29749155f, 0.016839474f, + -0.000412163f, -0.1114114f, -0.12913193f, 0.1064461f, + 0.0072597368f, 0.3040837f, 0.0028665015f, -0.012349932f, + -0.0056536915f, 0.014108145f, 0.10298516f, -0.29648674f, + 0.11198446f, -0.086428143f, -0.32729855f, 0.19484395f, + 0.092019133f, -0.33177873f, -0.0034600766f, -0.0056975242f, + 0.028041249f, -0.032537714f, 0.053971529f, 0.37694603f, + -0.087351844f, 0.074065343f, -0.0024289531f, -0.0019881963f, + -0.020535531f, 0.08838781f, 0.0055771153f, -0.0089607732f, + -0.0016300894f, 0.10822757f, 0.091160655f, 0.054795556f, + 0.048904981f, -0.021247581f, -0.10093695f, 0.10522015f, + -0.020755025f, -0.00076844502f, -0.21740235f, 0.014222576f, + 0.0087187281f, 0.0031895842f, -0.031549655f, 0.022717969f, + 0.076015867f, 0.086678013f, -0.027294928f, 0.13425936f, + 0.0030492267f, -0.17582507f, -0.053610478f, 0.10294171f, + 0.0563659f, -0.026213301f, -0.011601558f, 0.16203582f, + -0.044375274f, 0.031535272f, -0.055985615f, 0.03893337f, + 0.11506263f, -0.0090458384f, 0.036753137f, -0.013954493f, + 0.07890451f, -0.067026585f, 0.0016096144f, 0.16041465f, + -0.13501525f, -0.049781755f, 0.05268449f, 0.046431512f, + -0.003470361f, 0.071468174f, -0.073787645f, -0.26405829f, + 0.058108911f, -0.10618886f, 0.21906504f, -0.10244498f, + -0.059764296f, 0.025795164f, -0.068401158f, 0.29732707f, + -0.021343615f, -0.10626505f, -0.33790502f, -0.42121249f, + 0.37562314f, 0.023909265f, 0.064523645f, -0.017347319f, + -0.082002349f, 0.34233353f, -0.037300523f, 0.0074246172f, + 0.20673974f, -0.014897079f, -0.058030367f, 0.2449819f, + -0.066412203f, 0.12089051f, -0.087346256f, -0.04038237f, + -0.035545632f, -0.18200441f, 0.0063020359f, 0.029724848f, + -0.33266756f, -0.025709189f, 0.0057688453f, -0.01089981f, + -0.21887331f, 0.09087085f, 0.43070194f, -0.09505216f, + -0.017300429f, -0.047056969f, 0.044099331f, -0.082051322f, + 0.14809462f, 0.076969653f, 0.025774989f, 0.048010316f, + -0.011957183f, -0.14023715f, 0.013285551f, 0.12233843f, + -0.089179434f, 0.015602225f, -0.016931219f, 0.040073719f, + 0.0022159046f, 0.054855827f, -0.095402971f, -0.2494316f, + -0.00134209f, 0.011992154f, -0.11652123f, 0.13414042f, + -0.018496966f, -0.12001062f, -0.15841888f, -4.5413246e-05f, + 0.098314382f, 0.046956621f, -0.051321395f, 0.16307501f, + 0.055536039f, -0.017290683f, 0.085926466f, 0.019335823f, + -0.14830627f, 0.068727732f, -0.0077490825f, 0.0022131037f, + -0.024406858f, 0.091255121f, 0.076988846f, -0.011469786f, + 0.004974274f, 0.11181756f, -0.034288567f, 0.10152115f, + 0.055065624f, 0.0010990815f, -0.1912699f, -0.010626411f, + 0.0014074871f, -0.0030603139f, -0.044230003f, 0.010427037f, + 0.088089779f, 0.061708648f, 0.16310014f, 0.018536758f, + 0.012919486f, -0.21605282f, -0.09009546f, -0.016578035f, + 0.13494574f, -0.0102724f, -0.030559117f, 0.059036035f, + -0.037201107f, -0.03241197f, -0.036869682f, -0.095511891f, + 0.018825991f, 0.30439964f, -0.044883665f, 0.0085793817f, + 0.065482244f, 0.097669937f, -0.017537339f, 0.15599938f, + -0.055606321f, 0.035628702f, 0.18508394f, 0.024455015f, + -0.0079353591f, -0.025779324f, 0.098875791f, -0.19382814f, + -0.11670347f, -0.11613155f, 0.17340823f, -0.093227409f, + 0.069408141f, -0.074080177f, -0.11202618f, -0.066930264f, + -0.032161105f, -0.032034677f, 0.042517755f, -0.47670093f, + 0.10635159f, 0.021979744f, 0.043212332f, -0.048925791f, + 0.04508514f, -0.16323163f, -0.035026953f, -0.028828131f, + 0.15516487f, 0.0042001544f, 0.005567668f, 0.33336064f, + -0.084802903f, 0.014244128f, -0.055281397f, -0.046793874f, + -0.038612567f, 0.019395947f, -0.025236385f, -0.11331924f, + -0.10497408f, -0.04180292f, -0.0044000451f, 0.018296702f, + -0.36894506f, 0.20872468f, 0.22919096f, 0.12499749f, + -0.062737294f, 0.040258251f, -0.12379123f, -0.051655803f, + -0.050486125f, -0.03997812f, 0.11635597f, 0.14422227f, + -0.011406606f, -0.32692942f, -0.088715024f, 0.11010005f, + 0.030334411f, 0.093055941f, 0.039415006f, 0.019882275f, + 0.085917093f, 0.024533056f, -0.22847156f, -0.22819859f, + -0.0051312754f, -0.0022903825f, -0.32933113f, 0.071828954f, + -0.11021399f, 0.14835842f, -0.25491801f, 0.017669505f, + 0.046371069f, 0.10763066f, -0.044462051f, 0.17522626f, + -0.0011663004f, -0.041631419f, 0.0088135405f, 0.16815946f, + -0.049460225f, 0.11962362f, 0.041693676f, 0.0007479387f, + 0.026780413f, -0.023541117f, 0.036865503f, -0.070475154f, + 0.11757002f, -0.081595615f, -0.1463352f, 0.46379292f, + -0.030169239f, -0.011717211f, -0.15777861f, -0.0037231429f, + -0.035749417f, -0.053138476f, -0.060435776f, -0.018868206f, + 0.14743419f, 0.2542921f, 0.016475707f, -0.0047506192f, + -0.032050926f, -0.17217925f, -0.010672654f, 0.079409301f, + 0.10109455f, -0.0012631888f, -0.013809094f, -0.27442229f, + -0.11201154f, -0.050568908f, 0.097606882f, -0.013576377f, + -0.10509051f, 0.1371513f, -0.053178377f, 0.016896849f, + -0.14959341f, 0.034096055f, 0.026335269f, 0.046076961f, + -0.026809877f, -0.018945688f, -0.05461356f, 0.031318568f, + -0.018129032f, -0.047473479f, -0.031981945f, -0.39328286f, + -0.081297927f, 0.021998249f, 0.35581547f, -0.11076947f, + -0.13820274f, -0.14765507f, -0.044226281f, -0.19342853f, + 0.018385749f, -0.02639107f, 0.019919643f, -0.20200653f, + -0.273763f, -0.0073187076f, 0.054826912f, -0.030178381f, + 0.053566039f, -0.31896582f, -0.030855959f, -0.038837556f, + 0.049083557f, -0.00040728148f, -0.026581084f, 0.35258844f, + -0.0051642926f, -0.089807719f, -0.069674194f, 0.11010848f, + -0.16989727f, -0.032670405f, 0.0081298556f, -0.06867291f, + -0.094975896f, 0.026046384f, -0.0159497f, -0.015491709f, + 0.042294659f, 0.12795839f, 0.2409658f, 0.17638995f, + -0.17404327f, -0.0047738831f, 0.10880005f, -0.11494941f, + -0.01195144f, 0.0019326452f, 0.24370264f, 0.08548408f, + 0.0082481811f, -0.28492317f, -0.17635067f, 0.086156003f, + -0.045862388f, 0.056501973f, 0.0069318833f, -0.0023905719f, + -0.064759061f, -0.024016337f, 0.11443934f, -0.14469562f, + -0.0074180663f, -0.11535922f, -0.098459207f, 0.12912332f, + -0.23304632f, 0.096749038f, -0.16075377f, -0.019281683f, + -0.016967652f, 0.16997665f, 0.14617608f, 0.42912385f, + 0.063586734f, -0.049138092f, 0.16688097f, 0.3137407f, + 0.023573203f, 0.21109493f, 0.06937369f, -0.014785641f, + 0.033990227f, 0.016120572f, 0.085025705f, 0.015998239f, + 0.095167868f, 0.19985698f, 0.036114533f, 0.47303677f, + -0.1601553f, -0.0080653187f, -0.094465211f, 0.00027854607f, + 0.0020197451f, 0.088976994f, -0.11205663f, -0.010312862f, + -0.050933197f, 0.34957248f, 0.066887394f, -0.025601672f, + -0.012809113f, 0.014171567f, -0.013586945f, 0.0870068f, + -0.027405055f, 0.021176014f, 0.011465641f, -0.39362958f, + -0.14036444f, 0.14033042f, 0.0038445459f, -0.092565775f, + -0.28666472f, -0.2448552f, 0.0060222978f, 0.058400691f, + -0.32862544f, 0.096739605f, -0.0040946486f, 0.10793714f, + 0.0061827987f, -0.092093721f, -0.095087864f, 0.048586428f, + -0.0058160881f, -0.0089211045f, 0.00046020863f, -0.31397662f, + 0.0028327266f, -0.011486795f, 0.38647869f, -0.10264781f, + 0.031707764f, -0.040427968f, -0.079143099f, -0.19348513f, + 0.043590862f, 0.062655762f, -0.014610735f, -0.056957047f, + -0.42392716f, -0.051736712f, -0.1014178f, -0.0035509947f, + 0.01960679f, -0.14303492f, -0.0081997374f, -0.0047283662f, + 0.23613086f, 0.04256539f, -0.026995923f, 0.30303621f, + -0.10413358f, -0.093438134f, 0.027026078f, 0.045104168f, + -0.1323459f, 0.14798066f, -0.036166903f, 0.0019626715f, + -0.014452736f, -0.0048578563f, 0.025573425f, 0.0096426364f, + 0.1953388f, -0.09622775f, 0.12865067f, 0.16916916f, + -0.16941662f, 0.003522177f, 0.22563869f, -0.073247574f, + 0.014433156f, -0.0017578501f, 0.074973822f, 0.10038343f, + -0.017652081f, -0.19126394f, 0.0023926026f, -0.19143119f, + 0.0075302119f, 0.18240598f, -0.00038841588f, -0.038634196f, + 0.030940754f, 0.084639937f, 0.2382374f, -0.1528943f, + -0.075144239f, -0.084488355f, 0.11096895f, 0.055674706f, + -0.30978951f, -0.023216816f, -0.15249906f, 0.01875655f, + -0.0091433162f, 0.063422933f, 0.010510592f, 0.096628077f, + 0.12517631f, -0.10827465f, 0.17118022f, 0.0033330931f, + 0.023574892f, 0.2123265f, 0.057047095f, 0.0092238253f, + -0.047706649f, -0.019714806f, 0.12453446f, 0.024595784f, + 0.1072822f, 0.067427181f, -0.16801968f, 0.51945132f, + -0.073958397f, 0.039200928f, -0.16626479f, -0.013170823f, + 0.027541462f, 0.0074749202f, -0.057270315f, 0.0020791609f, + -0.22424307f, 0.33916253f, 0.19559011f, 0.073397957f, + 0.014636388f, 0.11360655f, 0.013931455f, 0.080280073f, + 0.0059568183f, -0.085963614f, 0.014248176f, -0.1346214f, + 0.06287495f, -0.082368113f, -0.040777646f, -0.015076944f, + -0.29863837f, 0.24821344f, -0.020302704f, -0.02080215f, + -0.16126853f, 0.11331284f, -0.006090885f, -0.0030424197f, + -0.11152532f, -0.069953866f, -0.13874599f, 0.087610856f, + -0.10532913f, -0.13518366f, -0.052692048f, -0.3708356f, + -0.069343239f, -0.035978857f, 0.4122034f, -0.093225159f, + -0.15400201f, 0.0093682623f, 0.0013896491f, -0.4366529f, + -0.045638774f, -0.1260199f, 0.32903558f, -0.32846829f, + -0.1010372f, -0.047196783f, -0.105873f, -0.046253093f, + -0.032082621f, 0.23979823f, 0.074137866f, -0.03120371f, + 0.2806921f, -0.028969094f, 0.076818153f, 0.35346922f, + 0.019163236f, -0.18290369f, -0.087338813f, 0.049822625f, + 0.0035176855f, 0.13449845f, 0.01438257f, 0.10674632f, + 0.028998312f, -0.070578009f, -0.0012466238f, -0.0261354f, + 0.0084863035f, -0.41370052f, 0.4613992f, -0.072498284f, + -0.29663333f, 0.010881759f, -0.10241909f, -0.059203587f, + -0.0040445356f, 0.033712897f, -0.094209813f, 0.054150809f, + 0.0086626364f, -0.039479993f, -0.10343084f, -0.25584772f, + -0.064016335f, 0.26373148f, 0.022623751f, -0.029456526f, + 0.001412841f, 0.050710965f, -0.15528843f, -0.24192238f, + 0.032036941f, 0.016258191f, 0.027092271f, -0.074750543f, + -0.20184369f, -0.041324601f, -0.084138289f, -0.017903376f, + -0.0032651906f, 0.053509511f, 0.11557946f, 0.018903784f, + -0.0090398919f, -0.2448907f, 0.076549612f, 0.16016439f, + 0.0053509921f, 0.25222817f, 0.029317185f, 0.0079132896f, + 0.004221281f, 0.030401791f, 0.011094435f, 0.066527389f, + 0.087004095f, -0.01236558f, -0.44562885f, 0.098536693f, + -0.1816657f, -0.019703688f, -0.09178292f, 0.0035261335f, + 0.0024692644f, 0.052391846f, -0.119669f, -0.0057264981f, + -0.10952247f, 0.67205316f, 0.032934494f, 0.33778182f, + 0.0015291322f, 0.20517026f, 0.005481232f, -0.15530677f, + 0.0034370357f, 0.06361004f, -0.0034896219f, 0.3778801f, + -0.083300658f, 0.15288967f, 0.033670347f, 0.062403653f, + 0.12881219f, -0.45476264f, 0.12301509f, -0.052338f, + 0.17167707f, 0.012597645f, 0.0040749339f, -0.27631328f, + -0.17821647f, 0.018953215f, 0.091349773f, -0.034730643f, + 0.052508734f, 0.33131185f, -0.020751085f, 0.2101967f, + -0.15292223f, 0.75896949f, -0.70758343f, 0.11797882f, + 0.063024826f, -0.51749283f, -0.52048802f, -0.61443007f, + -0.00081338652f, -0.097920172f, -0.14360018f, 0.60600948f, + 0.050893493f, 0.14402384f, 0.05231024f, 0.10346432f, + -0.35935733f, -0.42179435f, -0.0017322034f, 0.042953447f, + -0.051632512f, -0.3273783f, 0.052432101f, 0.72611529f, + 0.14568934f, 0.37930405f, -0.031844154f, 0.078557059f, + -0.18903203f, -1.6507285e-05f, -0.043220952f, -0.026294149f, + 0.42512992f, 0.36256096f, 0.0061085401f, -0.0034417207f, + 0.032197371f, -0.058991514f, 0.34670213f, 0.40434623f, + 0.12834284f, -0.0057799309f, 0.15470661f, -0.086437628f, + 0.081781432f, -0.029619159f, -0.70500559f, 0.16092448f, + -0.00044207365f, 0.86771923f, -0.055787437f, 0.0050840834f, + 0.027761634f, -1.248933f, 0.0070093968f, 0.024797244f, + 0.14424643f, 0.0054390188f, -0.32202104f, -0.34367043f, + 0.11419107f, 0.024540592f, 0.49692416f, -0.11798171f, + 0.39024946f, 0.7530008f, 0.31373867f, -0.0030230039f, + -0.069641598f, -0.076890133f, -0.15261202f, 0.47430053f, + -0.2078712f, 0.18818624f, -0.040959723f, 0.17052105f, + -0.10315631f, -0.89073199f, 0.13724773f, -0.0037543355f, + 0.017956527f, -0.14302543f, -0.026664592f, -0.16185975f, + -0.27777666f, -0.022446997f, 0.46886206f, -0.1447514f, + -0.057222601f, 0.0045843525f, 0.81111956f, -0.00095062016f, + 0.0030725361f, -0.027084319f, -0.074666001f, 0.0045754313f, + 0.19151756f, -0.077328496f, -0.12785921f, -0.23261844f, + 0.0077852295f, 0.34820059f, 0.11280721f, -0.070663773f, + 0.41428643f, 0.013101467f, 0.04309063f, 0.33831799f, + -0.063275672f, 0.098670602f, 0.0012924381f, 0.044258513f, + -0.11112759f, 0.28990415f, 0.033606488f, -0.12815583f, + -0.0027650103f, -0.060211401f, -0.020753305f, -0.12929359f, + -0.021420369f, 0.007753063f, -0.039237075f, -0.060174022f, + -0.16882771f, -0.084319673f, 0.038790688f, 0.063012719f, + -0.17074075f, -0.55908537f, -0.14665844f, 0.05804174f, + -0.089179657f, -0.1012359f, -0.20173822f, 0.30705404f, + -0.093091406f, 0.0027106167f, -0.11921687f, 0.19614127f, + -0.03401304f, -0.012530805f, -0.11301166f, -0.09989842f, + 0.3448059f, 0.13586339f, 0.13888338f, 0.06381651f, + 0.015009481f, -0.29212251f, -0.016655773f, 0.54239672f, + 0.024935314f, 0.20121635f, -0.081358783f, -0.076161444f, + 0.094514005f, 0.080337018f, 0.059408005f, 0.072505191f, + -0.15904877f, -0.13065712f, -0.019195257f, 0.0066915718f, + 0.22952396f, -0.1305459f, 0.2866163f, -0.5034669f, + -0.018486042f, 0.078530386f, -0.14198966f, -0.056281433f, + 0.18618833f, 0.030152442f, 0.63000703f, 0.073705994f, + 0.0082377149f, -0.12041847f, -0.11259282f, 0.29446527f, + -0.024828279f, -0.29166985f, -0.027811734f, 0.0026449368f, + 0.086363167f, -0.052866146f, 0.40783384f, 0.049253326f, + 0.013046707f, -0.072049379f, 0.049092237f, 0.30701661f, + -0.17734364f, -0.31508547f, -0.12953253f, -0.015796384f, + 0.018406397f, -0.044421487f, 0.030050874f, 0.69387096f, + 0.054273434f, 0.054331578f, 0.054811705f, 0.10746592f, + 0.068474948f, -0.1151249f, 0.018865183f, -0.022189943f, + 0.01152936f, 0.040230103f, -0.2371324f, 0.055820152f, + 0.19122991f, 0.24775444f, 0.17443526f, -0.0010269451f, + -0.26111564f, -0.027848277f, -0.44434166f, 0.0072035198f, + -0.022276346f, 0.03313604f, 0.018124472f, -0.0183047f, + 0.21548724f, -0.20616475f, -0.15129119f, 0.26255178f, + 0.010138075f, -0.082117885f, -0.068396315f, 0.10183737f, + -0.58568263f, -0.03781984f, 0.00070717948f, 0.071840875f, + -0.071414165f, -0.071021579f, -0.061043829f, 0.063452102f, + 0.25265789f, -0.42380914f, 0.10512545f, -0.015817847f, + -0.052664287f, -0.052505068f, -0.0017017947f, 0.029264588f, + 0.021945775f, 0.015800115f, 0.008306805f, -0.0015340782f, + 0.0080236299f, 0.039535139f, -0.035723761f, -0.033818182f, + -0.0074936724f, -0.14512289f, -0.11095692f, 0.046578202f, + -0.014607199f, 0.066659912f, -0.22069228f, 0.44885555f, + -0.062377911f, 0.062417552f, 0.29205179f, 0.017982727f, + -0.088045336f, -0.031665817f, -0.081018604f, 0.040010888f, + 0.086377867f, 0.31112126f, -0.1543068f, 0.030972004f, + -0.026559379f, -0.267147f, 0.015109458f, 0.49510574f, + -0.08555562f, 0.12427782f, -0.094117165f, -0.094322369f, + 0.08708176f, -0.76943696f, 0.015187236f, 0.1025098f, + -0.32238191f, -0.16993289f, 0.018431326f, -0.016605245f, + -0.066258408f, -0.036148306f, 0.031328607f, -0.29638398f, + 0.094974734f, -0.039128412f, -0.098770544f, -0.10027229f, + 0.23016912f, -0.013930017f, 0.11829955f, -0.051061448f, + -0.023194328f, -0.18610394f, -0.021823123f, 0.28121859f, + 0.023549985f, 0.42094105f, 0.0014556054f, -0.018853135f, + -0.05736145f, 0.035728708f, -0.047264569f, 0.074495248f, + -0.0047638654f, 0.038974669f, -0.13604681f, 0.19404432f, + 0.031640757f, -0.47003868f, -0.011276567f, 0.0093310811f, + -0.026190309f, -0.17353436f, 0.1372599f, 0.17880495f, + 0.055947617f, 0.043534558f, -0.039002117f, 0.07112205f, + -0.054717798f, -0.028785191f, 0.038296871f, 0.010951385f, + 0.013799938f, 0.083239421f, -0.18707119f, -0.092482261f, + 0.0027181222f, 0.069290072f, 0.098716095f, -0.19444567f, + -0.03550924f, 0.019815344f, -0.20856906f, -0.017051755f, + 0.010114656f, -0.071174987f, 0.11164937f, -0.02402493f, + -0.013316815f, -0.078418292f, -0.28984505f, 0.24600428f, + 0.020758025f, -0.12189491f, 0.024015769f, -0.025391277f, + 0.005729401f, 0.092050672f, -0.0017437888f, -0.23271456f, + 0.11142281f, 0.21178035f, 0.0057647256f, -0.015478649f, + 0.28055269f, -0.27195945f, 0.18864474f, 0.056607291f, + 0.13591918f, -0.047941599f, -0.0027701173f, 0.099343441f, + -0.018289059f, -0.025484364f, 0.073096655f, 0.034797128f, + 0.011688341f, 0.048065662f, 0.069798656f, 0.24523424f, + 0.040133849f, -0.17709905f, -0.3098762f, 0.034076244f, + -0.1075741f, 0.06718754f, -0.18198541f, 0.39866692f, + -0.0059220199f, 0.053310506f, 0.071386859f, -0.23365751f, + -0.1275084f, -0.020869164f, 0.013317349f, -0.042009003f, + -0.018884517f, 0.32494411f, 0.025610693f, -0.072643414f, + 0.26087156f, -0.1883314f, -0.014211756f, 0.36211753f, + 0.05175053f, -0.076782979f, 0.042763986f, -0.096817903f, + 0.051153053f, -0.96751344f, -0.00018850924f, 0.011554595f, + -0.19332455f, -0.080336623f, -0.015299019f, 0.032070167f, + -0.23196863f, 0.18929161f, 0.23177467f, -0.04211f, + 0.15827076f, -0.033750545f, -0.035177495f, 0.032299254f, + 0.092840411f, -0.04402357f, -0.0057630897f, 0.053756058f, + 0.02376201f, -0.16004358f, 0.00089911721f, 0.20534872f, + -0.035570972f, 0.39836204f, -0.024715405f, 0.03564021f, + 0.084074803f, -0.036772329f, -0.16779166f, 0.063887045f, + -0.010366553f, -0.018243685f, -0.16922136f, 0.11760043f, + -0.068795882f, -0.13983086f, -0.12955061f, 0.030749394f, + 0.11084451f, -0.060306869f, 0.039486207f, -0.18119659f, + 0.043250166f, -0.014161757f, -0.056647521f, 0.036586035f, + 0.048382174f, 0.059182834f, -0.022709975f, 0.010412471f, + -0.040368602f, 0.0049312068f, 0.015961748f, -0.073229104f, + 0.13238946f, -0.013289051f, 0.12024757f, -0.053564064f, + -0.003022098f, -0.0044321385f, -0.090366475f, 0.024986805f, + 0.004476211f, -0.074817494f, 0.17393246f, 0.0035446214f, + 0.024727844f, -0.0078251362f, -0.14686111f, 0.041429043f, + 0.0011945171f, -0.20771936f, 0.031186992f, 0.10064661f, + 0.16057119f, 0.0043035238f, 0.052575793f, -0.089485355f, + -0.038125981f, -0.13417394f, 0.036114432f, -0.050038125f, + 0.11950605f, 0.19866717f, 0.14309421f, 0.030996166f, + -0.047825512f, 0.032373246f, 0.028426118f, 0.075931683f, + 0.0024299196f, -0.010662935f, -0.018229151f, -0.10607573f, + 0.036198247f, 0.0013389054f, 0.15521948f, 0.26851538f, + 0.060810398f, -0.058571249f, -0.16981296f, 0.050189618f, + 0.060348611f, -0.0088874344f, -0.1971011f, 0.26730439f, + -0.03046431f, -0.017561866f, -0.26886228f, -0.15080398f, + -0.03028122f, -0.12154026f, -0.075161211f, 0.052848205f, + 0.051145926f, -0.18010925f, -0.012628936f, 0.03217946f, + 0.062534258f, -0.14511566f, -0.015209552f, 0.36397359f, + -0.024108393f, -0.016868083f, -0.09855815f, 0.032518931f, + -0.010181519f, 0.067219578f, -0.027235758f, 0.0044092992f, + 0.082218111f, 0.046367735f, 0.016498676f, -0.0031578001f, + -0.24759483f, 0.24817693f, 0.064302228f, 0.066107608f, + 0.19468175f, 0.0001385057f, -0.039847061f, -0.041174874f, + 0.07421761f, -0.027773332f, 0.11475687f, -0.060987175f, + 0.002652352f, -0.27510846f, -0.015691163f, 0.18624893f, + -0.0084791193f, 0.32851845f, -0.014737192f, -0.020690614f, + 0.020365844f, -0.075873129f, -0.23976637f, 0.034173895f, + 0.03122307f, 0.041510656f, -0.10645664f, 0.15784664f, + -0.089832112f, 0.19140293f, -0.10313692f, -0.020142883f, + 0.081713766f, 0.071671642f, -0.09145686f, -0.25458243f, + -0.008990244f, 0.041494858f, -0.10050225f, 0.053322513f, + -0.054051179f, 0.10902815f, -0.081740223f, -0.00093206973f, + -0.019881569f, 0.031931326f, -0.097641453f, -0.012939213f, + -0.031284783f, -0.10529856f, -0.091331884f, -0.041267466f, + 0.023457121f, -0.00015507787f, -0.10093013f, 0.016789338f, + 0.022264142f, 0.014861671f, 0.046385087f, -0.0031522261f, + 0.029538168f, -0.012881895f, -0.11344684f, -0.064521253f, + -0.0012689504f, -0.16411991f, 0.0079541449f, 0.12351646f, + 0.032132741f, -0.032830507f, 0.026616028f, -0.026203027f, + -0.055295952f, -0.027507883f, -0.014856271f, 0.0051288581f, + -0.0047008726f, -0.18010953f, 0.098273017f, -0.02463641f, + -0.048265133f, -0.12647566f, -0.019356944f, -0.042429883f, + 0.057791568f, -0.02177624f, 0.064558357f, -0.031615298f, + 0.0295153f, -0.043286532f, -0.035238571f, -0.40629339f, + -0.11292586f, 0.042546961f, -0.01001685f, 0.019069325f, + -0.033528093f, -0.033563092f, -0.14260356f, 0.19626476f, + 0.012482773f, -0.012742842f, 0.076096833f, 0.057828333f, + -0.26749498f, -0.04719121f, 0.077650942f, 0.061949387f, + 0.0090154493f, -0.31479675f, 0.024570676f, 0.021245226f, + -0.1575588f, -0.14069694f, -0.043437403f, 0.35179037f, + -0.046108246f, -0.26939732f, 0.039769173f, 0.0076886569f, + -0.10463245f, 0.047183473f, 0.0011471394f, 0.082027026f, + -0.091345944f, 0.14672278f, 0.0029751353f, 0.011356808f, + 0.16192308f, 0.19642106f, 0.10583636f, 0.10034723f, + 0.22010164f, -0.076455489f, 0.17434521f, -0.11758476f, + 0.071981825f, 0.039458774f, 0.02416008f, 0.049970847f, + 0.015481438f, -0.18700761f, -0.0095627103f, -0.029678313f, + -0.016954463f, 0.053805426f, 0.018907448f, 0.073214285f, + -0.025928946f, -0.071627736f, 0.076157123f, 0.083573043f, + 0.042041767f, 0.05059664f, 0.087434605f, 0.074701376f, + -0.24145234f, 0.066868268f, -0.015804626f, -0.0059429817f, + 0.07170973f, 0.1215167f, -0.080251925f, -0.039506514f, + 0.027873706f, 0.026249565f, -0.12357549f, -0.13831036f, + -0.021883853f, 0.29707021f, 0.011193943f, -0.026589017f, + 0.027077777f, -0.028511068f, -0.014896563f, -0.059305694f, + -0.046229184f, 0.014125846f, 0.18356639f, -0.024558617f, + 0.033004966f, -0.011124307f, -0.038662586f, 0.011659124f, + -0.0016968033f, -0.017864492f, 0.090237737f, 0.036376927f, + -0.023384774f, 0.064256795f, -0.0456177f, 0.063539021f, + 0.021788321f, -0.063986592f, -0.056218293f, 0.055853907f, + -0.056596357f, -0.080015339f, -0.014634962f, 0.057021365f, + -0.10472675f, -0.088515639f, -0.063756108f, -0.11113141f, + -0.061573561f, -0.4633539f, -0.012972392f, -0.03476521f, + -0.17169572f, -0.079512931f, -0.0015828601f, -0.07150171f, + 0.054364152f, -0.049222052f, -0.036308311f, -0.021828407f, + 0.071700819f, -0.01792858f, 0.13476956f, 0.32027879f, + 0.12848549f, -0.049548473f, -0.04192267f, 0.090029299f, + 0.090467371f, 0.098181151f, -0.16118766f, 0.31873515f, + -0.013106297f, 0.044661392f, -0.14297478f, 0.0031879919f, + -0.20344174f, 0.0414146f, -0.11261887f, 0.031803325f, + 0.072335258f, -0.10898581f, -0.014650621f, -0.030276129f, + -0.035547558f, -0.077516809f, -0.064569727f, 0.26507524f, + -0.038382333f, -0.15101509f, 0.047549378f, 0.11924168f, + -0.1253996f, 0.59274048f, 0.025971413f, -0.08726792f, + 0.04792342f, 0.022037946f, -0.0021071993f, -0.014417749f, + 0.2172672f, 0.020607736f, -0.13237359f, 0.24565025f, + 0.17149775f, -0.10105985f, 0.084919028f, -0.076255098f, + 0.064635679f, -0.023290174f, -0.075648367f, -0.10886326f, + 0.0034513683f, -0.16656607f, 0.043286908f, -0.041587804f, + 0.014040859f, 0.043162912f, -0.039364222f, 0.0015042366f, + -0.013360206f, -0.12894851f, 0.23209924f, 0.089460298f, + 0.044859845f, 0.014635383f, 0.12871243f, 0.086147591f, + -0.19205941f, 0.022759108f, -0.03684872f, -0.024157403f, + -0.039844375f, 0.058176685f, -0.082900047f, -0.050308276f, + 0.046107687f, -0.11517268f, -0.094991237f, -0.28734985f, + 0.018558105f, 0.25033581f, 0.065556645f, -0.016766673f, + 0.025401145f, -0.08123371f, -0.15777488f, -0.07187479f, + 0.0027664218f, -0.053631134f, -0.21064432f, -0.1651812f, + 0.13746293f, -0.013807723f, -0.10898145f, -0.026208242f, + -0.00041016287f, 0.047606312f, -0.039919388f, -0.025350465f, + -0.14028297f, 0.1251148f, 0.033966869f, -0.043915205f, + 3.3477962e-05f, 0.026727309f, 0.087634221f, 0.098741002f, + -0.019830532f, -0.038210262f, -0.014585622f, -0.078782044f, + 0.0076225363f, -0.18443848f, -0.030440066f, 0.016338088f, + -0.22178356f, 0.12854451f, 0.087870009f, -0.061643369f, + 0.24829432f, -0.00035684044f, 0.0025272886f, -0.14455168f, + -0.041852899f, 0.060144603f, -0.21387362f, -0.002377491f, + 0.044294447f, -0.23111448f, -0.055276975f, 0.48047706f, + 0.0017940594f, 0.041542962f, 0.11020902f, -0.033590842f, + -0.089124322f, 0.092030182f, -0.31695521f, -0.014601234f, + 0.085557833f, -0.093365118f, 0.18022348f, -0.23850943f, + -0.14489689f, -0.12577453f, 0.045578461f, -0.015145334f, + 0.056015216f, 0.11322316f, -0.018118059f, 0.047359075f, + -0.20236038f, -0.16754515f, 0.067938596f, 0.39761952f, + -0.16665977f, -0.020737553f, 0.010665665f, 0.014033545f, + 0.024591113f, 0.43342704f, -0.007573335f, -0.029377859f, + 0.14124444f, 0.068929911f, -0.012070616f, 0.011849932f, + -0.12737413f, -0.359458f, 0.12234838f, -0.10805269f, + 0.071959287f, -0.078671947f, -0.21502756f, -0.043964937f, + 0.069268517f, -0.0077156783f, -0.069054991f, -0.12273895f, + 0.0022111207f, 0.033488058f, 0.13975571f, -0.23445711f, + 0.019454531f, 0.36493367f, 0.024555255f, -0.014552085f, + -0.04422839f, -0.14550139f, -0.10090887f, 0.11292481f, + 0.10667825f, -0.11612549f, 0.089620262f, 0.046495609f, + -0.11746836f, -0.02913562f, -0.041137725f, 0.01176509f, + -0.027710639f, -0.081260487f, 0.04163957f, -0.2462073f, + -0.089145206f, -0.19455266f, -0.084583297f, -0.3222146f, + -0.087122723f, 0.22108823f, -0.11077996f, 0.001305504f, + -0.034956861f, -0.073056281f, -0.10739017f, 0.03950135f, + -0.034209199f, 0.1947459f, -0.17502676f, -0.30767143f, + 0.15136313f, -0.01305093f, 0.029009514f, 0.0202145f, + -0.0014164131f, 0.049169648f, -0.096554548f, -0.016821319f, + -0.083584212f, 0.39999053f, 0.15426446f, -0.031579152f, + -0.00041610387f, 0.1895929f, 0.049323246f, -0.089170784f, + -0.039679568f, 0.012726019f, 0.023737872f, 0.11418902f, + -0.16921581f, 0.038689494f, 0.042357907f, 0.041467268f, + 0.02348491f, -0.15778628f, -0.082302086f, -0.023419799f, + 0.27231702f, 0.12808339f, -0.014468648f, -0.027340589f, + -0.085209094f, 0.052078199f, -0.033535138f, -0.10221013f, + -0.020753181f, 0.43905541f, 0.036127552f, -0.26443556f, + -0.18925083f, -0.010179508f, 0.14364025f, 0.025730554f, + 0.27794591f, -0.70269704f, -0.64031547f, -0.75751382f, + 0.086904339f, 0.082733892f, -0.29073003f, 0.39529872f, + 0.34100717f, -0.024793286f, -0.086660765f, -0.0041391081f, + -0.95386255f, -0.51397437f, -0.052945223f, 0.011423296f, + 0.029872041f, -0.57445526f, -0.026893502f, -0.090241313f, + -0.18149132f, 0.39393228f, -0.066323474f, 0.038010821f, + -0.14165989f, 0.24071531f, 0.070430063f, -0.089362949f, + 0.20829737f, 0.0068781483f, -0.026453115f, -0.01137232f, + -0.023972502f, -0.070720389f, -0.21049544f, 0.36357576f, + -0.12699524f, 0.041931927f, 0.13759442f, 0.015999367f, + 0.051298078f, 0.0089453282f, -0.29934388f, 0.058262598f, + -0.0038816568f, 0.31896093f, 0.00088104978f, -0.54487556f, + -0.22797406f, -0.0086333007f, -0.037441291f, -0.022814207f, + 0.13116629f, 0.1165693f, -0.43755576f, -0.037046544f, + 0.038650721f, -0.22286566f, 0.4990007f, -0.046179555f, + 0.091010384f, 0.674977f, 0.17613345f, -0.0032745784f, + -0.10580309f, -0.14125107f, 0.13408484f, 0.84966439f, + -0.21929996f, 0.113648f, -0.069546022f, 0.084215641f, + 0.035236336f, -0.76080132f, -0.14230831f, 0.031520173f, + 0.041689713f, 0.085462838f, 0.28406993f, -0.33319348f, + 0.053093877f, -0.090333559f, 0.28167209f, -0.60149276f, + -0.041489985f, -0.0026734404f, 0.69653648f, -0.013558565f, + -0.0097052157f, 0.016919145f, -0.13761684f, -0.006347259f, + -0.40159872f, -0.059565719f, 0.15903305f, -0.26388997f, + 0.024725083f, 0.3447544f, -0.066792294f, 0.029110719f, + 0.33367184f, -0.031281371f, -0.029195542f, 0.15220247f, + 0.11987072f, -0.10418367f, 3.3778226e-05f, -0.028266435f, + -0.016843898f, 0.41889805f, -0.18923108f, 0.075732887f, + -0.14150938f, -0.024042223f, 0.0090885358f, -0.48418468f, + 0.020962218f, -0.11673486f, -0.14706706f, 0.10682641f, + -0.10500552f, -0.19603954f, 0.030488096f, 0.070057094f, + 0.042489715f, -0.050060865f, -0.53795981f, -0.064780593f, + -0.023533979f, 0.045206595f, -0.3162632f, 0.058573976f, + -0.044979978f, 0.065083526f, 0.16966769f, 0.35767245f, + 0.34941339f, -0.12038619f, -0.085209891f, 0.031444203f, + 0.5337612f, 0.15701032f, 0.031220118f, -0.0083923889f, + 0.099932969f, -0.33716261f, -0.066649653f, 0.15879455f, + 0.16282292f, 0.43576536f, -0.089102916f, -0.0085827466f, + 0.029467866f, -0.0091822408f, -0.026712351f, 0.05778446f, + -0.22748077f, -0.083450787f, 0.026414908f, 0.013771105f, + 0.099507757f, 0.00032147579f, -0.26260662f, -0.45921984f, + 0.057408184f, 0.065640844f, -0.0058127795f, -0.054807868f, + 0.037782863f, 0.0062462646f, 0.39028791f, 0.028260499f, + -0.0048690191f, -0.10792262f, 0.28937027f, 0.086609207f, + -0.10105714f, -0.073411085f, 0.0068449317f, 0.0065962314f, + -0.032307155f, -0.084665447f, 0.51379013f, 0.24310735f, + 0.0041113612f, -0.0094530396f, 0.73171264f, 0.26352495f, + -0.21986006f, -0.413261f, -0.49280062f, 0.007219099f, + -0.049870729f, 0.064979844f, -0.22787008f, 0.19394606f, + 0.23830472f, -0.053593379f, -0.064876609f, 0.031992618f, + 0.037239369f, -0.29613164f, -0.040270969f, -0.0047897571f, + -0.022224538f, 0.10374701f, -0.050618771f, -0.081236497f, + -0.055627197f, -0.0083052749f, 0.12447654f, -0.34930459f, + 0.033645511f, 0.020379141f, -0.37304252f, 0.012354812f, + 0.023863364f, 0.023761898f, -0.12974364f, 0.025548982f, + 0.15995227f, -0.10525051f, -0.10463121f, 0.18590346f, + -0.031823821f, 0.012660676f, -0.092733622f, -0.011519541f, + -0.42165378f, -0.026665f, 0.0048159175f, -0.13219355f, + 0.01726694f, -0.14132057f, 0.037154045f, -0.044399172f, + 0.17369062f, -0.23995659f, -0.12238596f, -0.038609218f, + 0.05616302f, 0.045533076f, 0.029701564f, -0.10795777f, + 0.068243347f, 0.025954163f, -0.35353759f, 0.024760675f, + -0.071335919f, -0.12287125f, 0.026654845f, -0.18072341f, + 0.15848824f, 0.1024728f, -0.510463f, -0.050452996f, + 0.11416008f, -0.10992361f, -0.31054658f, -0.072780713f, + 0.0726097f, 0.12856622f, 0.4577544f, 0.11179785f, + 0.10427023f, -0.11607425f, 0.045783918f, -0.034916624f, + 0.26929301f, 0.27441683f, -0.053078402f, -0.03080051f, + 0.11808357f, -0.26440614f, -0.035575155f, 0.020431167f, + 0.10305984f, 0.1661443f, -0.050616965f, -0.047324955f, + 0.015005269f, -0.21453622f, -0.0092386501f, -0.041018385f, + -0.1118127f, -0.10824775f, 0.022445288f, 0.024456616f, + 0.0071838205f, 0.10187818f, -0.19228013f, -0.38988265f, + 0.20990492f, -0.015913576f, -0.1031851f, -0.0096261511f, + -0.071011826f, 0.023355028f, -0.0030069167f, -0.14604557f, + 0.0097098229f, -0.11857948f, 0.16660279f, 0.18338592f, + 0.013398996f, 0.14053316f, -0.0077699251f, -0.014981661f, + 0.0041887504f, 0.061522998f, 0.1159514f, 0.19992335f, + -0.010488648f, -0.06254334f, 0.34953538f, 0.19734998f, + 0.13676327f, -0.36511451f, -0.26190469f, 0.019193107f, + -0.041848056f, -0.072105341f, -0.056612939f, -0.27429426f, + -0.0048957751f, -0.00430346f, -0.029531909f, 0.056802019f, + -0.069395147f, -0.064653762f, 0.070689231f, 0.013306175f, + -0.022169126f, 0.035710063f, 0.049032472f, -0.20750074f, + -0.016219383f, -0.031734437f, -0.1416918f, -0.56071043f, + 0.15285264f, -0.010803407f, -0.22752903f, 0.017715711f, + 0.018654088f, -0.029987661f, 0.080488779f, 0.0017851265f, + -0.041522183f, -0.0059564584f, 0.078907162f, -0.13108617f, + 0.017081378f, -0.068012275f, 0.10635238f, 0.019329406f, + 0.025948156f, -0.024156997f, 0.022014968f, 0.11048877f, + 0.012465646f, -0.05343394f, -0.043302231f, -0.027064038f, + 0.13079855f, -0.047925834f, -0.040850889f, -0.027792566f, + 0.18829291f, -0.075308464f, -0.012813032f, 0.031016557f, + 0.0040943902f, -0.10665118f, 0.0080954563f, -0.095858239f, + 0.17570429f, 0.015905149f, -0.086807616f, -0.11907196f, + 0.17642488f, -0.042071424f, -0.31073007f, 0.043725971f, + 0.037727498f, 0.028828232f, -0.20798728f, -0.064352848f, + 0.033720966f, 0.08703135f, -0.14334497f, -0.27813604f, + 0.18299662f, -0.10006654f, -0.060193624f, -0.068982407f, + 0.16630845f, 0.27876931f, 0.043705046f, -0.016189316f, + 0.21689323f, -0.17320104f, 0.0059297178f, -0.033754732f, + 0.18614726f, -0.099432521f, 0.06454435f, 0.043871596f, + -0.11214449f, -0.045592476f, 0.029081732f, 0.0028729911f, + 0.033449851f, -0.096236236f, -0.020186776f, -0.029410373f, + -0.1538635f, 0.24660195f, -0.12049115f, -0.13366571f, + 0.39186382f, -0.018306473f, -0.0030953398f, 0.0005599467f, + -0.055328794f, 0.0079302033f, -0.16767325f, -0.14367147f, + -0.0015678975f, -0.073327892f, 0.076443106f, 0.12484454f, + 0.006322097f, 0.34550825f, 0.00050105283f, 0.031521637f, + 0.05046282f, 0.068883725f, -0.21434698f, 0.11939751f, + -0.036724459f, -0.15215477f, 0.17086394f, 0.14013784f, + -0.097881839f, -0.072148785f, -0.28618169f, 0.0059776888f, + 0.00088139973f, -0.024253616f, -0.13892977f, -0.32534328f, + -0.028685318f, -0.024538223f, -0.11970492f, -0.14136565f, + -0.025667122f, 0.061770476f, 0.10954863f, 0.034978021f, + 0.0097771147f, 0.0091487262f, 0.080727652f, -0.11990442f, + 0.11076814f, -0.19741584f, 0.1221559f, -0.30282876f, + 0.14820904f, 0.0041803597f, -0.10393316f, -0.0049569113f, + -0.018840991f, 0.014083013f, 0.1112919f, -0.02031038f, + -0.082538962f, 0.038397685f, -0.13958833f, -0.12188518f, + -0.042491615f, -0.15483384f, -0.014336654f, -0.028370015f, + 0.14579946f, -0.011253605f, -0.064313583f, 0.32379511f, + -0.097694159f, 0.053207636f, 0.043432306f, -0.051922105f, + 0.2158502f, 0.31236491f, 0.047050186f, -0.022895072f, + -0.14483747f, 0.13882245f, -0.023568137f, 0.067168422f, + 0.027589153f, -0.093909688f, 0.13304353f, 0.014515225f, + 0.079866454f, -0.053009428f, 0.14870813f, 0.13400951f, + -0.069081709f, -0.1908389f, -0.32047215f, 0.039309029f, + 0.028706351f, -0.11844221f, -0.25569236f, 0.11258619f, + -0.015814388f, -0.031691f, -0.55965436f, -0.10521114f, + 0.031602453f, 0.005652226f, -0.059192255f, 0.062537901f, + 0.098472267f, -0.15939331f, -0.049262166f, 0.00012114476f, + 0.19627006f, -0.18437505f, -0.10082301f, 0.0036480082f, + -0.12466019f, -0.23699415f, -0.00085736695f, 0.058780491f, + -0.19301584f, 0.38834387f, -0.028089328f, -0.044098541f, + 0.25040531f, -0.053848632f, -0.003122638f, 0.011122889f, + -0.12170938f, 0.34255981f, -0.048718072f, 0.039637618f, + 0.55134434f, -0.016724003f, -0.02918884f, -0.04878642f, + -0.046508789f, 0.024017576f, 0.038598653f, -0.21881302f, + -0.0039072982f, -0.1599935f, 0.095658801f, 0.29354262f, + 0.0090287244f, 0.10013132f, -0.01391715f, -0.024779441f, + -0.044686008f, -0.040043946f, -0.2600891f, 0.044826228f, + 0.027145665f, 0.024862286f, 0.10387837f, 0.15888041f, + -0.22464032f, 0.16095822f, -0.23800284f, -0.020931643f, + 0.048264153f, -0.052800015f, 0.16407667f, -0.23316339f, + -0.0058506303f, 0.038766082f, -0.08243566f, 0.073903173f, + -0.0090402812f, 0.20687473f, -0.17201601f, -0.04597839f, + 0.023715936f, 0.060905959f, 0.095841333f, -0.10273389f, + -0.036984172f, -0.25298452f, -0.16005524f, -0.023395861f, + 0.022413692f, -0.021299608f, -0.17996468f, -0.015178293f, + 0.004007489f, 0.0046022083f, -0.046756674f, 0.021223014f, + -0.094834723f, -0.12694025f, -0.037899636f, -0.20423813f, + 0.029610137f, -0.18952142f, -0.10093374f, 0.11785958f, + -0.010667476f, -0.012772636f, 0.0085878409f, -0.032590177f, + -0.037995942f, 0.083662912f, 0.063727781f, -0.039121754f, + 0.1841725f, 0.16046786f, 0.012560768f, -0.0053459806f, + -0.15490499f, 0.01669623f, 0.014420583f, 0.065120921f, + 0.0016512153f, 0.044354685f, 0.061817225f, 0.084285676f, + 0.069251463f, -0.0030546391f, -0.030621991f, -0.14013839f, + 0.037721831f, -0.0047879354f, -0.22753043f, 0.0066360431f, + -0.041887302f, 0.051954806f, -0.23836851f, 0.44188824f, + 0.0626911f, 0.090100311f, -0.10771076f, 0.10577706f, + -0.20156397f, 0.020988435f, -0.10773864f, -0.042842552f, + -0.0090369685f, -0.2789675f, 0.014893203f, 0.034706783f, + -0.083557926f, -0.13073318f, -0.034124821f, -0.0097446544f, + -0.16418557f, -0.19073336f, -0.02335421f, 0.064451165f, + -0.18423294f, 0.24450704f, 0.053772002f, 0.092463106f, + 0.0076472112f, 0.062204774f, -0.0051420913f, -0.0096862717f, + 0.12250492f, 0.16873749f, -0.060169253f, 0.1113943f, + 0.43846223f, -0.052299578f, -0.032156311f, -0.071794175f, + -0.079206571f, -0.033040471f, -0.086543798f, -0.1670398f, + -0.0091757094f, -0.10235826f, 0.14262713f, 0.077353388f, + 0.048242386f, -0.17818291f, -0.0075574913f, 0.019327508f, + -0.059867416f, 0.034546569f, 0.15979713f, 0.079641737f, + 0.031229353f, -0.13495199f, -0.073666111f, 0.11257502f, + -0.19216907f, 0.07247296f, -0.13632683f, 0.016196283f, + 0.048465505f, -0.09211994f, 0.087408006f, -0.13430028f, + 0.009612795f, -0.0040942528f, -0.025184607f, -0.079536222f, + -0.089734927f, 0.24190009f, 0.0043186215f, 0.023216547f, + -0.029350203f, 0.013097236f, 0.035753056f, -0.094057709f, + 0.1049476f, -0.052318834f, 0.22210063f, 0.067056052f, + 0.075828046f, -0.0015316583f, -0.10379232f, 0.016578004f, + -0.0034985072f, 0.017480927f, -0.077516563f, -0.030850014f, + -0.066505313f, 0.10845886f, 0.051914409f, -0.15016361f, + -0.025659926f, -0.042933062f, 0.03184836f, 0.08990325f, + -0.0063569369f, -0.073913805f, -0.023300933f, -0.23102251f, + -0.030541508f, 0.076722398f, -0.047631525f, -0.099984631f, + 0.086408079f, -0.28463483f, -0.24029423f, -0.01136388f, + -0.079540916f, -0.10205994f, 0.005238214f, 0.053784281f, + 0.045823462f, 0.11178763f, 0.16625309f, -0.0077567478f, + 0.010786452f, -0.028376697f, 0.015057999f, 0.2810562f, + 0.13376036f, 0.077413626f, -0.22573374f, 0.049765166f, + -0.037708562f, 0.11627903f, -0.10651999f, 0.42962173f, + -0.051622942f, 0.0037287092f, 0.16382542f, 0.071820684f, + 0.35224649f, 0.13240381f, 0.038908027f, 0.042828586f, + -0.06293384f, -0.0090183821f, 0.062762722f, 0.021594068f, + -0.23859335f, -0.071785599f, -0.090211079f, -0.067491636f, + 0.025003858f, -0.20572804f, 0.093327262f, -0.021288574f, + -0.19902492f, -0.56932706f, -0.0076242629f, 0.061469749f, + -0.058956429f, -0.004925868f, -0.0023894056f, 0.024676275f, + 0.14320797f, -0.10437836f, -0.57641309f, 0.09203776f, + 0.53306967f, 0.060386021f, 0.026157994f, -0.096350618f, + 0.079123057f, 0.031522579f, -0.10954148f, -0.18697567f, + -0.0012768138f, -0.096662015f, 0.24146347f, -0.039608825f, + -0.071183696f, -0.22710586f, -0.011822877f, -0.025412425f, + -0.023429718f, 0.073794052f, 0.22484101f, 0.023006992f, + -0.075102769f, 0.0057501676f, -0.0093306098f, 0.0479756f, + -0.051917344f, -0.10134705f, -0.11967035f, 0.012585446f, + 0.013372624f, -0.038368549f, -0.0058750701f, 0.03051248f, + 0.10873027f, 4.007214e-05f, 0.043110322f, -0.061906062f, + 0.079517975f, 0.38229567f, -0.09639471f, -0.013940621f, + -0.025320791f, -0.10735353f, 0.21675681f, 0.02721067f, + -0.022010311f, -0.17243296f, -0.020873271f, -0.059708808f, + 0.16455948f, 0.0070109582f, -0.099987179f, -0.0050128107f, + -0.011320522f, -0.032590792f, 0.035302978f, -0.0091556609f, + -0.14767762f, 0.035930052f, 0.029512059f, -0.010479788f, + 0.00040158551f, -0.047960885f, 0.045022551f, 0.092052214f, + 0.010597417f, 0.092329338f, 0.023574766f, -0.47954509f, + 0.14480601f, -0.018015942f, -0.0051922039f, 0.028784987f, + -0.14795791f, 0.22320199f, -0.23324509f, 0.0043374998f, + 0.023466835f, -0.027567225f, 0.0093156137f, -0.0088632926f, + 0.007851528f, -0.020352056f, -0.1583662f, -0.02643778f, + 0.024041094f, -0.29081628f, 0.0020635049f, -0.21269305f, + 0.037084401f, -0.055710867f, 0.059402939f, 0.081084579f, + 0.095660664f, 0.16625872f, -0.19061984f, 0.38078174f, + -0.01419424f, 0.052231796f, 0.23393291f, -0.3566865f, + 0.072345428f, 0.08495722f, -0.045201447f, -0.012994065f, + -0.026060967f, 0.23606682f, 0.013707311f, -0.00036922735f, + -0.16130514f, -0.17823008f, -0.030901801f, 0.040357042f, + 0.00093694864f, -0.12599871f, -0.018811366f, -0.080104902f, + -0.061048791f, 0.04865586f, 0.0099000102f, 0.0094204899f, + -0.039305415f, -0.14711398f, -0.018159939f, -0.013333757f, + -0.11075471f, -0.3447749f, -0.033500113f, -0.092492826f, + 0.62719136f, 0.030659072f, -0.18570991f, 0.05347525f, + 0.014452123f, -0.013972853f, -0.037924282f, 0.045797605f, + 0.0054698153f, -0.033014588f, 0.33961615f, -0.20855322f, + 0.071693465f, -0.055598754f, 0.00118224f, 0.0011549086f, + 0.058645803f, 0.11095775f, -0.13308527f, 0.013023951f, + -0.044617463f, 0.073497728f, -0.44005054f, 0.0078695733f, + 0.097130626f, -0.031042244f, -0.11396312f, -0.024832131f, + 0.0186584f, -0.10312366f, 0.2578508f, -0.016537318f, + -0.0093803117f, -0.052767813f, 0.1223511f, 0.082161687f, + 0.039921697f, 0.31222332f, 0.0060843895f, 0.016765969f, + -0.012347418f, -0.08119645f, -0.021580478f, -0.11163866f, + -0.044919539f, 0.22708192f, -0.2068374f, -0.10078827f, + 0.15556134f, 0.027290192f, 0.048673075f, 0.0086493641f, + 0.0029131842f, 0.02521559f, -0.11072427f, -0.014230072f, + -0.10950811f, 0.18285432f, 0.15971546f, -0.16240539f, + -0.0076807989f, 0.13098143f, 0.031934798f, -0.21512654f, + 0.026255319f, -0.0082562985f, -0.013709172f, -0.1326094f, + 0.015836056f, 0.16395028f, -0.030613499f, -0.064646885f, + 0.027997119f, 0.1623171f, 0.071082123f, -0.051238231f, + 0.50058138f, -0.059462827f, -0.016092377f, 1.0848987f, + -0.10404827f, 0.07758902f, 0.30094633f, -0.026706047f, + -0.13192689f, 0.84754884f, 0.36701208f, 0.12132024f, + -0.78233761f, -0.26592362f, 1.6286242f, -0.0031957305f, + 0.1527016f, -0.52482724f, 0.47786689f, 0.17951787f, + -0.095929883f, 0.27237707f, -0.065231815f, 0.10966983f, + 0.078730159f, 0.051925953f, -0.091926165f, -0.090415873f, + -1.9351186f, -0.60993087f, 0.011611055f, -0.0046346467f, + 0.076627783f, -0.99552244f, 0.021641189f, -1.2067186f, + -0.36831886f, 0.46845615f, -0.0052526882f, -0.18248254f, + 0.0046503036f, 0.019169809f, 0.023991928f, 0.0066790925f, + -0.14139482f, -0.24726757f, -0.001194632f, 0.025894595f, + 0.11848386f, -0.57052583f, -2.2878833f, 1.0256157f, + -0.78312641f, -0.10353225f, 0.36693051f, -0.07445576f, + 0.15375063f, -0.034898195f, -0.072189964f, 0.23004088f, + -0.0036075539f, -0.39414689f, -0.18552388f, -0.69238806f, + 0.16593626f, 1.2344528f, -0.036111061f, 0.036897358f, + 0.080023222f, -0.0010727249f, -0.64986694f, 0.25929242f, + -0.080017015f, -0.046673667f, -1.2282281f, 0.13534664f, + -0.0049035125f, 0.20868449f, 0.23583604f, 0.054616269f, + 0.20011379f, 0.033585757f, 0.23104574f, 0.25890824f, + 0.1137422f, 0.21459538f, 0.053289823f, 0.16786876f, + 0.20909455f, -0.78634316f, -0.13320795f, -0.022591729f, + -0.04683131f, 0.057383087f, -0.15109503f, -0.40500599f, + 0.15915328f, 0.025673902f, -0.027654117f, 0.24364565f, + 0.012838678f, -0.015255561f, 1.3005444f, -0.0023622846f, + 0.021734387f, -0.028605066f, 0.16270092f, 0.012478122f, + -1.0922436f, -0.23076719f, 0.085491344f, 0.10954281f, + 0.019475115f, 0.46319962f, 0.083655939f, 0.20259003f, + 0.21196181f, 0.010469458f, -0.0019110987f, 0.047552288f, + 0.12680553f, 0.062860206f, -0.0053056893f, -0.064757712f, + -0.056694049f, 0.29940531f, -0.063863561f, 0.006923418f, + -0.18470871f, -0.090653837f, 0.01228186f, -0.063423149f, + 0.067038305f, 0.064304657f, 0.10996268f, 0.020756556f, + -0.070927262f, -0.23136915f, 0.13455923f, 0.31252983f, + -0.022624286f, 0.25807133f, 0.043428838f, 0.0032038039f, + -0.16029908f, 0.11865752f, 0.33240315f, -0.036939416f, + -0.0024309049f, 0.056862466f, 0.14850692f, -0.016064331f, + -0.065650918f, -0.15242258f, 0.06394089f, -0.0099619115f, + 0.40704349f, 0.32161379f, -0.081826724f, -0.035382356f, + -0.17263146f, -0.54716015f, -0.047673866f, -0.40403622f, + -0.08130873f, 0.91611081f, 0.023237927f, 0.11951555f, + -0.065391064f, -0.1038001f, -0.025007488f, 0.034112338f, + -0.084476031f, -0.080417596f, 0.006815874f, 0.00069920399f, + 0.0069536371f, -0.29500216f, -2.2373295f, -0.20806843f, + -0.19067506f, -0.0020816731f, 0.086665854f, -0.078415029f, + -0.058943279f, -0.069107771f, 0.17991863f, 0.13859256f, + -0.0037005532f, -0.033125665f, 0.015628219f, -0.03185774f, + -0.0028265994f, -0.1541478f, 0.020791674f, -0.013947391f, + -0.12074175f, -0.026418675f, 0.5360226f, 0.31743604f, + -0.18447681f, -0.01908524f, -0.044419341f, 0.27968222f, + -0.078795604f, -0.37560621f, -0.41017732f, -0.0087963082f, + 0.04565018f, 0.13080736f, -0.053235788f, -0.2309563f, + 0.28617102f, -0.016512541f, 0.016412828f, -0.34147018f, + 0.074076034f, -0.59498882f, -0.038349357f, 0.0031980579f, + 0.0052856077f, -0.032706723f, 0.036177594f, -0.053747211f, + 0.011388752f, -0.080332093f, 0.52679116f, 0.44527948f, + 0.15945376f, 0.0086977612f, 0.23367324f, 0.0251396f, + -0.020776207f, 0.092287555f, -0.17860951f, 0.010682963f, + -0.10049441f, 0.041344337f, 0.097885564f, -0.062904343f, + -0.020772744f, -0.018710334f, -0.094069257f, 0.11350382f, + -0.52094972f, 0.0084395073f, -0.0015102992f, -0.064616702f, + 0.080887452f, -0.13176005f, -0.04171735f, -0.07830558f, + -0.16495723f, -0.45016438f, 0.066041276f, 0.07396476f, + 0.091846146f, 0.09718205f, -0.012610423f, -0.13429791f, + -0.031776875f, 0.016998855f, -0.011660682f, 0.033287007f, + 0.053377092f, -0.32131499f, 0.14663696f, -0.11218856f, + 0.035623811f, 0.19696407f, -0.018963451f, -0.021866439f, + -0.055358417f, 0.094887532f, 0.27059615f, -0.61762929f, + 0.099783733f, -0.034887712f, 0.55603427f, -0.034411244f, + -0.10678107f, -0.10396962f, -0.10346498f, 0.072930299f, + 0.4975034f, 0.57621312f, 0.091916688f, 0.014624501f, + 0.019666282f, -0.46469548f, 0.055886306f, -0.38569579f, + -0.169462f, 0.85081762f, 0.039622314f, -0.0096130902f, + -0.21598679f, 0.25130048f, 0.047557484f, 0.016112672f, + 0.046019059f, -0.032540653f, -0.010785227f, -0.012094024f, + -0.063488759f, -0.035891745f, -1.5822506f, -0.28632534f, + 0.0088096941f, 0.0037261089f, 0.035367168f, 0.044695653f, + -0.24068841f, -0.0046724291f, -0.1775872f, 0.081677109f, + 0.0044413516f, 0.15628521f, -0.0044719181f, 0.0062764795f, + 0.088293321f, -0.35385129f, 0.011627432f, -0.031562056f, + -0.092634179f, -0.037253156f, 0.34298322f, 0.28514218f, + -0.11141951f, 0.017314043f, 0.0079798028f, 0.17992072f, + 0.15276386f, -0.26383054f, -0.24643551f, -0.035701077f, + 0.039278265f, 0.15863907f, 0.090329215f, -0.20885076f, + 0.013949547f, -0.033430491f, 0.0489606f, -0.10122415f, + -0.13855976f, -0.32363406f, 0.029557217f, 0.0005588624f, + 0.043201603f, -0.068657368f, -0.013219078f, -0.019279044f, + -0.074106395f, 0.0933173f, 0.10298301f, 0.24480884f, + 0.16081093f, 0.010452769f, 0.26251146f, -0.024331272f, + -0.0053296969f, -0.031484526f, 0.082074024f, -0.018082166f, + 0.085410923f, 0.09484762f, 0.18130082f, -0.29268724f, + -0.0030437198f, -0.17033598f, 0.022544352f, -0.052867167f, + -0.036807917f, 0.05855025f, 0.00090980279f, -0.12988847f, + 0.009179295f, 0.027613727f, -0.068614379f, -0.094559953f, + -0.067957327f, -0.18315187f, 0.044769146f, -0.044549186f, + -0.14260334f, -0.029123759f, 0.002904752f, -0.14069298f, + 0.043196756f, -0.012311774f, -0.040447284f, 0.053672556f, + 0.084303223f, -0.28784251f, 0.1035684f, 0.044838347f, + 0.051697791f, 0.13166529f, 0.15787406f, -0.042684369f, + -0.052428529f, 0.0063666832f, 0.21377066f, -0.90303922f, + 0.032871194f, -0.14577113f, 0.064216845f, -0.37701833f, + -0.28552502f, -0.0647268f, -0.057327066f, 0.073763154f, + 0.48306757f, 0.46824667f, 0.011765787f, 0.054167241f, + 0.085996903f, -0.32628068f, -0.023530683f, -0.34287572f, + -0.032553192f, 0.58291125f, -0.015409646f, 0.10776246f, + -0.45433307f, 0.2224158f, -0.05451069f, 0.028529653f, + 0.10655186f, 0.092252247f, 0.014413889f, -0.011254801f, + -0.12472474f, 0.3327097f, -1.3355311f, -0.18915954f, + 0.097819999f, -0.081503399f, 0.0025568735f, 0.056219306f, + -0.24308304f, -0.052448917f, -0.3183538f, 0.00943485f, + -0.0016213451f, -0.071923144f, 0.044152454f, 0.12427946f, + 0.069905899f, -0.13781989f, 0.02540281f, 0.035607558f, + -0.13338055f, -0.10629809f, -0.14595518f, 0.1674754f, + -0.11506929f, -0.057909723f, -0.044905666f, 0.049582604f, + -0.017584231f, 0.1168911f, -0.28954509f, -0.014913995f, + 0.058459684f, 0.071938895f, -0.14131622f, -0.24811655f, + -0.06616126f, -0.1109706f, 0.04715452f, 0.070132338f, + -0.049622301f, -0.21997853f, 0.043496907f, -0.0060401317f, + -0.01069637f, -0.1186865f, 0.13640784f, 0.044245545f, + -0.043959346f, -0.1141243f, 0.12853427f, 0.21574773f, + -0.010266164f, -0.017121229f, 0.21259643f, -0.025012163f, + -0.0063817939f, 0.026400462f, 0.35245305f, 0.034548849f, + 0.070568003f, 0.0062675946f, 0.24937856f, -0.16897707f, + 0.021199917f, -0.31527999f, 0.098257534f, -0.028279193f, + 0.20088267f, -0.034368709f, 0.0016757518f, 0.1502317f, + -0.10558288f, -0.1584136f, -0.038478002f, -0.037384804f, + -0.032049563f, 0.38244486f, 0.15163383f, 0.013069124f, + -0.34172249f, 0.018837212f, 0.024284458f, -0.0038294783f, + -0.037385572f, 0.090103209f, 0.081946582f, -0.0027771485f, + -0.045870986f, -0.25344265f, 0.068547316f, -0.033931676f, + -0.036286835f, 0.057637177f, -0.13586339f, -0.015116972f, + -0.074022904f, 0.066093564f, 0.27365443f, -0.64269471f, + -0.011468048f, -0.014967841f, -0.67286867f, 0.12416545f, + 0.23284435f, -0.051795617f, 0.059845287f, 0.023038991f, + 0.28196055f, -0.23106956f, 0.051996451f, -0.08086171f, + -0.021344561f, -0.34322831f, 0.063463837f, -0.33451128f, + 0.19231892f, 0.29634121f, -0.064176254f, 0.0078280233f, + -0.40443248f, 0.37568459f, 0.0029091954f, -0.011456769f, + 0.15749718f, 0.18985063f, -0.0068377103f, -0.004686025f, + 0.046094522f, 0.53192002f, -0.75700545f, -0.11605954f, + 0.1343963f, 0.02380966f, -0.0080516674f, 0.057391934f, + -0.1186562f, 0.041177884f, -0.100646f, -0.21796964f, + 0.010054787f, -0.025036965f, -0.13095959f, 0.17440639f, + 0.11553787f, -0.14754875f, -0.0072494927f, 0.010265118f, + 0.0014665595f, -0.049412772f, -0.369899f, 0.19086269f, + 0.016865242f, 0.055785503f, 0.083086647f, 0.067435242f, + -0.21693003f, 0.15729387f, -0.067935608f, 0.005509533f, + -0.028378837f, 0.099794783f, -0.024490118f, -0.028157191f, + -0.044883143f, -0.025631243f, -0.0033872798f, -0.0034647251f, + -0.12884906f, 0.057225045f, -0.093781263f, 0.017551553f, + -0.02069187f, -0.12929228f, -0.032477181f, 0.14308043f, + -0.16101514f, -0.15310861f, -0.15184534f, 0.14981824f, + -0.0019980641f, 0.022368647f, 0.08183258f, 0.016081369f, + 0.0059093903f, -0.047347672f, 0.1513903f, -0.0022216227f, + -0.08713229f, 0.010601297f, -0.13654825f, -0.11585274f, + -0.010110096f, -0.22927026f, 0.014448831f, 0.022267904f, + 0.017061343f, 0.039213736f, 0.023091156f, 0.11845379f, + -0.13318315f, -0.021628415f, 0.012058618f, 0.0093274256f, + 0.028603008f, 0.096952669f, -0.014145567f, 0.0349718f, + 0.0047081327f, 0.028613333f, -0.0095780035f, 0.025814218f, + -0.012062912f, 0.0016579512f, -0.0033499701f, -0.014774337f, + -0.06696444f, -0.22205725f, 0.032194849f, -0.049991768f, + -0.053152908f, -0.046192694f, -0.24900314f, -0.069606259f, + -0.050055373f, 0.18885376f, 0.26129368f, -0.13528578f, + 0.020294534f, 0.16088359f, -0.30446893f, 0.37864959f, + -0.20174222f, -0.082911856f, 0.063814513f, 0.021682767f, + 0.11107719f, -0.51022255f, -0.022209575f, 0.017719772f, + -0.13422924f, -0.28975824f, 0.032319367f, -0.23798305f, + -0.14034349f, 0.24691658f, -0.048198611f, 0.084442616f, + -0.40033931f, 0.24533406f, -0.014923112f, 0.031232623f, + -0.045187779f, 0.10546117f, 0.0075512002f, 0.011898051f, + 0.098998241f, 0.35663199f, -0.74411041f, 0.05538078f, + 0.2074461f, -0.053027704f, 0.062950291f, 0.064586237f, + -0.013095045f, 0.047485393f, -0.078908183f, -0.19982472f, + -0.0066769496f, 0.036235649f, -0.001502054f, -0.018219355f, + 0.013134752f, -0.23561816f, 0.0080338186f, -0.021109242f, + -0.10149819f, 0.039078288f, 0.051965144f, 0.19326408f, + -0.079807304f, -0.025057938f, 0.014147614f, 0.13248762f, + -0.2011144f, 0.11566548f, -0.0068650497f, 0.021899566f, + -0.018587748f, 0.11344896f, 0.037250221f, -0.048664421f, + -0.063859195f, 0.054632958f, 0.017604163f, 0.10259161f, + -0.040882155f, 0.37388885f, -0.0094316956f, -0.0027575837f, + 0.0088333506f, -0.12256898f, -0.067714326f, 0.021044703f, + 0.18949182f, -0.028458096f, 0.44620764f, 0.18311174f, + -0.13356748f, -0.0082093999f, 0.058285393f, -0.0036005478f, + 0.010861701f, -0.0034254023f, 0.16691707f, -0.0039756284f, + -0.076988898f, -0.030862652f, -0.12483884f, -0.12929924f, + 0.0065935873f, -0.12310456f, -0.056970637f, 0.0030201518f, + 0.001124249f, 0.0095008677f, -0.0074336049f, 0.080875121f, + -0.060140219f, 0.068169601f, -0.04718107f, 0.010188508f, + -0.046518255f, -0.51522756f, 0.098504156f, 0.066477835f, + -0.043906804f, -0.003734628f, -0.023340214f, 0.02110545f, + 0.024899203f, -0.044060659f, 0.16783786f, -0.041839972f, + -0.0404367f, -0.19538262f, 0.23648508f, 0.13367012f, + 0.15211792f, 0.052731663f, -0.34633791f, 0.020531084f, + 0.011865692f, 0.18925422f, 0.19189954f, 0.31299132f, + 0.021547988f, 0.11163941f, -0.20152859f, 0.26333764f, + 0.45065612f, 0.014566468f, -0.080165766f, -0.056343589f, + -0.0090856738f, -0.1902879f, -0.027882921f, 0.023519183f, + 0.021937568f, -0.19720231f, 0.032170024f, -0.13728413f, + -0.1298935f, 0.10285216f, -0.052952558f, 0.015534973f, + -0.42706332f, -0.78189629f, -0.0036126277f, 0.0058348412f, + -0.10813878f, 0.085623726f, 0.0054891752f, -0.019834356f, + 0.052704565f, -0.037377559f, -0.6671989f, 0.17321102f, + 0.20470133f, -0.075365253f, 0.075990424f, 0.00066258886f, + 0.2326396f, -0.07998088f, -0.2013908f, -0.24573289f, + -0.0019316612f, 0.060749829f, 0.12826864f, 0.061749443f, + -0.023731342f, -0.1653915f, -0.04409726f, 0.019913429f, + -0.015284818f, 0.067665763f, 0.3253943f, 0.15060024f, + -0.065886848f, -0.066679515f, 0.26040587f, 0.080890641f, + -0.20265536f, -0.057769086f, -0.12543413f, 0.0033846868f, + -0.042118717f, -0.11381845f, -0.23055926f, 0.048580222f, + 0.069066115f, 0.00037695453f, -0.067672223f, -0.10489738f, + 0.038004238f, 0.45680806f, -0.076900288f, 0.018700646f, + 0.037562016f, -0.072972745f, 0.0050664465f, -0.017826943f, + -0.062431764f, -0.06939771f, -0.012023995f, -0.015909856f, + 0.054073613f, 0.012680111f, 0.010394925f, -0.0038525157f, + 0.0095170448f, -0.026336109f, 0.23411378f, 0.0085745342f, + -0.014505887f, 0.011301909f, -0.019147495f, 0.065816917f, + 0.01898168f, 0.0092290808f, -0.058567528f, 0.011761229f, + 0.0017438635f, 0.005292343f, -0.010019057f, -0.091354012f, + 0.0016139221f, 0.11331289f, 0.049507622f, 0.019384161f, + -0.26204127f, 0.18053985f, -0.18485926f, 0.014635528f, + 0.14529078f, 0.09664958f, 0.0015981818f, -0.21344401f, + -0.015326707f, 0.037587922f, -0.19374599f, -0.063080817f, + 0.19137669f, -0.67921728f, 0.041984279f, -0.29355249f, + -0.053256396f, -0.071153499f, -0.17327791f, -0.053103022f, + -0.071078807f, 0.32091442f, 0.24998528f, 0.5813036f, + 0.015846394f, 0.0026621905f, 0.23646502f, -0.12515669f, + 0.12025543f, -0.019016961f, 0.01713815f, 0.0047598188f, + 0.012620356f, 0.17136095f, -0.042548236f, -0.028166361f, + -0.1980522f, -0.35366461f, 0.17331901f, -0.38632551f, + 0.29711053f, 0.06500265f, 0.047681116f, 0.0789496f, + -0.30115774f, -0.19505753f, -0.0083834836f, -0.11060636f, + 0.12725663f, -0.036785327f, 0.0083267959f, 0.021951487f, + -0.051453769f, -0.59676188f, -0.51314384f, 0.059797745f, + 0.61776012f, -0.032792959f, -0.12564529f, 0.0039407797f, + 0.12722485f, 0.04532478f, -0.30482855f, -0.16660775f, + -0.0082859453f, 0.11056935f, 0.19234411f, -0.064020276f, + 0.020940693f, -0.09258341f, 0.022099618f, -0.021025268f, + 0.12688972f, -0.011375668f, -0.088342607f, 0.24338503f, + -0.14102131f, -0.22810824f, 0.065143935f, 0.023342205f, + -0.11740951f, -0.02522199f, -0.099424846f, 0.033110078f, + -0.050531935f, -0.1391459f, 0.15086021f, -0.092109039f, + -0.074098721f, -0.11772583f, 0.05155164f, 0.22075482f, + 0.070997499f, 0.49340886f, 0.0099273846f, -0.013058442f, + -0.0064239674f, -0.14155105f, -0.098513089f, 0.13416465f, + -0.24715842f, 0.64959967f, -0.33143908f, -0.108193f, + 0.040393367f, -0.025721006f, 0.093782082f, -0.014657813f, + -0.018761029f, -0.040810529f, -0.074955568f, 0.0020644013f, + -0.081285998f, 0.019143894f, -0.079716019f, -0.0089238314f, + -0.015076756f, 0.28921419f, 0.056168314f, -0.18256733f, + -0.0065345331f, 0.042136729f, -0.006731973f, 0.20569956f, + 0.0017219251f, -0.011540467f, -0.017864661f, -0.13629937f, + -0.015259713f, 0.00429308f, 0.12542644f, -0.0010199059f, + 0.0033654897f, -0.06428165f, 2.612226f, 0.0022507533f, + -0.003105971f, -0.01213491f, 0.030032393f, -0.026406426f, + -0.048410982f, 0.0049111103f, 0.057728831f, -0.32862952f, + -0.0030977128f, -0.001554242f, 0.00061261241f, -0.0040169018f, + 0.07184758f, 0.00014384827f, -0.00074025278f, 0.0012140484f, + -0.022649027f, 0.24547629f, -0.042752098f, -0.0010821372f, + -0.022337958f, -0.057623923f, -0.065191694f, 0.014112816f, + -0.00092605519f, -0.00022556759f, -0.1001987f, -6.738441f, + 0.064924151f, -0.00080103963f, 0.0018832873f, -0.0011917345f, + -0.073680423f, 0.0031496056f, 0.0034227429f, -0.35137454f, + 0.044462707f, -0.023934631f, 0.0044465582f, 0.03490074f, + -0.024082428f, 1.7597131f, -3.0310001f, 0.011575998f, + -0.0011875603f, 0.0015988441f, 0.010348054f, 0.00062355294f, + -0.0009696004f, -0.0041290708f, -0.078300491f, -0.089446783f, + -0.62914693f, 0.0031068099f, 0.022479413f, -0.39101216f, + 2.7400074f, -0.0018763248f, -0.067223504f, -0.0029525543f, + -0.0036278612f, 0.0018626027f, -2.1576529f, -0.13308582f, + 0.055114791f, 0.035991207f, 0.00069661118f, -0.0037652496f, + 0.0051692938f, -0.049419012f, 0.001723216f, -0.0022018538f, + -0.19880037f, -0.00038634407f, -0.0044618198f, 0.012055887f, + 0.002338524f, -0.002111817f, 0.13589063f, -0.0010265908f, + -0.0022864796f, 0.0010888263f, -0.0017684849f, 0.036963403f, + 0.91344303f, -0.00055159983f, 0.67356157f, -0.0081337858f, + -0.0048596221f, -0.10739346f, 0.012494946f, 0.077913761f, + 0.035204727f, -0.015138514f, -0.034778517f, 0.0016251366f, + 0.060185552f, 0.0029204618f, -0.0007998643f, 0.003249557f, + 2.1696191f, 0.0028663948f, -0.58640969f, -0.0038180971f, + 0.0051664482f, -0.0047406801f, 0.10299493f, -0.030945137f, + 2.2374644f, -2.3608343e-05f, 0.020162106f, 1.1815314f, + -0.0010464996f, 1.4973562f, -0.023299621f, 0.26172039f, + -0.011407046f, -0.06250795f, -0.040475979f, -0.06590803f, + 0.027639395f, -0.0030077759f, 0.14565815f, 0.030644927f, + 0.00206249f, 0.026945069f, -0.017702106f, 0.00032904834f, + -0.0011223255f, -0.0062960978f, 0.0056037675f, 0.019447895f, + -0.007838455f, -0.0039149579f, -0.066684268f, 0.01293442f, + 0.0012480478f, -0.00023353465f, 0.0057036183f, 0.00039904498f, + -0.0030661526f, -0.0011825283f, -0.00056232919f, 0.00079662126f, + -0.012737944f, 0.038856842f, 0.030321766f, 0.00066235213f, + -0.016509617f, 0.056086283f, 0.034568977f, 0.0006122425f, + -0.00029560298f, -0.0039900509f, -0.028455494f, -0.33735591f, + -0.025645917f, 5.116409e-05f, 0.031806082f, -0.0016750377f, + -0.038650475f, -0.0063957064f, -0.060313381f, -0.11059713f, + -0.058297906f, -0.0083587393f, -0.0042247153f, 0.011388773f, + -0.0038084507f, 0.049482383f, -0.0036146461f, -0.0067188297f, + 0.0028269021f, -0.00067610055f, 0.011075664f, -0.0037046219f, + -0.0019216528f, 0.026894072f, 0.01006944f, 0.016158074f, + 0.057040598f, 0.0058531887f, -0.023972487f, 0.051993169f, + 0.0093542859f, -0.0025279291f, -0.036921907f, 7.8521953e-05f, + -0.018096354f, -0.00098468992f, -0.024014991f, -0.032053895f, + 0.0065124924f, 0.0022959074f, -0.0008404227f, -0.0013923934f, + -0.049444802f, -0.0048000151f, -0.0010163576f, 0.0017921021f, + -0.0072623449f, -0.00010691923f, 0.00015799369f, -0.012325446f, + 0.00026871264f, -0.0052408921f, -0.16828784f, -0.0048630219f, + -0.00014401428f, -6.2571948e-05f, -0.0018501672f, -0.065634079f, + -0.022911424f, -0.0016310633f, -0.12107347f, -0.004164068f, + -0.0093456861f, -0.017297279f, 0.016120231f, 0.078554004f, + -0.023620883f, 0.02162155f, 0.00082764041f, -0.0012920279f, + -0.018345209f, 3.8574835e-05f, 0.00012907834f, -0.00037115678f, + 0.013185155f, 0.027874134f, -0.11262735f, -0.0033903574f, + -0.0069973459f, -0.00052742468f, 0.021230709f, 0.0084108934f, + -0.0074932929f, -0.00085387746f, -0.01895453f, -0.027833071f, + 0.00091336266f, 0.16837661f, -0.0084971189f, 0.041285355f, + 0.0055781617f, 0.00738393f, -0.016573347f, -0.10798995f, + 0.21583569f, -0.0013649657f, -0.72067904f, -0.029074524f, + 0.0036323653f, -0.025072727f, 0.0050483355f, 0.0021023105f, + 0.0034520454f, 0.019901078f, 0.0017621621f, 0.015188288f, + -0.019419869f, -0.0063608564f, 0.13463493f, -0.5396499f, + 0.015744871f, 0.0010339636f, -0.00043260411f, 0.0094788605f, + 0.48484015f, 0.0020056374f, 0.0037366191f, 0.001796324f, + -0.049908649f, 0.25547218f, -0.07363148f, 0.0056007644f, + -0.087679744f, -0.14238888f, -0.12501918f, -0.0054142713f, + 0.00040164508f, -0.00083874312f, -0.089966036f, -0.032382157f, + -0.067114413f, 0.0015528321f, 0.0031633896f, 0.0041800281f, + -0.097832955f, 0.0089423228f, -0.01887547f, -1.1103641f, + -0.036359884f, -0.02744104f, -0.013416233f, -0.053707134f, + 0.011933625f, 0.03445778f, -0.020292176f, -3.4141278f, + 0.0024631703f, -0.00046688091f, -0.032963652f, 0.0027610115f, + 0.0045049451f, -0.071726277f, -0.031346738f, 0.0058791712f, + 0.19100027f, -0.0086019197f, -0.010152807f, -0.44369668f, + 0.0082133077f, -0.001122779f, -0.0062792553f, 0.0016234692f, + 0.022470618f, -0.00071237166f, 0.056593727f, 2.1487868f, + -0.022037024f, -1.2633014f, 0.0022073616f, 0.00060907152f, + -0.28773436f, 0.0034321058f, -0.00040784341f, 0.0026855227f, + 0.013636575f, -0.0017693607f, -0.0043838392f, -2.6148393f, + -0.0023814125f, 1.500515f, -0.026056038f, 0.00087276456f, + -0.0022718511f, 8.4402971e-05f, 8.1815197e-05f, -0.12601773f, + 0.061119635f, 0.00073736312f, -0.032903031f, 2.4298103f, + -0.029191146f, 1.2514992f, 0.076724254f, 0.042088717f, + 0.0087098088f, -0.041827999f, -0.029698133f, 0.00024719728f, + 0.060793459f, 2.0092463f, 0.0013704289f, 0.036837347f, + 0.0013002554f, 1.3444787f, 0.27510551f, -0.0084096994f, + 0.00085130904f, -0.0013299466f, 0.10252603f, -0.02704205f, + 0.0090684779f, -0.0013547331f, 0.053519186f, 0.29981902f, + -0.00020470975f, 1.248759f, -5.292594f, 0.25661716f, + -0.00095059408f, -0.036266573f, -0.043755453f, -0.10216885f, + 0.039612487f, 0.0015189353f, 1.0677569f, -0.0057161837f, + 0.0028731502f, 0.019182183f, -0.0015739769f, -0.00090698717f, + -0.001017604f, -0.020345328f, -0.010588823f, 0.0011394374f, + -0.0061189653f, 0.0019726297f, -0.094211273f, -0.03757922f, + -0.0083060171f, -0.00013928791f, -0.0034188442f, 0.0024010332f, + -0.018836096f, 7.3351461e-05f, -0.0040237033f, 0.00061839673f, + -0.00064529927f, -0.172307f, 0.013352424f, 0.00074208825f, + -0.036034808f, 0.039793216f, -0.069634743f, -0.016381672f, + 0.0012832156f, -0.0027474288f, -0.020750012f, 0.010158501f, + -0.0095036654f, 0.0012158998f, 0.0016975156f, -0.0030236805f, + 0.0089825699f, 0.0015794822f, -0.096995413f, -0.030953763f, + -0.022290776f, -0.0036310984f, -0.0030667593f, -0.0024955396f, + -0.032992806f, 0.11896978f, -0.0055854302f, -0.038308147f, + 0.0011244462f, -0.0013486373f, 0.017501153f, 9.3791896e-05f, + -0.0001154226f, -0.046166517f, 0.058906615f, -0.11365054f, + 0.53183949f, 0.0050441218f, -0.0070085707f, -0.28518131f, + 0.0035588786f, 0.0016464394f, -0.048267897f, 0.0038718223f, + -0.026027828f, 0.0022822456f, 0.006294461f, 0.28218135f, + 0.029077929f, -0.4346222f, 0.0019568573f, -0.0026180749f, + -0.20387925f, 0.03484882f, -0.00029531063f, -0.00010599784f, + -0.02198622f, 0.0022318843f, -0.0025337255f, -0.063800171f, + 0.0011114995f, -0.16230261f, -0.13088459f, 0.00062570127f, + -0.00049874757f, -0.00015651835f, -8.5298845e-05f, -0.11596777f, + 0.011859356f, 0.0001978886f, 0.17828724f, 0.022263462f, + -0.0094443681f, -0.22744942f, 0.033205748f, -0.052958209f, + -0.032409374f, 0.012381667f, -0.0080715828f, -0.0035475013f, + -0.025131699f, -0.37724665f, -0.0022175789f, -0.0036108901f, + 0.0019934312f, 1.1531229f, 0.15844193f, -0.00059782329f, + -0.0016331695f, 0.00061614544f, 0.065043613f, 0.020093087f, + 0.001524406f, -0.00023130736f, -0.010744084f, 0.017929297f, + 0.0026358312f, 0.15687184f, -0.005497654f, -0.010332928f, + -0.0061713378f, 0.25187698f, 0.17528512f, -0.004454155f, + -0.33677906f, 0.022342427f, 0.11777299f, 0.035352573f, + -0.029289311f, -0.67250621f, 0.017640555f, 0.0023872575f, + 0.011935665f, 0.63301933f, -0.033959672f, 1.6280657f, + -3.5733919f, -0.12790826f, 0.30568981f, 0.450809f, + 0.84724188f, -0.046447199f, -0.023158468f, 0.16660839f, + 1.9007206f, 4.4223369e-05f, 0.0087714344f, 0.019373225f, + 0.3073937f, 0.059840992f, 0.42428708f, -0.0074058175f, + 0.34588599f, -0.66326231f, -0.10558081f, -0.41449764f, + 0.00090242381f, 0.0070448439f, -0.16766167f, 0.075877808f, + 0.11793689f, 0.011320977f, 0.13726258f, 0.017580368f, + -0.49065569f, 0.025970006f, 0.02895763f, -0.55544585f, + 0.25304833f, 0.49496886f, -7.3963742f, 1.9656097f, + -0.95001185f, 0.28842291f, -0.015874205f, 0.00067964528f, + 0.012646227f, 6.2241124e-05f, 0.23063074f, -0.00930335f, + -0.002997735f, 0.062596112f, 0.60452068f, -0.07965643f, + 0.34969944f, -0.14178328f, 0.1817414f, -0.026026374f, + -0.0098883174f, 0.008491965f, 1.368721f, -0.0024690938f, + 0.13392285f, -0.011442855f, -0.045866143f, -0.12674768f, + -0.13261791f, 0.1587043f, 0.0048214965f, 0.0088839484f, + 0.39229155f, 0.16675644f, -0.00080685847f, 0.0065869992f, + 0.013556489f, 0.0095743136f, 0.17184527f, 0.0062263585f, + -0.009875847f, -0.83714443f, 0.76819861f, -0.023203101f, + -0.013575805f, 0.0025853561f, 0.0021722808f, 0.96473581f, + -0.64627379f, 0.0049241758f, 1.4332856f, 0.016383613f, + -5.6462359f, 0.32592914f, 1.9856069f, -0.19119464f, + 1.531269f, -0.27452064f, 0.11405723f, 0.035518792f, + 2.4409173f, 0.030416606f, -0.0045681288f, 0.00077984418f, + 0.0094944332f, -0.054561276f, 0.072547242f, 0.030206611f, + -0.055045906f, -0.0059023066f, 0.42845994f, 0.50901783f, + 0.024611006f, 0.0020540899f, 0.0095113376f, 0.1662178f, + 0.00053944864f, -0.025493005f, 0.052432049f, 0.64895207f, + 0.017626293f, 0.55796522f, -0.11161679f, -0.061796032f, + -0.035284147f, 0.01915957f, -0.081699044f, 0.050608989f, + 0.077630244f, -0.12752002f, 0.033348266f, -0.010162343f, + -0.0017017968f, 0.5614711f, -0.065732136f, 2.0858843f, + 1.6791084f, 0.042734604f, -0.47533914f, 0.21887402f, + -0.28043771f, 0.043440737f, 0.042019919f, -7.0627341f, + 1.193608f, -0.0050258399f, 0.014958588f, 0.013491881f, + -7.3643856f, -0.25900081f, -0.49665272f, 0.030008316f, + 0.28874546f, 0.015649213f, 0.017703924f, -0.27651355f, + 0.0037117982f, -0.0025447668f, -0.06765005f, -0.0097488239f, + 0.032299995f, -0.015619147f, 0.010927639f, 0.0038664974f, + -0.29379421f, -0.049800135f, -0.00031986492f, 0.067012243f, + -0.10966895f, 0.4481861f, 0.027050199f, 1.9952215f, + -0.33925971f, -0.38203436f, -0.044403844f, 0.0080621233f, + -0.0091989692f, 0.0012173833f, 0.36185032f, 0.019875092f, + 0.015799534f, -0.062218808f, 0.64899141f, -0.045261402f, + 0.42663702f, 0.065976053f, 0.25946295f, 0.75826687f, + 0.018804666f, -0.00079313089f, 1.5770973f, -0.0058648665f, + 1.3827412f, 0.011075541f, 0.012284517f, 0.10397509f, + -0.088736124f, 0.18513104f, 0.010101529f, -0.013539135f, + 0.79514974f, -0.34394017f, 0.01808485f, 0.0019337717f, + 0.34075332f, -0.010782576f, -0.25435224f, -0.0049488978f, + 0.0068431469f, -0.95449871f, 0.24948439f, 0.033183094f, + 0.022423621f, 0.0011387437f, -0.004468313f, -1.3490483f, + 0.91682631f, -0.0016250252f, -0.45911279f, -0.019960927f, + -5.7815886f, 0.56258696f, 1.315588f, -0.63244545f, + 2.1451881f, 0.09895397f, 0.30114254f, -0.011580094f, + 0.50010806f, 0.030961737f, -0.0018378398f, -0.043500617f, + -0.0092424536f, -0.027545828f, 0.15517907f, 0.027249388f, + 0.031880911f, 0.017114401f, 0.17074201f, -3.0671771f, + -0.0084320595f, 0.013954079f, -0.0093676494f, 1.3241155f, + -0.0032377301f, -0.0012154048f, -0.018005854f, -0.19880442f, + 0.020688547f, -0.15570587f, -0.025266305f, -0.060816687f, + 0.011814399f, -0.089090876f, -0.082107574f, -0.01670677f, + -0.004114754f, -0.037084647f, -0.026833732f, -0.012373753f, + -0.037950128f, -0.10029801f, 1.2366538f, 0.16311875f, + -0.22486922f, 0.21088782f, -0.35408148f, -0.95656282f, + 1.1566181f, 0.0096827652f, -0.014404361f, 0.0091502452f, + -0.2024354f, -0.02754906f, -0.046137843f, -0.1071651f, + -0.38121325f, 0.032683875f, -0.44510624f, -0.053153701f, + -0.76868653f, 0.15130788f, -0.11482362f, 2.0422759f, + -0.0051759398f, -0.016982831f, -0.11016287f, 0.016454594f, + -0.33464849f, 0.010536293f, 0.00389153f, -0.040118489f, + 1.5067561f, 0.035649534f, -0.01592963f, 0.32028157f, + -0.40344918f, -0.56098771f, 0.057448197f, 0.19150096f, + -0.041141f, 0.16682369f, 0.038464785f, 0.0079789115f, + -0.030713396f, -0.024766248f, -0.23039652f, -0.015596725f, + -0.025835359f, -0.025672749f, 0.11390819f, -0.098110519f, + -0.02276993f, 0.12430282f, 0.080274738f, 0.060227342f, + -0.0008492893f, -0.053498749f, -0.25976479f, -0.0042043221f, + -0.33553725f, -0.017847033f, 0.081132241f, -0.03441257f, + 0.11475668f, 0.26822832f, -0.040364742f, 0.0044518835f, + 0.330282f, 0.81827575f, -0.019927908f, -0.0031011552f, + 0.088714302f, -0.026310887f, -0.10185854f, 0.03072473f, + -0.0096062878f, 0.067765757f, -0.089555532f, -0.0091811828f, + -0.038807482f, -0.0051758541f, -0.015416631f, -0.076928131f, + 0.23670466f, -0.015751649f, 0.13126904f, -0.0051581366f, + -0.041266914f, 0.21524456f, 0.21025097f, 0.79333967f, + -0.21035123f, 0.063767835f, -0.23033671f, -0.066963598f, + 0.080860652f, -0.022340957f, -0.0065945555f, 0.012822589f, + -0.0054993536f, 0.030865347f, 0.073131986f, -0.0064403568f, + -5.4394026e-05f, -0.012634141f, -1.6687721f, 0.71330953f, + -0.027019685f, -0.017718531f, -0.31414938f, -0.60116845f, + -0.011365057f, 0.058012746f, 0.0072393897f, -1.7755373f, + -0.00054097659f, 0.035782304f, -0.024185134f, -0.015037602f, + 0.37540159f, -0.0061620199f, -0.076408237f, -0.026031071f, + 0.011844065f, 0.1928596f, 0.014376854f, 0.0012126508f, + -0.00021823628f, -0.022052087f, 0.1367849f, -0.010982746f, + 0.0022275096f, 0.0059187678f, -0.034354817f, 0.88382947f, + 0.076586865f, 0.002853344f, -0.0036453856f, 0.0077476911f, + -0.1735144f, 0.0010003396f, -0.00027397167f, -0.010284211f, + 0.010088626f, 0.12421904f, -0.076036312f, -0.0049586217f, + -0.25294566f, -0.047130931f, -0.071419977f, 0.075093627f, + -0.0024872136f, -0.00079185009f, -0.083467431f, 0.010430808f, + -0.091444016f, 0.0013931304f, -0.033915743f, -0.00089884159f, + -1.1768386f, -0.0073110797f, 0.055357818f, 0.082355961f, + 0.063562155f, -0.066523135f, -0.0041522747f, -0.057893097f, + -0.014294608f, -0.11778424f, -0.0062001371f, 0.0033077465f, + 0.00097251724f, -0.00058437366f, 0.084337912f, -0.001300218f, + 0.00046429751f, -0.097619973f, 0.015873695f, -0.076212525f, + -0.28036222f, -0.010331626f, -0.04326573f, 0.27609578f, + 0.0077984994f, -0.00022556946f, 0.05658609f, -0.00087149377f, + 0.01641161f, 0.0011846724f, 0.039301928f, -0.015745124f, + -0.033958774f, -0.02279092f, -0.0016113744f, -0.0015349183f, + 0.38288039f, -0.17604119f, -0.0018679542f, 0.00033446151f, + -0.016172074f, -0.00012272141f, 0.0082719885f, 0.031472929f, + 0.0014357039f, 0.055110291f, -0.00069061085f, -0.0006813592f, + 0.0029922794f, 0.0012528406f, 0.0013000336f, 0.046762723f, + 0.251706f, -0.0038109887f, 0.33932659f, 0.01135193f, + 0.0036330605f, 0.029819356f, -0.0045847339f, 0.17053448f, + -0.067638263f, 0.13468024f, 0.03015786f, -0.0042535914f, + -0.10233223f, -0.028687092f, -0.0009937447f, -0.0061994526f, + -0.00052993541f, -0.0087918341f, 0.25727013f, -0.0095525654f, + -0.0037644424f, 0.0012876941f, -1.4155773f, 0.026072063f, + -0.015410805f, 0.00012063476f, -0.15755232f, -0.088386811f, + 0.0012180757f, -0.015880549f, -0.0078312382f, -0.20800631f, + 0.14783897f, 0.026368294f, -0.0093430998f, 0.014307618f, + -0.07478527f, 0.072768435f, -0.29383108f, -3.2524927f, + -0.10992987f, -3.1787367f, -0.02461003f, 0.074051961f, + 0.085822262f, -1.8435416f, -0.089893073f, -1.2318176f, + 0.23309331f, 0.21695024f, -0.77817875f, 0.3458837f, + 0.083383895f, 0.27885255f, 0.2425369f, 0.025610542f, + -0.2998049f, -0.069788598f, 0.053712294f, 0.21102889f, + 0.2653456f, 1.7620516f, -0.21126968f, 0.19592434f, + 0.17490152f, 1.560462f, 0.0084860483f, 0.014185566f, + 0.097086839f, 0.085754454f, 0.85280395f, 0.62038153f, + 0.5337922f, 0.17036153f, 1.3192044f, 0.083651461f, + -0.027174637f, -0.048620552f, 0.010741722f, -0.020518512f, + 0.80681908f, -0.33876401f, -0.17892466f, -0.69437885f, + 0.47624698f, 0.032937601f, 0.017577596f, 0.065670177f, + 0.11618084f, 0.11437465f, -0.53849286f, 0.030383691f, + 0.10342044f, 0.049616527f, 1.5853325f, -0.033960775f, + -0.63490653f, 1.2608074f, 0.20771912f, -0.07501848f, + 0.001565004f, 0.01584401f, -1.5210779f, 0.018582204f, + 0.64113903f, 0.02600798f, 0.17979774f, 0.21831571f, + 0.37217337f, -0.62748808f, 0.011760363f, 0.031634506f, + -0.24475895f, 0.47859138f, 0.034467582f, 0.25205696f, + 0.017550681f, 0.026157279f, 0.055838771f, -0.028575087f, + 0.017122602f, -0.21475342f, 1.9178499f, 0.20466928f, + 0.08763472f, -0.039501876f, 0.029511206f, -0.13926709f, + 0.15264234f, 0.034611769f, -0.54005504f, -0.49876815f, + 0.557073f, -0.68940347f, 0.65903676f, -0.11134969f, + -0.22855477f, 0.41602224f, -1.6151092f, 0.16733573f, + 0.41434598f, -0.18629684f, 0.034553438f, 0.29343009f, + -0.043500934f, 0.097366169f, 0.32989645f, -1.6263535f, + -0.0023034201f, 0.026553394f, -0.073592782f, -0.2574853f, + -0.0054057366f, -0.0029596116f, -0.017129147f, -0.24928209f, + 0.019617604f, 0.0077060126f, 0.095079936f, 1.4519426f, + 0.23612666f, 0.82503301f, -0.083815984f, 0.036127802f, + 0.22253656f, 0.13388468f, -0.37918001f, -3.4820735f, + 0.044405822f, -5.0657692f, -0.01883271f, 0.10279585f, + 0.12818348f, -1.613479f, -0.49606511f, -0.64479983f, + 0.65634626f, 0.1342994f, 0.21720596f, 0.50163651f, + -0.027483899f, 0.10900945f, 0.21308455f, 0.20881315f, + -2.3815162f, 0.013683774f, 0.075631633f, 0.25532392f, + 0.31410223f, -0.21467376f, 0.19822332f, 0.15957662f, + 0.73848689f, 1.2553762f, 0.072727628f, 0.1896423f, + 0.094709516f, 0.069642656f, 1.1098517f, 0.029311998f, + 0.85349303f, 0.16078427f, 1.152578f, 0.085566044f, + -1.2546209f, 0.2145762f, -0.014399569f, 1.6284715f, + -0.019619348f, -0.16489105f, -0.099629708f, -0.33889994f, + -0.091613598f, -0.043735158f, 0.032632656f, 0.068239063f, + 0.085631117f, 0.12222004f, -0.3237555f, 0.048325062f, + 0.15553625f, 0.049074005f, -7.5052505f, 0.035101093f, + -0.37309736f, 1.9777013f, -0.2442944f, 0.09886039f, + 0.043791246f, 0.061405905f, -1.1957629f, 0.051224709f, + -0.5864172f, 0.095977999f, 0.11599836f, 0.37450659f, + 0.49881899f, -0.73644346f, 0.052525256f, 0.061838824f, + 1.6634251f, 0.37593439f, 0.03696404f, 0.23621206f, + 0.45882118f, 0.05627865f, 0.032766979f, -0.056797482f, + 0.024964429f, 0.34314573f, 3.1860552f, 0.22115701f, + 0.074624673f, 0.045673836f, 0.021189723f, 0.66590446f, + -0.13413729f, 0.021816546f, 0.069117375f, -0.53556848f, + 0.62247401f, 0.058348976f, -0.62629759f, 1.0161898f, + -1.8549742f, 1.464061f, -1.2896911f, 0.11519418f, + 0.48464066f, -0.069223829f, 0.011759005f, 2.4472172f, + -0.0046235342f, 0.46639019f, -0.9424811f, -0.33217332f, + -0.073918939f, 0.040005844f, -0.21801645f, 0.23825517f, + 0.017235253f, 0.05986543f, -0.32733291f, 0.61412448f, + 0.028434394f, -0.19847208f, 0.065917097f, -0.15534538f, + 0.1565752f, -0.8128925f, -0.10422065f, -0.02606244f, + 0.95272124f, 0.086953096f, -0.31708643f, -2.5056603f, + 0.0014112518f, -3.4719858f, -0.010402317f, 0.076579466f, + 0.09498284f, -1.5756041f, -0.75851327f, 0.010514847f, + 0.61350083f, 0.04238227f, 0.76317096f, 0.47987524f, + -0.12662141f, 0.070440546f, 0.22007991f, 0.15298465f, + -0.13429548f, -0.0026660138f, 0.058044851f, 0.066705078f, + 0.26648697f, -0.34929717f, 0.31814328f, 0.11506227f, + 0.33539441f, 1.2291654f, 0.057582203f, 0.1037653f, + 0.075883508f, 0.067922056f, 0.84493142f, 0.46134534f, + 0.020754404f, 0.15636294f, 1.4070234f, 0.10758372f, + -1.1915245f, 0.051033385f, 0.076181233f, 1.3722554f, + -0.023068272f, -0.20375457f, 0.082077123f, 0.86998683f, + 0.139589f, 0.19191995f, -0.003879461f, 0.095639236f, + 0.095489152f, 0.092518985f, -0.091605037f, 0.061136406f, + 0.11997722f, -0.040343106f, -1.1920388f, -0.089872532f, + -0.1618432f, 2.1414907f, -0.094537772f, 0.70620602f, + 0.016444726f, 0.026889971f, -0.50437433f, 0.047194973f, + -1.0886514f, 0.061608691f, 0.10646728f, 0.23089482f, + 0.39735886f, -0.73650366f, 0.058747243f, 0.040221192f, + 0.95598543f, -0.2555165f, -0.0051190988f, 0.2239496f, + 0.6105181f, 0.044140611f, 0.025354916f, -0.056653541f, + 0.037664641f, -0.1660438f, 2.9707305f, 0.22130193f, + 0.056352451f, 0.046559986f, 0.041306883f, 1.1857527f, + -0.63923782f, 0.017641736f, -0.12961496f, -0.54674977f, + 0.65798575f, 0.37295282f, -1.0151459f, 0.93693972f, + -1.4196128f, 1.3791977f, -1.7981933f, 0.11752924f, + 0.23101123f, -0.11403561f, 0.011229269f, 3.3447058f, + -0.020586014f, 0.24817561f, -1.5089626f, 0.29690826f, + -0.051239181f, 0.019949548f, 0.3567642f, 0.1946196f, + 0.045872644f, 0.057538915f, -0.81725031f, 0.47896734f, + 0.033711445f, 0.0041831993f, 0.10120814f, 1.3943908f, + 0.14713681f, 0.45547473f, 0.17202243f, -0.059626959f, + 0.51807088f, 0.043872554f, -0.44899735f, -1.8443091f, + -0.026132653f, -1.7309246f, -0.060461357f, 0.074545592f, + 0.077576466f, -1.4316685f, -1.4904304f, -0.53009629f, + 0.41301283f, 0.11247566f, 0.61115587f, 0.7114929f, + -0.60698438f, 0.081721462f, 0.20086971f, 0.10777096f, + 0.29539472f, -0.028940281f, 0.044656221f, 0.29465246f, + 0.48160937f, -0.6083678f, -0.0015929954f, 0.17279126f, + 0.13515231f, 1.3160897f, -0.082101651f, 0.003556632f, + 0.084751949f, 0.057544198f, 0.36251318f, 0.24416952f, + 0.19816951f, 0.17153817f, 1.4061025f, 0.063496932f, + -0.48220488f, 0.11299881f, 0.048991177f, 1.0804249f, + 0.18304944f, -0.2531299f, 0.14702635f, 1.0141995f, + 0.80750775f, 0.098312378f, 0.018255506f, 0.13470857f, + 0.10709962f, 0.12052378f, 0.28544936f, 0.014670386f, + 0.10808612f, 0.031422354f, 0.67081469f, 0.092801958f, + -0.27038211f, 1.8250031f, 0.18441154f, 0.5511815f, + 0.03219394f, 0.021695273f, 0.21265611f, 0.051548783f, + -1.2173476f, 0.044505768f, 0.11383726f, 0.41878262f, + 0.16247316f, -0.58253974f, 0.030315675f, 0.043860298f, + 0.57210511f, -0.24401635f, -0.015507006f, 0.24300067f, + 0.59465545f, 0.04827657f, -0.012915201f, 0.016462239f, + 0.030686636f, -0.015797554f, 2.4293356f, 0.17514771f, + 0.070645355f, 0.051617272f, 0.020736119f, 0.11962895f, + -0.55982012f, 0.034751881f, 0.069530688f, -0.50919777f, + 0.65624231f, 0.12457973f, -1.0855216f, 0.30576116f, + -0.83038092f, -0.48978618f, -1.1069335f, 0.12578815f, + 0.71431267f, -0.12224055f, 0.0088997167f, 3.6022248f, + -0.0089086508f, 0.016433502f, 0.11532921f, 0.88800883f, + -0.10899065f, 0.04031105f, -0.15656181f, 0.065181017f, + 0.053180333f, 0.071337059f, -1.3108821f, -0.042681079f, + 0.022459095f, -0.17365222f, 0.10478126f, 1.1256826f, + 0.14999989f, 0.19495958f, 0.28523457f, -0.076515876f, + 0.85870808f, 0.050273519f, -0.1278384f, -1.2167314f, + -0.032211617f, -1.4567472f, -0.09212026f, 0.059325505f, + 0.1071933f, -1.3193172f, -1.5579944f, -0.3033933f, + 0.49814305f, 0.087996967f, 1.2694583f, -0.04580158f, + -0.30383313f, 0.07252039f, 0.24859782f, 0.12458923f, + -0.78236419f, -0.010163791f, 0.047310017f, 0.2926836f, + 0.47606587f, -0.90127331f, -0.099402331f, 0.1583188f, + 0.48296866f, 1.2979151f, 0.036955163f, 0.06116062f, + 0.066087082f, 0.057055611f, 0.13170935f, 0.24874873f, + 0.050752785f, 0.17770296f, 0.94433761f, 0.084613942f, + -0.19485764f, 0.14986435f, 0.070032246f, 0.87256277f, + 0.1743587f, -0.088722073f, 0.17538671f, 1.1763307f, + 0.67719114f, 0.45967352f, -0.0054531475f, 0.10544454f, + 0.096126065f, 0.11670401f, 0.49750894f, 0.016714778f, + 0.099054709f, 0.0003005527f, 0.23574638f, 0.073137708f, + 0.21659055f, 1.6848701f, -0.017309815f, 0.61145115f, + -0.0018949163f, 0.047571555f, 0.05289587f, 0.05063162f, + -1.0279367f, 0.049880628f, 0.036470219f, 0.43252835f, + 0.48522979f, -0.84669089f, 0.026057666f, 0.037605058f, + 0.039024267f, -0.37147963f, -0.010084539f, 0.23259243f, + 0.51361567f, 0.036856551f, 0.073357582f, -0.02551946f, + 0.025139883f, -0.17214903f, -0.4253557f, 0.20774935f, + 0.063256592f, 0.04674248f, 0.025127511f, 0.25691503f, + -0.36347777f, 0.01615846f, -0.45974249f, -0.52061456f, + 0.64341062f, -0.17172721f, -0.6715706f, 0.77431017f, + -0.55566859f, 0.17749615f, -1.0817789f, 0.14463666f, + 0.71126837f, -0.15269682f, 0.00087466289f, 3.5504155f, + -0.038075771f, 0.12903941f, -0.057773601f, 1.7055761f, + -0.067505352f, 0.014810446f, -0.0030142821f, 0.15676275f, + 0.062435582f, 0.072012112f, -1.5270206f, -0.0055647483f, + 0.030768208f, -0.090027459f, 0.085924469f, 1.5263973f, + 0.093863033f, -0.38334006f, 0.5300985f, 0.086575985f, + 0.66304463f, 0.14981629f, -0.01124485f, -0.7320981f, + 0.052964143f, -0.18783846f, -0.056904919f, 0.069846846f, + 0.11311777f, -1.2398005f, -1.9295162f, -0.28812447f, + 0.67999512f, 0.17388947f, 0.97920841f, 0.29472473f, + -0.24890743f, 0.08315061f, 0.24383116f, 0.17184767f, + -0.062322482f, 0.0037369234f, 0.042563383f, 0.23013175f, + 0.46565428f, -0.20497628f, -0.086242244f, 0.15526456f, + 0.3527917f, 0.65099007f, -0.011294727f, 0.19704993f, + 0.078639112f, 0.069617853f, -0.61551678f, 0.33137068f, + 0.35785159f, 0.17345959f, 1.092945f, 0.10797202f, + 0.077248454f, 0.051372472f, -0.0060881781f, 0.63746589f, + 0.13611059f, -0.14188915f, 0.15771532f, 0.7213906f, + 0.48877701f, 0.46421418f, -0.031453904f, 0.083303921f, + 0.10768523f, 0.10881002f, -0.5308432f, 0.042925626f, + 0.071949713f, 0.082186043f, 0.44105139f, 0.0043879291f, + 0.27413145f, 1.592458f, 0.024041489f, 1.2715144f, + -0.0056127934f, 0.040731389f, -0.018054705f, 0.024736973f, + -1.2039067f, 0.044402242f, 0.050940357f, 0.39040843f, + 0.49001464f, -0.75293624f, 0.030467799f, 0.055013761f, + -0.37498263f, -0.60168976f, 0.02583101f, 0.22014131f, + 0.24016334f, 0.023530841f, 0.022673476f, -0.088415183f, + 0.029527044f, -0.01577911f, -0.93543828f, 0.21405917f, + 0.062006243f, 0.020263944f, 0.0236982f, 0.50458068f, + -0.71939957f, 0.015928295f, -0.21067466f, -0.5568279f, + 0.64542609f, -0.29948574f, -0.97273022f, 0.85454732f, + 0.34094542f, 0.80097669f, -1.1306072f, 0.19560981f, + 0.71746761f, -0.10183977f, 0.025644056f, 3.1005499f, + -0.012195305f, 0.052079968f, -0.082613766f, 2.4915137f, + -0.11452404f, 0.03497744f, -0.43433976f, -0.19248621f, + 0.080545597f, 0.059641402f, -1.7518936f, 0.022459654f, + 0.034478135f, -0.1292996f, 0.081381641f, 1.1181831f, + 0.13568145f, -0.77847916f, 0.69306821f, -0.001732323f, + 0.59675211f, 0.098446503f, -0.13004746f, -0.45557836f, + 0.049652819f, 0.30431366f, -0.027106782f, 0.082766943f, + 0.104897f, -1.1464938f, -2.8698981f, -0.2915968f, + 0.62102985f, 0.049670525f, 0.66166914f, 0.44353688f, + -0.058958497f, 0.06134171f, 0.20250562f, 0.14903557f, + -0.4321402f, -0.029598402f, 0.057588615f, 0.21083736f, + 0.6771183f, -0.3600423f, 0.33941561f, 0.11984433f, + 0.5049594f, 0.58325654f, 0.0086691817f, 0.060184799f, + 0.086288653f, 0.051394023f, -0.86507583f, 0.37824786f, + -0.13622209f, 0.14669378f, 0.80761796f, 0.075434595f, + -0.40714645f, 0.13542427f, -0.077672556f, 1.0038263f, + 0.086802565f, 0.090068333f, 0.1300486f, -0.78549516f, + 0.41991705f, 0.3161211f, 0.0014805709f, 0.057206362f, + 0.12078426f, 0.08793249f, 0.37069282f, 0.032349568f, + 0.1383706f, -0.11385618f, 0.592592f, 0.00042833964f, + 0.49638379f, 1.2465591f, -0.011800693f, 0.57946008f, + -0.010839422f, 0.030090485f, -0.1123948f, 0.033454392f, + -1.287936f, 0.058673371f, 0.025062392f, 0.25195584f, + 0.55351537f, -0.63952559f, 0.029179906f, 0.054558937f, + 0.17989442f, -0.3883034f, -0.004141374f, 0.21464634f, + 0.47404391f, 0.065372281f, 0.042091988f, -0.15323958f, + 0.041554365f, -0.15000018f, -2.5858438f, 0.20751593f, + 0.054089535f, 0.031346004f, 0.0046657464f, 0.18450145f, + -0.58910316f, 0.01918976f, -0.073576547f, -0.54260069f, + 0.61398304f, -0.017516607f, -0.68357974f, 0.60544205f, + 1.1781155f, 0.076206021f, -1.3751389f, 0.21372291f, + 0.37472311f, -0.079372987f, -0.0033873864f, 2.6360593f, + -0.061668478f, 0.20373408f, -0.33180121f, 3.174305f, + -0.0275278f, 0.017269978f, -0.22194861f, -0.03928626f, + 0.086791985f, 0.038912125f, -2.130028f, -0.077969819f, + 0.011491257f, -0.044943165f, 0.17183831f, 1.2288703f, + 0.21053682f, -0.94210321f, 0.806153f, 0.071445644f, + 0.24623756f, 0.12017152f, -0.11700022f, -0.42807248f, + 0.0041055656f, -0.033929687f, -0.039057985f, 0.085910171f, + 0.12759051f, -1.3937166f, -2.7836597f, -0.058258269f, + 1.1003051f, 0.041550543f, 0.75458789f, 0.13922513f, + -0.5501526f, 0.035263922f, 0.20651837f, 0.14146915f, + -2.6485322f, -0.03381459f, 0.061296377f, 0.38713402f, + 0.86053783f, -0.17399612f, 0.54871285f, 0.23215903f, + 0.62443972f, 0.24642579f, -0.081887908f, 0.092071168f, + 0.097713083f, 0.097181067f, -1.3768082f, 0.40130749f, + 0.091190651f, 0.11026845f, 0.49611038f, 0.10461254f, + -0.74076301f, 0.10370925f, -0.064948432f, 1.1928889f, + 0.17593549f, 0.38048872f, 0.12939483f, -1.0283749f, + 0.48416999f, 0.27310464f, -0.016347995f, 0.070131898f, + 0.09066283f, 0.071649671f, 0.10803445f, 0.083915502f, + 0.15222578f, -0.066564478f, -0.60801464f, 0.061614867f, + 0.41495958f, 1.2528093f, 0.0067553082f, 0.17796597f, + -0.0090462202f, 0.028445367f, -0.50822943f, 0.049164481f, + -2.1392374f, 0.053440835f, 0.061968002f, 0.14835966f, + 0.50547773f, -0.31349152f, 0.040636241f, 0.064773127f, + -0.60631245f, 0.028051114f, -0.016989317f, 0.23481853f, + 0.22710705f, 0.042001083f, -0.073771827f, -0.12963967f, + 0.023309348f, 0.019168867f, -4.105104f, 0.22200675f, + 0.065390147f, 0.030830763f, 0.030231031f, 0.14847927f, + -0.56990218f, 0.030831218f, 0.32256395f, -0.56182116f, + 0.57312298f, -0.10338388f, -0.52688974f, 0.65341282f, + 1.5359436f, 0.16572426f, -2.3262887f, 0.14451216f, + 0.37603346f, -0.11488343f, 0.0088901157f, 2.2629795f, + -0.047445942f, 0.11392512f, 0.095453911f, 3.4568717f, + -0.016605416f, 0.033650603f, -4.3747358f, -0.14397618f, + 0.063093305f, 0.059494529f, -2.4238877f, -0.015450561f, + 0.023608001f, -0.071380094f, 0.21746172f, 0.97149515f, + 0.15118188f, -2.5029247f, 1.116052f, -0.014583346f, + 0.18902199f, 0.053614631f, -0.10892931f, -0.2320873f, + -0.02433023f, 0.46943799f, -0.016074633f, 0.084777988f, + 0.099020727f, -1.0690751f, -2.3216753f, -0.47801694f, + 0.53258437f, 0.13866673f, -0.00096377643f, 0.085136086f, + -0.32868901f, 0.076987289f, 0.17767176f, 0.10972084f, + 0.52971721f, -0.018557033f, 0.035557467f, 0.18706936f, + 0.39619389f, 0.42671922f, 0.40115592f, 0.12025734f, + -0.40546501f, 0.25111893f, -0.022550317f, 0.13088821f, + 0.081315979f, 0.061657406f, -1.9504547f, 0.27857426f, + -1.2128319f, 0.1691993f, 0.57920617f, 0.033900082f, + -0.35257807f, 0.053081311f, -0.031678401f, 0.39476269f, + 0.10709381f, -0.25168204f, 0.069541119f, -0.78586704f, + 0.78654319f, 0.35165414f, -0.065268055f, 0.083219603f, + 0.10339852f, 0.10420623f, 0.19157434f, 0.038235635f, + 0.082701303f, -0.035476562f, 0.028244555f, -0.088195913f, + 0.063341573f, 1.0393506f, 0.073038898f, 0.49391693f, + 0.028398043f, 0.038979091f, -0.29402265f, 0.046730589f, + -0.90287161f, 0.055250723f, 0.039809637f, 0.16132279f, + 0.50477856f, 0.22932576f, 0.023781206f, 0.053072635f, + -0.57334518f, -0.090146221f, 0.019497704f, 0.24592058f, + 0.69913352f, 0.05161776f, 0.10025746f, 0.034487858f, + 0.027033782f, -0.067148156f, -5.6300645f, 0.22774276f, + 0.065485112f, 0.028497893f, 0.034898855f, 0.099566594f, + -0.69891661f, 0.047264591f, 0.45376197f, -0.43863624f, + 0.53989732f, -0.21461321f, -0.48900089f, 0.52821398f, + 1.2768661f, -0.09232232f, -1.0872165f, 0.16525145f, + 0.71533579f, -0.026561718f, 0.00095598551f, 1.1973119f, + -0.0096537946f, -0.004573239f, 0.5432952f, 3.2215784f, + -0.10019974f, 0.017023344f, 0.11145024f, 0.19735317f, + 0.048126239f, 0.066220164f, -2.1702845f, -0.53454852f, + 0.03033597f, -0.1060504f, 0.10229235f, 0.16540328f, + 0.22547387f, -2.2264209f, 1.1972978f, 0.083714589f, + -0.065125257f, 0.091023803f, -0.042682726f, 0.53435725f, + 0.070101544f, 0.52387631f, -0.057300955f, 0.069278143f, + 0.093708664f, -0.96043289f, -3.1019554f, 0.078423306f, + 0.86284906f, 0.13401037f, 1.2777673f, 0.04774636f, + -0.77227199f, 0.083614931f, 0.22658162f, 0.12802453f, + -0.64835107f, -0.038192496f, 0.062071905f, 0.24589938f, + 0.63473034f, -0.31768006f, 0.46801776f, 0.15174447f, + 0.30907112f, 0.30892903f, 0.063862577f, 0.23149714f, + 0.090306789f, 0.047825139f, -2.3580508f, 0.17991665f, + -1.2121656f, 0.13626589f, 0.4870021f, 0.058819797f, + -0.55792481f, 0.093148328f, 0.037990112f, 0.78945273f, + 0.11609505f, 0.15135831f, 0.081672922f, -0.86773711f, + -0.3474384f, 0.64035398f, -0.053477377f, 0.10244204f, + 0.084095515f, 0.086286865f, -0.14605968f, 0.031573541f, + 0.12594433f, -0.054469485f, 0.083255775f, 0.078211695f, + 0.2070955f, 0.76243657f, -0.037176896f, 0.59839922f, + -0.002477966f, 0.031969737f, -0.50467569f, 0.043740809f, + -1.1468788f, 0.035394501f, 0.044360302f, 0.32250053f, + 0.04243049f, -0.31593531f, 0.033029418f, 0.051638301f, + 0.77159971f, -0.26086947f, 0.015619566f, 0.22764616f, + 0.42759997f, 0.035666637f, -0.019635724f, -0.090957619f, + 0.02816279f, 0.054988872f, -3.7008657f, 0.21394788f, + 0.072822675f, 0.039298683f, 0.021417173f, 0.60465354f, + -0.93134016f, 0.031676978f, -0.35180253f, -0.53720993f, + 0.5943771f, -0.21155564f, -0.24032031f, 0.58095056f, + 1.0455791f, 0.41913006f, -1.1925792f, 0.14773811f, + 0.63347989f, -0.090771779f, 0.012234085f, 0.95761269f, + -0.056493402f, -0.059711695f, 0.36265647f, 3.0757084f, + 0.049596168f, 0.019150678f, -1.6451139f, -0.11638663f, + 0.042186182f, 0.063873559f, -2.121882f, 0.23386979f, + 0.0073031434f, -0.13409613f, 0.15948333f, 1.1594089f, + 0.16539453f, -2.3121107f, 1.45069f, 0.013074175f, + -0.43659943f, 0.083078802f, 0.082714751f, 0.76637322f, + 0.077992849f, 1.0713156f, -0.0055263648f, 0.078358814f, + 0.11078962f, -0.8753587f, -2.6699061f, 0.89909214f, + 0.64974457f, 0.12361578f, 1.2359302f, 0.11662525f, + -0.58220303f, 0.091777809f, 0.27446151f, 0.12724136f, + 0.57413673f, -0.0098388474f, 0.06899932f, 0.29841915f, + 0.62893265f, -0.58612835f, 0.088648625f, 0.14363809f, + -0.03299709f, 0.39810109f, -0.0063053099f, 0.12115514f, + 0.093236051f, 0.052151062f, -2.8683562f, 0.2884495f, + -1.3257992f, 0.16366997f, 0.58910787f, 0.086051755f, + -0.45574778f, 0.10361272f, -0.049069889f, 0.67527544f, + 0.16524912f, -0.025479916f, 0.083276518f, -1.0326684f, + -0.47816658f, 0.66824275f, 0.062654339f, 0.058439914f, + 0.093903609f, 0.12194729f, -0.57826221f, 0.015060916f, + 0.06127901f, -0.0041916287f, 1.043577f, -0.054870669f, + 0.12941872f, 0.69983739f, 0.031635057f, 0.38076463f, + -0.014813825f, 0.051192194f, -0.42663753f, 0.025051713f, + -0.9077999f, 0.059564438f, 0.05542437f, 0.22144228f, + -0.52817625f, -0.34164006f, 0.056488328f, 0.051793773f, + 1.2479033f, -0.25152072f, 0.032978177f, 0.24308962f, + 0.55563408f, 0.060250696f, -0.0015290162f, -0.080450311f, + 0.041364733f, -0.028621335f, -0.92788774f, 0.25754389f, + 0.062141959f, 0.024142543f, 0.017219432f, 0.69122738f, + -0.69950527f, 0.019689003f, -0.62791651f, -0.53111982f, + 0.61451602f, 0.15317553f, -0.37921727f, 0.49476129f, + 0.28979182f, 0.4845964f, -0.76395255f, 0.077192754f, + 0.4242487f, -0.032415319f, 0.017849639f, 0.35264283f, + -0.037551817f, -0.0066793691f, 0.89761835f, 2.2167089f, + -0.080831401f, 0.03247663f, -0.65025395f, -0.26512432f, + 0.027135648f, 0.058915749f, -1.7597557f, -0.12483537f, + 0.022966575f, -0.12439405f, 0.18714473f, 0.90771174f, + 0.17933448f, -1.610671f, 1.8773446f, 0.013457023f, + 0.042860508f, 0.05759377f, 0.15106337f, 1.119674f, + 0.011193941f, 1.5561917f, -0.011191805f, 0.086142443f, + 0.1007431f, -0.97411704f, -1.6298952f, 1.4076499f, + 0.55271757f, 0.15192172f, 1.1322908f, 0.33772373f, + -0.11989833f, 0.089112297f, 0.21599475f, 0.087975614f, + 0.27126986f, 0.020516634f, 0.044183936f, 0.30578235f, + 0.61064845f, -0.74298304f, -0.025300976f, 0.11753885f, + -0.010585768f, 0.011364507f, -0.016768454f, 0.12950544f, + 0.087351337f, 0.053656824f, -3.0902517f, 0.43677002f, + -1.6132905f, 0.1351878f, 0.61589879f, 0.046255253f, + -0.47320852f, 0.077007808f, 0.057420693f, 0.59328479f, + 0.26516658f, -0.11828413f, 0.051370405f, -0.66474193f, + -0.39631385f, 0.49691293f, 0.04974284f, 0.12419633f, + 0.090431221f, 0.099740237f, -0.57652998f, 0.030817954f, + 0.12117866f, -0.083234929f, 1.3610607f, 0.021199998f, + 0.12529089f, 0.48804927f, 0.010834562f, 0.1909637f, + -0.012018906f, 0.047697354f, -0.24290231f, 0.040338412f, + -0.79018784f, 0.060637489f, 0.073490672f, 0.22342697f, + -0.84201717f, -0.30741051f, 0.00773184f, 0.03495856f, + 0.90267879f, -0.055938624f, 0.044103406f, 0.22741178f, + 0.56491917f, 0.038067553f, -0.026753351f, -0.029414762f, + 0.039097108f, -0.33247393f, -0.4349733f, 0.21367142f, + 0.060528271f, 9.2393275e-05f, 0.047559623f, 0.927688f, + -0.63687009f, 0.034208491f, -0.72592854f, -0.54581952f, + 0.60634649f, -0.017586596f, -0.41946232f, 0.73338747f, + -0.86811334f, 0.49245983f, -1.3965319f, 0.17229894f, + 0.30144534f, -0.096119292f, -0.0036761388f, -0.1673598f, + -0.035094053f, 0.052893411f, 0.88051808f, 1.4165715f, + -0.050511118f, 0.025203554f, -0.96903843f, 0.054702919f, + 0.041011471f, 0.056589596f, -1.3455404f, -0.031553637f, + 0.025522368f, -0.079181626f, 0.20494206f, 1.2895409f, + 0.1574589f, -3.0963302f, 1.7921196f, 0.011407442f, + -0.11925623f, 0.08008036f, -0.089161105f, 0.96229821f, + 0.049455792f, 1.5170853f, -0.021227866f, 0.045467265f, + 0.097296298f, -1.0864836f, -0.97145462f, 1.6863165f, + 0.34689736f, 0.18031427f, 0.96315503f, 0.44281879f, + -0.97967714f, 0.084512442f, 0.21522824f, 0.086144321f, + -0.13304107f, 0.0024947443f, 0.053958174f, 0.3117255f, + 0.62203187f, -0.81863725f, -0.36880642f, 0.16490386f, + -0.21416186f, -0.0065712328f, 0.023828631f, 0.037665196f, + 0.095695734f, 0.060833104f, -3.6173048f, 0.41169429f, + -1.3717338f, 0.15934148f, 0.74989444f, 0.076169863f, + -0.12888919f, 0.046198387f, 0.045319673f, 0.35152701f, + 0.45055839f, -0.076830581f, 0.072984941f, -0.84079689f, + -0.18820284f, 0.38878664f, 0.03681428f, 0.12494884f, + 0.092591308f, 0.10656123f, -0.91256124f, 0.022941435f, + 0.12568176f, -0.056657925f, -0.22154686f, 0.0097140362f, + -0.18842363f, 0.48217258f, 0.026214495f, 0.41534761f, + -0.018894259f, 0.044340208f, -0.23220624f, 0.030649709f, + -0.79206806f, 0.047232341f, 0.12628299f, 0.26646805f, + -1.3519143f, -0.25369364f, 0.030269837f, 0.049727399f, + 0.41111702f, 0.038185298f, 0.026586356f, 0.23855306f, + 0.77243721f, 0.045857929f, 0.0019695451f, 0.0038244489f, + 0.033106107f, -0.055812441f, -0.26219156f, 0.22298022f, + 0.074236751f, 0.021467645f, 0.028497651f, 0.7596696f, + -0.48609549f, 0.039373636f, -0.65395242f, -0.51633185f, + 0.61507964f, -0.11925627f, -0.31959257f, 0.79390454f, + -0.96070606f, 0.17308821f, -1.585345f, 0.089179792f, + 0.39755413f, -0.058938447f, 0.0018339546f, -0.39342308f, + -0.041157238f, -0.0021130696f, 1.1527045f, 0.78291523f, + -0.031869408f, 0.039282717f, -0.8706584f, -0.30068266f, + 0.030603245f, 0.029936461f, -1.036095f, -0.044570521f, + 0.036315501f, -0.076773137f, 0.12415323f, -0.29393739f, + 0.1755846f, -3.0502152f, 1.7455424f, -0.075825088f, + 0.16073287f, 0.11918904f, -0.25197923f, 1.1952556f, + -0.027166117f, 1.607529f, -0.017230349f, 0.097319335f, + 0.10673625f, -1.2901759f, 0.27368873f, 1.6007336f, + 0.54704708f, 0.1652379f, 0.99098021f, -0.14984168f, + -0.83730048f, 0.062198289f, 0.21282165f, 0.094133839f, + -0.43173084f, 0.026620742f, 0.061458174f, 0.26682135f, + 0.565534f, -0.51672888f, -0.077460662f, 0.13388424f, + -0.35962927f, -0.047908738f, 0.090067431f, 0.11193354f, + 0.076566361f, 0.078982323f, -3.2856927f, 0.51372564f, + -1.4334106f, 0.13616234f, 0.83991456f, 0.079838797f, + -0.54442579f, 0.0020991862f, 0.015091187f, 0.37782329f, + 0.53225619f, 0.31494182f, 0.063915551f, -0.96433449f, + 0.41157079f, 0.21408007f, 0.05449675f, 0.093209848f, + 0.1073558f, 0.11198577f, 0.18802376f, 0.08088813f, + 0.14135398f, -0.081367187f, -0.81109405f, -0.016036013f, + 0.12913598f, 0.35856232f, -0.08683037f, 0.18730758f, + -0.013941676f, 0.046405226f, -0.3072992f, 0.059420597f, + -0.48484337f, 0.068497032f, 0.14072067f, 0.29830837f, + -1.58258f, -0.30885786f, 0.034445126f, 0.043634195f, + -0.9305222f, -0.43865868f, 0.010834056f, 0.22181162f, + 0.46178734f, 0.041386053f, 0.0017725931f, -0.027303461f, + 0.015476377f, -0.23971154f, -1.4563978f, 0.21354188f, + 0.056129847f, 0.010038109f, 0.047191273f, 0.62284929f, + -0.23647732f, 0.026455179f, -0.57786125f, -0.48061144f, + 0.63865775f, -0.13668755f, -0.32386589f, 1.1590471f, + -0.91235447f, 0.87870514f, -1.9777987f, 0.14142472f, + 0.16995879f, -0.033702396f, 0.013720449f, -0.65879095f, + -0.0071845618f, 0.011175008f, 0.7944985f, 0.19225593f, + -0.012517514f, 0.015763262f, -0.58571076f, -0.3630079f, + 0.03742408f, 0.053550646f, -0.69816893f, -0.097610816f, + 0.03673353f, 0.16386139f, 0.11445634f, 0.5122962f, + 0.20191605f, -1.7608892f, 1.5795817f, 0.080149353f, + 0.94157618f, 0.07498879f, 0.15030129f, 1.1575879f, + -0.077242374f, 1.3098865f, 0.010741485f, 0.10568734f, + 0.10832715f, -1.3462507f, 0.5621261f, 0.56360257f, + 0.46071234f, 0.24056798f, 1.0992924f, 0.81624746f, + -0.71402836f, 0.073211625f, 0.26627138f, 0.083592407f, + -1.2308729f, -0.02129426f, 0.056206215f, 0.3263174f, + 0.31859747f, -0.50904739f, -0.085050382f, 0.15415633f, + 0.10728715f, -0.30287376f, 0.031200171f, 0.086736389f, + 0.079452939f, 0.045096122f, -1.6542802f, 0.46302077f, + -1.8333526f, 0.15675935f, 1.1087178f, 0.11168713f, + -0.62853074f, 0.11362547f, -0.058991157f, 0.5918256f, + 0.80200386f, 0.30238751f, 0.055563733f, -0.80352366f, + 0.89508158f, 0.15317518f, 0.017512092f, 0.08849109f, + 0.098517589f, 0.14017479f, -0.19625963f, 0.024596522f, + 0.14720526f, 0.041031353f, -0.69613725f, 0.024306683f, + -0.079815023f, 0.26413012f, -0.12191325f, 0.044832144f, + 0.0013408655f, 0.046430279f, -0.34208816f, 0.035532512f, + 0.066596866f, 0.06103909f, 0.10527463f, 0.20866939f, + -2.1938796f, -0.17873669f, 0.024469903f, 0.061721724f, + -0.72519958f, -0.12648056f, -0.00084507855f, 0.22584063f, + 0.33032632f, 0.041065048f, 0.025608987f, -0.041427594f, + 0.021253616f, -0.056912586f, -1.6427153f, 0.22688575f, + 0.058755171f, 0.014311277f, 0.032168396f, 0.34359971f, + -0.20216545f, 0.041484758f, -0.84080237f, -0.55189449f, + 0.64201874f, 0.043732695f, 0.58805639f, 1.5343524f, + -0.94118941f, 1.0107822f, -1.6538646f, 0.11128054f, + 0.32701227f, -0.03718923f, 0.021517647f, -1.3334538f, + -0.0087273428f, -0.40378523f, 0.037153624f, -0.59518462f, + -0.021008756f, 0.011341815f, -0.70810688f, 0.066203438f, + 0.092155889f, 0.062687583f, -0.10832085f, -0.27343994f, + 0.0057404861f, -0.019541202f, 0.11072371f, 0.59888363f, + 0.1610941f, -1.1739612f, 1.1401162f, -0.020375032f, + 1.1221818f, 0.079049602f, 0.31476262f, 0.72603178f, + -0.11096346f, 0.072142303f, 0.0067696851f, 0.061762508f, + 0.096283086f, -1.5768905f, 0.10802922f, -0.52902049f, + 0.36700904f, 0.13981552f, 0.31061429f, 0.089548983f, + 0.20024635f, 0.047967259f, 0.2188109f, 0.036797613f, + -0.28292775f, -0.027308786f, 0.050341435f, 0.24520838f, + 0.093922637f, -0.82289046f, -0.091169775f, 0.13270597f, + 0.45335415f, -0.24259861f, 0.053272448f, -0.23153633f, + 0.097373806f, 0.070866905f, -1.0918163f, 0.39253598f, + -1.2863719f, 0.1583361f, 1.0548022f, 0.089611538f, + -0.49644232f, 0.10381008f, -0.076024629f, 1.1045707f, + 0.39758545f, 0.048125554f, 0.056353882f, -0.53593588f, + -0.27695069f, 0.035414565f, -0.00099026633f, 0.068262793f, + 0.10397033f, 0.080604538f, -2.2199776f, 0.030197693f, + 0.14533982f, -0.056406531f, 0.52670109f, 0.062945411f, + -0.10513704f, 0.18222046f, -0.25668505f, -0.25485569f, + 0.00024402347f, 0.054615796f, -0.17687355f, 0.031383045f, + -0.015657658f, 0.049643502f, 0.076273195f, 0.23444358f, + -3.0148089f, -0.32899871f, 0.034087826f, 0.044276774f, + -0.36921489f, 0.21803857f, 0.02711986f, 0.21130949f, + 0.58874357f, 0.056466185f, 0.041236099f, -0.06486617f, + 0.034043502f, -0.027264338f, 0.35160756f, 0.20495656f, + 0.05699439f, 0.030233299f, 0.019096375f, -0.56152946f, + -0.52017099f, 0.039648496f, -0.079527348f, -0.57162851f, + 0.61959213f, 0.1452453f, 0.35342973f, 0.8997007f, + -0.84125543f, 0.52321804f, -1.2035398f, 0.13129693f, + 0.33981586f, -0.12473098f, -0.017571364f, -1.8435332f, + -0.022120653f, -0.17551656f, -0.57147789f, -1.3618174f, + -0.053344581f, -0.0040308828f, -1.4831504f, 0.35124704f, + 0.074902833f, 0.052322686f, 0.34133932f, 0.058399815f, + 0.024673924f, -0.35861653f, 0.12430562f, 0.86400026f, + 0.16391677f, 1.1418937f, 0.91719043f, -0.022521894f, + 0.15328743f, 0.10947257f, -0.4433158f, 0.79266292f, + -0.20099109f, 0.27118731f, 0.0022360906f, 0.06934762f, + 0.092497848f, -1.378588f, -0.49658015f, -0.68135953f, + 0.52855545f, 0.03208489f, -0.036741901f, 0.24798168f, + 0.023535278f, 0.088553093f, 0.22054321f, 0.021904407f, + -0.52020437f, -0.0074345502f, 0.05845616f, 0.21826781f, + 0.19296215f, -0.91866738f, 0.091697283f, 0.08833041f, + 0.76740944f, -0.29107571f, -0.028991114f, -0.062745936f, + 0.099099971f, 0.074092187f, 0.14713296f, 0.26956996f, + -0.98135394f, 0.17805152f, 0.9866488f, 0.070896797f, + -0.58356959f, 0.061633766f, 0.025164876f, 0.87205178f, + 0.49303797f, 0.078992106f, -0.0019379642f, -0.57817352f, + 0.0055953828f, -0.44929314f, 0.025605964f, 0.076114342f, + 0.064046226f, 0.072738819f, -2.4290812f, 0.064900003f, + 0.14618874f, -0.078756541f, 0.70153302f, 0.0070420257f, + 0.16924903f, -0.54984051f, -0.1254738f, 0.029248705f, + 0.024777444f, 0.0279621f, -0.055629339f, 0.044670608f, + -0.56991398f, 0.04421407f, 0.089631326f, 0.24864413f, + -2.9391105f, -0.22854519f, 0.008759439f, 0.042016368f, + -0.4063468f, -0.066455781f, -0.026843932f, 0.22974505f, + 0.54679745f, 0.048626062f, -0.065371104f, -0.089353815f, + 0.042232234f, -0.020194246f, 1.8944486f, 0.24085636f, + 0.081909783f, 0.045506388f, 0.037959307f, -1.0941232f, + -0.69194841f, 0.084256195f, 0.44657063f, -0.48338774f, + 0.67139924f, 0.14327849f, 0.23605141f, 0.77683556f, + -0.44787097f, 0.45910934f, -1.3580997f, 0.19834286f, + -0.20404607f, -0.059003316f, -0.0064066299f, -2.1883836f, + 0.022563005f, -0.003348948f, -0.71693522f, -1.9866097f, + -0.048681498f, 0.051812164f, -1.6016189f, 0.045665573f, + 0.044874854f, 0.067494422f, 0.77836233f, 0.33934873f, + 0.047042545f, -0.05997121f, 0.14477718f, 1.2181177f, + 0.21812096f, 2.7535281f, 0.93367326f, 0.055927567f, + -0.22693467f, 0.092270851f, -0.080873281f, 1.4103357f, + -0.065680914f, 1.134063f, 0.015398358f, 0.070651546f, + 0.11163869f, -0.74417257f, -0.63069093f, -0.80686504f, + 0.41533771f, 0.30390027f, 0.18490003f, 0.43771565f, + -0.97176129f, 0.092715561f, 0.27178973f, 0.10919444f, + -2.3040314f, -0.0095116999f, 0.068303324f, 0.29478219f, + 0.53289694f, -0.53461635f, -0.042776123f, 0.19623818f, + 0.38240951f, 0.20712094f, -0.028577397f, 0.21454571f, + 0.093051039f, 0.062045831f, -0.16517146f, 0.1787474f, + 0.61074835f, 0.16360408f, 0.36144343f, 0.12223558f, + -0.54084182f, 0.036982719f, 0.069871493f, 0.20376493f, + 0.60131037f, 0.10661448f, 0.052697897f, -0.28087658f, + 0.78986073f, -0.0038844994f, 0.018968031f, 0.056072589f, + 0.094549999f, 0.084842794f, 0.082414985f, 0.060612146f, + 0.070618212f, 0.04833157f, 1.3291646f, -0.11900949f, + 0.55623281f, -1.4735382f, -0.040398978f, 0.4213205f, + 0.0098051475f, 0.031909376f, -0.15530953f, 0.051771913f, + -0.65178901f, 0.055638727f, 0.027736619f, 0.44790486f, + -2.4267557f, -0.61079103f, 0.056417644f, 0.05485969f, + -0.55986136f, -0.17329066f, 0.034389745f, 0.23843373f, + 0.028514232f, 0.037181992f, -0.033975296f, -0.12205806f, + 0.028089488f, 0.20808379f, 1.4500995f, 0.24664149f, + 0.081126116f, -0.007976206f, 0.049261071f, -2.1248505f, + -0.59947336f, 0.030149359f, 0.12341496f, -0.52309501f, + 0.69904536f, -0.35791072f, 0.59832573f, 1.382426f, + -0.75216579f, 1.3870718f, -1.4078834f, 0.12468334f, + -0.014680181f, -0.11352599f, 0.016913956f, -2.0257626f, + -0.00088721159f, 0.60717762f, -0.32510719f, -1.5619304f, + -0.074715734f, 0.05090012f, 0.065600954f, -0.90920556f, + 0.034094412f, 0.050182916f, 0.51853311f, 0.55423456f, + 0.041929509f, 0.0787808f, 0.11241689f, -0.20198463f, + 0.19383129f, 2.5839658f, 1.0414615f, -0.010220245f, + -0.29463434f, 0.086949162f, 0.21704595f, 1.5974749f, + 0.050437875f, 1.4410362f, -0.02637686f, 0.064370185f, + 0.11191174f, -0.3447262f, -0.20969184f, -0.81910282f, + 0.48387107f, 0.15752146f, 0.51226556f, -1.1717569f, + -0.87851107f, 0.081079826f, 0.26900628f, 0.16364706f, + -0.2982406f, -0.022910854f, 0.045844339f, 0.32331583f, + 0.61504948f, -0.50860167f, -0.018015815f, 0.15007463f, + -0.15875983f, 0.82759327f, -0.031865612f, 0.10959985f, + 0.07129357f, 0.03469038f, -0.089173153f, 0.30439693f, + 1.5073949f, 0.15096523f, 0.030378301f, 0.08549881f, + -0.24602441f, 0.0403657f, -0.055607323f, 0.0032074577f, + 0.25875089f, 0.0043599578f, 0.031727478f, 0.67678434f, + 0.5725739f, 0.1616933f, 0.047561139f, 0.050889138f, + 0.098572671f, 0.12814689f, 0.3270267f, -0.004733766f, + 0.076478392f, -0.11539236f, 1.0552182f, 0.047188122f, + 0.55162191f, -2.0870185f, -0.11014683f, 0.31994957f, + -0.013967758f, 0.018230466f, -0.78563511f, 0.032631304f, + -0.67548853f, 0.047553107f, 0.033596043f, 0.41311574f, + -2.1302943f, -0.83553678f, 0.043884486f, 0.042114422f, + 0.30551764f, 0.17675972f, 0.019975236f, 0.23967016f, + 0.40654725f, 0.054648004f, -0.026390538f, -0.11650035f, + 0.034041792f, 0.013609265f, -0.2313724f, 0.20322463f, + 0.058163881f, 0.015310682f, 0.045382511f, -2.1367357f, + -0.27548283f, 0.028092699f, -0.42831942f, -0.56719011f, + 0.65777653f, -0.39215663f, 0.53511328f, 1.1893498f, + -1.0896606f, 1.5609959f, -1.775293f, 0.10056441f, + -0.24682924f, -0.14616743f, 0.041197922f, -1.8065114f, + 0.0011301882f, 0.54989612f, -0.24067596f, -1.5117676f, + -0.070766091f, 0.0422116f, 0.57581908f, -0.8460657f, + 0.029571397f, 0.087073989f, 0.60583276f, 0.39293325f, + 0.042316388f, -0.03658589f, 0.15847276f, 1.4552327f, + 0.18711559f, 1.2471994f, 0.76579243f, 0.011338986f, + -0.41306296f, 0.076304786f, -0.052359149f, 1.950837f, + 0.0051280116f, 2.0386972f, -0.029159209f, 0.085498728f, + 0.073905535f, 0.25424021f, 0.0998151f, -1.1618623f, + 0.17039888f, 0.22383314f, 0.025574395f, 1.284111f, + -1.298291f, 0.077281103f, 0.22979948f, 0.085836761f, + 0.40306786f, -0.012665665f, 0.070839837f, 0.25228173f, + 0.56666487f, -0.61017919f, 0.052854154f, 0.13754106f, + -0.16214524f, 1.1265794f, -0.026514288f, 0.030470878f, + 0.081051156f, 0.068845458f, 0.10874795f, 0.36518767f, + 1.4191601f, 0.15885206f, -0.62947148f, 0.062025502f, + -0.31154877f, 0.07224679f, 0.037115943f, 0.28551507f, + 0.11844063f, 0.19331765f, 0.025791265f, 0.82132947f, + 0.3632144f, -0.048520647f, 0.051538181f, 0.061038807f, + 0.095145963f, 0.099775083f, -0.7704975f, 0.010000503f, + 0.11026278f, -0.043395925f, 0.37141851f, -0.061643235f, + 0.31927368f, -2.3245912f, 0.01538942f, 0.31330115f, + 0.0073822271f, 0.039258987f, -0.62114364f, 0.056543011f, + -1.1581168f, 0.057702657f, 0.090604171f, 0.32667267f, + -1.622918f, -1.0757471f, 0.020684339f, 0.069048256f, + 0.87980479f, -0.31631434f, 0.016051929f, 0.2402093f, + 0.35887843f, 0.039821714f, 0.031052331f, -0.13012928f, + 0.020681025f, 0.049248748f, 0.35230187f, 0.20482518f, + 0.031896763f, 0.027465289f, 0.036638089f, -2.5184166f, + -0.12976997f, 0.018889423f, -0.25364307f, -0.60007989f, + 0.65649605f, -0.10646355f, 0.52456468f, 0.80951881f, + -0.90592861f, 0.13888122f, -1.4282218f, 0.15722348f, + 0.15952721f, -0.057131816f, 0.013819439f, -1.6715785f, + -0.029685663f, 0.20280716f, -0.37207571f, -1.5034281f, + -0.031928901f, 0.019138582f, -0.67854011f, -0.86337543f, + 0.056360658f, 0.044814955f, 0.79534823f, 0.50392741f, + 0.026144361f, -0.07523039f, 0.1757977f, -8.0947886f, + 0.15566537f, 1.437433f, 0.48227382f, -0.032188762f, + -0.15041636f, 0.10004709f, 0.078775257f, 1.7012579f, + 0.0032857165f, 1.8187429f, -0.058438141f, 0.084872209f, + 0.10292646f, 0.83604562f, 0.42576897f, -0.78816319f, + 0.092333168f, 0.14314845f, 0.047391813f, -0.31253245f, + -0.9733631f, 0.083455637f, 0.27621424f, 0.10645514f, + 0.27899534f, -0.012726939f, 0.063536122f, 0.27054441f, + 0.42799726f, -0.20557292f, 0.31268439f, 0.14564256f, + -0.05297469f, 1.2499201f, 0.059531223f, 0.2411575f, + 0.094207071f, 0.082933657f, 0.22830804f, 0.35886165f, + 1.6100866f, 0.14834201f, -1.1858517f, 0.060542054f, + -0.26321715f, 0.044229832f, 0.088971019f, 0.10903069f, + -0.10965364f, -0.078787833f, -0.0048615597f, 0.77476823f, + 0.26735315f, 0.17452188f, 0.020231601f, 0.050069865f, + 0.10991617f, 0.11937967f, -0.48940757f, 0.062200762f, + 0.09228716f, -0.10372465f, -0.21038722f, -0.0073808231f, + 0.47958943f, -2.1699078f, -0.047559418f, 0.26965871f, + -0.0035505956f, 0.043129329f, -0.626782f, 0.032892346f, + -0.5864687f, 0.027753197f, 0.035540458f, 0.26210943f, + -0.92993683f, -0.97964245f, 0.049352463f, 0.05581785f, + 0.74875861f, -0.79353052f, 0.0144906f, 0.23828968f, + 0.016911417f, 0.062650159f, -0.014296203f, -0.18647909f, + 0.022794625f, -0.20823507f, -0.39920399f, 0.21966261f, + 0.055183459f, 0.022189884f, 0.047032438f, -1.9398679f, + 0.03184247f, 0.022238147f, -0.53407145f, -0.57817709f, + 0.67442167f, -0.33321413f, 0.17378783f, 0.49551785f, + -0.75311029f, 0.1322991f, -0.95098293f, 0.15389805f, + -0.19373819f, -0.081299372f, 0.022779536f, -1.5758524f, + -0.017780848f, 0.16977525f, -0.32578415f, -1.4163141f, + -0.085220046f, 0.034277752f, -1.2694327f, -0.72709543f, + 0.060344495f, 0.065706812f, 0.76151019f, -0.00076707423f, + 0.016068164f, -0.1784859f, 0.21288036f, 0.53664917f, + 0.12351685f, 0.60861331f, -0.0024235689f, -0.021126969f, + 0.060925208f, 0.091980807f, -0.23499605f, 1.2960219f, + 0.038990762f, 1.3869356f, -0.055474043f, 0.088100038f, + 0.096209615f, 1.626014f, 0.4575859f, -0.75074548f, + -0.012057398f, 0.13421704f, 0.33895293f, 0.16953996f, + -0.67973047f, 0.083643675f, 0.21751454f, 0.1296822f, + 0.58119214f, -0.00048667222f, 0.062729895f, 0.23908101f, + 0.3694225f, -0.55337071f, 0.34121725f, 0.16290666f, + 0.041870888f, 1.1901486f, -0.010818965f, 0.31033742f, + 0.095533319f, 0.071000606f, 0.33147204f, 0.35707539f, + 1.6915505f, 0.14571296f, -1.6614743f, 0.10770442f, + -0.54397696f, 0.022406749f, 0.06387461f, 0.4081085f, + -0.07638295f, -0.06419991f, 0.088924393f, 0.42382252f, + 0.25597763f, 0.079655133f, -0.005487544f, 0.031524315f, + 0.10072334f, 0.11206379f, -0.30371931f, 0.03141319f, + 0.10180585f, 0.065500952f, -0.2825464f, -0.092937663f, + -0.01780707f, -1.8936336f, 0.22877386f, 0.27106106f, + -0.0089582261f, 0.0081978915f, -0.57040656f, 0.067315228f, + -0.90038216f, 0.03664447f, 0.11094564f, 0.25578099f, + -0.25965506f, -0.52690524f, 0.026707588f, 0.04418917f, + 1.0646533f, -0.69198161f, -0.003724806f, 0.23663977f, + -0.01092929f, 0.036573727f, -0.036571417f, -0.15625188f, + 0.030461177f, -0.246433f, 0.49186167f, 0.21084957f, + 0.040851872f, 0.023194559f, 0.035701778f, -1.707984f, + -0.32526642f, 0.024724012f, -0.0062580993f, -0.53440857f, + 0.67313737f, -0.22494175f, -0.037386995f, 0.3100397f, + 0.18934628f, 0.026924394f, -0.94454068f, 0.099128798f, + 0.19007497f, -0.020072605f, 0.0078417063f, -1.4985489f, + -0.045629375f, 0.21249732f, -0.44496882f, -1.4031773f, + -0.077685699f, 0.037695646f, -2.2114635f, -0.66952914f, + 0.052967452f, 0.047190215f, 0.65263867f, 0.12941535f, + 0.028303199f, -0.18903244f, 0.16974178f, 0.15029247f, + 0.14061388f, -0.52160138f, -0.36103263f, -0.01997987f, + 0.30748522f, 0.059646167f, -0.37736055f, 1.2393407f, + -0.011890738f, 1.2552873f, -0.029806942f, 0.078522749f, + 0.091445811f, 2.3381441f, 0.37197289f, -0.98552203f, + 0.31505522f, 0.0636907f, 0.47412565f, 0.58885902f, + -0.72295398f, 0.062545575f, 0.2362541f, 0.1691646f, + -0.15715495f, -0.045258861f, 0.051755093f, 0.29554272f, + 0.12850951f, -0.48345557f, 0.24167657f, 0.17130566f, + 0.40781647f, 0.84545916f, -0.0043773227f, 0.26240811f, + 0.089442484f, 0.050723061f, 0.58034402f, 0.45883188f, + 1.9405547f, 0.16291951f, -2.0563679f, 0.070382491f, + -0.20127779f, 0.16892377f, -0.018367693f, 0.49267554f, + 0.0073771533f, 0.10777189f, 0.09743835f, -0.58447158f, + 0.23541923f, 0.077088058f, -0.0027911395f, 0.083974607f, + 0.10407153f, 0.10946916f, -0.99783856f, 0.048981901f, + 0.068621233f, -0.0006490887f, -0.45340872f, -0.072588354f, + -0.07502459f, -1.4230756f, 0.1764659f, 0.10631232f, + -0.022426108f, 0.028255681f, -0.73202711f, 0.049286593f, + -1.5236567f, 0.03504964f, 0.16500843f, 0.26826346f, + 0.17669486f, -0.52400106f, 0.021091014f, 0.053518359f, + 1.0748174f, -0.24787463f, 0.023504782f, 0.26637712f, + 0.23144323f, 0.040272418f, -0.028192073f, -0.1321231f, + 0.010652079f, 0.12336694f, 0.81431252f, 0.23336183f, + 0.051263187f, 0.019380853f, -0.020120734f, -1.4947516f, + -0.52773803f, 0.013314816f, 0.011715549f, -0.54775178f, + 0.67089599f, -0.30130601f, -0.039340559f, 0.53822607f, + 1.4264835f, 0.20411803f, -1.3928299f, 0.14824501f, + 0.19117303f, -0.0093933297f, 0.0097529218f, -1.3139451f, + -0.06246832f, 0.25377902f, -0.4396947f, -1.4167954f, + -0.027956014f, 0.019424343f, -2.4672542f, -0.340049f, + 0.058334123f, 0.059603658f, 0.84353179f, 0.35287407f, + 0.039523859f, -0.048800118f, 0.15191358f, 0.0082582962f, + 0.19250493f, 0.12244575f, -0.90431118f, 0.034682076f, + 0.043373648f, 0.07625068f, -0.07716161f, 0.72628778f, + -0.0049416088f, 0.37010142f, -0.057425134f, 0.063754924f, + 0.10687099f, 2.5785258f, -0.0041354066f, -1.3269677f, + 0.3290697f, 0.094348021f, 0.73312533f, 0.42142251f, + -0.011948216f, 0.057201479f, 0.26281896f, 0.18116516f, + -0.99513721f, -0.0051043895f, 0.056791048f, 0.29495421f, + 0.22081029f, -0.51939893f, 0.54746723f, 0.16849622f, + 0.88651198f, 0.84109825f, 0.080832995f, -0.042787883f, + 0.095617726f, 0.079994023f, 0.85078233f, 0.39887193f, + 1.7327589f, 0.15702778f, -2.1774588f, 0.098605216f, + -0.21936701f, 0.12796657f, 0.034318034f, 0.69967681f, + 0.099617511f, 0.15990931f, 0.049137354f, -0.97349942f, + 0.091500387f, 0.30383867f, 0.026090404f, 0.10196608f, + 0.077292189f, 0.13376188f, -0.48419029f, 0.02341936f, + 0.079419993f, -0.10547129f, -1.3727629f, 0.025672795f, + 0.13963819f, -0.86834282f, 0.087660737f, 0.049537599f, + -0.017914433f, 0.076473244f, -0.57294953f, 0.072356783f, + -2.0546598f, 0.048558824f, 0.10491721f, 0.2924473f, + 0.5498156f, -0.72070855f, 0.042570427f, 0.050720617f, + 0.83560157f, -0.33120689f, 0.033320095f, 0.23950845f, + 0.15883105f, 0.037746564f, 0.071708791f, -0.069884889f, + 0.02173226f, 0.15117885f, -0.17285746f, 0.18725149f, + 0.056292448f, -0.0020138233f, 0.023135498f, -0.072362296f, + -0.44525748f, 0.029799191f, -0.2621451f, -0.56884259f, + 0.64671129f, -0.27178389f, -0.51463956f, 0.28904626f, + 1.5113779f, 0.13886885f, -1.4414893f, 0.17332859f, + -0.17761424f, -0.085643798f, 0.056139987f, -1.0974345f, + -0.054855604f, 0.29330927f, -0.14068194f, -1.5702951f, + 0.00057363353f, 0.079691865f, -4.2810874f, -0.33809033f, + 0.052635644f, 0.076086573f, 0.73887706f, 0.52932554f, + 0.036033332f, -0.20029724f, 0.17430703f, 1.0740287f, + 0.15648979f, -0.1409443f, -0.9479326f, -0.0062185852f, + 0.15660591f, 0.054413535f, -0.027569637f, 0.37370232f, + 0.012752239f, 0.57730073f, -0.037914112f, 0.073604278f, + 0.088794321f, 2.2648447f, 0.77239406f, -0.68005168f, + -0.21113147f, 0.17363045f, 0.020430481f, 0.14632067f, + -0.91990858f, 0.099092759f, 0.14768222f, 0.10011891f, + -0.25770861f, -0.0098489011f, 0.026587429f, 0.34659749f, + -0.04563465f, -0.24321836f, 0.17236428f, 0.11857426f, + -0.39704901f, 0.41886264f, -0.019218091f, 0.20277493f, + 0.08668036f, 0.068935223f, 0.86377406f, 0.33223581f, + 1.1873053f, 0.1505603f, -2.0249496f, 0.056520443f, + -0.31892908f, 0.09013845f, -0.066661939f, 0.83540088f, + -0.0049442709f, -0.39675459f, 0.1331497f, -0.22881502f, + 0.565359f, -0.08937569f, 0.021206703f, 0.10242867f, + 0.096900828f, 0.079478696f, 0.1662581f, 0.04834199f, + 0.077202f, -0.0024181777f, 0.11456937f, -0.024879549f, + 0.33516896f, -0.23594418f, -0.038808659f, -0.0098361755f, + 0.013574417f, 0.022737922f, 0.13520758f, 0.0058405106f, + -1.0272464f, 0.050504487f, 0.10118476f, 0.23878238f, + 0.62500399f, -0.10071141f, 0.021088203f, 0.054331578f, + -0.0027157278f, -0.084523655f, 0.013982346f, 0.2258096f, + 0.46550885f, 0.029417163f, 0.016334604f, -0.045733467f, + 0.031860348f, -0.17891492f, -0.51783252f, 0.19037519f, + 0.052410595f, 0.019696617f, 0.022410238f, 0.33016211f, + -0.2787002f, 0.031769607f, 0.88068467f, -0.52403808f, + 0.6141032f, -0.15224414f, -1.1768285f, 0.13220243f, + 1.1082147f, -0.16517019f, -1.3474224f, 0.12220722f, + -0.34773225f, -0.025856314f, -0.0039889873f, -1.4049394f, + -0.049471546f, 0.23084871f, 0.440146f, -1.6899117f, + -0.10943142f, 0.028009465f, 0.30496311f, -0.18884283f, + 0.03797799f, 0.06254302f, 0.40082458f, -0.4556503f, + 0.029412802f, -0.32209817f, 0.20273431f, -1.6716214f, + 0.18295376f, -0.15793745f, -1.8922985f, 0.051103719f, + -0.031850569f, 0.097618781f, 0.067031592f, 0.46867007f, + 0.0067098308f, 0.25662878f, -0.044824667f, 0.093158394f, + 0.099985428f, 2.2495668f, 0.49914581f, -0.029400667f, + 0.17315567f, 0.10992632f, 0.98286492f, 0.27163088f, + -0.83470118f, 0.0671793f, 0.25979072f, 0.1879614f, + -0.52482945f, 0.0003547215f, 0.082746379f, 0.46095657f, + 0.20743705f, -0.31689435f, 0.2169653f, 0.16920903f, + 0.18824558f, -0.19154595f, 0.071491465f, 0.27084419f, + 0.079385124f, 0.066430017f, 1.3569531f, 0.46874091f, + 1.5342053f, 0.12570302f, -1.9608129f, 0.089574046f, + -0.54746157f, 0.042283941f, 0.0042115981f, 0.93987161f, + 0.062085174f, 0.073928803f, 0.11806765f, -0.88716406f, + 0.32746351f, 0.24181037f, 0.04019665f, 0.058593031f, + 0.092992336f, 0.10768124f, 0.16042095f, 0.064120561f, + 0.082168281f, 0.028813371f, -0.19245824f, -0.078082547f, + 0.32426792f, 0.014062848f, 0.23003837f, 0.57447296f, + 0.0037383973f, 0.050404623f, 0.042749748f, 0.031123392f, + -1.2353892f, 0.058790982f, 0.1098417f, 0.31405237f, + 0.9737342f, -0.62542254f, 0.056296442f, 0.039576415f, + -0.19703484f, -0.26394814f, 0.05335898f, 0.2300553f, + 0.46118593f, 0.035772447f, -0.021850053f, -0.16698389f, + 0.032024059f, 0.089512512f, 0.2353292f, 0.20432867f, + 0.090965025f, 0.021214383f, 0.02014282f, 1.5295132f, + -0.69035202f, 0.025680132f, 0.30686766f, -0.51170778f, + 0.67438984f, 0.15554927f, -0.29045704f, 0.62058872f, + 1.1281996f, 0.17530107f, -1.8130685f, 0.13860725f, + -0.81014043f, -0.032075625f, 0.039285839f, -0.9337638f, + -0.027995063f, 0.37783921f, 0.22765426f, -1.4229703f, + -0.10979463f, 0.02047934f, -1.4125388f, -0.32900551f, + 0.076662019f, 0.07804165f, 0.22199014f, 0.227235f, + 0.048795778f, -0.22267385f, 0.18462227f, 0.44268125f, + 0.1644233f, 0.0051639131f, -2.1848011f, 0.059661485f, + 0.058287695f, 0.086937353f, -0.13471416f, 0.045206979f, + 0.011813684f, 0.35677043f, -0.072701648f, 0.083778523f, + 0.10889238f, 1.8342923f, 0.4815194f, 0.55957663f, + 0.39151904f, -0.040128224f, 1.0778373f, 0.14237776f, + -0.41350877f, 0.10500795f, 0.27866945f, 0.19968159f, + -1.0547799f, 0.0071315151f, 0.059490141f, 0.36539409f, + 0.19935727f, -0.48286563f, 0.1057891f, 0.16804884f, + 0.084172271f, 0.058440197f, -0.061895709f, 0.37255764f, + 0.072799444f, 0.060928773f, 1.365409f, 0.46071097f, + 0.84051621f, 0.15496612f, -1.7622536f, 0.065175921f, + -0.65535635f, 0.021794779f, -0.013630877f, 0.53972924f, + 0.12373232f, -0.21035127f, 0.10379117f, -0.87162203f, + 0.67065066f, 0.14859582f, -0.001200007f, 0.065939657f, + 0.098730028f, 0.1312377f, 0.23750654f, 0.034910914f, + 0.11460325f, -0.027648881f, -0.10787468f, -0.042080123f, + 0.19693755f, 0.55515742f, -0.19959481f, 0.73495609f, + -0.015912734f, 0.026825046f, -0.1148618f, 0.042884305f, + -1.1569034f, 0.079687461f, 0.027897682f, 0.25668868f, + 1.3408775f, -0.71049404f, 0.051949892f, 0.023174308f, + -0.70996416f, -0.32854214f, 0.043499481f, 0.22368357f, + 0.4719604f, 0.060013503f, 0.034351666f, -0.12732515f, + 0.04020346f, -0.098685153f, 0.24218449f, 0.20196638f, + 0.079033516f, 0.033792805f, 0.025726309f, 2.2314658f, + -0.57991326f, 0.047383752f, -0.15995538f, -0.5795365f, + 0.66738719f, 0.11343298f, -0.1152589f, 0.85957175f, + 0.36214852f, 0.79415399f, -1.6427468f, 0.18720885f, + -1.1817336f, -0.061423551f, 0.031088861f, -0.8241111f, + -0.020140467f, 0.20963012f, 0.40180779f, -1.4443885f, + -0.068389557f, 0.017865911f, -0.28631169f, -0.19904567f, + 0.065120772f, 0.068363652f, 0.39710367f, 0.24844246f, + 0.030127902f, -0.13511921f, 0.11648032f, 0.72720373f, + 0.14502282f, -0.27252364f, -2.7636681f, 0.017062787f, + -0.2491928f, 0.11629575f, -0.26695257f, -0.53579247f, + 0.025433686f, -0.27515349f, -0.064043693f, 0.085426368f, + 0.098865822f, 1.1414602f, 0.39782393f, 0.84029174f, + 0.13717939f, 0.075966619f, 1.1192235f, 0.66273749f, + -1.0329998f, 0.046579193f, 0.25482395f, 0.17342605f, + -0.20708829f, 0.0085199289f, 0.037769679f, 0.3498047f, + -0.0082666539f, -0.54709041f, 0.39690205f, 0.16838586f, + 0.3167277f, 0.077134743f, -0.050325159f, 0.23733941f, + 0.096028239f, 0.091319844f, 1.76186f, 0.36792853f, + 0.81118435f, 0.14760007f, -1.2081411f, 0.11697178f, + -0.70787942f, 0.069697291f, -0.066513188f, 0.46158895f, + 0.15182492f, -0.12467448f, 0.18900174f, -1.0998802f, + 0.46750939f, 0.23401538f, -0.042518407f, 0.12466481f, + 0.06458804f, 0.11955114f, 0.02292002f, 0.042790335f, + 0.099515319f, 0.025095427f, -0.96780539f, 0.094513923f, + -0.070821479f, 0.80427545f, -0.27120128f, 0.77788597f, + -0.015139746f, 0.041694727f, -0.46963692f, 0.039141756f, + -1.1314837f, 0.050432071f, 0.024316797f, 0.25282648f, + 0.89664519f, -0.79105753f, 0.038420759f, 0.051241904f, + -0.49372178f, -0.087853849f, -5.2453903e-05f, 0.22239484f, + 0.31893095f, 0.042546034f, 0.027549f, -0.072637677f, + 0.033919595f, 0.1528023f, -0.029229388f, 0.22160146f, + 0.055577934f, 0.035258919f, 0.025701053f, 2.1649368f, + -0.68845153f, 0.034994356f, -0.11174045f, -0.55947781f, + 0.63689733f, -0.20490432f, 0.49400148f, 1.1807706f, + -0.79956818f, -0.080225646f, -1.5385455f, 0.15686123f, + -1.3345919f, -0.053233981f, 0.043032296f, -0.65830845f, + -0.021936016f, 0.043336462f, 0.85370833f, -1.4443257f, + -0.026020162f, 0.046018679f, -0.45415521f, 0.032862015f, + 0.081280611f, 0.081196092f, 0.53049278f, 0.2909168f, + 0.044149335f, -0.18555354f, 0.16957001f, 2.1205597f, + 0.18088484f, -0.26042613f, -2.8335736f, -0.065144196f, + -0.58404857f, 0.080931105f, -0.41163379f, -1.3975599f, + -0.076688334f, -1.6511763f, -0.052674275f, 0.079899326f, + 0.076949321f, 0.48373613f, 0.10417174f, 0.83345628f, + 0.33332774f, 0.10326711f, 0.22324462f, 0.28950956f, + -1.8990201f, 0.07121855f, 0.18715173f, 0.17549039f, + 0.087949567f, -0.0052373135f, 0.041794538f, 0.26719633f, + 0.079899892f, -0.48744574f, 0.54038638f, 0.18258674f, + 0.3205688f, -0.047770221f, 0.082109183f, 0.096586131f, + 0.071489722f, 0.086656414f, 1.7500762f, 0.26162571f, + 0.85218853f, 0.14350624f, -0.67585111f, 0.056289703f, + -0.33576781f, 0.10119226f, -0.084142633f, 0.4387517f, + 0.1190308f, -0.084640123f, 0.084568866f, -0.9419108f, + 0.84437329f, 0.16324455f, -0.015915051f, 0.14656124f, + 0.11668284f, 0.11093318f, -0.26696292f, 0.0087256758f, + 0.096819721f, -0.020341994f, 0.71267635f, -0.0081463736f, + -0.02318681f, 1.0798795f, 0.076846413f, 0.67625022f, + -0.020430185f, 0.0092637092f, -0.50063103f, 0.029045742f, + -1.5453413f, 0.053256799f, 0.034296043f, 0.29609996f, + 0.29947037f, -0.27438915f, 0.030868435f, 0.055116516f, + -0.46725497f, -0.020229289f, 0.0048492453f, 0.23208784f, + 0.42025289f, 0.044961985f, -0.046032526f, -0.028369574f, + 0.017833939f, 0.058353458f, -1.7282394f, 0.18802439f, + 0.06020695f, 0.0074178167f, 0.038701348f, 1.6786994f, + -0.50592011f, 0.035019062f, -0.40675101f, -0.60034066f, + 0.62145424f, -0.036027651f, 0.62404966f, 1.3647931f, + -0.80843186f, -1.014325f, -1.4209627f, 0.14778802f, + -1.2368408f, -0.070039615f, -0.011408811f, -0.60974789f, + -0.025406873f, 0.012678586f, 1.1504592f, -1.5838392f, + -0.12063753f, 0.042346872f, 0.35899898f, -0.098773234f, + 0.054448053f, 0.073474154f, 0.69416201f, 0.28124541f, + 0.023374498f, -0.091153584f, 0.18148507f, 0.84723282f, + 0.20903724f, -0.44103763f, -2.6555345f, -0.082934305f, + -0.40399528f, 0.10941529f, -0.17079188f, -2.55317f, + 0.0062116799f, -3.602809f, -0.019366458f, 0.068610512f, + 0.10001989f, -0.16958185f, -0.14605691f, 0.97596431f, + 0.23942053f, -0.067585684f, -0.25389802f, 0.59423059f, + -1.3393031f, 0.056221679f, 0.22910076f, 0.18549499f, + 0.17323163f, 0.00098236732f, 0.028713515f, 0.28922638f, + 0.0018889019f, -0.31760821f, 0.72256196f, 0.10897791f, + 0.10164507f, 0.27720365f, 0.062684938f, -0.037594173f, + 0.079738177f, 0.063601695f, 1.6427804f, 0.35662988f, + 1.1208758f, 0.15622832f, -0.19138436f, 0.07719864f, + -1.0410945f, 0.13667758f, 0.089796565f, 0.90407985f, + 0.0030935111f, 0.54831088f, 0.060183205f, -1.0635931f, + 0.18896112f, 0.20695302f, 0.0065675983f, 0.079099536f, + 0.11718091f, 0.1230615f, -0.90385377f, 0.051427916f, + 0.079612806f, 0.036478966f, -1.984645f, -0.040746313f, + -0.15852465f, 1.4006141f, -0.40319425f, 0.46550485f, + 0.0076494538f, 0.020196248f, -1.0402025f, 0.02829396f, + -1.1136709f, 0.017537093f, 0.020980725f, 0.20648015f, + 0.0431462f, -0.36090291f, 0.047341079f, 0.037517305f, + 0.43056297f, -0.33326045f, 0.010170108f, 0.25172001f, + 0.20175706f, 0.037543587f, 0.093801618f, -0.07690303f, + 0.035849545f, 0.13861327f, -1.9446781f, 0.2151549f, + 0.035983596f, -0.0078769326f, 0.020695336f, 1.4595639f, + -0.44293246f, 0.028322937f, -0.17532885f, -0.55883068f, + 0.67142254f, 0.0038812631f, 0.57189661f, 1.6270183f, + -1.2836001f, 0.21445137f, -1.7362931f, 0.15463406f, + -1.1523694f, -0.049928702f, -0.0013046896f, -0.33394477f, + -0.031942975f, 0.067454271f, 0.77835542f, -1.4514451f, + -0.13404518f, 0.041730486f, 0.072884724f, 0.43207753f, + 0.064458638f, 0.074959256f, 0.86221731f, 0.60915625f, + 0.053648543f, -0.059113905f, 0.20158832f, -0.61971712f, + 0.27358058f, 0.73944175f, -2.0294137f, -0.053255275f, + -0.23935425f, 0.11615792f, -0.18999504f, -3.4120576f, + 0.0060481145f, -4.8350148f, 0.0041441359f, 0.089214697f, + 0.11570101f, -0.5251379f, 0.14434199f, 0.46264228f, + 0.43310353f, 0.056395579f, -0.59794432f, 0.74696875f, + -1.1702498f, 0.077280261f, 0.27667564f, 0.22247694f, + -0.91946793f, 0.034946352f, 0.079721168f, 0.33964121f, + 0.0035779667f, 0.16358486f, 0.32240942f, 0.14954488f, + 0.72197884f, 0.14389443f, -0.039272409f, 0.051962249f, + 0.098838821f, 0.076996766f, 1.8394411f, 0.16099447f, + 1.4231746f, 0.16074865f, 0.42248887f, 0.05883399f, + -1.2577014f, 0.27862024f, 0.033185918f, 0.86554933f, + -0.06755016f, 0.24441029f, -0.13832803f, -1.3921021f, + -0.1931784f, 0.29483327f, -0.011431335f, 0.028792616f, + 0.074115328f, 0.12127884f, -0.51182634f, 0.024455259f, + 0.073921613f, -0.056702327f, -7.2780685f, -0.008802725f, + 0.11539564f, 1.7846638f, -0.21296968f, 0.66261452f, + 0.024348252f, 0.086920269f, -1.2841717f, 0.015886107f, + -0.91783041f, 0.059432629f, 0.060127579f, 0.28232896f, + 0.098792888f, -0.81087565f, 0.028599897f, 0.064298213f, + 1.5197482f, 0.11648498f, 0.011703567f, 0.25402778f, + 0.30393216f, 0.044254381f, 0.11254077f, -0.17778951f, + 0.032858025f, 0.62392128f, -2.3051395f, 0.19647411f, + 0.067417108f, -0.0052936799f, 0.0027484065f, 0.72850889f, + -0.47546321f, 0.035765473f, -0.62932122f, -0.47063106f, + 0.68107551f, -0.018198332f, 0.98803061f, 1.6190441f, + -2.2255538f, 1.1173167f, -1.4058315f, 0.17672192f, + -0.88642395f, -0.013583262f, 0.022363244f, 0.045972731f, + -0.015228256f, 0.12257977f, -0.57330078f, -1.4055119f, + -0.048964929f, 0.040199827f, 0.14846992f, 0.88446522f, + 0.060119327f, 0.073003061f, 0.90444189f, 1.0072335f, + 0.030112278f, -0.021074515f, 0.10823743f, -0.57893056f, + 0.069279484f, -0.075067006f, -0.74251872f, 0.04505913f, + -0.066392526f, 0.10074588f, -0.035930827f, -3.5157442f, + -0.0015587003f, -3.57003f, -0.0086318562f, 0.083646424f, + 0.082816012f, -1.5447828f, -0.076147266f, -0.8800326f, + -0.036526117f, 0.054518159f, -1.3933879f, -0.25349593f, + 0.23372006f, -0.11798532f, 0.16411416f, -0.013868495f, + -0.11746684f, -0.033698454f, 0.044046536f, 0.17407244f, + 0.11692384f, 1.5402066f, 0.073786415f, 0.15473409f, + 0.29260388f, 0.73909551f, 0.072607495f, 0.078043304f, + 0.076897278f, 0.029299054f, 0.97422308f, 0.065796845f, + -0.3071779f, 0.13302542f, 0.74887538f, 0.066138834f, + 0.57435215f, 0.12483791f, -0.027275471f, 0.1710774f, + 0.47814927f, -0.45745766f, -0.13648508f, -0.40311211f, + 0.63663787f, 0.22676274f, 0.015615552f, 0.068408951f, + 0.071929485f, 0.11387f, -0.13667263f, 0.033110391f, + 0.095171653f, -0.1001607f, 1.5071299f, -0.044844076f, + -0.33688113f, 1.606021f, 0.011763762f, 0.6699692f, + -0.019766608f, -0.0012880238f, -1.7489966f, 0.071154132f, + 0.2734901f, 0.05711206f, 0.11916202f, 0.2186376f, + 0.33422157f, -0.28014833f, 0.039959509f, 0.062365185f, + -0.014902798f, -0.13068563f, 0.0086166998f, 0.22383167f, + 0.20957448f, 0.058279887f, -0.021908231f, -0.035739597f, + 0.013575193f, -0.0083897309f, 0.22077997f, 0.24958362f, + -0.00021500114f, 0.10113616f, 0.024567863f, 0.33281213f, + -0.060417391f, 0.015383244f, -1.0853965f, -0.50866354f, + 0.56219137f, -0.33085558f, 0.86615604f, -0.021884378f, + -0.21097335f, 0.61920375f, -1.4008141f, 0.090267703f, + -0.16437329f, -0.13985404f, 0.0021394554f, -0.50758862f, + -0.031103389f, -0.14520638f, -0.11709584f, -2.071903f, + 0.020758834f, 0.052198816f, 0.20650342f, -0.49091765f, + 0.00043551423f, 0.11677705f, 0.50067079f, 0.022108465f, + 0.016385943f, -0.32061943f, 0.098525926f, 0.89453149f +}; + +static const float mlp_b1[128] = { + -0.16111128f, 0.10250536f, 0.51028728f, 0.0021623468f, 0.037042845f, + -0.051542539f, 0.069718428f, 0.10240296f, 0.023540633f, -0.080731586f, + -0.18903656f, -0.069564521f, -0.082521446f, 0.025295392f, -0.65664101f, + -0.54041362f, 0.071857706f, -0.25993964f, 0.59443343f, 0.035954826f, + -0.11363222f, -0.07908038f, -0.19817714f, 0.29864952f, -0.50741744f, + 0.028503237f, -0.031036697f, -0.22135735f, 0.57789642f, 0.46257964f, + 0.25730756f, -0.11912934f, 0.34946743f, 0.090219766f, -0.033422887f, + -1.1843697f, -0.085759476f, -0.05385128f, 0.2465288f, 0.8778789f, + 0.072706178f, -0.15300959f, 0.32977429f, -0.055792321f, 0.27573577f, + -0.088869512f, -0.11496663f, 0.68819684f, 0.31035128f, 0.2968373f, + 0.46179184f, -0.45023581f, 0.19457819f, -0.2227862f, 1.192196f, + 1.2163506f, -0.087483659f, -0.098151304f, 0.16296299f, -0.035473634f, + -0.090438358f, -0.021255966f, -0.67399126f, -0.12404969f, 0.48519766f, + -0.093622871f, -0.053356271f, 0.57803899f, -0.65111142f, -0.011401757f, + 0.27113074f, -0.03274494f, 0.82683849f, -0.039741054f, 1.1766831f, + -0.61322892f, 0.5462352f, 0.90684831f, -0.024894016f, -0.041972514f, + 0.3914406f, 0.83881003f, -0.0054246983f, -0.24275512f, 0.091202311f, + -0.029081127f, 0.045040928f, 1.3358785f, -0.021295149f, 0.18199106f, + -0.68874943f, -0.20840541f, -0.050097976f, -0.015232689f, -0.013783711f, + 0.025376039f, 0.58801031f, -0.027911136f, 0.36436859f, -0.79848361f, + 0.46468902f, 0.24483995f, -0.62223643f, 0.22801708f, -0.36729863f, + -0.55639273f, 1.1643656f, -0.10966159f, -0.1247081f, -1.2663506f, + 0.0066675744f, -0.11488041f, -0.64264494f, -0.68306226f, 0.40782043f, + -0.043610189f, 0.056509286f, -0.028751373f, 0.93577182f, -0.034331601f, + -1.2236813f, -0.045102943f, 0.76737839f, 0.25180763f, -0.01751757f, + -0.32945657f, 1.059623f, -1.140229f +}; + +static const float mlp_w2[8192] = { + -0.13401985f, -0.10805245f, -0.13512564f, 0.043239117f, + -0.025824245f, 0.96531415f, 0.014632984f, -0.08767809f, + 0.30497059f, -0.14517748f, -0.069997646f, -0.0059253578f, + 0.54946405f, -0.070085593f, -0.64926779f, 0.13913424f, + -0.052980095f, 0.94457173f, -0.7174058f, -0.25168502f, + -0.062107582f, -1.6484116f, -1.8625046f, -0.29657269f, + -0.59743732f, 0.026666554f, -0.082523599f, 0.60817879f, + -0.69448006f, -0.013764022f, 0.14189444f, -0.32889092f, + -0.3822414f, 0.26400882f, -0.35984135f, 0.2322439f, + -0.053365417f, 0.049272392f, 0.35202861f, -1.4901416f, + 0.0074732373f, 0.0023721904f, 0.040245261f, 0.50999433f, + 0.0073596705f, -0.20686789f, -0.010369761f, -0.22294603f, + 0.45161831f, 0.13474202f, -0.15934893f, -0.11582299f, + -0.00020334523f, -0.1440206f, -0.085882828f, 0.036365386f, + 0.095990807f, -1.4676877f, 0.032364555f, -0.073447272f, + 0.11814238f, 0.046512179f, 0.003183861f, -0.020252176f, + 0.2804051f, 0.23501393f, 0.13783318f, -0.028164238f, + 0.036092911f, 0.085397355f, -0.085984588f, 0.27227446f, + 0.14911512f, -0.49690911f, -0.0018769737f, 0.0049273376f, + 0.47649685f, -0.12679908f, 0.20489213f, -0.0062682643f, + -0.0086877318f, -0.25064102f, 0.037190873f, -0.23278305f, + 0.061249051f, -0.077029429f, 0.1952177f, -0.093355834f, + 0.068545781f, 0.061188821f, -0.3774516f, -0.28733176f, + 0.054695647f, 0.033560209f, 0.19302927f, -0.10300241f, + -0.16360536f, 0.17729785f, -0.3280811f, -0.47166118f, + -0.051197674f, -0.10301183f, 0.22625831f, 0.03659125f, + -0.042670343f, -0.066971168f, -0.0077740913f, 0.10296816f, + 0.073192507f, 0.23933312f, -0.067933016f, 0.20780715f, + 0.31720167f, -0.014942673f, 0.060954519f, -0.086186185f, + 0.18479522f, 0.20190905f, -0.064508714f, 0.10597448f, + 0.080660887f, -0.013490031f, -0.023941277f, -0.037375733f, + 0.16331856f, -0.04298329f, -0.02337233f, 0.0027651312f, + 0.042508047f, 0.31116992f, -0.016540663f, 0.027428802f, + -0.10341623f, 0.20886445f, -0.046912331f, -0.83867818f, + -0.091055833f, -0.74006921f, -0.073965132f, -0.096054293f, + -0.44881836f, -0.018704358f, -0.13774769f, 0.20779948f, + 0.037330691f, -0.14347968f, 0.06019723f, -0.032107405f, + 0.14190409f, 0.23414429f, 0.11500391f, 0.14517407f, + 0.24576916f, -0.11154523f, -0.38892314f, 0.22124277f, + -0.1209477f, -0.0056074033f, -0.12200976f, 0.30347395f, + 0.070215821f, -0.046120606f, -1.1316086f, -0.10020047f, + 0.011745617f, -0.073522463f, 0.014694138f, -0.19329552f, + -0.033123124f, -0.0063701039f, -0.097590156f, 0.20519437f, + 0.05148254f, 0.22909611f, 0.0064275153f, 0.32846227f, + -0.28885818f, 0.036110163f, -0.015588131f, -0.034113742f, + 0.27645531f, 0.12832145f, -0.033292353f, 0.32622075f, + -0.038198974f, 0.14295615f, 0.042273201f, -0.074486949f, + -0.013197044f, 0.043494053f, 0.072429709f, 0.040032964f, + 0.026065215f, 0.039622307f, 0.090516053f, 0.070926316f, + -0.08794722f, 0.029430732f, -0.070605114f, -0.012566934f, + 0.071486428f, -0.061942689f, 0.060579833f, -0.048652004f, + -0.079783462f, 0.050308291f, -0.062955491f, -0.043444712f, + -0.048692834f, 0.0013004541f, -0.064378403f, -0.0073739588f, + 0.0029721076f, -0.07878042f, -0.07289055f, 0.03012413f, + -0.02748693f, -0.0089545613f, 0.04153939f, -0.04391196f, + 0.042088769f, -0.027696045f, -0.059247762f, 0.056999154f, + -0.0096948603f, 0.030945642f, -0.05465655f, -0.070052713f, + 0.031945519f, -0.028792523f, 0.0097124446f, 0.025932737f, + 0.047516558f, -0.02543813f, -0.016363326f, -0.051849585f, + -0.05821586f, 0.079176016f, -0.049968526f, 0.034890112f, + 0.030262111f, 0.070722051f, 0.0032276625f, 0.042170841f, + -0.037387412f, 0.01572112f, -0.06630946f, 0.0025943145f, + -0.08988931f, -0.049637083f, -0.040986523f, 0.011642024f, + -0.014718345f, 0.07045839f, 0.052411735f, 0.044937555f, + 0.04897289f, -0.036069084f, 0.47997218f, -0.032572731f, + 0.022844357f, 0.04444322f, -0.098056979f, 0.5605486f, + -0.074956477f, -0.28703558f, -0.089604706f, -0.026894709f, + 0.093831494f, -0.087541141f, -0.10173196f, 0.05395899f, + -0.035212249f, -0.31132752f, 0.37665609f, -0.063066341f, + 0.056185167f, -0.036748551f, -0.21597701f, 0.25426203f, + 0.16287929f, -0.035911571f, 0.0042173592f, 0.02122931f, + -0.034590889f, 0.11277586f, -0.16206235f, -0.026160244f, + 0.2490596f, 0.056145001f, 0.2147592f, 0.44400153f, + -0.13859846f, -0.039005715f, -0.020939792f, -0.064570583f, + -0.044142559f, -0.041625846f, 0.037830174f, 0.01023829f, + -0.099699378f, -0.11402012f, 0.077271305f, 0.23349634f, + 0.049881734f, 0.015643008f, -0.025369842f, -0.044654984f, + 0.076776631f, -0.089056499f, -0.0054639461f, -0.11086166f, + -0.051380955f, -0.14139755f, -0.073783442f, -0.08957281f, + -0.15432385f, -0.036813945f, 0.028830145f, -0.018060584f, + -0.044561114f, 0.16861007f, -0.3900443f, -0.009718067f, + 0.01357356f, -2.7952797f, -0.040425617f, -0.2921668f, + -0.43990418f, -0.19903767f, -0.034896147f, -0.062049337f, + 0.16982986f, -0.041643444f, -0.013867288f, -0.17723161f, + -0.10576329f, -0.9545781f, 0.12281357f, 0.33033952f, + 0.12685452f, -0.77117735f, -1.4042262f, -0.13960087f, + -1.2143337f, -0.10005385f, 0.49916494f, -0.11204961f, + 0.60058945f, -0.010454747f, 0.4263719f, -0.33819497f, + -1.5804952f, -0.14090271f, 0.39896452f, -0.32866994f, + 0.041793082f, -0.0045935381f, -0.26165545f, 0.19080737f, + -0.07487341f, -0.12196373f, 0.0058339587f, 0.065310225f, + 0.044157304f, -0.191999f, 0.029341569f, 0.30192205f, + -0.97839707f, -0.065522864f, -0.62970608f, -0.049120303f, + 0.048853107f, -1.398774f, 0.055223968f, 0.14225635f, + -0.0290088f, -1.6384779f, -0.050691575f, 0.016026506f, + 0.17193745f, -0.041766815f, -0.059543435f, 0.00059266685f, + -0.044911932f, 0.053184431f, 0.23758133f, 0.3705914f, + -0.10780592f, 0.0023042574f, -0.1331536f, 0.19558229f, + 0.37066185f, -0.059776895f, -0.033462107f, -0.052998275f, + 0.16468149f, 0.014577924f, -0.0014430007f, -0.34871882f, + -0.082212202f, -0.13261148f, 0.1104388f, -0.071681418f, + 0.24335852f, 0.08392074f, 0.029868191f, 0.084517486f, + -0.12608501f, 0.047268063f, -0.053096514f, -0.33680424f, + 0.1062787f, -0.28151476f, -0.057272669f, 0.039296165f, + -0.012607701f, 0.1296996f, 0.014447571f, -0.24642444f, + -0.037482478f, -0.042244237f, 0.13395497f, -0.075826235f, + -0.0058623841f, 0.042602018f, -0.067595847f, 0.28557917f, + -0.042805582f, 0.048600662f, 0.021238718f, -0.065436415f, + 0.1342368f, -0.11628903f, 0.00085405313f, -0.08850234f, + -0.057147581f, -0.11018581f, -0.057835128f, 0.08077997f, + -0.20510046f, 0.054512206f, -0.015106796f, -0.15676808f, + 0.15750644f, -0.082579441f, -0.053989515f, -0.057055824f, + 0.1080884f, -0.6197167f, 0.32578689f, 0.068865374f, + -0.085464612f, -0.22132766f, -0.12045518f, 0.18378887f, + -0.09163326f, 0.21402515f, 0.020434769f, -0.10294785f, + -0.24025552f, -0.077885225f, -0.1464396f, 0.13246727f, + -0.013072145f, -0.43397683f, -0.18672891f, 0.025806755f, + 0.51870501f, -0.13989627f, -0.044765741f, -0.24105348f, + -0.1278996f, -0.014004378f, -0.33469665f, -0.15141857f, + -0.17208345f, 0.013301768f, -0.41736034f, 0.56266791f, + 0.16689153f, 0.10669791f, 0.57326454f, 0.62044418f, + -0.10670628f, -0.0071238182f, 0.47537774f, -0.19770309f, + -0.095179662f, -0.01166893f, -0.0098315077f, 0.28432891f, + 0.039315093f, 0.036081508f, -0.054818928f, -0.12622564f, + 0.67318231f, 0.04149542f, -0.20728368f, -0.041308671f, + 0.0071690571f, -0.0072380183f, -0.027608352f, 0.44179702f, + 0.11241522f, 0.045070242f, 0.031494245f, -0.066894174f, + -0.26211035f, -0.051847167f, -0.057886358f, -0.03382441f, + -0.055376988f, -0.28695938f, -0.28448984f, -0.0039272946f, + 0.02264907f, 0.33716062f, -0.11362648f, -0.28075767f, + 0.26084098f, 0.33949679f, 0.020794775f, -0.090067036f, + -0.0025816325f, 0.012315018f, 0.85678393f, -0.0219374f, + -0.13246363f, -0.057894405f, -0.67359412f, 0.078784242f, + -0.15227343f, 0.31357551f, -0.5650472f, -0.11435278f, + 0.60706228f, -0.053444177f, 0.022561684f, 0.17853002f, + 0.04805015f, 0.0092038177f, -0.16009848f, 0.17982677f, + -0.23600428f, 0.095200777f, -0.24111272f, -0.54605609f, + 0.01120175f, -0.041584481f, -0.096676119f, -0.23468381f, + 0.0041545434f, -0.069441035f, 0.086445473f, -0.18596335f, + -0.027977677f, -0.028343793f, 0.032837138f, 0.14126694f, + -0.22354093f, -0.057706479f, -1.3200235f, -0.07257434f, + -0.0061904341f, -0.59654027f, -0.018421551f, 0.98428899f, + -0.057380483f, 0.24721983f, 0.038483165f, 0.039577786f, + 0.09512037f, -0.12831023f, -0.045181438f, -0.0011999535f, + 0.038267981f, 0.34224197f, 0.0046632318f, -0.02027596f, + -0.0033698259f, 0.22576961f, -0.16358368f, 0.099755526f, + -0.3503052f, 0.074399374f, 0.047230735f, -0.03439584f, + 0.54164577f, -0.063917778f, 0.30064264f, -0.036106892f, + -0.11102282f, 0.36070168f, 0.17559215f, 0.16268176f, + -0.44992119f, 0.31240308f, 0.071917459f, 0.085562073f, + 0.1792701f, -0.013643932f, 0.59999734f, -0.077360608f, + 0.088833198f, 0.016358403f, 0.20204356f, -0.28313863f, + -0.2151722f, 0.30850804f, -0.13494992f, -0.25652131f, + 0.012183779f, -0.006616279f, -0.031792995f, 0.1116793f, + -0.0090221781f, -0.10425053f, 0.11722241f, 0.089583024f, + -0.026455335f, 0.0011822587f, 0.035867848f, 0.048599984f, + -0.036230654f, -0.01280252f, 0.20204103f, -0.005160158f, + -0.025051713f, 0.025804538f, 0.016160538f, -0.33032721f, + 0.035833679f, -0.047648191f, -0.096733205f, -0.087649047f, + 0.10199925f, 0.063293211f, -0.12666938f, 0.023488151f, + 0.38308054f, -1.3575975f, 0.35719746f, -0.59385806f, + 0.020553874f, -0.29543996f, -0.090089999f, 0.088016175f, + -0.10062858f, -0.86403698f, -0.0411986f, 0.022698509f, + -0.24137449f, 0.040885326f, -0.33865529f, -1.4112402f, + 0.018639384f, 0.73850298f, -0.2926656f, -0.25733334f, + 0.74492121f, 0.0751068f, 0.14509235f, -0.42982647f, + 0.29968706f, -0.082797103f, -0.68080306f, -0.324734f, + -0.32077163f, -0.88456517f, -0.2032146f, -0.53308386f, + -0.33951181f, -0.23635738f, -0.36030903f, -0.15319166f, + -0.026453039f, 0.038140837f, 0.84404123f, -0.047361389f, + -0.067316428f, 0.017878046f, -0.26342446f, -0.20990837f, + -0.069541007f, -0.55248761f, 0.52507198f, 0.24171257f, + 0.73878109f, -0.04543094f, 0.14073248f, -0.040027354f, + 0.97378123f, 0.071844295f, -0.083562471f, 0.53274077f, + -0.70704532f, 0.11890067f, -0.066476554f, -0.075242892f, + 0.3798857f, -0.056508828f, -0.044769555f, 0.77073425f, + 0.057821054f, -0.47864154f, 0.1641978f, -0.092481248f, + -0.039101236f, -2.2027438f, -0.020210661f, 0.17281172f, + -0.061925791f, 0.13034903f, 0.075757399f, -0.083650917f, + 0.81372839f, -0.012301452f, -2.0604975f, 0.25388816f, + -0.028407419f, 0.20204012f, -1.4825592f, -3.3024139f, + -0.11139901f, -2.1387224f, -2.365804f, -0.4002499f, + -1.0415599f, -0.037784528f, 0.17830884f, 1.9386389f, + 0.35606378f, -0.014777489f, 0.31129408f, -0.80503482f, + 0.12436294f, -0.029744748f, 0.37147701f, 1.1419126f, + 0.072218783f, -0.063083231f, 0.76367664f, -0.68893552f, + -0.083985411f, -0.00042353029f, -0.24368221f, 0.54629594f, + -0.012827914f, -0.19250919f, -0.048216179f, -0.62233162f, + 0.29595378f, 0.047201909f, 0.43234473f, -0.01995378f, + 0.12423762f, -0.12416923f, -0.072374657f, 0.30291489f, + 0.043155462f, -1.1234294f, 0.01625723f, 0.017954499f, + 0.17416994f, -0.0095734261f, 0.022241892f, -0.081635252f, + 0.1182292f, -0.58448541f, 0.79492462f, 0.091566622f, + -0.046201456f, -0.79678535f, -0.052045487f, 1.0420889f, + -0.099364311f, 0.078662351f, -0.050668862f, 0.058193348f, + 0.9199819f, 0.036702123f, 0.52470714f, 0.0089130141f, + 0.011856661f, 0.88499671f, 0.80991018f, -0.039445911f, + 0.14830826f, -1.6666342f, -0.26276472f, 0.63975412f, + -1.2841097f, -0.010086558f, 0.6176036f, 0.016941702f, + 0.9822185f, 0.0026880363f, -0.0048082061f, 0.3905504f, + -2.0647151f, -0.20323145f, -0.92672408f, 0.12679687f, + 0.01267737f, 0.071742401f, -0.17071128f, -3.831543f, + 0.041143108f, -0.015205399f, -0.092675097f, -0.076330632f, + -0.062871829f, -1.2803873f, 0.034087751f, 0.17934221f, + -0.16467471f, -0.13434514f, -2.8548043f, 0.055419266f, + 0.013344008f, 0.43733534f, 0.039515667f, -0.20074944f, + 0.063849106f, -0.78406239f, -0.014131585f, -0.13628089f, + 0.061791826f, 0.038893245f, -0.0041605006f, 0.033403594f, + -0.018001048f, -0.16822344f, -0.2308525f, -0.029671982f, + 0.039239764f, 0.012292331f, 0.037617289f, -0.18252376f, + 0.026723171f, 0.1334454f, -0.0098484466f, -0.0087077292f, + -0.18634917f, -0.13737115f, 0.11836181f, -0.1891361f, + -0.0034575942f, -0.05512685f, -0.048831977f, -0.0010306602f, + -0.016359216f, -0.00074798934f, 0.18637581f, -0.037825409f, + 0.069235899f, 0.036113001f, -0.028086921f, 0.47798592f, + 0.39966843f, -0.022491867f, -2.4679911f, -0.023340125f, + 0.082349725f, 0.11917235f, -0.54250187f, 0.12674579f, + -0.014621668f, 0.022861335f, 0.44460246f, 0.11050506f, + 0.022450417f, -0.064455576f, -0.19071414f, -0.056094475f, + 0.051470395f, 0.2183353f, 0.0054324055f, 0.10482426f, + 0.36717761f, -0.00017341008f, 0.012751061f, -0.10735667f, + -0.040752951f, 0.13955761f, -0.020594295f, -0.10332804f, + 0.044997443f, -0.011400466f, -0.00162344f, 0.033430494f, + -1.9299451f, 0.029133778f, -0.036019076f, -0.0082136709f, + -0.0090891123f, -0.23917231f, 0.010241524f, -0.0029902749f, + -0.052719701f, 0.080863684f, -0.042197276f, 0.0079476368f, + -0.15271498f, 0.062749617f, -0.083669037f, -0.029593689f, + -0.65110898f, -0.027628751f, -0.20663597f, 0.084146738f, + -0.017757172f, -0.35973507f, 0.0073205964f, -0.074096218f, + -0.10024372f, -0.22044058f, 0.18727802f, 0.13255785f, + -0.052243412f, -0.027532341f, -0.64120728f, -0.36474106f, + -0.11867851f, -0.010150689f, -0.01073939f, -0.23546724f, + -0.22889315f, 0.065112583f, 0.1027393f, 0.10059731f, + -0.032620002f, -0.071050309f, -0.39051518f, -0.058653113f, + -0.067746282f, -0.014560466f, -0.015884379f, -0.004895004f, + 0.031202234f, -0.24053861f, 0.0096954424f, -0.66216582f, + -0.20761739f, -0.085659623f, -0.36423475f, -0.10520729f, + -0.025572414f, -0.45422384f, -0.0057428335f, -0.39401957f, + 0.12463026f, -0.35678867f, -0.069545753f, -0.017902697f, + 0.078170002f, -0.037194841f, -0.1130495f, -0.023889843f, + 0.1211371f, -0.061940558f, 0.56672156f, 0.016048875f, + -0.059412777f, -0.19372508f, 0.029828507f, -0.18299861f, + -0.12303784f, -0.31962138f, -0.061436988f, -0.079536632f, + 0.87624699f, -0.036308531f, 0.0042324793f, -0.13447103f, + -0.09158618f, -0.039672319f, 0.003962629f, -0.010409613f, + 0.021200767f, -0.272861f, 0.056820326f, 0.83258986f, + 0.23994301f, 0.028100627f, -0.33048278f, -0.27977017f, + 0.63687146f, -0.01697354f, -0.37598795f, -0.38512933f, + -0.18163872f, -0.094827704f, 0.26581192f, 0.87887502f, + 0.012668826f, -0.058503438f, -0.3458418f, 0.14322634f, + -0.065196045f, -0.07143335f, 0.014248817f, 0.23432778f, + -0.013247493f, -0.27404881f, 0.010378007f, 0.11174286f, + 0.85829389f, -0.16335154f, 0.15025945f, -0.05212431f, + 0.01443467f, -0.065763734f, -0.094409652f, 0.027098455f, + -0.18050879f, -0.30006716f, -0.058935877f, -0.049268961f, + -0.25056458f, -0.039042018f, -0.061805729f, -0.041427903f, + 0.066447772f, 0.20941816f, 0.26660016f, 0.036419582f, + -0.023592928f, -0.3008213f, 0.012389707f, 0.16090818f, + 0.19346538f, 0.25894037f, -0.094827034f, -0.09482342f, + 0.59642416f, -0.011818046f, 0.045523223f, -0.046473633f, + -0.027294211f, 0.53881687f, -0.79183912f, -0.01060228f, + 0.08313974f, 0.1408976f, 0.14674827f, -0.33642924f, + 0.15665606f, -0.13140783f, -0.053529151f, -0.16098443f, + 0.1640013f, 0.035700105f, 0.24401778f, -0.33678928f, + -0.69378155f, 0.11163264f, -0.67397988f, 0.15755984f, + -0.10819884f, -0.026383806f, -0.024173709f, -0.31835768f, + 0.0059742057f, -0.077152997f, -0.0048763771f, -0.36860389f, + -0.11686967f, 0.21916771f, 0.0067634294f, -0.40740582f, + -0.58803904f, -0.085711285f, -0.14764459f, 0.0065729278f, + 0.068137646f, -0.027675049f, -0.048131626f, -0.82495427f, + 0.1334431f, -0.37163934f, 0.001517941f, -0.006413707f, + 0.18388158f, -0.12705331f, 0.060906071f, -0.0068869828f, + -0.14123456f, -0.22386426f, -1.0459791f, -0.010144141f, + -0.014337902f, -0.79163277f, 0.063370302f, 0.18921494f, + 0.770625f, -0.82303327f, 0.005460294f, -0.097517088f, + -0.11327209f, -0.063101314f, 0.094847322f, -0.096746519f, + -0.10517862f, -0.08866901f, 0.22569063f, 0.34868839f, + 0.036865041f, -0.21117273f, -0.12581043f, -0.12443006f, + 0.55406392f, 0.023516361f, 0.372181f, -0.64870548f, + -0.11798394f, 0.031043928f, -0.33954537f, 0.42529124f, + -0.26927912f, -0.12622111f, -0.058988951f, -0.40302813f, + -0.0018638775f, 0.0097557902f, 0.16304198f, -0.29557523f, + 0.050774284f, -0.043619972f, 0.25855014f, 0.018634183f, + -0.065168947f, -0.14629459f, 0.077762701f, 0.0061699916f, + -0.24706519f, -0.082564346f, 0.02524011f, -0.015600251f, + -0.10142104f, -0.60082448f, 0.05042325f, -0.59859461f, + -0.16546153f, -1.8594202f, 0.045519393f, -0.068593107f, + -0.10609724f, -0.027989106f, 0.047192387f, -0.01405347f, + -0.18031056f, 0.23952243f, 0.27292955f, 0.088008627f, + -0.0087493733f, 0.2736772f, -0.087384738f, -0.24880619f, + 0.094913319f, 0.23796234f, 0.0028674172f, -0.01560722f, + -0.22736472f, 0.017364748f, 0.13406485f, 0.083726794f, + -0.037865132f, 0.10827699f, 0.04231441f, 0.094758458f, + 0.076657057f, -0.10460818f, 0.027540391f, 0.34951043f, + 0.081002317f, 0.023337549f, -0.77289504f, -0.018204033f, + 0.036314599f, 0.070004441f, 0.25850534f, -0.047433168f, + 0.21892013f, -0.076034084f, 0.10900235f, -0.088668168f, + -0.084144898f, -0.011063386f, -0.24813998f, 0.22751506f, + -0.025649348f, -0.0045100399f, -0.040295649f, 0.08595521f, + -0.044646624f, -0.21160898f, -0.030395094f, 0.32509497f, + 0.043840803f, -0.098930538f, -0.036965542f, 0.0082104858f, + -0.017174065f, 0.26351047f, -0.015270406f, -0.09968403f, + -0.0070594209f, 0.22834498f, -0.072397113f, -0.10042344f, + 0.16353551f, -0.037626442f, 0.01879864f, 0.017500378f, + 0.097312786f, 0.11981425f, 0.014950155f, -0.088604584f, + -0.031779706f, 0.037365671f, -0.06963598f, -0.18910055f, + -0.072154075f, -0.20342417f, -0.063336298f, -0.055499103f, + 0.18524408f, 0.058945775f, -0.050158586f, -0.085982844f, + -0.057376817f, -0.090443134f, 0.0061488734f, -0.16157722f, + -0.093810588f, -0.085545629f, 0.05292071f, -0.12632629f, + -0.039145384f, -0.06710536f, 0.16975993f, -0.041195497f, + 0.15825638f, -0.0018697381f, -0.023298215f, 0.16734025f, + -0.31542292f, 0.42225119f, -0.0090394821f, -0.21362227f, + -0.090790242f, -0.051304761f, 0.22900759f, 0.021941438f, + -0.13717729f, -0.020595843f, 0.036464848f, 0.10820865f, + -0.11310274f, 0.046835292f, 0.060677603f, -0.0096173845f, + -0.04827999f, -0.089964882f, 0.0044376599f, 0.048322819f, + 0.2313659f, -0.11031456f, -0.010921306f, 0.24259348f, + -0.081958644f, -0.049465876f, -0.10813262f, -0.092508033f, + 0.044890214f, -0.11316615f, 0.0078417026f, -0.025112495f, + -0.27764958f, -0.12885699f, -0.35588405f, 0.069161698f, + -0.031364005f, 0.0097236894f, -0.097590134f, -0.0030793308f, + 0.19942462f, -0.53106117f, -0.061811894f, -0.074709751f, + -0.012536597f, 0.046764739f, -0.096164845f, -0.010120493f, + -0.084641442f, 0.30392683f, 0.12810211f, 0.035102915f, + 0.049734548f, -0.32879511f, -0.20257786f, -0.088209182f, + -0.12541991f, -0.042502083f, -0.15056521f, 0.047802843f, + 0.3629531f, -0.010475839f, -0.17022026f, -0.072410986f, + -0.4681609f, -0.24273853f, -0.25900733f, 0.41549918f, + -0.0519787f, -0.038079798f, 0.020586638f, 0.015469811f, + -0.076480001f, -0.011961633f, 0.020602306f, -0.54765582f, + -0.062698372f, -0.007884304f, -0.059398882f, -0.19393586f, + -0.53439319f, -0.060203914f, -0.24008247f, -0.066298291f, + -0.049637794f, -0.49733782f, 0.030921163f, 0.32900888f, + -0.11244617f, -0.31931528f, 0.060086135f, 0.025395514f, + 0.051970243f, -0.030717231f, -0.026525961f, 0.0073161991f, + -0.050732899f, 0.37501824f, 0.3450765f, 0.16707556f, + 0.024318064f, 0.87052375f, -0.095742539f, 0.77288318f, + -2.0129595f, 0.34790504f, -0.090246134f, -0.040796932f, + 0.18682793f, -0.030539852f, -0.33063012f, -0.033042286f, + 0.01146379f, -1.055577f, -0.4114064f, -0.77088606f, + 0.0041856626f, 0.72542739f, -0.62560159f, 0.62843508f, + 0.50540817f, 0.0021249049f, -0.45207715f, -0.34849742f, + -0.27356565f, 0.0046593221f, -0.088462643f, 0.41286305f, + 1.0336329f, -0.18315999f, 0.02650599f, -0.39628729f, + -0.047516305f, 0.02201442f, -0.18486561f, -0.53564721f, + -0.00037500047f, -0.0856397f, 0.099730134f, 0.27591401f, + 0.0077144769f, -0.041627686f, -0.0029362498f, -1.698624f, + 0.76388031f, -0.089099862f, -0.75645339f, 0.056741219f, + -0.19619945f, -1.9563035f, -0.051049218f, -0.66052967f, + 0.2542218f, -1.1374893f, -0.050498948f, 0.00046270454f, + 0.074753053f, -0.02187394f, 0.0044436804f, 0.023139209f, + 0.018040633f, 0.14364232f, -0.45669016f, 0.13985355f, + 0.039049998f, -0.11682403f, -0.15702951f, -0.94701242f, + 0.13972205f, 0.26489666f, 0.00094605074f, -0.059432536f, + -0.18643393f, -0.1181033f, 0.48095354f, 0.089990087f, + 0.039628796f, 0.21624365f, -0.91402698f, 0.53461933f, + 0.00015342412f, -0.0012892089f, -1.4692036f, -0.62446088f, + 0.66839653f, 0.047211409f, -0.50209075f, 0.038288597f, + -0.29308659f, -0.018994771f, 0.049735259f, -0.038012426f, + -0.038337793f, 0.11224461f, -0.0057385992f, -0.63963389f, + -0.10758719f, -0.067535102f, 0.06911613f, -0.27782544f, + -0.020913769f, -0.052980892f, 0.11306033f, -0.065774776f, + -0.082978353f, 0.59874946f, -0.0011462538f, 0.072683692f, + -0.70922118f, 0.068600662f, 0.25460765f, 0.076583736f, + -0.064074486f, 0.01638856f, 0.011335819f, 1.0585479f, + -0.042705514f, 0.095850915f, -0.021242192f, -0.12575117f, + 0.11828812f, 0.020742331f, -0.064091042f, 0.018421318f, + -0.17538841f, -1.9078364f, 0.2520119f, 0.00027347499f, + 0.012718368f, -0.66081476f, -0.12796997f, 0.57111591f, + -0.82994664f, -0.066040844f, -0.073071629f, -0.027112789f, + -0.55886161f, 0.023803866f, -1.693957f, -0.697806f, + -0.034372233f, -0.32947388f, -0.80548376f, 0.48262906f, + -0.37353081f, -0.47247484f, -0.8460322f, -0.69173259f, + -3.1932073f, -0.085047655f, 0.02732604f, -0.40407073f, + 0.19736128f, -0.16752049f, -0.24090128f, 0.93863511f, + -2.6407249f, 0.032790925f, 0.27105871f, -0.35602584f, + 0.020012338f, -0.025864154f, -0.991615f, 0.53651804f, + -0.047756564f, -0.080835514f, 0.19914849f, 1.7429861f, + -0.10926858f, -1.9036418f, 0.32613736f, 1.0361547f, + -0.83383274f, -0.12923366f, -1.2568371f, -0.11294309f, + -0.032274608f, -0.73315305f, -0.021972872f, -0.3195256f, + -0.28909087f, -1.6460792f, -0.054445248f, -0.041602705f, + -0.23415759f, -0.10159008f, -0.12097356f, -0.20861158f, + -0.31602472f, -0.45255235f, -0.38534093f, -0.024596754f, + 0.0695583f, 0.32787052f, -0.038353987f, -0.16164628f, + 0.22468278f, -0.36571661f, 0.099357873f, -0.030340249f, + -0.04749155f, 0.012982677f, -0.43680114f, 0.057918638f, + -0.0092783971f, 0.16045794f, 0.3291944f, -0.22646695f, + 0.047449682f, 0.25913027f, -0.12820481f, -0.22461893f, + 0.62480384f, -0.038323764f, 0.19982654f, -0.95291901f, + -0.38110119f, -0.03580283f, -0.3251065f, 0.0042996672f, + -0.058186527f, -0.39392033f, -0.23878866f, -0.0020494978f, + -0.001652033f, -0.091874063f, -0.021227509f, -0.15120342f, + -0.0076455446f, -0.043528199f, 0.058884863f, -0.17672585f, + 0.065144703f, -0.13255624f, -0.0117376f, -0.17155375f, + -0.54205483f, -0.0039471518f, -0.028205395f, 0.050428424f, + -0.30095953f, -0.43076101f, -0.02993462f, -0.51196873f, + -0.52477545f, 0.23885697f, -0.079543218f, -0.04915892f, + -0.031493682f, 0.0028147993f, -0.01989145f, 0.031096086f, + -0.21482223f, 0.054837842f, 0.11475061f, -0.047737118f, + -0.087713927f, -0.10052488f, -0.10079898f, 0.43434569f, + -0.016675575f, 0.11601396f, -0.06429968f, -0.028211048f, + 0.11977354f, -0.11619066f, 0.041977085f, 0.27721193f, + 0.0021605156f, 0.1829733f, -0.3383702f, -2.2176487f, + -0.047562193f, -0.55354446f, 1.0036484f, 0.33247092f, + -0.33223236f, -0.0407576f, -0.17456333f, 0.22844189f, + 0.46769524f, 0.042027067f, -0.29497287f, 0.45029709f, + 1.5748545f, 0.096891783f, -0.18741937f, -0.068723328f, + 0.01319366f, 0.041465562f, 0.329391f, 0.68584722f, + 0.033560935f, -0.1083362f, -0.10815234f, -0.5491268f, + -0.045054395f, -0.23545341f, 0.073963486f, -1.2817867f, + 0.0030854694f, -0.11600973f, -0.44723329f, -0.070397086f, + -0.19580497f, -0.014461758f, 0.0047667483f, 0.16112775f, + 0.0058026821f, -0.090331152f, 0.026509682f, 0.018333228f, + -0.32433081f, 0.043640472f, -0.061345506f, 0.0052556358f, + 0.52142107f, -0.4303093f, 0.4686223f, 0.04444582f, + -0.048207659f, -2.3493745f, -0.16012354f, 0.47692969f, + 0.038666118f, -0.50188547f, -0.028847137f, -0.010875709f, + 0.41878644f, -0.031476773f, 0.38316622f, -0.25006613f, + -0.12578039f, 0.13317589f, 0.75102395f, 1.1495755f, + 0.21576354f, -1.3240894f, -0.40839544f, 0.18184972f, + -0.80903429f, -0.025414791f, 0.75426137f, -0.0924422f, + 0.62731874f, 0.024552086f, 0.15862325f, -0.068936035f, + -2.3772006f, -0.2259592f, 0.072961129f, -0.019764239f, + -0.028541766f, -0.079816967f, -0.23483531f, -2.3900845f, + -0.062977478f, 0.044578493f, -0.032907572f, 0.1460015f, + 0.024026087f, -0.0029204346f, -0.044638515f, 1.0686082f, + -0.20575808f, -0.20594732f, -1.4998273f, -0.020687517f, + 0.13139094f, -0.17539409f, 0.032457549f, -0.46297622f, + -0.13072491f, -0.31551078f, 0.057754494f, -0.003602912f, + -0.11342163f, 0.020498352f, -0.025439989f, 0.034964535f, + -0.097776547f, -0.059152097f, -0.34461462f, 0.043653466f, + -0.10585701f, -0.26356852f, 0.044233333f, -0.36721218f, + -0.27543133f, 0.45965084f, -0.039496303f, -0.028239843f, + 0.096965879f, -0.064953119f, 0.20326263f, 0.072733626f, + -0.0281683f, 0.16889112f, -1.1034729f, -0.57731616f, + 0.022493631f, -0.42891037f, -1.4172704f, 0.0084807463f, + 0.57975018f, 0.02512021f, -0.25585854f, 0.1969295f, + -0.30648959f, -0.032289736f, -0.150446f, -0.077560149f, + -0.21674941f, 0.26450807f, 0.18573941f, -0.24146995f, + -0.13505255f, -0.097152777f, 0.33801928f, -0.31336263f, + 0.038324311f, -0.065170817f, 0.056383047f, 0.3747178f, + 0.0057053086f, -0.014575501f, -0.032487951f, -0.1162124f, + 0.0012562481f, -0.0011336708f, -0.30499676f, -0.085113026f, + 0.10592906f, -0.11736916f, 0.035102081f, 0.54243964f, + -0.13060477f, 0.2690855f, 0.045863971f, -0.027567951f, + -0.20954585f, -0.13868412f, -0.016137129f, 0.015684139f, + -0.46478659f, 0.02368441f, 0.31622681f, 0.12360551f, + -0.049127907f, -0.11260942f, 0.0083068535f, -0.031178847f, + -0.11974818f, -0.27448201f, -0.058049127f, -0.083664924f, + -0.38620213f, -0.067029648f, -1.0492098f, 0.17186916f, + -0.016859202f, -0.23186027f, -0.11473781f, -0.20848495f, + 0.24660927f, -0.41413665f, 0.15074383f, -0.76866168f, + -0.56732118f, 0.0088170413f, 0.10433224f, -0.32958865f, + 0.31685618f, -0.0026262198f, 0.016165303f, 0.18612203f, + -0.17776531f, -0.2350309f, 0.35561255f, -0.53082812f, + 0.029543655f, -0.039602939f, -0.14066544f, 0.58315104f, + 0.019536057f, -0.071837246f, -0.051003616f, 0.6809724f, + -0.11647929f, -0.39258236f, -0.027910374f, 1.0420587f, + -0.43323717f, 0.019223176f, -0.23574097f, -0.019103335f, + -0.23384807f, -0.36510041f, -0.014150832f, 0.18630995f, + 0.1924234f, -0.2225462f, -0.028001226f, -0.033172719f, + -0.097241379f, -0.095451578f, -0.085509315f, 0.030159028f, + -0.045617051f, 0.41034627f, 0.35537934f, 0.22830567f, + -0.0044499012f, 0.14056647f, -0.051914427f, 0.29689029f, + 0.011646433f, 0.2593942f, -0.00095601694f, -0.095604084f, + -0.19455598f, -0.091596305f, 0.24630988f, 0.086595252f, + -0.059063569f, -0.040631838f, -0.077811353f, 0.050846428f, + 0.18067083f, -0.18455467f, 0.099640422f, 0.17519361f, + 0.28845125f, -0.095614828f, -0.032885648f, -0.062060833f, + 0.26140189f, 0.071066692f, 0.25006425f, 0.24454835f, + -0.1192331f, -0.31198785f, -0.029257491f, 0.26575568f, + -0.12812491f, -0.025063302f, 0.020535395f, 0.077427946f, + -0.070162408f, -0.064889356f, -0.15152004f, 0.31044021f, + 0.052010443f, 0.35050327f, -0.14323968f, 0.033596668f, + 0.11180552f, -0.1351058f, -0.15983157f, -0.03987693f, + 0.28991893f, 0.098652378f, 0.040144108f, -0.16215201f, + 0.029641915f, 0.23762618f, -0.070539944f, -0.13749498f, + -0.082575157f, -0.087552004f, 0.021358073f, 0.022796378f, + 0.17919576f, -0.056659002f, 0.18696246f, 0.091873959f, + -0.10023116f, -0.3085092f, -0.10557247f, 0.096838385f, + 0.083127074f, -0.1414234f, -0.098285861f, -0.08364711f, + 0.29257461f, -0.11655258f, -0.2369673f, -0.047624879f, + 0.017584609f, -0.1863192f, -0.23011638f, -0.32226896f, + 0.18533379f, -0.4734703f, -0.19104593f, 0.68077797f, + 0.14739768f, -0.067276724f, -0.22333388f, 0.17049231f, + -0.13028482f, -0.0042055482f, -0.029490629f, -0.040907707f, + -0.2527968f, 0.36223212f, 0.31130016f, 0.19137132f, + -0.0014885343f, -0.058641855f, 0.23752739f, 0.11078342f, + 0.039471369f, 0.059731863f, -0.0086228037f, 0.52895784f, + 0.0058839042f, -0.067695178f, 0.060304485f, 0.1051192f, + 0.4722358f, -0.098167025f, -0.1464496f, -0.091084398f, + 0.12805003f, -0.33991489f, -0.12881865f, 0.051598124f, + -0.13088216f, -0.37161711f, -0.022592921f, -0.068354607f, + -0.22366224f, 0.025142102f, 0.015230242f, -0.003814412f, + -0.0084828157f, -0.14919753f, -0.3466709f, -0.064043276f, + -0.051554855f, -1.6461103f, -0.065022051f, -1.042291f, + 0.34025034f, 0.36813581f, 0.064798467f, 0.03335413f, + 0.38685983f, -0.023667581f, 0.51155704f, -0.0066316347f, + -0.089922443f, 0.085975163f, -1.1881276f, -0.063910939f, + 0.003408405f, -1.5371192f, -2.0806849f, -0.31974488f, + 0.023933761f, 0.062686861f, -0.086199574f, 0.26101974f, + 0.04681835f, 0.0024806266f, 0.070061468f, -0.21878955f, + -0.80157983f, 0.023736833f, -0.14357576f, -0.60660601f, + -0.0031502508f, -0.083492443f, 0.36488426f, -0.46070001f, + 0.0080391951f, -0.0050026313f, 0.052004401f, 0.12832914f, + -0.057133563f, 0.41865686f, 0.0084516779f, 0.52216589f, + -0.50953007f, -0.08446715f, -0.61307335f, -0.081608631f, + -0.081931271f, -0.06539584f, 0.057032648f, 1.3487234f, + -0.13201082f, -1.0176331f, -0.038842704f, -0.020388484f, + -0.0032316099f, -0.063815348f, -0.098623693f, 0.0072527132f, + 0.059788547f, -0.15061857f, 0.24612196f, 0.04527146f, + -0.010297108f, 0.0048127593f, -0.14109147f, -0.055245642f, + -0.30292317f, 0.042035807f, -0.017962143f, -0.058200121f, + -0.12078246f, -0.059326995f, -0.13009509f, 0.13705632f, + -0.052283604f, -0.0052124155f, -0.26235899f, 0.034393284f, + 0.011700409f, 0.70913213f, 0.057933979f, 0.1455097f, + -0.45947376f, -0.059887167f, 0.3302556f, 0.39636183f, + -0.042983525f, -0.0014500226f, 0.35390472f, -0.12617283f, + 0.23528014f, 0.15721165f, 0.31602913f, -0.15132134f, + -0.092654765f, 0.019157961f, 0.042842511f, -0.17344218f, + 0.026395697f, -0.0031809672f, 0.060007825f, -0.0056762462f, + -0.045472115f, 0.031553898f, -0.020400977f, 0.18480359f, + -0.40697768f, -0.13244852f, -0.19021685f, -0.0010242718f, + -0.015849726f, -0.10706361f, -0.094462469f, 0.3584201f, + -0.020469001f, 0.36290783f, 0.057740793f, -0.041632451f, + 0.26713607f, 0.015490503f, 0.025941884f, -0.015062035f, + 0.091620132f, -0.44602996f, 0.021811485f, 0.083092414f, + -0.055999342f, -0.049711686f, -0.043742139f, 0.089041494f, + -0.15166433f, 0.23901734f, 0.026039721f, -0.074615538f, + -0.40048742f, 0.025225548f, 0.066955924f, 0.079507701f, + -0.021655085f, 0.222066f, -0.059258521f, -0.049118966f, + 0.022276685f, 0.076999299f, -0.067305312f, -0.012381352f, + -0.0060015493f, -0.11217141f, -0.24467985f, 0.08212962f, + -0.14494757f, 0.14235123f, 0.12239629f, -0.11673485f, + 0.026542928f, 0.28206837f, 0.13586983f, 0.1265935f, + -0.094175249f, 0.013140218f, 0.24470159f, -0.088335477f, + -0.034965236f, -0.10715673f, -0.0042191222f, 0.42470759f, + 0.015530446f, 0.35020176f, 0.098983951f, -0.21678498f, + -0.13483946f, -0.01576297f, -0.13490994f, -0.049437806f, + 0.24256983f, -0.11817086f, -0.048555914f, 0.1156496f, + 0.1006969f, 0.15012346f, -0.057806067f, -0.069226407f, + -0.07261537f, -0.063675843f, -0.10466486f, 0.035625845f, + 0.012572519f, -0.043693315f, -0.0036542527f, 0.064127371f, + 0.072270244f, -0.002681206f, 0.048817758f, -0.072335258f, + 0.050280791f, -0.051245052f, -0.029005988f, 0.019902311f, + -0.028145008f, -0.077797092f, -0.019759361f, 0.072298452f, + -0.0085604042f, -0.022580469f, -0.058834665f, 0.054325171f, + -0.033076558f, 0.073132575f, -0.018469343f, 0.05270664f, + 0.0097957263f, -0.0021570546f, -0.075999513f, -0.0062440163f, + 0.098404288f, -0.0022209974f, -0.026229097f, 0.032893404f, + 0.033190198f, -0.013973089f, 0.042962443f, 0.032291815f, + -0.055599488f, -0.036106583f, -0.072941996f, 0.0023084972f, + -0.015159621f, -0.062392f, 0.035109457f, -0.038334478f, + 0.062213358f, -0.074689671f, 0.065188341f, 0.083304092f, + 0.08672183f, -0.075779893f, -0.054208644f, 0.072412744f, + 0.015067236f, -0.030709416f, -0.038321406f, 0.0042099389f, + 0.050918534f, -0.033767395f, 0.072438054f, 0.064354949f, + -0.016385904f, -0.086187668f, 0.01715501f, -0.0016325752f, + -0.45565519f, -0.018101115f, -0.38174483f, -0.096979111f, + 0.037035216f, -0.51718795f, -0.074339591f, -0.14000441f, + 0.19470824f, -0.43563524f, -0.0046447595f, 0.0042462768f, + -0.5749467f, -0.0064097773f, -0.28276929f, 0.033691298f, + 0.028369531f, 0.32806343f, -0.50263095f, -1.03026f, + -0.23928811f, 0.47563928f, 0.60787433f, -0.30668548f, + 0.46012482f, -0.0026753999f, -0.54885685f, -0.36480755f, + -0.50369906f, -0.0016643907f, -0.15592429f, 0.92904961f, + -0.50126904f, -0.71102184f, 0.41470507f, -0.9409585f, + 0.00053046434f, 0.031909239f, 0.20584366f, -0.50340044f, + -0.10170645f, 0.068869829f, 0.10765173f, -0.12459197f, + -0.081575334f, -0.34282643f, 0.034835689f, -0.051406361f, + -0.8188532f, 0.015153318f, -0.13804097f, -0.024275173f, + -0.36607319f, -0.26668268f, 0.043312121f, -0.86798388f, + 0.049147632f, 0.022575593f, 0.00013851636f, 0.0022377118f, + -0.18028812f, -0.081064261f, -0.060598198f, -0.006909918f, + 0.018759813f, 0.18504961f, -0.44951311f, 0.13101092f, + -0.088397235f, -0.70993185f, -0.097802028f, 0.25931001f, + -0.25003684f, 0.20206068f, -0.024655458f, -0.13181688f, + 0.13479328f, -0.087849215f, -0.88545692f, 0.050658107f, + 0.00030668065f, -1.5195421f, -1.2567849f, -2.1868272f, + 0.036963448f, 0.7036283f, -1.836673f, -0.00097011641f, + 0.63018256f, -0.045486555f, -0.30664888f, 0.7328968f, + 0.11160442f, 0.0059228479f, -0.11562072f, -0.50984305f, + 1.9041864f, -0.10937262f, 0.22848071f, 0.12049236f, + -0.00088494684f, -0.0038779944f, -0.0097684087f, 0.49663955f, + -0.071631573f, 0.015423962f, -0.011511103f, 0.1236925f, + 0.039122216f, 0.19529611f, 0.013039587f, -1.2561309f, + -0.34951282f, -0.15305248f, 0.87400872f, -0.072706312f, + 0.089121997f, -1.7306461f, 0.010762163f, 0.78958499f, + 0.048582908f, -1.9788998f, 0.016937237f, -0.025513615f, + -0.099000975f, -0.036225185f, -0.076724648f, 0.026714088f, + 0.1649144f, 0.23489761f, -0.87671381f, -0.046122432f, + -0.051434908f, -2.0110054f, 0.0065313615f, -0.41467503f, + -0.45453116f, -0.59079862f, 0.026935091f, 0.033036619f, + -0.049319468f, 0.026523186f, 0.03625061f, -0.066432178f, + -0.005325546f, -0.87028438f, 0.36593664f, 0.87334609f, + -0.10873202f, 0.54806083f, -0.87650651f, -0.10845187f, + -0.4161225f, 0.027495202f, 0.34200329f, 0.1089579f, + 0.050370712f, 0.025081305f, 0.096583486f, -0.19094084f, + -1.0967813f, -0.037905958f, 0.20550638f, -0.0083111459f, + 0.028583316f, 0.0049249525f, -0.091418631f, 0.44727081f, + -0.079395264f, -0.037027217f, 0.10171039f, -0.11474586f, + -0.051493578f, -0.010994282f, -0.033353813f, 0.69848078f, + -0.50306207f, -0.068288811f, -0.28694025f, -0.025993384f, + 0.02725541f, -2.3143594f, -0.0033435489f, 0.034062229f, + -0.15769368f, -2.2523789f, -0.019149426f, 0.019336116f, + 0.012806554f, -0.1317575f, 0.026083378f, 0.02160394f, + 0.57307303f, 0.18386364f, 0.030994257f, 0.026164154f, + 0.049735237f, -0.10235039f, -0.12685217f, 1.1914035f, + 0.37165421f, 0.319507f, 0.064071186f, 0.032565087f, + -0.31004837f, -0.077716917f, -0.18167648f, 0.086727984f, + -0.11092266f, 0.16713946f, 0.080626555f, 0.044975806f, + 0.094379552f, -0.080637105f, 0.024303559f, -0.50281459f, + -0.23155364f, -0.036739603f, -0.092804f, 0.50863326f, + -0.30545413f, -0.042494323f, -0.025823316f, 0.11648819f, + -0.031365741f, 0.12277494f, 0.26800728f, 0.27637908f, + 0.051867418f, -0.048609443f, 0.30295044f, -0.078269228f, + 0.02119714f, -0.050554648f, -0.067948565f, -0.40299687f, + 0.071630694f, 0.83264965f, 0.037741411f, -0.060523149f, + 0.26294428f, -0.081372999f, -0.2515009f, -0.032259505f, + -0.16885974f, 0.072732694f, 0.0072755045f, -0.086291276f, + -0.024101481f, -0.08015909f, 0.044739831f, -0.051693622f, + -0.077790037f, 0.061050251f, 0.057649616f, -0.027631443f, + -0.14357851f, -0.045165349f, -0.23726726f, -0.038312044f, + -0.058574993f, 0.061210167f, -0.10418124f, 0.021001635f, + -1.6640639f, 0.1576463f, -0.016591389f, -0.061151449f, + -0.26695481f, -0.038848314f, 0.313995f, -0.0468674f, + -0.00078586891f, -0.023515156f, -0.10872835f, -0.071266927f, + -0.071049355f, 0.10634971f, 0.0057518347f, -0.09999299f, + 0.026152613f, -0.0097026592f, -0.49693775f, 0.05103917f, + -0.4102321f, -0.34567899f, 0.030329725f, -0.14376371f, + 0.0078532947f, -0.39641389f, 0.0084525207f, 0.052139949f, + 0.021007234f, -0.10599037f, 0.15092663f, -0.04143228f, + -0.04742628f, 0.015835224f, -0.1720899f, 0.13246122f, + -0.0226498f, 0.031189084f, -0.44807583f, -0.12373329f, + -0.33224815f, -0.041281391f, -0.0099021196f, -0.11953203f, + 0.073111169f, -0.012500219f, 0.055841159f, 0.14163066f, + -0.069689952f, 0.051780645f, -0.089367874f, 0.039963353f, + 0.16074111f, -0.069661967f, 0.016675564f, -4.6848288f, + 0.19334602f, 0.1556744f, -0.098234236f, -0.0017722124f, + -0.021866919f, -0.16887783f, -0.015865963f, 0.33617467f, + 0.14055642f, -0.25025398f, -0.062106106f, 0.045876559f, + -0.18961951f, -0.0013499622f, -0.1777025f, -0.036851149f, + -0.05187723f, -0.1304349f, 0.4855018f, -0.14576426f, + 0.057168193f, 0.037989266f, -0.08324457f, 0.18829319f, + 0.048460525f, 0.052739646f, -0.43360302f, -0.18608667f, + -0.2951051f, -0.019280048f, -0.73256171f, 0.32569844f, + -0.048777334f, 0.18388988f, -0.017798331f, 0.15993437f, + -0.02859229f, -0.037093975f, 0.29408985f, 0.026686097f, + -0.0048854118f, -0.028793f, -0.053112399f, 0.16889371f, + 0.078784473f, -0.035839591f, -0.049728427f, -0.23653457f, + 0.26128584f, -0.10865746f, 0.10211634f, -0.069192775f, + 0.035490684f, 0.033722091f, -0.0096259722f, -0.33964238f, + -0.067858785f, -0.16700102f, 0.069929056f, 0.04795951f, + -0.70292485f, -0.085098341f, -0.11157663f, -0.008953589f, + -0.0055971821f, -0.33199701f, 0.31665939f, -0.09141735f, + -0.11419336f, 1.0993307f, -0.11483682f, -0.30305517f, + 0.26352113f, 0.64817202f, -0.081054918f, -0.030197257f, + -0.026262838f, 0.018340882f, 0.56625599f, -0.1336136f, + -0.040635079f, 0.85398149f, 0.19054914f, -0.098804928f, + -0.062327128f, -4.0728307f, 1.2295185f, 0.01146898f, + -0.09432672f, -0.054986089f, 0.38651606f, 0.012013177f, + 0.23637456f, -0.018734081f, 0.15692076f, -0.2007167f, + -0.47731158f, 0.45348462f, -0.59965384f, 0.24170934f, + 0.01757836f, -0.020309774f, -0.45416212f, -0.65731019f, + -0.0023793662f, 0.020002963f, -0.26778352f, -0.36386466f, + -0.0093631791f, 0.364656f, -0.01478583f, 0.6279251f, + 0.51214635f, 0.060328808f, -0.28996101f, -0.067656957f, + 0.072487175f, 0.65367693f, -0.042664539f, 0.40535581f, + -0.047671389f, 1.2457716f, 0.037410371f, -0.099525735f, + 0.25023609f, -0.049945936f, -0.053911909f, -0.0083802175f, + 0.019972358f, 0.027749544f, 0.32287729f, 0.098161086f, + -0.064183936f, -0.038548667f, -0.060456581f, 0.61687195f, + -0.37718335f, -0.037414018f, -0.085521974f, -0.088919751f, + 0.68999487f, -0.0048560435f, -0.1711864f, 0.22912604f, + -0.037066583f, -0.038215432f, -0.2487935f, 0.082185268f, + -0.033191577f, -0.1239999f, -0.071293525f, -0.19418992f, + -0.1248919f, -0.062240236f, 0.37138271f, -0.34601206f, + -0.41187596f, 0.065085202f, 0.093426906f, -0.21774687f, + -0.037777346f, -0.043011557f, 0.52909863f, 0.56612122f, + 0.061343756f, -0.12814251f, -0.50152296f, -0.026154628f, + 0.021845313f, -0.0060316194f, 0.38748297f, 0.085889995f, + -0.059028011f, -0.18285847f, 0.016289469f, 0.37771469f, + -0.16293114f, -0.091988765f, -0.0042371331f, -0.016607368f, + 0.13334541f, -0.023387196f, -0.063812554f, 0.17263447f, + 0.080235831f, -0.10375634f, 0.02806253f, 0.047066875f, + 0.57058465f, -0.091420263f, 0.028045367f, 0.017013578f, + 0.51770729f, -0.16860725f, 0.37569794f, -0.0096301418f, + -0.067345299f, -1.4036857f, 0.046390925f, -0.32566071f, + 0.20839158f, -0.36810955f, -0.031288113f, -0.039412111f, + 0.32468638f, -0.05655501f, 0.33624542f, -0.18567549f, + -0.094766043f, 0.45254403f, 0.75026047f, 1.4345117f, + 0.012049039f, -0.85826635f, -0.66195959f, -0.14415415f, + -0.22189634f, 0.0015239684f, 0.32996467f, 0.061154407f, + 0.1901222f, 0.011408065f, 0.075011671f, -0.082477123f, + -1.5484583f, -0.1257917f, -0.12741537f, -0.25905782f, + 0.02507803f, -0.14115192f, -0.12542982f, -1.3747127f, + -0.11013876f, -0.035564464f, 0.010519293f, -0.18429498f, + -0.062635928f, 0.59706378f, -0.029590173f, 1.2927582f, + -0.11539645f, -0.059126351f, -0.38801882f, -0.033547301f, + 0.051839415f, 0.26035506f, -0.11098221f, 0.10812298f, + -0.1360231f, 0.47971174f, 0.006814315f, 0.025020903f, + 0.025294054f, 0.08723595f, 0.063467801f, 0.0060978723f, + 0.016792119f, -0.32799721f, -0.59595072f, -0.0084566846f, + -0.085017517f, 0.059309024f, 0.031896047f, 0.14116919f, + -0.23818594f, -0.020134771f, 0.044858567f, -0.0038069775f, + -0.30021554f, 0.0048541315f, -0.1588583f, 0.034516215f, + -0.050249454f, -0.023209821f, -0.16735421f, -0.020802096f, + -0.049127579f, -0.20180602f, -0.07516297f, -0.04915471f, + 0.11887397f, -0.081424117f, -0.18212174f, -0.021895437f, + -0.0095743146f, 0.0006536544f, -0.099462375f, -0.43830836f, + -0.25326443f, 0.58973926f, -0.1002318f, -0.097533144f, + 0.050253425f, -0.01852647f, -0.4798778f, -0.3139782f, + 0.0080279978f, -0.0093488554f, 0.10016383f, -0.049519017f, + -0.07127206f, -0.27934149f, -0.041944075f, -0.35838196f, + -0.021232007f, -0.0036943688f, -0.0012797451f, 0.06774687f, + -0.20856597f, -0.27828747f, -0.079258218f, -0.28661051f, + 0.00086653559f, -0.16315345f, -0.0038571167f, -0.063657388f, + -0.081674196f, 0.063582398f, -0.085161202f, -0.0146929f, + 0.051849592f, -0.23227842f, -0.15641464f, 0.03575734f, + -0.080868773f, 0.88866079f, -0.095695831f, -0.33786878f, + 0.35510474f, -0.15253709f, 0.062780939f, -0.060144186f, + 0.54409128f, -0.094633169f, -0.38871333f, 0.073875472f, + 0.029189857f, 0.40085343f, -0.42909905f, -0.13868162f, + 0.026677901f, -1.5836704f, -1.4468882f, -0.15505806f, + 0.084788337f, -0.10057171f, -0.14399818f, 0.41823846f, + -0.24611013f, 0.0052842642f, -0.054426864f, -0.31932124f, + -0.2058716f, 0.13644008f, -0.1688889f, -0.15269582f, + -0.0039672568f, -0.012738186f, 0.1611324f, -0.065557361f, + -0.074028403f, -0.11739292f, 0.023840938f, 0.3090333f, + -0.099501856f, 0.29807648f, 0.087562814f, -0.09352158f, + 0.57741445f, -0.08294224f, 0.21713026f, 0.01814195f, + -0.037078999f, -0.09747915f, -0.084636062f, 0.37824842f, + 0.038426917f, -0.32507238f, -0.080613136f, -0.070762895f, + -0.10339389f, -0.026352739f, 0.043337692f, -0.009955111f, + -0.084156349f, -0.077233098f, 0.039549042f, 0.080921032f, + 0.054229494f, -0.028676664f, -0.050160114f, 0.08983431f, + -0.063884072f, 0.025528355f, 0.032847218f, 0.054857146f, + 0.081962734f, 0.043272294f, 0.084598638f, 0.020398738f, + -0.059901796f, 0.011237032f, -0.047519352f, -0.034422755f, + -0.00032960597f, 0.078044318f, 0.086971954f, 0.033516362f, + 0.050747965f, 0.044480886f, -0.017300522f, 0.054683834f, + 0.0092455596f, 0.033120163f, -0.00043995393f, -0.065498739f, + -0.024881737f, -0.073182762f, 0.027378434f, 0.0011220793f, + 0.062088575f, 0.028820025f, -0.0020078355f, 0.048688505f, + 0.0086601973f, -0.054930229f, -0.018218165f, 0.020208878f, + -0.038067486f, 0.047839195f, -0.014852329f, 0.022775885f, + 0.014638876f, 0.053766459f, -0.039368164f, -0.021898638f, + 0.079784781f, 0.038508136f, 0.07589522f, 0.021621414f, + -0.064064182f, 0.068424456f, -0.039913204f, -0.026170243f, + -0.015727254f, -0.061927281f, 0.074160099f, 0.071592994f, + -0.29251891f, -0.092081256f, 0.080514573f, -0.055245556f, + -0.090790853f, -0.10561142f, -0.17423865f, 0.30871472f, + -1.0264025f, -0.72010303f, -0.087959386f, 0.0051258947f, + -0.36932328f, -0.027786484f, 0.50200766f, 0.062218387f, + 0.028110888f, 0.4301087f, 0.062286012f, 0.024989348f, + 0.17814907f, -0.029878076f, 0.16978914f, 0.33501858f, + 0.34539214f, -0.10895258f, 0.6234318f, -0.85372078f, + -0.24768494f, -0.03537197f, -0.33118844f, 0.2568498f, + 0.070175521f, 0.3086749f, 0.18721701f, -0.39563188f, + -0.064260058f, 0.0028955094f, 0.34847909f, 0.023994898f, + -0.044087399f, -0.091662355f, -0.13131915f, 0.51900584f, + -0.018558688f, 0.4340159f, -0.3805494f, -0.15995836f, + 0.0031874399f, -0.095885821f, -0.010745916f, -0.023926761f, + 0.16632351f, 0.0099713933f, 0.0035349026f, -0.13048004f, + 0.12161538f, -0.14608973f, -0.027223494f, -0.0090951053f, + -0.18924041f, -0.0094033927f, 0.022658916f, 0.12449116f, + 0.0038125187f, -0.079308778f, 0.2684603f, 0.037285324f, + 0.049825091f, -0.60369772f, -0.1314092f, 0.045162812f, + -0.51904565f, 0.39359173f, 0.046317991f, -0.05520061f, + 0.072550952f, -0.068185017f, 0.070175514f, 0.080962881f, + -0.016326262f, -0.11461738f, -0.17298838f, -0.17490005f, + 0.072959229f, 0.040168349f, -0.12521972f, 0.15236825f, + -0.61072707f, -0.13227405f, -0.30803815f, 0.19029729f, + 0.52070606f, 0.014809801f, 0.0054789134f, 0.19035031f, + 0.27032876f, -0.15464504f, -0.15672697f, -0.37923494f, + -0.081257083f, -0.063600369f, 0.023666173f, 0.54893273f, + 0.034883332f, -0.015331382f, -0.0086950334f, -0.13872086f, + -0.010414696f, -0.13621061f, -0.020117654f, -0.26741242f, + -0.14369567f, 0.058574758f, 0.10221387f, 0.045116495f, + -0.23087464f, -0.010746231f, -0.09207458f, 0.43460619f, + 0.21566422f, 0.036061354f, -0.080614544f, -0.11030354f, + -0.066116102f, -0.11324302f, -0.033355478f, 0.040416781f, + 0.23332848f, 0.015652154f, 0.5352875f, 0.14367223f, + -0.090198576f, -0.13684015f, 0.024549266f, 0.42413229f, + 0.21364002f, 0.2939035f, -0.038689706f, 0.0067280931f, + 0.45229149f, -0.089154102f, -0.16882813f, -0.015672764f, + -0.037488475f, -0.025477674f, -0.38539001f, -0.045419596f, + 0.097335815f, 0.19448188f, 0.22488768f, 0.20476626f, + -0.42137772f, 0.051661503f, 0.22321108f, 0.38568428f, + -0.19037288f, 0.004149816f, -0.0051682508f, -0.010659511f, + -0.22465913f, 0.25756124f, 0.49252462f, 0.3685225f, + 0.038789593f, -0.0057527721f, 0.16413411f, -0.30378968f, + -0.11378701f, -0.062124837f, -0.0092479475f, 0.68139452f, + -0.0058288416f, -0.18974721f, -0.073010303f, -0.24767102f, + 0.74749821f, -0.054005224f, -0.27484772f, -0.06772051f, + 0.25968799f, -0.31148919f, 0.056466248f, -0.29095891f, + -0.21050519f, 0.24051785f, -0.013345025f, -0.068468772f, + -0.051269118f, -0.062993497f, 0.024118742f, -0.048320927f, + 0.2322372f, 0.76383394f, -1.1223019f, -0.099851437f, + -0.049968749f, -0.28473893f, -0.13243482f, 0.92270994f, + 0.31419387f, 0.39462399f, -0.093465857f, -0.13037245f, + -0.10422702f, 0.0066663343f, -0.70397991f, 0.2160098f, + -0.13407837f, -0.92615378f, -3.3946073f, -0.64970493f, + -0.43111748f, -0.75532073f, -0.72229236f, -0.8286854f, + -0.15976906f, -0.049117692f, -0.30710545f, -0.11182546f, + -0.070267327f, -0.15796f, -0.22818875f, -0.71293175f, + -1.767676f, -0.44632101f, -0.027801365f, -0.36940181f, + 0.030136632f, -0.092265062f, -1.6036172f, -0.65693432f, + -0.099117398f, -0.04057245f, 0.019757748f, -0.61568487f, + -0.08269269f, 1.0832056f, -0.083232284f, -0.74348295f, + -0.88790143f, -0.013590144f, -0.97294652f, -0.051689286f, + 0.45725021f, -0.66841674f, -0.0098184934f, -2.4497719f, + -0.12165684f, -0.81798548f, -0.11010237f, -0.026729738f, + -0.8907029f, 0.0067331255f, -0.11166732f, -0.076974273f, + -0.05933211f, -0.31460729f, -0.51003867f, -0.27598163f, + 0.034988482f, 0.16835648f, 0.017032307f, -0.079180352f, + 0.22894071f, -0.050570574f, -0.11232803f, -0.02959758f, + -0.46730608f, -0.045440562f, 0.25620937f, 0.18214104f, + -0.019522524f, 0.45225927f, 0.1791708f, -0.25357369f, + -0.2452153f, 0.24183041f, 0.16853772f, 0.31072882f, + -0.16934215f, -0.083371505f, -0.22175349f, 0.18350793f, + -0.87834048f, 0.039204076f, -0.28606606f, -0.70449382f, + 0.44820127f, -0.027161766f, 0.16386746f, 0.57533395f, + -0.06268727f, -0.041156791f, 0.22931442f, -0.28084469f, + 0.035198048f, -0.069726154f, 0.048464619f, -0.22704007f, + 0.0055079018f, 0.28333467f, 0.02059759f, 0.35278407f, + -0.4084639f, 0.047461614f, -0.10277513f, 0.045285188f, + -0.027175512f, -0.025579467f, -0.10027496f, 0.62878704f, + -0.049176332f, 0.35446164f, -0.051825747f, -0.011313948f, + -0.16044648f, 0.0083927531f, 0.016189361f, -0.046802826f, + -0.054726537f, 0.15780437f, -0.26316869f, 0.15517597f, + 0.01722943f, -0.19120158f, -0.053452048f, 0.04591497f, + 0.58688688f, -0.1538913f, -0.032128505f, -0.10273634f, + 0.069977082f, -0.047744796f, 0.30753413f, 0.025897395f, + 0.046558045f, 0.16767628f, 0.17324471f, -0.060277499f, + 0.085942484f, 0.28325486f, 0.18817776f, 0.22310731f, + -0.1452266f, 0.046667967f, 0.30339625f, 0.32465491f, + -0.40638912f, 0.0043262015f, 0.062344577f, -0.024103725f, + -0.12093115f, 0.1115658f, -0.053475723f, 0.72669351f, + -0.074237175f, -0.076053776f, 0.14781231f, -0.51465064f, + -0.028115777f, -0.012449532f, -0.021762103f, 0.12203516f, + 0.006270966f, -0.026557308f, -0.023128258f, -0.028351581f, + 0.048368353f, -0.071874239f, 0.014924669f, 0.063840762f, + 0.21843731f, -0.3921051f, -0.072892517f, 0.082392082f, + 0.05138123f, -0.03189794f, -0.083176367f, -0.14478798f, + -0.10235992f, -0.062090281f, -0.0060063945f, 0.042073786f, + 0.19809513f, 0.60488838f, 0.040504511f, 0.10124884f, + 0.026515109f, -0.10879438f, 0.047002938f, -0.15623885f, + -0.40849853f, -0.32022455f, -0.04404451f, -0.045754276f, + -0.2852352f, -0.1171596f, 0.1395161f, 0.33504716f, + 0.030530592f, 0.38973022f, 0.18968262f, 0.18081388f, + 0.07395716f, 0.41174901f, 0.27076772f, 0.14418961f, + -0.048210561f, 0.052168373f, 0.049107343f, -0.13171871f, + 0.012193359f, -0.091313578f, 0.22781552f, 0.25653544f, + -0.17562778f, 0.38402963f, 0.057123128f, 0.42752853f, + -0.0056222444f, -0.02217745f, 0.24723472f, -0.11113603f, + -0.11210155f, -0.11024981f, 0.52454424f, 0.3699773f, + -0.11768199f, -0.17044221f, 0.14058784f, -0.17493638f, + -0.22959536f, 0.073878728f, 0.0042469264f, -0.12940601f, + 0.47796392f, 0.061177909f, -0.058356088f, 0.11153516f, + 0.1507522f, -0.23192056f, -0.049840782f, -0.026150368f, + -0.1254259f, -0.024509417f, 0.0036111416f, 0.02514472f, + -0.49629429f, 0.87066996f, -0.013142345f, 0.37180758f, + 0.0080322521f, 0.081697956f, 0.012714152f, -0.046662986f, + 0.18522702f, -0.4139874f, -0.083906904f, -0.060497358f, + -0.34181777f, -0.012286503f, -0.11061813f, -0.47191006f, + -0.099740669f, 0.42553556f, 0.32800955f, -0.021869065f, + 0.42612422f, 0.13144773f, 0.11283957f, 0.93140364f, + -0.053545848f, -0.07930804f, 0.47886786f, 0.1989264f, + 0.6759941f, -0.93252534f, 0.032041904f, -0.044144239f, + 0.25779268f, -0.22719018f, -0.79329377f, 0.27659926f, + 0.04300246f, -0.082763404f, -0.42521027f, 0.0792851f, + -0.021661976f, 0.042408686f, 1.0140136f, -1.0645447f, + 0.054064184f, -0.25852275f, -0.47881284f, -0.049923733f, + 0.34506136f, -0.038413223f, 0.025139883f, -0.014884325f, + 0.070005365f, -0.071437962f, -0.11796044f, 0.18567787f, + -0.23104286f, -0.039002981f, -0.11585469f, -0.09725073f, + 0.11350085f, -0.053476967f, -0.00033748028f, -2.0746803f, + 1.0892519f, 1.2690789f, 0.093685426f, -1.0221928f, + 0.029873803f, -0.021360075f, -0.047369055f, 0.20135519f, + 0.67544204f, -0.78479362f, -0.040813062f, 0.030707965f, + 0.35633406f, 0.053189479f, 0.76126802f, 0.86382157f, + -0.094227098f, 0.2094987f, 0.67185611f, 0.051616147f, + 0.52478695f, -0.0040221214f, -0.16001946f, 0.4074913f, + 0.13195656f, -0.0055354983f, 0.44071493f, -0.11988057f, + 0.3157503f, -2.448422f, 1.1344249f, 0.32087708f, + 0.22200321f, -0.41310331f, -0.72897917f, 0.53797102f, + -0.067335732f, 0.069110282f, 0.47809941f, -0.06844195f, + 0.073242836f, 0.029234463f, 2.3849556f, -1.0071533f, + -0.074621722f, -1.0299509f, 0.25219637f, 1.1371839f, + 0.58154786f, 0.036501266f, -0.098814026f, 0.04495085f, + -0.044892538f, 0.12186793f, -0.097985014f, 0.79068494f, + 0.31673107f, -0.10032196f, -0.030443508f, -0.13809051f, + -1.4959624f, -0.056538377f, -0.10310657f, 0.1370534f, + -0.23495708f, -0.73044902f, 0.18916507f, -0.19739078f, + 0.041293621f, 0.16135502f, -0.06817811f, 0.31361419f, + 0.086272888f, 0.38376006f, -0.11216976f, -0.10678454f, + 0.16560866f, 0.030048847f, -0.20908524f, 0.079292983f, + 0.0055380641f, -0.89106131f, -0.97988617f, -1.9143738f, + -0.15053691f, -0.92410147f, -0.5466997f, 0.37636128f, + 0.87934995f, -0.083402321f, -0.015842639f, 0.92357516f, + 0.6919679f, -0.078537926f, -0.036434345f, -0.099174492f, + 0.7420249f, 0.28508922f, -0.10244167f, -0.44078553f, + 0.027031718f, -0.05428832f, 0.082070731f, 0.88231707f, + -0.13507426f, 0.032112505f, -0.062626898f, -0.12602715f, + -0.081384107f, -0.26579115f, 0.069907837f, -0.69814128f, + 0.46079558f, -0.1525809f, -1.8700105f, 0.0096655255f, + -0.090863839f, -0.35729605f, -0.059703141f, 1.0912131f, + -0.0060685948f, 0.070658982f, -0.088824846f, -0.061532471f, + -0.19825327f, -0.086941086f, -0.036978438f, -0.020204669f, + 0.14850084f, 0.041183408f, -0.77396119f, 0.017346062f, + -0.077472478f, -0.90750253f, -0.081773527f, -0.67647892f, + -0.10554776f, -0.18677981f, -0.048647769f, 0.032334592f, + 0.24476331f, -0.06041722f, -0.25738671f, 0.027845029f, + -0.0086891185f, -0.13782775f, -0.53609109f, 1.0249164f, + -0.10954187f, 1.0714134f, -1.4272163f, -0.29305029f, + -0.19894557f, -0.088075787f, -0.10342561f, 0.19910294f, + -0.20500904f, -0.0059708585f, 0.090227962f, -0.39451903f, + -1.0001804f, -0.040206105f, 0.16486336f, -0.40526557f, + -0.11501448f, -0.0082699452f, 0.10817505f, 0.18213055f, + -0.093365677f, -0.046728272f, 0.10475827f, 0.32898527f, + -0.034619723f, -0.0018058298f, -0.058166061f, 0.72530574f, + -0.19440588f, 0.058128193f, 0.4968437f, -0.023293385f, + 0.07964398f, -0.48898467f, -0.090723105f, 0.18957086f, + -0.17588924f, -0.97609276f, -0.067061491f, -0.078593895f, + 0.047857583f, 0.00020589939f, -0.076520763f, 0.0081840139f, + -0.17724007f, 0.30825135f, -0.59013867f, -0.0076708538f, + 0.030222893f, -4.0517411f, -0.12905918f, 0.24119869f, + -2.5502155f, 0.060220517f, -0.044203211f, -0.00029754455f, + -0.31050724f, -0.010221407f, -0.26305288f, 0.11612535f, + -0.099138007f, -1.4022467f, -0.34407756f, -0.59685308f, + -0.048711605f, -3.7913814f, -0.25539663f, -0.31260836f, + 0.50562942f, 0.064073063f, -0.25343916f, -0.2387509f, + -0.0004931771f, -0.013284214f, -0.23185763f, 0.31147602f, + 1.2195642f, -0.092278413f, 0.11848982f, 0.031697195f, + -0.023522919f, -0.044644721f, 0.14595979f, -0.031510849f, + -0.083346665f, -0.076257758f, -0.071750678f, 0.19221945f, + -0.01347756f, -0.6378305f, -0.034699943f, -0.16557711f, + 0.025741464f, -0.15583842f, -0.075682238f, 0.059265688f, + -0.060612939f, -0.029861128f, -0.026723145f, -0.13154434f, + 0.0575196f, -2.4937658f, -0.014991465f, -0.1229187f, + -0.38495475f, 0.017445676f, -0.099207535f, 0.0026815981f, + 0.28468493f, 0.0024244022f, -0.10451413f, -0.041511651f, + -0.010069463f, -2.2675424f, -0.17578207f, 0.27845332f, + -0.018994939f, -0.36881879f, 0.022979388f, -0.017250089f, + 0.55951804f, -0.10441787f, -1.5345714f, -0.067739263f, + -0.037978362f, 0.023755817f, 0.68314815f, -0.70505798f, + -0.081196778f, -0.45844302f, -0.39458638f, -0.23325375f, + -0.66456676f, -0.018451495f, -0.055419952f, 0.83319372f, + -0.54995984f, 0.059924964f, -0.25438184f, -0.26802996f, + -0.0063078678f, 0.018960036f, 0.4143751f, 0.82474947f, + -0.0500587f, -0.073626213f, 0.37799749f, -0.39402369f, + -0.072806105f, -0.072544724f, 0.07179483f, 0.16915679f, + -0.13207372f, -0.20136963f, 0.004122681f, 0.56294417f, + 0.075378686f, 0.021409744f, 2.0969796f, -0.14088786f, + 0.0051329699f, 0.46231446f, 0.029720183f, -0.64508867f, + -0.050677963f, -1.2421119f, 0.014722937f, -0.013800851f, + 0.029554771f, -0.050745077f, 0.024275061f, -0.033146694f, + -0.031272266f, -0.24500942f, 0.12516545f, -0.022896336f, + 0.043533385f, -1.034007f, -0.08267507f, -0.11423747f, + -0.21549088f, -0.1077714f, -0.045855004f, 0.0085909897f, + 0.40672812f, -0.034065176f, -0.55723178f, -0.034804918f, + 0.039994143f, 0.47918519f, 0.32987133f, -0.29725543f, + 0.054816328f, -2.6882472f, -1.4330297f, -0.26057398f, + -0.65218216f, 0.056301065f, -0.03954884f, 0.34676889f, + -0.45563477f, -0.0026467054f, -0.08941786f, -0.18836218f, + -0.71434277f, 0.19056903f, 0.18788125f, 0.07274992f, + -0.090065993f, -0.009852387f, 0.27712256f, -0.8516646f, + -0.10796157f, 0.014842887f, 0.0084828716f, 0.16168131f, + 0.0071278862f, -0.057986718f, 0.0044089449f, 0.36072615f, + 0.26674265f, 0.095395803f, 0.42644367f, 0.033398882f, + -0.085305281f, 0.25617763f, -0.081003092f, -0.14342959f, + -0.0073743379f, 0.61575198f, -0.0042784661f, -0.0063542789f, + -0.16996659f, 0.11337265f, 0.01374953f, -0.026948566f, + 0.0012968327f, -0.031009892f, -0.0049411762f, 0.045056008f, + 0.043849811f, -0.050736312f, 0.017914064f, 0.057961565f, + 0.016079349f, -0.046297923f, 0.033824354f, 0.038194727f, + -0.0022458055f, 0.056684095f, -0.038108345f, -0.019342374f, + 0.020370385f, -0.079301424f, -0.041627381f, 0.01399509f, + -0.030121591f, 0.078922071f, 0.06691692f, 0.046665136f, + 0.054231752f, 0.011625892f, -0.062498033f, -0.023062121f, + -0.05441853f, -0.076128215f, 0.0037477948f, -0.086590186f, + -0.04887709f, 0.054053955f, -0.060640328f, 0.048214883f, + -0.033144433f, 0.072271712f, 0.004403139f, -0.04113584f, + 0.06758821f, 0.020278983f, -0.075054772f, -0.063009501f, + -0.076542236f, 0.014152664f, 0.0040195519f, -0.077394597f, + 0.017626124f, 0.04758041f, -0.019031245f, -0.007710719f, + -0.085866041f, -0.094707951f, 0.018364118f, -0.05713015f, + 0.013804832f, 0.044322014f, 0.08139573f, 0.073071457f, + -0.039255522f, -0.011276198f, 0.018936526f, 0.084448822f, + -0.35604444f, -0.4295575f, -0.030460238f, -0.0086869746f, + 0.0074417582f, -0.073389515f, -0.072730832f, -0.75093496f, + 0.041454937f, -0.71396309f, -0.076336086f, -0.058709688f, + -0.0070260614f, 0.034919091f, -0.18066303f, -0.094583079f, + -0.13678338f, -0.047199894f, -0.18868037f, -0.031605158f, + 0.2034214f, 0.53937656f, -0.10762785f, 0.32352239f, + -0.038108323f, 0.015800292f, 0.023840973f, -0.082104221f, + 0.39220679f, -0.076534599f, 0.43633395f, -0.52492416f, + 0.016195573f, -0.2319791f, -0.11301067f, 0.33706543f, + 0.050245732f, -0.089494184f, 0.21569853f, -0.25391045f, + -0.047090176f, 0.038533777f, -0.047058158f, 0.36345351f, + -0.11003393f, -0.67002392f, 0.059907064f, -0.45064142f, + -0.57659709f, 0.091449909f, -0.79470801f, 0.051363491f, + -0.10312302f, -0.084659874f, -0.076771431f, 0.044911172f, + -0.039984297f, -0.062970161f, -0.021213928f, 0.046590544f, + 0.24859488f, 0.0027417981f, 0.039691087f, -0.038972091f, + -0.07514634f, 0.049779557f, 0.01988285f, 0.0047354861f, + -0.063466385f, 0.050943557f, -0.0025122999f, -0.0087271407f, + -0.075992644f, 0.024023814f, -0.020798564f, 0.03460744f, + -0.0091486257f, -0.021200139f, -0.044306856f, -0.042921703f, + -0.0041623805f, 0.026981376f, -0.013895984f, 0.04122676f, + -0.067684792f, 0.028630108f, -0.0031628408f, -0.049023684f, + 0.0098558189f, -0.0742881f, -0.084268115f, -0.065743655f, + 0.048210934f, -0.058325686f, 0.029994635f, -0.074333005f, + 0.065336041f, -0.077514343f, 0.040873013f, -0.069080658f, + -0.086139865f, 0.025929943f, 0.083754905f, -0.072172016f, + 0.0014183784f, 0.027184853f, -0.0050807353f, 0.045059778f, + 0.07609538f, 0.08985623f, 0.008859084f, 0.05358167f, + -0.010007032f, -0.065254807f, -0.085086815f, 0.072352186f, + 0.024658427f, -0.0091801882f, -0.047240622f, 0.0037755421f, + -0.034217019f, 0.051016942f, -0.081530504f, 0.0074401409f, + -0.033397224f, 0.040092103f, 0.038331166f, 0.0055934223f, + -0.21721621f, 0.0044613481f, 0.14425616f, 0.081001572f, + -0.0092809293f, 0.098630443f, -0.093468465f, -0.10869749f, + 0.36723965f, 0.058426291f, -0.12276745f, -0.037882723f, + 0.30073535f, -0.015976129f, -0.084940523f, -0.23277788f, + 0.011981377f, -0.30290964f, 0.0020272133f, 0.12385984f, + 0.20927586f, -0.050149601f, 0.021094747f, -0.076297738f, + -0.24469151f, -0.05506729f, 0.16253975f, 0.30049735f, + 0.070963755f, 0.16955143f, 0.16041125f, 0.036838166f, + 0.14377439f, -0.10147434f, 0.25371069f, -0.22239608f, + -0.12376334f, -0.10640892f, -0.28710401f, 0.20234807f, + 0.0279705f, 0.041540701f, -0.17223787f, 0.23896542f, + 0.0088777961f, 0.079601459f, 0.18905704f, -0.2999191f, + -0.38566813f, -0.099548101f, 0.24889569f, -0.030487139f, + 0.40924862f, 0.16635776f, -0.078223385f, 0.10216153f, + 0.20076048f, 0.24877758f, -0.00054856314f, 0.044728383f, + -0.023633491f, -0.13426121f, -0.020704255f, 0.07234706f, + 0.1399142f, 0.28044316f, 0.3029713f, 0.068448104f, + -0.03432589f, 0.03961508f, -0.038769793f, -0.4992314f, + 0.29053834f, 0.33702004f, -0.034728177f, -0.0321372f, + 0.099372685f, -0.043256555f, -0.19456948f, 0.06069896f, + -0.058467608f, -0.078830466f, 0.045653526f, -0.096609741f, + 0.10534941f, 0.097656481f, -0.033432283f, 1.0467987f, + -0.072569065f, 0.040155035f, -0.18098469f, 0.55771214f, + 0.041365836f, 0.0075924746f, 0.22691925f, 0.36468107f, + 0.09032505f, -0.045967441f, -0.37086007f, -0.89252973f, + 8.6670552e-05f, -0.11559016f, -0.28508955f, -0.022643689f, + -0.016810777f, -0.019490462f, -0.0010633101f, -0.71484035f, + -0.088997774f, 0.65093875f, 0.084810711f, 0.50678235f, + 0.022502962f, -0.057536311f, 0.036508501f, -0.11714479f, + 0.048986174f, -0.04199174f, -0.074932568f, -0.64357334f, + -0.030952711f, -0.077545159f, -0.001988353f, 0.0055152802f, + 0.5252918f, -0.091930628f, 0.049154978f, 0.018862635f, + -0.19108973f, -0.42104915f, -0.66428715f, 0.033908557f, + -0.031634815f, -0.080745205f, -0.12350164f, -0.11386545f, + -0.038549386f, -0.82489365f, -0.11851548f, -0.0025388247f, + -0.1387051f, -0.100948f, -0.11727837f, 0.076030999f, + -0.044966888f, -0.45697919f, -0.029460283f, 0.053581171f, + 0.044635855f, -1.1471258f, -0.21798912f, -0.22021903f, + 0.36839482f, -0.10257681f, 0.0032056237f, 0.32728827f, + -0.32679555f, -0.015992595f, -0.21892302f, -0.44739786f, + -0.1140606f, 0.31465328f, 0.23327847f, -0.37774172f, + -0.081769526f, -0.10673478f, -0.12319205f, 0.078226492f, + -0.11931137f, -0.087052308f, 0.11646243f, -0.015326788f, + -0.062837593f, 0.29435948f, -0.020985253f, -0.19531916f, + -0.010060692f, -0.2171198f, 0.215896f, -0.060643826f, + 0.10906668f, -0.84568387f, 0.033908855f, 0.12347803f, + -0.040433526f, -0.39997414f, -0.0092395702f, -0.053399824f, + -0.054062497f, -0.032369971f, 0.0097909532f, -0.023947529f, + -0.345456f, -0.12720664f, 0.074573621f, 0.041656896f, + -0.073625907f, 0.054323051f, -0.047540691f, 0.04180323f, + -0.33921915f, 0.5115177f, -0.012709193f, -0.090054214f, + 0.18135604f, -0.012373105f, -0.056829005f, 0.15838836f, + -0.033070851f, 0.12952025f, -0.369311f, -0.27673835f, + 0.29202154f, 0.11325553f, -0.14130242f, 0.014947598f, + -0.4132781f, -0.060090806f, -0.15204106f, 0.58773988f, + -0.21265332f, -0.010979277f, 0.03633447f, -0.15133438f, + 0.3067565f, -0.089902043f, 0.16732386f, 0.44214341f, + -0.09274473f, -0.049837384f, 0.34409618f, -0.03399219f, + -0.012640219f, -0.0019062137f, -0.2673474f, 0.071856186f, + -0.13634966f, 0.052159782f, -0.23577118f, -0.15954338f, + -0.25781372f, 0.025523331f, 0.03140204f, -0.066294789f, + 0.20567179f, 0.3255879f, -0.034971081f, 0.32986873f, + 0.13476248f, 0.10704937f, -0.033010367f, -0.027369441f, + -0.031479191f, 0.010602989f, 0.0094666034f, 0.022232641f, + 0.17480113f, 0.58024585f, -0.23572645f, 0.85355181f, + -0.046451185f, -0.15886016f, 0.010917327f, -0.36971828f, + 0.13278209f, 0.7426374f, -0.054109156f, -0.031007495f, + 0.26665387f, 0.029238772f, -1.1439831f, 1.5388279f, + -0.13697982f, -0.39672363f, 0.39613459f, 0.21325092f, + 0.018916395f, -0.35948268f, -0.14761502f, 0.58843327f, + -0.37133786f, 0.0081373965f, 0.67682034f, 0.49002281f, + 0.93141937f, 2.2761703f, -0.89595389f, 0.27506974f, + 0.11893924f, 0.6059258f, 0.76065189f, 0.67156518f, + -0.069893241f, -0.049767904f, -0.42388961f, -0.030185901f, + -0.021842688f, 0.0304121f, -0.61126435f, 0.34076151f, + 0.027315944f, 0.44200417f, 0.87198651f, -0.63095731f, + 0.031394277f, -0.026488066f, 0.061991602f, 0.015389082f, + -0.7968899f, -0.0047222651f, -0.011255117f, -1.39156f, + 0.68677992f, -0.21080224f, 0.085206598f, 0.032497935f, + 0.26650226f, 0.0014253618f, -0.060522083f, -3.1789269f, + -0.21918523f, 0.37951857f, 0.28817633f, 0.13830267f, + 0.026181454f, 0.39918271f, -0.0032471668f, 0.88193965f, + -0.21062559f, 0.11147624f, -0.058366101f, -0.055110291f, + 0.18883647f, 0.041314501f, -0.12506297f, 0.052628551f, + -0.13070765f, 0.31972888f, -0.15399079f, -2.4617276f, + 0.089222446f, -1.511976f, 0.01977781f, 0.57054031f, + -0.20105816f, -0.087459117f, -0.23046389f, -0.44384912f, + 0.47975838f, -0.015636686f, -0.023190372f, 0.55881834f, + 1.0415086f, 0.16011982f, -0.65591556f, 0.29571688f, + -0.071423836f, 0.02869796f, 0.27233586f, -0.66125834f, + 0.034895819f, -0.083390176f, -0.22062686f, -0.0096407486f, + -0.02546617f, -0.40892282f, -0.0016625248f, -1.0401609f, + 0.45678124f, -0.15948208f, -1.2571337f, 0.035428338f, + -0.08031445f, -0.41157252f, -0.0025361392f, -0.44133377f, + 0.18758667f, -2.8376644f, -0.0073177181f, 0.018630182f, + 0.022143969f, -0.077598974f, -0.065135084f, 0.026039518f, + 0.15680884f, -0.30824134f, 0.051484291f, 0.14780961f, + -0.048264857f, -0.070973366f, -0.0076616141f, 0.083222106f, + 0.036831088f, 0.15843545f, 0.029933063f, -0.0060234927f, + -0.32082537f, -0.017442659f, -0.094673678f, 0.088512354f, + -0.022087438f, 0.011823161f, -0.3170625f, 0.34258321f, + 0.034686241f, 0.13683227f, -0.051475313f, 0.19149557f, + 0.037191581f, -0.027092656f, -0.262054f, 0.040077858f, + 0.49709314f, -0.033908866f, 0.42109326f, -0.37103668f, + -0.31274021f, -0.11985938f, 0.055869721f, 0.19495448f, + 0.02991809f, 0.036892511f, -0.33248276f, 0.30264384f, + 0.041502334f, 0.02686201f, 0.033864852f, 0.062900968f, + -0.03638161f, 0.32382816f, -0.0052728662f, 0.22021227f, + 0.095382296f, 0.064176127f, -0.11442235f, -0.070716947f, + 0.20817639f, 0.093048446f, -0.039981131f, -0.33186433f, + -0.069366932f, 0.27207926f, -0.074059881f, -0.050451417f, + 0.20915659f, -0.073978022f, -0.093518116f, -0.0075220084f, + -0.216548f, -0.34226799f, -0.32743895f, -0.060718771f, + -0.044086162f, -0.74753976f, 0.026476512f, -0.45322981f, + -0.23359735f, 0.60263735f, -0.024121413f, 0.090156034f, + 0.60160321f, 0.068183064f, -0.3571215f, 0.13843761f, + 0.10017211f, 0.37730449f, -1.0723851f, -1.8805131f, + 0.051506739f, -2.4003088f, -1.5047879f, -0.09516634f, + -0.28708073f, -0.02673186f, -0.0068743434f, 0.8503325f, + 0.5532282f, -0.058967747f, 0.34939274f, -0.3736636f, + 0.51732415f, 0.11383957f, -0.38059014f, 0.24807924f, + 0.0080088917f, 0.063173354f, 0.77860284f, -0.16521893f, + -0.058717787f, 0.0034043696f, -0.24946415f, 0.024579048f, + 0.0022739016f, 0.3490828f, -0.049487419f, -0.52700359f, + 0.15264939f, 0.13279822f, -0.5801087f, 0.031472504f, + 0.0077018877f, 0.54949254f, -0.033038717f, 0.980331f, + 0.010973691f, -0.91519994f, 0.033324163f, -0.08013352f, + 0.15621659f, -0.024710126f, -0.077588648f, -0.033380251f, + 0.090357222f, 0.31646615f, 0.73632693f, -0.2920481f, + 0.062617905f, 0.0890157f, -0.055283971f, 0.14700952f, + 0.13267593f, 0.26326042f, -0.041309156f, -0.054097958f, + 0.32445711f, 0.00034308399f, 0.15225688f, -0.089172021f, + -0.095169418f, -0.23209362f, -0.32417288f, 0.22994894f, + -0.19223148f, -0.3254728f, -0.0019539606f, -0.30217826f, + -0.060414825f, -0.085194178f, 0.052194398f, -0.5726946f, + 1.2356108f, -0.034555983f, 0.0075988765f, 0.29342034f, + -0.22953999f, -0.12323862f, -0.8498652f, -0.20150366f, + -0.010350949f, -0.080276348f, 0.15441316f, -0.027279533f, + -0.080647878f, -0.088777386f, -0.062583625f, -0.19831119f, + -0.065156236f, 0.0069769509f, -0.13382119f, 0.19037223f, + -0.1019148f, -0.011187106f, 0.25062618f, -0.0043379306f, + -0.05377515f, 0.049797535f, 0.03351533f, -0.10420026f, + 0.07735958f, 0.20574163f, 0.054282475f, -0.060206819f, + -0.088059016f, -0.030068325f, 0.017515851f, 0.027257966f, + 0.19799745f, 0.35046116f, 0.97124749f, 0.043875381f, + -0.073912591f, -1.3589815f, 0.083201602f, 0.93762487f, + -4.6091461f, 0.20628701f, -0.069281809f, -0.025846548f, + 0.48273748f, -0.13320574f, -0.94015843f, -0.036991298f, + -0.0055573261f, 0.13469413f, -1.0826137f, -3.1072326f, + 0.014256765f, -1.6193044f, -1.7191246f, 0.72171777f, + -1.1593599f, -0.12028071f, 0.13643566f, 0.12723036f, + 0.085482046f, -0.087032937f, 0.34069902f, -0.26810825f, + -0.18196036f, 0.12054919f, 0.33190948f, 0.98711127f, + -0.060674567f, -0.025196863f, 0.40450698f, -1.2760451f, + 0.0086526005f, 0.029751578f, -0.027837785f, 0.96880782f, + -0.028977428f, -0.53839165f, 0.00076311623f, -0.94729f, + 0.60215992f, -0.057353355f, -0.36678332f, -0.10219928f, + 0.26384377f, -0.99845105f, -0.06012357f, -0.75263196f, + -0.015471349f, -2.2279098f, -0.015654461f, -0.10822397f, + 0.089770965f, -0.073609814f, -0.065358937f, -0.020090926f, + 1.8165741f, -0.44177297f, 0.31373987f, 0.10943626f, + -0.019735359f, -0.066037647f, 0.039335564f, -0.35776168f, + 0.31192279f, -0.49497852f, -0.088698283f, 0.0027434162f, + 0.87307495f, -0.058368295f, -0.72713953f, 0.33075947f, + -0.041833293f, 0.10786413f, 0.12021168f, 0.51638949f, + 0.32655165f, 0.11145121f, 0.013895479f, -0.67114162f, + 0.36997157f, -0.079571843f, 0.30079436f, -0.61653894f, + -0.338745f, 1.0444504f, -0.018168256f, 0.2337516f, + -0.48339495f, 1.0341949f, 0.65371621f, 0.19110063f, + -0.10154696f, -0.047133427f, 0.71078151f, -0.12082414f, + -0.051191233f, -0.094030529f, -0.51462561f, 0.79356509f, + -0.095900051f, 0.11212765f, 2.0340374f, 0.076174721f, + 0.50755101f, -0.039917257f, -0.10486105f, -0.041960362f, + 0.00017125542f, 0.085428864f, -0.10386462f, -0.24387336f, + 0.16395546f, -0.16066572f, -0.064769693f, -0.11203276f, + 0.2311358f, 0.012001342f, -0.0011265667f, 0.19181699f, + -0.32669559f, 0.31202328f, 0.20285396f, -0.27944198f, + -0.015201434f, -0.41100943f, 0.0663784f, 0.23657933f, + 0.46743038f, -0.52070791f, -0.11048251f, 0.021390833f, + -0.19860967f, 0.042939875f, 0.24980132f, -0.69802326f, + -0.081422254f, 0.11312445f, 0.1690467f, -0.24703625f, + -0.67206347f, 0.022109421f, 0.16094129f, 0.32609954f, + -0.058933984f, -0.10013467f, 0.19782908f, -0.31345046f, + 0.16307247f, -1.0292261f, -0.09351743f, 0.20699537f, + 0.058243938f, -0.53903443f, -0.21947825f, -0.26156858f, + -0.043637186f, -0.041585192f, 0.17595862f, -0.12351448f, + 0.070899896f, 0.023336269f, 0.35173139f, -0.10801589f, + -0.10997364f, 0.1110784f, -0.65039688f, 0.13270415f, + 0.12729289f, -0.071985781f, 0.13254876f, 0.023909606f, + -0.29408172f, -0.051264856f, -0.015472065f, 0.1071772f, + -0.30533385f, -0.059286721f, 0.060263775f, -0.093638763f, + 0.48850891f, -0.10139623f, -0.075987093f, -0.018699063f, + -0.018411567f, 0.24944775f, 0.1649124f, 0.074141636f, + -0.028963542f, -0.04651048f, 0.045502953f, 0.053250197f, + 0.23725362f, 0.13870187f, -0.083787061f, -0.023569815f, + 0.92127419f, -0.10689509f, -0.030041097f, 0.18981449f, + -0.058907498f, 0.24865019f, -0.03390184f, 0.18755056f, + -0.014077371f, 0.087317064f, 0.12247856f, 0.43950966f, + -0.16562356f, -0.055921022f, -0.37439358f, -0.14698087f, + -0.025298793f, -0.013686493f, -0.26493198f, -0.35979992f, + -0.080786385f, -0.26501381f, 0.35937929f, 0.060493059f, + 0.025977291f, 0.0018984376f, -0.066095658f, 0.11661971f, + -0.020524694f, 0.064751223f, 0.14461139f, 0.1640133f, + -0.10308011f, 0.20304389f, 0.031252105f, 0.071897253f, + 0.36734521f, -0.010913378f, 0.037822597f, -0.063047767f, + 0.010339777f, 0.074561551f, -0.061733056f, 0.22718535f, + -0.061427791f, 0.10794009f, 0.022301748f, -0.0052195713f, + -0.0079652276f, -0.13454258f, -0.083651759f, 0.00098887924f, + 0.41374883f, -0.033708148f, 0.11221488f, 0.18463024f, + -0.023688687f, -0.020520937f, -0.099653602f, -0.20784979f, + 0.12711711f, 0.15190597f, 0.051716805f, 0.0046168203f, + -0.16717909f, -0.0010157316f, 0.10685422f, 0.23980713f, + -0.011777636f, -0.083749197f, -0.23007481f, 0.14212672f, + -0.12410031f, 0.010500002f, -0.045776319f, -0.42464578f, + -0.32531899f, -0.062221657f, -0.15320992f, 0.071441628f, + -0.068475708f, -0.099945471f, 0.089233175f, 0.056867767f, + -0.19928737f, 0.5135271f, 0.38103488f, -0.12284078f, + 0.034620527f, 0.024201205f, -0.25031891f, 0.057368312f, + -0.020997787f, 0.024243435f, -0.029203203f, 0.23819859f, + -0.08181221f, 0.1446235f, 0.084189326f, -0.47072425f, + -0.12273841f, -0.035326481f, 0.021297457f, -0.0060140826f, + 0.28643626f, -0.13772942f, -0.087892845f, 0.19672102f, + 0.06835971f, 0.097044617f, 0.018027319f, -0.03073281f, + -0.087183326f, -0.01045509f, -0.0026354059f, -0.019873137f, + 0.11327863f, 0.30220866f, -0.46379858f, -0.027316498f, + -0.037700262f, -2.7149203f, -0.085213162f, -0.032817747f, + -0.63646013f, -0.32519656f, -0.028247932f, -0.066496909f, + 0.29579276f, -0.020647313f, -1.0548195f, -0.13307209f, + 0.054124452f, -0.94417816f, 0.73531425f, 0.018395014f, + -0.14966959f, -0.31009817f, -1.7295848f, -0.36488721f, + -1.3011451f, 0.043176316f, 0.27173907f, -0.0045247315f, + 0.10515811f, -0.0019273045f, 0.28572515f, -0.50810534f, + -0.97747952f, -0.20364343f, 0.47992295f, 0.23280698f, + 0.036854021f, -0.069137946f, -0.15263222f, -0.17454377f, + -0.076344945f, -0.075739026f, -0.06192676f, -0.012532431f, + 0.00077659846f, -0.46771747f, -0.012701865f, 0.067409143f, + -0.7136603f, -0.092412934f, 1.1545088f, -0.023889337f, + -0.0028748764f, -1.7924207f, -0.080656603f, -0.81815988f, + -0.13751028f, -1.0363584f, -0.1113492f, -0.12297907f, + 0.23963049f, -0.12809315f, -0.089448333f, -0.023514498f, + 0.11993003f, -0.29015848f, 0.50325984f, -0.026119241f, + 0.054748993f, 0.11138102f, -0.031406187f, 0.4331663f, + -0.27960995f, -0.14192049f, 0.020702034f, -0.022346159f, + 0.090919018f, -0.017161433f, 1.0820704f, -0.26815408f, + -0.066726491f, 0.59153992f, 1.3705389f, 0.57431453f, + 0.055103742f, -1.7561235f, 2.2833393f, 0.59466147f, + -0.22010964f, -0.11293369f, 0.53232133f, -0.47186577f, + 0.52457696f, 0.017759509f, -0.15011372f, 0.61946118f, + -0.78460425f, 0.03237918f, -0.40847641f, -0.14216635f, + -0.068328105f, 0.067362443f, -0.28723919f, -1.7890279f, + -0.066340566f, -0.0061328583f, -0.032529276f, -0.50614089f, + 0.032016549f, 0.025200944f, 0.035670251f, 0.42892447f, + -0.051678553f, 0.066648535f, -2.1280332f, 0.026947886f, + 0.052908175f, -0.32305175f, 0.0090133678f, -0.088729218f, + 0.026280142f, 0.57639408f, 0.018343763f, -0.086219221f, + 0.011528177f, -0.11477835f, -0.060906239f, 0.047933318f, + -0.071585536f, 0.29864421f, 0.2281055f, 0.062801801f, + -0.041224543f, -0.15209261f, -0.13409995f, -0.026991557f, + -0.29411542f, 0.35510671f, -0.056106884f, -0.094497412f, + 0.32628092f, -0.076545022f, -0.084254079f, 0.074253187f, + 0.020976787f, -0.24037983f, -0.05348181f, 0.12961268f, + 0.09347342f, 0.10668691f, 0.05002008f, 0.19835037f, + -0.23169179f, 0.0065316502f, -0.49880505f, -0.013974415f, + -0.14876699f, -0.065709241f, 0.083518632f, 0.068322182f, + -0.053781323f, -0.52248645f, -0.1076085f, 0.20207255f, + 0.012211255f, -0.10762402f, 0.21755491f, -0.15902133f, + -0.074965142f, -0.098453492f, -0.063346907f, 0.12458529f, + 0.016865894f, 0.095792085f, -0.067532651f, -0.16019222f, + -0.035414487f, -0.00069053192f, 0.1201297f, -0.053694922f, + -0.027672609f, 0.025208578f, -0.12209167f, -0.10271913f, + -0.044693884f, 0.091708802f, -0.047547445f, -0.0027104623f, + 0.047546018f, 0.0060287602f, -0.068302214f, 0.021599963f, + 0.2701039f, 0.12387545f, 0.48586631f, -0.014242838f, + -0.099928446f, 0.36180824f, -0.093309447f, 0.23569056f, + -0.52252573f, -0.041606843f, 0.044014424f, -0.060399517f, + 0.1385113f, 0.048667114f, -0.12392896f, 0.050376248f, + -0.056870762f, 0.06568791f, 0.062675856f, 0.14013307f, + 0.10989497f, 0.27125666f, -0.033811841f, 0.012184607f, + -0.061741009f, -0.065856941f, 1.1541305f, -0.029818887f, + 0.16978021f, -0.01465035f, 0.1876061f, -0.082702227f, + 0.26606157f, 0.75362784f, 0.1362426f, 0.26870069f, + -0.099637948f, -0.013359617f, 0.20980334f, 0.34061527f, + -0.1163531f, 0.029133044f, -0.1375123f, 0.2153265f, + -0.020309027f, 0.42620754f, -0.060355332f, 0.019974394f, + 0.17786454f, -0.035572167f, -0.06112437f, -0.080669962f, + 0.3365885f, 0.31460732f, -0.099903338f, 0.17181185f, + 0.10175198f, 0.18518992f, 0.01038577f, -0.0085329888f, + 0.085396104f, 0.033276465f, 0.023526175f, 0.039859399f, + 0.0088032139f, -0.60552871f, -0.094940886f, -0.060780078f, + -0.0030782449f, -2.5058024f, 0.042734068f, -0.15015028f, + 0.31861633f, 0.27284369f, -0.042176828f, 0.019643094f, + 0.0053510568f, -0.063717678f, -0.26212212f, 0.058761325f, + -0.077478409f, 0.51392668f, -1.3984368f, -1.0159374f, + 0.078261644f, -2.0211496f, -1.6609184f, -0.24945059f, + -0.68850744f, 0.024499968f, 0.28190455f, 0.99908388f, + 0.30959299f, -0.012000426f, 0.37611496f, -0.57514042f, + -1.1567661f, 0.26425749f, 0.80392557f, 0.32210508f, + -0.015179612f, -0.076126359f, 0.39979699f, 0.042871822f, + -0.0031159432f, -0.088339649f, -0.17406633f, 0.4630717f, + 0.04757889f, -0.088791363f, -0.040518954f, 0.32792839f, + -0.38754952f, 0.0011897294f, 0.082010448f, 0.018398905f, + 0.21496743f, 0.72965211f, -0.07355275f, 0.5231213f, + -0.1765891f, -0.53694755f, -0.057554193f, -0.017527521f, + 0.10045959f, 0.037354108f, -0.11577352f, -0.038011383f, + -0.12134761f, -0.2562829f, -0.3629573f, -0.023202179f, + -0.085269786f, -0.42989916f, 0.013622093f, 0.41372672f, + -0.34076154f, 0.21362899f, 0.0069170147f, -0.093222335f, + -0.46932316f, -0.016947452f, 1.300319f, -0.063528396f, + -0.082130633f, 0.46343902f, 0.68408537f, 1.0447047f, + -0.053108606f, -1.5710015f, 4.4550371f, 0.24157318f, + -0.18978634f, -0.023361206f, 0.036423329f, -0.84380376f, + 0.47321633f, 0.0023737305f, -0.13024056f, 0.86014181f, + -0.73495901f, 0.0062681101f, -0.82759744f, -0.054215644f, + 0.0062986086f, -0.028820001f, -0.30697986f, -0.44853547f, + -0.01312521f, -0.0086173741f, 0.09255483f, -0.57519066f, + 0.042885438f, -0.1982232f, -0.012250693f, 0.2276693f, + -0.38057244f, -0.048124861f, -0.75706828f, 0.063958764f, + 0.10374155f, -0.78331399f, 0.054370183f, -0.18471891f, + 0.056498699f, -1.4191947f, -0.031626392f, -0.020733245f, + 0.25802311f, -5.3440232e-05f, -0.021760033f, -0.015141505f, + 0.0085483771f, 0.0087802811f, 0.098154187f, -0.12725359f, + 0.015444007f, -0.89912027f, -0.070202172f, -0.093677655f, + -4.3970591e-05f, -0.11211503f, 0.0090523353f, 0.038563501f, + -0.073836029f, -0.091354482f, 0.055036917f, -0.047047298f, + -0.12404834f, -0.078838423f, -0.22427662f, -0.61612958f, + -0.12649818f, -0.25283852f, -0.016058017f, 0.096240558f, + -0.071283609f, -0.045197885f, -0.052814625f, 0.12953706f, + 0.091472067f, 0.0044974587f, 0.13832279f, -0.029746842f, + -0.25720921f, 0.2621544f, 0.28330037f, -0.16060819f, + -0.11464735f, 0.028814558f, -0.056717463f, -0.62318599f, + -0.012799f, -0.045367565f, 0.045142144f, -0.1045083f, + -0.067879677f, 0.12871975f, 0.014664381f, -0.21475078f, + -0.11464344f, -0.099776991f, -0.055190921f, -0.054580465f, + 0.20603448f, 0.082596131f, -0.10604522f, 0.1184534f, + -0.09107513f, -0.11857336f, -0.0067600389f, -0.097163714f, + -0.092023671f, -0.093436174f, -0.0085663395f, -0.033963192f, + -0.31803641f, -0.64607406f, -0.17111062f, -0.082599588f, + -0.019577293f, -0.61826289f, -0.0057732142f, 0.58025068f, + -0.5531233f, 0.052743226f, -0.058389314f, -0.069047697f, + 0.21586187f, -0.032912068f, -0.31364775f, -0.15878333f, + -0.13617714f, -1.3715703f, -0.7458272f, -3.0919991f, + -0.012165045f, -1.6941601f, -0.74016964f, 0.83216393f, + 0.29054913f, 0.037681092f, 0.33479142f, 0.76020843f, + 1.004066f, -0.0029882032f, 0.16184826f, -0.28118294f, + 1.1148052f, 0.087633327f, -0.033078767f, -0.18109573f, + -0.081082597f, -0.098427154f, -0.18982488f, 0.25343019f, + 0.046492036f, -0.10664488f, -0.2208181f, -0.4562645f, + -0.14079021f, -0.44225821f, 0.047114275f, -1.4332573f, + 0.097513646f, -0.022019899f, -2.2648797f, -0.037481379f, + -0.12576033f, -2.6721327f, -0.097371981f, 0.4905135f, + 0.070708737f, -1.8188096f, 0.022027932f, -0.078171156f, + -0.059363328f, 0.051208429f, 0.0098886462f, -0.0086130798f, + 0.13335125f, 0.3561694f, -0.12715399f, 0.11622442f, + -0.088984393f, -0.15813239f, -0.078941926f, 0.17063348f, + 0.075664826f, -0.66521537f, 0.03061041f, 0.011105163f, + 0.093841188f, -0.014679448f, -0.40733224f, -0.033424638f, + -0.16240473f, 0.13657472f, 0.70574319f, 1.0724293f, + 0.063476235f, -0.087558255f, -0.49086261f, 0.31880134f, + 0.096107692f, 0.024848428f, -0.13700642f, -0.38874286f, + -0.46514225f, 0.028056689f, 0.046591472f, -0.43235955f, + -0.36436731f, -0.1066218f, 0.48070735f, -0.2061131f, + 0.021329621f, -0.031296883f, -0.22938313f, 0.4288801f, + 0.0054864315f, 0.0055721407f, 0.19949172f, 0.15238662f, + 0.0085770031f, 0.046357498f, -0.02753986f, 0.01407886f, + -0.012720061f, -0.00072066666f, 0.45785689f, -0.09941221f, + 0.036580652f, -0.71058345f, -0.023872687f, -1.0476136f, + -0.14232497f, -0.30241409f, 0.0060457927f, -0.027256198f, + 0.062913246f, -0.076412037f, 0.031562574f, -0.0037905232f, + -1.2327539f, -0.31017068f, -0.057031639f, 1.3976822f, + 0.048310671f, 0.037920456f, -0.069616348f, 0.35335475f, + 1.5135983f, 0.62666065f, 0.0007556862f, -0.071652874f, + -0.56440324f, -0.095784806f, -0.34360337f, -1.9240252f, + -0.14419457f, -0.1117161f, 0.18725653f, 0.0013205055f, + -0.15703197f, 0.063169688f, 0.020190815f, 0.027662193f, + 0.25959614f, -0.12679856f, 0.34210694f, 0.35780057f, + 0.43565026f, 0.62555903f, -1.1405044f, 0.46961322f, + 0.48621899f, -0.56235433f, 0.30025536f, -0.39524311f, + -0.062207416f, 0.01921056f, -0.72722024f, 0.047114056f, + -0.036026884f, 0.037884351f, -1.4316436f, 0.19454548f, + -0.049306337f, 0.8597576f, -0.9783597f, 0.1832325f, + 0.14481026f, -0.16009058f, 0.27939492f, -0.092760034f, + -0.44636962f, -0.021828799f, -0.076180167f, -0.70740277f, + -0.26157853f, 0.14613907f, 0.032237623f, -0.10308491f, + 1.3053287f, -0.12101321f, -0.056209747f, -0.069793746f, + -0.37216568f, 0.0022626503f, 0.7181474f, 0.022359004f, + 0.052739982f, 1.046728f, 0.02212552f, 1.3294014f, + -0.57260323f, 0.49112129f, -0.02411212f, -0.014549642f, + -0.35620692f, 0.033417191f, 0.49654487f, 0.21655348f, + -0.058396313f, -0.10041489f, 0.032208189f, -3.0321178f, + 0.037912287f, -1.7360574f, 0.71514368f, 1.0789305f, + -0.12693369f, 0.033147715f, -0.11483756f, -0.86204815f, + 0.69723964f, -0.012466061f, -0.23030153f, 0.93387419f, + 1.3672816f, 0.19129124f, -0.99858433f, -0.077565268f, + 0.023365257f, -0.061181549f, -0.01115034f, -1.270547f, + -0.070288934f, -0.0060141324f, -0.012699419f, -0.44492453f, + -0.076076038f, -0.91155022f, 0.0096480055f, -1.8896163f, + 0.32375798f, -0.12320092f, -2.4741809f, -0.020266391f, + -0.11874742f, -1.237139f, -0.04413892f, -0.42367265f, + 0.18046735f, -1.7502683f, 0.015014771f, -0.10811576f, + -0.2091589f, -0.039111119f, -0.0092514539f, 0.074964643f, + -0.15852052f, -0.26989311f, 0.16280358f, -0.22807108f, + 0.0028883729f, 0.14782882f, -0.11394846f, -0.037083499f, + -0.14587033f, -0.20750472f, -0.10478958f, 0.023806836f, + 0.079605639f, -0.13563129f, -0.045624819f, -0.15524575f, + -0.10783405f, 0.22182843f, 0.35796154f, -0.074546956f, + -0.59210134f, 0.22307585f, 0.012598827f, -0.084026404f, + 0.45173934f, -0.094061531f, -0.07341972f, -0.38103294f, + -0.094557792f, 0.01553251f, -0.48106596f, 0.18815254f, + 0.29083154f, 0.064861663f, -0.1397981f, 0.12216692f, + -0.091159455f, -0.038171366f, 0.13258041f, -0.068137594f, + 0.054173924f, 0.013508563f, -0.043082122f, -0.19265425f, + -0.074234299f, -0.1972913f, 0.05270151f, 0.50391757f, + 0.34234208f, -0.019569088f, -0.028202973f, -0.08519619f, + -0.011151998f, -0.072498724f, -0.021945907f, -0.042735945f, + -0.14353442f, 0.10598855f, 0.046218585f, -0.073147506f, + -0.20707443f, -0.061039414f, -0.072266355f, 0.033453532f, + -0.29723692f, -0.15491922f, -0.55107999f, -0.060469858f, + 0.004160291f, -0.094175749f, 0.030313326f, -0.68985432f, + 0.45872372f, 0.49328989f, 0.018753828f, -0.09197171f, + -0.18955313f, -0.12351063f, 0.20808695f, -0.22102624f, + -0.082320318f, 0.091820136f, -0.30470327f, 0.017078765f, + -0.13794363f, -0.086603314f, -0.60653967f, 0.3847957f, + -0.21860009f, -0.079446457f, -0.4590759f, 0.43126872f, + 0.37910295f, -0.055717759f, -0.25866231f, -0.68742603f, + 0.055885743f, 0.18267605f, -0.27327737f, -0.31813997f, + -0.06444867f, -0.066543669f, -0.92734176f, -0.13916941f, + -0.038882237f, -0.12230433f, -0.16096558f, -0.37857831f, + -0.0088313557f, -0.61151135f, 0.10344137f, 0.7682364f, + -0.033951961f, -0.094445646f, 0.086845912f, 0.041396193f, + -0.074310839f, 0.044669703f, -0.083412454f, -0.091159433f, + -0.22466017f, -0.22361657f, 0.091038443f, -0.032845218f, + -0.50398171f, -0.05356928f, -0.03163268f, -0.033851627f, + 0.22566949f, 0.46968403f, 0.91328049f, 0.12429783f, + -0.080485761f, -0.13954337f, -0.033490717f, 1.4136647f, + -0.8618871f, 0.15979533f, 0.050244216f, -0.059029378f, + 0.024705932f, -0.099983461f, 0.015904581f, -0.050612904f, + -0.044198636f, 0.13008538f, -0.16183187f, -2.3356886f, + 0.10744064f, -0.43375036f, -0.46851462f, 1.1085918f, + -0.73921466f, -0.078635968f, 0.22476332f, -0.58178008f, + 0.61359948f, -0.005408946f, 0.31964731f, 0.21369061f, + 0.16820727f, 0.016396282f, -0.092245132f, 1.1365739f, + 0.020447437f, -0.074628472f, -0.025958268f, -1.1878029f, + -0.12875456f, -0.074188098f, -0.10817607f, 0.32213265f, + -0.093324319f, -0.61054415f, -0.034469735f, -1.0486958f, + 0.70031369f, -0.057118785f, -1.3868142f, -0.11050398f, + 0.22186136f, -1.1241394f, -0.032272544f, -1.314553f, + 0.12461092f, -2.1759012f, 0.065875262f, -0.016627496f, + 0.063032761f, 0.051779237f, -0.048163433f, 0.0081073698f, + 0.087084696f, 0.18262646f, -0.64155751f, 0.0056975763f, + -0.053032618f, 0.99011797f, 0.002444631f, 0.3386538f, + 0.18233834f, -0.15587364f, 0.010973314f, -0.10813448f, + -0.59636271f, 0.043623004f, 1.1545681f, -0.069147766f, + 0.063460648f, -0.880943f, 0.47743642f, -0.96603328f, + 0.019325377f, 0.67420793f, 0.77603233f, 0.266179f, + 0.16943702f, -0.050350308f, -0.17783859f, -1.0511363f, + 0.65794533f, -0.025684832f, -0.0055766986f, 0.35595372f, + 0.47426346f, -0.041878045f, -0.39591748f, 0.40139759f, + 0.0054422985f, -0.029043209f, -0.34627733f, 0.59653491f, + -0.00059445715f, 0.035214446f, -0.20035081f, -0.52376485f, + -0.024508219f, 0.58469093f, 0.049639821f, -1.102283f, + 0.50248563f, -0.036427986f, -1.2533284f, -0.03191964f, + -0.089410111f, -2.3010967f, -0.051766198f, -0.36242512f, + 0.13420716f, -1.9240879f, -0.044232443f, 0.033381663f, + -0.088931151f, -0.066935681f, 0.015549511f, 0.049213793f, + 0.20501722f, 0.42691022f, -0.69299215f, 0.0080372524f, + -0.022205364f, 1.4833902f, 0.05968409f, 0.33235177f, + -0.28160179f, -0.53590739f, 0.017453888f, 0.03467527f, + 0.19471815f, 0.015505216f, -0.078515604f, 0.0043513556f, + 0.033073805f, -0.8355453f, 0.70667124f, 0.87541878f, + 0.05680931f, 0.45115045f, 0.8830905f, 0.10028797f, + 0.33369586f, -0.041970156f, -0.12234771f, -0.61420059f, + 0.025236068f, 0.013524517f, -0.14602393f, 0.11467069f, + 0.58542836f, 0.19925314f, -0.66485369f, 0.33546835f, + -0.02372149f, -0.071531139f, -0.11570048f, 1.3150827f, + 0.045317244f, -0.072770633f, -0.25078359f, -0.10634013f, + 0.012322004f, 0.011793093f, 0.0034738432f, 0.328008f, + 0.99772793f, -0.17989404f, 0.83817232f, -0.055148251f, + -0.39882606f, -1.1055508f, -0.098209873f, -0.37648007f, + 0.16408248f, -4.2870083f, -0.032786064f, -0.035185784f, + 0.071303464f, 0.056586161f, -0.0102283f, 0.019899108f, + -0.33970413f, 0.026075061f, 0.94260383f, -0.002638838f, + 0.016538396f, -0.072470635f, 0.068477921f, 0.73598993f, + -0.38159266f, -0.26748708f, -0.042671207f, 0.038284399f, + 0.66999388f, -0.084983587f, -0.94507021f, -0.0013545427f, + -0.085426144f, 0.9275943f, 0.33825028f, -1.1086175f, + 0.029845696f, -0.48274484f, -0.093353078f, 0.46839401f, + -1.1612732f, -0.017587833f, -0.12080318f, -0.16350619f, + -0.75893199f, 0.016818887f, -0.22514565f, 0.10042477f, + -1.005684f, 0.084151775f, -0.059056647f, 0.079061121f, + -0.093319304f, -0.13335343f, 0.35890228f, -3.8221745f, + -0.039884169f, -0.0081631569f, 0.046000101f, 0.50115621f, + -0.10605948f, -1.7723382f, -0.13081883f, -1.1613529f, + -0.33706647f, 0.010509137f, -0.29536393f, 0.043913841f, + 0.025351025f, 0.18824227f, -0.10798408f, -1.7501837f, + -0.026348282f, -0.36916584f, 0.002999997f, -0.0045595965f, + -0.059345011f, 0.016923431f, -0.019197743f, -0.07253325f, + 0.018025959f, -0.27013037f, -0.54414803f, -0.054731525f, + -0.048933856f, 0.083960824f, -0.017134074f, -0.23874113f, + -0.44740644f, 0.040651787f, -0.056705918f, -0.05288716f, + -0.08027754f, -0.035587378f, -0.10976227f, -0.061747156f, + 0.014365115f, -0.16850215f, -0.025989966f, 0.052553922f, + -0.086240768f, -0.0076078754f, 0.098464034f, -0.30901372f, + 0.070256069f, 0.019705854f, -0.34421238f, -0.001213617f, + -0.044930629f, -0.014529869f, -0.22576371f, 0.052993417f, + -0.060206164f, 0.34242609f, -0.057777286f, -0.050418139f, + -0.031795271f, -0.020601233f, 0.40329227f, -0.30246958f, + 0.015356916f, -0.040808856f, -0.037358742f, 0.10118619f, + -0.13249859f, 0.095776789f, -0.064637892f, -0.16172002f, + 0.076803096f, -0.057621866f, 0.1041385f, -0.013111176f, + 0.26209205f, -0.28461656f, 0.011170364f, 0.0012598373f, + -0.0020921747f, 0.051144805f, -0.062569268f, -0.11734702f, + -0.41494212f, -0.029276673f, -0.086622268f, -0.018866112f, + 0.17144823f, 0.47775388f, 0.12532753f, 0.16340046f, + -0.038712271f, 0.22285321f, -0.080740437f, 0.022263478f, + 0.15496585f, 0.14634161f, 0.044811897f, -0.14116012f, + 0.0044657462f, -0.052894555f, 0.1956041f, 0.12216938f, + -0.060581688f, -0.10084961f, 0.039961576f, 0.1051508f, + -0.026012389f, 0.1557228f, -0.027120376f, -0.13790223f, + 0.14335988f, -0.092406571f, 0.12246277f, 0.073349595f, + -0.30750936f, -0.17660944f, 0.073859669f, 0.021806819f, + 0.28640017f, -0.43587691f, -0.34530216f, 0.27296597f, + -0.056645494f, -0.054894462f, 0.28112853f, 0.20245969f, + -0.048326433f, 0.04555621f, 0.36103565f, -0.2568208f, + 0.027268011f, 0.55690229f, 0.028111076f, 0.07832361f, + -0.10333095f, -0.0389507f, 0.007711879f, 0.0075840084f, + 0.22226204f, 0.037506174f, -0.051421035f, 0.11127028f, + -0.03307756f, 0.14749166f, -0.091795199f, 0.012897591f, + 0.043295801f, -0.071607925f, -0.065321073f, -0.006247994f, + 0.02322193f, 0.37990043f, -0.67292434f, 0.051225156f, + -0.065843977f, 0.074960433f, -0.17388983f, 0.022204749f, + 0.025632037f, -0.37841326f, 0.040422402f, -0.038695134f, + 0.33106825f, -0.077702239f, -0.29197025f, 0.05656274f, + -0.060745168f, -0.67040759f, -0.21620995f, 0.21379542f, + 0.098386563f, 1.2788368f, -1.0046055f, -0.053566497f, + 0.40156275f, -0.038901746f, -0.045954045f, 0.074224494f, + -0.16794199f, -0.01161437f, -0.068821631f, 0.016328247f, + 0.33180848f, 0.080369011f, -0.063167877f, 0.14789663f, + 0.023408584f, -0.0424225f, 0.34211868f, 0.40792659f, + -0.062469281f, -0.12203625f, -0.040938899f, 0.35136464f, + -0.085075699f, 0.11637149f, -0.043316025f, 0.27365789f, + 0.38382977f, -0.16685995f, 0.6921733f, 0.017096916f, + -0.0057647703f, -0.87845308f, -0.027346913f, 0.18493432f, + 0.014058728f, -4.0578961f, -0.078072868f, -0.048718058f, + -0.073189937f, -0.0090905987f, -0.016830374f, 0.013425765f, + -0.14227715f, 0.26310891f, 0.17784292f, 0.27716425f, + 0.037435811f, 0.24252984f, 0.045651618f, -0.084843367f, + 0.34028077f, 0.16999665f, 0.011471114f, -0.035851251f, + 0.0017178291f, -0.088648446f, -0.18190242f, 0.1515844f, + 0.0017869388f, -0.086183414f, -0.24826139f, 0.28254682f, + 0.20495071f, 0.18597347f, 0.0061889184f, -0.1467312f, + -0.12144526f, 0.024604093f, 0.32722533f, 0.43314525f, + 0.2383417f, -0.12076419f, 0.1921525f, 0.16251379f, + 0.1450928f, -0.29710236f, 0.009185263f, 0.17299077f, + 0.018589349f, -0.02714164f, 0.19055033f, -0.059560947f, + 0.015844686f, 0.0056248358f, 0.3013773f, 0.26723102f, + 0.044358037f, -0.20559587f, 0.071396373f, 0.28729153f, + -0.27509895f, -0.099516407f, 0.011675824f, -0.072288118f, + -0.0029445076f, 0.22832242f, -0.08608105f, 0.32955873f, + 0.0024061892f, 0.28148818f, 0.03024775f, -0.13989224f, + 0.20570785f, -0.044548862f, -0.10030151f, 0.029822215f, + -0.6084286f, -0.91474372f, -0.5575906f, 0.15710703f, + -0.095390141f, 0.18842088f, 0.024838321f, 1.0713129f, + 0.24334092f, 1.055753f, -0.00156241f, -0.084767371f, + -0.37877613f, 0.0097615095f, -0.0093210405f, -0.15986437f, + -0.067080401f, 0.041063927f, -0.7156015f, 0.29381129f, + 0.16315371f, -0.086805709f, 0.35725969f, 0.0075707943f, + 1.1448077f, -0.11020323f, 0.12825142f, 0.9550842f, + -0.4846943f, 0.61099535f, 0.25021029f, -1.3803674f, + 0.056266733f, -0.156698f, 0.22116576f, 0.52692282f, + -0.076911263f, -0.018868001f, -0.079544723f, -0.26240352f, + 0.005559634f, -0.015383162f, -0.24494973f, 0.32668489f, + -0.03761683f, 0.48375359f, -3.0430169f, -0.024909258f, + -0.76250237f, 0.06373325f, -0.067434691f, -0.042564876f, + -0.50535762f, 0.47875214f, 0.034804199f, -0.32520947f, + 0.1274088f, 0.13107622f, -0.037669279f, -0.029787172f, + -0.11067053f, -0.043046169f, 0.036710631f, -0.10968573f, + -0.12700187f, -0.27663299f, 0.13223436f, -0.56639409f, + -0.076162651f, 0.13750058f, 0.0099166036f, -0.2132117f, + 0.03076897f, -1.9804878f, -0.093586527f, 0.003092193f, + 1.270715f, -0.031860765f, 0.69802922f, -3.0704451f, + -0.06488356f, 0.6803413f, 1.092224f, 0.39775962f, + -1.1066754f, -0.19012076f, -0.20947494f, -0.56219077f, + 0.32063201f, -0.053936031f, 0.10180421f, 0.99247468f, + 0.24917977f, -2.7904978f, -3.7618682f, 0.33899513f, + 0.63848108f, -0.22088979f, -0.32334369f, 0.26254132f, + 0.0034765967f, 0.02176642f, -1.0382297f, 0.20340998f, + 0.062408429f, -0.055261075f, -2.7928948f, 0.25211352f, + 0.029983442f, 0.55527443f, -4.0123873f, -0.56294686f, + -0.26350129f, -0.16916883f, 0.31476098f, -0.052130584f, + -0.25658077f, 0.32334065f, 0.0077887946f, 0.92708939f, + -4.1093283f, -0.031807706f, -0.065087453f, -0.11724345f, + -1.4329386f, 0.027760746f, -0.094431303f, -0.026346136f, + -0.049786851f, 0.092506208f, 0.1070324f, 0.08425013f, + -0.079548538f, 0.2267828f, 0.071275227f, 0.37065044f, + -0.00023569088f, 0.32568231f, -0.079712912f, -0.021177033f, + -0.3111316f, -0.043440588f, -0.054754194f, 0.13556106f, + -0.11313973f, -0.16117485f, 0.25889945f, 0.29172531f, + 0.020590313f, 0.014139121f, -0.15618423f, 0.07175637f, + -0.17649904f, 0.07563097f, 0.23382486f, 0.35483748f, + 0.48957032f, 0.15318048f, 0.13569438f, 0.26625592f, + 0.38458908f, -0.18883523f, 0.25804266f, 0.13419002f, + 0.037401449f, 0.010628991f, -0.30732459f, 0.21977299f, + 0.050515063f, -0.070045158f, 0.047530752f, -0.16405764f, + 0.0028993832f, -0.14975674f, 0.049211357f, 0.24790029f, + 0.30944192f, -0.14243987f, 0.18584889f, -0.12271219f, + 0.08161547f, 0.062145706f, -0.054781057f, 0.10777546f, + 0.38482192f, 0.057886068f, -0.084419407f, -0.081561565f, + -0.4221091f, -0.10426192f, -0.030376121f, 0.15955013f, + 0.095885746f, 0.21947211f, 0.27718687f, -0.019434243f, + -0.089904748f, -0.15912169f, -0.020923374f, 0.12232505f, + -0.10931528f, -0.37612134f, -0.10367569f, -0.051561579f, + 0.59231615f, -0.084360465f, -0.14700235f, -0.34035879f, + -0.029519791f, 0.29386374f, 0.043930277f, 0.065046042f, + 0.11595199f, -0.19982634f, -0.01329114f, -0.5027011f, + 0.18653396f, -0.048614807f, -0.05088453f, -0.12927157f, + -0.25194976f, 0.012538667f, 0.1163491f, 0.1336107f, + 0.13820086f, 0.006270065f, 0.62238187f, -0.34098512f, + 0.0067915181f, -0.10963203f, 0.021742437f, 0.14592595f, + -0.065839626f, 0.027110318f, -0.18937095f, 0.61653757f, + -0.0281494f, -0.23897907f, 0.01569166f, 0.58353692f, + 0.062364947f, -0.050666418f, -0.24202712f, -0.0044766911f, + -0.11156211f, -0.19983038f, -0.1020751f, -0.10729793f, + 0.26759663f, -0.31911412f, 0.034653757f, -0.0011933419f, + 0.17186439f, 0.018821282f, -0.048379555f, -0.033069216f, + -0.28616828f, -0.13398957f, -0.14275511f, 0.038295161f, + 0.006101869f, -0.053522088f, -0.15445405f, -0.17072649f, + -0.2162919f, 0.034825943f, -0.072240405f, -0.01286279f, + 0.016643653f, 0.030869624f, 0.35550025f, -0.0065630656f, + 0.015607527f, 0.1778321f, 0.05624079f, 0.27765062f, + 0.047417969f, 0.15766636f, 0.22633761f, 0.11103354f, + 0.2776286f, -0.045517344f, -1.1825643f, 0.10975068f, + -0.20181897f, 0.11098579f, 0.075761601f, 0.24720849f, + 0.074220076f, -0.87110102f, 0.27208278f, -0.12333182f, + -0.052533131f, 0.032511331f, 0.1395694f, 0.2227847f, + -0.10626028f, 0.065350495f, 0.036480393f, 0.1847923f, + -0.14427795f, 0.047005109f, 0.083512895f, 0.17228453f, + 0.11741441f, -0.078615189f, 0.058475111f, -0.022242114f, + -0.088133894f, 0.23631844f, 0.010024169f, -0.13446558f, + 0.16757274f, 0.11797021f, -0.072204717f, -0.030137166f, + -0.013189073f, -0.031281903f, -0.13051216f, -0.017340846f, + -0.17793754f, 0.13914965f, -0.7088542f, 0.12372472f, + 0.05465246f, -0.008983653f, 0.067610316f, -0.052280422f, + 0.030749908f, 0.23195696f, -0.10057241f, 0.0130987f, + -0.82402885f, -0.086276069f, 0.041489832f, 0.11441323f, + 0.054433245f, -0.010246133f, -0.13764526f, 0.19801894f, + 0.039391302f, 0.15793599f, -0.0024961985f, -0.74322474f, + -0.018767204f, -0.069690779f, -0.48508009f, 0.60090816f, + -0.26355487f, 0.034141552f, 0.30398113f, 1.1631874f, + 0.093482442f, 0.30450442f, -0.30725843f, -1.0129858f, + -0.066773675f, -0.075756833f, 0.42901531f, -0.17272873f, + -0.06389831f, -0.082330734f, 0.10110199f, -0.33234793f, + 0.019411886f, 0.17178525f, -0.010571993f, -0.53850156f, + 0.1509245f, -0.13337044f, 0.0041126548f, 0.04714869f, + -0.0019118455f, 0.26056394f, -0.07746087f, -0.31174168f, + 0.004901641f, -0.15405387f, -0.072507985f, -0.077580445f, + 0.18434383f, 0.032994401f, -0.075124159f, 0.005246412f, + 0.11913445f, -0.13110405f, -0.098348387f, -0.033475284f, + 0.019625999f, -0.25714177f, -0.027495963f, 0.0086067645f, + 0.4535194f, -0.45283443f, 0.01460854f, 0.015356762f, + 0.0026075661f, 0.028994882f, -0.080502078f, -0.041417081f, + -0.13491417f, 0.06997361f, 0.047545522f, -0.058066983f, + -0.059445266f, -0.16838586f, -0.046690833f, 0.032490812f, + -0.16262849f, -0.078763075f, 0.62103605f, 0.078432627f, + 0.13109654f, 0.0052289111f, -0.012487362f, -0.12620935f, + 0.089354388f, 0.43151176f, 0.23612323f, -0.045056898f, + -0.090774924f, -0.11889718f, 0.12347053f, -0.058299616f, + -0.11450285f, -0.015817685f, -0.01610963f, 0.040945165f, + 0.055435892f, 0.27311528f, 0.04288736f, -0.018936325f, + 0.2450683f, -0.051742449f, 0.0059147528f, 0.037465423f, + -0.1529015f, -0.17042655f, -0.10502427f, 0.27532986f, + -0.024335656f, -0.0088817505f, -0.031228615f, -0.045406654f, + -0.14637673f, -0.12959422f, -0.073566891f, -0.016931908f, + -0.057633843f, -0.054453343f, 0.24055262f, -0.057345737f, + -0.053702075f, -1.0009429f, -0.13196546f, 0.014657919f, + 0.2942363f, 0.61423182f, -0.075493544f, 0.0068099522f, + -0.52523363f, -0.034813128f, 0.13704145f, 0.025503624f, + -0.0056664264f, -0.17608483f, 0.13523717f, -1.6788685f, + -0.065498777f, -0.40496302f, -0.3430967f, -0.15374826f, + -0.84628403f, -0.074271761f, 0.023710653f, 0.36234081f, + 0.18928857f, -0.021363437f, 0.24202324f, -0.49966177f, + -0.08842887f, -0.1337958f, 0.62912571f, 0.52259886f, + -0.021614484f, -0.079827555f, -0.36116943f, -0.76370305f, + 0.041194476f, -0.084721006f, 0.030246966f, -0.15893973f, + -0.03065997f, -0.09847869f, -0.088939264f, 0.13951112f, + -0.53623056f, -0.11312396f, -0.38343051f, 0.016538544f, + 0.4343901f, -0.37149248f, -0.10749337f, 0.049773965f, + -0.062688567f, -2.1855333f, -0.0033760301f, -0.10001893f, + 0.11167101f, 0.045032397f, -0.068210229f, 0.0070732483f, + 0.066700257f, -0.21372485f, 0.18269914f, -0.046218511f, + -0.0038519825f, -1.1366165f, -0.041731209f, -0.013658674f, + 0.12127063f, 0.31271574f, -0.094790258f, -0.040548384f, + -0.38814765f, -0.051121242f, 0.87043589f, -0.07677874f, + -0.052367285f, -0.2513957f, -0.75978434f, 0.34109643f, + -0.0018600909f, -0.31825647f, -0.32009664f, 0.34142116f, + -0.21213628f, -0.078936748f, 0.36305737f, -0.081842527f, + 0.74195892f, -0.0050165798f, 0.3636657f, 0.010038089f, + -1.1036958f, 0.061471201f, 0.15678406f, -0.41091111f, + 0.033262469f, 0.0064020539f, -0.45745096f, 0.88252056f, + -0.0069079455f, 0.011408147f, 0.0091916984f, -0.15971902f, + -0.1125019f, 0.20670152f, 7.9708101e-05f, 0.62114286f, + -0.28606743f, -0.11446913f, -1.5323354f, -0.0079616848f, + 0.016605711f, -0.26087967f, 0.05691674f, 0.70714211f, + 0.011733172f, 0.17465653f, -0.084311672f, -0.083061412f, + 0.011945603f, -0.010543756f, -0.084723003f, -0.020598715f, + 0.13476476f, 0.27550146f, 0.50162846f, 0.095822088f, + 0.051198255f, -0.28764865f, -0.085659266f, 0.51750988f, + -0.49390465f, 0.42652246f, -0.0062326882f, -0.12113991f, + -0.36385697f, -0.10172484f, 0.23052627f, -0.0034322529f, + -0.020358063f, -0.22124767f, 0.026432874f, -0.22662801f, + 0.045354303f, -0.24373992f, 0.0037235108f, 0.2409707f, + -0.27941617f, 0.034756318f, 0.56543535f, -0.34859869f, + 0.25415748f, 0.035227917f, 0.49575254f, 0.226864f, + -0.30951232f, 0.059466224f, -0.18819183f, -0.35011333f, + 0.037979681f, -0.072131626f, -0.068325624f, 0.30688986f, + -0.046105407f, -0.025762025f, -0.075989693f, 0.046363123f, + -0.020881159f, -0.15412733f, -0.062701084f, 0.030335501f, + -0.14105557f, 0.0026219336f, 0.1697346f, -0.068272337f, + 0.030603658f, 0.26893586f, -0.034346443f, -0.12632817f, + 0.21926209f, -0.32323369f, -0.0037322857f, -0.039721191f, + 0.33655351f, 0.005381017f, -0.0087460596f, 0.03857515f, + 1.300068f, 0.88368869f, 1.7790836f, -0.21379875f, + 0.073240876f, -0.60700285f, 0.023819594f, -3.2354846f, + 1.3246882f, -3.1267869f, -0.043492191f, -0.059265353f, + 1.4825362f, 0.11800591f, -0.45600793f, 0.75192821f, + -0.020045962f, -0.21208093f, 0.10645804f, -1.0345907f, + -0.26220915f, -0.022064488f, -0.51427495f, -1.1270713f, + -4.9363012f, 0.01741744f, 1.469462f, -3.2710311f, + 0.39698824f, 0.46357593f, -0.38004938f, 2.5106604f, + -1.8270977f, 3.267401f, -0.13015632f, -2.783603f, + -0.086977169f, -0.031354889f, 1.4545288f, 0.84215248f, + -0.024043467f, -0.026771752f, -0.11129373f, 0.4317365f, + -0.060114387f, -0.24960469f, 4.6731243f, -2.4958839f, + 0.60445368f, -0.022586476f, -0.053056795f, -0.1006262f, + 2.642297f, -1.7055357f, -0.075939104f, 1.3433661f, + -0.10020057f, -0.47010881f, -0.091422059f, -0.094537124f, + 0.65428382f, -0.047100913f, 0.04296384f, -0.0040477421f, + 0.2508685f, -0.2228974f, -0.32467014f, -0.054795198f, + -0.060900867f, -1.6867628f, 0.014182626f, -0.94948107f, + 0.42415968f, 0.50153065f, -0.030238325f, -0.020633282f, + 0.40262619f, -0.096869364f, -0.78165269f, 0.17041337f, + 0.038574912f, 0.26654607f, -0.70276493f, -0.1294712f, + -0.026410569f, -1.4579649f, -2.0587461f, -0.71018845f, + -0.65402991f, -0.060170051f, -0.039633121f, 0.96106976f, + 0.023390453f, -0.0058451388f, 0.22058751f, -0.94130844f, + -0.53915024f, 0.011504969f, 0.16073443f, 0.29111075f, + -0.098946035f, -0.012021761f, 0.46428391f, -0.50601202f, + -0.075294115f, 0.048309274f, -0.15648773f, 0.176937f, + -0.042092483f, 0.71093833f, -0.034671057f, 0.99557781f, + -0.10896906f, -0.15597101f, 2.995162f, -0.097588621f, + 0.098174483f, 1.0675396f, -0.033689074f, 0.84866357f, + -0.17393157f, 0.34309652f, -0.051637813f, -0.042715974f, + -0.056031805f, -0.014935879f, 0.0093663223f, -0.032225516f, + 0.046978656f, -0.11762147f, -0.50017887f, -0.08691144f, + -0.0022573809f, 0.064877085f, -0.086381219f, -0.12635309f, + 0.37438303f, -0.00090550323f, -0.030320009f, -0.087040462f, + -0.10049476f, -0.10695878f, 0.2246356f, -0.090910874f, + -0.00092836184f, 0.068939447f, 0.073995151f, -0.027328845f, + -0.051009946f, -0.0071875216f, 0.08807677f, -0.089074858f, + 0.025327001f, -0.10029274f, -0.34811124f, 0.43265858f, + 0.020725448f, -0.035046488f, -0.084967345f, -0.36726516f, + -0.17857879f, 0.29308024f, -0.33727497f, 0.63649595f, + 0.070213951f, -0.059896939f, 0.08885961f, 0.041790526f, + -0.0096026203f, 0.042125683f, -0.16517814f, -0.12186266f, + -0.061543699f, 0.078289419f, -4.4446402f, -0.269068f, + -0.11119478f, -0.13334171f, 0.035869472f, -0.094075367f, + 0.028149011f, 0.029487792f, -0.12203489f, 0.40705189f, + 0.044622883f, 0.10044339f, 0.096928582f, 0.012590479f, + -0.33626989f, -0.0016228746f, -0.020348122f, 0.012012934f, + 0.20802163f, 0.03987604f, -0.050222058f, 0.44742039f, + -0.076190315f, 0.16770597f, 0.027559595f, 0.0040790425f, + -0.010017638f, -0.41218615f, 0.040964346f, 0.028802473f, + 1.1706314f, 0.026401056f, 0.44485798f, 0.049465176f, + 0.010526589f, -0.13380353f, 0.020738227f, 0.093899839f, + -0.21789984f, 0.09179543f, 0.0010709245f, -0.0036882085f, + 0.19300072f, -0.070333712f, -0.17888886f, -0.67423809f, + -0.45097959f, -0.6710692f, 1.3279614f, 0.57057261f, + -0.05160813f, 0.40039873f, 0.27649909f, 0.23375373f, + 0.01067217f, -0.091031171f, -1.1385528f, 0.086235031f, + 0.013188956f, -0.10991143f, 0.73865122f, -0.51499689f, + -0.048267484f, 0.22422761f, 0.15996101f, 0.082745351f, + 0.080702864f, -0.00062223448f, -0.27882481f, 0.016926473f, + -0.087930568f, -0.057320777f, -0.083190478f, 0.8553502f, + 0.16781738f, -0.0169532f, -0.050118912f, 0.014267256f, + -1.3540373f, 0.025718523f, -0.11326013f, 0.63258594f, + 0.057723284f, -0.16599168f, -0.22018111f, -0.30793071f, + -0.02778448f, 0.061582707f, -0.0073084864f, -0.13337275f, + -1.0399344f, 0.53843176f, -0.002813434f, 0.00055321626f, + -0.34497032f, 0.0060953959f, 0.034739975f, 0.4832277f, + -0.094333127f, 0.21988149f, -0.2376761f, 0.050213337f, + -0.24952951f, -0.047514655f, -0.10417998f, -0.12455335f, + 0.13691244f, -0.036326453f, -0.49429891f, 0.30354986f, + -0.12416631f, 0.38761458f, -0.0052919211f, 0.019173013f, + 0.055385657f, -0.12715869f, -0.0081797f, 0.42289969f, + -0.018679939f, -0.098876119f, -0.090165466f, 0.060637046f, + 0.012341676f, 0.0024825577f, -0.13882881f, -0.30740687f, + -0.083789788f, -0.013111246f, -0.086845733f, 0.20825f, + 0.17740637f, 0.037536811f, -0.079467528f, -0.041004248f, + 0.047278676f, 0.094046593f, -0.056663726f, -0.087634109f, + 0.21505502f, 0.004491623f, 0.014738492f, -0.039122038f, + -0.45852017f, -0.036510132f, -0.077375606f, 0.048258588f, + 0.11258242f, -0.11517857f, 0.18180187f, 0.10758348f, + -0.037191339f, -0.048536547f, -0.076692238f, 0.077917881f, + 0.3253628f, 0.13795386f, -0.00035974474f, 0.020090038f, + 0.17890815f, -0.075518683f, 0.14144289f, 0.091133706f, + -0.065173678f, -0.17711288f, 0.18779023f, -0.087350227f, + 0.28758678f, 0.044530421f, 0.0078270799f, 0.22517158f, + -0.17587094f, 0.038786139f, 0.025324831f, 0.17544219f, + 0.011972585f, 0.16787139f, -0.064014927f, 0.063430935f, + 0.037431303f, 0.35152945f, 0.52379316f, 0.30880079f, + -0.0080838054f, 0.0025782227f, -0.064842701f, -0.055067569f, + -0.096337497f, -0.10095952f, -0.10136285f, -0.042292643f, + -0.055130627f, 0.16845296f, 0.001841586f, -0.21435723f, + 0.14394617f, -0.10585373f, 0.0067468979f, 0.032732964f, + 0.18008594f, 0.073692061f, 0.0049007307f, -0.083147272f, + 0.097413838f, 0.049456425f, -0.047233764f, -0.10806481f, + -0.1684477f, -0.02350386f, -0.069132321f, 0.09973482f, + 0.093767725f, -0.18580937f, -0.30642566f, 0.078625835f, + 0.035596557f, -0.070210047f, -0.10426425f, 0.17940409f, + -0.082266398f, 0.37884656f, 0.024628146f, -0.098473154f, + -0.029349867f, 0.018384144f, 0.32589039f, -0.09452191f, + -0.043726105f, -0.12591836f, 0.070093237f, 0.12567575f, + -0.016375711f, -0.13870354f, -0.10536418f, -0.32213697f, + 0.048825912f, 0.018062484f, 0.0073692505f, 0.40983844f, + -0.48144931f, 0.067711577f, 0.034841247f, 0.60535169f, + 0.18871009f, 0.026448568f, 0.29304597f, -0.026114795f, + 0.00046964755f, 0.026240209f, 0.062679894f, 0.13152999f, + 0.0038555865f, -0.071757659f, -0.00010918995f, -0.19117549f, + -0.084502727f, -0.08257439f, -0.0065248739f, -0.11425732f, + 0.52284855f, 0.014168662f, 0.083729692f, 0.046876147f, + -0.12058848f, -0.032951042f, -0.029197002f, -0.03717022f, + -7.2325606f, 0.048466682f, 0.021469872f, -0.033394277f, + -0.048280317f, -0.0070536672f, -0.021838125f, -0.033571716f, + 0.41043514f, 0.31569055f, 1.0319127f, -0.053792708f, + 0.01640173f, -0.04471539f, -0.0005450804f, 0.50860643f, + 0.00046176268f, 0.22215228f, -0.092796996f, -0.050908767f, + 0.045029182f, -0.076584294f, -0.55618721f, -0.083282366f, + -0.088221878f, 0.73582464f, 0.007466367f, -0.36806753f, + -0.15962407f, 0.14045878f, 0.035667937f, 0.25321433f, + -1.1620976f, -0.069611609f, 0.25582388f, -0.30512461f, + -0.50340021f, 0.005802589f, 0.13249144f, 0.18043348f, + -0.88523769f, -0.01982322f, 0.32557058f, 0.36974367f, + -0.071805961f, -0.026019435f, 0.2256417f, -1.1871915f, + -0.10126714f, -0.041430946f, 0.014862232f, 0.60663956f, + -0.087166816f, -0.18772106f, -0.050117183f, 0.19847076f, + 0.42653605f, -0.058867149f, 1.0680673f, -0.050037004f, + 0.060493842f, 0.27729869f, 0.018674968f, -1.229182f, + -0.032156285f, 0.064024493f, -0.038351715f, 0.0054317424f, + 0.052777123f, -0.01218435f, -0.048348486f, -0.030850718f, + -0.24753965f, -0.66676283f, 0.25424719f, -0.066449568f, + -0.043042999f, 0.21532464f, -0.048945319f, -0.17952567f, + 0.35476667f, 0.38579243f, -0.043527145f, -0.092947401f, + 0.19953607f, -0.049033154f, 0.10280734f, 0.098391026f, + -0.12606904f, 0.64666027f, -0.2094887f, -0.78126526f, + -0.042779077f, -3.6310332f, -0.61420333f, 0.15607384f, + -0.26473752f, -0.05705044f, 0.14146191f, 0.17781651f, + 0.35937268f, 0.0069209156f, 0.065791838f, -0.30930364f, + -0.57202834f, 0.24565293f, -0.43134156f, -0.38264704f, + 0.049425524f, 0.062250815f, -0.12883118f, -1.7037508f, + -0.014809419f, -0.098922171f, -0.016871965f, -0.28697604f, + -0.091954961f, -0.088361464f, -0.012484444f, -0.16483591f, + -0.049275603f, -0.058710061f, -0.82045496f, -0.10046747f, + -0.047490947f, 0.46645394f, -0.053087577f, 0.31170729f, + -0.10667334f, 0.91380852f, -0.097717091f, -0.0034401631f, + -0.032398235f, -0.032494955f, -0.017510494f, -0.017728373f, + -0.03060592f, -0.20375603f, -1.0156304f, -0.0057887435f, + 0.01762541f, 0.69294852f, -0.071064293f, 0.55454743f, + 0.17544401f, 0.06560199f, -0.11674619f, -0.089036539f, + -0.3967163f, -0.027638005f, 0.00038337932f, 0.16106687f, + 0.018797358f, -0.3924568f, 0.50823623f, 0.015318918f, + 0.080393039f, 0.017248085f, 0.15651686f, -0.11768261f, + 0.2448304f, 0.022332087f, -0.33265331f, -0.14997825f, + -0.26761913f, -0.00065147015f, -0.46899056f, -0.46408185f, + -0.33178502f, 0.2169859f, 0.21597451f, 0.89673954f, + -0.1136399f, -0.07325542f, 0.034944128f, 0.00050530449f, + -0.06100614f, -0.10105786f, 0.069224097f, 0.17279533f, + 0.036998201f, -0.37999222f, 0.012308077f, -0.46022367f, + -0.61219144f, -0.1411334f, 0.27443916f, 0.069597892f, + 0.057043422f, 0.13104744f, -0.066886023f, -0.13609396f, + 0.12402165f, 0.091676511f, -0.077622838f, -0.099067137f, + -0.043037258f, -0.064653985f, -0.09159258f, -0.043558203f, + -0.38642481f, -0.35330632f, -0.54564655f, 0.02886611f, + -0.034514003f, -0.28853965f, -0.044325255f, -0.260528f, + -0.11043114f, -0.028283229f, -0.016377561f, 0.020245155f, + -0.13046725f, -0.054157726f, -0.13737544f, 0.10381761f, + -0.060808547f, -0.21522348f, -0.011772619f, -0.2140466f, + 0.014736393f, -0.58069426f, 0.064694963f, -0.19786388f, + -0.51017624f, -0.014712782f, -0.094564237f, -0.18338966f, + 0.10873664f, 0.01571382f, -0.036375783f, 0.22391155f, + -0.1638719f, 0.33295938f, -0.071504466f, -0.68288296f, + -0.021875001f, -0.053562205f, 0.19280802f, 0.16049054f, + -0.003731377f, -0.10889102f, 0.042080123f, 0.18931749f, + -0.12340768f, -0.34082928f, 0.0078228181f, 0.080283299f, + -0.11585079f, -0.14276451f, -0.040317345f, 0.011406935f, + -0.18357612f, -0.11408061f, -0.092961997f, 0.31284013f, + 0.05616276f, 0.26025468f, 0.0045233457f, 0.026614176f, + -0.12030124f, -0.042934831f, -0.076007955f, -0.018213058f, + 1.6513325f, -0.88391656f, 0.32789236f, -0.8586027f, + -0.056030706f, -0.14232168f, 0.12038498f, 0.78934473f, + 0.70205498f, 0.56136823f, -0.093072206f, -0.089115918f, + -1.0146235f, 0.049935851f, 0.91301298f, -0.60575956f, + -0.040179696f, -0.47331548f, -0.53003538f, -0.54515082f, + -0.44352564f, -0.29344055f, -0.11285051f, -0.34224871f, + -0.20083295f, 0.061157566f, 0.47652197f, 0.31096703f, + -0.19075388f, -0.3026965f, -0.4880375f, -0.41528249f, + 0.1421946f, -0.3329052f, 0.14095552f, -2.5747695f, + -0.027683645f, 0.012007884f, 0.51126748f, -0.037741303f, + 0.10475964f, -0.06997478f, -0.4851886f, 0.74474043f, + 0.096353136f, -0.052736081f, -1.5396994f, 0.18976465f, + -0.8457669f, -0.071033128f, 0.196261f, 0.024158165f, + -4.438374f, -0.064609699f, -0.092012733f, 0.18791977f, + -0.21701804f, 0.11501442f, -0.044039875f, 0.035136916f, + 0.29178834f, -0.086254805f, 0.024013693f, 1.0046295f, + 0.19084254f, 0.21026392f, -0.98308808f, -0.012888511f, + 0.017844893f, -0.30328047f, -0.023401396f, 0.21075144f, + -2.355557f, -0.93679327f, -0.067131817f, 0.041660637f, + -0.16860007f, -0.03005049f, 0.17721006f, -0.12888306f, + 0.023563875f, -1.513953f, 0.71080577f, 0.70097911f, + 0.003025423f, 1.5347781f, 0.62650746f, -0.27314556f, + 0.52238411f, -0.03469272f, 0.16166f, -0.03691227f, + 0.29196632f, 0.034979396f, -0.29282632f, 0.27766857f, + -0.026734171f, 0.075803384f, -0.03509514f, 0.20137627f, + -0.088591047f, 0.0030698264f, -0.28807282f, 1.289519f, + 0.047244404f, -0.05999456f, -0.01904916f, -0.48312134f, + -0.10572351f, -0.06680645f, 0.030298715f, 0.65202588f, + -0.095612243f, 0.0016070482f, -0.51103902f, -0.1025036f, + -0.050015833f, -2.7044544f, -0.13521041f, 0.14551921f, + -0.11943231f, -3.111897f, 0.047278874f, -0.11520971f, + -0.029400604f, 0.033385333f, 0.050444949f, 0.017142087f, + -0.28791997f, 0.1039418f, 0.26541546f, 0.22591586f, + -0.077931866f, 0.1477564f, 0.013980493f, 0.11410692f, + -0.13579483f, 0.16858418f, -0.040521432f, -0.10384158f, + 0.27363107f, 0.039533347f, 0.011838021f, 0.40900403f, + -0.0098846983f, 0.088793375f, -0.41514048f, -0.12439532f, + 0.18635552f, 0.035685755f, -0.078884847f, -0.23246349f, + -0.012019132f, -0.061380256f, 0.46021926f, -0.15031761f, + 1.2662563f, 0.10021018f, 0.039289325f, -0.62462926f, + -0.12676923f, 0.037946444f, 0.2229885f, 0.32727462f, + -0.028705886f, -0.048250504f, -0.094855957f, 0.11168044f, + 0.02705346f, -0.044207726f, -0.075841956f, 0.55944413f, + -0.019856663f, -0.005761297f, -0.044293556f, 0.43718299f, + -0.23413752f, -0.04251352f, 0.070472188f, -0.043038767f, + 0.47927338f, 0.24616031f, -0.12254085f, 0.30803642f, + -0.10932735f, 0.16597863f, -0.034811359f, -0.078232244f, + -0.017999163f, -0.057445846f, 0.0082492931f, 0.10864612f, + 0.15833113f, 0.57652467f, -0.065106615f, 0.15956029f, + -0.050727118f, 0.57500046f, 0.032157488f, -0.074965417f, + -0.43055466f, 0.047970377f, 0.025815835f, 0.049114704f, + 0.55826205f, -0.033170205f, 0.43725204f, 0.073407099f, + 0.025281113f, -0.0828958f, 0.32162628f, 0.33146679f, + 0.0017800049f, 0.25083622f, -0.03226801f, 0.30914015f, + 0.23606911f, 0.026909355f, 0.41393638f, 0.2573294f, + -0.41145715f, 0.080120288f, 0.45225033f, -0.074693859f, + 0.21370928f, 0.30640471f, -0.054914061f, -0.036260102f, + -0.048030213f, 0.014054791f, -0.2300207f, 0.070570767f, + 0.017333629f, -0.039002743f, 0.11036357f, -0.16814595f, + -0.00029198336f, 0.14036448f, 0.20572886f, -0.0072753909f, + 0.022179725f, -0.017318157f, -0.21058463f, -0.12612881f, + -0.092330128f, -0.019026171f, -0.028279826f, 0.064037204f, + 0.33263171f, 0.16616018f, -0.016287744f, -0.07640031f, + 0.38798699f, 0.013265324f, -0.030405523f, 0.068478025f, + -0.15215845f, 0.0048910617f, -0.86250341f, -0.10129414f, + -0.0014308176f, -0.94641221f, 0.037902769f, -0.47398561f, + -0.6011076f, -0.19982621f, -0.020200865f, -0.051700328f, + -0.58794117f, 0.024581928f, 1.6686627f, -0.1586109f, + 0.00035627169f, -1.8781054f, 0.013299476f, 0.8587727f, + -0.091613188f, -0.4378753f, -0.24170732f, 0.012908567f, + 0.20232327f, 0.0071076136f, 0.48003587f, -0.38901958f, + 1.0227575f, -0.031418193f, 0.29532948f, -0.14382879f, + -0.7699371f, -0.17464127f, -0.20234308f, -0.7263875f, + -0.094246209f, -0.046499372f, -0.90763158f, 1.1879029f, + -0.016549369f, -0.023025198f, -0.082782611f, -0.79769915f, + 0.0060625044f, 0.080092289f, 0.032719646f, 0.2836836f, + -0.85430926f, -0.09402997f, -2.2515185f, -0.087030113f, + 0.065520741f, -3.5027056f, -0.06861718f, 1.0204242f, + -0.15156005f, -0.72416943f, -0.071419723f, 0.033496112f, + -0.082043223f, -0.1072385f, 0.046482392f, 0.031000875f, + 0.059389461f, 0.19688019f, -0.17817527f, -0.26414475f, + -0.0874338f, -0.071241096f, -0.071986169f, -0.042084794f, + -0.01518901f, -0.21205886f, -0.018889211f, -0.097466156f, + -0.18395676f, -0.035079911f, 0.04161967f, -0.3201392f, + 0.021473957f, -0.12803495f, 0.12763698f, 0.0093502402f, + -0.014435519f, -0.10543296f, -0.13153534f, 0.26019683f, + -0.06587223f, -0.043107171f, 0.19818543f, -0.07857801f, + 0.14651977f, -0.71555436f, -0.23707868f, -0.16927603f, + 0.089671202f, 0.14285034f, -0.093512304f, -0.030820457f, + -0.10430788f, -0.080423087f, 0.074733064f, -0.15251474f, + -0.049980864f, -0.069064066f, -0.11874246f, -0.24864021f, + -0.022530872f, 0.068654701f, -0.53725088f, -0.055698387f, + 0.010347833f, 0.053851668f, 0.020460365f, -0.010660647f, + -0.092577778f, -0.017060768f, -0.092795961f, -0.077449553f, + -0.21786359f, -0.14085826f, 0.014620484f, -0.0088546984f, + 0.16874704f, -0.0827429f, -0.055283029f, -0.040266138f, + -0.27624017f, -0.87047368f, 0.47792694f, -15.306649f, + -0.056967482f, 0.083714329f, -0.092891678f, -0.32602239f, + -2.0283589f, 0.3058334f, 0.025895741f, -0.097083464f, + -0.22116008f, -0.10336096f, -0.49185783f, 0.41591173f, + -0.17042908f, -0.2029431f, -0.38196212f, -0.027932979f, + -4.469666f, -0.091719881f, 0.011261395f, -0.15358236f, + -0.080396496f, -0.049609229f, -0.55563468f, -0.19465025f, + -0.30687127f, 1.4309853f, -0.18416473f, -0.75361884f, + -0.27129644f, 0.22725882f, 0.082823843f, 0.1931999f, + -0.038157716f, -0.014356066f, 0.23180027f, 0.018372944f, + -0.083737388f, 0.0093438439f, -0.85702932f, -0.47597924f, + 0.0057487315f, -0.27195609f, 0.17170578f, -0.29574278f, + 0.18709596f, -0.0016384633f, -0.074001834f, 0.014973745f, + 0.1641127f, -0.015644884f, 0.0076047229f, -0.2147612f, + -0.097146966f, -0.024545608f, -0.014131124f, -0.045550801f, + 0.30820867f, -0.11803371f, -0.039077051f, -0.023686728f, + -0.17328742f, -0.20374629f, -0.520877f, 0.29805174f, + 0.04460473f, -0.35292032f, -0.031935565f, 0.72705603f, + 0.37082008f, -0.64379019f, 0.048601199f, -0.049423713f, + -0.25115699f, -0.095554464f, 0.45870957f, 0.10644846f, + -0.033336196f, -0.20071767f, -0.58642137f, 0.30133155f, + 0.44884497f, 0.8449316f, 0.22940905f, -0.09327177f, + 0.10985041f, 0.010906496f, 1.1276088f, -0.3349404f, + 0.58402634f, -0.0068193781f, 0.29151678f, 0.081525922f, + -0.34399223f, 0.32140905f, 0.15678167f, 1.3754013f, + -0.041633479f, -0.026116904f, -0.49621877f, 0.079822861f, + -0.011681432f, 0.033518497f, -0.44013885f, 0.32362947f, + -0.018565966f, 0.033350505f, 0.048756659f, -0.42108357f, + 0.19244832f, -0.060806502f, -0.44257283f, 0.030287158f, + 0.28413266f, 1.1119149f, -0.0920498f, -0.22141701f, + 0.011304769f, -0.1077433f, -0.010028548f, 0.064972974f, + -0.50728017f, 0.021453111f, -0.036151417f, 0.20129444f +}; + +static const float mlp_b2[64] = { + -0.46435183f, 0.17441358f, 0.10380459f, 0.11114871f, -0.1108398f, + 0.48980576f, -0.029519089f, -0.35797065f, -0.4262805f, 0.48994166f, + -0.029114468f, -0.024831172f, 0.23569061f, -0.098281726f, 0.34958068f, + 0.074680753f, -0.1055772f, -0.036195558f, 0.086019069f, -0.17827f, + 0.35333028f, -0.05927714f, 0.05149566f, 0.047807787f, 0.066052355f, + -0.028139802f, -0.44006553f, 0.53187931f, 0.1381208f, 0.48516673f, + 0.251524f, -0.0092206467f, 0.091347136f, -0.68939781f, -0.070646204f, + 0.20783794f, -0.025764955f, -0.023495475f, -0.033129167f, 0.32426396f, + -0.084493242f, -0.075500518f, -0.080823801f, 0.33191222f, -0.020375608f, + 0.34267998f, -0.40637219f, 0.083623238f, -0.12775487f, -0.041562572f, + 0.24656406f, -0.023074336f, 0.18648103f, 0.21343975f, 0.038157992f, + 0.11154515f, -0.13542511f, 0.32128665f, -0.026927825f, -0.078881823f, + -0.068031564f, 0.026887003f, -0.10856717f, 0.46738657f +}; + +static const float mlp_w3[2048] = { + -0.12808169f, -0.052328818f, -0.047723845f, 0.11964403f, + 0.12309267f, 0.54723138f, -0.55225176f, -0.078329109f, + 0.45928326f, 0.16719946f, 0.32586497f, 0.11457784f, + 0.0012436403f, -0.038776133f, 0.15088509f, -0.21634188f, + 0.037462622f, -0.23526415f, -0.12875672f, -0.032557297f, + 0.06653402f, -0.13455461f, 0.4131346f, 0.57469982f, + -0.58903617f, 0.11649852f, 0.025624383f, -0.16113316f, + -0.093247868f, -0.34977937f, -0.20837833f, 0.9830789f, + 0.038425215f, -0.0049533639f, 0.32383418f, 0.56653374f, + -0.57082766f, -0.37604418f, 0.07314118f, -0.087049127f, + 0.24241163f, -0.080318563f, 0.33469778f, -0.049214784f, + -0.042889606f, -0.14541984f, -0.18412384f, 0.33761042f, + -0.10844485f, 0.37318283f, -0.070995055f, -0.092720844f, + 0.2613728f, 0.025199251f, -0.10013124f, 1.1342043f, + 0.6386568f, -0.06506341f, 0.13225374f, 0.24741995f, + -0.13484988f, -0.0064254072f, -0.17396714f, -0.086253479f, + -0.0012439672f, 0.043311916f, 0.35495016f, 0.097640775f, + -0.0086776996f, -0.11057793f, 0.061429549f, -0.096415542f, + 0.35926694f, 0.059725013f, 0.02609971f, -0.39239988f, + 0.030055068f, 0.046908211f, 0.12860709f, -0.30041066f, + -0.087252498f, -0.25806609f, -0.033614971f, 0.29054007f, + -0.10404668f, 0.144146f, 0.26916194f, -0.23336118f, + 0.063162796f, 0.18566737f, -0.0037107964f, -0.12751672f, + -0.20060538f, 0.62271231f, 0.3452017f, -0.20108737f, + -0.092888318f, -0.099407479f, -0.21719362f, 0.089890212f, + -0.35062966f, -0.546538f, 0.15392007f, -0.024421945f, + -0.12315128f, 0.83329791f, -0.11315124f, -0.0080690971f, + -0.15232916f, 0.05241856f, 0.022404458f, 0.12902719f, + -0.055372071f, 0.30922425f, 0.024337396f, -0.10757918f, + 0.09631525f, -0.31747311f, -0.41522002f, 0.26986399f, + 0.26998931f, -0.36313564f, -0.0056059775f, 0.1303385f, + 0.032657158f, -0.1349255f, -0.19624053f, 0.10919709f, + -0.045139521f, 0.095419377f, 0.11653599f, 0.049322929f, + -0.019206196f, 0.083462797f, -0.10693606f, -0.065625697f, + 0.012217063f, -0.0065739336f, 0.11337598f, 0.038504455f, + 0.026650399f, 0.12136346f, -0.025767505f, -0.023759797f, + -0.073782951f, 0.099395864f, -0.031783126f, 0.067748487f, + -0.011274989f, 0.065430835f, -0.11752117f, -0.016371733f, + -0.00061125384f, 0.025762219f, -0.046989355f, 0.059648331f, + 0.11273364f, -0.0363218f, 0.04260242f, 0.0058844388f, + -0.09955132f, 0.074069463f, 0.6762358f, -1.0374516f, + 0.21462801f, -0.34456521f, 0.27561879f, 0.082044065f, + 0.59672379f, -0.11085521f, 0.14393911f, 0.62917393f, + 0.079992369f, -0.18744355f, 0.20202486f, -0.55484492f, + -0.071499735f, 0.2741884f, 0.093657531f, -0.10031625f, + 0.92457002f, -0.69968593f, -0.075391561f, -0.31264758f, + 0.066237777f, -0.32634881f, -0.8333683f, 0.05335582f, + -0.19390954f, -0.022559039f, 0.25357795f, -0.13593055f, + 0.053662121f, 0.022681698f, 0.046314333f, -0.026196154f, + -0.034093447f, -0.074744955f, 0.035708468f, 0.084125444f, + 0.037700761f, -0.038668141f, 0.021396032f, -0.14249635f, + 0.10821909f, 0.01788488f, 0.030499186f, -0.10667638f, + 0.040424034f, 0.0076612774f, -0.078438893f, 0.0039569498f, + 0.02581181f, -0.0046388884f, 0.029656813f, -0.012101502f, + 0.15050492f, -0.0097612524f, 0.14144832f, -0.070405096f, + 0.018191054f, -0.00061165792f, -0.014276315f, 0.027391503f, + -0.015624297f, -0.051637225f, -0.47596624f, 0.37382951f, + 0.12582314f, 0.10519083f, 0.28166562f, -0.098703742f, + -0.45995063f, -0.023883313f, 0.033406787f, -0.093590535f, + -0.12720999f, -0.11894552f, -0.0083446875f, -0.14372285f, + -0.088658974f, -0.029776251f, -0.12947649f, 0.56259763f, + 0.038718093f, 0.59793007f, -0.11163558f, -0.2426922f, + -0.43237931f, -0.0051366528f, -0.43077195f, -0.27046204f, + -0.10273743f, -0.2877751f, -0.32668555f, 0.020754779f, + -0.055949986f, -0.11348735f, 1.5081776f, 0.13199894f, + 0.13519076f, 0.64363843f, 2.5271797f, -0.11560567f, + 0.25221241f, 0.82460207f, 0.4098542f, -1.2663355f, + 0.0053175408f, -0.070826963f, -0.93845105f, -0.13116963f, + 0.097363248f, 0.4995949f, 0.023101138f, -1.3653729f, + 0.90163648f, 1.0359263f, 0.097839013f, 0.15566209f, + 0.32654285f, -1.2164307f, -1.9590575f, -0.51122034f, + -0.094879068f, 0.75444579f, -1.0576731f, 0.66238332f, + -0.11439f, 0.049311981f, 0.036566485f, 0.50389266f, + -0.22526339f, 0.22421572f, 0.36273316f, 0.080949113f, + 0.034339059f, -0.15754704f, -0.02651648f, 0.014512315f, + -0.072444737f, -0.20950843f, -0.23004818f, -0.45005545f, + 0.011897321f, 1.2881446f, -0.10352977f, 0.59204018f, + 0.34423134f, 0.35777608f, 0.15454808f, -0.272939f, + 0.34286675f, -0.37851459f, 0.28636226f, 0.28324741f, + -0.097821012f, 0.38627422f, 0.12152672f, -0.37866172f, + -0.094969228f, 0.0018166602f, -0.074816518f, 0.10784334f, + -0.091682047f, 0.13474894f, 0.017185235f, -0.027176445f, + -0.0019459955f, -0.074392214f, -0.094182894f, 0.073130466f, + 0.015551835f, 0.078375749f, 0.017662944f, -0.049590871f, + -0.027468896f, 0.12268973f, 0.076309919f, -0.032916926f, + -0.062150974f, 0.051535029f, 0.059450552f, -0.087331124f, + -0.045875832f, -0.0083243996f, 0.0075756363f, -0.1027914f, + -0.075422466f, 0.04573492f, 0.11026579f, -0.11266793f, + 0.020766094f, -0.095741928f, 0.058222298f, -0.075188175f, + -0.028152788f, 0.086002447f, -0.15424755f, 0.096616283f, + -0.044074647f, -0.071879998f, -0.097033732f, 0.061783671f, + 0.032592043f, -0.025922984f, -0.059847102f, -0.086556107f, + 0.013638243f, -0.00052020629f, 0.051364288f, 0.11157563f, + 0.062240481f, -0.089667514f, -0.008833563f, 0.061276395f, + -0.1295643f, 0.0025272823f, 0.076379403f, -0.038176537f, + -0.018298134f, -0.0043032854f, 0.072002873f, 0.078517422f, + -0.11322817f, 0.009210078f, -0.2237637f, -0.39443782f, + 0.061378136f, 0.19915722f, 0.24407877f, -0.10340229f, + -0.079753712f, -0.072795041f, 0.01773043f, -0.052851539f, + -0.069311924f, -0.14375909f, -0.28917813f, -0.56845909f, + -0.14603393f, 0.36718857f, 0.02324803f, 0.36509931f, + 0.22355039f, 0.15940218f, -0.40130618f, 0.27346289f, + -0.15770985f, -0.11897062f, 0.54017419f, -0.33162582f, + -0.057931595f, -0.073323026f, -0.35368001f, 0.0755044f, + -0.089819804f, 0.062258616f, -0.035000332f, -0.028877415f, + -0.080530331f, -0.069914415f, 0.023817005f, -0.035281286f, + -0.08835192f, -0.0030077838f, 0.018908832f, -0.050792094f, + -0.053585276f, -0.037769198f, 0.010985512f, -0.077394068f, + -0.04079783f, 0.15920036f, 0.084318295f, 0.14209072f, + 0.10315345f, -0.14438976f, -0.026674245f, -0.0077945036f, + 0.096834302f, 0.099224709f, -0.092541933f, -0.0048606326f, + -0.098775581f, -0.11432265f, 0.055885784f, -0.084913552f, + -0.10716181f, -0.017688634f, -0.60415089f, 0.51060236f, + -0.077655502f, 0.5508877f, 0.024048349f, 0.05583518f, + 0.45294696f, -0.15289795f, 0.077675961f, 0.014842644f, + 0.009834839f, -0.0081570698f, -0.18590818f, -0.15969759f, + -0.052648775f, 0.049095254f, -0.093764558f, 0.39467648f, + 0.32655114f, 0.33543554f, -0.14453381f, -0.0031372991f, + 0.40144277f, 0.17933749f, -0.35810965f, 0.3331618f, + -0.062097874f, 0.050819553f, -0.16622131f, 0.11269984f, + -0.0052277134f, -0.070915595f, 0.1658576f, -0.039597124f, + 0.28210583f, -0.2907868f, -1.1772734f, 0.068373039f, + -0.11144102f, -0.39506656f, 0.52445239f, 0.54704225f, + -0.039962277f, -0.057918955f, -1.7528764f, -0.19283889f, + -0.21820737f, -0.39377886f, -0.1548586f, 0.41009155f, + 0.9204343f, 0.24508099f, -0.44279382f, 0.40593028f, + -0.16404152f, 0.20710844f, 0.91169477f, -0.88881183f, + -0.037955798f, -0.37170348f, -0.23565941f, 0.0053365207f, + -0.00034421682f, 0.053085268f, 0.067415811f, -0.10250189f, + -0.076809444f, 0.11787599f, 0.046620507f, -0.039501652f, + -0.085476518f, -0.05755141f, 0.052321121f, 0.09560819f, + 0.052226081f, -0.11736815f, -0.075407214f, 0.071318969f, + -0.039813139f, 0.14792827f, -0.029173169f, 0.048138618f, + -0.040268928f, 0.11465093f, 0.0050193374f, 0.0020091198f, + -0.074755654f, -0.070283301f, -0.0193558f, 0.12508273f, + 0.083046138f, -0.094582997f, 0.0061457357f, 0.085205108f, + -0.053608831f, -0.042753927f, -0.15424778f, -0.22638145f, + 0.25145492f, -0.31952843f, -0.29642463f, -0.15397993f, + 0.41324052f, -0.011015773f, 0.040885266f, 0.21183702f, + -0.11274751f, -0.048897613f, -0.053104933f, -0.68805069f, + -0.14128767f, -0.19656679f, -0.074510165f, -0.29298529f, + -0.21596044f, -0.18962865f, -0.11364055f, -0.21867156f, + -0.86475414f, -0.15597151f, -0.06440302f, 0.40433306f, + 0.013249827f, -0.13420142f, 0.38136631f, 0.097586103f, + -0.17685439f, -0.16638999f, 0.33192483f, -0.70416683f, + 0.050602648f, 0.088059448f, -0.045045558f, -0.19487943f, + -0.010414841f, -0.068591468f, 0.26677215f, -0.057514619f, + -0.14076272f, -0.082323529f, -0.35916865f, 0.50960594f, + -0.18670283f, -0.0325769f, 0.009209442f, -0.40837368f, + -0.14892226f, 0.37924308f, -0.51548338f, 0.3084628f, + 0.16661143f, 0.0044392594f, 0.31869438f, -0.52031928f, + -0.060851134f, 0.36728746f, 0.30322945f, 0.3070536f, + -0.05414686f, -0.047329675f, -0.6979118f, 0.041740224f, + -0.043089554f, 0.73687154f, -0.54720199f, -0.13155709f, + 0.010859033f, 0.033866998f, -0.0082464786f, 0.34360096f, + 0.031311713f, -0.034431335f, 0.072484642f, 0.96680635f, + 0.031584896f, -0.39283586f, -0.045928109f, -0.80608094f, + 0.0082052937f, 1.1616231f, -0.15121417f, 0.33097032f, + -0.10358702f, -0.11722358f, -0.37170202f, -0.024785215f, + -0.13621785f, -0.36030358f, -0.88391191f, 0.5509814f, + -0.08027564f, -0.041821003f, 0.0867154f, -0.063652426f, + 0.58694637f, 0.5556044f, -0.26340449f, 0.055456404f, + 0.32851258f, -0.10824155f, 0.37289032f, 0.054754548f, + -0.092263624f, -0.13214371f, -0.21282426f, -0.045593243f, + -0.14888355f, -0.21615021f, -0.079471029f, 0.0885465f, + -0.21608126f, 0.073165759f, 0.96868116f, -0.5940147f, + -0.40213665f, 0.16432001f, -0.054921333f, -0.107089f, + -0.16761391f, 0.19514263f, 0.45029142f, -0.2462592f, + 0.008666385f, 0.064174294f, 0.16073674f, 0.41148216f, + -1.3422406f, 0.099147864f, 0.44457993f, -0.052424595f, + -1.0678706f, 0.046281461f, -0.11262134f, -0.025473107f, + -0.05078575f, -0.18823294f, -0.027650772f, 0.60829484f, + -0.02463067f, -0.045181222f, 0.017825212f, 0.044377673f, + -0.35956544f, -0.39195868f, 0.022631103f, 0.661982f, + 0.48372534f, 0.21114728f, 0.24770558f, -0.38601598f, + 0.070134796f, -0.61713946f, -0.74522793f, -0.6109156f, + -0.041586477f, -0.11653864f, -2.3759596f, 0.068766005f, + 0.22272666f, -0.37417236f, -0.34418371f, 0.072304152f, + 0.07979627f, 0.087749638f, -0.040664811f, 0.18635148f, + 0.0029790432f, -0.063206404f, 0.2768715f, -0.40018263f, + 0.032177318f, -0.078139663f, -0.11014777f, 0.40319979f, + 0.33231056f, 0.2856499f, 0.2213576f, 0.30882338f, + -0.091569602f, 0.54455078f, -0.055066396f, -0.3293775f, + 0.084119074f, 0.19328763f, 0.055775993f, 0.12362758f, + 0.04999749f, -0.027355021f, -0.33611757f, 0.032002404f, + 0.17296943f, -0.26304245f, 0.15528855f, -0.074398093f, + -0.37826148f, 0.083316714f, -0.20090669f, -0.068102837f, + 0.032205034f, -0.095932774f, 0.17521329f, 0.24313907f, + -0.116514f, 0.27553013f, -0.18104564f, 0.0048792819f, + 0.7917819f, -0.39611658f, -0.36923578f, 0.2087618f, + -0.2080906f, 0.31602949f, 0.24995297f, -0.37101698f, + -0.15413378f, 0.31165168f, -0.079193741f, -0.11548284f, + -0.067733794f, 0.037405804f, -0.2375592f, 0.44498593f, + 0.10634088f, -0.41100451f, 0.74799913f, -0.032684848f, + -0.88100898f, 0.03886513f, -0.22641672f, 0.10536111f, + 0.03480386f, -0.10481006f, 0.13162668f, -0.17961317f, + -0.094271913f, -0.45032275f, 0.072006837f, 0.11769272f, + 0.079360336f, -0.14695689f, 0.1814806f, -0.34118348f, + -0.08532802f, -0.28902808f, -0.31543332f, -0.37635469f, + 0.063687526f, -0.17604162f, -0.82915682f, 0.083995298f, + 0.048676446f, 0.061263889f, 0.071550846f, 0.033616293f, + 0.03908626f, 0.049627922f, -0.017918035f, 0.010347903f, + -0.14348224f, -0.10886894f, 0.072891526f, -0.081765592f, + 0.021628797f, 0.036998361f, 0.11835511f, -0.079074457f, + -0.1104847f, 0.085618615f, 0.062424999f, -0.057408255f, + -0.088246763f, -0.036310278f, 0.061425399f, -0.05202049f, + 0.074198969f, -0.041857563f, 0.10700931f, 0.090149663f, + 0.087373108f, 0.077166028f, 0.077703342f, 0.094369456f, + -0.16907895f, 0.050572537f, 0.54427832f, 0.029185081f, + 0.55644584f, -0.19925909f, 0.33447477f, 0.041042328f, + 0.34432417f, 0.080318071f, -0.36826918f, 0.055131659f, + -0.13133587f, -0.1303139f, 0.17518811f, -0.035097472f, + -0.013238844f, -0.15785122f, 0.024194947f, -0.44838133f, + -0.6009261f, 0.11781777f, 0.068333723f, 0.83684814f, + 0.14589621f, 0.89523894f, -0.10002273f, 0.20113599f, + -0.23377629f, 0.23095767f, -0.51351535f, 0.7437349f, + -0.029806063f, 0.017510295f, 0.36967587f, 0.17328304f, + -0.16048929f, -0.1818929f, 0.15367268f, -0.074203387f, + -0.11756727f, -0.28741392f, 0.048911121f, -0.67120183f, + -0.019262746f, -0.10710866f, -0.011889457f, -0.012330559f, + -0.088957369f, 0.40618631f, -0.062389143f, 0.22486693f, + 0.270219f, 0.13964756f, -0.071549766f, 0.04726886f, + -0.27369639f, 0.22376841f, -0.18887281f, -0.25513321f, + -0.054868035f, 0.13212155f, 0.51510829f, -0.19160578f, + 0.04147194f, -0.13215092f, -0.26315036f, 0.064618424f, + -0.16014434f, -0.34595183f, -0.15407248f, -0.13058089f, + -0.20239624f, -0.023469796f, 0.19844797f, -0.050370187f, + -0.056245167f, -0.15566842f, -0.13869034f, 0.16025729f, + -0.096941046f, 0.26027292f, -0.19061856f, -0.419476f, + -0.35278341f, 0.070402086f, -0.20612645f, 0.21264058f, + -0.057321571f, -0.047857307f, 0.47540215f, 0.16269493f, + 0.039904278f, 0.26168862f, 0.5283829f, -0.16362824f, + -0.14107576f, -0.066373244f, -0.11696251f, -0.28072542f, + -0.74024498f, 0.40233016f, 0.59357321f, -0.05884568f, + -0.3168228f, -7.0787568f, -2.9344666f, 0.17813993f, + -0.077995166f, -0.08587347f, 1.7868339f, 0.27552894f, + -0.12622923f, -0.34379289f, 0.045478005f, 1.2754853f, + 0.14409463f, 0.56534666f, -0.1642376f, -0.022529928f, + 0.76372415f, 0.11891279f, 0.40175417f, -0.3917928f, + 0.039324787f, 0.074408062f, 0.089219488f, 0.28408799f, + -0.15250885f, -0.11486184f, -0.18513222f, -0.43465546f, + 0.0057280306f, 0.3080157f, -0.096519575f, -0.18959592f, + 0.15001473f, -0.25553393f, 1.0474659f, -0.30019799f, + -0.12641026f, -0.083352312f, 0.067715153f, -0.015976181f, + -0.19349313f, -0.047100734f, -0.17550008f, 0.83749127f, + -0.18098085f, 0.19523908f, 0.02333945f, 0.32633597f, + -0.026505021f, 0.39207906f, 0.073412739f, 0.97519147f, + -0.083243489f, -0.106651f, -0.5050981f, -0.12938543f, + -0.13746485f, -0.10747176f, -0.19018923f, -0.45473459f, + 0.025899271f, -0.24586688f, -0.19351897f, -0.050653942f, + -0.24128021f, -0.32487708f, 0.080425449f, 0.19729076f, + -0.078666106f, 0.036795255f, 0.37549052f, 0.01321892f, + 0.037601747f, 0.10448405f, 0.015671587f, 0.27832502f, + -0.1337443f, -0.19461967f, 0.033825111f, 0.45106584f, + -0.17516918f, 0.54119188f, 0.21538986f, 0.037386645f, + -0.018768944f, 0.16602226f, 0.15428469f, -0.22552837f, + -0.032345161f, -0.0032612551f, 0.5189541f, 0.27260458f, + 0.062465627f, -0.46419522f, 0.21681449f, 0.027624637f, + -0.55317742f, -0.046002958f, 0.032691497f, 0.60643226f, + -0.057162181f, 0.056146104f, 0.15326305f, -0.63075864f, + 0.023158951f, 0.49930549f, -0.059872638f, 0.38671863f, + 0.022667617f, -0.58384502f, -0.098061197f, -0.0074940291f, + 0.024085283f, -0.21387111f, 0.14301996f, 0.21881221f, + -0.0009151859f, 0.68360507f, 0.18022797f, -0.026480654f, + 0.01981096f, 0.049449161f, 0.27987421f, 0.57438564f, + -0.20850788f, -0.12587361f, 0.22130537f, -0.0020121168f, + -0.1686731f, 0.092541441f, -0.10871709f, -0.37822133f, + -0.084060445f, -0.12336881f, -0.022436373f, 0.20044103f, + 0.034061641f, 0.036974043f, -0.040070131f, 0.98735344f, + -0.53522623f, 0.29777235f, -0.21055281f, 0.74663371f, + 0.13002819f, 1.4781829f, 1.3201566f, 0.023709066f, + 0.079635203f, 0.222893f, 0.41945404f, 0.39121407f, + 0.080754645f, 0.0088022947f, 0.012209421f, -0.41556174f, + -0.23074119f, -0.12729242f, 0.2268924f, -0.11726107f, + -0.20563805f, 0.10057165f, -0.22267015f, -0.30471572f, + -0.02684449f, -0.11594622f, -0.83518684f, 0.45366839f, + 0.05482344f, -0.041614182f, -0.0018023885f, -0.025613924f, + -0.49203193f, -0.15421465f, -0.15011583f, -0.061337616f, + 0.20556985f, -0.24930742f, 0.84871781f, -0.32617661f, + -0.071681775f, -0.10969488f, -0.24244277f, -0.10812452f, + -0.15851527f, 0.035769477f, 0.16073236f, 0.043961313f, + 0.092654727f, 0.050679158f, -0.10620803f, -0.025578877f, + 0.29613757f, -0.060314238f, 0.14157601f, 0.47224927f, + -0.066812374f, 0.044816624f, 0.25472793f, 0.14106819f, + -0.047971964f, 0.14653988f, -0.010800328f, 0.32895458f, + -0.010116353f, -0.083383858f, 0.21241361f, 0.14219108f, + 0.31254983f, 0.27929658f, 0.42620978f, 0.6723575f, + -0.12281682f, 0.1997274f, 0.18996745f, -0.33229798f, + -0.098339975f, 0.099001765f, 0.020007776f, -0.12151581f, + -0.10598209f, -0.071385354f, 0.10815151f, 0.12270612f, + -0.062319979f, -0.10482923f, -0.00014437787f, -0.065338425f, + -0.10518424f, 0.099664725f, -0.082343712f, 0.013184935f, + -0.075222179f, -0.089549474f, 0.0080029806f, -0.073739268f, + 0.05371803f, -0.040453102f, -0.11520487f, 0.022029867f, + -0.09369836f, -0.042101189f, 0.078816324f, 0.090892993f, + -0.033954352f, -0.058745127f, 0.07795573f, -0.074124902f, + 0.1229554f, -0.041219741f, -0.046193965f, -0.016124239f, + 0.029208429f, -0.022333482f, 0.032514777f, 0.039069902f, + -0.10478068f, 0.028848672f, 0.14295472f, 0.045014191f, + 0.0622405f, 0.040426794f, 0.032488275f, 0.093945377f, + -0.12467057f, 0.024995271f, -0.06020876f, -0.071053952f, + -0.12001889f, 0.044430479f, -0.035120212f, -0.010635448f, + -0.041803632f, 0.16060527f, 0.1219613f, -0.076477282f, + -0.037813663f, -0.066242486f, 0.036473565f, -0.072358482f, + -0.13540964f, -0.025679013f, -0.17081851f, 0.76153582f, + 0.16783667f, 0.59944302f, -0.05644162f, -0.11681476f, + -0.090680964f, 0.45437285f, 0.20775707f, -0.056709409f, + -0.18449141f, -0.098945871f, -0.25565588f, -0.0027552345f, + -0.028514009f, 0.25555778f, -0.16345206f, 0.1775551f, + -0.44079462f, -0.11748049f, 0.35318223f, -0.30726898f, + -0.34348872f, 0.025526537f, 0.09018445f, 0.26397365f, + -0.018639484f, -0.33799535f, 0.34148481f, -0.1988654f, + -0.019395914f, -0.045703731f, 0.088978149f, 0.29183117f, + -0.4410294f, -0.44108409f, 0.54243338f, -0.0089628864f, + -0.12032986f, -0.1426388f, -0.1056268f, 0.7575326f, + -0.12364331f, -0.15796846f, -0.32724255f, -0.39843196f, + -0.177241f, 0.78503591f, -0.15084592f, 0.53910375f, + 0.34901854f, -0.3970035f, 0.044796225f, -0.073601767f, + 0.2736969f, -0.55798066f, -0.016618196f, -0.027247315f, + 0.023574859f, 0.10118458f, -0.021976994f, -0.074213408f, + -0.042265147f, -0.022529513f, -0.082273699f, -0.05212516f, + 0.17467791f, -0.040350839f, -0.10639242f, 0.031507578f, + 0.082896054f, 0.057084072f, 0.034559552f, -0.059383817f, + -0.052243855f, 0.044589724f, 0.0032457809f, 0.014799416f, + -0.12825872f, -0.053543728f, 0.097487673f, 0.068034366f, + -0.016222825f, 0.077319719f, -0.028849339f, 0.16235751f, + -0.046722207f, -0.07608863f, 0.070551313f, 0.046685744f, + 0.094740443f, -0.0217868f, 0.01052319f, 0.080901206f, + -0.079810053f, -0.053437412f, -0.015195488f, -0.090172186f, + 0.0021850727f, -0.092031606f, 0.094410419f, -0.034167767f, + -0.013681914f, -0.056438439f, 0.11146928f, -0.047793429f, + 0.030677661f, 0.0077462494f, -0.089058086f, -0.041890442f, + -0.033342913f, 0.0015690569f, 0.0041591851f, 0.0033997449f, + -0.02063093f, 0.042591605f, 0.12097533f, -0.00620542f, + 0.062765315f, -0.058675308f, 0.0029879932f, -0.021423224f, + 0.065756828f, 0.11648777f, -0.057524025f, 0.085086793f, + -0.10178748f, -0.12179485f, -0.36733526f, -0.86000472f, + -0.97407043f, 0.114894f, 1.3272939f, -0.0081559457f, + -0.69900769f, 0.50968325f, 2.3125041f, 0.42626289f, + 0.038589094f, -0.058702007f, -2.1950099f, -0.14421064f, + -0.11983887f, 0.54484636f, 0.0072034295f, 0.08724238f, + -0.01831007f, 0.64945495f, -0.14855495f, 0.71739477f, + 0.74778157f, 1.2611854f, 1.5102831f, 1.9107484f, + -0.15205151f, -0.54846859f, 0.083387338f, 0.26268476f, + -0.0032104324f, -0.17474824f, 0.39118016f, 0.14064859f, + -0.43868065f, -0.36172801f, -0.092336319f, -0.10934571f, + -0.25762454f, -0.41013438f, -0.5712772f, -0.14033933f, + 0.0065863989f, 0.042271737f, 0.48534566f, 0.065700263f, + -0.060285158f, -0.15928997f, -0.14432748f, -0.023136033f, + 0.36045089f, 0.23650055f, -0.80450082f, 0.18187129f, + 0.040664785f, 0.040958896f, -0.16793801f, 0.50204384f, + -0.11213668f, -0.061356883f, 0.27506778f, 0.22752082f, + 0.0013040155f, 0.086337596f, -0.077009991f, 0.1040458f, + 0.02620507f, 0.02596298f, -0.075251624f, -0.063212551f, + -0.069726482f, -0.072710879f, 0.096028447f, 0.095082253f, + 0.11069809f, -0.080106214f, -0.03705965f, -0.033409968f, + 0.022621611f, -0.091405094f, -0.027347527f, 0.015693963f, + -0.092379101f, -0.039608993f, -0.035596188f, -0.025750414f, + 0.11363354f, -0.012928111f, 0.025824621f, 0.075545959f, + -0.05902537f, 0.11692759f, -0.024616221f, 0.060814053f, + -0.088750854f, -0.051557709f, 0.26731104f, 0.48528317f, + -0.16191565f, 0.29261959f, 0.5503636f, 0.0033399439f, + 0.038604531f, -0.13200238f, -0.28700364f, 0.30316892f, + 0.037305564f, 0.023977783f, 0.061972599f, -0.10208722f, + 0.0095351422f, 0.25961989f, -0.045887496f, 0.25054815f, + -0.21523754f, 0.36987314f, -0.72617f, -0.088565417f, + 0.88023692f, 0.13721777f, -0.084894396f, -0.35656375f, + 0.032858521f, 0.1494735f, -0.51655751f, -0.029780861f, + -0.11138111f, -0.10434926f, 0.36512619f, -0.55376744f, + 0.742459f, 0.42569214f, -0.17315629f, 0.10861661f, + -0.12270316f, 0.15778531f, 0.8655687f, -0.597817f, + -0.11046355f, 0.0082499962f, -0.55923188f, 0.058065567f, + -0.098893017f, 0.21627484f, 0.099116847f, 0.48177633f, + -2.3557522f, -0.026923891f, 0.94279218f, 3.4301777f, + -0.70101994f, -1.7976744f, 0.83219326f, -0.05010888f, + -0.045527559f, -0.31007138f, 2.5043502f, 0.075790413f, + 0.019464925f, -0.16751091f, -0.13510258f, 0.094811164f, + 0.29018015f, 0.43444183f, -0.080070838f, -0.0082832044f, + 0.16182393f, 0.1275004f, 0.12325715f, 0.1300666f, + -0.14430887f, -0.13872628f, 0.10887419f, 0.70045304f, + 0.014707778f, -0.25372976f, -0.08772064f, -0.14787257f, + 0.11650153f, 0.46046254f, -0.087170996f, 0.11495326f, + -0.087107822f, 0.40101755f, 0.029058821f, -0.18764131f, + -0.14268225f, -0.27205557f, -0.081614599f, -0.14898632f, + -0.077019215f, -0.026921529f, 0.32276794f, -0.55241627f, + -0.17651598f, -0.14862873f, 0.028110109f, -0.14585996f, + 0.19053391f, -0.0044995402f, 0.25749692f, 0.38503984f, + -0.18454093f, -0.16495101f, -0.45931721f, 0.14134189f, + -0.18385343f, 0.67873967f, -0.030483684f, 0.017738357f, + 0.27536163f, -0.044384789f, 0.54114848f, -0.26900873f, + 0.028799295f, -0.45952123f, -0.058621179f, -0.014254239f, + 0.07463789f, 0.058148742f, 0.71840823f, 0.055947684f, + -0.058972254f, 0.0083160847f, 0.092256546f, -0.10279186f, + -0.11828593f, 0.090320811f, -0.020149752f, 0.018343568f, + 0.16420552f, -0.00099649036f, -0.10164067f, 0.070518471f, + -0.042265922f, -0.063594349f, -0.087115109f, -0.13146372f, + 0.10286826f, 0.020132421f, -0.017146077f, -0.020656241f, + 0.022712832f, -0.034722485f, 0.011758959f, -0.0683228f, + -0.056001503f, 0.03939534f, -0.0022365269f, -0.047298335f, + 0.11130676f, -0.087764286f, -0.07364881f, 0.10968984f, + -0.13891372f, 0.059901111f, 0.36202097f, 0.63151443f, + 0.43602145f, 0.70505834f, 0.2743499f, 0.027799739f, + -0.083049797f, 0.19949269f, 0.19721423f, 0.34426919f, + -0.17220302f, -0.068907239f, 0.011325719f, -0.17853962f, + -0.088913292f, 0.40525457f, 0.03464843f, -0.18176292f, + -0.29318899f, 0.048454929f, 0.048076723f, -0.26785684f, + 0.11278073f, -0.22618754f, 0.27858546f, 0.16610041f, + -0.054528128f, -1.8183844f, -0.19542356f, 0.032694854f, + -0.057891324f, 0.075661823f, 9.392677e-05f, 0.031244764f, + -0.058199484f, -0.063820988f, -0.076851115f, -0.032369375f, + 0.032117356f, 0.05807187f, 0.066481456f, -0.028165152f, + 0.036686316f, 0.10028576f, 0.10593661f, -0.11820573f, + -0.070384435f, -0.064357318f, 0.090520702f, -0.062103134f, + 0.064692371f, -0.017758237f, -0.085512511f, 0.045926992f, + -0.073643237f, -0.10603441f, 0.0051057879f, -0.056630109f, + -0.034975443f, -0.019103363f, -0.05216597f, -0.10279703f, + -0.059674349f, -0.056211516f, -0.094751209f, 0.085753255f, + 0.23497199f, 0.55872893f, -0.36958593f, -0.042425208f, + 0.090005904f, 0.24737693f, 0.13495326f, -0.21660317f, + -0.13841492f, -0.13420677f, 0.025810795f, -0.2108565f, + -0.061945803f, -0.30425355f, -0.015684234f, -0.031777393f, + 0.29799074f, -0.12519144f, 0.33670935f, 0.35193673f, + -0.86386693f, 0.00053501356f, -0.054052673f, -0.63899094f, + -0.11756013f, -0.34306797f, -0.21611492f, 1.0097325f, + -0.066296041f, 0.038286746f, 0.43414059f, -0.11096265f, + 0.50467777f, -0.03967629f, -0.35756686f, 0.0065737148f, + 0.92268497f, 0.031352203f, -0.066922009f, -0.21426314f, + -0.030387281f, -0.012914934f, 0.026989324f, -0.24181126f, + -0.084439501f, -0.069055855f, -0.061570413f, 0.045114066f, + -0.033102557f, 0.4359957f, 0.052867714f, -0.13958478f, + -0.64547604f, 0.38120481f, 0.22561225f, 0.27908158f, + 0.0020846264f, 0.20626554f, 0.40354964f, -0.31192353f, + 0.014616296f, -0.10976318f, -0.046657927f, -0.039942238f, + 0.098860674f, 0.022845382f, 0.079804786f, 0.042324528f, + -0.017054489f, -0.15316671f, -0.048432387f, 0.017695881f, + -0.059116278f, 0.017228395f, -0.098129831f, -0.062251657f, + -0.057534762f, 0.074851386f, -0.058960684f, -0.082455367f, + -0.11312152f, -0.068200834f, -0.023098355f, -0.12502532f, + -0.011859045f, -0.010796155f, -0.036414146f, 0.092328548f, + 0.050745897f, -0.019039672f, -0.062265962f, -0.018947512f, + -0.13714747f, 0.01293406f, -0.26049718f, 0.090390332f, + 0.34323621f, -0.24375999f, 0.019091573f, -0.087042131f, + -1.2385156f, 0.12128513f, 0.087087356f, 0.093807839f, + -0.02640957f, -0.12679194f, 0.38960424f, 0.14131925f, + -0.16655464f, -0.11519764f, -0.021495372f, 0.9495737f, + 0.59752327f, 0.17217116f, 0.40611541f, -0.014609127f, + 0.074016333f, 0.29384115f, -0.1830001f, 0.23988841f, + -0.14710341f, -0.36187181f, 0.20951857f, 0.05141608f, + -0.11294398f, -0.13120843f, -0.1505899f, 0.73322457f, + -0.28805432f, 0.16593823f, -0.043296061f, -0.028813008f, + -0.16486488f, 1.3133742f, -0.15502197f, 0.33327311f, + -0.11085358f, -0.11033826f, 0.0212528f, -3.8042886e-05f, + -0.099176645f, -0.37971193f, -0.069581941f, -0.73725384f, + 0.64331031f, 0.49662226f, 0.056362499f, -0.15387005f, + 0.0066977004f, 0.46996644f, 1.4572316f, 0.2325218f, + -0.039181605f, 0.10210135f, -0.11419023f, 0.035879612f, + 0.07320185f, -0.048421428f, 0.12494764f, 0.073422953f, + 1.2311269f, -0.051239591f, -0.401795f, -0.083112739f, + 0.73621339f, 0.067578867f, -0.12284096f, -0.80212545f, + -0.027485676f, -0.19483016f, 0.094626933f, -0.11013681f, + 0.022443701f, -1.021263f, -0.062597021f, -0.27611768f, + -0.53071088f, 0.31256691f, -0.0042890566f, -0.17730801f, + -0.41861099f, 0.30111998f, 0.2345648f, 0.15903151f, + -0.10063662f, 1.0092976f, 0.12777299f, -0.16742149f, + -0.045302629f, -0.013556018f, 0.021508049f, 0.0039821607f, + 0.10765424f, 0.06711337f, 0.12328785f, -0.087734878f, + -0.026746146f, 0.070967481f, 0.064689435f, -0.011049374f, + -0.00065116584f, 0.096920602f, 0.023575017f, -0.013746396f, + 0.11398198f, 0.053255565f, 0.1010962f, -0.11084297f, + 0.049939346f, 0.053405888f, -0.067741007f, 0.096235119f, + -0.07247933f, 0.13223854f, 0.018134654f, 0.071205914f, + -0.11877435f, 0.0066712075f, -0.073532216f, 0.037833303f, + -0.085745513f, -0.017983705f, 0.00066700904f, 0.012576376f, + 0.067870982f, -0.079877667f, 0.000389024f, -0.11829557f, + -0.066501074f, 0.085467368f, -0.13496476f, 0.12135644f, + -0.084280357f, 0.032728031f, -0.11148307f, 0.067373142f, + -0.081082612f, 0.047744323f, -0.098822564f, -0.10075f, + 0.0016667494f, 0.07502871f, 0.062817261f, -0.070482142f, + 0.0039751278f, 0.032071497f, -0.009055675f, 0.11055606f, + 0.12262049f, 0.029085901f, 0.017858583f, -0.098588377f, + -0.11903355f, 0.013024852f, 0.56094158f, 0.53240877f, + 0.091005385f, 0.077324525f, -0.31991836f, 0.029789317f, + -0.19224975f, -0.0083467364f, -1.0027844f, 0.61853808f, + -0.03389949f, 0.053026233f, 0.43264109f, 0.094025612f, + 0.050943073f, 0.32325533f, 0.022730427f, -0.35137668f, + 0.14024362f, 0.23900814f, 0.15030634f, 0.055301215f, + -0.00026439416f, 0.27067012f, -0.73692751f, -1.2809602f, + 0.0046216105f, -0.029788772f, 0.63008219f, 0.09897314f, + 0.11863443f, -0.022830173f, 0.094109789f, 0.16808872f, + -0.050856333f, 0.087444343f, -0.066750087f, -0.087693036f, + 0.13017599f, -0.01741311f, 0.10443351f, -0.05513528f, + -0.058158278f, 0.11269247f, -0.034986563f, -0.084804565f, + 0.10201716f, 0.027870361f, 0.054334246f, 0.12536892f, + 0.049083307f, -0.068826757f, 0.10599995f, -0.073616236f, + -0.013055706f, -0.059742935f, -0.031210424f, -0.1245866f, + -0.080658659f, -0.091842912f, -0.087455414f, -0.014562875f, + -0.053336635f, 0.093647748f, -0.10661628f, -0.016495187f, + 0.09298449f, -0.034992035f, -0.067532696f, -0.084189564f, + 0.013928698f, -0.093313687f, 0.057505716f, -0.098298289f, + 0.052680448f, -0.042546123f, 0.08876586f, -0.090458736f, + -0.035629585f, -0.029061344f, 0.12541504f, 0.020058446f, + 0.054717563f, -0.084798917f, -0.095993064f, 0.071631365f, + -0.023227818f, 0.018625271f, 0.082412735f, 0.10526388f, + 0.009243235f, -0.017673258f, -0.043537762f, 0.004020825f, + -0.060351994f, -0.019623704f, 0.17408659f, -0.92767406f, + -1.009668f, -2.082643f, 0.69186121f, -0.10119108f, + 0.010668402f, 0.39311606f, -0.25546196f, 0.47588298f, + -0.072821945f, 0.05396707f, -0.21413152f, 0.34937906f, + -0.12673144f, 1.7565045f, -0.1600538f, -0.10723756f, + -0.060707361f, -0.89953709f, -0.79765761f, 1.1347106f, + 1.6645039f, -0.17100197f, 1.1486231f, 0.15987588f, + -0.019754117f, 1.5889341f, -0.13020813f, -0.92242098f +}; + +static const float mlp_b3[32] = { + -0.10968009f, -0.16340314f, -0.24421391f, -0.080552384f, 0.23548868f, + -0.24623793f, 0.59806424f, -0.13348117f, -0.11154155f, -0.43775216f, + -0.14048497f, 0.45407951f, -0.17403737f, -0.04285378f, 0.13299535f, + 0.076881848f, -0.045535602f, -0.030676574f, -0.0091929445f, 0.050703857f, + 0.16593724f, 0.42112884f, 0.10538655f, 0.09344887f, 0.56198186f, + 0.095342271f, -0.36718959f, 0.16678773f, 0.0053913067f, -0.29552647f, + 0.29012197f, -0.75337625f +}; + +static const float mlp_w4[416] = { + 0.094596989f, 0.06288442f, 0.12718771f, -0.033175159f, 0.10011427f, + 0.17472202f, -0.045381416f, -0.17106755f, -0.040178224f, -0.046387602f, + 0.035888631f, -0.085654847f, -0.031898279f, -0.084416576f, 0.12954213f, + -0.019197203f, 0.14334847f, 0.12339322f, -0.11325313f, -0.11041804f, + -0.096042737f, 0.12469687f, -0.068862468f, -0.07328397f, 0.072394229f, + -0.14079328f, -0.024450636f, 0.13733813f, -0.20091145f, -0.25455621f, + 0.49352795f, 0.49547595f, 0.36006141f, -0.25464246f, -0.17053933f, + -1.1388822f, -1.1223803f, -1.1126039f, -0.70279557f, 0.25435814f, + 0.17821482f, -0.42045811f, -0.521465f, 0.95192599f, -0.26894936f, + 0.33853886f, -0.48565134f, 0.085126981f, -0.87835187f, -0.69419354f, + -0.88736659f, -0.23339145f, -0.056916807f, -0.28715411f, 0.061258089f, + 0.014359321f, 0.37305042f, -0.098464034f, 0.22814548f, -0.23460184f, + -0.25602758f, -1.3935213f, -1.4199532f, -1.2940515f, 0.61722988f, + -0.067339443f, -0.23935886f, 0.41799378f, -0.24969691f, -0.065489046f, + -0.35824585f, 0.71954632f, 0.35146278f, -0.60431612f, -0.50811398f, + -0.60945076f, -0.5628612f, -0.064812481f, 0.060082011f, 0.27067149f, + 0.48866165f, -0.074354358f, -0.14879745f, 0.29514199f, -0.52727407f, + -0.35562652f, -0.06019479f, -0.58384448f, -0.48970336f, -0.54669285f, + 0.18574308f, -0.053562853f, -0.13297042f, -0.10044597f, -0.078793824f, + -0.13249631f, 0.098590761f, 0.0037000955f, -0.18575174f, 0.0308048f, + 0.032723486f, 0.048677407f, -0.17654762f, -0.15617493f, -0.26358837f, + -0.57036453f, 0.046480305f, 0.2772328f, 0.27206808f, 0.039642997f, + 0.35972828f, 0.57681966f, -0.17182148f, -0.55225235f, -0.63511866f, + -0.50438881f, -0.090628378f, -0.2188773f, -0.26015314f, -0.35582486f, + 1.7405083f, -0.31384864f, -0.078761175f, -0.11584404f, -0.2900497f, + -0.18861353f, -3.0858667f, -2.9690156f, -3.2241826f, -0.20935954f, + 0.079795294f, -0.0035807379f, 0.16862454f, 0.35956645f, -1.3134426f, + -0.45219809f, -0.97669882f, 0.46576178f, 0.20853791f, -0.61673069f, + -0.55626649f, -0.69116604f, -0.11829406f, -0.40321204f, -0.054087963f, + -0.43292788f, 0.22613421f, -0.080602393f, 0.0066896928f, -0.27285558f, + 0.43128595f, 0.31567872f, -0.30544886f, -0.30400059f, -0.5190804f, + 0.79768759f, 0.068582863f, 0.066347808f, -0.16299587f, 0.093009301f, + 0.072849102f, 0.065204352f, 0.10955028f, 0.070722014f, 0.092788167f, + 0.13888592f, -0.029725341f, -0.030883001f, -0.077677824f, -0.14708167f, + -0.043405626f, -0.020198913f, 0.016494306f, 0.10039078f, 0.093348123f, + 0.039721511f, 0.0278177f, 0.078775793f, 0.010879831f, 0.099031776f, + -0.12939276f, 0.17250022f, -0.0089361565f, -0.048386127f, -0.05981509f, + -0.050407387f, -0.31641558f, 1.397669f, -0.65246743f, 0.3327406f, + -0.21704319f, -5.9228983f, -5.7209258f, -5.3829961f, 0.21438089f, + 0.018976986f, 0.14582956f, -0.60716021f, 0.37411517f, 0.49923742f, + 0.659266f, -0.40079996f, -0.36533022f, 0.67727506f, -0.10535682f, + -0.1982379f, -0.16341203f, -0.28219289f, -0.037838768f, -0.1063036f, + -0.23568194f, -0.098688267f, 0.039527301f, -0.039885312f, -0.21378198f, + 0.052073944f, 0.033136461f, 0.036039017f, -0.018277396f, 0.15395153f, + -0.030012168f, -0.092376076f, 0.041379508f, -0.60982811f, 0.32165271f, + 0.50186801f, 0.73216844f, -0.84291798f, -0.31024274f, 0.26733771f, + -4.4106951f, -4.4643846f, -4.4935575f, 0.10087162f, -0.06641072f, + -0.066437289f, 0.071750358f, -0.030624392f, -0.053961661f, 0.1057206f, + -0.13145511f, -0.1164212f, 0.15395029f, 0.14054251f, 0.15677489f, + -0.0047813617f, 0.077780604f, 0.17007232f, -0.24666482f, -0.43329957f, + 0.60725212f, -0.53093249f, -0.02618023f, 0.43020755f, -0.22273432f, + 0.16421124f, -0.91348314f, -0.86027437f, -1.0967145f, -0.40910932f, + -0.24579249f, 0.12371838f, -0.0079166684f, -0.15653501f, -0.20083149f, + -0.52984881f, 0.29125381f, 0.38640186f, 0.52269512f, -0.94004035f, + -0.98326969f, -0.95684838f, -0.64285904f, -0.28382075f, 0.23714989f, + 0.67552352f, -0.53934252f, -0.45257297f, 0.25503677f, -0.091955379f, + -0.60075861f, -0.2474319f, -6.1492357f, -5.7194858f, -6.424665f, + 0.36836615f, 0.19018568f, -3.0455503f, 0.2104509f, 0.23294646f, + 0.17624128f, -0.66216677f, 0.43670148f, 0.55418915f, -0.47033316f, + -0.45789427f, -0.11113391f, -0.23643702f, -0.04084583f, 0.095449723f, + 0.64748234f, -0.013467773f, 0.21085183f, -0.21746054f, -0.44804484f, + -0.23621723f, 0.31381965f, -0.72589624f, -0.91103476f, -0.67396498f, + -0.58693492f, 0.27024621f, -0.004497529f, 0.64351982f, -0.53742594f, + -0.29800868f, -0.83512998f, -0.20740654f, -0.79233992f, -0.64630568f, + 0.23093767f, -0.28981692f, -0.20060307f, -0.02689724f, 0.65379632f, + 0.23495597f, -0.35244721f, 0.24243814f, -0.0082328962f, -0.43204969f, + -0.89931804f, -0.5658167f, 0.029426184f, 0.47303501f, -0.83232898f, + -0.83016527f, -0.69590801f, 0.24183336f, 0.27950493f, 0.079353854f, + -0.10478811f, -0.83179426f, -0.16667096f, 0.94305778f, -0.095799863f, + 0.15761009f, -0.28357998f, -3.0708134f, -3.6293287f, -3.3215404f, + 0.16113949f, -0.13782749f, -0.013483082f, -0.040353119f, -0.21905257f, + -0.3917577f, -0.90436566f, 1.1966972f, -0.17893913f, 0.0042714477f, + -0.42237544f, -0.16459632f, -0.23768038f, 0.11304806f, -0.19036941f, + -0.11161107f, 0.16044159f, -0.062734112f, -0.0014498438f, 0.047703449f, + -0.042067681f, 0.088487118f, -0.22252412f, 0.15077302f, 0.10169559f, + 0.10728151f, 0.10769864f, 0.2454515f, -0.24978223f, 0.19290327f, + 0.31748471f, -0.38534704f, -0.34553638f, -0.52825862f, 0.32211635f, + 0.23344353f, -0.8156653f, -0.80838287f, -0.77924055f, -0.29300714f, + -0.0029131824f, -0.4591876f, 0.51204449f, -0.13296774f, 0.67545152f, + -0.5192064f, 0.38222206f, 0.29423666f, -0.7594682f, -0.90086275f, + -1.0140761f, -1.0503962f, -0.19713224f, 1.2565109f, -0.43830112f, + -0.43692917f, -0.2227847f, 0.0011618949f, -0.35920459f, 0.18818201f, + -0.31922451f, -0.18276367f, 0.084138699f, -0.12449738f, 0.080223061f, + -0.70612156f +}; + +static const float mlp_b4[13] = { -0.43986079f, -0.16702375f, 0.48827702f, + 0.39445737f, 0.033325821f, 0.061956905f, + 0.33271062f, -0.47102851f, 0.25886136f, + -0.84312367f, -0.72804022f, -0.8141064f, + -0.33661196f }; + +#endif // INTRA_MODE_MLP_WEIGHTS_H diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index 04b8b85ad6..a1008a69d5 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -10,10 +10,13 @@ * aomedia.org/license/patent-license/. */ +#include + #include "av2/common/av2_common_int.h" #include "av2/common/intra_dip.h" #include "av2/common/reconintra.h" +#include "av2/encoder/intra_mode_mlp.h" #include "av2/encoder/intra_mode_search.h" #include "av2/encoder/intra_mode_search_utils.h" #include "av2/encoder/palette.h" @@ -322,28 +325,20 @@ void av2_count_colors_highbd(const uint16_t *src, int stride, int rows, } } -/*! \brief prune luma intra mode based on the model rd. - * \param[in] this_model_rd model rd for current mode. - * \param[in] best_model_rd Best model RD seen for this block so - * far. - * \param[in] top_intra_model_rd Top intra model RD seen for this - * block so far. - */ int prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, - int64_t top_intra_model_rd[]) { + int64_t top_intra_model_rd[], int k) { const double thresh_top = 1.00; - for (int i = 0; i < TOP_INTRA_MODEL_COUNT; i++) { + for (int i = 0; i < k; i++) { if (this_model_rd < top_intra_model_rd[i]) { - for (int j = TOP_INTRA_MODEL_COUNT - 1; j > i; j--) { + for (int j = k - 1; j > i; j--) { top_intra_model_rd[j] = top_intra_model_rd[j - 1]; } top_intra_model_rd[i] = this_model_rd; break; } } - if (top_intra_model_rd[TOP_INTRA_MODEL_COUNT - 1] != INT64_MAX && - this_model_rd > - thresh_top * top_intra_model_rd[TOP_INTRA_MODEL_COUNT - 1]) + if (top_intra_model_rd[k - 1] != INT64_MAX && + this_model_rd > thresh_top * top_intra_model_rd[k - 1]) return 1; if (this_model_rd < *best_model_rd) *best_model_rd = this_model_rd; @@ -1031,7 +1026,8 @@ static INLINE int prune_intra_dip_mode(const AV2_COMP *cpi, MACROBLOCK *x, const MACROBLOCKD *xd = &x->e_mbd; const MB_MODE_INFO *const mbmi = xd->mi[0]; const int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); - if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd) && + if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, + TOP_INTRA_MODEL_COUNT) && (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) return 1; return 0; @@ -1241,9 +1237,14 @@ int64_t av2_handle_intra_mode(IntraModeSearchState *intra_search_state, } int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); - if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd) && + const int k = + cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; + if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, k) && (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) return INT64_MAX; + if (cpi->sf.intra_sf.intra_pruning_with_mlp && mbmi->mrl_index == 0 && + av2_is_directional_mode(mbmi->mode)) + intra_search_state->mrl0_dir_mode_survived[mbmi->mode] = 1; av2_init_rd_stats(rd_stats_y); x->prune_tx_partition = 0; av2_pick_uniform_tx_size_type_yrd(cpi, x, rd_stats_y, bsize, best_rd); @@ -1527,7 +1528,7 @@ void search_fsc_mode(const AV2_COMP *const cpi, MACROBLOCK *x, int *rate, this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); if (prune_intra_y_mode(this_model_rd, best_model_rd, - top_intra_model_rd) && + top_intra_model_rd, TOP_INTRA_MODEL_COUNT) && (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) { continue; } @@ -1596,6 +1597,75 @@ void search_fsc_mode(const AV2_COMP *const cpi, MACROBLOCK *x, int *rate, } } +// Compute MLP-derived base-mode mask for the current block. See header for +// API doc. Runs once per block. +void av2_intra_mlp_compute_mode_mask( + const AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, + uint8_t mlp_mode_mask[INTRA_MODES], int *mlp_fallback, + uint8_t directional_mode_skip_mask[INTRA_MODES]) { + MACROBLOCKD *const xd = &x->e_mbd; + + memset(mlp_mode_mask, 0, INTRA_MODES * sizeof(mlp_mode_mask[0])); + *mlp_fallback = 0; + + // Fall back for 4x4, 4x8, 8x4 blocks. + if (block_size_wide[bsize] * block_size_high[bsize] <= 32) { + *mlp_fallback = 1; + if (cpi->sf.intra_sf.intra_pruning_with_hog) { + prune_intra_mode_with_hog(x, bsize, + cpi->sf.intra_sf.intra_pruning_with_hog_thresh, + directional_mode_skip_mask); + } + return; + } + + float mlp_features[MLP_INPUT_DIM]; + float mlp_logits[MLP_OUTPUT_DIM]; + int mlp_topk_modes[MLP_TOP_K]; + + // Extract neighbor context. Treat inter / IBC neighbors as unavailable so + // the MLP receives the same "no intra neighbor" sentinel it saw during + // training; otherwise mbmi->mode would be an inter mode index (>= + // INTRA_MODES), which collides with the [0, 12] intra range and is + // out-of-distribution. + int above_mode = -1, above_delta = 0, left_mode = -1, left_delta = 0; + const MB_MODE_INFO *above_mi = xd->above_mbmi; + const MB_MODE_INFO *left_mi = xd->left_mbmi; + if (above_mi && !is_inter_block(above_mi, SHARED_PART)) { + above_mode = above_mi->mode; + above_delta = above_mi->angle_delta[PLANE_TYPE_Y]; + } + if (left_mi && !is_inter_block(left_mi, SHARED_PART)) { + left_mode = left_mi->mode; + left_delta = left_mi->angle_delta[PLANE_TYPE_Y]; + } + + intra_mode_mlp_prepare_features( + x->plane[0].src.buf, x->plane[0].src.stride, xd->bd, + block_size_wide[bsize], block_size_high[bsize], + x->qindex - MAXQ_OFFSET * (xd->bd - 8), above_mode, above_delta, + left_mode, left_delta, !frame_is_intra_only(&cpi->common), mlp_features); + + intra_mode_mlp_predict(mlp_features, mlp_logits); + + // Use MLP top-K if confident, fall back to HOG if all logits negative. + float max_logit = mlp_logits[0]; + for (int i = 1; i < MLP_OUTPUT_DIM; i++) + if (mlp_logits[i] > max_logit) max_logit = mlp_logits[i]; + + if (max_logit >= 0.0f) { + intra_mode_mlp_get_topk(mlp_logits, MLP_TOP_K, mlp_topk_modes); + for (int i = 0; i < MLP_TOP_K; i++) mlp_mode_mask[mlp_topk_modes[i]] = 1; + } else { + *mlp_fallback = 1; + if (cpi->sf.intra_sf.intra_pruning_with_hog) { + prune_intra_mode_with_hog(x, bsize, + cpi->sf.intra_sf.intra_pruning_with_hog_thresh, + directional_mode_skip_mask); + } + } +} + // Finds the best non-intrabc mode on an intra frame. int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, int *rate, @@ -1633,7 +1703,12 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, int mode_costs = 0; mbmi->angle_delta[PLANE_TYPE_Y] = 0; - if (cpi->sf.intra_sf.intra_pruning_with_hog) { + uint8_t mlp_mode_mask[INTRA_MODES] = { 0 }; + int mlp_fallback = !cpi->sf.intra_sf.intra_pruning_with_mlp; + if (cpi->sf.intra_sf.intra_pruning_with_mlp) { + av2_intra_mlp_compute_mode_mask(cpi, x, bsize, mlp_mode_mask, &mlp_fallback, + directional_mode_skip_mask); + } else if (cpi->sf.intra_sf.intra_pruning_with_hog) { prune_intra_mode_with_hog(x, bsize, cpi->sf.intra_sf.intra_pruning_with_hog_thresh, directional_mode_skip_mask); @@ -1657,6 +1732,8 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->dpcm_mode_y = 0; // mbmi->dpcm_angle_delta = 0; // Searches the intra-modes except for intrabc, palette, and filter_intra. + const int model_rd_k = + cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; int64_t top_intra_model_rd[TOP_INTRA_MODEL_COUNT]; for (int i = 0; i < TOP_INTRA_MODEL_COUNT; i++) { top_intra_model_rd[i] = INT64_MAX; @@ -1671,6 +1748,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, dpcm_loop_num = 2; } for (int dpcm_index = 0; dpcm_index < dpcm_loop_num; ++dpcm_index) { + uint8_t mrl0_dir_mode_survived[INTRA_MODES] = { 0 }; for (int mrl_idx = 0; mrl_idx < (enable_mrls_flag ? MRL_LINE_NUMBER : 1); ++mrl_idx) { mbmi->mrl_index = mrl_idx; @@ -1736,12 +1814,18 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->mode == PAETH_PRED) continue; is_directional_mode = av2_is_directional_mode(mbmi->mode); + if (cpi->sf.intra_sf.intra_pruning_with_mlp && mrl_idx > 0 && + is_directional_mode && mode_idx >= FIRST_MODE_COUNT && + !mrl0_dir_mode_survived[mbmi->mode]) + continue; + if (!is_directional_mode && mrl_idx) continue; + if (!mlp_fallback && mode_idx >= FIRST_MODE_COUNT && + !mlp_mode_mask[mbmi->mode]) + continue; if (is_directional_mode && directional_mode_skip_mask[mbmi->mode] && mode_idx >= FIRST_MODE_COUNT) continue; - if (!is_directional_mode && mrl_idx) continue; - if (((best_mbmi.mrl_index == 0 && av2_is_directional_mode(best_mbmi.mode) == 0) || (best_mbmi.mrl_index && mbmi->multi_line_mrl == 0)) && @@ -1765,10 +1849,14 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, int64_t this_model_rd; this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); if (prune_intra_y_mode(this_model_rd, &best_model_rd, - top_intra_model_rd) && + top_intra_model_rd, model_rd_k) && (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) continue; + if (cpi->sf.intra_sf.intra_pruning_with_mlp && mrl_idx == 0 && + is_directional_mode) + mrl0_dir_mode_survived[mbmi->mode] = 1; + av2_pick_uniform_tx_size_type_yrd(cpi, x, &this_rd_stats, bsize, best_rd); this_rate_tokenonly = this_rd_stats.rate; diff --git a/av2/encoder/intra_mode_search.h b/av2/encoder/intra_mode_search.h index 26ffa326b8..91ca729215 100644 --- a/av2/encoder/intra_mode_search.h +++ b/av2/encoder/intra_mode_search.h @@ -71,6 +71,15 @@ typedef struct IntraModeSearchState { int dir_mode_skip_mask_ready; /**@}*/ + /*! + * \brief Inter-frame MRL=0 survival mask: directional base modes whose + * model_rd at (mrl_index=0) survived prune_intra_y_mode. Read at MRL>0 + * call sites to skip unnecessary MRL>0 search. Reset by the caller before + * each inter-frame intra evaluation. Only used when intra_pruning_with_mlp is + * enabled. + */ + uint8_t mrl0_dir_mode_survived[INTRA_MODES]; + /** \name Chroma mode search cache * A cache of the best chroma prediction mode to avoid having to search for * chroma predictions repeatedly in \ref av2_handle_intra_mode() @@ -189,6 +198,27 @@ int64_t av2_handle_intra_mode(IntraModeSearchState *intra_search_state, int64_t *best_intra_rd, int64_t *best_model_rd, int64_t top_intra_model_rd[]); +/*!\brief Compute the MLP-derived intra base-mode mask for the current block. + * + * Runs once per block. Output mlp_mode_mask is a bitmap over INTRA_MODES; + * entries set to 1 are MLP top-K base modes that should be evaluated. + * + * If MLP cannot be applied (4x4, 4x8, or 8x4 block, or low confidence), + * *mlp_fallback is set to 1 and directional_mode_skip_mask is populated by + * prune_intra_mode_with_hog so the caller can use HOG pruning instead. + * + * \param[in] cpi + * \param[in] x + * \param[in] bsize + * \param[out] mlp_mode_mask Bitmap of base modes selected by MLP. + * \param[out] mlp_fallback Set to 1 if MLP cannot be applied. + * \param[out] directional_mode_skip_mask Filled by HOG when *mlp_fallback==1. + */ +void av2_intra_mlp_compute_mode_mask( + const AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, + uint8_t mlp_mode_mask[INTRA_MODES], int *mlp_fallback, + uint8_t directional_mode_skip_mask[INTRA_MODES]); + /*!\brief Search for the best forward skip coding mode for intra blocks. * * \ingroup intra_mode_search @@ -357,9 +387,11 @@ void av2_count_colors_highbd(const uint16_t *src, int stride, int rows, * far. * \param[in] top_intra_model_rd Top intra model RD seen for this * block so far. + * \param[in] k Number of top model RD candidates to + * keep in top_intra_model_rd. */ int prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, - int64_t top_intra_model_rd[]); + int64_t top_intra_model_rd[], int k); #ifdef __cplusplus } // extern "C" diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 954466216b..5640841233 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -8575,8 +8575,25 @@ static void av2_evaluate_intra_modes_in_inter_frame( } mbmi->dpcm_mode_y = 0; + uint8_t mlp_mode_mask[INTRA_MODES] = { 0 }; + int mlp_fallback = !sf->intra_sf.intra_pruning_with_mlp; + uint8_t mlp_dir_skip_mask[INTRA_MODES] = { 0 }; + if (sf->intra_sf.intra_pruning_with_mlp && is_intra_mode_allowed) { + av2_intra_mlp_compute_mode_mask(cpi, x, bsize, mlp_mode_mask, &mlp_fallback, + mlp_dir_skip_mask); + // mlp_dir_skip_mask is only populated (via prune_intra_mode_with_hog) when + // mlp_fallback is set. Seed av2_handle_intra_mode's lazy HOG cache with it + // so that call doesn't redundantly recompute the identical HOG mask. + if (mlp_fallback) { + memcpy(search_state->intra_search_state.directional_mode_skip_mask, + mlp_dir_skip_mask, sizeof(mlp_dir_skip_mask)); + search_state->intra_search_state.dir_mode_skip_mask_ready = 1; + } + } for (int dpcm_idx = 0; dpcm_idx < dpcm_loop_num; dpcm_idx++) { mbmi->use_dpcm_y = dpcm_idx; + memset(search_state->intra_search_state.mrl0_dir_mode_survived, 0, + sizeof(search_state->intra_search_state.mrl0_dir_mode_survived)); for (int fsc_mode = 0; fsc_mode < (allow_fsc_intra(cm, bsize, mbmi) ? FSC_MODES : 1); fsc_mode++) { @@ -8667,6 +8684,15 @@ static void av2_evaluate_intra_modes_in_inter_frame( mbmi->angle_delta[0] == 0) { mbmi->dpcm_mode_y = mbmi->mode - 1; } + if (!mlp_fallback && mbmi->y_mode_idx >= FIRST_MODE_COUNT && + !mlp_mode_mask[mbmi->mode]) + continue; + if (sf->intra_sf.intra_pruning_with_mlp && mbmi->mrl_index > 0 && + av2_is_directional_mode(mbmi->mode) && + mbmi->y_mode_idx >= FIRST_MODE_COUNT && + !search_state->intra_search_state + .mrl0_dir_mode_survived[mbmi->mode]) + continue; RD_STATS intra_rd_stats, intra_rd_stats_y, intra_rd_stats_uv; intra_rd_stats.rdcost = av2_handle_intra_mode( &search_state->intra_search_state, cpi, x, bsize, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 425e40f86e..3ddab1f7c7 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -350,6 +350,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_refinemv_by_ref_idx = 1; sf->inter_sf.prune_interintra_by_ref_idx = 1; sf->inter_sf.prune_warp_delta_by_ref_idx = 1; + sf->intra_sf.intra_pruning_with_mlp = 1; sf->intra_sf.include_dip_for_top_n_model_rd_pruning = true; @@ -816,6 +817,7 @@ static AVM_INLINE void init_interp_sf(INTERP_FILTER_SPEED_FEATURES *interp_sf) { static AVM_INLINE void init_intra_sf(INTRA_MODE_SPEED_FEATURES *intra_sf) { intra_sf->skip_intra_in_interframe = 1; intra_sf->intra_pruning_with_hog = 0; + intra_sf->intra_pruning_with_mlp = 0; intra_sf->src_var_thresh_intra_skip = 1; intra_sf->prune_palette_search_level = 0; intra_sf->reuse_uv_mode_rd_info = false; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 9b79d50fc3..2c76d444fd 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -804,6 +804,10 @@ typedef struct INTRA_MODE_SPEED_FEATURES { // TODO(anyone): tune intra_pruning_with_hog_thresh for various speeds. float intra_pruning_with_hog_thresh; + // Prune intra mode candidates using an MLP trained on source pixels and + // neighbor context. Enabled at speed >= 1. + int intra_pruning_with_mlp; + // Enable/disable smooth intra modes. int disable_smooth_intra; diff --git a/av2/encoder/x86/intra_mode_mlp_avx2.c b/av2/encoder/x86/intra_mode_mlp_avx2.c new file mode 100644 index 0000000000..290cfdcd63 --- /dev/null +++ b/av2/encoder/x86/intra_mode_mlp_avx2.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include + +#include "config/av2_rtcd.h" + +// Processes 8 output neurons at a time. Assumes out_dim is a multiple of 8, +// true for all layer sizes this is called with (MLP_H1/H2/H3_DIM). +void av2_intra_mlp_layer_avx2(const float *input, int in_dim, + const float *weights, const float *bias, + float *output, int out_dim, int apply_relu) { + for (int i = 0; i < out_dim; i += 8) { + __m256 sum0 = _mm256_loadu_ps(&bias[i]); + __m256 sum1 = _mm256_setzero_ps(); + __m256 sum2 = _mm256_setzero_ps(); + __m256 sum3 = _mm256_setzero_ps(); + int j = 0; + for (; j + 3 < in_dim; j += 4) { + __m256 w0 = _mm256_loadu_ps(&weights[(j + 0) * out_dim + i]); + __m256 w1 = _mm256_loadu_ps(&weights[(j + 1) * out_dim + i]); + __m256 w2 = _mm256_loadu_ps(&weights[(j + 2) * out_dim + i]); + __m256 w3 = _mm256_loadu_ps(&weights[(j + 3) * out_dim + i]); + __m256 f0 = _mm256_broadcast_ss(&input[j + 0]); + __m256 f1 = _mm256_broadcast_ss(&input[j + 1]); + __m256 f2 = _mm256_broadcast_ss(&input[j + 2]); + __m256 f3 = _mm256_broadcast_ss(&input[j + 3]); + sum0 = _mm256_add_ps(sum0, _mm256_mul_ps(f0, w0)); + sum1 = _mm256_add_ps(sum1, _mm256_mul_ps(f1, w1)); + sum2 = _mm256_add_ps(sum2, _mm256_mul_ps(f2, w2)); + sum3 = _mm256_add_ps(sum3, _mm256_mul_ps(f3, w3)); + } + sum0 = _mm256_add_ps(sum0, sum1); + sum2 = _mm256_add_ps(sum2, sum3); + sum0 = _mm256_add_ps(sum0, sum2); + for (; j < in_dim; j++) { + __m256 w = _mm256_loadu_ps(&weights[j * out_dim + i]); + __m256 f = _mm256_broadcast_ss(&input[j]); + sum0 = _mm256_add_ps(sum0, _mm256_mul_ps(f, w)); + } + if (apply_relu) { + __m256 zero = _mm256_setzero_ps(); + sum0 = _mm256_max_ps(sum0, zero); + } + _mm256_storeu_ps(&output[i], sum0); + } +} diff --git a/av2/encoder/x86/intra_mode_mlp_sse2.c b/av2/encoder/x86/intra_mode_mlp_sse2.c new file mode 100644 index 0000000000..081bf708e2 --- /dev/null +++ b/av2/encoder/x86/intra_mode_mlp_sse2.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include + +#include "config/av2_rtcd.h" + +// Processes 4 output neurons at a time. Assumes out_dim is a multiple of 4, +// true for all layer sizes this is called with (MLP_H1/H2/H3_DIM). +void av2_intra_mlp_layer_sse2(const float *input, int in_dim, + const float *weights, const float *bias, + float *output, int out_dim, int apply_relu) { + for (int i = 0; i < out_dim; i += 4) { + __m128 sum0 = _mm_loadu_ps(&bias[i]); + __m128 sum1 = _mm_setzero_ps(); + int j = 0; + for (; j + 1 < in_dim; j += 2) { + __m128 w0 = _mm_loadu_ps(&weights[(j + 0) * out_dim + i]); + __m128 w1 = _mm_loadu_ps(&weights[(j + 1) * out_dim + i]); + __m128 f0 = _mm_set1_ps(input[j + 0]); + __m128 f1 = _mm_set1_ps(input[j + 1]); + sum0 = _mm_add_ps(sum0, _mm_mul_ps(f0, w0)); + sum1 = _mm_add_ps(sum1, _mm_mul_ps(f1, w1)); + } + sum0 = _mm_add_ps(sum0, sum1); + for (; j < in_dim; j++) { + __m128 w = _mm_loadu_ps(&weights[j * out_dim + i]); + __m128 f = _mm_set1_ps(input[j]); + sum0 = _mm_add_ps(sum0, _mm_mul_ps(f, w)); + } + if (apply_relu) { + __m128 zero = _mm_setzero_ps(); + sum0 = _mm_max_ps(sum0, zero); + } + _mm_storeu_ps(&output[i], sum0); + } +} diff --git a/test/av2_intra_mlp_layer_test.cc b/test/av2_intra_mlp_layer_test.cc new file mode 100644 index 0000000000..9790e309fc --- /dev/null +++ b/test/av2_intra_mlp_layer_test.cc @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include +#include + +#include "third_party/googletest/src/googletest/include/gtest/gtest.h" + +#include "avm/avm_integer.h" +#include "config/avm_config.h" +#include "config/av2_rtcd.h" +#include "av2/encoder/intra_mode_mlp_weights.h" +#include "test/acm_random.h" +#include "test/clear_system_state.h" +#include "test/util.h" + +namespace { +typedef void (*IntraMlpLayer_Func)(const float *input, int in_dim, + const float *weights, const float *bias, + float *output, int out_dim, int apply_relu); + +typedef std::tuple IntraMlpLayerTestParam; + +const float epsilon = 1e-3f; // Error threshold for functional equivalence + +class IntraMlpLayerTest + : public ::testing::TestWithParam { + public: + virtual void SetUp() { target_func_ = GET_PARAM(0); } + + protected: + void RunLayerTest(int in_dim, int out_dim, int apply_relu); + + IntraMlpLayer_Func target_func_; + libavm_test::ACMRandom rng_; +}; +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(IntraMlpLayerTest); + +void IntraMlpLayerTest::RunLayerTest(int in_dim, int out_dim, int apply_relu) { + libavm_test::ClearSystemState(); + std::vector input(in_dim); + std::vector weights(in_dim * out_dim); + std::vector bias(out_dim); + std::vector output_ref(out_dim); + std::vector output_test(out_dim); + + for (int iter = 0; iter < 1000 && !HasFatalFailure(); ++iter) { + for (int i = 0; i < in_dim; i++) + input[i] = ((float)rng_.Rand31() - (1 << 30)) / (1u << 31); + for (int i = 0; i < in_dim * out_dim; i++) + weights[i] = ((float)rng_.Rand31() - (1 << 30)) / (1u << 31); + for (int i = 0; i < out_dim; i++) + bias[i] = ((float)rng_.Rand31() - (1 << 30)) / (1u << 31); + + av2_intra_mlp_layer_c(input.data(), in_dim, weights.data(), bias.data(), + output_ref.data(), out_dim, apply_relu); + target_func_(input.data(), in_dim, weights.data(), bias.data(), + output_test.data(), out_dim, apply_relu); + libavm_test::ClearSystemState(); + + for (int i = 0; i < out_dim; i++) { + if (fabsf(output_ref[i]) < epsilon) { + ASSERT_LE(fabsf(output_test[i]), epsilon) + << "Reference output was near-zero, test output was not " + << "(in_dim=" << in_dim << ", out_dim=" << out_dim << ")"; + } else { + const float relative_error = + fabsf((output_ref[i] - output_test[i]) / output_ref[i]); + ASSERT_LE(relative_error, epsilon) + << "Excessive relative error between reference and test " + << "(in_dim=" << in_dim << ", out_dim=" << out_dim << ")"; + } + } + } +} + +// Covers the layer shapes actually used by intra_mode_mlp_predict() +// (MLP_INPUT_DIM->MLP_H1_DIM->MLP_H2_DIM->MLP_H3_DIM), all with ReLU applied. +TEST_P(IntraMlpLayerTest, RandomValues) { + RunLayerTest(MLP_INPUT_DIM, MLP_H1_DIM, 1); + RunLayerTest(MLP_H1_DIM, MLP_H2_DIM, 1); + RunLayerTest(MLP_H2_DIM, MLP_H3_DIM, 1); +} + +#if HAVE_SSE2 && !CONFIG_EXCLUDE_SIMD_MISMATCH +INSTANTIATE_TEST_SUITE_P(SSE2, IntraMlpLayerTest, + ::testing::Values(av2_intra_mlp_layer_sse2)); +#endif + +#if HAVE_AVX2 && !CONFIG_EXCLUDE_SIMD_MISMATCH +INSTANTIATE_TEST_SUITE_P(AVX2, IntraMlpLayerTest, + ::testing::Values(av2_intra_mlp_layer_avx2)); +#endif + +#if HAVE_NEON && !CONFIG_EXCLUDE_SIMD_MISMATCH +INSTANTIATE_TEST_SUITE_P(NEON, IntraMlpLayerTest, + ::testing::Values(av2_intra_mlp_layer_neon)); +#endif + +} // namespace diff --git a/test/intra_mode_mlp_test.cc b/test/intra_mode_mlp_test.cc new file mode 100644 index 0000000000..b55bb614e7 --- /dev/null +++ b/test/intra_mode_mlp_test.cc @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "third_party/googletest/src/googletest/include/gtest/gtest.h" + +#include "av2/encoder/intra_mode_mlp.h" +#include "av2/encoder/intra_mode_mlp_weights.h" +#include "test/acm_random.h" + +namespace { + +constexpr float kEps = 1e-4f; + +// --------------------------------------------------------------------------- +// intra_mode_mlp_get_topk +// --------------------------------------------------------------------------- + +TEST(IntraModeMlpGetTopk, ReturnsDescendingOrderIndices) { + // Distinct values, so the top-k order is unambiguous. + float logits[MLP_OUTPUT_DIM] = { 0.1f, 0.9f, 0.3f, -0.2f, 0.05f, 0.7f, 0.15f, + 0.0f, 0.4f, -1.0f, 0.6f, 0.25f, 0.55f }; + int modes[MLP_OUTPUT_DIM]; + intra_mode_mlp_get_topk(logits, 5, modes); + // Sorted descending: 0.9(1), 0.7(5), 0.6(10), 0.55(12), 0.4(8) + const int expected[5] = { 1, 5, 10, 12, 8 }; + for (int i = 0; i < 5; i++) { + EXPECT_EQ(modes[i], expected[i]) << "mismatch at top-" << i; + } +} + +TEST(IntraModeMlpGetTopk, NoDuplicatesEvenWithTies) { + float logits[MLP_OUTPUT_DIM]; + for (int i = 0; i < MLP_OUTPUT_DIM; i++) logits[i] = 0.5f; // all tied + int modes[MLP_OUTPUT_DIM]; + intra_mode_mlp_get_topk(logits, MLP_OUTPUT_DIM, modes); + bool seen[MLP_OUTPUT_DIM] = { false }; + for (int i = 0; i < MLP_OUTPUT_DIM; i++) { + ASSERT_GE(modes[i], 0); + ASSERT_LT(modes[i], MLP_OUTPUT_DIM); + ASSERT_FALSE(seen[modes[i]]) << "duplicate mode " << modes[i]; + seen[modes[i]] = true; + } +} + +// Regression test: a NaN logit must not corrupt the fallback and produce a +// duplicate index (see intra_mode_mlp_get_topk's NaN-safe best_idx fallback). +TEST(IntraModeMlpGetTopk, NanLogitsDoNotProduceDuplicates) { + float logits[MLP_OUTPUT_DIM] = { 0.9f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, + 0.7f, 0.8f, 0.0f, -0.1f, -0.2f, -0.3f }; + const float nan_val = std::nanf(""); + for (int i = 5; i < MLP_OUTPUT_DIM; i++) logits[i] = nan_val; + + int modes[MLP_OUTPUT_DIM]; + intra_mode_mlp_get_topk(logits, MLP_OUTPUT_DIM, modes); + bool seen[MLP_OUTPUT_DIM] = { false }; + for (int i = 0; i < MLP_OUTPUT_DIM; i++) { + ASSERT_GE(modes[i], 0); + ASSERT_LT(modes[i], MLP_OUTPUT_DIM); + ASSERT_FALSE(seen[modes[i]]) + << "duplicate mode " << modes[i] << " with NaN logits present"; + seen[modes[i]] = true; + } +} + +TEST(IntraModeMlpGetTopk, KEqualsOneReturnsMax) { + float logits[MLP_OUTPUT_DIM] = { 0.1f, 0.2f, 0.9f, 0.3f, 0.4f, 0.5f, 0.6f, + 0.7f, 0.8f, 0.0f, -0.1f, -0.2f, -0.3f }; + int modes[1]; + intra_mode_mlp_get_topk(logits, 1, modes); + EXPECT_EQ(modes[0], 2); +} + +// --------------------------------------------------------------------------- +// intra_mode_mlp_prepare_features +// --------------------------------------------------------------------------- + +class IntraModeMlpPrepareFeaturesTest : public ::testing::Test { + protected: + static constexpr int kBw = 16; + static constexpr int kBh = 16; + static constexpr int kStride = kBw; + static constexpr int kBd = 10; + + std::vector src_buf_ = std::vector(kStride * kBh); +}; + +TEST_F(IntraModeMlpPrepareFeaturesTest, ConstantBlockDownsamplesToConstant) { + const uint16_t kValue = 100; + for (int i = 0; i < kStride * kBh; i++) src_buf_[i] = kValue; + + float features[MLP_INPUT_DIM]; + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + -1, 0, -1, 0, 0, features); + + const float pixel_norm = (float)((1 << kBd) - 1); + for (int i = 0; i < 64; i++) { + EXPECT_NEAR(features[i], kValue / pixel_norm, kEps) + << "pixel feature " << i; + } +} + +TEST_F(IntraModeMlpPrepareFeaturesTest, AbsentNeighborUsesSentinel) { + for (int i = 0; i < kStride * kBh; i++) src_buf_[i] = 0; + float features[MLP_INPUT_DIM]; + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + /*neighbor_above_mode=*/-1, /*delta=*/5, + /*neighbor_left_mode=*/-1, /*delta=*/-5, 0, + features); + // Absent neighbor -> sentinel mode 13, delta forced to 0 regardless of the + // (don't-care) delta argument passed in. + EXPECT_NEAR(features[64], 13.0f / MLP_NORM_NEIGHBOR_MODE, kEps); + EXPECT_NEAR(features[65], + (0.0f + MLP_NORM_DELTA_OFFSET) / MLP_NORM_DELTA_RANGE, kEps); + EXPECT_NEAR(features[66], 13.0f / MLP_NORM_NEIGHBOR_MODE, kEps); + EXPECT_NEAR(features[67], + (0.0f + MLP_NORM_DELTA_OFFSET) / MLP_NORM_DELTA_RANGE, kEps); +} + +TEST_F(IntraModeMlpPrepareFeaturesTest, PresentNeighborUsesActualValues) { + for (int i = 0; i < kStride * kBh; i++) src_buf_[i] = 0; + float features[MLP_INPUT_DIM]; + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + /*neighbor_above_mode=*/5, /*delta=*/2, + /*neighbor_left_mode=*/1, /*delta=*/-1, 0, + features); + EXPECT_NEAR(features[64], 5.0f / MLP_NORM_NEIGHBOR_MODE, kEps); + EXPECT_NEAR(features[65], + (2.0f + MLP_NORM_DELTA_OFFSET) / MLP_NORM_DELTA_RANGE, kEps); + EXPECT_NEAR(features[66], 1.0f / MLP_NORM_NEIGHBOR_MODE, kEps); + EXPECT_NEAR(features[67], + (-1.0f + MLP_NORM_DELTA_OFFSET) / MLP_NORM_DELTA_RANGE, kEps); +} + +TEST_F(IntraModeMlpPrepareFeaturesTest, + SizeQpAndInterFlagAreNormalizedCorrectly) { + for (int i = 0; i < kStride * kBh; i++) src_buf_[i] = 0; + float features[MLP_INPUT_DIM]; + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + -1, 0, -1, 0, /*is_inter_frame=*/1, features); + EXPECT_NEAR(features[68], (float)kBw / MLP_NORM_BW, kEps); + EXPECT_NEAR(features[69], (float)kBh / MLP_NORM_BH, kEps); + EXPECT_NEAR(features[70], 128.0f / MLP_NORM_QP, kEps); + EXPECT_FLOAT_EQ(features[71], 1.0f); + + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + -1, 0, -1, 0, /*is_inter_frame=*/0, features); + EXPECT_FLOAT_EQ(features[71], 0.0f); +} + +// Block where pixel value depends only on column (dx-dominant gradient) +// produces a Sobel dx of exactly 8 and dy of exactly 0 at every interior +// pixel (verified by hand from the Sobel kernel weights), landing all HOG +// energy in bin 0 with no truncation ambiguity (mag=8 is even). +TEST_F(IntraModeMlpPrepareFeaturesTest, DxOnlyGradientConcentratesInBinZero) { + for (int r = 0; r < kBh; r++) + for (int c = 0; c < kBw; c++) src_buf_[r * kStride + c] = (uint16_t)c; + + float features[MLP_INPUT_DIM]; + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + -1, 0, -1, 0, 0, features); + const float *hog = &features[72]; + EXPECT_NEAR(hog[0], 1.0f, 0.01f); + for (int i = 1; i < 32; i++) EXPECT_NEAR(hog[i], 0.0f, 0.01f) << "bin " << i; +} + +// Block where pixel value depends only on row (dy-dominant gradient, dx==0) +// hits the dx==0 special case, which splits energy evenly between bin 0 and +// bin 31. +TEST_F(IntraModeMlpPrepareFeaturesTest, DyOnlyGradientSplitsBinZeroAndBin31) { + for (int r = 0; r < kBh; r++) + for (int c = 0; c < kBw; c++) src_buf_[r * kStride + c] = (uint16_t)r; + + float features[MLP_INPUT_DIM]; + intra_mode_mlp_prepare_features(src_buf_.data(), kStride, kBd, kBw, kBh, 128, + -1, 0, -1, 0, 0, features); + const float *hog = &features[72]; + EXPECT_NEAR(hog[0], 0.5f, 0.01f); + EXPECT_NEAR(hog[31], 0.5f, 0.01f); + for (int i = 1; i < 31; i++) EXPECT_NEAR(hog[i], 0.0f, 0.01f) << "bin " << i; +} + +// --------------------------------------------------------------------------- +// intra_mode_mlp_predict +// --------------------------------------------------------------------------- + +TEST(IntraModeMlpPredict, ProducesFiniteOutputForZeroInput) { + float features[MLP_INPUT_DIM] = { 0.0f }; + float logits[MLP_OUTPUT_DIM]; + intra_mode_mlp_predict(features, logits); + for (int i = 0; i < MLP_OUTPUT_DIM; i++) { + EXPECT_TRUE(std::isfinite(logits[i])) << "logit " << i << " not finite"; + } +} + +TEST(IntraModeMlpPredict, IsDeterministic) { + libavm_test::ACMRandom rng; + float features[MLP_INPUT_DIM]; + for (int i = 0; i < MLP_INPUT_DIM; i++) + features[i] = ((float)rng.Rand31() - (1 << 30)) / (1u << 31); + + float logits_a[MLP_OUTPUT_DIM]; + float logits_b[MLP_OUTPUT_DIM]; + intra_mode_mlp_predict(features, logits_a); + intra_mode_mlp_predict(features, logits_b); + for (int i = 0; i < MLP_OUTPUT_DIM; i++) { + EXPECT_TRUE(std::isfinite(logits_a[i])); + EXPECT_FLOAT_EQ(logits_a[i], logits_b[i]) << "logit " << i; + } +} + +TEST(IntraModeMlpPredict, TopkOnPredictOutputIsWellFormed) { + float features[MLP_INPUT_DIM] = { 0.0f }; + float logits[MLP_OUTPUT_DIM]; + intra_mode_mlp_predict(features, logits); + + int modes[MLP_TOP_K]; + intra_mode_mlp_get_topk(logits, MLP_TOP_K, modes); + bool seen[MLP_OUTPUT_DIM] = { false }; + for (int i = 0; i < MLP_TOP_K; i++) { + ASSERT_GE(modes[i], 0); + ASSERT_LT(modes[i], MLP_OUTPUT_DIM); + ASSERT_FALSE(seen[modes[i]]); + seen[modes[i]] = true; + } +} + +} // namespace diff --git a/test/test.cmake b/test/test.cmake index e2eed9ff56..c87dc301af 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -206,6 +206,8 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/arf_freq_test.cc" "${AVM_ROOT}/test/av2_convolve_test.cc" "${AVM_ROOT}/test/av2_nn_predict_test.cc" + "${AVM_ROOT}/test/av2_intra_mlp_layer_test.cc" + "${AVM_ROOT}/test/intra_mode_mlp_test.cc" "${AVM_ROOT}/test/av2_wedge_utils_test.cc" "${AVM_ROOT}/test/av2_ccso_simd_cmp.cc" "${AVM_ROOT}/test/blend_a64_mask_1d_test.cc" From ff8d9d0c4e9b4a8792ddb2ec67b5f91df7b6477f Mon Sep 17 00:00:00 2001 From: ram Date: Wed, 29 Jul 2026 01:37:59 +0530 Subject: [PATCH 091/205] Cleanup PartitionSearchState context (#5157) - partition_allowed_*, prune_partition_* fields are grouped into one array and made accessible via partition_type No stats changed Change-Id: I9983d117e36805b9c936038cdcdbd22c2fc23413 --- av2/encoder/encodeframe_utils.h | 24 +- av2/encoder/partition_search.c | 415 ++++++++++++++----------------- av2/encoder/partition_search.h | 24 +- av2/encoder/partition_strategy.c | 155 ++++++------ av2/encoder/partition_strategy.h | 31 +-- 5 files changed, 298 insertions(+), 351 deletions(-) diff --git a/av2/encoder/encodeframe_utils.h b/av2/encoder/encodeframe_utils.h index d8f1b5b922..caf5a04c9c 100644 --- a/av2/encoder/encodeframe_utils.h +++ b/av2/encoder/encodeframe_utils.h @@ -152,29 +152,23 @@ typedef struct PartitionSearchState { // rect_part_rd[1][i] is the RD cost of ith partition index of PARTITION_VERT. int64_t rect_part_rd[NUM_RECT_PARTS][SUB_PARTITIONS_RECT]; + // Allowed partition types for the partition block. + PARTITION_TYPE forced_partition; + bool is_block_splittable; + bool do_rectangular_split; + bool partition_allowed[ALL_PARTITION_TYPES]; + // Flags to prune/skip particular partition size evaluation. - int terminate_partition_search; - int partition_none_allowed; - int partition_rect_allowed[NUM_RECT_PARTS]; - int do_rectangular_split; - int partition_split_allowed; - bool prune_partition_none; + bool terminate_partition_search; + bool prune_partition[EXT_PARTITION_TYPES]; #if CONFIG_ML_PART_SPLIT bool prune_partition_split; #endif // CONFIG_ML_PART_SPLIT - bool partition_3_allowed[NUM_RECT_PARTS]; - bool prune_partition_3[NUM_RECT_PARTS]; - bool partition_4a_allowed[NUM_RECT_PARTS]; - bool partition_4b_allowed[NUM_RECT_PARTS]; - bool prune_partition_4a[NUM_RECT_PARTS]; - bool prune_partition_4b[NUM_RECT_PARTS]; - PARTITION_TYPE forced_partition; + // Pointer to an array that traces out the current best partition boundary. // Used by prune_part_h_with_partition_boundary and // prune_part_4_with_partition_boundary. bool *partition_boundaries; - bool prune_rect_part[NUM_RECT_PARTS]; - int is_block_splittable; // Chroma subsampling in x and y directions. int ss_x; diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index bc62a0db80..748cca2afa 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2970,82 +2970,79 @@ static AVM_INLINE void init_allowed_partitions( PartitionSearchState *part_search_state, const PartitionCfg *part_cfg, const SPEED_FEATURES *const sf, const int bru_skip, const bool *partition_allowed) { - const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - const BLOCK_SIZE bsize = blk_params->bsize; if (bru_skip) { - part_search_state->do_rectangular_split = 0; - part_search_state->is_block_splittable = 0; - part_search_state->partition_none_allowed = 1; - part_search_state->partition_rect_allowed[HORZ] = 0; - part_search_state->partition_rect_allowed[VERT] = 0; + part_search_state->is_block_splittable = false; + part_search_state->do_rectangular_split = false; + part_search_state->partition_allowed[PARTITION_NONE] = true; + part_search_state->partition_allowed[PARTITION_HORZ] = false; + part_search_state->partition_allowed[PARTITION_VERT] = false; part_search_state->found_best_partition = true; #if CONFIG_ML_PART_SPLIT part_search_state->prune_partition_split = false; #endif // CONFIG_ML_PART_SPLIT return; } + + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; + const BLOCK_SIZE bsize = blk_params->bsize; const bool allow_rect = part_cfg->enable_rect_partitions || !(blk_params->has_rows && blk_params->has_cols); const int min_partition_size = (blk_params->has_rows && blk_params->has_cols) ? blk_params->min_partition_size : BLOCK_4X4; - part_search_state->do_rectangular_split = allow_rect; - - const BLOCK_SIZE horz_subsize = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE vert_subsize = get_partition_subsize(bsize, PARTITION_VERT); - // Initialize allowed partition types for the partition block. part_search_state->is_block_splittable = is_partition_point(bsize); - part_search_state->partition_none_allowed = partition_allowed[PARTITION_NONE]; - part_search_state->partition_rect_allowed[HORZ] = + part_search_state->do_rectangular_split = allow_rect; + part_search_state->partition_allowed[PARTITION_NONE] = + partition_allowed[PARTITION_NONE]; + part_search_state->partition_allowed[PARTITION_HORZ] = partition_allowed[PARTITION_HORZ] && allow_rect && - is_bsize_geq(horz_subsize, min_partition_size); - part_search_state->partition_rect_allowed[VERT] = + is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ), + min_partition_size); + part_search_state->partition_allowed[PARTITION_VERT] = partition_allowed[PARTITION_VERT] && allow_rect && - is_bsize_geq(vert_subsize, min_partition_size); - - part_search_state->partition_3_allowed[HORZ] = + is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT), + min_partition_size); + part_search_state->partition_allowed[PARTITION_HORZ_3] = !sf->part_sf.disable_ext_partitions && partition_allowed[PARTITION_HORZ_3] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_3), blk_params->min_partition_size) && is_bsize_geq(get_h_partition_subsize(bsize, 1, PARTITION_HORZ_3), blk_params->min_partition_size); - - part_search_state->partition_3_allowed[VERT] = + part_search_state->partition_allowed[PARTITION_VERT_3] = !sf->part_sf.disable_ext_partitions && partition_allowed[PARTITION_VERT_3] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_3), blk_params->min_partition_size) && is_bsize_geq(get_h_partition_subsize(bsize, 1, PARTITION_VERT_3), blk_params->min_partition_size); - - part_search_state->partition_4a_allowed[HORZ] = + part_search_state->partition_allowed[PARTITION_HORZ_4A] = !sf->part_sf.disable_ext_partitions && !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_HORZ_4A] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_4A), blk_params->min_partition_size); - part_search_state->partition_4b_allowed[HORZ] = + part_search_state->partition_allowed[PARTITION_HORZ_4B] = !sf->part_sf.disable_ext_partitions && !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_HORZ_4B] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_4B), blk_params->min_partition_size); - part_search_state->partition_4a_allowed[VERT] = + part_search_state->partition_allowed[PARTITION_VERT_4A] = !sf->part_sf.disable_ext_partitions && !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_VERT_4A] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_4A), blk_params->min_partition_size); - part_search_state->partition_4b_allowed[VERT] = + part_search_state->partition_allowed[PARTITION_VERT_4B] = !sf->part_sf.disable_ext_partitions && !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_VERT_4B] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_4B), blk_params->min_partition_size); - part_search_state->partition_split_allowed = + part_search_state->partition_allowed[PARTITION_SPLIT] = partition_allowed[PARTITION_SPLIT] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_SPLIT), blk_params->min_partition_size); @@ -3053,9 +3050,10 @@ static AVM_INLINE void init_allowed_partitions( // Reset the flag indicating whether a partition leading to a rdcost lower // than the bound best_rdc has been found. part_search_state->found_best_partition = false; - assert(part_search_state->partition_none_allowed || - part_search_state->partition_rect_allowed[VERT] || - part_search_state->partition_rect_allowed[HORZ]); + + assert(part_search_state->partition_allowed[PARTITION_NONE] || + part_search_state->partition_allowed[PARTITION_VERT] || + part_search_state->partition_allowed[PARTITION_HORZ]); #if CONFIG_COLLECT_PARTITION_STATS init_partition_block_timing_stats(&part_search_state->part_timing_stats); @@ -3073,8 +3071,10 @@ static void init_partition_search_state_params( const AV2_COMMON *const cm = &cpi->common; PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const CommonModeInfoParams *const mi_params = &cpi->common.mi_params; - assert(pc_tree != NULL); TREE_TYPE tree_type = xd->tree_type; + assert(pc_tree != NULL); + assert(bsize < BLOCK_SIZES_ALL); + // Special case: for INTRA region in inter frame, luma partition tree type // needs to be changed to SHARED_PART to match the signaling logic. if (!frame_is_intra_only(cm) && xd->tree_type == LUMA_PART && @@ -3082,8 +3082,6 @@ static void init_partition_search_state_params( tree_type = SHARED_PART; } - assert(bsize < BLOCK_SIZES_ALL); - // Initialization of block size related parameters. blk_params->mi_step = mi_size_wide[bsize] / 2; blk_params->mi_step_h = mi_size_high[bsize] / 2; @@ -3094,17 +3092,16 @@ static void init_partition_search_state_params( blk_params->mi_col_edge = mi_col + blk_params->mi_step_w; blk_params->width = block_size_wide[bsize]; blk_params->min_partition_size = x->sb_enc.min_partition_size; - blk_params->subsize = get_partition_subsize(bsize, PARTITION_SPLIT); + // Check if the partition corresponds to edge block. + blk_params->has_rows = (blk_params->mi_row_edge < mi_params->mi_rows); + blk_params->has_cols = (blk_params->mi_col_edge < mi_params->mi_cols); blk_params->bsize = bsize; + blk_params->subsize = get_partition_subsize(bsize, PARTITION_SPLIT); // Chroma subsampling. part_search_state->ss_x = x->e_mbd.plane[1].subsampling_x; part_search_state->ss_y = x->e_mbd.plane[1].subsampling_y; - // Check if the partition corresponds to edge block. - blk_params->has_rows = (blk_params->mi_row_edge < mi_params->mi_rows); - blk_params->has_cols = (blk_params->mi_col_edge < mi_params->mi_cols); - // Update intra partitioning related info. part_search_state->intra_part_info = &x->part_search_info; // Prepare for segmentation CNN-based partitioning for intra-frame. @@ -3140,18 +3137,17 @@ static void init_partition_search_state_params( av2_zero(part_search_state->rect_part_rd); // Initialize partition search flags to defaults. - part_search_state->terminate_partition_search = 0; - - av2_zero(part_search_state->prune_rect_part); - - part_search_state->partition_boundaries = NULL; - part_search_state->prune_partition_none = false; + part_search_state->terminate_partition_search = false; + part_search_state->prune_partition[PARTITION_NONE] = false; + const bool prune_partition = max_recursion_depth == 0; + for (PARTITION_TYPE partition_type = PARTITION_HORZ; + partition_type < EXT_PARTITION_TYPES; ++partition_type) { + part_search_state->prune_partition[partition_type] = prune_partition; + } #if CONFIG_ML_PART_SPLIT - part_search_state->prune_partition_split = false; + part_search_state->prune_partition_split = prune_partition; #endif // CONFIG_ML_PART_SPLIT - av2_zero(part_search_state->prune_partition_3); - av2_zero(part_search_state->prune_partition_4a); - av2_zero(part_search_state->prune_partition_4b); + part_search_state->partition_boundaries = NULL; const bool ss_x = cm->seq_params.subsampling_x; const bool ss_y = cm->seq_params.subsampling_y; @@ -3160,26 +3156,13 @@ static void init_partition_search_state_params( partition_allowed, cm, tree_type, (pc_tree->parent ? pc_tree->parent->region_type : INTRA_REGION), mi_row, mi_col, ss_x, ss_y, bsize, &pc_tree->chroma_ref_info); - part_search_state->forced_partition = get_forced_partition_type( cm, x, mi_row, mi_col, bsize, ptree_luma, template_tree, pc_tree->region_type, partition_allowed); - init_allowed_partitions( part_search_state, &cpi->oxcf.part_cfg, &cpi->sf, is_bru_not_active_and_not_on_partial_border(cm, mi_col, mi_row, bsize), partition_allowed); - - if (max_recursion_depth == 0) { - part_search_state->prune_rect_part[HORZ] = - part_search_state->prune_rect_part[VERT] = true; - part_search_state->prune_partition_3[HORZ] = - part_search_state->prune_partition_3[VERT] = true; - part_search_state->prune_partition_4a[HORZ] = - part_search_state->prune_partition_4a[VERT] = true; - part_search_state->prune_partition_4b[HORZ] = - part_search_state->prune_partition_4b[VERT] = true; - } } static const int rect_partition_type[NUM_RECT_PARTS] = { PARTITION_HORZ, @@ -3275,15 +3258,15 @@ static void rd_pick_rect_partition( if (partition_found && ((!bru_is_sb_active(&cpi->common, x->e_mbd.mi_col, x->e_mbd.mi_row)) || cpi->common.bridge_frame_info.is_bridge_frame)) { - part_search_state->terminate_partition_search = 1; - part_search_state->do_rectangular_split = 0; - part_search_state->is_block_splittable = 0; + part_search_state->terminate_partition_search = true; + part_search_state->do_rectangular_split = false; + part_search_state->is_block_splittable = false; part_search_state->forced_partition = 0; - part_search_state->partition_none_allowed = 0; + part_search_state->partition_allowed[PARTITION_NONE] = false; if (rect_type == HORZ) - part_search_state->partition_rect_allowed[VERT] = 0; + part_search_state->partition_allowed[PARTITION_VERT] = false; else - part_search_state->partition_rect_allowed[HORZ] = 0; + part_search_state->partition_allowed[PARTITION_HORZ] = false; part_search_state->found_best_partition = true; #if CONFIG_ML_PART_SPLIT part_search_state->prune_partition_split = false; @@ -3306,11 +3289,12 @@ static AVM_INLINE int is_rect_part_allowed( PartitionBlkParams blk_params = part_search_state->part_blk_params; const int mi_step = (rect_part == HORZ) ? blk_params.mi_step_h : blk_params.mi_step_w; + const PARTITION_TYPE partition_type = rect_partition_type[rect_part]; const int is_part_allowed = (!part_search_state->terminate_partition_search && - part_search_state->partition_rect_allowed[rect_part] && - !part_search_state->prune_rect_part[rect_part] && - is_partition_valid(blk_params.bsize, rect_partition_type[rect_part]) && + part_search_state->partition_allowed[partition_type] && + !part_search_state->prune_partition[partition_type] && + is_partition_valid(blk_params.bsize, partition_type) && (part_search_state->do_rectangular_split || active_edge[rect_part](cpi, mi_pos, mi_step))); return is_part_allowed; @@ -3337,7 +3321,7 @@ static AVM_INLINE void prune_rect_with_none_rd( const int64_t est_rd = (int64_t)(part_none_rd / discount_factor) + RDCOST(rdmult, part_rate, 0); if (est_rd > part_none_rd) { - part_search_state->prune_rect_part[rect] = true; + part_search_state->prune_partition[partition_type] = true; } } } @@ -3412,8 +3396,8 @@ static void rectangular_partition_search( const bool is_hd = AVMMIN(cm->width, cm->height) >= 1080; av2_erp_prune_rect(bsize, is_hd, ml_features, - &part_search_state->prune_rect_part[HORZ], - &part_search_state->prune_rect_part[VERT]); + &part_search_state->prune_partition[PARTITION_HORZ], + &part_search_state->prune_partition[PARTITION_VERT]); } if (cpi->sf.part_sf.prune_rect_with_none_rd && part_search_state->forced_partition == PARTITION_INVALID && @@ -3546,16 +3530,16 @@ static AVM_INLINE void set_part_none_allowed_flag( PartitionSearchState *part_search_state) { PartitionBlkParams blk_params = part_search_state->part_blk_params; if (tree_type == CHROMA_PART && blk_params.bsize == BLOCK_8X8) { - part_search_state->partition_none_allowed = 1; + part_search_state->partition_allowed[PARTITION_NONE] = true; return; } if (sdp_inter_chroma_flag) { - part_search_state->partition_none_allowed = 1; + part_search_state->partition_allowed[PARTITION_NONE] = true; return; } if (is_bsize_geq(blk_params.min_partition_size, blk_params.bsize) && blk_params.has_rows && blk_params.has_cols) - part_search_state->partition_none_allowed = 1; + part_search_state->partition_allowed[PARTITION_NONE] = true; } // Set params needed for PARTITION_NONE search. @@ -3585,7 +3569,7 @@ static void set_none_partition_params(const AV2_COMMON *const cm, } // Set PARTITION_NONE type cost. - if (part_search_state->partition_none_allowed) { + if (part_search_state->partition_allowed[PARTITION_NONE]) { if (part_search_state->is_block_splittable && !is_inter_sdp_chroma(cm, pc_tree->region_type, x->e_mbd.tree_type)) { *pt_cost = part_search_state->partition_cost[PARTITION_NONE] < INT_MAX @@ -3627,7 +3611,7 @@ static void prune_partitions_after_none(AV2_COMP *const cpi, MACROBLOCK *x, if (use_ml_based_breakout) { if (av2_ml_predict_breakout(cpi, bsize, x, this_rdc, *pb_source_variance)) { - part_search_state->do_rectangular_split = 0; + part_search_state->do_rectangular_split = false; } } @@ -3651,7 +3635,7 @@ static void prune_partitions_after_none(AV2_COMP *const cpi, MACROBLOCK *x, // disable the early termination at that speed. if (best_rdc->dist < dist_breakout_thr && best_rdc->rate < rate_breakout_thr) { - part_search_state->do_rectangular_split = 0; + part_search_state->do_rectangular_split = false; } } @@ -3674,13 +3658,13 @@ static void prune_partitions_after_none(AV2_COMP *const cpi, MACROBLOCK *x, // force early terminate after successful none in not active if ((!bru_is_sb_active(cm, blk_params.mi_col, blk_params.mi_row)) || cm->bridge_frame_info.is_bridge_frame) { - part_search_state->terminate_partition_search = 1; - part_search_state->do_rectangular_split = 0; - part_search_state->is_block_splittable = 0; + part_search_state->terminate_partition_search = true; + part_search_state->do_rectangular_split = false; + part_search_state->is_block_splittable = false; part_search_state->forced_partition = 0; - part_search_state->partition_none_allowed = 1; - part_search_state->partition_rect_allowed[HORZ] = 0; - part_search_state->partition_rect_allowed[VERT] = 0; + part_search_state->partition_allowed[PARTITION_NONE] = true; + part_search_state->partition_allowed[PARTITION_HORZ] = false; + part_search_state->partition_allowed[PARTITION_VERT] = false; part_search_state->found_best_partition = true; #if CONFIG_ML_PART_SPLIT part_search_state->prune_partition_split = false; @@ -3764,10 +3748,11 @@ static void none_partition_search( // Set PARTITION_NONE allowed flag. set_part_none_allowed_flag(x->e_mbd.tree_type, sdp_inter_chroma_flag, part_search_state); - if (!part_search_state->partition_none_allowed) { + if (!part_search_state->partition_allowed[PARTITION_NONE]) { return; } - if (part_search_state->prune_partition_none && !sdp_inter_chroma_flag) { + if (part_search_state->prune_partition[PARTITION_NONE] && + !sdp_inter_chroma_flag) { return; } @@ -3880,7 +3865,7 @@ static void none_partition_search( pc_tree->parent->none_rd.rate == INT_MAX && pc_tree->parent->parent->none_rd.rate == INT_MAX && best_rdc->rdcost < INT64_MAX) { - part_search_state->terminate_partition_search = 1; + part_search_state->terminate_partition_search = true; } av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, av2_num_planes(cm)); restore_level_banks(&x->e_mbd, level_banks); @@ -3901,8 +3886,8 @@ static void av2_ml_prune_after_split(AV2_COMP *const cpi, MACROBLOCK *x, !frame_is_intra_only(cm) && !part_search_state->terminate_partition_search && part_search_state->do_rectangular_split && - (part_search_state->partition_rect_allowed[HORZ] || - part_search_state->partition_rect_allowed[VERT]) && + (part_search_state->partition_allowed[PARTITION_HORZ] || + part_search_state->partition_allowed[PARTITION_VERT]) && sms_tree) { av2_ml_early_term_after_split( cpi, x, sms_tree, best_rdc->rdcost, part_none_rd, part_split_rd, @@ -3932,7 +3917,7 @@ static void split_partition_search( // Check if partition split is allowed. (void)sms_tree; if (part_search_state->terminate_partition_search || - !part_search_state->partition_split_allowed || + !part_search_state->partition_allowed[PARTITION_SPLIT] || !is_square_split_eligible(bsize, cm->sb_size)) { return; } @@ -4064,12 +4049,12 @@ static void split_partition_search( if (part_search_state->found_best_partition && ((!bru_is_sb_active(cm, mi_col, mi_row)) || cm->bridge_frame_info.is_bridge_frame)) { - part_search_state->terminate_partition_search = 1; - part_search_state->do_rectangular_split = 0; + part_search_state->terminate_partition_search = true; + part_search_state->do_rectangular_split = false; part_search_state->forced_partition = 0; - part_search_state->partition_none_allowed = 0; - part_search_state->partition_rect_allowed[VERT] = 0; - part_search_state->partition_rect_allowed[HORZ] = 0; + part_search_state->partition_allowed[PARTITION_NONE] = false; + part_search_state->partition_allowed[PARTITION_VERT] = false; + part_search_state->partition_allowed[PARTITION_HORZ] = false; #if CONFIG_ML_PART_SPLIT part_search_state->prune_partition_split = false; #endif // CONFIG_ML_PART_SPLIT @@ -4383,7 +4368,7 @@ static AVM_INLINE void prune_part_3_with_partition_boundary( } } } - part_search_state->prune_partition_3[HORZ] |= !keep_horz_3; + part_search_state->prune_partition[PARTITION_HORZ_3] |= !keep_horz_3; } if (can_search_vert) { bool keep_vert_3 = false; @@ -4416,7 +4401,7 @@ static AVM_INLINE void prune_part_3_with_partition_boundary( } } } - part_search_state->prune_partition_3[VERT] |= !keep_vert_3; + part_search_state->prune_partition[PARTITION_VERT_3] |= !keep_vert_3; } } @@ -4476,8 +4461,8 @@ static AVM_INLINE void prune_part_4_with_partition_boundary( } } } - part_search_state->prune_partition_4a[HORZ] |= !keep_horz_4a; - part_search_state->prune_partition_4b[HORZ] |= !keep_horz_4b; + part_search_state->prune_partition[PARTITION_HORZ_4A] |= !keep_horz_4a; + part_search_state->prune_partition[PARTITION_HORZ_4B] |= !keep_horz_4b; } if (can_search_vert_4a || can_search_vert_4b) { for (int row = 0; row < mi_height; row++) { @@ -4516,8 +4501,8 @@ static AVM_INLINE void prune_part_4_with_partition_boundary( } } } - part_search_state->prune_partition_4a[VERT] |= !keep_vert_4a; - part_search_state->prune_partition_4b[VERT] |= !keep_vert_4b; + part_search_state->prune_partition[PARTITION_VERT_4A] |= !keep_vert_4a; + part_search_state->prune_partition[PARTITION_VERT_4B] |= !keep_vert_4b; } } @@ -4536,12 +4521,12 @@ static AVM_INLINE void prune_ext_partitions_3way( REGION_TYPE cur_region_type = pc_tree->region_type; // Prune horz 3 with speed features - if (part_search_state->partition_3_allowed[HORZ] && + if (part_search_state->partition_allowed[PARTITION_HORZ_3] && !frame_is_intra_only(cm) && forced_partition != PARTITION_HORZ_3) { if (part_sf->prune_ext_part_with_part_none && pc_tree->partitioning == PARTITION_NONE) { // Prune if the best partition does not split - part_search_state->prune_partition_3[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_3] = true; } if (part_sf->prune_ext_part_with_part_rect) { // Prune if the best partition is rect but the subtrees did not further @@ -4551,24 +4536,24 @@ static AVM_INLINE void prune_ext_partitions_3way( pc_tree->horizontal[cur_region_type][1] && !node_uses_horz(pc_tree->horizontal[cur_region_type][0]) && !node_uses_horz(pc_tree->horizontal[cur_region_type][1])) { - part_search_state->prune_partition_3[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_3] = true; } if (pc_tree->partitioning == PARTITION_VERT && pc_tree->vertical[cur_region_type][0] && pc_tree->vertical[cur_region_type][1] && !node_uses_horz(pc_tree->vertical[cur_region_type][0]) && !node_uses_horz(pc_tree->vertical[cur_region_type][1])) { - part_search_state->prune_partition_3[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_3] = true; } } } - if (part_search_state->partition_3_allowed[VERT] && + if (part_search_state->partition_allowed[PARTITION_VERT_3] && !frame_is_intra_only(cm) && forced_partition != PARTITION_VERT_3) { if (part_sf->prune_ext_part_with_part_none && pc_tree->partitioning == PARTITION_NONE) { // Prune if the best partition does not split - part_search_state->prune_partition_3[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_3] = true; } if (part_sf->prune_ext_part_with_part_rect) { // Prune if the best partition is rect but the subtrees did not further @@ -4578,22 +4563,24 @@ static AVM_INLINE void prune_ext_partitions_3way( pc_tree->vertical[cur_region_type][1] && !node_uses_vert(pc_tree->vertical[cur_region_type][0]) && !node_uses_vert(pc_tree->vertical[cur_region_type][1])) { - part_search_state->prune_partition_3[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_3] = true; } if (pc_tree->partitioning == PARTITION_HORZ && pc_tree->horizontal[cur_region_type][0] && pc_tree->horizontal[cur_region_type][1] && !node_uses_vert(pc_tree->horizontal[cur_region_type][0]) && !node_uses_vert(pc_tree->horizontal[cur_region_type][1])) { - part_search_state->prune_partition_3[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_3] = true; } } } - const bool can_search_horz = part_search_state->partition_3_allowed[HORZ] && - !part_search_state->prune_partition_3[HORZ]; - const bool can_search_vert = part_search_state->partition_3_allowed[VERT] && - !part_search_state->prune_partition_3[VERT]; + const bool can_search_horz = + part_search_state->partition_allowed[PARTITION_HORZ_3] && + !part_search_state->prune_partition[PARTITION_HORZ_3]; + const bool can_search_vert = + part_search_state->partition_allowed[PARTITION_VERT_3] && + !part_search_state->prune_partition[PARTITION_VERT_3]; const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col, bsize = blk_params->bsize; @@ -4832,12 +4819,12 @@ static AVM_INLINE void prune_ext_partitions_4way( const int cur_region_type = pc_tree->region_type; // Prune HORZ 4A with speed features - if (part_search_state->partition_4a_allowed[HORZ] && + if (part_search_state->partition_allowed[PARTITION_HORZ_4A] && forced_partition != PARTITION_HORZ_4A) { if (part_sf->prune_ext_part_with_part_none && pc_tree->partitioning == PARTITION_NONE) { // Prune if the best partition does not split - part_search_state->prune_partition_4a[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4A] = true; } if (part_sf->prune_ext_part_with_part_rect) { // Prune if the best partition is rect but subtrees did not further split @@ -4845,12 +4832,12 @@ static AVM_INLINE void prune_ext_partitions_4way( if (pc_tree->partitioning == PARTITION_HORZ && !node_uses_horz(pc_tree->horizontal[cur_region_type][0]) && !node_uses_horz(pc_tree->horizontal[cur_region_type][1])) { - part_search_state->prune_partition_4a[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4A] = true; } if (pc_tree->partitioning == PARTITION_VERT && !node_uses_horz(pc_tree->vertical[cur_region_type][0]) && !node_uses_horz(pc_tree->vertical[cur_region_type][1])) { - part_search_state->prune_partition_4a[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4A] = true; } } if (part_sf->prune_part_4_with_part_3) { @@ -4859,33 +4846,33 @@ static AVM_INLINE void prune_ext_partitions_4way( !node_uses_horz(pc_tree->horizontal3[cur_region_type][3])) { // Prune if best partition is horizontal H, but first and last // subpartitions did not further split in horizontal direction. - part_search_state->prune_partition_4a[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4A] = true; } if (pc_tree->partitioning == PARTITION_VERT_3 && !node_uses_horz(pc_tree->vertical3[cur_region_type][1]) && !node_uses_horz(pc_tree->vertical3[cur_region_type][2])) { // Prune if best partition is vertical H, but middle two // subpartitions did not further split in horizontal direction. - part_search_state->prune_partition_4a[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4A] = true; } } if (part_sf->prune_part_4_horz_or_vert && pc_tree->partitioning == PARTITION_VERT && - part_search_state->partition_rect_allowed[HORZ] && + part_search_state->partition_allowed[PARTITION_HORZ] && (!frame_is_intra_only(cm) || (!node_uses_horz(pc_tree->vertical[cur_region_type][0]) && !node_uses_horz(pc_tree->vertical[cur_region_type][1])))) { - part_search_state->prune_partition_4a[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4A] = true; } } // Prune HORZ 4B with speed features - if (part_search_state->partition_4b_allowed[HORZ] && + if (part_search_state->partition_allowed[PARTITION_HORZ_4B] && forced_partition != PARTITION_HORZ_4B) { if (part_sf->prune_ext_part_with_part_none && pc_tree->partitioning == PARTITION_NONE) { // Prune if the best partition does not split - part_search_state->prune_partition_4b[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } if (part_sf->prune_ext_part_with_part_rect) { // Prune if the best partition is rect but subtrees did not further split @@ -4893,12 +4880,12 @@ static AVM_INLINE void prune_ext_partitions_4way( if (pc_tree->partitioning == PARTITION_HORZ && !node_uses_horz(pc_tree->horizontal[cur_region_type][0]) && !node_uses_horz(pc_tree->horizontal[cur_region_type][1])) { - part_search_state->prune_partition_4b[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } if (pc_tree->partitioning == PARTITION_VERT && !node_uses_horz(pc_tree->vertical[cur_region_type][0]) && !node_uses_horz(pc_tree->vertical[cur_region_type][1])) { - part_search_state->prune_partition_4b[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } } if (part_sf->prune_part_4_with_part_3) { @@ -4907,33 +4894,33 @@ static AVM_INLINE void prune_ext_partitions_4way( !node_uses_horz(pc_tree->horizontal3[cur_region_type][3])) { // Prune if best partition is horizontal H, but first and last // subpartitions did not further split in horizontal direction. - part_search_state->prune_partition_4b[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } if (pc_tree->partitioning == PARTITION_VERT_3 && !node_uses_horz(pc_tree->vertical3[cur_region_type][1]) && !node_uses_horz(pc_tree->vertical3[cur_region_type][2])) { // Prune if best partition is vertical H, but middle two // subpartitions did not further split in horizontal direction. - part_search_state->prune_partition_4b[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } } if (part_sf->prune_part_4_horz_or_vert && pc_tree->partitioning == PARTITION_VERT && - part_search_state->partition_rect_allowed[HORZ] && + part_search_state->partition_allowed[PARTITION_HORZ] && (!frame_is_intra_only(cm) || (!node_uses_horz(pc_tree->vertical[cur_region_type][0]) && !node_uses_horz(pc_tree->vertical[cur_region_type][1])))) { - part_search_state->prune_partition_4b[HORZ] = 1; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } } // Prune VERT_4A with speed features - if (part_search_state->partition_4a_allowed[VERT] && + if (part_search_state->partition_allowed[PARTITION_VERT_4A] && forced_partition != PARTITION_VERT_4A) { if (part_sf->prune_ext_part_with_part_none && pc_tree->partitioning == PARTITION_NONE) { // Prune if the best partition does not split - part_search_state->prune_partition_4a[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4A] = true; } if (part_sf->prune_ext_part_with_part_rect) { // Prune if the best partition is rect but subtrees did not further split @@ -4941,12 +4928,12 @@ static AVM_INLINE void prune_ext_partitions_4way( if (pc_tree->partitioning == PARTITION_VERT && !node_uses_vert(pc_tree->vertical[cur_region_type][0]) && !node_uses_vert(pc_tree->vertical[cur_region_type][1])) { - part_search_state->prune_partition_4a[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4A] = true; } if (pc_tree->partitioning == PARTITION_HORZ && !node_uses_vert(pc_tree->horizontal[cur_region_type][0]) && !node_uses_vert(pc_tree->horizontal[cur_region_type][1])) { - part_search_state->prune_partition_4a[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4A] = true; } } if (part_sf->prune_part_4_with_part_3) { @@ -4955,33 +4942,33 @@ static AVM_INLINE void prune_ext_partitions_4way( !node_uses_vert(pc_tree->vertical3[cur_region_type][3])) { // Prune if best partition is vertical H, but first and last // subpartitions did not further split in vertical direction. - part_search_state->prune_partition_4a[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4A] = true; } if (pc_tree->partitioning == PARTITION_HORZ_3 && !node_uses_vert(pc_tree->horizontal3[cur_region_type][1]) && !node_uses_vert(pc_tree->horizontal3[cur_region_type][2])) { // Prune if best partition is horizontal H, but middle two // subpartitions did not further split in vertical direction. - part_search_state->prune_partition_4a[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4A] = true; } } if (part_sf->prune_part_4_horz_or_vert && pc_tree->partitioning == PARTITION_HORZ && - part_search_state->partition_rect_allowed[VERT] && + part_search_state->partition_allowed[PARTITION_VERT] && (!frame_is_intra_only(cm) || (!node_uses_vert(pc_tree->horizontal[cur_region_type][0]) && !node_uses_vert(pc_tree->horizontal[cur_region_type][1])))) { - part_search_state->prune_partition_4a[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4A] = true; } } // Prune VERT_4B with speed features - if (part_search_state->partition_4b_allowed[VERT] && + if (part_search_state->partition_allowed[PARTITION_VERT_4B] && forced_partition != PARTITION_VERT_4B) { if (part_sf->prune_ext_part_with_part_none && pc_tree->partitioning == PARTITION_NONE) { // Prune if the best partition does not split - part_search_state->prune_partition_4b[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } if (part_sf->prune_ext_part_with_part_rect) { // Prune if the best partition is rect but subtrees did not further split @@ -4989,12 +4976,12 @@ static AVM_INLINE void prune_ext_partitions_4way( if (pc_tree->partitioning == PARTITION_VERT && !node_uses_vert(pc_tree->vertical[cur_region_type][0]) && !node_uses_vert(pc_tree->vertical[cur_region_type][1])) { - part_search_state->prune_partition_4b[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } if (pc_tree->partitioning == PARTITION_HORZ && !node_uses_vert(pc_tree->horizontal[cur_region_type][0]) && !node_uses_vert(pc_tree->horizontal[cur_region_type][1])) { - part_search_state->prune_partition_4b[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } } if (part_sf->prune_part_4_with_part_3) { @@ -5003,38 +4990,38 @@ static AVM_INLINE void prune_ext_partitions_4way( !node_uses_vert(pc_tree->vertical3[cur_region_type][3])) { // Prune if best partition is vertical H, but first and last // subpartitions did not further split in vertical direction. - part_search_state->prune_partition_4b[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } if (pc_tree->partitioning == PARTITION_HORZ_3 && !node_uses_vert(pc_tree->horizontal3[cur_region_type][1]) && !node_uses_vert(pc_tree->horizontal3[cur_region_type][2])) { // Prune if best partition is horizontal H, but middle two // subpartitions did not further split in vertical direction. - part_search_state->prune_partition_4b[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } } if (part_sf->prune_part_4_horz_or_vert && pc_tree->partitioning == PARTITION_HORZ && - part_search_state->partition_rect_allowed[VERT] && + part_search_state->partition_allowed[PARTITION_VERT] && (!frame_is_intra_only(cm) || (!node_uses_vert(pc_tree->horizontal[cur_region_type][0]) && !node_uses_vert(pc_tree->horizontal[cur_region_type][1])))) { - part_search_state->prune_partition_4b[VERT] = 1; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } } const bool can_search_horz_4a = - part_search_state->partition_4a_allowed[HORZ] && - !part_search_state->prune_partition_4a[HORZ]; + part_search_state->partition_allowed[PARTITION_HORZ_4A] && + !part_search_state->prune_partition[PARTITION_HORZ_4A]; const bool can_search_horz_4b = - part_search_state->partition_4b_allowed[HORZ] && - !part_search_state->prune_partition_4b[HORZ]; + part_search_state->partition_allowed[PARTITION_HORZ_4B] && + !part_search_state->prune_partition[PARTITION_HORZ_4B]; const bool can_search_vert_4a = - part_search_state->partition_4a_allowed[VERT] && - !part_search_state->prune_partition_4a[VERT]; + part_search_state->partition_allowed[PARTITION_VERT_4A] && + !part_search_state->prune_partition[PARTITION_VERT_4A]; const bool can_search_vert_4b = - part_search_state->partition_4b_allowed[VERT] && - !part_search_state->prune_partition_4b[VERT]; + part_search_state->partition_allowed[PARTITION_VERT_4B] && + !part_search_state->prune_partition[PARTITION_VERT_4B]; const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col, bsize = blk_params->bsize; @@ -5083,27 +5070,13 @@ static void search_extended_partition( return; if (search_state->terminate_partition_search) return; if (!is_partition_valid(bsize, partition_type)) return; + if (!part_search_state->partition_allowed[partition_type] || + part_search_state->prune_partition[partition_type]) + return; const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); const bool is_h_partition = partition_type == PARTITION_HORZ_3 || partition_type == PARTITION_VERT_3; - if (is_h_partition) { - if (!part_search_state->partition_3_allowed[rect_type] || - part_search_state->prune_partition_3[rect_type]) - return; - } else { - const UNEVEN_4WAY_PART_TYPE uneven_type = - get_4way_part_type(partition_type); - bool skip_search; - if (uneven_type == UNEVEN_4A) { - skip_search = (!part_search_state->partition_4a_allowed[rect_type] || - part_search_state->prune_partition_4a[rect_type]); - } else { - skip_search = (!part_search_state->partition_4b_allowed[rect_type] || - part_search_state->prune_partition_4b[rect_type]); - } - if (skip_search) return; - } if (rect_type == HORZ) { if (!blk_params->has_rows) return; if (!(search_state->do_rectangular_split || @@ -5382,7 +5355,7 @@ static AVM_INLINE void prune_none_after_rect( // Give up on PARTITION_NONE if either of the subtrees decided to split // further. for (int idx = 0; idx < num_sub_parts && tree[idx]; ++idx) { - part_search_state->prune_partition_none |= + part_search_state->prune_partition[PARTITION_NONE] |= tree[idx]->partitioning != PARTITION_NONE; } } @@ -5407,8 +5380,8 @@ static void prune_partitions_after_split( max_depth = AVMMAX(max_depth, depth); } if (min_depth > 4) { - part_search_state->prune_rect_part[HORZ] = true; - part_search_state->prune_rect_part[VERT] = true; + part_search_state->prune_partition[PARTITION_HORZ] = true; + part_search_state->prune_partition[PARTITION_VERT] = true; } (void)max_depth; } @@ -5422,20 +5395,20 @@ static AVM_INLINE void prune_4way_partitions_based_on_4way_search( PARTITION_TYPE partition_type) { if (partition_type == PARTITION_HORZ_4A) { if (part_sf->prune_part_4b_with_part_4a) { - if (part_search_state->partition_4a_allowed[HORZ] && - !part_search_state->prune_partition_4a[HORZ] && + if (part_search_state->partition_allowed[PARTITION_HORZ_4A] && + !part_search_state->prune_partition[PARTITION_HORZ_4A] && part_search_state->found_best_partition && pc_tree->partitioning != PARTITION_HORZ_4A) { - part_search_state->prune_partition_4b[HORZ] = true; + part_search_state->prune_partition[PARTITION_HORZ_4B] = true; } } } else if (partition_type == PARTITION_VERT_4A) { if (part_sf->prune_part_4b_with_part_4a) { - if (part_search_state->partition_4a_allowed[VERT] && - !part_search_state->prune_partition_4a[VERT] && + if (part_search_state->partition_allowed[PARTITION_VERT_4A] && + !part_search_state->prune_partition[PARTITION_VERT_4A] && part_search_state->found_best_partition && pc_tree->partitioning != PARTITION_VERT_4A) { - part_search_state->prune_partition_4b[VERT] = true; + part_search_state->prune_partition[PARTITION_VERT_4B] = true; } } } @@ -5478,16 +5451,17 @@ static void prune_partitions_using_ml_results( const AV2_COMMON *const cm = &cpi->common; MACROBLOCK *const x = &td->mb; TileInfo *const tile_info = &tile_data->tile_info; - - part_search_state->prune_partition_none |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_partition_3[HORZ] |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_partition_3[VERT] |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_partition_4a[HORZ] |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_partition_4a[VERT] |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_partition_4b[HORZ] |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_partition_4b[VERT] |= force_prune_flags[PRUNE_OTHER]; - part_search_state->prune_rect_part[HORZ] |= force_prune_flags[PRUNE_HORZ]; - part_search_state->prune_rect_part[VERT] |= force_prune_flags[PRUNE_VERT]; + bool *prune_partition = part_search_state->prune_partition; + + prune_partition[PARTITION_NONE] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_HORZ_3] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_VERT_3] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_HORZ_4A] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_VERT_4A] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_HORZ_4B] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_VERT_4B] |= force_prune_flags[PRUNE_OTHER]; + prune_partition[PARTITION_HORZ] |= force_prune_flags[PRUNE_HORZ]; + prune_partition[PARTITION_VERT] |= force_prune_flags[PRUNE_VERT]; // Don't want to run ML in the second stage of the forced split. Want the // force split to carry out without interference. @@ -5500,21 +5474,21 @@ static void prune_partitions_using_ml_results( av2_ml_part_split_infer(cpi, x, mi_row, mi_col, bsize, tile_info, td, search_none_after_rect, prune_list); if (ml_result == ML_PART_FORCE_NONE || ml_result == ML_PART_FORCE_SPLIT) { - part_search_state->prune_partition_3[HORZ] = true; - part_search_state->prune_partition_3[VERT] = true; - part_search_state->prune_partition_4a[HORZ] = true; - part_search_state->prune_partition_4a[VERT] = true; - part_search_state->prune_partition_4b[HORZ] = true; - part_search_state->prune_partition_4b[VERT] = true; + prune_partition[PARTITION_HORZ_3] = true; + prune_partition[PARTITION_VERT_3] = true; + prune_partition[PARTITION_HORZ_4A] = true; + prune_partition[PARTITION_VERT_4A] = true; + prune_partition[PARTITION_HORZ_4B] = true; + prune_partition[PARTITION_VERT_4B] = true; } if (ml_result == ML_PART_FORCE_NONE) { - part_search_state->prune_rect_part[VERT] = true; - part_search_state->prune_rect_part[HORZ] = true; + prune_partition[PARTITION_VERT] = true; + prune_partition[PARTITION_HORZ] = true; } else if (ml_result == ML_PART_FORCE_SPLIT) { - part_search_state->prune_partition_none = true; + prune_partition[PARTITION_NONE] = true; if (is_square_split_eligible(bsize, cm->sb_size)) { - part_search_state->prune_rect_part[VERT] = true; - part_search_state->prune_rect_part[HORZ] = true; + prune_partition[PARTITION_VERT] = true; + prune_partition[PARTITION_HORZ] = true; } else { next_force_prune_flags[HORZ][PRUNE_OTHER] = true; next_force_prune_flags[VERT][PRUNE_OTHER] = true; @@ -5523,7 +5497,7 @@ static void prune_partitions_using_ml_results( } } else { if (prune_list[PT_NONE]) { - part_search_state->prune_partition_none = true; + prune_partition[PARTITION_NONE] = true; } if (prune_list[PT_SPLIT]) { if (is_square_split_eligible(bsize, cm->sb_size)) { @@ -5735,8 +5709,8 @@ bool av2_rd_pick_partition( // Pruning: Disable rectangular partitions for inner blocks when the current // block is forced to only use square partitions. if (is_bsize_gt(bsize, cpi->sf.part_sf.use_square_partition_only_threshold)) { - part_search_state.partition_rect_allowed[HORZ] &= !blk_params.has_rows; - part_search_state.partition_rect_allowed[VERT] &= !blk_params.has_cols; + part_search_state.partition_allowed[PARTITION_HORZ] &= !blk_params.has_rows; + part_search_state.partition_allowed[PARTITION_VERT] &= !blk_params.has_cols; } LevelBanksRDO level_banks = { @@ -5753,15 +5727,10 @@ bool av2_rd_pick_partition( // motion search results to prune out unlikely partitions. if (part_search_state.forced_partition == PARTITION_INVALID && is_bsize_gt(bsize, x->sb_enc.min_partition_size)) { - int do_square_split = true; - av2_prune_partitions_before_search( - cpi, x, mi_row, mi_col, bsize, sms_tree, - &part_search_state.partition_none_allowed, - &part_search_state.partition_rect_allowed[HORZ], - &part_search_state.partition_rect_allowed[VERT], - &part_search_state.do_rectangular_split, &do_square_split, - &part_search_state.prune_rect_part[HORZ], - &part_search_state.prune_rect_part[VERT], pc_tree); + bool do_square_split = true; + av2_prune_partitions_before_search(cpi, x, mi_row, mi_col, bsize, sms_tree, + &part_search_state, &do_square_split, + pc_tree); } // Pruning: eliminating partition types leading to coding block sizes @@ -5789,10 +5758,10 @@ bool av2_rd_pick_partition( is_bru_not_active_and_not_on_partial_border(cm, mi_col, mi_row, bsize), partition_allowed); #if CONFIG_ML_PART_SPLIT - part_search_state.prune_rect_part[HORZ] = 0; - part_search_state.prune_rect_part[VERT] = 0; - part_search_state.prune_partition_none = 0; - part_search_state.prune_partition_split = 0; + part_search_state.prune_partition[PARTITION_HORZ] = false; + part_search_state.prune_partition[PARTITION_VERT] = false; + part_search_state.prune_partition[PARTITION_NONE] = false; + part_search_state.prune_partition_split = false; #endif // CONFIG_ML_PART_SPLIT } @@ -5801,7 +5770,7 @@ bool av2_rd_pick_partition( int next_force_prune_flags[NUM_RECT_PARTS][MAX_PRUNE_TYPES] = { { 0 } }; // Don't use ML pruning if this is the second attempt to find a valid // partition. - if (cpi->sf.part_sf.prune_split_with_ml && force_prune_flags && + if (cpi->sf.part_sf.prune_split_with_ml && part_search_state.forced_partition == PARTITION_INVALID && !x->must_find_valid_partition && is_partition_point(bsize)) { prune_partitions_using_ml_results( @@ -5811,9 +5780,10 @@ bool av2_rd_pick_partition( #endif // CONFIG_ML_PART_SPLIT // Search partition none. - int partition_none_allowed = part_search_state.partition_none_allowed; + bool partition_none_allowed = + part_search_state.partition_allowed[PARTITION_NONE]; if (is_intra_child_of_mixed_region(pc_tree) && xd->tree_type != CHROMA_PART) - partition_none_allowed = 0; + partition_none_allowed = false; unsigned int pb_source_variance = UINT_MAX; int64_t part_none_rd = INT64_MAX; if (!search_none_after_rect && !search_none_after_split && @@ -5835,9 +5805,6 @@ bool av2_rd_pick_partition( &part_split_rd, &level_banks, ptree_luma, template_tree, max_recursion_depth - 1); prune_partitions_after_split(cpi, pc_tree, &part_search_state); - // Based on split result, decide if we want to further delay the search to - // after rect - if (!search_none_after_rect && !search_none_after_split && partition_none_allowed) { // Prune partitions based on PARTITION_NONE and PARTITION_SPLIT. @@ -5845,6 +5812,8 @@ bool av2_rd_pick_partition( part_none_rd, part_split_rd); } + // Based on split result, decide if we want to further delay the search to + // after rect if (search_none_after_split && pc_tree->partitioning == PARTITION_SPLIT) { for (int idx = 0; idx < SUB_PARTITIONS_SPLIT; idx++) { const int depth = diff --git a/av2/encoder/partition_search.h b/av2/encoder/partition_search.h index f47eb7fecf..a501ff31c4 100644 --- a/av2/encoder/partition_search.h +++ b/av2/encoder/partition_search.h @@ -32,20 +32,18 @@ void av2_rd_use_partition(AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, int mi_col, BLOCK_SIZE bsize, int *rate, int64_t *dist, int do_recon, PARTITION_TREE *ptree, PC_TREE *pc_tree, PARTITION_TREE *ptree_luma); -bool av2_rd_pick_partition(AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, int mi_row, - int mi_col, BLOCK_SIZE bsize, - PARTITION_TYPE parent_partition, RD_STATS *rd_cost, - RD_STATS best_rdc, PC_TREE *pc_tree, - const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, - int max_recursion_depth, - SIMPLE_MOTION_DATA_TREE *sms_tree, int64_t *none_rd, - SB_MULTI_PASS_MODE multi_pass_mode, - RD_RECT_PART_WIN_INFO *rect_part_win_info +bool av2_rd_pick_partition( + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, + TokenExtra **tp, const int mi_row, const int mi_col, const BLOCK_SIZE bsize, + const PARTITION_TYPE parent_partition, RD_STATS *rd_cost, RD_STATS best_rdc, + PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, + const PARTITION_TREE *template_tree, const int max_recursion_depth, + SIMPLE_MOTION_DATA_TREE *sms_tree, int64_t *none_rd, + const SB_MULTI_PASS_MODE multi_pass_mode, + RD_RECT_PART_WIN_INFO *rect_part_win_info #if CONFIG_ML_PART_SPLIT - , - int prune_rect_flags[3] + , + int prune_rect_flags[3] #endif // CONFIG_ML_PART_SPLIT ); diff --git a/av2/encoder/partition_strategy.c b/av2/encoder/partition_strategy.c index 62b9678f09..f9e7313dd3 100644 --- a/av2/encoder/partition_strategy.c +++ b/av2/encoder/partition_strategy.c @@ -63,11 +63,8 @@ static INLINE int convert_bsize_to_idx(BLOCK_SIZE bsize) { // -- use chroma pixels in addition to luma pixels void av2_intra_mode_cnn_partition(const AV2_COMMON *const cm, MACROBLOCK *x, BLOCK_SIZE bsize, int quad_tree_idx, - int *partition_none_allowed, - int *partition_horz_allowed, - int *partition_vert_allowed, - int *do_rectangular_split, - int *do_square_split) { + PartitionSearchState *partition_search_state, + bool *do_square_split) { assert(cm->sb_size >= BLOCK_64X64 && "Invalid sb_size for intra_cnn!"); const int bsize_idx = convert_bsize_to_idx(bsize); @@ -241,26 +238,22 @@ void av2_intra_mode_cnn_partition(const AV2_COMMON *const cm, MACROBLOCK *x, } if (logits[0] > split_only_thresh) { - *partition_none_allowed = 0; - *partition_horz_allowed = 0; - *partition_vert_allowed = 0; - *do_rectangular_split = 0; + partition_search_state->partition_allowed[PARTITION_NONE] = false; + partition_search_state->partition_allowed[PARTITION_HORZ] = false; + partition_search_state->partition_allowed[PARTITION_VERT] = false; + partition_search_state->do_rectangular_split = false; } if (logits[0] < no_split_thresh) { - *do_square_split = 0; + *do_square_split = false; } } void av2_simple_motion_search_based_split( AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, - int mi_row, int mi_col, BLOCK_SIZE bsize, int *partition_none_allowed, - int *partition_horz_allowed, int *partition_vert_allowed, - int *do_rectangular_split, int *do_square_split) { + int mi_row, int mi_col, BLOCK_SIZE bsize, + PartitionSearchState *partition_search_state, bool *do_square_split) { avm_clear_system_state(); - (void)partition_horz_allowed; - (void)partition_vert_allowed; - (void)do_rectangular_split; const AV2_COMMON *const cm = &cpi->common; const int bsize_idx = convert_bsize_to_idx(bsize); @@ -297,15 +290,12 @@ void av2_simple_motion_search_based_split( avm_clear_system_state(); if (score > split_only_thresh) { - *partition_none_allowed = 0; - (void)partition_horz_allowed; - (void)partition_vert_allowed; - (void)do_rectangular_split; + partition_search_state->partition_allowed[PARTITION_NONE] = false; } if (cpi->sf.part_sf.simple_motion_search_split >= 2 && score < no_split_thresh) { - *do_square_split = 0; + *do_square_split = false; } } @@ -512,8 +502,8 @@ static AVM_INLINE void simple_motion_search_prune_part_features( void av2_simple_motion_search_prune_rect( AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, - int mi_row, int mi_col, BLOCK_SIZE bsize, int partition_horz_allowed, - int partition_vert_allowed, bool *prune_horz, bool *prune_vert) { + int mi_row, int mi_col, BLOCK_SIZE bsize, + PartitionSearchState *partition_search_state) { // TODO(urvang): Need to change for uneven 4-way partition support. assert(0 && "Not implemented"); avm_clear_system_state(); @@ -563,10 +553,13 @@ void av2_simple_motion_search_prune_rect( // Determine if we should prune rectangular partitions. if (cpi->sf.part_sf.simple_motion_search_prune_rect && !frame_is_intra_only(cm) && - (partition_horz_allowed || partition_vert_allowed) && + (partition_search_state->partition_allowed[PARTITION_HORZ] || + partition_search_state->partition_allowed[PARTITION_VERT]) && bsize >= BLOCK_8X8) { - *prune_horz = probs[PARTITION_HORZ] <= prune_thresh; - *prune_vert = probs[PARTITION_VERT] <= prune_thresh; + partition_search_state->prune_partition[PARTITION_HORZ] = + probs[PARTITION_HORZ] <= prune_thresh; + partition_search_state->prune_partition[PARTITION_VERT] = + probs[PARTITION_VERT] <= prune_thresh; } } @@ -579,7 +572,7 @@ void av2_simple_motion_search_prune_rect( void av2_simple_motion_search_early_term_none( AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, int mi_row, int mi_col, BLOCK_SIZE bsize, const RD_STATS *none_rdc, - int *early_terminate) { + bool *early_terminate) { // TODO(chiyotsai@google.com): There are other features we can extract from // PARTITION_NONE. Play with this later. float features[FEATURE_SIZE_SMS_TERM_NONE] = { 0.0f }; @@ -629,7 +622,7 @@ void av2_simple_motion_search_early_term_none( score += ml_model[FEATURE_SIZE_SMS_TERM_NONE]; if (score >= 0.0f) { - *early_terminate = 1; + *early_terminate = true; } } } @@ -858,9 +851,7 @@ int av2_ml_predict_breakout(const AV2_COMP *const cpi, BLOCK_SIZE bsize, void av2_prune_partitions_before_search( AV2_COMP *const cpi, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, SIMPLE_MOTION_DATA_TREE *const sms_tree, - int *partition_none_allowed, int *partition_horz_allowed, - int *partition_vert_allowed, int *do_rectangular_split, - int *do_square_split, bool *prune_horz, bool *prune_vert, + PartitionSearchState *partition_search_state, bool *do_square_split, const PC_TREE *pc_tree) { const AV2_COMMON *const cm = &cpi->common; const CommonModeInfoParams *const mi_params = &cm->mi_params; @@ -878,10 +869,9 @@ void av2_prune_partitions_before_search( mi_col + mi_size_wide[bsize] <= mi_params->mi_cols; if (try_intra_cnn_split) { - av2_intra_mode_cnn_partition( - &cpi->common, x, bsize, x->part_search_info.quad_tree_idx, - partition_none_allowed, partition_horz_allowed, partition_vert_allowed, - do_rectangular_split, do_square_split); + av2_intra_mode_cnn_partition(&cpi->common, x, bsize, + x->part_search_info.quad_tree_idx, + partition_search_state, do_square_split); } // Use simple motion search to prune out split or non-split partitions. This @@ -897,14 +887,13 @@ void av2_prune_partitions_before_search( bsize < BLOCK_256X256 && mi_col + mi_size_wide[bsize] <= mi_params->mi_cols && !frame_is_intra_only(cm) && is_square_block(bsize) && sms_tree && - *partition_none_allowed; + partition_search_state->partition_allowed[PARTITION_NONE]; if (try_split_only) { - av2_simple_motion_search_based_split( - cpi, x, sms_tree, mi_row, mi_col, bsize, partition_none_allowed, - partition_horz_allowed, partition_vert_allowed, do_rectangular_split, - do_square_split); - if (!*partition_none_allowed) { + av2_simple_motion_search_based_split(cpi, x, sms_tree, mi_row, mi_col, + bsize, partition_search_state, + do_square_split); + if (!partition_search_state->partition_allowed[PARTITION_NONE]) { av2_cache_best_partition(x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, PARTITION_HORZ, (int8_t)pc_tree->region_type); const int mi_step = block_size_high[bsize] / 2; @@ -925,22 +914,25 @@ void av2_prune_partitions_before_search( const int try_prune_rect = !cpi->is_screen_content_type && cpi->sf.part_sf.simple_motion_search_prune_rect && - !frame_is_intra_only(cm) && *do_rectangular_split && - (*do_square_split || *partition_none_allowed || - (*prune_horz && *prune_vert)) && - (*partition_horz_allowed || *partition_vert_allowed) && + !frame_is_intra_only(cm) && + partition_search_state->do_rectangular_split && + (*do_square_split || + partition_search_state->partition_allowed[PARTITION_NONE] || + (partition_search_state->prune_partition[PARTITION_HORZ] && + partition_search_state->prune_partition[PARTITION_VERT])) && + (partition_search_state->partition_allowed[PARTITION_HORZ] || + partition_search_state->partition_allowed[PARTITION_VERT]) && bsize >= BLOCK_8X8; if (try_prune_rect) { - av2_simple_motion_search_prune_rect( - cpi, x, sms_tree, mi_row, mi_col, bsize, *partition_horz_allowed, - *partition_vert_allowed, prune_horz, prune_vert); + av2_simple_motion_search_prune_rect(cpi, x, sms_tree, mi_row, mi_col, bsize, + partition_search_state); } } void av2_prune_partitions_by_max_min_bsize( SuperBlockEnc *sb_enc, BLOCK_SIZE bsize, int is_not_edge_block, - PartitionSearchState *partition_search_state, int *do_square_split) { + PartitionSearchState *partition_search_state, bool *do_square_split) { if (!is_partition_point(bsize) || partition_search_state->forced_partition != PARTITION_INVALID) { // Special case. We can't enforce min/max constraints here. @@ -963,51 +955,52 @@ void av2_prune_partitions_by_max_min_bsize( if (is_gt_max_sq_part) { // current block size is larger than max size. // Disable some partition types to partition down to max allowed size. - partition_search_state->prune_partition_none = true; - partition_search_state->prune_partition_3[HORZ] = true; - partition_search_state->prune_partition_3[VERT] = true; - partition_search_state->prune_partition_4a[HORZ] = true; - partition_search_state->prune_partition_4a[VERT] = true; - partition_search_state->prune_partition_4b[HORZ] = true; - partition_search_state->prune_partition_4b[VERT] = true; - if (partition_search_state->partition_split_allowed) { // only allow split - partition_search_state->prune_rect_part[HORZ] = true; - partition_search_state->prune_rect_part[VERT] = true; + partition_search_state->prune_partition[PARTITION_NONE] = true; + partition_search_state->prune_partition[PARTITION_HORZ_3] = true; + partition_search_state->prune_partition[PARTITION_VERT_3] = true; + partition_search_state->prune_partition[PARTITION_HORZ_4A] = true; + partition_search_state->prune_partition[PARTITION_VERT_4A] = true; + partition_search_state->prune_partition[PARTITION_HORZ_4B] = true; + partition_search_state->prune_partition[PARTITION_VERT_4B] = true; + if (partition_search_state->partition_allowed[PARTITION_SPLIT]) { + // only allow split + partition_search_state->prune_partition[PARTITION_HORZ] = true; + partition_search_state->prune_partition[PARTITION_VERT] = true; } else { // only allow one of horz or vert - assert(partition_search_state->partition_rect_allowed[HORZ] || - partition_search_state->partition_rect_allowed[VERT]); - if (partition_search_state->prune_rect_part[HORZ] && - partition_search_state->prune_rect_part[VERT]) { - if (partition_search_state->partition_rect_allowed[HORZ]) { - partition_search_state->prune_rect_part[HORZ] = false; + assert(partition_search_state->partition_allowed[PARTITION_HORZ] || + partition_search_state->partition_allowed[PARTITION_VERT]); + if (partition_search_state->prune_partition[PARTITION_HORZ] && + partition_search_state->prune_partition[PARTITION_VERT]) { + if (partition_search_state->partition_allowed[PARTITION_HORZ]) { + partition_search_state->prune_partition[PARTITION_HORZ] = false; } - if (partition_search_state->partition_rect_allowed[VERT]) { - partition_search_state->prune_rect_part[VERT] = false; + if (partition_search_state->partition_allowed[PARTITION_VERT]) { + partition_search_state->prune_partition[PARTITION_VERT] = false; } } - if (partition_search_state->partition_rect_allowed[HORZ] && - partition_search_state->partition_rect_allowed[VERT] && - !partition_search_state->prune_rect_part[HORZ] && - !partition_search_state->prune_rect_part[VERT]) { + if (partition_search_state->partition_allowed[PARTITION_HORZ] && + partition_search_state->partition_allowed[PARTITION_VERT] && + !partition_search_state->prune_partition[PARTITION_HORZ] && + !partition_search_state->prune_partition[PARTITION_VERT]) { if (is_wide_block(bsize)) { // Allow VERT partition only. - partition_search_state->prune_rect_part[HORZ] = true; + partition_search_state->prune_partition[PARTITION_HORZ] = true; } else { // Allow HORZ partition only. assert(is_square_block(bsize) || is_tall_block(bsize)); - partition_search_state->prune_rect_part[VERT] = true; + partition_search_state->prune_partition[PARTITION_VERT] = true; } } } } else if (is_le_min_sq_part) { // current block size is less or equal to min // Disallow all 2-way partitions. - partition_search_state->prune_rect_part[HORZ] = true; - partition_search_state->prune_rect_part[VERT] = true; + partition_search_state->prune_partition[PARTITION_HORZ] = true; + partition_search_state->prune_partition[PARTITION_VERT] = true; // Disallow all H and uneven-4way partitions. - partition_search_state->prune_partition_3[HORZ] = true; - partition_search_state->prune_partition_3[VERT] = true; - partition_search_state->prune_partition_4a[HORZ] = true; - partition_search_state->prune_partition_4a[VERT] = true; - partition_search_state->prune_partition_4b[HORZ] = true; - partition_search_state->prune_partition_4b[VERT] = true; + partition_search_state->prune_partition[PARTITION_HORZ_3] = true; + partition_search_state->prune_partition[PARTITION_VERT_3] = true; + partition_search_state->prune_partition[PARTITION_HORZ_4A] = true; + partition_search_state->prune_partition[PARTITION_VERT_4A] = true; + partition_search_state->prune_partition[PARTITION_HORZ_4B] = true; + partition_search_state->prune_partition[PARTITION_VERT_4B] = true; } } diff --git a/av2/encoder/partition_strategy.h b/av2/encoder/partition_strategy.h index 71924ad46d..4d7ac27a04 100644 --- a/av2/encoder/partition_strategy.h +++ b/av2/encoder/partition_strategy.h @@ -46,30 +46,27 @@ typedef struct { int rect_part_win[NUM_RECT_PARTS]; } RD_RECT_PART_WIN_INFO; -void av2_intra_mode_cnn_partition(const AV2_COMMON *const cm, MACROBLOCK *x, - BLOCK_SIZE bsize, int label_idx, - int *partition_none_allowed, - int *partition_horz_allowed, - int *partition_vert_allowed, - int *do_rectangular_split, - int *do_square_split); +struct PartitionSearchState; + +void av2_intra_mode_cnn_partition( + const AV2_COMMON *const cm, MACROBLOCK *x, BLOCK_SIZE bsize, int label_idx, + struct PartitionSearchState *partition_search_state, bool *do_square_split); // Performs a simple_motion_search with a single reference frame and extract // the variance of residues. Then use the features to determine whether we want // to go straight to splitting without trying PARTITION_NONE void av2_simple_motion_search_based_split( AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, - int mi_row, int mi_col, BLOCK_SIZE bsize, int *partition_none_allowed, - int *partition_horz_allowed, int *partition_vert_allowed, - int *do_rectangular_split, int *do_square_split); + int mi_row, int mi_col, BLOCK_SIZE bsize, + struct PartitionSearchState *partition_search_state, bool *do_square_split); // Performs a simple_motion_search with two reference frames and extract // the variance of residues. Then use the features to determine whether we want // to prune some partitions. void av2_simple_motion_search_prune_rect( AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, - int mi_row, int mi_col, BLOCK_SIZE bsize, int partition_horz_allowed, - int partition_vert_allowed, bool *prune_horz, bool *prune_vert); + int mi_row, int mi_col, BLOCK_SIZE bsize, + struct PartitionSearchState *partition_search_state); // Early terminates PARTITION_NONE using simple_motion_search features and the // rate, distortion, and rdcost of PARTITION_NONE. This is only called when: @@ -80,7 +77,7 @@ void av2_simple_motion_search_prune_rect( void av2_simple_motion_search_early_term_none( AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, int mi_row, int mi_col, BLOCK_SIZE bsize, const RD_STATS *none_rdc, - int *early_terminate); + bool *early_terminate); // Get the features for selecting the max and min partition size. Currently this // performs simple_motion_search on 16X16 subblocks of the current superblock, @@ -106,20 +103,16 @@ int av2_ml_predict_breakout(const AV2_COMP *const cpi, BLOCK_SIZE bsize, void av2_prune_partitions_before_search( AV2_COMP *const cpi, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, SIMPLE_MOTION_DATA_TREE *const sms_tree, - int *partition_none_allowed, int *partition_horz_allowed, - int *partition_vert_allowed, int *do_rectangular_split, - int *do_square_split, bool *prune_horz, bool *prune_vert, + struct PartitionSearchState *partition_search_state, bool *do_square_split, const PC_TREE *pc_tree); // Prune out partitions that lead to coding block sizes outside the min and max // bsizes set by the encoder. Max and min square partition levels are defined as // the partition nodes that the recursive function rd_pick_partition() can // reach. -struct PartitionSearchState; - void av2_prune_partitions_by_max_min_bsize( SuperBlockEnc *sb_enc, BLOCK_SIZE bsize, int is_not_edge_block, - struct PartitionSearchState *partition_search_state, int *do_square_split); + struct PartitionSearchState *partition_search_state, bool *do_square_split); SimpleMotionData *av2_get_sms_data_entry(SimpleMotionDataBufs *sms_bufs, int mi_row, int mi_col, From a076a37c6d91ccab5567c9024285291db8bf4bac Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Mon, 27 Jul 2026 12:38:30 +0530 Subject: [PATCH 092/205] Use MFMV_STACK_SIZE as `process_ref` array size This patch avoids extra stack buffer size for `process_ref` structure and uses the correct size `MFMV_STACK_SIZE` in `av2_setup_motion_field()`. This aligns with the maximum allowed size check in `check_and_add_process_ref()`. --- av2/common/mvref_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 204816ce8b..2a3056195a 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -4093,7 +4093,7 @@ void av2_setup_motion_field(AV2_COMMON *cm) { } } - struct ProcessRefTMVP process_ref[20]; + struct ProcessRefTMVP process_ref[MFMV_STACK_SIZE]; int process_count = 0; int checked_ref[INTER_REFS_PER_FRAME][2] = { 0 }; int checked_count = 0; From 788833cec9ba2c3548445e6759fd4ce23eb67401 Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Mon, 27 Jul 2026 12:40:11 +0530 Subject: [PATCH 093/205] Refactor check_and_add_process_ref() This patch refactors `check_and_add_process_ref()` by removing `checked_count` and its associated code as `process_count` serves the same purpose. --- av2/common/mvref_common.c | 70 +++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 2a3056195a..3451363eda 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3077,7 +3077,6 @@ static void check_and_add_process_ref(const AV2_COMMON *cm, int max_check, int type, int start_frame, int target_frame, int side, int checked_ref[INTER_REFS_PER_FRAME][2], - int *checked_count, struct ProcessRefTMVP *process_ref, int *process_count) { const RefCntBuffer *const start_frame_buf = @@ -3090,27 +3089,21 @@ static void check_and_add_process_ref(const AV2_COMMON *cm, int max_check, &cm->seq_params.order_hint_info, start_frame_order_hint, cur_order_hint); if (abs(start_to_current_frame_offset) > MAX_FRAME_DISTANCE) return; - if (cm->bru.enabled && cm->bru.update_ref_idx != -1) { - if (start_frame == cm->bru.update_ref_idx) return; - if (target_frame == cm->bru.update_ref_idx) return; + const int update_ref_idx = cm->bru.update_ref_idx; + if (cm->bru.enabled && update_ref_idx != -1) { + if (start_frame == update_ref_idx || target_frame == update_ref_idx) return; } if (type == 1 && start_frame == target_frame) return; - if (*process_count >= MFMV_STACK_SIZE) return; - if (checked_ref[start_frame][side]) return; + if (*process_count >= max_check || checked_ref[start_frame][side]) return; - if (!checked_ref[start_frame][side] && *checked_count < max_check) { - checked_ref[start_frame][side] = 1; - (*checked_count)++; - } - if (checked_ref[start_frame][side]) { - process_ref[*process_count].type = type; - process_ref[*process_count].start_frame = start_frame; - process_ref[*process_count].side = side; - process_ref[*process_count].target_frame = target_frame; - (*process_count)++; - } + checked_ref[start_frame][side] = 1; + process_ref[*process_count].type = type; + process_ref[*process_count].start_frame = start_frame; + process_ref[*process_count].side = side; + process_ref[*process_count].target_frame = target_frame; + (*process_count)++; } static INLINE int get_blk_id_k(int this_col, int tmvp_proc_sizel2) { @@ -4096,7 +4089,6 @@ void av2_setup_motion_field(AV2_COMMON *cm) { struct ProcessRefTMVP process_ref[MFMV_STACK_SIZE]; int process_count = 0; int checked_ref[INTER_REFS_PER_FRAME][2] = { 0 }; - int checked_count = 0; if (cm->seq_params.enable_tip && cur_frame_sort_idx != -1) { if (cm->has_both_sides_refs || cm->ref_frames_info.num_past_refs >= 2) { @@ -4127,8 +4119,8 @@ void av2_setup_motion_field(AV2_COMMON *cm) { side = dist_diff < 0 ? 1 : 0; check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, start_frame, - target_frame, side, checked_ref, &checked_count, - process_ref, &process_count); + target_frame, side, checked_ref, process_ref, + &process_count); } else { cm->tip_ref.ref_frame[0] = NONE_FRAME; cm->tip_ref.ref_frame[1] = NONE_FRAME; @@ -4164,25 +4156,25 @@ void av2_setup_motion_field(AV2_COMMON *cm) { if (future_ref_to_its_ref_dist < past_ref_to_its_ref_dist) { if (future_ref_sort_idx != -1) { - check_and_add_process_ref( - cm, TIP_MFMV_STACK_SIZE, 0, sort_ref[future_ref_sort_idx], -1, 0, - checked_ref, &checked_count, process_ref, &process_count); + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + sort_ref[future_ref_sort_idx], -1, 0, + checked_ref, process_ref, &process_count); } if (past_ref_sort_idx != -1) { - check_and_add_process_ref( - cm, TIP_MFMV_STACK_SIZE, 0, sort_ref[past_ref_sort_idx], -1, 1, - checked_ref, &checked_count, process_ref, &process_count); + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + sort_ref[past_ref_sort_idx], -1, 1, + checked_ref, process_ref, &process_count); } } else { if (past_ref_sort_idx != -1) { - check_and_add_process_ref( - cm, TIP_MFMV_STACK_SIZE, 0, sort_ref[past_ref_sort_idx], -1, 1, - checked_ref, &checked_count, process_ref, &process_count); + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + sort_ref[past_ref_sort_idx], -1, 1, + checked_ref, process_ref, &process_count); } if (future_ref_sort_idx != -1) { - check_and_add_process_ref( - cm, TIP_MFMV_STACK_SIZE, 0, sort_ref[future_ref_sort_idx], -1, 0, - checked_ref, &checked_count, process_ref, &process_count); + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + sort_ref[future_ref_sort_idx], -1, 0, + checked_ref, process_ref, &process_count); } } } @@ -4190,12 +4182,12 @@ void av2_setup_motion_field(AV2_COMMON *cm) { if (cur_frame_sort_idx >= 0) { check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, sort_ref[cur_frame_sort_idx], -1, 0, checked_ref, - &checked_count, process_ref, &process_count); + process_ref, &process_count); } if (cur_frame_sort_idx >= 1) { - check_and_add_process_ref( - cm, TIP_MFMV_STACK_SIZE, 0, sort_ref[cur_frame_sort_idx - 1], -1, 0, - checked_ref, &checked_count, process_ref, &process_count); + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + sort_ref[cur_frame_sort_idx - 1], -1, 0, + checked_ref, process_ref, &process_count); } for (int ri = stack_count - 1; ri > 0; ri--) { @@ -4210,15 +4202,13 @@ void av2_setup_motion_field(AV2_COMMON *cm) { if (!checked_ref[rf_stack[ri]][side]) { check_and_add_process_ref(cm, MFMV_STACK_SIZE, 0, rf_stack[ri], -1, side, - checked_ref, &checked_count, process_ref, - &process_count); + checked_ref, process_ref, &process_count); } side = !side; if (!checked_ref[rf_stack[ri]][side]) { check_and_add_process_ref(cm, MFMV_STACK_SIZE, 0, rf_stack[ri], -1, side, - checked_ref, &checked_count, process_ref, - &process_count); + checked_ref, process_ref, &process_count); } } From a01d4c71500d770d0be5636fe2afd1b6c812117e Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Mon, 27 Jul 2026 12:40:40 +0530 Subject: [PATCH 094/205] Remove unused `ProcessRefTMVP->type` and associated code Initially, `ProcessRefTMVP->type` was introduced to indicate whether to use side projection (type 0) or target frame projection (type 1). Later, the logic was simplified and type 0 is only used for every case. As a result, `motion_field_projection_start_target()` is entirely unused. This patch cleans up these unused code. --- av2/common/mvref_common.c | 205 +++----------------------------------- 1 file changed, 14 insertions(+), 191 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 3451363eda..661ea4a9ff 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3065,7 +3065,6 @@ static int has_past_ref(const AV2_COMMON *cm, int rf) { // Struct to store the reference frame motion field candidates. struct ProcessRefTMVP { - int type; // 0 means with side, 1 means with target frame. int side; // 0 means right to left, 1 means left to right. int start_frame; int target_frame; @@ -3074,8 +3073,8 @@ struct ProcessRefTMVP { // Add a reference frame motion field candidate, if we have not reached the // maximum allowed. static void check_and_add_process_ref(const AV2_COMMON *cm, int max_check, - int type, int start_frame, - int target_frame, int side, + int start_frame, int target_frame, + int side, int checked_ref[INTER_REFS_PER_FRAME][2], struct ProcessRefTMVP *process_ref, int *process_count) { @@ -3094,12 +3093,9 @@ static void check_and_add_process_ref(const AV2_COMMON *cm, int max_check, if (start_frame == update_ref_idx || target_frame == update_ref_idx) return; } - if (type == 1 && start_frame == target_frame) return; - if (*process_count >= max_check || checked_ref[start_frame][side]) return; checked_ref[start_frame][side] = 1; - process_ref[*process_count].type = type; process_ref[*process_count].start_frame = start_frame; process_ref[*process_count].side = side; process_ref[*process_count].target_frame = target_frame; @@ -3250,174 +3246,6 @@ static INLINE void check_traj_intersect(AV2_COMMON *cm, } } -// Calculate the projected motion field from the TMVP mvs that points from -// start_frame to target_frame. -static int motion_field_projection_start_target( - AV2_COMMON *cm, MV_REFERENCE_FRAME start_frame, - MV_REFERENCE_FRAME target_frame) { - const int cur_order_hint = cm->cur_frame->display_order_hint; - - if (get_ref_frame_buf(cm, start_frame)->is_restricted) return 0; - - int start_order_hint = get_ref_frame_buf(cm, start_frame)->display_order_hint; - int target_order_hint = - get_ref_frame_buf(cm, target_frame)->display_order_hint; - - OrderHintInfo *order_hint_info = &cm->seq_params.order_hint_info; - - int ref_frame_offset = - get_relative_dist(order_hint_info, start_order_hint, target_order_hint); - - if (abs(ref_frame_offset) > MAX_FRAME_DISTANCE) { - return 0; - } - - const RefCntBuffer *const start_frame_buf = - get_ref_frame_buf(cm, start_frame); - if (!is_ref_motion_field_eligible(cm, start_frame_buf)) return 0; - - assert(start_frame_buf->width == cm->width && - start_frame_buf->height == cm->height); - - const int *const ref_order_hints = start_frame_buf->ref_display_order_hint; - - int start_to_current_frame_offset = - get_relative_dist(order_hint_info, start_order_hint, cur_order_hint); - - if (abs(start_to_current_frame_offset) > MAX_FRAME_DISTANCE) { - return 0; - } - - const int is_backward = ref_frame_offset < 0; - int mv_idx = is_backward ? 1 : 0; - if (is_backward) { - ref_frame_offset = -ref_frame_offset; - start_to_current_frame_offset = -start_to_current_frame_offset; - } - - const int temporal_scale_factor = - tip_derive_scale_factor(start_to_current_frame_offset, ref_frame_offset); - const int ref_temporal_scale_factor = tip_derive_scale_factor( - -ref_frame_offset + start_to_current_frame_offset, -ref_frame_offset); - - const MV_REF *mv_ref_base = start_frame_buf->mvs; - const int mvs_rows = - ROUND_POWER_OF_TWO(cm->mi_params.mi_rows, TMVP_SHIFT_BITS); - const int mvs_cols = - ROUND_POWER_OF_TWO(cm->mi_params.mi_cols, TMVP_SHIFT_BITS); - const int start_mvs_rows = - ROUND_POWER_OF_TWO(start_frame_buf->mi_rows, TMVP_SHIFT_BITS); - const int start_mvs_cols = - ROUND_POWER_OF_TWO(start_frame_buf->mi_cols, TMVP_SHIFT_BITS); - (void)mvs_rows; - - assert(cm->tmvp_sample_step > 0); - for (int blk_row = 0; blk_row < start_mvs_rows; - blk_row += cm->tmvp_sample_step) { - for (int blk_col = 0; blk_col < start_mvs_cols; - blk_col += cm->tmvp_sample_step) { - const MV_REF *mv_ref = &mv_ref_base[blk_row * start_mvs_cols + blk_col]; - if (is_inter_ref_frame(mv_ref->ref_frame[mv_idx])) { - const int ref_frame_order_hint = - ref_order_hints[mv_ref->ref_frame[mv_idx]]; - if (get_relative_dist(order_hint_info, ref_frame_order_hint, - target_order_hint) == 0) { - MV ref_mv = mv_ref->mv[mv_idx].as_mv; - fetch_mv_from_tmvp(&ref_mv); - int scaled_blk_col = blk_col; - int scaled_blk_row = blk_row; - - if (cm->seq_params.enable_mv_traj) { - check_traj_intersect(cm, start_frame, target_frame, &ref_mv, - scaled_blk_row, scaled_blk_col, mvs_cols); - } - - int_mv this_mv; - int mi_r = 0; - int mi_c = 0; - tip_get_mv_projection(&this_mv.as_mv, ref_mv, temporal_scale_factor); - int pos_valid; - if (this_mv.as_int == 0) { - pos_valid = 1; - mi_r = scaled_blk_row; - mi_c = scaled_blk_col; - } else { - pos_valid = get_block_position_no_constraint( - cm, &mi_r, &mi_c, scaled_blk_row, scaled_blk_col, this_mv.as_mv, - 0); - } - mi_r = (mi_r >> cm->tmvp_sample_stepl2) << cm->tmvp_sample_stepl2; - mi_c = (mi_c >> cm->tmvp_sample_stepl2) << cm->tmvp_sample_stepl2; - - if (pos_valid) - pos_valid = check_block_position(cm, scaled_blk_row, scaled_blk_col, - mi_r, mi_c); - - if (pos_valid) { - if (cm->tpl_mvs_rows[mi_r][mi_c].mfmv0.as_int == INVALID_MV) { - if (cm->seq_params.enable_mv_traj) { - int blk_id_k = get_blk_id_k(mi_c, cm->tmvp_proc_sizel2); - int_mv ***blk_id_map_rows = cm->blk_id_map_rows[blk_id_k]; - cm->id_offset_map_rows[start_frame][mi_r][mi_c].as_mv.row = - clamp(-this_mv.as_mv.row, -REFMVS_LIMIT, REFMVS_LIMIT); - cm->id_offset_map_rows[start_frame][mi_r][mi_c].as_mv.col = - clamp(-this_mv.as_mv.col, -REFMVS_LIMIT, REFMVS_LIMIT); - blk_id_map_rows[start_frame][scaled_blk_row][scaled_blk_col] - .as_mv.row = mi_r; - blk_id_map_rows[start_frame][scaled_blk_row][scaled_blk_col] - .as_mv.col = mi_c; - - MV target_frame_mv; - tip_get_mv_projection(&target_frame_mv, ref_mv, - ref_temporal_scale_factor); - cm->id_offset_map_rows[target_frame][mi_r][mi_c].as_mv.row = - clamp(target_frame_mv.row, -REFMVS_LIMIT, REFMVS_LIMIT); - cm->id_offset_map_rows[target_frame][mi_r][mi_c].as_mv.col = - clamp(target_frame_mv.col, -REFMVS_LIMIT, REFMVS_LIMIT); - int target_row = 0, target_col = 0; - int target_pos_valid; - if (ref_mv.row == 0 && ref_mv.col == 0) { - target_pos_valid = 1; - target_row = scaled_blk_row; - target_col = scaled_blk_col; - } else { - target_pos_valid = get_block_position_no_constraint( - cm, &target_row, &target_col, scaled_blk_row, - scaled_blk_col, ref_mv, 0); - } - target_row = (target_row >> cm->tmvp_sample_stepl2) - << cm->tmvp_sample_stepl2; - target_col = (target_col >> cm->tmvp_sample_stepl2) - << cm->tmvp_sample_stepl2; - - if (target_pos_valid) - target_pos_valid = check_block_position( - cm, target_row, target_col, mi_r, mi_c); - - if (target_pos_valid) { - blk_id_map_rows[target_frame][target_row][target_col] - .as_mv.row = mi_r; - blk_id_map_rows[target_frame][target_row][target_col] - .as_mv.col = mi_c; - } - } - - if (is_backward) { - ref_mv.row = -ref_mv.row; - ref_mv.col = -ref_mv.col; - } - cm->tpl_mvs_rows[mi_r][mi_c].mfmv0.as_mv.row = ref_mv.row; - cm->tpl_mvs_rows[mi_r][mi_c].mfmv0.as_mv.col = ref_mv.col; - cm->tpl_mvs_rows[mi_r][mi_c].ref_frame_offset = ref_frame_offset; - } - } - } - } - } - } - return 1; -} - // Calculate the projected motion field from the TMVP mvs that points from // start_frame to one side. static int motion_field_projection_side(AV2_COMMON *cm, @@ -4118,7 +3946,7 @@ void av2_setup_motion_field(AV2_COMMON *cm) { get_ref_frame_buf(cm, target_frame)->display_order_hint); side = dist_diff < 0 ? 1 : 0; - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, start_frame, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, start_frame, target_frame, side, checked_ref, process_ref, &process_count); } else { @@ -4156,23 +3984,23 @@ void av2_setup_motion_field(AV2_COMMON *cm) { if (future_ref_to_its_ref_dist < past_ref_to_its_ref_dist) { if (future_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[future_ref_sort_idx], -1, 0, checked_ref, process_ref, &process_count); } if (past_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[past_ref_sort_idx], -1, 1, checked_ref, process_ref, &process_count); } } else { if (past_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[past_ref_sort_idx], -1, 1, checked_ref, process_ref, &process_count); } if (future_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[future_ref_sort_idx], -1, 0, checked_ref, process_ref, &process_count); } @@ -4180,12 +4008,12 @@ void av2_setup_motion_field(AV2_COMMON *cm) { } if (cur_frame_sort_idx >= 0) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[cur_frame_sort_idx], -1, 0, checked_ref, process_ref, &process_count); } if (cur_frame_sort_idx >= 1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, 0, + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[cur_frame_sort_idx - 1], -1, 0, checked_ref, process_ref, &process_count); } @@ -4201,13 +4029,13 @@ void av2_setup_motion_field(AV2_COMMON *cm) { } if (!checked_ref[rf_stack[ri]][side]) { - check_and_add_process_ref(cm, MFMV_STACK_SIZE, 0, rf_stack[ri], -1, side, + check_and_add_process_ref(cm, MFMV_STACK_SIZE, rf_stack[ri], -1, side, checked_ref, process_ref, &process_count); } side = !side; if (!checked_ref[rf_stack[ri]][side]) { - check_and_add_process_ref(cm, MFMV_STACK_SIZE, 0, rf_stack[ri], -1, side, + check_and_add_process_ref(cm, MFMV_STACK_SIZE, rf_stack[ri], -1, side, checked_ref, process_ref, &process_count); } } @@ -4227,14 +4055,9 @@ void av2_setup_motion_field(AV2_COMMON *cm) { process_count = AVMMIN(1, process_count); } for (int pi = 0; pi < process_count; pi++) { - if (process_ref[pi].type == 0) { - motion_field_projection_side(cm, process_ref[pi].start_frame, - process_ref[pi].target_frame, - process_ref[pi].side); - } else { - motion_field_projection_start_target(cm, process_ref[pi].start_frame, - process_ref[pi].target_frame); - } + motion_field_projection_side(cm, process_ref[pi].start_frame, + process_ref[pi].target_frame, + process_ref[pi].side); } if (cm->seq_params.enable_mv_traj) { From 409e1757d07cdce089d5d197a9c82f482bdb6899 Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Mon, 27 Jul 2026 18:54:50 +0530 Subject: [PATCH 095/205] Prevent auto inlining of motion_field_projection_side() The recent removal of `motion_field_projection_start_target()` causes GCC compiler to inline `motion_field_projection_side()` into `av2_setup_motion_field()`, increasing the decoder instruction count by ~0.5%. Marking the function noinline prevents this issue. Clang compiler shows neutral impact for this change. --- av2/common/mvref_common.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 661ea4a9ff..cda7a577c3 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3248,10 +3248,14 @@ static INLINE void check_traj_intersect(AV2_COMMON *cm, // Calculate the projected motion field from the TMVP mvs that points from // start_frame to one side. -static int motion_field_projection_side(AV2_COMMON *cm, - MV_REFERENCE_FRAME start_frame, - MV_REFERENCE_FRAME target_frame, - int side_idx) { +#ifdef __GNUC__ +// This prevents inlining this function into av2_setup_motion_field(), which +// avoids an instruction count increase on GCC. Impact on Clang is neutral. +__attribute__((noinline)) +#endif +static int +motion_field_projection_side(AV2_COMMON *cm, MV_REFERENCE_FRAME start_frame, + MV_REFERENCE_FRAME target_frame, int side_idx) { int ref_offset[INTER_REFS_PER_FRAME] = { 0 }; const RefCntBuffer *const start_frame_buf = From de5f8446378f211c0c858b177ca6858b915974ab Mon Sep 17 00:00:00 2001 From: motongxu Date: Tue, 28 Jul 2026 18:28:42 -0700 Subject: [PATCH 096/205] Adaptive tx search level (#5170) Introduce 3 EOB levels adaptive tx search pruning. eob_level = 0: eob >= max_eob / 4 eob_level = 1: max_eob / 12 <= eob < max_eob / 4 eob_level = 2: eob < max_eob / 12 Anchor: https://github.com/AOMediaCodec/avm/commit/0d25d5803a23907057f2ef018462425bc823a9c2 Tests: cpu-used =1, RA A1 - 17 frames A2 - 33 frames ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | 0.09% | -0.06% | -0.99% | 0.03% | 96.4% | 99.5% | | A2 | 0.09% | -0.35% | -0.20% | 0.06% | 97.7% | 99.6% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/encoder/speed_features.c | 3 +++ av2/encoder/speed_features.h | 3 ++- av2/encoder/tx_search.c | 28 ++++++++++++++++++++++------ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 3ddab1f7c7..3e48360c35 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -356,6 +356,8 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.adaptive_tx_type_search_idx = 4; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; + sf->tx_sf.enable_adaptive_tx_search_level = true; + sf->tx_sf.prune_intra_ist_stx_by_zero_eob = true; sf->inter_sf.prune_comp_search_by_single_result = boosted ? 2 : 1; @@ -852,6 +854,7 @@ static AVM_INLINE void init_tx_sf(TX_SPEED_FEATURES *tx_sf) { tx_sf->restrict_tx_partition_type_search = 0; tx_sf->prune_inter_tx_part_rd_eval = false; tx_sf->enable_tx_partition = true; + tx_sf->enable_adaptive_tx_search_level = false; tx_sf->prune_intra_ist_stx_by_zero_eob = false; } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 2c76d444fd..92e4540637 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -877,7 +877,8 @@ typedef struct TX_SPEED_FEATURES { // Enable txfm partition search bool enable_tx_partition; - + // Enable adaptive tx search level + bool enable_adaptive_tx_search_level; // Enable adaptive TCQ threshold: bool enable_adaptive_tcq_threshold; diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 0fd431cb61..00ede94006 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -112,9 +112,15 @@ static const int tx_partition_prune_level[2][6] = { { 0, 1, 3, 3, 2, 3 }, // look-up table of transform type pruning level used to prune the evaluation of // transform type based on best rd and eob. -static const int tx_type_prune_level[2][6] = { { 0, 1, 2, 1, 2, 3 }, - { 0, 1, 3, 3, 2, 3 } }; - +static const int tx_type_prune_level[2][6] = { + { 0, 1, 2, 1, 2, 3 }, // eob >= max_eob / 8 + { 0, 1, 3, 3, 2, 3 } // eob < max_eob / 8 +}; +static const int tx_type_prune_level_3regions[3][6] = { + { 0, 1, 2, 1, 1, 3 }, // eob >= max_eob / 4 + { 0, 1, 2, 1, 2, 3 }, // max_eob / 12 <= eob < max_eob / 4 + { 0, 1, 3, 3, 3, 3 }, // eob < max_eob / 12 +}; static INLINE uint32_t get_block_residue_hash(MACROBLOCK *x, BLOCK_SIZE bsize) { const int rows = block_size_high[bsize]; const int cols = block_size_wide[bsize]; @@ -2694,9 +2700,19 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // Terminate the search early, If the best rd is higher than the // reference best rd and number of coded coefficients are smaller // than a threshold. - const int search_level = - tx_type_prune_level[mb_plane->eobs[block] < max_eob / 8] - [tx_sf->adaptive_tx_type_search_idx]; + int search_level = 0; + if (tx_sf->enable_adaptive_tx_search_level) { + const int eob_level = (mb_plane->eobs[block] >= (max_eob / 4)) ? 0 + : (mb_plane->eobs[block] >= (max_eob / 12)) ? 1 + : 2; + search_level = + tx_type_prune_level_3regions[eob_level] + [tx_sf->adaptive_tx_type_search_idx]; + } else { + search_level = + tx_type_prune_level[mb_plane->eobs[block] < max_eob / 8] + [tx_sf->adaptive_tx_type_search_idx]; + } if (search_level && (best_rd - (best_rd >> search_level)) > ref_best_rd) { skip_idx = true; From 3bb453d47a1d68b198b6efbed68fa55c424b2d4b Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 29 Jul 2026 09:49:34 -0700 Subject: [PATCH 097/205] Rework av2_update_nbr_diagonal_c (#5172) Make the C and AVX2 code have the same behavior. Add unit test to check the two match. --- av2/encoder/trellis_quant.c | 121 ++++++++++++++++++------------------ test/trellis_test.cc | 81 ++++++++++++++++++++++++ 2 files changed, 143 insertions(+), 59 deletions(-) diff --git a/av2/encoder/trellis_quant.c b/av2/encoder/trellis_quant.c index 3cd101aa80..292bb3e8dc 100644 --- a/av2/encoder/trellis_quant.c +++ b/av2/encoder/trellis_quant.c @@ -456,73 +456,76 @@ static int get_coeff_cost(int ci, tran_low_t abs_qc, int sign, int coeff_ctx, // Update neighbor coeff magnitudes state for current diagonal. void av2_update_nbr_diagonal_c(struct tcq_ctx_t *tcq_ctx, int row, int col, int bwl) { - // Temp storage for next diagonal ctx, with padding. - uint8_t next_base_mag[32 + 8][TCQ_MAX_STATES]; - uint8_t next_mid_mag[32 + 8][TCQ_MAX_STATES]; - uint8_t(*next_base)[TCQ_MAX_STATES] = &next_base_mag[4]; - uint8_t(*next_mid)[TCQ_MAX_STATES] = &next_mid_mag[4]; - uint8_t(*mag_base)[TCQ_MAX_STATES] = &tcq_ctx->mag_base[4]; - uint8_t(*mag_mid)[TCQ_MAX_STATES] = &tcq_ctx->mag_mid[4]; - - int idx_start = col; - int idx_end = 1 << bwl; - for (int st = 0; st < TCQ_MAX_STATES; st++) { - // Copy original coeff context from previous diagonal. - int orig_st = tcq_ctx->orig_st[st]; - if (orig_st < 0) { - for (int i = 0; i < 32; i++) { - next_base[i][st] = 0; - next_mid[i][st] = 0; - } - } else { - for (int i = 0; i < 32; i++) { - next_base[i][st] = mag_base[i][orig_st]; - next_mid[i][st] = mag_mid[i][orig_st]; - } - } - } - memset(next_base_mag, 0, sizeof(next_base_mag[0]) * 4); - memset(next_mid_mag, 0, sizeof(next_mid_mag[0]) * 4); - memset(tcq_ctx->mag_base, 0, sizeof(tcq_ctx->mag_base)); - memset(tcq_ctx->mag_mid, 0, sizeof(tcq_ctx->mag_mid)); int diag = row + col; + int idx_start = col; + int idx_end = AVMMIN(diag + 1, 1 << bwl); + int idx0 = AVMMAX(idx_start - 2, 0); + int max1 = diag < 5 ? 5 : 3; int max2 = diag < 6 ? 5 : 3; + static const int8_t max_tbl[4] = { 0, 8, 6, 4 }; + int base_max = max_tbl[AVMMIN(diag, 3)]; + + int state_arr[MAX_DIAG + 8][TCQ_MAX_STATES]; + for (int st = 0; st < TCQ_MAX_STATES; st++) { - // Update neighbor magnitudes - int st1 = st; - for (int i = idx_start; st1 >= 0 && i < idx_end; i++) { - int lev = tcq_ctx->lev_new[i][st1]; - st1 = tcq_ctx->prev_st[i][st1]; - // Update base positions {1, 0}, {0, 1} - int base1 = AVMMIN(lev, max1); - next_base[i][st] += base1; - next_base[i - 1][st] += base1; - // Update mid positions {1, 0}, {0, 1} - next_mid[i][st] += lev; - next_mid[i - 1][st] += lev; - // Update base positions {2, 0}, {1. 1}, {0, 2} - int base2 = AVMMIN(lev, max2); - mag_base[i][st] += base2; - mag_base[i - 1][st] += base2; - mag_base[i - 2][st] += base2; - // Update mid position {1, 1} - mag_mid[i - 1][st] = lev; + state_arr[idx0][st] = st; + } + + for (int i = idx0; i < idx_end + 1; i++) { + for (int st = 0; st < TCQ_MAX_STATES; st++) { + int cur = state_arr[i][st]; + state_arr[i + 1][st] = (cur < 0) ? -1 : tcq_ctx->prev_st[i][cur]; } } - // Calc next context info - memset(tcq_ctx->ctx, 0, sizeof(tcq_ctx->ctx)); - static const int8_t max_tbl[6] = { 0, 8, 6, 4, 4, 4 }; - int base_max = max_tbl[AVMMIN(diag, 5)]; + + uint8_t new_mag_base[MAX_DIAG + 8][TCQ_MAX_STATES]; + uint8_t new_mag_mid[MAX_DIAG + 8][TCQ_MAX_STATES]; + for (int st = 0; st < TCQ_MAX_STATES; st++) { - for (int i = 0; i < 32; i++) { - int base_ctx = next_base[i][st]; - int mid_ctx = next_mid[i][st]; - base_ctx = AVMMIN((base_ctx + 1) >> 1, base_max); - mid_ctx = AVMMIN((mid_ctx + 1) >> 1, 6); - tcq_ctx->ctx[i][st] = (mid_ctx << 4) + base_ctx; + int orig_st = tcq_ctx->orig_st[st]; + for (int i = idx0; i < idx_end; i++) { + int base = (orig_st < 0) ? 0 : tcq_ctx->mag_base[i][orig_st]; + int mid = (orig_st < 0) ? 0 : tcq_ctx->mag_mid[i][orig_st]; + + int st0 = state_arr[i][st]; + int st1 = state_arr[i + 1][st]; + int st2 = state_arr[i + 2][st]; + + int lev0 = (st0 < 0) ? 0 : tcq_ctx->lev_new[i][st0]; + int lev1 = (st1 < 0) ? 0 : tcq_ctx->lev_new[i + 1][st1]; + int lev2 = (st2 < 0) ? 0 : tcq_ctx->lev_new[i + 2][st2]; + + int lev0_max1 = AVMMIN(lev0, max1); + int lev1_max1 = AVMMIN(lev1, max1); + int base_sum2 = lev0_max1 + lev1_max1; + + base = (base + base_sum2 + 1) >> 1; + base = AVMMIN(base, base_max); + + int mid_sum2 = lev0 + lev1; + mid = (mid + mid_sum2 + 1) >> 1; + mid = AVMMIN(mid, 6); + + tcq_ctx->ctx[i][st] = (mid << 4) | base; + + int lev0_max2 = AVMMIN(lev0, max2); + int lev1_max2 = AVMMIN(lev1, max2); + int lev2_max2 = AVMMIN(lev2, max2); + int base_sum3 = lev0_max2 + lev1_max2 + lev2_max2; + new_mag_base[i][st] = base_sum3; + new_mag_mid[i][st] = lev1; + } + } + + for (int i = idx0; i < idx_end; i++) { + for (int st = 0; st < TCQ_MAX_STATES; st++) { + tcq_ctx->mag_base[i][st] = new_mag_base[i][st]; + tcq_ctx->mag_mid[i][st] = new_mag_mid[i][st]; } - // Reset original state to prepare for next diagonal. + } + + for (int st = 0; st < TCQ_MAX_STATES; st++) { tcq_ctx->orig_st[st] = st; } } diff --git a/test/trellis_test.cc b/test/trellis_test.cc index 3c4587e1bd..c63d18a560 100644 --- a/test/trellis_test.cc +++ b/test/trellis_test.cc @@ -396,6 +396,80 @@ TEST_P(TcqRateLfLumaTest, RandomValues) { } } +typedef void (*TcqUpdateNbrDiagonalFunc)(struct tcq_ctx_t *tcq_ctx, int row, + int col, int bwl); +typedef libavm_test::FuncParam + TcqUpdateNbrDiagonalTestFuncs; + +class TcqUpdateNbrDiagonalTest + : public FunctionEquivalenceTest { + protected: + static const int kIterations = 10000; + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + int bwl = 2 + (rng_.Rand8() & 3); + int max_diag = (1 << bwl) + (1 << bwl) - 2; + int diag = rng_.Rand8() % (max_diag + 1); + int row = rng_.Rand8() % (diag + 1); + int col = diag - row; + if (col >= (1 << bwl)) col = (1 << bwl) - 1; + row = diag - col; + if (row >= (1 << bwl)) row = (1 << bwl) - 1; + + tcq_ctx_t ctx_ref; + tcq_ctx_t ctx_tst; + memset(&ctx_ref, 0, sizeof(ctx_ref)); + + for (int i = 0; i < TCQ_MAX_STATES; i++) { + ctx_ref.orig_st[i] = + (rng_.Rand8() % 3 == 0) ? -1 : (rng_.Rand8() % TCQ_MAX_STATES); + } + for (int i = 0; i < MAX_DIAG + 8; i++) { + for (int st = 0; st < TCQ_MAX_STATES; st++) { + ctx_ref.lev_new[i][st] = rng_.Rand8() % (MAX_VAL_BR_CTX + 1); + ctx_ref.mag_base[i][st] = rng_.Rand8(); + ctx_ref.mag_mid[i][st] = rng_.Rand8(); + ctx_ref.ctx[i][st] = rng_.Rand8(); + ctx_ref.prev_st[i][st] = + (rng_.Rand8() % 3 == 0) ? -1 : (rng_.Rand8() % TCQ_MAX_STATES); + } + } + + ctx_tst = ctx_ref; + + params_.ref_func(&ctx_ref, row, col, bwl); + ASM_REGISTER_STATE_CHECK(params_.tst_func(&ctx_tst, row, col, bwl)); + int idx_start = col; + int idx_end = AVMMIN(diag + 1, 1 << bwl); + int idx0 = AVMMAX(idx_start - 2, 0); + + for (int i = idx0; i < idx_end; i++) { + for (int st = 0; st < TCQ_MAX_STATES; st++) { + ASSERT_EQ((int)ctx_ref.ctx[i][st], (int)ctx_tst.ctx[i][st]) + << "Mismatch in ctx at i=" << i << ", st=" << st + << ", row=" << row << ", col=" << col << ", diag=" << diag + << ", bwl=" << bwl; + ASSERT_EQ((int)ctx_ref.mag_base[i][st], (int)ctx_tst.mag_base[i][st]) + << "Mismatch in mag_base at i=" << i << ", st=" << st + << ", row=" << row << ", col=" << col << ", diag=" << diag + << ", bwl=" << bwl; + ASSERT_EQ((int)ctx_ref.mag_mid[i][st], (int)ctx_tst.mag_mid[i][st]) + << "Mismatch in mag_mid at i=" << i << ", st=" << st + << ", row=" << row << ", col=" << col << ", diag=" << diag + << ", bwl=" << bwl; + } + } + for (int st = 0; st < TCQ_MAX_STATES; st++) { + ASSERT_EQ((int)ctx_ref.orig_st[st], (int)ctx_tst.orig_st[st]) + << "Mismatch in orig_st at st=" << st; + } + } + } +}; + +TEST_P(TcqUpdateNbrDiagonalTest, RandomValues) { RunTest(); } + #if HAVE_AVX2 INSTANTIATE_TEST_SUITE_P( AVX2, TcqRateLumaTest, @@ -406,10 +480,17 @@ INSTANTIATE_TEST_SUITE_P( AVX2, TcqRateLfLumaTest, ::testing::Values(TcqRateLfLumaTestFuncs(av2_get_rate_dist_lf_luma_c, av2_get_rate_dist_lf_luma_avx2))); + +INSTANTIATE_TEST_SUITE_P(AVX2, TcqUpdateNbrDiagonalTest, + ::testing::Values(TcqUpdateNbrDiagonalTestFuncs( + av2_update_nbr_diagonal_c, + av2_update_nbr_diagonal_avx2))); #endif // HAVE_AVX2 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqRateLumaTest); GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqRateLfLumaTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqUpdateNbrDiagonalTest); + } // namespace From 6ada811bad1b16b108efa025b716c4adbdf54dee Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Wed, 29 Jul 2026 10:28:51 -0700 Subject: [PATCH 098/205] MLP-based partition pre-screener (#5168) MLP-based partition pre-screener Add an MLP-based partition mode pre-screener for the encoder's partition search. A small 3-layer network (38 inputs, hidden dims 64/32, 4 outputs) predicts NONE/HORZ/VERT/SPLIT per block from a 32-bin HOG histogram over the source luma plane plus 6 scalar features (source variance, block size, QP, RD cost of the NONE partition, and the winning partition type of the above/left neighbors). Separate models are trained for intra-only and inter frames. When the model confidently predicts NONE, the weaker of the HORZ/VERT rectangular directions is pruned from the RD search. Enabled at speed >= 1 via sf.part_sf.partition_pruning_with_mlp. Anchor: commit 1d2febc43d Performance of this change in isolation, Speed 1 (cpu-used=1), FG16 CTC (33 frames): AI: ``` +------------+------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+------+-------+-------+------+------+ | A1 | 0.14 | 0.05 | -0.01 | 0.13 | 90 | | A2 | 0.17 | 0.05 | -0.02 | 0.16 | 90 | +------------+------+-------+-------+------+------+ | Avg w/o B2 | 0.17 | -0.02 | 0.08 | 0.16 | 90 | +------------+------+-------+-------+------+------+ ``` RA: ``` +------------+------+------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+------+------+-------+------+------+ | A1 | 0.12 | 0.23 | -0.40 | 0.10 | 96 | | A2 | 0.07 | 0.24 | 0.36 | 0.08 | 95 | +------------+------+------+-------+------+------+ | Avg w/o B2 | 0.13 | 0.42 | -0.09 | 0.12 | 95 | +------------+------+------+-------+------+------+ ``` STATS_CHANGED --- av2/av2.cmake | 2 + av2/encoder/partition_mlp.c | 138 +++ av2/encoder/partition_mlp.h | 58 ++ av2/encoder/partition_mlp_inter_weights.h | 989 ++++++++++++++++++++++ av2/encoder/partition_mlp_kf_weights.h | 989 ++++++++++++++++++++++ av2/encoder/partition_search.c | 54 ++ av2/encoder/speed_features.c | 6 + av2/encoder/speed_features.h | 8 + test/partition_mlp_test.cc | 107 +++ test/test.cmake | 1 + 10 files changed, 2352 insertions(+) create mode 100644 av2/encoder/partition_mlp.c create mode 100644 av2/encoder/partition_mlp.h create mode 100644 av2/encoder/partition_mlp_inter_weights.h create mode 100644 av2/encoder/partition_mlp_kf_weights.h create mode 100644 test/partition_mlp_test.cc diff --git a/av2/av2.cmake b/av2/av2.cmake index 5ed3a4a650..ce384a59ba 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -252,6 +252,8 @@ list( "${AVM_ROOT}/av2/encoder/palette.h" "${AVM_ROOT}/av2/encoder/partition_search.h" "${AVM_ROOT}/av2/encoder/partition_search.c" + "${AVM_ROOT}/av2/encoder/partition_mlp.h" + "${AVM_ROOT}/av2/encoder/partition_mlp.c" "${AVM_ROOT}/av2/encoder/partition_strategy.h" "${AVM_ROOT}/av2/encoder/partition_strategy.c" "${AVM_ROOT}/av2/encoder/pass2_strategy.h" diff --git a/av2/encoder/partition_mlp.c b/av2/encoder/partition_mlp.c new file mode 100644 index 0000000000..413f927304 --- /dev/null +++ b/av2/encoder/partition_mlp.c @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "av2/encoder/partition_mlp.h" +#include "av2/encoder/partition_mlp_inter_weights.h" +#include "av2/encoder/partition_mlp_kf_weights.h" + +#define PART_MLP_PI 3.14159265f + +/* ------------------------------------------------------------------ */ +/* Feature dimensions */ +/* ------------------------------------------------------------------ */ +#define PART_MLP_IN_DIM 38 +#define PART_MLP_H1_DIM 64 +#define PART_MLP_H2_DIM 32 +#define PART_MLP_OUT_DIM 4 +#define PART_MLP_HOG_BINS 32 + +/* ------------------------------------------------------------------ */ +/* HOG computation (same as partition feature logging) */ +/* ------------------------------------------------------------------ */ +static void compute_hog(const uint16_t *src, int stride, int bw, int bh, + float *hog) { + float hog_total = 0.1f; + for (int i = 0; i < PART_MLP_HOG_BINS; i++) hog[i] = 0.0f; + + for (int r = 1; r < bh - 1; r++) { + for (int c = 1; c < bw - 1; c++) { + const int idx = r * stride + c; + const int dx = (int)src[idx + 1 - stride] + 2 * (int)src[idx + 1] + + (int)src[idx + 1 + stride] - (int)src[idx - 1 - stride] - + 2 * (int)src[idx - 1] - (int)src[idx - 1 + stride]; + const int dy = (int)src[idx + stride - 1] + 2 * (int)src[idx + stride] + + (int)src[idx + stride + 1] - (int)src[idx - stride - 1] - + 2 * (int)src[idx - stride] - (int)src[idx - stride + 1]; + if (dx == 0 && dy == 0) continue; + const int mag = abs(dx) + abs(dy); + hog_total += mag; + if (dx == 0) { + hog[0] += mag / 2.0f; + hog[31] += mag / 2.0f; + } else { + float angle = atan2f((float)dy, (float)dx); + if (angle < 0) angle += PART_MLP_PI; + int bin = (int)(angle * 32.0f / PART_MLP_PI); + if (bin >= 32) bin = 31; + if (bin < 0) bin = 0; + hog[bin] += mag; + } + } + } + for (int i = 0; i < PART_MLP_HOG_BINS; i++) hog[i] /= hog_total; +} + +/* ------------------------------------------------------------------ */ +/* FC layer: out = ReLU(W @ in + b) */ +/* W is stored row-major: W[out_dim][in_dim] */ +/* ------------------------------------------------------------------ */ +static void fc_relu(const float *w, const float *b, const float *in, float *out, + int in_dim, int out_dim) { + for (int i = 0; i < out_dim; i++) { + float acc = b[i]; + const float *row = w + i * in_dim; + for (int j = 0; j < in_dim; j++) acc += row[j] * in[j]; + out[i] = acc > 0.0f ? acc : 0.0f; + } +} + +static void fc(const float *w, const float *b, const float *in, float *out, + int in_dim, int out_dim) { + for (int i = 0; i < out_dim; i++) { + float acc = b[i]; + const float *row = w + i * in_dim; + for (int j = 0; j < in_dim; j++) acc += row[j] * in[j]; + out[i] = acc; + } +} + +/* ------------------------------------------------------------------ */ +/* Forward pass */ +/* ------------------------------------------------------------------ */ +static int forward(const float *w0, const float *b0, const float *w2, + const float *b2, const float *w4, const float *b4, + const float *input, float *logits_out) { + float h1[PART_MLP_H1_DIM]; + float h2[PART_MLP_H2_DIM]; + + fc_relu(w0, b0, input, h1, PART_MLP_IN_DIM, PART_MLP_H1_DIM); + fc_relu(w2, b2, h1, h2, PART_MLP_H1_DIM, PART_MLP_H2_DIM); + fc(w4, b4, h2, logits_out, PART_MLP_H2_DIM, PART_MLP_OUT_DIM); + + int best = 0; + for (int i = 1; i < PART_MLP_OUT_DIM; i++) + if (logits_out[i] > logits_out[best]) best = i; + return best; +} + +/* ------------------------------------------------------------------ */ +/* Public API */ +/* ------------------------------------------------------------------ */ +int av2_partition_mlp_predict(const uint16_t *src, int stride, int bw, int bh, + int bsize, int qindex, unsigned int source_var, + int64_t none_rd, int above_part, int left_part, + int is_intra, float *logits_out) { + float input[PART_MLP_IN_DIM]; + + /* HOG (32 bins) */ + compute_hog(src, stride, bw, bh, input); + + /* Scalar features — normalisation must match training */ + input[32] = logf(1.0f + (float)source_var) / 12.0f; + input[33] = (float)bsize / 18.0f; + input[34] = (float)qindex / 255.0f; + input[35] = + logf(1.0f + (float)(none_rd > 0 && none_rd < INT64_MAX ? none_rd : 0)) / + 30.0f; + input[36] = ((float)above_part + 1.0f) / 10.0f; + input[37] = ((float)left_part + 1.0f) / 10.0f; + + if (is_intra) { + return forward(kf_w0, kf_b0, kf_w1, kf_b1, kf_w2, kf_b2, input, logits_out); + } else { + return forward(inter_w0, inter_b0, inter_w1, inter_b1, inter_w2, inter_b2, + input, logits_out); + } +} diff --git a/av2/encoder/partition_mlp.h b/av2/encoder/partition_mlp.h new file mode 100644 index 0000000000..2c2d30d314 --- /dev/null +++ b/av2/encoder/partition_mlp.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#ifndef AV2_ENCODER_PARTITION_MLP_H_ +#define AV2_ENCODER_PARTITION_MLP_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Predicted partition class indices — map back to PARTITION_TYPE as follows: + * 0 -> PARTITION_NONE + * 1 -> PARTITION_HORZ + * 2 -> PARTITION_VERT + * 3 -> PARTITION_SPLIT + */ +#define PART_MLP_NONE 0 +#define PART_MLP_HORZ 1 +#define PART_MLP_VERT 2 +#define PART_MLP_SPLIT 3 + +/*!\brief Run the partition MLP for one block. + * + * \param src Source luma plane buffer (uint16_t). + * \param stride Source stride. + * \param bw Block width in pixels. + * \param bh Block height in pixels. + * \param bsize Block size enum. + * \param qindex Base quantization index. + * \param source_var Per-pixel source variance. + * \param none_rd RD cost of NONE partition (-1 if not computed). + * \param above_part Winning partition of above neighbour (-1 if unavailable). + * \param left_part Winning partition of left neighbour (-1 if unavailable). + * \param is_intra 1 if current frame is intra-only, 0 otherwise. + * \param logits_out Output array of 4 raw logits [NONE, HORZ, VERT, SPLIT]. + * \return Predicted class index (PART_MLP_*). + */ +int av2_partition_mlp_predict(const uint16_t *src, int stride, int bw, int bh, + int bsize, int qindex, unsigned int source_var, + int64_t none_rd, int above_part, int left_part, + int is_intra, float *logits_out); + +#ifdef __cplusplus +} +#endif + +#endif // AV2_ENCODER_PARTITION_MLP_H_ diff --git a/av2/encoder/partition_mlp_inter_weights.h b/av2/encoder/partition_mlp_inter_weights.h new file mode 100644 index 0000000000..6ad3de143c --- /dev/null +++ b/av2/encoder/partition_mlp_inter_weights.h @@ -0,0 +1,989 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +/* Auto-generated — do not edit. */ +#ifndef AV2_ENCODER_PARTITION_MLP_INTER_WEIGHTS_H_ +#define AV2_ENCODER_PARTITION_MLP_INTER_WEIGHTS_H_ + +/* net.0.weight shape=[64, 38] */ +static const float inter_w0[2432] = { + -0.05482842f, 0.48881564f, 0.41786405f, 0.28514260f, 0.22640187f, + 0.18304172f, 0.13046324f, -0.02492755f, -0.03274690f, -0.00120879f, + 0.02419740f, -0.04486749f, -0.10335577f, -0.13516724f, -0.17675574f, + -0.31077689f, -0.30466247f, -0.22682805f, -0.16396558f, -0.14896758f, + -0.06698847f, -0.01731753f, 0.03453380f, 0.05276635f, 0.01302241f, + 0.09403791f, 0.18372625f, 0.22571172f, 0.27349302f, 0.42417133f, + 0.48285857f, -0.06793291f, 0.04379862f, -0.13456649f, -0.00480572f, + 0.05887942f, -0.03826881f, 0.06978663f, 0.09126247f, 0.17149650f, + -0.00368223f, 0.16074824f, 0.07224720f, -0.09579363f, -0.00521184f, + -0.10782334f, -0.00278515f, -0.02989475f, -0.18976986f, -0.15108120f, + -0.14966869f, -0.04500050f, -0.18907516f, -0.17407623f, -0.16623294f, + -0.10400530f, -0.15901846f, -0.13038233f, -0.20525818f, -0.13587181f, + -0.14106339f, -0.19540836f, -0.02000783f, 0.02630450f, 0.12187761f, + -0.07189479f, -0.00032994f, 0.13440691f, 0.05620807f, 0.17152660f, + -0.20105179f, 0.40531370f, 0.38591513f, 0.28410646f, -0.02414555f, + -0.04167712f, -0.18386084f, -0.02800972f, -0.12780090f, -0.19273692f, + 0.06761452f, -0.18953143f, -0.08220008f, -0.02366228f, -0.05643308f, + 0.00678950f, -0.04000486f, 0.14922768f, 0.17662911f, 0.11635106f, + 0.00882995f, 0.07596116f, 0.12220684f, 0.00591345f, 0.02955575f, + -0.04991437f, 0.11537319f, -0.12347285f, 0.01110212f, 0.11163108f, + 0.13636045f, -0.03057615f, -0.09376384f, -0.04273909f, -0.05690049f, + -0.03548855f, -0.07578478f, -0.17954737f, 0.18203580f, 0.32265207f, + 0.13967678f, -0.18587081f, 0.07986522f, -0.01266863f, 0.11945479f, + 0.07552264f, 0.16164403f, 0.11122821f, 0.11518100f, 0.17954232f, + 0.11006124f, 0.14715673f, 0.06296799f, 0.13815384f, 0.13734151f, + 0.13094161f, 0.15344012f, 0.17121203f, 0.16299427f, 0.07416378f, + 0.12271342f, 0.15796426f, 0.12296543f, 0.15659007f, 0.16855212f, + 0.18385355f, 0.13456091f, 0.16888808f, 0.10658129f, 0.12478576f, + 0.15531704f, 0.12085105f, 0.13171649f, 0.15886392f, 0.06477184f, + 0.16645797f, 0.15882236f, -0.30056018f, 0.00574321f, -0.18516326f, + 0.01446451f, 0.04547554f, 0.00966058f, 0.09848739f, 0.03114836f, + 0.09209424f, 0.12449232f, 0.04626015f, -0.08116809f, -0.11440233f, + 0.13004437f, -0.04988603f, -0.13433571f, -0.11593240f, -0.11191793f, + 0.00479286f, 0.02807131f, 0.04836985f, -0.05359512f, -0.11998430f, + -0.13121891f, 0.05645197f, -0.05486016f, 0.00530137f, 0.01484358f, + 0.04867444f, -0.10163438f, 0.01897851f, 0.02686196f, 0.02144524f, + -0.10432622f, 0.10900617f, 0.14373843f, -0.09622755f, 0.14880094f, + 0.41648450f, 0.08943141f, -0.02095311f, -0.05046263f, 0.02153317f, + 0.11822275f, -0.03080628f, -0.08048519f, -0.09874105f, -0.03484288f, + 0.02653000f, 0.06397408f, -0.12206007f, 0.13833630f, -0.03784131f, + -0.01505223f, 0.00765252f, 0.07220699f, -0.06839246f, 0.01794739f, + 0.18283613f, -0.00338975f, 0.16029273f, 0.15391557f, 0.04218429f, + -0.14481094f, 0.06955783f, -0.02894846f, -0.03641672f, 0.23459707f, + -0.04117774f, 0.02740124f, -0.07876994f, 0.02977500f, -0.17425793f, + -0.17917807f, 0.12349953f, -0.24269406f, -0.07656655f, 0.19415627f, + 0.24209291f, -0.06742193f, -0.10588609f, -0.00676961f, -0.20839278f, + -0.12917070f, -0.04267133f, -0.07380402f, -0.06303396f, -0.13342626f, + -0.16838716f, 0.08277801f, -0.10660651f, -0.03020193f, -0.03292479f, + 0.04204319f, 0.08887032f, 0.09815139f, 0.16129024f, 0.09133873f, + 0.09039117f, 0.11045469f, 0.00982528f, -0.04142129f, -0.02878895f, + 0.03352468f, -0.14511375f, 0.16004802f, -0.04088822f, -0.05057201f, + -0.03803770f, -0.04729874f, -0.07109655f, -0.08963262f, -0.02882954f, + -0.27946025f, 0.39541680f, 0.34329036f, 0.22591342f, -0.11434373f, + -0.04530919f, 0.04921136f, 0.23493408f, 0.22930424f, 0.24967958f, + 0.11225846f, 0.07634238f, -0.01826936f, 0.07368824f, 0.09426674f, + -0.08978418f, 0.04185632f, -0.07970025f, 0.00913004f, -0.16570483f, + -0.03007725f, -0.08324549f, -0.19751821f, -0.13819687f, 0.01332700f, + -0.04799931f, -0.09905080f, -0.12855460f, -0.07533504f, -0.00744753f, + 0.00221006f, -0.00636566f, 0.13895994f, 0.16451146f, 0.17479718f, + 0.28765100f, 0.43359658f, -0.10598958f, 0.08940219f, 0.31619650f, + 0.13767211f, 0.15882018f, 0.11005566f, 0.15180109f, 0.13306877f, + 0.07582083f, 0.16227041f, 0.07920230f, 0.08734724f, 0.11434130f, + 0.09104355f, 0.11649834f, 0.05192830f, 0.11027894f, 0.16440710f, + 0.10725643f, 0.09437376f, 0.10949273f, 0.13551438f, 0.08097833f, + 0.08337075f, 0.06349491f, 0.05875717f, 0.10289534f, 0.10674556f, + 0.13515411f, 0.09526659f, 0.14880027f, 0.06466141f, 0.08009496f, + 0.11744862f, 0.07421793f, 0.12420662f, 0.15111962f, 0.03946583f, + 0.09677204f, 0.08842161f, -0.27856705f, -0.01335275f, -0.06432443f, + 0.01092053f, 0.01435968f, 0.12095295f, 0.23840480f, 0.34112608f, + 0.21194854f, 0.29168391f, 0.27496067f, 0.28214362f, 0.31028146f, + 0.10096090f, 0.07393093f, 0.12316565f, 0.25086978f, -0.00059592f, + 0.20788711f, 0.10656890f, 0.00973646f, 0.00572946f, 0.01891222f, + -0.02645296f, 0.11155695f, 0.08448518f, 0.19237591f, 0.06310045f, + 0.32324183f, 0.15519916f, 0.20050226f, 0.14420395f, 0.12464917f, + 0.33168378f, 0.37435129f, 0.17102435f, 0.14061332f, 0.20460196f, + -0.25658190f, 0.03450260f, -0.25797343f, 0.20619708f, 0.00611509f, + 0.05099940f, 0.03531165f, 0.18176341f, 0.23538157f, 0.09243623f, + 0.19051866f, 0.15281808f, -0.00531033f, 0.10557362f, -0.01716259f, + 0.14171009f, 0.17613503f, 0.07096410f, 0.00194197f, -0.03215677f, + -0.04460754f, 0.05169277f, 0.11973979f, 0.09865237f, 0.09505948f, + 0.02536011f, 0.11069360f, 0.16833352f, 0.02133583f, 0.10945693f, + 0.24607150f, 0.21100600f, -0.04341887f, 0.03517184f, 0.14860336f, + 0.18161783f, 0.14150698f, -0.13312770f, -0.35470131f, 0.27611917f, + 0.17999063f, 0.06244171f, 0.09631103f, 0.16830957f, -0.19339471f, + -0.02579734f, -0.06629960f, -0.05568230f, 0.05809707f, 0.05528319f, + 0.10795344f, 0.03332967f, 0.11363193f, 0.13752693f, 0.11504787f, + 0.10716256f, 0.13605501f, 0.18517661f, 0.20259288f, 0.16904491f, + 0.13716985f, 0.11664142f, 0.16117512f, 0.11384580f, 0.14158505f, + 0.09428452f, 0.15908960f, 0.05815833f, 0.05206871f, 0.06043399f, + 0.04376322f, 0.01070786f, -0.03216084f, -0.19833982f, 0.20610934f, + 0.11653700f, -0.24583568f, -0.02343907f, -0.07921865f, 0.05696101f, + 0.00196573f, -0.26789975f, 0.36586815f, 0.20894508f, 0.15478669f, + 0.18327823f, 0.05792914f, 0.03062067f, 0.12381926f, -0.07779242f, + 0.06143355f, -0.01672522f, 0.07447311f, -0.10221211f, 0.01194636f, + -0.15107916f, -0.10813999f, -0.06685776f, -0.14876246f, -0.05469398f, + -0.00354115f, -0.02967967f, -0.07398953f, -0.06630189f, 0.01824016f, + -0.01402311f, 0.08668876f, 0.00727970f, 0.11251768f, 0.17526582f, + 0.09357281f, 0.32600984f, -0.34239390f, 0.03434391f, 0.35018504f, + 0.01936789f, -0.10334424f, 0.05673501f, 0.16257955f, 0.06573431f, + 0.01631126f, -0.01931682f, 0.00125780f, 0.01707609f, 0.08666014f, + -0.05747061f, 0.02610856f, 0.17560540f, -0.05434122f, 0.05628036f, + 0.11381067f, -0.02376812f, 0.04271762f, 0.01866499f, -0.01633823f, + 0.09325027f, 0.06987230f, 0.10487404f, 0.04598373f, -0.00965944f, + 0.07305481f, -0.05048533f, -0.13276814f, 0.23129639f, 0.01803385f, + 0.10525066f, 0.00777239f, 0.09530377f, 0.08650111f, 0.05793197f, + -0.08484690f, -0.05844623f, 0.35764077f, 0.18413325f, 0.14507131f, + 0.09131238f, 0.22007576f, 0.21757649f, 0.15541285f, 0.17737855f, + 0.15650858f, 0.27724540f, 0.24214152f, 0.21438235f, 0.13705604f, + 0.18221137f, 0.22685587f, 0.18992768f, 0.18598540f, 0.19380964f, + 0.22854820f, 0.18301529f, 0.14155129f, 0.10924252f, 0.10928789f, + 0.13685586f, 0.22505839f, 0.16796663f, 0.15142633f, 0.17468558f, + 0.25882065f, 0.15546033f, 0.15413082f, 0.11737137f, 0.18637754f, + 0.29632416f, 0.18820761f, 0.23097374f, 0.26827657f, 0.16431037f, + -0.25793636f, -0.05633465f, -0.21108146f, 0.11542752f, 0.09708304f, + 0.04832644f, 0.05813560f, -0.05220481f, 0.05416400f, 0.07049332f, + -0.03581045f, 0.06446884f, -0.00220671f, 0.02758499f, 0.02958974f, + 0.08849400f, -0.01784214f, 0.19095914f, 0.11125235f, 0.06122711f, + 0.03591084f, 0.10329653f, 0.16782315f, 0.12347981f, 0.01663496f, + 0.04767371f, 0.09583037f, 0.05159023f, -0.02365731f, 0.04613366f, + 0.10060751f, 0.08298171f, -0.00354210f, -0.03014862f, -0.02354396f, + -0.00517216f, 0.01126018f, -0.05310887f, 0.40886396f, 0.20478812f, + 0.17639805f, 0.05106494f, 0.14606391f, 0.08447684f, 0.09096956f, + 0.14414440f, 0.12530671f, 0.09952544f, 0.10873360f, 0.11590721f, + 0.10535504f, 0.08892605f, 0.11071919f, 0.10210096f, 0.13409744f, + 0.07520054f, 0.10042040f, 0.11970531f, 0.11376026f, 0.09921095f, + 0.11824124f, 0.09624698f, 0.11346757f, 0.10087228f, 0.09754187f, + 0.10389213f, 0.13267024f, 0.09927312f, 0.09048110f, 0.12921439f, + 0.07445994f, 0.12597148f, 0.15559678f, 0.09133633f, 0.09048673f, + 0.00098413f, -0.28088850f, -0.00324758f, 0.00096207f, 0.05974589f, + 0.01687820f, -0.08837277f, -0.04560711f, -0.16014756f, 0.01021641f, + -0.02270843f, -0.08729332f, -0.10681924f, -0.02225529f, -0.01246542f, + -0.07995537f, 0.00295853f, 0.02916408f, -0.00754494f, -0.03790686f, + 0.07077593f, -0.06008133f, 0.15497676f, -0.08274415f, 0.06685233f, + 0.11378315f, -0.01999062f, -0.11386602f, -0.03299972f, -0.07984441f, + 0.00419221f, -0.11596888f, -0.01728306f, -0.04854026f, -0.02738362f, + -0.03427646f, 0.00498636f, -0.12289543f, 0.09708086f, 0.25224310f, + 0.01911649f, 0.19536506f, 0.16601977f, 0.01590071f, -0.00000001f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000001f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000003f, 0.00000000f, 0.00000000f, -0.00000000f, + 0.00000001f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00010922f, -0.00321691f, -0.00066349f, -0.00002005f, + -0.00000013f, 0.00000000f, 0.15148041f, -0.28510192f, -0.09677386f, + 0.09333610f, -0.15344112f, 0.00539742f, 0.05194751f, 0.04571859f, + 0.16735683f, 0.07835314f, 0.12562150f, 0.17493439f, 0.14461617f, + 0.19351140f, 0.05146404f, 0.21013364f, 0.14934236f, 0.32223266f, + 0.24074493f, 0.09858613f, 0.04541257f, 0.20804238f, -0.00140592f, + -0.08893768f, 0.27610067f, -0.02377832f, 0.09263716f, -0.02956368f, + -0.04138769f, -0.15307255f, -0.21721651f, 0.10155143f, -0.11537414f, + -0.22271563f, 0.30245242f, 0.13506357f, 0.11899291f, -0.16383524f, + 0.25249016f, -0.24643417f, -0.06385360f, 0.09183867f, -0.08313167f, + 0.10699813f, 0.01888241f, 0.08875123f, 0.20310096f, 0.10130217f, + 0.31213403f, 0.15272266f, 0.27822343f, 0.23308264f, 0.20118582f, + 0.16978376f, 0.19089366f, 0.28883177f, 0.21500887f, 0.13427140f, + 0.07563079f, 0.15645413f, 0.29176414f, 0.18573450f, 0.24787663f, + 0.11377265f, 0.18025500f, 0.06615547f, -0.06346942f, 0.02697282f, + -0.13811699f, 0.17809798f, 0.16352837f, -0.38014320f, 0.24173595f, + 0.20378116f, 0.16347139f, 0.14541648f, 0.17327651f, -0.09565868f, + -0.08007156f, 0.10892037f, 0.05197503f, 0.24234237f, 0.23121516f, + 0.34794557f, 0.25460437f, 0.28320777f, 0.32606414f, 0.24857618f, + 0.16556375f, 0.28557673f, 0.36950344f, 0.19888508f, 0.37667778f, + 0.32853964f, 0.29369202f, 0.23946857f, 0.21816522f, 0.22662763f, + 0.14392716f, 0.29257068f, 0.05843413f, 0.18972154f, 0.20963687f, + 0.18628047f, 0.17561416f, -0.05971063f, 0.07623627f, 0.24886979f, + 0.37463945f, -0.19717611f, 0.15242374f, -0.15618433f, 0.16979508f, + 0.20251285f, -0.06746224f, -0.02726927f, -0.07821932f, -0.05233276f, + -0.06890566f, -0.17144622f, -0.15712173f, 0.02261036f, 0.00405389f, + -0.07284179f, 0.01801361f, -0.02660931f, -0.00861113f, 0.03636048f, + 0.07458548f, 0.06761626f, -0.02325558f, 0.03537437f, 0.07232487f, + -0.01436734f, 0.00153586f, -0.01327263f, -0.07989466f, -0.17421491f, + 0.10440534f, -0.16671909f, -0.19044448f, -0.12252164f, -0.13121502f, + -0.28807184f, -0.22870982f, -0.07006811f, -0.19183140f, 0.45792899f, + 0.11469130f, -0.08122110f, 0.11616167f, -0.04027604f, 0.16153295f, + -0.20738360f, 0.03451469f, -0.02835695f, -0.03886069f, 0.17103259f, + 0.10045967f, -0.07808233f, 0.20751520f, 0.00014752f, 0.13495658f, + 0.16978924f, -0.03039152f, 0.17362724f, 0.10612407f, 0.22351833f, + 0.17351887f, 0.08821143f, 0.03155335f, 0.07021255f, 0.09938593f, + 0.25213817f, 0.15891086f, 0.04302455f, 0.23437943f, 0.09045378f, + 0.06507695f, -0.10019964f, 0.01847288f, -0.02019133f, -0.07472546f, + 0.23778155f, 0.02884965f, -0.23095334f, 0.16517255f, 0.28115645f, + 0.05008850f, 0.11291350f, -0.06642433f, 0.08114047f, 0.02359157f, + -0.04534661f, 0.00931872f, -0.08108477f, -0.08428328f, -0.01255866f, + 0.05713472f, -0.03791141f, -0.10520092f, -0.05690064f, -0.07308968f, + -0.08724775f, -0.15223344f, 0.02127914f, -0.11355260f, -0.16940548f, + -0.05466584f, -0.03586110f, -0.08421537f, -0.06700633f, 0.00191636f, + 0.00059835f, -0.02573261f, -0.11374594f, -0.09822026f, -0.01749076f, + -0.02534379f, 0.01907445f, 0.19441390f, -0.14870629f, 0.07972328f, + 0.30358294f, -0.10710609f, 0.14840150f, -0.05849783f, 0.05926919f, + 0.14878486f, 0.09902151f, 0.17457296f, 0.11316682f, 0.12530416f, + 0.08732390f, 0.20230573f, 0.28929687f, 0.20371601f, 0.24305993f, + 0.08721287f, 0.15069959f, 0.10118088f, 0.10809563f, 0.25801069f, + 0.12050988f, 0.13668671f, 0.10347058f, 0.22007442f, 0.18984810f, + 0.09663641f, 0.18868291f, 0.16146997f, 0.15856665f, 0.01000449f, + 0.16424158f, 0.10610750f, 0.16343483f, 0.18486987f, 0.09937512f, + 0.11731748f, 0.17906138f, 0.12141763f, -0.32892704f, 0.01575610f, + -0.28928602f, 0.21073665f, 0.03995175f, -0.00591785f, 0.28290865f, + 0.09978414f, 0.26248983f, 0.30412215f, 0.14233783f, 0.28185764f, + 0.33246940f, 0.18421787f, 0.20033395f, 0.13065794f, 0.25904930f, + 0.09865199f, -0.00922130f, 0.16640358f, 0.09268636f, 0.10138205f, + 0.08793134f, 0.01750643f, 0.18910237f, 0.11885031f, 0.11030449f, + 0.12468380f, 0.26008001f, 0.12133595f, 0.19438244f, 0.17575724f, + 0.35514176f, 0.09990344f, 0.23030403f, 0.41932869f, 0.01103643f, + 0.40527099f, 0.03161497f, -0.11208186f, -0.15915719f, 0.11234245f, + 0.33974758f, -0.02456492f, 0.01524122f, -0.01490442f, 0.03253971f, + -0.00458688f, -0.16275848f, -0.11986592f, -0.21364260f, -0.04361723f, + -0.14294189f, 0.04121209f, -0.08345534f, -0.08676793f, -0.12194562f, + -0.14321041f, -0.10728706f, -0.02544780f, -0.04854975f, -0.06341171f, + -0.04874091f, -0.00704895f, 0.01913451f, -0.19419260f, -0.05833823f, + 0.06320194f, -0.13404649f, 0.05544457f, -0.01468899f, -0.16266039f, + -0.05654586f, 0.04948783f, -0.24004790f, -0.06844334f, 0.45196220f, + 0.05670739f, 0.17710745f, 0.04676689f, -0.13337614f, 0.14607446f, + 0.00740467f, 0.11505614f, 0.14789884f, 0.09036910f, 0.13528755f, + 0.02065084f, -0.08514505f, 0.02166823f, -0.03056596f, 0.12503926f, + 0.07229152f, 0.03654050f, 0.07365958f, 0.15591732f, 0.06902469f, + 0.11216946f, 0.05330639f, 0.13373652f, -0.00585498f, -0.02184439f, + 0.08250281f, 0.08053734f, 0.02100515f, 0.15101725f, 0.09135393f, + 0.13004281f, -0.00967295f, 0.17323799f, 0.08246686f, -0.05338398f, + 0.21004367f, -0.17408723f, -0.18715140f, 0.32942232f, 0.13547662f, + -0.04913297f, -0.02208896f, -0.11653701f, 0.09926941f, 0.06178204f, + 0.06881204f, -0.01584044f, -0.06575777f, 0.04938962f, 0.11924428f, + 0.07182425f, 0.15324640f, -0.10118447f, 0.09681912f, 0.06647813f, + 0.06249025f, 0.06873053f, 0.03573052f, -0.09996838f, 0.04335014f, + 0.10431195f, -0.04202550f, -0.01041458f, -0.07072601f, -0.00291643f, + 0.19622801f, -0.05886140f, -0.02470211f, 0.01864076f, 0.10936087f, + -0.10512274f, 0.09074024f, 0.17695343f, -0.27854246f, 0.26177707f, + 0.33276045f, -0.16627102f, -0.23852900f, 0.21929763f, 0.22803782f, + 0.01123918f, 0.30760756f, 0.25899658f, 0.13378420f, 0.15360618f, + 0.05921144f, 0.05193152f, -0.18911281f, -0.06405079f, 0.04023126f, + -0.01013766f, 0.01685840f, -0.19501851f, -0.19560842f, -0.20506066f, + -0.20327476f, -0.10864746f, -0.08725286f, -0.13824527f, -0.14674479f, + -0.25472438f, 0.02211630f, 0.05872352f, -0.08130371f, 0.00894011f, + 0.13904612f, 0.19610421f, 0.00686992f, 0.14346737f, 0.22047931f, + 0.40523237f, 0.07608834f, -0.04923257f, -0.15522270f, 0.11924036f, + 0.27866662f, -0.17652026f, 0.06818455f, -0.00000000f, 0.00000000f, + -0.00000001f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000001f, -0.00000000f, + -0.00000000f, 0.12168580f, -0.23128797f, -0.21035779f, 0.01562219f, + -0.09662073f, 0.01815143f, -0.06261993f, -0.10885518f, 0.12755074f, + -0.00765190f, -0.00002315f, 0.12945141f, 0.10715920f, 0.21309897f, + 0.10147880f, 0.26616362f, 0.18790914f, 0.26394376f, 0.14171582f, + -0.01866537f, -0.03862330f, 0.03540772f, -0.02248170f, -0.09509447f, + 0.08512983f, -0.03994076f, 0.02372130f, -0.08888114f, -0.02722709f, + -0.13252208f, -0.12612790f, 0.00974015f, -0.11738434f, 0.29908329f, + 0.31345558f, 0.19011927f, -0.07655039f, 0.00958210f, -0.18695229f, + 0.05526466f, -0.01368271f, 0.12624235f, 0.00662924f, -0.04270875f, + 0.00572052f, 0.05797035f, 0.14497125f, -0.03454912f, -0.13129188f, + 0.05366766f, 0.07662046f, -0.04228996f, 0.07396609f, 0.06923549f, + 0.00263459f, 0.02482769f, -0.10135791f, 0.08466805f, 0.12006337f, + 0.07394546f, 0.00305447f, 0.07984757f, 0.01532974f, 0.01051647f, + 0.08322634f, 0.05927661f, 0.14120051f, -0.08541691f, 0.02459368f, + -0.04538818f, 0.26749465f, 0.36694649f, -0.13487165f, -0.18143627f, + 0.11156311f, 0.07600193f, 0.02906868f, -0.18828841f, 0.03580750f, + 0.08849386f, 0.15548185f, 0.14892490f, 0.14239013f, 0.11439412f, + 0.22111209f, 0.03377367f, 0.27232292f, 0.03819161f, 0.10631736f, + 0.21472526f, 0.25086108f, 0.06466119f, 0.21017972f, 0.06174389f, + 0.07035381f, 0.02604216f, 0.08783594f, 0.29070547f, 0.01047350f, + -0.06426179f, 0.23076855f, 0.14676130f, 0.10842154f, 0.02787721f, + 0.16805011f, 0.12381753f, -0.00123211f, 0.19281228f, -0.10670089f, + -0.33377928f, -0.04789203f, 0.16995734f, 0.02230969f, -0.12809367f, + -0.03094070f, 0.06882412f, -0.01772605f, -0.01333166f, 0.00172192f, + -0.07420406f, -0.07567799f, -0.04840212f, -0.02516766f, -0.06320810f, + -0.09288526f, -0.04051683f, -0.00462425f, -0.01652491f, -0.09729557f, + -0.02679479f, -0.02328678f, -0.06570413f, -0.03676035f, -0.04668630f, + -0.03494649f, -0.07959761f, -0.06028292f, -0.06583568f, -0.06497023f, + -0.05535498f, -0.10041015f, 0.01016244f, -0.03524288f, -0.03000397f, + 0.09195224f, -0.07481194f, -0.02193949f, 0.24576375f, 0.00380682f, + 0.07567254f, 0.04928338f, 0.05988218f, 0.30120996f, 0.12985633f, + 0.34203944f, 0.15902674f, 0.21956199f, 0.11685409f, 0.18245851f, + -0.00558957f, 0.00493304f, 0.16037372f, 0.06754259f, 0.02277913f, + 0.00478812f, -0.04240227f, 0.00976890f, -0.12874913f, 0.03661830f, + 0.05351909f, -0.02804618f, 0.02828510f, 0.03027768f, 0.01432617f, + 0.17546114f, 0.01370903f, 0.06828227f, 0.24205428f, 0.32873818f, + 0.23606880f, 0.25180903f, 0.38915059f, 0.28760457f, 0.18511698f, + -0.08367579f, -0.36154941f, 0.19622190f, 0.14647123f, 0.10238170f, + 0.09781631f, 0.20332994f, -0.20854120f, -0.06094152f, -0.00199810f, + -0.11728554f, 0.10637737f, 0.03624855f, -0.02989388f, 0.13188493f, + 0.05346759f, 0.16450149f, 0.15782969f, 0.10210191f, 0.14971101f, + 0.16425055f, 0.26575127f, 0.20081191f, 0.15594983f, 0.17398852f, + 0.16018485f, 0.08723141f, 0.23373419f, 0.06191546f, 0.02139913f, + 0.16621254f, 0.08607126f, 0.10478812f, -0.01536052f, -0.02609335f, + -0.16082418f, -0.29734609f, 0.30959633f, -0.17392659f, -0.21158512f, + 0.12410808f, 0.08327121f, 0.07278636f, -0.10394937f, -0.06889140f, + 0.16441445f, 0.14074156f, 0.12140368f, 0.12333404f, 0.09907807f, + 0.08517322f, 0.20821299f, 0.10448611f, 0.15756643f, -0.02013611f, + 0.11170711f, 0.26457927f, 0.23241617f, 0.14690611f, 0.07310333f, + 0.13275926f, 0.12483086f, 0.18970799f, 0.17272753f, 0.21934569f, + 0.09555144f, 0.04355476f, 0.11191130f, 0.05499689f, 0.00272093f, + 0.10274762f, 0.08371712f, 0.05239111f, 0.08301087f, 0.09775378f, + -0.09287322f, 0.11046726f, 0.16504838f, 0.02207797f, -0.21070145f, + 0.14303729f, 0.03122896f, -0.00000002f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000011f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000591f, -0.00000045f, + 0.00000000f, 0.00000536f, -0.00000000f, 0.00000001f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000001f, 0.00238263f, + 0.01217021f, -0.00916603f, 0.03408566f, 0.00000008f, -0.00001143f, + 0.09903307f, -0.19035865f, -0.03022953f, 0.00753319f, -0.02847120f, + 0.05660708f, 0.06582453f, 0.08104043f, 0.09420554f, 0.08130199f, + 0.14803982f, 0.09091785f, 0.11641072f, 0.15768231f, 0.17645022f, + 0.17597926f, 0.19846798f, 0.18734053f, 0.15915205f, 0.17368719f, + 0.10960846f, 0.16718593f, 0.11922340f, 0.05735432f, 0.11553722f, + 0.09186757f, 0.08861170f, -0.02152028f, 0.01880992f, -0.01858200f, + -0.22778019f, 0.09528642f, -0.01169048f, -0.21603684f, 0.04594076f, + -0.00150791f, 0.02827589f, -0.00985491f, -0.00051238f, -0.00000675f, + -0.00000006f, -0.00000000f, -0.00000608f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00002866f, -0.00000017f, -0.00000002f, -0.00000068f, + -0.00000793f, -0.00000862f, -0.00000299f, -0.00000927f, -0.00000317f, + -0.00002350f, -0.00002183f, -0.00000038f, -0.00000001f, -0.00000013f, + -0.00000338f, -0.00000060f, -0.00001115f, 0.00000000f, 0.00000000f, + -0.00000009f, -0.00000036f, -0.00000084f, -0.00000158f, -0.00004241f, + -0.01024306f, -0.00977359f, -0.01162535f, -0.00647690f, -0.00116242f, + -0.00096933f, -0.02633435f, -0.01303950f, 0.10703518f, -0.10368633f, + 0.10006846f, -0.04453723f, 0.00094271f, 0.25388131f, -0.02337177f, + 0.07162926f, -0.05390115f, 0.20793362f, 0.08401295f, 0.20543948f, + 0.02873128f, 0.15023963f, 0.15598001f, 0.00831395f, 0.13431379f, + 0.08056889f, 0.07137691f, 0.17379853f, 0.17868966f, 0.25927046f, + 0.12645201f, -0.01897354f, -0.01372734f, 0.13762271f, -0.01840101f, + -0.08588739f, 0.14422816f, 0.01883866f, 0.33966631f, 0.15945436f, + -0.07107732f, -0.24966413f, 0.29701188f, 0.27639732f, 0.32547945f, + -0.37419602f, -0.16798690f, -0.01712082f, -0.08128763f, -0.02644521f, + 0.01860514f, -0.12427191f, 0.01712878f, 0.05201124f, 0.08641166f, + 0.04706522f, 0.14702798f, 0.06415132f, 0.18428165f, 0.13839693f, + 0.12801027f, 0.24786004f, 0.03695099f, 0.06237014f, 0.00769207f, + 0.23644724f, 0.00102006f, -0.15724069f, 0.17662959f, 0.00403406f, + 0.12310921f, -0.24874654f, -0.22106713f, -0.13442770f, -0.23522626f, + 0.19799872f, -0.27381384f, -0.07889020f, 0.20972309f, 0.25837293f, + 0.10403557f, -0.13616708f, -0.07005587f, 0.41420808f, 0.27089843f, + 0.31119999f, 0.28727022f, 0.01014739f, 0.03157201f, 0.02467094f, + -0.07197053f, -0.08738892f, 0.00008145f, 0.07314620f, -0.04376956f, + -0.16766973f, -0.21632214f, -0.22759630f, -0.20592107f, -0.15508012f, + -0.17484429f, -0.06488173f, 0.08426884f, -0.13459183f, -0.03395753f, + 0.00035030f, -0.10162129f, 0.08898810f, 0.05029500f, 0.31658700f, + 0.12992717f, 0.43502739f, 0.58576876f, -0.18903582f, 0.32396531f, + 0.25523180f, -0.12107609f, -0.09381098f, 0.20431750f, 0.21864828f, + 0.13134822f, 0.03471606f, -0.02405348f, 0.02455596f, -0.15540780f, + -0.11187255f, -0.01484882f, -0.12385941f, -0.01803569f, -0.15897165f, + -0.01148345f, -0.05303499f, -0.10981643f, -0.12993537f, -0.13146833f, + -0.05403459f, -0.08039786f, -0.04346029f, -0.13561304f, -0.13664390f, + -0.14502598f, -0.10735217f, -0.05210837f, -0.19176190f, 0.14959340f, + 0.03264342f, -0.11401825f, -0.03921011f, -0.18440871f, -0.06258751f, + 0.09204262f, -0.09065604f, -0.22552735f, 0.35434207f, 0.25241080f, + 0.21446775f, -0.10894228f, -0.03978400f, -0.23697245f, 0.09636689f, + -0.08361498f, 0.01670188f, -0.03086954f, -0.08109319f, -0.02435693f, + 0.07755530f, 0.00369332f, 0.02215143f, 0.02122569f, 0.09632431f, + -0.08242086f, 0.12780231f, -0.12157198f, 0.05451851f, -0.11537816f, + -0.07259019f, 0.10488337f, 0.08763184f, -0.00778504f, 0.03248318f, + -0.03736171f, 0.10546678f, -0.01022083f, -0.02879192f, -0.10524838f, + 0.06235017f, -0.04956318f, 0.10168124f, 0.25195712f, -0.25882199f, + 0.03166861f, 0.34672084f, 0.01542930f, -0.32395190f, 0.03526355f, + 0.06671897f, -0.00001525f, 0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000009f, -0.00000000f, -0.00000014f, -0.00000143f, + -0.00000002f, -0.00000005f, -0.00000030f, -0.00000000f, -0.00000001f, + -0.00000017f, -0.00000048f, -0.00000005f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000043f, 0.00000000f, -0.00000021f, + -0.00000056f, -0.00000000f, -0.00000001f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000246f, -0.00571118f, -0.00819170f, + -0.00944047f, -0.00268706f, -0.00020859f, -0.00019849f, -0.05129195f, + 0.05049564f, -0.06643780f, -0.05112252f, -0.00022862f, -0.11748445f, + -0.17918164f, -0.08426046f, 0.02927434f, 0.00061702f, 0.04910869f, + -0.02516112f, -0.04344134f, -0.12782104f, 0.03250687f, 0.09097581f, + -0.05700576f, -0.02678677f, 0.00735763f, -0.14703757f, -0.08480815f, + 0.04733705f, -0.15490559f, -0.05055451f, 0.08649019f, -0.13090479f, + 0.02494527f, -0.08107016f, -0.03032719f, -0.09830960f, -0.11578631f, + 0.00118340f, -0.12496199f, 0.43849459f, 0.00426532f, 0.16871482f, + 0.02278350f, -0.12431490f, -0.21520358f, -0.01175919f, -0.05591221f, + -0.01999547f, -0.18834867f, -0.06536173f, -0.18485378f, -0.06393436f, + -0.00998599f, -0.04508729f, -0.01941107f, -0.08733132f, 0.01831348f, + 0.02590197f, -0.02379212f, 0.17306407f, 0.11115353f, 0.07754127f, + 0.10583497f, 0.02780600f, 0.01256271f, -0.06114000f, -0.06382833f, + -0.06044970f, 0.07927158f, 0.06563622f, -0.02517849f, -0.19148822f, + -0.08161461f, -0.17269553f, -0.05371584f, -0.24109590f, -0.16703196f, + 0.40943888f, 0.21085648f, 0.27133206f, 0.03868575f, 0.11472595f, + -0.20853308f, -0.06166483f, -0.13006291f, -0.09668305f, -0.08905565f, + -0.03354358f, -0.07717806f, 0.15558749f, -0.12871394f, -0.00300550f, + -0.17490865f, -0.02134862f, 0.00751820f, -0.07531325f, 0.00005170f, + 0.02564193f, 0.00776435f, -0.10464200f, -0.02727920f, 0.00397103f, + -0.07508878f, 0.04309788f, 0.04201049f, 0.06573655f, 0.05276477f, + -0.03056726f, -0.19618092f, 0.11061163f, -0.01337638f, -0.14700785f, + 0.09666774f, -0.15703453f, 0.18043630f, 0.34275910f, -0.11047231f, + -0.11237967f, 0.00807761f, 0.15003796f, 0.26300547f, 0.13725926f, + 0.22667091f, 0.24440172f, 0.05912848f, 0.18187417f, 0.18115996f, + 0.02699777f, 0.04943056f, 0.14265287f, 0.10680685f, -0.06614962f, + -0.15349184f, 0.10256760f, 0.07557403f, -0.11192710f, 0.02770357f, + -0.08708220f, -0.10124778f, -0.06095028f, -0.08966824f, 0.18266740f, + -0.00394484f, -0.08583978f, 0.16027829f, 0.11172356f, 0.28551510f, + 0.16763437f, 0.14867248f, 0.16911866f, 0.27815196f, 0.09795958f, + -0.16395724f, -0.36090821f, 0.18542926f, 0.08160520f, -0.02356548f, + 0.14326122f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000001f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.10673852f, + 0.18682376f, 0.03300719f, -0.06021078f, -0.01527381f, 0.07832859f, + -0.09059705f, 0.15343562f, -0.03281020f, 0.06775023f, -0.11038059f, + 0.07351340f, 0.02649735f, -0.03309488f, -0.13484083f, -0.10095658f, + 0.04702143f, -0.13580838f, -0.11728683f, 0.01476161f, -0.00271709f, + 0.00000579f, 0.08527123f, 0.11480625f, -0.14855811f, -0.06709148f, + -0.11202335f, 0.05400131f, 0.00803528f, -0.00920036f, 0.04720216f, + -0.28370532f, 0.06524796f, 0.42061853f, 0.02762927f, -0.30005071f, + -0.02734839f, 0.01780129f, -0.12494428f, 0.18009199f, 0.01755278f, + 0.00585308f, 0.01993434f, -0.01852242f, -0.02292800f, 0.09121730f, + -0.11493537f, 0.02196406f, -0.03274218f, 0.02893777f, -0.04924208f, + -0.10052989f, -0.14768490f, -0.05242852f, -0.18588874f, -0.13060540f, + -0.05829335f, -0.02534351f, -0.12628666f, -0.02994782f, -0.12445638f, + 0.08047384f, -0.20982870f, -0.04948349f, -0.03459521f, 0.14036299f, + 0.05575280f, 0.16543290f, 0.31052688f, -0.05875495f, 0.11767884f, + 0.38230175f, -0.12391800f, -0.09228320f, 0.04735765f, 0.14256039f, + 0.12860951f, 0.08987266f, 0.16739240f, 0.12250354f, 0.12983419f, + 0.16036396f, 0.16935194f, 0.13024373f, 0.10088983f, 0.15394892f, + 0.18700814f, 0.16780406f, 0.13580175f, 0.15749539f, 0.18054409f, + 0.09277005f, 0.11379217f, 0.17429134f, 0.16596828f, 0.15424210f, + 0.14433968f, 0.14992878f, 0.15461412f, 0.15373328f, 0.11283388f, + 0.13173397f, 0.17752831f, 0.13167667f, 0.13822398f, 0.16242127f, + 0.10804681f, 0.16370587f, 0.04638599f, -0.06856112f, 0.20109621f, + -0.95754158f, 0.12793928f, 0.13654386f, -0.19781291f, -0.14501165f, + -0.23389073f, -0.10935427f, -0.14534046f, -0.14764132f, -0.07710063f, + 0.01900304f, 0.12816867f, -0.00241223f, 0.06218265f, 0.18708964f, + 0.05492749f, 0.11639409f, 0.12107268f, 0.12177568f, 0.08877350f, + 0.09302191f, 0.02720490f, 0.18305901f, 0.07852016f, -0.03542018f, + -0.01451516f, -0.04495448f, 0.08833496f, -0.07517526f, -0.02381571f, + 0.01246032f, -0.05370641f, -0.28297910f, -0.08880650f, -0.14126694f, + 0.20996206f, 0.42848572f, 0.04461632f, 0.13911045f, 0.24305263f, + 0.12430464f, -0.05362391f, -0.17504990f, -0.23615837f, -0.20018512f, + 0.02647867f, -0.07070168f, -0.10450997f, 0.06315096f, -0.05786383f, + 0.09707588f, 0.00937579f, 0.01600772f, 0.13813861f, 0.10988098f, + 0.15839514f, 0.10527752f, 0.21932548f, 0.13222167f, 0.10600661f, + 0.13971135f, 0.13792260f, 0.02180737f, -0.12730773f, 0.03837885f, + 0.02091606f, 0.00838150f, -0.07081049f, -0.14128812f, -0.17776504f, + -0.14271109f, -0.11197764f, -0.09264592f, 0.08021031f, 0.44817239f, + -0.07635000f, -0.21235436f, 0.22673364f, -0.08356863f, 0.22855926f, + -0.10896651f, -0.03679253f, 0.01926024f, 0.00691578f, 0.01333105f, + 0.03418031f, -0.02962900f, 0.18086612f, 0.05777477f, 0.27559158f, + 0.14633691f, 0.15631330f, 0.23118791f, 0.15358172f, 0.20241097f, + 0.24472812f, 0.14192861f, 0.14797175f, 0.24747527f, 0.15758565f, + 0.17739713f, 0.11308103f, 0.02834121f, 0.04620857f, 0.16598971f, + 0.14119960f, 0.04481340f, 0.00040646f, 0.00735336f, -0.20461051f, + 0.30350673f, 0.05469428f, -0.30717430f, 0.00783577f, 0.21597601f, + -0.04909993f, 0.13130425f, -0.09275159f, -0.02656643f, -0.00168626f, + 0.12709340f, 0.23389852f, 0.01738197f, 0.11370310f, 0.20749298f, + 0.01982084f, 0.26316223f, 0.07056747f, 0.24337159f, 0.19542864f, + 0.22174494f, 0.30316299f, 0.25253069f, 0.28924549f, 0.19530445f, + 0.27351484f, 0.30702707f, 0.34306747f, 0.17474447f, 0.11663456f, + 0.18580806f, -0.07064921f, 0.15798545f, -0.05801126f, 0.05543114f, + 0.11061210f, 0.08547506f, 0.08460047f, -0.06870859f, 0.19950154f, + 0.12518132f, -0.13443685f, -0.26465130f, 0.31506923f, 0.30350655f, + 0.10031003f, 0.04233919f, 0.14901888f, 0.16697159f, 0.03095357f, + 0.13580382f, 0.09675661f, 0.00920135f, 0.20825973f, 0.07203001f, + 0.09233306f, 0.02712899f, -0.01949068f, 0.19537070f, -0.00312283f, + 0.09777580f, -0.03588558f, 0.25643224f, 0.06582641f, 0.14897880f, + 0.13457243f, 0.24243052f, 0.01518770f, 0.00179231f, 0.26642534f, + 0.19576713f, 0.20405281f, 0.11829410f, -0.00353346f, -0.00675613f, + 0.04342336f, 0.24518438f, -0.21558817f, -0.30284500f, 0.07062645f, + 0.25953582f, -0.06087855f, 0.11729530f, -0.08731963f, 0.20314921f, + 0.12626399f, 0.11629073f, 0.02860251f, -0.01297382f, -0.01945414f, + 0.03201262f, -0.05800187f, 0.02367862f, -0.08358353f, -0.01617831f, + -0.03632334f, -0.02742446f, -0.06244093f, -0.05982799f, -0.09510241f, + -0.08040810f, -0.09544140f, -0.01937192f, -0.05004028f, -0.11048383f, + 0.00654051f, 0.01211000f, -0.10352891f, -0.01125972f, -0.02316538f, + 0.10517299f, 0.03915285f, 0.09388269f, 0.31069335f, -0.19537409f, + -0.00416508f, 0.33762154f, -0.03303408f, -0.10961146f, 0.08399239f, + 0.15951568f, -0.17313361f, -0.03243482f, 0.04723888f, -0.14187850f, + 0.01702190f, -0.07131599f, -0.04587137f, 0.00703907f, -0.06417052f, + -0.07591844f, -0.07461163f, -0.01953474f, 0.02109998f, -0.02492792f, + -0.03499698f, -0.00949905f, -0.06383500f, -0.12241382f, -0.00907484f, + 0.07529720f, -0.08130889f, -0.08972074f, 0.00477833f, -0.10534134f, + 0.01097214f, -0.09161153f, -0.02415257f, -0.07195584f, -0.03270077f, + -0.04980877f, 0.00986041f, -0.20479687f, -0.03132169f, 0.34791777f, + 0.08496218f, -0.31170997f, -0.03930330f, 0.15204197f, -0.25024676f, + 0.10340197f, -0.18157040f, 0.01882548f, -0.06748636f, -0.05995306f, + -0.08618576f, -0.05304153f, 0.00740371f, -0.20245068f, -0.01426097f, + -0.17039752f, 0.07763254f, -0.05379226f, -0.01731674f, -0.08831576f, + -0.03467939f, -0.15503591f, -0.05111784f, -0.10921140f, 0.02698872f, + -0.00331207f, -0.11688910f, -0.16007802f, 0.03806056f, 0.01063673f, + -0.01410268f, -0.12724543f, -0.10199255f, -0.05047677f, 0.06163439f, + -0.08992010f, 0.10677239f, 0.34728578f, -0.04373577f, 0.01353810f, + 0.06129890f, 0.04908909f, +}; + +/* net.0.bias shape=[64] */ +static const float inter_b0[64] = { + 0.10696454f, -0.19485524f, -0.18875349f, 0.17617333f, -0.08208149f, + 0.08306304f, 0.12633006f, 0.03335212f, 0.14185722f, 0.32032439f, + 0.17534837f, 0.11001511f, 0.07136257f, 0.03188873f, 0.27411452f, + 0.14649935f, 0.12836330f, -0.18776993f, -0.00224360f, 0.05416895f, + 0.37767544f, 0.21963269f, -0.00117771f, 0.22271369f, -0.05414512f, + 0.23708276f, 0.09645373f, -0.13087445f, 0.06213810f, 0.02132131f, + 0.10942396f, -0.00000000f, 0.19161952f, -0.04997573f, 0.28545797f, + -0.08215708f, 0.24124502f, 0.15971558f, 0.03508849f, -0.05624916f, + 0.14386810f, -0.01259338f, 0.02412026f, 0.05793973f, 0.01120044f, + -0.10035720f, -0.15053380f, -0.00715035f, -0.10277424f, 0.06173391f, + -0.01519093f, 0.28453922f, -0.00000000f, -0.14427659f, -0.00123617f, + 0.19684140f, 0.06433632f, -0.01961093f, 0.17529523f, 0.20673662f, + 0.30528334f, -0.04213767f, -0.08650070f, -0.15123522f, +}; + +/* net.2.weight shape=[32, 64] */ +static const float inter_w1[2048] = { + -0.51471031f, -0.28107786f, 0.03033031f, 0.19574346f, -0.15039884f, + 0.21997283f, 0.07736995f, -0.21621364f, 0.11273341f, -0.05299252f, + -0.00854410f, 0.52513498f, -0.26278040f, -0.00928858f, 0.10346716f, + 0.03902372f, 0.26568228f, -0.07245041f, -0.00000000f, 0.35835046f, + 0.20018634f, 0.17692189f, 0.13107935f, 0.17225485f, -0.34265175f, + 0.22823842f, -0.09698347f, -0.21060982f, 0.06130907f, -0.09919237f, + -0.33672488f, -0.00000000f, 0.13150783f, -0.05093547f, 0.34350756f, + -0.30133539f, -0.17998831f, 0.46249193f, 0.03171778f, -0.00000000f, + 0.44996348f, -0.00504249f, 0.05834723f, 0.31568527f, -0.46771333f, + -0.18237220f, -0.28768146f, -0.00065937f, -0.07413326f, 0.03898711f, + -0.03923696f, -0.13235290f, -0.00000000f, -0.26907232f, -0.35832992f, + -0.04814691f, 0.09895393f, 0.33489609f, 0.35035160f, 0.16852893f, + 0.11760646f, -0.41441956f, -0.20190629f, -0.33833206f, -0.00000000f, + -0.03180999f, 0.00272114f, 0.00000000f, -0.04744544f, -0.00000000f, + 0.03574345f, -0.07409034f, -0.00000000f, -0.00254259f, 0.00210658f, + 0.00000000f, -0.04445822f, -0.05449592f, 0.00000000f, 0.07730745f, + 0.00000000f, -0.03077267f, 0.00000000f, -0.01260613f, -0.10225780f, + -0.00009630f, 0.05900533f, 0.08941129f, 0.01688794f, 0.00000000f, + 0.00000237f, -0.02015102f, 0.00000000f, -0.01779311f, 0.02329759f, + -0.00000000f, -0.02724187f, -0.00174979f, -0.02903162f, 0.00000000f, + 0.01074319f, 0.00000000f, 0.00000000f, 0.00031887f, 0.00000000f, + 0.00000000f, 0.00295978f, 0.01691362f, -0.04481624f, 0.01729442f, + 0.00001990f, -0.00000000f, -0.00056697f, 0.03109981f, 0.00682092f, + -0.07821845f, 0.00000000f, -0.01066975f, 0.08005419f, -0.00000000f, + 0.00453344f, -0.00327813f, -0.00030998f, 0.02407569f, -0.01553431f, + 0.00000000f, 0.01422280f, 0.00469736f, -0.26587370f, -0.07511124f, + 0.01134299f, 0.04800299f, -0.00694231f, 0.07887245f, 0.05809252f, + -0.06257648f, 0.02912032f, 0.01665534f, -0.07161583f, 0.23101017f, + -0.06758242f, 0.02287623f, 0.05892217f, 0.04271923f, 0.06913584f, + -0.03082887f, -0.00000000f, 0.09948881f, 0.05398853f, 0.07148694f, + 0.14831039f, 0.05256430f, -0.03892819f, 0.07854362f, -0.01577166f, + -0.01590042f, -0.02370618f, 0.02992408f, -0.21621734f, -0.00000000f, + 0.06881648f, 0.08323099f, 0.14812616f, -0.06009800f, -0.08472627f, + 0.21840733f, 0.04259360f, 0.00000000f, 0.16329274f, -0.00005314f, + 0.06972259f, 0.16904992f, -0.15502083f, -0.03698161f, -0.14010476f, + -0.00000000f, 0.11904281f, 0.02699454f, 0.07666283f, -0.07115297f, + -0.00000000f, -0.03217534f, -0.03585267f, -0.13927028f, 0.07160187f, + 0.21390675f, 0.10299554f, 0.08929415f, 0.02333382f, -0.09481803f, + -0.06442649f, 0.04549760f, 0.02563592f, 0.15943678f, -0.23508209f, + 0.27849889f, -0.02017941f, 0.24945024f, 0.18617412f, -0.01858045f, + 0.33076543f, 0.20840168f, 0.17879499f, 0.33847919f, -0.14082700f, + 0.10402467f, 0.21756116f, 0.06228839f, 0.44166160f, -0.10357686f, + -0.00000000f, 0.24836452f, 0.27617890f, 0.22870696f, -0.08994126f, + 0.28273621f, -0.29204071f, 0.24422503f, -0.15096204f, -0.04887102f, + 0.33338284f, -0.29927969f, 0.14239904f, 0.00000000f, 0.22860280f, + -0.19777791f, 0.19468883f, -0.18984035f, 0.22995289f, 0.34634408f, + -0.02738189f, 0.00000041f, 0.26198924f, -0.00740902f, -0.23697022f, + 0.25731787f, -0.12386815f, 0.14050405f, -0.26127741f, -0.00211419f, + -0.28520697f, 0.08930925f, -0.26300177f, 0.17719556f, 0.00000000f, + -0.34569529f, -0.27847636f, -0.35428950f, 0.17362595f, -0.29312757f, + 0.29407486f, -0.08227637f, 0.13294594f, -0.28004983f, -0.34479791f, + -0.34931776f, 0.09928341f, 0.00795252f, 0.20976326f, 0.02036027f, + 0.18334278f, -0.13499001f, -0.11158566f, 0.10802098f, -0.01343746f, + 0.03220111f, -0.28754818f, -0.05485102f, 0.16571668f, 0.04588330f, + 0.06695363f, 0.17756781f, -0.12488658f, 0.22902411f, 0.00000000f, + -0.26293039f, -0.15535088f, 0.22899243f, 0.05946014f, -0.04079446f, + 0.24251588f, 0.04015941f, 0.32033512f, -0.04666385f, -0.18906786f, + 0.21948034f, -0.07275748f, -0.00000000f, -0.01061970f, 0.24081562f, + -0.09524518f, 0.12610373f, -0.05210080f, -0.19922847f, 0.18458995f, + -0.00024118f, -0.11830906f, 0.00360768f, 0.22239731f, -0.20406444f, + 0.26822793f, -0.00614246f, 0.30330151f, 0.00019658f, -0.11512064f, + 0.05046167f, 0.06979544f, -0.25857952f, 0.00000000f, 0.18970959f, + 0.20144944f, 1.07969451f, 0.18156983f, 0.11283243f, -0.07627654f, + 0.23832256f, -0.10732581f, 0.16209747f, 0.27950484f, 0.03145121f, + 0.30310208f, -0.33175918f, -0.25638825f, 0.37255892f, -0.19960202f, + -0.02655951f, -0.12009551f, -0.05860945f, 0.46022314f, 0.29414469f, + 0.37314826f, 0.35575163f, -0.03159150f, -0.11547599f, 0.33921596f, + -0.07740153f, 0.56181115f, -0.35807568f, -0.00000001f, 0.19312374f, + 0.28820828f, 0.20001997f, -0.23834535f, 0.21038976f, -0.35138491f, + 0.38315082f, 0.17111057f, -0.36277595f, 0.17262666f, -0.07176299f, + 0.18644066f, 0.00000000f, -0.05740422f, -0.19128178f, 0.49809185f, + -0.35587963f, 0.36737502f, 0.30093876f, 0.06604246f, -0.00000000f, + 0.38298592f, -0.00466454f, 0.04735475f, -0.02665311f, 0.00737889f, + -0.32615840f, -0.27876312f, -0.00187271f, -0.37636909f, -0.13933697f, + -0.26441050f, 0.40898019f, 0.00000000f, -0.29662868f, -0.21051453f, + 0.26246020f, -0.12254642f, -0.27048925f, 0.36495081f, 0.16657084f, + 0.41679001f, -0.21171302f, -0.31952548f, -0.44202614f, -0.29187065f, + 0.13380896f, 0.27977023f, -0.23570859f, 0.09953689f, -0.03790238f, + 0.13928230f, 0.14864771f, -0.29821154f, -0.05557584f, -0.31493729f, + -0.17906554f, 0.04537603f, 0.23996405f, -0.25598761f, 0.16327450f, + -0.37572291f, 0.31393299f, -0.00000000f, -0.06253812f, -0.05390114f, + 0.03197220f, 0.18660653f, -0.15673584f, 0.26458874f, -0.21141589f, + 0.05417021f, 0.24908194f, -0.24060211f, 0.14013670f, -0.24965839f, + 0.00000000f, 0.08659289f, 0.21421376f, -0.33576572f, 0.19276705f, + -0.33369869f, -0.18131897f, 0.20909938f, -0.00000001f, -0.08438837f, + 0.00434373f, 0.24193378f, 0.05324338f, 0.10657459f, 0.19835657f, + 0.31268385f, 0.00233874f, 0.40158466f, 0.21479432f, 0.19722070f, + -0.28824177f, 0.00000000f, 0.24787068f, 0.11204328f, -0.02968783f, + 0.24695735f, 0.36161020f, -0.24970596f, 0.27084324f, -0.22766817f, + 0.19648330f, 0.24009113f, 0.35590518f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, 0.00000069f, -0.00000913f, -0.00001648f, + 0.00000479f, -0.00001505f, 0.00000708f, -0.00002680f, -0.00002533f, + 0.00000010f, 0.00001357f, -0.00000659f, 0.00000043f, 0.00002037f, + -0.00002724f, -0.00000828f, 0.00004369f, -0.00000049f, -0.00000653f, + -0.00000000f, -0.00001019f, -0.00001837f, -0.00002751f, 0.00000245f, + -0.00001869f, 0.00000014f, -0.00000399f, -0.00000036f, -0.00001204f, + 0.00000332f, -0.00001363f, -0.00000945f, -0.00000000f, -0.00003373f, + 0.00000883f, 0.00000408f, 0.00000406f, -0.00001225f, -0.00000594f, + -0.00001019f, -0.00000000f, -0.00000431f, 0.00000000f, -0.00000479f, + 0.00001073f, 0.00001229f, -0.00001493f, -0.00000001f, -0.00000000f, + 0.00000307f, 0.00002988f, -0.00000075f, -0.00000724f, -0.00000000f, + -0.00000649f, -0.00000860f, 0.00000631f, -0.00001391f, -0.00000269f, + 0.00001610f, -0.00001657f, -0.00000807f, -0.00000658f, -0.00000208f, + -0.00000427f, 0.16242789f, -0.25380704f, -0.23445605f, 0.37552261f, + -0.15440373f, 0.08889861f, -0.00228744f, -0.05409406f, 0.45046222f, + 0.28184855f, 0.23202199f, 0.38585323f, -0.06414817f, -0.05281628f, + 0.31210577f, -0.01726651f, 0.51764679f, -0.35611850f, -0.00000000f, + 0.17227502f, 0.21434386f, 0.17319933f, -0.16816089f, 0.15645519f, + -0.32868293f, 0.38879988f, 0.09865694f, -0.31329966f, 0.14898680f, + -0.10300562f, 0.09530019f, 0.00000000f, 0.02229543f, -0.17707999f, + 0.33103716f, -0.33691493f, 0.26208323f, 0.24663141f, 0.03203253f, + 0.00000000f, 0.30150601f, -0.00744746f, 0.00493506f, 0.08162819f, + -0.13977496f, -0.25259221f, -0.23691808f, -0.00178741f, -0.34989282f, + -0.07782181f, -0.21997757f, 0.29800707f, 0.00000000f, -0.23776269f, + -0.22013956f, 0.23649189f, -0.07824039f, -0.22219603f, 0.25805718f, + 0.10399953f, 0.24702068f, -0.24652122f, -0.23872234f, -0.40166035f, + 0.34181753f, 0.44167981f, 0.18261017f, -0.17807932f, 0.18684794f, + 0.06803646f, 0.25640881f, 0.29520956f, -0.14191139f, -0.17761888f, + 0.15907662f, -0.32183054f, 0.29130912f, 0.32734528f, -0.17133278f, + 0.21221399f, -0.25141236f, 0.08593749f, 0.00001478f, -0.10771751f, + -0.25963831f, -0.18473049f, 0.14811231f, 0.06614643f, 0.18281600f, + -0.20101163f, 0.00159852f, 0.34615305f, 0.16323498f, 0.07423146f, + 0.27252197f, 0.00000000f, 0.22487165f, 0.21658427f, -0.38439241f, + 0.20000611f, 0.13672861f, -0.21509998f, -0.04237382f, -0.00000000f, + -0.21514215f, 0.00313549f, -0.00579789f, 0.03419375f, 0.30483696f, + 0.40618658f, 0.15665577f, 0.00114240f, 0.36131898f, 0.28584573f, + 0.08150704f, 0.02601380f, -0.00000000f, 0.27385300f, 0.24811341f, + -0.29683942f, 0.13517244f, -0.08090936f, -0.33621112f, -0.18212013f, + 0.00055515f, 0.30869979f, 0.20092981f, 0.34893614f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + 0.00000460f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000129f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.22182439f, 0.01662528f, + 0.30749565f, -0.20992632f, 0.26935431f, -0.21586312f, 0.04289626f, + 0.13077249f, -0.29636416f, 0.10633102f, -0.26326808f, -0.14311494f, + 0.28486717f, 0.22477876f, -0.02953603f, 0.22823834f, -0.36112437f, + 0.27558395f, 0.00000000f, -0.09526469f, -0.15710583f, 0.14374708f, + 0.08130934f, -0.04690154f, 0.16155003f, -0.09413130f, 0.16668814f, + 0.23680349f, -0.09358872f, 0.23123881f, -0.25285396f, -0.00000000f, + 0.10392562f, 0.18839893f, -0.27260941f, 0.17740457f, -0.23869441f, + -0.11245084f, 0.25264883f, 0.00000000f, -0.07453183f, 0.00381422f, + 0.26188299f, -0.21743970f, 0.11584442f, -0.09340724f, 0.33987871f, + 0.00133591f, 0.20235875f, 0.05946474f, 0.25949928f, -0.36566582f, + 0.00000000f, 0.11578660f, 0.12411010f, 0.44106829f, 0.28259203f, + 0.20925066f, -0.12852725f, 0.19155914f, -0.26212317f, 0.20345524f, + 0.33655348f, 0.22531758f, 0.41094667f, 0.03148923f, -0.25105113f, + 0.29881057f, -0.02111085f, 0.20635037f, -0.01446334f, 0.08918712f, + 0.34452143f, 0.36463478f, 0.31616911f, 0.22673294f, 0.00399256f, + 0.04633888f, 0.26530915f, 0.01428457f, 0.46159345f, -0.20502807f, + 0.00000000f, 0.21187651f, 0.28707540f, 0.20701501f, -0.14751039f, + 0.25927791f, -0.19336165f, 0.32220450f, 0.11241592f, -0.17875123f, + 0.26130214f, -0.14097983f, 0.41164374f, -0.00000000f, 0.07756766f, + -0.20955448f, 0.28828526f, -0.16359767f, 0.30755895f, 0.20600435f, + -0.05875289f, 0.00000000f, 0.17917970f, -0.00315533f, 0.00391495f, + 0.20381202f, 0.10633303f, -0.03868535f, -0.24230954f, -0.00215782f, + -0.20535688f, -0.03389766f, -0.18665299f, 0.41476178f, 0.00000000f, + -0.19940315f, -0.14738065f, 0.09204819f, -0.07519688f, -0.25111404f, + 0.29370618f, 0.07477685f, 0.28852254f, -0.17416900f, -0.24255586f, + -0.28385231f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000429f, 0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000036f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000001f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.14688323f, + -0.17158580f, 0.03263756f, 0.20875786f, 0.01279663f, -0.22290654f, + -0.03187257f, 0.13613650f, 0.21281894f, 0.11662702f, -0.08591658f, + 0.25781789f, 0.15149266f, -0.10962530f, 0.27364418f, 0.06208687f, + 0.27101311f, 0.05707735f, -0.00000000f, -0.22834080f, 0.23236689f, + 0.21117993f, -0.15765022f, -0.04507737f, -0.01060626f, 0.18117845f, + 0.30463052f, -0.08862127f, -0.19301386f, 0.13372248f, -0.05714092f, + 0.00000000f, -0.05465642f, 0.10662773f, 0.09497783f, -0.06922489f, + 0.11084709f, -0.07847541f, 0.29522997f, -0.00001970f, 0.07548355f, + 0.00209502f, 0.30181953f, -0.07989417f, 0.20681402f, -0.23627630f, + 0.16781312f, 0.00021523f, -0.14075187f, 0.06347315f, 0.20285645f, + 0.07856326f, -0.00000000f, 0.08440532f, 0.18201336f, 0.76136708f, + 0.00641224f, -0.00957110f, 0.01966049f, 0.25778157f, -0.12200666f, + 0.08864727f, 0.07533805f, -0.11679388f, -0.03636863f, 0.02109042f, + 0.05724176f, 0.05089578f, 0.03632282f, -0.00320249f, 0.02570659f, + 0.00606056f, 0.06040477f, 0.03207665f, -0.02473037f, 0.08232158f, + 0.01858678f, 0.01361574f, 0.02200956f, 0.01856104f, 0.11739300f, + -0.03950883f, -0.00000000f, 0.00663388f, 0.00227786f, 0.02168707f, + 0.06830653f, -0.00681054f, -0.01690411f, 0.08465263f, -0.00208218f, + 0.01372742f, 0.00610158f, 0.03359194f, -0.04478121f, 0.00000000f, + 0.02490438f, 0.05244584f, -0.01100167f, -0.00142507f, -0.01889183f, + 0.02370966f, 0.03392369f, 0.00000000f, 0.01003411f, -0.00000000f, + 0.03433053f, 0.00742196f, -0.00283545f, 0.02248946f, -0.16511315f, + -0.00000000f, 0.02206288f, 0.00779577f, 0.04609028f, -0.00823601f, + -0.00000000f, -0.00423698f, 0.03082798f, -0.36948729f, 0.01430983f, + 0.07738260f, -0.03292768f, 0.01941584f, -0.02906864f, 0.02851714f, + -0.07727195f, 0.04965456f, 0.26213884f, 0.04094471f, 0.09361665f, + 0.02819332f, 0.15544863f, -0.06727978f, -0.09684460f, 0.25444639f, + 0.00481456f, 0.19186205f, -0.10103521f, -0.21924153f, 0.17480160f, + 0.06263886f, 0.14231163f, 0.09925339f, -0.12068534f, 0.13593824f, + 0.00000000f, -0.18458079f, -0.01359175f, 0.25071952f, 0.11338500f, + -0.11400433f, 0.25150388f, 0.01911812f, 0.33605394f, 0.19706008f, + -0.14360479f, 0.24222317f, -0.08521114f, -0.00000000f, -0.04078176f, + 0.08386660f, -0.25534812f, 0.14520249f, -0.04408607f, -0.25078771f, + 0.26303974f, 0.00004478f, -0.20536487f, 0.00548632f, 0.11611918f, + -0.22705999f, 0.39925200f, -0.03882574f, 0.28142685f, 0.00039412f, + -0.09334494f, -0.09267160f, 0.28128865f, -0.23382807f, 0.00000000f, + 0.30158177f, 0.11720501f, 0.95654112f, 0.05015039f, 0.21056630f, + -0.18548918f, 0.26404506f, -0.26630634f, 0.25701201f, 0.25210437f, + 0.08826546f, 0.30110812f, -0.28645331f, -0.26695129f, 0.37817404f, + -0.17792720f, 0.04232131f, -0.06462327f, -0.06748664f, 0.51979834f, + 0.29001868f, 0.29752505f, 0.40573293f, -0.06053566f, -0.07258353f, + 0.32620212f, -0.03723476f, 0.68355566f, -0.30277431f, -0.00000000f, + 0.14278576f, 0.19608839f, 0.15172920f, -0.18223543f, 0.14576389f, + -0.30709684f, 0.40654430f, 0.11798970f, -0.32318705f, 0.12239613f, + -0.06998217f, 0.11095938f, -0.00000000f, -0.01253797f, -0.15691322f, + 0.45535311f, -0.36237124f, 0.31253695f, 0.26218286f, 0.04163014f, + -0.00000000f, 0.37466455f, -0.01117654f, 0.00885270f, 0.01392211f, + -0.07176228f, -0.27998096f, -0.27607325f, -0.00179374f, -0.34373593f, + -0.08986136f, -0.19537352f, 0.38406959f, -0.00000000f, -0.27872956f, + -0.19383678f, 0.23360330f, -0.06577222f, -0.20717135f, 0.27814057f, + 0.11886200f, 0.33890364f, -0.21064423f, -0.30424106f, -0.45421645f, + -0.12780775f, 0.17367341f, 0.29330608f, -0.25372693f, 0.22326703f, + -0.02836812f, 0.17696217f, 0.12232648f, -0.27895632f, -0.13178392f, + -0.35025135f, -0.28634465f, 0.12923060f, 0.04694777f, -0.23988929f, + 0.12541664f, -0.42662209f, 0.07438620f, 0.00000051f, -0.20083418f, + -0.22370015f, -0.19555929f, 0.18349320f, -0.11004283f, 0.24577086f, + -0.31212190f, -0.08499921f, 0.27014741f, -0.03504326f, 0.27062899f, + -0.13533086f, 0.00000000f, 0.09265215f, 0.19510289f, -0.38215250f, + 0.19670838f, -0.38515410f, -0.23797861f, 0.01731628f, 0.00110134f, + -0.19077761f, 0.00328384f, 0.11194148f, -0.07346217f, 0.21814565f, + 0.28707716f, 0.30791089f, 0.00296038f, 0.34849367f, 0.19595070f, + 0.26674762f, -0.18177713f, 0.00000000f, 0.26705706f, 0.07008807f, + -0.06727605f, 0.11588232f, 0.15023120f, -0.11221628f, -0.01288637f, + -0.09906943f, 0.19071080f, 0.32785863f, 0.29751152f, 0.22318915f, + 0.29156491f, -0.14278920f, 0.05096028f, -0.03955293f, 0.28926590f, + 0.16119723f, 0.21544483f, 0.15422659f, -0.03601728f, 0.30037460f, + -0.03565720f, -0.11468046f, 0.25449759f, -0.05892861f, 0.27207914f, + 0.22086462f, -0.05833345f, 0.00000000f, 0.21490516f, 0.23210947f, + -0.12927191f, -0.00366974f, 0.14184046f, -0.16117503f, 0.00060980f, + -0.19289295f, 0.07192197f, 0.29331386f, -0.26025966f, 0.27999100f, + 0.00000000f, 0.08766670f, -0.26755533f, 0.10129572f, -0.11691555f, + 0.34782699f, 0.21964003f, -0.08478365f, -0.00011422f, 0.13575527f, + -0.00352167f, -0.23638991f, 0.04541082f, -0.15845013f, 0.14436671f, + -0.17595828f, -0.00026751f, -0.01215071f, 0.14466393f, -0.18502487f, + 0.38988581f, 0.00000000f, -0.13960631f, -0.22097461f, -1.04956901f, + 0.07269362f, -0.23298034f, 0.12944800f, -0.20835537f, 0.12362121f, + -0.06402770f, -0.35053071f, -0.15848188f, -0.22810763f, -0.00808318f, + 0.32074717f, -0.14438199f, 0.21823891f, -0.09991509f, 0.07138175f, + 0.16716982f, -0.29508105f, -0.07717974f, -0.10553345f, -0.12381995f, + 0.18209814f, 0.10623477f, 0.05524470f, 0.05035815f, -0.35856032f, + 0.26371780f, -0.00000000f, -0.23439184f, -0.17502226f, 0.19234499f, + 0.08044906f, -0.11250199f, 0.24220228f, -0.07010520f, 0.16810396f, + 0.28324538f, -0.11828142f, 0.29023498f, -0.26103619f, 0.00000000f, + 0.07041029f, 0.26098990f, -0.24127340f, 0.17367008f, -0.20885387f, + -0.12388994f, 0.07510452f, -0.00000212f, -0.06552021f, 0.00492156f, + 0.25434589f, -0.07157037f, 0.21674976f, 0.06120962f, 0.19771022f, + 0.00187454f, 0.26997331f, 0.15701891f, 0.18886228f, -0.28198352f, + -0.00000000f, 0.30968159f, 0.05799258f, 0.47787178f, 0.26191476f, + 0.11424919f, -0.11183029f, 0.26685905f, -0.12953870f, 0.18969874f, + 0.14409646f, 0.30361715f, 0.01618651f, 0.19623840f, 0.30768165f, + -0.24097613f, 0.24225697f, -0.19304925f, 0.05403400f, 0.30533785f, + -0.27416393f, -0.08326416f, -0.28399074f, -0.32878256f, 0.32050294f, + 0.27904624f, -0.18569192f, 0.11751551f, -0.39709744f, 0.25032094f, + 0.00000001f, -0.23289400f, -0.16247654f, -0.19047843f, 0.10979794f, + -0.25100142f, 0.27613002f, -0.24501303f, 0.02329538f, 0.38979819f, + -0.08993167f, 0.22626077f, -0.04154349f, -0.00000000f, -0.03279890f, + 0.21389894f, -0.31362122f, 0.19740152f, -0.22027971f, -0.27871472f, + 0.21956792f, 0.00000000f, -0.17088015f, 0.00332990f, 0.11257359f, + -0.19124129f, 0.12275785f, 0.07038864f, 0.35287035f, 0.00214045f, + 0.28821430f, 0.16606483f, 0.19303183f, -0.17560259f, 0.00000000f, + 0.20323063f, 0.32039833f, 0.02533709f, 0.16908003f, 0.18287276f, + -0.34389347f, 0.16479044f, -0.19418107f, 0.30904791f, 0.16390376f, + 0.35604089f, 0.01124834f, -0.07057499f, 0.19605568f, -0.06088727f, + 0.24492308f, -0.10183512f, -0.09495569f, 0.25229877f, -0.18302707f, + 0.08119683f, -0.09223580f, -0.13670142f, 0.14455725f, 0.09127554f, + 0.13504551f, 0.14190146f, -0.24335146f, 0.22142430f, 0.00000000f, + -0.11898240f, -0.13470811f, 0.15288080f, 0.21895607f, -0.14255974f, + 0.30172089f, -0.03391648f, 0.29415753f, 0.17358716f, -0.16069007f, + 0.20892990f, -0.18265255f, 0.00000000f, 0.10755435f, 0.17890024f, + -0.21209885f, 0.14825077f, -0.14165744f, -0.24426785f, 0.22033609f, + 0.00000000f, -0.12117441f, 0.00470621f, 0.12814479f, -0.26971149f, + 0.22918180f, -0.13617365f, 0.28123274f, 0.00055138f, 0.16200817f, + -0.07521548f, 0.22117643f, -0.18042634f, 0.00000000f, 0.15796509f, + 0.18132730f, 0.97833431f, 0.15954161f, 0.21049164f, -0.20294972f, + 0.16378649f, -0.12715183f, 0.16795695f, 0.25114664f, 0.15915740f, + -0.00000164f, -0.00001129f, -0.00000299f, 0.00000018f, -0.00000386f, + -0.00000691f, -0.00001412f, -0.00001523f, -0.00000262f, -0.00000039f, + -0.00000521f, 0.00000238f, -0.00000583f, 0.00001200f, -0.00000464f, + -0.00001818f, 0.00000107f, -0.00000303f, 0.00000000f, -0.00000007f, + -0.00001053f, 0.00000222f, -0.00001054f, -0.00000105f, -0.00000036f, + 0.00000273f, -0.00000042f, -0.00000831f, -0.00000081f, -0.00000014f, + -0.00000206f, 0.00000000f, -0.00000298f, 0.00000137f, -0.00000166f, + -0.00000386f, -0.00001162f, 0.00000379f, 0.00000286f, -0.00000000f, + -0.00000002f, 0.00000000f, 0.00000335f, -0.00000204f, 0.00000191f, + -0.00000203f, 0.00000021f, 0.00000000f, 0.00000300f, -0.00000441f, + -0.00000630f, 0.00000375f, -0.00000000f, 0.00000235f, -0.00000115f, + -0.00000509f, 0.00000880f, -0.00000694f, -0.00001006f, 0.00000355f, + -0.00000411f, 0.00000041f, -0.00000283f, 0.00000380f, 0.05411759f, + -0.29260090f, -0.16920297f, 0.27178741f, -0.18734348f, -0.17207606f, + -0.09431025f, -0.10895799f, 0.29880479f, 0.24473210f, 0.24113470f, + 0.36026675f, -0.10132855f, -0.00847226f, 0.37319642f, 0.03124937f, + 0.39844945f, -0.05390118f, -0.00000330f, 0.10433602f, 0.39887843f, + 0.35938728f, -0.16004869f, 0.25941390f, -0.12187580f, 0.30971965f, + 0.34674993f, -0.38033631f, 0.05149962f, 0.11811497f, -0.14230864f, + 0.00000000f, -0.02691641f, 0.02302280f, 0.36124754f, -0.21721223f, + 0.21993411f, 0.16515715f, 0.11205674f, -0.00000001f, 0.28012794f, + -0.00251885f, 0.30427951f, -0.00978420f, -0.03207893f, -0.33459491f, + -0.19674578f, -0.00140001f, -0.40128997f, -0.20164301f, -0.00259512f, + 0.24397942f, 0.00000000f, -0.16462500f, -0.06450668f, 0.43174168f, + 0.03782056f, -0.16144584f, 0.40108135f, 0.24580951f, 0.29562077f, + -0.22404113f, -0.07096445f, -0.35981953f, -0.30415717f, 0.25773346f, + 0.30312088f, -0.17017564f, 0.11654478f, 0.29470652f, 0.13972464f, + 0.06018736f, -0.23848428f, -0.31234553f, -0.15223609f, -0.09130130f, + 0.13553940f, 0.14416693f, -0.17008707f, 0.19853412f, -0.33976281f, + 0.13893344f, 0.00000110f, 0.14547533f, 0.00621508f, -0.06362013f, + 0.33079019f, 0.11761642f, 0.02059862f, -0.19690485f, -0.11674142f, + 0.26937816f, 0.03839799f, 0.16723885f, -0.13094369f, 0.00000000f, + 0.23450953f, 0.12749228f, -0.13666406f, 0.16018391f, -0.27325419f, + 0.14769115f, 0.07816593f, -0.00197787f, 0.01401769f, 0.00088233f, + -0.04609348f, 0.28384662f, -0.11938413f, 0.29021484f, 0.15961555f, + 0.00131166f, 0.35826927f, 0.29869857f, 0.29798040f, -0.31013691f, + 0.00000000f, 0.20384406f, 0.17674333f, -0.28440779f, 0.12627199f, + 0.36919054f, -0.17510763f, -0.07427576f, -0.15679120f, 0.20411515f, + 0.25333631f, 0.30447328f, -0.00059660f, -0.00268442f, -0.00280743f, + -0.00155072f, -0.00320202f, -0.00086646f, -0.00985542f, -0.00688235f, + -0.00000012f, -0.00717643f, -0.00335982f, 0.00000001f, -0.00575905f, + -0.00897745f, -0.00519390f, -0.00951503f, -0.00000000f, -0.00056606f, + 0.00000000f, -0.00133935f, -0.01105972f, -0.01192579f, -0.00455180f, + -0.00653823f, -0.00056199f, -0.00333940f, -0.00711583f, -0.00157211f, + -0.00199114f, -0.00414869f, -0.00144548f, -0.00000000f, -0.00977832f, + -0.00334598f, -0.00014258f, -0.00003857f, -0.00376415f, -0.00034341f, + -0.00689638f, -0.00000000f, -0.00016744f, 0.00000000f, -0.00599491f, + -0.00116986f, -0.00277197f, -0.00208269f, -0.00088176f, 0.00000000f, + -0.00074748f, -0.00790341f, -0.00251445f, -0.00219295f, 0.00000000f, + -0.00132237f, -0.00252183f, -0.00367764f, -0.00695897f, -0.00382043f, + -0.00135863f, -0.01005498f, -0.00292177f, -0.00115199f, -0.00062495f, + -0.00003824f, -0.00000004f, -0.00000003f, -0.00000001f, -0.00000002f, + -0.00000006f, 0.00000002f, -0.00000011f, -0.00000007f, -0.00000001f, + 0.00000001f, 0.00000003f, -0.00000000f, 0.00000002f, 0.00000014f, + 0.00000002f, -0.00000003f, 0.00000000f, -0.00000002f, 0.00000000f, + -0.00000003f, -0.00000012f, 0.00000000f, -0.00000003f, -0.00000007f, + 0.00000003f, -0.00000002f, -0.00000002f, 0.00000002f, 0.00000004f, + -0.00000002f, -0.00000004f, 0.00000000f, 0.00000000f, -0.00000003f, + -0.00000002f, -0.00000002f, 0.00000004f, 0.00000002f, -0.00000001f, + 0.00000000f, 0.00000001f, 0.00000000f, -0.00000000f, -0.00000002f, + -0.00000007f, 0.00000002f, -0.00000000f, 0.00000000f, -0.00000003f, + 0.00000003f, -0.00000003f, -0.00000003f, -0.00000000f, -0.00000000f, + -0.00000003f, -0.00000001f, 0.00000005f, 0.00000002f, -0.00000002f, + -0.00000006f, -0.00000004f, 0.00000001f, 0.00000000f, 0.00000001f, + 0.27496576f, -0.28602237f, -0.27016181f, 0.37375262f, -0.18645525f, + 0.05436725f, -0.12469657f, -0.06272303f, 0.49038628f, 0.29028094f, + 0.30759087f, 0.38394350f, -0.00347690f, -0.06048591f, 0.33096206f, + -0.08483899f, 0.61654681f, -0.32671413f, -0.00000000f, 0.16919149f, + 0.17594521f, 0.19298393f, -0.21763586f, 0.15577374f, -0.31792831f, + 0.38643056f, 0.14182928f, -0.33407199f, 0.14884552f, -0.12786135f, + 0.12475128f, -0.00000000f, -0.08115853f, -0.16342154f, 0.44207823f, + -0.37067872f, 0.32428962f, 0.28883743f, 0.03180743f, -0.00000000f, + 0.39486608f, -0.00897031f, 0.03012010f, 0.03905037f, -0.04789886f, + -0.30316681f, -0.27614343f, -0.00286445f, -0.35956189f, -0.03999763f, + -0.20566376f, 0.35402447f, 0.00000000f, -0.28936854f, -0.19565916f, + 0.21892965f, -0.12413848f, -0.27375731f, 0.30730739f, 0.15926580f, + 0.35805202f, -0.20073223f, -0.29625410f, -0.45381811f, -0.08780247f, + 0.16710605f, -0.03483793f, 0.11725906f, 0.04080317f, 0.14531785f, + 0.24610493f, 0.20167771f, 0.11568749f, -0.07828704f, 0.26808468f, + 0.15058184f, -0.02461604f, 0.25495842f, -0.10124450f, 0.17410839f, + 0.18398847f, -0.20386206f, 0.00000000f, 0.31805506f, 0.19684812f, + 0.02350621f, 0.16742104f, 0.21907309f, -0.18041196f, -0.00127495f, + -0.26527634f, 0.18960671f, 0.25231880f, -0.21569020f, 0.16335228f, + -0.00000000f, 0.18065265f, -0.12105779f, 0.25469860f, -0.09539917f, + 0.24125172f, 0.24785061f, -0.20155655f, -0.00037737f, 0.22007124f, + -0.00609000f, -0.17594209f, 0.29905871f, -0.33547795f, 0.14744543f, + -0.32681251f, -0.00073147f, 0.04207432f, 0.15650213f, -0.26342916f, + 0.10557806f, -0.00000000f, -0.23486377f, -0.11183576f, -1.08669198f, + 0.00797380f, -0.02768527f, 0.24409275f, -0.11601246f, 0.28305626f, + -0.17009899f, -0.27411518f, -0.14384203f, +}; + +/* net.2.bias shape=[32] */ +static const float inter_b1[32] = { + 0.09491965f, -0.04876206f, 0.06943213f, 0.19077669f, 0.18077260f, + 0.19907942f, -0.07003409f, -0.00000000f, -0.00004115f, 0.14847223f, + -0.15827583f, -0.00006418f, 0.00807978f, 0.25760302f, -0.00035976f, + -0.00000000f, 0.24101701f, 0.03256707f, 0.13185780f, 0.17010656f, + -0.09428041f, 0.12533760f, -0.03845026f, 0.01724240f, 0.11915039f, + -0.00000553f, 0.22251163f, -0.09568536f, -0.01251376f, -0.00000007f, + 0.26888397f, 0.08980300f, +}; + +/* net.4.weight shape=[4, 32] */ +static const float inter_w2[128] = { + 0.23938580f, -0.00093278f, 0.11526418f, 0.26879677f, -0.38997936f, + 0.36994836f, -0.22353627f, -0.00000000f, -0.00002553f, 0.25281754f, + 0.17862730f, 0.00000000f, -0.35066149f, 0.28127295f, -0.00000006f, + 0.00000000f, -0.33013049f, 0.14348422f, -0.24078624f, 0.35267150f, + -0.11468270f, 0.33496091f, -0.32887384f, -0.24673535f, -0.23227884f, + -0.00056736f, -0.17906734f, 0.17589216f, -0.00503108f, -0.00000001f, + 0.37701553f, 0.41103476f, 0.55053824f, 0.01322618f, 0.17813893f, + 0.07997975f, 0.07894102f, 0.34657940f, -0.06059076f, -0.00000000f, + -0.00001672f, 0.28927827f, -0.49966905f, -0.00000000f, -0.01795359f, + 0.18236126f, 0.00000000f, -0.00000003f, 0.24198236f, 0.00234688f, + 0.15857588f, 0.33402053f, -0.30711016f, -0.45271748f, 0.05987721f, + -0.36769971f, 0.18208656f, -0.00000644f, 0.49143529f, -0.16912945f, + 0.02054304f, -0.00000000f, 0.31923923f, -0.24598250f, -0.49382657f, + 0.04950920f, -0.21643418f, -0.04000461f, 0.13703544f, 0.52838004f, + -0.32224503f, -0.00000000f, 0.00000456f, 0.22972538f, -0.01023516f, + 0.00000000f, -0.13373835f, 0.42425752f, 0.00000000f, 0.00000001f, + 0.26471618f, -0.04881506f, 0.36567309f, 0.34827888f, -0.41210851f, + -0.26056555f, -0.06438295f, -0.16606376f, 0.21750507f, 0.00000913f, + 0.29646632f, -0.51632494f, -0.00158709f, 0.00000000f, 0.42604178f, + -0.38408804f, -0.27654144f, -0.07222518f, -0.06017482f, -0.46482250f, + 0.10056481f, -0.56227040f, 0.41990706f, 0.00000000f, 0.00000524f, + -0.39663976f, 0.30224407f, -0.00000000f, 0.20237584f, -0.35989523f, + -0.00000000f, 0.00000000f, -0.11170792f, -0.06758905f, 0.27704820f, + -0.64904851f, 0.45812875f, -0.17787962f, 0.29403743f, 0.29556370f, + 0.30618042f, 0.00025338f, -0.51653999f, 0.36938742f, -0.00708441f, + -0.00000001f, -0.61908662f, -0.30422840f, +}; + +/* net.4.bias shape=[4] */ +static const float inter_b2[4] = { + 0.02923816f, + 0.16495848f, + 0.21639383f, + -0.25666264f, +}; + +/* Total parameters: 4708 */ +#endif // AV2_ENCODER_PARTITION_MLP_INTER_WEIGHTS_H_ diff --git a/av2/encoder/partition_mlp_kf_weights.h b/av2/encoder/partition_mlp_kf_weights.h new file mode 100644 index 0000000000..fd4b7ac3b3 --- /dev/null +++ b/av2/encoder/partition_mlp_kf_weights.h @@ -0,0 +1,989 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +/* Auto-generated — do not edit. */ +#ifndef AV2_ENCODER_PARTITION_MLP_KF_WEIGHTS_H_ +#define AV2_ENCODER_PARTITION_MLP_KF_WEIGHTS_H_ + +/* net.0.weight shape=[64, 38] */ +static const float kf_w0[2432] = { + 0.00000000f, 0.00000000f, 0.00000001f, 0.00000000f, 0.00000001f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000001f, + 0.00000000f, -0.00000001f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000002f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.16178504f, -0.10159504f, + -0.00460214f, -0.05975557f, 0.02269255f, 0.04224990f, -0.05913756f, + -0.10147546f, -0.06397731f, -0.01898325f, 0.02913875f, -0.09452579f, + -0.04430114f, -0.09262721f, -0.06033240f, -0.02225797f, -0.04056276f, + -0.03234562f, -0.11061008f, 0.00512212f, -0.07338018f, -0.06588969f, + -0.00230973f, -0.19192204f, 0.03780030f, -0.06189324f, 0.06173752f, + -0.04200565f, 0.00347216f, -0.02141707f, -0.05497250f, 0.03887492f, + -0.14419045f, 0.21117033f, 0.22003731f, 0.37462077f, -0.02268153f, + -0.08730467f, 0.19731751f, 0.23030914f, 0.17630637f, 0.14949223f, + 0.15876903f, 0.22253193f, 0.20132479f, 0.21594757f, 0.16471997f, + 0.14313616f, 0.09505855f, 0.19035499f, 0.05076990f, 0.08165625f, + -0.09567095f, -0.14862253f, -0.13805057f, 0.04096879f, -0.04498293f, + -0.01402879f, 0.11391433f, -0.01407055f, 0.03320780f, 0.19580303f, + 0.10371701f, 0.20652689f, 0.13965650f, 0.22428250f, 0.34661880f, + 0.36821508f, 0.27483276f, 0.15790732f, 0.36050004f, 0.34649116f, + 0.13190375f, 0.00510895f, 0.18747775f, 0.31131977f, -0.06735528f, + -0.09426763f, -0.12973613f, -0.12976448f, -0.02420704f, -0.01366331f, + 0.00729752f, 0.00964506f, -0.01904638f, 0.14986867f, -0.05959350f, + 0.14974095f, 0.17986237f, 0.16400465f, 0.23436119f, 0.11328775f, + 0.02296395f, 0.14237565f, 0.22090787f, 0.02314037f, 0.00514251f, + 0.08395680f, -0.01063507f, 0.22410996f, -0.01856018f, 0.01533362f, + -0.05116741f, 0.00298483f, 0.01780129f, -0.08968908f, -0.11228649f, + -0.07006050f, 0.25840360f, 0.35013157f, 0.01971543f, -0.20210965f, + -0.09024960f, 0.07650816f, 0.09549965f, 0.38678473f, 0.23147142f, + 0.21788269f, 0.09258704f, 0.19810294f, 0.11622409f, 0.20107040f, + 0.03566108f, 0.16374092f, 0.13088746f, 0.10874113f, 0.17149694f, + -0.03510826f, 0.07987267f, 0.13659576f, 0.05878301f, 0.07393772f, + 0.02682060f, 0.09354136f, 0.07859456f, 0.16554439f, 0.06386039f, + 0.10350417f, 0.15014552f, 0.05110991f, 0.23488754f, 0.21776032f, + 0.08339494f, 0.26701900f, 0.32501867f, 0.08614620f, 0.31090060f, + -0.43943524f, -0.17275734f, -0.06751043f, 0.18916355f, 0.26948676f, + -0.04115304f, 0.18896045f, 0.08564994f, 0.10924092f, 0.22610962f, + 0.03380679f, 0.16730125f, 0.31520399f, 0.16672924f, 0.16632739f, + 0.18535905f, 0.16951889f, 0.31049064f, 0.23263633f, 0.11778824f, + 0.12224320f, 0.29643518f, 0.29015687f, 0.15188965f, 0.22382802f, + 0.27733871f, 0.22968420f, 0.07525790f, 0.25693253f, 0.10878946f, + 0.16762060f, 0.02350366f, 0.15905122f, 0.07165828f, -0.02110095f, + 0.21614973f, 0.11678075f, 0.34021309f, 0.24386364f, -0.06519088f, + -0.24699895f, 0.15215954f, 0.26826140f, 0.13845423f, 0.09846798f, + 0.13958985f, -0.01913558f, 0.15032090f, 0.11617916f, 0.08485129f, + -0.00537294f, 0.10445988f, 0.03827649f, -0.02478376f, -0.04625921f, + 0.07786433f, -0.05553968f, 0.08858437f, -0.03719674f, -0.05722704f, + -0.03561313f, 0.00707152f, -0.00798311f, -0.03758523f, 0.07136977f, + -0.04653298f, -0.03093291f, 0.14355750f, 0.14534192f, 0.11026654f, + 0.08804589f, 0.05006429f, -0.02723036f, 0.07116472f, 0.11508210f, + -0.12948151f, -0.41232604f, 0.23550361f, -0.09232534f, 0.08911030f, + 0.08324546f, -0.05122663f, -0.02976040f, -0.00096838f, -0.10529419f, + -0.01100389f, 0.06618683f, 0.00431415f, -0.14143063f, 0.05753947f, + -0.03832724f, -0.14727153f, 0.03131982f, 0.04863633f, -0.11772798f, + -0.08548559f, 0.05262752f, 0.03981388f, 0.01041346f, -0.06049665f, + -0.11038134f, -0.07139379f, -0.00627997f, 0.01601771f, -0.06981687f, + 0.06554347f, -0.05051352f, -0.11224747f, -0.09873884f, -0.02829693f, + 0.04377632f, -0.13929288f, -0.03712192f, -0.03136595f, 0.47891232f, + 0.26905695f, 0.29116741f, -0.03001980f, -0.13625546f, 0.03332258f, + -0.00298198f, -0.11413296f, -0.04911675f, 0.01729886f, -0.01753660f, + 0.09443783f, -0.02961144f, 0.08409366f, 0.13574921f, -0.02446755f, + 0.20041415f, 0.10485101f, 0.09458604f, 0.26974466f, 0.24038900f, + 0.27819330f, 0.26977715f, 0.06774440f, 0.05630153f, 0.12885673f, + 0.19644141f, 0.02120580f, 0.15321380f, 0.03001633f, 0.01881997f, + 0.04487557f, -0.00353549f, -0.02442740f, -0.21048574f, -0.09921645f, + -0.07607439f, 0.26614547f, 0.45577320f, 0.12804587f, -0.01246595f, + 0.16469270f, 0.12555124f, 0.09508380f, -0.47712120f, -0.26707441f, + -0.09077235f, -0.02667484f, 0.00194101f, 0.07120837f, 0.01926430f, + 0.02483353f, 0.03669910f, 0.03972910f, -0.01742436f, 0.02914598f, + 0.11666421f, 0.18978602f, 0.22072324f, 0.20023994f, 0.20487949f, + 0.18251592f, 0.12717931f, 0.08775916f, 0.11627981f, 0.10244421f, + 0.08933082f, 0.05171553f, 0.04256966f, -0.07112529f, -0.10209453f, + -0.12347440f, -0.28908059f, -0.49676722f, 0.21136194f, -0.07670074f, + -0.11599449f, -0.01239872f, -0.09627225f, 0.10322899f, 0.06960165f, + 0.05710616f, 0.14959304f, 0.02334415f, 0.22938867f, 0.20098199f, + 0.19941337f, 0.17637055f, 0.14586116f, 0.14726873f, 0.11578674f, + 0.20973054f, 0.24554031f, 0.20886649f, 0.28806508f, 0.18094738f, + 0.35466117f, 0.24013579f, 0.17820701f, 0.19452387f, 0.32392102f, + 0.09189931f, 0.21935840f, 0.12238027f, 0.32551169f, 0.08643460f, + 0.11890991f, 0.09281045f, 0.13016179f, 0.20625614f, 0.04957346f, + 0.15624075f, 0.10504321f, 0.20863537f, -0.22668704f, -0.17909324f, + -0.24021062f, 0.07954855f, 0.33710504f, 0.22974655f, 0.06517120f, + 0.17333254f, 0.00464545f, 0.09799278f, -0.01093326f, 0.16079944f, + 0.01269114f, 0.15501423f, 0.01892917f, 0.08633276f, 0.06908174f, + -0.00769451f, 0.13784353f, 0.10194065f, 0.03722499f, 0.09639923f, + -0.02469809f, -0.06687857f, 0.09804491f, 0.09101987f, 0.15134129f, + 0.13898817f, -0.08108361f, 0.15373388f, 0.10397164f, 0.19655834f, + 0.00451226f, -0.01349648f, 0.10413271f, 0.01048446f, 0.11423520f, + -0.20723811f, -0.25820830f, 0.11097942f, 0.13321653f, 0.03111248f, + 0.15951192f, 0.05917763f, -0.09589906f, 0.03356078f, -0.03743358f, + -0.01410671f, 0.04963597f, 0.11535671f, -0.00684964f, 0.03517478f, + 0.04201841f, -0.03880404f, 0.05533300f, 0.08683983f, 0.12326014f, + 0.13885574f, 0.13076580f, -0.02128823f, 0.09347361f, -0.04979379f, + 0.05476824f, 0.00277717f, 0.10509884f, 0.06737530f, 0.00939830f, + 0.03328944f, 0.10687899f, 0.02387412f, 0.05193642f, 0.00459518f, + 0.04165221f, -0.07245525f, 0.07588669f, -0.16997623f, -0.35486847f, + 0.05295057f, 0.18263398f, 0.14071727f, 0.12840220f, 0.05165483f, + 0.10258459f, 0.07919271f, 0.11027943f, 0.02803971f, 0.03385762f, + 0.04304335f, -0.02146923f, 0.11643172f, 0.07067996f, 0.05931857f, + 0.03954968f, 0.02959426f, 0.01673844f, 0.01170003f, 0.04849963f, + 0.03015316f, 0.03659844f, 0.05799174f, -0.04349063f, 0.08385170f, + 0.04755886f, 0.03509928f, -0.00929157f, 0.08022965f, 0.06939553f, + 0.04546782f, 0.08949386f, 0.05248818f, 0.06485093f, 0.07702585f, + 0.10378558f, -0.03411473f, -0.31568077f, 0.10758426f, -0.02370488f, + 0.10255262f, 0.09906175f, 0.12337113f, 0.05655023f, 0.04669214f, + 0.14679219f, 0.15037647f, 0.21689613f, 0.24363536f, 0.18856142f, + 0.19039722f, 0.16203324f, 0.27476060f, 0.27692044f, 0.18430139f, + 0.09795583f, 0.13899890f, 0.07481743f, 0.15681599f, 0.18866111f, + 0.07893227f, 0.20998590f, 0.08024498f, 0.17777406f, 0.14447400f, + 0.18032341f, 0.20899023f, 0.02810627f, 0.09817559f, 0.05766437f, + 0.15632474f, 0.17162910f, 0.24546805f, 0.23855799f, 0.17211604f, + -0.47904322f, 0.06520924f, -0.12731178f, 0.22478878f, 0.30398768f, + 0.14556012f, -0.17385305f, -0.03050099f, 0.13616882f, -0.03087826f, + 0.10622896f, -0.00085856f, 0.05899723f, -0.02563286f, 0.17857508f, + 0.04750152f, 0.11194866f, 0.04587149f, 0.20147166f, 0.23992063f, + 0.19798346f, 0.28997952f, 0.24759731f, 0.19464125f, 0.10913216f, + 0.07326923f, 0.00995903f, -0.01546953f, 0.08015515f, 0.20010974f, + 0.00478640f, 0.08449487f, -0.01141457f, 0.08590483f, -0.04044011f, + -0.05804530f, 0.07808112f, -0.18257241f, -0.39535475f, 0.06511536f, + -0.07228432f, 0.13745758f, 0.28016096f, 0.04035291f, 0.03222613f, + -0.03616124f, -0.02023034f, 0.03776422f, 0.06454436f, 0.02299519f, + -0.04007043f, -0.04543832f, 0.07299176f, 0.13084944f, 0.04818204f, + -0.01873164f, -0.02377525f, 0.00572132f, 0.15699561f, 0.02569911f, + 0.05092616f, -0.03924929f, 0.09536938f, 0.02361684f, 0.08901020f, + 0.04894742f, -0.01934299f, -0.01033785f, -0.03204197f, 0.04491263f, + 0.04753067f, 0.06377053f, 0.03596552f, -0.10425609f, 0.12493505f, + -0.12210856f, -0.34954360f, 0.18215133f, 0.07386338f, 0.23586480f, + -0.01946442f, 0.11855722f, 0.37258565f, 0.24895029f, 0.18159205f, + 0.16561037f, 0.06677540f, 0.00286858f, 0.12798810f, -0.02136032f, + 0.07654227f, 0.10494685f, 0.02747635f, 0.09203580f, 0.01171791f, + 0.02072016f, 0.13582125f, 0.07295387f, 0.05157385f, -0.06386259f, + 0.07861925f, 0.06586783f, -0.02180568f, -0.03565706f, 0.19822237f, + 0.11142059f, 0.11752541f, 0.06527951f, 0.19787978f, 0.23990534f, + 0.11193559f, 0.31237116f, 0.11156248f, 0.28502905f, 0.29168665f, + -0.18952470f, -0.16348489f, 0.12876220f, 0.21613219f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000002f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000001f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000014f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000001f, -0.00013963f, 0.00000798f, 0.00004561f, + -0.00000000f, -0.00000000f, 0.22030027f, 0.23378213f, 0.23382413f, + 0.06147690f, -0.00152300f, 0.01013810f, 0.04703982f, 0.03303587f, + 0.14975198f, 0.01893173f, 0.13415337f, 0.04907364f, 0.08096451f, + 0.00152502f, -0.04931306f, 0.09159709f, -0.06471904f, -0.11603187f, + -0.04206763f, 0.11669324f, 0.16050394f, 0.13125180f, 0.13484655f, + -0.03416603f, 0.04020992f, 0.00913968f, 0.15525021f, 0.02814256f, + 0.05999913f, 0.25354612f, 0.05897092f, 0.00552283f, 0.04641494f, + -0.35040435f, 0.19210719f, 0.06916896f, 0.06978601f, 0.10791223f, + 0.29782555f, 0.51623613f, 0.32636786f, 0.19242589f, 0.20123838f, + 0.26752311f, 0.08011741f, 0.25101185f, 0.04967228f, 0.04609632f, + 0.01253983f, 0.10660104f, -0.05735527f, -0.20257959f, -0.26106310f, + -0.32334322f, -0.33292413f, -0.18926752f, -0.14608002f, -0.04648188f, + 0.01840525f, 0.04515307f, 0.02341615f, 0.13868004f, 0.03384094f, + 0.13343832f, 0.31058800f, 0.18365537f, 0.36312565f, 0.26674676f, + 0.49798629f, 0.28197336f, 0.30359685f, 0.45813787f, -0.13780299f, + 0.05075156f, 0.01098169f, 0.18608865f, -0.47230989f, -0.37729481f, + -0.38235095f, -0.18169850f, -0.27246112f, -0.04764765f, -0.10249825f, + -0.39967102f, 0.03782999f, -0.02193098f, 0.12857506f, 0.05722043f, + 0.08394659f, 0.19714068f, 0.03051978f, -0.01690080f, -0.04989777f, + 0.11040857f, 0.14486024f, 0.17899762f, 0.11597318f, 0.08485441f, + 0.03399836f, -0.11281949f, 0.24584860f, -0.00298470f, -0.02894927f, + -0.15238839f, -0.05282864f, -0.26435173f, -0.50709766f, -0.47102293f, + -0.43909538f, -0.07772256f, 0.37962300f, 0.09170326f, -0.04549164f, + -0.05341092f, -0.05796542f, 0.10214687f, 0.07461366f, 0.00434488f, + 0.05254087f, -0.00366609f, 0.00200007f, 0.25175250f, 0.09883781f, + 0.17875768f, 0.03520367f, 0.15780306f, 0.10333788f, 0.02101212f, + 0.03793227f, 0.02359032f, 0.19356591f, 0.20002046f, 0.14531194f, + 0.25800046f, 0.10456602f, 0.01894346f, 0.16305128f, 0.12542412f, + 0.03567390f, 0.13405369f, 0.04788356f, 0.14772236f, 0.08553237f, + 0.04627004f, 0.28613371f, 0.14270814f, 0.32967010f, 0.32602054f, + -0.05666561f, -0.21938778f, 0.19379854f, 0.13700563f, 0.07134125f, + 0.23990749f, 0.16322938f, 0.06047156f, 0.12311422f, 0.22582528f, + 0.09485519f, 0.07295045f, -0.00374590f, 0.18688379f, 0.22311689f, + 0.13947594f, 0.00134066f, 0.11893196f, 0.20583516f, 0.22622912f, + 0.14291826f, 0.14545852f, 0.00224182f, 0.08913972f, 0.18243423f, + 0.18376218f, 0.08673947f, 0.11819976f, 0.04353760f, 0.22707908f, + 0.16571350f, 0.18072055f, 0.07755980f, 0.03453780f, 0.22515410f, + 0.17283861f, 0.19511946f, -0.33879301f, -0.16954742f, 0.01527948f, + 0.24289508f, 0.30763501f, 0.03241930f, -0.24437353f, -0.06965581f, + -0.05653236f, 0.07840028f, 0.18758720f, 0.04702339f, -0.11411007f, + 0.08688607f, 0.03143124f, 0.07332045f, -0.00339079f, 0.11597178f, + 0.08816429f, -0.01896745f, 0.09563764f, 0.07878827f, 0.22693762f, + 0.02763051f, -0.01069224f, 0.12353869f, 0.00739849f, 0.18811847f, + -0.02398713f, 0.12576485f, 0.06558885f, -0.04954393f, 0.13306980f, + -0.02240174f, -0.10810261f, -0.18504807f, 0.10947841f, -0.19357571f, + -0.37698138f, 0.21643557f, 0.18184066f, 0.18295604f, 0.01631502f, + 0.23445848f, -0.03811069f, 0.06798691f, -0.00937013f, -0.01362151f, + -0.00437559f, 0.10147543f, 0.02783740f, 0.17410308f, 0.06817114f, + 0.01842904f, 0.13264723f, 0.05481817f, 0.09580150f, -0.10138835f, + 0.00736477f, -0.13730554f, -0.05334068f, 0.03830164f, 0.04467002f, + 0.09008371f, -0.02361796f, -0.02898725f, -0.00643211f, 0.07556158f, + 0.03207311f, 0.01130862f, 0.18858206f, 0.17008874f, 0.14851752f, + 0.10083390f, 0.15156610f, -0.12442070f, -0.33475175f, 0.25750157f, + 0.17504635f, 0.23779362f, 0.25095969f, 0.03750077f, 0.22206993f, + 0.03555536f, 0.14781120f, 0.07751320f, 0.17786103f, 0.07872199f, + 0.10927600f, 0.10474472f, 0.22955376f, 0.05084843f, 0.22897372f, + 0.08936410f, 0.21906440f, 0.01914204f, 0.05501585f, 0.16099651f, + 0.17464778f, 0.18448509f, 0.15974623f, 0.19964530f, 0.18760535f, + 0.20330818f, 0.20916343f, 0.20265101f, 0.05055176f, 0.16655137f, + 0.17006573f, 0.24697837f, 0.18926877f, 0.06037662f, 0.03872779f, + 0.11313383f, -0.26038915f, 0.11079039f, -0.09237254f, 0.30906218f, + 0.15735613f, -0.10299187f, -0.11624490f, -0.11341040f, -0.14102662f, + -0.13081825f, -0.11608326f, -0.08606232f, -0.13950901f, -0.09580086f, + -0.00443573f, -0.09377629f, -0.00347010f, -0.00108525f, -0.04413500f, + -0.01172091f, -0.00716361f, -0.10821871f, -0.10129676f, 0.02576538f, + -0.02793469f, -0.09707712f, 0.01336733f, -0.05613549f, -0.10781973f, + 0.03881883f, -0.03139738f, -0.10546371f, -0.12498886f, 0.01129871f, + -0.01770018f, -0.01887485f, -0.11255207f, -0.03821329f, 0.45791471f, + 0.02386934f, 0.08304445f, -0.09622711f, -0.06401787f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000449f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000007f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000001f, 0.00000000f, -0.00000001f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00003748f, -0.00000099f, 0.00000386f, 0.00001480f, + -0.00000001f, 0.00000002f, -0.02039742f, -0.00435675f, 0.02061139f, + 0.03201352f, 0.05152854f, 0.02208778f, 0.14099485f, 0.02691385f, + -0.02072122f, 0.06315790f, 0.00608297f, 0.02486990f, 0.08383795f, + -0.03409819f, -0.10102971f, 0.14712742f, -0.01828553f, -0.00179814f, + 0.03873944f, 0.04493500f, -0.01586184f, 0.07985544f, -0.02025269f, + 0.04906579f, 0.01286928f, 0.05473989f, 0.08410092f, -0.00436670f, + 0.10846808f, 0.00841538f, -0.04023026f, 0.12833342f, -0.06843945f, + -0.38039932f, 0.04750785f, 0.10363753f, 0.06588828f, 0.01426718f, + -0.01327748f, 0.04783347f, 0.03630650f, 0.10881790f, 0.10371371f, + 0.07975727f, 0.13953313f, 0.24426854f, 0.00640695f, 0.20685892f, + 0.18717068f, 0.27682000f, 0.13499899f, 0.35349655f, 0.43664020f, + 0.29662412f, 0.40184858f, 0.26427770f, 0.34965718f, 0.16998631f, + 0.09578295f, 0.26624173f, 0.24972539f, 0.18511362f, -0.00751322f, + 0.07653652f, 0.07180557f, 0.01346195f, 0.10361144f, 0.05206369f, + -0.03208596f, -0.09613884f, 0.22273071f, -0.21297400f, -0.31137100f, + 0.00949151f, 0.18393748f, 0.23072261f, 0.04168129f, 0.17371257f, + 0.14330944f, 0.10650793f, 0.06960361f, 0.09083582f, 0.09344056f, + 0.06682862f, 0.10722419f, 0.08715333f, 0.09642712f, 0.11016632f, + 0.08729022f, 0.04050377f, 0.03991785f, 0.02352964f, -0.03359852f, + -0.03035700f, 0.04261842f, 0.05985305f, 0.07815210f, 0.07268630f, + 0.07130813f, 0.03638053f, 0.16578864f, 0.11428924f, 0.14513572f, + 0.15686145f, 0.14370027f, 0.17021766f, 0.22756542f, 0.08900583f, + 0.07774826f, -0.27602088f, 0.05532561f, -0.09713146f, 0.04205938f, + 0.08162241f, 0.08591545f, 0.36804426f, 0.17914550f, 0.20148849f, + 0.03532758f, 0.05076786f, 0.21610671f, 0.12630679f, 0.10182253f, + 0.13880524f, 0.10572761f, 0.12833679f, 0.07217805f, 0.09487949f, + 0.12337156f, 0.03974379f, 0.03912407f, 0.18898027f, 0.10349853f, + 0.03190245f, 0.10897312f, 0.10757763f, 0.13350996f, 0.24737485f, + 0.11356547f, 0.07798433f, 0.11355744f, 0.27553037f, 0.10906612f, + 0.11438345f, 0.39984831f, 0.09524305f, 0.22936255f, -0.35350433f, + -0.17573889f, -0.05526770f, -0.01046999f, 0.25744355f, -0.01082532f, + -0.07896440f, 0.10686418f, 0.01558845f, 0.06432707f, 0.00037635f, + -0.06691289f, -0.02099643f, 0.16768000f, -0.02844202f, 0.10228269f, + 0.10438659f, 0.05428630f, 0.10395678f, 0.02110575f, 0.01461412f, + 0.00549026f, -0.10682288f, -0.01989518f, 0.07601561f, 0.15043747f, + 0.14437169f, 0.05105010f, -0.01685609f, -0.04856455f, -0.01253846f, + -0.02555816f, -0.04208636f, 0.05819253f, 0.07261812f, -0.21455805f, + 0.16349216f, -0.09639219f, -0.29018539f, 0.23408318f, 0.23293971f, + 0.05371102f, 0.20862123f, 0.05036556f, -0.05027207f, 0.16664968f, + 0.03770040f, 0.06934890f, 0.03381530f, 0.08158458f, 0.25411472f, + 0.14024080f, 0.20820552f, 0.02863752f, 0.11021816f, 0.12058914f, + 0.10449596f, 0.28789699f, 0.14487453f, 0.16174188f, 0.29096451f, + 0.14061892f, 0.00315329f, 0.25107747f, 0.14673927f, 0.10192822f, + 0.13209693f, 0.06923675f, 0.00697655f, 0.03771736f, 0.08019346f, + 0.08515832f, 0.03098688f, 0.08613738f, 0.07295115f, 0.26174131f, + -0.49634904f, -0.16629231f, -0.04462868f, -0.02455211f, 0.21281382f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000003f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000001f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000003f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000014f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.07292105f, -0.29920664f, + -0.03516604f, -0.05799973f, 0.06118740f, 0.02888735f, 0.11280099f, + 0.12825179f, 0.22763528f, 0.11630119f, 0.13988511f, 0.08219015f, + 0.21398056f, 0.36597785f, 0.37951010f, 0.41789186f, 0.42348033f, + 0.33586442f, 0.20210300f, 0.34347320f, 0.11154786f, 0.17162001f, + 0.22055744f, 0.17188707f, 0.04199491f, 0.01449995f, 0.04103698f, + -0.04508010f, -0.14432925f, -0.15284367f, -0.40730521f, -0.01466798f, + 0.30445054f, 0.49091291f, 0.34743315f, 0.26120993f, 0.25403729f, + 0.21096438f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000011f, -0.00000000f, 0.00000000f, -0.00000005f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000011f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000013f, -0.00000000f, 0.00000000f, -0.00000000f, 0.03729124f, + 0.13534452f, 0.09900682f, -0.01126612f, -0.00767054f, -0.08788288f, + -0.01561638f, -0.02030802f, 0.03806609f, 0.03932637f, -0.05847020f, + 0.10956375f, 0.06348772f, 0.08019985f, 0.13499714f, 0.14455019f, + 0.21697868f, 0.01696920f, 0.12238419f, -0.02315063f, 0.10319939f, + 0.08154495f, 0.06877991f, 0.07817096f, -0.08285039f, 0.10502072f, + -0.00408941f, 0.04821959f, -0.03627693f, 0.04648050f, 0.00667578f, + -0.06473545f, 0.03990795f, 0.41421264f, 0.08770751f, -0.07131007f, + 0.05498225f, -0.01758264f, 0.07080552f, 0.28127012f, 0.21199422f, + 0.08616118f, 0.11445849f, 0.12671490f, 0.05260473f, -0.03038796f, + 0.05998042f, -0.00316906f, -0.00776538f, -0.05618135f, -0.13462149f, + -0.12038734f, -0.08098259f, -0.30801073f, -0.19483362f, -0.20768842f, + -0.04870426f, -0.17985547f, -0.13245495f, -0.01958062f, -0.05835326f, + -0.11850017f, 0.10248479f, -0.03079788f, 0.16080825f, 0.21359707f, + 0.14922281f, 0.18460676f, 0.33406290f, 0.16059306f, -0.01849245f, + 0.26850894f, 0.36582214f, 0.22126316f, 0.09880178f, 0.14863618f, + 0.08158597f, 0.02656851f, 0.09249105f, 0.07446741f, 0.06239109f, + 0.13715321f, 0.09556728f, 0.07977465f, 0.02888499f, 0.01783160f, + 0.05226575f, 0.06065629f, 0.01560553f, 0.09639655f, 0.03679040f, + 0.06666331f, 0.08959478f, -0.04651219f, 0.05276864f, 0.01589998f, + 0.00824338f, 0.06844295f, 0.09335262f, 0.05295103f, 0.09544243f, + 0.07033400f, 0.10093547f, 0.08661154f, 0.07568621f, 0.05317941f, + 0.04225504f, 0.16026686f, 0.01036149f, -0.32912451f, 0.10718372f, + -0.05441384f, 0.08934011f, 0.03813177f, 0.15394869f, 0.35007888f, + 0.20220511f, 0.17254789f, 0.15997130f, 0.12963469f, -0.03496561f, + 0.12817107f, 0.03433920f, 0.15196362f, -0.03465655f, -0.02177088f, + -0.05088785f, -0.07347211f, 0.07389951f, -0.11772007f, -0.00677874f, + 0.01099515f, -0.02648043f, 0.06221673f, -0.02759349f, 0.06922388f, + -0.04045319f, 0.06662343f, 0.10747992f, 0.06019881f, 0.01520037f, + 0.17557305f, 0.20914012f, 0.13559185f, 0.21152562f, 0.12385577f, + 0.26486120f, 0.37701756f, -0.20796151f, -0.15335776f, 0.07194249f, + -0.05240995f, 0.24564275f, 0.26945627f, 0.11852085f, 0.13475324f, + 0.19176118f, 0.18521360f, 0.19558826f, 0.27341476f, 0.25422361f, + 0.19126198f, 0.15619366f, 0.18154116f, 0.10295527f, 0.18117884f, + 0.11581877f, 0.13933757f, 0.10818406f, 0.13672943f, 0.15717313f, + 0.05787679f, 0.18552530f, 0.21384801f, 0.19912751f, 0.27848914f, + 0.21129303f, 0.20910002f, 0.24923795f, 0.22742315f, 0.17092904f, + 0.15163933f, 0.16036300f, 0.24977037f, 0.18874440f, -0.35495090f, + -0.15067671f, -0.29825717f, 0.05715345f, 0.15730716f, 0.09867585f, + 0.19710803f, 0.20959750f, 0.22299841f, 0.10525135f, 0.14595425f, + 0.02686833f, 0.16488758f, 0.20784572f, -0.01201582f, 0.17366926f, + 0.16304585f, 0.12651694f, 0.03329083f, 0.10561140f, 0.27171925f, + 0.20359446f, 0.08901832f, 0.05677801f, 0.14390807f, 0.02458229f, + 0.01978354f, 0.18924847f, 0.16919589f, 0.11426597f, 0.11271850f, + 0.07413377f, 0.21060620f, 0.18085575f, 0.16458911f, 0.04101218f, + 0.01789726f, 0.17324305f, -0.43135267f, -0.11079872f, 0.10945407f, + 0.04783940f, 0.19289990f, -0.10551001f, -0.16623785f, 0.00578629f, + -0.11677526f, 0.04267840f, 0.02565110f, 0.01984287f, -0.06726519f, + 0.01511163f, 0.00203952f, -0.05403072f, 0.04088921f, 0.00221448f, + 0.17605209f, 0.10346718f, 0.11114971f, 0.03921769f, 0.25313529f, + 0.05388774f, 0.00702168f, 0.05278886f, -0.01941676f, -0.06841832f, + 0.04904079f, -0.12913537f, -0.13735726f, -0.01847948f, -0.18201613f, + -0.13824336f, -0.10603540f, -0.07635546f, -0.02766259f, 0.17150594f, + 0.42246133f, 0.03291509f, -0.15445422f, 0.04187655f, 0.03387661f, + -0.00532095f, 0.38576168f, 0.18493930f, 0.09002703f, 0.18995328f, + 0.13903451f, 0.17971785f, 0.06966186f, -0.03642142f, 0.12054569f, + 0.02926711f, 0.13370612f, -0.05194504f, -0.01829832f, 0.08150604f, + -0.16051166f, -0.11601361f, 0.02502955f, 0.00738923f, 0.04325289f, + 0.00922032f, -0.07397550f, 0.12579334f, 0.16758914f, 0.03900997f, + 0.01319757f, 0.11590260f, 0.08294065f, 0.22722179f, 0.20673522f, + 0.33773279f, 0.15570261f, 0.25898758f, 0.43136609f, -0.18049829f, + 0.05061511f, -0.05604356f, 0.23260929f, 0.08054163f, 0.28167808f, + 0.14851241f, 0.09869057f, 0.12999916f, 0.05176507f, -0.07184078f, + 0.07869716f, 0.00396852f, 0.03742662f, -0.03435152f, -0.05015099f, + -0.02649545f, -0.03950332f, -0.00923281f, -0.08639465f, -0.13961706f, + -0.04915941f, -0.05623734f, -0.02505090f, -0.00534191f, -0.10389192f, + 0.04094283f, 0.03251396f, 0.08748338f, -0.02097667f, 0.12279263f, + 0.21610427f, 0.21680835f, 0.24486290f, 0.43159083f, -0.07107166f, + 0.14476745f, 0.36461791f, 0.05546775f, -0.06393361f, -0.06496281f, + 0.06578773f, -0.06237448f, -0.06459367f, -0.06729693f, 0.00088110f, + 0.12283920f, 0.09583580f, -0.08060375f, 0.10429094f, 0.01040793f, + 0.13515905f, -0.05142953f, -0.00377988f, -0.01213864f, 0.15340438f, + 0.11352274f, 0.22172576f, 0.09740778f, 0.06830381f, 0.11192279f, + 0.17357466f, -0.01347617f, 0.15877907f, 0.07138693f, 0.12627238f, + 0.01535941f, 0.04437579f, -0.01119392f, 0.07821658f, -0.01786216f, + -0.12985992f, -0.09259679f, 0.00041418f, 0.02702874f, 0.38744280f, + 0.03236946f, -0.15757069f, 0.02379384f, 0.14992931f, -0.02814817f, + -0.00127831f, 0.02851175f, 0.01859929f, -0.02160473f, 0.01684038f, + 0.02805711f, -0.02205636f, -0.00013127f, -0.00765744f, 0.02430796f, + 0.01143419f, -0.01794582f, -0.02865052f, -0.03680097f, -0.05188400f, + -0.06803925f, -0.05282139f, -0.02086306f, -0.02719933f, -0.01164637f, + 0.00127882f, -0.00244405f, -0.04584006f, 0.04476320f, 0.01787429f, + 0.03451314f, 0.01724820f, 0.01339502f, 0.01167183f, -0.00165932f, + 0.01118371f, -0.03055054f, -0.18213253f, 0.04791475f, -0.03847659f, + 0.04316457f, 0.09083525f, 0.11488993f, 0.08817074f, 0.00099483f, + 0.18064526f, 0.05881786f, 0.14289704f, 0.09548854f, 0.28226358f, + 0.10451268f, 0.07726218f, 0.18705648f, 0.13143732f, 0.11364496f, + 0.22396256f, 0.10457037f, 0.27313736f, 0.24680433f, 0.35255569f, + 0.26863533f, 0.24218921f, 0.25634992f, 0.04816049f, 0.16217059f, + 0.18924370f, -0.05342557f, 0.11344512f, 0.12758547f, 0.16965967f, + 0.00569313f, -0.00378102f, 0.11148757f, 0.05162210f, 0.31697807f, + 0.38014284f, -0.24446574f, -0.10639893f, 0.14594029f, 0.21969822f, + 0.00184216f, 0.31876490f, 0.04965902f, -0.00464260f, -0.01393004f, + -0.01238649f, -0.05631127f, -0.00404543f, 0.03831888f, 0.02153329f, + 0.03677125f, 0.10497037f, 0.08867206f, -0.00052238f, -0.08010139f, + -0.11951954f, -0.09805705f, -0.11124942f, -0.06040630f, -0.00766178f, + 0.02697816f, -0.02335702f, -0.02428562f, -0.03181229f, 0.03587614f, + -0.01172018f, 0.07771309f, 0.07966670f, 0.07710876f, 0.23594877f, + 0.43511650f, -0.11458984f, 0.12667219f, 0.12275613f, 0.06448729f, + 0.11666261f, -0.04060155f, 0.03548593f, 0.04972089f, 0.44473517f, + 0.34829766f, 0.26316637f, 0.10240000f, 0.10716270f, 0.19353950f, + 0.12724973f, 0.04291461f, 0.03612399f, 0.08856497f, -0.04301944f, + 0.03477896f, -0.10292548f, -0.11232635f, -0.13007884f, -0.13419180f, + -0.10450846f, -0.09968077f, -0.02028902f, -0.03112104f, 0.00097494f, + 0.03469869f, 0.00177897f, 0.02558702f, 0.10409066f, 0.28127524f, + 0.31620243f, 0.34012848f, 0.28763479f, 0.50643915f, 0.03875909f, + -0.05306464f, -0.22462045f, 0.09272271f, -0.00986219f, 0.12408360f, + 0.26050231f, -0.09714688f, -0.36821175f, -0.24099621f, -0.14651041f, + -0.15881191f, -0.08327677f, 0.04444220f, -0.06040879f, -0.07371719f, + -0.11282757f, 0.06080202f, 0.03116651f, 0.05370427f, 0.06812574f, + -0.00183055f, 0.14674276f, 0.18524544f, 0.00898492f, 0.19502640f, + -0.03978654f, -0.07377999f, 0.13429430f, 0.08839175f, -0.09559090f, + -0.03017346f, -0.06168178f, -0.06769754f, -0.17715923f, -0.14708607f, + -0.26687694f, -0.28050438f, -0.14474915f, -0.18499310f, 0.45638740f, + 0.13382615f, 0.36944097f, 0.03912659f, -0.17782484f, -0.08370219f, + 0.16217442f, 0.10140761f, -0.06055585f, 0.01726181f, -0.03900286f, + -0.00252813f, 0.04990116f, -0.02813585f, 0.12769613f, 0.05085868f, + 0.03552350f, 0.12376506f, -0.02073391f, 0.04402531f, -0.05420182f, + 0.07120077f, -0.02488103f, -0.02385496f, 0.04701945f, 0.07420162f, + -0.05562404f, 0.04851263f, 0.01214939f, 0.05341264f, -0.02635884f, + 0.04063562f, 0.02921694f, 0.04186969f, 0.07470297f, 0.11085324f, + -0.06726279f, 0.25586087f, 0.30005553f, -0.01570751f, -0.11943523f, + -0.07821858f, 0.08958773f, -0.00000001f, 0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000001f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.12285990f, -0.22009717f, -0.09972387f, 0.00854901f, 0.14494930f, + 0.09042131f, 0.17255922f, 0.01675910f, 0.05234100f, 0.15523310f, + 0.02435513f, 0.15844963f, 0.05645317f, 0.00822606f, 0.01443868f, + 0.02333788f, 0.02638163f, 0.15933867f, 0.12348953f, 0.06239538f, + 0.02800896f, 0.09035616f, -0.03990246f, 0.04789368f, 0.10439033f, + 0.05063120f, 0.19125195f, -0.06004372f, 0.13511823f, 0.04085656f, + -0.12162694f, 0.12419672f, -0.25763938f, -0.29056978f, 0.25760019f, + 0.13300143f, 0.19449073f, 0.17466894f, 0.06325176f, 0.10276539f, + -0.01415697f, 0.08044221f, -0.03891684f, 0.09906215f, 0.08568569f, + 0.05608797f, 0.16316877f, -0.01943977f, 0.04290168f, -0.02044553f, + 0.17157264f, -0.02687888f, 0.22671950f, 0.21135564f, 0.16722418f, + 0.05973451f, 0.17714429f, 0.16640945f, 0.09061869f, 0.12914243f, + 0.01917977f, 0.00282491f, 0.09161878f, 0.08010814f, 0.05103549f, + 0.02800088f, -0.02022327f, 0.10204117f, -0.07319620f, 0.13430245f, + 0.04929972f, -0.42117146f, 0.11179680f, 0.16868427f, 0.18643513f, + 0.09205383f, 0.18535604f, 0.26622081f, 0.14199059f, 0.06523980f, + 0.06811853f, 0.06593148f, 0.04828220f, -0.09189129f, 0.00369083f, + -0.07313780f, 0.07219560f, 0.04185641f, -0.06458613f, -0.18022986f, + -0.32954621f, -0.30211779f, -0.31527784f, -0.16992451f, -0.10772368f, + -0.07431035f, -0.10413789f, 0.02999921f, -0.02375084f, -0.10895297f, + 0.13971163f, 0.12508050f, 0.25479558f, 0.10775348f, 0.16272484f, + 0.39416707f, 0.36862013f, 0.08843353f, -0.13569094f, -0.11392492f, + 0.13599375f, 0.17937605f, 0.01098856f, 0.17658682f, 0.14023530f, + 0.03134336f, 0.15634260f, 0.14709711f, 0.04955657f, 0.18826230f, + 0.04396458f, -0.13388920f, -0.04095333f, -0.04584898f, 0.11478055f, + -0.10818905f, -0.04940663f, 0.06521075f, -0.19943365f, -0.08580035f, + 0.03188322f, -0.14437313f, 0.04721176f, -0.07968222f, 0.03053353f, + 0.09640579f, -0.09683833f, -0.17181578f, 0.15500507f, 0.01901903f, + 0.06707340f, 0.18390615f, -0.01275552f, 0.02289293f, 0.04618342f, + 0.00574967f, -0.19071244f, -0.24086346f, 0.19281568f, 0.16591285f, + 0.19452371f, -0.00293814f, 0.13732600f, 0.02547808f, -0.05421362f, + 0.11274457f, 0.13646249f, 0.06412256f, -0.03550944f, 0.18309550f, + 0.14620328f, 0.01857533f, -0.01959252f, 0.02420219f, 0.02344814f, + 0.15684651f, 0.15554360f, 0.12654613f, 0.00198923f, 0.15356570f, + 0.01656366f, 0.02341083f, 0.06497800f, 0.17288214f, 0.15458788f, + 0.18018450f, -0.03579237f, 0.12544678f, -0.09480532f, -0.02979370f, + 0.06923641f, 0.00432568f, 0.08559573f, -0.09880783f, 0.27883571f, + 0.34182408f, -0.15440784f, -0.24708825f, -0.04964410f, 0.16486585f, + -0.00352023f, -0.54356360f, -0.25582910f, -0.13470942f, -0.11046255f, + -0.02821924f, 0.11438766f, 0.01781459f, -0.02551349f, 0.15787095f, + -0.00107545f, 0.02935761f, 0.02128513f, 0.29450676f, 0.29668924f, + 0.36357504f, 0.33178309f, 0.24468927f, 0.26701546f, 0.03502656f, + 0.07753369f, 0.10326003f, 0.12088781f, -0.00446581f, 0.19491650f, + 0.01857212f, -0.01853575f, -0.17928401f, -0.09249332f, -0.12664790f, + -0.33494073f, -0.01544421f, -0.05858348f, -0.21222071f, 0.01776678f, + 0.22535436f, 0.11461438f, 0.05186094f, 0.05660141f, 0.41602889f, + 0.20881924f, 0.12375440f, 0.05659853f, 0.07917662f, -0.00226431f, + 0.01193668f, 0.00074448f, -0.00741649f, 0.00110360f, 0.02409645f, + -0.07076456f, -0.23519601f, -0.39741093f, -0.49632466f, -0.48523566f, + -0.39944157f, -0.33380130f, -0.24701515f, -0.16562334f, -0.14004414f, + -0.10810591f, -0.11411111f, 0.03360280f, 0.05457140f, 0.21443260f, + 0.21774739f, 0.19806366f, 0.36339635f, 0.52337307f, -0.07572272f, + 0.10588884f, 0.01671950f, 0.09451282f, 0.18709646f, -0.07340284f, + 0.00965454f, 0.02043909f, -0.03788760f, 0.01481101f, -0.05137040f, + -0.04468934f, 0.12305452f, 0.04578602f, -0.03823980f, 0.04288670f, + 0.06102098f, 0.09961871f, -0.03904821f, 0.17249319f, 0.05536125f, + 0.06896042f, 0.26918304f, 0.11921217f, -0.02824669f, 0.08819998f, + 0.01720438f, 0.11520983f, 0.17265613f, -0.04529172f, -0.01988199f, + 0.05910135f, -0.02026656f, 0.06701005f, 0.12144116f, -0.01365885f, + 0.06501372f, -0.17922753f, 0.07322741f, 0.04311268f, -0.24069135f, + -0.01063694f, 0.16485468f, 0.02460477f, 0.01642094f, 0.08593651f, + 0.18081874f, 0.11830051f, 0.23795155f, 0.19579612f, 0.18657911f, + 0.20155796f, 0.22580092f, 0.15145004f, 0.22277567f, 0.24315751f, + 0.20261569f, 0.22960421f, 0.21472362f, 0.09619554f, 0.12475802f, + 0.19307639f, 0.18504860f, 0.25585312f, 0.25022671f, 0.25812504f, + 0.15858947f, 0.09667514f, 0.16394596f, 0.22419304f, 0.18818349f, + 0.18942788f, 0.21189198f, 0.12001354f, 0.16857979f, 0.26503968f, + 0.19638434f, 0.29618388f, -0.39358875f, -0.03207052f, -0.24035551f, + 0.06930305f, 0.28775874f, +}; + +/* net.0.bias shape=[64] */ +static const float kf_b0[64] = { + -0.00000001f, -0.09566416f, 0.03043937f, -0.10006177f, 0.24324568f, + 0.02950912f, 0.30322209f, -0.26176441f, 0.01845243f, 0.18176080f, + 0.24456680f, 0.21076432f, 0.32971081f, 0.16065593f, 0.15916522f, + 0.36175188f, 0.23296110f, -0.00249740f, -0.00092762f, 0.08877232f, + 0.09856017f, 0.02551742f, -0.08624450f, 0.15803850f, 0.28756905f, + 0.15705563f, 0.30136520f, -0.10978314f, -0.00075595f, 0.31008643f, + 0.20046681f, 0.14248659f, 0.24731986f, 0.12568814f, 0.34655777f, + 0.00000000f, 0.17309788f, -0.00000000f, -0.11742547f, 0.24954271f, + 0.15062985f, 0.04878780f, 0.38271549f, 0.29402784f, -0.14799774f, + -0.06171897f, -0.16954595f, -0.11207166f, 0.17845874f, 0.07988082f, + -0.09104405f, 0.29931483f, 0.05038638f, -0.04680354f, -0.00000001f, + 0.15171303f, 0.18498610f, 0.33305630f, 0.20689309f, 0.01501669f, + 0.23508833f, -0.07022359f, 0.18100643f, 0.19830258f, +}; + +/* net.2.weight shape=[32, 64] */ +static const float kf_w1[2048] = { + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.16411097f, 0.03006341f, -0.10842603f, 0.41501692f, -0.05514786f, + 0.32863936f, -0.36215049f, -0.11561687f, 0.22363171f, 0.39662674f, + 0.34314239f, 0.27036706f, 0.42170775f, 0.28289324f, 0.37477788f, + 0.35600987f, -0.06429541f, 0.00000000f, 0.39161208f, -0.13364455f, + 0.11234505f, -0.23830107f, 0.31799439f, 0.32327515f, 0.29079285f, + 0.27700868f, -0.33099538f, -0.00000000f, 0.35031408f, 0.37799442f, + 0.38504162f, 0.43710962f, 0.24233629f, 0.23501657f, 0.00000000f, + 0.03069549f, -0.00000000f, -0.26558694f, -0.06453606f, 0.40618128f, + -0.20023952f, 0.37640145f, 0.41574699f, -0.34436795f, -0.10822638f, + -0.29630381f, -0.24853203f, 0.39512736f, -0.06092934f, -0.11466059f, + 0.34939793f, -0.18302713f, -0.21601763f, -0.00000000f, 0.34576362f, + 0.26895601f, 0.19028799f, 0.38092369f, -0.17205724f, 0.17945848f, + -0.07952806f, 0.35063124f, 0.37658507f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.02428642f, 0.03779604f, + -0.15959281f, 0.43610331f, -0.04489139f, 0.39772952f, -0.12495531f, + -0.05227269f, -0.00121845f, 0.17459655f, 0.24411282f, 0.30193141f, + 0.39028820f, 0.44133821f, 0.32237059f, 0.31587446f, -0.05897368f, + 0.00000000f, 0.32404974f, 0.03304639f, 0.30085799f, -0.10608304f, + 0.37691289f, 0.24923016f, 0.26035246f, 0.17136195f, -0.18704230f, + -0.00000000f, 0.39743668f, 0.11303262f, 0.37225318f, 0.39630625f, + 0.21230032f, 0.42043564f, -0.00000000f, -0.01318060f, 0.00000000f, + -0.13406707f, 0.10148484f, 0.40678120f, -0.06050286f, 0.26276934f, + 0.27226207f, -0.22521259f, -0.06551913f, -0.06054851f, -0.21122725f, + 0.36353123f, -0.08817501f, 0.04909118f, 0.27930126f, -0.06493340f, + -0.05335999f, -0.00000000f, 0.20693029f, 0.26589751f, 0.21909189f, + 0.27402464f, -0.12224197f, 0.06634481f, 0.18008366f, 0.19087090f, + 0.34611478f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.33724290f, 0.17917280f, 0.26403782f, 0.16931380f, + 0.33026662f, 0.19400671f, -0.29288185f, 0.02142064f, 0.21062675f, + 0.24769826f, 0.03147685f, 0.11760709f, 0.06475239f, 0.39651752f, + 0.31142113f, -0.06190352f, 0.27480012f, -0.00000000f, -0.06768706f, + 0.01405350f, -0.27754796f, 0.26855540f, 0.35912377f, -0.15847965f, + -0.25381473f, 0.31659684f, -0.22538505f, -0.00000000f, 0.22495720f, + 0.38126811f, 0.20756511f, 0.22574173f, -0.20131923f, 0.34808004f, + -0.00000000f, 0.04633600f, -0.00000000f, -0.03388725f, -0.07852449f, + 0.10161045f, 0.12342227f, 0.34875944f, 0.32209206f, -0.03032017f, + 0.03736033f, -0.12708460f, 0.04099160f, 0.13092107f, 0.24321443f, + -0.11383172f, 0.01404678f, -0.24278225f, 0.04163255f, -0.00000000f, + -0.08584987f, 0.16857363f, -0.00466540f, -0.26462397f, 0.29871586f, + 0.18191136f, -0.22283113f, 0.23185433f, 0.29232043f, 0.00000000f, + -0.19258761f, 0.11264820f, 0.20498016f, -0.25118411f, 0.30700347f, + -0.20835221f, 0.23563565f, 0.32885551f, 0.31249049f, 0.35326713f, + -0.14666882f, -0.11562691f, -0.28928092f, -0.27773494f, 0.00137303f, + -0.14873852f, 0.23494232f, -0.00000000f, -0.43436420f, 0.02467253f, + -0.30128944f, 0.32237938f, -0.12204118f, -0.07711070f, -0.19190203f, + 0.12630360f, 0.31854418f, 0.00000000f, -0.31889951f, 0.39980945f, + -0.27711308f, -0.26207155f, -0.30743197f, -0.05294575f, 0.00000000f, + 0.32247630f, -0.00000000f, 0.34703195f, -0.09090772f, -0.27405322f, + 0.09204038f, 0.00023931f, -0.14841539f, 0.36054596f, 0.32823789f, + 0.04308511f, 0.35351622f, -0.12910736f, 0.35779697f, -0.14171703f, + -0.23420265f, 0.21017072f, 0.16553530f, -0.00000000f, -0.14376362f, + -0.11007029f, -0.26512909f, -0.15537997f, 0.14459264f, 0.23193868f, + -0.33573720f, -0.00893580f, 0.01167462f, -0.00000000f, 0.21242066f, + 0.15906155f, 0.18343815f, -0.33242950f, 0.13339308f, -0.27807033f, + 0.28424773f, 0.15092510f, -0.20413595f, -0.18280955f, -0.07586832f, + -0.17734566f, -0.22223534f, -0.34829277f, -0.31394732f, -0.16699384f, + 0.17257784f, -0.00000000f, -0.02730042f, 0.16407742f, -0.47734028f, + 0.18622851f, -0.26289883f, -0.12923788f, -0.01218586f, -0.01679861f, + 0.24541989f, -0.00000000f, -0.26862550f, -0.18903863f, -0.22312468f, + -0.29081032f, 0.00456320f, -0.40729204f, 0.00000000f, 0.13196681f, + -0.00000000f, 0.21115622f, 0.10681602f, -0.30348134f, 0.14488058f, + -0.25472260f, -0.08940674f, 0.21973740f, 0.22560373f, 0.29306945f, + 0.18129934f, -0.27290490f, 0.14382726f, 0.24323992f, -0.04124852f, + 0.15001738f, 0.18757772f, 0.00000000f, -0.06627958f, -0.07006283f, + 0.01107151f, -0.06157176f, 0.13072795f, -0.03867357f, 0.20099187f, + -0.04672687f, -0.27571774f, -0.00000000f, -0.08904406f, -0.00463693f, + -0.24597459f, 0.31138906f, 0.02908996f, 0.43521091f, -0.34163281f, + -0.13169816f, 0.19368283f, 0.28094319f, 0.36411926f, 0.24974325f, + 0.39069754f, 0.36940941f, 0.29111794f, 0.36833477f, -0.10119212f, + -0.00000000f, 0.30825713f, -0.02892670f, 0.02139978f, -0.06679162f, + 0.29047844f, 0.30286273f, 0.27490154f, 0.25309107f, -0.37665623f, + -0.00000000f, 0.34711525f, 0.34748250f, 0.40816221f, 0.29980871f, + 0.23774059f, 0.28584719f, -0.00000000f, -0.09997464f, 0.00000000f, + -0.17037058f, 0.03537432f, 0.41606435f, -0.09365807f, 0.29218724f, + 0.36034128f, -0.20899616f, -0.15323599f, -0.26791182f, -0.27926028f, + 0.41002706f, -0.02763459f, -0.08456639f, 0.25634816f, -0.16739233f, + -0.12804469f, -0.00000000f, 0.28198770f, 0.36315435f, 0.14708559f, + 0.27866119f, -0.11576169f, 0.27461407f, -0.01359201f, 0.20873266f, + 0.30114710f, 0.00000000f, 0.20710085f, -0.01220956f, -0.15378073f, + -0.04346196f, -0.16036308f, 0.32248008f, 0.17056115f, -0.07647935f, + 0.12685551f, -0.24537927f, 0.25361210f, 0.23519339f, 0.19275606f, + 0.21006991f, 0.15067030f, 0.26796770f, -0.22923294f, -0.00000000f, + 0.26195905f, -0.17579453f, 0.47907874f, -0.20790312f, 0.09814245f, + 0.28936547f, 0.22429268f, 0.11851745f, -0.05968940f, -0.00000000f, + 0.26432082f, -0.17695525f, 0.07208408f, -0.14866284f, 0.23157033f, + 0.00868196f, 0.00000000f, 0.19032617f, 0.00000000f, -0.04557545f, + 0.16048199f, 0.28029424f, -0.21217856f, -0.14218816f, 0.10607687f, + -0.17015687f, -0.17848000f, -0.22106594f, -0.31871516f, 0.11251987f, + -0.21056893f, -0.01078551f, 0.17152087f, 0.19707890f, -0.18206190f, + 0.00000000f, 0.22009347f, 0.25618964f, 0.13012587f, 0.23439160f, + -0.23774339f, 0.27339706f, 0.08488537f, 0.23062859f, -0.06093979f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.05569947f, + 0.06907591f, -0.27896500f, 0.42780888f, -0.09518413f, 0.34889883f, + -0.07495646f, 0.01176149f, -0.09518316f, 0.04845729f, 0.15282904f, + 0.27578905f, 0.32825503f, 0.34666622f, 0.34186339f, 0.21314222f, + -0.24137187f, -0.00000000f, 0.36340517f, -0.00145868f, 0.30205798f, + -0.24647102f, 0.21948737f, 0.31400689f, 0.36826536f, 0.30622044f, + -0.27997312f, -0.00000000f, 0.32137173f, -0.23177922f, 0.37320665f, + 0.42523396f, 0.24398878f, 0.26055664f, -0.00000000f, 0.04238036f, + 0.00000000f, -0.25485480f, 0.28887337f, 0.37973094f, -0.17287837f, + 0.30149969f, 0.18158403f, -0.28251585f, -0.09324098f, -0.10148137f, + -0.26994133f, 0.29208526f, -0.12016132f, 0.13670294f, 0.33937576f, + -0.01807382f, -0.11840399f, 0.00000000f, 0.22757140f, 0.15606458f, + 0.35635790f, 0.36790398f, -0.24827451f, 0.14861245f, 0.29941985f, + 0.26286396f, 0.26387343f, -0.00000000f, -0.05878951f, 0.22127795f, + 0.27171075f, 0.08227993f, 0.34218127f, -0.29908791f, 0.03085584f, + 0.30748802f, -0.30044425f, 0.08890658f, -0.11833450f, -0.34383532f, + -0.18144789f, -0.25031561f, -0.35223338f, -0.35517809f, 0.22522910f, + -0.00000000f, -0.17064114f, 0.39045563f, -0.41225633f, 0.14917889f, + -0.12921241f, -0.15412150f, -0.12774542f, -0.02176888f, 0.12467778f, + 0.00000000f, -0.19532463f, -0.00407638f, -0.00380522f, 0.17785616f, + -0.25407454f, -0.19800967f, 0.00000000f, 0.18710685f, -0.00000000f, + 0.16075020f, 0.11833325f, -0.27719808f, 0.14650719f, 0.07182379f, + -0.05366596f, 0.18595229f, 0.30965197f, 0.29914355f, 0.32847738f, + -0.10680369f, 0.12558983f, 0.18911994f, 0.16338190f, -0.05372420f, + 0.22890729f, 0.00000000f, -0.27748275f, -0.21373950f, 0.01925720f, + -0.17254481f, 0.15890168f, -0.36104938f, 0.21342900f, -0.24207939f, + 0.09008306f, -0.00000000f, 0.23550718f, 0.21950352f, 0.30664194f, + -0.43540928f, 0.09327510f, -0.34191728f, 0.34860089f, 0.28607902f, + -0.20826104f, -0.36973956f, -0.37014699f, -0.25818667f, -0.39138553f, + -0.35685602f, -0.43188858f, -0.32495135f, 0.13134208f, 0.00000000f, + -0.31888548f, 0.19333702f, 0.02409006f, 0.13346194f, -0.23311749f, + -0.29465193f, -0.28950009f, -0.20321468f, 0.19735318f, -0.00000000f, + -0.38954711f, -0.37045032f, -0.37817153f, -0.46626839f, -0.34275806f, + -0.42176893f, -0.00000000f, 0.17399667f, -0.00000000f, 0.20671019f, + 0.28258145f, -0.41657916f, 0.10590364f, -0.25185528f, -0.25371686f, + 0.16661496f, 0.36954275f, 0.27643538f, 0.36886689f, -0.37699988f, + 0.10076499f, 0.12020172f, -0.04946400f, 0.21755500f, 0.29279250f, + -0.00000000f, -0.24924700f, -0.41022563f, 0.11093657f, -0.30358490f, + 0.25061101f, -0.09681442f, 0.06364737f, -0.35496244f, -0.45676079f, + 0.00000000f, -0.17664973f, 0.13684939f, 0.16770627f, 0.06583792f, + 0.29579744f, -0.22803797f, -0.07781243f, 0.21892729f, 0.19324617f, + 0.24781290f, -0.26178414f, -0.20913938f, -0.19111991f, 0.00009437f, + 0.07360306f, -0.23496865f, 0.14322239f, 0.00000000f, -0.24603149f, + 0.20474184f, -0.42358628f, 0.16970679f, -0.03791375f, -0.10963988f, + -0.13925005f, 0.16687638f, 0.19595701f, 0.00000000f, -0.24716993f, + 0.24261610f, -0.16374896f, 0.06111481f, -0.11147401f, 0.19753183f, + 0.00000000f, 0.28984475f, -0.00000000f, 0.21993329f, -0.04273589f, + -0.23788370f, 0.12327813f, 0.27720210f, -0.06552029f, 0.23284473f, + 0.15505412f, 0.08601213f, 0.28648618f, -0.07123960f, 0.24260338f, + -0.08601615f, -0.01827366f, 0.05545068f, 0.22726020f, -0.00000000f, + -0.17114788f, -0.26432920f, -0.10552754f, -0.23397034f, 0.32505965f, + -0.00264310f, -0.24861892f, -0.13497403f, 0.16192129f, 0.00000000f, + 0.20437808f, 0.29010400f, 0.10171671f, -0.39552933f, 0.00800619f, + -0.35053715f, 0.46411553f, 0.07872590f, -0.25373554f, -0.34842137f, + -0.16944158f, -0.29934883f, -0.37081963f, -0.45767376f, -0.42685136f, + -0.31498703f, 0.30061558f, -0.00000000f, -0.26682854f, 0.26608905f, + 0.00986124f, 0.16646899f, -0.30354804f, -0.36250564f, -0.23712766f, + -0.08046419f, 0.42928681f, 0.00000000f, -0.40501967f, -0.35994536f, + -0.33719671f, -0.40238690f, -0.22933462f, -0.25365788f, 0.00000000f, + 0.25826642f, 0.00000000f, 0.25398898f, 0.20715702f, -0.40681186f, + 0.28785828f, -0.39292991f, -0.25549501f, 0.33327377f, 0.34809110f, + 0.33408490f, 0.30801970f, -0.33711329f, 0.21778686f, 0.20447984f, + -0.14770623f, 0.29118595f, 0.12609763f, 0.00000000f, -0.31568047f, + -0.34930527f, 0.15383181f, -0.03949777f, 0.14880499f, -0.26342317f, + 0.21166025f, -0.26840779f, -0.40956807f, 0.00000000f, -0.00204527f, + 0.02735887f, -0.30006149f, 0.32290372f, -0.16705897f, 0.34655207f, + -0.10301089f, -0.07754418f, 0.18783134f, 0.19437505f, 0.32395050f, + 0.24700812f, 0.33365726f, 0.29055712f, 0.29207730f, 0.36227098f, + -0.18677557f, -0.00000000f, 0.28996137f, 0.04649902f, 0.27285215f, + -0.21543109f, 0.25294793f, 0.36992490f, 0.18544559f, 0.38035193f, + -0.16055748f, -0.00000000f, 0.22554907f, 0.16096617f, 0.36809224f, + 0.29568008f, 0.20004115f, 0.33168995f, -0.00000000f, 0.13129337f, + 0.00000000f, -0.11761655f, 0.20445409f, 0.39878458f, -0.11119441f, + 0.30695763f, 0.25857431f, -0.34149739f, -0.30576420f, -0.25491744f, + -0.22647747f, 0.33111930f, -0.28260636f, -0.02112951f, 0.20345563f, + 0.09200975f, -0.21090922f, 0.00000000f, 0.36004162f, 0.15144879f, + 0.33713689f, 0.18079522f, -0.22025944f, 0.24174914f, 0.09591800f, + 0.16491073f, 0.36423230f, -0.00000000f, 0.10661111f, 0.16903128f, + 0.13139343f, -0.46492830f, 0.19054085f, -0.37930626f, 0.33219948f, + 0.23591928f, -0.23410593f, -0.22365217f, -0.31048504f, -0.36255336f, + -0.31747428f, -0.39152670f, -0.26662147f, -0.30413687f, 0.18713741f, + 0.00000000f, -0.30633876f, 0.32250062f, -0.23394385f, 0.35119221f, + -0.18653491f, -0.36635265f, -0.16248502f, -0.07916050f, 0.20202848f, + -0.00000000f, -0.41633093f, -0.21909748f, -0.29012617f, -0.27820775f, + -0.12631547f, -0.47342074f, 0.00000000f, 0.21649295f, -0.00000000f, + 0.34760311f, 0.26350325f, -0.36375305f, 0.27047879f, -0.18158264f, + -0.27374983f, 0.31895113f, 0.41053665f, 0.31095767f, 0.30198845f, + -0.29076493f, 0.26480886f, 0.24022180f, -0.03409769f, 0.32897681f, + 0.34639847f, 0.00000000f, -0.29371312f, -0.23444685f, 0.04979870f, + -0.25437295f, 0.24826451f, -0.28205243f, 0.23044102f, -0.22612344f, + -0.29446504f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, 0.08529438f, -0.17595892f, -0.05010222f, -0.09771085f, + -0.00280371f, 0.17909965f, -0.05012424f, 0.15440951f, 0.46256760f, + 0.20411389f, 0.35080811f, 0.23007728f, 0.23234789f, 0.21768329f, + 0.42391470f, 0.25311920f, -0.34626120f, -0.00000000f, 0.19921157f, + -0.32829115f, 0.41098610f, -0.26202494f, 0.14062279f, 0.41974840f, + 0.26559430f, 0.11181462f, -0.27557141f, 0.00000000f, 0.33423704f, + 0.46971685f, -0.03428174f, 0.02883739f, 0.33898428f, 0.35299250f, + 0.00000000f, 0.31935674f, -0.00000000f, -0.14935251f, 0.08497789f, + 0.26414737f, -0.11812499f, 0.09636883f, 0.29249164f, -0.07621907f, + -0.39568302f, -0.39440766f, 0.03087756f, 0.15723707f, 0.01587318f, + -0.26412717f, -0.03863241f, 0.36250877f, -0.17527536f, -0.00000000f, + 0.23142926f, 0.34270167f, 0.06595954f, 0.23582047f, -0.20216195f, + 0.41851735f, -0.35342419f, 0.25808880f, 0.13896437f, -0.00000000f, + -0.12155695f, -0.03841317f, -0.23941335f, 0.33742121f, -0.08798193f, + 0.28086439f, -0.24967465f, -0.09162057f, 0.07595509f, 0.19977686f, + 0.39792213f, 0.33478746f, 0.37311992f, 0.44618455f, 0.31966513f, + 0.25841814f, -0.18187632f, 0.00000000f, 0.41955575f, 0.09323823f, + 0.04947830f, -0.13836706f, 0.30110985f, 0.28356725f, 0.27363563f, + 0.18721613f, -0.19213678f, 0.00000000f, 0.33936572f, 0.30225420f, + 0.38904536f, 0.28481859f, 0.25270742f, 0.37585616f, -0.00000000f, + -0.06374336f, -0.00000000f, -0.30100450f, 0.21550746f, 0.37626794f, + -0.06943347f, 0.40625402f, 0.25173610f, -0.18700016f, -0.24568258f, + -0.17270026f, -0.36349472f, 0.39126655f, -0.09575093f, 0.02679576f, + 0.32257581f, -0.11642990f, -0.02610820f, -0.00000000f, 0.29856315f, + 0.25245890f, 0.25568327f, 0.25807756f, -0.24594375f, 0.15240541f, + 0.15459496f, 0.26401892f, 0.43030772f, -0.00000000f, -0.00000000f, + 0.03451555f, -0.03302632f, 0.00000000f, 0.00000000f, 0.00957633f, + -0.00002194f, -0.01760937f, -0.00000000f, 0.00000008f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, 0.00816843f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.04534845f, 0.01548957f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, 0.03988186f, + -0.01232415f, -0.00000000f, 0.00010873f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000065f, -0.00062192f, 0.00000000f, -0.09053575f, + 0.00000000f, 0.00354282f, -0.07502786f, -0.00000000f, -0.04615397f, + 0.00000000f, -0.00000000f, 0.06959685f, -0.00000000f, 0.00000000f, + -0.00000000f, 0.00000000f, 0.01667577f, 0.00000000f, 0.00097898f, + -0.01610869f, 0.00807391f, 0.00000000f, -0.00000000f, 0.00000000f, + 0.01619381f, 0.00117383f, 0.01254043f, 0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.19522537f, -0.02299415f, + -0.21713254f, 0.37909052f, -0.04719403f, 0.41889289f, -0.31521663f, + -0.12163494f, 0.21521960f, 0.30252245f, 0.34025303f, 0.40600467f, + 0.45399049f, 0.40102518f, 0.40920046f, 0.44750616f, -0.07408064f, + 0.00000000f, 0.35160145f, -0.06914366f, 0.11185906f, -0.07974522f, + 0.37594408f, 0.36570659f, 0.31409350f, 0.22036555f, -0.31358477f, + 0.00000000f, 0.45113409f, 0.26149124f, 0.40712464f, 0.38837880f, + 0.28701621f, 0.41067114f, 0.00000000f, -0.03458394f, -0.00000000f, + -0.24122165f, 0.03968453f, 0.42860493f, -0.10699430f, 0.37858742f, + 0.32414109f, -0.25721782f, -0.17810744f, -0.25217345f, -0.23088929f, + 0.41102070f, -0.04968627f, -0.09815936f, 0.24246699f, -0.18198122f, + -0.13321972f, -0.00000000f, 0.32654035f, 0.34445235f, 0.15303321f, + 0.30420911f, -0.15753138f, 0.21010973f, -0.02224855f, 0.30371770f, + 0.36747998f, -0.00000000f, 0.37120762f, 0.24076121f, 0.29757783f, + -0.32440603f, 0.22207314f, -0.35253158f, 0.38127521f, 0.22210738f, + -0.21540748f, -0.17317447f, -0.30021846f, -0.30278581f, -0.38852364f, + -0.40112433f, -0.40711007f, -0.35233614f, 0.29270366f, -0.00000000f, + -0.41625890f, 0.17731518f, 0.14187166f, 0.23042144f, -0.29459044f, + -0.34160912f, -0.21315895f, -0.08823593f, 0.44306818f, 0.00000000f, + -0.34337282f, -0.44146624f, -0.38114834f, -0.33119491f, -0.34702790f, + -0.34938616f, -0.00000000f, 0.10531045f, -0.00000000f, 0.22860642f, + 0.12719914f, -0.41955036f, 0.26227525f, -0.37322310f, -0.21503469f, + 0.36908233f, 0.26832482f, 0.31324416f, 0.21359870f, -0.37138340f, + 0.14671545f, 0.13597892f, -0.09427991f, 0.27692327f, 0.10863744f, + -0.00000000f, -0.25862765f, -0.39936492f, -0.00735657f, -0.20700768f, + 0.11925972f, -0.23973027f, 0.08878148f, -0.33071980f, -0.43595594f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, 0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, 0.00000000f, + 0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000000f, 0.00000000f, + 0.20544417f, 0.04127026f, -0.24050681f, -0.16384913f, -0.21449083f, + 0.27248955f, 0.24937125f, -0.03199057f, 0.13086970f, -0.25318435f, + 0.32933304f, 0.28198311f, 0.22586827f, 0.08224676f, 0.22538981f, + 0.23745839f, -0.20746347f, -0.00000000f, 0.32413775f, -0.21262121f, + 0.45425889f, -0.12649871f, 0.05415213f, 0.34152469f, 0.16606748f, + 0.08969608f, -0.08859382f, -0.00000000f, 0.22986028f, -0.21438792f, + 0.06049296f, -0.24604860f, 0.34206387f, -0.04933317f, -0.00000000f, + 0.20686866f, 0.00000000f, -0.08185939f, 0.29214573f, 0.29070055f, + -0.31032151f, -0.10469076f, 0.16815951f, -0.29302225f, -0.33373737f, + -0.31377661f, -0.37630567f, 0.10517856f, -0.23865287f, -0.01526240f, + 0.02613574f, 0.10962481f, -0.20096326f, 0.00000000f, 0.24057062f, + 0.26935604f, 0.22800960f, 0.25461003f, -0.15117922f, 0.23761362f, + 0.07147257f, 0.24557301f, -0.10529563f, -0.00000000f, -0.00407480f, + 0.25932944f, 0.15170403f, -0.25274429f, 0.17532983f, -0.39356512f, + 0.35107824f, 0.31007785f, -0.25303054f, -0.09892780f, -0.23414730f, + -0.30061692f, -0.29597634f, -0.41358048f, -0.34320116f, -0.28926364f, + 0.17298470f, 0.00000000f, -0.31694153f, 0.28323290f, -0.24462080f, + 0.17520711f, -0.34751767f, -0.33944973f, -0.16863929f, -0.14927740f, + 0.39327934f, 0.00000001f, -0.20827074f, -0.20114207f, -0.29600626f, + -0.30617407f, -0.26884538f, -0.42398688f, 0.00000000f, 0.26090416f, + 0.00000000f, 0.34301850f, 0.27230400f, -0.36774510f, 0.28871563f, + -0.16234703f, -0.21699859f, 0.12816744f, 0.36724362f, 0.35328934f, + 0.22666287f, -0.29497468f, 0.32472947f, 0.23375665f, -0.04644899f, + 0.29202363f, 0.23056987f, 0.00000000f, -0.32396433f, -0.32133523f, + -0.04044373f, -0.21997941f, 0.28305024f, -0.25239739f, 0.21189818f, + -0.21905866f, -0.31879547f, -0.00000000f, -0.20875391f, 0.25579193f, + 0.08885533f, 0.25070626f, 0.28531775f, 0.23910286f, -0.20132478f, + -0.03094750f, -0.09903910f, 0.41670415f, 0.02617790f, -0.01894038f, + 0.07446875f, 0.26129487f, 0.32152766f, -0.00381315f, 0.33921224f, + 0.00000000f, 0.16163504f, 0.15488204f, -0.53111553f, 0.23432511f, + 0.31027034f, -0.16129665f, 0.02252920f, 0.27968806f, -0.30660665f, + -0.00000000f, 0.17379606f, 0.28820875f, 0.28317216f, 0.33171281f, + -0.22639734f, 0.16611721f, 0.00000000f, -0.10581992f, -0.00000000f, + -0.05650841f, -0.05632062f, 0.16483332f, 0.27402487f, 0.41852504f, + 0.30239588f, -0.13344260f, 0.23068543f, 0.14295983f, -0.06514889f, + 0.14602506f, 0.23913534f, 0.05065050f, 0.21470791f, -0.27825022f, + 0.09840839f, -0.00000000f, -0.21546313f, 0.16978884f, 0.17019457f, + -0.04448588f, 0.10237440f, -0.17820019f, 0.10145401f, -0.05723128f, + 0.27103072f, -0.00000000f, -0.25616100f, 0.11087517f, -0.28679743f, + 0.38333085f, 0.02846761f, 0.47659227f, -0.34625816f, -0.22185668f, + 0.09659167f, 0.33499712f, 0.37174940f, 0.33994293f, 0.42175066f, + 0.45723584f, 0.30100539f, 0.33555841f, -0.05676946f, 0.00000000f, + 0.33456475f, 0.05740290f, -0.27988750f, -0.16358745f, 0.34159577f, + 0.24731696f, 0.34163257f, 0.32468295f, -0.40202236f, 0.00000000f, + 0.21462469f, 0.27455148f, 0.39669952f, 0.38652912f, 0.32479095f, + 0.43467444f, 0.00000000f, -0.05740976f, 0.00000000f, -0.12069687f, + 0.10211547f, 0.41648698f, -0.14969528f, 0.26589021f, 0.34505075f, + -0.27355105f, -0.10083112f, -0.21730775f, -0.33541003f, 0.37365708f, + -0.10389762f, -0.01552837f, 0.32270244f, -0.35057241f, -0.16219763f, + 0.00000000f, 0.34974799f, 0.24404465f, 0.07819116f, 0.33059308f, + -0.21748666f, 0.13390915f, 0.07922500f, 0.26801270f, 0.35529053f, + -0.00000000f, 0.00000000f, -0.00003041f, -0.00000012f, -0.00000004f, + -0.00005929f, -0.00000000f, 0.00000000f, -0.00006686f, -0.00000000f, + -0.00000166f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000009f, + -0.00000045f, -0.00000000f, -0.00000006f, -0.00000000f, -0.00000000f, + -0.00000254f, 0.00000000f, -0.00000086f, -0.00000000f, -0.00000001f, + -0.00000000f, 0.00000451f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000005f, -0.00000000f, -0.00000000f, -0.00000000f, -0.00000183f, + 0.00000000f, -0.00058576f, 0.00000000f, -0.00000002f, -0.00002377f, + -0.00000000f, -0.00000006f, -0.00000931f, -0.00000173f, -0.00000000f, + -0.00000001f, -0.00000000f, -0.00000000f, 0.00000000f, -0.00002197f, + -0.00000000f, -0.00000020f, -0.00000000f, -0.00000000f, 0.00000000f, + -0.00000000f, -0.00000000f, -0.00000001f, 0.00000000f, -0.00000118f, + -0.00000000f, -0.00000000f, -0.00000000f, -0.00000111f, -0.00000000f, + -0.00280933f, -0.01970681f, -0.03325123f, -0.05753263f, 0.00000000f, + 0.03404333f, 0.03393129f, -0.05733723f, -0.00000000f, 0.00022534f, + 0.00018876f, -0.00000000f, 0.00000000f, 0.01230035f, -0.02996583f, + 0.00000000f, 0.02138031f, -0.00000000f, -0.00004800f, 0.01687740f, + 0.00526351f, -0.00236151f, -0.02526200f, 0.00652498f, -0.00122047f, + -0.06806025f, -0.03424972f, 0.00000000f, -0.02769613f, 0.01901360f, + -0.00000000f, -0.00006220f, -0.01819859f, -0.01526501f, -0.00000000f, + -0.07969155f, 0.00000000f, 0.03332415f, -0.07555190f, -0.00000000f, + -0.00481823f, -0.00000003f, -0.00339012f, -0.04079270f, -0.00000001f, + -0.00000000f, -0.00000000f, 0.00000000f, -0.08764525f, -0.00000000f, + 0.01951350f, 0.01234390f, -0.02331145f, 0.00000000f, -0.00319909f, + 0.02517195f, 0.00399085f, 0.00653576f, -0.05225201f, 0.04373496f, + 0.00000000f, -0.00003963f, 0.00000000f, +}; + +/* net.2.bias shape=[32] */ +static const float kf_b1[32] = { + -0.00000000f, 0.19831654f, -0.00000000f, 0.13575056f, 0.00000000f, + 0.24168548f, 0.17239006f, -0.03495844f, 0.15820183f, 0.04373357f, + 0.00000000f, -0.00000000f, 0.15034659f, 0.21151891f, -0.00139010f, + 0.13107549f, -0.04188872f, 0.18401425f, 0.08022061f, -0.00000000f, + 0.22026978f, 0.22237730f, 0.01070686f, 0.15843473f, 0.01765380f, + -0.00000000f, 0.09775762f, 0.13819563f, 0.17609084f, 0.25333014f, + -0.00187043f, 0.07947995f, +}; + +/* net.4.weight shape=[4, 32] */ +static const float kf_w2[128] = { + 0.00000003f, 0.28052181f, -0.00000000f, 0.15051171f, -0.00000043f, + -0.36880949f, -0.33373839f, -0.37120891f, 0.34672841f, 0.35945946f, + -0.00000072f, -0.00000000f, 0.35918972f, -0.40998372f, -0.17214386f, + -0.38508174f, -0.22501409f, 0.30296177f, -0.29385334f, 0.00000000f, + 0.33458918f, 0.36632687f, 0.00713974f, 0.37028390f, -0.28515628f, + -0.00000000f, 0.40578640f, -0.37444100f, -0.38164923f, 0.24415448f, + -0.00000000f, 0.02557430f, 0.00000057f, 0.38616702f, 0.00000003f, + 0.02033803f, -0.00000000f, 0.46998218f, 0.35550645f, -0.27789479f, + 0.35600835f, -0.29440251f, -0.00000000f, -0.00000002f, -0.11558559f, + -0.07866519f, -0.43894646f, 0.32195869f, -0.52386713f, -0.03157207f, + -0.36979708f, 0.00000000f, 0.32477206f, 0.25358054f, -0.00338123f, + 0.34066647f, -0.49772608f, -0.00000000f, -0.32423097f, -0.36482462f, + 0.29437792f, 0.33178380f, -0.00000000f, -0.07299196f, 0.00000000f, + 0.35917881f, 0.00000000f, 0.16631033f, -0.00000000f, 0.21235703f, + -0.31104434f, -0.08806990f, 0.39660275f, -0.33806035f, -0.00000000f, + -0.00000000f, 0.23905882f, 0.19473125f, -0.51309478f, 0.01356219f, + -0.24631551f, 0.03046135f, -0.19502313f, -0.00000000f, -0.44310683f, + 0.46135616f, 0.00001273f, 0.35062221f, -0.57078069f, 0.00000000f, + -0.37886310f, -0.18659690f, 0.51070136f, 0.51827151f, 0.00000598f, + -0.08181453f, 0.00000000f, -0.45865950f, -0.00000000f, -0.60478181f, + 0.00000000f, -0.25012982f, 0.31877875f, 0.40828240f, -0.49322826f, + -0.22537722f, -0.00000000f, -0.00000000f, -0.43637875f, 0.24172077f, + 0.51489693f, 0.19513592f, 0.46384546f, -0.56435233f, 0.41478279f, + 0.00000000f, -0.39774299f, -0.40908477f, -0.00000879f, -0.47654191f, + 0.39290428f, -0.00000003f, -0.17826343f, 0.47650301f, -0.24373116f, + -0.44740298f, 0.00000172f, 0.02739984f, +}; + +/* net.4.bias shape=[4] */ +static const float kf_b2[4] = { + 0.06628525f, + -0.06710004f, + -0.09710687f, + -0.11290303f, +}; + +/* Total parameters: 4708 */ +#endif // AV2_ENCODER_PARTITION_MLP_KF_WEIGHTS_H_ diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 748cca2afa..84efd0ad76 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -15,6 +15,8 @@ #include "av2/common/bru.h" #include "avm_ports/avm_timer.h" +#include "av2/encoder/partition_mlp.h" + #include "av2/common/av2_common_int.h" #include "av2/common/blockd.h" #include "av2/common/common_data.h" @@ -5832,6 +5834,58 @@ bool av2_rd_pick_partition( none_rd, &part_none_rd, &level_banks, ptree_luma); } + // Rectangular partitions search stage. + // Run the partition MLP on all eligible blocks (both dims >= 32px) and + // prune the less-likely rect direction when it confidently predicts NONE. + // Skip during retry pass to avoid infinite loop if pruning is enabled. + if (cpi->sf.part_sf.partition_pruning_with_mlp && + part_search_state.partition_allowed[PARTITION_NONE] && + part_search_state.forced_partition == PARTITION_INVALID && + block_size_wide[bsize] >= 32 && block_size_high[bsize] >= 32 && + bsize <= BLOCK_256X256 && !x->must_find_valid_partition) { + if (pb_source_variance == UINT_MAX) { + av2_setup_src_planes(x, cpi->source, mi_row, mi_col, num_planes, NULL); + pb_source_variance = av2_high_get_sby_perpixel_variance( + cpi, &x->plane[0].src, bsize, xd->bd); + } + const int above_part = xd->above_mbmi ? (int)xd->above_mbmi->partition : -1; + const int left_part = xd->left_mbmi ? (int)xd->left_mbmi->partition : -1; + const int is_intra = frame_is_intra_only(cm) ? 1 : 0; + const int bw = + (xd->mb_to_right_edge >= 0) + ? block_size_wide[bsize] + : block_size_wide[bsize] + (xd->mb_to_right_edge - 7) / 8; + const int bh = + (xd->mb_to_bottom_edge >= 0) + ? block_size_high[bsize] + : block_size_high[bsize] + (xd->mb_to_bottom_edge - 7) / 8; + // logits[i] is the raw (pre-softmax) score for partition class i: + // 0=NONE, 1=HORZ, 2=VERT, 3=SPLIT (matching PART_MLP_* constants). + float logits[4]; + const int pred = av2_partition_mlp_predict( + x->plane[0].src.buf, x->plane[0].src.stride, bw, bh, (int)bsize, + cm->quant_params.base_qindex - MAXQ_OFFSET * (xd->bd - 8), + pb_source_variance, part_search_state.none_rd, above_part, left_part, + is_intra, logits); + + if (pred == PART_MLP_NONE) { + const float none_thresh = + cpi->sf.part_sf.partition_pruning_with_mlp_none_thresh; + // Prune if the NONE logit exceeds the best non-NONE logit by more than + // none_thresh. This margin measures how decisively the model prefers NONE + // over any other partition type. + float best_non_none_logit = -1e9f; + for (int ci = 0; ci < 4; ci++) + if (ci != PART_MLP_NONE && logits[ci] > best_non_none_logit) + best_non_none_logit = logits[ci]; + if (logits[PART_MLP_NONE] - best_non_none_logit > none_thresh) { + if (logits[PART_MLP_HORZ] < logits[PART_MLP_VERT]) + part_search_state.prune_partition[PARTITION_HORZ] = true; + else + part_search_state.prune_partition[PARTITION_VERT] = true; + } + } + } // Search partition horz and vert. rectangular_partition_search( cpi, td, tile_data, tp, x, pc_tree, &x_ctx, &part_search_state, &best_rdc, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 3e48360c35..6fe7e4db69 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -403,9 +403,13 @@ static void set_good_speed_features_framesize_independent( // block, prunes when inter-mode ratio exceeds 50%, and early skips when // the current best partitioning is PARTITION_NONE). sf->part_sf.inter_sdp_fast_method_level = 1; + + sf->part_sf.partition_pruning_with_mlp = 1; + sf->part_sf.partition_pruning_with_mlp_none_thresh = 3.5f; } if (speed >= 2) { + sf->part_sf.partition_pruning_with_mlp_none_thresh = 2.5f; sf->part_sf.intra_cnn_split = 0; sf->part_sf.simple_motion_search_early_term_none = 1; // TODO(Venkat): Clean-up frame type dependency for @@ -700,6 +704,8 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->prune_part_4b_with_part_4a = 0; part_sf->two_pass_partition_search = 0; part_sf->prune_rect_with_ml = 0; + part_sf->partition_pruning_with_mlp = 0; + part_sf->partition_pruning_with_mlp_none_thresh = 0.0f; part_sf->end_part_search_after_consec_failures = 0; part_sf->ext_recur_depth_level = 0; part_sf->uneven_4way_recur_depth_level = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 92e4540637..4b63c19507 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -446,6 +446,14 @@ typedef struct PARTITION_SPEED_FEATURES { int remove_qp_restriction_with_ml; #endif // CONFIG_ML_PART_SPLIT + // Prune rectangular partition search using an MLP that predicts the + // winning partition type (NONE/HORZ/VERT/SPLIT) from block features. + int partition_pruning_with_mlp; + + // Logit margin (winner logit - best non-NONE logit) required to prune rect + // partitions when the MLP predicts NONE. + float partition_pruning_with_mlp_none_thresh; + bool disable_ext_partitions; bool disable_uneven_4way_partitions; } PARTITION_SPEED_FEATURES; diff --git a/test/partition_mlp_test.cc b/test/partition_mlp_test.cc new file mode 100644 index 0000000000..51ca4fc750 --- /dev/null +++ b/test/partition_mlp_test.cc @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include + +#include "third_party/googletest/src/googletest/include/gtest/gtest.h" + +#include "av2/encoder/partition_mlp.h" +#include "av2/common/enums.h" + +namespace { + +class PartitionMlpPredictTest : public ::testing::Test { + protected: + static constexpr int kBw = 32; + static constexpr int kBh = 32; + static constexpr int kStride = kBw; + + std::vector src_buf_ = std::vector(kStride * kBh); +}; + +TEST_F(PartitionMlpPredictTest, ReturnsValidClassIndexForFlatBlock) { + for (int i = 0; i < kStride * kBh; i++) src_buf_[i] = 512; + float logits[4]; + const int pred = av2_partition_mlp_predict( + src_buf_.data(), kStride, kBw, kBh, (int)BLOCK_32X32, 128, /*var=*/0, + /*none_rd=*/-1, /*above_part=*/-1, /*left_part=*/-1, /*is_intra=*/1, + logits); + EXPECT_GE(pred, PART_MLP_NONE); + EXPECT_LE(pred, PART_MLP_SPLIT); + for (int i = 0; i < 4; i++) EXPECT_TRUE(std::isfinite(logits[i])) << i; +} + +TEST_F(PartitionMlpPredictTest, PredictedClassIsArgmaxOfLogits) { + for (int r = 0; r < kBh; r++) + for (int c = 0; c < kBw; c++) + src_buf_[r * kStride + c] = (uint16_t)(r * 4 + c); + float logits[4]; + const int pred = av2_partition_mlp_predict( + src_buf_.data(), kStride, kBw, kBh, (int)BLOCK_32X32, 180, 900, 12345, + PART_MLP_HORZ, PART_MLP_VERT, /*is_intra=*/0, logits); + int expected_argmax = 0; + for (int i = 1; i < 4; i++) + if (logits[i] > logits[expected_argmax]) expected_argmax = i; + EXPECT_EQ(pred, expected_argmax); +} + +TEST_F(PartitionMlpPredictTest, IsDeterministic) { + for (int r = 0; r < kBh; r++) + for (int c = 0; c < kBw; c++) + src_buf_[r * kStride + c] = (uint16_t)((r * 37 + c * 91) % 1024); + float logits_a[4]; + float logits_b[4]; + const int pred_a = av2_partition_mlp_predict(src_buf_.data(), kStride, kBw, + kBh, (int)BLOCK_32X32, 210, 500, + -1, -1, -1, 1, logits_a); + const int pred_b = av2_partition_mlp_predict(src_buf_.data(), kStride, kBw, + kBh, (int)BLOCK_32X32, 210, 500, + -1, -1, -1, 1, logits_b); + EXPECT_EQ(pred_a, pred_b); + for (int i = 0; i < 4; i++) EXPECT_FLOAT_EQ(logits_a[i], logits_b[i]) << i; +} + +TEST_F(PartitionMlpPredictTest, IntraAndInterUseDifferentModels) { + for (int r = 0; r < kBh; r++) + for (int c = 0; c < kBw; c++) + src_buf_[r * kStride + c] = (uint16_t)((r * 53 + c * 17) % 1024); + float logits_kf[4]; + float logits_inter[4]; + av2_partition_mlp_predict(src_buf_.data(), kStride, kBw, kBh, + (int)BLOCK_32X32, 210, 500, -1, -1, -1, + /*is_intra=*/1, logits_kf); + av2_partition_mlp_predict(src_buf_.data(), kStride, kBw, kBh, + (int)BLOCK_32X32, 210, 500, -1, -1, -1, + /*is_intra=*/0, logits_inter); + // KF and inter models have independently trained weights; expect at least + // one logit to differ (a spurious exact match across all 4 would indicate + // the is_intra branch isn't actually selecting different weight tables). + bool any_diff = false; + for (int i = 0; i < 4; i++) + if (logits_kf[i] != logits_inter[i]) any_diff = true; + EXPECT_TRUE(any_diff); +} + +TEST_F(PartitionMlpPredictTest, HandlesNonSquareBlocks) { + const int bw = 64, bh = 32; + std::vector src(bw * bh, 300); + float logits[4]; + const int pred = + av2_partition_mlp_predict(src.data(), bw, bw, bh, (int)BLOCK_64X32, 150, + 100, -1, -1, -1, 1, logits); + EXPECT_GE(pred, PART_MLP_NONE); + EXPECT_LE(pred, PART_MLP_SPLIT); + for (int i = 0; i < 4; i++) EXPECT_TRUE(std::isfinite(logits[i])) << i; +} + +} // namespace diff --git a/test/test.cmake b/test/test.cmake index c87dc301af..20015004b7 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -208,6 +208,7 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/av2_nn_predict_test.cc" "${AVM_ROOT}/test/av2_intra_mlp_layer_test.cc" "${AVM_ROOT}/test/intra_mode_mlp_test.cc" + "${AVM_ROOT}/test/partition_mlp_test.cc" "${AVM_ROOT}/test/av2_wedge_utils_test.cc" "${AVM_ROOT}/test/av2_ccso_simd_cmp.cc" "${AVM_ROOT}/test/blend_a64_mask_1d_test.cc" From b9be7ce01348bd630024a38e57377bf69a73f865 Mon Sep 17 00:00:00 2001 From: Jerome Date: Wed, 29 Jul 2026 13:30:39 -0400 Subject: [PATCH 099/205] Add default speed features for RTC (#5155) --- av2/encoder/rdopt.c | 2 ++ av2/encoder/speed_features.c | 23 ++++++++++++++++++++++- av2/encoder/speed_features.h | 18 +++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 5640841233..d26810a387 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -8620,6 +8620,8 @@ static void av2_evaluate_intra_modes_in_inter_frame( if (!is_intra_mode_allowed) break; for (int mode_idx = INTRA_MODE_START; mode_idx < LUMA_MODE_COUNT; ++mode_idx) { + if (sf->rt_sf.use_only_dc_intra_interframe && mode_idx != DC_PRED) + continue; if (sf->intra_sf.skip_intra_in_interframe && search_state->intra_search_state.skip_intra_modes) break; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 6fe7e4db69..c90fbdf33e 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -639,6 +639,24 @@ static void set_good_speed_features_framesize_independent( } } +static void set_rt_speed_features_framesize_independent( + const AV2_COMP *const cpi, SPEED_FEATURES *const sf, int speed) { + // Set this good features as default for now. + set_good_speed_features_framesize_independent(cpi, sf, speed); + if (speed >= 6) { + sf->part_sf.partition_search_type = VAR_BASED_PARTITION; + sf->hl_sf.frame_parameter_update = 0; + sf->hl_sf.recode_loop = DISALLOW_RECODE; + sf->lpf_sf.lpf_pick = LPF_PICK_FROM_Q; + sf->lpf_sf.cdef_pick_method = CDEF_PICK_FROM_Q; + sf->rt_sf.use_only_dc_intra_interframe = true; + sf->inter_sf.prune_ref_frames = 0; + sf->mv_sf.search_method = DIAMOND; + sf->winner_mode_sf.tx_size_search_level = USE_LARGESTALL; + sf->rd_sf.tx_domain_dist_thres_level = 2; + } +} + static AVM_INLINE void init_hl_sf(HIGH_LEVEL_SPEED_FEATURES *hl_sf) { // best quality defaults hl_sf->frame_parameter_update = 1; @@ -1131,8 +1149,11 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { init_lpf_sf(&sf->lpf_sf); init_flexmv_sf(&sf->flexmv_sf); - if (oxcf->mode == GOOD) + if (oxcf->mode == GOOD) { set_good_speed_features_framesize_independent(cpi, sf, speed); + } else if (oxcf->mode == REALTIME) { + set_rt_speed_features_framesize_independent(cpi, sf, speed); + } if (!cpi->seq_params_locked) { cpi->common.seq_params.enable_restoration &= !sf->lpf_sf.disable_lr_filter; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 4b63c19507..ddbca29319 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -180,7 +180,10 @@ enum { SEARCH_PARTITION, // Always use a fixed size partition - FIXED_PARTITION + FIXED_PARTITION, + + // Partition using source variance for realtime mode. + VAR_BASED_PARTITION } UENUM1BYTE(PARTITION_SEARCH_TYPE); enum { @@ -990,6 +993,14 @@ typedef struct LOOP_FILTER_SPEED_FEATURES { int wienerns_refine_iters; } LOOP_FILTER_SPEED_FEATURES; +typedef struct REALTIME_SPEED_FEATURES { + // Use non-rd partition instead of rd partition. + int use_nonrd_partition; + + // Flag to disable all but DC intra mode for inter frame prediction. + bool use_only_dc_intra_interframe; +} REALTIME_SPEED_FEATURES; + typedef struct FLEXMV_PRECISION_SPEED_FEATURES { // Do not search 8-pel precision int do_not_search_8_pel_precision; @@ -1090,6 +1101,11 @@ typedef struct SPEED_FEATURES { */ FLEXMV_PRECISION_SPEED_FEATURES flexmv_sf; + /*! + * Realtime mode speed features: + */ + REALTIME_SPEED_FEATURES rt_sf; + } SPEED_FEATURES; /*!\cond */ From 0a3f5537dfcef20de6c413ecc164769d4b95af85 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Tue, 21 Jul 2026 12:35:47 +0530 Subject: [PATCH 100/205] Simplify pc tree recurse functions This change reduces duplicate code in functions that recurse through pc trees. No stats changed --- av2/encoder/context_tree.c | 523 +++++++----------------------- av2/encoder/context_tree.h | 2 + av2/encoder/partition_search.c | 530 ++++--------------------------- av2/encoder/partition_strategy.c | 68 +--- 4 files changed, 188 insertions(+), 935 deletions(-) diff --git a/av2/encoder/context_tree.c b/av2/encoder/context_tree.c index 33fc4420ff..c50cae4f00 100644 --- a/av2/encoder/context_tree.c +++ b/av2/encoder/context_tree.c @@ -20,8 +20,18 @@ static const BLOCK_SIZE square[MAX_SB_SIZE_LOG2 - 1] = { BLOCK_64X64, BLOCK_128X128, BLOCK_256X256, }; -static const int subblock_count[ALL_PARTITION_TYPES] = { 0, 2, 2, 4, 4, - 4, 4, 4, 4, 4 }; +static const int subblock_count[ALL_PARTITION_TYPES] = { + 1, // PARTITION_NONE + 2, // PARTITION_HORZ + 2, // PARTITION_VERT + 4, // PARTITION_HORZ_3 + 4, // PARTITION_VERT_3 + 4, // PARTITION_HORZ_4A + 4, // PARTITION_HORZ_4B + 4, // PARTITION_VERT_4A + 4, // PARTITION_VERT_4B + 4, // PARTITION_SPLIT +}; static const int step_multiplier[ALL_PARTITION_TYPES][4][2] = { { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_NONE @@ -41,8 +51,12 @@ static const int step_multiplier[ALL_PARTITION_TYPES][4][2] = { PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, PARTITION_TYPE partition, REGION_TYPE region, int *num_sub_parts) { - PC_TREE *const *child_nodes = NULL; + if (partition >= ALL_PARTITION_TYPES) { + assert(0 && "Unexpected partition type"); + return NULL; + } + PC_TREE *const *child_nodes = NULL; switch (partition) { case PARTITION_NONE: break; case PARTITION_HORZ: child_nodes = pc_tree->horizontal[region]; break; @@ -54,25 +68,37 @@ PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, case PARTITION_VERT_4A: child_nodes = pc_tree->vertical4a[region]; break; case PARTITION_VERT_4B: child_nodes = pc_tree->vertical4b[region]; break; case PARTITION_SPLIT: child_nodes = pc_tree->split[region]; break; - default: assert(0 && "Unexpected partition type"); break; } - *num_sub_parts = subblock_count[partition]; + // No child blocks for partition none. + *num_sub_parts = partition == PARTITION_NONE ? 0 : subblock_count[partition]; return child_nodes; } +/*!\brief Returns number of sub blocks for partition_type. */ +int get_subblock_count(PARTITION_TYPE partition_type) { + if (partition_type >= ALL_PARTITION_TYPES) { + assert(0 && "Unexpected partition type"); + return 0; + } + return subblock_count[partition_type]; +} + /*!\brief Computes the layout (coordinates and sizes) of subblocks resulting * from a partition. */ void get_partition_subblock_layout(PARTITION_TYPE partition_type, BLOCK_SIZE bsize, int mi_row, int mi_col, BLOCK_SIZE sub_sizes[4], int mi_rows[4], int mi_cols[4]) { - assert(partition_type <= PARTITION_SPLIT); + if (partition_type >= ALL_PARTITION_TYPES) { + assert(0 && "Unexpected partition type"); + return; + } const int eighth_step_h = block_size_high[bsize] / 8; const int eighth_step_w = block_size_wide[bsize] / 8; const BLOCK_SIZE part_subsize = get_partition_subsize(bsize, partition_type); - for (int sub_idx = 0; sub_idx < subblock_count[partition_type]; ++sub_idx) { + for (int sub_idx = 0; sub_idx < 4; ++sub_idx) { mi_rows[sub_idx] = mi_row + step_multiplier[partition_type][sub_idx][0] * eighth_step_h / 4; mi_cols[sub_idx] = mi_col + step_multiplier[partition_type][sub_idx][1] * @@ -335,30 +361,20 @@ PC_TREE *av2_alloc_pc_tree_node(TREE_TYPE tree_type, int mi_row, int mi_col, parent ? &parent->chroma_ref_info : NULL, parent ? parent->block_size : BLOCK_INVALID, parent_partition, subsampling_x, subsampling_y); - pc_tree->none[INTRA_REGION] = NULL; - pc_tree->none[MIXED_INTER_INTRA_REGION] = NULL; - pc_tree->none_chroma = NULL; - for (REGION_TYPE cur_region_type = INTRA_REGION; cur_region_type < REGION_TYPES; ++cur_region_type) { - for (int i = 0; i < 2; ++i) { - pc_tree->horizontal[cur_region_type][i] = NULL; - pc_tree->vertical[cur_region_type][i] = NULL; - } - for (int i = 0; i < 4; ++i) { - pc_tree->horizontal4a[cur_region_type][i] = NULL; - pc_tree->horizontal4b[cur_region_type][i] = NULL; - pc_tree->vertical4a[cur_region_type][i] = NULL; - pc_tree->vertical4b[cur_region_type][i] = NULL; - } - for (int i = 0; i < 4; ++i) { - pc_tree->horizontal3[cur_region_type][i] = NULL; - pc_tree->vertical3[cur_region_type][i] = NULL; - } - for (int i = 0; i < 4; ++i) { - pc_tree->split[cur_region_type][i] = NULL; + pc_tree->none[cur_region_type] = NULL; + for (PARTITION_TYPE partition_type = PARTITION_HORZ; + partition_type < ALL_PARTITION_TYPES; ++partition_type) { + int num_sub_parts = 0; + PC_TREE **child_nodes = (PC_TREE **)get_child_pc_trees( + pc_tree, partition_type, cur_region_type, &num_sub_parts); + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + child_nodes[sub_idx] = NULL; + } } } + pc_tree->none_chroma = NULL; return pc_tree; } @@ -385,90 +401,18 @@ void av2_free_pc_tree_recursive(PC_TREE *pc_tree, int num_planes, int keep_best, if (!keep_none && (!keep_best || (partition != PARTITION_NONE))) FREE_PMC_NODE(pc_tree->none[cur_region_type]); - for (int i = 0; i < 2; ++i) { - if ((!keep_best || (partition != PARTITION_HORZ) || - (cur_region_type != pc_tree->region_type)) && - pc_tree->horizontal[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->horizontal[cur_region_type][i], - num_planes, 0, 0); - pc_tree->horizontal[cur_region_type][i] = NULL; - } - if ((!keep_best || (partition != PARTITION_VERT) || - (cur_region_type != pc_tree->region_type)) && - pc_tree->vertical[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->vertical[cur_region_type][i], - num_planes, 0, 0); - pc_tree->vertical[cur_region_type][i] = NULL; - } - } - - if (!keep_best || (partition != PARTITION_HORZ_4A) || - (cur_region_type != pc_tree->region_type)) { - for (int i = 0; i < 4; ++i) { - if (pc_tree->horizontal4a[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->horizontal4a[cur_region_type][i], - num_planes, 0, 0); - pc_tree->horizontal4a[cur_region_type][i] = NULL; - } - } - } - - if (!keep_best || (partition != PARTITION_HORZ_4B) || - (cur_region_type != pc_tree->region_type)) { - for (int i = 0; i < 4; ++i) { - if (pc_tree->horizontal4b[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->horizontal4b[cur_region_type][i], - num_planes, 0, 0); - pc_tree->horizontal4b[cur_region_type][i] = NULL; - } - } - } - - if (!keep_best || (partition != PARTITION_VERT_4A) || - (cur_region_type != pc_tree->region_type)) { - for (int i = 0; i < 4; ++i) { - if (pc_tree->vertical4a[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->vertical4a[cur_region_type][i], - num_planes, 0, 0); - pc_tree->vertical4a[cur_region_type][i] = NULL; - } - } - } - - if (!keep_best || (partition != PARTITION_VERT_4B) || - (cur_region_type != pc_tree->region_type)) { - for (int i = 0; i < 4; ++i) { - if (pc_tree->vertical4b[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->vertical4b[cur_region_type][i], - num_planes, 0, 0); - pc_tree->vertical4b[cur_region_type][i] = NULL; - } - } - } - for (int i = 0; i < 4; ++i) { - if ((!keep_best || (partition != PARTITION_HORZ_3) || - (cur_region_type != pc_tree->region_type)) && - pc_tree->horizontal3[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->horizontal3[cur_region_type][i], - num_planes, 0, 0); - pc_tree->horizontal3[cur_region_type][i] = NULL; - } - if ((!keep_best || (partition != PARTITION_VERT_3) || - (cur_region_type != pc_tree->region_type)) && - pc_tree->vertical3[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->vertical3[cur_region_type][i], - num_planes, 0, 0); - pc_tree->vertical3[cur_region_type][i] = NULL; - } - } - - if (!keep_best || (partition != PARTITION_SPLIT) || - (cur_region_type != pc_tree->region_type)) { - for (int i = 0; i < 4; ++i) { - if (pc_tree->split[cur_region_type][i] != NULL) { - av2_free_pc_tree_recursive(pc_tree->split[cur_region_type][i], - num_planes, 0, 0); - pc_tree->split[cur_region_type][i] = NULL; + for (PARTITION_TYPE partition_type = PARTITION_HORZ; + partition_type < ALL_PARTITION_TYPES; ++partition_type) { + if (!keep_best || (partition != partition_type) || + (cur_region_type != pc_tree->region_type)) { + int num_sub_parts = 0; + PC_TREE **child_nodes = (PC_TREE **)get_child_pc_trees( + pc_tree, partition_type, cur_region_type, &num_sub_parts); + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + if (child_nodes[sub_idx] != NULL) { + av2_free_pc_tree_recursive(child_nodes[sub_idx], num_planes, 0, 0); + child_nodes[sub_idx] = NULL; + } } } } @@ -493,7 +437,6 @@ void av2_copy_pc_tree_recursive(MACROBLOCKD *xd, const AV2_COMMON *cm, dst->skippable = src->skippable; const BLOCK_SIZE bsize = dst->block_size; - const BLOCK_SIZE subsize = get_partition_subsize(bsize, src->partitioning); const int mi_row = src->mi_row; const int mi_col = src->mi_col; @@ -510,281 +453,61 @@ void av2_copy_pc_tree_recursive(MACROBLOCKD *xd, const AV2_COMMON *cm, } } - switch (src->partitioning) { - // PARTITION_NONE - case PARTITION_NONE: - if (dst->none[cur_region_type]) - av2_free_pmc(dst->none[cur_region_type], num_planes); - dst->none[cur_region_type] = NULL; - if (src->none[cur_region_type]) { - dst->none[cur_region_type] = av2_alloc_pmc( - cm, - !frame_is_intra_only(cm) && cur_region_type == INTRA_REGION - ? LUMA_PART - : tree_type, - mi_row, mi_col, bsize, dst, PARTITION_NONE, 0, ss_x, ss_y, - shared_bufs); - av2_copy_tree_context(dst->none[cur_region_type], - src->none[cur_region_type], num_planes); - if (is_inter_block(&src->none[cur_region_type]->mic, xd->tree_type)) { - xd->mi_row = mi_row; - xd->mi_col = mi_col; - av2_update_warp_param_bank(cm, xd, 0, - &dst->none[cur_region_type]->mic); - if (cm->seq_params.enable_refmvbank) { - av2_update_ref_mv_bank(cm, xd, 1, &dst->none[cur_region_type]->mic); - } - } else { - xd->mi_row = mi_row; - xd->mi_col = mi_col; - decide_rmb_unit_update_count(cm, xd, - &dst->none[cur_region_type]->mic); - } - } - break; - // PARTITION_SPLIT - case PARTITION_SPLIT: - if (is_partition_valid(bsize, PARTITION_SPLIT)) { - for (int i = 0; i < 4; ++i) { - if (dst->split[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->split[cur_region_type][i], - num_planes, 0, 0); - dst->split[cur_region_type][i] = NULL; - } - if (src->split[cur_region_type][i]) { - const int x_idx = (i & 1) * (mi_size_wide[bsize] >> 1); - const int y_idx = (i >> 1) * (mi_size_high[bsize] >> 1); - dst->split[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_row + y_idx, mi_col + x_idx, cm->sb_size, subsize, - dst, PARTITION_SPLIT, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive(xd, cm, dst->split[cur_region_type][i], - src->split[cur_region_type][i], ss_x, - ss_y, shared_bufs, tree_type, - num_planes); - } - } - } - break; - // PARTITION_HORZ - case PARTITION_HORZ: - if (is_partition_valid(bsize, PARTITION_HORZ)) { - for (int i = 0; i < 2; ++i) { - if (dst->horizontal[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->horizontal[cur_region_type][i], - num_planes, 0, 0); - dst->horizontal[cur_region_type][i] = NULL; - } - if (src->horizontal[cur_region_type][i]) { - const int this_mi_row = mi_row + i * (mi_size_high[bsize] >> 1); - dst->horizontal[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, this_mi_row, mi_col, cm->sb_size, subsize, dst, - PARTITION_HORZ, i, i == 1, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->horizontal[cur_region_type][i], - src->horizontal[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } - } - } - break; - // PARTITION_VERT - case PARTITION_VERT: - if (is_partition_valid(bsize, PARTITION_VERT)) { - for (int i = 0; i < 2; ++i) { - if (dst->vertical[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->vertical[cur_region_type][i], - num_planes, 0, 0); - dst->vertical[cur_region_type][i] = NULL; - } - if (src->vertical[cur_region_type][i]) { - const int this_mi_col = mi_col + i * (mi_size_wide[bsize] >> 1); - dst->vertical[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_row, this_mi_col, cm->sb_size, subsize, dst, - PARTITION_VERT, i, i == 1, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->vertical[cur_region_type][i], - src->vertical[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } - } - } - break; - // PARTITION_HORZ_4A - case PARTITION_HORZ_4A: - if (is_partition_valid(bsize, PARTITION_HORZ_4A)) { - const int ebh = (mi_size_high[bsize] >> 3); - const int mi_rows[4] = { mi_row, mi_row + ebh, mi_row + ebh * 3, - mi_row + ebh * 7 }; - const BLOCK_SIZE bsize_big = - get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - const BLOCK_SIZE subsizes[4] = { subsize, bsize_med, bsize_big, - subsize }; - for (int i = 0; i < 4; ++i) { - if (dst->horizontal4a[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->horizontal4a[cur_region_type][i], - num_planes, 0, 0); - dst->horizontal4a[cur_region_type][i] = NULL; - } - if (src->horizontal4a[cur_region_type][i]) { - dst->horizontal4a[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_rows[i], mi_col, cm->sb_size, subsizes[i], dst, - PARTITION_HORZ_4A, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->horizontal4a[cur_region_type][i], - src->horizontal4a[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } - } - } - break; - // PARTITION_HORZ_4B - case PARTITION_HORZ_4B: - if (is_partition_valid(bsize, PARTITION_HORZ_4B)) { - const int ebh = (mi_size_high[bsize] >> 3); - const int mi_rows[4] = { mi_row, mi_row + ebh, mi_row + ebh * 5, - mi_row + ebh * 7 }; - const BLOCK_SIZE bsize_big = - get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - const BLOCK_SIZE subsizes[4] = { subsize, bsize_big, bsize_med, - subsize }; - for (int i = 0; i < 4; ++i) { - if (dst->horizontal4b[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->horizontal4b[cur_region_type][i], - num_planes, 0, 0); - dst->horizontal4b[cur_region_type][i] = NULL; - } - if (src->horizontal4b[cur_region_type][i]) { - dst->horizontal4b[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_rows[i], mi_col, cm->sb_size, subsizes[i], dst, - PARTITION_HORZ_4B, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->horizontal4b[cur_region_type][i], - src->horizontal4b[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } - } - } - break; - // PARTITION_VERT_4A - case PARTITION_VERT_4A: - if (is_partition_valid(bsize, PARTITION_VERT_4A)) { - const int ebw = (mi_size_wide[bsize] >> 3); - const int mi_cols[4] = { mi_col, mi_col + ebw, mi_col + ebw * 3, - mi_col + ebw * 7 }; - const BLOCK_SIZE bsize_big = - get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - const BLOCK_SIZE subsizes[4] = { subsize, bsize_med, bsize_big, - subsize }; - for (int i = 0; i < 4; ++i) { - if (dst->vertical4a[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->vertical4a[cur_region_type][i], - num_planes, 0, 0); - dst->vertical4a[cur_region_type][i] = NULL; - } - if (src->vertical4a[cur_region_type][i]) { - dst->vertical4a[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_row, mi_cols[i], cm->sb_size, subsizes[i], dst, - PARTITION_VERT_4A, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->vertical4a[cur_region_type][i], - src->vertical4a[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } - } - } - break; - // PARTITION_VERT_4B - case PARTITION_VERT_4B: - if (is_partition_valid(bsize, PARTITION_VERT_4B)) { - const int ebw = (mi_size_wide[bsize] >> 3); - const int mi_cols[4] = { mi_col, mi_col + ebw, mi_col + ebw * 5, - mi_col + ebw * 7 }; - const BLOCK_SIZE bsize_big = - get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - const BLOCK_SIZE subsizes[4] = { subsize, bsize_big, bsize_med, - subsize }; - for (int i = 0; i < 4; ++i) { - if (dst->vertical4b[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->vertical4b[cur_region_type][i], - num_planes, 0, 0); - dst->vertical4b[cur_region_type][i] = NULL; - } - if (src->vertical4b[cur_region_type][i]) { - dst->vertical4b[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_row, mi_cols[i], cm->sb_size, subsizes[i], dst, - PARTITION_VERT_4B, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->vertical4b[cur_region_type][i], - src->vertical4b[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } + if (src->partitioning == PARTITION_NONE) { + if (dst->none[cur_region_type]) + av2_free_pmc(dst->none[cur_region_type], num_planes); + dst->none[cur_region_type] = NULL; + if (src->none[cur_region_type]) { + dst->none[cur_region_type] = av2_alloc_pmc( + cm, + !frame_is_intra_only(cm) && cur_region_type == INTRA_REGION + ? LUMA_PART + : tree_type, + mi_row, mi_col, bsize, dst, PARTITION_NONE, 0, ss_x, ss_y, + shared_bufs); + av2_copy_tree_context(dst->none[cur_region_type], + src->none[cur_region_type], num_planes); + xd->mi_row = mi_row; + xd->mi_col = mi_col; + if (is_inter_block(&src->none[cur_region_type]->mic, xd->tree_type)) { + av2_update_warp_param_bank(cm, xd, 0, &dst->none[cur_region_type]->mic); + if (cm->seq_params.enable_refmvbank) { + av2_update_ref_mv_bank(cm, xd, 1, &dst->none[cur_region_type]->mic); } + } else { + decide_rmb_unit_update_count(cm, xd, &dst->none[cur_region_type]->mic); } - break; - - // PARTITION_HORZ_3 - case PARTITION_HORZ_3: - if (is_partition_valid(bsize, PARTITION_HORZ_3)) { - for (int i = 0; i < 4; ++i) { - const BLOCK_SIZE this_subsize = - get_h_partition_subsize(bsize, i, PARTITION_HORZ_3); - const int offset_mr = - get_h_partition_offset_mi_row(bsize, i, PARTITION_HORZ_3); - const int offset_mc = - get_h_partition_offset_mi_col(bsize, i, PARTITION_HORZ_3); - if (dst->horizontal3[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->horizontal3[cur_region_type][i], - num_planes, 0, 0); - dst->horizontal3[cur_region_type][i] = NULL; - } - if (src->horizontal3[cur_region_type][i]) { - dst->horizontal3[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_row + offset_mr, mi_col + offset_mc, cm->sb_size, - this_subsize, dst, PARTITION_HORZ_3, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->horizontal3[cur_region_type][i], - src->horizontal3[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } + } + } else { + if (is_partition_valid(bsize, src->partitioning)) { + int num_sub_parts_dst = 0; + PC_TREE **dst_child_nodes = (PC_TREE **)get_child_pc_trees( + dst, src->partitioning, cur_region_type, &num_sub_parts_dst); + int num_sub_parts_src = 0; + PC_TREE **src_child_nodes = (PC_TREE **)get_child_pc_trees( + src, src->partitioning, cur_region_type, &num_sub_parts_src); + assert(num_sub_parts_src == num_sub_parts_dst); + int mi_rows[4], mi_cols[4]; + BLOCK_SIZE subblock_sizes[4]; + get_partition_subblock_layout(src->partitioning, bsize, mi_row, mi_col, + subblock_sizes, mi_rows, mi_cols); + for (int sub_idx = 0; sub_idx < num_sub_parts_src; ++sub_idx) { + if (dst_child_nodes[sub_idx]) { + av2_free_pc_tree_recursive(dst_child_nodes[sub_idx], num_planes, 0, + 0); + dst_child_nodes[sub_idx] = NULL; } - } - break; - // PARTITION_VERT_3 - case PARTITION_VERT_3: - if (is_partition_valid(bsize, PARTITION_VERT_3)) { - for (int i = 0; i < 4; ++i) { - const BLOCK_SIZE this_subsize = - get_h_partition_subsize(bsize, i, PARTITION_VERT_3); - const int offset_mr = - get_h_partition_offset_mi_row(bsize, i, PARTITION_VERT_3); - const int offset_mc = - get_h_partition_offset_mi_col(bsize, i, PARTITION_VERT_3); - if (dst->vertical3[cur_region_type][i]) { - av2_free_pc_tree_recursive(dst->vertical3[cur_region_type][i], - num_planes, 0, 0); - dst->vertical3[cur_region_type][i] = NULL; - } - if (src->vertical3[cur_region_type][i]) { - dst->vertical3[cur_region_type][i] = av2_alloc_pc_tree_node( - tree_type, mi_row + offset_mr, mi_col + offset_mc, cm->sb_size, - this_subsize, dst, PARTITION_VERT_3, i, i == 3, ss_x, ss_y); - av2_copy_pc_tree_recursive( - xd, cm, dst->vertical3[cur_region_type][i], - src->vertical3[cur_region_type][i], ss_x, ss_y, shared_bufs, - tree_type, num_planes); - } + if (src_child_nodes[sub_idx]) { + dst_child_nodes[sub_idx] = av2_alloc_pc_tree_node( + tree_type, mi_rows[sub_idx], mi_cols[sub_idx], cm->sb_size, + subblock_sizes[sub_idx], dst, src->partitioning, sub_idx, + sub_idx == (num_sub_parts_dst - 1), ss_x, ss_y); + av2_copy_pc_tree_recursive(xd, cm, dst_child_nodes[sub_idx], + src_child_nodes[sub_idx], ss_x, ss_y, + shared_bufs, tree_type, num_planes); } } - break; - default: assert(0 && "Not a valid partition."); break; + } } } @@ -904,33 +627,15 @@ PC_TREE *counterpart_from_different_partition(PC_TREE *pc_tree, PC_TREE *result; REGION_TYPE cur_region_type = pc_tree->region_type; - result = - look_for_counterpart_helper(pc_tree->split[cur_region_type][0], target); - if (result) return result; - result = look_for_counterpart_helper(pc_tree->horizontal[cur_region_type][0], - target); - if (result) return result; - result = look_for_counterpart_helper(pc_tree->vertical[cur_region_type][0], - target); - if (result) return result; - result = look_for_counterpart_helper( - pc_tree->horizontal4a[cur_region_type][0], target); - if (result) return result; - result = look_for_counterpart_helper( - pc_tree->horizontal4b[cur_region_type][0], target); - if (result) return result; - result = look_for_counterpart_helper(pc_tree->vertical4a[cur_region_type][0], - target); - if (result) return result; - result = look_for_counterpart_helper(pc_tree->vertical4b[cur_region_type][0], - target); - if (result) return result; - result = look_for_counterpart_helper(pc_tree->horizontal3[cur_region_type][0], - target); - if (result) return result; - result = look_for_counterpart_helper(pc_tree->vertical3[cur_region_type][0], - target); - if (result) return result; + + for (PARTITION_TYPE partition_type = PARTITION_HORZ; + partition_type < ALL_PARTITION_TYPES; ++partition_type) { + int num_sub_parts = 0; + PC_TREE **child_nodes = (PC_TREE **)get_child_pc_trees( + pc_tree, partition_type, cur_region_type, &num_sub_parts); + result = look_for_counterpart_helper(child_nodes[0], target); + if (result) return result; + } return NULL; } diff --git a/av2/encoder/context_tree.h b/av2/encoder/context_tree.h index 61a965c894..842b460fcb 100644 --- a/av2/encoder/context_tree.h +++ b/av2/encoder/context_tree.h @@ -148,6 +148,8 @@ PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, PARTITION_TYPE partition, REGION_TYPE region, int *num_sub_parts); +int get_subblock_count(PARTITION_TYPE partition_type); + void get_partition_subblock_layout(PARTITION_TYPE partition_type, BLOCK_SIZE bsize, int mi_row, int mi_col, BLOCK_SIZE sub_sizes[4], int mi_rows[4], diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 84efd0ad76..d6e72f557c 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -1863,10 +1863,6 @@ static void encode_sb(const AV2_COMP *const cpi, ThreadData *td, } assert(bsize < BLOCK_SIZES_ALL); - const int hbs_w = mi_size_wide[bsize] / 2; - const int hbs_h = mi_size_high[bsize] / 2; - const int ebs_w = mi_size_wide[bsize] / 8; - const int ebs_h = mi_size_high[bsize] / 8; const int is_partition_root = is_partition_point(bsize); const int ctx = 0; const PARTITION_TYPE partition = pc_tree->partitioning; @@ -2024,148 +2020,24 @@ static void encode_sb(const AV2_COMP *const cpi, ThreadData *td, encode_sdp_intra_region_yuv = 1; xd->tree_type = LUMA_PART; } - switch (partition) { - case PARTITION_NONE: - encode_b(cpi, tile_data, td, tp, mi_row, mi_col, dry_run, subsize, - partition, pc_tree->none[pc_tree->region_type], rate); - break; - case PARTITION_VERT: - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->vertical[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + hbs_w, dry_run, - subsize, pc_tree->vertical[pc_tree->region_type][1], - sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, - rate); - break; - case PARTITION_HORZ: - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->horizontal[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row + hbs_h, mi_col, dry_run, - subsize, pc_tree->horizontal[pc_tree->region_type][1], - sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, - rate); - break; - case PARTITION_HORZ_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->horizontal4a[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row + ebs_h, mi_col, dry_run, - bsize_med, pc_tree->horizontal4a[pc_tree->region_type][1], - sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row + 3 * ebs_h, mi_col, dry_run, - bsize_big, pc_tree->horizontal4a[pc_tree->region_type][2], - sub_tree[2], track_ptree_luma ? ptree_luma->sub_tree[2] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row + 7 * ebs_h, mi_col, dry_run, - subsize, pc_tree->horizontal4a[pc_tree->region_type][3], - sub_tree[3], track_ptree_luma ? ptree_luma->sub_tree[3] : NULL, - rate); - break; - } - case PARTITION_HORZ_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->horizontal4b[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row + ebs_h, mi_col, dry_run, - bsize_big, pc_tree->horizontal4b[pc_tree->region_type][1], - sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row + 5 * ebs_h, mi_col, dry_run, - bsize_med, pc_tree->horizontal4b[pc_tree->region_type][2], - sub_tree[2], track_ptree_luma ? ptree_luma->sub_tree[2] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row + 7 * ebs_h, mi_col, dry_run, - subsize, pc_tree->horizontal4b[pc_tree->region_type][3], - sub_tree[3], track_ptree_luma ? ptree_luma->sub_tree[3] : NULL, - rate); - break; - } - case PARTITION_VERT_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->vertical4a[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + ebs_w, dry_run, - bsize_med, pc_tree->vertical4a[pc_tree->region_type][1], - sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + 3 * ebs_w, dry_run, - bsize_big, pc_tree->vertical4a[pc_tree->region_type][2], - sub_tree[2], track_ptree_luma ? ptree_luma->sub_tree[2] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + 7 * ebs_w, dry_run, - subsize, pc_tree->vertical4a[pc_tree->region_type][3], - sub_tree[3], track_ptree_luma ? ptree_luma->sub_tree[3] : NULL, - rate); - break; - } - case PARTITION_VERT_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->vertical4b[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + ebs_w, dry_run, - bsize_big, pc_tree->vertical4b[pc_tree->region_type][1], - sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + 5 * ebs_w, dry_run, - bsize_med, pc_tree->vertical4b[pc_tree->region_type][2], - sub_tree[2], track_ptree_luma ? ptree_luma->sub_tree[2] : NULL, - rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + 7 * ebs_w, dry_run, - subsize, pc_tree->vertical4b[pc_tree->region_type][3], - sub_tree[3], track_ptree_luma ? ptree_luma->sub_tree[3] : NULL, - rate); - break; - } - case PARTITION_HORZ_3: - case PARTITION_VERT_3: { - for (int i = 0; i < 4; ++i) { - const BLOCK_SIZE this_bsize = - get_h_partition_subsize(bsize, i, partition); - const int offset_r = get_h_partition_offset_mi_row(bsize, i, partition); - const int offset_c = get_h_partition_offset_mi_col(bsize, i, partition); - const int this_mi_row = mi_row + offset_r; - const int this_mi_col = mi_col + offset_c; - PC_TREE *this_pc_tree = - partition == PARTITION_HORZ_3 - ? pc_tree->horizontal3[pc_tree->region_type][i] - : pc_tree->vertical3[pc_tree->region_type][i]; - - encode_sb(cpi, td, tile_data, tp, this_mi_row, this_mi_col, dry_run, - this_bsize, this_pc_tree, sub_tree[i], - track_ptree_luma ? ptree_luma->sub_tree[i] : NULL, rate); - } - break; + + if (partition == PARTITION_NONE) { + encode_b(cpi, tile_data, td, tp, mi_row, mi_col, dry_run, subsize, + partition, pc_tree->none[pc_tree->region_type], rate); + } else { + int num_sub_parts = 0; + PC_TREE *const *child_nodes = get_child_pc_trees( + pc_tree, partition, pc_tree->region_type, &num_sub_parts); + int mi_rows[4], mi_cols[4]; + BLOCK_SIZE subblock_sizes[4]; + get_partition_subblock_layout(partition, bsize, mi_row, mi_col, + subblock_sizes, mi_rows, mi_cols); + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + encode_sb(cpi, td, tile_data, tp, mi_rows[sub_idx], mi_cols[sub_idx], + dry_run, subblock_sizes[sub_idx], child_nodes[sub_idx], + sub_tree[sub_idx], + track_ptree_luma ? ptree_luma->sub_tree[sub_idx] : NULL, rate); } - case PARTITION_SPLIT: - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col, dry_run, subsize, - pc_tree->split[pc_tree->region_type][0], sub_tree[0], - track_ptree_luma ? ptree_luma->sub_tree[0] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row, mi_col + hbs_w, dry_run, - subsize, pc_tree->split[pc_tree->region_type][1], sub_tree[1], - track_ptree_luma ? ptree_luma->sub_tree[1] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row + hbs_h, mi_col, dry_run, - subsize, pc_tree->split[pc_tree->region_type][2], sub_tree[2], - track_ptree_luma ? ptree_luma->sub_tree[2] : NULL, rate); - encode_sb(cpi, td, tile_data, tp, mi_row + hbs_h, mi_col + hbs_w, dry_run, - subsize, pc_tree->split[pc_tree->region_type][3], sub_tree[3], - track_ptree_luma ? ptree_luma->sub_tree[3] : NULL, rate); - break; - default: assert(0 && "Invalid partition type."); break; } // encode the chroma blocks under one intra region in inter frame @@ -3680,36 +3552,10 @@ static void inter_sdp_copy_luma_mode_info(PC_TREE *pc_tree, PC_TREE *cur_pc_tree = pc_tree; PARTITION_TYPE partition = cur_pc_tree->partitioning; while (partition) { - switch (partition) { - case PARTITION_HORZ: - cur_pc_tree = cur_pc_tree->horizontal[INTRA_REGION][0]; - break; - case PARTITION_VERT: - cur_pc_tree = cur_pc_tree->vertical[INTRA_REGION][0]; - break; - case PARTITION_SPLIT: - cur_pc_tree = cur_pc_tree->split[INTRA_REGION][0]; - break; - case PARTITION_HORZ_4A: - cur_pc_tree = cur_pc_tree->horizontal4a[INTRA_REGION][0]; - break; - case PARTITION_HORZ_4B: - cur_pc_tree = cur_pc_tree->horizontal4b[INTRA_REGION][0]; - break; - case PARTITION_VERT_4A: - cur_pc_tree = cur_pc_tree->vertical4a[INTRA_REGION][0]; - break; - case PARTITION_VERT_4B: - cur_pc_tree = cur_pc_tree->vertical4b[INTRA_REGION][0]; - break; - case PARTITION_VERT_3: - cur_pc_tree = cur_pc_tree->vertical3[INTRA_REGION][0]; - break; - case PARTITION_HORZ_3: - cur_pc_tree = cur_pc_tree->horizontal3[INTRA_REGION][0]; - break; - default: assert(0 && "Invalid partition type!"); break; - } + int num_sub_parts = 0; + PC_TREE **child_nodes = (PC_TREE **)get_child_pc_trees( + cur_pc_tree, partition, INTRA_REGION, &num_sub_parts); + cur_pc_tree = child_nodes[0]; partition = cur_pc_tree->partitioning; } ctx_chroma_none->mic = cur_pc_tree->none[INTRA_REGION]->mic; @@ -4175,152 +4021,32 @@ static AVM_INLINE void trace_partition_boundary(bool *partition_boundaries, mi_row &= MAX_MIB_MASK; mi_col &= MAX_MIB_MASK; const PARTITION_TYPE partition = pc_tree->partitioning; - assert(bsize < BLOCK_SIZES_ALL); const int mi_width = mi_size_wide[bsize]; const int mi_height = mi_size_high[bsize]; - const int ebs_w = mi_size_wide[bsize] / 8; - const int ebs_h = mi_size_high[bsize] / 8; - const BLOCK_SIZE subsize = get_partition_subsize(bsize, partition); - REGION_TYPE cur_region_type = pc_tree->region_type; - switch (partition) { - case PARTITION_NONE: - for (int col = 0; col < mi_width; col++) { - partition_boundaries[(mi_row + mi_height - 1) * MAX_MIB_SIZE + - (mi_col + col)] |= (1 << HORZ); - } - for (int row = 0; row < mi_height; row++) { - partition_boundaries[(mi_row + row) * MAX_MIB_SIZE + mi_col + mi_width - - 1] |= (1 << VERT); - } - break; - case PARTITION_HORZ: - trace_partition_boundary( - partition_boundaries, pc_tree->horizontal[cur_region_type][0], mi_row, - mi_col, get_partition_subsize(bsize, PARTITION_HORZ)); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal[cur_region_type][1], - mi_row + mi_height / 2, mi_col, - get_partition_subsize(bsize, PARTITION_HORZ)); - break; - case PARTITION_VERT: - trace_partition_boundary( - partition_boundaries, pc_tree->vertical[cur_region_type][0], mi_row, - mi_col, get_partition_subsize(bsize, PARTITION_VERT)); - trace_partition_boundary( - partition_boundaries, pc_tree->vertical[cur_region_type][1], mi_row, - mi_col + mi_width / 2, get_partition_subsize(bsize, PARTITION_VERT)); - break; - case PARTITION_HORZ_3: - trace_partition_boundary( - partition_boundaries, pc_tree->horizontal3[cur_region_type][0], - mi_row, mi_col, get_h_partition_subsize(bsize, 0, PARTITION_HORZ_3)); - trace_partition_boundary( - partition_boundaries, pc_tree->horizontal3[cur_region_type][1], - mi_row + mi_height / 4, mi_col, - get_h_partition_subsize(bsize, 1, PARTITION_HORZ_3)); - trace_partition_boundary( - partition_boundaries, pc_tree->horizontal3[cur_region_type][2], - mi_row + mi_height / 4, mi_col + mi_width / 2, - get_h_partition_subsize(bsize, 1, PARTITION_HORZ_3)); - trace_partition_boundary( - partition_boundaries, pc_tree->horizontal3[cur_region_type][3], - mi_row + 3 * mi_height / 4, mi_col, - get_h_partition_subsize(bsize, 0, PARTITION_HORZ_3)); - break; - case PARTITION_VERT_3: - trace_partition_boundary( - partition_boundaries, pc_tree->vertical3[cur_region_type][0], mi_row, - mi_col, get_h_partition_subsize(bsize, 0, PARTITION_VERT_3)); - trace_partition_boundary( - partition_boundaries, pc_tree->vertical3[cur_region_type][1], mi_row, - mi_col + mi_width / 4, - get_h_partition_subsize(bsize, 1, PARTITION_VERT_3)); - trace_partition_boundary( - partition_boundaries, pc_tree->vertical3[cur_region_type][2], - mi_row + mi_height / 2, mi_col + mi_width / 4, - get_h_partition_subsize(bsize, 1, PARTITION_VERT_3)); - trace_partition_boundary( - partition_boundaries, pc_tree->vertical3[cur_region_type][3], mi_row, - mi_col + 3 * mi_width / 4, - get_h_partition_subsize(bsize, 0, PARTITION_VERT_3)); - break; - case PARTITION_HORZ_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4a[cur_region_type][0], - mi_row, mi_col, subsize); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4a[cur_region_type][1], - mi_row + ebs_h, mi_col, bsize_med); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4a[cur_region_type][2], - mi_row + 3 * ebs_h, mi_col, bsize_big); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4a[cur_region_type][3], - mi_row + 7 * ebs_h, mi_col, subsize); - break; - } - case PARTITION_HORZ_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4b[cur_region_type][0], - mi_row, mi_col, subsize); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4b[cur_region_type][1], - mi_row + ebs_h, mi_col, bsize_big); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4b[cur_region_type][2], - mi_row + 5 * ebs_h, mi_col, bsize_med); - trace_partition_boundary(partition_boundaries, - pc_tree->horizontal4b[cur_region_type][3], - mi_row + 7 * ebs_h, mi_col, subsize); - break; + + if (partition == PARTITION_NONE) { + for (int col = 0; col < mi_width; col++) { + partition_boundaries[(mi_row + mi_height - 1) * MAX_MIB_SIZE + + (mi_col + col)] |= (1 << HORZ); } - case PARTITION_VERT_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4a[cur_region_type][0], mi_row, - mi_col, subsize); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4a[cur_region_type][1], mi_row, - mi_col + ebs_w, bsize_med); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4a[cur_region_type][2], mi_row, - mi_col + 3 * ebs_w, bsize_big); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4a[cur_region_type][3], mi_row, - mi_col + 7 * ebs_w, subsize); - break; + for (int row = 0; row < mi_height; row++) { + partition_boundaries[(mi_row + row) * MAX_MIB_SIZE + mi_col + mi_width - + 1] |= (1 << VERT); } - case PARTITION_VERT_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4b[cur_region_type][0], mi_row, - mi_col, subsize); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4b[cur_region_type][1], mi_row, - mi_col + ebs_w, bsize_big); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4b[cur_region_type][2], mi_row, - mi_col + 5 * ebs_w, bsize_med); - trace_partition_boundary(partition_boundaries, - pc_tree->vertical4b[cur_region_type][3], mi_row, - mi_col + 7 * ebs_w, subsize); - break; + } else { + int num_sub_parts = 0; + PC_TREE *const *child_nodes = get_child_pc_trees( + pc_tree, pc_tree->partitioning, pc_tree->region_type, &num_sub_parts); + + int mi_rows[4], mi_cols[4]; + BLOCK_SIZE subblock_sizes[4]; + get_partition_subblock_layout(pc_tree->partitioning, bsize, mi_row, mi_col, + subblock_sizes, mi_rows, mi_cols); + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + trace_partition_boundary(partition_boundaries, child_nodes[sub_idx], + mi_rows[sub_idx], mi_cols[sub_idx], + subblock_sizes[sub_idx]); } - default: assert(0 && "Invalid partition type in trace_partition_boundary!"); } } @@ -4601,9 +4327,11 @@ static AVM_INLINE void prune_ext_partitions_3way( } // Early termination of SDP for intra blocks in inter frames -static INLINE void early_termination_inter_sdp(PC_TREE *pc_tree, +static INLINE void early_termination_inter_sdp(const PC_TREE *pc_tree, unsigned int *total_count, unsigned int *inter_mode_count) { + if (pc_tree == NULL) return; + REGION_TYPE cur_region_type = pc_tree->region_type; if (pc_tree->partitioning == PARTITION_NONE) { if (pc_tree->none[cur_region_type] == NULL) return; @@ -4611,82 +4339,14 @@ static INLINE void early_termination_inter_sdp(PC_TREE *pc_tree, if (mi == NULL) return; *total_count += 1; if (mi->mode >= NEARMV && mi->mode < MB_MODE_COUNT) *inter_mode_count += 1; - return; - } - switch (pc_tree->partitioning) { - case PARTITION_HORZ: - early_termination_inter_sdp(pc_tree->horizontal[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal[cur_region_type][1], - total_count, inter_mode_count); - break; - case PARTITION_VERT: - early_termination_inter_sdp(pc_tree->vertical[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical[cur_region_type][1], - total_count, inter_mode_count); - break; - case PARTITION_HORZ_4A: - early_termination_inter_sdp(pc_tree->horizontal4a[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal4a[cur_region_type][1], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal4a[cur_region_type][2], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal4a[cur_region_type][3], - total_count, inter_mode_count); - break; - case PARTITION_HORZ_4B: - early_termination_inter_sdp(pc_tree->horizontal4b[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal4b[cur_region_type][1], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal4b[cur_region_type][2], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal4b[cur_region_type][3], - total_count, inter_mode_count); - break; - case PARTITION_VERT_4A: - early_termination_inter_sdp(pc_tree->vertical4a[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical4a[cur_region_type][1], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical4a[cur_region_type][2], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical4a[cur_region_type][3], - total_count, inter_mode_count); - break; - case PARTITION_VERT_4B: - early_termination_inter_sdp(pc_tree->vertical4b[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical4b[cur_region_type][1], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical4b[cur_region_type][2], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical4b[cur_region_type][3], - total_count, inter_mode_count); - break; - case PARTITION_HORZ_3: - early_termination_inter_sdp(pc_tree->horizontal3[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal3[cur_region_type][1], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal3[cur_region_type][2], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->horizontal3[cur_region_type][3], - total_count, inter_mode_count); - break; - case PARTITION_VERT_3: - early_termination_inter_sdp(pc_tree->vertical3[cur_region_type][0], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical3[cur_region_type][1], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical3[cur_region_type][2], - total_count, inter_mode_count); - early_termination_inter_sdp(pc_tree->vertical3[cur_region_type][3], - total_count, inter_mode_count); - break; - default: break; + } else { + int num_sub_parts = 0; + PC_TREE *const *child_nodes = get_child_pc_trees( + pc_tree, pc_tree->partitioning, pc_tree->region_type, &num_sub_parts); + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + early_termination_inter_sdp(child_nodes[sub_idx], total_count, + inter_mode_count); + } } } @@ -5190,82 +4850,16 @@ static AVM_INLINE int get_partition_depth(const PC_TREE *pc_tree, int curr_depth) { if (pc_tree == NULL) return curr_depth; const PARTITION_TYPE partition = pc_tree->partitioning; + if (partition == PARTITION_NONE) return curr_depth; + + int num_sub_parts = 0; + PC_TREE *const *child_nodes = get_child_pc_trees( + pc_tree, partition, pc_tree->region_type, &num_sub_parts); + const int depth_inc = (partition == PARTITION_SPLIT) ? 2 : 1; int max_depth = curr_depth; - int cur_region_type = pc_tree->region_type; - switch (partition) { - case PARTITION_NONE: break; - case PARTITION_SPLIT: - for (int idx = 0; idx < 4; idx++) { - max_depth = AVMMAX( - max_depth, get_partition_depth(pc_tree->split[cur_region_type][idx], - curr_depth + 2)); - } - break; - case PARTITION_HORZ: - for (int idx = 0; idx < 2; idx++) { - max_depth = AVMMAX( - max_depth, - get_partition_depth(pc_tree->horizontal[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_VERT: - for (int idx = 0; idx < 2; idx++) { - max_depth = - AVMMAX(max_depth, - get_partition_depth(pc_tree->vertical[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_HORZ_3: - for (int idx = 0; idx < 4; idx++) { - max_depth = AVMMAX( - max_depth, - get_partition_depth(pc_tree->horizontal3[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_VERT_3: - for (int idx = 0; idx < 4; idx++) { - max_depth = - AVMMAX(max_depth, - get_partition_depth(pc_tree->vertical3[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_HORZ_4A: - for (int idx = 0; idx < 4; idx++) { - max_depth = AVMMAX( - max_depth, - get_partition_depth(pc_tree->horizontal4a[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_HORZ_4B: - for (int idx = 0; idx < 4; idx++) { - max_depth = AVMMAX( - max_depth, - get_partition_depth(pc_tree->horizontal4b[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_VERT_4A: - for (int idx = 0; idx < 4; idx++) { - max_depth = AVMMAX( - max_depth, - get_partition_depth(pc_tree->vertical4a[cur_region_type][idx], - curr_depth + 1)); - } - break; - case PARTITION_VERT_4B: - for (int idx = 0; idx < 4; idx++) { - max_depth = AVMMAX( - max_depth, - get_partition_depth(pc_tree->vertical4b[cur_region_type][idx], - curr_depth + 1)); - } - break; - default: assert(0); break; + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + max_depth = AVMMAX(max_depth, get_partition_depth(child_nodes[sub_idx], + curr_depth + depth_inc)); } return max_depth; } diff --git a/av2/encoder/partition_strategy.c b/av2/encoder/partition_strategy.c index f9e7313dd3..efbf5ddf9a 100644 --- a/av2/encoder/partition_strategy.c +++ b/av2/encoder/partition_strategy.c @@ -1309,67 +1309,19 @@ static INLINE void add_start_mv_to_partition( SimpleMotionDataBufs *sms_bufs, int mi_row, int mi_col, BLOCK_SIZE bsize, BLOCK_SIZE sb_size, PARTITION_TYPE partition, MV start_mv) { assert(bsize < BLOCK_SIZES_ALL); - const int eighth_step_h = block_size_high[bsize] / 8; - const int eighth_step_w = block_size_wide[bsize] / 8; - static const int subblock_count[ALL_PARTITION_TYPES] = { - 1, // PARTITION_NONE - 2, // PARTITION_HORZ - 2, // PARTITION_VERT - 4, // PARTITION_HORZ_3 - 4, // PARTITION_VERT_3 - 4, // PARTITION_HORZ_4A - 4, // PARTITION_HORZ_4B - 4, // PARTITION_VERT_4A - 4, // PARTITION_VERT_4B - 4, // PARTITION_SPLIT - }; - // PARTITION x NUM_SUBBLOCKS x (ROW and COL) - static const int step_multiplier[ALL_PARTITION_TYPES][4][2] = { - { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_NONE - { { 0, 0 }, { 4, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_HORZ - { { 0, 0 }, { 0, 4 }, { 0, 0 }, { 0, 0 } }, // PARTITION_VERT - { { 0, 0 }, { 2, 0 }, { 2, 4 }, { 6, 0 } }, // PARTITION_HORZ_3 - { { 0, 0 }, { 0, 2 }, { 4, 2 }, { 0, 6 } }, // PARTITION_VERT_3 - { { 0, 0 }, { 1, 0 }, { 3, 0 }, { 7, 0 } }, // PARTITION_HORZ_4A - { { 0, 0 }, { 1, 0 }, { 5, 0 }, { 7, 0 } }, // PARTITION_HORZ_4B - { { 0, 0 }, { 0, 1 }, { 0, 3 }, { 0, 7 } }, // PARTITION_VERT_4A - { { 0, 0 }, { 0, 1 }, { 0, 5 }, { 0, 7 } }, // PARTITION_VERT_4B - { { 0, 0 }, { 0, 4 }, { 4, 0 }, { 4, 4 } }, // PARTITION_SPLIT - }; - - // Sizes of subblocks. const BLOCK_SIZE part_subsize = get_partition_subsize(bsize, partition); if (part_subsize == BLOCK_INVALID) return; - BLOCK_SIZE subsizes[4] = { part_subsize, part_subsize, part_subsize, - part_subsize }; - if (partition == PARTITION_HORZ_4A) { - subsizes[2] = get_partition_subsize(bsize, PARTITION_HORZ); - subsizes[1] = get_partition_subsize(subsizes[2], PARTITION_HORZ); - } else if (partition == PARTITION_HORZ_4B) { - subsizes[1] = get_partition_subsize(bsize, PARTITION_HORZ); - subsizes[2] = get_partition_subsize(subsizes[1], PARTITION_HORZ); - } else if (partition == PARTITION_VERT_4A) { - subsizes[2] = get_partition_subsize(bsize, PARTITION_VERT); - subsizes[1] = get_partition_subsize(subsizes[2], PARTITION_VERT); - } else if (partition == PARTITION_VERT_4B) { - subsizes[1] = get_partition_subsize(bsize, PARTITION_VERT); - subsizes[2] = get_partition_subsize(subsizes[1], PARTITION_VERT); - } - if (partition == PARTITION_HORZ_3 || partition == PARTITION_VERT_3) { - for (int idx = 0; idx < subblock_count[partition]; idx++) { - subsizes[idx] = get_h_partition_subsize(bsize, idx, partition); - } - } - - for (int idx = 0; idx < subblock_count[partition]; idx++) { - assert(subsizes[idx] != BLOCK_INVALID); - const int sub_row = - mi_row + step_multiplier[partition][idx][0] * eighth_step_h / 4; - const int sub_col = - mi_col + step_multiplier[partition][idx][1] * eighth_step_w / 4; - SimpleMotionData *subblock = av2_get_sms_data_entry( - sms_bufs, sub_row, sub_col, subsizes[idx], sb_size, 1); + int subblock_cnt = get_subblock_count(partition); + int mi_rows[4], mi_cols[4]; + BLOCK_SIZE subsizes[4]; + get_partition_subblock_layout(partition, bsize, mi_row, mi_col, subsizes, + mi_rows, mi_cols); + for (int sub_idx = 0; sub_idx < subblock_cnt; sub_idx++) { + assert(subsizes[sub_idx] != BLOCK_INVALID); + SimpleMotionData *subblock = + av2_get_sms_data_entry(sms_bufs, mi_rows[sub_idx], mi_cols[sub_idx], + subsizes[sub_idx], sb_size, 1); add_start_mv_to_block(subblock, start_mv); } } From 865d74ed539c9bbe583fc2f73221f116fe7acb44 Mon Sep 17 00:00:00 2001 From: Lin Zheng Date: Wed, 29 Jul 2026 15:25:27 +0000 Subject: [PATCH 101/205] Tweak adaptive_tx_type_search speed feature Anchor: 6d405a307dc47579befa9642a8d700e6c443d82a Test condition: CTC, RA, 33 frames, speed 1 +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.01% | -0.03% | 0.08% | 0.01% | 99.14% | | A2 | 0.02% | 0.05% | 0.03% | 0.02% | 97.98% | |avg wo b2| 0.02% | 0.04% | 0.04% | 0.02% | 97.69% | +---------+--------+--------+--------+--------+----------+ STATS_CHANGED --- av2/encoder/speed_features.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index c90fbdf33e..88d404186c 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -1397,6 +1397,11 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { ((speed < 1) ? qindex_thresh2 : qindex_thresh4)) { sf->tx_sf.restrict_tx_partition_type_search = 1; } + + if (speed >= 1 && cm->quant_params.base_qindex <= qindex_thresh2) { + sf->tx_sf.adaptive_tx_type_search_idx = 5; + sf->tx_sf.adaptive_tx_partition_type_search_idx = 5; + } } if (cm->quant_params.base_qindex <= qindex_thresh && From 819fe8d54d5b971e4596597d7b6ad17299a47ac9 Mon Sep 17 00:00:00 2001 From: yunqingwang1 Date: Fri, 31 Jul 2026 13:58:03 -0700 Subject: [PATCH 102/205] Add enable_low_complexity_decode (LC) mode (#5183) Introduced an encoder option: "enable_low_complexity_decode" (LC mode) to target reduced decoding complexity. This mode is disabled by default. Also added related API control for ongoing LC mode development. --- apps/avmenc.c | 2 ++ av2/arg_defs.c | 4 ++++ av2/arg_defs.h | 1 + av2/av2_cx_iface.c | 39 +++++++++++++++++++++++++++++++++++++-- av2/encoder/encoder.h | 3 +++ avm/avm_encoder.h | 7 +++++++ avm/avmcx.h | 9 +++++++++ common/args.c | 1 + 8 files changed, 64 insertions(+), 2 deletions(-) diff --git a/apps/avmenc.c b/apps/avmenc.c index 18e175cb58..100bdba18e 100644 --- a/apps/avmenc.c +++ b/apps/avmenc.c @@ -304,6 +304,7 @@ const arg_def_t *av2_key_val_args[] = { &g_av2_codec_arg_defs.enable_joint_mvd, &g_av2_codec_arg_defs.enable_keyframe_filtering, &g_av2_codec_arg_defs.enable_lf_sub_pu, + &g_av2_codec_arg_defs.enable_low_complexity_decode, &g_av2_codec_arg_defs.enable_masked_comp, &g_av2_codec_arg_defs.enable_mfh_obu_signaling, &g_av2_codec_arg_defs.enable_mhccp, @@ -632,6 +633,7 @@ static void init_config(cfg_options_t *config) { config->scan_type_info_present_flag = 0; config->enable_mfh_obu_signaling = 0; config->operating_points_count = 1; + config->enable_low_complexity_decode = 0; } int read_icc_profile(struct AvxEncoderConfig *global, const char *file) { diff --git a/av2/arg_defs.c b/av2/arg_defs.c index 74d4e8510b..ddc9631c3d 100644 --- a/av2/arg_defs.c +++ b/av2/arg_defs.c @@ -886,6 +886,10 @@ const av2_codec_arg_definitions_t g_av2_codec_arg_defs = { .use_short_metadata = ARG_DEF(NULL, "use-short-metadata", 1, "Use short metadata OBU format " "(0: GROUP format [default], 1: SHORT format)"), + .enable_low_complexity_decode = + ARG_DEF(NULL, "enable-low-complexity-decode", 1, + "Enable low complexity decode " + "(0: false (default), 1: true)"), #endif // CONFIG_AV2_ENCODER .enable_short_refresh_frame_flags = ARG_DEF(NULL, "enable-short-refresh-frame-flags", 1, diff --git a/av2/arg_defs.h b/av2/arg_defs.h index b79087dc5a..896c51fa4a 100644 --- a/av2/arg_defs.h +++ b/av2/arg_defs.h @@ -278,6 +278,7 @@ typedef struct av2_codec_arg_definitions { arg_def_t dpb_size; arg_def_t enable_bru; arg_def_t disable_loopfilters_across_tiles; + arg_def_t enable_low_complexity_decode; #endif // CONFIG_AV2_ENCODER arg_def_t frame_hash_metadata; arg_def_t frame_hash_per_plane; diff --git a/av2/av2_cx_iface.c b/av2/av2_cx_iface.c index c4927e6e8d..a69dd943ed 100644 --- a/av2/av2_cx_iface.c +++ b/av2/av2_cx_iface.c @@ -245,6 +245,7 @@ struct av2_extracfg { int buffer_refresh_multi_layers_test[REF_FRAMES]; int multi_layers_lag_test; int force_deferred_frames_for_ras_test; + unsigned int enable_low_complexity_decode; }; // Example subgop configs. Currently not used by default. @@ -574,6 +575,7 @@ static struct av2_extracfg default_extra_cfg = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // buffer_refresh_multi_layers_test 0, // multi_layers_test for nozero lag 0, // force_deferred_frames_for_ras_test + 0, // enable_low_complexity_decode }; // clang-format on @@ -860,6 +862,8 @@ static avm_codec_err_t validate_config(avm_codec_alg_priv_t *ctx, RANGE_CHECK(extra_cfg, reduced_tx_type_set, 0, 3); + RANGE_CHECK_HI(extra_cfg, enable_low_complexity_decode, 1); + return AVM_CODEC_OK; } @@ -1035,6 +1039,7 @@ static void update_encoder_config(cfg_options_t *cfg, cfg->enable_ext_seg = extra_cfg->enable_ext_seg; cfg->dpb_size = extra_cfg->dpb_size; cfg->operating_points_count = extra_cfg->operating_points_count; + cfg->enable_low_complexity_decode = extra_cfg->enable_low_complexity_decode; } static void update_default_encoder_config(const cfg_options_t *cfg, @@ -1154,6 +1159,7 @@ static void update_default_encoder_config(const cfg_options_t *cfg, extra_cfg->scan_type_info_present_flag = cfg->scan_type_info_present_flag; extra_cfg->enable_mfh_obu_signaling = cfg->enable_mfh_obu_signaling; extra_cfg->operating_points_count = cfg->operating_points_count; + extra_cfg->enable_low_complexity_decode = cfg->enable_low_complexity_decode; } static double convert_qp_offset(int qp, int qp_offset, int bit_depth) { @@ -1752,6 +1758,18 @@ static avm_codec_err_t set_encoder_config(AV2EncoderConfig *oxcf, oxcf->unit_test_cfg.force_deferred_frames_for_ras_test = extra_cfg->force_deferred_frames_for_ras_test; + // Now, low complexity decode mode is only supported for good-quality + // encoding. This can be further modified if needed. + oxcf->enable_low_complexity_decode = + extra_cfg->enable_low_complexity_decode && + cfg->g_usage == AVM_USAGE_GOOD_QUALITY; + if (extra_cfg->enable_low_complexity_decode && + cfg->g_usage != AVM_USAGE_GOOD_QUALITY) { + fprintf(stderr, + "Warning: setting enable_low_complexity_decode to 0 since it " + "requires good-quality usage.\n"); + } + if (update_config) { update_encoder_config(&cfg->encoder_cfg, extra_cfg); } @@ -2763,6 +2781,14 @@ static avm_codec_err_t ctrl_set_force_deferred_frames_for_ras_test( return update_extra_cfg(ctx, &extra_cfg); } +static avm_codec_err_t ctrl_set_enable_low_complexity_decode( + avm_codec_alg_priv_t *ctx, va_list args) { + struct av2_extracfg extra_cfg = ctx->extra_cfg; + extra_cfg.enable_low_complexity_decode = + CAST(AV2E_SET_ENABLE_LOW_COMPLEXITY_DECODE, args); + return update_extra_cfg(ctx, &extra_cfg); +} + static avm_codec_err_t create_stats_buffer(FIRSTPASS_STATS **frame_stats_buffer, STATS_BUFFER_CTX *stats_buf_context, int num_lap_buffers) { @@ -4535,6 +4561,11 @@ static avm_codec_err_t encoder_set_option(avm_codec_alg_priv_t *ctx, } else if (avm_arg_match_helper(&arg, &g_av2_codec_arg_defs.enable_bru, argv, err_string)) { extra_cfg.enable_bru = avm_arg_parse_int_helper(&arg, err_string); + } else if (avm_arg_match_helper( + &arg, &g_av2_codec_arg_defs.enable_low_complexity_decode, argv, + err_string)) { + extra_cfg.enable_low_complexity_decode = + avm_arg_parse_int_helper(&arg, err_string); } else if (avm_arg_match_helper( &arg, &g_av2_codec_arg_defs.disable_loopfilters_across_tiles, argv, err_string)) { @@ -4721,6 +4752,8 @@ static avm_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { { AV2E_SET_MONOTONIC_OUTPUT_ORDER, ctrl_set_monotonic_output_order }, { AV2E_SET_FORCE_DEFERRED_FRAMES_FOR_RAS_TEST, ctrl_set_force_deferred_frames_for_ras_test }, + { AV2E_SET_ENABLE_LOW_COMPLEXITY_DECODE, + ctrl_set_enable_low_complexity_decode }, // Getters { AVME_GET_LAST_QUANTIZER, ctrl_get_quantizer }, @@ -4872,7 +4905,8 @@ static const avm_codec_enc_cfg_t encoder_usage_cfg[] = { NULL, 0, 0, 0, // enable_mfh_obu_signaling 1, - }, // cfg + 0, // enable_low_complexity_decode + }, // cfg }, { // NOLINT @@ -5007,7 +5041,8 @@ static const avm_codec_enc_cfg_t encoder_usage_cfg[] = { NULL, 0, 0, 0, // enable_mfh_obu_signaling 1, - }, // cfg + 0, // enable_low_complexity_decode + }, // cfg }, }; diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index b0656d6b72..5b4496404c 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -1212,6 +1212,9 @@ typedef struct AV2EncoderConfig { // 0-31 = manually set operating_points_cnt_minus_1 int operating_points_count; + + // Enable the low complexity decode mode. + unsigned int enable_low_complexity_decode; /*!\endcond */ } AV2EncoderConfig; diff --git a/avm/avm_encoder.h b/avm/avm_encoder.h index 87cb9adcae..da30358261 100644 --- a/avm/avm_encoder.h +++ b/avm/avm_encoder.h @@ -680,6 +680,13 @@ typedef struct cfg_options { * */ int operating_points_count; + + /*!\brief enable the low complexity decode mode + * If 0, disables the low complexity decode mode (default). + * If 1 and the usage is good-quality, enables the low complexity decode + * mode. + */ + unsigned int enable_low_complexity_decode; } cfg_options_t; /*!\brief Encoded Frame Flags diff --git a/avm/avmcx.h b/avm/avmcx.h index d666486699..40c9def402 100644 --- a/avm/avmcx.h +++ b/avm/avmcx.h @@ -1249,6 +1249,12 @@ enum avme_enc_control_id { * the restricted_prediction_switch output ordering path. */ AV2E_SET_FORCE_DEFERRED_FRAMES_FOR_RAS_TEST = 185, + + /*!\brief Codec control function to enable the low complexity decode mode, + * unsigned int parameter. Value of zero disables this mode. Value of one and + * (g_usage == AVM_USAGE_GOOD_QUALITY) enables this mode. + */ + AV2E_SET_ENABLE_LOW_COMPLEXITY_DECODE = 186, }; /*!\brief avm 1-D scaling mode @@ -1776,6 +1782,9 @@ AVM_CTRL_USE_TYPE(AV2E_SET_MONOTONIC_OUTPUT_ORDER, int) AVM_CTRL_USE_TYPE(AV2E_SET_FORCE_DEFERRED_FRAMES_FOR_RAS_TEST, int) #define AVME_CTRL_AV2E_SET_FORCE_DEFERRED_FRAMES_FOR_RAS_TEST + +AVM_CTRL_USE_TYPE(AV2E_SET_ENABLE_LOW_COMPLEXITY_DECODE, unsigned int) +#define AVME_CTRL_AV2E_SET_ENABLE_LOW_COMPLEXITY_DECODE /*!\endcond */ /*! @} - end defgroup avm_encoder */ #ifdef __cplusplus diff --git a/common/args.c b/common/args.c index 21d48f4eb4..cb34ce25e9 100644 --- a/common/args.c +++ b/common/args.c @@ -170,6 +170,7 @@ int parse_cfg(const char *file, cfg_options_t *config) { GET_PARAMS(crop_win_top_offset); GET_PARAMS(crop_win_bottom_offset); GET_PARAMS(operating_points_count); + GET_PARAMS(enable_low_complexity_decode); fprintf(stderr, "\nInvalid parameter: %s", left); exit(-1); From edee28cb0ee3646ee4116fe502d320f0adbd773d Mon Sep 17 00:00:00 2001 From: RemyaPrakasan <115149832+RemyaPrakasan@users.noreply.github.com> Date: Sat, 1 Aug 2026 05:14:02 +0530 Subject: [PATCH 103/205] Cleanup unused code in compound type search (#5176) 1. Cleanup the unused sf 'enable_interinter_diffwtd_newmv_search` and its associated code 2. Cleanup the code and comments related to COMPOUND_DISTWTD No Stats Changed --- av2/common/av2_common_int.h | 5 +- av2/encoder/bitstream.c | 5 +- av2/encoder/compound_type.c | 144 ++++++++++------------------------- av2/encoder/speed_features.c | 1 - av2/encoder/speed_features.h | 4 - 5 files changed, 44 insertions(+), 115 deletions(-) diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index 863a65b781..6e39442efe 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -602,10 +602,7 @@ typedef struct { } DeltaQInfo; typedef struct { - int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, - // frame_sign_bias - // if 0, enable_dist_wtd_comp and - // enable_ref_frame_mvs must be set as 0. + int order_hint_bits_minus_1; int enable_ref_frame_mvs; // 0 - disable ref frame mvs // 1 - enable it int reduced_ref_frame_mvs_mode; // use 1 reference frame combination diff --git a/av2/encoder/bitstream.c b/av2/encoder/bitstream.c index b1ec302e72..e045ceba5b 100644 --- a/av2/encoder/bitstream.c +++ b/av2/encoder/bitstream.c @@ -2111,9 +2111,8 @@ static AVM_INLINE void pack_inter_mode_mvs(AV2_COMP *cpi, avm_writer *w) { } // First write idx to indicate current compound inter prediction mode - // group Group A (0): dist_wtd_comp, compound_average Group B (1): - // interintra, compound_diffwtd, wedge - + // group Group A (0): compound_average Group B (1): interintra, + // compound_diffwtd, wedge. if (has_second_ref(mbmi) && mbmi->mode < NEAR_NEARMV_OPTFLOW && (!mbmi->refinemv_flag || !switchable_refinemv_flag(cm, mbmi)) && !is_joint_amvd_coding_mode(mbmi->mode, mbmi->use_amvd)) { diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index e9b35f7425..bba4099032 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -53,15 +53,12 @@ static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, // TODO(any): Consider tools like OPFL, SMVR in the match criteria. - // Store the stats for COMPOUND_AVERAGE and COMPOUND_DISTWTD - for (int comp_type = COMPOUND_AVERAGE; comp_type < COMPOUND_WEDGE; - comp_type++) { - comp_rate[comp_type] = st->rate[comp_type]; - comp_dist[comp_type] = st->dist[comp_type]; - comp_model_rate[comp_type] = st->model_rate[comp_type]; - comp_model_dist[comp_type] = st->model_dist[comp_type]; - comp_rs2[comp_type] = st->comp_rs2[comp_type]; - } + // Store the stats for COMPOUND_AVERAGE. + comp_rate[COMPOUND_AVERAGE] = st->rate[COMPOUND_AVERAGE]; + comp_dist[COMPOUND_AVERAGE] = st->dist[COMPOUND_AVERAGE]; + comp_model_rate[COMPOUND_AVERAGE] = st->model_rate[COMPOUND_AVERAGE]; + comp_model_dist[COMPOUND_AVERAGE] = st->model_dist[COMPOUND_AVERAGE]; + comp_rs2[COMPOUND_AVERAGE] = st->comp_rs2[COMPOUND_AVERAGE]; // For compound wedge/segment, reuse data only if NEWMV is not present in // either of the directions @@ -862,66 +859,49 @@ int av2_handle_inter_intra_mode(const AV2_COMP *const cpi, MACROBLOCK *const x, return 0; } -static void alloc_compound_type_rd_buffers_no_check( - CompoundTypeRdBuffers *const bufs) { - bufs->pred0 = - (uint16_t *)avm_memalign(16, MAX_SB_SQUARE * sizeof(*bufs->pred0)); - bufs->pred1 = - (uint16_t *)avm_memalign(16, MAX_SB_SQUARE * sizeof(*bufs->pred1)); - bufs->residual1 = - (int16_t *)avm_memalign(32, MAX_SB_SQUARE * sizeof(*bufs->residual1)); - bufs->diff10 = - (int16_t *)avm_memalign(32, MAX_SB_SQUARE * sizeof(*bufs->diff10)); - bufs->tmp_best_mask_buf = (uint8_t *)avm_malloc( - 2 * MAX_SB_SQUARE * sizeof(*bufs->tmp_best_mask_buf)); -} - -// Computes the valid compound_types to be evaluated -static INLINE int compute_valid_comp_types( - MACROBLOCK *x, const AV2_COMP *const cpi, int *try_average_and_distwtd_comp, - BLOCK_SIZE bsize, int masked_compound_used, int mode_search_mask, - COMPOUND_TYPE *valid_comp_types) { +// Computes the valid compound_types to be evaluated. +static INLINE int compute_valid_comp_types(MACROBLOCK *x, + const AV2_COMP *const cpi, + BLOCK_SIZE bsize, + int masked_compound_used, + int mode_search_mask, + COMPOUND_TYPE *valid_comp_types) { int valid_type_count = 0; - int comp_type, valid_check; MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; const PREDICTION_MODE this_mode = mbmi->mode; - // For implementation simplicity, set compound type to COMPOUND_AVERAGE for - // now to avoid compound type RD search. In practice, dist_wtd will always - // be applied instead. if (this_mode >= NEAR_NEARMV_OPTFLOW || (mbmi->refinemv_flag && switchable_refinemv_flag(&cpi->common, mbmi))) { - *try_average_and_distwtd_comp = 0; - valid_comp_types[0] = COMPOUND_AVERAGE; - return 1; + valid_comp_types[valid_type_count++] = COMPOUND_AVERAGE; + return valid_type_count; } - int8_t enable_masked_type[MASKED_COMPOUND_TYPES] = { 0, 0 }; - const int try_average_comp = (mode_search_mask & (1 << COMPOUND_AVERAGE)); - *try_average_and_distwtd_comp = 0; - - // Check if COMPOUND_AVERAGE and COMPOUND_DISTWTD are valid cases - for (comp_type = COMPOUND_AVERAGE; comp_type < COMPOUND_WEDGE; comp_type++) { - valid_check = (comp_type == COMPOUND_AVERAGE) ? try_average_comp : 0; - if (!*try_average_and_distwtd_comp && valid_check && - is_interinter_compound_used(comp_type, bsize)) - valid_comp_types[valid_type_count++] = comp_type; + // Check if COMPOUND_AVERAGE is valid. + if ((mode_search_mask & (1 << COMPOUND_AVERAGE)) && + is_interinter_compound_used(COMPOUND_AVERAGE, bsize)) { + valid_comp_types[valid_type_count++] = COMPOUND_AVERAGE; } - // Check if COMPOUND_WEDGE and COMPOUND_DIFFWTD are valid cases + + // Check if COMPOUND_WEDGE and COMPOUND_DIFFWTD are valid. if (masked_compound_used) { // enable_masked_type[0] corresponds to COMPOUND_WEDGE // enable_masked_type[1] corresponds to COMPOUND_DIFFWTD + int8_t enable_masked_type[MASKED_COMPOUND_TYPES] = { 0 }; + enable_masked_type[0] = enable_wedge_interinter_search(x, cpi); enable_masked_type[1] = !is_thin_4xn_nx4_block(bsize) && cpi->oxcf.comp_type_cfg.enable_diff_wtd_comp; - for (comp_type = COMPOUND_WEDGE; comp_type <= COMPOUND_DIFFWTD; - comp_type++) { + + for (COMPOUND_TYPE comp_type = COMPOUND_WEDGE; + comp_type <= COMPOUND_DIFFWTD; ++comp_type) { if ((mode_search_mask & (1 << comp_type)) && is_interinter_compound_used(comp_type, bsize) && - enable_masked_type[comp_type - COMPOUND_WEDGE]) + enable_masked_type[comp_type - COMPOUND_WEDGE]) { valid_comp_types[valid_type_count++] = comp_type; + } } } + assert(valid_type_count <= COMPOUND_TYPES); return valid_type_count; } @@ -936,8 +916,7 @@ static INLINE void calc_masked_type_cost(const ModeCosts *mode_costs, // Account for group index cost when wedge and/or diffwtd prediction are // enabled if (masked_compound_used) { - // Compound group index of average and distwtd is 0 - // Compound group index of wedge and diffwtd is 1 + // Compound group index of average is 0 and that of wedge and diffwtd is 1. masked_type_cost[COMPOUND_AVERAGE] += mode_costs->comp_group_idx_cost[comp_group_idx_ctx][0]; masked_type_cost[COMPOUND_WEDGE] += @@ -997,11 +976,8 @@ static INLINE void update_best_info(const MB_MODE_INFO *const mbmi, int64_t *rd, static INLINE void update_mask_best_mv(const MB_MODE_INFO *const mbmi, int_mv *best_mv, int_mv *cur_mv, const COMPOUND_TYPE cur_type, - int *best_tmp_rate_mv, int tmp_rate_mv, - const SPEED_FEATURES *const sf) { - if (cur_type == COMPOUND_WEDGE || - (sf->inter_sf.enable_interinter_diffwtd_newmv_search && - cur_type == COMPOUND_DIFFWTD)) { + int *best_tmp_rate_mv, int tmp_rate_mv) { + if (cur_type == COMPOUND_WEDGE) { *best_tmp_rate_mv = tmp_rate_mv; best_mv[0].as_int = mbmi->mv[0].as_int; best_mv[1].as_int = mbmi->mv[1].as_int; @@ -1153,10 +1129,6 @@ static int64_t masked_compound_type_rd( have_newmv_in_inter_mode(this_mode) && (compound_type == COMPOUND_WEDGE) && (!cpi->sf.inter_sf.disable_interinter_wedge_newmv_search); - int diffwtd_newmv_search = - cpi->sf.inter_sf.enable_interinter_diffwtd_newmv_search && - compound_type == COMPOUND_DIFFWTD && - have_newmv_in_inter_mode(this_mode); // Search for new MV if needed and build predictor if (wedge_newmv_search) { @@ -1166,36 +1138,6 @@ static int64_t masked_compound_type_rd( const int mi_col = xd->mi_col; av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, ctx, bsize, AVM_PLANE_Y, AVM_PLANE_Y); - } else if (diffwtd_newmv_search) { - *out_rate_mv = av2_interinter_compound_motion_search(cpi, x, cur_mv, - bsize, this_mode); - // we need to update the mask according to the new motion vector - CompoundTypeRdBuffers tmp_buf; - int64_t tmp_rd = INT64_MAX; - alloc_compound_type_rd_buffers_no_check(&tmp_buf); - get_inter_predictor_masked_compound_y(x, bsize, tmp_buf.pred0, - tmp_buf.pred1, tmp_buf.residual1, - tmp_buf.diff10, stride); - - tmp_rd = pick_interinter_mask[compound_type - COMPOUND_WEDGE]( - cpi, x, bsize, tmp_buf.pred0, tmp_buf.pred1, tmp_buf.residual1, - tmp_buf.diff10, &cur_sse); - // we can reuse rs2 here - tmp_rd += RDCOST(x->rdmult, *rs2 + *out_rate_mv, 0); - - if (tmp_rd >= best_rd_cur) { - // restore the motion vector - mbmi->mv[0].as_int = cur_mv[0].as_int; - mbmi->mv[1].as_int = cur_mv[1].as_int; - *out_rate_mv = rate_mv; - av2_build_wedge_inter_predictor_from_buf_y(xd, bsize, pred0, stride, - pred1, stride); - } else { - // build the final prediciton using the updated mv - av2_build_wedge_inter_predictor_from_buf_y( - xd, bsize, tmp_buf.pred0, stride, tmp_buf.pred1, stride); - } - release_compound_type_rd_buffers(&tmp_buf); } else { *out_rate_mv = rate_mv; av2_build_wedge_inter_predictor_from_buf_y(xd, bsize, pred0, stride, @@ -1320,14 +1262,11 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, COMPOUND_TYPE valid_comp_types[COMPOUND_TYPES] = { COMPOUND_AVERAGE, COMPOUND_WEDGE, COMPOUND_DIFFWTD }; - int valid_type_count = 0; - int try_average_and_distwtd_comp = 0; + // compute_valid_comp_types() returns the number of valid compound types to be // evaluated and populates the same in the local array valid_comp_types[]. - // It also sets the flag 'try_average_and_distwtd_comp' - valid_type_count = compute_valid_comp_types( - x, cpi, &try_average_and_distwtd_comp, bsize, masked_compound_used, - mode_search_mask, valid_comp_types); + const int valid_type_count = compute_valid_comp_types( + x, cpi, bsize, masked_compound_used, mode_search_mask, valid_comp_types); // The following context indices are independent of compound type const int comp_group_idx_ctx = get_comp_group_idx_context(cm, xd); @@ -1337,7 +1276,7 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, else if (mbmi->refinemv_flag && switchable_refinemv_flag(cm, mbmi)) av2_zero_array(masked_type_cost, COMPOUND_TYPES); else - // Populates masked_type_cost local array for the 4 compound types + // Populates masked_type_cost local array for the 3 compound types. calc_masked_type_cost(&x->mode_costs, bsize, comp_group_idx_ctx, masked_compound_used, masked_type_cost); @@ -1369,8 +1308,7 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, assert(IMPLIES(is_thin_4xn_nx4_block(bsize), cur_type != COMPOUND_DIFFWTD)); - // Case COMPOUND_AVERAGE and COMPOUND_DISTWTD - if (cur_type < COMPOUND_WEDGE) { + if (cur_type == COMPOUND_AVERAGE) { update_mbmi_for_compound_type(mbmi, cur_type); rs2 = masked_type_cost[cur_type]; @@ -1384,7 +1322,7 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, if (comp_rate[cur_type] == INT_MAX) { av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, orig_dst, bsize, AVM_PLANE_Y, AVM_PLANE_Y); - if (cur_type == COMPOUND_AVERAGE) *is_luma_interp_done = 1; + *is_luma_interp_done = 1; // Compute RD cost for the current type RD_STATS est_rd_stats; @@ -1429,8 +1367,8 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, comp_model_dist[cur_type]); } } - // use spare buffer for following compound type try - if (cur_type == COMPOUND_AVERAGE) restore_dst_buf(xd, *tmp_dst, 1); + // Use spare buffer for other compound types. + restore_dst_buf(xd, *tmp_dst, 1); } else { // Handle masked compound types update_mbmi_for_compound_type(mbmi, cur_type); @@ -1467,7 +1405,7 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, memcpy(buffers->tmp_best_mask_buf, xd->seg_mask, mask_len); if (have_newmv_in_inter_mode(this_mode)) update_mask_best_mv(mbmi, best_mv, cur_mv, cur_type, - &best_tmp_rate_mv, tmp_rate_mv, &cpi->sf); + &best_tmp_rate_mv, tmp_rate_mv); } } // reset to original mvs for next iteration diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 88d404186c..005a227017 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -817,7 +817,6 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->prune_mode_search_simple_translation = 0; inter_sf->prune_comp_type_by_comp_avg = 0; inter_sf->disable_interinter_wedge_newmv_search = 0; - inter_sf->enable_interinter_diffwtd_newmv_search = 0; inter_sf->prune_motion_mode_level = 0; inter_sf->fast_interintra_wedge_search = 0; inter_sf->prune_comp_type_by_model_rd = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index ddbca29319..e9352132f9 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -729,10 +729,6 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Enable/disable ME for interinter wedge search. int disable_interinter_wedge_newmv_search; - // Enable/disable ME for interinter diffwtd search. PSNR BD-rate gain of - // ~0.1 on the lowres test set, but ~15% slower computation. - int enable_interinter_diffwtd_newmv_search; - // Disable interinter_wedge int disable_interinter_wedge; From 2e7096f47a395749c663ad27e1fee3c9ebc7917d Mon Sep 17 00:00:00 2001 From: Jianle Chen Date: Sat, 1 Aug 2026 17:55:40 -0700 Subject: [PATCH 104/205] Enable deblock filter for partition research (#5180) This feature considers the distortion reduction of deblocking filter for partition research. -- The deblocking filter is applied to a non-split partition after the best mode is picked for the current block. The distortion improvement of the deblocking filter is used to update the best RD cost of the current none-split partition block. This encoder side only feature provides the coding gain with slight encoding time increase. Should be a good trade-off for low speed level. Results of 33 frame (cpu1), a1 (missing 3 sequences) and a2 (missing 1 sequence) are as follows: +---------+--------+-------+-------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+-------+-------+-------+----------+----------+ | A1 | -0.62% | -0.14% | -0.49% | -0.58% | 102.06% | 100.82% | | A2 | -0.39% | +0.15% | -0.70% | -0.38% | 102.37% | 100.56% | +---------+--------+-------+-------+-------+----------+----------+ --- av2/common/av2_loopfilter.c | 179 +++++++++++++++++++-------------- av2/common/av2_loopfilter.h | 6 +- av2/common/thread_common.c | 4 +- av2/encoder/encodeframe.c | 3 + av2/encoder/partition_search.c | 115 ++++++++++++++++++++- av2/encoder/speed_features.c | 4 + av2/encoder/speed_features.h | 3 + 7 files changed, 228 insertions(+), 86 deletions(-) diff --git a/av2/common/av2_loopfilter.c b/av2/common/av2_loopfilter.c index 092c4f6300..edba623d75 100644 --- a/av2/common/av2_loopfilter.c +++ b/av2/common/av2_loopfilter.c @@ -553,7 +553,7 @@ static TX_SIZE set_lpf_parameters( AV2_COMMON *const cm, const MACROBLOCKD *const xd, const EDGE_DIR edge_dir, const uint32_t x, const uint32_t y, const int plane, const struct macroblockd_plane *const plane_ptr, TX_SIZE *tx_size, - int *mi_size_min) { + int *mi_size_min, const int dlk_rd_flag) { if (*mi_size_min) { *mi_size_min -= 1; return *tx_size; @@ -611,7 +611,7 @@ static TX_SIZE set_lpf_parameters( check_sub_pu_edge(cm, xd, mbmi, plane, tree_type, scale_horz, scale_vert, edge_dir, coord, &ts, &sub_pu_edge, &tx_m_partition_size); if (!tu_edge && !sub_pu_edge) return ts; - if (cm->seq_params.disable_loopfilters_across_tiles) { + if (cm->seq_params.disable_loopfilters_across_tiles || dlk_rd_flag) { if (edge_dir == VERT_EDGE) if (is_vert_tile_boundary(&cm->tiles, mi_col)) return ts; if (edge_dir == HORZ_EDGE) @@ -812,7 +812,9 @@ static uint8_t get_lossless_flag( void av2_filter_block_plane_vert(AV2_COMMON *const cm, const MACROBLOCKD *const xd, const int plane, const MACROBLOCKD_PLANE *const plane_ptr, - const uint32_t mi_row, const uint32_t mi_col) { + const uint32_t mi_row, const uint32_t mi_col, + const int dlk_rd_flag, + const BLOCK_SIZE bsize) { if (!plane && !cm->lf.apply_deblocking_filter[0]) return; const int mib_size = cm->mib_size; const uint32_t scale_horz = plane_ptr->subsampling_x; @@ -826,8 +828,14 @@ void av2_filter_block_plane_vert(AV2_COMMON *const cm, } uint16_t *const dst_ptr = plane_ptr->dst.buf; const int dst_stride = plane_ptr->dst.stride; - const int y_range = (mib_size >> scale_vert); - const int x_range = (mib_size >> scale_horz); + int x_range, y_range; + if (dlk_rd_flag) { + y_range = mi_size_high[bsize] >> scale_vert; + x_range = mi_size_wide[bsize] >> scale_horz; + } else { + y_range = (mib_size >> scale_vert); + x_range = (mib_size >> scale_horz); + } AV2_DEBLOCKING_PARAMETERS params_buf[MAX_MIB_SIZE]; TX_SIZE tx_size_buf[MAX_MIB_SIZE] = { 0 }; @@ -852,9 +860,9 @@ void av2_filter_block_plane_vert(AV2_COMMON *const cm, uint32_t advance_units; TX_SIZE cur_tx_size = TX_4X4; - cur_tx_size = set_lpf_parameters(params, prev_x, curr_y, cm, xd, - VERT_EDGE, curr_x, curr_y, plane, - plane_ptr, tx_size, mi_size_min_height); + cur_tx_size = set_lpf_parameters( + params, prev_x, curr_y, cm, xd, VERT_EDGE, curr_x, curr_y, plane, + plane_ptr, tx_size, mi_size_min_height, dlk_rd_flag); if (cur_tx_size == TX_INVALID) { params->filter_length_neg = 0; @@ -863,35 +871,38 @@ void av2_filter_block_plane_vert(AV2_COMMON *const cm, cur_tx_size = TX_4X4; } - const avm_bit_depth_t bit_depth = cm->seq_params.bit_depth; - bool is_lossless_current_block = get_lossless_flag( - cm, curr_x, curr_y, scale_horz, scale_vert, plane, plane_ptr); - bool is_lossless_prev_block = get_lossless_flag( - cm, prev_x, curr_y, scale_horz, scale_vert, plane, plane_ptr); - bool skip_deblock_lossless = - is_lossless_current_block && is_lossless_prev_block; + if (!dlk_rd_flag || + !is_vert_tile_boundary(&cm->tiles, mi_col + (x << scale_horz))) { + const avm_bit_depth_t bit_depth = cm->seq_params.bit_depth; + bool is_lossless_current_block = get_lossless_flag( + cm, curr_x, curr_y, scale_horz, scale_vert, plane, plane_ptr); + bool is_lossless_prev_block = get_lossless_flag( + cm, prev_x, curr_y, scale_horz, scale_vert, plane, plane_ptr); + bool skip_deblock_lossless = + is_lossless_current_block && is_lossless_prev_block; + + int do_filter = 1; + if (cm->seq_params.disable_loopfilters_across_tiles) { + if (is_vert_tile_boundary(&cm->tiles, mi_col + (x << scale_horz))) + do_filter = 0; + } + if (do_filter) { + if (!skip_deblock_lossless && + (params->filter_length_neg || params->filter_length_pos)) { + if (!(is_lossless_prev_block || is_lossless_current_block)) { + avm_highbd_lpf_vertical_generic( + p, dst_stride, params->filter_length_neg, + params->filter_length_pos, ¶ms->q_threshold, + ¶ms->side_threshold, bit_depth, is_lossless_prev_block, + is_lossless_current_block); - int do_filter = 1; - if (cm->seq_params.disable_loopfilters_across_tiles) { - if (is_vert_tile_boundary(&cm->tiles, mi_col + (x << scale_horz))) - do_filter = 0; - } - if (do_filter) { - if (!skip_deblock_lossless && - (params->filter_length_neg || params->filter_length_pos)) { - if (!(is_lossless_prev_block || is_lossless_current_block)) { - avm_highbd_lpf_vertical_generic( - p, dst_stride, params->filter_length_neg, - params->filter_length_pos, ¶ms->q_threshold, - ¶ms->side_threshold, bit_depth, is_lossless_prev_block, - is_lossless_current_block); - - } else { - avm_highbd_lpf_vertical_generic_c( - p, dst_stride, params->filter_length_neg, - params->filter_length_pos, ¶ms->q_threshold, - ¶ms->side_threshold, bit_depth, is_lossless_prev_block, - is_lossless_current_block); + } else { + avm_highbd_lpf_vertical_generic_c( + p, dst_stride, params->filter_length_neg, + params->filter_length_pos, ¶ms->q_threshold, + ¶ms->side_threshold, bit_depth, is_lossless_prev_block, + is_lossless_current_block); + } } } } @@ -911,7 +922,9 @@ void av2_filter_block_plane_vert(AV2_COMMON *const cm, void av2_filter_block_plane_horz(AV2_COMMON *const cm, const MACROBLOCKD *const xd, const int plane, const MACROBLOCKD_PLANE *const plane_ptr, - const uint32_t mi_row, const uint32_t mi_col) { + const uint32_t mi_row, const uint32_t mi_col, + const int dlk_rd_flag, + const BLOCK_SIZE bsize) { if (!plane && !cm->lf.apply_deblocking_filter[1]) return; const int mib_size = cm->mib_size; const uint32_t scale_horz = plane_ptr->subsampling_x; @@ -925,8 +938,14 @@ void av2_filter_block_plane_horz(AV2_COMMON *const cm, } uint16_t *const dst_ptr = plane_ptr->dst.buf; const int dst_stride = plane_ptr->dst.stride; - const int y_range = (mib_size >> scale_vert); - const int x_range = (mib_size >> scale_horz); + int x_range, y_range; + if (dlk_rd_flag) { + y_range = mi_size_high[bsize] >> scale_vert; + x_range = mi_size_wide[bsize] >> scale_horz; + } else { + y_range = (mib_size >> scale_vert); + x_range = (mib_size >> scale_horz); + } AV2_DEBLOCKING_PARAMETERS params_buf[MAX_MIB_SIZE]; TX_SIZE tx_size_buf[MAX_MIB_SIZE] = { 0 }; @@ -951,43 +970,47 @@ void av2_filter_block_plane_horz(AV2_COMMON *const cm, uint32_t advance_units; TX_SIZE cur_tx_size = TX_4X4; - cur_tx_size = set_lpf_parameters(params, curr_x, prev_y, cm, xd, - HORZ_EDGE, curr_x, curr_y, plane, - plane_ptr, tx_size, mi_size_min_width); + cur_tx_size = set_lpf_parameters( + params, curr_x, prev_y, cm, xd, HORZ_EDGE, curr_x, curr_y, plane, + plane_ptr, tx_size, mi_size_min_width, dlk_rd_flag); if (cur_tx_size == TX_INVALID) { params->filter_length_neg = 0; params->filter_length_pos = 0; cur_tx_size = TX_4X4; } - bool is_lossless_current_block = get_lossless_flag( - cm, curr_x, curr_y, scale_horz, scale_vert, plane, plane_ptr); - bool is_lossless_prev_block = get_lossless_flag( - cm, curr_x, prev_y, scale_horz, scale_vert, plane, plane_ptr); - bool skip_deblock_lossless = - is_lossless_current_block && is_lossless_prev_block; - - int do_filter = 1; - if (cm->seq_params.disable_loopfilters_across_tiles) { - if (is_horz_tile_boundary(&cm->tiles, mi_row + (y << scale_vert))) - do_filter = 0; - } - if (do_filter) { - const avm_bit_depth_t bit_depth = cm->seq_params.bit_depth; - if (!skip_deblock_lossless && - (params->filter_length_neg || params->filter_length_pos)) { - if (!(is_lossless_current_block || is_lossless_prev_block)) { - avm_highbd_lpf_horizontal_generic( - p, dst_stride, params->filter_length_neg, - params->filter_length_pos, ¶ms->q_threshold, - ¶ms->side_threshold, bit_depth, is_lossless_prev_block, - is_lossless_current_block); - } else { - avm_highbd_lpf_horizontal_generic_c( - p, dst_stride, params->filter_length_neg, - params->filter_length_pos, ¶ms->q_threshold, - ¶ms->side_threshold, bit_depth, is_lossless_prev_block, - is_lossless_current_block); + + if (!dlk_rd_flag || + !is_horz_tile_boundary(&cm->tiles, mi_row + (y << scale_vert))) { + bool is_lossless_current_block = get_lossless_flag( + cm, curr_x, curr_y, scale_horz, scale_vert, plane, plane_ptr); + bool is_lossless_prev_block = get_lossless_flag( + cm, curr_x, prev_y, scale_horz, scale_vert, plane, plane_ptr); + bool skip_deblock_lossless = + is_lossless_current_block && is_lossless_prev_block; + + int do_filter = 1; + if (cm->seq_params.disable_loopfilters_across_tiles) { + if (is_horz_tile_boundary(&cm->tiles, mi_row + (y << scale_vert))) + do_filter = 0; + } + if (do_filter) { + const avm_bit_depth_t bit_depth = cm->seq_params.bit_depth; + if (!skip_deblock_lossless && + (params->filter_length_neg || params->filter_length_pos)) { + if (!(is_lossless_current_block || is_lossless_prev_block)) { + avm_highbd_lpf_horizontal_generic( + p, dst_stride, params->filter_length_neg, + params->filter_length_pos, ¶ms->q_threshold, + ¶ms->side_threshold, bit_depth, is_lossless_prev_block, + is_lossless_current_block); + } else { + avm_highbd_lpf_horizontal_generic_c( + p, dst_stride, params->filter_length_neg, + params->filter_length_pos, ¶ms->q_threshold, + ¶ms->side_threshold, bit_depth, is_lossless_prev_block, + is_lossless_current_block); + } } } } @@ -1031,21 +1054,21 @@ static void loop_filter_rows(YV12_BUFFER_CONFIG *frame_buffer, AV2_COMMON *cm, // filter vertical edges av2_setup_dst_planes(pd, frame_buffer, mi_row, mi_col, plane, plane + 1, NULL); - av2_filter_block_plane_vert(cm, xd, plane, &pd[plane], mi_row, - mi_col); + av2_filter_block_plane_vert(cm, xd, plane, &pd[plane], mi_row, mi_col, + 0, BLOCK_INVALID); // filter horizontal edges if (mi_col - mib_size >= 0) { av2_setup_dst_planes(pd, frame_buffer, mi_row, mi_col - mib_size, plane, plane + 1, NULL); av2_filter_block_plane_horz(cm, xd, plane, &pd[plane], mi_row, - mi_col - mib_size); + mi_col - mib_size, 0, BLOCK_INVALID); } } // filter horizontal edges av2_setup_dst_planes(pd, frame_buffer, mi_row, mi_col - mib_size, plane, plane + 1, NULL); av2_filter_block_plane_horz(cm, xd, plane, &pd[plane], mi_row, - mi_col - mib_size); + mi_col - mib_size, 0, BLOCK_INVALID); } } else { // filter all vertical edges in every 128x128 super block @@ -1053,8 +1076,8 @@ static void loop_filter_rows(YV12_BUFFER_CONFIG *frame_buffer, AV2_COMMON *cm, for (mi_col = col_start; mi_col < col_end; mi_col += mib_size) { av2_setup_dst_planes(pd, frame_buffer, mi_row, mi_col, plane, plane + 1, NULL); - av2_filter_block_plane_vert(cm, xd, plane, &pd[plane], mi_row, - mi_col); + av2_filter_block_plane_vert(cm, xd, plane, &pd[plane], mi_row, mi_col, + 0, BLOCK_INVALID); } } @@ -1063,8 +1086,8 @@ static void loop_filter_rows(YV12_BUFFER_CONFIG *frame_buffer, AV2_COMMON *cm, for (mi_col = col_start; mi_col < col_end; mi_col += mib_size) { av2_setup_dst_planes(pd, frame_buffer, mi_row, mi_col, plane, plane + 1, NULL); - av2_filter_block_plane_horz(cm, xd, plane, &pd[plane], mi_row, - mi_col); + av2_filter_block_plane_horz(cm, xd, plane, &pd[plane], mi_row, mi_col, + 0, BLOCK_INVALID); } } } diff --git a/av2/common/av2_loopfilter.h b/av2/common/av2_loopfilter.h index daa22b7603..311f9202cf 100644 --- a/av2/common/av2_loopfilter.h +++ b/av2/common/av2_loopfilter.h @@ -103,12 +103,14 @@ void init_tip_lf_parameter(struct AV2Common *cm, int plane_start, void av2_filter_block_plane_vert(struct AV2Common *const cm, const MACROBLOCKD *const xd, const int plane, const MACROBLOCKD_PLANE *const plane_ptr, - const uint32_t mi_row, const uint32_t mi_col); + const uint32_t mi_row, const uint32_t mi_col, + const int dlk_rd_flag, const BLOCK_SIZE bsize); void av2_filter_block_plane_horz(struct AV2Common *const cm, const MACROBLOCKD *const xd, const int plane, const MACROBLOCKD_PLANE *const plane_ptr, - const uint32_t mi_row, const uint32_t mi_col); + const uint32_t mi_row, const uint32_t mi_col, + const int dlk_rd_flag, const BLOCK_SIZE bsize); int df_quant_from_qindex(int q_index, int bit_depth); int df_side_from_qindex(int q_index, int bit_depth); diff --git a/av2/common/thread_common.c b/av2/common/thread_common.c index ce4372642c..4c175349b7 100644 --- a/av2/common/thread_common.c +++ b/av2/common/thread_common.c @@ -325,7 +325,7 @@ static INLINE void thread_loop_filter_rows( plane + 1, NULL); av2_filter_block_plane_vert(cm, xd, plane, &planes[plane], mi_row, - mi_col); + mi_col, 0, BLOCK_INVALID); sync_write(lf_sync, r, c, sb_cols, plane); } } else if (dir == 1) { @@ -343,7 +343,7 @@ static INLINE void thread_loop_filter_rows( av2_setup_dst_planes(planes, frame_buffer, mi_row, mi_col, plane, plane + 1, NULL); av2_filter_block_plane_horz(cm, xd, plane, &planes[plane], mi_row, - mi_col); + mi_col, 0, BLOCK_INVALID); } } } else { diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 8adf93a66d..99acbe8cbd 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -2263,6 +2263,9 @@ static AVM_INLINE void encode_frame_internal(AV2_COMP *cpi) { av2_enc_setup_tip_frame(cpi); + cm->lf.apply_deblocking_filter[0] = cpi->oxcf.tool_cfg.enable_deblocking; + if (cm->lf.apply_deblocking_filter[0]) av2_loop_filter_frame_init(cm, 0, 1); + cm->current_frame.skip_mode_info.skip_mode_flag = check_skip_mode_enabled(cpi) && cpi->oxcf.tool_cfg.enable_skip_mode; diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index d6e72f557c..07f29f8568 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -12,12 +12,14 @@ #include "avm/avm_codec.h" #include "avm_ports/system_state.h" +#include "avm_dsp/psnr.h" #include "av2/common/bru.h" #include "avm_ports/avm_timer.h" #include "av2/encoder/partition_mlp.h" #include "av2/common/av2_common_int.h" +#include "av2/common/av2_loopfilter.h" #include "av2/common/blockd.h" #include "av2/common/common_data.h" #include "av2/common/enums.h" @@ -3562,10 +3564,95 @@ static void inter_sdp_copy_luma_mode_info(PC_TREE *pc_tree, *mbmi = cur_pc_tree->none[INTRA_REGION]->mic; } +static int64_t get_dist_offset_by_deblock( + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, MACROBLOCK *x, + TokenExtra **tp, PICK_MODE_CONTEXT *ctx_none, RD_STATS *const this_rdc, + const int mi_col, const int mi_row, const BLOCK_SIZE bsize) { + AV2_COMMON *const cm = &cpi->common; + + const YV12_BUFFER_CONFIG *curr = &cm->cur_frame->buf; + const YV12_BUFFER_CONFIG *src = cpi->source; + + const YV12_BUFFER_CONFIG *filtered = &cpi->trial_frame_rst; + int rate = 0; + encode_b(cpi, tile_data, td, tp, mi_row, mi_col, DRY_RUN_NORMAL, bsize, + PARTITION_NONE, ctx_none, &rate); + + const int bw = block_size_wide[bsize]; + const int bh = block_size_high[bsize]; + + int64_t rec_dist = avm_highbd_get_y_sse_part(src, curr, mi_col * MI_SIZE, bw, + mi_row * MI_SIZE, bh); + + if (x->e_mbd.tree_type != LUMA_PART) { + const int sub_x = cm->seq_params.subsampling_x; + const int sub_y = cm->seq_params.subsampling_y; + rec_dist += avm_highbd_get_u_sse_part( + src, curr, mi_col * MI_SIZE >> sub_x, bw >> sub_x, + mi_row * MI_SIZE >> sub_y, bh >> sub_y); + rec_dist += avm_highbd_get_v_sse_part( + src, curr, mi_col * MI_SIZE >> sub_x, bw >> sub_x, + mi_row * MI_SIZE >> sub_y, bh >> sub_y); + } + + if (llabs(this_rdc->dist - rec_dist) < this_rdc->dist / 50) { + int h_start = mi_col * MI_SIZE; + int v_start = mi_row * MI_SIZE; + int area_w = bw; + int area_h = bh; + + MACROBLOCKD *xd = &x->e_mbd; + if (xd->up_available) { + int v_offset = bh == 4 ? 4 : 8; + v_start -= v_offset; + area_h += v_offset; + } + if (xd->left_available) { + int h_offset = bw == 4 ? 4 : 8; + h_start -= h_offset; + area_w += h_offset; + } + + const int64_t unfiltered_y_dist = + avm_highbd_get_y_sse_part(src, curr, h_start, area_w, v_start, area_h); + + uint16_t *curr_data = curr->buffers[0] + v_start * curr->y_stride + h_start; + uint16_t *filtered_data = + filtered->buffers[0] + v_start * filtered->y_stride + h_start; + copy_tile(area_w, area_h, curr_data, curr->y_stride, filtered_data, + filtered->y_stride); + + const int plane = 0; + struct macroblockd_plane *pd = xd->plane; + av2_setup_dst_planes(pd, filtered, mi_row, mi_col, plane, plane + 1, NULL); + av2_filter_block_plane_vert(cm, xd, plane, &pd[plane], mi_row, mi_col, 1, + bsize); + + av2_setup_dst_planes(pd, filtered, mi_row, mi_col, plane, plane + 1, NULL); + av2_filter_block_plane_horz(cm, xd, plane, &pd[plane], mi_row, mi_col, 1, + bsize); + + const int64_t filtered_y_dist = avm_highbd_get_y_sse_part( + src, filtered, h_start, area_w, v_start, area_h); + + const int bit_depth = cm->seq_params.bit_depth; + int dist_normal; // dist is normalized to 16 * 8_bit_content_distortion + if (bit_depth <= 10) { + dist_normal = 1 << ((10 - cm->seq_params.bit_depth) * 2); + return dist_normal * (filtered_y_dist - unfiltered_y_dist); + } else { + dist_normal = 1 << ((cm->seq_params.bit_depth - 10) * 2); + return (filtered_y_dist - unfiltered_y_dist) / dist_normal; + } + } else { + return 0; + } +} + // PARTITION_NONE search. static void none_partition_search( AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, MACROBLOCK *x, - PC_TREE *pc_tree, SIMPLE_MOTION_DATA_TREE *sms_tree, + TokenExtra **tp, PC_TREE *pc_tree, SIMPLE_MOTION_DATA_TREE *sms_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, PartitionSearchState *part_search_state, RD_STATS *best_rdc, unsigned int *pb_source_variance, int64_t *none_rd, int64_t *part_none_rd, @@ -3610,6 +3697,16 @@ static void none_partition_search( // Set PARTITION_NONE context and cost. set_none_partition_params(cm, td, x, pc_tree, part_search_state, &best_remain_rdcost, best_rdc, &pt_cost); + if (best_rdc->rdcost != INT64_MAX && + cpi->sf.lpf_sf.enable_deblock_for_partition_search && + !cpi->is_screen_content_type) { + // increase the remaining best cost which could have be reduced by deblock + // filer 1.125 (9/8) is experimental number which is not intensively tested. + best_remain_rdcost.rate = best_remain_rdcost.rate * 9 / 8; + best_remain_rdcost.dist = best_remain_rdcost.dist * 9 / 8; + best_remain_rdcost.rdcost = best_remain_rdcost.rdcost * 9 / 8; + } + if (bsize == cm->sb_size) x->e_mbd.is_cfl_allowed_in_sdp = is_cfl_allowed_for_sdp( cm, &x->e_mbd, ptree_luma, PARTITION_NONE, bsize); @@ -3658,6 +3755,16 @@ static void none_partition_search( av2_add_mode_search_context_to_cache(sms_data, pc_tree->none[pc_tree->region_type]); } + + if (cpi->sf.lpf_sf.enable_deblock_for_partition_search && + cm->lf.apply_deblocking_filter[0] && this_rdc->rate != INT_MAX && + ctx_none != NULL && x->e_mbd.tree_type != CHROMA_PART && + !cpi->is_screen_content_type) { + const int64_t distortion_offset = get_dist_offset_by_deblock( + cpi, td, tile_data, x, tp, ctx_none, this_rdc, mi_col, mi_row, bsize); + this_rdc->dist += distortion_offset; + } + av2_rd_cost_update(x->rdmult, this_rdc); #if CONFIG_COLLECT_PARTITION_STATS @@ -5384,7 +5491,7 @@ bool av2_rd_pick_partition( int64_t part_none_rd = INT64_MAX; if (!search_none_after_rect && !search_none_after_split && partition_none_allowed) { - none_partition_search(cpi, td, tile_data, x, pc_tree, sms_tree, &x_ctx, + none_partition_search(cpi, td, tile_data, x, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } @@ -5423,7 +5530,7 @@ bool av2_rd_pick_partition( } if (part_search_state.forced_partition == PARTITION_INVALID && partition_none_allowed && search_none_after_split) { - none_partition_search(cpi, td, tile_data, x, pc_tree, sms_tree, &x_ctx, + none_partition_search(cpi, td, tile_data, x, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } @@ -5494,7 +5601,7 @@ bool av2_rd_pick_partition( partition_none_allowed) { // Prune partitions based on rect results. prune_none_after_rect(&part_search_state, pc_tree); - none_partition_search(cpi, td, tile_data, x, pc_tree, sms_tree, &x_ctx, + none_partition_search(cpi, td, tile_data, x, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 005a227017..88178e3441 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -335,6 +335,7 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.fast_motion_estimation_on_block_256 = 1; sf->rd_sf.perform_coeff_opt = 1; + if (speed >= 1) { sf->flexmv_sf.prune_non_one_pel_mv_using_best_mv_prec = 1; sf->inter_sf.selective_ref_frame = 2; @@ -406,6 +407,7 @@ static void set_good_speed_features_framesize_independent( sf->part_sf.partition_pruning_with_mlp = 1; sf->part_sf.partition_pruning_with_mlp_none_thresh = 3.5f; + sf->lpf_sf.enable_deblock_for_partition_search = 1; } if (speed >= 2) { @@ -609,6 +611,7 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; sf->tpl_sf.prune_starting_mv = 3; + sf->lpf_sf.enable_deblock_for_partition_search = 0; } if (speed >= 6) { @@ -931,6 +934,7 @@ static AVM_INLINE void init_lpf_sf(LOOP_FILTER_SPEED_FEATURES *lpf_sf) { lpf_sf->cdef_pick_method = CDEF_FULL_SEARCH; lpf_sf->disable_lr_filter = 0; lpf_sf->wienerns_refine_iters = 2; + lpf_sf->enable_deblock_for_partition_search = 0; } static void av2_disable_ml_based_transform_sf(TX_SPEED_FEATURES *const tx_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index e9352132f9..cd1ce30364 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -987,6 +987,9 @@ typedef struct LOOP_FILTER_SPEED_FEATURES { // Number of refinement steps for WIENER_NONSEP tool int wienerns_refine_iters; + + // enable deblock for block partition search + int enable_deblock_for_partition_search; } LOOP_FILTER_SPEED_FEATURES; typedef struct REALTIME_SPEED_FEATURES { From 5ddfe217afcd621dfd553a3e747e87d7fd49043b Mon Sep 17 00:00:00 2001 From: Arnab Dey Date: Wed, 22 Jul 2026 12:06:43 +0530 Subject: [PATCH 105/205] Fix typo in collect_mv_stats_sb while accessing subtree --- av2/encoder/mv_prec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/encoder/mv_prec.c b/av2/encoder/mv_prec.c index d7de70cc83..55a9946ebd 100644 --- a/av2/encoder/mv_prec.c +++ b/av2/encoder/mv_prec.c @@ -427,7 +427,7 @@ static AVM_INLINE void collect_mv_stats_sb(MV_STATS *mv_stats, collect_mv_stats_sb(mv_stats, cpi, mi_row + hbs_h, mi_col, subsize, ptree->sub_tree[2]); collect_mv_stats_sb(mv_stats, cpi, mi_row + hbs_h, mi_col + hbs_w, - subsize, ptree->sub_tree[0]); + subsize, ptree->sub_tree[3]); break; case PARTITION_HORZ_4A: { const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); From 799fe934e2b0d6637409608deb5d2d27bfcfa2df Mon Sep 17 00:00:00 2001 From: Arnab Dey Date: Fri, 24 Jul 2026 13:49:49 +0530 Subject: [PATCH 106/205] Simplify ptree recurse functions This change reduces duplicate code that is part of ptree recurse functions. No stats changed --- av2/common/blockd.c | 83 ++++++++++++ av2/common/blockd.h | 7 + av2/decoder/decodeframe.c | 206 ++++------------------------ av2/encoder/bitstream.c | 213 +++-------------------------- av2/encoder/context_tree.c | 86 +----------- av2/encoder/context_tree.h | 7 - av2/encoder/encodeframe.c | 239 +++++---------------------------- av2/encoder/mv_prec.c | 118 ++-------------- av2/encoder/partition_search.c | 56 ++------ 9 files changed, 193 insertions(+), 822 deletions(-) diff --git a/av2/common/blockd.c b/av2/common/blockd.c index 778605a51e..bcdeb2bd96 100644 --- a/av2/common/blockd.c +++ b/av2/common/blockd.c @@ -19,6 +19,89 @@ #include "av2/common/blockd.h" #include "av2/common/enums.h" +/*!\brief Returns number of sub blocks for partition_type. */ +static const int subblock_count[ALL_PARTITION_TYPES] = { + 1, // PARTITION_NONE + 2, // PARTITION_HORZ + 2, // PARTITION_VERT + 4, // PARTITION_HORZ_3 + 4, // PARTITION_VERT_3 + 4, // PARTITION_HORZ_4A + 4, // PARTITION_HORZ_4B + 4, // PARTITION_VERT_4A + 4, // PARTITION_VERT_4B + 4, // PARTITION_SPLIT +}; + +static const int step_multiplier[ALL_PARTITION_TYPES][4][2] = { + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_NONE + { { 0, 0 }, { 4, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_HORZ + { { 0, 0 }, { 0, 4 }, { 0, 0 }, { 0, 0 } }, // PARTITION_VERT + { { 0, 0 }, { 2, 0 }, { 2, 4 }, { 6, 0 } }, // PARTITION_HORZ_3 + { { 0, 0 }, { 0, 2 }, { 4, 2 }, { 0, 6 } }, // PARTITION_VERT_3 + { { 0, 0 }, { 1, 0 }, { 3, 0 }, { 7, 0 } }, // PARTITION_HORZ_4A + { { 0, 0 }, { 1, 0 }, { 5, 0 }, { 7, 0 } }, // PARTITION_HORZ_4B + { { 0, 0 }, { 0, 1 }, { 0, 3 }, { 0, 7 } }, // PARTITION_VERT_4A + { { 0, 0 }, { 0, 1 }, { 0, 5 }, { 0, 7 } }, // PARTITION_VERT_4B + { { 0, 0 }, { 0, 4 }, { 4, 0 }, { 4, 4 } }, // PARTITION_SPLIT +}; + +int get_subblock_count(PARTITION_TYPE partition_type) { + if (partition_type > PARTITION_SPLIT) { + assert(0 && "Unexpected partition type"); + return 0; + } + return subblock_count[partition_type]; +} + +/*!\brief Computes the layout (coordinates and sizes) of subblocks resulting + * from a partition. */ +void get_partition_subblock_layout(PARTITION_TYPE partition_type, + BLOCK_SIZE bsize, int mi_row, int mi_col, + BLOCK_SIZE sub_sizes[4], int mi_rows[4], + int mi_cols[4]) { + if (partition_type > PARTITION_SPLIT) { + assert(0 && "Unexpected partition type"); + return; + } + const int eighth_step_h = block_size_high[bsize] / 8; + const int eighth_step_w = block_size_wide[bsize] / 8; + const BLOCK_SIZE part_subsize = get_partition_subsize(bsize, partition_type); + + for (int sub_idx = 0; sub_idx < 4; ++sub_idx) { + mi_rows[sub_idx] = mi_row + step_multiplier[partition_type][sub_idx][0] * + eighth_step_h / 4; + mi_cols[sub_idx] = mi_col + step_multiplier[partition_type][sub_idx][1] * + eighth_step_w / 4; + sub_sizes[sub_idx] = part_subsize; + } + if (partition_type == PARTITION_HORZ_3 || + partition_type == PARTITION_VERT_3) { + const BLOCK_SIZE sml_subsize = + get_h_partition_subsize(bsize, 0, partition_type); + const BLOCK_SIZE big_subsize = + get_h_partition_subsize(bsize, 1, partition_type); + sub_sizes[0] = sub_sizes[3] = sml_subsize; + sub_sizes[1] = sub_sizes[2] = big_subsize; + } else if (partition_type == PARTITION_HORZ_4A || + partition_type == PARTITION_VERT_4A || + partition_type == PARTITION_HORZ_4B || + partition_type == PARTITION_VERT_4B) { + const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); + const UNEVEN_4WAY_PART_TYPE uneven_type = + get_4way_part_type(partition_type); + const PARTITION_TYPE p_type = + (rect_type == HORZ) ? PARTITION_HORZ : PARTITION_VERT; + const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, p_type); + assert(big_subsize != BLOCK_INVALID); + const BLOCK_SIZE med_subsize = subsize_lookup[p_type][big_subsize]; + assert(med_subsize != BLOCK_INVALID); + assert(part_subsize == subsize_lookup[p_type][med_subsize]); + sub_sizes[1] = (uneven_type == UNEVEN_4A ? med_subsize : big_subsize); + sub_sizes[2] = (uneven_type == UNEVEN_4A ? big_subsize : med_subsize); + } +} + PREDICTION_MODE av2_get_joint_mode(const MB_MODE_INFO *mi) { if (!mi) return DC_PRED; if (is_inter_block(mi, SHARED_PART) || is_intrabc_block(mi, SHARED_PART)) diff --git a/av2/common/blockd.h b/av2/common/blockd.h index c6b5476b69..f582790eb8 100644 --- a/av2/common/blockd.h +++ b/av2/common/blockd.h @@ -1073,6 +1073,13 @@ static INLINE BLOCK_SIZE get_partition_subsize(BLOCK_SIZE bsize, } } +int get_subblock_count(PARTITION_TYPE partition_type); + +void get_partition_subblock_layout(PARTITION_TYPE partition_type, + BLOCK_SIZE bsize, int mi_row, int mi_col, + BLOCK_SIZE sub_sizes[4], int mi_rows[4], + int mi_cols[4]); + // Get the block size of the ith sub-block in a block partitioned via an // h-partition mode. static INLINE BLOCK_SIZE get_h_partition_subsize(BLOCK_SIZE bsize, int index, diff --git a/av2/decoder/decodeframe.c b/av2/decoder/decodeframe.c index 4f617ffa4a..516f50114b 100644 --- a/av2/decoder/decodeframe.c +++ b/av2/decoder/decodeframe.c @@ -1861,9 +1861,6 @@ static AVM_INLINE void decode_partition( // Half block width/height. const int hbs_w = mi_size_wide[bsize] / 2; const int hbs_h = mi_size_high[bsize] / 2; - // One-eighth block width/height. - const int ebs_w = mi_size_wide[bsize] / 8; - const int ebs_h = mi_size_high[bsize] / 8; PARTITION_TYPE partition; const int has_rows = (mi_row + hbs_h) < cm->mi_params.mi_rows; const int has_cols = (mi_col + hbs_w) < cm->mi_params.mi_cols; @@ -2017,77 +2014,19 @@ static AVM_INLINE void decode_partition( } } - switch (partition) { - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_SPLIT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { - ptree_luma->sub_tree[0] = av2_alloc_ptree_node(ptree_luma, 0); - ptree_luma->sub_tree[1] = av2_alloc_ptree_node(ptree_luma, 1); - ptree_luma->sub_tree[2] = av2_alloc_ptree_node(ptree_luma, 2); - ptree_luma->sub_tree[3] = av2_alloc_ptree_node(ptree_luma, 3); - } - break; - case PARTITION_HORZ: - case PARTITION_VERT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - - if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { - ptree_luma->sub_tree[0] = av2_alloc_ptree_node(ptree_luma, 0); - ptree_luma->sub_tree[1] = av2_alloc_ptree_node(ptree_luma, 1); - } - break; - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - + if (partition == PARTITION_NONE) { + xd->is_cfl_allowed_in_sdp = is_cfl_allowed_in_sdp; + } else { + const int num_subblocks = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { + ptree->sub_tree[sub_idx] = av2_alloc_ptree_node(ptree, sub_idx); + ptree->sub_tree[sub_idx]->is_cfl_allowed_for_this_chroma_partition = + is_cfl_allowed_in_sdp; if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { - ptree_luma->sub_tree[0] = av2_alloc_ptree_node(ptree_luma, 0); - ptree_luma->sub_tree[1] = av2_alloc_ptree_node(ptree_luma, 1); - ptree_luma->sub_tree[2] = av2_alloc_ptree_node(ptree_luma, 2); - ptree_luma->sub_tree[3] = av2_alloc_ptree_node(ptree_luma, 3); + ptree_luma->sub_tree[sub_idx] = + av2_alloc_ptree_node(ptree_luma, sub_idx); } - break; - default: break; - } - switch (partition) { - case PARTITION_NONE: - xd->is_cfl_allowed_in_sdp = is_cfl_allowed_in_sdp; - break; - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - case PARTITION_SPLIT: - ptree->sub_tree[0]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[1]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[2]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[3]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - break; - case PARTITION_HORZ: - case PARTITION_VERT: - ptree->sub_tree[0]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[1]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - break; - default: break; + } } } else { partition = ptree->partition; @@ -2146,108 +2085,21 @@ static AVM_INLINE void decode_partition( mi_col << MI_SIZE_LOG2); } -#define DEC_BLOCK_STX_ARG -#define DEC_BLOCK_EPT_ARG partition, -#define DEC_BLOCK(db_r, db_c, db_subsize, index) \ - block_visit[parse_decode_flag](pbi, td, DEC_BLOCK_STX_ARG(db_r), (db_c), \ - reader, DEC_BLOCK_EPT_ARG(db_subsize), ptree, \ - index) -#define DEC_PARTITION(db_r, db_c, db_subsize, index) \ - decode_partition(pbi, td, DEC_BLOCK_STX_ARG(db_r), (db_c), reader, \ - (db_subsize), sbi, ptree->sub_tree[(index)], \ - get_partition_subtree_const(ptree_luma, index), \ - parse_decode_flag) - - switch (partition) { - case PARTITION_NONE: DEC_BLOCK(mi_row, mi_col, subsize, 0); break; - case PARTITION_HORZ: - DEC_PARTITION(mi_row, mi_col, subsize, 0); - DEC_PARTITION(mi_row + hbs_h, mi_col, subsize, 1); - break; - case PARTITION_VERT: - DEC_PARTITION(mi_row, mi_col, subsize, 0); - DEC_PARTITION(mi_row, mi_col + hbs_w, subsize, 1); - break; - case PARTITION_HORZ_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - int this_mi_row = mi_row; - DEC_PARTITION(this_mi_row, mi_col, subsize, 0); - this_mi_row += ebs_h; - DEC_PARTITION(this_mi_row, mi_col, bsize_med, 1); - this_mi_row += 2 * ebs_h; - DEC_PARTITION(this_mi_row, mi_col, bsize_big, 2); - this_mi_row += 4 * ebs_h; - DEC_PARTITION(this_mi_row, mi_col, subsize, 3); - break; - } - case PARTITION_HORZ_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - int this_mi_row = mi_row; - DEC_PARTITION(this_mi_row, mi_col, subsize, 0); - this_mi_row += ebs_h; - DEC_PARTITION(this_mi_row, mi_col, bsize_big, 1); - this_mi_row += 4 * ebs_h; - DEC_PARTITION(this_mi_row, mi_col, bsize_med, 2); - this_mi_row += 2 * ebs_h; - DEC_PARTITION(this_mi_row, mi_col, subsize, 3); - break; - } - case PARTITION_VERT_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - int this_mi_col = mi_col; - DEC_PARTITION(mi_row, this_mi_col, subsize, 0); - this_mi_col += ebs_w; - DEC_PARTITION(mi_row, this_mi_col, bsize_med, 1); - this_mi_col += 2 * ebs_w; - DEC_PARTITION(mi_row, this_mi_col, bsize_big, 2); - this_mi_col += 4 * ebs_w; - DEC_PARTITION(mi_row, this_mi_col, subsize, 3); - break; - } - case PARTITION_VERT_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - int this_mi_col = mi_col; - DEC_PARTITION(mi_row, this_mi_col, subsize, 0); - this_mi_col += ebs_w; - DEC_PARTITION(mi_row, this_mi_col, bsize_big, 1); - this_mi_col += 4 * ebs_w; - DEC_PARTITION(mi_row, this_mi_col, bsize_med, 2); - this_mi_col += 2 * ebs_w; - DEC_PARTITION(mi_row, this_mi_col, subsize, 3); - break; - } - case PARTITION_HORZ_3: - case PARTITION_VERT_3: { - for (int i = 0; i < 4; ++i) { - BLOCK_SIZE this_bsize = get_h_partition_subsize(bsize, i, partition); - const int offset_r = get_h_partition_offset_mi_row(bsize, i, partition); - const int offset_c = get_h_partition_offset_mi_col(bsize, i, partition); - - assert(this_bsize != BLOCK_INVALID); - assert(offset_r >= 0 && offset_c >= 0); - - const int this_mi_row = mi_row + offset_r; - const int this_mi_col = mi_col + offset_c; - - DEC_PARTITION(this_mi_row, this_mi_col, this_bsize, i); - } - break; + if (partition == PARTITION_NONE) { + block_visit[parse_decode_flag](pbi, td, mi_row, mi_col, reader, partition, + subsize, ptree, 0); + } else { + BLOCK_SIZE sub_sizes[4]; + int mi_rows[4], mi_cols[4]; + get_partition_subblock_layout(partition, bsize, mi_row, mi_col, sub_sizes, + mi_rows, mi_cols); + const int num_subblocks = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { + decode_partition(pbi, td, mi_rows[sub_idx], mi_cols[sub_idx], reader, + sub_sizes[sub_idx], sbi, ptree->sub_tree[sub_idx], + get_partition_subtree_const(ptree_luma, sub_idx), + parse_decode_flag); } - case PARTITION_SPLIT: - DEC_PARTITION(mi_row, mi_col, subsize, 0); - DEC_PARTITION(mi_row, mi_col + hbs_w, subsize, 1); - DEC_PARTITION(mi_row + hbs_h, mi_col, subsize, 2); - DEC_PARTITION(mi_row + hbs_h, mi_col + hbs_w, subsize, 3); - break; - default: assert(0 && "Invalid partition type"); } PARTITION_TREE *parent = ptree->parent; @@ -2257,17 +2109,13 @@ static AVM_INLINE void decode_partition( ptree->region_type == INTRA_REGION) { // decode chroma part in one intra region xd->tree_type = CHROMA_PART; - DEC_BLOCK(mi_row, mi_col, bsize, 0); + block_visit[parse_decode_flag](pbi, td, mi_row, mi_col, reader, partition, + bsize, ptree, 0); // reset back to shared part xd->tree_type = SHARED_PART; } } -#undef DEC_PARTITION -#undef DEC_BLOCK -#undef DEC_BLOCK_EPT_ARG -#undef DEC_BLOCK_STX_ARG - if (parse_decode_flag & 1) { update_ext_partition_context(xd, mi_row, mi_col, subsize, bsize, partition); if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { diff --git a/av2/encoder/bitstream.c b/av2/encoder/bitstream.c index e045ceba5b..2ad3b0efe3 100644 --- a/av2/encoder/bitstream.c +++ b/av2/encoder/bitstream.c @@ -2816,10 +2816,6 @@ static AVM_INLINE void write_modes_sb( const CommonModeInfoParams *const mi_params = &cm->mi_params; MACROBLOCKD *const xd = &cpi->td.mb.e_mbd; assert(bsize < BLOCK_SIZES_ALL); - const int hbs_w = mi_size_wide[bsize] / 2; - const int hbs_h = mi_size_high[bsize] / 2; - const int ebs_w = mi_size_wide[bsize] / 8; - const int ebs_h = mi_size_high[bsize] / 8; assert(ptree); if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) { @@ -2917,200 +2913,31 @@ static AVM_INLINE void write_modes_sb( // if partition tree changes, rebuild recursive tree ptree->partition = p; partition = p; - subsize = get_partition_subsize(bsize, partition); - switch (p) { - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_SPLIT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[0]->partition = PARTITION_NONE; - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[1]->partition = PARTITION_NONE; - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[2]->partition = PARTITION_NONE; - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - ptree->sub_tree[3]->partition = PARTITION_NONE; - break; - case PARTITION_HORZ: - case PARTITION_VERT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[0]->partition = PARTITION_NONE; - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[1]->partition = PARTITION_NONE; - break; - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[0]->partition = PARTITION_NONE; - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[1]->partition = PARTITION_NONE; - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[2]->partition = PARTITION_NONE; - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - ptree->sub_tree[3]->partition = PARTITION_NONE; - break; - default: break; + if (partition != PARTITION_NONE) { + const int num_subblocks = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { + ptree->sub_tree[sub_idx] = av2_alloc_ptree_node(ptree, sub_idx); + ptree->sub_tree[sub_idx]->partition = PARTITION_NONE; + } } } } - switch (partition) { - case PARTITION_NONE: - write_modes_b( - cpi, tile, w, - (intra_sdp_enabled && xd->tree_type == CHROMA_PART) ? tok_chroma - : tok, - (intra_sdp_enabled && xd->tree_type == CHROMA_PART) ? tok_chroma_end - : tok_end, - mi_row, mi_col); - break; - case PARTITION_HORZ: - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row + hbs_h, - mi_col, subsize); - break; - case PARTITION_VERT: - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row, - mi_col + hbs_w, subsize); - break; - case PARTITION_HORZ_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row + ebs_h, - mi_col, bsize_med); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[2], - get_partition_subtree_const(ptree_luma, 2), - mi_row + 3 * ebs_h, mi_col, bsize_big); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[3], - get_partition_subtree_const(ptree_luma, 3), - mi_row + 7 * ebs_h, mi_col, subsize); - break; - } - case PARTITION_HORZ_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row + ebs_h, - mi_col, bsize_big); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[2], - get_partition_subtree_const(ptree_luma, 2), - mi_row + 5 * ebs_h, mi_col, bsize_med); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[3], - get_partition_subtree_const(ptree_luma, 3), - mi_row + 7 * ebs_h, mi_col, subsize); - break; - } - case PARTITION_VERT_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row, - mi_col + ebs_w, bsize_med); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[2], - get_partition_subtree_const(ptree_luma, 2), mi_row, - mi_col + 3 * ebs_w, bsize_big); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[3], - get_partition_subtree_const(ptree_luma, 3), mi_row, - mi_col + 7 * ebs_w, subsize); - break; - } - case PARTITION_VERT_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row, - mi_col + ebs_w, bsize_big); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[2], - get_partition_subtree_const(ptree_luma, 2), mi_row, - mi_col + 5 * ebs_w, bsize_med); + if (partition == PARTITION_NONE) { + bool use_chroma_tok = intra_sdp_enabled && xd->tree_type == CHROMA_PART; + write_modes_b(cpi, tile, w, use_chroma_tok ? tok_chroma : tok, + use_chroma_tok ? tok_chroma_end : tok_end, mi_row, mi_col); + } else { + BLOCK_SIZE sub_sizes[4]; + int mi_rows[4], mi_cols[4]; + get_partition_subblock_layout(partition, bsize, mi_row, mi_col, sub_sizes, + mi_rows, mi_cols); + const int num_subblocks = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[3], - get_partition_subtree_const(ptree_luma, 3), mi_row, - mi_col + 7 * ebs_w, subsize); - break; + ptree->sub_tree[sub_idx], + get_partition_subtree_const(ptree_luma, sub_idx), + mi_rows[sub_idx], mi_cols[sub_idx], sub_sizes[sub_idx]); } - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - for (int i = 0; i < 4; ++i) { - BLOCK_SIZE this_bsize = get_h_partition_subsize(bsize, i, partition); - const int offset_r = get_h_partition_offset_mi_row(bsize, i, partition); - const int offset_c = get_h_partition_offset_mi_col(bsize, i, partition); - - assert(this_bsize != BLOCK_INVALID); - assert(offset_r >= 0 && offset_c >= 0); - - const int this_mi_row = mi_row + offset_r; - const int this_mi_col = mi_col + offset_c; - - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[i], - get_partition_subtree_const(ptree_luma, i), this_mi_row, - this_mi_col, this_bsize); - } - break; - case PARTITION_SPLIT: - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), mi_row, mi_col, - subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), mi_row, - mi_col + hbs_w, subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[2], - get_partition_subtree_const(ptree_luma, 2), mi_row + hbs_h, - mi_col, subsize); - write_modes_sb(cpi, tile, w, tok, tok_end, tok_chroma, tok_chroma_end, - ptree->sub_tree[3], - get_partition_subtree_const(ptree_luma, 3), mi_row + hbs_h, - mi_col + hbs_w, subsize); - break; - default: assert(0); break; } if (!is_sb_root && !frame_is_intra_only(cm) && !cm->seq_params.monochrome && parent && partition && parent->region_type != INTRA_REGION && diff --git a/av2/encoder/context_tree.c b/av2/encoder/context_tree.c index c50cae4f00..e8acb1e9ed 100644 --- a/av2/encoder/context_tree.c +++ b/av2/encoder/context_tree.c @@ -20,32 +20,6 @@ static const BLOCK_SIZE square[MAX_SB_SIZE_LOG2 - 1] = { BLOCK_64X64, BLOCK_128X128, BLOCK_256X256, }; -static const int subblock_count[ALL_PARTITION_TYPES] = { - 1, // PARTITION_NONE - 2, // PARTITION_HORZ - 2, // PARTITION_VERT - 4, // PARTITION_HORZ_3 - 4, // PARTITION_VERT_3 - 4, // PARTITION_HORZ_4A - 4, // PARTITION_HORZ_4B - 4, // PARTITION_VERT_4A - 4, // PARTITION_VERT_4B - 4, // PARTITION_SPLIT -}; - -static const int step_multiplier[ALL_PARTITION_TYPES][4][2] = { - { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_NONE - { { 0, 0 }, { 4, 0 }, { 0, 0 }, { 0, 0 } }, // PARTITION_HORZ - { { 0, 0 }, { 0, 4 }, { 0, 0 }, { 0, 0 } }, // PARTITION_VERT - { { 0, 0 }, { 2, 0 }, { 2, 4 }, { 6, 0 } }, // PARTITION_HORZ_3 - { { 0, 0 }, { 0, 2 }, { 4, 2 }, { 0, 6 } }, // PARTITION_VERT_3 - { { 0, 0 }, { 1, 0 }, { 3, 0 }, { 7, 0 } }, // PARTITION_HORZ_4A - { { 0, 0 }, { 1, 0 }, { 5, 0 }, { 7, 0 } }, // PARTITION_HORZ_4B - { { 0, 0 }, { 0, 1 }, { 0, 3 }, { 0, 7 } }, // PARTITION_VERT_4A - { { 0, 0 }, { 0, 1 }, { 0, 5 }, { 0, 7 } }, // PARTITION_VERT_4B - { { 0, 0 }, { 0, 4 }, { 4, 0 }, { 4, 4 } }, // PARTITION_SPLIT -}; - /*!\brief Retrieves the array of child PC_TREE nodes corresponding to a specific * partition type and region. */ PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, @@ -70,68 +44,12 @@ PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, case PARTITION_SPLIT: child_nodes = pc_tree->split[region]; break; } // No child blocks for partition none. - *num_sub_parts = partition == PARTITION_NONE ? 0 : subblock_count[partition]; + *num_sub_parts = + partition == PARTITION_NONE ? 0 : get_subblock_count(partition); return child_nodes; } -/*!\brief Returns number of sub blocks for partition_type. */ -int get_subblock_count(PARTITION_TYPE partition_type) { - if (partition_type >= ALL_PARTITION_TYPES) { - assert(0 && "Unexpected partition type"); - return 0; - } - return subblock_count[partition_type]; -} - -/*!\brief Computes the layout (coordinates and sizes) of subblocks resulting - * from a partition. */ -void get_partition_subblock_layout(PARTITION_TYPE partition_type, - BLOCK_SIZE bsize, int mi_row, int mi_col, - BLOCK_SIZE sub_sizes[4], int mi_rows[4], - int mi_cols[4]) { - if (partition_type >= ALL_PARTITION_TYPES) { - assert(0 && "Unexpected partition type"); - return; - } - const int eighth_step_h = block_size_high[bsize] / 8; - const int eighth_step_w = block_size_wide[bsize] / 8; - const BLOCK_SIZE part_subsize = get_partition_subsize(bsize, partition_type); - - for (int sub_idx = 0; sub_idx < 4; ++sub_idx) { - mi_rows[sub_idx] = mi_row + step_multiplier[partition_type][sub_idx][0] * - eighth_step_h / 4; - mi_cols[sub_idx] = mi_col + step_multiplier[partition_type][sub_idx][1] * - eighth_step_w / 4; - sub_sizes[sub_idx] = part_subsize; - } - if (partition_type == PARTITION_HORZ_3 || - partition_type == PARTITION_VERT_3) { - const BLOCK_SIZE sml_subsize = - get_h_partition_subsize(bsize, 0, partition_type); - const BLOCK_SIZE big_subsize = - get_h_partition_subsize(bsize, 1, partition_type); - sub_sizes[0] = sub_sizes[3] = sml_subsize; - sub_sizes[1] = sub_sizes[2] = big_subsize; - } else if (partition_type == PARTITION_HORZ_4A || - partition_type == PARTITION_VERT_4A || - partition_type == PARTITION_HORZ_4B || - partition_type == PARTITION_VERT_4B) { - const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); - const UNEVEN_4WAY_PART_TYPE uneven_type = - get_4way_part_type(partition_type); - const PARTITION_TYPE p_type = - (rect_type == HORZ) ? PARTITION_HORZ : PARTITION_VERT; - const BLOCK_SIZE big_subsize = get_partition_subsize(bsize, p_type); - assert(big_subsize != BLOCK_INVALID); - const BLOCK_SIZE med_subsize = subsize_lookup[p_type][big_subsize]; - assert(med_subsize != BLOCK_INVALID); - assert(part_subsize == subsize_lookup[p_type][med_subsize]); - sub_sizes[1] = (uneven_type == UNEVEN_4A ? med_subsize : big_subsize); - sub_sizes[2] = (uneven_type == UNEVEN_4A ? big_subsize : med_subsize); - } -} - void av2_copy_tree_context(PICK_MODE_CONTEXT *dst_ctx, PICK_MODE_CONTEXT *src_ctx, int num_planes) { dst_ctx->mic = src_ctx->mic; diff --git a/av2/encoder/context_tree.h b/av2/encoder/context_tree.h index 842b460fcb..47461cecee 100644 --- a/av2/encoder/context_tree.h +++ b/av2/encoder/context_tree.h @@ -148,13 +148,6 @@ PC_TREE *const *get_child_pc_trees(const PC_TREE *pc_tree, PARTITION_TYPE partition, REGION_TYPE region, int *num_sub_parts); -int get_subblock_count(PARTITION_TYPE partition_type); - -void get_partition_subblock_layout(PARTITION_TYPE partition_type, - BLOCK_SIZE bsize, int mi_row, int mi_col, - BLOCK_SIZE sub_sizes[4], int mi_rows[4], - int mi_cols[4]); - #ifdef __cplusplus } // extern "C" #endif diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 99acbe8cbd..36482cbff9 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -978,9 +978,6 @@ static AVM_INLINE void bridge_frame_decode_partition( // Half block width/height. const int hbs_w = mi_size_wide[bsize] / 2; const int hbs_h = mi_size_high[bsize] / 2; - // One-eighth block width/height. - const int ebs_w = mi_size_wide[bsize] / 8; - const int ebs_h = mi_size_high[bsize] / 8; PARTITION_TYPE partition; const int has_rows = (mi_row + hbs_h) < cm->mi_params.mi_rows; const int has_cols = (mi_col + hbs_w) < cm->mi_params.mi_cols; @@ -1054,77 +1051,20 @@ static AVM_INLINE void bridge_frame_decode_partition( ptree->region_type = parent->region_type; } - switch (partition) { - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_SPLIT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { - ptree_luma->sub_tree[0] = av2_alloc_ptree_node(ptree_luma, 0); - ptree_luma->sub_tree[1] = av2_alloc_ptree_node(ptree_luma, 1); - ptree_luma->sub_tree[2] = av2_alloc_ptree_node(ptree_luma, 2); - ptree_luma->sub_tree[3] = av2_alloc_ptree_node(ptree_luma, 3); - } - break; - case PARTITION_HORZ: - case PARTITION_VERT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - - if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { - ptree_luma->sub_tree[0] = av2_alloc_ptree_node(ptree_luma, 0); - ptree_luma->sub_tree[1] = av2_alloc_ptree_node(ptree_luma, 1); - } - break; - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - - if (is_intra_sdp_enabled && xd->tree_type == SHARED_PART) { - ptree_luma->sub_tree[0] = av2_alloc_ptree_node(ptree_luma, 0); - ptree_luma->sub_tree[1] = av2_alloc_ptree_node(ptree_luma, 1); - ptree_luma->sub_tree[2] = av2_alloc_ptree_node(ptree_luma, 2); - ptree_luma->sub_tree[3] = av2_alloc_ptree_node(ptree_luma, 3); - } - break; - default: break; - } - switch (partition) { - case PARTITION_NONE: - xd->is_cfl_allowed_in_sdp = is_cfl_allowed_in_sdp; - break; - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - case PARTITION_SPLIT: - ptree->sub_tree[0]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[1]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[2]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[3]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - break; - case PARTITION_HORZ: - case PARTITION_VERT: - ptree->sub_tree[0]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - ptree->sub_tree[1]->is_cfl_allowed_for_this_chroma_partition = + if (partition == PARTITION_NONE) { + xd->is_cfl_allowed_in_sdp = is_cfl_allowed_in_sdp; + } else { + const int num_subblocks = get_subblock_count(partition); + const bool alloc_luma = + is_intra_sdp_enabled && xd->tree_type == SHARED_PART; + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { + ptree->sub_tree[sub_idx] = av2_alloc_ptree_node(ptree, sub_idx); + ptree->sub_tree[sub_idx]->is_cfl_allowed_for_this_chroma_partition = is_cfl_allowed_in_sdp; - break; - default: break; + if (alloc_luma) + ptree_luma->sub_tree[sub_idx] = + av2_alloc_ptree_node(ptree_luma, sub_idx); + } } const BLOCK_SIZE subsize = get_partition_subsize(bsize, partition); @@ -1172,133 +1112,29 @@ static AVM_INLINE void bridge_frame_decode_partition( mi_col << MI_SIZE_LOG2); } -#define BRIDGE_FRAME_DEC_BLOCK_STX_ARG -#define BRIDGE_FRAME_DEC_BLOCK_EPT_ARG partition, -#define BRIDGE_FRAME_DEC_BLOCK(db_r, db_c, db_subsize, index) \ - bridge_frame_predict_inter_block(cm, xd) -#define BRIDGE_FRAME_DEC_PARTITION(db_r, db_c, db_subsize, index) \ - bridge_frame_decode_partition( \ - cpi, td, tile, BRIDGE_FRAME_DEC_BLOCK_STX_ARG(db_r), (db_c), \ - (db_subsize), sbi, ptree->sub_tree[(index)], \ - get_partition_subtree_const(ptree_luma, index)) - - switch (partition) { - case PARTITION_NONE: - bridge_frame_set_offsets(cm, xd, subsize, mi_row, mi_col, parent, 0, - partition); - // from av2_read_mode_info - MB_MODE_INFO *const mi = xd->mi[0]; - if (xd->tree_type == SHARED_PART) - mi->sb_type[PLANE_TYPE_UV] = mi->sb_type[PLANE_TYPE_Y]; - BRIDGE_FRAME_DEC_BLOCK(mi_row, mi_col, subsize, 0); - break; - case PARTITION_HORZ: - BRIDGE_FRAME_DEC_PARTITION(mi_row, mi_col, subsize, 0); - if ((mi_row + hbs_h) < cm->mi_params.mi_rows) - BRIDGE_FRAME_DEC_PARTITION(mi_row + hbs_h, mi_col, subsize, 1); - break; - case PARTITION_VERT: - BRIDGE_FRAME_DEC_PARTITION(mi_row, mi_col, subsize, 0); - if ((mi_col + hbs_w) < cm->mi_params.mi_cols) - BRIDGE_FRAME_DEC_PARTITION(mi_row, mi_col + hbs_w, subsize, 1); - break; - case PARTITION_HORZ_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - int this_mi_row = mi_row; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, subsize, 0); - this_mi_row += ebs_h; - if (this_mi_row >= cm->mi_params.mi_rows) break; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, bsize_med, 1); - this_mi_row += 2 * ebs_h; - if (this_mi_row >= cm->mi_params.mi_rows) break; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, bsize_big, 2); - this_mi_row += 4 * ebs_h; - if (this_mi_row >= cm->mi_params.mi_rows) break; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, subsize, 3); - break; - } - case PARTITION_HORZ_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - int this_mi_row = mi_row; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, subsize, 0); - this_mi_row += ebs_h; - if (this_mi_row >= cm->mi_params.mi_rows) break; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, bsize_big, 1); - this_mi_row += 4 * ebs_h; - if (this_mi_row >= cm->mi_params.mi_rows) break; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, bsize_med, 2); - this_mi_row += 2 * ebs_h; - if (this_mi_row >= cm->mi_params.mi_rows) break; - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, mi_col, subsize, 3); - break; - } - case PARTITION_VERT_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - int this_mi_col = mi_col; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, subsize, 0); - this_mi_col += ebs_w; - if (this_mi_col >= cm->mi_params.mi_cols) break; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, bsize_med, 1); - this_mi_col += 2 * ebs_w; - if (this_mi_col >= cm->mi_params.mi_cols) break; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, bsize_big, 2); - this_mi_col += 4 * ebs_w; - if (this_mi_col >= cm->mi_params.mi_cols) break; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, subsize, 3); - break; - } - case PARTITION_VERT_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - int this_mi_col = mi_col; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, subsize, 0); - this_mi_col += ebs_w; - if (this_mi_col >= cm->mi_params.mi_cols) break; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, bsize_big, 1); - this_mi_col += 4 * ebs_w; - if (this_mi_col >= cm->mi_params.mi_cols) break; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, bsize_med, 2); - this_mi_col += 2 * ebs_w; - if (this_mi_col >= cm->mi_params.mi_cols) break; - BRIDGE_FRAME_DEC_PARTITION(mi_row, this_mi_col, subsize, 3); - break; - } - case PARTITION_HORZ_3: - case PARTITION_VERT_3: { - for (int i = 0; i < 4; ++i) { - BLOCK_SIZE this_bsize = get_h_partition_subsize(bsize, i, partition); - const int offset_r = get_h_partition_offset_mi_row(bsize, i, partition); - const int offset_c = get_h_partition_offset_mi_col(bsize, i, partition); - - assert(this_bsize != BLOCK_INVALID); - assert(offset_r >= 0 && offset_c >= 0); - - const int this_mi_row = mi_row + offset_r; - const int this_mi_col = mi_col + offset_c; - if (partition == PARTITION_HORZ_3) { - if (this_mi_row >= cm->mi_params.mi_rows) break; - } else { - if (this_mi_col >= cm->mi_params.mi_cols) break; - } - - BRIDGE_FRAME_DEC_PARTITION(this_mi_row, this_mi_col, this_bsize, i); + if (partition == PARTITION_NONE) { + bridge_frame_set_offsets(cm, xd, subsize, mi_row, mi_col, parent, 0, + partition); + // from av2_read_mode_info + MB_MODE_INFO *const mi = xd->mi[0]; + if (xd->tree_type == SHARED_PART) + mi->sb_type[PLANE_TYPE_UV] = mi->sb_type[PLANE_TYPE_Y]; + bridge_frame_predict_inter_block(cm, xd); + } else { + BLOCK_SIZE sub_sizes[4]; + int mi_rows[4], mi_cols[4]; + get_partition_subblock_layout(partition, bsize, mi_row, mi_col, sub_sizes, + mi_rows, mi_cols); + const int num_subblocks = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { + if (mi_rows[sub_idx] < cm->mi_params.mi_rows && + mi_cols[sub_idx] < cm->mi_params.mi_cols) { + bridge_frame_decode_partition( + cpi, td, tile, mi_rows[sub_idx], mi_cols[sub_idx], + sub_sizes[sub_idx], sbi, ptree->sub_tree[sub_idx], + get_partition_subtree_const(ptree_luma, sub_idx)); } - break; } - case PARTITION_SPLIT: - BRIDGE_FRAME_DEC_PARTITION(mi_row, mi_col, subsize, 0); - BRIDGE_FRAME_DEC_PARTITION(mi_row, mi_col + hbs_w, subsize, 1); - BRIDGE_FRAME_DEC_PARTITION(mi_row + hbs_h, mi_col, subsize, 2); - BRIDGE_FRAME_DEC_PARTITION(mi_row + hbs_h, mi_col + hbs_w, subsize, 3); - break; - default: assert(0 && "Invalid partition type"); } parent = ptree->parent; @@ -1310,16 +1146,11 @@ static AVM_INLINE void bridge_frame_decode_partition( xd->tree_type = CHROMA_PART; bridge_frame_set_offsets(cm, xd, bsize, mi_row, mi_col, parent, 0, partition); - BRIDGE_FRAME_DEC_BLOCK(mi_row, mi_col, bsize, 0); + bridge_frame_predict_inter_block(cm, xd); // reset back to shared part xd->tree_type = SHARED_PART; } } - -#undef BRIDGE_FRAME_DEC_PARTITION -#undef BRIDGE_FRAME_DEC_BLOCK -#undef BRIDGE_FRAME_DEC_BLOCK_EPT_ARG -#undef BRIDGE_FRAME_DEC_BLOCK_STX_ARG } static AVM_INLINE void bridge_frame_decode_partition_sb( diff --git a/av2/encoder/mv_prec.c b/av2/encoder/mv_prec.c index 55a9946ebd..b0017aca3f 100644 --- a/av2/encoder/mv_prec.c +++ b/av2/encoder/mv_prec.c @@ -397,114 +397,18 @@ static AVM_INLINE void collect_mv_stats_sb(MV_STATS *mv_stats, return; const PARTITION_TYPE partition = ptree->partition; - const BLOCK_SIZE subsize = get_partition_subsize(bsize, partition); - - const int hbs_w = mi_size_wide[bsize] / 2; - const int hbs_h = mi_size_high[bsize] / 2; - const int ebs_w = mi_size_wide[bsize] / 8; - const int ebs_h = mi_size_high[bsize] / 8; - switch (partition) { - case PARTITION_NONE: - collect_mv_stats_b(mv_stats, cpi, mi_row, mi_col); - break; - case PARTITION_HORZ: - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + hbs_h, mi_col, subsize, - ptree->sub_tree[1]); - break; - case PARTITION_VERT: - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + hbs_w, subsize, - ptree->sub_tree[1]); - break; - case PARTITION_SPLIT: - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + hbs_w, subsize, - ptree->sub_tree[1]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + hbs_h, mi_col, subsize, - ptree->sub_tree[2]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + hbs_h, mi_col + hbs_w, - subsize, ptree->sub_tree[3]); - break; - case PARTITION_HORZ_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + ebs_h, mi_col, bsize_med, - ptree->sub_tree[1]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + 3 * ebs_h, mi_col, bsize_big, - ptree->sub_tree[2]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + 7 * ebs_h, mi_col, subsize, - ptree->sub_tree[3]); - break; - } - case PARTITION_HORZ_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_HORZ); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_HORZ][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_HORZ][bsize_med]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + ebs_h, mi_col, bsize_big, - ptree->sub_tree[1]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + 5 * ebs_h, mi_col, bsize_med, - ptree->sub_tree[2]); - collect_mv_stats_sb(mv_stats, cpi, mi_row + 7 * ebs_h, mi_col, subsize, - ptree->sub_tree[3]); - break; - } - case PARTITION_VERT_4A: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + ebs_w, bsize_med, - ptree->sub_tree[1]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + 3 * ebs_w, bsize_big, - ptree->sub_tree[2]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + 7 * ebs_w, subsize, - ptree->sub_tree[3]); - break; - } - case PARTITION_VERT_4B: { - const BLOCK_SIZE bsize_big = get_partition_subsize(bsize, PARTITION_VERT); - assert(bsize_big < BLOCK_SIZES_ALL); - const BLOCK_SIZE bsize_med = subsize_lookup[PARTITION_VERT][bsize_big]; - assert(subsize == subsize_lookup[PARTITION_VERT][bsize_med]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col, subsize, - ptree->sub_tree[0]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + ebs_w, bsize_big, - ptree->sub_tree[1]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + 5 * ebs_w, bsize_med, - ptree->sub_tree[2]); - collect_mv_stats_sb(mv_stats, cpi, mi_row, mi_col + 7 * ebs_w, subsize, - ptree->sub_tree[3]); - break; - } - case PARTITION_HORZ_3: - case PARTITION_VERT_3: { - for (int i = 0; i < 4; ++i) { - const BLOCK_SIZE this_bsize = - get_h_partition_subsize(bsize, i, partition); - const int offset_mr = - get_h_partition_offset_mi_row(bsize, i, partition); - const int offset_mc = - get_h_partition_offset_mi_col(bsize, i, partition); - - collect_mv_stats_sb(mv_stats, cpi, mi_row + offset_mr, - mi_col + offset_mc, this_bsize, ptree->sub_tree[i]); - } - break; + if (partition == PARTITION_NONE) { + collect_mv_stats_b(mv_stats, cpi, mi_row, mi_col); + } else { + BLOCK_SIZE sub_sizes[4]; + int mi_rows[4], mi_cols[4]; + get_partition_subblock_layout(partition, bsize, mi_row, mi_col, sub_sizes, + mi_rows, mi_cols); + const int num_subblocks = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_subblocks; ++sub_idx) { + collect_mv_stats_sb(mv_stats, cpi, mi_rows[sub_idx], mi_cols[sub_idx], + sub_sizes[sub_idx], ptree->sub_tree[sub_idx]); } - default: assert(0); } } diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 07f29f8568..f8b29376b7 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -1948,54 +1948,14 @@ static void encode_sb(const AV2_COMP *const cpi, ThreadData *td, } if (partition == PARTITION_NONE) { xd->is_cfl_allowed_in_sdp = is_cfl_allowed_in_sdp; - } - - switch (partition) { - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_SPLIT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - break; - case PARTITION_HORZ: - case PARTITION_VERT: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - break; - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - ptree->sub_tree[0] = av2_alloc_ptree_node(ptree, 0); - ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); - ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); - ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - break; - default: break; - } - for (int i = 0; i < 4; ++i) sub_tree[i] = ptree->sub_tree[i]; - - switch (partition) { - case PARTITION_HORZ_4A: - case PARTITION_HORZ_4B: - case PARTITION_VERT_4A: - case PARTITION_VERT_4B: - case PARTITION_SPLIT: - case PARTITION_HORZ_3: - case PARTITION_VERT_3: - for (int i = 0; i < 4; ++i) - sub_tree[i]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - break; - case PARTITION_HORZ: - case PARTITION_VERT: - for (int i = 0; i < 2; ++i) - sub_tree[i]->is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_in_sdp; - break; - default: break; + } else { + int num_sub_parts = get_subblock_count(partition); + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + sub_tree[sub_idx] = ptree->sub_tree[sub_idx] = + av2_alloc_ptree_node(ptree, sub_idx); + sub_tree[sub_idx]->is_cfl_allowed_for_this_chroma_partition = + is_cfl_allowed_in_sdp; + } } if (!cm->seq_params.enable_cfl_intra && !cm->seq_params.enable_mhccp) { xd->is_cfl_allowed_in_sdp = CFL_DISALLOWED_FOR_CHROMA; From fd75e08de9cb0207d1aad61e6c83a702fe2fbf52 Mon Sep 17 00:00:00 2001 From: Jerome Jiang Date: Fri, 31 Jul 2026 13:02:47 -0400 Subject: [PATCH 107/205] Fix array subscript out of bounds warning in rdopt.c Use COMPACT_INDEX0_NRS and COMPACT_INDEX1_NRS for indexing ref_costs_comp in av2_rd_pick_inter_mode_sb to prevent out-of-bounds array access warning on 8x8 ref_costs_comp array. --- av2/encoder/rdopt.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index d26810a387..951f257342 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -9278,9 +9278,10 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, } const int ref_frame_index = COMPACT_INDEX0_NRS(ref_frame); - const int ref_frame_cost = comp_pred - ? ref_costs_comp[ref_frame][second_ref_frame] - : ref_costs_single[ref_frame_index]; + const int sec_ref_frame_index = COMPACT_INDEX1_NRS(second_ref_frame); + const int ref_frame_cost = + comp_pred ? ref_costs_comp[ref_frame_index][sec_ref_frame_index] + : ref_costs_single[ref_frame_index]; const int compmode_cost = (comp_ref_allowed && !is_tip_ref_frame(ref_frame)) ? comp_inter_cost[comp_pred] : 0; From b5c720f70c52018921526aa4b7a54c2a81962ea1 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Tue, 4 Aug 2026 15:40:07 -0700 Subject: [PATCH 108/205] Extend perform_coeff_opt qindex threshold (#5196) Broaden the coefficient-optimization speed feature to cover more frames, using a reference-aware optimization level that stays conservative on reference frames. Anchor: aa78cfb0 Test condition: CTC, RA, 33 frames, speed 1 RA: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.02 | -0.05 | 0.23 | 0.03 | 98.7 | | A2 | -0.04 | 0.26 | 0.30 | -0.02 | 98.9 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | 0.02 | 0.09 | 0.11 | 0.02 | 98.9 | +------------+-------+-------+-------+-------+------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 88178e3441..3b05011cd3 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -1363,11 +1363,15 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { } if (is_720p_or_larger && cpi->oxcf.mode == GOOD && speed <= 1) { - const int qindex_thresh = 124 + qindex_offset; + // At speed 1, extend the qindex band and use a boost-aware coeff-opt level + // (keeps full optimization on KF/ARF/GF references while pruning more on + // the non-reference leaves). Speed 0 keeps its original behavior. + const int qindex_thresh = (speed == 1 ? 200 : 124) + qindex_offset; const int qindex_thresh2 = 113 + qindex_offset; if (cm->quant_params.base_qindex <= qindex_thresh) { - sf->rd_sf.perform_coeff_opt = 2 + is_1080p_or_larger; + sf->rd_sf.perform_coeff_opt = + (speed == 1) ? (boosted ? 2 : 3) : (2 + is_1080p_or_larger); memcpy(winner_mode_params->coeff_opt_dist_threshold, coeff_opt_dist_thresholds[sf->rd_sf.perform_coeff_opt], sizeof(winner_mode_params->coeff_opt_dist_threshold)); From 802097c809e5dc4ef3a60de2a3d2a1c66e2e8872 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Tue, 4 Aug 2026 15:41:19 -0700 Subject: [PATCH 109/205] Extend prune_inter_tx_part_rd_eval qindex threshold (#5197) Broaden the transform-partition RD-evaluation pruning to cover more frames, keeping 4K content conservative where extended transform partitions matter most. Anchor: aa78cfb0 Test condition: CTC, RA, 33 frames, speed 1 RA: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.00 | 0.00 | 0.00 | 0.00 | 100 | | A2 | 0.02 | 0.10 | 0.24 | 0.03 | 98.4 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | 0.02 | 0.10 | 0.11 | 0.02 | 99.1 | +------------+-------+-------+-------+-------+------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 3b05011cd3..8a4e84d6e9 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -1411,7 +1411,12 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { } } - if (cm->quant_params.base_qindex <= qindex_thresh && + // For speed >= 1, raise the threshold for non-4K content so more frames + // use this pruning; 4K (A1-like, where extended TX partitions matter) and + // speed 0 keep the baseline threshold. + const int qindex_thresh_tx = + (speed >= 1 && !is_2160p_or_larger ? 170 : 135) + qindex_offset; + if (cm->quant_params.base_qindex <= qindex_thresh_tx && !cm->features.allow_screen_content_tools) { sf->flexmv_sf.prune_mv_prec_using_best_mv_prec_so_far = boosted ? 0 : 1; if (!boosted) { From 9d14fb35b014caa7d5276768cb6e799b54c41efb Mon Sep 17 00:00:00 2001 From: jadhuran Date: Tue, 4 Aug 2026 15:50:30 -0700 Subject: [PATCH 110/205] Reduce winner mode transform candidates to 2 (#5198) Reduce winner mode transform candidates from 3 to 2 Results: Anchor: dd6f21f227f310086eaf83d3251c6f38ef56e4ca ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | -0.02% | -0.11% | -0.10% | -0.03% | 99.5% | 99.3% | | A2 | -0.02% | 0.00% | 0.22% | -0.01% | 99.1% | 98.9% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/encoder/block.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/av2/encoder/block.h b/av2/encoder/block.h index e17322d3ca..e261660107 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -35,9 +35,9 @@ extern "C" { //! Maximum number of tpl block in a super block #define MAX_TPL_BLK_IN_SB (MAX_SB_SIZE / MIN_TPL_BSIZE_1D) //! Number of intra winner modes kept -#define MAX_WINNER_MODE_COUNT_INTRA 3 +#define MAX_WINNER_MODE_COUNT_INTRA 2 //! Number of inter winner modes kept -#define MAX_WINNER_MODE_COUNT_INTER 3 +#define MAX_WINNER_MODE_COUNT_INTER 2 //! Number of txfm hash records kept for the partition block. #define RD_RECORD_BUFFER_LEN 8 From 22629e6f00b7659b4912c620cb569cbbd84ee564 Mon Sep 17 00:00:00 2001 From: Deepa K G Date: Mon, 13 Jul 2026 09:50:38 +0530 Subject: [PATCH 111/205] Improve AVX2 of av2_wedge_sse_from_residuals() This change improves the AVX2 of av2_wedge_sse_from_residuals() by partially unrolling it to improve instruction-level parallelism and reduce loop overhead. Also, a corresponding speed unit test is added. The optimized AVX2 implementation achieves ~1.15x speedup over the existing AVX2 implementation. --- av2/encoder/x86/wedge_utils_avx2.c | 62 +++++++++++++++++++----------- test/av2_wedge_utils_test.cc | 40 ++++++++++++++++++- 2 files changed, 79 insertions(+), 23 deletions(-) diff --git a/av2/encoder/x86/wedge_utils_avx2.c b/av2/encoder/x86/wedge_utils_avx2.c index 8c8ae44635..7f702e37a0 100644 --- a/av2/encoder/x86/wedge_utils_avx2.c +++ b/av2/encoder/x86/wedge_utils_avx2.c @@ -22,6 +22,35 @@ #define MAX_MASK_VALUE (1 << WEDGE_WEIGHT_BITS) +#define WEDGE_SSE_16(OFFSET, ACCUM_VALUE) \ + do { \ + const __m256i v_r0_w = \ + _mm256_lddqu_si256((const __m256i *)(r1 + n + OFFSET)); \ + const __m256i v_d0_w = \ + _mm256_lddqu_si256((const __m256i *)(d + n + OFFSET)); \ + const __m128i v_m01_b = \ + _mm_lddqu_si128((const __m128i *)(m + n + OFFSET)); \ + \ + const __m256i v_rd0l_w = _mm256_unpacklo_epi16(v_d0_w, v_r0_w); \ + const __m256i v_rd0h_w = _mm256_unpackhi_epi16(v_d0_w, v_r0_w); \ + const __m256i v_m0_w = _mm256_cvtepu8_epi16(v_m01_b); \ + \ + const __m256i v_m0l_w = _mm256_unpacklo_epi16(v_m0_w, v_mask_max_w); \ + const __m256i v_m0h_w = _mm256_unpackhi_epi16(v_m0_w, v_mask_max_w); \ + \ + const __m256i v_t0l_d = _mm256_madd_epi16(v_rd0l_w, v_m0l_w); \ + const __m256i v_t0h_d = _mm256_madd_epi16(v_rd0h_w, v_m0h_w); \ + \ + const __m256i v_t0_w = _mm256_packs_epi32(v_t0l_d, v_t0h_d); \ + \ + const __m256i v_sq0_d = _mm256_madd_epi16(v_t0_w, v_t0_w); \ + \ + const __m256i v_sum0_q = _mm256_add_epi64( \ + _mm256_and_si256(v_sq0_d, v_zext_q), _mm256_srli_epi64(v_sq0_d, 32)); \ + \ + ACCUM_VALUE = v_sum0_q; \ + } while (0) + /** * See av2_wedge_sse_from_residuals_c */ @@ -35,6 +64,8 @@ uint64_t av2_wedge_sse_from_residuals_avx2(const int16_t *r1, const int16_t *d, const __m256i v_zext_q = yy_set1_64_from_32i(0xffffffff); __m256i v_acc0_q = _mm256_setzero_si256(); + __m256i v_acc0_q_offset_0, v_acc0_q_offset_16, v_acc0_q_offset_32, + v_acc0_q_offset_48; assert(N % 64 == 0); @@ -43,30 +74,17 @@ uint64_t av2_wedge_sse_from_residuals_avx2(const int16_t *r1, const int16_t *d, m += N; do { - const __m256i v_r0_w = _mm256_lddqu_si256((__m256i *)(r1 + n)); - const __m256i v_d0_w = _mm256_lddqu_si256((__m256i *)(d + n)); - const __m128i v_m01_b = _mm_lddqu_si128((__m128i *)(m + n)); - - const __m256i v_rd0l_w = _mm256_unpacklo_epi16(v_d0_w, v_r0_w); - const __m256i v_rd0h_w = _mm256_unpackhi_epi16(v_d0_w, v_r0_w); - const __m256i v_m0_w = _mm256_cvtepu8_epi16(v_m01_b); - - const __m256i v_m0l_w = _mm256_unpacklo_epi16(v_m0_w, v_mask_max_w); - const __m256i v_m0h_w = _mm256_unpackhi_epi16(v_m0_w, v_mask_max_w); - - const __m256i v_t0l_d = _mm256_madd_epi16(v_rd0l_w, v_m0l_w); - const __m256i v_t0h_d = _mm256_madd_epi16(v_rd0h_w, v_m0h_w); - - const __m256i v_t0_w = _mm256_packs_epi32(v_t0l_d, v_t0h_d); - - const __m256i v_sq0_d = _mm256_madd_epi16(v_t0_w, v_t0_w); - - const __m256i v_sum0_q = _mm256_add_epi64( - _mm256_and_si256(v_sq0_d, v_zext_q), _mm256_srli_epi64(v_sq0_d, 32)); + WEDGE_SSE_16(0, v_acc0_q_offset_0); + WEDGE_SSE_16(16, v_acc0_q_offset_16); + WEDGE_SSE_16(32, v_acc0_q_offset_32); + WEDGE_SSE_16(48, v_acc0_q_offset_48); - v_acc0_q = _mm256_add_epi64(v_acc0_q, v_sum0_q); + v_acc0_q = _mm256_add_epi64(v_acc0_q, v_acc0_q_offset_0); + v_acc0_q = _mm256_add_epi64(v_acc0_q, v_acc0_q_offset_16); + v_acc0_q = _mm256_add_epi64(v_acc0_q, v_acc0_q_offset_32); + v_acc0_q = _mm256_add_epi64(v_acc0_q, v_acc0_q_offset_48); - n += 16; + n += 64; } while (n); v_acc0_q = _mm256_add_epi64(v_acc0_q, _mm256_srli_si256(v_acc0_q, 8)); diff --git a/test/av2_wedge_utils_test.cc b/test/av2_wedge_utils_test.cc index 5724a15b24..47c358eda3 100644 --- a/test/av2_wedge_utils_test.cc +++ b/test/av2_wedge_utils_test.cc @@ -10,6 +10,7 @@ * aomedia.org/license/patent-license/. */ +#include #include "third_party/googletest/src/googletest/include/gtest/gtest.h" #include "config/avm_config.h" @@ -149,6 +150,43 @@ TEST_P(WedgeUtilsSSEOptTest, ExtremeValues) { } } +TEST_P(WedgeUtilsSSEOptTest, DISABLED_Speed) { + DECLARE_ALIGNED(32, int16_t, r1[MAX_SB_SQUARE]); + DECLARE_ALIGNED(32, int16_t, d[MAX_SB_SQUARE]); + DECLARE_ALIGNED(32, uint8_t, m[MAX_SB_SQUARE]); + constexpr int kNumIters = 100000000; + + for (int i = 0; i < MAX_SB_SQUARE; ++i) { + r1[i] = rng_(2 * kInt13Max + 1) - kInt13Max; + d[i] = rng_(2 * kInt13Max + 1) - kInt13Max; + m[i] = rng_(MAX_MASK_VALUE + 1); + } + + const int N = 64 * (rng_(MAX_SB_SQUARE / 64) + 1); + + avm_usec_timer ref_timer, test_timer; + avm_usec_timer_start(&ref_timer); + for (int iter = 0; iter < kNumIters; ++iter) { + params_.ref_func(r1, d, m, N); + } + avm_usec_timer_mark(&ref_timer); + const int elapsed_time_c = + static_cast(avm_usec_timer_elapsed(&ref_timer)); + + avm_usec_timer_start(&test_timer); + for (int iter = 0; iter < kNumIters; ++iter) { + params_.tst_func(r1, d, m, N); + } + avm_usec_timer_mark(&test_timer); + const int elapsed_time_simd = + static_cast(avm_usec_timer_elapsed(&test_timer)); + printf( + "c_time=%d \t simd_time=%d \t " + "Scaling=%lf \n", + elapsed_time_c, elapsed_time_simd, + (static_cast(elapsed_time_c) / elapsed_time_simd)); +} + ////////////////////////////////////////////////////////////////////////////// // av2_wedge_sign_from_residuals ////////////////////////////////////////////////////////////////////////////// @@ -308,7 +346,7 @@ INSTANTIATE_TEST_SUITE_P( #if HAVE_AVX2 INSTANTIATE_TEST_SUITE_P( AVX2, WedgeUtilsSSEOptTest, - ::testing::Values(TestFuncsFSSE(av2_wedge_sse_from_residuals_sse2, + ::testing::Values(TestFuncsFSSE(av2_wedge_sse_from_residuals_c, av2_wedge_sse_from_residuals_avx2))); INSTANTIATE_TEST_SUITE_P( From e7baf4259ea149f06a6bd4c18096a378d1aeb449 Mon Sep 17 00:00:00 2001 From: Deepa K G Date: Wed, 22 Jul 2026 11:38:35 +0530 Subject: [PATCH 112/205] Add AVX2 implementation for avm_highbd_comp_avg_upsampled_pred() This patch adds AVX2 implementation for avm_highbd_comp_avg_upsampled_pred(). Also the corresponding unit test is added. Performance (C time / SIMD time): Block Size SSE2 AVX2 ------------------------- 8x8 1.58x 3.07x 16x16 3.40x 5.71x 32x32 1.51x 3.17x 64x64 1.16x 2.21x 128x128 1.20x 1.52x 256x256 1.24x 1.46x --- avm_dsp/avm_dsp_rtcd_defs.pl | 2 +- avm_dsp/x86/highbd_variance_avx2.c | 175 +++++++++++++++++++++++++ test/comp_avg_test.cc | 199 +++++++++++++++++++++++++++++ test/test.cmake | 1 + 4 files changed, 376 insertions(+), 1 deletion(-) create mode 100644 test/comp_avg_test.cc diff --git a/avm_dsp/avm_dsp_rtcd_defs.pl b/avm_dsp/avm_dsp_rtcd_defs.pl index 254cf8424e..f37ed853c9 100644 --- a/avm_dsp/avm_dsp_rtcd_defs.pl +++ b/avm_dsp/avm_dsp_rtcd_defs.pl @@ -591,7 +591,7 @@ () const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, int ref_stride, int bd, int subpel_search, int is_scaled_ref"; - specialize qw/avm_highbd_comp_avg_upsampled_pred sse2 neon/; + specialize qw/avm_highbd_comp_avg_upsampled_pred sse2 avx2 neon/; add_proto qw/void avm_highbd_dist_wtd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, diff --git a/avm_dsp/x86/highbd_variance_avx2.c b/avm_dsp/x86/highbd_variance_avx2.c index c37ac2d0e9..b7ced27ebe 100644 --- a/avm_dsp/x86/highbd_variance_avx2.c +++ b/avm_dsp/x86/highbd_variance_avx2.c @@ -1137,3 +1137,178 @@ uint64_t avm_mse_wxh_16bit_highbd_avx2(uint16_t *dst, int dstride, default: assert(0 && "unsupported width"); return -1; } } + +static AVM_FORCE_INLINE void highbd_comp_avg_pred_64(const uint16_t *src, + uint16_t *dst) { + __m256i pred0[4], pred1[4]; + pred0[0] = _mm256_loadu_si256((const __m256i *)(src + 0 * 16)); + pred0[1] = _mm256_loadu_si256((const __m256i *)(src + 1 * 16)); + pred0[2] = _mm256_loadu_si256((const __m256i *)(src + 2 * 16)); + pred0[3] = _mm256_loadu_si256((const __m256i *)(src + 3 * 16)); + + pred1[0] = _mm256_loadu_si256((const __m256i *)(dst + 0 * 16)); + pred1[1] = _mm256_loadu_si256((const __m256i *)(dst + 1 * 16)); + pred1[2] = _mm256_loadu_si256((const __m256i *)(dst + 2 * 16)); + pred1[3] = _mm256_loadu_si256((const __m256i *)(dst + 3 * 16)); + + _mm256_storeu_si256((__m256i *)(dst + 0 * 16), + _mm256_avg_epu16(pred0[0], pred1[0])); + _mm256_storeu_si256((__m256i *)(dst + 1 * 16), + _mm256_avg_epu16(pred0[1], pred1[1])); + _mm256_storeu_si256((__m256i *)(dst + 2 * 16), + _mm256_avg_epu16(pred0[2], pred1[2])); + _mm256_storeu_si256((__m256i *)(dst + 3 * 16), + _mm256_avg_epu16(pred0[3], pred1[3])); +} + +static AVM_FORCE_INLINE void highbd_comp_avg_pred_128(const uint16_t *src, + uint16_t *dst) { + __m256i pred0[8], pred1[8]; + pred0[0] = _mm256_loadu_si256((const __m256i *)(src + 0 * 16)); + pred0[1] = _mm256_loadu_si256((const __m256i *)(src + 1 * 16)); + pred0[2] = _mm256_loadu_si256((const __m256i *)(src + 2 * 16)); + pred0[3] = _mm256_loadu_si256((const __m256i *)(src + 3 * 16)); + pred0[4] = _mm256_loadu_si256((const __m256i *)(src + 4 * 16)); + pred0[5] = _mm256_loadu_si256((const __m256i *)(src + 5 * 16)); + pred0[6] = _mm256_loadu_si256((const __m256i *)(src + 6 * 16)); + pred0[7] = _mm256_loadu_si256((const __m256i *)(src + 7 * 16)); + + pred1[0] = _mm256_loadu_si256((const __m256i *)(dst + 0 * 16)); + pred1[1] = _mm256_loadu_si256((const __m256i *)(dst + 1 * 16)); + pred1[2] = _mm256_loadu_si256((const __m256i *)(dst + 2 * 16)); + pred1[3] = _mm256_loadu_si256((const __m256i *)(dst + 3 * 16)); + pred1[4] = _mm256_loadu_si256((const __m256i *)(dst + 4 * 16)); + pred1[5] = _mm256_loadu_si256((const __m256i *)(dst + 5 * 16)); + pred1[6] = _mm256_loadu_si256((const __m256i *)(dst + 6 * 16)); + pred1[7] = _mm256_loadu_si256((const __m256i *)(dst + 7 * 16)); + + _mm256_storeu_si256((__m256i *)(dst + 0 * 16), + _mm256_avg_epu16(pred0[0], pred1[0])); + _mm256_storeu_si256((__m256i *)(dst + 1 * 16), + _mm256_avg_epu16(pred0[1], pred1[1])); + _mm256_storeu_si256((__m256i *)(dst + 2 * 16), + _mm256_avg_epu16(pred0[2], pred1[2])); + _mm256_storeu_si256((__m256i *)(dst + 3 * 16), + _mm256_avg_epu16(pred0[3], pred1[3])); + _mm256_storeu_si256((__m256i *)(dst + 4 * 16), + _mm256_avg_epu16(pred0[4], pred1[4])); + _mm256_storeu_si256((__m256i *)(dst + 5 * 16), + _mm256_avg_epu16(pred0[5], pred1[5])); + _mm256_storeu_si256((__m256i *)(dst + 6 * 16), + _mm256_avg_epu16(pred0[6], pred1[6])); + _mm256_storeu_si256((__m256i *)(dst + 7 * 16), + _mm256_avg_epu16(pred0[7], pred1[7])); +} + +static AVM_FORCE_INLINE void highbd_comp_avg_pred_avx2(uint16_t *comp_pred, + const uint16_t *pred, + int width, int height) { + assert(!(width * height & 15)); + int h = height; + if (width == 4) { + do { + const __m256i pred0 = _mm256_loadu_si256((const __m256i *)comp_pred); + const __m256i pred1 = _mm256_loadu_si256((const __m256i *)pred); + _mm256_storeu_si256((__m256i *)comp_pred, _mm256_avg_epu16(pred0, pred1)); + comp_pred += 16; + pred += 16; + h -= 4; + } while (h); + } else if (width == 8) { + do { + __m256i pred0[2], pred1[2]; + pred0[0] = _mm256_loadu_si256((const __m256i *)comp_pred); + pred0[1] = _mm256_loadu_si256((const __m256i *)(comp_pred + 16)); + pred1[0] = _mm256_loadu_si256((const __m256i *)pred); + pred1[1] = _mm256_loadu_si256((const __m256i *)(pred + 16)); + _mm256_storeu_si256((__m256i *)comp_pred, + _mm256_avg_epu16(pred0[0], pred1[0])); + _mm256_storeu_si256((__m256i *)(comp_pred + 16), + _mm256_avg_epu16(pred0[1], pred1[1])); + comp_pred += 32; + pred += 32; + h -= 4; + } while (h); + } else if (width == 16) { + do { + __m256i pred0[2], pred1[2]; + pred0[0] = _mm256_loadu_si256((const __m256i *)comp_pred); + pred0[1] = _mm256_loadu_si256((const __m256i *)(comp_pred + 16)); + pred1[0] = _mm256_loadu_si256((const __m256i *)pred); + pred1[1] = _mm256_loadu_si256((const __m256i *)(pred + 16)); + _mm256_storeu_si256((__m256i *)comp_pred, + _mm256_avg_epu16(pred0[0], pred1[0])); + _mm256_storeu_si256((__m256i *)(comp_pred + 16), + _mm256_avg_epu16(pred0[1], pred1[1])); + comp_pred += 32; + pred += 32; + h -= 2; + } while (h); + } else if (width == 32) { + do { + __m256i pred0[4], pred1[4]; + pred0[0] = _mm256_loadu_si256((const __m256i *)comp_pred); + pred0[1] = _mm256_loadu_si256((const __m256i *)(comp_pred + 16)); + pred0[2] = _mm256_loadu_si256((const __m256i *)(comp_pred + 32)); + pred0[3] = _mm256_loadu_si256((const __m256i *)(comp_pred + 48)); + pred1[0] = _mm256_loadu_si256((const __m256i *)pred); + pred1[1] = _mm256_loadu_si256((const __m256i *)(pred + 16)); + pred1[2] = _mm256_loadu_si256((const __m256i *)(pred + 32)); + pred1[3] = _mm256_loadu_si256((const __m256i *)(pred + 48)); + _mm256_storeu_si256((__m256i *)comp_pred, + _mm256_avg_epu16(pred0[0], pred1[0])); + _mm256_storeu_si256((__m256i *)(comp_pred + 16), + _mm256_avg_epu16(pred0[1], pred1[1])); + _mm256_storeu_si256((__m256i *)(comp_pred + 32), + _mm256_avg_epu16(pred0[2], pred1[2])); + _mm256_storeu_si256((__m256i *)(comp_pred + 48), + _mm256_avg_epu16(pred0[3], pred1[3])); + comp_pred += 64; + pred += 64; + h -= 2; + } while (h); + } else if (width == 64) { + do { + highbd_comp_avg_pred_64(pred, comp_pred); + comp_pred += 64; + pred += 64; + highbd_comp_avg_pred_64(pred, comp_pred); + comp_pred += 64; + pred += 64; + h -= 2; + } while (h); + } else if (width == 128) { + do { + highbd_comp_avg_pred_128(pred, comp_pred); + comp_pred += 128; + pred += 128; + highbd_comp_avg_pred_128(pred, comp_pred); + comp_pred += 128; + pred += 128; + h -= 2; + } while (h); + } else if (width == 256) { + do { + highbd_comp_avg_pred_128(pred, comp_pred); + highbd_comp_avg_pred_128(pred + 128, comp_pred + 128); + comp_pred += 256; + pred += 256; + highbd_comp_avg_pred_128(pred, comp_pred); + highbd_comp_avg_pred_128(pred + 128, comp_pred + 128); + comp_pred += 256; + pred += 256; + h -= 2; + } while (h); + } +} + +void avm_highbd_comp_avg_upsampled_pred_avx2( + MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, + const MV *const mv, uint16_t *comp_pred16, const uint16_t *pred, int width, + int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, + int ref_stride, int bd, int subpel_search, int is_scaled_ref) { + avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred16, width, + height, subpel_x_q3, subpel_y_q3, ref, ref_stride, + bd, subpel_search, is_scaled_ref); + highbd_comp_avg_pred_avx2(comp_pred16, pred, width, height); +} diff --git a/test/comp_avg_test.cc b/test/comp_avg_test.cc new file mode 100644 index 0000000000..ef6b4e6362 --- /dev/null +++ b/test/comp_avg_test.cc @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ +#include + +#include "config/avm_dsp_rtcd.h" + +#include "avm_ports/avm_timer.h" +#include "test/acm_random.h" +#include "test/clear_system_state.h" +#include "test/util.h" + +namespace AV2CompAvgUpsampledPred { +#if (HAVE_SSE2 || HAVE_AVX2) +const BLOCK_SIZE kValidBlockSize[] = { + BLOCK_8X8, BLOCK_8X16, BLOCK_16X8, BLOCK_16X16, BLOCK_16X32, + BLOCK_32X16, BLOCK_32X32, BLOCK_32X64, BLOCK_64X32, BLOCK_64X64, + BLOCK_64X128, BLOCK_128X64, BLOCK_128X128, BLOCK_128X256, BLOCK_256X128, + BLOCK_256X256, BLOCK_4X16, BLOCK_16X4, BLOCK_8X32, BLOCK_32X8, + BLOCK_16X64, BLOCK_64X16, BLOCK_4X32, BLOCK_32X4, BLOCK_8X64, + BLOCK_64X8 +}; +#endif + +typedef void (*highbd_comp_avg_upsampled_pred_func)( + MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, + const MV *const mv, uint16_t *comp_pred16, const uint16_t *pred, int width, + int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, + int ref_stride, int bd, int subpel_search, int is_scaled_ref); + +typedef std::tuple + HighbdCompAvgUpsampledPredParam; + +class AV2HighbdCompAvgUpsampledPredTest + : public ::testing::TestWithParam { + public: + ~AV2HighbdCompAvgUpsampledPredTest(); + void SetUp(); + + void TearDown(); + + protected: + void RunCheckOutput(highbd_comp_avg_upsampled_pred_func test_impl, + BLOCK_SIZE bsize, int bd_); + void RunSpeedTest(highbd_comp_avg_upsampled_pred_func test_impl, + BLOCK_SIZE bsize, int bd_); + bool CheckResult(int width, int height) { + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + const int idx = y * width + x; + if (comp_pred1_[idx] != comp_pred2_[idx]) { + printf("%dx%d mismatch @%d(%d,%d) ", width, height, idx, y, x); + printf("%d != %d ", comp_pred1_[idx], comp_pred2_[idx]); + return false; + } + } + } + return true; + } + + libavm_test::ACMRandom rnd_; + uint16_t *comp_pred1_; + uint16_t *comp_pred2_; + uint16_t *pred_; + uint16_t *ref_buffer_; + uint16_t *ref_; +}; +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST( + AV2HighbdCompAvgUpsampledPredTest); + +AV2HighbdCompAvgUpsampledPredTest::~AV2HighbdCompAvgUpsampledPredTest() { ; } + +void AV2HighbdCompAvgUpsampledPredTest::SetUp() { + rnd_.Reset(libavm_test::ACMRandom::DeterministicSeed()); + + comp_pred1_ = (uint16_t *)avm_memalign( + 16, (MAX_SB_SQUARE + (8 * MAX_SB_SIZE)) * sizeof(*comp_pred1_)); + comp_pred2_ = (uint16_t *)avm_memalign( + 16, (MAX_SB_SQUARE + (8 * MAX_SB_SIZE)) * sizeof(*comp_pred2_)); + pred_ = (uint16_t *)avm_memalign(16, MAX_SB_SQUARE * sizeof(*pred_)); + ref_buffer_ = (uint16_t *)avm_memalign( + 16, (8 + MAX_SB_SIZE) * (8 + MAX_SB_SIZE) * sizeof(*ref_buffer_)); + ref_ = ref_buffer_ + 4 * (MAX_SB_SIZE + 8) + 4; +} + +void AV2HighbdCompAvgUpsampledPredTest::TearDown() { + avm_free(comp_pred1_); + avm_free(comp_pred2_); + avm_free(pred_); + avm_free(ref_buffer_); + libavm_test::ClearSystemState(); +} + +void AV2HighbdCompAvgUpsampledPredTest::RunCheckOutput( + highbd_comp_avg_upsampled_pred_func test_impl, BLOCK_SIZE bsize, int bd_) { + const int w = block_size_wide[bsize]; + const int h = block_size_high[bsize]; + const int is_scaled_ref = 0; + + for (int i = 0; i < MAX_SB_SQUARE; ++i) { + pred_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + for (int i = 0; i < (8 + MAX_SB_SIZE) * (8 + MAX_SB_SIZE); ++i) { + ref_buffer_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + + for (int subpel_search = USE_2_TAPS; subpel_search <= USE_8_TAPS; + ++subpel_search) { + for (int sub = 0; sub < 64; ++sub) { + const int subx = sub & 0x7; + const int suby = sub >> 3; + + avm_highbd_comp_avg_upsampled_pred_c( + NULL, NULL, 0, 0, NULL, comp_pred1_, pred_, w, h, subx, suby, ref_, + MAX_SB_SIZE, bd_, subpel_search, is_scaled_ref); + + test_impl(NULL, NULL, 0, 0, NULL, comp_pred2_, pred_, w, h, subx, suby, + ref_, MAX_SB_SIZE, bd_, subpel_search, is_scaled_ref); + + ASSERT_TRUE(CheckResult(w, h)) << "sub (" << subx << "," << suby << ")"; + } + } +} + +void AV2HighbdCompAvgUpsampledPredTest::RunSpeedTest( + highbd_comp_avg_upsampled_pred_func test_impl, BLOCK_SIZE bsize, int bd_) { + const int w = block_size_wide[bsize]; + const int h = block_size_high[bsize]; + constexpr int kNumIters = 100000; + double elapsed_time[2] = { 0.0 }; + const int subx = 0; + const int suby = 0; + const int subpel_search = USE_8_TAPS; + const int is_scaled_ref = 0; + for (int i = 0; i < MAX_SB_SQUARE; ++i) { + pred_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + for (int i = 0; i < (8 + MAX_SB_SIZE) * (8 + MAX_SB_SIZE); ++i) { + ref_buffer_[i] = rnd_.Rand16() & ((1 << bd_) - 1); + } + + avm_usec_timer timer1; + avm_usec_timer_start(&timer1); + for (int j = 0; j < kNumIters; ++j) { + avm_highbd_comp_avg_upsampled_pred_c( + NULL, NULL, 0, 0, NULL, comp_pred1_, pred_, w, h, subx, suby, ref_, + MAX_SB_SIZE, bd_, subpel_search, is_scaled_ref); + } + avm_usec_timer_mark(&timer1); + const double time1 = static_cast(avm_usec_timer_elapsed(&timer1)); + elapsed_time[0] = 1000.0 * time1; + + avm_usec_timer timer2; + avm_usec_timer_start(&timer2); + for (int j = 0; j < kNumIters; ++j) { + test_impl(NULL, NULL, 0, 0, NULL, comp_pred1_, pred_, w, h, subx, suby, + ref_, MAX_SB_SIZE, bd_, subpel_search, is_scaled_ref); + } + avm_usec_timer_mark(&timer2); + const double time2 = static_cast(avm_usec_timer_elapsed(&timer2)); + elapsed_time[1] = 1000.0 * time2; + + printf("CompAvg %3dx%-3d: c_time=%7.2fs, simd_time=%7.2fs, scaling=%3.2f\n", + w, h, elapsed_time[0], elapsed_time[1], + elapsed_time[0] / elapsed_time[1]); +} + +TEST_P(AV2HighbdCompAvgUpsampledPredTest, CheckOutput) { + RunCheckOutput(GET_PARAM(0), GET_PARAM(1), GET_PARAM(2)); +} + +TEST_P(AV2HighbdCompAvgUpsampledPredTest, DISABLED_Speed) { + RunSpeedTest(GET_PARAM(0), GET_PARAM(1), GET_PARAM(2)); +} + +#if HAVE_AVX2 +INSTANTIATE_TEST_SUITE_P( + AVX2, AV2HighbdCompAvgUpsampledPredTest, + ::testing::Combine( + ::testing::Values(&avm_highbd_comp_avg_upsampled_pred_avx2), + ::testing::ValuesIn(kValidBlockSize), ::testing::Values(10))); +#endif + +#if HAVE_SSE2 +INSTANTIATE_TEST_SUITE_P( + SSE2, AV2HighbdCompAvgUpsampledPredTest, + ::testing::Combine( + ::testing::Values(&avm_highbd_comp_avg_upsampled_pred_sse2), + ::testing::ValuesIn(kValidBlockSize), ::testing::Values(10))); +#endif +} // namespace AV2CompAvgUpsampledPred diff --git a/test/test.cmake b/test/test.cmake index 20015004b7..511704d00c 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -215,6 +215,7 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/blend_a64_mask_test.cc" "${AVM_ROOT}/test/comp_avg_pred_test.cc" "${AVM_ROOT}/test/comp_avg_pred_test.h" + "${AVM_ROOT}/test/comp_avg_test.cc" "${AVM_ROOT}/test/comp_mask_variance_test.cc" "${AVM_ROOT}/test/edge_detect_test.cc" "${AVM_ROOT}/test/encodetxb_test.cc" From e106525b594f20ba8f4e5f4cd052d455484c92f7 Mon Sep 17 00:00:00 2001 From: Deepa K G Date: Sun, 26 Jul 2026 22:01:29 +0530 Subject: [PATCH 113/205] Optimize AVX2 of highbd SAD kernels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace explicit zero-extension unpacking (_mm256_unpacklo_epi16 / _mm256_unpackhi_epi16) and 32-bit additions with _mm256_madd_epi16 using a vector of ones. Also optimize the load operations in sad20x4(), sad12x4() by constructing 256-bit vectors from 64-bit loads and unpacking instead of using _mm256_set_epi16(). SAD function: | Block Size | Unit-Test-level Time Reduction (%) | | :--------- | :-----------------------------: | | 256×256 | 20.8% | | 128×128 | 23.1% | | 64×64 | 25.3% | | 32×32 | 24.5% | | 20×20 | 65.9% | | 16×16 | 25.8% | | 12×12 | 69.4% | Downsampled SAD function: | Block Size | Unit-Test-level Time Reduction (%) | | :--------- | :-----------------------------: | | 20×20 | 25.9% | | 20×12 | 28.0% | | 16×16 | 33.1% | | 16×8 | 25.6% | | 12×20 | 29.2% | | 12×12 | 21.7% | | 8×16 | 25.2% | | 8×8 | 12.2% | --- avm_dsp/x86/sad_highbd_avx2.c | 145 +++++++++++++++------------------- 1 file changed, 64 insertions(+), 81 deletions(-) diff --git a/avm_dsp/x86/sad_highbd_avx2.c b/avm_dsp/x86/sad_highbd_avx2.c index 5028c37901..e11b7cc9ad 100644 --- a/avm_dsp/x86/sad_highbd_avx2.c +++ b/avm_dsp/x86/sad_highbd_avx2.c @@ -41,7 +41,7 @@ static AVM_FORCE_INLINE unsigned int get_sad_from_mm256_epi32( static AVM_FORCE_INLINE void highbd_sad16x4_core_ds_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; for (i = 0; i < 2; i++) { s[i] = _mm256_sub_epi16(s[i], r[i]); @@ -50,16 +50,13 @@ static AVM_FORCE_INLINE void highbd_sad16x4_core_ds_avx2(__m256i *s, __m256i *r, s[0] = _mm256_add_epi16(s[0], s[1]); - r[0] = _mm256_unpacklo_epi16(s[0], zero); - r[1] = _mm256_unpackhi_epi16(s[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(s[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void highbd_sad16x4_core_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; __m256i res[4]; for (i = 0; i < 4; i++) { @@ -71,16 +68,13 @@ static AVM_FORCE_INLINE void highbd_sad16x4_core_avx2(__m256i *s, __m256i *r, res[0] = _mm256_add_epi16(res[0], res[2]); res[0] = _mm256_add_epi16(res[0], res[3]); - r[0] = _mm256_unpacklo_epi16(res[0], zero); - r[1] = _mm256_unpackhi_epi16(res[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(res[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void highbd_sad16x2_core_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; __m256i res[2]; for (i = 0; i < 2; i++) { @@ -90,16 +84,13 @@ static AVM_FORCE_INLINE void highbd_sad16x2_core_avx2(__m256i *s, __m256i *r, res[0] = _mm256_add_epi16(res[0], res[1]); - r[0] = _mm256_unpacklo_epi16(res[0], zero); - r[1] = _mm256_unpackhi_epi16(res[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(res[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void highbd_sad20x4_core_ds_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; for (i = 0; i < 3; i++) { s[i] = _mm256_sub_epi16(s[i], r[i]); @@ -109,16 +100,13 @@ static AVM_FORCE_INLINE void highbd_sad20x4_core_ds_avx2(__m256i *s, __m256i *r, s[0] = _mm256_add_epi16(s[0], s[1]); s[0] = _mm256_add_epi16(s[0], s[2]); - r[0] = _mm256_unpacklo_epi16(s[0], zero); - r[1] = _mm256_unpackhi_epi16(s[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(s[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void highbd_sad12x4_core_ds_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; for (i = 0; i < 2; i++) { s[i] = _mm256_sub_epi16(s[i], r[i]); @@ -127,15 +115,12 @@ static AVM_FORCE_INLINE void highbd_sad12x4_core_ds_avx2(__m256i *s, __m256i *r, s[0] = _mm256_add_epi16(s[0], s[1]); - r[0] = _mm256_unpacklo_epi16(s[0], zero); - r[1] = _mm256_unpackhi_epi16(s[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(s[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void highbd_sad20x4_core_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; for (i = 0; i < 5; i++) { s[i] = _mm256_sub_epi16(s[i], r[i]); @@ -147,16 +132,13 @@ static AVM_FORCE_INLINE void highbd_sad20x4_core_avx2(__m256i *s, __m256i *r, s[0] = _mm256_add_epi16(s[0], s[3]); s[0] = _mm256_add_epi16(s[0], s[4]); - r[0] = _mm256_unpacklo_epi16(s[0], zero); - r[1] = _mm256_unpackhi_epi16(s[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(s[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void highbd_sad12x4_core_avx2(__m256i *s, __m256i *r, __m256i *sad_acc) { - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); int i; for (i = 0; i < 3; i++) { s[i] = _mm256_sub_epi16(s[i], r[i]); @@ -166,11 +148,8 @@ static AVM_FORCE_INLINE void highbd_sad12x4_core_avx2(__m256i *s, __m256i *r, s[0] = _mm256_add_epi16(s[0], s[1]); s[0] = _mm256_add_epi16(s[0], s[2]); - r[0] = _mm256_unpacklo_epi16(s[0], zero); - r[1] = _mm256_unpackhi_epi16(s[0], zero); - - r[0] = _mm256_add_epi32(r[0], r[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, r[0]); + const __m256i sad = _mm256_madd_epi16(s[0], ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } static AVM_FORCE_INLINE void sad16x4_ds(const uint16_t *src_ptr, int src_stride, @@ -190,7 +169,6 @@ static AVM_FORCE_INLINE void sad8x4_ds(const uint16_t *src_ptr, int src_stride, const uint16_t *ref_ptr, int ref_stride, __m256i *sad_acc) { __m128i tmp[2]; - __m256i tmp2[2]; __m256i s, r; tmp[0] = _mm_loadu_si128((const __m128i *)src_ptr); tmp[1] = _mm_loadu_si128((const __m128i *)(src_ptr + 2 * src_stride)); @@ -200,15 +178,12 @@ static AVM_FORCE_INLINE void sad8x4_ds(const uint16_t *src_ptr, int src_stride, tmp[1] = _mm_loadu_si128((const __m128i *)(ref_ptr + 2 * ref_stride)); r = _mm256_insertf128_si256(_mm256_castsi128_si256(tmp[0]), tmp[1], 1); - const __m256i zero = _mm256_setzero_si256(); + const __m256i ones = _mm256_set1_epi16(1); s = _mm256_sub_epi16(s, r); s = _mm256_abs_epi16(s); - tmp2[0] = _mm256_unpacklo_epi16(s, zero); - tmp2[1] = _mm256_unpackhi_epi16(s, zero); - - tmp2[0] = _mm256_add_epi32(tmp2[0], tmp2[1]); - *sad_acc = _mm256_add_epi32(*sad_acc, tmp2[0]); + const __m256i sad = _mm256_madd_epi16(s, ones); + *sad_acc = _mm256_add_epi32(*sad_acc, sad); } // If sec_ptr = 0, calculate regular SAD. Otherwise, calculate average SAD. @@ -341,27 +316,31 @@ static AVM_FORCE_INLINE void sad20x4(const uint16_t *src_ptr, int src_stride, s[1] = _mm256_loadu_si256((const __m256i *)(src_ptr + src_stride)); s[2] = _mm256_loadu_si256((const __m256i *)(src_ptr + 2 * src_stride)); s[3] = _mm256_loadu_si256((const __m256i *)(src_ptr + 3 * src_stride)); - s[4] = _mm256_set_epi16( - src_ptr[16], src_ptr[16 + 1], src_ptr[16 + 2], src_ptr[16 + 3], - src_ptr[16 + src_stride], src_ptr[16 + src_stride + 1], - src_ptr[16 + src_stride + 2], src_ptr[16 + src_stride + 3], - src_ptr[16 + 2 * src_stride], src_ptr[16 + 2 * src_stride + 1], - src_ptr[16 + 2 * src_stride + 2], src_ptr[16 + 2 * src_stride + 3], - src_ptr[16 + 3 * src_stride], src_ptr[16 + 3 * src_stride + 1], - src_ptr[16 + 3 * src_stride + 2], src_ptr[16 + 3 * src_stride + 3]); + const __m128i s0 = _mm_loadl_epi64((const __m128i *)(src_ptr + 16)); + const __m128i s1 = + _mm_loadl_epi64((const __m128i *)(src_ptr + 16 + src_stride)); + const __m128i s2 = + _mm_loadl_epi64((const __m128i *)(src_ptr + 16 + 2 * src_stride)); + const __m128i s3 = + _mm_loadl_epi64((const __m128i *)(src_ptr + 16 + 3 * src_stride)); + const __m128i s01 = _mm_unpacklo_epi64(s0, s1); + const __m128i s23 = _mm_unpacklo_epi64(s2, s3); + s[4] = _mm256_inserti128_si256(_mm256_castsi128_si256(s01), s23, 1); r[0] = _mm256_loadu_si256((const __m256i *)ref_ptr); r[1] = _mm256_loadu_si256((const __m256i *)(ref_ptr + ref_stride)); r[2] = _mm256_loadu_si256((const __m256i *)(ref_ptr + 2 * ref_stride)); r[3] = _mm256_loadu_si256((const __m256i *)(ref_ptr + 3 * ref_stride)); - r[4] = _mm256_set_epi16( - ref_ptr[16], ref_ptr[16 + 1], ref_ptr[16 + 2], ref_ptr[16 + 3], - ref_ptr[16 + ref_stride], ref_ptr[16 + ref_stride + 1], - ref_ptr[16 + ref_stride + 2], ref_ptr[16 + ref_stride + 3], - ref_ptr[16 + 2 * ref_stride], ref_ptr[16 + 2 * ref_stride + 1], - ref_ptr[16 + 2 * ref_stride + 2], ref_ptr[16 + 2 * ref_stride + 3], - ref_ptr[16 + 3 * ref_stride], ref_ptr[16 + 3 * ref_stride + 1], - ref_ptr[16 + 3 * ref_stride + 2], ref_ptr[16 + 3 * ref_stride + 3]); + const __m128i r0 = _mm_loadl_epi64((const __m128i *)(ref_ptr + 16)); + const __m128i r1 = + _mm_loadl_epi64((const __m128i *)(ref_ptr + 16 + ref_stride)); + const __m128i r2 = + _mm_loadl_epi64((const __m128i *)(ref_ptr + 16 + 2 * ref_stride)); + const __m128i r3 = + _mm_loadl_epi64((const __m128i *)(ref_ptr + 16 + 3 * ref_stride)); + const __m128i r01 = _mm_unpacklo_epi64(r0, r1); + const __m128i r23 = _mm_unpacklo_epi64(r2, r3); + r[4] = _mm256_inserti128_si256(_mm256_castsi128_si256(r01), r23, 1); highbd_sad20x4_core_avx2(s, r, sad_acc); } @@ -380,14 +359,16 @@ static AVM_FORCE_INLINE void sad12x4(const uint16_t *src_ptr, int src_stride, tmp[1] = _mm_loadu_si128((const __m128i *)(src_ptr + 3 * src_stride)); s[1] = _mm256_castsi128_si256(tmp[0]); s[1] = _mm256_insertf128_si256(s[1], tmp[1], 1); - s[2] = _mm256_set_epi16( - src_ptr[8], src_ptr[8 + 1], src_ptr[8 + 2], src_ptr[8 + 3], - src_ptr[8 + src_stride], src_ptr[8 + src_stride + 1], - src_ptr[8 + src_stride + 2], src_ptr[8 + src_stride + 3], - src_ptr[8 + 2 * src_stride], src_ptr[8 + 2 * src_stride + 1], - src_ptr[8 + 2 * src_stride + 2], src_ptr[8 + 2 * src_stride + 3], - src_ptr[8 + 3 * src_stride], src_ptr[8 + 3 * src_stride + 1], - src_ptr[8 + 3 * src_stride + 2], src_ptr[8 + 3 * src_stride + 3]); + const __m128i s0 = _mm_loadl_epi64((const __m128i *)(src_ptr + 8)); + const __m128i s1 = + _mm_loadl_epi64((const __m128i *)(src_ptr + 8 + src_stride)); + const __m128i s2 = + _mm_loadl_epi64((const __m128i *)(src_ptr + 8 + 2 * src_stride)); + const __m128i s3 = + _mm_loadl_epi64((const __m128i *)(src_ptr + 8 + 3 * src_stride)); + const __m128i s01 = _mm_unpacklo_epi64(s0, s1); + const __m128i s23 = _mm_unpacklo_epi64(s2, s3); + s[2] = _mm256_inserti128_si256(_mm256_castsi128_si256(s01), s23, 1); tmp[0] = _mm_loadu_si128((const __m128i *)ref_ptr); tmp[1] = _mm_loadu_si128((const __m128i *)(ref_ptr + ref_stride)); @@ -398,14 +379,16 @@ static AVM_FORCE_INLINE void sad12x4(const uint16_t *src_ptr, int src_stride, tmp[1] = _mm_loadu_si128((const __m128i *)(ref_ptr + 3 * ref_stride)); r[1] = _mm256_castsi128_si256(tmp[0]); r[1] = _mm256_insertf128_si256(r[1], tmp[1], 1); - r[2] = _mm256_set_epi16( - ref_ptr[8], ref_ptr[8 + 1], ref_ptr[8 + 2], ref_ptr[8 + 3], - ref_ptr[8 + ref_stride], ref_ptr[8 + ref_stride + 1], - ref_ptr[8 + ref_stride + 2], ref_ptr[8 + ref_stride + 3], - ref_ptr[8 + 2 * ref_stride], ref_ptr[8 + 2 * ref_stride + 1], - ref_ptr[8 + 2 * ref_stride + 2], ref_ptr[8 + 2 * ref_stride + 3], - ref_ptr[8 + 3 * ref_stride], ref_ptr[8 + 3 * ref_stride + 1], - ref_ptr[8 + 3 * ref_stride + 2], ref_ptr[8 + 3 * ref_stride + 3]); + const __m128i r0 = _mm_loadl_epi64((const __m128i *)(ref_ptr + 8)); + const __m128i r1 = + _mm_loadl_epi64((const __m128i *)(ref_ptr + 8 + ref_stride)); + const __m128i r2 = + _mm_loadl_epi64((const __m128i *)(ref_ptr + 8 + 2 * ref_stride)); + const __m128i r3 = + _mm_loadl_epi64((const __m128i *)(ref_ptr + 8 + 3 * ref_stride)); + const __m128i r01 = _mm_unpacklo_epi64(r0, r1); + const __m128i r23 = _mm_unpacklo_epi64(r2, r3); + r[2] = _mm256_inserti128_si256(_mm256_castsi128_si256(r01), r23, 1); highbd_sad12x4_core_avx2(s, r, sad_acc); } From d5bc0d497693d81f39f778e332c92f3b7e89e8eb Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Wed, 5 Aug 2026 12:13:49 +0530 Subject: [PATCH 114/205] Avoid repeated function calls in av2_setup_motion_field() This patch avoids the repeated `get_ref_frame_buf()` calls and `get_relative_dist()` calculations by reusing the existing `cm->cur_frame->refs_restricted_status` and `cm->ref_frame_side` arrays. Also merges the initialization of the `disp_order[]` and `is_overlay[]` arrays into a single loop. --- av2/common/mvref_common.c | 65 +++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index cda7a577c3..067aa16815 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3817,6 +3817,8 @@ static void fill_id_offset_sample_gap(AV2_COMMON *cm) { void av2_setup_motion_field(AV2_COMMON *cm) { const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; + const int8_t *const ref_frame_side = cm->ref_frame_side; + const int *const is_ref_restricted = cm->cur_frame->refs_restricted_status; if (order_hint_info->order_hint_bits_minus_1 < 0) return; @@ -3835,10 +3837,10 @@ void av2_setup_motion_field(AV2_COMMON *cm) { (cm->ref_frames_info.num_past_refs > 0); if (cm->seq_params.enable_mv_traj) { - for (int rf = 0; rf < INTER_REFS_PER_FRAME; rf++) { - for (int i = 0; i < mvs_rows * mvs_cols; i++) { + for (int rf = 0; rf < INTER_REFS_PER_FRAME; ++rf) { + for (int i = 0; i < mvs_rows * mvs_cols; ++i) { cm->id_offset_map[rf][i].as_int = INVALID_MV; - for (int k = 0; k < 3; k++) { + for (int k = 0; k < 3; ++k) { cm->blk_id_map[k][rf][i].as_int = INVALID_MV; } } @@ -3850,24 +3852,21 @@ void av2_setup_motion_field(AV2_COMMON *cm) { int disp_order[INTER_REFS_PER_FRAME] = { 0 }; bool is_overlay[INTER_REFS_PER_FRAME] = { false }; - for (int rf = cm->ref_frames_info.num_total_refs - 1; rf >= 0; rf--) { + for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; ++rf) { const RefCntBuffer *const buf = get_ref_frame_buf(cm, rf); - if (buf != NULL && buf->is_restricted) { - continue; - } - if (is_ref_overlay(cm, rf) && - get_ref_frame_buf(cm, rf)->frame_type != KEY_FRAME) { + if (buf == NULL) continue; + disp_order[rf] = buf->display_order_hint; + + if (!is_ref_restricted[rf] && is_ref_overlay(cm, rf) && + buf->frame_type != KEY_FRAME) { is_overlay[rf] = true; } } - for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; rf++) { - disp_order[rf] = get_ref_frame_buf(cm, rf)->display_order_hint; - } // Sort the points by x. - for (int i = 0; i < cm->ref_frames_info.num_total_refs; i++) { - for (int j = i + 1; j < cm->ref_frames_info.num_total_refs; j++) { - if (!get_ref_frame_buf(cm, sort_ref[j])->is_restricted && + for (int i = 0; i < cm->ref_frames_info.num_total_refs; ++i) { + for (int j = i + 1; j < cm->ref_frames_info.num_total_refs; ++j) { + if (!is_ref_restricted[sort_ref[j]] && get_relative_dist(order_hint_info, disp_order[j], disp_order[i]) < 0) { int tmp = disp_order[i]; @@ -3880,14 +3879,12 @@ void av2_setup_motion_field(AV2_COMMON *cm) { } } } - int cur_disp_order = cm->cur_frame->display_order_hint; // The idx of rf in sort_ref that is before current frame, and closest. int cur_frame_sort_idx = -1; - for (int rf_idx = 0; rf_idx < cm->ref_frames_info.num_total_refs; rf_idx++) { - if (get_ref_frame_buf(cm, sort_ref[rf_idx])->is_restricted) continue; + for (int rf_idx = 0; rf_idx < cm->ref_frames_info.num_total_refs; ++rf_idx) { + if (is_ref_restricted[sort_ref[rf_idx]]) continue; - if (get_relative_dist(order_hint_info, disp_order[rf_idx], cur_disp_order) < - 0) { + if (ref_frame_side[sort_ref[rf_idx]] == 0) { cur_frame_sort_idx = rf_idx; } else { break; @@ -3897,8 +3894,8 @@ void av2_setup_motion_field(AV2_COMMON *cm) { int rf_stack[INTER_REFS_PER_FRAME]; int visited[INTER_REFS_PER_FRAME] = { 0 }; int stack_count = 0; - for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; rf++) { - if (get_ref_frame_buf(cm, rf)->is_restricted) continue; + for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; ++rf) { + if (is_ref_restricted[rf]) continue; if (visited[rf] == 0) { recur_topo_sort_refs(cm, is_overlay, rf_stack, visited, &stack_count, rf); } @@ -3907,10 +3904,10 @@ void av2_setup_motion_field(AV2_COMMON *cm) { if (stack_count < 2) return; int rf_topo_stack_idx[INTER_REFS_PER_FRAME]; - for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; rf++) { + for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; ++rf) { rf_topo_stack_idx[rf] = -1; - if (get_ref_frame_buf(cm, rf)->is_restricted) continue; - for (int stack_idx = 0; stack_idx < stack_count; stack_idx++) { + if (is_ref_restricted[rf]) continue; + for (int stack_idx = 0; stack_idx < stack_count; ++stack_idx) { if (rf_stack[stack_idx] == rf) { rf_topo_stack_idx[rf] = stack_idx; break; @@ -3942,8 +3939,8 @@ void av2_setup_motion_field(AV2_COMMON *cm) { start_frame = cm->tip_ref.ref_frame[1]; target_frame = cm->tip_ref.ref_frame[0]; } - assert(!(get_ref_frame_buf(cm, start_frame)->is_restricted) && - !(get_ref_frame_buf(cm, target_frame)->is_restricted)); + assert(!(is_ref_restricted[start_frame]) && + !(is_ref_restricted[target_frame])); int dist_diff = get_relative_dist( order_hint_info, get_ref_frame_buf(cm, start_frame)->display_order_hint, @@ -4022,15 +4019,9 @@ void av2_setup_motion_field(AV2_COMMON *cm) { checked_ref, process_ref, &process_count); } - for (int ri = stack_count - 1; ri > 0; ri--) { - int side; - const int ref_hint = - get_ref_frame_buf(cm, rf_stack[ri])->display_order_hint; - if (get_relative_dist(order_hint_info, ref_hint, cur_disp_order) < 0) { - side = 1; - } else { - side = 0; - } + for (int ri = stack_count - 1; ri > 0; --ri) { + // Set side to 1 if rf_stack[ri] is a past reference, and 0 otherwise. + int side = ref_frame_side[rf_stack[ri]] == 0 ? 1 : 0; if (!checked_ref[rf_stack[ri]][side]) { check_and_add_process_ref(cm, MFMV_STACK_SIZE, rf_stack[ri], -1, side, @@ -4058,7 +4049,7 @@ void av2_setup_motion_field(AV2_COMMON *cm) { // Cap the reference frame combination to 1 for reduced_ref_frame_mvs_mode. process_count = AVMMIN(1, process_count); } - for (int pi = 0; pi < process_count; pi++) { + for (int pi = 0; pi < process_count; ++pi) { motion_field_projection_side(cm, process_ref[pi].start_frame, process_ref[pi].target_frame, process_ref[pi].side); From 5702f4246d8e97aa68e224a08fb3b6375af07bee Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Wed, 5 Aug 2026 12:13:34 +0530 Subject: [PATCH 115/205] Add helper function add_nearest_past_future_ref() This patch abstracts the logic for adding temporally nearest past and future references into the helper function `add_nearest_past_future_ref()`, reducing code duplication and improving readability. --- av2/common/mvref_common.c | 106 ++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 51 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 067aa16815..5850ca7f64 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3815,6 +3815,59 @@ static void fill_id_offset_sample_gap(AV2_COMMON *cm) { } } +// Add up to 2 past refs and 2 future refs, each temporally nearest to the +// current frame. A past candidate is only added if it has at least one +// future reference frame, and vice versa. Between a past and future candidate, +// priority is given to the one whose pairing reference (which must be on the +// other side of the current frame) is temporally closer. +static void add_nearest_past_future_ref( + const AV2_COMMON *cm, int cur_frame_sort_idx, const int *sort_ref, + int checked_ref[INTER_REFS_PER_FRAME][2], + struct ProcessRefTMVP *process_ref, int *process_count) { + const int valid_ref_num = + cm->ref_frames_info.num_valid_refs_without_restricted_ref; + assert(valid_ref_num <= cm->ref_frames_info.num_total_refs); + + for (int group_idx = 0; group_idx < 2; ++group_idx) { + int past_ref_sort_idx = cur_frame_sort_idx - group_idx; + if (past_ref_sort_idx < 0 || + !has_future_ref(cm, sort_ref[past_ref_sort_idx])) + past_ref_sort_idx = -1; + + int future_ref_sort_idx = cur_frame_sort_idx + 1 + group_idx; + if (future_ref_sort_idx >= valid_ref_num || + !has_past_ref(cm, sort_ref[future_ref_sort_idx])) + future_ref_sort_idx = -1; + + const int past_ref_to_its_ref_dist = + past_ref_sort_idx >= 0 + ? get_dist_to_closest_interp_ref(cm, sort_ref[past_ref_sort_idx], 0) + : -1; + const int future_ref_to_its_ref_dist = + future_ref_sort_idx >= 0 ? get_dist_to_closest_interp_ref( + cm, sort_ref[future_ref_sort_idx], 1) + : -1; + + const int future_first = + future_ref_to_its_ref_dist < past_ref_to_its_ref_dist; + const int first_idx = + future_first ? future_ref_sort_idx : past_ref_sort_idx; + const int second_idx = + future_first ? past_ref_sort_idx : future_ref_sort_idx; + + if (first_idx != -1) { + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[first_idx], + -1, (first_idx == past_ref_sort_idx) ? 1 : 0, + checked_ref, process_ref, process_count); + } + if (second_idx != -1) { + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, sort_ref[second_idx], + -1, (second_idx == past_ref_sort_idx) ? 1 : 0, + checked_ref, process_ref, process_count); + } + } +} + void av2_setup_motion_field(AV2_COMMON *cm) { const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; const int8_t *const ref_frame_side = cm->ref_frame_side; @@ -3955,58 +4008,9 @@ void av2_setup_motion_field(AV2_COMMON *cm) { cm->tip_ref.ref_frame[1] = NONE_FRAME; } } - int valid_ref_num = cm->ref_frames_info.num_total_refs; - if (cm->ref_frames_info.num_total_refs > - cm->ref_frames_info.num_valid_refs_without_restricted_ref) - valid_ref_num = cm->ref_frames_info.num_valid_refs_without_restricted_ref; - for (int group_idx = 0; group_idx < 2; ++group_idx) { - int past_ref_sort_idx = - cur_frame_sort_idx >= group_idx ? cur_frame_sort_idx - group_idx : -1; - if (past_ref_sort_idx >= 0 && - !has_future_ref(cm, sort_ref[past_ref_sort_idx])) - past_ref_sort_idx = -1; - - int future_ref_sort_idx = cur_frame_sort_idx < valid_ref_num - group_idx - 1 - ? cur_frame_sort_idx + 1 + group_idx - : -1; - if (future_ref_sort_idx >= 0 && - !has_past_ref(cm, sort_ref[future_ref_sort_idx])) - future_ref_sort_idx = -1; - - const int past_ref_to_its_ref_dist = - past_ref_sort_idx >= 0 - ? get_dist_to_closest_interp_ref(cm, sort_ref[past_ref_sort_idx], 0) - : -1; - const int future_ref_to_its_ref_dist = - future_ref_sort_idx >= 0 ? get_dist_to_closest_interp_ref( - cm, sort_ref[future_ref_sort_idx], 1) - : -1; - - if (future_ref_to_its_ref_dist < past_ref_to_its_ref_dist) { - if (future_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, - sort_ref[future_ref_sort_idx], -1, 0, - checked_ref, process_ref, &process_count); - } - if (past_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, - sort_ref[past_ref_sort_idx], -1, 1, - checked_ref, process_ref, &process_count); - } - } else { - if (past_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, - sort_ref[past_ref_sort_idx], -1, 1, - checked_ref, process_ref, &process_count); - } - if (future_ref_sort_idx != -1) { - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, - sort_ref[future_ref_sort_idx], -1, 0, - checked_ref, process_ref, &process_count); - } - } - } + add_nearest_past_future_ref(cm, cur_frame_sort_idx, sort_ref, checked_ref, + process_ref, &process_count); if (cur_frame_sort_idx >= 0) { check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, From 617888c2bbb00c3cb03b3b36917204172158a6c3 Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Wed, 5 Aug 2026 12:13:12 +0530 Subject: [PATCH 116/205] Abstract TIP related code in av2_setup_motion_field() This patch abstracts the TIP reference frame setup and its addition to the motion field projection candidate list logic into helper functions `setup_and_add_tip_ref()` and `setup_tip_ref_frames()`. --- av2/common/mvref_common.c | 95 +++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 34 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 5850ca7f64..5ce7eeb4f5 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3868,6 +3868,65 @@ static void add_nearest_past_future_ref( } } +// Sets up temporally closer frames as tip reference frames. +static bool setup_tip_ref_frames(AV2_COMMON *const cm, + const int *const sort_ref, + int cur_frame_sort_idx) { + if (cm->has_both_sides_refs) { + cm->tip_ref.ref_frame[0] = sort_ref[cur_frame_sort_idx]; + cm->tip_ref.ref_frame[1] = sort_ref[cur_frame_sort_idx + 1]; + return true; + } + if (cm->ref_frames_info.num_past_refs >= 2) { + assert(cur_frame_sort_idx > 0); + cm->tip_ref.ref_frame[0] = sort_ref[cur_frame_sort_idx]; + cm->tip_ref.ref_frame[1] = sort_ref[cur_frame_sort_idx - 1]; + return true; + } + cm->tip_ref.ref_frame[0] = NONE_FRAME; + cm->tip_ref.ref_frame[1] = NONE_FRAME; + return false; +} + +// Sets up the TIP reference frames and adds it to the motion field process +// list. start_frame and target_frame are assigned by comparing their +// topological stack indices. A higher topological index indicates a more +// preferred reference. In the projection stage, the projection from the +// start_frame (higher index) to the target_frame is prioritized. +static void setup_and_add_tip_ref(AV2_COMMON *cm, int cur_frame_sort_idx, + const int *sort_ref, + const int *rf_topo_stack_idx, + int checked_ref[INTER_REFS_PER_FRAME][2], + struct ProcessRefTMVP *process_ref, + int *process_count) { + const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; + const int *const is_ref_restricted = cm->cur_frame->refs_restricted_status; + (void)is_ref_restricted; + + if (!setup_tip_ref_frames(cm, sort_ref, cur_frame_sort_idx)) return; + + MV_REFERENCE_FRAME tip_ref_frame[2] = { cm->tip_ref.ref_frame[0], + cm->tip_ref.ref_frame[1] }; + int start_frame, target_frame; + if (rf_topo_stack_idx[tip_ref_frame[0]] > + rf_topo_stack_idx[tip_ref_frame[1]]) { + start_frame = tip_ref_frame[0]; + target_frame = tip_ref_frame[1]; + } else { + start_frame = tip_ref_frame[1]; + target_frame = tip_ref_frame[0]; + } + assert(!(is_ref_restricted[start_frame]) && + !(is_ref_restricted[target_frame])); + const int dist_diff = get_relative_dist( + order_hint_info, get_ref_frame_buf(cm, start_frame)->display_order_hint, + get_ref_frame_buf(cm, target_frame)->display_order_hint); + + const int side = dist_diff < 0 ? 1 : 0; + check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, start_frame, target_frame, + side, checked_ref, process_ref, process_count); +} + void av2_setup_motion_field(AV2_COMMON *cm) { const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; const int8_t *const ref_frame_side = cm->ref_frame_side; @@ -3973,40 +4032,8 @@ void av2_setup_motion_field(AV2_COMMON *cm) { int checked_ref[INTER_REFS_PER_FRAME][2] = { 0 }; if (cm->seq_params.enable_tip && cur_frame_sort_idx != -1) { - if (cm->has_both_sides_refs || cm->ref_frames_info.num_past_refs >= 2) { - if (cm->has_both_sides_refs) { - cm->tip_ref.ref_frame[0] = sort_ref[cur_frame_sort_idx]; - cm->tip_ref.ref_frame[1] = sort_ref[cur_frame_sort_idx + 1]; - } else if (cm->ref_frames_info.num_past_refs >= 2) { - assert(cur_frame_sort_idx > 0); - cm->tip_ref.ref_frame[0] = sort_ref[cur_frame_sort_idx]; - cm->tip_ref.ref_frame[1] = sort_ref[cur_frame_sort_idx - 1]; - } - int start_frame, target_frame; - int side; - if (rf_topo_stack_idx[cm->tip_ref.ref_frame[0]] > - rf_topo_stack_idx[cm->tip_ref.ref_frame[1]]) { - start_frame = cm->tip_ref.ref_frame[0]; - target_frame = cm->tip_ref.ref_frame[1]; - } else { - start_frame = cm->tip_ref.ref_frame[1]; - target_frame = cm->tip_ref.ref_frame[0]; - } - assert(!(is_ref_restricted[start_frame]) && - !(is_ref_restricted[target_frame])); - int dist_diff = get_relative_dist( - order_hint_info, - get_ref_frame_buf(cm, start_frame)->display_order_hint, - get_ref_frame_buf(cm, target_frame)->display_order_hint); - - side = dist_diff < 0 ? 1 : 0; - check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, start_frame, - target_frame, side, checked_ref, process_ref, - &process_count); - } else { - cm->tip_ref.ref_frame[0] = NONE_FRAME; - cm->tip_ref.ref_frame[1] = NONE_FRAME; - } + setup_and_add_tip_ref(cm, cur_frame_sort_idx, sort_ref, rf_topo_stack_idx, + checked_ref, process_ref, &process_count); } add_nearest_past_future_ref(cm, cur_frame_sort_idx, sort_ref, checked_ref, From 1e4a4ce49f178bf6d854340c32ba05e60b51b2fb Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Wed, 5 Aug 2026 12:10:17 +0530 Subject: [PATCH 117/205] Add helper function sort_and_update_ref_idx() This patch abstracts reference frame sorting logic and related code to the helper function `sort_and_update_ref_idx()`. Additionally, documentation of `av2_setup_motion_field()` is improved and misleading variable name `cur_frame_sort_idx` is renamed to `nearest_past_sort_idx`. --- av2/common/mvref_common.c | 176 +++++++++++++++++++++++--------------- 1 file changed, 106 insertions(+), 70 deletions(-) diff --git a/av2/common/mvref_common.c b/av2/common/mvref_common.c index 5ce7eeb4f5..770f6a38c3 100644 --- a/av2/common/mvref_common.c +++ b/av2/common/mvref_common.c @@ -3821,7 +3821,7 @@ static void fill_id_offset_sample_gap(AV2_COMMON *cm) { // priority is given to the one whose pairing reference (which must be on the // other side of the current frame) is temporally closer. static void add_nearest_past_future_ref( - const AV2_COMMON *cm, int cur_frame_sort_idx, const int *sort_ref, + const AV2_COMMON *cm, int nearest_past_sort_idx, const int *sort_ref, int checked_ref[INTER_REFS_PER_FRAME][2], struct ProcessRefTMVP *process_ref, int *process_count) { const int valid_ref_num = @@ -3829,12 +3829,12 @@ static void add_nearest_past_future_ref( assert(valid_ref_num <= cm->ref_frames_info.num_total_refs); for (int group_idx = 0; group_idx < 2; ++group_idx) { - int past_ref_sort_idx = cur_frame_sort_idx - group_idx; + int past_ref_sort_idx = nearest_past_sort_idx - group_idx; if (past_ref_sort_idx < 0 || !has_future_ref(cm, sort_ref[past_ref_sort_idx])) past_ref_sort_idx = -1; - int future_ref_sort_idx = cur_frame_sort_idx + 1 + group_idx; + int future_ref_sort_idx = nearest_past_sort_idx + 1 + group_idx; if (future_ref_sort_idx >= valid_ref_num || !has_past_ref(cm, sort_ref[future_ref_sort_idx])) future_ref_sort_idx = -1; @@ -3893,7 +3893,7 @@ static bool setup_tip_ref_frames(AV2_COMMON *const cm, // topological stack indices. A higher topological index indicates a more // preferred reference. In the projection stage, the projection from the // start_frame (higher index) to the target_frame is prioritized. -static void setup_and_add_tip_ref(AV2_COMMON *cm, int cur_frame_sort_idx, +static void setup_and_add_tip_ref(AV2_COMMON *cm, int nearest_past_sort_idx, const int *sort_ref, const int *rf_topo_stack_idx, int checked_ref[INTER_REFS_PER_FRAME][2], @@ -3903,7 +3903,7 @@ static void setup_and_add_tip_ref(AV2_COMMON *cm, int cur_frame_sort_idx, const int *const is_ref_restricted = cm->cur_frame->refs_restricted_status; (void)is_ref_restricted; - if (!setup_tip_ref_frames(cm, sort_ref, cur_frame_sort_idx)) return; + if (!setup_tip_ref_frames(cm, sort_ref, nearest_past_sort_idx)) return; MV_REFERENCE_FRAME tip_ref_frame[2] = { cm->tip_ref.ref_frame[0], cm->tip_ref.ref_frame[1] }; @@ -3927,44 +3927,21 @@ static void setup_and_add_tip_ref(AV2_COMMON *cm, int cur_frame_sort_idx, side, checked_ref, process_ref, process_count); } -void av2_setup_motion_field(AV2_COMMON *cm) { +// Organizes reference frames using different sorting algorithms and updates the +// necessary indices. +static int sort_and_update_ref_idx( + const AV2_COMMON *cm, int sort_ref[INTER_REFS_PER_FRAME], + int *nearest_past_sort_idx, int rf_stack[INTER_REFS_PER_FRAME], + int *stack_count, int rf_topo_stack_idx[INTER_REFS_PER_FRAME]) { const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; - const int8_t *const ref_frame_side = cm->ref_frame_side; const int *const is_ref_restricted = cm->cur_frame->refs_restricted_status; + const int8_t *const ref_frame_side = cm->ref_frame_side; + const int num_total_refs = cm->ref_frames_info.num_total_refs; - if (order_hint_info->order_hint_bits_minus_1 < 0) return; - - TPL_MV_REF *tpl_mvs_base = cm->tpl_mvs; - const int mvs_rows = - ROUND_POWER_OF_TWO(cm->mi_params.mi_rows, TMVP_SHIFT_BITS); - const int mvs_cols = - ROUND_POWER_OF_TWO(cm->mi_params.mi_cols, TMVP_SHIFT_BITS); - int size = mvs_rows * mvs_cols; - for (int idx = 0; idx < size; ++idx) { - tpl_mvs_base[idx].mfmv0.as_int = INVALID_MV; - tpl_mvs_base[idx].ref_frame_offset = 0; - } - - cm->has_both_sides_refs = (cm->ref_frames_info.num_future_refs > 0) && - (cm->ref_frames_info.num_past_refs > 0); - - if (cm->seq_params.enable_mv_traj) { - for (int rf = 0; rf < INTER_REFS_PER_FRAME; ++rf) { - for (int i = 0; i < mvs_rows * mvs_cols; ++i) { - cm->id_offset_map[rf][i].as_int = INVALID_MV; - for (int k = 0; k < 3; ++k) { - cm->blk_id_map[k][rf][i].as_int = INVALID_MV; - } - } - } - } - - // Find the sorted map of refs. - int sort_ref[INTER_REFS_PER_FRAME] = { 0, 1, 2, 3, 4, 5, 6 }; - int disp_order[INTER_REFS_PER_FRAME] = { 0 }; - + unsigned int disp_order[INTER_REFS_PER_FRAME] = { 0 }; bool is_overlay[INTER_REFS_PER_FRAME] = { false }; - for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; ++rf) { + + for (int rf = 0; rf < num_total_refs; ++rf) { const RefCntBuffer *const buf = get_ref_frame_buf(cm, rf); if (buf == NULL) continue; disp_order[rf] = buf->display_order_hint; @@ -3975,51 +3952,49 @@ void av2_setup_motion_field(AV2_COMMON *cm) { } } - // Sort the points by x. - for (int i = 0; i < cm->ref_frames_info.num_total_refs; ++i) { - for (int j = i + 1; j < cm->ref_frames_info.num_total_refs; ++j) { + // Sort reference frames by their display order hint. + for (int i = 0; i < num_total_refs; ++i) { + for (int j = i + 1; j < num_total_refs; ++j) { if (!is_ref_restricted[sort_ref[j]] && get_relative_dist(order_hint_info, disp_order[j], disp_order[i]) < 0) { - int tmp = disp_order[i]; + const unsigned int tmp_disp = disp_order[i]; disp_order[i] = disp_order[j]; - disp_order[j] = tmp; + disp_order[j] = tmp_disp; - tmp = sort_ref[i]; + const int tmp_ref = sort_ref[i]; sort_ref[i] = sort_ref[j]; - sort_ref[j] = tmp; + sort_ref[j] = tmp_ref; } } } - // The idx of rf in sort_ref that is before current frame, and closest. - int cur_frame_sort_idx = -1; - for (int rf_idx = 0; rf_idx < cm->ref_frames_info.num_total_refs; ++rf_idx) { + // Find the index of the closest past reference frame in sort_ref[]. + for (int rf_idx = 0; rf_idx < num_total_refs; ++rf_idx) { if (is_ref_restricted[sort_ref[rf_idx]]) continue; if (ref_frame_side[sort_ref[rf_idx]] == 0) { - cur_frame_sort_idx = rf_idx; + *nearest_past_sort_idx = rf_idx; } else { break; } } - int rf_stack[INTER_REFS_PER_FRAME]; + // Perform a topological sort on reference frames to build dependency stack. int visited[INTER_REFS_PER_FRAME] = { 0 }; - int stack_count = 0; - for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; ++rf) { - if (is_ref_restricted[rf]) continue; - if (visited[rf] == 0) { - recur_topo_sort_refs(cm, is_overlay, rf_stack, visited, &stack_count, rf); + for (int rf = 0; rf < num_total_refs; ++rf) { + if (!is_ref_restricted[rf] && visited[rf] == 0) { + recur_topo_sort_refs(cm, is_overlay, rf_stack, visited, stack_count, rf); } } - if (stack_count < 2) return; + if (*stack_count < 2) return 0; - int rf_topo_stack_idx[INTER_REFS_PER_FRAME]; - for (int rf = 0; rf < cm->ref_frames_info.num_total_refs; ++rf) { + // Map each reference frame to its index in the topologically sorted + // rf_stack[]. + for (int rf = 0; rf < num_total_refs; ++rf) { rf_topo_stack_idx[rf] = -1; if (is_ref_restricted[rf]) continue; - for (int stack_idx = 0; stack_idx < stack_count; ++stack_idx) { + for (int stack_idx = 0; stack_idx < *stack_count; ++stack_idx) { if (rf_stack[stack_idx] == rf) { rf_topo_stack_idx[rf] = stack_idx; break; @@ -4027,29 +4002,90 @@ void av2_setup_motion_field(AV2_COMMON *cm) { } } + return 1; +} + +void av2_setup_motion_field(AV2_COMMON *cm) { + const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info; + const int8_t *const ref_frame_side = cm->ref_frame_side; + + if (order_hint_info->order_hint_bits_minus_1 < 0) return; + + TPL_MV_REF *tpl_mvs_base = cm->tpl_mvs; + const int mvs_rows = + ROUND_POWER_OF_TWO(cm->mi_params.mi_rows, TMVP_SHIFT_BITS); + const int mvs_cols = + ROUND_POWER_OF_TWO(cm->mi_params.mi_cols, TMVP_SHIFT_BITS); + int size = mvs_rows * mvs_cols; + for (int idx = 0; idx < size; ++idx) { + tpl_mvs_base[idx].mfmv0.as_int = INVALID_MV; + tpl_mvs_base[idx].ref_frame_offset = 0; + } + + cm->has_both_sides_refs = (cm->ref_frames_info.num_future_refs > 0) && + (cm->ref_frames_info.num_past_refs > 0); + + if (cm->seq_params.enable_mv_traj) { + for (int rf = 0; rf < INTER_REFS_PER_FRAME; ++rf) { + for (int i = 0; i < mvs_rows * mvs_cols; ++i) { + cm->id_offset_map[rf][i].as_int = INVALID_MV; + for (int k = 0; k < 3; ++k) { + cm->blk_id_map[k][rf][i].as_int = INVALID_MV; + } + } + } + } + + // Stores reference frame indices sorted by their display_order_hint. + int sort_ref[INTER_REFS_PER_FRAME] = { 0, 1, 2, 3, 4, 5, 6 }; + // Index of the nearest past reference frame in sort_ref[]. + int nearest_past_sort_idx = -1; + // Stack of reference frames ordered by their topological dependencies (least + // to most dependent). + int rf_stack[INTER_REFS_PER_FRAME]; + // Total number of valid reference frames in the topologically sorted + // rf_stack[]. + int stack_count = 0; + // Index of each reference frame in rf_stack[] + int rf_topo_stack_idx[INTER_REFS_PER_FRAME]; + if (!sort_and_update_ref_idx(cm, sort_ref, &nearest_past_sort_idx, rf_stack, + &stack_count, rf_topo_stack_idx)) { + return; + } + struct ProcessRefTMVP process_ref[MFMV_STACK_SIZE]; int process_count = 0; - int checked_ref[INTER_REFS_PER_FRAME][2] = { 0 }; + int checked_ref[INTER_REFS_PER_FRAME][2] = { { 0 } }; - if (cm->seq_params.enable_tip && cur_frame_sort_idx != -1) { - setup_and_add_tip_ref(cm, cur_frame_sort_idx, sort_ref, rf_topo_stack_idx, - checked_ref, process_ref, &process_count); + if (cm->seq_params.enable_tip && nearest_past_sort_idx != -1) { + setup_and_add_tip_ref(cm, nearest_past_sort_idx, sort_ref, + rf_topo_stack_idx, checked_ref, process_ref, + &process_count); } - add_nearest_past_future_ref(cm, cur_frame_sort_idx, sort_ref, checked_ref, + add_nearest_past_future_ref(cm, nearest_past_sort_idx, sort_ref, checked_ref, process_ref, &process_count); - if (cur_frame_sort_idx >= 0) { + // In add_nearest_past_future_ref(), the nearest past reference frames + // are added to the motion field projection candidate list with side = 1 + // (projection to future reference frames). Here, the same frames are added + // with side = 0 (projection to past reference frames). + if (nearest_past_sort_idx >= 0) { check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, - sort_ref[cur_frame_sort_idx], -1, 0, checked_ref, + sort_ref[nearest_past_sort_idx], + /* target_frame */ -1, /* side */ 0, checked_ref, process_ref, &process_count); } - if (cur_frame_sort_idx >= 1) { + if (nearest_past_sort_idx >= 1) { check_and_add_process_ref(cm, TIP_MFMV_STACK_SIZE, - sort_ref[cur_frame_sort_idx - 1], -1, 0, - checked_ref, process_ref, &process_count); + sort_ref[nearest_past_sort_idx - 1], + /* target_frame */ -1, /* side */ 0, checked_ref, + process_ref, &process_count); } + // Iterate through the topologically sorted reference frames (most to least + // dependent) and add to motion field projection candidate list if not added + // previously. for (int ri = stack_count - 1; ri > 0; --ri) { // Set side to 1 if rf_stack[ri] is a past reference, and 0 otherwise. int side = ref_frame_side[rf_stack[ri]] == 0 ? 1 : 0; From 7453ebcd3d3d6b4ccf787e98bea16504d7e15915 Mon Sep 17 00:00:00 2001 From: arnab-dey-12 Date: Wed, 5 Aug 2026 23:33:16 +0530 Subject: [PATCH 118/205] Remove unused segmentation functions (#5203) This change removes the unused functions: - av2_choose_segmap_coding_method() - count_segs_sb() - count_segs() No stats changed --- av2/encoder/aq_cyclicrefresh.c | 8 -- av2/encoder/segmentation.c | 225 --------------------------------- av2/encoder/segmentation.h | 1 - 3 files changed, 234 deletions(-) diff --git a/av2/encoder/aq_cyclicrefresh.c b/av2/encoder/aq_cyclicrefresh.c index 7e3cf8a3f0..7bcc75129f 100644 --- a/av2/encoder/aq_cyclicrefresh.c +++ b/av2/encoder/aq_cyclicrefresh.c @@ -448,14 +448,6 @@ void av2_cyclic_refresh_setup(AV2_COMP *const cpi) { av2_enable_segmentation(&cm->seg); av2_clearall_segfeatures(seg); - // Note: setting temporal_update has no effect, as the seg-map coding method - // (temporal or spatial) is determined in - // av2_choose_segmap_coding_method(), - // based on the coding cost of each method. For error_resilient mode on the - // last_frame_seg_map is set to 0, so if temporal coding is used, it is - // relative to 0 previous map. - // seg->temporal_update = 0; - // Segment BASE "Q" feature is disabled so it defaults to the baseline Q. av2_disable_segfeature(seg, CR_SEGMENT_ID_BASE, SEG_LVL_ALT_Q); // Use segment BOOST1 for in-frame Q adjustment. diff --git a/av2/encoder/segmentation.c b/av2/encoder/segmentation.c index 4c50a5ed0e..a25f18e16d 100644 --- a/av2/encoder/segmentation.c +++ b/av2/encoder/segmentation.c @@ -39,231 +39,6 @@ void av2_disable_segfeature(struct segmentation *seg, int segment_id, seg->feature_mask[segment_id] &= ~(1 << feature_id); } -static void count_segs(const AV2_COMMON *cm, MACROBLOCKD *xd, - const TileInfo *tile, MB_MODE_INFO **mi, - unsigned *no_pred_segcounts, - unsigned (*temporal_predictor_count)[2], - unsigned *t_unpred_seg_counts, int bw, int bh, - int mi_row, int mi_col) { - const CommonModeInfoParams *const mi_params = &cm->mi_params; - if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) return; - - xd->mi = mi; - assert(xd->mi && xd->mi[0]); - set_mi_row_col(cm, xd, tile, mi_row, bh, mi_col, bw, mi_params->mi_rows, - mi_params->mi_cols, &xd->mi[0]->chroma_ref_info); - - // Count the number of hits on each segment with no prediction - const int segment_id = xd->mi[0]->segment_id; - no_pred_segcounts[segment_id]++; - - // Temporal prediction not allowed on key frames - if (cm->current_frame.frame_type != KEY_FRAME && - xd->mi[0]->region_type != INTRA_REGION) { - const BLOCK_SIZE bsize = xd->mi[0]->sb_type[xd->tree_type == CHROMA_PART]; - // Test to see if the segment id matches the predicted value. - const int pred_segment_id = - cm->last_frame_seg_map - ? get_segment_id(mi_params, cm->last_frame_seg_map, bsize, mi_row, - mi_col) - : 0; - const int pred_flag = pred_segment_id == segment_id; - const int pred_context = av2_get_pred_context_seg_id(xd); - - // Store the prediction status for this mb and update counts - // as appropriate - xd->mi[0]->seg_id_predicted = pred_flag; - temporal_predictor_count[pred_context][pred_flag]++; - - // Update the "unpredicted" segment count - if (!pred_flag) t_unpred_seg_counts[segment_id]++; - } -} - -static void count_segs_sb(const AV2_COMMON *cm, MACROBLOCKD *xd, - const TileInfo *tile, MB_MODE_INFO **mi, - unsigned *no_pred_segcounts, - unsigned (*temporal_predictor_count)[2], - unsigned *t_unpred_seg_counts, int mi_row, int mi_col, - const PARTITION_TREE *ptree) { - const CommonModeInfoParams *const mi_params = &cm->mi_params; - const int mis = mi_params->mi_stride; - BLOCK_SIZE bsize = ptree->bsize; - const int bw = mi_size_wide[bsize], bh = mi_size_high[bsize]; - const int hbw = bw / 2, hbh = bh / 2; - const int qbw = bw / 4, qbh = bh / 4; - const int ebw = bw / 8, ebh = bh / 8; - - if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) return; - -#define CSEGS(cs_bw, cs_bh, cs_rowoff, cs_coloff) \ - count_segs(cm, xd, tile, mi + mis * (cs_rowoff) + (cs_coloff), \ - no_pred_segcounts, temporal_predictor_count, t_unpred_seg_counts, \ - (cs_bw), (cs_bh), mi_row + (cs_rowoff), mi_col + (cs_coloff)); -#define CSEGS_RECURSIVE(cs_rowoff, cs_coloff, subtree) \ - count_segs_sb(cm, xd, tile, mi + mis * (cs_rowoff) + (cs_coloff), \ - no_pred_segcounts, temporal_predictor_count, \ - t_unpred_seg_counts, mi_row + (cs_rowoff), \ - mi_col + (cs_coloff), subtree); - - int tree_idx = 0; - const PARTITION_TYPE partition = ptree->partition; - switch (partition) { - case PARTITION_NONE: CSEGS(bw, bh, 0, 0); break; - case PARTITION_HORZ: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - CSEGS_RECURSIVE(hbh, 0, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_VERT: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - CSEGS_RECURSIVE(0, hbw, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_HORZ_3: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - CSEGS_RECURSIVE(qbh, 0, ptree->sub_tree[tree_idx++]); - CSEGS_RECURSIVE(qbh, hbw, ptree->sub_tree[tree_idx++]); - if (mi_row + 3 * qbh < mi_params->mi_rows) - CSEGS_RECURSIVE(3 * qbh, 0, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_VERT_3: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - CSEGS_RECURSIVE(0, qbw, ptree->sub_tree[tree_idx++]); - CSEGS_RECURSIVE(hbh, qbw, ptree->sub_tree[tree_idx++]); - if (mi_col + 3 * qbw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, 3 * qbw, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_HORZ_4A: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - if (mi_row + ebh < mi_params->mi_rows) - CSEGS_RECURSIVE(ebh, 0, ptree->sub_tree[tree_idx++]); - if (mi_row + 3 * ebh < mi_params->mi_rows) - CSEGS_RECURSIVE(3 * ebh, 0, ptree->sub_tree[tree_idx++]); - if (mi_row + 7 * ebh < mi_params->mi_rows) - CSEGS_RECURSIVE(7 * ebh, 0, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_HORZ_4B: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - if (mi_row + ebh < mi_params->mi_rows) - CSEGS_RECURSIVE(ebh, 0, ptree->sub_tree[tree_idx++]); - if (mi_row + 5 * ebh < mi_params->mi_rows) - CSEGS_RECURSIVE(5 * ebh, 0, ptree->sub_tree[tree_idx++]); - if (mi_row + 7 * ebh < mi_params->mi_rows) - CSEGS_RECURSIVE(7 * ebh, 0, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_VERT_4A: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - if (mi_col + ebw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, ebw, ptree->sub_tree[tree_idx++]); - if (mi_col + 3 * ebw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, 3 * ebw, ptree->sub_tree[tree_idx++]); - if (mi_col + 7 * ebw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, 7 * ebw, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_VERT_4B: - CSEGS_RECURSIVE(0, 0, ptree->sub_tree[tree_idx++]); - if (mi_col + ebw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, ebw, ptree->sub_tree[tree_idx++]); - if (mi_col + 5 * ebw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, 5 * ebw, ptree->sub_tree[tree_idx++]); - if (mi_col + 7 * ebw < mi_params->mi_cols) - CSEGS_RECURSIVE(0, 7 * ebw, ptree->sub_tree[tree_idx++]); - break; - case PARTITION_SPLIT: { - for (int n = 0; n < 4; n++) { - const int mi_dc = hbw * (n & 1); - const int mi_dr = hbh * (n >> 1); - count_segs_sb(cm, xd, tile, &mi[mi_dr * mis + mi_dc], no_pred_segcounts, - temporal_predictor_count, t_unpred_seg_counts, - mi_row + mi_dr, mi_col + mi_dc, ptree->sub_tree[n]); - } - } break; - default: assert(0); - } - -#undef CSEGS -} - -void av2_choose_segmap_coding_method(AV2_COMMON *cm, MACROBLOCKD *xd) { - struct segmentation *seg = &cm->seg; - struct segmentation_probs *segp = &cm->fc->seg; - int no_pred_cost; - int t_pred_cost = INT_MAX; - int tile_col, tile_row, mi_row, mi_col; - unsigned temporal_predictor_count[SEG_TEMPORAL_PRED_CTXS][2] = { { 0 } }; - unsigned no_pred_segcounts[MAX_SEGMENTS] = { 0 }; - unsigned t_unpred_seg_counts[MAX_SEGMENTS] = { 0 }; - (void)xd; - int scale_up = cm->prev_frame && (cm->width > cm->prev_frame->width || - cm->height > cm->prev_frame->height); - // First of all generate stats regarding how well the last segment map - // predicts this one - if (!scale_up) { - for (tile_row = 0; tile_row < cm->tiles.rows; tile_row++) { - TileInfo tile_info; - av2_tile_set_row(&tile_info, cm, tile_row); - for (tile_col = 0; tile_col < cm->tiles.cols; tile_col++) { - MB_MODE_INFO **mi_ptr; - av2_tile_set_col(&tile_info, cm, tile_col); - mi_ptr = cm->mi_params.mi_grid_base + - tile_info.mi_row_start * cm->mi_params.mi_stride + - tile_info.mi_col_start; - for (mi_row = tile_info.mi_row_start; mi_row < tile_info.mi_row_end; - mi_row += cm->mib_size, - mi_ptr += cm->mib_size * cm->mi_params.mi_stride) { - MB_MODE_INFO **mi = mi_ptr; - for (mi_col = tile_info.mi_col_start; mi_col < tile_info.mi_col_end; - mi_col += cm->mib_size, mi += cm->mib_size) { - const SB_INFO *sbi = av2_get_sb_info(cm, mi_row, mi_col); - const PARTITION_TREE *ptree = sbi->ptree_root[AVM_PLANE_Y]; - count_segs_sb(cm, xd, &tile_info, mi, no_pred_segcounts, - temporal_predictor_count, t_unpred_seg_counts, mi_row, - mi_col, ptree); - } - } - } - } - } - - int seg_id_cost[MAX_SEGMENTS] = { 0 }; - - if (seg->enable_ext_seg == 1) { - av2_cost_tokens_from_cdf(seg_id_cost, segp->tree_cdf, MAX_SEGMENTS_8, NULL); - av2_cost_tokens_from_cdf(seg_id_cost + MAX_SEGMENTS_8, segp->tree_cdf1, - MAX_SEGMENTS_8, NULL); - } else { - av2_cost_tokens_from_cdf(seg_id_cost, segp->tree_cdf, MAX_SEGMENTS_8, NULL); - } - - no_pred_cost = 0; - for (int i = 0; i < MAX_SEGMENTS; ++i) - no_pred_cost += no_pred_segcounts[i] * seg_id_cost[i]; - - // Frames without past dependency cannot use temporal prediction - if (cm->features.primary_ref_frame != PRIMARY_REF_NONE) { - int pred_flag_cost[SEG_TEMPORAL_PRED_CTXS][2]; - for (int i = 0; i < SEG_TEMPORAL_PRED_CTXS; ++i) - av2_cost_tokens_from_cdf(pred_flag_cost[i], segp->pred_cdf[i], 2, NULL); - t_pred_cost = 0; - // Cost for signaling the prediction flag. - for (int i = 0; i < SEG_TEMPORAL_PRED_CTXS; ++i) { - for (int j = 0; j < 2; ++j) - t_pred_cost += temporal_predictor_count[i][j] * pred_flag_cost[i][j]; - } - // Cost for signaling the unpredicted segment id. - for (int i = 0; i < MAX_SEGMENTS; ++i) - t_pred_cost += t_unpred_seg_counts[i] * seg_id_cost[i]; - } - - // Now choose which coding method to use. - if (t_pred_cost < no_pred_cost) { - assert(!frame_is_sframe(cm)); - seg->temporal_update = 1; - } else { - seg->temporal_update = 0; - } - if (cm->current_frame.frame_type == S_FRAME) seg->temporal_update = 0; -} - void av2_reset_segment_features(AV2_COMMON *cm) { struct segmentation *seg = &cm->seg; diff --git a/av2/encoder/segmentation.h b/av2/encoder/segmentation.h index 0c3ebbe99a..d3725c6639 100644 --- a/av2/encoder/segmentation.h +++ b/av2/encoder/segmentation.h @@ -25,7 +25,6 @@ void av2_disable_segmentation(struct segmentation *seg); void av2_disable_segfeature(struct segmentation *seg, int segment_id, SEG_LVL_FEATURES feature_id); -void av2_choose_segmap_coding_method(AV2_COMMON *cm, MACROBLOCKD *xd); void av2_reset_segment_features(AV2_COMMON *cm); From 571e41398063ec390f443309bc3b593b69e44329 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 5 Aug 2026 11:06:08 -0700 Subject: [PATCH 119/205] Simplify tcq avx2 functions (#5208) Tcq is only enabled in luma components. Remove unnecessary conditions on plane index. --- av2/encoder/x86/trellis_quant_avx2.c | 79 ++++++++-------------------- 1 file changed, 23 insertions(+), 56 deletions(-) diff --git a/av2/encoder/x86/trellis_quant_avx2.c b/av2/encoder/x86/trellis_quant_avx2.c index cb7fd9590b..91cc8fa4b5 100644 --- a/av2/encoder/x86/trellis_quant_avx2.c +++ b/av2/encoder/x86/trellis_quant_avx2.c @@ -281,68 +281,42 @@ void av2_get_coeff_ctx_avx2(const struct tcq_ctx_t *tcq_ctx, int col, static INLINE int get_mid_cost_eob(int ci, int limits, int is_dc, tran_low_t abs_qc, int sign, int dc_sign_ctx, const LV_MAP_COEFF_COST *txb_costs, - TX_CLASS tx_class, int32_t t_sign, - int plane) { + TX_CLASS tx_class) { int cost = 0; const int dc_ph_group = 0; // PH disabled if (limits) { if (is_dc) { cost -= av2_cost_literal(1); - if (plane == AVM_PLANE_V) { - cost += txb_costs->v_dc_sign_cost[t_sign][dc_sign_ctx][sign]; - } else { - cost += txb_costs->dc_sign_cost[dc_ph_group][dc_sign_ctx][sign]; - } + cost += txb_costs->dc_sign_cost[dc_ph_group][dc_sign_ctx][sign]; } else { cost += av2_cost_literal(1); } - if (plane > 0) { - if (abs_qc > LF_NUM_BASE_LEVELS) { - cost += get_br_lf_cost_tcq_uv(abs_qc); - } - } else { - if (abs_qc > LF_NUM_BASE_LEVELS) { - int br_ctx = get_br_ctx_lf_eob(ci, tx_class); - cost += get_br_lf_cost_tcq(abs_qc, txb_costs->lps_lf_cost[br_ctx]); - } + if (abs_qc > LF_NUM_BASE_LEVELS) { + int br_ctx = get_br_ctx_lf_eob(ci, tx_class); + cost += get_br_lf_cost_tcq(abs_qc, txb_costs->lps_lf_cost[br_ctx]); } } else { cost += av2_cost_literal(1); - if (plane > 0) { - if (abs_qc > NUM_BASE_LEVELS) { - int br_ctx = 0; /* get_br_ctx_eob_chroma */ - cost += get_br_cost_tcq(abs_qc, txb_costs->lps_cost_uv[br_ctx]); - } - } else { - if (abs_qc > NUM_BASE_LEVELS) { - int br_ctx = 0; /* get_br_ctx_eob */ - cost += get_br_cost_tcq(abs_qc, txb_costs->lps_cost[br_ctx]); - } + if (abs_qc > NUM_BASE_LEVELS) { + int br_ctx = 0; /* get_br_ctx_eob */ + cost += get_br_cost_tcq(abs_qc, txb_costs->lps_cost[br_ctx]); } } return cost; } -static int get_mid_cost_lf_dc(int ci, tran_low_t abs_qc, int sign, - int coeff_ctx, int dc_sign_ctx, - const LV_MAP_COEFF_COST *txb_costs, - const int32_t *tmp_sign, int plane) { +static int get_mid_cost_lf_dc(tran_low_t abs_qc, int sign, int coeff_ctx, + int dc_sign_ctx, + const LV_MAP_COEFF_COST *txb_costs) { int cost = 0; int mid_ctx = coeff_ctx >> 4; const int dc_ph_group = 0; // PH disabled cost -= av2_cost_literal(1); // Remove previously added sign cost. - if (plane == AVM_PLANE_V) - cost += txb_costs->v_dc_sign_cost[tmp_sign[ci]][dc_sign_ctx][sign]; - else - cost += txb_costs->dc_sign_cost[dc_ph_group][dc_sign_ctx][sign]; - if (plane > 0) { - cost += get_br_lf_cost_tcq_uv(abs_qc); - } else { - if (abs_qc > LF_NUM_BASE_LEVELS) { - cost += get_br_lf_cost_tcq(abs_qc, txb_costs->lps_lf_cost[mid_ctx]); - } - } + cost += txb_costs->dc_sign_cost[dc_ph_group][dc_sign_ctx][sign]; + if (abs_qc > LF_NUM_BASE_LEVELS) + cost += get_br_lf_cost_tcq(abs_qc, txb_costs->lps_lf_cost[mid_ctx]); + return cost; } @@ -616,11 +590,9 @@ void av2_get_rate_dist_lf_luma_avx2(const struct tcq_param_t *p, const uint16_t(*cost_mid_tbl)[LF_LEVEL_CONTEXTS][TCQ_CTXS][2] = txb_costs->mid_lf_cost_tbl; const tran_low_t *absLevel = pq->absLevel; - const int32_t *tmp_sign = p->tmp_sign; int bwl = p->bwl; TX_CLASS tx_class = p->tx_class; int dc_sign_ctx = p->dc_sign_ctx; - int plane = 0; int base_diag_ctx = get_base_diag_ctx(diag_ctx); int mid_diag_ctx = get_mid_diag_ctx(diag_ctx); @@ -689,22 +661,17 @@ void av2_get_rate_dist_lf_luma_avx2(const struct tcq_param_t *p, for (int i = 0; i < TCQ_N_STATES; i++) { int a0 = i & 2 ? 1 : 0; int a1 = a0 + 2; - int mid_cost0 = get_mid_cost_lf_dc(blk_pos, absLevel[a0], coeff_sign, - coeff_ctx->coef[i], dc_sign_ctx, - txb_costs, tmp_sign, plane); - int mid_cost1 = get_mid_cost_lf_dc(blk_pos, absLevel[a1], coeff_sign, - coeff_ctx->coef[i], dc_sign_ctx, - txb_costs, tmp_sign, plane); + int mid_cost0 = get_mid_cost_lf_dc( + absLevel[a0], coeff_sign, coeff_ctx->coef[i], dc_sign_ctx, txb_costs); + int mid_cost1 = get_mid_cost_lf_dc( + absLevel[a1], coeff_sign, coeff_ctx->coef[i], dc_sign_ctx, txb_costs); rd->rate[2 * i] += mid_cost0; rd->rate[2 * i + 1] += mid_cost1; } - int t_sign = tmp_sign[blk_pos]; - int eob_mid_cost0 = - get_mid_cost_eob(blk_pos, 1, 1, absLevel[0], coeff_sign, dc_sign_ctx, - txb_costs, tx_class, t_sign, 0); - int eob_mid_cost1 = - get_mid_cost_eob(blk_pos, 1, 1, absLevel[2], coeff_sign, dc_sign_ctx, - txb_costs, tx_class, t_sign, 0); + int eob_mid_cost0 = get_mid_cost_eob(blk_pos, 1, 1, absLevel[0], coeff_sign, + dc_sign_ctx, txb_costs, tx_class); + int eob_mid_cost1 = get_mid_cost_eob(blk_pos, 1, 1, absLevel[2], coeff_sign, + dc_sign_ctx, txb_costs, tx_class); rd->rate_eob[0] += eob_mid_cost0; rd->rate_eob[1] += eob_mid_cost1; } else if (qIdx > 5) { From 32f6cbf415d125cd462c57ad3235925e47c4d003 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Wed, 5 Aug 2026 15:23:47 -0700 Subject: [PATCH 120/205] Bugfix for deblocking filter in partition search: fix distortion scaling (#5212) Due to this bug, for sequences with coded bitdepth = 8, the scale of `this_rdc->dist` was 16x compared to that of `rec_dist`. Hence, the condition `llabs(this_rdc->dist - rec_dist) < this_rdc->dist / 50` could never be true and so deblocking filter was never activated for this case. Note: - Coded bitdepth = 10 was already working correctly -- so no change in output for these cases. - Coded bitdepth = 12 had this issue as well theoretically, but this is unused in CTC currently. Results for RA CTC 33 frames at speed 1: (only affects testsets A3 and A5 that are coded with bitdepth = 8) ``` +------------+--------+--------+---------0--------+--------------+ | Testset | YUV | VMAF | VMAF-NEG | Enc-time | +------------+--------+--------+---------0--------+--------------+ | A3 | -0.11% | -0.32% | -0.12% | 99.45% | | A5 | -0.11% | -0.46% | -0.42% | 99.76% | |avg| -0.02% | -0.08% | -0.05% | 99.41% | +---------+--------+--------+--------+--------+----------+ ``` STATS_CHANGED for speed >= 1 --- av2/encoder/partition_search.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index f8b29376b7..b94d2e2119 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3555,6 +3555,16 @@ static int64_t get_dist_offset_by_deblock( mi_row * MI_SIZE >> sub_y, bh >> sub_y); } + const int bit_depth = cm->seq_params.bit_depth; + int dist_normal; // dist is normalized to 16 * 8_bit_content_distortion + if (bit_depth <= 10) { + dist_normal = 1 << ((10 - cm->seq_params.bit_depth) * 2); + rec_dist = rec_dist * dist_normal; + } else { + dist_normal = 1 << ((cm->seq_params.bit_depth - 10) * 2); + rec_dist = rec_dist / dist_normal; + } + if (llabs(this_rdc->dist - rec_dist) < this_rdc->dist / 50) { int h_start = mi_col * MI_SIZE; int v_start = mi_row * MI_SIZE; @@ -3595,13 +3605,9 @@ static int64_t get_dist_offset_by_deblock( const int64_t filtered_y_dist = avm_highbd_get_y_sse_part( src, filtered, h_start, area_w, v_start, area_h); - const int bit_depth = cm->seq_params.bit_depth; - int dist_normal; // dist is normalized to 16 * 8_bit_content_distortion if (bit_depth <= 10) { - dist_normal = 1 << ((10 - cm->seq_params.bit_depth) * 2); return dist_normal * (filtered_y_dist - unfiltered_y_dist); } else { - dist_normal = 1 << ((cm->seq_params.bit_depth - 10) * 2); return (filtered_y_dist - unfiltered_y_dist) / dist_normal; } } else { From 5c295685540c8b4911af892ee08e8c9834423b72 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Wed, 5 Aug 2026 16:44:12 -0700 Subject: [PATCH 121/205] Speed up warped-motion refinement at speed 4 (#5206) Use a lighter search pattern for warped-motion refinement at speed 4. Anchor: 7837c409f Test condition: CTC, RA, 33 frames, speed 4 RA: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.09 | -0.08 | 0.24 | 0.08 | 96.1 | | A2 | 0.11 | 0.10 | -0.17 | 0.09 | 96.1 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | 0.07 | 0.17 | 0.17 | 0.08 | 96.5 | +------------+-------+-------+-------+-------+------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 8a4e84d6e9..7e5d0be051 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -595,6 +595,8 @@ static void set_good_speed_features_framesize_independent( sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL3; sf->mv_sf.reduce_search_range = 1; + + sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; } if (speed >= 5) { @@ -608,7 +610,6 @@ static void set_good_speed_features_framesize_independent( : MULTI_WINNER_MODE_OFF; sf->mv_sf.prune_mesh_search = 1; - sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; sf->tpl_sf.prune_starting_mv = 3; sf->lpf_sf.enable_deblock_for_partition_search = 0; From 4cda07f0eee03a6c67e66fe69cd07f1cd118197a Mon Sep 17 00:00:00 2001 From: ranjit-tulabandu <59877789+ranjit-tulabandu@users.noreply.github.com> Date: Thu, 6 Aug 2026 14:32:56 +0530 Subject: [PATCH 122/205] Prune evaluation of compound modes using estimated RD-Cost (#5211) In av2_compound_type_rd(), the best compound type is chosen using RD-Cost with NONE transform partition type and DCT_DCT transform type. This estimated RD-Cost is used to keep track of best N, N=2, compound modes, on-the-fly. A speed feature is introduced to prune the further evaluation of other compound modes that have estimated RD Cost worse than these best N modes. The speed feature is disabled for speed=0 and enabled for speed >= 1. STATS_CHANGED for speed >= 1 Test results (RA) for Speed 1 Anchor: commit 69bd08f A1 - 17 frames A2 - 33 frames EncInstRed% and DecInstRed% are average percentage instruction count reduction seen for encoder and decoder with this change. ``` +------------+-------+-------+-------+-------+-----------+-----------+ | Class | Y | Cb | Cr | wAvg |EncInstRed%|DecInstRed%| +------------+-------+-------+-------+-------+-----------+-----------+ | A1 | 0.02 | -0.14 | 0.00 | 0.01 | 2.911 | 0.385 | | A2 | 0.02 | -0.09 | 0.34 | 0.03 | 3.063 | 0.562 | +------------+-------+-------+-------+-------+-----------+-----------+ ``` --- av2/common/enums.h | 1 + av2/encoder/block.h | 4 +++ av2/encoder/rdopt.c | 59 ++++++++++++++++++++++++++++++++++++ av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 4 +++ 5 files changed, 70 insertions(+) diff --git a/av2/common/enums.h b/av2/common/enums.h index 3dc219a8c4..1be55c5bce 100644 --- a/av2/common/enums.h +++ b/av2/common/enums.h @@ -917,6 +917,7 @@ enum { #define TOP_INTRA_MODEL_COUNT 6 #define TOP_TX_PART_COUNT 4 #define TOP_INTER_TX_PART_COUNT 8 +#define TOP_COMP_EST_RD_COUNT 2 // Total number of luma intra prediction modes (include both directional and // non-directional modes) #define LUMA_MODE_COUNT 61 diff --git a/av2/encoder/block.h b/av2/encoder/block.h index e261660107..13157d20b4 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -1669,6 +1669,10 @@ typedef struct macroblock { * evaluation. */ int64_t top_tx_part_rd_inter[MAX_TX_BLOCKS_IN_MAX_SB] [TOP_INTER_TX_PART_COUNT]; + /*! \brief Keep records of top estimated rdcosts of compound type search, + * which are used for pruning compound modes in inter mode + * evaluation. */ + int64_t top_comp_est_rd[TOP_COMP_EST_RD_COUNT]; } MACROBLOCK; #undef SINGLE_REF_MODES diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 951f257342..aa7295ed1e 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -4365,6 +4365,46 @@ static int skip_repeated_newmv( return 0; } +// Store the estimated RD cost for compound mode pruning. +static INLINE void push_comp_est_rd(MACROBLOCK *x, const MB_MODE_INFO *mbmi, + int64_t tmp_rd, + bool prune_comp_mode_eval_using_est_rd) { + if (!prune_comp_mode_eval_using_est_rd) return; + + // Do not store for skip modes. + if (mbmi->skip_mode != 0) return; + if (tmp_rd == INT64_MAX) return; + + // Insert the RD Cost in sorted order. + for (int i = 0; i < TOP_COMP_EST_RD_COUNT; i++) { + if (tmp_rd < x->top_comp_est_rd[i]) { + for (int j = TOP_COMP_EST_RD_COUNT - 1; j > i; j--) { + x->top_comp_est_rd[j] = x->top_comp_est_rd[j - 1]; + } + x->top_comp_est_rd[i] = tmp_rd; + break; + } + } +} + +// Prune compound mode evaluation based on top estimated RD costs. +static INLINE bool prune_comp_eval_using_est_rd( + MACROBLOCK *const x, MB_MODE_INFO *const mbmi, int64_t tmp_rd, + bool prune_comp_mode_eval_using_est_rd) { + if (!prune_comp_mode_eval_using_est_rd) return false; + + // Do not prune for skip mode. + if (mbmi->skip_mode != 0) return false; + if (tmp_rd == INT64_MAX) return false; + + // Do not prune if there is no valid top RD Cost for comparison. + if (x->top_comp_est_rd[TOP_COMP_EST_RD_COUNT - 1] == INT64_MAX) return false; + + if (tmp_rd > x->top_comp_est_rd[TOP_COMP_EST_RD_COUNT - 1]) return true; + + return false; +} + /*!\brief High level function to select parameters for compound mode. * * \ingroup inter_mode_search @@ -4477,6 +4517,13 @@ static int process_compound_inter_mode( return 1; } + push_comp_est_rd(x, mbmi, best_rd_compound, + cpi->sf.inter_sf.prune_comp_mode_eval_using_est_rd); + if (prune_comp_eval_using_est_rd( + x, mbmi, best_rd_compound, + cpi->sf.inter_sf.prune_comp_mode_eval_using_est_rd)) + return 1; + // Build only uv predictor for COMPOUND_AVERAGE. // Note there is no need to call av2_enc_build_inter_predictor // for luma if COMPOUND_AVERAGE is selected because it is the first @@ -8515,6 +8562,16 @@ static INLINE void init_top_tx_part_rd_for_inter_modes( } } +// Initialize the table that stores top estimated RD Costs of compound mode. +static INLINE void init_top_comp_est_rd( + MACROBLOCK *const x, bool prune_comp_mode_eval_using_est_rd) { + if (!prune_comp_mode_eval_using_est_rd) return; + + for (int j = 0; j < TOP_COMP_EST_RD_COUNT; j++) { + x->top_comp_est_rd[j] = INT64_MAX; + } +} + // Evaluate intra prediction modes in an inter frame at the block level static void av2_evaluate_intra_modes_in_inter_frame( const struct AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, @@ -9122,6 +9179,8 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, init_top_tx_part_rd_for_inter_modes(x, sf->tx_sf.prune_inter_tx_part_rd_eval); + init_top_comp_est_rd(x, sf->inter_sf.prune_comp_mode_eval_using_est_rd); + // Initialize arguments for mode loop speed features InterModeSFArgs sf_args = { &args.skip_motion_mode, &mode_skip_mask, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 7e5d0be051..a2fb3ca497 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -352,6 +352,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_interintra_by_ref_idx = 1; sf->inter_sf.prune_warp_delta_by_ref_idx = 1; sf->intra_sf.intra_pruning_with_mlp = 1; + sf->inter_sf.prune_comp_mode_eval_using_est_rd = true; sf->intra_sf.include_dip_for_top_n_model_rd_pruning = true; @@ -837,6 +838,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->prune_warpmv_prob_thresh = 32; inter_sf->prune_amvd_newmv = 0; inter_sf->enable_enhanced_inter_mode_cache_reuse = 0; + inter_sf->prune_comp_mode_eval_using_est_rd = false; } static AVM_INLINE void init_interp_sf(INTERP_FILTER_SPEED_FEATURES *interp_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index cd1ce30364..b6c2d42ce7 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -783,6 +783,10 @@ typedef struct INTER_MODE_SPEED_FEATURES { // current best mode is not the same mode as the one being evaluated, because // AMVD on top of these modes is unlikely to win over the non-AMVD best mode. int prune_amvd_newmv; + + // Prune further evaluation of compound mode using estimated RD Cost of best + // compound type chosen. + bool prune_comp_mode_eval_using_est_rd; } INTER_MODE_SPEED_FEATURES; typedef struct INTERP_FILTER_SPEED_FEATURES { From 4f5ab080d45c157e6fb5286d544c9a589297bdd0 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Thu, 6 Aug 2026 09:23:32 -0700 Subject: [PATCH 123/205] Enable DC-block prediction at speed 4 and 5 (#5207) Enable the DC-only transform-block prediction at speed 4 and 5 to skip transform evaluation on flat blocks. Anchor: 7837c409f Test condition: CTC, RA, 33 frames, speed 4 RA: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.04 | 0.23 | 0.48 | 0.06 | 95.9 | | A2 | -0.05 | -0.27 | -0.27 | -0.06 | 97.1 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | -0.01 | -0.11 | 0.44 | 0.01 | 96.5 | +------------+-------+-------+-------+-------+------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index a2fb3ca497..976810b567 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -598,6 +598,7 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.reduce_search_range = 1; sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; + sf->winner_mode_sf.dc_blk_pred_level = 2; } if (speed >= 5) { @@ -633,7 +634,6 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.perform_coeff_opt = is_boosted_arf2_bwd_type ? 4 : 6; - sf->winner_mode_sf.dc_blk_pred_level = 2; sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_OFF; } From 17cff57e7368f3b709eba9176ae0d4e62b9b8d89 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Thu, 6 Aug 2026 09:47:45 -0700 Subject: [PATCH 124/205] Reduce NEWMV DRL search limit at speed >= 4 (#5218) Lower newmv_drl_search_limit from 2 to 1 for speed >= 4. Anchor: 7837c409f Test condition: CTC, RA, 33 frames, speed 4 RA: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.07 | 0.18 | -0.04 | 0.06 | 98.2 | | A2 | 0.04 | -0.02 | 0.10 | 0.04 | 98.3 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | 0.00 | 0.20 | 0.13 | 0.02 | 98.3 | +------------+-------+-------+-------+-------+------+ ``` STATS_CHANGED Co-authored-by: leolzhao --- av2/encoder/speed_features.c | 1 + 1 file changed, 1 insertion(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 976810b567..ff8720f662 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -598,6 +598,7 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.reduce_search_range = 1; sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; + sf->mv_sf.newmv_drl_search_limit = 1; sf->winner_mode_sf.dc_blk_pred_level = 2; } From 9f35bf50b4a3659ba17bc3cfa01a7007561ce065 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Thu, 6 Aug 2026 09:49:48 -0700 Subject: [PATCH 125/205] Disable deblocking in partition search for speed >= 3 (#5219) The in-partition-search deblock filter improves RD at speed 1-2 but degrades it at speed 3-4, so disable it for speed >= 3 (speed 5-6 were already disabled). Anchor: 7837c409f Test condition: CTC, RA, 33 frames Effect of disabling, by speed (wAvg BD-rate): ``` +-------+-------+-------+-------+------+ | Speed | A1 | A2 | wAvg | Enc% | +-------+-------+-------+-------+------+ | 1 | 0.54 | 0.38 | 0.28 | 98.9 | | 2 | 0.36 | 0.35 | 0.23 | 98.9 | | 3 | 0.00 | -0.07 | -0.08 | 99.6 | | 4 | -0.05 | -0.19 | -0.21 |100.6 | +-------+-------+-------+-------+------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index ff8720f662..28b455a295 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -471,6 +471,8 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.disable_tcq = 1; // --- End --- + sf->lpf_sf.enable_deblock_for_partition_search = 0; + sf->hl_sf.high_precision_mv_usage = CURRENT_Q; sf->hl_sf.recode_loop = ALLOW_RECODE_KFARFGF; @@ -615,7 +617,6 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.prune_mesh_search = 1; sf->tpl_sf.prune_starting_mv = 3; - sf->lpf_sf.enable_deblock_for_partition_search = 0; } if (speed >= 6) { From d83b45127634845b2fe7bafc87decbaaffced7c0 Mon Sep 17 00:00:00 2001 From: Yixin Du Date: Thu, 6 Aug 2026 09:58:22 -0700 Subject: [PATCH 126/205] Extend ref_mv_idx search pruning to speed 1-5 (#5220) Enable the DRL ref_mv_idx search pruning for speeds 1-5. Anchor: 7837c409f Test condition: CTC, RA, 33 frames RA, speed 4: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.08 | 0.06 | 0.15 | 0.09 | 97.8 | | A2 | 0.10 | 0.15 | 0.06 | 0.09 | 97.3 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | 0.09 | 0.15 | 0.26 | 0.10 | 97.3 | +------------+-------+-------+-------+-------+------+ ``` RA, speed 1: ``` +------------+-------+-------+-------+-------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | +------------+-------+-------+-------+-------+------+ | A1 | 0.06 | 0.22 | -0.01 | 0.07 | 97.3 | | A2 | 0.07 | 0.26 | 0.08 | 0.08 | 96.7 | +------------+-------+-------+-------+-------+------+ | Avg w/o B2 | 0.05 | 0.19 | 0.10 | 0.06 | 96.6 | +------------+-------+-------+-------+-------+------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 28b455a295..a80ee0856c 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -231,6 +231,10 @@ static void set_good_speed_feature_framesize_dependent( } } + if (speed >= 1) { + sf->inter_sf.prune_ref_mv_idx_search = 1; + } + if (speed >= 6) { if (is_720p_or_larger) { sf->part_sf.auto_max_partition_based_on_simple_motion = NOT_IN_USE; From 6adb582bbc690c6c6d97609b9e61eb227b096001 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Thu, 6 Aug 2026 10:35:52 -0700 Subject: [PATCH 127/205] Simplify tx_class related code in tcq avx2 (#5217) --- av2/encoder/x86/trellis_quant_avx2.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/av2/encoder/x86/trellis_quant_avx2.c b/av2/encoder/x86/trellis_quant_avx2.c index 91cc8fa4b5..40e9b4dab1 100644 --- a/av2/encoder/x86/trellis_quant_avx2.c +++ b/av2/encoder/x86/trellis_quant_avx2.c @@ -280,8 +280,7 @@ void av2_get_coeff_ctx_avx2(const struct tcq_ctx_t *tcq_ctx, int col, static INLINE int get_mid_cost_eob(int ci, int limits, int is_dc, tran_low_t abs_qc, int sign, int dc_sign_ctx, - const LV_MAP_COEFF_COST *txb_costs, - TX_CLASS tx_class) { + const LV_MAP_COEFF_COST *txb_costs) { int cost = 0; const int dc_ph_group = 0; // PH disabled @@ -293,7 +292,7 @@ static INLINE int get_mid_cost_eob(int ci, int limits, int is_dc, cost += av2_cost_literal(1); } if (abs_qc > LF_NUM_BASE_LEVELS) { - int br_ctx = get_br_ctx_lf_eob(ci, tx_class); + int br_ctx = get_br_ctx_lf_eob(ci, TX_CLASS_2D); cost += get_br_lf_cost_tcq(abs_qc, txb_costs->lps_lf_cost[br_ctx]); } } else { @@ -590,8 +589,6 @@ void av2_get_rate_dist_lf_luma_avx2(const struct tcq_param_t *p, const uint16_t(*cost_mid_tbl)[LF_LEVEL_CONTEXTS][TCQ_CTXS][2] = txb_costs->mid_lf_cost_tbl; const tran_low_t *absLevel = pq->absLevel; - int bwl = p->bwl; - TX_CLASS tx_class = p->tx_class; int dc_sign_ctx = p->dc_sign_ctx; int base_diag_ctx = get_base_diag_ctx(diag_ctx); int mid_diag_ctx = get_mid_diag_ctx(diag_ctx); @@ -651,12 +648,7 @@ void av2_get_rate_dist_lf_luma_avx2(const struct tcq_param_t *p, __m128i rate_eob = _mm_add_epi32(rate_eob_coef, rate_eob_position); _mm_storeu_si64(&rd->rate_eob[0], rate_eob); - const int row = blk_pos >> bwl; - const int col = blk_pos - (row << bwl); - const bool dc_2dtx = (blk_pos == 0); - const bool dc_hor = (col == 0) && tx_class == TX_CLASS_HORIZ; - const bool dc_ver = (row == 0) && tx_class == TX_CLASS_VERT; - const bool is_dc_coeff = dc_2dtx || dc_hor || dc_ver; + const bool is_dc_coeff = (blk_pos == 0); if (is_dc_coeff) { for (int i = 0; i < TCQ_N_STATES; i++) { int a0 = i & 2 ? 1 : 0; @@ -669,9 +661,9 @@ void av2_get_rate_dist_lf_luma_avx2(const struct tcq_param_t *p, rd->rate[2 * i + 1] += mid_cost1; } int eob_mid_cost0 = get_mid_cost_eob(blk_pos, 1, 1, absLevel[0], coeff_sign, - dc_sign_ctx, txb_costs, tx_class); + dc_sign_ctx, txb_costs); int eob_mid_cost1 = get_mid_cost_eob(blk_pos, 1, 1, absLevel[2], coeff_sign, - dc_sign_ctx, txb_costs, tx_class); + dc_sign_ctx, txb_costs); rd->rate_eob[0] += eob_mid_cost0; rd->rate_eob[1] += eob_mid_cost1; } else if (qIdx > 5) { From ae87510243ad24fdc14bf9a9897f28886ffd01d6 Mon Sep 17 00:00:00 2001 From: yunqingwang1 Date: Thu, 6 Aug 2026 10:44:24 -0700 Subject: [PATCH 128/205] Add tools-off options for low complexity decoding (#5213) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Several tools are disabled that give good coding efficiency vs decoder time tradeoff, and the corresponding sequence flags are reset. Baseline: 82dbc4b3668f0c5b42c755c8b1f1a10ca82ed067 Test condition: CTC, RA, 65 frames, speed 1 ```   | PSNR-YUV | Enc-time (%) | Dec-time (%) -- | -------- | ------------ | ---------- A1 | 2.00% | 97% | 57% A2 | 1.62% | 98% | 61% A3 | 2.01% | 100% | 60% ``` With "enable_low_complexity_decode = 1", SW decoder complexity (vs AV1 decoder) reduces from 4x to 2.3x. STATS_CHANGED for enable_low_complexity_decode = 1 --- av2/encoder/encoder.c | 20 -------------------- av2/encoder/encoder.h | 19 +++++++++++++++++++ av2/encoder/speed_features.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index 113f325006..58a0b0e525 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1162,25 +1162,6 @@ static void set_max_bvp_drl_bits(struct AV2_COMP *cpi) { cm->features.max_bvp_drl_bits <= MAX_MAX_IBC_DRL_BITS); } -static void set_seq_lr_tools_mask(SequenceHeader *const seq_params, - const AV2EncoderConfig *oxcf) { - const ToolCfg *const tool_cfg = &oxcf->tool_cfg; - seq_params->lr_tools_disable_mask[0] = 0; // default - no tools disabled - seq_params->lr_tools_disable_mask[1] = 0; // default - no tools disabled - - // Parse oxcf here to disable tools as requested through cmd lines - if (!tool_cfg->enable_pc_wiener) { - seq_params->lr_tools_disable_mask[0] |= (1 << RESTORE_PC_WIENER); - seq_params->lr_tools_disable_mask[1] |= (1 << RESTORE_PC_WIENER); - } - if (!tool_cfg->enable_wiener_nonsep) { - seq_params->lr_tools_disable_mask[0] |= (1 << RESTORE_WIENER_NONSEP); - seq_params->lr_tools_disable_mask[1] |= (1 << RESTORE_WIENER_NONSEP); - } - - seq_params->lr_tools_disable_mask[1] |= DEF_UV_LR_TOOLS_DISABLE_MASK; -} - void av2_change_config(struct AV2_COMP *cpi, const AV2EncoderConfig *oxcf) { AV2_COMMON *const cm = &cpi->common; SequenceHeader *const seq_params = &cm->seq_params; @@ -1456,7 +1437,6 @@ void av2_change_config(struct AV2_COMP *cpi, const AV2EncoderConfig *oxcf) { // This should not be called after the first key frame. if (!cpi->seq_params_locked) { av2_init_seq_coding_tools(cpi, &cm->seq_params, cm, oxcf); - if (seq_params->enable_restoration) set_seq_lr_tools_mask(seq_params, oxcf); } // restore the value of lag_in_frame for LAP stage. diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index 5b4496404c..7772121556 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -3616,6 +3616,25 @@ static INLINE bool av2_is_shown_keyframe(const AV2_COMP *cpi, return (frame_type == KEY_FRAME) && !cpi->no_show_fwd_kf; } +static INLINE void av2_set_seq_lr_tools_mask(SequenceHeader *const seq_params, + const AV2EncoderConfig *oxcf) { + const ToolCfg *const tool_cfg = &oxcf->tool_cfg; + seq_params->lr_tools_disable_mask[0] = 0; // default - no tools disabled + seq_params->lr_tools_disable_mask[1] = 0; // default - no tools disabled + + // Parse oxcf here to disable tools as requested through cmd lines + if (!tool_cfg->enable_pc_wiener) { + seq_params->lr_tools_disable_mask[0] |= (1 << RESTORE_PC_WIENER); + seq_params->lr_tools_disable_mask[1] |= (1 << RESTORE_PC_WIENER); + } + if (!tool_cfg->enable_wiener_nonsep) { + seq_params->lr_tools_disable_mask[0] |= (1 << RESTORE_WIENER_NONSEP); + seq_params->lr_tools_disable_mask[1] |= (1 << RESTORE_WIENER_NONSEP); + } + + seq_params->lr_tools_disable_mask[1] |= DEF_UV_LR_TOOLS_DISABLE_MASK; +} + /*!\endcond */ #ifdef __cplusplus diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index a80ee0856c..ccb1d637f4 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -650,6 +650,17 @@ static void set_good_speed_features_framesize_independent( } } +// Define frame size independent speed features for low complexity decoding +// mode. +static void set_good_speed_features_lc_dec_framesize_independent( + AV2_COMP *cpi) { + cpi->oxcf.tool_cfg.enable_mv_traj = 0; + cpi->oxcf.tool_cfg.enable_gdf = 0; + cpi->oxcf.tool_cfg.enable_pc_wiener = 0; + cpi->oxcf.tool_cfg.enable_tip_refinemv = 0; + cpi->oxcf.tool_cfg.reduced_ref_frame_mvs_mode = 1; +} + static void set_rt_speed_features_framesize_independent( const AV2_COMP *const cpi, SPEED_FEATURES *const sf, int speed) { // Set this good features as default for now. @@ -1167,6 +1178,21 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { set_rt_speed_features_framesize_independent(cpi, sf, speed); } + if (oxcf->mode == GOOD && cpi->oxcf.enable_low_complexity_decode) { + // TODO (yunqingwang): LC speed features are added below. + set_good_speed_features_lc_dec_framesize_independent(cpi); + + // Adjust sequence flags for LC decode mode. + if (!cpi->seq_params_locked) { + cpi->common.seq_params.enable_mv_traj = cpi->oxcf.tool_cfg.enable_mv_traj; + cpi->common.seq_params.enable_gdf = cpi->oxcf.tool_cfg.enable_gdf; + cpi->common.seq_params.enable_tip_refinemv = + cpi->oxcf.tool_cfg.enable_tip_refinemv; + cpi->common.seq_params.order_hint_info.reduced_ref_frame_mvs_mode = + cpi->oxcf.tool_cfg.reduced_ref_frame_mvs_mode; + } + } + if (!cpi->seq_params_locked) { cpi->common.seq_params.enable_restoration &= !sf->lpf_sf.disable_lr_filter; @@ -1186,6 +1212,9 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { cpi->common.seq_params.enable_tcq = TCQ_DISABLE; cpi->common.features.tcq_mode = TCQ_DISABLE; } + + if (cpi->common.seq_params.enable_restoration) + av2_set_seq_lr_tools_mask(&cpi->common.seq_params, oxcf); } // sf->part_sf.partition_search_breakout_dist_thr is set assuming max 64x64 From 5fe277689000e53068a7283c528aba1e96ed2aa2 Mon Sep 17 00:00:00 2001 From: Bohan Li Date: Thu, 6 Aug 2026 15:35:16 -0700 Subject: [PATCH 129/205] Optimize AV2 encoder by removing redundant memset calls (#5194) Eliminate redundant memset and buffer-zeroing overhead across quantization and forward transform routines: 1. Remove unnecessary memset calls in av2_quantize_skip, highbd_quantize_dc, and av2_xform_dc_only where eob is set to 0 or coefficients are directly written. 2. Remove = { 0 } zero-initialization from the 16 KB stack buffer int buf[MAX_TX_SQUARE]` in fwd_txfm_c and fwd_txfm_avx2, as the buffer is unconditionally overwritten by the column 1D transform before being read. Anchor: dd6f21f22 Tests: 33 frame CTC against dd6f21f22 Speed 1: | Set | Y | U | V | YUV | Enc-time | |---------+-------+-------+-------+-------+----------| | A1 | 0.00% | 0.00% | 0.00% | 0.00% | 97.6% | | A2 | 0.00% | 0.00% | 0.00% | 0.00% | 96.7% | Speed 4: | Set| Y | U | V | YUV | Enc-time | |---------+-------+-------+-------+-------+----------| | A1 | 0.00% | 0.00% | 0.00% | 0.00% | 98.0% | | A2 | 0.00% | 0.00% | 0.00% | 0.00% | 97.3% | --- av2/encoder/av2_quantize.c | 26 +++++++++----------------- av2/encoder/av2_quantize.h | 3 +-- av2/encoder/encodemb.c | 4 +--- av2/encoder/hybrid_fwd_txfm.c | 9 ++++++--- av2/encoder/x86/highbd_fwd_txfm_avx2.c | 11 +++++++---- 5 files changed, 24 insertions(+), 29 deletions(-) diff --git a/av2/encoder/av2_quantize.c b/av2/encoder/av2_quantize.c index c75ca00bf4..0e67284dd8 100644 --- a/av2/encoder/av2_quantize.c +++ b/av2/encoder/av2_quantize.c @@ -28,12 +28,7 @@ #include "av2/encoder/encoder.h" #include "av2/encoder/rd.h" -void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr) { - memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); - memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); - *eob_ptr = 0; -} +void av2_quantize_skip(uint16_t *eob_ptr) { *eob_ptr = 0; } static void highbd_quantize_fp_helper_c( const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, @@ -210,15 +205,12 @@ void av2_highbd_quantize_b_facade(const int use_tcq_deadzone_boost, } static INLINE void highbd_quantize_dc( - const tran_low_t *coeff_ptr, int n_coeffs, int skip_block, - const int32_t *round_ptr, const int32_t quant, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, const int32_t dequant_ptr, uint16_t *eob_ptr, - const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale) { + const tran_low_t *coeff_ptr, int skip_block, const int32_t *round_ptr, + const int32_t quant, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, + const int32_t dequant_ptr, uint16_t *eob_ptr, const qm_val_t *qm_ptr, + const qm_val_t *iqm_ptr, const int log_scale) { int eob = -1; - memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); - memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); - if (!skip_block) { const qm_val_t wt = qm_ptr != NULL ? qm_ptr[0] : (1 << AVM_QM_BITS); const qm_val_t iwt = iqm_ptr != NULL ? iqm_ptr[0] : (1 << AVM_QM_BITS); @@ -259,11 +251,11 @@ void av2_highbd_quantize_dc_facade(const int use_tcq_deadzone_boost, const qm_val_t *iqm_ptr = qparam->iqmatrix; (void)sc; (void)use_tcq_deadzone_boost; + (void)n_coeffs; - highbd_quantize_dc(coeff_ptr, (int)n_coeffs, skip_block, p->round_QTX, - p->quant_fp_QTX[0], qcoeff_ptr, dqcoeff_ptr, - p->dequant_QTX[0], eob_ptr, qm_ptr, iqm_ptr, - qparam->log_scale); + highbd_quantize_dc(coeff_ptr, skip_block, p->round_QTX, p->quant_fp_QTX[0], + qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX[0], eob_ptr, + qm_ptr, iqm_ptr, qparam->log_scale); } void av2_highbd_quantize_fp_c(const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t count, diff --git a/av2/encoder/av2_quantize.h b/av2/encoder/av2_quantize.h index e5893ca74a..63c2bf37be 100644 --- a/av2/encoder/av2_quantize.h +++ b/av2/encoder/av2_quantize.h @@ -127,8 +127,7 @@ int av2_quantizer_to_qindex(int quantizer, avm_bit_depth_t bit_depth); int av2_qindex_to_quantizer(int qindex, avm_bit_depth_t bit_depth); -void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr); +void av2_quantize_skip(uint16_t *eob_ptr); void av2_highbd_quantize_fp_facade(const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index fc9e00abfc..83d7a630f6 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -588,8 +588,6 @@ void av2_xform_dc_only(MACROBLOCK *x, int plane, int block, const struct macroblock_plane *const p = &x->plane[plane]; const int block_offset = BLOCK_OFFSET(block); tran_low_t *const coeff = p->coeff + block_offset; - const int n_coeffs = av2_get_max_eob(txfm_param->tx_size); - memset(coeff, 0, sizeof(*coeff) * n_coeffs); coeff[0] = (tran_low_t)((per_px_mean * dc_coeff_scale[txfm_param->tx_size]) >> 12); } @@ -730,7 +728,7 @@ void av2_quant(const int use_tcq_deadzone_boost, MACROBLOCK *x, int plane, n_coeffs, p, qcoeff, dqcoeff, eob, scan_order, qparam); } else { - av2_quantize_skip(n_coeffs, qcoeff, dqcoeff, eob); + av2_quantize_skip(eob); } } diff --git a/av2/encoder/hybrid_fwd_txfm.c b/av2/encoder/hybrid_fwd_txfm.c index 357c73b278..9b0c90b068 100644 --- a/av2/encoder/hybrid_fwd_txfm.c +++ b/av2/encoder/hybrid_fwd_txfm.c @@ -10,15 +10,17 @@ * aomedia.org/license/patent-license/. */ -#include "config/avm_config.h" +#include + #include "config/av2_rtcd.h" +#include "config/avm_config.h" #include "config/avm_dsp_rtcd.h" #include "av2/common/idct.h" -#include "av2/encoder/hybrid_fwd_txfm.h" #include "av2/common/scan.h" #include "av2/common/secondary_tx.h" #include "av2/common/txb_common.h" +#include "av2/encoder/hybrid_fwd_txfm.h" void av2_lossless_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { @@ -984,7 +986,8 @@ void fwd_txfm_c(const int16_t *resi, tran_low_t *coeff, int diff_stride, int skipWidth = width > 32 ? width - 32 : 0; int skipHeight = height > 32 ? height - 32 : 0; - int buf[MAX_TX_SQUARE] = { 0 }; + int buf[MAX_TX_SQUARE]; + assert(width >= 4 && height >= 4); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { diff --git a/av2/encoder/x86/highbd_fwd_txfm_avx2.c b/av2/encoder/x86/highbd_fwd_txfm_avx2.c index f7a394d3da..c29d501484 100644 --- a/av2/encoder/x86/highbd_fwd_txfm_avx2.c +++ b/av2/encoder/x86/highbd_fwd_txfm_avx2.c @@ -12,13 +12,15 @@ #include #include /*AVX2*/ -#include "config/avm_config.h" #include "config/av2_rtcd.h" +#include "config/avm_config.h" +#include "config/avm_dsp_rtcd.h" + #include "av2/common/av2_txfm.h" +#include "av2/common/txb_common.h" #include "avm_dsp/txfm_common.h" -#include "avm_ports/mem.h" #include "avm_dsp/x86/txfm_common_sse2.h" -#include "av2/common/txb_common.h" +#include "avm_ports/mem.h" static INLINE __m256i round_power_of_two_signed_avx2(__m256i v_val_d, int bits) { @@ -5229,7 +5231,8 @@ void fwd_txfm_avx2(const int16_t *resi, tran_low_t *coeff, int diff_stride, int skipWidth = width > 32 ? width - 32 : 0; int skipHeight = height > 32 ? height - 32 : 0; - int buf[MAX_TX_SQUARE] = { 0 }; + int buf[MAX_TX_SQUARE]; + assert(width >= 4 && height >= 4); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { From 03bc9fe3c20a0da384f62598ca1b9128fb2a5562 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Fri, 7 Aug 2026 16:15:01 -0700 Subject: [PATCH 130/205] Revert "Optimize AV2 encoder by removing redundant memset calls (#5194)" (#5232) This reverts commit 587f50e26fe339a58175a74f32f2e84fd98e622c. Reason for revert: https://github.com/AOMediaCodec/avm/issues/5231 --- av2/encoder/av2_quantize.c | 26 +++++++++++++++++--------- av2/encoder/av2_quantize.h | 3 ++- av2/encoder/encodemb.c | 4 +++- av2/encoder/hybrid_fwd_txfm.c | 9 +++------ av2/encoder/x86/highbd_fwd_txfm_avx2.c | 11 ++++------- 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/av2/encoder/av2_quantize.c b/av2/encoder/av2_quantize.c index 0e67284dd8..c75ca00bf4 100644 --- a/av2/encoder/av2_quantize.c +++ b/av2/encoder/av2_quantize.c @@ -28,7 +28,12 @@ #include "av2/encoder/encoder.h" #include "av2/encoder/rd.h" -void av2_quantize_skip(uint16_t *eob_ptr) { *eob_ptr = 0; } +void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, + tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr) { + memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); + memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); + *eob_ptr = 0; +} static void highbd_quantize_fp_helper_c( const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, @@ -205,12 +210,15 @@ void av2_highbd_quantize_b_facade(const int use_tcq_deadzone_boost, } static INLINE void highbd_quantize_dc( - const tran_low_t *coeff_ptr, int skip_block, const int32_t *round_ptr, - const int32_t quant, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, - const int32_t dequant_ptr, uint16_t *eob_ptr, const qm_val_t *qm_ptr, - const qm_val_t *iqm_ptr, const int log_scale) { + const tran_low_t *coeff_ptr, int n_coeffs, int skip_block, + const int32_t *round_ptr, const int32_t quant, tran_low_t *qcoeff_ptr, + tran_low_t *dqcoeff_ptr, const int32_t dequant_ptr, uint16_t *eob_ptr, + const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale) { int eob = -1; + memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); + memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); + if (!skip_block) { const qm_val_t wt = qm_ptr != NULL ? qm_ptr[0] : (1 << AVM_QM_BITS); const qm_val_t iwt = iqm_ptr != NULL ? iqm_ptr[0] : (1 << AVM_QM_BITS); @@ -251,11 +259,11 @@ void av2_highbd_quantize_dc_facade(const int use_tcq_deadzone_boost, const qm_val_t *iqm_ptr = qparam->iqmatrix; (void)sc; (void)use_tcq_deadzone_boost; - (void)n_coeffs; - highbd_quantize_dc(coeff_ptr, skip_block, p->round_QTX, p->quant_fp_QTX[0], - qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX[0], eob_ptr, - qm_ptr, iqm_ptr, qparam->log_scale); + highbd_quantize_dc(coeff_ptr, (int)n_coeffs, skip_block, p->round_QTX, + p->quant_fp_QTX[0], qcoeff_ptr, dqcoeff_ptr, + p->dequant_QTX[0], eob_ptr, qm_ptr, iqm_ptr, + qparam->log_scale); } void av2_highbd_quantize_fp_c(const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t count, diff --git a/av2/encoder/av2_quantize.h b/av2/encoder/av2_quantize.h index 63c2bf37be..e5893ca74a 100644 --- a/av2/encoder/av2_quantize.h +++ b/av2/encoder/av2_quantize.h @@ -127,7 +127,8 @@ int av2_quantizer_to_qindex(int quantizer, avm_bit_depth_t bit_depth); int av2_qindex_to_quantizer(int qindex, avm_bit_depth_t bit_depth); -void av2_quantize_skip(uint16_t *eob_ptr); +void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, + tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr); void av2_highbd_quantize_fp_facade(const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index 83d7a630f6..fc9e00abfc 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -588,6 +588,8 @@ void av2_xform_dc_only(MACROBLOCK *x, int plane, int block, const struct macroblock_plane *const p = &x->plane[plane]; const int block_offset = BLOCK_OFFSET(block); tran_low_t *const coeff = p->coeff + block_offset; + const int n_coeffs = av2_get_max_eob(txfm_param->tx_size); + memset(coeff, 0, sizeof(*coeff) * n_coeffs); coeff[0] = (tran_low_t)((per_px_mean * dc_coeff_scale[txfm_param->tx_size]) >> 12); } @@ -728,7 +730,7 @@ void av2_quant(const int use_tcq_deadzone_boost, MACROBLOCK *x, int plane, n_coeffs, p, qcoeff, dqcoeff, eob, scan_order, qparam); } else { - av2_quantize_skip(eob); + av2_quantize_skip(n_coeffs, qcoeff, dqcoeff, eob); } } diff --git a/av2/encoder/hybrid_fwd_txfm.c b/av2/encoder/hybrid_fwd_txfm.c index 9b0c90b068..357c73b278 100644 --- a/av2/encoder/hybrid_fwd_txfm.c +++ b/av2/encoder/hybrid_fwd_txfm.c @@ -10,17 +10,15 @@ * aomedia.org/license/patent-license/. */ -#include - -#include "config/av2_rtcd.h" #include "config/avm_config.h" +#include "config/av2_rtcd.h" #include "config/avm_dsp_rtcd.h" #include "av2/common/idct.h" +#include "av2/encoder/hybrid_fwd_txfm.h" #include "av2/common/scan.h" #include "av2/common/secondary_tx.h" #include "av2/common/txb_common.h" -#include "av2/encoder/hybrid_fwd_txfm.h" void av2_lossless_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { @@ -986,8 +984,7 @@ void fwd_txfm_c(const int16_t *resi, tran_low_t *coeff, int diff_stride, int skipWidth = width > 32 ? width - 32 : 0; int skipHeight = height > 32 ? height - 32 : 0; - int buf[MAX_TX_SQUARE]; - assert(width >= 4 && height >= 4); + int buf[MAX_TX_SQUARE] = { 0 }; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { diff --git a/av2/encoder/x86/highbd_fwd_txfm_avx2.c b/av2/encoder/x86/highbd_fwd_txfm_avx2.c index c29d501484..f7a394d3da 100644 --- a/av2/encoder/x86/highbd_fwd_txfm_avx2.c +++ b/av2/encoder/x86/highbd_fwd_txfm_avx2.c @@ -12,15 +12,13 @@ #include #include /*AVX2*/ -#include "config/av2_rtcd.h" #include "config/avm_config.h" -#include "config/avm_dsp_rtcd.h" - +#include "config/av2_rtcd.h" #include "av2/common/av2_txfm.h" -#include "av2/common/txb_common.h" #include "avm_dsp/txfm_common.h" -#include "avm_dsp/x86/txfm_common_sse2.h" #include "avm_ports/mem.h" +#include "avm_dsp/x86/txfm_common_sse2.h" +#include "av2/common/txb_common.h" static INLINE __m256i round_power_of_two_signed_avx2(__m256i v_val_d, int bits) { @@ -5231,8 +5229,7 @@ void fwd_txfm_avx2(const int16_t *resi, tran_low_t *coeff, int diff_stride, int skipWidth = width > 32 ? width - 32 : 0; int skipHeight = height > 32 ? height - 32 : 0; - int buf[MAX_TX_SQUARE]; - assert(width >= 4 && height >= 4); + int buf[MAX_TX_SQUARE] = { 0 }; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { From 493fd0fba8432b56dc7bb219b43b0c4de7176050 Mon Sep 17 00:00:00 2001 From: Mudassir Galaganath Date: Mon, 27 Jul 2026 13:51:30 +0530 Subject: [PATCH 131/205] Move lossless DPCM check inside prune_intra_y_mode This change moves condition checks related to lossless DPCM modes inside prune_intra_y_mode() and updates its return type from int to bool. No stats changed. --- av2/encoder/intra_mode_search.c | 34 +++++++++++++++++++-------------- av2/encoder/intra_mode_search.h | 7 +++++-- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index a1008a69d5..20e7a000be 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -325,8 +325,14 @@ void av2_count_colors_highbd(const uint16_t *src, int stride, int rows, } } -int prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, - int64_t top_intra_model_rd[], int k) { +bool prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, + int64_t top_intra_model_rd[], int k, int lossless, + uint8_t use_dpcm_y) { + (void)lossless; + assert(IMPLIES(use_dpcm_y != 0, lossless != 0)); + if (this_model_rd < *best_model_rd) *best_model_rd = this_model_rd; + if (use_dpcm_y != 0) return false; + const double thresh_top = 1.00; for (int i = 0; i < k; i++) { if (this_model_rd < top_intra_model_rd[i]) { @@ -339,10 +345,9 @@ int prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, } if (top_intra_model_rd[k - 1] != INT64_MAX && this_model_rd > thresh_top * top_intra_model_rd[k - 1]) - return 1; + return true; - if (this_model_rd < *best_model_rd) *best_model_rd = this_model_rd; - return 0; + return false; } #define PLANE_SIGN_TO_JOINT_SIGN(plane, a, b) \ @@ -1027,8 +1032,8 @@ static INLINE int prune_intra_dip_mode(const AV2_COMP *cpi, MACROBLOCK *x, const MB_MODE_INFO *const mbmi = xd->mi[0]; const int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, - TOP_INTRA_MODEL_COUNT) && - (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) + TOP_INTRA_MODEL_COUNT, xd->lossless[mbmi->segment_id], + mbmi->use_dpcm_y)) return 1; return 0; } @@ -1239,8 +1244,8 @@ int64_t av2_handle_intra_mode(IntraModeSearchState *intra_search_state, int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); const int k = cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; - if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, k) && - (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) + if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, k, + xd->lossless[mbmi->segment_id], mbmi->use_dpcm_y)) return INT64_MAX; if (cpi->sf.intra_sf.intra_pruning_with_mlp && mbmi->mrl_index == 0 && av2_is_directional_mode(mbmi->mode)) @@ -1528,8 +1533,9 @@ void search_fsc_mode(const AV2_COMP *const cpi, MACROBLOCK *x, int *rate, this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); if (prune_intra_y_mode(this_model_rd, best_model_rd, - top_intra_model_rd, TOP_INTRA_MODEL_COUNT) && - (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) { + top_intra_model_rd, TOP_INTRA_MODEL_COUNT, + xd->lossless[mbmi->segment_id], + mbmi->use_dpcm_y)) { continue; } av2_pick_uniform_tx_size_type_yrd(cpi, x, &tokenonly_rd_stats, bsize, @@ -1848,9 +1854,9 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, if (dpcm_index == 0) mode_costs += mrl_idx_cost; int64_t this_model_rd; this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); - if (prune_intra_y_mode(this_model_rd, &best_model_rd, - top_intra_model_rd, model_rd_k) && - (!xd->lossless[mbmi->segment_id] || mbmi->use_dpcm_y == 0)) + if (prune_intra_y_mode( + this_model_rd, &best_model_rd, top_intra_model_rd, model_rd_k, + xd->lossless[mbmi->segment_id], mbmi->use_dpcm_y)) continue; if (cpi->sf.intra_sf.intra_pruning_with_mlp && mrl_idx == 0 && diff --git a/av2/encoder/intra_mode_search.h b/av2/encoder/intra_mode_search.h index 91ca729215..1f4f6e17b8 100644 --- a/av2/encoder/intra_mode_search.h +++ b/av2/encoder/intra_mode_search.h @@ -389,9 +389,12 @@ void av2_count_colors_highbd(const uint16_t *src, int stride, int rows, * block so far. * \param[in] k Number of top model RD candidates to * keep in top_intra_model_rd. + * \param[in] lossless True if current block is lossless. + * \param[in] use_dpcm_y True if block is lossless with DPCM mode. */ -int prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, - int64_t top_intra_model_rd[], int k); +bool prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, + int64_t top_intra_model_rd[], int k, int lossless, + uint8_t use_dpcm_y); #ifdef __cplusplus } // extern "C" From 3ec6d5273e6cd8f7da987a764d76ce4111acf39b Mon Sep 17 00:00:00 2001 From: Jerome Jiang Date: Wed, 29 Jul 2026 13:47:01 -0400 Subject: [PATCH 132/205] Implement real-time variance-based partitioning --- av2/av2.cmake | 2 + av2/encoder/encodeframe.c | 53 +- av2/encoder/encoder.c | 4 + av2/encoder/encoder.h | 84 +++ av2/encoder/encoder_alloc.h | 4 + av2/encoder/partition_search.c | 40 +- av2/encoder/partition_search.h | 2 +- av2/encoder/speed_features.c | 10 +- av2/encoder/var_based_part.c | 967 +++++++++++++++++++++++++++++++++ av2/encoder/var_based_part.h | 108 ++++ test/rtc_test.cc | 2 +- 11 files changed, 1244 insertions(+), 32 deletions(-) create mode 100644 av2/encoder/var_based_part.c create mode 100644 av2/encoder/var_based_part.h diff --git a/av2/av2.cmake b/av2/av2.cmake index ce384a59ba..9cc60a1331 100644 --- a/av2/av2.cmake +++ b/av2/av2.cmake @@ -297,6 +297,8 @@ list( "${AVM_ROOT}/av2/encoder/intra_mode_mlp.h" "${AVM_ROOT}/av2/encoder/intra_mode_mlp_weights.h" "${AVM_ROOT}/av2/encoder/wedge_utils.c" + "${AVM_ROOT}/av2/encoder/var_based_part.c" + "${AVM_ROOT}/av2/encoder/var_based_part.h" "${AVM_ROOT}/av2/encoder/av2_noise_estimate.c" "${AVM_ROOT}/av2/encoder/av2_noise_estimate.h" "${AVM_ROOT}/third_party/fastfeat/fast.c" diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 36482cbff9..e535420e92 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -69,6 +69,7 @@ #include "av2/encoder/segmentation.h" #include "av2/encoder/tokenize.h" #include "av2/encoder/tpl_model.h" +#include "av2/encoder/var_based_part.h" #if CONFIG_TUNE_VMAF #include "av2/encoder/tune_vmaf.h" @@ -467,12 +468,15 @@ static INLINE void init_encode_rd_sb(AV2_COMP *cpi, ThreadData *td, reset_hash_records(&x->txfm_search_info, cpi->sf.tx_sf.use_inter_txb_hash); av2_zero(x->picked_ref_frames_mask); av2_invalid_rd_stats(rd_cost); - SimpleMotionDataBufs *data_bufs = x->sms_bufs; - av2_init_sms_data_bufs(data_bufs); - fill_sms_buf(data_bufs, sms_root, mi_row, mi_col, cm->sb_size, cm->sb_size, - 0); - fill_sms_buf(data_bufs, sms_root, mi_row, mi_col, cm->sb_size, cm->sb_size, - 1); + if (sf->part_sf.partition_search_type != VAR_BASED_PARTITION && + sf->part_sf.partition_search_type != FIXED_PARTITION) { + SimpleMotionDataBufs *data_bufs = x->sms_bufs; + av2_init_sms_data_bufs(data_bufs); + fill_sms_buf(data_bufs, sms_root, mi_row, mi_col, cm->sb_size, cm->sb_size, + 0); + fill_sms_buf(data_bufs, sms_root, mi_row, mi_col, cm->sb_size, cm->sb_size, + 1); + } if (x->e_mbd.tree_type == CHROMA_PART) { assert(is_bsize_square(x->sb_enc.min_partition_size)); x->sb_enc.min_partition_size = @@ -730,7 +734,7 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, mi_col, 1); av2_reset_ptree_in_sbi(xd->sbi, xd->tree_type); av2_build_partition_tree_fixed_partitioning( - cm, xd->tree_type, mi_row, mi_col, bsize, + cm, xd->tree_type, mi_row, mi_col, xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], xd->tree_type == CHROMA_PART ? xd->sbi->ptree_root[0] : NULL); PC_TREE *const pc_root = av2_alloc_pc_tree_node( @@ -765,7 +769,7 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, PARTITION_NONE, 0, 1, ss_x, ss_y); av2_reset_ptree_in_sbi(xd->sbi, xd->tree_type); av2_build_partition_tree_fixed_partitioning( - cm, xd->tree_type, mi_row, mi_col, bsize, + cm, xd->tree_type, mi_row, mi_col, xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], xd->tree_type == CHROMA_PART ? xd->sbi->ptree_root[0] : NULL); av2_rd_use_partition( @@ -778,6 +782,39 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, x->sb_enc.min_partition_size = min_partition_size; } xd->tree_type = SHARED_PART; + } else if (sf->part_sf.partition_search_type == VAR_BASED_PARTITION) { + av2_set_offsets(cpi, tile_info, x, mi_row, mi_col, sb_size, NULL); + av2_choose_var_based_partitioning(cpi, tile_info, td, x, mi_row, mi_col); + for (int loop_idx = 0; loop_idx < total_loop_num; loop_idx++) { + xd->tree_type = + (total_loop_num == 1 ? SHARED_PART + : (loop_idx == 0 ? LUMA_PART : CHROMA_PART)); + const int plane_start = get_partition_plane_start(xd->tree_type); + const int plane_end = get_partition_plane_end(xd->tree_type, num_planes); + const BLOCK_SIZE min_partition_size = x->sb_enc.min_partition_size; + init_encode_rd_sb(cpi, td, tile_data, sms_root, &dummy_rdc, mi_row, + mi_col, 1); + PC_TREE *const pc_root = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col, cm->sb_size, sb_size, NULL, + PARTITION_NONE, 0, 1, ss_x, ss_y); + av2_reset_ptree_in_sbi(xd->sbi, xd->tree_type); + av2_build_partition_tree_fixed_partitioning( + cm, xd->tree_type, mi_row, mi_col, + xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], + xd->tree_type == CHROMA_PART ? xd->sbi->ptree_root[0] : NULL); + for (int plane = plane_start; plane < plane_end; plane++) { + x->cb_offset[plane] = 0; + } + av2_rd_use_partition( + cpi, td, tile_data, mi, + (intra_sdp_enabled && xd->tree_type == CHROMA_PART) ? tp_chroma : tp, + mi_row, mi_col, sb_size, &dummy_rate, &dummy_dist, 1, + xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], pc_root, + (xd->tree_type == CHROMA_PART) ? xd->sbi->ptree_root[0] : NULL); + av2_free_pc_tree_recursive(pc_root, num_planes, 0, 0); + x->sb_enc.min_partition_size = min_partition_size; + } + xd->tree_type = SHARED_PART; } else { // The most exhaustive recursive partition search SuperBlockEnc *sb_enc = &x->sb_enc; diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index 58a0b0e525..107e63b9df 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1810,6 +1810,10 @@ static AVM_INLINE void free_thread_data(AV2_COMP *cpi) { av2_free_pmc(thread_data->td->firstpass_ctx, av2_num_planes(cm)); thread_data->td->firstpass_ctx = NULL; av2_free_shared_coeff_buffer(&thread_data->td->shared_coeff_buf); + avm_free(thread_data->td->vt128x128); + thread_data->td->vt128x128 = NULL; + avm_free(thread_data->td->vt64x64); + thread_data->td->vt64x64 = NULL; av2_free_sms_tree(thread_data->td); av2_free_sms_bufs(thread_data->td); #if CONFIG_ML_PART_SPLIT diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index 7772121556..f90981b31f 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -1574,6 +1574,83 @@ typedef struct inter_modes_info { RdIdxPair rd_idx_pair_arr[MAX_INTER_MODES]; } InterModesInfo; +/*!\cond */ +typedef struct { + // This struct is used for computing variance in choose_partitioning(), where + // the max number of samples within a superblock is 32x32 (with 4x4 avg). + // uint64_t is used for sum_square_error to prevent overflow in high bitdepth + // mode. + uint64_t sum_square_error; + int32_t sum_error; + int log2_count; + int variance; +} VPartVar; + +typedef struct { + VPartVar none; + VPartVar horz[2]; + VPartVar vert[2]; +} VPVariance; + +typedef struct { + VPVariance part_variances; + VPartVar split[4]; +} VP4x4; + +typedef struct { + VPVariance part_variances; + VP4x4 split[4]; +} VP8x8; + +typedef struct { + VPVariance part_variances; + VP8x8 split[4]; +} VP16x16; + +typedef struct { + VPVariance part_variances; + VP16x16 split[4]; +} VP32x32; + +typedef struct { + VPVariance part_variances; + VP32x32 split[4]; +} VP64x64; + +typedef struct { + VPVariance part_variances; + VP64x64 *split; +} VP128x128; + +typedef struct { + VPVariance part_variances; + VP128x128 *split; +} VP256x256; + +/*!\endcond */ + +/*! + * \brief Thresholds for variance based partitioning. + */ +typedef struct { + /*! + * If block variance > threshold, then that block is forced to split. + * thresholds[0] - threshold for 256x256; + * thresholds[1] - threshold for 128x128; + * thresholds[2] - threshold for 64x64; + * thresholds[3] - threshold for 32x32; + * thresholds[4] - threshold for 16x16; + * thresholds[5] - threshold for 8x8; + */ + int64_t thresholds[6]; + + /*! + * MinMax variance threshold for 8x8 sub blocks of a 16x16 block. If actual + * minmax > threshold_minmax, the 16x16 is forced to split. + */ + int64_t threshold_minmax; +} VarBasedPartitionInfo; + /*! * \brief Encoder parameters for synchronization of row based multi-threading */ @@ -1664,6 +1741,8 @@ typedef struct ThreadData { // Buffer used to store quantized and dequantized transform coefficients. coeff_info *coef_info; PICK_MODE_CONTEXT *firstpass_ctx; + VP128x128 *vt128x128; + VP64x64 *vt64x64; #if CONFIG_ML_PART_SPLIT void *partition_model; #endif // CONFIG_ML_PART_SPLIT @@ -2732,6 +2811,11 @@ typedef struct AV2_COMP { */ int vaq_refresh; + /*! + * Thresholds for variance based partitioning. + */ + VarBasedPartitionInfo vbp_info; + /*! * Probabilities for pruning of various AV2 tools. */ diff --git a/av2/encoder/encoder_alloc.h b/av2/encoder/encoder_alloc.h index 1d8ac29469..ccb97356ac 100644 --- a/av2/encoder/encoder_alloc.h +++ b/av2/encoder/encoder_alloc.h @@ -233,6 +233,10 @@ static AVM_INLINE void dealloc_compressor_data(AV2_COMP *cpi) { free_token_info(token_info); av2_free_shared_coeff_buffer(&cpi->td.shared_coeff_buf); + avm_free(cpi->td.vt128x128); + cpi->td.vt128x128 = NULL; + avm_free(cpi->td.vt64x64); + cpi->td.vt64x64 = NULL; av2_free_sms_tree(&cpi->td); av2_free_sms_bufs(&cpi->td); #if CONFIG_ML_PART_SPLIT diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index b94d2e2119..f69b6f1a0b 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2016,12 +2016,19 @@ static void encode_sb(const AV2_COMP *const cpi, ThreadData *td, static void build_one_split_tree(AV2_COMMON *const cm, TREE_TYPE tree_type, int mi_row, int mi_col, BLOCK_SIZE bsize, - BLOCK_SIZE final_bsize, PARTITION_TREE *ptree, + PARTITION_TREE *ptree, const PARTITION_TREE *ptree_luma) { + CommonModeInfoParams *mi_params = &cm->mi_params; assert(block_size_high[bsize] == block_size_wide[bsize]); if (mi_row >= cm->mi_params.mi_rows || mi_col >= cm->mi_params.mi_cols) return; + const int mi_grid_idx = get_mi_grid_idx(mi_params, mi_row, mi_col); + const int mi_alloc_idx = get_alloc_mi_idx(mi_params, mi_row, mi_col); + MB_MODE_INFO *mi = mi_params->mi_grid_base[mi_grid_idx] = + &mi_params->mi_alloc[mi_alloc_idx]; + const int final_bsize = mi->sb_type[PLANE_TYPE_Y]; + const int ss_x = cm->seq_params.subsampling_x; const int ss_y = cm->seq_params.subsampling_y; ptree->bsize = bsize; @@ -2099,17 +2106,17 @@ static void build_one_split_tree(AV2_COMMON *const cm, TREE_TYPE tree_type, ptree->sub_tree[1] = av2_alloc_ptree_node(ptree, 1); ptree->sub_tree[2] = av2_alloc_ptree_node(ptree, 2); ptree->sub_tree[3] = av2_alloc_ptree_node(ptree, 3); - build_one_split_tree(cm, tree_type, mi_row, mi_col, subsize, final_bsize, + build_one_split_tree(cm, tree_type, mi_row, mi_col, subsize, ptree->sub_tree[0], track_ptree_luma ? ptree_luma->sub_tree[0] : NULL); build_one_split_tree(cm, tree_type, mi_row, mi_col + hbs_w, subsize, - final_bsize, ptree->sub_tree[1], + ptree->sub_tree[1], track_ptree_luma ? ptree_luma->sub_tree[1] : NULL); build_one_split_tree(cm, tree_type, mi_row + hbs_h, mi_col, subsize, - final_bsize, ptree->sub_tree[2], + ptree->sub_tree[2], track_ptree_luma ? ptree_luma->sub_tree[2] : NULL); build_one_split_tree(cm, tree_type, mi_row + hbs_h, mi_col + hbs_w, subsize, - final_bsize, ptree->sub_tree[3], + ptree->sub_tree[3], track_ptree_luma ? ptree_luma->sub_tree[3] : NULL); return; } @@ -2181,38 +2188,36 @@ static void build_one_split_tree(AV2_COMMON *const cm, TREE_TYPE tree_type, if (first_partition == PARTITION_HORZ) { assert(second_partition == PARTITION_VERT); build_one_split_tree( - cm, tree_type, mi_row, mi_col, subsize, final_bsize, - ptree->sub_tree[0]->sub_tree[0], + cm, tree_type, mi_row, mi_col, subsize, ptree->sub_tree[0]->sub_tree[0], track_subtree0_luma ? ptree_luma->sub_tree[0]->sub_tree[0] : NULL); build_one_split_tree( - cm, tree_type, mi_row, mi_col + hbs_w, subsize, final_bsize, + cm, tree_type, mi_row, mi_col + hbs_w, subsize, ptree->sub_tree[0]->sub_tree[1], track_subtree0_luma ? ptree_luma->sub_tree[0]->sub_tree[1] : NULL); build_one_split_tree( - cm, tree_type, mi_row + hbs_h, mi_col, subsize, final_bsize, + cm, tree_type, mi_row + hbs_h, mi_col, subsize, ptree->sub_tree[1]->sub_tree[0], track_subtree1_luma ? ptree_luma->sub_tree[1]->sub_tree[0] : NULL); build_one_split_tree( - cm, tree_type, mi_row + hbs_h, mi_col + hbs_w, subsize, final_bsize, + cm, tree_type, mi_row + hbs_h, mi_col + hbs_w, subsize, ptree->sub_tree[1]->sub_tree[1], track_subtree1_luma ? ptree_luma->sub_tree[1]->sub_tree[1] : NULL); } else { assert(first_partition == PARTITION_VERT); assert(second_partition == PARTITION_HORZ); build_one_split_tree( - cm, tree_type, mi_row, mi_col, subsize, final_bsize, - ptree->sub_tree[0]->sub_tree[0], + cm, tree_type, mi_row, mi_col, subsize, ptree->sub_tree[0]->sub_tree[0], track_subtree0_luma ? ptree_luma->sub_tree[0]->sub_tree[0] : NULL); build_one_split_tree( - cm, tree_type, mi_row + hbs_h, mi_col, subsize, final_bsize, + cm, tree_type, mi_row + hbs_h, mi_col, subsize, ptree->sub_tree[0]->sub_tree[1], track_subtree0_luma ? ptree_luma->sub_tree[0]->sub_tree[1] : NULL); build_one_split_tree( - cm, tree_type, mi_row, mi_col + hbs_w, subsize, final_bsize, + cm, tree_type, mi_row, mi_col + hbs_w, subsize, ptree->sub_tree[1]->sub_tree[0], track_subtree1_luma ? ptree_luma->sub_tree[1]->sub_tree[0] : NULL); build_one_split_tree( - cm, tree_type, mi_row + hbs_h, mi_col + hbs_w, subsize, final_bsize, + cm, tree_type, mi_row + hbs_h, mi_col + hbs_w, subsize, ptree->sub_tree[1]->sub_tree[1], track_subtree1_luma ? ptree_luma->sub_tree[1]->sub_tree[1] : NULL); } @@ -2220,10 +2225,9 @@ static void build_one_split_tree(AV2_COMMON *const cm, TREE_TYPE tree_type, void av2_build_partition_tree_fixed_partitioning( AV2_COMMON *const cm, TREE_TYPE tree_type, int mi_row, int mi_col, - BLOCK_SIZE bsize, PARTITION_TREE *ptree, const PARTITION_TREE *ptree_luma) { + PARTITION_TREE *ptree, const PARTITION_TREE *ptree_luma) { const BLOCK_SIZE sb_size = cm->sb_size; - - build_one_split_tree(cm, tree_type, mi_row, mi_col, sb_size, bsize, ptree, + build_one_split_tree(cm, tree_type, mi_row, mi_col, sb_size, ptree, ptree_luma); } diff --git a/av2/encoder/partition_search.h b/av2/encoder/partition_search.h index a501ff31c4..6fc5ca3dd5 100644 --- a/av2/encoder/partition_search.h +++ b/av2/encoder/partition_search.h @@ -57,7 +57,7 @@ void av2_ml_early_term_after_split(AV2_COMP *const cpi, MACROBLOCK *const x, void av2_build_partition_tree_fixed_partitioning( AV2_COMMON *const cm, TREE_TYPE tree_type, int mi_row, int mi_col, - BLOCK_SIZE bsize, PARTITION_TREE *ptree, const PARTITION_TREE *ptree_luma); + PARTITION_TREE *ptree, const PARTITION_TREE *ptree_luma); void setup_block_rdmult(const AV2_COMP *const cpi, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, AQ_MODE aq_mode, MB_MODE_INFO *mbmi); diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index ccb1d637f4..0101d766a6 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -666,16 +666,18 @@ static void set_rt_speed_features_framesize_independent( // Set this good features as default for now. set_good_speed_features_framesize_independent(cpi, sf, speed); if (speed >= 6) { - sf->part_sf.partition_search_type = VAR_BASED_PARTITION; + sf->inter_sf.prune_ref_frames = 0; + sf->intra_sf.intra_pruning_with_mlp = 0; sf->hl_sf.frame_parameter_update = 0; sf->hl_sf.recode_loop = DISALLOW_RECODE; sf->lpf_sf.lpf_pick = LPF_PICK_FROM_Q; sf->lpf_sf.cdef_pick_method = CDEF_PICK_FROM_Q; - sf->rt_sf.use_only_dc_intra_interframe = true; - sf->inter_sf.prune_ref_frames = 0; sf->mv_sf.search_method = DIAMOND; - sf->winner_mode_sf.tx_size_search_level = USE_LARGESTALL; + sf->part_sf.partition_pruning_with_mlp = 0; + sf->part_sf.partition_search_type = VAR_BASED_PARTITION; sf->rd_sf.tx_domain_dist_thres_level = 2; + sf->rt_sf.use_only_dc_intra_interframe = true; + sf->winner_mode_sf.tx_size_search_level = USE_LARGESTALL; } } diff --git a/av2/encoder/var_based_part.c b/av2/encoder/var_based_part.c new file mode 100644 index 0000000000..2cf7ad052f --- /dev/null +++ b/av2/encoder/var_based_part.c @@ -0,0 +1,967 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include +#include +#include +#include + +#include "config/avm_config.h" +#include "config/avm_dsp_rtcd.h" +#include "config/av2_rtcd.h" + +#include "av2/common/quant_common.h" + +#include "av2/encoder/encodeframe.h" +#include "av2/encoder/encodeframe_utils.h" +#include "av2/encoder/var_based_part.h" +#include "av2/encoder/reconinter_enc.h" +#include "av2/encoder/rdopt_utils.h" + +#include "avm_dsp/avm_dsp_common.h" +#include "avm_ports/mem.h" + +// Macros for common video resolutions: width x height +// For example, 720p represents video resolution of 1280x720 pixels. +#define RESOLUTION_288P (352 * 288) +#define RESOLUTION_360P (640 * 360) +#define RESOLUTION_480P (640 * 480) +#define RESOLUTION_720P (1280 * 720) +#define RESOLUTION_1080P (1920 * 1080) +#define RESOLUTION_1440P (2560 * 1440) +#define RESOLUTION_4K (3840 * 2160) + +// Possible values for the force_split variable while evaluating variance based +// partitioning. +enum { + // Evaluate all partition types + PART_EVAL_ALL = 0, + // Force PARTITION_SPLIT + PART_EVAL_ONLY_SPLIT = 1, + // Force PARTITION_NONE + PART_EVAL_ONLY_NONE = 2 +} UENUM1BYTE(PART_EVAL_STATUS); + +typedef struct { + VPVariance *part_variances; + VPartVar *split[4]; +} variance_node; + +static inline void tree_to_node(void *data, BLOCK_SIZE bsize, + variance_node *node) { + node->part_variances = NULL; + switch (bsize) { + case BLOCK_256X256: { + VP256x256 *vt = (VP256x256 *)data; + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx].part_variances.none; + break; + } + case BLOCK_128X128: { + VP128x128 *vt = (VP128x128 *)data; + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx].part_variances.none; + break; + } + case BLOCK_64X64: { + VP64x64 *vt = (VP64x64 *)data; + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx].part_variances.none; + break; + } + case BLOCK_32X32: { + VP32x32 *vt = (VP32x32 *)data; + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx].part_variances.none; + break; + } + case BLOCK_16X16: { + VP16x16 *vt = (VP16x16 *)data; + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx].part_variances.none; + break; + } + case BLOCK_8X8: { + VP8x8 *vt = (VP8x8 *)data; + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx].part_variances.none; + break; + } + default: { + VP4x4 *vt = (VP4x4 *)data; + assert(bsize == BLOCK_4X4); + node->part_variances = &vt->part_variances; + for (int split_idx = 0; split_idx < 4; split_idx++) + node->split[split_idx] = &vt->split[split_idx]; + break; + } + } +} + +// Set variance values given sum square error, sum error, count. +static inline void fill_variance(uint64_t s2, int32_t s, int c, VPartVar *v) { + v->sum_square_error = s2; + v->sum_error = s; + v->log2_count = c; +} + +static inline void get_variance(VPartVar *v) { + v->variance = + (int)(256 * (v->sum_square_error - + (uint64_t)(((int64_t)v->sum_error * v->sum_error) >> + v->log2_count)) >> + v->log2_count); +} + +static inline void sum_2_variances(const VPartVar *a, const VPartVar *b, + VPartVar *r) { + assert(a->log2_count == b->log2_count); + fill_variance(a->sum_square_error + b->sum_square_error, + a->sum_error + b->sum_error, a->log2_count + 1, r); +} + +static inline void fill_variance_tree(void *data, BLOCK_SIZE bsize) { + variance_node node; + memset(&node, 0, sizeof(node)); + tree_to_node(data, bsize, &node); + sum_2_variances(node.split[0], node.split[1], &node.part_variances->horz[0]); + sum_2_variances(node.split[2], node.split[3], &node.part_variances->horz[1]); + sum_2_variances(node.split[0], node.split[2], &node.part_variances->vert[0]); + sum_2_variances(node.split[1], node.split[3], &node.part_variances->vert[1]); + sum_2_variances(&node.part_variances->vert[0], &node.part_variances->vert[1], + &node.part_variances->none); +} + +static inline void set_block_size(AV2_COMP *const cpi, int mi_row, int mi_col, + BLOCK_SIZE bsize) { + if (cpi->common.mi_params.mi_cols > mi_col && + cpi->common.mi_params.mi_rows > mi_row) { + CommonModeInfoParams *mi_params = &cpi->common.mi_params; + const int mi_grid_idx = get_mi_grid_idx(mi_params, mi_row, mi_col); + const int mi_alloc_idx = get_alloc_mi_idx(mi_params, mi_row, mi_col); + MB_MODE_INFO *mi = mi_params->mi_grid_base[mi_grid_idx] = + &mi_params->mi_alloc[mi_alloc_idx]; + mi->sb_type[PLANE_TYPE_Y] = bsize; + mi->sb_type[PLANE_TYPE_UV] = bsize; + } +} + +static int set_vt_partitioning(AV2_COMP *cpi, MACROBLOCKD *const xd, + const TileInfo *const tile, void *data, + BLOCK_SIZE bsize, int mi_row, int mi_col, + int64_t threshold, BLOCK_SIZE bsize_min, + PART_EVAL_STATUS force_split) { + AV2_COMMON *const cm = &cpi->common; + // TODO(jianj-g): Use only square for now. + const int check_horiz_split = false; + const int check_vert_split = false; + variance_node vt; + const int block_width = mi_size_wide[bsize]; + const int block_height = mi_size_high[bsize]; + int bs_width_check = block_width; + int bs_height_check = block_height; + // On the right and bottom boundary we only need to check + // if half the bsize fits, because boundary is extended + // up to 64. So do this check only for sb_size = 64X64. + if (cm->seq_params.sb_size == BLOCK_64X64) { + if (tile->mi_col_end == cm->mi_params.mi_cols) { + bs_width_check = (block_width >> 1) + 1; + } + if (tile->mi_row_end == cm->mi_params.mi_rows) { + bs_height_check = (block_height >> 1) + 1; + } + } + + assert(block_height == block_width); + tree_to_node(data, bsize, &vt); + + if (mi_col + bs_width_check <= tile->mi_col_end && + mi_row + bs_height_check <= tile->mi_row_end && + force_split == PART_EVAL_ONLY_NONE) { + set_block_size(cpi, mi_row, mi_col, bsize); + return 1; + } + if (force_split == PART_EVAL_ONLY_SPLIT) return 0; + + // For bsize=bsize_min (16x16/8x8 for 8x8/4x4 downsampling), select if + // variance is below threshold, otherwise split will be selected. + // No check for vert/horiz split as too few samples for variance. + if (bsize == bsize_min) { + // Variance already computed to set the force_split. + if (frame_is_intra_only(cm)) get_variance(&vt.part_variances->none); + if (mi_col + bs_width_check <= tile->mi_col_end && + mi_row + bs_height_check <= tile->mi_row_end && + vt.part_variances->none.variance < threshold) { + set_block_size(cpi, mi_row, mi_col, bsize); + return 1; + } + return 0; + } else if (bsize > bsize_min) { + // Variance already computed to set the force_split. + if (frame_is_intra_only(cm)) get_variance(&vt.part_variances->none); + // For key frame: take split for bsize above 32X32 or very high variance. + if (frame_is_intra_only(cm) && + (bsize > BLOCK_32X32 || + vt.part_variances->none.variance > (threshold << 4))) { + return 0; + } + // If variance is low, take the bsize (no split). + if (mi_col + bs_width_check <= tile->mi_col_end && + mi_row + bs_height_check <= tile->mi_row_end && + vt.part_variances->none.variance < threshold) { + set_block_size(cpi, mi_row, mi_col, bsize); + return 1; + } + // Check vertical split. + if (check_vert_split) { + int bs_width_vert_check = (block_width >> 1); + if (cm->seq_params.sb_size == BLOCK_64X64 && + tile->mi_col_end == cm->mi_params.mi_cols) { + bs_width_vert_check = (block_width >> 2) + 1; + } + if (mi_row + bs_height_check <= tile->mi_row_end && + mi_col + bs_width_vert_check <= tile->mi_col_end) { + BLOCK_SIZE subsize = get_partition_subsize(bsize, PARTITION_VERT); + BLOCK_SIZE plane_bsize = + get_plane_block_size(subsize, xd->plane[AVM_PLANE_U].subsampling_x, + xd->plane[AVM_PLANE_U].subsampling_y); + get_variance(&vt.part_variances->vert[0]); + get_variance(&vt.part_variances->vert[1]); + if (vt.part_variances->vert[0].variance < threshold && + vt.part_variances->vert[1].variance < threshold && + plane_bsize < BLOCK_INVALID) { + set_block_size(cpi, mi_row, mi_col, subsize); + set_block_size(cpi, mi_row, mi_col + block_width / 2, subsize); + return 1; + } + } + } + // Check horizontal split. + if (check_horiz_split) { + int bs_height_horiz_check = (block_height >> 1); + if (cm->seq_params.sb_size == BLOCK_64X64 && + tile->mi_row_end == cm->mi_params.mi_rows) { + bs_height_horiz_check = (block_height >> 2) + 1; + } + if (mi_col + bs_width_check <= tile->mi_col_end && + mi_row + bs_height_horiz_check <= tile->mi_row_end) { + BLOCK_SIZE subsize = get_partition_subsize(bsize, PARTITION_HORZ); + BLOCK_SIZE plane_bsize = + get_plane_block_size(subsize, xd->plane[AVM_PLANE_U].subsampling_x, + xd->plane[AVM_PLANE_U].subsampling_y); + get_variance(&vt.part_variances->horz[0]); + get_variance(&vt.part_variances->horz[1]); + if (vt.part_variances->horz[0].variance < threshold && + vt.part_variances->horz[1].variance < threshold && + plane_bsize < BLOCK_INVALID) { + set_block_size(cpi, mi_row, mi_col, subsize); + set_block_size(cpi, mi_row + block_height / 2, mi_col, subsize); + return 1; + } + } + } + return 0; + } + return 0; +} + +static inline void fill_variance_8x8avg_highbd( + const uint16_t *src_buf, int src_stride, const uint16_t *dst_buf, + int dst_stride, int x16_idx, int y16_idx, VP16x16 *vst, int pixels_wide, + int pixels_high) { + for (int idx = 0; idx < 4; idx++) { + const int x8_idx = x16_idx + GET_BLK_IDX_X(idx, 3); + const int y8_idx = y16_idx + GET_BLK_IDX_Y(idx, 3); + unsigned int sse = 0; + int sum = 0; + if (x8_idx < pixels_wide && y8_idx < pixels_high) { + int src_avg = avm_highbd_avg_8x8(src_buf + y8_idx * src_stride + x8_idx, + src_stride); + int dst_avg = avm_highbd_avg_8x8(dst_buf + y8_idx * dst_stride + x8_idx, + dst_stride); + + sum = src_avg - dst_avg; + sse = sum * sum; + } + fill_variance(sse, sum, 0, &vst->split[idx].part_variances.none); + } +} + +// Obtain parameters required to calculate variance (such as sum, sse, etc,.) +// at 8x8 sub-block level for a given 16x16 block. +// The function can be called only when is_key_frame is false since sum is +// computed between source and reference frames. +static inline void fill_variance_8x8avg(const uint16_t *src_buf, int src_stride, + const uint16_t *dst_buf, int dst_stride, + int x16_idx, int y16_idx, VP16x16 *vst, + int pixels_wide, int pixels_high) { + fill_variance_8x8avg_highbd(src_buf, src_stride, dst_buf, dst_stride, x16_idx, + y16_idx, vst, pixels_wide, pixels_high); +} + +// Function to compute average and variance of 4x4 sub-block. +// The function can be called only when is_key_frame is true since sum is +// computed using source frame only. +static inline void fill_variance_4x4avg(const uint16_t *src_buf, int src_stride, + int x8_idx, int y8_idx, VP8x8 *vst, + int pixels_wide, int pixels_high, + int bit_depth) { + for (int idx = 0; idx < 4; idx++) { + const int x4_idx = x8_idx + GET_BLK_IDX_X(idx, 2); + const int y4_idx = y8_idx + GET_BLK_IDX_Y(idx, 2); + unsigned int sse = 0; + int sum = 0; + if (x4_idx < pixels_wide && y4_idx < pixels_high) { + int src_avg; + int dst_avg = 1 << (bit_depth - 1); + src_avg = avm_highbd_avg_4x4(src_buf + y4_idx * src_stride + x4_idx, + src_stride); + sum = src_avg - dst_avg; + sse = sum * sum; + } + fill_variance(sse, sum, 0, &vst->split[idx].part_variances.none); + } +} + +static inline void tune_thresh_based_on_resolution(AV2_COMP *cpi, + int64_t thresholds[], + int64_t threshold_base, + int current_qindex, + int num_pixels) { + if (num_pixels >= RESOLUTION_720P) thresholds[4] = thresholds[4] << 1; + if (num_pixels <= RESOLUTION_288P) { + const int qindex_low_thr = 200; + const int qindex_high_thr = 220; + if (current_qindex >= qindex_high_thr) { + threshold_base = (5 * threshold_base) >> 1; + thresholds[2] = threshold_base >> 3; + thresholds[3] = threshold_base << 2; + thresholds[4] = threshold_base << 5; + } else if (current_qindex < qindex_low_thr) { + thresholds[2] = threshold_base >> 3; + thresholds[3] = threshold_base >> 1; + thresholds[4] = threshold_base << 3; + } else { + int64_t qi_diff_low = current_qindex - qindex_low_thr; + int64_t qi_diff_high = qindex_high_thr - current_qindex; + int64_t threshold_diff = qindex_high_thr - qindex_low_thr; + int64_t threshold_base_high = (5 * threshold_base) >> 1; + + threshold_diff = threshold_diff > 0 ? threshold_diff : 1; + threshold_base = + (qi_diff_low * threshold_base_high + qi_diff_high * threshold_base) / + threshold_diff; + thresholds[2] = threshold_base >> 3; + thresholds[3] = ((qi_diff_low * threshold_base) + + qi_diff_high * (threshold_base >> 1)) / + threshold_diff; + thresholds[4] = ((qi_diff_low * (threshold_base << 5)) + + qi_diff_high * (threshold_base << 3)) / + threshold_diff; + } + } else if (num_pixels < RESOLUTION_720P) { + thresholds[3] = (3 * threshold_base) >> 1; + } else if (num_pixels < RESOLUTION_1080P) { + thresholds[3] = threshold_base << 1; + } else { + // num_pixels >= RESOLUTION_1080P + if (cpi->oxcf.tune_cfg.content == AVM_CONTENT_SCREEN) { + if (num_pixels < RESOLUTION_1440P) { + thresholds[3] = (5 * threshold_base) >> 1; + } else { + thresholds[3] = (7 * threshold_base) >> 1; + } + } else { + if (cpi->oxcf.speed > 7) { + thresholds[3] = threshold_base << 2; + } + } + } +} + +static void set_vbp_thresholds_key_frame(int64_t thresholds[], + int64_t threshold_base, + int num_pixels) { + thresholds[0] = threshold_base >> 1; + thresholds[1] = threshold_base; + thresholds[2] = threshold_base; + if (num_pixels < RESOLUTION_720P) { + thresholds[3] = threshold_base / 3; + thresholds[4] = threshold_base >> 1; + } else { + int shift_val = 2; + thresholds[3] = threshold_base >> shift_val; + thresholds[4] = threshold_base >> shift_val; + } + thresholds[5] = threshold_base << 2; +} + +/*!\brief Computes block variance split thresholds based on frame type, Q index, + * and resolution. + * + * Calculates a hierarchy of variance thresholds stored in `thresholds[]` for + * each block level (ranging from root block size down to 16x16 blocks). + * + * - The base threshold (`threshold_base`) is derived from the AC quantizer step + * size at `qindex`. + * - Keyframes use a higher threshold multiplier and delegate to + * `set_vbp_thresholds_key_frame()`. + * - Inter-frames scale base thresholds across block levels and apply + * resolution/QP-based tuning via `tune_thresh_based_on_resolution()`. + * + * \param[in] cpi Top level encoder structure + * \param[out] thresholds Array of length 6 holding computed variance split + * thresholds per block level + * \param[in] qindex Quantization index used to derive the base variance + * threshold + */ +static inline void set_vbp_thresholds(AV2_COMP *cpi, int64_t thresholds[], + int qindex) { + AV2_COMMON *const cm = &cpi->common; + const int is_key_frame = frame_is_intra_only(cm); + const int threshold_multiplier = is_key_frame ? 120 : 1; + const int ac_q = av2_ac_quant_QTX(qindex, 0, 0, cm->seq_params.bit_depth); + int64_t threshold_base = (int64_t)(threshold_multiplier * ac_q) >> 3; + const int current_qindex = cm->quant_params.base_qindex; + const int threshold_left_shift = 7; + const int num_pixels = cm->width * cm->height; + + if (is_key_frame) { + set_vbp_thresholds_key_frame(thresholds, threshold_base, num_pixels); + thresholds[5] = INT64_MAX; + return; + } + + thresholds[0] = threshold_base >> 2; + thresholds[1] = threshold_base >> 1; + thresholds[2] = threshold_base; + thresholds[3] = threshold_base << 2; + thresholds[4] = threshold_base << threshold_left_shift; + thresholds[5] = INT64_MAX; + + tune_thresh_based_on_resolution(cpi, thresholds, threshold_base, + current_qindex, num_pixels); +} + +/*!\brief Populates the leaf nodes of the variance tree and initializes + * partition search flags. + * + * Traverses all 64x64 sub-blocks within the given superblock and computes + * leaf-level block variances: + * - For keyframes: Computes 4x4 down-sampled source variances + * (`fill_variance_4x4avg`). + * - For inter-frames: Computes 8x8 down-sampled residual (source vs prediction) + * variances (`fill_variance_8x8avg`) and aggregates them up to 16x16 blocks. + * + * Accumulates 16x16 block statistics (`avg_16x16`, `maxvar_16x16`, + * `minvar_16x16`) and checks if 16x16 variance exceeds the split threshold. If + * so, updates `force_split` flags to force splitting down to 8x8 for that 16x16 + * block and its ancestors. + * + * \param[in] x Pointer to MACROBLOCK structure + * \param[in,out] vt Pointer to the top-level variance tree + * (VP128x128 array) + * \param[out] force_split Flat array storing forced partition evaluation + * decisions + * \param[out] avg_16x16 Accumulator for 16x16 block average variances + * per 64x64 block + * \param[out] maxvar_16x16 Array tracking maximum 16x16 block variance per + * 64x64 block + * \param[out] minvar_16x16 Array tracking minimum 16x16 block variance per + * 64x64 block + * \param[in] thresholds Array of variance thresholds per block level + * \param[in] src_buf Pointer to source Y plane buffer + * \param[in] src_stride Stride of source Y plane buffer + * \param[in] dst_buf Pointer to prediction Y plane buffer (NULL for + * keyframes) + * \param[in] dst_stride Stride of prediction Y plane buffer + * \param[in] is_key_frame True if encoding a keyframe + * \param[in] sb_size Superblock size (BLOCK_64X64, BLOCK_128X128, or + * BLOCK_256X256) + */ +static void fill_variance_tree_leaves(MACROBLOCK *x, VP128x128 *vt, + PART_EVAL_STATUS *force_split, + int avg_16x16[][4], int maxvar_16x16[][4], + int minvar_16x16[][4], + int64_t *thresholds, + const uint16_t *src_buf, int src_stride, + const uint16_t *dst_buf, int dst_stride, + bool is_key_frame, BLOCK_SIZE sb_size) { + MACROBLOCKD *xd = &x->e_mbd; + const int num_64x64_blocks = (sb_size == BLOCK_64X64) ? 1 + : (sb_size == BLOCK_128X128) ? 4 + : 16; + int pixels_wide = (sb_size == BLOCK_64X64) ? 64 + : (sb_size == BLOCK_128X128) ? 128 + : 256; + int pixels_high = pixels_wide; + // dst_buf pointer is not used for is_key_frame, so it should be NULL. + assert(IMPLIES(is_key_frame, dst_buf == NULL)); + if (xd->mb_to_right_edge < 0) pixels_wide += (xd->mb_to_right_edge >> 3); + if (xd->mb_to_bottom_edge < 0) pixels_high += (xd->mb_to_bottom_edge >> 3); + const VPartOffsets offsets = get_vpart_offsets(sb_size); + const int offset_64x64 = offsets.offset_64x64; + const int offset_32x32 = offsets.offset_32x32; + const int offset_16x16 = offsets.offset_16x16; + for (int blk64_idx = 0; blk64_idx < num_64x64_blocks; blk64_idx++) { + int x64_idx, y64_idx; + VP64x64 *vt64; + if (sb_size == BLOCK_256X256) { + x64_idx = ((blk64_idx & 3) << 6); + y64_idx = ((blk64_idx >> 2) << 6); + vt64 = &vt[blk64_idx >> 2].split[blk64_idx & 3]; + } else { + x64_idx = GET_BLK_IDX_X(blk64_idx, 6); + y64_idx = GET_BLK_IDX_Y(blk64_idx, 6); + vt64 = &vt->split[blk64_idx]; + } + const int blk64_scale_idx = blk64_idx << 2; + force_split[blk64_idx + offset_64x64] = PART_EVAL_ALL; + + for (int lvl1_idx = 0; lvl1_idx < 4; lvl1_idx++) { + const int x32_idx = x64_idx + GET_BLK_IDX_X(lvl1_idx, 5); + const int y32_idx = y64_idx + GET_BLK_IDX_Y(lvl1_idx, 5); + const int lvl1_scale_idx = (blk64_scale_idx + lvl1_idx) << 2; + force_split[offset_32x32 + blk64_scale_idx + lvl1_idx] = PART_EVAL_ALL; + avg_16x16[blk64_idx][lvl1_idx] = 0; + maxvar_16x16[blk64_idx][lvl1_idx] = 0; + minvar_16x16[blk64_idx][lvl1_idx] = INT_MAX; + for (int lvl2_idx = 0; lvl2_idx < 4; lvl2_idx++) { + const int x16_idx = x32_idx + GET_BLK_IDX_X(lvl2_idx, 4); + const int y16_idx = y32_idx + GET_BLK_IDX_Y(lvl2_idx, 4); + const int split_index = offset_16x16 + lvl1_scale_idx + lvl2_idx; + VP16x16 *vst = &vt64->split[lvl1_idx].split[lvl2_idx]; + force_split[split_index] = PART_EVAL_ALL; + if (is_key_frame) { + // Go down to 4x4 down-sampling for variance. + for (int lvl3_idx = 0; lvl3_idx < 4; lvl3_idx++) { + const int x8_idx = x16_idx + GET_BLK_IDX_X(lvl3_idx, 3); + const int y8_idx = y16_idx + GET_BLK_IDX_Y(lvl3_idx, 3); + VP8x8 *vst2 = &vst->split[lvl3_idx]; + fill_variance_4x4avg(src_buf, src_stride, x8_idx, y8_idx, vst2, + pixels_wide, pixels_high, xd->bd); + } + } else { + fill_variance_8x8avg(src_buf, src_stride, dst_buf, dst_stride, + x16_idx, y16_idx, vst, pixels_wide, pixels_high); + + fill_variance_tree(vst, BLOCK_16X16); + VPartVar *none_var = + &vt64->split[lvl1_idx].split[lvl2_idx].part_variances.none; + get_variance(none_var); + const int val_none_var = none_var->variance; + avg_16x16[blk64_idx][lvl1_idx] += val_none_var; + minvar_16x16[blk64_idx][lvl1_idx] = + AVMMIN(minvar_16x16[blk64_idx][lvl1_idx], val_none_var); + maxvar_16x16[blk64_idx][lvl1_idx] = + AVMMAX(maxvar_16x16[blk64_idx][lvl1_idx], val_none_var); + if (val_none_var > thresholds[4]) { + // 16X16 variance is above threshold for split, so force split to + // 8x8 for this 16x16 block (this also forces splits for upper + // levels). + force_split[split_index] = PART_EVAL_ONLY_SPLIT; + force_split[offset_32x32 + blk64_scale_idx + lvl1_idx] = + PART_EVAL_ONLY_SPLIT; + force_split[blk64_idx + offset_64x64] = PART_EVAL_ONLY_SPLIT; + force_split[0] = PART_EVAL_ONLY_SPLIT; + } + } + } + } + } +} + +static void setup_planes(AV2_COMP *cpi, MACROBLOCK *x, unsigned int *y_sad, + int mi_row, int mi_col, bool is_small_sb, + bool scaled_ref_last) { + AV2_COMMON *const cm = &cpi->common; + (void)is_small_sb; + MACROBLOCKD *xd = &x->e_mbd; + const int num_planes = av2_num_planes(cm); + BLOCK_SIZE bsize = cm->sb_size; + MB_MODE_INFO *mi = xd->mi[0]; + const MV_REFERENCE_FRAME last_frame = get_closest_pastcur_ref_or_ref0(cm); + const YV12_BUFFER_CONFIG *yv12 = get_ref_frame_yv12_buf(cm, last_frame); + assert(yv12 != NULL); + if (yv12 != NULL) { + av2_setup_pre_planes( + xd, 0, yv12, mi_row, mi_col, + scaled_ref_last ? NULL : get_ref_scale_factors(cm, last_frame), + num_planes, NULL); + mi->ref_frame[0] = last_frame; + mi->ref_frame[1] = NONE_FRAME; + mi->sb_type[PLANE_TYPE_Y] = cm->seq_params.sb_size; + mi->sb_type[PLANE_TYPE_UV] = cm->seq_params.sb_size; + mi->mv[0].as_int = 0; + + if (*y_sad == UINT_MAX) { + *y_sad = cpi->fn_ptr[bsize].sdf(x->plane[AVM_PLANE_Y].src.buf, + x->plane[AVM_PLANE_Y].src.stride, + xd->plane[AVM_PLANE_Y].pre[0].buf, + xd->plane[AVM_PLANE_Y].pre[0].stride); + } + } + // TODO(jianj-g, marpan-max): consider other references. + + // TODO(jianj-g, marpan-max): add superblock motion estimation. + + // Only calculate the predictor for non-zero MV. + if (mi->mv[0].as_int != 0) { + set_ref_ptrs(cm, xd, mi->ref_frame[0], mi->ref_frame[1]); + av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, NULL, + cm->seq_params.sb_size, AVM_PLANE_Y, + num_planes - 1); + } +} + +static void set_vt_partitioning_64x64(AV2_COMP *cpi, MACROBLOCKD *xd, + const TileInfo *const tile, VP64x64 *vt64, + int mi_row, int mi_col, int x64_idx, + int y64_idx, int blk64_idx, + const int64_t *thresholds, + const PART_EVAL_STATUS *force_split, + VPartOffsets offsets) { + const int offset_64x64 = offsets.offset_64x64; + const int offset_32x32 = offsets.offset_32x32; + const int offset_16x16 = offsets.offset_16x16; + const int blk64_scale_idx = blk64_idx << 2; + + if (set_vt_partitioning(cpi, xd, tile, vt64, BLOCK_64X64, mi_row + y64_idx, + mi_col + x64_idx, thresholds[2], BLOCK_16X16, + force_split[offset_64x64 + blk64_idx])) + return; + + for (int lvl1_idx = 0; lvl1_idx < 4; ++lvl1_idx) { + const int x32_idx = GET_BLK_IDX_X(lvl1_idx, 3); + const int y32_idx = GET_BLK_IDX_Y(lvl1_idx, 3); + const int lvl1_scale_idx = (blk64_scale_idx + lvl1_idx) << 2; + if (set_vt_partitioning( + cpi, xd, tile, &vt64->split[lvl1_idx], BLOCK_32X32, + (mi_row + y64_idx + y32_idx), (mi_col + x64_idx + x32_idx), + thresholds[3], BLOCK_16X16, + force_split[offset_32x32 + blk64_scale_idx + lvl1_idx])) + continue; + for (int lvl2_idx = 0; lvl2_idx < 4; ++lvl2_idx) { + const int x16_idx = GET_BLK_IDX_X(lvl2_idx, 2); + const int y16_idx = GET_BLK_IDX_Y(lvl2_idx, 2); + const int split_index = offset_16x16 + lvl1_scale_idx + lvl2_idx; + VP16x16 *vtemp = &vt64->split[lvl1_idx].split[lvl2_idx]; + if (set_vt_partitioning(cpi, xd, tile, vtemp, BLOCK_16X16, + mi_row + y64_idx + y32_idx + y16_idx, + mi_col + x64_idx + x32_idx + x16_idx, + thresholds[4], BLOCK_8X8, + force_split[split_index])) + continue; + for (int lvl3_idx = 0; lvl3_idx < 4; ++lvl3_idx) { + const int x8_idx = GET_BLK_IDX_X(lvl3_idx, 1); + const int y8_idx = GET_BLK_IDX_Y(lvl3_idx, 1); + set_block_size(cpi, (mi_row + y64_idx + y32_idx + y16_idx + y8_idx), + (mi_col + x64_idx + x32_idx + x16_idx + x8_idx), + BLOCK_8X8); + } + } + } +} + +void av2_choose_var_based_partitioning(AV2_COMP *cpi, + const TileInfo *const tile, + ThreadData *td, MACROBLOCK *x, + int mi_row, int mi_col) { + AV2_COMMON *const cm = &cpi->common; + MACROBLOCKD *xd = &x->e_mbd; + const int64_t *const vbp_thresholds = cpi->vbp_info.thresholds; + // Flat array representing quadtree nodes up to 16x16 level for 256x256 SB + PART_EVAL_STATUS force_split[VBP_FORCE_SPLIT_NODES] = { PART_EVAL_ALL }; + int avg_64x64; + int max_var_32x32[16]; + int min_var_32x32[16]; + int var_32x32; + int var_64x64; + int min_var_64x64 = INT_MAX; + int max_var_64x64 = 0; + int avg_16x16[16][4]; + int maxvar_16x16[16][4]; + int minvar_16x16[16][4]; + const uint16_t *src_buf; + const uint16_t *dst_buf; + int dst_stride; + bool is_key_frame = frame_is_intra_only(cm); + bool scaled_ref_last = false; + const int is_360p_or_smaller = cm->width * cm->height <= RESOLUTION_360P; + + assert(cm->seq_params.sb_size == BLOCK_64X64 || + cm->seq_params.sb_size == BLOCK_128X128 || + cm->seq_params.sb_size == BLOCK_256X256); + const bool is_small_sb = (cm->seq_params.sb_size == BLOCK_64X64); + const int num_64x64_blocks = (cm->seq_params.sb_size == BLOCK_64X64) ? 1 + : (cm->seq_params.sb_size == BLOCK_128X128) ? 4 + : 16; + + unsigned int y_sad = UINT_MAX; + + int64_t thresholds[6] = { vbp_thresholds[0], vbp_thresholds[1], + vbp_thresholds[2], vbp_thresholds[3], + vbp_thresholds[4], vbp_thresholds[5] }; + + const int qindex = cm->quant_params.base_qindex; + + set_vbp_thresholds(cpi, thresholds, qindex); + + src_buf = x->plane[AVM_PLANE_Y].src.buf; + int src_stride = x->plane[AVM_PLANE_Y].src.stride; + + if (!is_key_frame) { + setup_planes(cpi, x, &y_sad, mi_row, mi_col, is_small_sb, scaled_ref_last); + + MB_MODE_INFO *mi = xd->mi[0]; + // Use reference SB directly for zero mv. + if (mi->mv[0].as_int != 0) { + dst_buf = xd->plane[AVM_PLANE_Y].dst.buf; + dst_stride = xd->plane[AVM_PLANE_Y].dst.stride; + } else { + dst_buf = xd->plane[AVM_PLANE_Y].pre[0].buf; + dst_stride = xd->plane[AVM_PLANE_Y].pre[0].stride; + } + } else { + dst_buf = NULL; + dst_stride = 0; + } + + // TODO(jianj-g, marpan-max): add chroma check/adjustments. + // TODO(jianj-g, marpan-max): check for early exits. + const int num_128x128_blocks = + (cm->seq_params.sb_size == BLOCK_256X256) ? 4 : 1; + VP128x128 *vt; + if (cm->seq_params.sb_size == BLOCK_256X256) { + if (td->vt128x128 == NULL) { + AVM_CHECK_MEM_ERROR( + xd->error_info, td->vt128x128, + avm_malloc(sizeof(*td->vt128x128) * num_128x128_blocks)); + } + vt = td->vt128x128; + } else { + AVM_CHECK_MEM_ERROR(xd->error_info, vt, avm_malloc(sizeof(*vt))); + } + if (td->vt64x64 == NULL) { + AVM_CHECK_MEM_ERROR(xd->error_info, td->vt64x64, + avm_malloc(sizeof(*td->vt64x64) * num_64x64_blocks)); + } + if (cm->seq_params.sb_size == BLOCK_256X256) { + for (int i = 0; i < 4; i++) { + vt[i].split = &td->vt64x64[i * 4]; + } + } else { + vt->split = td->vt64x64; + } + + // Fill in the entire tree of 8x8 (for inter frames) or 4x4 (for key frames) + // variances for splits. + fill_variance_tree_leaves(x, vt, force_split, avg_16x16, maxvar_16x16, + minvar_16x16, thresholds, src_buf, src_stride, + dst_buf, dst_stride, is_key_frame, + cm->seq_params.sb_size); + + const VPartOffsets offsets = get_vpart_offsets(cm->seq_params.sb_size); + const int offset_64x64 = offsets.offset_64x64; + const int offset_32x32 = offsets.offset_32x32; + const int offset_16x16 = offsets.offset_16x16; + + avg_64x64 = 0; + for (int blk64_idx = 0; blk64_idx < num_64x64_blocks; ++blk64_idx) { + VP64x64 *vt64 = (cm->seq_params.sb_size == BLOCK_256X256) + ? &vt[blk64_idx >> 2].split[blk64_idx & 3] + : &vt->split[blk64_idx]; + max_var_32x32[blk64_idx] = 0; + min_var_32x32[blk64_idx] = INT_MAX; + const int blk64_scale_idx = blk64_idx << 2; + for (int lvl1_idx = 0; lvl1_idx < 4; lvl1_idx++) { + const int lvl1_scale_idx = (blk64_scale_idx + lvl1_idx) << 2; + for (int lvl2_idx = 0; lvl2_idx < 4; lvl2_idx++) { + if (!is_key_frame) continue; + VP16x16 *vtemp = &vt64->split[lvl1_idx].split[lvl2_idx]; + for (int lvl3_idx = 0; lvl3_idx < 4; lvl3_idx++) + fill_variance_tree(&vtemp->split[lvl3_idx], BLOCK_8X8); + fill_variance_tree(vtemp, BLOCK_16X16); + // If variance of this 16x16 block is above the threshold, force block + // to split. This also forces a split on the upper levels. + get_variance(&vtemp->part_variances.none); + if (vtemp->part_variances.none.variance > thresholds[4]) { + const int split_index = offset_16x16 + lvl1_scale_idx + lvl2_idx; + force_split[split_index] = PART_EVAL_ONLY_SPLIT; + force_split[offset_32x32 + blk64_scale_idx + lvl1_idx] = + PART_EVAL_ONLY_SPLIT; + force_split[blk64_idx + offset_64x64] = PART_EVAL_ONLY_SPLIT; + force_split[0] = PART_EVAL_ONLY_SPLIT; + } + } + fill_variance_tree(&vt64->split[lvl1_idx], BLOCK_32X32); + // If variance of this 32x32 block is above the threshold, or if its above + // (some threshold of) the average variance over the sub-16x16 blocks, + // then force this block to split. This also forces a split on the upper + // (64x64) level. + if (force_split[offset_32x32 + blk64_scale_idx + lvl1_idx] == + PART_EVAL_ALL) { + get_variance(&vt64->split[lvl1_idx].part_variances.none); + var_32x32 = vt64->split[lvl1_idx].part_variances.none.variance; + max_var_32x32[blk64_idx] = AVMMAX(var_32x32, max_var_32x32[blk64_idx]); + min_var_32x32[blk64_idx] = AVMMIN(var_32x32, min_var_32x32[blk64_idx]); + const int max_min_var_16X16_diff = (maxvar_16x16[blk64_idx][lvl1_idx] - + minvar_16x16[blk64_idx][lvl1_idx]); + + if (var_32x32 > thresholds[3] || + (!is_key_frame && var_32x32 > (thresholds[3] >> 1) && + var_32x32 > (avg_16x16[blk64_idx][lvl1_idx] >> 1))) { + force_split[offset_32x32 + blk64_scale_idx + lvl1_idx] = + PART_EVAL_ONLY_SPLIT; + force_split[blk64_idx + offset_64x64] = PART_EVAL_ONLY_SPLIT; + force_split[0] = PART_EVAL_ONLY_SPLIT; + } else if (!is_key_frame && is_360p_or_smaller && + ((max_min_var_16X16_diff > (thresholds[3] >> 1) && + maxvar_16x16[blk64_idx][lvl1_idx] > thresholds[3]) || + (maxvar_16x16[blk64_idx][lvl1_idx] > (thresholds[3] >> 4) && + maxvar_16x16[blk64_idx][lvl1_idx] > + (minvar_16x16[blk64_idx][lvl1_idx] << 2)))) { + force_split[offset_32x32 + blk64_scale_idx + lvl1_idx] = + PART_EVAL_ONLY_SPLIT; + force_split[blk64_idx + offset_64x64] = PART_EVAL_ONLY_SPLIT; + force_split[0] = PART_EVAL_ONLY_SPLIT; + } + } + } + if (force_split[offset_64x64 + blk64_idx] == PART_EVAL_ALL) { + fill_variance_tree(vt64, BLOCK_64X64); + get_variance(&vt64->part_variances.none); + var_64x64 = vt64->part_variances.none.variance; + max_var_64x64 = AVMMAX(var_64x64, max_var_64x64); + min_var_64x64 = AVMMIN(var_64x64, min_var_64x64); + // If the difference of the max-min variances of sub-blocks or max + // variance of a sub-block is above some threshold of then force this + // block to split. Only checking this for noise level >= medium, if + // encoder is in SVC or if we already forced large blocks. + const int max_min_var_32x32_diff = + max_var_32x32[blk64_idx] - min_var_32x32[blk64_idx]; + const int64_t set_threshold = 3 * (thresholds[2] >> 3); + + if (!is_key_frame && max_min_var_32x32_diff > set_threshold) { + force_split[offset_64x64 + blk64_idx] = PART_EVAL_ONLY_SPLIT; + force_split[0] = PART_EVAL_ONLY_SPLIT; + } + avg_64x64 += var_64x64; + } + if (is_small_sb) force_split[0] = PART_EVAL_ONLY_SPLIT; + } + + if (force_split[0] == PART_EVAL_ALL && + cm->seq_params.sb_size != BLOCK_256X256) { + fill_variance_tree(vt, BLOCK_128X128); + get_variance(&vt->part_variances.none); + const int set_avg_64x64 = (9 * avg_64x64) >> 5; + if (!is_key_frame && vt->part_variances.none.variance > set_avg_64x64) + force_split[0] = PART_EVAL_ONLY_SPLIT; + + if (!is_key_frame && + (max_var_64x64 - min_var_64x64) > 3 * (thresholds[1] >> 3) && + max_var_64x64 > thresholds[1] >> 1) + force_split[0] = PART_EVAL_ONLY_SPLIT; + } + + if (cm->seq_params.sb_size == BLOCK_256X256) { + PART_EVAL_STATUS force_split_128[4] = { PART_EVAL_ALL, PART_EVAL_ALL, + PART_EVAL_ALL, PART_EVAL_ALL }; + for (int blk128_idx = 0; blk128_idx < 4; ++blk128_idx) { + bool all_64_eval_all = true; + for (int s64 = 0; s64 < 4; ++s64) { + int b64 = (blk128_idx << 2) + s64; + if (force_split[offset_64x64 + b64] != PART_EVAL_ALL) { + all_64_eval_all = false; + force_split_128[blk128_idx] = PART_EVAL_ONLY_SPLIT; + break; + } + } + + if (all_64_eval_all) { + fill_variance_tree(&vt[blk128_idx], BLOCK_128X128); + get_variance(&vt[blk128_idx].part_variances.none); + + int avg_64x64_128 = 0; + int max_var_64x64_128 = 0; + int min_var_64x64_128 = INT_MAX; + for (int s64 = 0; s64 < 4; ++s64) { + VP64x64 *vt64 = &vt[blk128_idx].split[s64]; + int v64 = vt64->part_variances.none.variance; + avg_64x64_128 += v64; + max_var_64x64_128 = AVMMAX(v64, max_var_64x64_128); + min_var_64x64_128 = AVMMIN(v64, min_var_64x64_128); + } + const int set_avg_64x64 = (9 * avg_64x64_128) >> 5; + if (!is_key_frame && + vt[blk128_idx].part_variances.none.variance > set_avg_64x64) { + force_split_128[blk128_idx] = PART_EVAL_ONLY_SPLIT; + } + if (!is_key_frame && + (max_var_64x64_128 - min_var_64x64_128) > + 3 * (thresholds[1] >> 3) && + max_var_64x64_128 > thresholds[1] >> 1) { + force_split_128[blk128_idx] = PART_EVAL_ONLY_SPLIT; + } + } + } + + for (int blk128_idx = 0; blk128_idx < 4; ++blk128_idx) { + const int x128_idx = GET_BLK_IDX_X(blk128_idx, 5); + const int y128_idx = GET_BLK_IDX_Y(blk128_idx, 5); + if (mi_col + x128_idx >= tile->mi_col_end || + mi_row + y128_idx >= tile->mi_row_end) + continue; + if (mi_col + x128_idx + 32 <= tile->mi_col_end && + mi_row + y128_idx + 32 <= tile->mi_row_end && + set_vt_partitioning(cpi, xd, tile, &vt[blk128_idx], BLOCK_128X128, + mi_row + y128_idx, mi_col + x128_idx, + thresholds[1], BLOCK_16X16, + force_split_128[blk128_idx])) { + continue; + } + for (int sub64_idx = 0; sub64_idx < 4; ++sub64_idx) { + const int blk64_idx = (blk128_idx << 2) + sub64_idx; + const int x64_idx = x128_idx + GET_BLK_IDX_X(sub64_idx, 4); + const int y64_idx = y128_idx + GET_BLK_IDX_Y(sub64_idx, 4); + VP64x64 *vt64 = &vt[blk128_idx].split[sub64_idx]; + set_vt_partitioning_64x64(cpi, xd, tile, vt64, mi_row, mi_col, x64_idx, + y64_idx, blk64_idx, thresholds, force_split, + offsets); + } + } + } else { + if (is_small_sb || mi_col + 32 > tile->mi_col_end || + mi_row + 32 > tile->mi_row_end || + !set_vt_partitioning(cpi, xd, tile, vt, BLOCK_128X128, mi_row, mi_col, + thresholds[1], BLOCK_16X16, force_split[0])) { + for (int blk64_idx = 0; blk64_idx < num_64x64_blocks; ++blk64_idx) { + const int x64_idx = GET_BLK_IDX_X(blk64_idx, 4); + const int y64_idx = GET_BLK_IDX_Y(blk64_idx, 4); + VP64x64 *vt64 = &vt->split[blk64_idx]; + set_vt_partitioning_64x64(cpi, xd, tile, vt64, mi_row, mi_col, x64_idx, + y64_idx, blk64_idx, thresholds, force_split, + offsets); + } + } + } + if (cm->seq_params.sb_size != BLOCK_256X256) { + avm_free(vt); + } +} diff --git a/av2/encoder/var_based_part.h b/av2/encoder/var_based_part.h new file mode 100644 index 0000000000..43dd97ff6c --- /dev/null +++ b/av2/encoder/var_based_part.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2026, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#ifndef AVM_AV2_ENCODER_VAR_BASED_PART_H_ +#define AVM_AV2_ENCODER_VAR_BASED_PART_H_ + +#include + +#include "config/avm_config.h" +#include "config/avm_dsp_rtcd.h" +#include "config/av2_rtcd.h" + +#include "av2/encoder/encoder.h" + +// Calculate block index x and y from split level and index +#define GET_BLK_IDX_X(idx, level) (((idx) & (0x01)) << (level)) +#define GET_BLK_IDX_Y(idx, level) (((idx) >> (0x01)) << (level)) + +// Maximum number of nodes in a 5-level quadtree flat array for a 256x256 SB: +// 1 (256x256) + 4 (128x128) + 16 (64x64) + 64 (32x32) + 256 (16x16) = 341 +#define VBP_FORCE_SPLIT_NODES 341 + +// Starting array offsets for quadtree levels inside force_split array. +typedef struct { + int offset_64x64; + int offset_32x32; + int offset_16x16; +} VPartOffsets; + +/*!\brief Get starting offsets for 64x64, 32x32, and 16x16 sub-blocks in + * force_split array. + * + * The force_split array is a flat array representing a quadtree decomposition: + * - BLOCK_128X128 SB: + * Root (128x128): 1 block [idx 0] + * 64x64 level: 4 blocks [idx 1..4] (offset_64x64 = 1) + * 32x32 level: 16 blocks [idx 5..20] (offset_32x32 = 1 + 4 = 5) + * 16x16 level: 64 blocks [idx 21..84] (offset_16x16 = 1 + 4 + 16 = 21) + * - BLOCK_256X256 SB: + * Root (256x256): 1 block [idx 0] + * 128x128 level: 4 blocks [idx 1..4] + * 64x64 level: 16 blocks [idx 5..20] (offset_64x64 = 1 + 4 = 5) + * 32x32 level: 64 blocks [idx 21..84] (offset_32x32 = 1 + 4 + 16 = 21) + * 16x16 level: 256 blocks [idx 85..340] (offset_16x16 = 1 + 4 + 16 + 64 = + * 85) + */ +static inline VPartOffsets get_vpart_offsets(BLOCK_SIZE sb_size) { + VPartOffsets offsets; + if (sb_size == BLOCK_256X256) { + offsets.offset_64x64 = 5; + offsets.offset_32x32 = 21; + offsets.offset_16x16 = 85; + } else { + offsets.offset_64x64 = 1; + offsets.offset_32x32 = 5; + offsets.offset_16x16 = 21; + } + return offsets; +} + +#ifdef __cplusplus +extern "C" { +#endif + +/*!\brief Selects superblock partitioning based on down-sampled signal variance. + * + * Chooses the partition structure for a superblock (64x64, 128x128, or 256x256) + * using variance-based threshold evaluation: + * - For keyframes: Computes source block variance from 4x4 down-sampled source + * pixels. + * - For inter-frames: Computes residual variance between source and prediction + * (from closest past reference frame) using 8x8 down-sampled blocks. + * + * Partition selection proceeds top-down using pre-calculated thresholds per + * block level. High-variance sub-blocks force parent nodes to split down to + * 8x8. + * + * \ingroup variance_partition + * \callgraph + * \callergraph + * + * \param[in] cpi Top-level encoder structure + * \param[in] tile Pointer to TileInfo for current tile boundaries + * \param[in] td Pointer to ThreadData + * \param[in] x Pointer to MACROBLOCK + * \param[in] mi_row Row coordinate of the superblock (in MI units) + * \param[in] mi_col Column coordinate of the superblock (in MI + * units) + */ +void av2_choose_var_based_partitioning(AV2_COMP *cpi, + const TileInfo *const tile, + ThreadData *td, MACROBLOCK *x, + int mi_row, int mi_col); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AVM_AV2_ENCODER_VAR_BASED_PART_H_ diff --git a/test/rtc_test.cc b/test/rtc_test.cc index 4e168f8440..66673a3791 100644 --- a/test/rtc_test.cc +++ b/test/rtc_test.cc @@ -103,7 +103,7 @@ class RtcTestLarge : public ::libavm_test::CodecTestWithParam, }; TEST_P(RtcTestLarge, RtcTest) { - ::libavm_test::Y4mVideoSource video_nonsc("niklas_1280_720_30.y4m", 0, 5); + ::libavm_test::Y4mVideoSource video_nonsc("niklas_1280_720_30.y4m", 0, 50); ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); } From 08b90b9e23c69d1a3c4f1ef9f0c91366d15cc3d8 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Mon, 10 Aug 2026 09:46:41 -0700 Subject: [PATCH 133/205] Prune uneven 4A/4B partitions with neighbor block boundaries (#5193) Use the best partitioning boundaries of left / above coding blocks to prune uneven 4way partitions -- by checking boundary alignment. Only prune for inter frames. - Enabled for speed >= 1. - But disabled for resolution <= 270p. Results for RA CTC 33 frames, speed 1: (Anchor: 8d9588497) ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.08% | 0.04% | 0.11% | 0.08% | 97.10% | | A2 | 0.07% | -0.07% | 0.16% | 0.07% | 96.50% | |avg wo b2| 0.07% | 0.09% | 0.06% | 0.07% | 96.75% | +---------+--------+--------+--------+--------+----------+ ``` Note: no changes at speed 4, because uneven 4way partitions are disabled at this speed. Related: refactor a common av2_get_chroma_start_location() function. STATS_CHANGED for speed >= 1. --- av2/common/av2_common_int.h | 16 +++++++ av2/common/av2_loopfilter.c | 31 ++++--------- av2/encoder/partition_search.c | 83 ++++++++++++++++++++++++++++++++++ av2/encoder/speed_features.c | 8 ++++ av2/encoder/speed_features.h | 2 + 5 files changed, 117 insertions(+), 23 deletions(-) diff --git a/av2/common/av2_common_int.h b/av2/common/av2_common_int.h index 6e39442efe..d60934de43 100644 --- a/av2/common/av2_common_int.h +++ b/av2/common/av2_common_int.h @@ -6054,6 +6054,22 @@ static INLINE bool av2_skip_reference_buffer_update( return clear_multiple_insert_in_one && ref_index != first_ref_index; } +// Returns the starting mi location of chroma reference block for the current +// mbmi, by setting `chroma_mi_row_start` and `chroma_mi_col_start`. +static INLINE void av2_get_chroma_start_location(const MB_MODE_INFO *mbmi, + TREE_TYPE tree_type, + int *chroma_mi_row_start, + int *chroma_mi_col_start) { + assert(tree_type == SHARED_PART || tree_type == CHROMA_PART); + if (tree_type == SHARED_PART) { + *chroma_mi_row_start = mbmi->chroma_ref_info.mi_row_chroma_base; + *chroma_mi_col_start = mbmi->chroma_ref_info.mi_col_chroma_base; + } else { + *chroma_mi_row_start = mbmi->chroma_mi_row_start; + *chroma_mi_col_start = mbmi->chroma_mi_col_start; + } +} + #ifdef __cplusplus } // extern "C" #endif diff --git a/av2/common/av2_loopfilter.c b/av2/common/av2_loopfilter.c index edba623d75..036193efb7 100644 --- a/av2/common/av2_loopfilter.c +++ b/av2/common/av2_loopfilter.c @@ -138,22 +138,6 @@ void av2_loop_filter_frame_init(AV2_COMMON *cm, int plane_start, } } -// Returns the starting mi location of chroma reference block for the current -// mbmi, by setting `chroma_mi_row_start` and `chroma_mi_col_start`. -static void get_chroma_start_location(const MB_MODE_INFO *mbmi, - TREE_TYPE tree_type, - int *chroma_mi_row_start, - int *chroma_mi_col_start) { - assert(tree_type == SHARED_PART || tree_type == CHROMA_PART); - if (tree_type == SHARED_PART) { - *chroma_mi_row_start = mbmi->chroma_ref_info.mi_row_chroma_base; - *chroma_mi_col_start = mbmi->chroma_ref_info.mi_col_chroma_base; - } else { - *chroma_mi_row_start = mbmi->chroma_mi_row_start; - *chroma_mi_col_start = mbmi->chroma_mi_col_start; - } -} - // Returns true if we are at the transform boundary. static bool is_tu_edge_helper(TX_SIZE tx_size, EDGE_DIR edge_dir, int relative_row, int relative_col) { @@ -193,7 +177,8 @@ static TX_SIZE get_transform_size(const MACROBLOCKD *const xd, int mi_row_start = mbmi->mi_row_start; int mi_col_start = mbmi->mi_col_start; if (plane != AVM_PLANE_Y) { - get_chroma_start_location(mbmi, tree_type, &mi_row_start, &mi_col_start); + av2_get_chroma_start_location(mbmi, tree_type, &mi_row_start, + &mi_col_start); } *tu_edge = is_tu_edge_helper( tx_size, edge_dir, (mi_row - mi_row_start) >> plane_ptr->subsampling_y, @@ -211,8 +196,8 @@ static TX_SIZE get_transform_size(const MACROBLOCKD *const xd, plane_ptr->subsampling_y); int chroma_mi_row_start; int chroma_mi_col_start; - get_chroma_start_location(mbmi, tree_type, &chroma_mi_row_start, - &chroma_mi_col_start); + av2_get_chroma_start_location(mbmi, tree_type, &chroma_mi_row_start, + &chroma_mi_col_start); *tu_edge = is_tu_edge_helper( tx_size, edge_dir, (mi_row - chroma_mi_row_start) >> plane_ptr->subsampling_y, @@ -329,8 +314,8 @@ static uint32_t get_pu_starting_cooord(const MB_MODE_INFO *const mbmi, } else { int chroma_mi_row_start; int chroma_mi_col_start; - get_chroma_start_location(mbmi, tree_type, &chroma_mi_row_start, - &chroma_mi_col_start); + av2_get_chroma_start_location(mbmi, tree_type, &chroma_mi_row_start, + &chroma_mi_col_start); pu_starting_mi = vert_edge ? chroma_mi_col_start : chroma_mi_row_start; } const uint32_t pu_stating_coord_luma = pu_starting_mi * MI_SIZE; @@ -510,8 +495,8 @@ static int get_remaining_mi_size(const MB_MODE_INFO *mbmi, } else { int mi_row_start_uv; int mi_col_start_uv; - get_chroma_start_location(mbmi, tree_type, &mi_row_start_uv, - &mi_col_start_uv); + av2_get_chroma_start_location(mbmi, tree_type, &mi_row_start_uv, + &mi_col_start_uv); const int mi_pu_start_y = vert_edge ? mi_row_start_uv : mi_col_start_uv; const int scale = vert_edge ? ss_y : ss_x; mi_pu_start = mi_pu_start_y >> scale; diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index f69b6f1a0b..14ead8a96f 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2900,6 +2900,83 @@ static AVM_INLINE void init_allowed_partitions( #endif // CONFIG_COLLECT_PARTITION_STATS } +static AVM_INLINE bool is_same_block_for_tree(const MB_MODE_INFO *m1, + const MB_MODE_INFO *m2, + TREE_TYPE tree_type) { + if (!m1 || !m2) return false; + + if (tree_type == CHROMA_PART) { + int m1_r; + int m1_c; + av2_get_chroma_start_location( + m1, m1->tree_type == SHARED_PART ? SHARED_PART : CHROMA_PART, &m1_r, + &m1_c); + int m2_r; + int m2_c; + av2_get_chroma_start_location( + m2, m2->tree_type == SHARED_PART ? SHARED_PART : CHROMA_PART, &m2_r, + &m2_c); + return m1_r == m2_r && m1_c == m2_c; + } else { + return m1->mi_row_start == m2->mi_row_start && + m1->mi_col_start == m2->mi_col_start; + } +} + +// Prunes uneven 4-way partitions by checking partition boundary alignment with +// neighboring top/left blocks. Neighbor boundaries are detected by checking if +// neighboring top/left MI units share the same block ID. +static AVM_INLINE void prune_4way_partitions_with_neighbor_boundaries( + PartitionSearchState *state, const AV2_COMMON *cm, const MACROBLOCKD *xd, + int mi_row, int mi_col, BLOCK_SIZE bsize) { + // Check left neighbor for horizontal boundaries using mi array + const int mi_height = mi_size_high[bsize]; + const int available_mi_height = + AVMMIN(mi_height, cm->mi_params.mi_rows - mi_row); + if (xd->left_available && mi_height >= 8 && + available_mi_height == mi_height) { + bool left_horz_boundaries[MAX_MIB_SIZE] = { false }; + for (int r = 1; r < available_mi_height; r++) { + const MB_MODE_INFO *m1 = xd->mi[r * xd->mi_stride - 1]; + const MB_MODE_INFO *m2 = xd->mi[(r - 1) * xd->mi_stride - 1]; + if (!is_same_block_for_tree(m1, m2, xd->tree_type)) { + left_horz_boundaries[r] = true; + } + } + // Prune HORZ 4A/4B partitions. + if (!left_horz_boundaries[mi_height / 8] && + !left_horz_boundaries[3 * mi_height / 8] && + !left_horz_boundaries[5 * mi_height / 8] && + !left_horz_boundaries[7 * mi_height / 8]) { + state->prune_partition[PARTITION_HORZ_4A] = true; + state->prune_partition[PARTITION_HORZ_4B] = true; + } + } + + // Check top neighbor for vertical boundaries using mi array + const int mi_width = mi_size_wide[bsize]; + const int available_mi_width = + AVMMIN(mi_width, cm->mi_params.mi_cols - mi_col); + if (xd->up_available && mi_width >= 8 && available_mi_width == mi_width) { + bool top_vert_boundaries[MAX_MIB_SIZE] = { false }; + for (int c = 1; c < available_mi_width; c++) { + const MB_MODE_INFO *m1 = xd->mi[-xd->mi_stride + c]; + const MB_MODE_INFO *m2 = xd->mi[-xd->mi_stride + c - 1]; + if (!is_same_block_for_tree(m1, m2, xd->tree_type)) { + top_vert_boundaries[c] = true; + } + } + // Prune VERT 4A/4B partitions. + if (!top_vert_boundaries[mi_width / 8] && + !top_vert_boundaries[3 * mi_width / 8] && + !top_vert_boundaries[5 * mi_width / 8] && + !top_vert_boundaries[7 * mi_width / 8]) { + state->prune_partition[PARTITION_VERT_4A] = true; + state->prune_partition[PARTITION_VERT_4B] = true; + } + } +} + // Initialize state variables of partition search used in // av2_rd_pick_partition(). static void init_partition_search_state_params( @@ -5346,6 +5423,12 @@ bool av2_rd_pick_partition( av2_set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize, &pc_tree->chroma_ref_info); + if (cpi->sf.part_sf.prune_part_with_neighbor_boundaries && + !x->must_find_valid_partition && !frame_is_intra_only(cm)) { + prune_4way_partitions_with_neighbor_boundaries(&part_search_state, cm, xd, + mi_row, mi_col, bsize); + } + // Save rdmult before it might be changed, so it can be restored later. const int orig_rdmult = x->rdmult; setup_block_rdmult(cpi, x, mi_row, mi_col, bsize, NO_AQ, NULL); diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 0101d766a6..23be62447b 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -754,6 +754,7 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->prune_rect_with_split_depth = 0; part_sf->prune_part_h_with_partition_boundary = 0; part_sf->inter_sdp_fast_method_level = 0; + part_sf->prune_part_with_neighbor_boundaries = 0; #if CONFIG_ML_PART_SPLIT part_sf->prune_split_with_ml = 0; part_sf->prune_none_with_ml = 0; @@ -992,6 +993,7 @@ static AVM_INLINE void set_erp_speed_features_framesize_dependent( const int is_1080p_or_larger = AVMMIN(cm->width, cm->height) >= 1080; const unsigned int erp_pruning_level = cpi->oxcf.part_cfg.erp_pruning_level; const int is_720p_or_lesser = AVMMIN(cm->width, cm->height) <= 720; + const int is_270p_or_lesser = AVMMIN(cm->width, cm->height) <= 270; switch (erp_pruning_level) { case 6: AVM_FALLTHROUGH_INTENDED; @@ -1040,6 +1042,10 @@ static AVM_INLINE void set_erp_speed_features_framesize_dependent( sf->part_sf.remove_qp_restriction_with_ml = 1; } #endif // CONFIG_ML_PART_SPLIT + if (is_270p_or_lesser) { + // For small resolutions, this speed feature has a large coding loss. + sf->part_sf.prune_part_with_neighbor_boundaries = 0; + } } if (cpi->speed >= 2) { @@ -1092,6 +1098,7 @@ static AVM_INLINE void set_erp_speed_features(AV2_COMP *cpi) { sf->part_sf.ext_recur_depth_level = 2; sf->part_sf.simple_motion_search_split = 1; sf->part_sf.simple_motion_search_early_term_none = 1; + sf->part_sf.prune_part_with_neighbor_boundaries = 1; AVM_FALLTHROUGH_INTENDED; case 5: sf->part_sf.prune_part_h_with_partition_boundary = true; @@ -1131,6 +1138,7 @@ static AVM_INLINE void set_erp_speed_features(AV2_COMP *cpi) { // Emulate erp_pruning_level = 6. sf->part_sf.ext_recur_depth_level = 1; sf->part_sf.ml_early_term_after_part_split_level = 2; + sf->part_sf.prune_part_with_neighbor_boundaries = 1; } if (cpi->speed >= 2) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index b6c2d42ce7..e40168e016 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -441,6 +441,8 @@ typedef struct PARTITION_SPEED_FEATURES { // intra coded block, prunes when inter ratio exceeds 50%, and early skips // when current best partitioning is PARTITION_NONE. int inter_sdp_fast_method_level; + // Prune partition types if they don't align with neighbor block boundaries. + int prune_part_with_neighbor_boundaries; #if CONFIG_ML_PART_SPLIT int prune_split_with_ml; int prune_split_ml_level; From 35a42ed5fd6ff83fdaeed215ccdffde59ef9ac7d Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Mon, 10 Aug 2026 09:57:22 -0700 Subject: [PATCH 134/205] Code cleanup: remove partition arg from pick_sb_modes (#5229) This function can only be called with PARTITION_NONE type. --- av2/encoder/partition_search.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 14ead8a96f..d2db5129e8 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -502,7 +502,6 @@ void av2_set_offsets(const AV2_COMP *const cpi, const TileInfo *const tile, * MI_SIZE * \param[in] rd_cost Pointer to structure holding rate and distortion * stats for the current block - * \param[in] partition Partition mode of the parent block * \param[in] cur_region_type Region type of the current block * \param[in] sb_root_partition_info Partition information of the * superblock \param[in] bsize Current block size \param[in] ctx @@ -518,7 +517,7 @@ void av2_set_offsets(const AV2_COMP *const cpi, const TileInfo *const tile, static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, MACROBLOCK *const x, int mi_row, int mi_col, RD_STATS *rd_cost, - PARTITION_TYPE partition, REGION_TYPE cur_region_type, + REGION_TYPE cur_region_type, int sb_root_partition_info, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, RD_STATS best_rd) { if (best_rd.rdcost < 0) { @@ -545,7 +544,7 @@ static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, if (ctx->rd_mode_is_ready) { assert(ctx->mic.sb_type[plane_type] == bsize); - assert(ctx->mic.partition == partition); + assert(ctx->mic.partition == PARTITION_NONE); rd_cost->rate = ctx->rd_stats.rate; rd_cost->dist = ctx->rd_stats.dist; rd_cost->rdcost = ctx->rd_stats.rdcost; @@ -576,7 +575,7 @@ static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, mbmi = xd->mi[0]; mbmi->sb_type[plane_type] = bsize; if (xd->tree_type == SHARED_PART) mbmi->sb_type[PLANE_TYPE_UV] = bsize; - mbmi->partition = partition; + mbmi->partition = PARTITION_NONE; mbmi->chroma_ref_info = ctx->chroma_ref_info; #if CONFIG_RD_DEBUG @@ -2497,9 +2496,8 @@ void av2_rd_use_partition(AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, switch (partition) { case PARTITION_NONE: pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, &last_part_rdc, - PARTITION_NONE, pc_tree->region_type, - pc_tree->sb_root_partition_info, bsize, ctx_none, - invalid_rdc); + pc_tree->region_type, pc_tree->sb_root_partition_info, + bsize, ctx_none, invalid_rdc); break; case PARTITION_HORZ: pc_tree->horizontal[cur_region_type][0] = av2_alloc_pc_tree_node( @@ -3789,7 +3787,7 @@ static void none_partition_search( av2_set_best_mode_cache(x, sms_data->mode_cache); // PARTITION_NONE evaluation and cost update. - pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, this_rdc, PARTITION_NONE, + pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, this_rdc, pc_tree->region_type, pc_tree->sb_root_partition_info, bsize, ctx_none, best_remain_rdcost); From 8690e1825ba9d78fc5489b1940c751cb172573ce Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Fri, 7 Aug 2026 13:34:39 +0530 Subject: [PATCH 135/205] Fix cost calculation in rectangular partition search While adding region type bits to total rate during rectangular partition search, the child block size is used instead of current block size. This patch addresses this. STATS_CHANGED --- av2/encoder/partition_search.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index d2db5129e8..91ec046c1d 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3104,7 +3104,8 @@ static void rd_pick_rect_partition( if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, pc_tree->parent->block_size, parent_partition) && - is_bsize_allowed_for_extended_sdp(bsize, partition_type)) + is_bsize_allowed_for_extended_sdp( + part_search_state->part_blk_params.bsize, partition_type)) sum_rdc->rate += part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, 0); From e54b66f2bb26719c39838a3e6ace233e3bbd752a Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Sun, 9 Aug 2026 23:56:55 +0530 Subject: [PATCH 136/205] Deduplicate boundary scans in extended-partition pruning Extracts is_boundary_bit_set_in_row/is_boundary_bit_set_in_col helpers for the "scan a row/column of the partition boundary bitmap for a bit" pattern repeated ~12 times across prune_part_3_with_partition_boundary and prune_part_4_with_partition_boundary. NO STATS CHANGED --- av2/encoder/partition_search.c | 207 ++++++++++++--------------------- 1 file changed, 75 insertions(+), 132 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 91ec046c1d..9c2928cfaa 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -4203,6 +4203,31 @@ static AVM_INLINE void trace_partition_boundary(bool *partition_boundaries, } } +/*!\brief Whether any cell in the given row of the boundary map has `bit` set. + * + * Scans partition_boundaries[row][col, col + width) for `bit`. + */ +static AVM_INLINE bool is_boundary_bit_set_in_row( + const bool *partition_boundaries, int row, int col, int width, int bit) { + for (int c = 0; c < width; c++) { + if (partition_boundaries[row * MAX_MIB_SIZE + col + c] & bit) return true; + } + return false; +} + +/*!\brief Whether any cell in the given column of the boundary map has `bit` + * set. + * + * Scans partition_boundaries[row, row + height)[col] for `bit`. + */ +static AVM_INLINE bool is_boundary_bit_set_in_col( + const bool *partition_boundaries, int row, int col, int height, int bit) { + for (int r = 0; r < height; r++) { + if (partition_boundaries[(row + r) * MAX_MIB_SIZE + col] & bit) return true; + } + return false; +} + /*!\brief Prunes h partitions using the current best partition boundaries. * * If the H-shaped partitions don't have any overlap with the current best @@ -4217,71 +4242,29 @@ static AVM_INLINE void prune_part_3_with_partition_boundary( const int masked_mi_col = mi_col & MAX_MIB_MASK; const bool *partition_boundaries = part_search_state->partition_boundaries; if (can_search_horz) { - bool keep_horz_3 = false; - for (int col = 0; col < mi_width; col++) { - if (partition_boundaries[(masked_mi_row + mi_height / 4 - 1) * - MAX_MIB_SIZE + - masked_mi_col + col] & - (1 << HORZ)) { - keep_horz_3 = true; - break; - } - } - if (!keep_horz_3) { - for (int col = 0; col < mi_width; col++) { - if (partition_boundaries[(masked_mi_row + 3 * mi_height / 4 - 1) * - MAX_MIB_SIZE + - masked_mi_col + col] & - (1 << HORZ)) { - keep_horz_3 = true; - break; - } - } - } - if (!keep_horz_3) { - for (int row = 0; row < mi_height / 2; row++) { - if (partition_boundaries[(masked_mi_row + mi_height / 4 + row) * - MAX_MIB_SIZE + - masked_mi_col + mi_width / 2 - 1] & - (1 << VERT)) { - keep_horz_3 = true; - break; - } - } - } + const bool keep_horz_3 = + is_boundary_bit_set_in_row(partition_boundaries, + masked_mi_row + mi_height / 4 - 1, + masked_mi_col, mi_width, 1 << HORZ) || + is_boundary_bit_set_in_row(partition_boundaries, + masked_mi_row + 3 * mi_height / 4 - 1, + masked_mi_col, mi_width, 1 << HORZ) || + is_boundary_bit_set_in_col( + partition_boundaries, masked_mi_row + mi_height / 4, + masked_mi_col + mi_width / 2 - 1, mi_height / 2, 1 << VERT); part_search_state->prune_partition[PARTITION_HORZ_3] |= !keep_horz_3; } if (can_search_vert) { - bool keep_vert_3 = false; - for (int row = 0; row < mi_height; row++) { - if (partition_boundaries[(masked_mi_row + row) * MAX_MIB_SIZE + - masked_mi_col + mi_width / 4 - 1] & - (1 << VERT)) { - keep_vert_3 = true; - break; - } - } - if (!keep_vert_3) { - for (int row = 0; row < mi_height; row++) { - if (partition_boundaries[(masked_mi_row + row) * MAX_MIB_SIZE + - masked_mi_col + 3 * mi_width / 4 - 1] & - (1 << VERT)) { - keep_vert_3 = true; - break; - } - } - } - if (!keep_vert_3) { - for (int col = 0; col < mi_width / 2; col++) { - if (partition_boundaries[(masked_mi_row + mi_height / 2 - 1) * - MAX_MIB_SIZE + - masked_mi_col + mi_width / 4 + col] & - (1 << HORZ)) { - keep_vert_3 = true; - break; - } - } - } + const bool keep_vert_3 = + is_boundary_bit_set_in_col(partition_boundaries, masked_mi_row, + masked_mi_col + mi_width / 4 - 1, mi_height, + 1 << VERT) || + is_boundary_bit_set_in_col(partition_boundaries, masked_mi_row, + masked_mi_col + 3 * mi_width / 4 - 1, + mi_height, 1 << VERT) || + is_boundary_bit_set_in_row( + partition_boundaries, masked_mi_row + mi_height / 2 - 1, + masked_mi_col + mi_width / 4, mi_width / 2, 1 << HORZ); part_search_state->prune_partition[PARTITION_VERT_3] |= !keep_vert_3; } } @@ -4299,88 +4282,48 @@ static AVM_INLINE void prune_part_4_with_partition_boundary( const int mi_height = mi_size_high[bsize]; const int masked_mi_row = mi_row & MAX_MIB_MASK; const int masked_mi_col = mi_col & MAX_MIB_MASK; - bool keep_horz_4a = false, keep_horz_4b = false; - bool keep_vert_4a = false, keep_vert_4b = false; if (can_search_horz_4a || can_search_horz_4b) { - for (int col = 0; col < mi_width; col++) { - if (partition_boundaries[(masked_mi_row + mi_height / 8 - 1) * - MAX_MIB_SIZE + - masked_mi_col + col] & - (1 << HORZ)) { - keep_horz_4a = true; - keep_horz_4b = true; - break; - } - if (partition_boundaries[(masked_mi_row + 7 * mi_height / 8 - 1) * - MAX_MIB_SIZE + - masked_mi_col + col] & - (1 << HORZ)) { - keep_horz_4a = true; - keep_horz_4b = true; - break; - } - } + const bool keep_horz_4 = + is_boundary_bit_set_in_row(partition_boundaries, + masked_mi_row + mi_height / 8 - 1, + masked_mi_col, mi_width, 1 << HORZ) || + is_boundary_bit_set_in_row(partition_boundaries, + masked_mi_row + 7 * mi_height / 8 - 1, + masked_mi_col, mi_width, 1 << HORZ); + bool keep_horz_4a = keep_horz_4; + bool keep_horz_4b = keep_horz_4; if (can_search_horz_4a && !keep_horz_4a) { - for (int col = 0; col < mi_width; col++) { - if (partition_boundaries[(masked_mi_row + 3 * mi_height / 8 - 1) * - MAX_MIB_SIZE + - masked_mi_col + col] & - (1 << HORZ)) { - keep_horz_4a = true; - break; - } - } + keep_horz_4a = is_boundary_bit_set_in_row( + partition_boundaries, masked_mi_row + 3 * mi_height / 8 - 1, + masked_mi_col, mi_width, 1 << HORZ); } if (can_search_horz_4b && !keep_horz_4b) { - for (int col = 0; col < mi_width; col++) { - if (partition_boundaries[(masked_mi_row + 5 * mi_height / 8 - 1) * - MAX_MIB_SIZE + - masked_mi_col + col] & - (1 << HORZ)) { - keep_horz_4b = true; - break; - } - } + keep_horz_4b = is_boundary_bit_set_in_row( + partition_boundaries, masked_mi_row + 5 * mi_height / 8 - 1, + masked_mi_col, mi_width, 1 << HORZ); } part_search_state->prune_partition[PARTITION_HORZ_4A] |= !keep_horz_4a; part_search_state->prune_partition[PARTITION_HORZ_4B] |= !keep_horz_4b; } if (can_search_vert_4a || can_search_vert_4b) { - for (int row = 0; row < mi_height; row++) { - if (partition_boundaries[(masked_mi_row + row) * MAX_MIB_SIZE + - masked_mi_col + mi_width / 8 - 1] & - (1 << VERT)) { - keep_vert_4a = true; - keep_vert_4b = true; - break; - } - if (partition_boundaries[(masked_mi_row + row) * MAX_MIB_SIZE + - masked_mi_col + 7 * mi_width / 8 - 1] & - (1 << VERT)) { - keep_vert_4a = true; - keep_vert_4b = true; - break; - } - } + const bool keep_vert_4 = + is_boundary_bit_set_in_col(partition_boundaries, masked_mi_row, + masked_mi_col + mi_width / 8 - 1, mi_height, + 1 << VERT) || + is_boundary_bit_set_in_col(partition_boundaries, masked_mi_row, + masked_mi_col + 7 * mi_width / 8 - 1, + mi_height, 1 << VERT); + bool keep_vert_4a = keep_vert_4; + bool keep_vert_4b = keep_vert_4; if (can_search_vert_4a && !keep_vert_4a) { - for (int row = 0; row < mi_height; row++) { - if (partition_boundaries[(masked_mi_row + row) * MAX_MIB_SIZE + - masked_mi_col + 3 * mi_width / 8 - 1] & - (1 << VERT)) { - keep_vert_4a = true; - break; - } - } + keep_vert_4a = is_boundary_bit_set_in_col( + partition_boundaries, masked_mi_row, + masked_mi_col + 3 * mi_width / 8 - 1, mi_height, 1 << VERT); } if (can_search_vert_4b && !keep_vert_4b) { - for (int row = 0; row < mi_height; row++) { - if (partition_boundaries[(masked_mi_row + row) * MAX_MIB_SIZE + - masked_mi_col + 5 * mi_width / 8 - 1] & - (1 << VERT)) { - keep_vert_4b = true; - break; - } - } + keep_vert_4b = is_boundary_bit_set_in_col( + partition_boundaries, masked_mi_row, + masked_mi_col + 5 * mi_width / 8 - 1, mi_height, 1 << VERT); } part_search_state->prune_partition[PARTITION_VERT_4A] |= !keep_vert_4a; part_search_state->prune_partition[PARTITION_VERT_4B] |= !keep_vert_4b; From e3c4178d9be184e4034c88b593c740dbd653b4e1 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Tue, 4 Aug 2026 14:35:45 +0530 Subject: [PATCH 137/205] Refactor rd_try_subblock_new for reuse in partition search - Relocate shared RDO_PICK_SB_ARGS / rd_try_subblock_partition helper for reuse across partition search functions. - Use blk_params pointer instead of copying the struct. - abstract ext partitions recursion depth compute to a function. - fix typo in stats code NO STATS CHANGED --- av2/encoder/partition_search.c | 489 +++++++++++++++++---------------- 1 file changed, 256 insertions(+), 233 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 9c2928cfaa..021ff029eb 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2738,7 +2738,7 @@ static INLINE void end_partition_block_timer( avm_usec_timer_mark(&part_timing_stats->timer); const int64_t time = avm_usec_timer_elapsed(&part_timing_stats->timer); part_timing_stats->partition_times[partition_type] += time; - part_timing_stats->partition_times[partition_type] = rdcost; + part_timing_stats->partition_rdcost[partition_type] = rdcost; part_timing_stats->timer_is_on = 0; } } @@ -3014,8 +3014,8 @@ static void init_partition_search_state_params( blk_params->subsize = get_partition_subsize(bsize, PARTITION_SPLIT); // Chroma subsampling. - part_search_state->ss_x = x->e_mbd.plane[1].subsampling_x; - part_search_state->ss_y = x->e_mbd.plane[1].subsampling_y; + part_search_state->ss_x = xd->plane[AVM_PLANE_U].subsampling_x; + part_search_state->ss_y = xd->plane[AVM_PLANE_U].subsampling_y; // Update intra partitioning related info. part_search_state->intra_part_info = &x->part_search_info; @@ -3080,6 +3080,95 @@ static void init_partition_search_state_params( partition_allowed); } +#if CONFIG_ML_PART_SPLIT +enum { PRUNE_OTHER = 0, PRUNE_VERT = 1, PRUNE_HORZ = 2, MAX_PRUNE_TYPES = 3 }; +#endif + +/*!\brief Stores sub-block specific arguments that are passed to + * av2_rd_pick_partition() in the search for partition. + */ +typedef struct RDO_PICK_SB_ARGS { + /*!\brief The encoder side partition tree. */ + PC_TREE *pc_tree; + + /*!\brief The luma partition tree. Used by SDP on chroma planes. */ + const PARTITION_TREE *ptree_luma; + + /*!\brief A "template" that the function will follow to skip the partition + * selection process. */ + const PARTITION_TREE *template_tree; + + /*!\brief The row coordinate of current block in units of mi. */ + int mi_row; + + /*!\brief The col coordinate of current block in units of mi. */ + int mi_col; + + /*!\brief The block_size of the current block. */ + BLOCK_SIZE bsize; + + /*!\brief The partition type used to get the current block. */ + PARTITION_TYPE parent_partition; +} RDO_PICK_SB_ARGS; + +/*!\brief Try searching for an encoding for the given subblock. + * + * Returns zero if the rdcost is already too high (to tell the caller not to + * bother searching for encodings of further subblocks). + */ +static AVM_INLINE int rd_try_subblock_partition( + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, + TokenExtra **tp, RDO_PICK_SB_ARGS *rdo_args, RD_STATS *this_rdc, + RD_STATS *sum_rdc, RD_STATS best_rdcost, int64_t *none_rd, + int max_recursion_depth, SB_MULTI_PASS_MODE multi_pass_mode, + RD_RECT_PART_WIN_INFO *rect_part_win_info, bool *skippable +#if CONFIG_ML_PART_SPLIT + , + int force_prune_flags[MAX_PRUNE_TYPES] +#endif // CONFIG_ML_PART_SPLIT +) { + MACROBLOCK *const x = &td->mb; + const int mi_row = rdo_args->mi_row; + const int mi_col = rdo_args->mi_col; + const BLOCK_SIZE bsize = rdo_args->bsize; + + const int orig_mult = x->rdmult; + setup_block_rdmult(cpi, x, mi_row, mi_col, bsize, NO_AQ, NULL); + av2_rd_cost_update(x->rdmult, &best_rdcost); + + RD_STATS rdcost_remaining; + av2_rd_stats_subtraction(x->rdmult, &best_rdcost, sum_rdc, &rdcost_remaining); + + av2_init_rd_stats(this_rdc); + if (!av2_rd_pick_partition(cpi, td, tile_data, tp, mi_row, mi_col, bsize, + rdo_args->parent_partition, this_rdc, + rdcost_remaining, rdo_args->pc_tree, + rdo_args->ptree_luma, rdo_args->template_tree, + max_recursion_depth, NULL, none_rd, + multi_pass_mode, rect_part_win_info +#if CONFIG_ML_PART_SPLIT + , + force_prune_flags +#endif // CONFIG_ML_PART_SPLIT + )) { + av2_invalid_rd_stats(this_rdc); + av2_invalid_rd_stats(sum_rdc); + x->rdmult = orig_mult; + return 0; + } + if (this_rdc->rate == INT_MAX) { + *skippable = false; + sum_rdc->rdcost = INT64_MAX; + } else { + *skippable &= rdo_args->pc_tree->skippable; + sum_rdc->rate += this_rdc->rate; + sum_rdc->dist += this_rdc->dist; + av2_rd_cost_update(x->rdmult, sum_rdc); + } + x->rdmult = orig_mult; + return sum_rdc->rdcost < best_rdcost.rdcost; +} + static const int rect_partition_type[NUM_RECT_PARTS] = { PARTITION_HORZ, PARTITION_VERT }; static void rd_pick_rect_partition( @@ -3202,15 +3291,15 @@ typedef int (*active_edge_info)(const AV2_COMP *cpi, int mi_col, int mi_step); static AVM_INLINE int is_rect_part_allowed( const AV2_COMP *cpi, PartitionSearchState *part_search_state, active_edge_info *active_edge, RECT_PART_TYPE rect_part, const int mi_pos) { - PartitionBlkParams blk_params = part_search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const int mi_step = - (rect_part == HORZ) ? blk_params.mi_step_h : blk_params.mi_step_w; + (rect_part == HORZ) ? blk_params->mi_step_h : blk_params->mi_step_w; const PARTITION_TYPE partition_type = rect_partition_type[rect_part]; const int is_part_allowed = (!part_search_state->terminate_partition_search && part_search_state->partition_allowed[partition_type] && !part_search_state->prune_partition[partition_type] && - is_partition_valid(blk_params.bsize, partition_type) && + is_partition_valid(blk_params->bsize, partition_type) && (part_search_state->do_rectangular_split || active_edge[rect_part](cpi, mi_pos, mi_step))); return is_part_allowed; @@ -3258,7 +3347,7 @@ static void rectangular_partition_search( #endif // CONFIG_ML_PART_SPLIT ) { const AV2_COMMON *const cm = &cpi->common; - PartitionBlkParams blk_params = part_search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; RD_STATS *sum_rdc = &part_search_state->sum_rdc; MACROBLOCKD *xd = &x->e_mbd; @@ -3274,10 +3363,10 @@ static void rectangular_partition_search( // mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][1]: mi_col postion of // HORZ and VERT partition types. const int mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][2] = { - { { blk_params.mi_row, blk_params.mi_col }, - { blk_params.mi_row_edge, blk_params.mi_col } }, - { { blk_params.mi_row, blk_params.mi_col }, - { blk_params.mi_row, blk_params.mi_col_edge } } + { { blk_params->mi_row, blk_params->mi_col }, + { blk_params->mi_row_edge, blk_params->mi_col } }, + { { blk_params->mi_row, blk_params->mi_col }, + { blk_params->mi_row, blk_params->mi_col_edge } } }; // Initialize active edge_type function pointer @@ -3286,14 +3375,14 @@ static void rectangular_partition_search( av2_active_v_edge }; // Indicates edge blocks for HORZ and VERT partition types. - const int is_not_edge_block[NUM_RECT_PARTS] = { blk_params.has_rows, - blk_params.has_cols }; + const int is_not_edge_block[NUM_RECT_PARTS] = { blk_params->has_rows, + blk_params->has_cols }; const CommonModeInfoParams *const mi_params = &cpi->common.mi_params; - const BLOCK_SIZE bsize = blk_params.bsize; + const BLOCK_SIZE bsize = blk_params->bsize; const bool is_whole_block_inside = - (blk_params.mi_row + mi_size_high[bsize] < mi_params->mi_rows) && - (blk_params.mi_col + mi_size_wide[bsize] < mi_params->mi_cols); + (blk_params->mi_row + mi_size_high[bsize] < mi_params->mi_rows) && + (blk_params->mi_col + mi_size_wide[bsize] < mi_params->mi_cols); const bool try_prune_with_ml = cpi->sf.part_sf.prune_rect_with_ml && !frame_is_intra_only(cm) && part_search_state->forced_partition == PARTITION_INVALID && @@ -3331,8 +3420,8 @@ static void rectangular_partition_search( // Sub-partition idx. const PARTITION_TYPE partition_type = rect_partition_type[i]; - blk_params.subsize = - get_partition_subsize(blk_params.bsize, partition_type); + const BLOCK_SIZE subsize = + get_partition_subsize(blk_params->bsize, partition_type); const int part_hv_rate = part_search_state->partition_cost[partition_type]; if (part_hv_rate == INT_MAX || RDCOST(x->rdmult, part_hv_rate, 0) >= best_rdc->rdcost) { @@ -3357,10 +3446,10 @@ static void rectangular_partition_search( } sub_tree[0] = av2_alloc_pc_tree_node( xd->tree_type, mi_pos_rect[i][0][0], mi_pos_rect[i][0][1], cm->sb_size, - blk_params.subsize, pc_tree, partition_type, 0, 0, ss_x, ss_y); + subsize, pc_tree, partition_type, 0, 0, ss_x, ss_y); sub_tree[1] = av2_alloc_pc_tree_node( xd->tree_type, mi_pos_rect[i][1][0], mi_pos_rect[i][1][1], cm->sb_size, - blk_params.subsize, pc_tree, partition_type, 1, 1, ss_x, ss_y); + subsize, pc_tree, partition_type, 1, 1, ss_x, ss_y); bool both_blocks_skippable = true; CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_temp = @@ -3386,7 +3475,7 @@ static void rectangular_partition_search( #endif // CONFIG_COLLECT_PARTITION_STATS rd_pick_rect_partition( cpi, td, tile_data, tp, x, pc_tree, part_search_state, best_rdc, i, - mi_pos_rect, blk_params.subsize, is_not_edge_block, multi_pass_mode, + mi_pos_rect, subsize, is_not_edge_block, multi_pass_mode, track_ptree_luma ? ptree_luma : NULL, template_tree, &both_blocks_skippable, parent_partition, max_recursion_depth #if CONFIG_ML_PART_SPLIT @@ -3415,8 +3504,8 @@ static void rectangular_partition_search( rect_part_win_info->rect_part_win[i] = false; } restore_level_banks(&x->e_mbd, level_banks); - av2_restore_context(cm, x, x_ctx, blk_params.mi_row, blk_params.mi_col, - blk_params.bsize, av2_num_planes(cm)); + av2_restore_context(cm, x, x_ctx, blk_params->mi_row, blk_params->mi_col, + blk_params->bsize, av2_num_planes(cm)); if (sum_rdc->rdcost < INT64_MAX && both_blocks_skippable && !frame_is_intra_only(cm)) { const int right_shift = @@ -3444,8 +3533,9 @@ static void rectangular_partition_search( static AVM_INLINE void set_part_none_allowed_flag( TREE_TYPE tree_type, int sdp_inter_chroma_flag, PartitionSearchState *part_search_state) { - PartitionBlkParams blk_params = part_search_state->part_blk_params; - if (tree_type == CHROMA_PART && blk_params.bsize == BLOCK_8X8) { + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; + + if (tree_type == CHROMA_PART && blk_params->bsize == BLOCK_8X8) { part_search_state->partition_allowed[PARTITION_NONE] = true; return; } @@ -3453,8 +3543,8 @@ static AVM_INLINE void set_part_none_allowed_flag( part_search_state->partition_allowed[PARTITION_NONE] = true; return; } - if (is_bsize_geq(blk_params.min_partition_size, blk_params.bsize) && - blk_params.has_rows && blk_params.has_cols) + if (is_bsize_geq(blk_params->min_partition_size, blk_params->bsize) && + blk_params->has_rows && blk_params->has_cols) part_search_state->partition_allowed[PARTITION_NONE] = true; } @@ -3465,22 +3555,25 @@ static void set_none_partition_params(const AV2_COMMON *const cm, PartitionSearchState *part_search_state, RD_STATS *best_remain_rdcost, RD_STATS *best_rdc, int *pt_cost) { - PartitionBlkParams blk_params = part_search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; RD_STATS partition_rdcost; + // Set PARTITION_NONE context. if (is_inter_sdp_chroma(cm, pc_tree->region_type, x->e_mbd.tree_type)) { if (pc_tree->none_chroma == NULL) { - pc_tree->none_chroma = av2_alloc_pmc( - cm, x->e_mbd.tree_type, blk_params.mi_row, blk_params.mi_col, - blk_params.bsize, pc_tree, PARTITION_NONE, 0, part_search_state->ss_x, - part_search_state->ss_y, &td->shared_coeff_buf); + pc_tree->none_chroma = + av2_alloc_pmc(cm, x->e_mbd.tree_type, blk_params->mi_row, + blk_params->mi_col, blk_params->bsize, pc_tree, + PARTITION_NONE, 0, part_search_state->ss_x, + part_search_state->ss_y, &td->shared_coeff_buf); } } else { if (pc_tree->none[pc_tree->region_type] == NULL) { - pc_tree->none[pc_tree->region_type] = av2_alloc_pmc( - cm, x->e_mbd.tree_type, blk_params.mi_row, blk_params.mi_col, - blk_params.bsize, pc_tree, PARTITION_NONE, 0, part_search_state->ss_x, - part_search_state->ss_y, &td->shared_coeff_buf); + pc_tree->none[pc_tree->region_type] = + av2_alloc_pmc(cm, x->e_mbd.tree_type, blk_params->mi_row, + blk_params->mi_col, blk_params->bsize, pc_tree, + PARTITION_NONE, 0, part_search_state->ss_x, + part_search_state->ss_y, &td->shared_coeff_buf); } } @@ -3511,16 +3604,16 @@ static void prune_partitions_after_none(AV2_COMP *const cpi, MACROBLOCK *x, unsigned int *pb_source_variance) { const AV2_COMMON *const cm = &cpi->common; MACROBLOCKD *const xd = &x->e_mbd; - PartitionBlkParams blk_params = part_search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const CommonModeInfoParams *const mi_params = &cm->mi_params; RD_STATS *this_rdc = &part_search_state->this_rdc; - const BLOCK_SIZE bsize = blk_params.bsize; + const BLOCK_SIZE bsize = blk_params->bsize; assert(bsize < BLOCK_SIZES_ALL); (void)sms_tree; if (!frame_is_intra_only(cm) && part_search_state->do_rectangular_split && - !x->e_mbd.lossless[xd->mi[0]->segment_id] && ctx_none->skippable) { + !xd->lossless[xd->mi[0]->segment_id] && ctx_none->skippable) { const int use_ml_based_breakout = bsize <= cpi->sf.part_sf.use_square_partition_only_threshold && is_square_block(bsize) && bsize > BLOCK_4X4 && xd->bd == 8; @@ -3561,18 +3654,18 @@ static void prune_partitions_after_none(AV2_COMP *const cpi, MACROBLOCK *x, bool is_early_term_allowed = cpi->sf.part_sf.simple_motion_search_early_term_none && !frame_is_intra_only(cm) && bsize >= BLOCK_16X16 && - blk_params.mi_row_edge < mi_params->mi_rows && - blk_params.mi_col_edge < mi_params->mi_cols && + blk_params->mi_row_edge < mi_params->mi_rows && + blk_params->mi_col_edge < mi_params->mi_cols && this_rdc->rdcost < INT64_MAX && this_rdc->rdcost >= 0 && this_rdc->rate < INT_MAX && this_rdc->rate >= 0; is_early_term_allowed &= part_search_state->do_rectangular_split && sms_tree; if (is_early_term_allowed) { av2_simple_motion_search_early_term_none( - cpi, x, sms_tree, blk_params.mi_row, blk_params.mi_col, bsize, this_rdc, - &part_search_state->terminate_partition_search); + cpi, x, sms_tree, blk_params->mi_row, blk_params->mi_col, bsize, + this_rdc, &part_search_state->terminate_partition_search); } // force early terminate after successful none in not active - if ((!bru_is_sb_active(cm, blk_params.mi_col, blk_params.mi_row)) || + if ((!bru_is_sb_active(cm, blk_params->mi_col, blk_params->mi_row)) || cm->bridge_frame_info.is_bridge_frame) { part_search_state->terminate_partition_search = true; part_search_state->do_rectangular_split = false; @@ -3704,11 +3797,11 @@ static void none_partition_search( unsigned int *pb_source_variance, int64_t *none_rd, int64_t *part_none_rd, LevelBanksRDO *level_banks, const PARTITION_TREE *ptree_luma) { const AV2_COMMON *const cm = &cpi->common; - PartitionBlkParams blk_params = part_search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; RD_STATS *this_rdc = &part_search_state->this_rdc; - const int mi_row = blk_params.mi_row; - const int mi_col = blk_params.mi_col; - const BLOCK_SIZE bsize = blk_params.bsize; + const int mi_row = blk_params->mi_row; + const int mi_col = blk_params->mi_col; + const BLOCK_SIZE bsize = blk_params->bsize; assert(bsize < BLOCK_SIZES_ALL); // Skip when the aspect ratio is invalid. @@ -3906,11 +3999,11 @@ static void split_partition_search( LevelBanksRDO *level_banks, const PARTITION_TREE *ptree_luma, const PARTITION_TREE *template_tree, int max_recursion_depth) { const AV2_COMMON *const cm = &cpi->common; - PartitionBlkParams blk_params = part_search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const CommonModeInfoParams *const mi_params = &cm->mi_params; - const int mi_row = blk_params.mi_row; - const int mi_col = blk_params.mi_col; - const BLOCK_SIZE bsize = blk_params.bsize; + const int mi_row = blk_params->mi_row; + const int mi_col = blk_params->mi_col; + const BLOCK_SIZE bsize = blk_params->bsize; assert(bsize < BLOCK_SIZES_ALL); RD_STATS sum_rdc = part_search_state->sum_rdc; const BLOCK_SIZE subsize = get_partition_subsize(bsize, PARTITION_SPLIT); @@ -3965,8 +4058,8 @@ static void split_partition_search( // Recursive partition search on 4 sub-blocks. for (idx = 0; idx < SUB_PARTITIONS_SPLIT && sum_rdc.rdcost < best_rdc->rdcost; ++idx) { - const int x_idx = (idx & 1) * blk_params.mi_step; - const int y_idx = (idx >> 1) * blk_params.mi_step; + const int x_idx = (idx & 1) * blk_params->mi_step; + const int y_idx = (idx >> 1) * blk_params->mi_step; if (mi_row + y_idx >= mi_params->mi_rows || mi_col + x_idx >= mi_params->mi_cols) { @@ -4062,25 +4155,6 @@ static void split_partition_search( } } -/*!\brief Stores some data used by rd_try_subblock_new to do rdopt. */ -typedef struct SUBBLOCK_RDO_DATA { - /*!\brief The encoder side partition tree. */ - PC_TREE *pc_tree; - /*!\brief The luma partition tree. Used by SDP on chroma planes. */ - const PARTITION_TREE *ptree_luma; - /*!\brief A "template" that the function will follow to skip the partition - * selection process. */ - const PARTITION_TREE *template_tree; - /*!\brief The row coordinate of current block in units of mi. */ - int mi_row; - /*!\brief The col coordinate of current block in units of mi. */ - int mi_col; - /*!\brief The block_size of the current block. */ - BLOCK_SIZE bsize; - /*!\brief The partition type used to get the current block. */ - PARTITION_TYPE partition; -} SUBBLOCK_RDO_DATA; - /*!\brief Whether the current partition node uses horizontal type partitions. */ static AVM_INLINE bool node_uses_horz(const PC_TREE *pc_tree) { assert(pc_tree); @@ -4099,67 +4173,6 @@ static AVM_INLINE bool node_uses_vert(const PC_TREE *pc_tree) { pc_tree->partitioning == PARTITION_VERT_3; } -/*!\brief Try searching for an encoding for the given subblock. - * - * Returns zero if the rdcost is already too high (to tell the caller not to - * bother searching for encodings of further subblocks). - * */ -static int rd_try_subblock_new(AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, - SUBBLOCK_RDO_DATA *rdo_data, - RD_STATS best_rdcost, RD_STATS *sum_rdc, - SB_MULTI_PASS_MODE multi_pass_mode, - bool *skippable, int max_recursion_depth) { - MACROBLOCK *const x = &td->mb; - const int orig_mult = x->rdmult; - const int mi_row = rdo_data->mi_row; - const int mi_col = rdo_data->mi_col; - const BLOCK_SIZE bsize = rdo_data->bsize; - - setup_block_rdmult(cpi, x, mi_row, mi_col, bsize, NO_AQ, NULL); - - av2_rd_cost_update(x->rdmult, &best_rdcost); - - RD_STATS rdcost_remaining; - av2_rd_stats_subtraction(x->rdmult, &best_rdcost, sum_rdc, &rdcost_remaining); - RD_STATS this_rdc; - -#if CONFIG_ML_PART_SPLIT - int force_prune_flags[3] = { 0, 0, 0 }; -#endif // CONFIG_ML_PART_SPLIT - if (!av2_rd_pick_partition(cpi, td, tile_data, tp, mi_row, mi_col, bsize, - rdo_data->partition, &this_rdc, rdcost_remaining, - rdo_data->pc_tree, rdo_data->ptree_luma, - rdo_data->template_tree, max_recursion_depth, NULL, - NULL, multi_pass_mode, NULL -#if CONFIG_ML_PART_SPLIT - , - force_prune_flags -#endif // CONFIG_ML_PART_SPLIT - )) { - av2_invalid_rd_stats(sum_rdc); - return 0; - } - - if (this_rdc.rate == INT_MAX) { - *skippable = false; - sum_rdc->rdcost = INT64_MAX; - } else { - *skippable &= rdo_data->pc_tree->skippable; - sum_rdc->rate += this_rdc.rate; - sum_rdc->dist += this_rdc.dist; - av2_rd_cost_update(x->rdmult, sum_rdc); - } - - if (sum_rdc->rdcost >= best_rdcost.rdcost) { - x->rdmult = orig_mult; - return 0; - } - - x->rdmult = orig_mult; - return 1; -} - /*!\brief Trace out the partition boundaries using the structure in pc_tree. * * The results are stored in partition_boundaries. The array @@ -4338,12 +4351,12 @@ static AVM_INLINE void prune_ext_partitions_3way( const AV2_COMMON *const cm = &cpi->common; const PARTITION_SPEED_FEATURES *part_sf = &cpi->sf.part_sf; const PARTITION_TYPE forced_partition = part_search_state->forced_partition; + REGION_TYPE cur_region_type = pc_tree->region_type; + if (part_search_state->forced_partition != PARTITION_INVALID) { return; } - REGION_TYPE cur_region_type = pc_tree->region_type; - // Prune horz 3 with speed features if (part_search_state->partition_allowed[PARTITION_HORZ_3] && !frame_is_intra_only(cm) && forced_partition != PARTITION_HORZ_3) { @@ -4573,7 +4586,6 @@ static AVM_INLINE void prune_ext_partitions_4way( const AV2_COMMON *const cm = &cpi->common; const PARTITION_SPEED_FEATURES *part_sf = &cpi->sf.part_sf; const PARTITION_TYPE forced_partition = part_search_state->forced_partition; - const int cur_region_type = pc_tree->region_type; // Prune HORZ 4A with speed features @@ -4803,14 +4815,12 @@ static AVM_INLINE void prune_ext_partitions_4way( /*!\brief Performs rdopt on extended partitions */ static void search_extended_partition( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - const PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, - SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition, - PARTITION_TYPE partition_type) { + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, + TokenExtra **tp, RD_STATS *best_rdc, PC_TREE *pc_tree, + const PARTITION_TREE *ptree_luma, const PARTITION_TREE *template_tree, + RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, PartitionSearchState *search_state, + LevelBanksRDO *level_banks, SB_MULTI_PASS_MODE multi_pass_mode, + int max_recursion_depth, PARTITION_TYPE partition_type) { const AV2_COMMON *const cm = &cpi->common; MACROBLOCK *const x = &td->mb; const int num_planes = av2_num_planes(cm); @@ -4824,12 +4834,11 @@ static void search_extended_partition( assert(partition_type >= PARTITION_HORZ_3 && partition_type <= PARTITION_VERT_4B); - if (is_part_pruned_by_forced_partition(part_search_state, partition_type)) - return; + if (is_part_pruned_by_forced_partition(search_state, partition_type)) return; if (search_state->terminate_partition_search) return; if (!is_partition_valid(bsize, partition_type)) return; - if (!part_search_state->partition_allowed[partition_type] || - part_search_state->prune_partition[partition_type]) + if (!search_state->partition_allowed[partition_type] || + search_state->prune_partition[partition_type]) return; const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); @@ -4870,8 +4879,7 @@ static void search_extended_partition( pc_tree->parent->block_size, pc_tree->parent->partitioning) && is_bsize_allowed_for_extended_sdp(bsize, partition_type)) - sum_rdc.rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; + sum_rdc.rate += search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); int num_sub_parts = 0; @@ -4884,6 +4892,8 @@ static void search_extended_partition( get_partition_subblock_layout(partition_type, bsize, mi_row, mi_col, subblock_sizes, mi_rows, mi_cols); + const bool is_cfl_allowed_for_this_chroma_partition = + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize); for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { if (child_nodes[sub_idx]) { av2_free_pc_tree_recursive(child_nodes[sub_idx], num_planes, 0, 0); @@ -4898,6 +4908,12 @@ static void search_extended_partition( pc_tree->is_cfl_allowed_for_this_chroma | is_cfl_allowed_for_this_chroma_partition; } + + const bool track_ptree_luma = + is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); +#if CONFIG_ML_PART_SPLIT + int force_prune_flags[MAX_PRUNE_TYPES] = { 0 }; +#endif // CONFIG_ML_PART_SPLIT bool skippable = true; for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { const int this_mi_row = mi_rows[sub_idx]; @@ -4910,18 +4926,25 @@ static void search_extended_partition( continue; } - SUBBLOCK_RDO_DATA rdo_data = { + RDO_PICK_SB_ARGS rdo_args = { child_nodes[sub_idx], - get_partition_subtree_const(ptree_luma, sub_idx), + track_ptree_luma ? get_partition_subtree_const(ptree_luma, sub_idx) + : NULL, get_partition_subtree_const(template_tree, sub_idx), this_mi_row, this_mi_col, subblock_sizes[sub_idx], partition_type }; - if (!rd_try_subblock_new(cpi, td, tile_data, tp, &rdo_data, *best_rdc, - &sum_rdc, multi_pass_mode, &skippable, - max_recursion_depth)) { + if (!rd_try_subblock_partition(cpi, td, tile_data, tp, &rdo_args, + &search_state->this_rdc, &sum_rdc, *best_rdc, + NULL, max_recursion_depth, multi_pass_mode, + NULL, &skippable +#if CONFIG_ML_PART_SPLIT + , + force_prune_flags +#endif + )) { av2_invalid_rd_stats(&sum_rdc); break; } @@ -5117,23 +5140,30 @@ static AVM_INLINE bool is_intra_child_of_mixed_region(const PC_TREE *pc_tree) { } static AVM_INLINE int get_ext_partitions_recur_depth( - const PARTITION_SPEED_FEATURES *const part_sf, BLOCK_SIZE bsize) { + const PARTITION_SPEED_FEATURES *const part_sf, BLOCK_SIZE bsize, + int max_recursion_depth, bool uneven_4way) { + const uint16_t bw = block_size_wide[bsize]; + const uint16_t bh = block_size_high[bsize]; const int level = part_sf->ext_recur_depth_level; + int recur_depth_val; if (level == 0) { - return INT_MAX; + recur_depth_val = INT_MAX; } else if (level == 1) { - const uint16_t bw = block_size_wide[bsize]; - const uint16_t bh = block_size_high[bsize]; - return (bw * bh) > 1024 ? 2 : INT_MAX; + recur_depth_val = (bw * bh) > 1024 ? 2 : INT_MAX; } else { assert(level == 2); - return 1; + recur_depth_val = 1; + } + if (uneven_4way && part_sf->uneven_4way_recur_depth_level && + (bw < 64 || bh < 64)) { + recur_depth_val = 1; } + + return AVMMIN(max_recursion_depth - 1, recur_depth_val); } #if CONFIG_ML_PART_SPLIT -enum { PRUNE_OTHER = 0, PRUNE_VERT = 1, PRUNE_HORZ = 2, MAX_PRUNE_TYPES = 3 }; static void prune_partitions_using_ml_results( AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, int mi_row, @@ -5213,39 +5243,43 @@ static void prune_partitions_using_ml_results( * partition pattern is found. The partition can recursively go down to the * smallest block size. * - * \param[in] cpi Top-level encoder structure - * \param[in] td Pointer to thread data - * \param[in] tile_data Pointer to struct holding adaptive - * data/contexts/models for the tile during - * encoding - * \param[in] tp Pointer to the starting token - * \param[in] mi_row Row coordinate of the block in a step size - * of MI_SIZE - * \param[in] mi_col Column coordinate of the block in a step - * size of MI_SIZE - * \param[in] bsize Current block size - * \param[in] parent_partition Partition of the parent block - * \param[in] rd_cost Pointer to the final rd cost of the block - * \param[in] best_rdc Upper bound of rd cost of a valid partition - * \param[in] pc_tree Pointer to the PC_TREE node storing the - * picked partitions and mode info for the - * current block - * \param[in] ptree_luma Pointer to the luma partition tree so that - * the encoder can estimate the partition type - * for chroma. - * \param[in] template_tree A partial tree that contains the partition - * structure to be used as a template. - * \param[in] max_recursion_depth The maximum level of recursion allowed - * \param[in] sms_tree Pointer to struct holding simple motion - * search data for the current block - * \param[in] none_rd Pointer to the rd cost in the case of not - * splitting the current block - * \param[in] multi_pass_mode SB_SINGLE_PASS/SB_DRY_PASS/SB_WET_PASS - * \param[in] rect_part_win_info Pointer to struct storing whether horz/vert - * partition outperforms previously tested - * partitions - * \param[in] force_prune_flags Prune partitions based on ML results - * [Only if CONFIG_ML_PART_SPLIT is defined]. + * \param[in] cpi Top-level encoder structure + * \param[in] td Pointer to thread data + * \param[in] tile_data Pointer to struct holding adaptive + * data/contexts/models for the tile during + * encoding + * \param[in,out] tp Pointer to the starting token + * \param[in] mi_row Row coordinate of the block in a step + * size of MI_SIZE + * \param[in] mi_col Column coordinate of the block in a + * step size of MI_SIZE + * \param[in] bsize Current block size + * \param[in] parent_partition Partition of the parent block + * \param[in,out] rd_cost Pointer to the final rd cost of the + * block + * \param[in] best_rdc Upper bound of rd cost of a valid + * partition + * \param[in,out] pc_tree Pointer to the PC_TREE node storing the + * picked partitions and mode info for the + * current block + * \param[in] ptree_luma Pointer to the luma partition tree so + * that the encoder can estimate the + * partition type for chroma. + * \param[in] template_tree A partial tree that contains the + * partition structure to be used as a + * template. + * \param[in] max_recursion_depth The maximum level of recursion allowed + * \param[in] sms_tree Pointer to struct holding simple motion + * search data for the current block + * \param[in,out] none_rd Pointer to the rd cost in the case of + * not splitting the current block + * \param[in] multi_pass_mode SB_SINGLE_PASS/SB_DRY_PASS/SB_WET_PASS + * \param[in,out] rect_part_win_info Pointer to struct storing whether + * horz/vert partition outperforms + * previously tested partitions + * \param[in] force_prune_flags Prune partitions based on ML results + * [Only if CONFIG_ML_PART_SPLIT is + * defined]. * * \return A bool value is returned indicating if a valid partition is found. * The pc_tree struct is modified to store the picked partition and modes. The @@ -5287,7 +5321,6 @@ bool av2_rd_pick_partition( init_partition_search_state_params( x, cpi, &part_search_state, pc_tree, ptree_luma, template_tree, max_recursion_depth, mi_row, mi_col, bsize); - PartitionBlkParams blk_params = part_search_state.part_blk_params; set_sms_tree_partitioning(sms_tree, PARTITION_NONE); @@ -5406,16 +5439,19 @@ bool av2_rd_pick_partition( // Pruning: Disable rectangular partitions for inner blocks when the current // block is forced to only use square partitions. + const PartitionBlkParams *blk_params = &part_search_state.part_blk_params; if (is_bsize_gt(bsize, cpi->sf.part_sf.use_square_partition_only_threshold)) { - part_search_state.partition_allowed[PARTITION_HORZ] &= !blk_params.has_rows; - part_search_state.partition_allowed[PARTITION_VERT] &= !blk_params.has_cols; + part_search_state.partition_allowed[PARTITION_HORZ] &= + !blk_params->has_rows; + part_search_state.partition_allowed[PARTITION_VERT] &= + !blk_params->has_cols; } LevelBanksRDO level_banks = { - x->e_mbd.ref_mv_bank, /* curr_level_bank*/ - x->e_mbd.ref_mv_bank, /* best_level_bank*/ - x->e_mbd.warp_param_bank, /* curr_level_warp_bank*/ - x->e_mbd.warp_param_bank, /* best_level_warp_bank*/ + xd->ref_mv_bank, /* curr_level_bank*/ + xd->ref_mv_bank, /* best_level_bank*/ + xd->warp_param_bank, /* curr_level_warp_bank*/ + xd->warp_param_bank, /* best_level_warp_bank*/ }; SimpleMotionData *sms_data = av2_get_sms_data_entry(x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, @@ -5434,7 +5470,7 @@ bool av2_rd_pick_partition( // Pruning: eliminating partition types leading to coding block sizes // outside the min and max bsize limitations set from the encoder. av2_prune_partitions_by_max_min_bsize( - &x->sb_enc, bsize, blk_params.has_rows && blk_params.has_cols, + &x->sb_enc, bsize, blk_params->has_rows && blk_params->has_cols, &part_search_state, NULL); // Partition search @@ -5602,47 +5638,32 @@ bool av2_rd_pick_partition( } // Search extended partitions. - const int ext_recur_depth_val = - get_ext_partitions_recur_depth(&cpi->sf.part_sf, bsize); - const int ext_recur_depth = - AVMMIN(max_recursion_depth - 1, ext_recur_depth_val); - - const int uneven_4way_recur_depth_val = - cpi->sf.part_sf.uneven_4way_recur_depth_level && - (block_size_wide[bsize] < 64 || block_size_high[bsize] < 64) - ? 1 - : ext_recur_depth_val; - const int uneven_4way_recur_depth = - AVMMIN(max_recursion_depth - 1, uneven_4way_recur_depth_val); - - const bool track_ptree_luma = - is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); + const int ext_recur_depth = get_ext_partitions_recur_depth( + &cpi->sf.part_sf, bsize, max_recursion_depth, false); bool partition_boundaries[MAX_MIB_SQUARE] = { 0 }; prune_ext_partitions_3way(cpi, pc_tree, &part_search_state, partition_boundaries); for (PARTITION_TYPE partition_type = PARTITION_HORZ_3; partition_type <= PARTITION_VERT_3; ++partition_type) { - search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize), - partition_type); + search_extended_partition(cpi, td, tile_data, tp, &best_rdc, pc_tree, + ptree_luma, template_tree, &x_ctx, + &part_search_state, &level_banks, multi_pass_mode, + ext_recur_depth, partition_type); } if ((pc_tree->region_type != INTRA_REGION || frame_is_intra_only(cm))) { + const int uneven_4way_recur_depth = get_ext_partitions_recur_depth( + &cpi->sf.part_sf, bsize, max_recursion_depth, true); + prune_ext_partitions_4way(cpi, pc_tree, &part_search_state, partition_boundaries); for (PARTITION_TYPE partition_type = PARTITION_HORZ_4A; partition_type <= PARTITION_VERT_4B; ++partition_type) { search_extended_partition( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, template_tree, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, - uneven_4way_recur_depth, - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize), - partition_type); + cpi, td, tile_data, tp, &best_rdc, pc_tree, ptree_luma, template_tree, + &x_ctx, &part_search_state, &level_banks, multi_pass_mode, + uneven_4way_recur_depth, partition_type); prune_4way_partitions_based_on_4way_search( &cpi->sf.part_sf, pc_tree, &part_search_state, partition_type); } @@ -5684,6 +5705,8 @@ bool av2_rd_pick_partition( pc_tree->extended_sdp_allowed_flag && is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ) && multi_pass_mode != SB_DRY_PASS) { + const bool track_ptree_luma = + is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); // Note that we only try intra region partitioning for SB_SINGLE_PASS // (single-pass partition search) or SB_WET_PASS (second pass of 2-pass // partition search). So, template tree never contains any partitions with @@ -5706,8 +5729,8 @@ bool av2_rd_pick_partition( // Store the final rd cost *rd_cost = best_rdc; - x->e_mbd.ref_mv_bank = level_banks.best_level_bank; - x->e_mbd.warp_param_bank = level_banks.best_level_warp_bank; + xd->ref_mv_bank = level_banks.best_level_bank; + xd->warp_param_bank = level_banks.best_level_warp_bank; pc_tree->rd_cost = best_rdc; if (!part_search_state.found_best_partition) { av2_invalid_rd_stats(&pc_tree->rd_cost); From 1ca6a862f4f7cb97912b573c719444f00f008576 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Tue, 4 Aug 2026 15:51:09 +0530 Subject: [PATCH 138/205] Refactor search intra region partitioning function - Use rd_try_subblock_partition helper in SDP search function. - Set pc_tree->skippable when intra-region partitioning wins. NO STATS CHANGED --- av2/encoder/partition_search.c | 91 ++++++++++++---------------------- 1 file changed, 32 insertions(+), 59 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 021ff029eb..cd0a18a931 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -4461,10 +4461,10 @@ static INLINE void early_termination_inter_sdp(const PC_TREE *pc_tree, // Search SDP for intra blocks in inter frames static INLINE void search_intra_region_partitioning( - PartitionSearchState *search_state, AV2_COMP *const cpi, ThreadData *td, - TileDataEnc *tile_data, TokenExtra **tp, RD_STATS *best_rdc, - PC_TREE *pc_tree, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, + TokenExtra **tp, RD_STATS *best_rdc, PC_TREE *pc_tree, + const PARTITION_TREE *ptree_luma, const PARTITION_TREE *template_tree, + RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, PartitionSearchState *part_search_state, LevelBanksRDO *level_banks, SB_MULTI_PASS_MODE multi_pass_mode, int max_recursion_depth, PARTITION_TYPE parent_partition) { @@ -4496,68 +4496,43 @@ static INLINE void search_intra_region_partitioning( } pc_tree->region_type = INTRA_REGION; - pc_tree->partitioning = PARTITION_NONE; RD_STATS *sum_rdc = &part_search_state->sum_rdc; av2_init_rd_stats(sum_rdc); - sum_rdc->rate = part_search_state->region_type_cost[pc_tree->region_type]; sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, 0); - RD_STATS best_remain_rdcost; - - av2_rd_stats_subtraction(x->rdmult, best_rdc, sum_rdc, &best_remain_rdcost); - - const PartitionBlkParams *blk_params = &search_state->part_blk_params; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; const BLOCK_SIZE bsize = blk_params->bsize; - - RD_STATS this_rdc; - av2_init_rd_stats(&this_rdc); - - // Encoder RDO for luma component in intra region - xd->tree_type = LUMA_PART; -#if CONFIG_ML_PART_SPLIT - int force_prune_flags[3] = { 0, 0, 0 }; -#endif // CONFIG_ML_PART_SPLIT - if (!av2_rd_pick_partition( - cpi, td, tile_data, tp, mi_row, mi_col, bsize, parent_partition, - &this_rdc, best_remain_rdcost, pc_tree, ptree_luma, template_tree, - max_recursion_depth, NULL, NULL, multi_pass_mode, NULL + const bool track_ptree_luma = + is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); + RDO_PICK_SB_ARGS rdo_args = { + pc_tree, track_ptree_luma ? ptree_luma : NULL, + template_tree, mi_row, + mi_col, bsize, + parent_partition + }; + bool skippable = true; #if CONFIG_ML_PART_SPLIT - , - force_prune_flags + int force_prune_flags[MAX_PRUNE_TYPES] = { 0 }; #endif // CONFIG_ML_PART_SPLIT - )) { - av2_invalid_rd_stats(&this_rdc); - av2_invalid_rd_stats(sum_rdc); - } - // Encoder RDO for chroma component in intra region - if (this_rdc.rdcost != INT64_MAX && !cm->seq_params.monochrome) { - sum_rdc->rate += this_rdc.rate; - sum_rdc->dist += this_rdc.dist; - av2_rd_cost_update(x->rdmult, sum_rdc); - xd->tree_type = CHROMA_PART; - av2_rd_stats_subtraction(x->rdmult, best_rdc, sum_rdc, &best_remain_rdcost); - av2_init_rd_stats(&this_rdc); - if (!av2_rd_pick_partition( - cpi, td, tile_data, tp, mi_row, mi_col, bsize, parent_partition, - &this_rdc, best_remain_rdcost, pc_tree, ptree_luma, template_tree, - max_recursion_depth, NULL, NULL, multi_pass_mode, NULL + // Encoder RDO for luma, chroma components in intra region. + for (int i = 0; i < (cm->seq_params.monochrome ? 1 : 2); ++i) { + xd->tree_type = LUMA_PART + i; + if (!rd_try_subblock_partition(cpi, td, tile_data, tp, &rdo_args, + &part_search_state->this_rdc, sum_rdc, + *best_rdc, NULL, max_recursion_depth, + multi_pass_mode, NULL, &skippable #if CONFIG_ML_PART_SPLIT - , - force_prune_flags -#endif // CONFIG_ML_PART_SPLIT - )) { - av2_invalid_rd_stats(&this_rdc); + , + force_prune_flags +#endif + )) { av2_invalid_rd_stats(sum_rdc); - } - if (this_rdc.rdcost != INT64_MAX) { - sum_rdc->rate += this_rdc.rate; - sum_rdc->dist += this_rdc.dist; - av2_rd_cost_update(x->rdmult, sum_rdc); + break; } } // reset tree_type to shared_part @@ -4566,8 +4541,9 @@ static INLINE void search_intra_region_partitioning( if (sum_rdc->rdcost < best_rdc->rdcost) { update_best_level_banks(level_banks, &x->e_mbd); *best_rdc = *sum_rdc; - search_state->found_best_partition = true; + part_search_state->found_best_partition = true; pc_tree->region_type = INTRA_REGION; + pc_tree->skippable = skippable; } else { // set back to the previous stored region_type and partitioning type pc_tree->region_type = MIXED_INTER_INTRA_REGION; @@ -5705,17 +5681,14 @@ bool av2_rd_pick_partition( pc_tree->extended_sdp_allowed_flag && is_bsize_allowed_for_extended_sdp(bsize, PARTITION_HORZ) && multi_pass_mode != SB_DRY_PASS) { - const bool track_ptree_luma = - is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); // Note that we only try intra region partitioning for SB_SINGLE_PASS // (single-pass partition search) or SB_WET_PASS (second pass of 2-pass // partition search). So, template tree never contains any partitions with // intra region. Hence, we pass NULL for `template_tree` argument below. search_intra_region_partitioning( - &part_search_state, cpi, td, tile_data, tp, &best_rdc, pc_tree, - track_ptree_luma ? ptree_luma : NULL, NULL /* template_tree */, &x_ctx, - &part_search_state, &level_banks, multi_pass_mode, ext_recur_depth, - parent_partition); + cpi, td, tile_data, tp, &best_rdc, pc_tree, ptree_luma, + NULL /* template_tree */, &x_ctx, &part_search_state, &level_banks, + multi_pass_mode, ext_recur_depth, parent_partition); if (part_search_state.found_best_partition) { av2_cache_best_partition(x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, From d497126aefc06c7d1b3cfa116d2431ba969f2357 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Wed, 5 Aug 2026 14:35:53 +0530 Subject: [PATCH 139/205] Refactor rectangular split partition search function - Refactors rectangular partition search to reuse the shared rd_try_subblock_partition helper instead of rd_pick_rect_partition. - Moved all prune rectangular partitions to a single function NO STATS CHANGED --- av2/encoder/partition_search.c | 588 +++++++++++++++------------------ 1 file changed, 275 insertions(+), 313 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index cd0a18a931..20ac1635d0 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3171,113 +3171,6 @@ static AVM_INLINE int rd_try_subblock_partition( static const int rect_partition_type[NUM_RECT_PARTS] = { PARTITION_HORZ, PARTITION_VERT }; -static void rd_pick_rect_partition( - AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, - TokenExtra **tp, MACROBLOCK *x, PC_TREE *pc_tree, - PartitionSearchState *part_search_state, const RD_STATS *best_rdc, - RECT_PART_TYPE rect_type, - const int mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][2], - BLOCK_SIZE bsize, const int is_not_edge_block[NUM_RECT_PARTS], - SB_MULTI_PASS_MODE multi_pass_mode, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, bool *both_blocks_skippable, - PARTITION_TYPE parent_partition, int max_recursion_depth -#if CONFIG_ML_PART_SPLIT - , - int next_force_prune_flags[3] -#endif // CONFIG_ML_PART_SPLIT -) { - const PARTITION_TYPE partition_type = rect_partition_type[rect_type]; - RD_STATS *sum_rdc = &part_search_state->sum_rdc; - - sum_rdc->rate = part_search_state->partition_cost[partition_type]; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && - is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, - pc_tree->parent->block_size, parent_partition) && - is_bsize_allowed_for_extended_sdp( - part_search_state->part_blk_params.bsize, partition_type)) - sum_rdc->rate += - part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; - sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, 0); - - RD_STATS this_rdc; - RD_STATS best_remain_rdcost; - PC_TREE **sub_tree = (rect_type == HORZ) - ? pc_tree->horizontal[pc_tree->region_type] - : pc_tree->vertical[pc_tree->region_type]; - *both_blocks_skippable = true; - av2_rd_stats_subtraction(x->rdmult, best_rdc, sum_rdc, &best_remain_rdcost); - bool partition_found = av2_rd_pick_partition( - cpi, td, tile_data, tp, mi_pos_rect[rect_type][0][0], - mi_pos_rect[rect_type][0][1], bsize, - (rect_type == HORZ ? PARTITION_HORZ : PARTITION_VERT), &this_rdc, - best_remain_rdcost, sub_tree[0], - get_partition_subtree_const(ptree_luma, 0), - get_partition_subtree_const(template_tree, 0), max_recursion_depth, NULL, - NULL, multi_pass_mode, NULL -#if CONFIG_ML_PART_SPLIT - , - next_force_prune_flags -#endif // CONFIG_ML_PART_SPLIT - ); - av2_rd_cost_update(x->rdmult, &this_rdc); - if (!partition_found) { - av2_invalid_rd_stats(sum_rdc); - return; - } else { - *both_blocks_skippable &= sub_tree[0]->skippable; - sum_rdc->rate += this_rdc.rate; - sum_rdc->dist += this_rdc.dist; - av2_rd_cost_update(x->rdmult, sum_rdc); - } - part_search_state->rect_part_rd[rect_type][0] = this_rdc.rdcost; - - if (sum_rdc->rdcost < best_rdc->rdcost && is_not_edge_block[rect_type]) { - av2_rd_stats_subtraction(x->rdmult, best_rdc, sum_rdc, &best_remain_rdcost); - partition_found = av2_rd_pick_partition( - cpi, td, tile_data, tp, mi_pos_rect[rect_type][1][0], - mi_pos_rect[rect_type][1][1], bsize, - (rect_type == HORZ ? PARTITION_HORZ : PARTITION_VERT), &this_rdc, - best_remain_rdcost, sub_tree[1], - get_partition_subtree_const(ptree_luma, 1), - get_partition_subtree_const(template_tree, 1), max_recursion_depth, - NULL, NULL, multi_pass_mode, NULL -#if CONFIG_ML_PART_SPLIT - , - next_force_prune_flags -#endif // CONFIG_ML_PART_SPLIT - ); - av2_rd_cost_update(x->rdmult, &this_rdc); - part_search_state->rect_part_rd[rect_type][1] = this_rdc.rdcost; - - if (!partition_found) { - av2_invalid_rd_stats(sum_rdc); - return; - } else { - *both_blocks_skippable &= sub_tree[1]->skippable; - sum_rdc->rate += this_rdc.rate; - sum_rdc->dist += this_rdc.dist; - av2_rd_cost_update(x->rdmult, sum_rdc); - } - } - // force early terminate after successful rect if found - if (partition_found && - ((!bru_is_sb_active(&cpi->common, x->e_mbd.mi_col, x->e_mbd.mi_row)) || - cpi->common.bridge_frame_info.is_bridge_frame)) { - part_search_state->terminate_partition_search = true; - part_search_state->do_rectangular_split = false; - part_search_state->is_block_splittable = false; - part_search_state->forced_partition = 0; - part_search_state->partition_allowed[PARTITION_NONE] = false; - if (rect_type == HORZ) - part_search_state->partition_allowed[PARTITION_VERT] = false; - else - part_search_state->partition_allowed[PARTITION_HORZ] = false; - part_search_state->found_best_partition = true; -#if CONFIG_ML_PART_SPLIT - part_search_state->prune_partition_split = false; -#endif // CONFIG_ML_PART_SPLIT - } -} static AVM_INLINE bool is_part_pruned_by_forced_partition( const PartitionSearchState *part_state, PARTITION_TYPE partition) { @@ -3285,35 +3178,44 @@ static AVM_INLINE bool is_part_pruned_by_forced_partition( return forced_partition != PARTITION_INVALID && forced_partition != partition; } -typedef int (*active_edge_info)(const AV2_COMP *cpi, int mi_col, int mi_step); - // Checks if HORZ / VERT partition search is allowed. -static AVM_INLINE int is_rect_part_allowed( +static AVM_INLINE bool is_rect_part_allowed( const AV2_COMP *cpi, PartitionSearchState *part_search_state, - active_edge_info *active_edge, RECT_PART_TYPE rect_part, const int mi_pos) { + PARTITION_TYPE partition_type) { const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - const int mi_step = - (rect_part == HORZ) ? blk_params->mi_step_h : blk_params->mi_step_w; - const PARTITION_TYPE partition_type = rect_partition_type[rect_part]; - const int is_part_allowed = - (!part_search_state->terminate_partition_search && - part_search_state->partition_allowed[partition_type] && - !part_search_state->prune_partition[partition_type] && - is_partition_valid(blk_params->bsize, partition_type) && - (part_search_state->do_rectangular_split || - active_edge[rect_part](cpi, mi_pos, mi_step))); - return is_part_allowed; + const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; + const BLOCK_SIZE bsize = blk_params->bsize; + assert(partition_type >= PARTITION_HORZ && partition_type <= PARTITION_VERT); + + if (part_search_state->terminate_partition_search) return false; + if (!part_search_state->partition_allowed[partition_type]) return false; + if (part_search_state->prune_partition[partition_type]) return false; + if (!is_partition_valid(bsize, partition_type)) return false; + if (is_part_pruned_by_forced_partition(part_search_state, partition_type)) + return false; + const RECT_PART_TYPE rect_type = get_rect_part_type(partition_type); + if (rect_type == HORZ) { + if (!(part_search_state->do_rectangular_split || + av2_active_h_edge(cpi, mi_row, blk_params->mi_step_h))) + return false; + } else { + if (!(part_search_state->do_rectangular_split || + av2_active_v_edge(cpi, mi_col, blk_params->mi_step_w))) + return false; + } + return true; } static AVM_INLINE void prune_rect_with_none_rd( PartitionSearchState *part_search_state, BLOCK_SIZE bsize, int q_index, int rdmult, int64_t part_none_rd, const int *is_not_edge_block) { - for (RECT_PART_TYPE rect = 0; rect < NUM_RECT_PARTS; rect++) { + for (RECT_PART_TYPE rect = 0; rect < NUM_RECT_PARTS; ++rect) { // Disable pruning on the boundary - if (!is_not_edge_block[rect]) { - continue; - } + if (!is_not_edge_block[rect]) continue; + const PARTITION_TYPE partition_type = rect_partition_type[rect]; + if (part_search_state->prune_partition[partition_type]) continue; + float discount_factor = 1.1f; const int q_thresh = 180; if (q_index < q_thresh) { @@ -3331,183 +3233,293 @@ static AVM_INLINE void prune_rect_with_none_rd( } } -// Rectangular partition types search function. -static void rectangular_partition_search( - AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, - TokenExtra **tp, MACROBLOCK *x, PC_TREE *pc_tree, - RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, - PartitionSearchState *part_search_state, RD_STATS *best_rdc, - SB_MULTI_PASS_MODE multi_pass_mode, const PARTITION_TREE *ptree_luma, - const PARTITION_TREE *template_tree, int max_recursion_depth, - RD_RECT_PART_WIN_INFO *rect_part_win_info, LevelBanksRDO *level_banks, - PARTITION_TYPE parent_partition, int64_t part_none_rd -#if CONFIG_ML_PART_SPLIT - , - int next_force_prune_flags[2][3] -#endif // CONFIG_ML_PART_SPLIT -) { +// Runs the partition MLP on eligible blocks (both dims >= 32px) and prunes the +// less-likely rectangular direction when it confidently predicts NONE. Skipped +// during the retry pass to avoid an infinite loop if pruning is enabled. +static void prune_rect_with_mlp(const AV2_COMP *cpi, MACROBLOCK *x, + const BLOCK_SIZE bsize, const int mi_row, + const int mi_col, const int num_planes, + unsigned int *pb_source_variance, + PartitionSearchState *part_search_state) { const AV2_COMMON *const cm = &cpi->common; - const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - RD_STATS *sum_rdc = &part_search_state->sum_rdc; - - MACROBLOCKD *xd = &x->e_mbd; - const int plane_start = get_partition_plane_start(xd->tree_type); - const int plane_end = - get_partition_plane_end(xd->tree_type, av2_num_planes(cm)); - (void)plane_start; - (void)plane_end; - const int ss_x = xd->plane[1].subsampling_x; - const int ss_y = xd->plane[1].subsampling_y; - // mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][0]: mi_row postion of - // HORZ and VERT partition types. - // mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][1]: mi_col postion of - // HORZ and VERT partition types. - const int mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][2] = { - { { blk_params->mi_row, blk_params->mi_col }, - { blk_params->mi_row_edge, blk_params->mi_col } }, - { { blk_params->mi_row, blk_params->mi_col }, - { blk_params->mi_row, blk_params->mi_col_edge } } - }; + const MACROBLOCKD *const xd = &x->e_mbd; - // Initialize active edge_type function pointer - // for HOZR and VERT partition types. - active_edge_info active_edge_type[NUM_RECT_PARTS] = { av2_active_h_edge, - av2_active_v_edge }; + if (!is_rect_part_allowed(cpi, part_search_state, PARTITION_HORZ) && + !is_rect_part_allowed(cpi, part_search_state, PARTITION_VERT)) + return; - // Indicates edge blocks for HORZ and VERT partition types. - const int is_not_edge_block[NUM_RECT_PARTS] = { blk_params->has_rows, - blk_params->has_cols }; + if (*pb_source_variance == UINT_MAX) { + av2_setup_src_planes(x, cpi->source, mi_row, mi_col, num_planes, NULL); + *pb_source_variance = av2_high_get_sby_perpixel_variance( + cpi, &x->plane[AVM_PLANE_Y].src, bsize, xd->bd); + } + const int above_part = xd->above_mbmi ? (int)xd->above_mbmi->partition : -1; + const int left_part = xd->left_mbmi ? (int)xd->left_mbmi->partition : -1; + const int is_intra = frame_is_intra_only(cm) ? 1 : 0; + const int bw = (xd->mb_to_right_edge >= 0) + ? block_size_wide[bsize] + : block_size_wide[bsize] + (xd->mb_to_right_edge - 7) / 8; + const int bh = (xd->mb_to_bottom_edge >= 0) + ? block_size_high[bsize] + : block_size_high[bsize] + (xd->mb_to_bottom_edge - 7) / 8; + // logits[i] is the raw (pre-softmax) score for partition class i: + // 0=NONE, 1=HORZ, 2=VERT, 3=SPLIT (matching PART_MLP_* constants). + float logits[4]; + const int pred = av2_partition_mlp_predict( + x->plane[AVM_PLANE_Y].src.buf, x->plane[AVM_PLANE_Y].src.stride, bw, bh, + (int)bsize, cm->quant_params.base_qindex - MAXQ_OFFSET * (xd->bd - 8), + *pb_source_variance, part_search_state->none_rd, above_part, left_part, + is_intra, logits); + + if (pred == PART_MLP_NONE) { + const float none_thresh = + cpi->sf.part_sf.partition_pruning_with_mlp_none_thresh; + // Prune if the NONE logit exceeds the best non-NONE logit by more than + // none_thresh. This margin measures how decisively the model prefers NONE + // over any other partition type. + float best_non_none_logit = -1e9f; + for (int ci = 0; ci < 4; ++ci) + if (ci != PART_MLP_NONE && logits[ci] > best_non_none_logit) + best_non_none_logit = logits[ci]; + if (logits[PART_MLP_NONE] - best_non_none_logit > none_thresh) { + if (logits[PART_MLP_HORZ] < logits[PART_MLP_VERT]) + part_search_state->prune_partition[PARTITION_HORZ] = true; + else + part_search_state->prune_partition[PARTITION_VERT] = true; + } + } +} - const CommonModeInfoParams *const mi_params = &cpi->common.mi_params; +// Prune rectangular partition types based on mlp. One of the features of mlp is +// partition none rdcost. It is possible that none rd might not be evaluated by +// now if adaptive_partition_search_order is enabled. In this case default none +// rdc which is INT64_MAX is passed to the model where it is mapped to zero. +static void prune_rect_partitions(AV2_COMP *const cpi, ThreadData *td, + TileDataEnc *tile_data, PC_TREE *pc_tree, + PartitionSearchState *part_search_state, + unsigned int *pb_source_variance, + int64_t part_none_rd) { + const AV2_COMMON *const cm = &cpi->common; + MACROBLOCK *const x = &td->mb; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; + const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; const BLOCK_SIZE bsize = blk_params->bsize; + + if (cpi->sf.part_sf.partition_pruning_with_mlp && + part_search_state->partition_allowed[PARTITION_NONE] && + part_search_state->forced_partition == PARTITION_INVALID && + block_size_wide[bsize] >= 32 && block_size_high[bsize] >= 32 && + bsize <= BLOCK_256X256 && !x->must_find_valid_partition) { + prune_rect_with_mlp(cpi, x, bsize, mi_row, mi_col, av2_num_planes(cm), + pb_source_variance, part_search_state); + } + const bool is_whole_block_inside = - (blk_params->mi_row + mi_size_high[bsize] < mi_params->mi_rows) && - (blk_params->mi_col + mi_size_wide[bsize] < mi_params->mi_cols); + (mi_row + mi_size_high[bsize] < cm->mi_params.mi_rows) && + (mi_col + mi_size_wide[bsize] < cm->mi_params.mi_cols); const bool try_prune_with_ml = cpi->sf.part_sf.prune_rect_with_ml && !frame_is_intra_only(cm) && part_search_state->forced_partition == PARTITION_INVALID && is_whole_block_inside && part_none_rd < INT64_MAX && - (is_rect_part_allowed(cpi, part_search_state, active_edge_type, HORZ, - mi_pos_rect[HORZ][0][HORZ]) || - is_rect_part_allowed(cpi, part_search_state, active_edge_type, VERT, - mi_pos_rect[VERT][0][VERT])); + (is_rect_part_allowed(cpi, part_search_state, PARTITION_HORZ) || + is_rect_part_allowed(cpi, part_search_state, PARTITION_VERT)); if (try_prune_with_ml && bsize != BLOCK_4X8 && bsize != BLOCK_8X4 && is_partition_point(bsize)) { + // mi_pos_rect[rect_type][sub_idx][0]: mi_row position + // mi_pos_rect[rect_type][sub_idx][1]: mi_col position + const int mi_pos_rect[NUM_RECT_PARTS][SUB_PARTITIONS_RECT][2] = { + { { blk_params->mi_row, blk_params->mi_col }, + { blk_params->mi_row_edge, blk_params->mi_col } }, + { { blk_params->mi_row, blk_params->mi_col }, + { blk_params->mi_row, blk_params->mi_col_edge } } + }; + const bool is_hd = AVMMIN(cm->width, cm->height) >= 1080; float ml_features[19]; + av2_gather_erp_rect_features(ml_features, cpi, x, &tile_data->tile_info, pc_tree, part_search_state, part_none_rd, mi_pos_rect); - const bool is_hd = AVMMIN(cm->width, cm->height) >= 1080; - av2_erp_prune_rect(bsize, is_hd, ml_features, &part_search_state->prune_partition[PARTITION_HORZ], &part_search_state->prune_partition[PARTITION_VERT]); } + if (cpi->sf.part_sf.prune_rect_with_none_rd && part_search_state->forced_partition == PARTITION_INVALID && !frame_is_intra_only(cm) && part_none_rd < INT64_MAX) { + const int is_not_edge_block[NUM_RECT_PARTS] = { blk_params->has_rows, + blk_params->has_cols }; + prune_rect_with_none_rd(part_search_state, bsize, x->qindex, x->rdmult, part_none_rd, is_not_edge_block); } +} + +// Rectangular partition types search function. +static void rectangular_partition_search( + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, + TokenExtra **tp, PC_TREE *pc_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, + PartitionSearchState *part_search_state, RD_STATS *best_rdc, + SB_MULTI_PASS_MODE multi_pass_mode, const PARTITION_TREE *ptree_luma, + const PARTITION_TREE *template_tree, int max_recursion_depth, + RD_RECT_PART_WIN_INFO *rect_part_win_info, LevelBanksRDO *level_banks, + PARTITION_TYPE parent_partition +#if CONFIG_ML_PART_SPLIT + , + int next_force_prune_flags[NUM_RECT_PARTS][MAX_PRUNE_TYPES] +#endif // CONFIG_ML_PART_SPLIT +) { + const AV2_COMMON *const cm = &cpi->common; + MACROBLOCK *const x = &td->mb; + const int num_planes = av2_num_planes(cm); + MACROBLOCKD *const xd = &x->e_mbd; + const int ss_x = xd->plane[AVM_PLANE_U].subsampling_x; + const int ss_y = xd->plane[AVM_PLANE_U].subsampling_y; + const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; + const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; + const BLOCK_SIZE bsize = blk_params->bsize; // Loop over rectangular partition types. - for (RECT_PART_TYPE i = HORZ; i < NUM_RECT_PARTS; i++) { - // Check if the HORZ / VERT partition search is to be performed. - if (!is_rect_part_allowed(cpi, part_search_state, active_edge_type, i, - mi_pos_rect[i][0][i])) - continue; + RD_STATS *sum_rdc = &part_search_state->sum_rdc; + for (RECT_PART_TYPE rect_type = HORZ; rect_type < NUM_RECT_PARTS; + ++rect_type) { + const PARTITION_TYPE partition_type = rect_partition_type[rect_type]; + if (!is_rect_part_allowed(cpi, part_search_state, partition_type)) continue; - // Sub-partition idx. - const PARTITION_TYPE partition_type = rect_partition_type[i]; - const BLOCK_SIZE subsize = - get_partition_subsize(blk_params->bsize, partition_type); - const int part_hv_rate = part_search_state->partition_cost[partition_type]; - if (part_hv_rate == INT_MAX || - RDCOST(x->rdmult, part_hv_rate, 0) >= best_rdc->rdcost) { - continue; - } - av2_init_rd_stats(sum_rdc); - if (is_part_pruned_by_forced_partition(part_search_state, partition_type)) { + const int part_rate = part_search_state->partition_cost[partition_type]; + if (part_rate == INT_MAX || + RDCOST(x->rdmult, part_rate, 0) >= best_rdc->rdcost) { continue; } - const REGION_TYPE cur_region_type = pc_tree->region_type; - PC_TREE **sub_tree = (i == HORZ) ? pc_tree->horizontal[cur_region_type] - : pc_tree->vertical[cur_region_type]; - assert(sub_tree); - - const int num_planes = av2_num_planes(cm); - for (int idx = 0; idx < SUB_PARTITIONS_RECT; idx++) { - if (sub_tree[idx]) { - av2_free_pc_tree_recursive(sub_tree[idx], num_planes, 0, 0); - sub_tree[idx] = NULL; - } - } - sub_tree[0] = av2_alloc_pc_tree_node( - xd->tree_type, mi_pos_rect[i][0][0], mi_pos_rect[i][0][1], cm->sb_size, - subsize, pc_tree, partition_type, 0, 0, ss_x, ss_y); - sub_tree[1] = av2_alloc_pc_tree_node( - xd->tree_type, mi_pos_rect[i][1][0], mi_pos_rect[i][1][1], cm->sb_size, - subsize, pc_tree, partition_type, 1, 1, ss_x, ss_y); - - bool both_blocks_skippable = true; - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition_temp = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, - (i == HORZ) ? PARTITION_HORZ : PARTITION_VERT, - bsize); - for (int ind = 0; ind < 2; ++ind) { - sub_tree[ind]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition_temp; - if (bsize == cm->sb_size && pc_tree) - sub_tree[ind]->is_cfl_allowed_for_this_chroma = 0; - } - const int track_ptree_luma = - is_luma_chroma_share_same_partition(x->e_mbd.tree_type, ptree_luma, - bsize) && - partition_type == - sdp_chroma_part_from_luma(bsize, ptree_luma->partition, ss_x, ss_y); #if CONFIG_COLLECT_PARTITION_STATS PartitionTimingStats *part_timing_stats = &part_search_state->part_timing_stats; start_partition_block_timer(part_timing_stats, partition_type); #endif // CONFIG_COLLECT_PARTITION_STATS - rd_pick_rect_partition( - cpi, td, tile_data, tp, x, pc_tree, part_search_state, best_rdc, i, - mi_pos_rect, subsize, is_not_edge_block, multi_pass_mode, - track_ptree_luma ? ptree_luma : NULL, template_tree, - &both_blocks_skippable, parent_partition, max_recursion_depth + + av2_init_rd_stats(sum_rdc); + sum_rdc->rate = part_search_state->partition_cost[partition_type]; + if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && + is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, + pc_tree->parent->block_size, + parent_partition) && + is_bsize_allowed_for_extended_sdp(bsize, partition_type)) + sum_rdc->rate += + part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; + sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, 0); + + int num_sub_parts = 0; + PC_TREE **child_nodes = (PC_TREE **)get_child_pc_trees( + pc_tree, partition_type, pc_tree->region_type, &num_sub_parts); + assert(num_sub_parts == 2); + + int mi_rows[4], mi_cols[4]; + BLOCK_SIZE subblock_sizes[4]; + get_partition_subblock_layout(partition_type, bsize, mi_row, mi_col, + subblock_sizes, mi_rows, mi_cols); + + CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition = + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition_type, bsize); + const int track_ptree_luma = + is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize) && + partition_type == + sdp_chroma_part_from_luma(bsize, ptree_luma->partition, ss_x, ss_y); + bool skippable = true; + + for (int sub_idx = 0; sub_idx < num_sub_parts; ++sub_idx) { + if (child_nodes[sub_idx]) { + av2_free_pc_tree_recursive(child_nodes[sub_idx], num_planes, 0, 0); + child_nodes[sub_idx] = NULL; + } + child_nodes[sub_idx] = av2_alloc_pc_tree_node( + xd->tree_type, mi_rows[sub_idx], mi_cols[sub_idx], cm->sb_size, + subblock_sizes[sub_idx], pc_tree, partition_type, sub_idx, + sub_idx == (num_sub_parts - 1), ss_x, ss_y); + + if (bsize == cm->sb_size && pc_tree) + child_nodes[sub_idx]->is_cfl_allowed_for_this_chroma = + CFL_DISALLOWED_FOR_CHROMA; + else + child_nodes[sub_idx]->is_cfl_allowed_for_this_chroma = + pc_tree->is_cfl_allowed_for_this_chroma | + is_cfl_allowed_for_this_chroma_partition; + + const int this_mi_row = mi_rows[sub_idx]; + const int this_mi_col = mi_cols[sub_idx]; + + if ((this_mi_row >= cm->mi_params.mi_rows || + this_mi_col >= cm->mi_params.mi_cols)) { + av2_mark_block_as_pseudo_coded(xd, this_mi_row, this_mi_col, + subblock_sizes[sub_idx], cm->sb_size); + continue; + } + + RDO_PICK_SB_ARGS rdo_args = { + child_nodes[sub_idx], + track_ptree_luma ? get_partition_subtree_const(ptree_luma, sub_idx) + : NULL, + get_partition_subtree_const(template_tree, sub_idx), + this_mi_row, + this_mi_col, + subblock_sizes[sub_idx], + partition_type + }; + RD_STATS this_rdc; + if (!rd_try_subblock_partition( + cpi, td, tile_data, tp, &rdo_args, &this_rdc, sum_rdc, *best_rdc, + NULL, max_recursion_depth, multi_pass_mode, NULL, &skippable #if CONFIG_ML_PART_SPLIT - , - next_force_prune_flags[i] -#endif // CONFIG_ML_PART_SPLIT - ); -#if CONFIG_COLLECT_PARTITION_STATS - end_partition_block_timer(part_timing_stats, partition_type, - sum_rdc->rdcost); -#endif // CONFIG_COLLECT_PARTITION_STATS - // Update HORZ / VERT best partition. - if (sum_rdc->rdcost < best_rdc->rdcost) { - sum_rdc->rdcost = RDCOST(x->rdmult, sum_rdc->rate, sum_rdc->dist); - if (sum_rdc->rdcost < best_rdc->rdcost) { - pc_tree->skippable = both_blocks_skippable; - *best_rdc = *sum_rdc; - - update_best_level_banks(level_banks, &x->e_mbd); - part_search_state->found_best_partition = true; - pc_tree->partitioning = partition_type; + , + next_force_prune_flags[rect_type] +#endif + )) { + av2_invalid_rd_stats(sum_rdc); + break; } + part_search_state->rect_part_rd[rect_type][sub_idx] = this_rdc.rdcost; + } + // Calculate the total cost and update the best partition. + av2_rd_cost_update(x->rdmult, sum_rdc); + if (sum_rdc->rdcost < best_rdc->rdcost) { + *best_rdc = *sum_rdc; + update_best_level_banks(level_banks, &x->e_mbd); + part_search_state->found_best_partition = true; + pc_tree->partitioning = partition_type; + pc_tree->skippable = skippable; } else { // Update HORZ / VERT win flag. if (rect_part_win_info != NULL) - rect_part_win_info->rect_part_win[i] = false; + rect_part_win_info->rect_part_win[rect_type] = false; } +#if CONFIG_COLLECT_PARTITION_STATS + end_partition_block_timer(part_timing_stats, partition_type, + sum_rdc->rdcost); +#endif // CONFIG_COLLECT_PARTITION_STATS + av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); restore_level_banks(&x->e_mbd, level_banks); - av2_restore_context(cm, x, x_ctx, blk_params->mi_row, blk_params->mi_col, - blk_params->bsize, av2_num_planes(cm)); - if (sum_rdc->rdcost < INT64_MAX && both_blocks_skippable && - !frame_is_intra_only(cm)) { + + // force early terminate after successful rect if found + if (sum_rdc->rdcost < INT64_MAX && + ((!bru_is_sb_active(cm, mi_col, mi_row)) || + cm->bridge_frame_info.is_bridge_frame)) { + part_search_state->terminate_partition_search = true; + part_search_state->do_rectangular_split = false; + part_search_state->is_block_splittable = false; + part_search_state->forced_partition = 0; + part_search_state->partition_allowed[PARTITION_NONE] = false; + if (rect_type == HORZ) + part_search_state->partition_allowed[PARTITION_VERT] = false; + else + part_search_state->partition_allowed[PARTITION_HORZ] = false; + part_search_state->found_best_partition = true; +#if CONFIG_ML_PART_SPLIT + part_search_state->prune_partition_split = false; +#endif // CONFIG_ML_PART_SPLIT + } + + if (sum_rdc->rdcost < INT64_MAX && skippable && !frame_is_intra_only(cm)) { const int right_shift = ((2 * (BLOCK_128_MI_SIZE_LOG2)) - (mi_size_wide_log2[bsize] + mi_size_high_log2[bsize])); @@ -5542,63 +5554,13 @@ bool av2_rd_pick_partition( none_rd, &part_none_rd, &level_banks, ptree_luma); } - // Rectangular partitions search stage. - // Run the partition MLP on all eligible blocks (both dims >= 32px) and - // prune the less-likely rect direction when it confidently predicts NONE. - // Skip during retry pass to avoid infinite loop if pruning is enabled. - if (cpi->sf.part_sf.partition_pruning_with_mlp && - part_search_state.partition_allowed[PARTITION_NONE] && - part_search_state.forced_partition == PARTITION_INVALID && - block_size_wide[bsize] >= 32 && block_size_high[bsize] >= 32 && - bsize <= BLOCK_256X256 && !x->must_find_valid_partition) { - if (pb_source_variance == UINT_MAX) { - av2_setup_src_planes(x, cpi->source, mi_row, mi_col, num_planes, NULL); - pb_source_variance = av2_high_get_sby_perpixel_variance( - cpi, &x->plane[0].src, bsize, xd->bd); - } - const int above_part = xd->above_mbmi ? (int)xd->above_mbmi->partition : -1; - const int left_part = xd->left_mbmi ? (int)xd->left_mbmi->partition : -1; - const int is_intra = frame_is_intra_only(cm) ? 1 : 0; - const int bw = - (xd->mb_to_right_edge >= 0) - ? block_size_wide[bsize] - : block_size_wide[bsize] + (xd->mb_to_right_edge - 7) / 8; - const int bh = - (xd->mb_to_bottom_edge >= 0) - ? block_size_high[bsize] - : block_size_high[bsize] + (xd->mb_to_bottom_edge - 7) / 8; - // logits[i] is the raw (pre-softmax) score for partition class i: - // 0=NONE, 1=HORZ, 2=VERT, 3=SPLIT (matching PART_MLP_* constants). - float logits[4]; - const int pred = av2_partition_mlp_predict( - x->plane[0].src.buf, x->plane[0].src.stride, bw, bh, (int)bsize, - cm->quant_params.base_qindex - MAXQ_OFFSET * (xd->bd - 8), - pb_source_variance, part_search_state.none_rd, above_part, left_part, - is_intra, logits); - - if (pred == PART_MLP_NONE) { - const float none_thresh = - cpi->sf.part_sf.partition_pruning_with_mlp_none_thresh; - // Prune if the NONE logit exceeds the best non-NONE logit by more than - // none_thresh. This margin measures how decisively the model prefers NONE - // over any other partition type. - float best_non_none_logit = -1e9f; - for (int ci = 0; ci < 4; ci++) - if (ci != PART_MLP_NONE && logits[ci] > best_non_none_logit) - best_non_none_logit = logits[ci]; - if (logits[PART_MLP_NONE] - best_non_none_logit > none_thresh) { - if (logits[PART_MLP_HORZ] < logits[PART_MLP_VERT]) - part_search_state.prune_partition[PARTITION_HORZ] = true; - else - part_search_state.prune_partition[PARTITION_VERT] = true; - } - } - } - // Search partition horz and vert. + prune_rect_partitions(cpi, td, tile_data, pc_tree, &part_search_state, + &pb_source_variance, part_none_rd); + // Search partitions horz and vert. rectangular_partition_search( - cpi, td, tile_data, tp, x, pc_tree, &x_ctx, &part_search_state, &best_rdc, + cpi, td, tile_data, tp, pc_tree, &x_ctx, &part_search_state, &best_rdc, multi_pass_mode, ptree_luma, template_tree, max_recursion_depth - 1, - rect_part_win_info, &level_banks, parent_partition, part_none_rd + rect_part_win_info, &level_banks, parent_partition #if CONFIG_ML_PART_SPLIT , next_force_prune_flags From ca39566ffaa001eca618353ff461442a95ac0943 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Thu, 6 Aug 2026 17:45:55 +0530 Subject: [PATCH 140/205] Refactor none_partition_search for consistency - Aligns with split/rect/ext partition search style. - Remove dead is_cfl_allowed_in_sdp write clobbered by the unconditional assignment right after it. NO STATS CHANGED --- av2/encoder/partition_search.c | 260 +++++++++++++-------------------- 1 file changed, 104 insertions(+), 156 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 20ac1635d0..8c55f7207a 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3541,72 +3541,6 @@ static void rectangular_partition_search( } } -// Set PARTITION_NONE allowed flag. -static AVM_INLINE void set_part_none_allowed_flag( - TREE_TYPE tree_type, int sdp_inter_chroma_flag, - PartitionSearchState *part_search_state) { - const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - - if (tree_type == CHROMA_PART && blk_params->bsize == BLOCK_8X8) { - part_search_state->partition_allowed[PARTITION_NONE] = true; - return; - } - if (sdp_inter_chroma_flag) { - part_search_state->partition_allowed[PARTITION_NONE] = true; - return; - } - if (is_bsize_geq(blk_params->min_partition_size, blk_params->bsize) && - blk_params->has_rows && blk_params->has_cols) - part_search_state->partition_allowed[PARTITION_NONE] = true; -} - -// Set params needed for PARTITION_NONE search. -static void set_none_partition_params(const AV2_COMMON *const cm, - ThreadData *td, MACROBLOCK *x, - PC_TREE *pc_tree, - PartitionSearchState *part_search_state, - RD_STATS *best_remain_rdcost, - RD_STATS *best_rdc, int *pt_cost) { - const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - RD_STATS partition_rdcost; - - // Set PARTITION_NONE context. - if (is_inter_sdp_chroma(cm, pc_tree->region_type, x->e_mbd.tree_type)) { - if (pc_tree->none_chroma == NULL) { - pc_tree->none_chroma = - av2_alloc_pmc(cm, x->e_mbd.tree_type, blk_params->mi_row, - blk_params->mi_col, blk_params->bsize, pc_tree, - PARTITION_NONE, 0, part_search_state->ss_x, - part_search_state->ss_y, &td->shared_coeff_buf); - } - } else { - if (pc_tree->none[pc_tree->region_type] == NULL) { - pc_tree->none[pc_tree->region_type] = - av2_alloc_pmc(cm, x->e_mbd.tree_type, blk_params->mi_row, - blk_params->mi_col, blk_params->bsize, pc_tree, - PARTITION_NONE, 0, part_search_state->ss_x, - part_search_state->ss_y, &td->shared_coeff_buf); - } - } - - // Set PARTITION_NONE type cost. - if (part_search_state->partition_allowed[PARTITION_NONE]) { - if (part_search_state->is_block_splittable && - !is_inter_sdp_chroma(cm, pc_tree->region_type, x->e_mbd.tree_type)) { - *pt_cost = part_search_state->partition_cost[PARTITION_NONE] < INT_MAX - ? part_search_state->partition_cost[PARTITION_NONE] - : 0; - } - - // Initialize the RD stats structure. - av2_init_rd_stats(&partition_rdcost); - partition_rdcost.rate = *pt_cost; - av2_rd_cost_update(x->rdmult, &partition_rdcost); - av2_rd_stats_subtraction(x->rdmult, best_rdc, &partition_rdcost, - best_remain_rdcost); - } -} - // Skip other partitions based on PARTITION_NONE rd cost. static void prune_partitions_after_none(AV2_COMP *const cpi, MACROBLOCK *x, SIMPLE_MOTION_DATA_TREE *sms_tree, @@ -3802,52 +3736,74 @@ static int64_t get_dist_offset_by_deblock( // PARTITION_NONE search. static void none_partition_search( - AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, MACROBLOCK *x, + AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, TokenExtra **tp, PC_TREE *pc_tree, SIMPLE_MOTION_DATA_TREE *sms_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, PartitionSearchState *part_search_state, RD_STATS *best_rdc, unsigned int *pb_source_variance, int64_t *none_rd, int64_t *part_none_rd, LevelBanksRDO *level_banks, const PARTITION_TREE *ptree_luma) { const AV2_COMMON *const cm = &cpi->common; + MACROBLOCK *const x = &td->mb; + const int num_planes = av2_num_planes(cm); + MACROBLOCKD *const xd = &x->e_mbd; + const int ss_x = xd->plane[AVM_PLANE_U].subsampling_x; + const int ss_y = xd->plane[AVM_PLANE_U].subsampling_y; const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - RD_STATS *this_rdc = &part_search_state->this_rdc; - const int mi_row = blk_params->mi_row; - const int mi_col = blk_params->mi_col; + const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; const BLOCK_SIZE bsize = blk_params->bsize; + const REGION_TYPE region_type = pc_tree->region_type; assert(bsize < BLOCK_SIZES_ALL); - // Skip when the aspect ratio is invalid. + // Check if partition none is allowed. const int bw = block_size_wide[bsize]; const int bh = block_size_high[bsize]; - const int max_aspect_ratio = - 1 << (cpi->common.seq_params.max_pb_aspect_ratio_log2_m1 + 1); - if (bw > bh * max_aspect_ratio || bh > bw * max_aspect_ratio) { - return; - } + const int max_partition_aspect_ratio = + 1 << (cm->seq_params.max_pb_aspect_ratio_log2_m1 + 1); + const bool invalid_aspect_ratio = bw > bh * max_partition_aspect_ratio || + bh > bw * max_partition_aspect_ratio; + if (invalid_aspect_ratio) return; - if (is_part_pruned_by_forced_partition(part_search_state, PARTITION_NONE)) { + if (is_part_pruned_by_forced_partition(part_search_state, PARTITION_NONE)) return; - } - int sdp_inter_chroma_flag = - is_inter_sdp_chroma(cm, pc_tree->region_type, x->e_mbd.tree_type); - // Set PARTITION_NONE allowed flag. - set_part_none_allowed_flag(x->e_mbd.tree_type, sdp_inter_chroma_flag, - part_search_state); - if (!part_search_state->partition_allowed[PARTITION_NONE]) { - return; - } + // amend none partition allowed + const bool sdp_inter_chroma_flag = + is_inter_sdp_chroma(cm, region_type, xd->tree_type); + const bool allow_none_partition = + (xd->tree_type == CHROMA_PART && bsize == BLOCK_8X8) || + sdp_inter_chroma_flag || + (is_bsize_geq(blk_params->min_partition_size, blk_params->bsize) && + blk_params->has_rows && blk_params->has_cols); + if (allow_none_partition) + part_search_state->partition_allowed[PARTITION_NONE] = true; + + if (!part_search_state->partition_allowed[PARTITION_NONE]) return; if (part_search_state->prune_partition[PARTITION_NONE] && - !sdp_inter_chroma_flag) { + !sdp_inter_chroma_flag) return; + +#if CONFIG_COLLECT_PARTITION_STATS + // Timer start for partition None. + PartitionTimingStats *part_timing_stats = + &part_search_state->part_timing_stats; + if (best_remain_rdcost.rdcost >= 0) { + start_partition_block_timer(part_timing_stats, PARTITION_NONE); } +#endif // CONFIG_COLLECT_PARTITION_STATS - int pt_cost = 0; - RD_STATS best_remain_rdcost; + RD_STATS partition_rdcost; + av2_init_rd_stats(&partition_rdcost); + if (part_search_state->is_block_splittable && !sdp_inter_chroma_flag) { + partition_rdcost.rate = + part_search_state->partition_cost[PARTITION_NONE] < INT_MAX + ? part_search_state->partition_cost[PARTITION_NONE] + : 0; + partition_rdcost.rdcost = RDCOST(x->rdmult, partition_rdcost.rate, 0); + } - // Set PARTITION_NONE context and cost. - set_none_partition_params(cm, td, x, pc_tree, part_search_state, - &best_remain_rdcost, best_rdc, &pt_cost); + RD_STATS best_remain_rdcost; + av2_rd_stats_subtraction(x->rdmult, best_rdc, &partition_rdcost, + &best_remain_rdcost); if (best_rdc->rdcost != INT64_MAX && cpi->sf.lpf_sf.enable_deblock_for_partition_search && !cpi->is_screen_content_type) { @@ -3858,61 +3814,55 @@ static void none_partition_search( best_remain_rdcost.rdcost = best_remain_rdcost.rdcost * 9 / 8; } - if (bsize == cm->sb_size) - x->e_mbd.is_cfl_allowed_in_sdp = is_cfl_allowed_for_sdp( - cm, &x->e_mbd, ptree_luma, PARTITION_NONE, bsize); - x->e_mbd.is_cfl_allowed_in_sdp = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_sdp(cm, &x->e_mbd, ptree_luma, PARTITION_NONE, bsize); - if (!cm->seq_params.enable_cfl_intra && !cm->seq_params.enable_mhccp) { - x->e_mbd.is_cfl_allowed_in_sdp = CFL_DISALLOWED_FOR_CHROMA; + PICK_MODE_CONTEXT **ctx_none = sdp_inter_chroma_flag + ? &pc_tree->none_chroma + : &pc_tree->none[region_type]; + if (*ctx_none == NULL) { + *ctx_none = + av2_alloc_pmc(cm, xd->tree_type, mi_row, mi_col, bsize, pc_tree, + PARTITION_NONE, 0, ss_x, ss_y, &td->shared_coeff_buf); } - REGION_TYPE cur_region_type = pc_tree->region_type; - PICK_MODE_CONTEXT *ctx_none = sdp_inter_chroma_flag - ? pc_tree->none_chroma - : pc_tree->none[pc_tree->region_type]; + + if (!cm->seq_params.enable_cfl_intra && !cm->seq_params.enable_mhccp) + xd->is_cfl_allowed_in_sdp = CFL_DISALLOWED_FOR_CHROMA; + else + xd->is_cfl_allowed_in_sdp = + pc_tree->is_cfl_allowed_for_this_chroma | + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_NONE, bsize); + if (sdp_inter_chroma_flag) { - inter_sdp_copy_luma_mode_info(pc_tree, ctx_none, x->e_mbd.mi[0]); + inter_sdp_copy_luma_mode_info(pc_tree, *ctx_none, xd->mi[0]); } -#if CONFIG_COLLECT_PARTITION_STATS - // Timer start for partition None. - PartitionTimingStats *part_timing_stats = - &part_search_state->part_timing_stats; - if (best_remain_rdcost.rdcost >= 0) { - start_partition_block_timer(part_timing_stats, PARTITION_NONE); - } -#endif // CONFIG_COLLECT_PARTITION_STATS SimpleMotionData *sms_data = av2_get_sms_data_entry( - x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, (int8_t)cur_region_type); + x->sms_bufs, mi_row, mi_col, bsize, cm->sb_size, (int8_t)region_type); + // Skip the SMS mode cache when retrying partition search // (must_find_valid_partition). The first pass may have cached - // PICK_MODE_CONTEXT pointers that become dangling when partition subtrees - // are freed and rebuilt in the second pass. + // PICK_MODE_CONTEXT pointers that become dangling when partition subtrees are + // freed and rebuilt in the second pass. if (!x->must_find_valid_partition) av2_set_best_mode_cache(x, sms_data->mode_cache); // PARTITION_NONE evaluation and cost update. - pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, this_rdc, - pc_tree->region_type, pc_tree->sb_root_partition_info, bsize, - ctx_none, best_remain_rdcost); + RD_STATS *this_rdc = &part_search_state->this_rdc; + pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, this_rdc, region_type, + pc_tree->sb_root_partition_info, bsize, *ctx_none, + best_remain_rdcost); for (int k = 0; k < NUMBER_OF_CACHED_MODES; k++) { x->inter_mode_cache[k] = NULL; } - if (this_rdc->rate != INT_MAX && - !is_inter_sdp_chroma(cm, cur_region_type, x->e_mbd.tree_type) && + if (this_rdc->rate != INT_MAX && !sdp_inter_chroma_flag && !x->must_find_valid_partition) { - av2_add_mode_search_context_to_cache(sms_data, - pc_tree->none[pc_tree->region_type]); + av2_add_mode_search_context_to_cache(sms_data, *ctx_none); } if (cpi->sf.lpf_sf.enable_deblock_for_partition_search && cm->lf.apply_deblocking_filter[0] && this_rdc->rate != INT_MAX && - ctx_none != NULL && x->e_mbd.tree_type != CHROMA_PART && - !cpi->is_screen_content_type) { + xd->tree_type != CHROMA_PART && !cpi->is_screen_content_type) { const int64_t distortion_offset = get_dist_offset_by_deblock( - cpi, td, tile_data, x, tp, ctx_none, this_rdc, mi_col, mi_row, bsize); + cpi, td, tile_data, x, tp, *ctx_none, this_rdc, mi_col, mi_row, bsize); this_rdc->dist += distortion_offset; } @@ -3924,45 +3874,43 @@ static void none_partition_search( #endif // CONFIG_COLLECT_PARTITION_STATS *pb_source_variance = x->source_variance; - if (none_rd) *none_rd = this_rdc->rdcost; - part_search_state->none_rd = this_rdc->rdcost; - if (pc_tree->region_type == MIXED_INTER_INTRA_REGION || - frame_is_intra_only(cm)) - pc_tree->none_rd = *this_rdc; + if (this_rdc->rate != INT_MAX) { - pc_tree->skippable = sdp_inter_chroma_flag - ? pc_tree->none_chroma->skippable - : pc_tree->none[pc_tree->region_type]->skippable; - // Record picked ref frame to prune ref frames for other partition types. - if (cpi->sf.inter_sf.prune_ref_frames && - x->e_mbd.tree_type != CHROMA_PART) { - const int ref_type = av2_ref_frame_type( - pc_tree->none[pc_tree->region_type]->mic.ref_frame); - av2_update_picked_ref_frames_mask(x, ref_type, bsize, cm->mib_size, - mi_row, mi_col); - } + pc_tree->skippable = (*ctx_none)->skippable; // Calculate the total cost and update the best partition. if (part_search_state->is_block_splittable && !sdp_inter_chroma_flag) { - this_rdc->rate += pt_cost; + this_rdc->rate += partition_rdcost.rate; this_rdc->rdcost = RDCOST(x->rdmult, this_rdc->rate, this_rdc->dist); } *part_none_rd = this_rdc->rdcost; + if (this_rdc->rdcost < best_rdc->rdcost) { *best_rdc = *this_rdc; update_best_level_banks(level_banks, &x->e_mbd); part_search_state->found_best_partition = true; - if (!sdp_inter_chroma_flag) pc_tree->partitioning = PARTITION_NONE; - - // Disable split and rectangular partition search - // based on PARTITION_NONE cost. - if (frame_is_intra_only(cm) || cur_region_type != INTRA_REGION || - x->e_mbd.tree_type != CHROMA_PART) - prune_partitions_after_none( - cpi, x, sms_tree, pc_tree->none[pc_tree->region_type], - part_search_state, best_rdc, pb_source_variance); + if (!sdp_inter_chroma_flag) { + pc_tree->partitioning = PARTITION_NONE; + // Disable split and rectangular partition search based on + // PARTITION_NONE cost. + prune_partitions_after_none(cpi, x, sms_tree, *ctx_none, + part_search_state, best_rdc, + pb_source_variance); + } + } + // Record picked ref frame to prune ref frames for other partition types. + if (cpi->sf.inter_sf.prune_ref_frames && xd->tree_type != CHROMA_PART) { + const int ref_type = av2_ref_frame_type((*ctx_none)->mic.ref_frame); + av2_update_picked_ref_frames_mask(x, ref_type, bsize, cm->mib_size, + mi_row, mi_col); } } + + if (none_rd) *none_rd = this_rdc->rdcost; + part_search_state->none_rd = this_rdc->rdcost; + if (region_type == MIXED_INTER_INTRA_REGION || frame_is_intra_only(cm)) + pc_tree->none_rd = *this_rdc; + if (cpi->sf.part_sf.end_part_search_after_consec_failures && x->is_whole_sb && !frame_is_intra_only(cm) && part_search_state->forced_partition == PARTITION_INVALID && @@ -3973,7 +3921,7 @@ static void none_partition_search( best_rdc->rdcost < INT64_MAX) { part_search_state->terminate_partition_search = true; } - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, av2_num_planes(cm)); + av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); restore_level_banks(&x->e_mbd, level_banks); } @@ -5510,7 +5458,7 @@ bool av2_rd_pick_partition( int64_t part_none_rd = INT64_MAX; if (!search_none_after_rect && !search_none_after_split && partition_none_allowed) { - none_partition_search(cpi, td, tile_data, x, tp, pc_tree, sms_tree, &x_ctx, + none_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } @@ -5549,7 +5497,7 @@ bool av2_rd_pick_partition( } if (part_search_state.forced_partition == PARTITION_INVALID && partition_none_allowed && search_none_after_split) { - none_partition_search(cpi, td, tile_data, x, tp, pc_tree, sms_tree, &x_ctx, + none_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } @@ -5570,7 +5518,7 @@ bool av2_rd_pick_partition( partition_none_allowed) { // Prune partitions based on rect results. prune_none_after_rect(&part_search_state, pc_tree); - none_partition_search(cpi, td, tile_data, x, tp, pc_tree, sms_tree, &x_ctx, + none_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, none_rd, &part_none_rd, &level_banks, ptree_luma); } From f71f83caea7b1d7b6583d289d26f9806bf522b07 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Wed, 5 Aug 2026 12:19:22 +0530 Subject: [PATCH 141/205] Refactor partition split search function - Refactors split partition search method to reuse the shared rd_try_subblock_partition helper. - Fill split_rd[], split_part_rect_win[] - Add missing MIXED_INTER_INTRA_REGION cost term, matching rect/ext. - Restore quad_tree_idx on early-break path. STATS_CHANGED --- av2/encoder/partition_search.c | 211 +++++++++++++++++---------------- 1 file changed, 108 insertions(+), 103 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 8c55f7207a..cae1da5b37 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -3952,153 +3952,158 @@ static void av2_ml_prune_after_split(AV2_COMP *const cpi, MACROBLOCK *x, // PARTITION_SPLIT search. static void split_partition_search( AV2_COMP *const cpi, ThreadData *td, TileDataEnc *tile_data, - TokenExtra **tp, MACROBLOCK *x, PC_TREE *pc_tree, - SIMPLE_MOTION_DATA_TREE *sms_tree, RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, + TokenExtra **tp, PC_TREE *pc_tree, SIMPLE_MOTION_DATA_TREE *sms_tree, + RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, PartitionSearchState *part_search_state, RD_STATS *best_rdc, SB_MULTI_PASS_MODE multi_pass_mode, int64_t *part_split_rd, LevelBanksRDO *level_banks, const PARTITION_TREE *ptree_luma, const PARTITION_TREE *template_tree, int max_recursion_depth) { const AV2_COMMON *const cm = &cpi->common; + MACROBLOCK *const x = &td->mb; + const int num_planes = av2_num_planes(cm); + MACROBLOCKD *const xd = &x->e_mbd; + const int ss_x = xd->plane[AVM_PLANE_U].subsampling_x; + const int ss_y = xd->plane[AVM_PLANE_U].subsampling_y; const PartitionBlkParams *blk_params = &part_search_state->part_blk_params; - const CommonModeInfoParams *const mi_params = &cm->mi_params; - const int mi_row = blk_params->mi_row; - const int mi_col = blk_params->mi_col; + const int mi_row = blk_params->mi_row, mi_col = blk_params->mi_col; const BLOCK_SIZE bsize = blk_params->bsize; assert(bsize < BLOCK_SIZES_ALL); - RD_STATS sum_rdc = part_search_state->sum_rdc; - const BLOCK_SIZE subsize = get_partition_subsize(bsize, PARTITION_SPLIT); + (void)sms_tree; // Check if partition split is allowed. - (void)sms_tree; - if (part_search_state->terminate_partition_search || - !part_search_state->partition_allowed[PARTITION_SPLIT] || - !is_square_split_eligible(bsize, cm->sb_size)) { + if (part_search_state->terminate_partition_search) return; + if (!part_search_state->partition_allowed[PARTITION_SPLIT]) return; + if (!is_square_split_eligible(bsize, cm->sb_size)) return; + if (is_part_pruned_by_forced_partition(part_search_state, PARTITION_SPLIT)) return; - } - if (part_search_state->forced_partition != PARTITION_INVALID && - part_search_state->forced_partition != PARTITION_SPLIT) { - return; - } #if CONFIG_ML_PART_SPLIT - if (part_search_state->prune_partition_split) { - return; - } + if (part_search_state->prune_partition_split) return; #endif // CONFIG_ML_PART_SPLIT - if (max_recursion_depth < 0) { - return; - } + if (max_recursion_depth < 0) return; - const int num_planes = av2_num_planes(cm); - PC_TREE **sub_tree = pc_tree->split[pc_tree->region_type]; - assert(sub_tree); - for (int idx = 0; idx < SUB_PARTITIONS_SPLIT; idx++) { - if (sub_tree[idx]) { - av2_free_pc_tree_recursive(sub_tree[idx], num_planes, 0, 0); - sub_tree[idx] = NULL; - } + const int part_rate = part_search_state->partition_cost[PARTITION_SPLIT]; + if (part_rate == INT_MAX || + RDCOST(x->rdmult, part_rate, 0) >= best_rdc->rdcost) { + return; } - const MACROBLOCKD *const xd = &x->e_mbd; - const int track_ptree_luma = - is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); +#if CONFIG_COLLECT_PARTITION_STATS + PartitionTimingStats *part_timing_stats = + &part_search_state->part_timing_stats; + start_partition_block_timer(part_timing_stats, PARTITION_SPLIT); +#endif // CONFIG_COLLECT_PARTITION_STATS // Initialization of this partition RD stats. + RD_STATS sum_rdc; av2_init_rd_stats(&sum_rdc); sum_rdc.rate = part_search_state->partition_cost[PARTITION_SPLIT]; + if (pc_tree->region_type == MIXED_INTER_INTRA_REGION && pc_tree->parent && + is_extended_sdp_allowed(cpi->common.seq_params.enable_extended_sdp, + pc_tree->parent->block_size, + pc_tree->parent->partitioning) && + is_bsize_allowed_for_extended_sdp(bsize, PARTITION_SPLIT)) + sum_rdc.rate += + part_search_state->region_type_cost[MIXED_INTER_INTRA_REGION]; sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, 0); - int idx; -#if CONFIG_COLLECT_PARTITION_STATS - PartitionTimingStats *part_timing_stats = - &part_search_state->part_timing_stats; - if (best_rdc->rdcost - sum_rdc.rdcost >= 0) { - start_partition_block_timer(part_timing_stats, PARTITION_SPLIT); - } -#endif // CONFIG_COLLECT_PARTITION_STATS - // Recursive partition search on 4 sub-blocks. - for (idx = 0; idx < SUB_PARTITIONS_SPLIT && sum_rdc.rdcost < best_rdc->rdcost; - ++idx) { - const int x_idx = (idx & 1) * blk_params->mi_step; - const int y_idx = (idx >> 1) * blk_params->mi_step; - - if (mi_row + y_idx >= mi_params->mi_rows || - mi_col + x_idx >= mi_params->mi_cols) { - av2_mark_block_as_pseudo_coded(&x->e_mbd, mi_row + y_idx, mi_col + x_idx, - subsize, cm->sb_size); - continue; - } - if (pc_tree->split[pc_tree->region_type][idx] == NULL) { - pc_tree->split[pc_tree->region_type][idx] = av2_alloc_pc_tree_node( - x->e_mbd.tree_type, mi_row + y_idx, mi_col + x_idx, cm->sb_size, - subsize, pc_tree, PARTITION_SPLIT, idx, idx == 3, - part_search_state->ss_x, part_search_state->ss_y); + PC_TREE **child_nodes = pc_tree->split[pc_tree->region_type]; + assert(child_nodes); + const BLOCK_SIZE subsize = get_partition_subsize(bsize, PARTITION_SPLIT); + const CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition = + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_SPLIT, bsize); + const bool track_ptree_luma = + is_luma_chroma_share_same_partition(xd->tree_type, ptree_luma, bsize); + bool skippable = true; +#if CONFIG_ML_PART_SPLIT + int force_prune_flags[MAX_PRUNE_TYPES] = { 0 }; +#endif // CONFIG_ML_PART_SPLIT + + // Recursive partition search on 4 sub-blocks + for (int sub_idx = 0; sub_idx < SUB_PARTITIONS_SPLIT; ++sub_idx) { + const int this_mi_col = mi_col + (sub_idx & 1) * blk_params->mi_step; + const int this_mi_row = mi_row + (sub_idx >> 1) * blk_params->mi_step; + + if (child_nodes[sub_idx]) { + av2_free_pc_tree_recursive(child_nodes[sub_idx], num_planes, 0, 0); + child_nodes[sub_idx] = NULL; } - CFL_ALLOWED_FOR_SDP_TYPE is_cfl_allowed_for_this_chroma_partition = - is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_SPLIT, bsize); - pc_tree->split[pc_tree->region_type][idx]->is_cfl_allowed_for_this_chroma = - pc_tree->is_cfl_allowed_for_this_chroma | - is_cfl_allowed_for_this_chroma_partition; + child_nodes[sub_idx] = av2_alloc_pc_tree_node( + xd->tree_type, this_mi_row, this_mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_SPLIT, sub_idx, sub_idx == 3, ss_x, ss_y); if (bsize == cm->sb_size && pc_tree) - pc_tree->split[pc_tree->region_type][idx] - ->is_cfl_allowed_for_this_chroma = CFL_DISALLOWED_FOR_CHROMA; - RD_STATS best_remain_rdcost; - av2_rd_stats_subtraction(x->rdmult, best_rdc, &sum_rdc, - &best_remain_rdcost); + child_nodes[sub_idx]->is_cfl_allowed_for_this_chroma = + CFL_DISALLOWED_FOR_CHROMA; + else + child_nodes[sub_idx]->is_cfl_allowed_for_this_chroma = + pc_tree->is_cfl_allowed_for_this_chroma | + is_cfl_allowed_for_this_chroma_partition; + + if (this_mi_row >= cm->mi_params.mi_rows || + this_mi_col >= cm->mi_params.mi_cols) { + av2_mark_block_as_pseudo_coded(xd, this_mi_row, this_mi_col, subsize, + cm->sb_size); + continue; + } int curr_quad_tree_idx = 0; - if (frame_is_intra_only(cm) && bsize <= BLOCK_64X64) { + bool try_intra_cnn_split = frame_is_intra_only(cm) && bsize <= BLOCK_64X64; + if (try_intra_cnn_split) { curr_quad_tree_idx = part_search_state->intra_part_info->quad_tree_idx; part_search_state->intra_part_info->quad_tree_idx = - 4 * curr_quad_tree_idx + idx + 1; + 4 * curr_quad_tree_idx + sub_idx + 1; } - // Split partition evaluation of corresponding idx. - // If the RD cost exceeds the best cost then do not - // evaluate other split sub-partitions. -#if CONFIG_ML_PART_SPLIT - int force_prune_flags[3] = { 0, 0, 0 }; -#endif // CONFIG_ML_PART_SPLIT - if (!av2_rd_pick_partition( - cpi, td, tile_data, tp, mi_row + y_idx, mi_col + x_idx, subsize, - PARTITION_SPLIT, &part_search_state->this_rdc, best_remain_rdcost, - sub_tree[idx], track_ptree_luma ? ptree_luma->sub_tree[idx] : NULL, - get_partition_subtree_const(template_tree, idx), - max_recursion_depth, NULL, NULL, multi_pass_mode, NULL + + RDO_PICK_SB_ARGS rdo_args = { + child_nodes[sub_idx], + track_ptree_luma ? get_partition_subtree_const(ptree_luma, sub_idx) + : NULL, + get_partition_subtree_const(template_tree, sub_idx), + this_mi_row, + this_mi_col, + subsize, + PARTITION_SPLIT + }; + + if (!rd_try_subblock_partition( + cpi, td, tile_data, tp, &rdo_args, &part_search_state->this_rdc, + &sum_rdc, *best_rdc, &part_search_state->split_rd[sub_idx], + max_recursion_depth, multi_pass_mode, + &part_search_state->split_part_rect_win[sub_idx], &skippable #if CONFIG_ML_PART_SPLIT , force_prune_flags -#endif // CONFIG_ML_PART_SPLIT +#endif )) { + av2_invalid_rd_stats(&sum_rdc); + if (try_intra_cnn_split) { + part_search_state->intra_part_info->quad_tree_idx = curr_quad_tree_idx; + } break; } - if (frame_is_intra_only(cm) && bsize <= BLOCK_64X64) { + if (try_intra_cnn_split) { part_search_state->intra_part_info->quad_tree_idx = curr_quad_tree_idx; } - - sum_rdc.rate += part_search_state->this_rdc.rate; - sum_rdc.dist += part_search_state->this_rdc.dist; - av2_rd_cost_update(x->rdmult, &sum_rdc); } -#if CONFIG_COLLECT_PARTITION_STATS - end_partition_block_timer(part_timing_stats, PARTITION_SPLIT, sum_rdc.rdcost); -#endif // CONFIG_COLLECT_PARTITION_STATS - const int reached_last_index = (idx == SUB_PARTITIONS_SPLIT); // Calculate the total cost and update the best partition. + av2_rd_cost_update(x->rdmult, &sum_rdc); *part_split_rd = sum_rdc.rdcost; - if (reached_last_index && sum_rdc.rdcost < best_rdc->rdcost) { - sum_rdc.rdcost = RDCOST(x->rdmult, sum_rdc.rate, sum_rdc.dist); - if (sum_rdc.rdcost < best_rdc->rdcost) { - *best_rdc = sum_rdc; - update_best_level_banks(level_banks, &x->e_mbd); - part_search_state->found_best_partition = true; - pc_tree->partitioning = PARTITION_SPLIT; - } + if (sum_rdc.rdcost < best_rdc->rdcost) { + *best_rdc = sum_rdc; + update_best_level_banks(level_banks, &x->e_mbd); + part_search_state->found_best_partition = true; + pc_tree->partitioning = PARTITION_SPLIT; + pc_tree->skippable = skippable; } else if (cpi->sf.part_sf.less_rectangular_check_level > 0) { } - av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, av2_num_planes(cm)); +#if CONFIG_COLLECT_PARTITION_STATS + end_partition_block_timer(part_timing_stats, PARTITION_SPLIT, sum_rdc.rdcost); +#endif // CONFIG_COLLECT_PARTITION_STATS + + av2_restore_context(cm, x, x_ctx, mi_row, mi_col, bsize, num_planes); restore_level_banks(&x->e_mbd, level_banks); - // todo: this may be moved to early stage + // force early terminate after successful split if found if (part_search_state->found_best_partition && ((!bru_is_sb_active(cm, mi_col, mi_row)) || @@ -5470,7 +5475,7 @@ bool av2_rd_pick_partition( // Search partition split. int64_t part_split_rd = INT64_MAX; - split_partition_search(cpi, td, tile_data, tp, x, pc_tree, sms_tree, &x_ctx, + split_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, multi_pass_mode, &part_split_rd, &level_banks, ptree_luma, template_tree, max_recursion_depth - 1); From f5532be5ca9aa5f17e036965432aeca43fe87cca Mon Sep 17 00:00:00 2001 From: leolzhao Date: Mon, 10 Aug 2026 14:34:52 -0700 Subject: [PATCH 142/205] Apply fast method to new_newmv and new_newmv_opfl amvd sub-mode (#5238) Apply the existing amvd fast method to new_newmv and new_newmv_opfl. Test is launched on top of commit ad328d2ba0186b909. Resutls for A2 (33f) and A1 (17f) is listed below: ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.03% | 0.01% | 0.03% | 0.03% | 98.6% | | A2 | 0.06% | -0.03% | 0.04% | 0.04% | 98.1% | +---------+--------+--------+--------+--------+----------+ ``` STATS_CHANGED Co-authored-by: Leo Zhao --- av2/encoder/rdopt.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index aa7295ed1e..329d902c86 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -9363,7 +9363,9 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, mbmi->use_amvd && cm->current_frame.pyramid_level > 3) continue; if (sf->inter_sf.prune_amvd_newmv && - cm->current_frame.pyramid_level >= 4 && (mbmi->mode == NEWMV)) { + cm->current_frame.pyramid_level >= 4 && + (mbmi->mode == NEWMV || mbmi->mode == NEW_NEWMV || + mbmi->mode == NEW_NEWMV_OPTFLOW)) { if (mbmi->use_amvd && search_state.best_mbmode.mode != mbmi->mode) { continue; } From b1d1de4b1252936aef64e60b607d4e053099db7c Mon Sep 17 00:00:00 2001 From: jadhuran Date: Mon, 10 Aug 2026 14:39:46 -0700 Subject: [PATCH 143/205] CCSO early terminate by cost threshold (#5237) Early terminate ccs search by cost comparison. Enable for speed levels greater than one. Results: Anchor: 587f50e26fe339a58175a74f32f2e84fd98e622c speed 2: ``` +-------+------+------+------+------+------+-------+ | Class | Y% | U% | V% | YUV% | ENC% | DEC% | +-------+------+------+------+------+------+-------+ | A1 | 0.19 | 1.03 | 1.10 | 0.29 | 83.2 | 98.2 | | A2 | 0.14 | 1.96 | 2.11 | 0.31 | 82.8 | 100.4 | +-------+------+------+------+------+------+-------+ ``` Speed 3 ``` +-------+------+------+------+------+------+------+ | Class | Y% | U% | V% | YUV% | ENC% | DEC% | +-------+------+------+------+------+------+------+ | A1 | 0.16 | 1.35 | 1.46 | 0.28 | 78.4 | 98.1 | | A2 | 0.18 | 2.37 | 4.82 | 0.42 | 78.9 | 98.9 | +-------+------+------+------+------+------+------+ ``` Speed 4 ``` +-------+------+------+------+------+------+------+ | Class | Y% | U% | V% | YUV% | ENC% | DEC% | +-------+------+------+------+------+------+------+ | A1 | 0.21 | 1.62 | 0.99 | 0.33 | 72.0 | 99.3 | | A2 | 0.17 | 2.40 | 4.25 | 0.38 | 71.9 | 98.6 | +-------+------+------+------+------+------+------+ ``` --- av2/encoder/encoder.c | 3 ++- av2/encoder/pickccso.c | 22 ++++++++++++++++------ av2/encoder/pickccso.h | 3 ++- av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 3 +++ 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index 107e63b9df..f0bbc7c448 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -3147,7 +3147,8 @@ static void cdef_restoration_frame(AV2_COMP *cpi, AV2_COMMON *cm, , &cpi->td #endif - ); + , + cpi->sf.lpf_sf.early_terminate_ccso_search_by_cost); ccso_frame(&cm->cur_frame->buf, cm, xd, ext_rec_y); #if CONFIG_MISMATCH_DEBUG mismatch_record_frame(&cm->cur_frame->buf, num_planes, 2); diff --git a/av2/encoder/pickccso.c b/av2/encoder/pickccso.c index 78b1abbb9b..a5898421a8 100644 --- a/av2/encoder/pickccso.c +++ b/av2/encoder/pickccso.c @@ -1105,7 +1105,8 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, , ThreadData *td #endif -) { + , + int early_terminate_ccso_search) { const CommonModeInfoParams *const mi_params = &cm->mi_params; const int ccso_blk_size = get_ccso_unit_size_log2_adaptive_tile( cm, cm->mib_size_log2 + MI_SIZE_LOG2, CCSO_BLK_SIZE); @@ -1268,6 +1269,7 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, for (int quant_idx = 0; quant_idx < num_quant_iter; quant_idx++) { for (int edge_clf = 0; edge_clf < num_edge_clf_iter; edge_clf++) { const int max_edge_interval = edge_clf_to_edge_interval[edge_clf]; + uint64_t last_best_cost = final_filtered_cost; if (quant_sz[scale_idx][quant_idx] == 0 && edge_clf == 1) { continue; @@ -1605,13 +1607,17 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, memcpy(ctx->final_filter_control, ctx->best_filter_control, sizeof(*ctx->best_filter_control) * sb_count); } + if (early_terminate_ccso_search && + final_filtered_cost != UINT64_MAX && + 1.001 * final_filtered_cost > last_best_cost) + goto exit_loops; } } } } } } - +exit_loops: if (best_unfiltered_cost < final_filtered_cost) { memset(ctx->final_filter_control, 0, sizeof(*ctx->final_filter_control) * sb_count); @@ -1840,7 +1846,8 @@ void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, , ThreadData *td #endif -) { + , + int early_terminate_ccso_search) { int rdmult_weight = clamp(cm->quant_params.base_qindex >> 3, 1, 37); int64_t rdmult_temp = (int64_t)rdmult * (int64_t)rdmult_weight; if (rdmult_temp >= INT_MAX) { @@ -1867,7 +1874,8 @@ void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, , td #endif - ); + , + early_terminate_ccso_search); cm->ccso_info.ccso_frame_flag = cm->ccso_info.ccso_enable[0]; if (num_planes > 1) { @@ -1878,14 +1886,16 @@ void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, , td #endif - ); + , + early_terminate_ccso_search); derive_ccso_filter(ctx, cm, AVM_PLANE_V, xd, org_uv[AVM_PLANE_V], ext_rec_y, rec_uv[AVM_PLANE_V], rdmult, error_resilient_frame_seen #if CONFIG_ENTROPY_STATS , td #endif - ); + , + early_terminate_ccso_search); cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[1]; cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[2]; } diff --git a/av2/encoder/pickccso.h b/av2/encoder/pickccso.h index 7169accc8b..2dfd41ef7f 100644 --- a/av2/encoder/pickccso.h +++ b/av2/encoder/pickccso.h @@ -29,7 +29,8 @@ void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, , ThreadData *td #endif -); + , + int early_terminate_ccso_search); #ifdef __cplusplus } // extern "C" diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 23be62447b..bfc89b62bc 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -416,6 +416,7 @@ static void set_good_speed_features_framesize_independent( } if (speed >= 2) { + sf->lpf_sf.early_terminate_ccso_search_by_cost = 1; sf->part_sf.partition_pruning_with_mlp_none_thresh = 2.5f; sf->part_sf.intra_cnn_split = 0; sf->part_sf.simple_motion_search_early_term_none = 1; @@ -958,6 +959,7 @@ static AVM_INLINE void init_lpf_sf(LOOP_FILTER_SPEED_FEATURES *lpf_sf) { lpf_sf->disable_lr_filter = 0; lpf_sf->wienerns_refine_iters = 2; lpf_sf->enable_deblock_for_partition_search = 0; + lpf_sf->early_terminate_ccso_search_by_cost = 0; } static void av2_disable_ml_based_transform_sf(TX_SPEED_FEATURES *const tx_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index e40168e016..055135ff90 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -996,6 +996,9 @@ typedef struct LOOP_FILTER_SPEED_FEATURES { // enable deblock for block partition search int enable_deblock_for_partition_search; + + // early terminate ccso search by cost threshold + int early_terminate_ccso_search_by_cost; } LOOP_FILTER_SPEED_FEATURES; typedef struct REALTIME_SPEED_FEATURES { From 9b6e005a0797749515867e73809ef0424e166a4d Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Mon, 10 Aug 2026 14:41:39 -0700 Subject: [PATCH 144/205] set_params_rd_pick_inter_mode: Remove dead code. (#5230) This function is only called through the call chain: pick_sb_modes() --> av2_rd_pick_inter_mode_sb() --> set_params_rd_pick_inter_mode(). In this call chain, `mbmi->partition` is always set to `PARTITION_NONE`. So, the 2 set of code snippets were dead code. --- av2/encoder/rdopt.c | 39 +++------------------------------------ 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 329d902c86..c9b529c859 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -7314,20 +7314,6 @@ static AVM_INLINE int prune_ref_frame(const AV2_COMP *cpi, const MACROBLOCK *x, return 0; } -static AVM_INLINE int is_ref_frame_used_by_compound_ref( - int ref_frame, uint64_t skip_ref_frame_mask) { - for (int r = INTER_REFS_PER_FRAME; r < INTRA_FRAME; ++r) { - if (!(skip_ref_frame_mask & ((uint64_t)1 << r))) { - MV_REFERENCE_FRAME rf[2]; - av2_set_ref_frame(rf, r); - if (rf[0] == ref_frame || rf[1] == ref_frame) { - return 1; - } - } - } - return 0; -} - static AVM_INLINE int is_ref_frame_used_in_cache(MV_REFERENCE_FRAME ref_frame, const MB_MODE_INFO *mi_cache) { if (!mi_cache) { @@ -7347,8 +7333,7 @@ static AVM_INLINE int is_ref_frame_used_in_cache(MV_REFERENCE_FRAME ref_frame, // and easy to read and maintain. static AVM_INLINE void set_params_rd_pick_inter_mode( const AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, - mode_skip_mask_t *mode_skip_mask, uint64_t skip_ref_frame_mask, - unsigned int *ref_costs_single, + mode_skip_mask_t *mode_skip_mask, unsigned int *ref_costs_single, unsigned int (*ref_costs_comp)[MAX_COMPOUND_REF_INDEX], struct buf_2d yv12_mb[SINGLE_REF_FRAMES][MAX_MB_PLANE]) { const AV2_COMMON *const cm = &cpi->common; @@ -7356,6 +7341,7 @@ static AVM_INLINE void set_params_rd_pick_inter_mode( MB_MODE_INFO *const mbmi = xd->mi[0]; MB_MODE_INFO_EXT *const mbmi_ext = x->mbmi_ext; unsigned char segment_id = mbmi->segment_id; + assert(mbmi->partition == PARTITION_NONE); av2_collect_neighbors_ref_counts(xd); estimate_ref_frame_costs(cm, xd, &x->mode_costs, segment_id, ref_costs_single, @@ -7368,16 +7354,6 @@ static AVM_INLINE void set_params_rd_pick_inter_mode( mbmi_ext->ref_mv_count[ref_frame] = UINT8_MAX; x->pred_mv_sad[ref_frame] = INT_MAX; if ((cm->ref_frame_flags & (1 << ref_frame))) { - if (mbmi->partition != PARTITION_NONE && - mbmi->partition != PARTITION_SPLIT) { - if (skip_ref_frame_mask & ((uint64_t)1 << ref_frame) && - !is_ref_frame_used_by_compound_ref(ref_frame, - skip_ref_frame_mask) && - !(should_reuse_mode(x, REUSE_INTER_MODE_IN_INTERFRAME_FLAG) && - is_ref_frame_used_in_cache(ref_frame, x->inter_mode_cache[0]))) { - continue; - } - } assert(get_ref_frame_yv12_buf(cm, ref_frame) != NULL); setup_buffer_ref_mvs_inter(cpi, x, ref_frame, bsize, yv12_mb); } @@ -7406,14 +7382,6 @@ static AVM_INLINE void set_params_rd_pick_inter_mode( continue; } - if (mbmi->partition != PARTITION_NONE && - mbmi->partition != PARTITION_SPLIT) { - if (skip_ref_frame_mask & ((uint64_t)1 << ref_frame) && - !(should_reuse_mode(x, REUSE_INTER_MODE_IN_INTERFRAME_FLAG) && - is_ref_frame_used_in_cache(ref_frame, x->inter_mode_cache[0]))) { - continue; - } - } // Ref mv list population is not required, when compound references are // pruned. if (prune_ref_frame(cpi, x, ref_frame)) continue; @@ -9074,8 +9042,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, mbmi->mode = NEARMV; // init params, set frame modes, speed features set_params_rd_pick_inter_mode(cpi, x, bsize, &mode_skip_mask, - skip_ref_frame_mask, ref_costs_single, - ref_costs_comp, yv12_mb); + ref_costs_single, ref_costs_comp, yv12_mb); int64_t best_est_rd = INT64_MAX; const InterModeRdModel *md = &tile_data->inter_mode_rd_models[bsize]; From 624de3e3125b5a6462bda2585c03a39c05c6cb73 Mon Sep 17 00:00:00 2001 From: Satheesh Kumar Date: Tue, 11 Aug 2026 03:42:44 +0530 Subject: [PATCH 145/205] Rename `dist_wtd` and related terms to `cwp` (#5228) This patch replaces `dist_wtd` (distance-weighted) and related naming with `cwp` (compound weighted prediction) in functions, structs, macros, and local variables across the codec and unit tests. No functional change --- av2/common/av2_rtcd_defs.pl | 16 +- av2/common/blockd.h | 4 +- av2/common/convolve.c | 62 ++++--- av2/common/x86/highbd_convolve_2d_sse4.c | 12 +- av2/common/x86/highbd_jnt_convolve_avx2.c | 69 ++++---- av2/common/x86/highbd_jnt_convolve_sse4.c | 20 ++- av2/encoder/encoder_utils.h | 96 +++++------ av2/encoder/mcomp.c | 24 +-- avm_dsp/arm/highbd_variance_neon.c | 10 +- avm_dsp/avm_dsp_rtcd_defs.pl | 14 +- avm_dsp/sad4d.c | 7 +- avm_dsp/variance.c | 42 +++-- avm_dsp/variance.h | 15 +- avm_dsp/x86/convolve_avx2.h | 4 +- avm_dsp/x86/convolve_sse2.h | 4 +- avm_dsp/x86/convolve_sse4_1.h | 4 +- avm_dsp/x86/highbd_variance_sse2.c | 37 ++-- test/av2_convolve_test.cc | 78 ++++----- test/comp_avg_pred_test.cc | 60 ------- test/comp_weigh_pred_test.cc | 53 ++++++ ...avg_pred_test.h => comp_weigh_pred_test.h} | 161 +++++++++--------- test/sad_test.cc | 128 +++++++------- test/test.cmake | 4 +- test/variance_test.cc | 14 +- 24 files changed, 456 insertions(+), 482 deletions(-) delete mode 100644 test/comp_avg_pred_test.cc create mode 100644 test/comp_weigh_pred_test.cc rename test/{comp_avg_pred_test.h => comp_weigh_pred_test.h} (61%) diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index 497298ad04..d1ebd23cb0 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -423,16 +423,16 @@ () add_proto qw/void av2_highbd_convolve_2d_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; add_proto qw/void av2_highbd_convolve_x_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd"; add_proto qw/void av2_highbd_convolve_y_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, int bd"; -add_proto qw/void av2_highbd_dist_wtd_convolve_2d/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; -add_proto qw/void av2_highbd_dist_wtd_convolve_x/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd"; -add_proto qw/void av2_highbd_dist_wtd_convolve_y/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; -add_proto qw/void av2_highbd_dist_wtd_convolve_2d_copy/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd"; +add_proto qw/void av2_highbd_cwp_convolve_2d/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; +add_proto qw/void av2_highbd_cwp_convolve_x/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params, int bd"; +add_proto qw/void av2_highbd_cwp_convolve_y/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params, int bd"; +add_proto qw/void av2_highbd_cwp_convolve_2d_copy/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params, int bd"; add_proto qw/void av2_highbd_convolve_2d_scale/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd"; -specialize qw/av2_highbd_dist_wtd_convolve_2d sse4_1 avx2/; -specialize qw/av2_highbd_dist_wtd_convolve_x sse4_1 avx2/; -specialize qw/av2_highbd_dist_wtd_convolve_y sse4_1 avx2/; -specialize qw/av2_highbd_dist_wtd_convolve_2d_copy sse4_1 avx2/; +specialize qw/av2_highbd_cwp_convolve_2d sse4_1 avx2/; +specialize qw/av2_highbd_cwp_convolve_x sse4_1 avx2/; +specialize qw/av2_highbd_cwp_convolve_y sse4_1 avx2/; +specialize qw/av2_highbd_cwp_convolve_2d_copy sse4_1 avx2/; specialize qw/av2_highbd_convolve_2d_sr ssse3 avx2 neon/; specialize qw/av2_highbd_convolve_x_sr ssse3 avx2 neon/; specialize qw/av2_highbd_convolve_y_sr ssse3 avx2 neon/; diff --git a/av2/common/blockd.h b/av2/common/blockd.h index f582790eb8..21bb0e215f 100644 --- a/av2/common/blockd.h +++ b/av2/common/blockd.h @@ -1794,10 +1794,10 @@ typedef struct cfl_ctx { #endif // CONFIG_DEBUG } CFL_CTX; -typedef struct dist_wtd_comp_params { +typedef struct cwp_params { int fwd_offset; int bck_offset; -} DIST_WTD_COMP_PARAMS; +} CWP_PARAMS; struct scale_factors; diff --git a/av2/common/convolve.c b/av2/common/convolve.c index fb8d041682..099a497302 100644 --- a/av2/common/convolve.c +++ b/av2/common/convolve.c @@ -153,11 +153,12 @@ void av2_highbd_convolve_2d_sr_c(const uint16_t *src, int src_stride, } } -void av2_highbd_dist_wtd_convolve_2d_c( - const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, - int h, const InterpFilterParams *filter_params_x, - const InterpFilterParams *filter_params_y, const int subpel_x_qn, - const int subpel_y_qn, ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_2d_c(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, int h, + const InterpFilterParams *filter_params_x, + const InterpFilterParams *filter_params_y, + const int subpel_x_qn, const int subpel_y_qn, + ConvolveParams *conv_params, int bd) { int x, y, k; int16_t im_block[(MAX_SB_SIZE + MAX_FILTER_TAP - 1) * MAX_SB_SIZE]; CONV_BUF_TYPE *dst16 = conv_params->dst; @@ -221,12 +222,11 @@ void av2_highbd_dist_wtd_convolve_2d_c( } } -void av2_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, - uint16_t *dst, int dst_stride, int w, - int h, - const InterpFilterParams *filter_params_x, - const int subpel_x_qn, - ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_x_c(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, int h, + const InterpFilterParams *filter_params_x, + const int subpel_x_qn, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst16 = conv_params->dst; int dst16_stride = conv_params->dst_stride; const int fo_horiz = filter_params_x->taps / 2 - 1; @@ -271,12 +271,11 @@ void av2_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, } } -void av2_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, - uint16_t *dst, int dst_stride, int w, - int h, - const InterpFilterParams *filter_params_y, - const int subpel_y_qn, - ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_y_c(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, int h, + const InterpFilterParams *filter_params_y, + const int subpel_y_qn, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst16 = conv_params->dst; int dst16_stride = conv_params->dst_stride; const int fo_vert = filter_params_y->taps / 2 - 1; @@ -320,11 +319,10 @@ void av2_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, } } -void av2_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, - uint16_t *dst, int dst_stride, - int w, int h, - ConvolveParams *conv_params, - int bd) { +void av2_highbd_cwp_convolve_2d_copy_c(const uint16_t *src, int src_stride, + uint16_t *dst, int dst_stride, int w, + int h, ConvolveParams *conv_params, + int bd) { CONV_BUF_TYPE *dst16 = conv_params->dst; int dst16_stride = conv_params->dst_stride; const int bits = @@ -453,21 +451,19 @@ static void highbd_convolve_2d_facade_compound( const bool need_x = subpel_x_qn != 0; const bool need_y = subpel_y_qn != 0; if (!need_x && !need_y) { - av2_highbd_dist_wtd_convolve_2d_copy(src, src_stride, dst, dst_stride, w, h, - conv_params, bd); + av2_highbd_cwp_convolve_2d_copy(src, src_stride, dst, dst_stride, w, h, + conv_params, bd); } else if (need_x && !need_y) { - av2_highbd_dist_wtd_convolve_x(src, src_stride, dst, dst_stride, w, h, - filter_params_x, subpel_x_qn, conv_params, - bd); + av2_highbd_cwp_convolve_x(src, src_stride, dst, dst_stride, w, h, + filter_params_x, subpel_x_qn, conv_params, bd); } else if (!need_x && need_y) { - av2_highbd_dist_wtd_convolve_y(src, src_stride, dst, dst_stride, w, h, - filter_params_y, subpel_y_qn, conv_params, - bd); + av2_highbd_cwp_convolve_y(src, src_stride, dst, dst_stride, w, h, + filter_params_y, subpel_y_qn, conv_params, bd); } else { assert(need_x && need_y); - av2_highbd_dist_wtd_convolve_2d(src, src_stride, dst, dst_stride, w, h, - filter_params_x, filter_params_y, - subpel_x_qn, subpel_y_qn, conv_params, bd); + av2_highbd_cwp_convolve_2d(src, src_stride, dst, dst_stride, w, h, + filter_params_x, filter_params_y, subpel_x_qn, + subpel_y_qn, conv_params, bd); } } diff --git a/av2/common/x86/highbd_convolve_2d_sse4.c b/av2/common/x86/highbd_convolve_2d_sse4.c index e0423567fe..11be9c138c 100644 --- a/av2/common/x86/highbd_convolve_2d_sse4.c +++ b/av2/common/x86/highbd_convolve_2d_sse4.c @@ -22,11 +22,11 @@ #include "avm_dsp/x86/convolve_sse4_1.h" #include "av2/common/convolve.h" -void av2_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, - int src_stride, uint16_t *dst0, - int dst_stride0, int w, int h, - ConvolveParams *conv_params, - int bd) { +void av2_highbd_cwp_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, + uint16_t *dst0, int dst_stride0, + int w, int h, + ConvolveParams *conv_params, + int bd) { CONV_BUF_TYPE *dst = conv_params->dst; int dst_stride = conv_params->dst_stride; @@ -163,7 +163,7 @@ void av2_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, } } -void av2_highbd_dist_wtd_convolve_2d_sse4_1( +void av2_highbd_cwp_convolve_2d_sse4_1( const uint16_t *src, int src_stride, uint16_t *dst0, int dst_stride0, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, diff --git a/av2/common/x86/highbd_jnt_convolve_avx2.c b/av2/common/x86/highbd_jnt_convolve_avx2.c index f676d7e882..742eda0519 100644 --- a/av2/common/x86/highbd_jnt_convolve_avx2.c +++ b/av2/common/x86/highbd_jnt_convolve_avx2.c @@ -23,7 +23,7 @@ #include "avm_dsp/avm_filter.h" #include "av2/common/convolve.h" -#define CONVOLVE_DIST_WTD_VERT_FILTER_8TAP \ +#define CONVOLVE_CWP_VERT_FILTER_8TAP \ const __m256i s0 = \ _mm256_loadu_si256((__m256i *)(im_block + 0 * im_stride)); \ const __m256i s1 = \ @@ -182,7 +182,7 @@ } \ } -#define CONVOLVE_DIST_WTD_VERT_FILTER_6TAP \ +#define CONVOLVE_CWP_VERT_FILTER_6TAP \ const __m256i s0 = \ _mm256_loadu_si256((__m256i *)(im_block + 0 * im_stride)); \ const __m256i s1 = \ @@ -331,7 +331,7 @@ } \ } -#define CONVOLVE_DIST_WTD_VERT_FILTER_4TAP \ +#define CONVOLVE_CWP_VERT_FILTER_4TAP \ const __m256i s0 = \ _mm256_loadu_si256((__m256i *)(im_block + 0 * im_stride)); \ const __m256i s1 = \ @@ -470,7 +470,7 @@ } \ } -#define CONVOLVE_DIST_WTD_VERT_FILTER_2TAP \ +#define CONVOLVE_CWP_VERT_FILTER_2TAP \ if (w - j < 8) { \ for (i = 0; i < h; i += 2) { \ const int16_t *data = &im_block[i * im_stride]; \ @@ -605,7 +605,7 @@ static INLINE void _mm_storeh_epi64(__m128i *const d, __m128i s) { _mm_storeh_pi((__m64 *)d, _mm_castsi128_ps(s)); } -static INLINE void highbd_dist_wtd_convolve_2d_copy_do_average( +static INLINE void highbd_cwp_convolve_2d_copy_do_average( __m256i data, __m256i zero, __m256i res, const __m256i *offset_const, const __m256i *wt0, const __m256i *wt1, int use_wtd_comp_avg, const __m256i *const rounding_const, int rounding_shift, @@ -634,11 +634,10 @@ static INLINE void highbd_dist_wtd_convolve_2d_copy_do_average( *res_clip = _mm256_min_epi16(res_16b, clip_pixel_to_bd); } -void av2_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, - int src_stride, uint16_t *dst0, - int dst_stride0, int w, int h, - ConvolveParams *conv_params, - int bd) { +void av2_highbd_cwp_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, + uint16_t *dst0, int dst_stride0, + int w, int h, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst = conv_params->dst; int dst_stride = conv_params->dst_stride; @@ -680,7 +679,7 @@ void av2_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, const __m256i data_0 = _mm256_loadu_si256((__m256i *)(&dst[i * dst_stride + j])); - highbd_dist_wtd_convolve_2d_copy_do_average( + highbd_cwp_convolve_2d_copy_do_average( data_0, zero, res, &offset_const, &wt0, &wt1, use_wtd_comp_avg, &rounding_const, rounding_shift, clip_pixel_to_bd, &res_clip); @@ -709,7 +708,7 @@ void av2_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, const __m256i data_01 = _mm256_permute2x128_si256(data_0, data_1, 0x20); - highbd_dist_wtd_convolve_2d_copy_do_average( + highbd_cwp_convolve_2d_copy_do_average( data_01, zero, res, &offset_const, &wt0, &wt1, use_wtd_comp_avg, &rounding_const, rounding_shift, clip_pixel_to_bd, &res_clip); @@ -749,7 +748,7 @@ void av2_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, const __m256i data_01 = _mm256_permute2x128_si256(data_0, data_1, 0x20); - highbd_dist_wtd_convolve_2d_copy_do_average( + highbd_cwp_convolve_2d_copy_do_average( data_01, zero, res, &offset_const, &wt0, &wt1, use_wtd_comp_avg, &rounding_const, rounding_shift, clip_pixel_to_bd, &res_clip); @@ -845,10 +844,12 @@ DECLARE_ALIGNED(32, static const uint8_t, shuffle_mask1[32]) = { 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13 }; -static INLINE void dist_wtd_convolve_horiz_w4( - const uint16_t *src_ptr, int src_stride, const __m256i *const coeffs, - int im_h, int16_t *im_block, int im_stride, const __m256i *round_const_x, - const __m128i *round_shift_x) { +static INLINE void cwp_convolve_horiz_w4(const uint16_t *src_ptr, + int src_stride, + const __m256i *const coeffs, int im_h, + int16_t *im_block, int im_stride, + const __m256i *round_const_x, + const __m128i *round_shift_x) { __m256i s[2]; for (int i = 0; i < im_h; i += 2) { const __m256i row0 = @@ -872,7 +873,7 @@ static INLINE void dist_wtd_convolve_horiz_w4( } } -void av2_highbd_dist_wtd_convolve_2d_avx2( +void av2_highbd_cwp_convolve_2d_avx2( const uint16_t *src, int src_stride, uint16_t *dst0, int dst_stride0, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, @@ -951,8 +952,8 @@ void av2_highbd_dist_wtd_convolve_2d_avx2( /* Horizontal filter */ if (w == 4) { assert(tap_x == 2 || tap_x == 4); - dist_wtd_convolve_horiz_w4(src_ptr, src_stride, coeffs_x, im_h, im_block, - im_stride, &round_const_x, &round_shift_x); + cwp_convolve_horiz_w4(src_ptr, src_stride, coeffs_x, im_h, im_block, + im_stride, &round_const_x, &round_shift_x); } else { if (tap_x == 8) { CONVOLVE_HORIZ_FILTER_8TAP @@ -967,21 +968,23 @@ void av2_highbd_dist_wtd_convolve_2d_avx2( /* Vertical filter */ if (tap_y == 8) { - CONVOLVE_DIST_WTD_VERT_FILTER_8TAP + CONVOLVE_CWP_VERT_FILTER_8TAP } else if (tap_y == 6) { - CONVOLVE_DIST_WTD_VERT_FILTER_6TAP + CONVOLVE_CWP_VERT_FILTER_6TAP } else if (tap_y == 4) { - CONVOLVE_DIST_WTD_VERT_FILTER_4TAP + CONVOLVE_CWP_VERT_FILTER_4TAP } else { - CONVOLVE_DIST_WTD_VERT_FILTER_2TAP + CONVOLVE_CWP_VERT_FILTER_2TAP } } } -void av2_highbd_dist_wtd_convolve_x_avx2( - const uint16_t *src, int src_stride, uint16_t *dst0, int dst_stride0, int w, - int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, - ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_x_avx2(const uint16_t *src, int src_stride, + uint16_t *dst0, int dst_stride0, int w, + int h, + const InterpFilterParams *filter_params_x, + const int subpel_x_qn, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst = conv_params->dst; int dst_stride = conv_params->dst_stride; const int fo_horiz = filter_params_x->taps / 2 - 1; @@ -1142,10 +1145,12 @@ void av2_highbd_dist_wtd_convolve_x_avx2( } } -void av2_highbd_dist_wtd_convolve_y_avx2( - const uint16_t *src, int src_stride, uint16_t *dst0, int dst_stride0, int w, - int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, - ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_y_avx2(const uint16_t *src, int src_stride, + uint16_t *dst0, int dst_stride0, int w, + int h, + const InterpFilterParams *filter_params_y, + const int subpel_y_qn, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst = conv_params->dst; int dst_stride = conv_params->dst_stride; const int fo_vert = filter_params_y->taps / 2 - 1; diff --git a/av2/common/x86/highbd_jnt_convolve_sse4.c b/av2/common/x86/highbd_jnt_convolve_sse4.c index 20819f0f64..e13fd272cb 100644 --- a/av2/common/x86/highbd_jnt_convolve_sse4.c +++ b/av2/common/x86/highbd_jnt_convolve_sse4.c @@ -18,10 +18,12 @@ #include "avm_dsp/x86/convolve_sse2.h" #include "avm_dsp/x86/convolve_sse4_1.h" -void av2_highbd_dist_wtd_convolve_y_sse4_1( - const uint16_t *src, int src_stride, uint16_t *dst0, int dst_stride0, int w, - int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, - ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_y_sse4_1(const uint16_t *src, int src_stride, + uint16_t *dst0, int dst_stride0, int w, + int h, + const InterpFilterParams *filter_params_y, + const int subpel_y_qn, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst = conv_params->dst; int dst_stride = conv_params->dst_stride; const int fo_vert = filter_params_y->taps / 2 - 1; @@ -255,10 +257,12 @@ void av2_highbd_dist_wtd_convolve_y_sse4_1( } } -void av2_highbd_dist_wtd_convolve_x_sse4_1( - const uint16_t *src, int src_stride, uint16_t *dst0, int dst_stride0, int w, - int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, - ConvolveParams *conv_params, int bd) { +void av2_highbd_cwp_convolve_x_sse4_1(const uint16_t *src, int src_stride, + uint16_t *dst0, int dst_stride0, int w, + int h, + const InterpFilterParams *filter_params_x, + const int subpel_x_qn, + ConvolveParams *conv_params, int bd) { CONV_BUF_TYPE *dst = conv_params->dst; int dst_stride = conv_params->dst_stride; const int fo_horiz = filter_params_x->taps / 2 - 1; diff --git a/av2/encoder/encoder_utils.h b/av2/encoder/encoder_utils.h index 5878a1909a..c863597e18 100644 --- a/av2/encoder/encoder_utils.h +++ b/av2/encoder/encoder_utils.h @@ -143,16 +143,16 @@ static AVM_INLINE void init_buffer_indices( cpi->fn_ptr[BT].jsdaf = JSDAF; \ cpi->fn_ptr[BT].jsvaf = JSVAF; -#define HIGHBD_BFP_WRAPPER(WIDTH, HEIGHT, BD) \ - HIGHBD_BFP( \ - BLOCK_##WIDTH##X##HEIGHT, avm_highbd_sad##WIDTH##x##HEIGHT##_bits##BD, \ - avm_highbd_sad##WIDTH##x##HEIGHT##_avg_bits##BD, \ - avm_highbd_##BD##_variance##WIDTH##x##HEIGHT, \ - avm_highbd_##BD##_sub_pixel_variance##WIDTH##x##HEIGHT, \ - avm_highbd_##BD##_sub_pixel_avg_variance##WIDTH##x##HEIGHT, \ - avm_highbd_sad##WIDTH##x##HEIGHT##x4d_bits##BD, \ - avm_highbd_dist_wtd_sad##WIDTH##x##HEIGHT##_avg_bits##BD, \ - avm_highbd_##BD##_dist_wtd_sub_pixel_avg_variance##WIDTH##x##HEIGHT) +#define HIGHBD_BFP_WRAPPER(WIDTH, HEIGHT, BD) \ + HIGHBD_BFP(BLOCK_##WIDTH##X##HEIGHT, \ + avm_highbd_sad##WIDTH##x##HEIGHT##_bits##BD, \ + avm_highbd_sad##WIDTH##x##HEIGHT##_avg_bits##BD, \ + avm_highbd_##BD##_variance##WIDTH##x##HEIGHT, \ + avm_highbd_##BD##_sub_pixel_variance##WIDTH##x##HEIGHT, \ + avm_highbd_##BD##_sub_pixel_avg_variance##WIDTH##x##HEIGHT, \ + avm_highbd_sad##WIDTH##x##HEIGHT##x4d_bits##BD, \ + avm_highbd_cwp_sad##WIDTH##x##HEIGHT##_avg_bits##BD, \ + avm_highbd_##BD##_cwp_sub_pixel_avg_variance##WIDTH##x##HEIGHT) #define MAKE_BFP_SAD_WRAPPER(fnname) \ static unsigned int fnname##_bits8( \ @@ -215,24 +215,24 @@ static AVM_INLINE void init_buffer_indices( static unsigned int fnname##_bits8( \ const uint16_t *src_ptr, int source_stride, const uint16_t *ref_ptr, \ int ref_stride, const uint16_t *second_pred, \ - const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const CWP_PARAMS *cwp_param) { \ return fnname(src_ptr, source_stride, ref_ptr, ref_stride, second_pred, \ - jcp_param); \ + cwp_param); \ } \ static unsigned int fnname##_bits10( \ const uint16_t *src_ptr, int source_stride, const uint16_t *ref_ptr, \ int ref_stride, const uint16_t *second_pred, \ - const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const CWP_PARAMS *cwp_param) { \ return fnname(src_ptr, source_stride, ref_ptr, ref_stride, second_pred, \ - jcp_param) >> \ + cwp_param) >> \ 2; \ } \ static unsigned int fnname##_bits12( \ const uint16_t *src_ptr, int source_stride, const uint16_t *ref_ptr, \ int ref_stride, const uint16_t *second_pred, \ - const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const CWP_PARAMS *cwp_param) { \ return fnname(src_ptr, source_stride, ref_ptr, ref_stride, second_pred, \ - jcp_param) >> \ + cwp_param) >> \ 4; \ } @@ -336,38 +336,38 @@ MAKE_BFP_SAD_WRAPPER(avm_highbd_sad4x32) MAKE_BFP_SADAVG_WRAPPER(avm_highbd_sad4x32_avg) MAKE_BFP_SAD4D_WRAPPER(avm_highbd_sad4x32x4d) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad256x256_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad256x128_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad128x256_avg) - -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad128x128_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad128x64_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad64x128_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad32x16_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad16x32_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad64x32_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad32x64_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad32x32_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad64x64_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad16x16_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad16x8_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad8x16_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad8x8_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad8x4_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad4x8_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad4x4_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad4x16_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad16x4_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad8x32_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad32x8_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad16x64_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad64x16_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad8x64_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad64x8_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad4x64_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad64x4_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad4x32_avg) -MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_dist_wtd_sad32x4_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad256x256_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad256x128_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad128x256_avg) + +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad128x128_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad128x64_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad64x128_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad32x16_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad16x32_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad64x32_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad32x64_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad32x32_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad64x64_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad16x16_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad16x8_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad8x16_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad8x8_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad8x4_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad4x8_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad4x4_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad4x16_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad16x4_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad8x32_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad32x8_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad16x64_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad64x16_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad8x64_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad64x8_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad4x64_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad64x4_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad4x32_avg) +MAKE_BFP_JSADAVG_WRAPPER(avm_highbd_cwp_sad32x4_avg) #define HIGHBD_MBFP(BT, MCSDF, MCSVF) \ cpi->fn_ptr[BT].msdf = MCSDF; \ diff --git a/av2/encoder/mcomp.c b/av2/encoder/mcomp.c index 99195db462..e7c410415d 100644 --- a/av2/encoder/mcomp.c +++ b/av2/encoder/mcomp.c @@ -1083,11 +1083,11 @@ static INLINE int get_mvpred_compound_var_cost( // Set weighting factor for two reference frames static INLINE void set_cmp_weight(const MB_MODE_INFO *mi, int invert_mask, - DIST_WTD_COMP_PARAMS *jcp_param) { + CWP_PARAMS *cwp_param) { int weight = get_cwp_idx(mi); weight = invert_mask ? (1 << CWP_WEIGHT_BITS) - weight : weight; - jcp_param->fwd_offset = weight; - jcp_param->bck_offset = (1 << CWP_WEIGHT_BITS) - weight; + cwp_param->fwd_offset = weight; + cwp_param->bck_offset = (1 << CWP_WEIGHT_BITS) - weight; } static INLINE int get_mvpred_compound_sad( @@ -1109,11 +1109,11 @@ static INLINE int get_mvpred_compound_sad( } else if (second_pred) { const MB_MODE_INFO *mi = ms_params->xd->mi[0]; if (get_cwp_idx(mi) != CWP_EQUAL) { - DIST_WTD_COMP_PARAMS jcp_param; - set_cmp_weight(mi, invert_mask, &jcp_param); + CWP_PARAMS cwp_param; + set_cmp_weight(mi, invert_mask, &cwp_param); return vfp->jsdaf(src_buf, src_stride, ref_address, ref_stride, - second_pred, &jcp_param); + second_pred, &cwp_param); } return vfp->sdaf(src_buf, src_stride, ref_address, ref_stride, second_pred); } else { @@ -2854,13 +2854,13 @@ int upsampled_pref_error(MACROBLOCKD *xd, const AV2_COMMON *cm, subpel_search_type, is_scaled_ref); } else { if (get_cwp_idx(xd->mi[0]) != CWP_EQUAL) { - DIST_WTD_COMP_PARAMS jcp_param; - set_cmp_weight(xd->mi[0], invert_mask, &jcp_param); + CWP_PARAMS cwp_param; + set_cmp_weight(xd->mi[0], invert_mask, &cwp_param); - avm_highbd_dist_wtd_comp_avg_upsampled_pred( - xd, cm, mi_row, mi_col, this_mv, pred, second_pred, w, h, - subpel_x_q3, subpel_y_q3, ref, ref_stride, xd->bd, &jcp_param, - subpel_search_type, is_scaled_ref); + avm_highbd_cwp_upsampled(xd, cm, mi_row, mi_col, this_mv, pred, + second_pred, w, h, subpel_x_q3, subpel_y_q3, + ref, ref_stride, xd->bd, &cwp_param, + subpel_search_type, is_scaled_ref); } else avm_highbd_comp_avg_upsampled_pred(xd, cm, mi_row, mi_col, this_mv, diff --git a/avm_dsp/arm/highbd_variance_neon.c b/avm_dsp/arm/highbd_variance_neon.c index 63beb3a8ed..344f4b27ad 100644 --- a/avm_dsp/arm/highbd_variance_neon.c +++ b/avm_dsp/arm/highbd_variance_neon.c @@ -44,18 +44,18 @@ void avm_highbd_comp_avg_upsampled_pred_neon( } } -void avm_highbd_dist_wtd_comp_avg_upsampled_pred_neon( +void avm_highbd_cwp_upsampled_neon( MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred, const uint16_t *pred, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, - int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, - int subpel_search, int is_scaled_ref) { + int ref_stride, int bd, const CWP_PARAMS *cwp_param, int subpel_search, + int is_scaled_ref) { avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred, width, height, subpel_x_q3, subpel_y_q3, ref, ref_stride, bd, subpel_search, is_scaled_ref); assert(!(width * height & 7)); - const int fwd_offset = jcp_param->fwd_offset; - const int bck_offset = jcp_param->bck_offset; + const int fwd_offset = cwp_param->fwd_offset; + const int bck_offset = cwp_param->bck_offset; const int16x4_t fwd = vdup_n_s16((int16_t)fwd_offset); const int16x4_t bck = vdup_n_s16((int16_t)bck_offset); const int32x4_t round = vdupq_n_s32(1 << (DIST_PRECISION_BITS - 1)); diff --git a/avm_dsp/avm_dsp_rtcd_defs.pl b/avm_dsp/avm_dsp_rtcd_defs.pl index f37ed853c9..b12103faac 100644 --- a/avm_dsp/avm_dsp_rtcd_defs.pl +++ b/avm_dsp/avm_dsp_rtcd_defs.pl @@ -338,7 +338,7 @@ () specialize "avm_highbd_sad${w}x${h}_avg", qw/sse2/; } } - add_proto qw/unsigned int/, "avm_highbd_dist_wtd_sad${w}x${h}_avg", "const uint16_t *src_ptr, int src_stride, const uint16_t *ref_ptr, int ref_stride, const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS* jcp_param"; + add_proto qw/unsigned int/, "avm_highbd_cwp_sad${w}x${h}_avg", "const uint16_t *src_ptr, int src_stride, const uint16_t *ref_ptr, int ref_stride, const uint16_t *second_pred, const CWP_PARAMS* cwp_param"; } specialize qw/avm_highbd_sad256x256 avx2/; specialize qw/avm_highbd_sad256x128 avx2/; @@ -593,11 +593,11 @@ () int bd, int subpel_search, int is_scaled_ref"; specialize qw/avm_highbd_comp_avg_upsampled_pred sse2 avx2 neon/; - add_proto qw/void avm_highbd_dist_wtd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, + add_proto qw/void avm_highbd_cwp_upsampled/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, - int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search, int is_scaled_ref"; - specialize qw/avm_highbd_dist_wtd_comp_avg_upsampled_pred sse2 neon/; + int ref_stride, int bd, const CWP_PARAMS *cwp_param, int subpel_search, int is_scaled_ref"; + specialize qw/avm_highbd_cwp_upsampled sse2 neon/; add_proto qw/void avm_highbd_comp_mask_upsampled_pred/, "MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, @@ -650,7 +650,7 @@ () } } - add_proto qw/uint32_t/, "avm_highbd_${bd}_dist_wtd_sub_pixel_avg_variance${w}x${h}", "const uint16_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint16_t *ref_ptr, int ref_stride, uint32_t *sse, const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS* jcp_param"; + add_proto qw/uint32_t/, "avm_highbd_${bd}_cwp_sub_pixel_avg_variance${w}x${h}", "const uint16_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint16_t *ref_ptr, int ref_stride, uint32_t *sse, const uint16_t *second_pred, const CWP_PARAMS* cwp_param"; } } # @@ -916,8 +916,8 @@ () add_proto qw/void avm_highbd_comp_avg_pred/, "uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, const uint16_t *ref8, int ref_stride"; - add_proto qw/void avm_highbd_dist_wtd_comp_avg_pred/, "uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, const uint16_t *ref8, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param"; - specialize qw/avm_highbd_dist_wtd_comp_avg_pred sse2/; + add_proto qw/void avm_highbd_cwp/, "uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, const uint16_t *ref8, int ref_stride, const CWP_PARAMS *cwp_param"; + specialize qw/avm_highbd_cwp sse2/; add_proto qw/uint64_t/, "avm_mse_wxh_16bit_highbd", "uint16_t *dst, int dstride,uint16_t *src, int sstride, int w, int h"; specialize qw/avm_mse_wxh_16bit_highbd sse2 avx2/; diff --git a/avm_dsp/sad4d.c b/avm_dsp/sad4d.c index 1195faf336..27be36ac9e 100644 --- a/avm_dsp/sad4d.c +++ b/avm_dsp/sad4d.c @@ -59,13 +59,12 @@ static INLINE unsigned int highbd_sadb(const uint16_t *a, int a_stride, avm_highbd_comp_avg_pred(comp_pred, second_pred, m, n, ref, ref_stride); \ return highbd_sadb(src, src_stride, comp_pred, m, m, n); \ } \ - unsigned int avm_highbd_dist_wtd_sad##m##x##n##_avg_c( \ + unsigned int avm_highbd_cwp_sad##m##x##n##_avg_c( \ const uint16_t *src, int src_stride, const uint16_t *ref, \ int ref_stride, const uint16_t *second_pred, \ - const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const CWP_PARAMS *cwp_param) { \ uint16_t comp_pred[m * n]; \ - avm_highbd_dist_wtd_comp_avg_pred(comp_pred, second_pred, m, n, ref, \ - ref_stride, jcp_param); \ + avm_highbd_cwp(comp_pred, second_pred, m, n, ref, ref_stride, cwp_param); \ return highbd_sadb(src, src_stride, comp_pred, m, m, n); \ } \ unsigned int avm_highbd_sad_skip_##m##x##n##_c( \ diff --git a/avm_dsp/variance.c b/avm_dsp/variance.c index 16d223333d..1ed35640b5 100644 --- a/avm_dsp/variance.c +++ b/avm_dsp/variance.c @@ -374,10 +374,10 @@ void avm_highbd_var_filter_block2d_bil_second_pass( sse); \ } \ \ - uint32_t avm_highbd_8_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \ + uint32_t avm_highbd_8_cwp_sub_pixel_avg_variance##W##x##H##_c( \ const uint16_t *src, int src_stride, int xoffset, int yoffset, \ const uint16_t *dst, int dst_stride, uint32_t *sse, \ - const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const uint16_t *second_pred, const CWP_PARAMS *cwp_param) { \ uint16_t fdata3[(H + 1) * W]; \ uint16_t temp2[H * W]; \ DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \ @@ -387,16 +387,15 @@ void avm_highbd_var_filter_block2d_bil_second_pass( avm_highbd_var_filter_block2d_bil_second_pass( \ fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \ \ - avm_highbd_dist_wtd_comp_avg_pred((temp3), second_pred, W, H, (temp2), W, \ - jcp_param); \ + avm_highbd_cwp((temp3), second_pred, W, H, (temp2), W, cwp_param); \ \ return avm_highbd_8_variance##W##x##H((temp3), W, dst, dst_stride, sse); \ } \ \ - uint32_t avm_highbd_10_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \ + uint32_t avm_highbd_10_cwp_sub_pixel_avg_variance##W##x##H##_c( \ const uint16_t *src, int src_stride, int xoffset, int yoffset, \ const uint16_t *dst, int dst_stride, uint32_t *sse, \ - const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const uint16_t *second_pred, const CWP_PARAMS *cwp_param) { \ uint16_t fdata3[(H + 1) * W]; \ uint16_t temp2[H * W]; \ DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \ @@ -406,16 +405,15 @@ void avm_highbd_var_filter_block2d_bil_second_pass( avm_highbd_var_filter_block2d_bil_second_pass( \ fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \ \ - avm_highbd_dist_wtd_comp_avg_pred((temp3), second_pred, W, H, (temp2), W, \ - jcp_param); \ + avm_highbd_cwp((temp3), second_pred, W, H, (temp2), W, cwp_param); \ \ return avm_highbd_10_variance##W##x##H((temp3), W, dst, dst_stride, sse); \ } \ \ - uint32_t avm_highbd_12_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \ + uint32_t avm_highbd_12_cwp_sub_pixel_avg_variance##W##x##H##_c( \ const uint16_t *src, int src_stride, int xoffset, int yoffset, \ const uint16_t *dst, int dst_stride, uint32_t *sse, \ - const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \ + const uint16_t *second_pred, const CWP_PARAMS *cwp_param) { \ uint16_t fdata3[(H + 1) * W]; \ uint16_t temp2[H * W]; \ DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \ @@ -425,8 +423,7 @@ void avm_highbd_var_filter_block2d_bil_second_pass( avm_highbd_var_filter_block2d_bil_second_pass( \ fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \ \ - avm_highbd_dist_wtd_comp_avg_pred((temp3), second_pred, W, H, (temp2), W, \ - jcp_param); \ + avm_highbd_cwp((temp3), second_pred, W, H, (temp2), W, cwp_param); \ \ return avm_highbd_12_variance##W##x##H((temp3), W, dst, dst_stride, sse); \ } @@ -586,13 +583,12 @@ void avm_highbd_comp_avg_upsampled_pred_c( } } -void avm_highbd_dist_wtd_comp_avg_pred_c( - uint16_t *comp_pred, const uint16_t *pred, int width, int height, - const uint16_t *ref, int ref_stride, - const DIST_WTD_COMP_PARAMS *jcp_param) { +void avm_highbd_cwp_c(uint16_t *comp_pred, const uint16_t *pred, int width, + int height, const uint16_t *ref, int ref_stride, + const CWP_PARAMS *cwp_param) { int i, j; - const int fwd_offset = jcp_param->fwd_offset; - const int bck_offset = jcp_param->bck_offset; + const int fwd_offset = cwp_param->fwd_offset; + const int bck_offset = cwp_param->bck_offset; for (i = 0; i < height; ++i) { for (j = 0; j < width; ++j) { @@ -606,15 +602,15 @@ void avm_highbd_dist_wtd_comp_avg_pred_c( } } -void avm_highbd_dist_wtd_comp_avg_upsampled_pred_c( +void avm_highbd_cwp_upsampled_c( MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred, const uint16_t *pred, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, - int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, - int subpel_search, int is_scaled_ref) { + int ref_stride, int bd, const CWP_PARAMS *cwp_param, int subpel_search, + int is_scaled_ref) { int i, j; - const int fwd_offset = jcp_param->fwd_offset; - const int bck_offset = jcp_param->bck_offset; + const int fwd_offset = cwp_param->fwd_offset; + const int bck_offset = cwp_param->bck_offset; avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred, width, height, subpel_x_q3, subpel_y_q3, ref, ref_stride, bd, subpel_search, is_scaled_ref); diff --git a/avm_dsp/variance.h b/avm_dsp/variance.h index 553befd6ca..9da6efdb46 100644 --- a/avm_dsp/variance.h +++ b/avm_dsp/variance.h @@ -52,14 +52,15 @@ typedef unsigned int (*avm_subp_avg_variance_fn_t)( const uint16_t *b, int b_stride, unsigned int *sse, const uint16_t *second_pred); -typedef unsigned int (*avm_dist_wtd_sad_avg_fn_t)( - const uint16_t *a, int a_stride, const uint16_t *b, int b_stride, - const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); +typedef unsigned int (*avm_cwp_sad_avg_fn_t)(const uint16_t *a, int a_stride, + const uint16_t *b, int b_stride, + const uint16_t *second_pred, + const CWP_PARAMS *cwp_param); -typedef unsigned int (*avm_dist_wtd_subp_avg_variance_fn_t)( +typedef unsigned int (*avm_cwp_subp_avg_variance_fn_t)( const uint16_t *a, int a_stride, int xoffset, int yoffset, const uint16_t *b, int b_stride, unsigned int *sse, - const uint16_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); + const uint16_t *second_pred, const CWP_PARAMS *cwp_param); typedef unsigned int (*avm_masked_sad_fn_t)(const uint16_t *src, int src_stride, const uint16_t *ref, int ref_stride, @@ -84,8 +85,8 @@ typedef struct avm_variance_vtable { avm_sad_multi_d_fn_t sdsx4df; avm_masked_sad_fn_t msdf; avm_masked_subpixvariance_fn_t msvf; - avm_dist_wtd_sad_avg_fn_t jsdaf; - avm_dist_wtd_subp_avg_variance_fn_t jsvaf; + avm_cwp_sad_avg_fn_t jsdaf; + avm_cwp_subp_avg_variance_fn_t jsvaf; } avm_variance_fn_ptr_t; void avm_highbd_var_filter_block2d_bil_first_pass( diff --git a/avm_dsp/x86/convolve_avx2.h b/avm_dsp/x86/convolve_avx2.h index 058794d91d..95057353b9 100644 --- a/avm_dsp/x86/convolve_avx2.h +++ b/avm_dsp/x86/convolve_avx2.h @@ -447,7 +447,7 @@ DECLARE_ALIGNED(32, static const uint8_t, filt4_global_avx2[32]) = { s[6] = s[7]; \ } -#define DIST_WTD_CONVOLVE_HORIZONTAL_FILTER_8TAP \ +#define CWP_CONVOLVE_HORIZONTAL_FILTER_8TAP \ for (i = 0; i < im_h; i += 2) { \ __m256i data = _mm256_castsi128_si256(_mm_loadu_si128((__m128i *)src_h)); \ if (i + 1 < im_h) \ @@ -464,7 +464,7 @@ DECLARE_ALIGNED(32, static const uint8_t, filt4_global_avx2[32]) = { // In optical flow MV refinement, unaligned store (_mm_storeu_si128) is used // in this function to avoid a subblock boundary error. -#define DIST_WTD_CONVOLVE_VERTICAL_FILTER_8TAP \ +#define CWP_CONVOLVE_VERTICAL_FILTER_8TAP \ __m256i s[8]; \ __m256i s0 = _mm256_loadu_si256((__m256i *)(im_block + 0 * im_stride)); \ __m256i s1 = _mm256_loadu_si256((__m256i *)(im_block + 1 * im_stride)); \ diff --git a/avm_dsp/x86/convolve_sse2.h b/avm_dsp/x86/convolve_sse2.h index 861a853f2d..bca38b172a 100644 --- a/avm_dsp/x86/convolve_sse2.h +++ b/avm_dsp/x86/convolve_sse2.h @@ -79,9 +79,9 @@ static INLINE __m128i convolve_hi_y(const __m128i *const s, static INLINE __m128i comp_avg(const __m128i *const data_ref_0, const __m128i *const res_unsigned, const __m128i *const wt, - const int use_dist_wtd_avg) { + const int use_comp_wtd_avg) { __m128i res; - if (use_dist_wtd_avg) { + if (use_comp_wtd_avg) { const __m128i data_lo = _mm_unpacklo_epi16(*data_ref_0, *res_unsigned); const __m128i data_hi = _mm_unpackhi_epi16(*data_ref_0, *res_unsigned); diff --git a/avm_dsp/x86/convolve_sse4_1.h b/avm_dsp/x86/convolve_sse4_1.h index 413685c680..3221f6b516 100644 --- a/avm_dsp/x86/convolve_sse4_1.h +++ b/avm_dsp/x86/convolve_sse4_1.h @@ -42,9 +42,9 @@ static INLINE __m128i highbd_comp_avg_sse4_1(const __m128i *const data_ref_0, const __m128i *const res_unsigned, const __m128i *const wt0, const __m128i *const wt1, - const int use_dist_wtd_avg) { + const int use_comp_wtd_avg) { __m128i res; - if (use_dist_wtd_avg) { + if (use_comp_wtd_avg) { const __m128i wt0_res = _mm_mullo_epi32(*data_ref_0, *wt0); const __m128i wt1_res = _mm_mullo_epi32(*res_unsigned, *wt1); diff --git a/avm_dsp/x86/highbd_variance_sse2.c b/avm_dsp/x86/highbd_variance_sse2.c index 36fdfa51d9..f19357ba7a 100644 --- a/avm_dsp/x86/highbd_variance_sse2.c +++ b/avm_dsp/x86/highbd_variance_sse2.c @@ -820,11 +820,11 @@ void avm_highbd_comp_avg_upsampled_pred_sse2( } } -static INLINE void highbd_compute_dist_wtd_comp_avg(__m128i *p0, __m128i *p1, - const __m128i *w0, - const __m128i *w1, - const __m128i *r, - void *const result) { +static INLINE void highbd_compute_comp_wtd_avg(__m128i *p0, __m128i *p1, + const __m128i *w0, + const __m128i *w1, + const __m128i *r, + void *const result) { assert(DIST_PRECISION_BITS <= 4); __m128i mult0 = _mm_mullo_epi16(*p0, *w0); __m128i mult1 = _mm_mullo_epi16(*p1, *w1); @@ -835,13 +835,12 @@ static INLINE void highbd_compute_dist_wtd_comp_avg(__m128i *p0, __m128i *p1, xx_storeu_128(result, shift); } -void avm_highbd_dist_wtd_comp_avg_pred_sse2( - uint16_t *comp_pred, const uint16_t *pred, int width, int height, - const uint16_t *ref, int ref_stride, - const DIST_WTD_COMP_PARAMS *jcp_param) { +void avm_highbd_cwp_sse2(uint16_t *comp_pred, const uint16_t *pred, int width, + int height, const uint16_t *ref, int ref_stride, + const CWP_PARAMS *cwp_param) { int i; - const uint16_t wt0 = (uint16_t)jcp_param->fwd_offset; - const uint16_t wt1 = (uint16_t)jcp_param->bck_offset; + const uint16_t wt0 = (uint16_t)cwp_param->fwd_offset; + const uint16_t wt1 = (uint16_t)cwp_param->bck_offset; const __m128i w0 = _mm_set_epi16(wt0, wt0, wt0, wt0, wt0, wt0, wt0, wt0); const __m128i w1 = _mm_set_epi16(wt1, wt1, wt1, wt1, wt1, wt1, wt1, wt1); const uint16_t round = ((1 << DIST_PRECISION_BITS) >> 1); @@ -857,7 +856,7 @@ void avm_highbd_dist_wtd_comp_avg_pred_sse2( __m128i p0 = xx_loadu_128(ref); __m128i p1 = xx_loadu_128(pred); - highbd_compute_dist_wtd_comp_avg(&p0, &p1, &w0, &w1, &r, comp_pred); + highbd_compute_comp_wtd_avg(&p0, &p1, &w0, &w1, &r, comp_pred); comp_pred += 8; pred += 8; @@ -874,7 +873,7 @@ void avm_highbd_dist_wtd_comp_avg_pred_sse2( __m128i p0 = _mm_unpacklo_epi64(p0_0, p0_1); __m128i p1 = xx_loadu_128(pred); - highbd_compute_dist_wtd_comp_avg(&p0, &p1, &w0, &w1, &r, comp_pred); + highbd_compute_comp_wtd_avg(&p0, &p1, &w0, &w1, &r, comp_pred); comp_pred += 8; pred += 8; @@ -883,12 +882,12 @@ void avm_highbd_dist_wtd_comp_avg_pred_sse2( } } -void avm_highbd_dist_wtd_comp_avg_upsampled_pred_sse2( +void avm_highbd_cwp_upsampled_sse2( MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred16, const uint16_t *pred, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref, - int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, - int subpel_search, int is_scaled_ref) { + int ref_stride, int bd, const CWP_PARAMS *cwp_param, int subpel_search, + int is_scaled_ref) { int n; int i; avm_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred16, width, @@ -897,8 +896,8 @@ void avm_highbd_dist_wtd_comp_avg_upsampled_pred_sse2( assert(!(width * height & 7)); n = width * height >> 3; - const uint16_t wt0 = (uint16_t)jcp_param->fwd_offset; - const uint16_t wt1 = (uint16_t)jcp_param->bck_offset; + const uint16_t wt0 = (uint16_t)cwp_param->fwd_offset; + const uint16_t wt1 = (uint16_t)cwp_param->bck_offset; const __m128i w0 = _mm_set_epi16(wt0, wt0, wt0, wt0, wt0, wt0, wt0, wt0); const __m128i w1 = _mm_set_epi16(wt1, wt1, wt1, wt1, wt1, wt1, wt1, wt1); const uint16_t round = ((1 << DIST_PRECISION_BITS) >> 1); @@ -909,7 +908,7 @@ void avm_highbd_dist_wtd_comp_avg_upsampled_pred_sse2( __m128i p0 = xx_loadu_128(comp_pred16); __m128i p1 = xx_loadu_128(pred); - highbd_compute_dist_wtd_comp_avg(&p0, &p1, &w0, &w1, &r, comp_pred16); + highbd_compute_comp_wtd_avg(&p0, &p1, &w0, &w1, &r, comp_pred16); comp_pred16 += 8; pred += 8; diff --git a/test/av2_convolve_test.cc b/test/av2_convolve_test.cc index c2c2aa0bd6..453436b066 100644 --- a/test/av2_convolve_test.cc +++ b/test/av2_convolve_test.cc @@ -643,13 +643,13 @@ std::vector> GetHighbdLumaTestParams(T test_func) { } TEST_F(AV2ConvolveParametersTest, GetHighbdLumaTestParams) { - auto v = GetHighbdLumaTestParams(av2_highbd_dist_wtd_convolve_x_c); + auto v = GetHighbdLumaTestParams(av2_highbd_cwp_convolve_x_c); ASSERT_EQ(static_cast(BLOCK_SIZES_ALL * 2), v.size()); int num_10 = 0; int num_12 = 0; for (const auto &e : v) { ASSERT_TRUE(10 == e.BitDepth() || 12 == e.BitDepth()); - bool same_fn = av2_highbd_dist_wtd_convolve_x_c == e.TestFunction(); + bool same_fn = av2_highbd_cwp_convolve_x_c == e.TestFunction(); ASSERT_TRUE(same_fn); if (e.BitDepth() == 10) { ++num_10; @@ -741,7 +741,7 @@ class AV2ConvolveXHighbdCompoundTest } virtual highbd_convolve_x_func ReferenceFunc() const { - return av2_highbd_dist_wtd_convolve_x_c; + return av2_highbd_cwp_convolve_x_c; } private: @@ -788,20 +788,18 @@ class AV2ConvolveXHighbdCompoundTest TEST_P(AV2ConvolveXHighbdCompoundTest, RunTest) { RunTest(); } -INSTANTIATE_TEST_SUITE_P( - C, AV2ConvolveXHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_x_c)); +INSTANTIATE_TEST_SUITE_P(C, AV2ConvolveXHighbdCompoundTest, + BuildHighbdLumaParams(av2_highbd_cwp_convolve_x_c)); #if HAVE_SSE4_1 INSTANTIATE_TEST_SUITE_P( SSE4_1, AV2ConvolveXHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_x_sse4_1)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_x_sse4_1)); #endif #if HAVE_AVX2 -INSTANTIATE_TEST_SUITE_P( - AVX2, AV2ConvolveXHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_x_avx2)); +INSTANTIATE_TEST_SUITE_P(AVX2, AV2ConvolveXHighbdCompoundTest, + BuildHighbdLumaParams(av2_highbd_cwp_convolve_x_avx2)); #endif ///////////////////////////////////////////////// @@ -811,7 +809,7 @@ INSTANTIATE_TEST_SUITE_P( // Again, the X and Y convolve functions have the same type signature and logic. class AV2ConvolveYHighbdCompoundTest : public AV2ConvolveXHighbdCompoundTest { virtual highbd_convolve_x_func ReferenceFunc() const override { - return av2_highbd_dist_wtd_convolve_y_c; + return av2_highbd_cwp_convolve_y_c; } virtual const InterpFilterParams *FilterParams( InterpFilter f, const BlockSize &block) const override { @@ -821,20 +819,18 @@ class AV2ConvolveYHighbdCompoundTest : public AV2ConvolveXHighbdCompoundTest { TEST_P(AV2ConvolveYHighbdCompoundTest, RunTest) { RunTest(); } -INSTANTIATE_TEST_SUITE_P( - C, AV2ConvolveYHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_y_c)); +INSTANTIATE_TEST_SUITE_P(C, AV2ConvolveYHighbdCompoundTest, + BuildHighbdLumaParams(av2_highbd_cwp_convolve_y_c)); #if HAVE_SSE4_1 INSTANTIATE_TEST_SUITE_P( SSE4_1, AV2ConvolveYHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_y_sse4_1)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_y_sse4_1)); #endif #if HAVE_AVX2 -INSTANTIATE_TEST_SUITE_P( - AVX2, AV2ConvolveYHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_y_avx2)); +INSTANTIATE_TEST_SUITE_P(AVX2, AV2ConvolveYHighbdCompoundTest, + BuildHighbdLumaParams(av2_highbd_cwp_convolve_y_avx2)); #endif /////////////////////////////////////////////////////// @@ -884,12 +880,11 @@ class AV2Convolve2DCopyHighbdCompoundTest avm_usec_timer timer; avm_usec_timer_start(&timer); for (int i = 0; i < nob; i++) { - av2_highbd_dist_wtd_convolve_2d_copy_c(input, width, conv_buf, - kOutputStride, width, height, - &conv_params, bit_depth); - av2_highbd_dist_wtd_convolve_2d_copy_c(input, width, conv_buf, - kOutputStride, width, height, - &conv_params_do_avg, bit_depth); + av2_highbd_cwp_convolve_2d_copy_c(input, width, conv_buf, kOutputStride, + width, height, &conv_params, bit_depth); + av2_highbd_cwp_convolve_2d_copy_c(input, width, conv_buf, kOutputStride, + width, height, &conv_params_do_avg, + bit_depth); } avm_usec_timer_mark(&timer); const int elapsed_time = static_cast(avm_usec_timer_elapsed(&timer)); @@ -918,7 +913,7 @@ class AV2Convolve2DCopyHighbdCompoundTest const uint16_t *input2 = SecondRandomInput12(GetParam()); DECLARE_ALIGNED(32, uint16_t, reference[MAX_SB_SQUARE]); DECLARE_ALIGNED(32, CONV_BUF_TYPE, reference_conv_buf[MAX_SB_SQUARE]); - Convolve(av2_highbd_dist_wtd_convolve_2d_copy_c, input1, input2, reference, + Convolve(av2_highbd_cwp_convolve_2d_copy_c, input1, input2, reference, reference_conv_buf, compound); DECLARE_ALIGNED(32, uint16_t, test[MAX_SB_SQUARE]); @@ -955,18 +950,18 @@ TEST_P(AV2Convolve2DCopyHighbdCompoundTest, DISABLED_SpeedTest) { SpeedTest(); } INSTANTIATE_TEST_SUITE_P( C, AV2Convolve2DCopyHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_2d_copy_c)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_2d_copy_c)); #if HAVE_SSE4_1 INSTANTIATE_TEST_SUITE_P( SSE4_1, AV2Convolve2DCopyHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_2d_copy_sse4_1)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_2d_copy_sse4_1)); #endif #if HAVE_AVX2 INSTANTIATE_TEST_SUITE_P( AVX2, AV2Convolve2DCopyHighbdCompoundTest, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_2d_copy_avx2)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_2d_copy_avx2)); #endif ////////////////////////////////////////////////// @@ -1015,7 +1010,7 @@ class AV2Convolve2DHighbdCompoundTestLarge const uint16_t *input2 = SecondRandomInput12(GetParam()); DECLARE_ALIGNED(32, uint16_t, reference[MAX_SB_SQUARE]); DECLARE_ALIGNED(32, CONV_BUF_TYPE, reference_conv_buf[MAX_SB_SQUARE]); - Convolve(av2_highbd_dist_wtd_convolve_2d_c, input1, input2, reference, + Convolve(av2_highbd_cwp_convolve_2d_c, input1, input2, reference, reference_conv_buf, compound, h_f, v_f, sub_x, sub_y); DECLARE_ALIGNED(32, uint16_t, test[MAX_SB_SQUARE]); @@ -1053,14 +1048,14 @@ class AV2Convolve2DHighbdCompoundTestLarge avm_usec_timer timer; avm_usec_timer_start(&timer); for (int i = 0; i < num_iters; ++i) { - av2_highbd_dist_wtd_convolve_2d_c(input1, width, reference, kOutputStride, - width, height, filter_params_x, - filter_params_y, sub_x, sub_y, - &conv_params_ref1, bit_depth); - av2_highbd_dist_wtd_convolve_2d_c(input1, width, reference, kOutputStride, - width, height, filter_params_x, - filter_params_y, sub_x, sub_y, - &conv_params_ref2, bit_depth); + av2_highbd_cwp_convolve_2d_c(input1, width, reference, kOutputStride, + width, height, filter_params_x, + filter_params_y, sub_x, sub_y, + &conv_params_ref1, bit_depth); + av2_highbd_cwp_convolve_2d_c(input1, width, reference, kOutputStride, + width, height, filter_params_x, + filter_params_y, sub_x, sub_y, + &conv_params_ref2, bit_depth); } avm_usec_timer_mark(&timer); const int time1 = static_cast(avm_usec_timer_elapsed(&timer)); @@ -1119,20 +1114,19 @@ class AV2Convolve2DHighbdCompoundTestLarge TEST_P(AV2Convolve2DHighbdCompoundTestLarge, RunTest) { RunTest(); } TEST_P(AV2Convolve2DHighbdCompoundTestLarge, DISABLED_Speed) { SpeedTest(); } -INSTANTIATE_TEST_SUITE_P( - C, AV2Convolve2DHighbdCompoundTestLarge, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_2d_c)); +INSTANTIATE_TEST_SUITE_P(C, AV2Convolve2DHighbdCompoundTestLarge, + BuildHighbdLumaParams(av2_highbd_cwp_convolve_2d_c)); #if HAVE_SSE4_1 INSTANTIATE_TEST_SUITE_P( SSE4_1, AV2Convolve2DHighbdCompoundTestLarge, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_2d_sse4_1)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_2d_sse4_1)); #endif #if HAVE_AVX2 INSTANTIATE_TEST_SUITE_P( AVX2, AV2Convolve2DHighbdCompoundTestLarge, - BuildHighbdLumaParams(av2_highbd_dist_wtd_convolve_2d_avx2)); + BuildHighbdLumaParams(av2_highbd_cwp_convolve_2d_avx2)); #endif ////////////////////////////////////////////////////////// diff --git a/test/comp_avg_pred_test.cc b/test/comp_avg_pred_test.cc deleted file mode 100644 index 98dfaabd4a..0000000000 --- a/test/comp_avg_pred_test.cc +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2021, Alliance for Open Media. All rights reserved - * - * This source code is subject to the terms of the BSD 3-Clause Clear License - * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear - * License was not distributed with this source code in the LICENSE file, you - * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the - * Alliance for Open Media Patent License 1.0 was not distributed with this - * source code in the PATENTS file, you can obtain it at - * aomedia.org/license/patent-license/. - */ - -#include "test/comp_avg_pred_test.h" - -using libavm_test::ACMRandom; -using libavm_test::AV2DISTWTDCOMPAVG::AV2HighBDDISTWTDCOMPAVGTest; -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2HighBDDISTWTDCOMPAVGTest); -using libavm_test::AV2DISTWTDCOMPAVG::AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest; -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST( - AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest); -using std::make_tuple; -using std::tuple; - -namespace { - -TEST_P(AV2HighBDDISTWTDCOMPAVGTest, DISABLED_Speed) { - RunSpeedTest(GET_PARAM(1)); -} - -TEST_P(AV2HighBDDISTWTDCOMPAVGTest, CheckOutput) { - RunCheckOutput(GET_PARAM(1)); -} - -#if HAVE_SSE2 -INSTANTIATE_TEST_SUITE_P(SSE2, AV2HighBDDISTWTDCOMPAVGTest, - libavm_test::AV2DISTWTDCOMPAVG::BuildParams( - avm_highbd_dist_wtd_comp_avg_pred_sse2, 1)); -#endif - -TEST_P(AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest, DISABLED_Speed) { - RunSpeedTest(GET_PARAM(1)); -} - -TEST_P(AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest, CheckOutput) { - RunCheckOutput(GET_PARAM(1)); -} - -#if HAVE_SSE2 -INSTANTIATE_TEST_SUITE_P(SSE2, AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest, - libavm_test::AV2DISTWTDCOMPAVG::BuildParams( - avm_highbd_dist_wtd_comp_avg_upsampled_pred_sse2)); -#endif - -#if HAVE_NEON -INSTANTIATE_TEST_SUITE_P(NEON, AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest, - libavm_test::AV2DISTWTDCOMPAVG::BuildParams( - avm_highbd_dist_wtd_comp_avg_upsampled_pred_neon)); -#endif - -} // namespace diff --git a/test/comp_weigh_pred_test.cc b/test/comp_weigh_pred_test.cc new file mode 100644 index 0000000000..6e9cf3b837 --- /dev/null +++ b/test/comp_weigh_pred_test.cc @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2021, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 3-Clause Clear License + * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear + * License was not distributed with this source code in the LICENSE file, you + * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the + * Alliance for Open Media Patent License 1.0 was not distributed with this + * source code in the PATENTS file, you can obtain it at + * aomedia.org/license/patent-license/. + */ + +#include "test/comp_weigh_pred_test.h" + +using libavm_test::ACMRandom; +using libavm_test::AV2CWP::AV2HighbdCwpTest; +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2HighbdCwpTest); +using libavm_test::AV2CWP::AV2HighbdCwpUpsampledTest; +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV2HighbdCwpUpsampledTest); +using std::make_tuple; +using std::tuple; + +namespace { + +TEST_P(AV2HighbdCwpTest, DISABLED_Speed) { RunSpeedTest(GET_PARAM(1)); } + +TEST_P(AV2HighbdCwpTest, CheckOutput) { RunCheckOutput(GET_PARAM(1)); } + +#if HAVE_SSE2 +INSTANTIATE_TEST_SUITE_P(SSE2, AV2HighbdCwpTest, + libavm_test::AV2CWP::BuildParams(avm_highbd_cwp_sse2, + 1)); +#endif + +TEST_P(AV2HighbdCwpUpsampledTest, DISABLED_Speed) { + RunSpeedTest(GET_PARAM(1)); +} + +TEST_P(AV2HighbdCwpUpsampledTest, CheckOutput) { RunCheckOutput(GET_PARAM(1)); } + +#if HAVE_SSE2 +INSTANTIATE_TEST_SUITE_P( + SSE2, AV2HighbdCwpUpsampledTest, + libavm_test::AV2CWP::BuildParams(avm_highbd_cwp_upsampled_sse2)); +#endif + +#if HAVE_NEON +INSTANTIATE_TEST_SUITE_P( + NEON, AV2HighbdCwpUpsampledTest, + libavm_test::AV2CWP::BuildParams(avm_highbd_cwp_upsampled_neon)); +#endif + +} // namespace diff --git a/test/comp_avg_pred_test.h b/test/comp_weigh_pred_test.h similarity index 61% rename from test/comp_avg_pred_test.h rename to test/comp_weigh_pred_test.h index 0ff06eba4d..cc54c705e7 100644 --- a/test/comp_avg_pred_test.h +++ b/test/comp_weigh_pred_test.h @@ -10,8 +10,8 @@ * aomedia.org/license/patent-license/. */ -#ifndef AVM_TEST_COMP_AVG_PRED_TEST_H_ -#define AVM_TEST_COMP_AVG_PRED_TEST_H_ +#ifndef AVM_TEST_COMP_WEIGH_PRED_TEST_H_ +#define AVM_TEST_COMP_WEIGH_PRED_TEST_H_ #include @@ -28,75 +28,72 @@ namespace libavm_test { const int kMaxSize = MAX_SB_SIZE + 32; // padding -namespace AV2DISTWTDCOMPAVG { +namespace AV2CWP { -typedef void (*distwtdcompavg_func)(uint16_t *comp_pred, const uint16_t *pred, - int width, int height, const uint16_t *ref, - int ref_stride, - const DIST_WTD_COMP_PARAMS *jcp_param); +typedef void (*cwp_func)(uint16_t *comp_pred, const uint16_t *pred, int width, + int height, const uint16_t *ref, int ref_stride, + const CWP_PARAMS *cwp_param); -typedef void (*distwtdcompavgupsampled_func)( - MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, - const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width, - int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref, - int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search, - int is_scaled_ref); +typedef void (*cwp_upsampled_func)(MACROBLOCKD *xd, + const struct AV2Common *const cm, int mi_row, + int mi_col, const MV *const mv, + uint8_t *comp_pred, const uint8_t *pred, + int width, int height, int subpel_x_q3, + int subpel_y_q3, const uint8_t *ref, + int ref_stride, const CWP_PARAMS *cwp_param, + int subpel_search, int is_scaled_ref); -typedef std::tuple DISTWTDCOMPAVGParam; +typedef std::tuple CwpParam; -typedef std::tuple - DISTWTDCOMPAVGUPSAMPLEDParam; +typedef std::tuple CwpUpsampledParam; -typedef void (*highbddistwtdcompavgupsampled_func)( +typedef void (*highbd_cwp_upsampled_func)( MACROBLOCKD *xd, const struct AV2Common *const cm, int mi_row, int mi_col, const MV *const mv, uint16_t *comp_pred8, const uint16_t *pred8, int width, int height, int subpel_x_q3, int subpel_y_q3, const uint16_t *ref8, - int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, - int subpel_search, int is_scaled_ref); + int ref_stride, int bd, const CWP_PARAMS *cwp_param, int subpel_search, + int is_scaled_ref); -typedef std::tuple - HighbdDISTWTDCOMPAVGUPSAMPLEDParam; +typedef std::tuple + HighbdCwpUpsampledParam; -typedef std::tuple - HighbdDISTWTDCOMPAVGParam; +typedef std::tuple HighbdCwpParam; -::testing::internal::ParamGenerator BuildParams( - distwtdcompavg_func filter, int is_hbd) { +::testing::internal::ParamGenerator BuildParams(cwp_func filter, + int is_hbd) { (void)is_hbd; return ::testing::Combine(::testing::Range(8, 13, 2), ::testing::Values(filter), ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL)); } -::testing::internal::ParamGenerator -BuildParams(highbddistwtdcompavgupsampled_func filter) { +::testing::internal::ParamGenerator BuildParams( + highbd_cwp_upsampled_func filter) { return ::testing::Combine(::testing::Range(8, 13, 2), ::testing::Values(filter), ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL)); } -::testing::internal::ParamGenerator BuildParams( - distwtdcompavg_func filter) { +::testing::internal::ParamGenerator BuildParams(cwp_func filter) { return ::testing::Combine(::testing::Values(filter), ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL)); } -::testing::internal::ParamGenerator BuildParams( - distwtdcompavgupsampled_func filter) { +::testing::internal::ParamGenerator BuildParams( + cwp_upsampled_func filter) { return ::testing::Combine(::testing::Values(filter), ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL)); } -class AV2HighBDDISTWTDCOMPAVGTest - : public ::testing::TestWithParam { +class AV2HighbdCwpTest : public ::testing::TestWithParam { public: - ~AV2HighBDDISTWTDCOMPAVGTest() {} + ~AV2HighbdCwpTest() {} void SetUp() { rnd_.Reset(ACMRandom::DeterministicSeed()); } void TearDown() { libavm_test::ClearSystemState(); } protected: - void RunCheckOutput(distwtdcompavg_func test_impl) { + void RunCheckOutput(cwp_func test_impl) { const int w = kMaxSize, h = kMaxSize; const int block_idx = GET_PARAM(2); const int bd = GET_PARAM(0); @@ -113,26 +110,25 @@ class AV2HighBDDISTWTDCOMPAVGTest const int in_w = block_size_wide[block_idx]; const int in_h = block_size_high[block_idx]; - DIST_WTD_COMP_PARAMS dist_wtd_comp_params; + CWP_PARAMS cwp_params; for (int ii = 0; ii < 2; ii++) { for (int jj = 0; jj < 4; jj++) { - dist_wtd_comp_params.fwd_offset = quant_dist_lookup_table[jj][ii]; - dist_wtd_comp_params.bck_offset = quant_dist_lookup_table[jj][1 - ii]; + cwp_params.fwd_offset = quant_dist_lookup_table[jj][ii]; + cwp_params.bck_offset = quant_dist_lookup_table[jj][1 - ii]; const int offset_r = 3 + rnd_.PseudoUniform(h - in_h - 7); const int offset_c = 3 + rnd_.PseudoUniform(w - in_w - 7); - avm_highbd_dist_wtd_comp_avg_pred_c( - output, pred8 + offset_r * w + offset_c, in_w, in_h, - ref8 + offset_r * w + offset_c, in_w, &dist_wtd_comp_params); + avm_highbd_cwp_c(output, pred8 + offset_r * w + offset_c, in_w, in_h, + ref8 + offset_r * w + offset_c, in_w, &cwp_params); test_impl(output2, pred8 + offset_r * w + offset_c, in_w, in_h, - ref8 + offset_r * w + offset_c, in_w, &dist_wtd_comp_params); + ref8 + offset_r * w + offset_c, in_w, &cwp_params); for (int i = 0; i < in_h; ++i) { for (int j = 0; j < in_w; ++j) { int idx = i * in_w + j; ASSERT_EQ(output[idx], output2[idx]) - << "Mismatch at unit tests for AV2HighBDDISTWTDCOMPAVGTest\n" + << "Mismatch at unit tests for AV2HighbdCwpTest\n" << in_w << "x" << in_h << " Pixel mismatch at index " << idx << " = (" << i << ", " << j << ")"; } @@ -140,7 +136,7 @@ class AV2HighBDDISTWTDCOMPAVGTest } } } - void RunSpeedTest(distwtdcompavg_func test_impl) { + void RunSpeedTest(cwp_func test_impl) { const int w = kMaxSize, h = kMaxSize; const int block_idx = GET_PARAM(2); const int bd = GET_PARAM(0); @@ -157,48 +153,47 @@ class AV2HighBDDISTWTDCOMPAVGTest const int in_w = block_size_wide[block_idx]; const int in_h = block_size_high[block_idx]; - DIST_WTD_COMP_PARAMS dist_wtd_comp_params; + CWP_PARAMS cwp_params; - dist_wtd_comp_params.fwd_offset = quant_dist_lookup_table[0][0]; - dist_wtd_comp_params.bck_offset = quant_dist_lookup_table[0][1]; + cwp_params.fwd_offset = quant_dist_lookup_table[0][0]; + cwp_params.bck_offset = quant_dist_lookup_table[0][1]; const int num_loops = 1000000000 / (in_w + in_h); avm_usec_timer timer; avm_usec_timer_start(&timer); for (int i = 0; i < num_loops; ++i) - avm_highbd_dist_wtd_comp_avg_pred_c(output, pred8, in_w, in_h, ref8, in_w, - &dist_wtd_comp_params); + avm_highbd_cwp_c(output, pred8, in_w, in_h, ref8, in_w, &cwp_params); avm_usec_timer_mark(&timer); const int elapsed_time = static_cast(avm_usec_timer_elapsed(&timer)); - printf("highbddistwtdcompavg c_code %3dx%-3d: %7.2f us\n", in_w, in_h, + printf("highbdcwp c_code %3dx%-3d: %7.2f us\n", in_w, in_h, 1000.0 * elapsed_time / num_loops); avm_usec_timer timer1; avm_usec_timer_start(&timer1); for (int i = 0; i < num_loops; ++i) - test_impl(output2, pred8, in_w, in_h, ref8, in_w, &dist_wtd_comp_params); + test_impl(output2, pred8, in_w, in_h, ref8, in_w, &cwp_params); avm_usec_timer_mark(&timer1); const int elapsed_time1 = static_cast(avm_usec_timer_elapsed(&timer1)); - printf("highbddistwtdcompavg test_code %3dx%-3d: %7.2f us\n", in_w, in_h, + printf("highbdcwp test_code %3dx%-3d: %7.2f us\n", in_w, in_h, 1000.0 * elapsed_time1 / num_loops); } libavm_test::ACMRandom rnd_; -}; // class AV2HighBDDISTWTDCOMPAVGTest +}; // class AV2HighbdCwpTest -class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest - : public ::testing::TestWithParam { +class AV2HighbdCwpUpsampledTest + : public ::testing::TestWithParam { public: - ~AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest() {} + ~AV2HighbdCwpUpsampledTest() {} void SetUp() { rnd_.Reset(ACMRandom::DeterministicSeed()); } void TearDown() { libavm_test::ClearSystemState(); } protected: - void RunCheckOutput(highbddistwtdcompavgupsampled_func test_impl) { + void RunCheckOutput(highbd_cwp_upsampled_func test_impl) { const int w = kMaxSize, h = kMaxSize; const int block_idx = GET_PARAM(2); const int bd = GET_PARAM(0); @@ -215,7 +210,7 @@ class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest const int in_w = block_size_wide[block_idx]; const int in_h = block_size_high[block_idx]; - DIST_WTD_COMP_PARAMS dist_wtd_comp_params; + CWP_PARAMS cwp_params; int sub_x_q3, sub_y_q3; int subpel_search; for (subpel_search = USE_4_TAPS; subpel_search <= USE_8_TAPS; @@ -224,29 +219,28 @@ class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest for (sub_y_q3 = 0; sub_y_q3 < 8; ++sub_y_q3) { for (int ii = 0; ii < 2; ii++) { for (int jj = 0; jj < 4; jj++) { - dist_wtd_comp_params.fwd_offset = quant_dist_lookup_table[jj][ii]; - dist_wtd_comp_params.bck_offset = - quant_dist_lookup_table[jj][1 - ii]; + cwp_params.fwd_offset = quant_dist_lookup_table[jj][ii]; + cwp_params.bck_offset = quant_dist_lookup_table[jj][1 - ii]; const int offset_r = 3 + rnd_.PseudoUniform(h - in_h - 7); const int offset_c = 3 + rnd_.PseudoUniform(w - in_w - 7); - avm_highbd_dist_wtd_comp_avg_upsampled_pred_c( - NULL, NULL, 0, 0, NULL, output, - pred8 + offset_r * w + offset_c, in_w, in_h, sub_x_q3, - sub_y_q3, ref8 + offset_r * w + offset_c, in_w, bd, - &dist_wtd_comp_params, subpel_search, 0); + avm_highbd_cwp_upsampled_c(NULL, NULL, 0, 0, NULL, output, + pred8 + offset_r * w + offset_c, in_w, + in_h, sub_x_q3, sub_y_q3, + ref8 + offset_r * w + offset_c, in_w, + bd, &cwp_params, subpel_search, 0); test_impl(NULL, NULL, 0, 0, NULL, output2, pred8 + offset_r * w + offset_c, in_w, in_h, sub_x_q3, sub_y_q3, ref8 + offset_r * w + offset_c, in_w, bd, - &dist_wtd_comp_params, subpel_search, 0); + &cwp_params, subpel_search, 0); for (int i = 0; i < in_h; ++i) { for (int j = 0; j < in_w; ++j) { int idx = i * in_w + j; ASSERT_EQ(output[idx], output2[idx]) << "Mismatch at unit tests for " - "AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest\n" + "AV2HighbdCwpUpsampledTest\n" << in_w << "x" << in_h << " Pixel mismatch at index " << idx << " = (" << i << ", " << j << "), sub pixel offset = (" << sub_y_q3 << ", " @@ -259,7 +253,7 @@ class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest } } } - void RunSpeedTest(highbddistwtdcompavgupsampled_func test_impl) { + void RunSpeedTest(highbd_cwp_upsampled_func test_impl) { const int w = kMaxSize, h = kMaxSize; const int block_idx = GET_PARAM(2); const int bd = GET_PARAM(0); @@ -276,10 +270,10 @@ class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest const int in_w = block_size_wide[block_idx]; const int in_h = block_size_high[block_idx]; - DIST_WTD_COMP_PARAMS dist_wtd_comp_params; + CWP_PARAMS cwp_params; - dist_wtd_comp_params.fwd_offset = quant_dist_lookup_table[0][0]; - dist_wtd_comp_params.bck_offset = quant_dist_lookup_table[0][1]; + cwp_params.fwd_offset = quant_dist_lookup_table[0][0]; + cwp_params.bck_offset = quant_dist_lookup_table[0][1]; int sub_x_q3 = 0; int sub_y_q3 = 0; const int num_loops = 1000000000 / (in_w + in_h); @@ -287,33 +281,32 @@ class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest avm_usec_timer_start(&timer); int subpel_search = USE_8_TAPS; // set to USE_4_TAPS to test 4-tap filter. for (int i = 0; i < num_loops; ++i) - avm_highbd_dist_wtd_comp_avg_upsampled_pred_c( - NULL, NULL, 0, 0, NULL, output, pred8, in_w, in_h, sub_x_q3, sub_y_q3, - ref8, in_w, bd, &dist_wtd_comp_params, subpel_search, 0); + avm_highbd_cwp_upsampled_c(NULL, NULL, 0, 0, NULL, output, pred8, in_w, + in_h, sub_x_q3, sub_y_q3, ref8, in_w, bd, + &cwp_params, subpel_search, 0); avm_usec_timer_mark(&timer); const int elapsed_time = static_cast(avm_usec_timer_elapsed(&timer)); - printf("highbddistwtdcompavgupsampled c_code %3dx%-3d: %7.2f us\n", in_w, - in_h, 1000.0 * elapsed_time / num_loops); + printf("highbdcwpupsampled c_code %3dx%-3d: %7.2f us\n", in_w, in_h, + 1000.0 * elapsed_time / num_loops); avm_usec_timer timer1; avm_usec_timer_start(&timer1); for (int i = 0; i < num_loops; ++i) test_impl(NULL, NULL, 0, 0, NULL, output2, pred8, in_w, in_h, sub_x_q3, - sub_y_q3, ref8, in_w, bd, &dist_wtd_comp_params, subpel_search, - 0); + sub_y_q3, ref8, in_w, bd, &cwp_params, subpel_search, 0); avm_usec_timer_mark(&timer1); const int elapsed_time1 = static_cast(avm_usec_timer_elapsed(&timer1)); - printf("highbddistwtdcompavgupsampled test_code %3dx%-3d: %7.2f us\n", in_w, - in_h, 1000.0 * elapsed_time1 / num_loops); + printf("highbdcwpupsampled test_code %3dx%-3d: %7.2f us\n", in_w, in_h, + 1000.0 * elapsed_time1 / num_loops); } libavm_test::ACMRandom rnd_; -}; // class AV2HighBDDISTWTDCOMPAVGUPSAMPLEDTest +}; // class AV2HighbdCwpUpsampledTest -} // namespace AV2DISTWTDCOMPAVG +} // namespace AV2CWP } // namespace libavm_test -#endif // AVM_TEST_COMP_AVG_PRED_TEST_H_ +#endif // AVM_TEST_COMP_WEIGH_PRED_TEST_H_ diff --git a/test/sad_test.cc b/test/sad_test.cc index 104aeca572..467b2a24d2 100644 --- a/test/sad_test.cc +++ b/test/sad_test.cc @@ -45,26 +45,21 @@ typedef uint32_t (*SadMxNAvgFunc)(const uint16_t *src_ptr, int src_stride, const uint16_t *second_pred); typedef std::tuple SadMxNAvgParam; -typedef void (*DistWtdCompAvgFunc)(uint16_t *comp_pred, const uint16_t *pred, - int width, int height, const uint16_t *ref, - int ref_stride, - const DIST_WTD_COMP_PARAMS *jcp_param); -typedef std::tuple DistWtdCompAvgParam; - -typedef unsigned int (*DistWtdSadMxhFunc)(const uint16_t *src_ptr, - int src_stride, - const uint16_t *ref_ptr, - int ref_stride, int width, - int height); -typedef std::tuple DistWtdSadMxhParam; - -typedef uint32_t (*DistWtdSadMxNAvgFunc)(const uint16_t *src_ptr, - int src_stride, - const uint16_t *ref_ptr, - int ref_stride, - const uint16_t *second_pred, - const DIST_WTD_COMP_PARAMS *jcp_param); -typedef std::tuple DistWtdSadMxNAvgParam; +typedef void (*CwpFunc)(uint16_t *comp_pred, const uint16_t *pred, int width, + int height, const uint16_t *ref, int ref_stride, + const CWP_PARAMS *cwp_param); +typedef std::tuple CwpParam; + +typedef unsigned int (*CwpSadMxhFunc)(const uint16_t *src_ptr, int src_stride, + const uint16_t *ref_ptr, int ref_stride, + int width, int height); +typedef std::tuple CwpSadMxhParam; + +typedef uint32_t (*CwpSadMxNAvgFunc)(const uint16_t *src_ptr, int src_stride, + const uint16_t *ref_ptr, int ref_stride, + const uint16_t *second_pred, + const CWP_PARAMS *cwp_param); +typedef std::tuple CwpSadMxNAvgParam; typedef void (*SadMxNx4Func)(const uint16_t *src_ptr, int src_stride, const uint16_t *const ref_ptr[], int ref_stride, @@ -207,21 +202,21 @@ class SADTestBase : public ::testing::Test { return sad; } - void ReferenceDistWtdCompAvg(int block_idx) { + void ReferenceCwp(int block_idx) { const uint16_t *const reference16 = GetReference(block_idx); const uint16_t *const second_pred16 = second_pred_; uint16_t *const comp_pred16 = comp_pred_; for (int h = 0; h < height_; ++h) { for (int w = 0; w < width_; ++w) { const int tmp = - second_pred16[h * width_ + w] * jcp_param_.bck_offset + - reference16[h * reference_stride_ + w] * jcp_param_.fwd_offset; + second_pred16[h * width_ + w] * cwp_param_.bck_offset + + reference16[h * reference_stride_ + w] * cwp_param_.fwd_offset; comp_pred16[h * width_ + w] = ROUND_POWER_OF_TWO(tmp, 4); } } } - unsigned int ReferenceDistWtdSADavg(int block_idx) { + unsigned int ReferenceCwpSadAvg(int block_idx) { unsigned int sad = 0; const uint16_t *const reference16 = GetReference(block_idx); const uint16_t *const source16 = source_data_; @@ -229,8 +224,8 @@ class SADTestBase : public ::testing::Test { for (int h = 0; h < height_; ++h) { for (int w = 0; w < width_; ++w) { const int tmp = - second_pred16[h * width_ + w] * jcp_param_.bck_offset + - reference16[h * reference_stride_ + w] * jcp_param_.fwd_offset; + second_pred16[h * width_ + w] * cwp_param_.bck_offset + + reference16[h * reference_stride_ + w] * cwp_param_.fwd_offset; const uint16_t comp_pred = ROUND_POWER_OF_TWO(tmp, 4); sad += abs(source16[h * source_stride_ + w] - comp_pred); } @@ -270,7 +265,7 @@ class SADTestBase : public ::testing::Test { static uint16_t *comp_pred16_; static uint16_t *comp_pred_test_; static uint16_t *comp_pred16_test_; - DIST_WTD_COMP_PARAMS jcp_param_; + CWP_PARAMS cwp_param_; ACMRandom rnd_; }; @@ -521,30 +516,28 @@ class SADavgTest : public ::testing::WithParamInterface, } }; -class DistWtdCompAvgTest - : public ::testing::WithParamInterface, - public SADTestBase { +class CwpTest : public ::testing::WithParamInterface, + public SADTestBase { public: - DistWtdCompAvgTest() - : SADTestBase(GET_PARAM(0), GET_PARAM(1), GET_PARAM(3)) {} + CwpTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1), GET_PARAM(3)) {} protected: - void dist_wtd_comp_avg(int block_idx) { + void CompWtdPred(int block_idx) { const uint16_t *const reference = GetReference(block_idx); ASM_REGISTER_STATE_CHECK(GET_PARAM(2)(comp_pred_test_, second_pred_, width_, height_, reference, reference_stride_, - &jcp_param_)); + &cwp_param_)); } void CheckCompAvg() { for (int j = 0; j < 2; ++j) { for (int i = 0; i < 4; ++i) { - jcp_param_.fwd_offset = quant_dist_lookup_table[i][j]; - jcp_param_.bck_offset = quant_dist_lookup_table[i][1 - j]; + cwp_param_.fwd_offset = quant_dist_lookup_table[i][j]; + cwp_param_.bck_offset = quant_dist_lookup_table[i][1 - j]; - ReferenceDistWtdCompAvg(0); - dist_wtd_comp_avg(0); + ReferenceCwp(0); + CompWtdPred(0); for (int y = 0; y < height_; ++y) for (int x = 0; x < width_; ++x) @@ -554,12 +547,12 @@ class DistWtdCompAvgTest } } }; -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DistWtdCompAvgTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(CwpTest); -class DistWtdSADTest : public ::testing::WithParamInterface, - public SADTestBase { +class CwpSadTest : public ::testing::WithParamInterface, + public SADTestBase { public: - DistWtdSADTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1), GET_PARAM(3)) {} + CwpSadTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1), GET_PARAM(3)) {} protected: unsigned int SAD(int block_idx) { @@ -587,40 +580,39 @@ class DistWtdSADTest : public ::testing::WithParamInterface, } } }; -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DistWtdSADTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(CwpSadTest); -class DistWtdSADavgTest - : public ::testing::WithParamInterface, - public SADTestBase { +class CwpSadAvgTest : public ::testing::WithParamInterface, + public SADTestBase { public: - DistWtdSADavgTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1), GET_PARAM(3)) {} + CwpSadAvgTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1), GET_PARAM(3)) {} protected: - unsigned int dist_wtd_SAD_avg(int block_idx) { + unsigned int CwpSadAvg(int block_idx) { unsigned int ret; const uint16_t *const reference = GetReference(block_idx); ASM_REGISTER_STATE_CHECK(ret = GET_PARAM(2)(source_data_, source_stride_, reference, reference_stride_, - second_pred_, &jcp_param_)); + second_pred_, &cwp_param_)); return ret; } void CheckSAD() { for (int j = 0; j < 2; ++j) { for (int i = 0; i < 4; ++i) { - jcp_param_.fwd_offset = quant_dist_lookup_table[i][j]; - jcp_param_.bck_offset = quant_dist_lookup_table[i][1 - j]; + cwp_param_.fwd_offset = quant_dist_lookup_table[i][j]; + cwp_param_.bck_offset = quant_dist_lookup_table[i][1 - j]; - const unsigned int reference_sad = ReferenceDistWtdSADavg(0); - const unsigned int exp_sad = dist_wtd_SAD_avg(0); + const unsigned int reference_sad = ReferenceCwpSadAvg(0); + const unsigned int exp_sad = CwpSadAvg(0); ASSERT_EQ(reference_sad, exp_sad); } } } }; -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DistWtdSADavgTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(CwpSadAvgTest); uint16_t *SADTestBase::source_data_ = NULL; uint16_t *SADTestBase::reference_data_ = NULL; @@ -844,19 +836,19 @@ TEST_P(SADavgTest, ShortSrc) { source_stride_ = tmp_stride; } -TEST_P(DistWtdCompAvgTest, MaxRef) { +TEST_P(CwpTest, MaxRef) { FillConstant(reference_data_, reference_stride_, mask_); FillConstant(second_pred_, width_, 0); CheckCompAvg(); } -TEST_P(DistWtdCompAvgTest, MaxSecondPred) { +TEST_P(CwpTest, MaxSecondPred) { FillConstant(reference_data_, reference_stride_, 0); FillConstant(second_pred_, width_, mask_); CheckCompAvg(); } -TEST_P(DistWtdCompAvgTest, ShortRef) { +TEST_P(CwpTest, ShortRef) { const int tmp_stride = reference_stride_; reference_stride_ >>= 1; FillRandom(reference_data_, reference_stride_); @@ -865,7 +857,7 @@ TEST_P(DistWtdCompAvgTest, ShortRef) { reference_stride_ = tmp_stride; } -TEST_P(DistWtdCompAvgTest, UnalignedRef) { +TEST_P(CwpTest, UnalignedRef) { // The reference frame, but not the source frame, may be unaligned for // certain types of searches. const int tmp_stride = reference_stride_; @@ -876,19 +868,19 @@ TEST_P(DistWtdCompAvgTest, UnalignedRef) { reference_stride_ = tmp_stride; } -TEST_P(DistWtdSADTest, MaxRef) { +TEST_P(CwpSadTest, MaxRef) { FillConstant(source_data_, source_stride_, 0); FillConstant(reference_data_, reference_stride_, mask_); CheckSAD(); } -TEST_P(DistWtdSADTest, MaxSrc) { +TEST_P(CwpSadTest, MaxSrc) { FillConstant(source_data_, source_stride_, mask_); FillConstant(reference_data_, reference_stride_, 0); CheckSAD(); } -TEST_P(DistWtdSADTest, ShortRef) { +TEST_P(CwpSadTest, ShortRef) { const int tmp_stride = reference_stride_; reference_stride_ >>= 1; FillRandom(source_data_, source_stride_); @@ -897,7 +889,7 @@ TEST_P(DistWtdSADTest, ShortRef) { reference_stride_ = tmp_stride; } -TEST_P(DistWtdSADTest, UnalignedRef) { +TEST_P(CwpSadTest, UnalignedRef) { // The reference frame, but not the source frame, may be unaligned for // certain types of searches. const int tmp_stride = reference_stride_; @@ -908,7 +900,7 @@ TEST_P(DistWtdSADTest, UnalignedRef) { reference_stride_ = tmp_stride; } -TEST_P(DistWtdSADTest, ShortSrc) { +TEST_P(CwpSadTest, ShortSrc) { const int tmp_stride = source_stride_; source_stride_ >>= 1; int test_count = 2000; @@ -921,20 +913,20 @@ TEST_P(DistWtdSADTest, ShortSrc) { source_stride_ = tmp_stride; } -TEST_P(DistWtdSADavgTest, MaxRef) { +TEST_P(CwpSadAvgTest, MaxRef) { FillConstant(source_data_, source_stride_, 0); FillConstant(reference_data_, reference_stride_, mask_); FillConstant(second_pred_, width_, 0); CheckSAD(); } -TEST_P(DistWtdSADavgTest, MaxSrc) { +TEST_P(CwpSadAvgTest, MaxSrc) { FillConstant(source_data_, source_stride_, mask_); FillConstant(reference_data_, reference_stride_, 0); FillConstant(second_pred_, width_, 0); CheckSAD(); } -TEST_P(DistWtdSADavgTest, ShortRef) { +TEST_P(CwpSadAvgTest, ShortRef) { const int tmp_stride = reference_stride_; reference_stride_ >>= 1; FillRandom(source_data_, source_stride_); @@ -944,7 +936,7 @@ TEST_P(DistWtdSADavgTest, ShortRef) { reference_stride_ = tmp_stride; } -TEST_P(DistWtdSADavgTest, UnalignedRef) { +TEST_P(CwpSadAvgTest, UnalignedRef) { // The reference frame, but not the source frame, may be unaligned for // certain types of searches. const int tmp_stride = reference_stride_; @@ -956,7 +948,7 @@ TEST_P(DistWtdSADavgTest, UnalignedRef) { reference_stride_ = tmp_stride; } -TEST_P(DistWtdSADavgTest, ShortSrc) { +TEST_P(CwpSadAvgTest, ShortSrc) { const int tmp_stride = source_stride_; source_stride_ >>= 1; int test_count = 2000; diff --git a/test/test.cmake b/test/test.cmake index 511704d00c..80321a5f1f 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -213,10 +213,10 @@ if(NOT BUILD_SHARED_LIBS) "${AVM_ROOT}/test/av2_ccso_simd_cmp.cc" "${AVM_ROOT}/test/blend_a64_mask_1d_test.cc" "${AVM_ROOT}/test/blend_a64_mask_test.cc" - "${AVM_ROOT}/test/comp_avg_pred_test.cc" - "${AVM_ROOT}/test/comp_avg_pred_test.h" "${AVM_ROOT}/test/comp_avg_test.cc" "${AVM_ROOT}/test/comp_mask_variance_test.cc" + "${AVM_ROOT}/test/comp_weigh_pred_test.cc" + "${AVM_ROOT}/test/comp_weigh_pred_test.h" "${AVM_ROOT}/test/edge_detect_test.cc" "${AVM_ROOT}/test/encodetxb_test.cc" "${AVM_ROOT}/test/error_block_test.cc" diff --git a/test/variance_test.cc b/test/variance_test.cc index 1673d6346f..df5657fd3b 100644 --- a/test/variance_test.cc +++ b/test/variance_test.cc @@ -48,10 +48,12 @@ typedef unsigned int (*SubpixAvgVarMxNFunc)(const uint16_t *a, int a_stride, typedef unsigned int (*Get4x4SseFunc)(const uint16_t *a, int a_stride, const uint16_t *b, int b_stride); typedef unsigned int (*SumOfSquaresFunction)(const int16_t *src); -typedef unsigned int (*DistWtdSubpixAvgVarMxNFunc)( - const uint16_t *a, int a_stride, int xoffset, int yoffset, - const uint16_t *b, int b_stride, uint32_t *sse, const uint16_t *second_pred, - const DIST_WTD_COMP_PARAMS *jcp_param); +typedef unsigned int (*CwpSubpixAvgVarMxNFunc)(const uint16_t *a, int a_stride, + int xoffset, int yoffset, + const uint16_t *b, int b_stride, + uint32_t *sse, + const uint16_t *second_pred, + const CWP_PARAMS *cwp_param); using libavm_test::ACMRandom; @@ -519,7 +521,7 @@ class SubpelVarianceTest uint16_t *ref_; uint16_t *sec_; TestParams params_; - DIST_WTD_COMP_PARAMS jcp_param_; + CWP_PARAMS cwp_param_; // some relay helpers int byte_shift() const { return params_.bit_depth - 8; } @@ -661,7 +663,7 @@ INSTANTIATE_TEST_SUITE_P(C, SumOfSquaresTest, typedef TestParams VarianceParams; typedef TestParams SubpelVarianceParams; typedef TestParams SubpelAvgVarianceParams; -typedef TestParams DistWtdSubpelAvgVarianceParams; +typedef TestParams CwpSubpelAvgVarianceParams; typedef uint64_t (*MseHBDWxH16bitFunc)(uint16_t *dst, int dstride, uint16_t *src, int sstride, int w, From 40ae2fa1ef63b7bf9e41bd1bac15189550a405b3 Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Thu, 6 Aug 2026 10:51:20 -0700 Subject: [PATCH 146/205] Add an aggressive low-complexity level An aggressive low-complexity level is added for further decoder complexity reduction purpose. --- av2/arg_defs.c | 5 +++-- av2/av2_cx_iface.c | 9 +++++---- avm/avm_encoder.h | 7 ++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/av2/arg_defs.c b/av2/arg_defs.c index ddc9631c3d..8904751464 100644 --- a/av2/arg_defs.c +++ b/av2/arg_defs.c @@ -888,8 +888,9 @@ const av2_codec_arg_definitions_t g_av2_codec_arg_defs = { "(0: GROUP format [default], 1: SHORT format)"), .enable_low_complexity_decode = ARG_DEF(NULL, "enable-low-complexity-decode", 1, - "Enable low complexity decode " - "(0: false (default), 1: true)"), + "Enable low complexity decode. " + "(0: false (default), 1: standard low-complexity level, 2: " + "aggressive low-complexity level)"), #endif // CONFIG_AV2_ENCODER .enable_short_refresh_frame_flags = ARG_DEF(NULL, "enable-short-refresh-frame-flags", 1, diff --git a/av2/av2_cx_iface.c b/av2/av2_cx_iface.c index a69dd943ed..162b6ca037 100644 --- a/av2/av2_cx_iface.c +++ b/av2/av2_cx_iface.c @@ -862,7 +862,7 @@ static avm_codec_err_t validate_config(avm_codec_alg_priv_t *ctx, RANGE_CHECK(extra_cfg, reduced_tx_type_set, 0, 3); - RANGE_CHECK_HI(extra_cfg, enable_low_complexity_decode, 1); + RANGE_CHECK_HI(extra_cfg, enable_low_complexity_decode, 2); return AVM_CODEC_OK; } @@ -1761,9 +1761,10 @@ static avm_codec_err_t set_encoder_config(AV2EncoderConfig *oxcf, // Now, low complexity decode mode is only supported for good-quality // encoding. This can be further modified if needed. oxcf->enable_low_complexity_decode = - extra_cfg->enable_low_complexity_decode && - cfg->g_usage == AVM_USAGE_GOOD_QUALITY; - if (extra_cfg->enable_low_complexity_decode && + (cfg->g_usage == AVM_USAGE_GOOD_QUALITY) + ? extra_cfg->enable_low_complexity_decode + : 0; + if (extra_cfg->enable_low_complexity_decode > 0 && cfg->g_usage != AVM_USAGE_GOOD_QUALITY) { fprintf(stderr, "Warning: setting enable_low_complexity_decode to 0 since it " diff --git a/avm/avm_encoder.h b/avm/avm_encoder.h index da30358261..c3bc8c3270 100644 --- a/avm/avm_encoder.h +++ b/avm/avm_encoder.h @@ -682,9 +682,10 @@ typedef struct cfg_options { int operating_points_count; /*!\brief enable the low complexity decode mode - * If 0, disables the low complexity decode mode (default). - * If 1 and the usage is good-quality, enables the low complexity decode - * mode. + * If value = 0, disables the low complexity decode mode (default). + * If value > 0 and the usage is good-quality, enables the low complexity + * decode mode (value 1: standard low-complexity level, value 2: aggressive + * low-complexity level). */ unsigned int enable_low_complexity_decode; } cfg_options_t; From 29e4218837ba012669eb5760b3bd3c135f9f4d9d Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Thu, 6 Aug 2026 11:40:59 -0700 Subject: [PATCH 147/205] Add encoder options for aggressive low-complexity level Added encoder options for the aggressive low-complexity (LC) level (i.e. LC level = 2). Baseline: 5b32726 Test condition: CTC, RA, 65 frames, speed 1 ``` | PSNR-YUV | Enc-time (%) | Dec-time (%) -- | -------- | ------------ | ---------- A1 | 3.97% | 93% | 44% A2 | 3.42% | 94% | 49% A3 | 3.69% | 94% | 46% ``` With "enable_low_complexity_decode = 2", SW decoder complexity (vs AV1 decoder) reduces from 4x to 1.87x. STATS_CHANGED for enable_low_complexity_decode = 2 --- av2/encoder/speed_features.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index bfc89b62bc..33b2f7b6a7 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -655,11 +655,19 @@ static void set_good_speed_features_framesize_independent( // mode. static void set_good_speed_features_lc_dec_framesize_independent( AV2_COMP *cpi) { + // Standard low-complexity level cpi->oxcf.tool_cfg.enable_mv_traj = 0; cpi->oxcf.tool_cfg.enable_gdf = 0; cpi->oxcf.tool_cfg.enable_pc_wiener = 0; cpi->oxcf.tool_cfg.enable_tip_refinemv = 0; cpi->oxcf.tool_cfg.reduced_ref_frame_mvs_mode = 1; + + // Aggressive low-complexity level + if (cpi->oxcf.enable_low_complexity_decode > 1) { + cpi->oxcf.tool_cfg.enable_opfl_refine = 0; + cpi->oxcf.intra_mode_cfg.enable_mhccp = 0; + cpi->oxcf.tool_cfg.enable_lf_sub_pu = 0; + } } static void set_rt_speed_features_framesize_independent( @@ -1202,6 +1210,13 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { cpi->oxcf.tool_cfg.enable_tip_refinemv; cpi->common.seq_params.order_hint_info.reduced_ref_frame_mvs_mode = cpi->oxcf.tool_cfg.reduced_ref_frame_mvs_mode; + + cpi->common.seq_params.enable_opfl_refine = + cpi->oxcf.tool_cfg.enable_opfl_refine; + cpi->common.seq_params.enable_mhccp = + cpi->oxcf.intra_mode_cfg.enable_mhccp; + cpi->common.seq_params.enable_lf_sub_pu = + cpi->oxcf.tool_cfg.enable_lf_sub_pu; } } From e2fe2c3b1d712bc9d012ae2ed8d1cdcf074c3068 Mon Sep 17 00:00:00 2001 From: Deepa K G Date: Mon, 10 Aug 2026 15:21:02 +0530 Subject: [PATCH 148/205] Increase exhaustive search threshold for speed 1 Increase the threshold used to force mesh search when the residue variance is high, thereby reducing the number of exhaustive searches. The threshold is unchanged for screen contents. Results for RA CTC, A1 17 frames, A2 33 frames, speed 1: (Anchor: 587f50e) ``` +------------+-------+-------+-------+-------+---------------+ | Class | Y | Cb | Cr | wAvg |EncInstCount(%)| +------------+-------+-------+-------+-------+---------------+ | A1 | -0.02 | 0.05 | 0.09 | -0.02 | 95.27 | | A2 | -0.00 | -0.01 | 0.23 | 0.01 | 96.11 | +------------+-------+-------+-------+-------+---------------+ ``` STATS_CHANGED for speed=1 --- av2/encoder/speed_features.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 33b2f7b6a7..511223cdd4 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -382,6 +382,10 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.perform_coeff_opt = 0; } + if (!cpi->is_screen_content_type && + cpi->twopass.fr_content_type == FC_HIGHMOTION) { + sf->mv_sf.exhaustive_searches_thresh <<= 1; + } // Skip the second-best full-pel candidate's subpel refinement in the // single-ref NEWMV search. sf->mv_sf.skip_second_best_subpel = 1; From 2be2cb38301da2b612c174cb143d130dcc8034ae Mon Sep 17 00:00:00 2001 From: Jerome Date: Wed, 12 Aug 2026 13:26:13 -0400 Subject: [PATCH 149/205] Implement non-RD partition evaluation for real-time mode (#5236) This change is bitexact for RTC mode with speed up: Without Non-RD partition: ``` Bitrate(kbps) | PSNR(Y) | PSNR(U) | PSNR(V) | PSNR(Avg) | PSNR(Overall) | Encoding time (FPS) ------------------------------------------------------------------------------------------------------------ Summary: 285.057200 | 46.194842 | 44.555717 | 44.840002 | 45.625135 | 45.587741 | 20.9s (14.3 fps) ``` With Non-RD partition: ``` Bitrate(kbps) | PSNR(Y) | PSNR(U) | PSNR(V) | PSNR(Avg) | PSNR(Overall) | Encoding time (FPS) ------------------------------------------------------------------------------------------------------------ Summary: 285.057200 | 46.194842 | 44.555717 | 44.840002 | 45.625135 | 45.587741 | 18.4s (16.2 fps) ``` Tested with command line: ``` ./avmenc --passes=1 --bit-depth=8 --obu --lag-in-frames=0 --kf-min-dist=1000 --kf-max-dist=1000 screen_inp.1280_720.yuv -w 1280 -h 720 -o out.ivf --fps=15/1 --target-bitrate=400 --auto-alt-ref=0 --enable-tpl-model=0 --enable-keyframe-filtering=0 --enable-deblocking=1 --enable-restoration=0 --enable-intra-edge-filter=0 --enable-flip-idtx=1 --enable-masked-comp=0 --enable-onesided-comp=0 --enable-interintra-comp=0 --enable-smooth-interintra=0 --enable-diff-wtd-comp=0 --enable-interinter-wedge=0 --enable-interintra-wedge=0 --enable-global-motion=0 --enable-warped-motion=0 --enable-smooth-intra=0 --enable-paeth-intra=0 --enable-cfl-intra=0 --force-video-mode=1 --enable-overlay=0 --enable-angle-delta=0 --enable-trellis-quant=0 --enable-qm=0 --use-intra-dct-only=1 --coeff-cost-upd-freq=2 --mode-cost-upd-freq=2 --mv-cost-upd-freq=3 --frame-parallel=0 --aq-mode=0 --deltaq-mode=0 --frame-boost=0 --noise-sensitivity=0 --cdf-update-mode=1 --reduced-reference-set=1 --enable-ref-frame-mvs=0 --erp-pruning-level=0 --use-ml-erp-pruning=0 --enable-ext-partitions=0 --enable-mrls=0 --enable-pc-wiener=0 --enable-wiener-nonsep=0 --enable-tip=0 --enable-bawp=0 --enable-cwp=0 --enable-imp-msk-bld=0 --enable-ist=0 --enable-inter-ist=0 --enable-inter-ddt=0 --enable-cctx=0 --enable-ibp=0 --max-drl-refmvs=0 --max-drl-refbvs=0 --enable-refmvbank=0 --enable-opfl-refine=0 --enable-ccso=0 --enable-lf-sub-pu=0 --enable-adaptive-mvd=0 --enable-flex-mvres=0 --enable-joint-mvd=0 --enable-refinemv=0 --enable-mvd-sign-derive=0 --enable-parity-hiding=0 --enable-warp-delta=0 --enable-warp-extend=0 --tile-columns=0 --gf-min-pyr-height=0 --gf-max-pyr-height=0 --end-usage=q --use-fixed-qp-offsets=0 --psnr --threads=1 --enable-sdp=0 --min-gf-interval=8 --max-gf-interval=8 --explicit-ref-frame-map=1 --enable-bru=0 --enable-ext-seg=0 --enable-six-param-warp-delta=0 --enable-cdef=1 --enable-cdef-on-skip-txfm=0 --limit=1000 --dpb-size=3 --use-inter-dct-only=0 enable-fsc=1 --enable-idtx-intra=1 --enable-palette=1 --enable-intrabc-ext=0 --enable-intrabc=1 --tune-content=1 --rt --cpu-used=6 --min-qp=100 --max-qp=100 --enable-gdf=0 --max-reference-frames=1 ``` --- av2/encoder/encodeframe.c | 22 ++-- av2/encoder/partition_search.c | 187 +++++++++++++++++++++++++++++++++ av2/encoder/partition_search.h | 5 + av2/encoder/speed_features.c | 1 + test/rtc_test.cc | 33 +++++- 5 files changed, 241 insertions(+), 7 deletions(-) diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index e535420e92..e3477bae1b 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -805,12 +805,22 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, for (int plane = plane_start; plane < plane_end; plane++) { x->cb_offset[plane] = 0; } - av2_rd_use_partition( - cpi, td, tile_data, mi, - (intra_sdp_enabled && xd->tree_type == CHROMA_PART) ? tp_chroma : tp, - mi_row, mi_col, sb_size, &dummy_rate, &dummy_dist, 1, - xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], pc_root, - (xd->tree_type == CHROMA_PART) ? xd->sbi->ptree_root[0] : NULL); + TokenExtra **const tp_start = + (intra_sdp_enabled && xd->tree_type == CHROMA_PART) ? tp_chroma : tp; + PARTITION_TREE *const ptree_luma = + (xd->tree_type == CHROMA_PART) ? xd->sbi->ptree_root[0] : NULL; + if (cpi->sf.rt_sf.use_nonrd_partition) { + av2_nonrd_use_partition( + cpi, td, tile_data, mi, tp_start, mi_row, mi_col, sb_size, + xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], pc_root, + ptree_luma); + } else { + av2_rd_use_partition( + cpi, td, tile_data, mi, tp_start, mi_row, mi_col, sb_size, + &dummy_rate, &dummy_dist, 1, + xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], pc_root, + ptree_luma); + } av2_free_pc_tree_recursive(pc_root, num_planes, 0, 0); x->sb_enc.min_partition_size = min_partition_size; } diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index cae1da5b37..c43740a3df 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2356,6 +2356,193 @@ static void init_partition_costs(const AV2_COMMON *const cm, } } +/*!\brief Fast non-RD block partition encoding. + * + * \ingroup partition_search + * Encodes a block using pre-calculated partition patterns (e.g. from + * variance-based partitioning) without executing full Rate-Distortion (RD) + * searches across all candidate partition types. Recursively traverses basic + * partition types: PARTITION_NONE, PARTITION_HORZ, PARTITION_VERT, and + * PARTITION_SPLIT. + * + * \param[in] cpi Top-level encoder structure + * \param[in] td Pointer to thread data + * \param[in] tile_data Pointer to tile-level encoder data structure + * \param[in] mib Array of MB_MODE_INFO pointers starting from the + * current block + * \param[in] tp Pointer to the starting token + * \param[in] mi_row Row coordinate of the block (in MI units) + * \param[in] mi_col Column coordinate of the block (in MI units) + * \param[in] bsize Current block size + * \param[in] ptree Pointer to PARTITION_TREE node holding + * pre-calculated partitions + * \param[in] pc_tree Pointer to PC_TREE node holding picked partition + * information + * \param[in] ptree_luma Pointer to luma partition tree (used for chroma + * partition estimation) + */ +void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, + TileDataEnc *tile_data, MB_MODE_INFO **mib, + TokenExtra **tp, int mi_row, int mi_col, + BLOCK_SIZE bsize, PARTITION_TREE *ptree, + PC_TREE *pc_tree, PARTITION_TREE *ptree_luma) { + AV2_COMMON *const cm = &cpi->common; + const CommonModeInfoParams *const mi_params = &cm->mi_params; + if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) return; + + TileInfo *const tile_info = &tile_data->tile_info; + MACROBLOCK *const x = &td->mb; + MACROBLOCKD *const xd = &x->e_mbd; + const int ss_x = xd->plane[1].subsampling_x; + const int ss_y = xd->plane[1].subsampling_y; + assert(bsize < BLOCK_SIZES_ALL); + const int hbh = mi_size_high[bsize] / 2; + const int hbw = mi_size_wide[bsize] / 2; + const PARTITION_TYPE partition = + get_preset_partition(cm, xd->tree_type, mi_row, mi_col, bsize, ptree); + const BLOCK_SIZE subsize = get_partition_subsize(bsize, partition); + RD_STATS this_rdc, best_rdc; + int rate; + av2_invalid_rd_stats(&this_rdc); + av2_invalid_rd_stats(&best_rdc); + + if (!frame_is_intra_only(cm)) + pc_tree->region_type = MIXED_INTER_INTRA_REGION; + else + pc_tree->region_type = INTRA_REGION; + REGION_TYPE cur_region_type = pc_tree->region_type; + if (is_inter_sdp_chroma(cm, cur_region_type, x->e_mbd.tree_type)) { + if (pc_tree->none_chroma == NULL) { + pc_tree->none_chroma = + av2_alloc_pmc(cm, xd->tree_type, mi_row, mi_col, bsize, pc_tree, + PARTITION_NONE, 0, ss_x, ss_y, &td->shared_coeff_buf); + } + } else { + if (pc_tree->none[cur_region_type] == NULL) { + pc_tree->none[cur_region_type] = + av2_alloc_pmc(cm, xd->tree_type, mi_row, mi_col, bsize, pc_tree, + PARTITION_NONE, 0, ss_x, ss_y, &td->shared_coeff_buf); + } + } + + PICK_MODE_CONTEXT *ctx_none = + is_inter_sdp_chroma(cm, cur_region_type, x->e_mbd.tree_type) + ? pc_tree->none_chroma + : pc_tree->none[pc_tree->region_type]; + + pc_tree->partitioning = partition; + + if (bsize == BLOCK_16X16 && cpi->vaq_refresh) { + av2_set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize, + &pc_tree->chroma_ref_info); + x->mb_energy = av2_log_block_var(cpi, x, bsize +#if CONFIG_MIXED_LOSSLESS_ENCODE + , + mi_row, mi_col +#endif // CONFIG_MIXED_LOSSLESS_ENCODE + ); + } + + if (bsize == cm->sb_size) { + if (pc_tree) + pc_tree->is_cfl_allowed_for_this_chroma = CFL_DISALLOWED_FOR_CHROMA; + + xd->is_cfl_allowed_in_sdp = + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, PARTITION_NONE, bsize); + ptree->is_cfl_allowed_for_this_chroma_partition = CFL_DISALLOWED_FOR_CHROMA; + } + + if (partition == PARTITION_NONE) { + xd->is_cfl_allowed_in_sdp = + pc_tree->is_cfl_allowed_for_this_chroma | + ptree->is_cfl_allowed_for_this_chroma_partition | + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition, bsize); + + } else { + pc_tree->is_cfl_allowed_for_this_chroma = + ((pc_tree->parent) ? pc_tree->parent->is_cfl_allowed_for_this_chroma + : 0) | + is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition, bsize); + ptree->is_cfl_allowed_for_this_chroma_partition = CFL_DISALLOWED_FOR_CHROMA; + } + + switch (partition) { + case PARTITION_NONE: + pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, &this_rdc, + pc_tree->region_type, pc_tree->sb_root_partition_info, + bsize, ctx_none, best_rdc); + encode_b(cpi, tile_data, td, tp, mi_row, mi_col, OUTPUT_ENABLED, subsize, + partition, ctx_none, &rate); + break; + case PARTITION_HORZ: + pc_tree->horizontal[cur_region_type][0] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_HORZ, 0, 0, ss_x, ss_y); + pc_tree->horizontal[cur_region_type][1] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row + hbh, mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_HORZ, 1, 1, ss_x, ss_y); + + av2_nonrd_use_partition(cpi, td, tile_data, mib, tp, mi_row, mi_col, + subsize, ptree ? ptree->sub_tree[0] : NULL, + pc_tree->horizontal[cur_region_type][0], + get_partition_subtree_const(ptree_luma, 0)); + if (bsize >= BLOCK_8X8 && mi_row + hbh < mi_params->mi_rows) { + av2_nonrd_use_partition( + cpi, td, tile_data, mib + hbh * mi_params->mi_stride, tp, + mi_row + hbh, mi_col, subsize, ptree ? ptree->sub_tree[1] : NULL, + pc_tree->horizontal[cur_region_type][1], + get_partition_subtree_const(ptree_luma, 1)); + } + break; + case PARTITION_VERT: + pc_tree->vertical[cur_region_type][0] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_VERT, 0, 0, ss_x, ss_y); + pc_tree->vertical[cur_region_type][1] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col + hbw, cm->sb_size, subsize, pc_tree, + PARTITION_VERT, 1, 1, ss_x, ss_y); + av2_nonrd_use_partition(cpi, td, tile_data, mib, tp, mi_row, mi_col, + subsize, ptree ? ptree->sub_tree[0] : NULL, + pc_tree->vertical[cur_region_type][0], + get_partition_subtree_const(ptree_luma, 0)); + if (bsize >= BLOCK_8X8 && mi_col + hbw < mi_params->mi_cols) { + av2_nonrd_use_partition(cpi, td, tile_data, mib + hbw, tp, mi_row, + mi_col + hbw, subsize, + ptree ? ptree->sub_tree[1] : NULL, + pc_tree->vertical[cur_region_type][1], + get_partition_subtree_const(ptree_luma, 1)); + } + break; + case PARTITION_SPLIT: + for (int i = 0; i < SUB_PARTITIONS_SPLIT; i++) { + int x_idx = (i & 1) * hbw; + int y_idx = (i >> 1) * hbh; + int jj = i >> 1, ii = i & 0x01; + if ((mi_row + y_idx >= mi_params->mi_rows) || + (mi_col + x_idx >= mi_params->mi_cols)) + continue; + pc_tree->split[cur_region_type][i] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row + y_idx, mi_col + x_idx, cm->sb_size, subsize, + pc_tree, PARTITION_SPLIT, i, i == 3, ss_x, ss_y); + av2_nonrd_use_partition( + cpi, td, tile_data, + mib + jj * hbh * mi_params->mi_stride + ii * hbw, tp, + mi_row + y_idx, mi_col + x_idx, subsize, + ptree ? ptree->sub_tree[i] : NULL, + pc_tree->split[cur_region_type][i], + get_partition_subtree_const(ptree_luma, i)); + } + break; + case PARTITION_HORZ_4A: + case PARTITION_HORZ_4B: + case PARTITION_VERT_4A: + case PARTITION_VERT_4B: + case PARTITION_HORZ_3: + case PARTITION_VERT_3: + default: assert(0); break; + } +} + /*!\brief AV2 block partition search (partition estimation and partial search). * * \ingroup partition_search diff --git a/av2/encoder/partition_search.h b/av2/encoder/partition_search.h index 6fc5ca3dd5..762a6ddcb3 100644 --- a/av2/encoder/partition_search.h +++ b/av2/encoder/partition_search.h @@ -27,6 +27,11 @@ void av2_set_offsets_without_segment_id(const AV2_COMP *const cpi, void av2_set_offsets(const AV2_COMP *const cpi, const TileInfo *const tile, MACROBLOCK *const x, int mi_row, int mi_col, BLOCK_SIZE bsize, const CHROMA_REF_INFO *chroma_ref_info); +void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, + TileDataEnc *tile_data, MB_MODE_INFO **mib, + TokenExtra **tp, int mi_row, int mi_col, + BLOCK_SIZE bsize, PARTITION_TREE *ptree, + PC_TREE *pc_tree, PARTITION_TREE *ptree_luma); void av2_rd_use_partition(AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, MB_MODE_INFO **mib, TokenExtra **tp, int mi_row, int mi_col, BLOCK_SIZE bsize, int *rate, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 511223cdd4..53f90c2662 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -689,6 +689,7 @@ static void set_rt_speed_features_framesize_independent( sf->part_sf.partition_pruning_with_mlp = 0; sf->part_sf.partition_search_type = VAR_BASED_PARTITION; sf->rd_sf.tx_domain_dist_thres_level = 2; + sf->rt_sf.use_nonrd_partition = 1; sf->rt_sf.use_only_dc_intra_interframe = true; sf->winner_mode_sf.tx_size_search_level = USE_LARGESTALL; } diff --git a/test/rtc_test.cc b/test/rtc_test.cc index 66673a3791..71a1daf23d 100644 --- a/test/rtc_test.cc +++ b/test/rtc_test.cc @@ -71,7 +71,7 @@ class RtcTestLarge : public ::libavm_test::CodecTestWithParam, encoder->Control(AV2E_SET_QUANT_B_ADAPT, 0); encoder->Control(AV2E_SET_ENABLE_TPL_MODEL, 0); encoder->Control(AV2E_SET_FRAME_PERIODIC_BOOST, 0); - encoder->Control(AV2E_SET_MAX_REFERENCE_FRAMES, 3); + encoder->Control(AV2E_SET_MAX_REFERENCE_FRAMES, 1); encoder->Control(AV2E_SET_REDUCED_REFERENCE_SET, 1); encoder->Control(AV2E_SET_ENABLE_REF_FRAME_MVS, 0); encoder->Control(AV2E_SET_ENABLE_QM, 0); @@ -90,6 +90,37 @@ class RtcTestLarge : public ::libavm_test::CodecTestWithParam, encoder->Control(AV2E_SET_COEFF_COST_UPD_FREQ, 2); encoder->Control(AV2E_SET_MODE_COST_UPD_FREQ, 2); encoder->Control(AV2E_SET_MV_COST_UPD_FREQ, 3); + // The following settings don't have codec control assigned yet. + encoder->SetOption("enable-sdp", "0"); + encoder->SetOption("enable-extended-sdp", "0"); + encoder->SetOption("enable-mhccp", "0"); + encoder->SetOption("enable-mrls", "0"); + encoder->SetOption("enable-tip", "0"); + encoder->SetOption("enable-bawp", "0"); + encoder->SetOption("enable-cwp", "0"); + encoder->SetOption("enable-imp-msk-bld", "0"); + encoder->SetOption("enable-ist", "0"); + encoder->SetOption("enable-inter-ist", "0"); + encoder->SetOption("enable-inter-ddt", "0"); + encoder->SetOption("enable-cctx", "0"); + encoder->SetOption("enable-ccso", "0"); + encoder->SetOption("enable-ext-partitions", "0"); + encoder->SetOption("enable-pc-wiener", "0"); + encoder->SetOption("enable-wiener-nonsep", "0"); + encoder->SetOption("enable-ibp", "0"); + encoder->SetOption("enable-refmvbank", "0"); + encoder->SetOption("enable-opfl-refine", "0"); + encoder->SetOption("enable-lf-sub-pu", "0"); + encoder->SetOption("enable-adaptive-mvd", "0"); + encoder->SetOption("enable-flex-mvres", "0"); + encoder->SetOption("enable-joint-mvd", "0"); + encoder->SetOption("enable-refinemv", "0"); + encoder->SetOption("enable-mvd-sign-derive", "0"); + encoder->SetOption("enable-parity-hiding", "0"); + encoder->SetOption("enable-warp-delta", "0"); + encoder->SetOption("enable-warp-extend", "0"); + encoder->SetOption("max-drl-refmvs", "0"); + encoder->SetOption("max-drl-refbvs", "0"); } } From 40e958d6f95878b2108b600519299a20a0cafe2c Mon Sep 17 00:00:00 2001 From: Bohan Li Date: Wed, 12 Aug 2026 14:15:17 -0700 Subject: [PATCH 150/205] Fix "Optimize AV2 encoder by removing redundant memset calls" (#5255) The previous [PR ](https://github.com/AOMediaCodec/avm/pull/5194) caused analyzer [failure](https://github.com/AOMediaCodec/avm/issues/5231) and was reverted. This PR re-applies the changes with a fix. Locally verified that the error no longer shows. Fixes #5231 --- av2/encoder/av2_quantize.c | 26 +++++++++----------------- av2/encoder/av2_quantize.h | 3 +-- av2/encoder/encodemb.c | 2 +- av2/encoder/hybrid_fwd_txfm.c | 9 ++++++--- av2/encoder/x86/highbd_fwd_txfm_avx2.c | 11 +++++++---- 5 files changed, 24 insertions(+), 27 deletions(-) diff --git a/av2/encoder/av2_quantize.c b/av2/encoder/av2_quantize.c index c75ca00bf4..0e67284dd8 100644 --- a/av2/encoder/av2_quantize.c +++ b/av2/encoder/av2_quantize.c @@ -28,12 +28,7 @@ #include "av2/encoder/encoder.h" #include "av2/encoder/rd.h" -void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr) { - memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); - memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); - *eob_ptr = 0; -} +void av2_quantize_skip(uint16_t *eob_ptr) { *eob_ptr = 0; } static void highbd_quantize_fp_helper_c( const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, @@ -210,15 +205,12 @@ void av2_highbd_quantize_b_facade(const int use_tcq_deadzone_boost, } static INLINE void highbd_quantize_dc( - const tran_low_t *coeff_ptr, int n_coeffs, int skip_block, - const int32_t *round_ptr, const int32_t quant, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, const int32_t dequant_ptr, uint16_t *eob_ptr, - const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale) { + const tran_low_t *coeff_ptr, int skip_block, const int32_t *round_ptr, + const int32_t quant, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, + const int32_t dequant_ptr, uint16_t *eob_ptr, const qm_val_t *qm_ptr, + const qm_val_t *iqm_ptr, const int log_scale) { int eob = -1; - memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); - memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); - if (!skip_block) { const qm_val_t wt = qm_ptr != NULL ? qm_ptr[0] : (1 << AVM_QM_BITS); const qm_val_t iwt = iqm_ptr != NULL ? iqm_ptr[0] : (1 << AVM_QM_BITS); @@ -259,11 +251,11 @@ void av2_highbd_quantize_dc_facade(const int use_tcq_deadzone_boost, const qm_val_t *iqm_ptr = qparam->iqmatrix; (void)sc; (void)use_tcq_deadzone_boost; + (void)n_coeffs; - highbd_quantize_dc(coeff_ptr, (int)n_coeffs, skip_block, p->round_QTX, - p->quant_fp_QTX[0], qcoeff_ptr, dqcoeff_ptr, - p->dequant_QTX[0], eob_ptr, qm_ptr, iqm_ptr, - qparam->log_scale); + highbd_quantize_dc(coeff_ptr, skip_block, p->round_QTX, p->quant_fp_QTX[0], + qcoeff_ptr, dqcoeff_ptr, p->dequant_QTX[0], eob_ptr, + qm_ptr, iqm_ptr, qparam->log_scale); } void av2_highbd_quantize_fp_c(const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, intptr_t count, diff --git a/av2/encoder/av2_quantize.h b/av2/encoder/av2_quantize.h index e5893ca74a..63c2bf37be 100644 --- a/av2/encoder/av2_quantize.h +++ b/av2/encoder/av2_quantize.h @@ -127,8 +127,7 @@ int av2_quantizer_to_qindex(int quantizer, avm_bit_depth_t bit_depth); int av2_qindex_to_quantizer(int qindex, avm_bit_depth_t bit_depth); -void av2_quantize_skip(intptr_t n_coeffs, tran_low_t *qcoeff_ptr, - tran_low_t *dqcoeff_ptr, uint16_t *eob_ptr); +void av2_quantize_skip(uint16_t *eob_ptr); void av2_highbd_quantize_fp_facade(const int use_tcq_deadzone_boost, const tran_low_t *coeff_ptr, diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index fc9e00abfc..28106e1a27 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -730,7 +730,7 @@ void av2_quant(const int use_tcq_deadzone_boost, MACROBLOCK *x, int plane, n_coeffs, p, qcoeff, dqcoeff, eob, scan_order, qparam); } else { - av2_quantize_skip(n_coeffs, qcoeff, dqcoeff, eob); + av2_quantize_skip(eob); } } diff --git a/av2/encoder/hybrid_fwd_txfm.c b/av2/encoder/hybrid_fwd_txfm.c index 357c73b278..9b0c90b068 100644 --- a/av2/encoder/hybrid_fwd_txfm.c +++ b/av2/encoder/hybrid_fwd_txfm.c @@ -10,15 +10,17 @@ * aomedia.org/license/patent-license/. */ -#include "config/avm_config.h" +#include + #include "config/av2_rtcd.h" +#include "config/avm_config.h" #include "config/avm_dsp_rtcd.h" #include "av2/common/idct.h" -#include "av2/encoder/hybrid_fwd_txfm.h" #include "av2/common/scan.h" #include "av2/common/secondary_tx.h" #include "av2/common/txb_common.h" +#include "av2/encoder/hybrid_fwd_txfm.h" void av2_lossless_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { @@ -984,7 +986,8 @@ void fwd_txfm_c(const int16_t *resi, tran_low_t *coeff, int diff_stride, int skipWidth = width > 32 ? width - 32 : 0; int skipHeight = height > 32 ? height - 32 : 0; - int buf[MAX_TX_SQUARE] = { 0 }; + int buf[MAX_TX_SQUARE]; + assert(width >= 4 && height >= 4); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { diff --git a/av2/encoder/x86/highbd_fwd_txfm_avx2.c b/av2/encoder/x86/highbd_fwd_txfm_avx2.c index f7a394d3da..c29d501484 100644 --- a/av2/encoder/x86/highbd_fwd_txfm_avx2.c +++ b/av2/encoder/x86/highbd_fwd_txfm_avx2.c @@ -12,13 +12,15 @@ #include #include /*AVX2*/ -#include "config/avm_config.h" #include "config/av2_rtcd.h" +#include "config/avm_config.h" +#include "config/avm_dsp_rtcd.h" + #include "av2/common/av2_txfm.h" +#include "av2/common/txb_common.h" #include "avm_dsp/txfm_common.h" -#include "avm_ports/mem.h" #include "avm_dsp/x86/txfm_common_sse2.h" -#include "av2/common/txb_common.h" +#include "avm_ports/mem.h" static INLINE __m256i round_power_of_two_signed_avx2(__m256i v_val_d, int bits) { @@ -5229,7 +5231,8 @@ void fwd_txfm_avx2(const int16_t *resi, tran_low_t *coeff, int diff_stride, int skipWidth = width > 32 ? width - 32 : 0; int skipHeight = height > 32 ? height - 32 : 0; - int buf[MAX_TX_SQUARE] = { 0 }; + int buf[MAX_TX_SQUARE]; + assert(width >= 4 && height >= 4); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { From 6ee6a7ad7e9dc43ceb9f32b86f6e43e0f97bc543 Mon Sep 17 00:00:00 2001 From: Jerome Date: Thu, 13 Aug 2026 11:57:09 -0400 Subject: [PATCH 151/205] Remove *Large from RTC test (#5257) RTC test is fast enough now to be non-Large --- test/rtc_test.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/rtc_test.cc b/test/rtc_test.cc index 71a1daf23d..29eb0b02d1 100644 --- a/test/rtc_test.cc +++ b/test/rtc_test.cc @@ -18,11 +18,11 @@ namespace { // This class is used to validate realtime encoding path. -class RtcTestLarge : public ::libavm_test::CodecTestWithParam, - public ::libavm_test::EncoderTest { +class RtcTest : public ::libavm_test::CodecTestWithParam, + public ::libavm_test::EncoderTest { protected: - RtcTestLarge() : EncoderTest(GET_PARAM(0)), tune_content_(GET_PARAM(1)) {} - virtual ~RtcTestLarge() {} + RtcTest() : EncoderTest(GET_PARAM(0)), tune_content_(GET_PARAM(1)) {} + virtual ~RtcTest() {} virtual void SetUp() { const avm_codec_err_t res = @@ -133,10 +133,10 @@ class RtcTestLarge : public ::libavm_test::CodecTestWithParam, int tune_content_; }; -TEST_P(RtcTestLarge, RtcTest) { +TEST_P(RtcTest, RtcTest) { ::libavm_test::Y4mVideoSource video_nonsc("niklas_1280_720_30.y4m", 0, 50); ASSERT_NO_FATAL_FAILURE(RunLoop(&video_nonsc)); } -AV2_INSTANTIATE_TEST_SUITE(RtcTestLarge, ::testing::Range(0, 2)); +AV2_INSTANTIATE_TEST_SUITE(RtcTest, ::testing::Range(0, 2)); } // namespace From aa90cea24fce789e7eee73810bafb16389eb536c Mon Sep 17 00:00:00 2001 From: Mudassir Galaganath Date: Thu, 13 Aug 2026 21:28:41 +0530 Subject: [PATCH 152/205] Revert the unintended change under COLLECT_TX_SIZE_DATA (#5251) This change reverts the unintended function renaming and parameter changes of collect_tx_size_data(). No stats changed. --- av2/encoder/tx_search.c | 4 ++-- av2/encoder/tx_search.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 00ede94006..bf9242a059 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -2692,8 +2692,8 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, #endif // CONFIG_COLLECT_RD_STATS == 1 #if COLLECT_TX_SIZE_DATA - record_tx_type_info(cpi, x, plane, block, plane_bsize, blk_row, blk_col, - tx_size, packed_tx_type, rd); + collect_tx_size_data(x, plane, blk_row, blk_col, plane_bsize, tx_size, + packed_tx_type, rd); #endif // COLLECT_TX_SIZE_DATA assert(tx_sf->adaptive_tx_type_search_idx < 6); diff --git a/av2/encoder/tx_search.h b/av2/encoder/tx_search.h index 8b804983f3..4570bd3c35 100644 --- a/av2/encoder/tx_search.h +++ b/av2/encoder/tx_search.h @@ -34,11 +34,11 @@ extern "C" { static const char av2_tx_size_data_output_file[] = "tx_size_data.txt"; -static AVM_INLINE void collect_tx_size_data(const AV2_COMP *cpi, - const MACROBLOCK *x, int plane, +static AVM_INLINE void collect_tx_size_data(const MACROBLOCK *x, int plane, int blk_row, int blk_col, BLOCK_SIZE plane_bsize, - TX_SIZE tx_size, TX_TYPE tx_type, + TX_SIZE tx_size, + TX_TYPE packed_tx_type, int64_t rd) { // Generate small sample to restrict output size. static unsigned int seed = 21743; @@ -76,7 +76,7 @@ static AVM_INLINE void collect_tx_size_data(const AV2_COMP *cpi, src_diff += diff_stride; } - fprintf(fp, "%d,%d,%d,%" PRId64, txb_w, txb_h, tx_type, rd); + fprintf(fp, "%d,%d,%d,%" PRId64, txb_w, txb_h, packed_tx_type, rd); fprintf(fp, "\n"); fclose(fp); } From b8e165affa21bc0caa47db505d5b4f4cb8d3f619 Mon Sep 17 00:00:00 2001 From: deepa-kg Date: Thu, 13 Aug 2026 21:56:51 +0530 Subject: [PATCH 153/205] Increase exhaustive search threshold for speed >=2 (#5252) Increase the threshold used to force mesh search when the residue variance is high, thereby reducing the number of exhaustive searches. The threshold is unchanged for screen contents. Results for RA CTC, A1 17 frames, A2 33 frames, speed 2,3: (Anchor: 587f50e) ``` +-------+------------+-------+-------+-------+-------+---------------+ | Speed | Class | Y | Cb | Cr | wAvg |EncInstCount(%)| +-------+------------+-------+-------+-------+-------+---------------+ | 2 | A2 | 0.05 | 0.20 | 0.21 | 0.07 | 88.68 | | 2 | A1 | 0.12 | 0.32 | 0.19 | 0.13 | 91.29 | +--------------------------------------------------------------------+ | 3 | A2 | 0.08 | 0.07 | 0.32 | 0.09 | 95.20 | | 3 | A1 | 0.02 | 0.10 | 0.18 | 0.03 | 96.65 | +-------+------------+-------+-------+-------+-------+---------------+ ``` STATS_CHANGED for speed>=2 --- av2/encoder/speed_features.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 53f90c2662..2d56fb2dfc 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -432,8 +432,7 @@ static void set_good_speed_features_framesize_independent( sf->part_sf.disable_uneven_4way_partitions = true; sf->part_sf.disable_ext_partitions = true; - if (cpi->twopass.fr_content_type == FC_HIGHMOTION || - cpi->is_screen_content_type) { + if (cpi->is_screen_content_type) { sf->mv_sf.exhaustive_searches_thresh = (1 << 21); } else { sf->mv_sf.exhaustive_searches_thresh = (1 << 26); From 87bfe3a64ec9a1e0725aba201f18fe6b34276587 Mon Sep 17 00:00:00 2001 From: Bohan Li Date: Thu, 13 Aug 2026 12:21:33 -0700 Subject: [PATCH 154/205] Add reference-frame-selective warp search speed feature Add warp_search_method_sec_ref to MV_SPEED_FEATURES to allow using a faster warp motion search method (DIAMOND) on secondary reference frames during the initial inter-mode search loop, while preserving the primary search method (SQUARE) for the primary reference (LAST_FRAME) and winner mode candidate evaluations. Enabled for speed >= 2. Tests: 33 frame CTC against [82a8d03](https://github.com/AOMediaCodec/avm/commit/82a8d033681e0146697ad5d8ec0f175e4aeadb74) Speed 2: | Set | Y | U | V | YUV | Enc-time | | :--- | :--- | :--- | :--- | :--- | :--- | | A1 | +0.03% | +0.15% | +0.18% | +0.05% | 98.75% | | A2 | +0.05% | +0.24% | -0.08% | +0.05% | 98.25% | | A3 | +0.05% | +0.27% | +0.11% | +0.06% | 98.12% | | A4 | +0.04% | -0.04% | +0.20% | +0.04% | 97.10% | | A5 | -0.05% | +0.06% | -0.49% | -0.06% | 96.99% | | B1 | +0.02% | -0.02% | +0.00% | +0.02% | 98.03% | | B2 | +0.03% | +0.02% | +0.07% | +0.03% | 99.93% | | Overall w/o B2 | +0.03% | +0.14% | +0.00% | +0.04% | 98.05% | STATS_CHANGED for speed >= 2 --- av2/encoder/rdopt.c | 35 +++++++++++++++++++++++------------ av2/encoder/speed_features.c | 3 +++ av2/encoder/speed_features.h | 5 +++++ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index c9b529c859..6327f6b29e 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -2444,13 +2444,20 @@ static AVM_INLINE int handle_simple_translation_mode( return 0; } +static AVM_INLINE WARP_SEARCH_METHOD get_warp_search_method( + const AV2_COMP *cpi, int eval_motion_mode, MV_REFERENCE_FRAME ref_frame) { + if (eval_motion_mode || ref_frame == 0) + return cpi->sf.mv_sf.warp_search_method; + return cpi->sf.mv_sf.warp_search_method_sec_ref; +} + // Handle WARP_CAUSAL motion mode: compute least-squares warp models from // projection samples, optionally refine MVs, build warped predictor. // Returns -1 to skip this motion mode iteration, 0 on success. static AVM_INLINE int handle_warp_causal_mode( const AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, MB_MODE_INFO *mbmi, PREDICTION_MODE this_mode, int rate2_nocoeff, int rate_mv0, - int *tmp_rate_mv, int *tmp_rate2) { + int *tmp_rate_mv, int *tmp_rate2, int eval_motion_mode) { const AV2_COMMON *cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; const int mi_row = xd->mi_row; @@ -2504,9 +2511,10 @@ static AVM_INLINE int handle_warp_causal_mode( av2_make_default_subpel_ms_params( &ms_params, cpi, x, bsize, &ref_mv.as_mv, pb_mv_precision, 0, NULL); // Refine MV in a small range. - av2_refine_warped_mv(xd, cm, &ms_params, bsize, pts0, pts_inref0, - total_samples0, 0, cpi->sf.mv_sf.warp_search_method, - cpi->sf.mv_sf.warp_search_iters); + av2_refine_warped_mv( + xd, cm, &ms_params, bsize, pts0, pts_inref0, total_samples0, 0, + get_warp_search_method(cpi, eval_motion_mode, mbmi->ref_frame[0]), + cpi->sf.mv_sf.warp_search_iters); if (mv0.as_int != mbmi->mv[0].as_int) { if (mbmi->mode == NEW_NEWMV) { int tmp_rate_mv0 = av2_mv_bit_cost( @@ -2534,9 +2542,10 @@ static AVM_INLINE int handle_warp_causal_mode( av2_make_default_subpel_ms_params( &ms_params, cpi, x, bsize, &ref_mv.as_mv, pb_mv_precision, 0, NULL); // Refine MV in a small range. - av2_refine_warped_mv(xd, cm, &ms_params, bsize, pts1, pts_inref1, - total_samples1, 1, cpi->sf.mv_sf.warp_search_method, - cpi->sf.mv_sf.warp_search_iters); + av2_refine_warped_mv( + xd, cm, &ms_params, bsize, pts1, pts_inref1, total_samples1, 1, + get_warp_search_method(cpi, eval_motion_mode, mbmi->ref_frame[1]), + cpi->sf.mv_sf.warp_search_iters); if (mv1.as_int != mbmi->mv[1].as_int) { int tmp_rate_mv1 = av2_mv_bit_cost( @@ -2632,7 +2641,8 @@ static AVM_INLINE int handle_warp_delta_mode( if (!cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode || !eval_motion_mode) valid = av2_refine_mv_for_base_param_warp_model( - cm, xd, mbmi, mbmi_ext, &ms_params, cpi->sf.mv_sf.warp_search_method, + cm, xd, mbmi, mbmi_ext, &ms_params, + get_warp_search_method(cpi, eval_motion_mode, mbmi->ref_frame[0]), cpi->sf.mv_sf.warp_search_iters); } else { mbmi->six_param_warp_model_flag = get_default_six_param_flag(cm, mbmi); @@ -2677,7 +2687,7 @@ static AVM_INLINE int handle_warp_delta_mode( static AVM_INLINE int handle_warp_extend_mode( const AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, MB_MODE_INFO *mbmi, const MB_MODE_INFO_EXT *mbmi_ext, int rate2_nocoeff, int rate_mv0, - int *tmp_rate_mv, int *tmp_rate2) { + int *tmp_rate_mv, int *tmp_rate2, int eval_motion_mode) { const AV2_COMMON *cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; const int mi_row = xd->mi_row; @@ -2747,7 +2757,8 @@ static AVM_INLINE int handle_warp_extend_mode( // Refine motion vector av2_refine_mv_for_warp_extend( cm, xd, &ms_params, neighbor_is_above, bsize, &neighbor_params, - cpi->sf.mv_sf.warp_search_method, cpi->sf.mv_sf.warp_search_iters); + get_warp_search_method(cpi, eval_motion_mode, mbmi->ref_frame[0]), + cpi->sf.mv_sf.warp_search_iters); // If we changed the MV, update costs if (mv0.as_int != mbmi->mv[0].as_int) { @@ -3000,7 +3011,7 @@ static AVM_INLINE int evaluate_motion_mode_trial( } else if (mbmi->motion_mode == WARP_CAUSAL) { if (handle_warp_causal_mode(cpi, x, bsize, mbmi, base_mbmi->mode, ctx->rate2_nocoeff, ctx->rate_mv0, &tmp_rate_mv, - &tmp_rate2) < 0) + &tmp_rate2, eval_motion_mode) < 0) return -1; } else if (mbmi->motion_mode == INTERINTRA) { if (cpi->sf.inter_sf.prune_interintra_by_ref_idx && mbmi->ref_frame[0] > 1) @@ -3021,7 +3032,7 @@ static AVM_INLINE int evaluate_motion_mode_trial( } else if (mbmi->motion_mode == WARP_EXTEND) { if (handle_warp_extend_mode(cpi, x, bsize, mbmi, mbmi_ext, ctx->rate2_nocoeff, ctx->rate_mv0, &tmp_rate_mv, - &tmp_rate2) < 0) + &tmp_rate2, eval_motion_mode) < 0) return -1; } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 2d56fb2dfc..946543ddb9 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -420,6 +420,8 @@ static void set_good_speed_features_framesize_independent( } if (speed >= 2) { + sf->mv_sf.warp_search_method_sec_ref = WARP_SEARCH_DIAMOND; + sf->lpf_sf.early_terminate_ccso_search_by_cost = 1; sf->part_sf.partition_pruning_with_mlp_none_thresh = 2.5f; sf->part_sf.intra_cnn_split = 0; @@ -798,6 +800,7 @@ static AVM_INLINE void init_mv_sf(MV_SPEED_FEATURES *mv_sf) { mv_sf->use_fullpel_costlist = 0; mv_sf->use_downsampled_sad = 0; mv_sf->warp_search_method = WARP_SEARCH_SQUARE; + mv_sf->warp_search_method_sec_ref = WARP_SEARCH_SQUARE; mv_sf->warp_search_iters = 8; mv_sf->fast_motion_estimation_on_block_256 = 0; } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 055135ff90..610689a09f 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -538,8 +538,13 @@ typedef struct MV_SPEED_FEATURES { // Method to use for refining WARP_CAUSAL motion vectors WARP_SEARCH_METHOD warp_search_method; + // Method to use for refining WARP_CAUSAL motion vectors on secondary reference + // frames during coarse inter-mode search + WARP_SEARCH_METHOD warp_search_method_sec_ref; + // Maximum number of iterations in WARP_CAUSAL refinement search int warp_search_iters; + // Use faster motion search settings for partition blocks with at least one // dimension that's >= 256 int fast_motion_estimation_on_block_256; From c2409e85a89186fc58bc62343a40f398ab287918 Mon Sep 17 00:00:00 2001 From: Bohan Li Date: Thu, 13 Aug 2026 13:15:28 -0700 Subject: [PATCH 155/205] Fix format --- av2/encoder/speed_features.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 610689a09f..092a343084 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -538,8 +538,8 @@ typedef struct MV_SPEED_FEATURES { // Method to use for refining WARP_CAUSAL motion vectors WARP_SEARCH_METHOD warp_search_method; - // Method to use for refining WARP_CAUSAL motion vectors on secondary reference - // frames during coarse inter-mode search + // Method to use for refining WARP_CAUSAL motion vectors on secondary + // reference frames during coarse inter-mode search WARP_SEARCH_METHOD warp_search_method_sec_ref; // Maximum number of iterations in WARP_CAUSAL refinement search From 2950bcb96d3d45f2d956bccdb56e1760aecbb9d1 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Fri, 14 Aug 2026 08:59:54 -0700 Subject: [PATCH 156/205] Optimize speed features to disable H / 4-way Partitions (#5254) Use the sequence flag to normatively disable these instead of using encoder-only method. Anchor: 8d9588497 ### Speed 4, AI CTC 5 frames: ``` +---------+--------+----------+ | Summary | YUV | Enc-time | +---------+--------+----------+ | A1 | -0.04% | 100% | | A2 | -0.02% | 100% | | A3 | -0.04% | 100% | | A4 | -0.29% | 100% | | A5 | -0.09% | 100% | | B1 | -0.14% | 100% | | Avg | -0.08% | 100% | +---------+--------+----------+ ``` ### Speed 4, RA CTC 33 frames: ``` +---------+--------+----------+ | Summary | YUV | Enc-time | +---------+--------+----------+ | A1 | -0.06% | 100% | | A2 | -0.05% | 100% | | A3 | -0.15% | 100% | | A4 | -0.04% | 100% | | A5 | -0.14% | 100% | | B1 | -0.10% | 100% | | Avg | -0.08% | 100% | +---------+--------+----------+ ``` --- av2/encoder/partition_search.c | 17 +++-------------- av2/encoder/speed_features.c | 6 ++++++ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index c43740a3df..c20ab669ab 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2993,8 +2993,7 @@ static INLINE void accumulate_partition_timing_stats( static AVM_INLINE void init_allowed_partitions( PartitionSearchState *part_search_state, const PartitionCfg *part_cfg, - const SPEED_FEATURES *const sf, const int bru_skip, - const bool *partition_allowed) { + const int bru_skip, const bool *partition_allowed) { if (bru_skip) { part_search_state->is_block_splittable = false; part_search_state->do_rectangular_split = false; @@ -3030,40 +3029,30 @@ static AVM_INLINE void init_allowed_partitions( is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT), min_partition_size); part_search_state->partition_allowed[PARTITION_HORZ_3] = - !sf->part_sf.disable_ext_partitions && partition_allowed[PARTITION_HORZ_3] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_3), blk_params->min_partition_size) && is_bsize_geq(get_h_partition_subsize(bsize, 1, PARTITION_HORZ_3), blk_params->min_partition_size); part_search_state->partition_allowed[PARTITION_VERT_3] = - !sf->part_sf.disable_ext_partitions && partition_allowed[PARTITION_VERT_3] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_3), blk_params->min_partition_size) && is_bsize_geq(get_h_partition_subsize(bsize, 1, PARTITION_VERT_3), blk_params->min_partition_size); part_search_state->partition_allowed[PARTITION_HORZ_4A] = - !sf->part_sf.disable_ext_partitions && - !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_HORZ_4A] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_4A), blk_params->min_partition_size); part_search_state->partition_allowed[PARTITION_HORZ_4B] = - !sf->part_sf.disable_ext_partitions && - !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_HORZ_4B] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_HORZ_4B), blk_params->min_partition_size); part_search_state->partition_allowed[PARTITION_VERT_4A] = - !sf->part_sf.disable_ext_partitions && - !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_VERT_4A] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_4A), blk_params->min_partition_size); part_search_state->partition_allowed[PARTITION_VERT_4B] = - !sf->part_sf.disable_ext_partitions && - !sf->part_sf.disable_uneven_4way_partitions && partition_allowed[PARTITION_VERT_4B] && is_bsize_geq(get_partition_subsize(bsize, PARTITION_VERT_4B), blk_params->min_partition_size); @@ -3262,7 +3251,7 @@ static void init_partition_search_state_params( cm, x, mi_row, mi_col, bsize, ptree_luma, template_tree, pc_tree->region_type, partition_allowed); init_allowed_partitions( - part_search_state, &cpi->oxcf.part_cfg, &cpi->sf, + part_search_state, &cpi->oxcf.part_cfg, is_bru_not_active_and_not_on_partial_border(cm, mi_col, mi_row, bsize), partition_allowed); } @@ -5616,7 +5605,7 @@ bool av2_rd_pick_partition( (pc_tree->parent ? pc_tree->parent->region_type : INTRA_REGION), mi_row, mi_col, ss_x, ss_y, bsize, &pc_tree->chroma_ref_info); init_allowed_partitions( - &part_search_state, &cpi->oxcf.part_cfg, &cpi->sf, + &part_search_state, &cpi->oxcf.part_cfg, is_bru_not_active_and_not_on_partial_border(cm, mi_col, mi_row, bsize), partition_allowed); #if CONFIG_ML_PART_SPLIT diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 946543ddb9..b4b5ad2f78 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -1233,6 +1233,12 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { cpi->common.seq_params.enable_masked_compound &= !sf->inter_sf.disable_masked_comp; + cpi->common.seq_params.enable_ext_partitions &= + !sf->part_sf.disable_ext_partitions; + + cpi->common.seq_params.enable_uneven_4way_partitions &= + !sf->part_sf.disable_uneven_4way_partitions; + if (sf->inter_sf.reduce_comp_refs) { cpi->common.seq_params.num_same_ref_compound = AVMMIN(cpi->common.seq_params.num_same_ref_compound, 1); From ace3aac99a5d942095150c45e879bc075440b307 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Fri, 14 Aug 2026 11:18:51 -0700 Subject: [PATCH 157/205] Use high_precision_mv_usage = LAST_MV_DATA for all speeds (#5266) But keep QTR_ONLY for 1080p as before. Anchor: 425711f34 Speed 4, RA CTC 33 frames: ``` +---------+--------+----------+ | Summary | YUV | Enc-time | +---------+--------+----------+ | A3 | -0.15% | 99.31% | | A4 | -0.09% | 99.18% | | A5 | -0.06% | 100.18% | |Avg A3-A5| -0.11% | 99.68% | +---------+--------+----------+ ``` STATS_CHANGED for speed >= 3 for resolution < 1080p. --- av2/encoder/speed_features.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index b4b5ad2f78..c20280485f 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -483,7 +483,6 @@ static void set_good_speed_features_framesize_independent( sf->lpf_sf.enable_deblock_for_partition_search = 0; - sf->hl_sf.high_precision_mv_usage = CURRENT_Q; sf->hl_sf.recode_loop = ALLOW_RECODE_KFARFGF; sf->part_sf.allow_partition_search_skip = 1; @@ -703,7 +702,7 @@ static AVM_INLINE void init_hl_sf(HIGH_LEVEL_SPEED_FEATURES *hl_sf) { hl_sf->disable_unequal_scale_refs = false; // Recode loop tolerance %. hl_sf->recode_tolerance = 25; - hl_sf->high_precision_mv_usage = CURRENT_Q; + hl_sf->high_precision_mv_usage = LAST_MV_DATA; } static AVM_INLINE void init_tpl_sf(TPL_SPEED_FEATURES *tpl_sf) { From c9400b7793604cef08b767125d11357cfbd6f995 Mon Sep 17 00:00:00 2001 From: linzhen-beep Date: Fri, 14 Aug 2026 14:21:27 -0400 Subject: [PATCH 158/205] mv_sf tuning for speed >= 1 (#5265) mv_sf tuning for speed >= 1 Anchor: a341351f73129e48ee134579154c16b80496de05 Test condition: CTC, RA, 33 frames, speed 1 ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.04% | 0.11% | 0.04% | 0.04% | 98.76% | | A2 | 0.05% | 0.26% | 0.04% | 0.05% | 96.51% | | A3 | -0.04% | 0.09% | -0.19% | -0.05% | 99.35% | | A4 | -0.05% | -0.61% | 0.18% | -0.06% | 97.19% | | A5 | -0.09% | -0.67% | -0.51% | -0.15% | 96.38% | | B1 | 0.09% | 0.12% | 0.02% | 0.08% | 96.24% | |avg wo b2| 0.02% | 0.03% | -0.02% | 0.01% | 97.26% | +---------+--------+--------+--------+--------+----------+ STATS_CHANGED --- av2/encoder/speed_features.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index c20280485f..af509ea313 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -177,6 +177,12 @@ static void set_good_speed_feature_framesize_dependent( sf->mv_sf.use_downsampled_sad = 1; } + if (speed >= 1) { + if (!is_4k_or_larger) { + sf->mv_sf.prune_mesh_search = 1; + } + } + if (speed >= 2) { if (is_720p_or_larger) { sf->part_sf.use_square_partition_only_threshold = BLOCK_128X128; @@ -417,6 +423,12 @@ static void set_good_speed_features_framesize_independent( sf->part_sf.partition_pruning_with_mlp = 1; sf->part_sf.partition_pruning_with_mlp_none_thresh = 3.5f; sf->lpf_sf.enable_deblock_for_partition_search = 1; + if (!allow_screen_content_tools) { + sf->mv_sf.newmv_drl_search_limit = boosted ? 2 : 1; + } + sf->mv_sf.reduce_search_range = 1; + sf->mv_sf.subpel_search_type = boosted ? USE_8_TAPS : USE_4_TAPS; + sf->mv_sf.subpel_iters_per_step = boosted ? 2 : 1; } if (speed >= 2) { From 011f98ef4903e1be84eda2a43b9cbe210e2815d4 Mon Sep 17 00:00:00 2001 From: motongxu Date: Fri, 14 Aug 2026 13:21:36 -0700 Subject: [PATCH 159/205] Disable extended SDP at speed 2 (#5260) Extended SDP is disabled for speed >= 2. Anchor: https://github.com/AOMediaCodec/avm/commit/e2810080c0208f323183e58126c3fee1802a7ac6 Tests: RA cpu-used=2: ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | 0.01% | -0.15% | 0.06% | 0.00% | 98.6% | 100% | | A2 | 0.00% | 0.14% | 0.74% | 0.03% | 98.4% | 100% | +---------+--------+--------+--------+--------+----------+----------+ ``` cpu-used=3: ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | -0.18% | -0.24% | -0.07% | -0.18% | 99.3% | 101% | | A2 | -0.39% | 0.18% | 0.83% | -0.32% | 98.8% | 101% | +---------+--------+--------+--------+--------+----------+----------+ ``` cpu-used=4: ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | -0.08% | 0.03% | 0.00% | -0.07% | 98.3% | 99% | | A2 | -0.14% | 0.14% | 0.86% | -0.10% | 98.6% | 100% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/encoder/speed_features.c | 5 +++++ av2/encoder/speed_features.h | 1 + 2 files changed, 6 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index af509ea313..c98c80fd87 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -445,6 +445,7 @@ static void set_good_speed_features_framesize_independent( sf->part_sf.disable_uneven_4way_partitions = true; sf->part_sf.disable_ext_partitions = true; + sf->part_sf.disable_extended_sdp = true; if (cpi->is_screen_content_type) { sf->mv_sf.exhaustive_searches_thresh = (1 << 21); @@ -790,6 +791,7 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { #endif // CONFIG_ML_PART_SPLIT part_sf->disable_ext_partitions = false; part_sf->disable_uneven_4way_partitions = false; + part_sf->disable_extended_sdp = false; } static AVM_INLINE void init_mv_sf(MV_SPEED_FEATURES *mv_sf) { @@ -1244,6 +1246,9 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { cpi->common.seq_params.enable_masked_compound &= !sf->inter_sf.disable_masked_comp; + if (sf->part_sf.disable_extended_sdp) { + cpi->common.seq_params.enable_extended_sdp = 0; + } cpi->common.seq_params.enable_ext_partitions &= !sf->part_sf.disable_ext_partitions; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 092a343084..004d87dd22 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -461,6 +461,7 @@ typedef struct PARTITION_SPEED_FEATURES { bool disable_ext_partitions; bool disable_uneven_4way_partitions; + bool disable_extended_sdp; } PARTITION_SPEED_FEATURES; typedef struct MV_SPEED_FEATURES { From 107795f0e80f3ae92738f3c185656ff795c5ed52 Mon Sep 17 00:00:00 2001 From: Jianle Chen Date: Fri, 14 Aug 2026 13:26:16 -0700 Subject: [PATCH 160/205] Disable enable_winner_mode_for_coeff_opt (#5267) sf->winner_mode_sf.enable_winner_mode_for_coeff_opt is set to 1 for speed >= 3. However it causes 0.94% coding loss with no speed up. This PR disables this speed feature. 33 frame RA test results with speed 3: ``` Sequence PSNR-Y PSNR-U PSNR-V PSNR-YUV SSIM MS-SSIM VMAF VMAF-N EncTime DecTime ------------------------------------------------------------------------------------------------------------------ (RA, A1) -0.76% -0.79% -0.74% -0.75% -0.63% -0.69% -0.92% -0.95% 99.99% 99.48% ------------------------------------------------------------------------------------------------------------------ (RA, A2) -1.01% -0.98% -0.32% -0.98% -0.96% -1.02% -1.25% -1.31% 99.72% 99.27% ------------------------------------------------------------------------------------------------------------------ Overall w/o B2 (RA) -0.94% -0.80% -0.83% -0.94% -0.82% -0.93% -1.27% -1.30% 99.77% 99.43% ``` --- av2/encoder/speed_features.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index c98c80fd87..eb6e0c0e74 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -557,7 +557,9 @@ static void set_good_speed_features_framesize_independent( // TODO(any): Refactor the code related to following winner mode speed // features - sf->winner_mode_sf.enable_winner_mode_for_coeff_opt = 1; + // TODO(any):this speed feature cause coding loss with no speed up, disable + // it before the issue is fixed + // sf->winner_mode_sf.enable_winner_mode_for_coeff_opt = 1; // TODO(any): Re-enable for inter frames after fixing speed feature. sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch = 0; sf->winner_mode_sf.enable_winner_mode_for_use_tx_domain_dist = 1; From c8f4bdbf1b342dcf6828a426eb128ec0db85ad16 Mon Sep 17 00:00:00 2001 From: motongxu Date: Fri, 14 Aug 2026 16:25:05 -0700 Subject: [PATCH 161/205] Force max pb aspect ratio to be 4 at speed 4 (#5246) max_pb_aspect_ratio is set to 4 at speed 4. Anchor: https://github.com/AOMediaCodec/avm/commit/e2810080c0208f323183e58126c3fee1802a7ac6 Tests: cpu-used =4, RA ``` +--------------------------+---------+---------+---------+---------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +--------------------------+---------+---------+---------+---------+----------+----------+ | Class A1_4K | 0.09% | -0.06% | -0.99% | 0.03% | 96.4% | 99.5% | | Class A2_2K | 0.09% | -0.35% | -0.20% | 0.06% | 97.7% | 99.6% | | Class A3_720p | 0.10% | -0.43% | 0.02% | 0.08% | 93.8% | 100% | | Class A4_360p | 0.23% | -1.46% | 1.21% | 0.17% | 95.0% | 101% | | Class A5_270p | 0.00% | 0.00% | 0.00% | 0.00% | 100.0% | 100% | | Class B1_SYN | 0.21% | 0.48% | 0.21% | 0.21% | 95.4% | 101% | | Overall Mandatory w/o B2 | 0.14% | #VALUE! | 0.29% | 0.13% | 95.5% | 99% | | Class B2_SCC | 0.00% | 0.00% | 0.00% | 0.00% | 100.0% | 100% | +--------------------------+---------+---------+---------+---------+----------+----------+ ``` --- av2/encoder/speed_features.c | 16 ++++++++++++++++ av2/encoder/speed_features.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index eb6e0c0e74..c4cbdd1d2c 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -793,7 +793,9 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { #endif // CONFIG_ML_PART_SPLIT part_sf->disable_ext_partitions = false; part_sf->disable_uneven_4way_partitions = false; + part_sf->disable_extended_sdp = false; + part_sf->force_max_pb_aspect_ratio = 0; } static AVM_INLINE void init_mv_sf(MV_SPEED_FEATURES *mv_sf) { @@ -1088,6 +1090,8 @@ static AVM_INLINE void set_erp_speed_features_framesize_dependent( void av2_set_speed_features_framesize_dependent(AV2_COMP *cpi, int speed) { SPEED_FEATURES *const sf = &cpi->sf; const AV2EncoderConfig *const oxcf = &cpi->oxcf; + const int is_270p_or_lesser = + AVMMIN(cpi->common.width, cpi->common.height) <= 270; if (oxcf->mode == GOOD) { set_good_speed_feature_framesize_dependent(cpi, sf, speed); @@ -1108,6 +1112,18 @@ void av2_set_speed_features_framesize_dependent(AV2_COMP *cpi, int speed) { if (oxcf->txfm_cfg.enable_tx_partition == 0) { sf->tx_sf.enable_tx_partition = false; } + + if (speed >= 4 && !cpi->is_screen_content_type && !is_270p_or_lesser && + !cpi->seq_params_locked) { + sf->part_sf.force_max_pb_aspect_ratio = 4; + if (sf->part_sf.force_max_pb_aspect_ratio) { + const unsigned int new_max_ratio = + AVMMIN(sf->part_sf.force_max_pb_aspect_ratio, + oxcf->part_cfg.max_partition_aspect_ratio); + cpi->common.seq_params.max_pb_aspect_ratio_log2_m1 = + new_max_ratio == 2 ? 0 : (new_max_ratio == 4 ? 1 : 2); + } + } } static AVM_INLINE void set_erp_speed_features(AV2_COMP *cpi) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 004d87dd22..67aae11437 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -462,6 +462,9 @@ typedef struct PARTITION_SPEED_FEATURES { bool disable_ext_partitions; bool disable_uneven_4way_partitions; bool disable_extended_sdp; + + // Force the max partition-block aspect ratio + unsigned int force_max_pb_aspect_ratio; } PARTITION_SPEED_FEATURES; typedef struct MV_SPEED_FEATURES { From ec20308dbb6514bb0b76c7114e7ce02fe89ae736 Mon Sep 17 00:00:00 2001 From: deepa-kg Date: Sat, 15 Aug 2026 05:44:56 +0530 Subject: [PATCH 162/205] Further increase exhaustive search threshold for speed 1 (#5263) Results for RA CTC, A1 17 frames, A2 33 frames, speed 1: (Anchor: a341351) ``` +------------+-------+-------+-------+-------+---------------+ | Class | Y | Cb | Cr | wAvg |EncInstCount(%)| +------------+-------+-------+-------+-------+---------------+ | A2 | 0.04 | 0.58 | 0.21 | 0.07 | 85.89 | | A1 | 0.09 | 0.18 | -0.07 | 0.09 | 90.75 | +------------+-------+-------+-------+-------+---------------+ ``` STATS_CHANGED for speed=1 --- av2/encoder/speed_features.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index c4cbdd1d2c..b54d9deb3d 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -390,7 +390,7 @@ static void set_good_speed_features_framesize_independent( if (!cpi->is_screen_content_type && cpi->twopass.fr_content_type == FC_HIGHMOTION) { - sf->mv_sf.exhaustive_searches_thresh <<= 1; + sf->mv_sf.exhaustive_searches_thresh = (1 << 26); } // Skip the second-best full-pel candidate's subpel refinement in the // single-ref NEWMV search. @@ -449,8 +449,6 @@ static void set_good_speed_features_framesize_independent( if (cpi->is_screen_content_type) { sf->mv_sf.exhaustive_searches_thresh = (1 << 21); - } else { - sf->mv_sf.exhaustive_searches_thresh = (1 << 26); } sf->mv_sf.subpel_search_type = USE_4_TAPS; From 7f656f61570111d56026c478f8ad45238755a3e7 Mon Sep 17 00:00:00 2001 From: Jianle Chen Date: Mon, 17 Aug 2026 11:04:27 -0700 Subject: [PATCH 163/205] Enable partition-deblock-rd for speed 3-6 (#5271) This PR is to applying deblocking filter during partition search for speed 3, 4, 5, 6. With the fix in https://github.com/AOMediaCodec/avm/pull/5267, this feature provides coding gain for all speeds. 33 frame, RA results (Average of A1, A2, A3, A4, A5, B1) are as follows: ``` PSNR-Y PSNR-U PSNR-V PSNR-YUV SSIM MS-SSIM VMAF VMAF-NEG EncTime DecTime Speed 3: -0.24% -0.00% -0.25% **-0.23%** -0.28% -0.28% -0.39% -0.39% 101.16% 101.14% Speed 4: -0.27% -0.43% -0.29% **-0.28%** -0.30% -0.33% -0.30% -0.30% 99.49% 99.81% Speed 5: -0.32% -0.62% -0.42% **-0.33%** -0.33% -0.35% -0.27% -0.30% 99.50% 100.00% Speed 5: -0.27% -0.44% -0.03% **-0.26%** -0.27% -0.29% -0.22% -0.26% 98.88% 99.53% ``` --- av2/encoder/speed_features.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index b54d9deb3d..f811521c16 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -492,8 +492,6 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.disable_tcq = 1; // --- End --- - sf->lpf_sf.enable_deblock_for_partition_search = 0; - sf->hl_sf.recode_loop = ALLOW_RECODE_KFARFGF; sf->part_sf.allow_partition_search_skip = 1; From d9a6a35979825e2417351bb27dc425783381a2be Mon Sep 17 00:00:00 2001 From: jadhuran Date: Mon, 17 Aug 2026 11:08:02 -0700 Subject: [PATCH 164/205] Enable TCQ for all speed levels (#5270) Enable TCQ for all speed levels Current it is disabled for speed levels greater than 3 Results: Anchor: d6b40b789381601440e4ce2cc1164cd57e8c3c7d Speed 3 ``` +-------+-------+-------+-------+-------+-------+------+ | Class | Y% | U% | V% | YUV% | ENC% | DEC% | +-------+-------+-------+-------+-------+-------+------+ | A1 | -1.18 | 0.20 | 0.21 | -1.02 | 114.3 | 98.7 | | A2 | -1.63 | -0.76 | -0.58 | -1.55 | 115.9 | 99.6 | +-------+-------+-------+-------+-------+-------+------+ ``` Speed 4 ``` +-------+-------+-------+-------+-------+-------+-------+ | Class | Y% | U% | V% | YUV% | ENC% | DEC% | +-------+-------+-------+-------+-------+-------+-------+ | A1 | -1.43 | 0.15 | -0.11 | -1.27 | 109.3 | 100.4 | | A2 | -2.00 | -0.10 | -0.91 | -1.87 | 112.1 | 100.3 | +-------+-------+-------+-------+-------+-------+-------+ ``` --- av2/encoder/speed_features.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index f811521c16..2f2c214402 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -489,7 +489,7 @@ static void set_good_speed_features_framesize_independent( sf->interp_sf.use_interp_filter = 1; sf->tx_sf.tx_type_search.skip_tx_search = 1; sf->intra_sf.skip_intra_dip_search = true; - sf->rd_sf.disable_tcq = 1; + sf->rd_sf.disable_tcq = 0; // --- End --- sf->hl_sf.recode_loop = ALLOW_RECODE_KFARFGF; From 0da375665087ad690a2c79e39d399964d4e19620 Mon Sep 17 00:00:00 2001 From: ranjit-tulabandu <59877789+ranjit-tulabandu@users.noreply.github.com> Date: Tue, 18 Aug 2026 00:09:47 +0530 Subject: [PATCH 165/205] Add a speed feature to prune ref_mv_idx for WARP_NEWMV (#5269) A speed feature is added to prune ref_mv_idx > 0 for WARP_NEWMV modes based on best mode/motion mode and ref_frame index. For ref_frame = 0, ref_mv_idx > 0 pruning is based on best motion mode/mode chosen so far. For other reference frames, ref_mv_idx > 0 is always pruned. STATS_CHANGED for speed >= 1 Test results (RA) for Speed 1 Anchor: commit e0b55de A1 - 17 frames A2 - 33 frames ``` +------------+-------+-------+-------+-------+-------------+ | Class | Y | Cb | Cr | wAvg |EncInstCount%| +------------+-------+-------+-------+-------+-------------+ | A1 | 0.12 | 0.15 | -0.04 | 0.11 | 95.01 | | A2 | 0.09 | 0.20 | 0.23 | 0.10 | 94.54 | +------------+-------+-------+-------+-------+-------------+ ``` --- av2/encoder/rdopt.c | 32 ++++++++++++++++++++++++++++++-- av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 4 ++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 6327f6b29e..c017d13844 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -5151,6 +5151,22 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, mbmi->motion_mode = SIMPLE_TRANSLATION; } +// Prune ref_mv_idx > 0 for WARP_NEWMV mode based on best motion mode chosen so +// far and ref_frame +static INLINE bool prune_ref_mv_idx_for_warp_newmv( + const MB_MODE_INFO *mbmi, int64_t best_rd, int64_t best_mode_rd_so_far, + int is_best_mode_warp, int ref_mv_idx_0, bool prune_warp_newmv_ref_mv_idx) { + if (!prune_warp_newmv_ref_mv_idx) return false; + if (mbmi->mode != WARP_NEWMV) return false; + if ((is_best_mode_warp || best_rd < best_mode_rd_so_far) && + mbmi->ref_frame[0] == 0) + return false; + + if (ref_mv_idx_0 > 0) return true; + + return false; +} + /*!\brief AV2 inter mode RD computation * * \ingroup inter_mode_search @@ -5211,6 +5227,9 @@ static void evaluate_inter_predictor(AV2_COMP *const cpi, * data collected in the TPL model. * \param[in] top_motion_mode_model_rd A buffer to store N number of model * RD + * \param[in] is_best_mode_warp Flag indicating whether the best + * motion mode chosen so far is a warp + * motion mode. * * \return The RD cost for the mode being searched. */ @@ -5224,7 +5243,7 @@ static int64_t handle_inter_mode( InterModesInfo *inter_modes_info, motion_mode_candidate *motion_mode_cand, int64_t *skip_rd, PREDICTION_MODE best_ref_mode, int64_t top_motion_mode_model_rd[], - PruneInfoFromTpl *inter_cost_info_from_tpl) { + PruneInfoFromTpl *inter_cost_info_from_tpl, int is_best_mode_warp) { const AV2_COMMON *cm = &cpi->common; const int num_planes = av2_num_planes(cm); MACROBLOCKD *xd = &x->e_mbd; @@ -5270,6 +5289,7 @@ static int64_t handle_inter_mode( int64_t newmv_ret_val = INT64_MAX; const int is_pb_mv_prec_active = is_pb_mv_precision_active(cm, mbmi, bsize); const int has_two_drls = has_second_drl(mbmi); + int64_t best_mode_rd_so_far = ref_best_rd; // First, perform a simple translation search for each of the indices. If // an index performs well, it will be fully searched in the main loop @@ -5462,6 +5482,11 @@ static int64_t handle_inter_mode( int ref_mv_idx[2]; for (ref_mv_idx[1] = 0; ref_mv_idx[1] < ref_set[1]; ++ref_mv_idx[1]) { for (ref_mv_idx[0] = 0; ref_mv_idx[0] < ref_set[0]; ++ref_mv_idx[0]) { + if (prune_ref_mv_idx_for_warp_newmv( + mbmi, *search_state.best_rd, best_mode_rd_so_far, + is_best_mode_warp, ref_mv_idx[0], + cpi->sf.inter_sf.prune_warp_newmv_ref_mv_idx)) + continue; // apply early termination method to jmvd scaling factors if (cpi->sf.inter_sf.early_terminate_jmvd_scale_factor) { if (scale_index > 0 && (ref_mv_idx[0] > 0 || ref_mv_idx[1] > 0) && @@ -9371,11 +9396,14 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, enable_tx_prune ? (share_across_modes ? pool_shared : pool_per_mode[this_mode]) : NULL; + const int is_best_mode_warp = + is_warp_mode(search_state.best_mbmode.motion_mode); int64_t this_rd = handle_inter_mode( cpi, tile_data, x, bsize, &rd_stats, &rd_stats_y, &rd_stats_uv, &args, ref_best_rd, tmp_buf, &x->comp_rd_buffer, &best_est_rd, do_tx_search, inter_modes_info, &motion_mode_cand, skip_rd, - search_state.best_mbmode.mode, pool, &inter_cost_info_from_tpl); + search_state.best_mbmode.mode, pool, &inter_cost_info_from_tpl, + is_best_mode_warp); // collect_single_states uses simple_rd/modelled_rd populated by // handle_inter_mode even when this_rd == INT64_MAX, so call before diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 2f2c214402..aecb9a27e0 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -363,6 +363,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_warp_delta_by_ref_idx = 1; sf->intra_sf.intra_pruning_with_mlp = 1; sf->inter_sf.prune_comp_mode_eval_using_est_rd = true; + sf->inter_sf.prune_warp_newmv_ref_mv_idx = true; sf->intra_sf.include_dip_for_top_n_model_rd_pruning = true; @@ -888,6 +889,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->prune_amvd_newmv = 0; inter_sf->enable_enhanced_inter_mode_cache_reuse = 0; inter_sf->prune_comp_mode_eval_using_est_rd = false; + inter_sf->prune_warp_newmv_ref_mv_idx = false; } static AVM_INLINE void init_interp_sf(INTERP_FILTER_SPEED_FEATURES *interp_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 67aae11437..58ccd0f44f 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -798,6 +798,10 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Prune further evaluation of compound mode using estimated RD Cost of best // compound type chosen. bool prune_comp_mode_eval_using_est_rd; + + // Prune the evaluation of ref_mv_idx > 0 for WARP_NEWMV modes based on RD + // Cost of ref_mv_idx = 0 and best mode so far. + bool prune_warp_newmv_ref_mv_idx; } INTER_MODE_SPEED_FEATURES; typedef struct INTERP_FILTER_SPEED_FEATURES { From 45e5b2104645be7bbfb26439af7fe0c78493c74f Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Mon, 17 Aug 2026 19:45:40 -0700 Subject: [PATCH 166/205] Two-pass superblock partition search (#5253) Speed up the partition search by splitting it into two passes over each superblock. The first pass (the "dry" pass) works out a rough partition shape. It runs mode search with a reduced set of tools, because it only has to rank shapes against each other, not produce the final coding decision. It stops at 16x16. The second pass (the "wet" pass) codes the superblock for real, with the full set of tools. It keeps the first pass's shape for blocks of 32x32 and larger and searches the smaller blocks again, since that is where the first pass is least reliable. Large blocks the first pass left unsplit are also searched again, because a reduced tool set tends to under-split them, and trusting that would leave the block over-merged with no way to recover. That re-search is limited to blocks up to 128 and stops at 8x8, which keeps most of the time saved. STATS_CHANGED Anchor: commit 5b32726 Speed 4 (cpu-used=4): FG16 CTC (33 frames, class A1 and A2, RA) Speed 3 (cpu-used=3): FG16 CTC (33 frames, class A1 and A2, RA) Speed 2 (cpu-used=2): FG16 CTC (33 frames, class A1 and A2, RA) ``` 1) Speed 4 (cpu-used=4) +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.09 | -2.32 | -2.75 | -0.35 | 86 | 86 | | A2 | 0.78 | 0.86 | 1.13 | 0.80 | 73 | 95 | | Avg w/o B2 | 0.52 | -0.08 | -0.02 | 0.46 | 77 | 93 | +------------+-------+-------+-------+-------+------+------+ 2) Speed 3 (cpu-used=3) +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.03 | -2.27 | -2.79 | -0.29 | 93 | 88 | | A2 | 0.81 | 0.98 | 1.82 | 0.87 | 73 | 96 | | Avg w/o B2 | 0.56 | 0.02 | 0.45 | 0.53 | 79 | 94 | +------------+-------+-------+-------+-------+------+------+ 3) Speed 2 (cpu-used=2): Not satisfied: Score = 24.7 +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | 0.39 | -1.90 | -2.76 | 0.11 | 94 | 89 | | A2 | 0.94 | 2.07 | 2.25 | 1.05 | 76 | 96 | | Avg w/o B2 | 0.77 | 0.89 | 0.77 | 0.77 | 81 | 94 | +------------+-------+-------+-------+-------+------+------+ ``` Thus, it is only enabled for speed >= 3 in the current stage. --- av2/common/blockd.h | 4 + av2/common/reconintra.c | 4 + av2/encoder/block.h | 10 ++ av2/encoder/enc_enums.h | 6 + av2/encoder/encodeframe.c | 49 ++++++-- av2/encoder/encodeframe_utils.h | 34 +++++- av2/encoder/encoder_utils.c | 45 ++++--- av2/encoder/encoder_utils.h | 11 ++ av2/encoder/interp_search.c | 6 + av2/encoder/interp_search.h | 48 ++++++++ av2/encoder/intra_mode_search.c | 38 +++--- av2/encoder/intra_mode_search.h | 8 +- av2/encoder/partition_search.c | 88 ++++++++++---- av2/encoder/rdopt.c | 201 +++++++++++++++++++++++++++----- av2/encoder/speed_features.c | 61 ++++++---- av2/encoder/speed_features.h | 33 ++++++ av2/encoder/tx_search.c | 3 +- 17 files changed, 523 insertions(+), 126 deletions(-) diff --git a/av2/common/blockd.h b/av2/common/blockd.h index 21bb0e215f..6e1b9e95bd 100644 --- a/av2/common/blockd.h +++ b/av2/common/blockd.h @@ -562,6 +562,10 @@ typedef struct MB_MODE_INFO { uint8_t joint_y_mode_delta_angle; /*! \brief re-ordered mode list for y mode and y delta angle. */ uint8_t y_intra_mode_list[LUMA_MODE_COUNT]; + /*! \brief How many entries at the start of y_intra_mode_list are the most + * probable modes, i.e. the ones taken from neighbouring blocks. The rest of + * the list is filled with a fixed default order. */ + uint8_t num_y_intra_mpm; /*! \brief re-ordered mode list for uv mode. */ uint8_t uv_intra_mode_list[UV_INTRA_MODES]; /**@}*/ diff --git a/av2/common/reconintra.c b/av2/common/reconintra.c index be6528d678..0dd4606308 100644 --- a/av2/common/reconintra.c +++ b/av2/common/reconintra.c @@ -462,6 +462,10 @@ void get_y_intra_mode_set(MB_MODE_INFO *mi, MACROBLOCKD *const xd) { } } + // Everything added so far came from neighbouring blocks, so record how many + // entries that is. What the default fill adds below does not count. + mi->num_y_intra_mpm = mode_idx; + // fill the remaining list with default modes for (i = 0; i < LUMA_MODE_COUNT - NON_DIRECTIONAL_MODES_COUNT && mode_idx < LUMA_MODE_COUNT; diff --git a/av2/encoder/block.h b/av2/encoder/block.h index 13157d20b4..4658743a1a 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -1647,6 +1647,16 @@ typedef struct macroblock { MB_MODE_INFO *inter_mode_cache[NUMBER_OF_CACHED_MODES]; /*! \brief Whether the whole superblock is inside the frame boudnary */ bool is_whole_sb; + + /*! \brief True during the dry pass of the SB-level two-pass partition + * search; gates the block-level dry-pass shortcuts. */ + bool apply_dry_pass_shortcuts; + + /*! \brief Cap on top intra Y candidates for full RD. */ + int intra_mode_prune_top; + + /*! \brief Cap on top inter motion-mode candidates for full RD. */ + int inter_mode_prune_top; /**@}*/ /*! \brief Quantization state of a transform coefficient. diff --git a/av2/encoder/enc_enums.h b/av2/encoder/enc_enums.h index f498dd696d..090f8f04b4 100644 --- a/av2/encoder/enc_enums.h +++ b/av2/encoder/enc_enums.h @@ -28,6 +28,12 @@ enum { USE_LARGESTALL, } UENUM1BYTE(TX_SIZE_SEARCH_METHOD); +enum { + SB_SINGLE_PASS, // Single pass encoding: all ctxs get updated normally + SB_DRY_PASS, // First pass of multi-pass: does not update the ctxs + SB_WET_PASS // Second pass of multi-pass: finalize and update the ctx +} UENUM1BYTE(SB_MULTI_PASS_MODE); + #ifdef __cplusplus } // extern "C" #endif diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index e3477bae1b..af4b750aa4 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -594,12 +594,18 @@ static AVM_INLINE void perform_two_partition_passes( SB_WET_PASS, NULL); } -/*!\brief Set all tree nodes <= min_bsize to PARTITION_INVALID. +/*!\brief Mark the small nodes of the dry-pass tree as "search again". * * \ingroup partition_search + * + * The wet pass trusts the dry-pass shape for large blocks and searches the + * small ones again. This walks the dry-pass tree and clears the shape of every + * node smaller than min_bsize so the wet pass is free to choose its own. */ static AVM_INLINE void set_min_none_to_invalid(PARTITION_TREE *part_tree, - BLOCK_SIZE min_bsize) { + BLOCK_SIZE min_bsize, + bool allow_none_resplit) { + if (!part_tree) return; const BLOCK_SIZE bsize = part_tree->bsize; const PARTITION_TYPE part_type = part_tree->partition; if (!is_bsize_geq(bsize, min_bsize)) { @@ -608,7 +614,19 @@ static AVM_INLINE void set_min_none_to_invalid(PARTITION_TREE *part_tree, av2_free_ptree_recursive(part_tree->sub_tree[idx]); part_tree->sub_tree[idx] = NULL; } + return; + } + // Large blocks the dry pass left unsplit: re-split them in the wet pass + // (only on the fast level, guarded by allow_none_resplit). The conservative + // level keeps its pre-PR semantics. + if (allow_none_resplit && part_type == PARTITION_NONE) { + // Only do this for blocks up to 128 px. Bigger unsplit blocks are usually + // genuinely flat, so searching them again costs a lot of time for little + // gain. + if (AVMMAX(block_size_wide[bsize], block_size_high[bsize]) <= 128) { + part_tree->partition = PARTITION_INVALID; + } return; } @@ -630,7 +648,8 @@ static AVM_INLINE void set_min_none_to_invalid(PARTITION_TREE *part_tree, } for (int idx = 0; idx < num_subtrees; idx++) { - set_min_none_to_invalid(part_tree->sub_tree[idx], min_bsize); + set_min_none_to_invalid(part_tree->sub_tree[idx], min_bsize, + allow_none_resplit); } } @@ -644,7 +663,8 @@ static AVM_INLINE void set_min_none_to_invalid(PARTITION_TREE *part_tree, */ static AVM_INLINE void perform_two_pass_partition_search( AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, TokenExtra **tp, - TokenExtra **tp_chroma, const int mi_row, const int mi_col) { + TokenExtra **tp_chroma, const int mi_row, const int mi_col, + bool fast_two_pass) { SIMPLE_MOTION_DATA_TREE *const sms_root = td->sms_root; AV2_COMMON *const cm = &cpi->common; MACROBLOCK *const x = &td->mb; @@ -653,17 +673,20 @@ static AVM_INLINE void perform_two_pass_partition_search( const BLOCK_SIZE sb_size = cm->sb_size; assert(!frame_is_intra_only(cm)); - // First pass to estimate partition structures + // First pass to estimate partition structures SB_FIRST_PASS_STATS sb_fp_stats; av2_backup_sb_state(&sb_fp_stats, cpi, td, tile_data, mi_row, mi_col); - const BLOCK_SIZE fp_min_bsize = BLOCK_16X16; - x->sb_enc.min_partition_size = fp_min_bsize; + // The dry pass does not go below 16x16: it only needs a rough shape, and it + // scores blocks with a reduced set of tools. + x->sb_enc.min_partition_size = BLOCK_16X16; perform_one_partition_pass(cpi, td, tile_data, tp, tp_chroma, mi_row, mi_col, SB_DRY_PASS, NULL); PARTITION_TREE *part_ref = xd->sbi->ptree_root[0]; // Set this to NULL otherwise part_ref will get freed in the second pass. xd->sbi->ptree_root[0] = NULL; - set_min_none_to_invalid(part_ref, get_larger_sqr_bsize(fp_min_bsize)); + // Trust the dry-pass shape for >=32x32 blocks; re-search smaller ones. + set_min_none_to_invalid(part_ref, get_larger_sqr_bsize(BLOCK_16X16), + fast_two_pass); // Second pass RD_STATS dummy_rdc; @@ -850,9 +873,13 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, mi_col); } else if (!frame_is_intra_only(cm) && bru_is_sb_active(cm, mi_col, mi_row) && - sf->part_sf.two_pass_partition_search) { - perform_two_pass_partition_search(cpi, td, tile_data, tp, tp_chroma, - mi_row, mi_col); + av2_two_pass_part_enabled(&sf->part_sf)) { + // TODO(Yeqing): Add an SB-level heuristic to skip the second pass on + // SBs where a single pass is good enough, to reduce encoding time. + // Only the fast level opts into the extra re-split of unsplit blocks. + perform_two_pass_partition_search( + cpi, td, tile_data, tp, tp_chroma, mi_row, mi_col, + av2_two_pass_part_is_fast(&sf->part_sf)); } else { perform_one_partition_pass(cpi, td, tile_data, tp, tp_chroma, mi_row, mi_col, SB_SINGLE_PASS, NULL); diff --git a/av2/encoder/encodeframe_utils.h b/av2/encoder/encodeframe_utils.h index caf5a04c9c..c0da1810d1 100644 --- a/av2/encoder/encodeframe_utils.h +++ b/av2/encoder/encodeframe_utils.h @@ -26,12 +26,6 @@ extern "C" { #endif -enum { - SB_SINGLE_PASS, // Single pass encoding: all ctxs get updated normally - SB_DRY_PASS, // First pass of multi-pass: does not update the ctxs - SB_WET_PASS // Second pass of multi-pass: finalize and update the ctx -} UENUM1BYTE(SB_MULTI_PASS_MODE); - typedef struct { ENTROPY_CONTEXT a[MAX_MIB_SIZE * MAX_MB_PLANE]; ENTROPY_CONTEXT l[MAX_MIB_SIZE * MAX_MB_PLANE]; @@ -182,6 +176,34 @@ typedef struct PartitionSearchState { #endif // CONFIG_COLLECT_PARTITION_STATS } PartitionSearchState; +// Set the per-block two-pass flags from the SB pass mode. Called before every +// pick_sb_modes so the flags stay in one place. The block-level dry-pass +// shortcuts fire only on the fast two-pass level, not the conservative one. +static AVM_INLINE void av2_set_two_pass_flags( + const AV2_COMP *cpi, MACROBLOCK *x, SB_MULTI_PASS_MODE multi_pass_mode, + const PartitionSearchState *part_search_state) { + const bool fast_two_pass = av2_two_pass_part_is_fast(&cpi->sf.part_sf); + x->apply_dry_pass_shortcuts = + fast_two_pass && (multi_pass_mode == SB_DRY_PASS); + const bool is_wet_pass_reuse = + (fast_two_pass && multi_pass_mode == SB_WET_PASS && part_search_state && + part_search_state->forced_partition != PARTITION_INVALID); + if (x->apply_dry_pass_shortcuts) { + // Dry pass: rough shape ranking only. + x->intra_mode_prune_top = 1; + x->inter_mode_prune_top = 2; + } else if (is_wet_pass_reuse) { + // Wet pass reusing the dry-pass shape. + x->intra_mode_prune_top = 2; + x->inter_mode_prune_top = 4; + } else { + // Full pool. + x->intra_mode_prune_top = + cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; + x->inter_mode_prune_top = TOP_MOTION_MODE_MODEL_COUNT; + } +} + static AVM_INLINE void update_wedge_mode_cdf(FRAME_CONTEXT *fc, const BLOCK_SIZE bsize, const int8_t wedge_index diff --git a/av2/encoder/encoder_utils.c b/av2/encoder/encoder_utils.c index 3c5bc91f38..d573575e23 100644 --- a/av2/encoder/encoder_utils.c +++ b/av2/encoder/encoder_utils.c @@ -533,7 +533,6 @@ void av2_scale_references(AV2_COMP *cpi, const InterpFilter filter, } BLOCK_SIZE av2_select_sb_size(const AV2_COMP *const cpi) { - const AV2_COMMON *const cm = &cpi->common; const AV2EncoderConfig *const oxcf = &cpi->oxcf; if (oxcf->tool_cfg.superblock_size == AVM_SUPERBLOCK_SIZE_64X64) @@ -545,28 +544,40 @@ BLOCK_SIZE av2_select_sb_size(const AV2_COMP *const cpi) { assert(oxcf->tool_cfg.superblock_size == AVM_SUPERBLOCK_SIZE_DYNAMIC); + BLOCK_SIZE chosen; if (oxcf->resize_cfg.resize_mode != RESIZE_NONE) { // Use the configured size (top resolution) for spatial layers or // on resize. - return AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) >= 720 - ? BLOCK_256X256 - : AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) > 480 - ? BLOCK_128X128 - : BLOCK_64X64; + chosen = AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) >= 720 + ? BLOCK_256X256 + : AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) > 480 + ? BLOCK_128X128 + : BLOCK_64X64; + } else if (oxcf->speed > 1 && !av2_wants_two_pass_partition(oxcf)) { + // TODO(any): Possibly could improve this with a heuristic. + // When resize is on, 'cm->width / height' can change between calls, so we + // don't apply this heuristic there. Things break if superblock size + // changes between the first pass and second pass encoding, which is why + // this heuristic is not configured as a speed-feature. Two-pass partition + // search requires a large superblock, so the small-SB heuristic is + // guarded on the same predicate. + const AV2_COMMON *const cm = &cpi->common; + chosen = AVMMIN(cm->width, cm->height) > 480 ? BLOCK_128X128 : BLOCK_64X64; + } else { + chosen = AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) >= 720 + ? BLOCK_256X256 + : BLOCK_128X128; } - // TODO(any): Possibly could improve this with a heuristic. - // When resize is on, 'cm->width / height' can change between - // calls, so we don't apply this heuristic there. - // Things break if superblock size changes between the first pass and second - // pass encoding, which is why this heuristic is not configured as a - // speed-feature. - if (oxcf->resize_cfg.resize_mode == RESIZE_NONE && oxcf->speed > 1) { - return AVMMIN(cm->width, cm->height) > 480 ? BLOCK_128X128 : BLOCK_64X64; + // Never choose an SB larger than the shortest side of the frame. This + // avoids a known issue where two-pass partition on multi-layer content + // produces a malformed OBU when the SB spans a small frame. + const int short_side = + AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height); + while (chosen != BLOCK_64X64 && block_size_wide[chosen] > short_side) { + chosen = (chosen == BLOCK_256X256) ? BLOCK_128X128 : BLOCK_64X64; } - return AVMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) >= 720 - ? BLOCK_256X256 - : BLOCK_128X128; + return chosen; } void reallocate_sb_size_dependent_buffers(AV2_COMP *cpi) { diff --git a/av2/encoder/encoder_utils.h b/av2/encoder/encoder_utils.h index c863597e18..41464757fe 100644 --- a/av2/encoder/encoder_utils.h +++ b/av2/encoder/encoder_utils.h @@ -959,6 +959,17 @@ void av2_scale_references(AV2_COMP *cpi, const InterpFilter filter, void av2_setup_frame(AV2_COMP *cpi); +// Config-time part of the TWO_PASS_PART_FAST predicate: GOOD mode at speed >= 3 +// on configs that produce inter frames. Kept config-only (no cm state) because +// av2_select_sb_size() also keys off it, and the superblock size must not +// change between the two passes. +// TODO(Yeqing): Extend to intra/key frames and drop the all_intra guard. +static INLINE bool av2_wants_two_pass_partition(const AV2EncoderConfig *oxcf) { + const int all_intra = + oxcf->kf_cfg.key_freq_max == 0 && oxcf->kf_cfg.key_freq_min == 0; + return oxcf->mode == GOOD && oxcf->speed >= 3 && !all_intra; +} + BLOCK_SIZE av2_select_sb_size(const AV2_COMP *const cpi); void set_ard_active_map(AV2_COMP *cpi); diff --git a/av2/encoder/interp_search.c b/av2/encoder/interp_search.c index b90e42579a..75973f2e90 100644 --- a/av2/encoder/interp_search.c +++ b/av2/encoder/interp_search.c @@ -449,6 +449,12 @@ int64_t av2_interpolation_filter_search( *rd = RDCOST(x->rdmult, *switchable_rate + rd_stats.rate, rd_stats.dist); x->pred_sse[ref_frame] = (unsigned int)(rd_stats_luma.sse >> 4); + // Dry pass: keep the default interpolation filter instead of searching for + // one. The prediction above was already built with it. + if (x->apply_dry_pass_shortcuts) { + return 0; + } + if (assign_filter != SWITCHABLE || match_found_idx != -1) { return 0; } diff --git a/av2/encoder/interp_search.h b/av2/encoder/interp_search.h index 1baa33e5de..066abe97f2 100644 --- a/av2/encoder/interp_search.h +++ b/av2/encoder/interp_search.h @@ -46,6 +46,51 @@ typedef struct InterModeRdPair { #define NUM_USE_AMVD_OPTIONS 2 /*!\endcond */ +/*! \brief Dry-pass caps for the two-pass partition search. */ +typedef struct { + /*! \brief Highest rank of inter reference searched (0-based). */ + int ref_rank_cap; + /*! \brief Highest rank kept for same-ref compound on single-sided frames + * (both-sides frames drop same-ref compound entirely). */ + int same_ref_compound_rank_cap; + /*! \brief Max ref MV candidates per reference. */ + int ref_mv_set_cap; + /*! \brief Max WARP_DELTA reference candidates. */ + int warp_ref_idx_cap; + /*! \brief Max WARP_DELTA precisions. */ + int warp_precision_cap; + /*! \brief Max WARPMV-with-MVD choices. */ + int warpmv_with_mvd_cap; + /*! \brief Max WARP inter-intra choices. */ + int warp_inter_intra_cap; + /*! \brief Max CWP indices (1 => CWP_EQUAL only). */ + int cwp_loop_cap; + /*! \brief Max jmvd scale index (0 => scale_mode 0 only). */ + int jmvd_scale_cap; + /*! \brief Max BAWP flag (0 => BAWP off). */ + int bawp_cap; + /*! \brief Max refinemv loop index (0 => refinemv_flag 0 only). */ + int refinemv_cap; + /*! \brief Max dpcm index (0 => DPCM off). */ + int intra_dpcm_cap; + /*! \brief Max fsc mode index (0 => FSC off). */ + int intra_fsc_cap; + /*! \brief Max intra MRL index (0 => nearest reference line only). */ + int intra_mrl_cap; + /*! \brief Bitmask of allowed MOTION_MODE values (default: + * SIMPLE_TRANSLATION). */ + uint32_t motion_mode_mask; + /*! \brief Bitmask of allowed COMPOUND_TYPE values (default: AVERAGE|WEDGE). + */ + uint32_t compound_type_mask; + /*! \brief Bitmask of allowed PREDICTION_MODE values in the dry pass. */ + uint32_t inter_mode_mask; + /*! \brief Number of top MV precisions searched, from the highest. */ + int precisions_from_top; + /*! \brief Cap on most-probable intra Y modes. */ + int intra_mpm_cap; +} DryPassCfg; + /*!\brief Miscellaneous arguments for inter mode search. */ typedef struct { @@ -157,6 +202,9 @@ typedef struct { NEAR_NEWMV_AMVD_STATS near_newmv_amvd_stats[MAX_COMP_MV_STATS]; int near_newmv_amvd_stats_idx; + + /*! \brief Dry-pass caps, or NULL outside a dry pass. */ + const DryPassCfg *dry_pass_cfg; } HandleInterModeArgs; /*!\cond */ diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index 20e7a000be..d26d746b75 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -326,25 +326,29 @@ void av2_count_colors_highbd(const uint16_t *src, int stride, int rows, } bool prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, - int64_t top_intra_model_rd[], int k, int lossless, - uint8_t use_dpcm_y) { + int64_t top_intra_model_rd[], int prune_top, + int lossless, uint8_t use_dpcm_y) { (void)lossless; assert(IMPLIES(use_dpcm_y != 0, lossless != 0)); + assert(prune_top > 0); if (this_model_rd < *best_model_rd) *best_model_rd = this_model_rd; if (use_dpcm_y != 0) return false; - const double thresh_top = 1.00; - for (int i = 0; i < k; i++) { + // Only the top prune_top candidates get full RD; the rest are pruned. + const int threshold_slot = prune_top - 1; + // top_intra_model_rd[] holds the smallest model RDs seen so far, in + // ascending order, kept sorted up to threshold_slot. + for (int i = 0; i <= threshold_slot; i++) { if (this_model_rd < top_intra_model_rd[i]) { - for (int j = k - 1; j > i; j--) { + for (int j = threshold_slot; j > i; j--) { top_intra_model_rd[j] = top_intra_model_rd[j - 1]; } top_intra_model_rd[i] = this_model_rd; break; } } - if (top_intra_model_rd[k - 1] != INT64_MAX && - this_model_rd > thresh_top * top_intra_model_rd[k - 1]) + if (top_intra_model_rd[threshold_slot] != INT64_MAX && + this_model_rd > top_intra_model_rd[threshold_slot]) return true; return false; @@ -1032,8 +1036,8 @@ static INLINE int prune_intra_dip_mode(const AV2_COMP *cpi, MACROBLOCK *x, const MB_MODE_INFO *const mbmi = xd->mi[0]; const int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, - TOP_INTRA_MODEL_COUNT, xd->lossless[mbmi->segment_id], - mbmi->use_dpcm_y)) + x->intra_mode_prune_top, + xd->lossless[mbmi->segment_id], mbmi->use_dpcm_y)) return 1; return 0; } @@ -1242,9 +1246,8 @@ int64_t av2_handle_intra_mode(IntraModeSearchState *intra_search_state, } int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, mode_cost); - const int k = - cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; - if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, k, + if (prune_intra_y_mode(this_model_rd, best_model_rd, top_intra_model_rd, + x->intra_mode_prune_top, xd->lossless[mbmi->segment_id], mbmi->use_dpcm_y)) return INT64_MAX; if (cpi->sf.intra_sf.intra_pruning_with_mlp && mbmi->mrl_index == 0 && @@ -1533,7 +1536,7 @@ void search_fsc_mode(const AV2_COMP *const cpi, MACROBLOCK *x, int *rate, this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); if (prune_intra_y_mode(this_model_rd, best_model_rd, - top_intra_model_rd, TOP_INTRA_MODEL_COUNT, + top_intra_model_rd, x->intra_mode_prune_top, xd->lossless[mbmi->segment_id], mbmi->use_dpcm_y)) { continue; @@ -1738,8 +1741,6 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->dpcm_mode_y = 0; // mbmi->dpcm_angle_delta = 0; // Searches the intra-modes except for intrabc, palette, and filter_intra. - const int model_rd_k = - cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; int64_t top_intra_model_rd[TOP_INTRA_MODEL_COUNT]; for (int i = 0; i < TOP_INTRA_MODEL_COUNT; i++) { top_intra_model_rd[i] = INT64_MAX; @@ -1854,9 +1855,10 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, if (dpcm_index == 0) mode_costs += mrl_idx_cost; int64_t this_model_rd; this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); - if (prune_intra_y_mode( - this_model_rd, &best_model_rd, top_intra_model_rd, model_rd_k, - xd->lossless[mbmi->segment_id], mbmi->use_dpcm_y)) + if (prune_intra_y_mode(this_model_rd, &best_model_rd, + top_intra_model_rd, x->intra_mode_prune_top, + xd->lossless[mbmi->segment_id], + mbmi->use_dpcm_y)) continue; if (cpi->sf.intra_sf.intra_pruning_with_mlp && mrl_idx == 0 && diff --git a/av2/encoder/intra_mode_search.h b/av2/encoder/intra_mode_search.h index 1f4f6e17b8..33a740d506 100644 --- a/av2/encoder/intra_mode_search.h +++ b/av2/encoder/intra_mode_search.h @@ -387,14 +387,14 @@ void av2_count_colors_highbd(const uint16_t *src, int stride, int rows, * far. * \param[in] top_intra_model_rd Top intra model RD seen for this * block so far. - * \param[in] k Number of top model RD candidates to - * keep in top_intra_model_rd. + * \param[in] prune_top Cap on the number of top candidates that + * get full RD. * \param[in] lossless True if current block is lossless. * \param[in] use_dpcm_y True if block is lossless with DPCM mode. */ bool prune_intra_y_mode(int64_t this_model_rd, int64_t *best_model_rd, - int64_t top_intra_model_rd[], int k, int lossless, - uint8_t use_dpcm_y); + int64_t top_intra_model_rd[], int prune_top, + int lossless, uint8_t use_dpcm_y); #ifdef __cplusplus } // extern "C" diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index c20ab669ab..6ae591028e 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -508,6 +508,12 @@ void av2_set_offsets(const AV2_COMP *const cpi, const TileInfo *const tile, * Pointer to structure holding coding contexts and chosen modes for the current * block \param[in] best_rd Upper bound of rd cost of a valid * partition + * \param[in] multi_pass_mode Multi-pass mode for the current superblock + * (identifies which pass of the two-pass + * partition search is active) + * \param[in] part_search_state Pointer to the current partition search + * state; used to derive per-block two-pass + * flags. May be NULL when not applicable. * * Nothing is returned. Instead, the chosen modes and contexts necessary * for reconstruction are stored in ctx, the rate-distortion stats are stored in @@ -519,7 +525,9 @@ static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, int mi_row, int mi_col, RD_STATS *rd_cost, REGION_TYPE cur_region_type, int sb_root_partition_info, BLOCK_SIZE bsize, - PICK_MODE_CONTEXT *ctx, RD_STATS best_rd) { + PICK_MODE_CONTEXT *ctx, RD_STATS best_rd, + SB_MULTI_PASS_MODE multi_pass_mode, + const PartitionSearchState *part_search_state) { if (best_rd.rdcost < 0) { ctx->rd_stats.rdcost = INT64_MAX; ctx->rd_stats.skip_txfm = 0; @@ -527,6 +535,9 @@ static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, return; } + // Own the per-block two-pass flags here so every caller is covered. + av2_set_two_pass_flags(cpi, x, multi_pass_mode, part_search_state); + AV2_COMMON *const cm = &cpi->common; const int num_planes = av2_num_planes(cm); MACROBLOCKD *const xd = &x->e_mbd; @@ -650,6 +661,7 @@ static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, start_timing(cpi, av2_rd_pick_inter_mode_sb_time); #endif if (segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { + // SEG_LVL_SKIP blocks bypass the dry-pass shortcuts by design. av2_rd_pick_inter_mode_sb_seg_skip(cpi, tile_data, x, mi_row, mi_col, rd_cost, bsize, ctx, best_rd.rdcost); } else { @@ -1892,9 +1904,9 @@ static void encode_sb(const AV2_COMP *const cpi, ThreadData *td, pc_tree->is_cfl_allowed_for_this_chroma | is_cfl_allowed_for_sdp(cm, xd, ptree_luma, partition, bsize); } - // If two pass partition tree is enable, then store the partition types in - // ptree even if it's dry run. - if (!dry_run || (cpi->sf.part_sf.two_pass_partition_search && ptree)) { + // On two-pass, store partition types in ptree even during a dry run so the + // second pass has a shape to start from. + if (!dry_run || (av2_two_pass_part_enabled(&cpi->sf.part_sf) && ptree)) { assert(ptree); ptree->partition = partition; @@ -2470,7 +2482,7 @@ void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, case PARTITION_NONE: pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, &this_rdc, pc_tree->region_type, pc_tree->sb_root_partition_info, - bsize, ctx_none, best_rdc); + bsize, ctx_none, best_rdc, SB_SINGLE_PASS, NULL); encode_b(cpi, tile_data, td, tp, mi_row, mi_col, OUTPUT_ENABLED, subsize, partition, ctx_none, &rate); break; @@ -2684,7 +2696,7 @@ void av2_rd_use_partition(AV2_COMP *cpi, ThreadData *td, TileDataEnc *tile_data, case PARTITION_NONE: pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, &last_part_rdc, pc_tree->region_type, pc_tree->sb_root_partition_info, - bsize, ctx_none, invalid_rdc); + bsize, ctx_none, invalid_rdc, SB_SINGLE_PASS, NULL); break; case PARTITION_HORZ: pc_tree->horizontal[cur_region_type][0] = av2_alloc_pc_tree_node( @@ -3917,7 +3929,8 @@ static void none_partition_search( RD_SEARCH_MACROBLOCK_CONTEXT *x_ctx, PartitionSearchState *part_search_state, RD_STATS *best_rdc, unsigned int *pb_source_variance, int64_t *none_rd, int64_t *part_none_rd, - LevelBanksRDO *level_banks, const PARTITION_TREE *ptree_luma) { + LevelBanksRDO *level_banks, const PARTITION_TREE *ptree_luma, + SB_MULTI_PASS_MODE multi_pass_mode) { const AV2_COMMON *const cm = &cpi->common; MACROBLOCK *const x = &td->mb; const int num_planes = av2_num_planes(cm); @@ -4024,7 +4037,7 @@ static void none_partition_search( RD_STATS *this_rdc = &part_search_state->this_rdc; pick_sb_modes(cpi, td, tile_data, x, mi_row, mi_col, this_rdc, region_type, pc_tree->sb_root_partition_info, bsize, *ctx_none, - best_remain_rdcost); + best_remain_rdcost, multi_pass_mode, part_search_state); for (int k = 0; k < NUMBER_OF_CACHED_MODES; k++) { x->inter_mode_cache[k] = NULL; @@ -5434,10 +5447,29 @@ bool av2_rd_pick_partition( if (bsize == cm->sb_size) pc_tree->is_cfl_allowed_for_this_chroma = CFL_DISALLOWED_FOR_CHROMA; + int eff_max_recursion_depth = max_recursion_depth; + // Cap the wet-pass re-split at ~8x8 (short-side driven). Without a cap it + // recovers a bit of quality but gives back most of the speedup. This only + // triggers on TWO_PASS_PART_FAST: set_min_none_to_invalid() marks a node + // invalid either because it is below the 32x32 trust threshold (short side + // < 32, so the test below fails) or because the fast level re-opened an + // unsplit block. + if (template_tree && template_tree->partition == PARTITION_INVALID && + AVMMIN(block_size_wide[bsize], block_size_high[bsize]) >= 32) { + const int floor_px = 8; + int mind = AVMMIN(block_size_wide[bsize], block_size_high[bsize]); + int levels = 0; + while (mind > floor_px) { + mind >>= 1; + levels++; + } + eff_max_recursion_depth = AVMMIN(eff_max_recursion_depth, levels); + } + // Initialization of state variables used in partition search. init_partition_search_state_params( x, cpi, &part_search_state, pc_tree, ptree_luma, template_tree, - max_recursion_depth, mi_row, mi_col, bsize); + eff_max_recursion_depth, mi_row, mi_col, bsize); set_sms_tree_partitioning(sms_tree, PARTITION_NONE); @@ -5641,7 +5673,8 @@ bool av2_rd_pick_partition( partition_none_allowed) { none_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, - none_rd, &part_none_rd, &level_banks, ptree_luma); + none_rd, &part_none_rd, &level_banks, ptree_luma, + multi_pass_mode); } if (is_intra_child_of_mixed_region(pc_tree) && xd->tree_type == CHROMA_PART) { *rd_cost = best_rdc; @@ -5654,7 +5687,7 @@ bool av2_rd_pick_partition( split_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, multi_pass_mode, &part_split_rd, &level_banks, ptree_luma, - template_tree, max_recursion_depth - 1); + template_tree, eff_max_recursion_depth - 1); prune_partitions_after_split(cpi, pc_tree, &part_search_state); if (!search_none_after_rect && !search_none_after_split && partition_none_allowed) { @@ -5680,7 +5713,8 @@ bool av2_rd_pick_partition( partition_none_allowed && search_none_after_split) { none_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, - none_rd, &part_none_rd, &level_banks, ptree_luma); + none_rd, &part_none_rd, &level_banks, ptree_luma, + multi_pass_mode); } prune_rect_partitions(cpi, td, tile_data, pc_tree, &part_search_state, @@ -5688,7 +5722,7 @@ bool av2_rd_pick_partition( // Search partitions horz and vert. rectangular_partition_search( cpi, td, tile_data, tp, pc_tree, &x_ctx, &part_search_state, &best_rdc, - multi_pass_mode, ptree_luma, template_tree, max_recursion_depth - 1, + multi_pass_mode, ptree_luma, template_tree, eff_max_recursion_depth - 1, rect_part_win_info, &level_banks, parent_partition #if CONFIG_ML_PART_SPLIT , @@ -5701,12 +5735,13 @@ bool av2_rd_pick_partition( prune_none_after_rect(&part_search_state, pc_tree); none_partition_search(cpi, td, tile_data, tp, pc_tree, sms_tree, &x_ctx, &part_search_state, &best_rdc, &pb_source_variance, - none_rd, &part_none_rd, &level_banks, ptree_luma); + none_rd, &part_none_rd, &level_banks, ptree_luma, + multi_pass_mode); } // Search extended partitions. const int ext_recur_depth = get_ext_partitions_recur_depth( - &cpi->sf.part_sf, bsize, max_recursion_depth, false); + &cpi->sf.part_sf, bsize, eff_max_recursion_depth, false); bool partition_boundaries[MAX_MIB_SQUARE] = { 0 }; prune_ext_partitions_3way(cpi, pc_tree, &part_search_state, @@ -5721,7 +5756,7 @@ bool av2_rd_pick_partition( if ((pc_tree->region_type != INTRA_REGION || frame_is_intra_only(cm))) { const int uneven_4way_recur_depth = get_ext_partitions_recur_depth( - &cpi->sf.part_sf, bsize, max_recursion_depth, true); + &cpi->sf.part_sf, bsize, eff_max_recursion_depth, true); prune_ext_partitions_4way(cpi, pc_tree, &part_search_state, partition_boundaries); @@ -5756,12 +5791,25 @@ bool av2_rd_pick_partition( } #if !defined(NDEBUG) - if (template_tree && template_tree->partition != PARTITION_INVALID && + // Verify that the wet pass honoured the dry-pass template. This only holds + // when a valid partition was actually found: if the search failed, either + // because every partition was pruned or because none met the rd limit passed + // down from the parent, pc_tree->partitioning is still the PARTITION_NONE + // default from av2_alloc_pc_tree_node() and carries no meaning. That is a + // legitimate outcome -- the caller invalidates the rd stats and backs off + // (see rd_try_subblock_partition) -- so it must not trip the check. A real + // forcing violation still has found_best_partition set and is still caught. + if (part_search_state.found_best_partition && template_tree && + template_tree->partition != PARTITION_INVALID && pc_tree->partitioning != template_tree->partition) { + printf( + "Mismatch with template at fr: %d, mi: (%d, %d), BLOCK_%dX%d: " + "template %d, chose %d\n", + cm->current_frame.display_order_hint, mi_row, mi_col, + block_size_wide[bsize], block_size_high[bsize], + (int)template_tree->partition, (int)pc_tree->partitioning); + fflush(stdout); assert(0); - printf("Mismatch with template at fr: %d, mi: (%d, %d), BLOCK_%dX%d\n", - cm->current_frame.display_order_hint, mi_row, mi_col, - block_size_wide[bsize], block_size_high[bsize]); } #endif // !defined(NDEBUG) diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index c017d13844..807000ced1 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -49,6 +49,7 @@ #include "av2/encoder/av2_quantize.h" #include "av2/common/cost.h" #include "av2/encoder/compound_type.h" +#include "av2/encoder/encodeframe_utils.h" #include "av2/encoder/encodemb.h" #include "av2/encoder/encodemv.h" #include "av2/encoder/encoder.h" @@ -2216,13 +2217,16 @@ static int motion_mode_is_prune_exempt(const AV2_COMMON *const cm, static int prune_motion_mode(int64_t this_model_rd, int64_t top_motion_mode_model_rd[], const AV2_COMMON *const cm, - const MACROBLOCKD *const xd, BLOCK_SIZE bsize) { - // top_motion_mode_model_rd[] holds the smallest model RDs seen so far in - // ascending order, padded with the INT64_MAX sentinel. Insert this_model_rd - // if it ranks among them. - for (int i = 0; i < TOP_MOTION_MODE_MODEL_COUNT; i++) { + const MACROBLOCKD *const xd, BLOCK_SIZE bsize, + int prune_top) { + assert(prune_top > 0); + // Only the top prune_top candidates get full RD; the rest are pruned. + const int threshold_slot = AVMMIN(prune_top, TOP_MOTION_MODE_MODEL_COUNT) - 1; + // top_motion_mode_model_rd[] holds the smallest model RDs seen so far, + // in ascending order, kept sorted up to threshold_slot. + for (int i = 0; i <= threshold_slot; i++) { if (this_model_rd < top_motion_mode_model_rd[i]) { - for (int j = TOP_MOTION_MODE_MODEL_COUNT - 1; j > i; j--) { + for (int j = threshold_slot; j > i; j--) { top_motion_mode_model_rd[j] = top_motion_mode_model_rd[j - 1]; } top_motion_mode_model_rd[i] = this_model_rd; @@ -2231,11 +2235,9 @@ static int prune_motion_mode(int64_t this_model_rd, } // Never prune the prune-exempt setting, even when its model RD does not rank. if (motion_mode_is_prune_exempt(cm, xd, bsize)) return 0; - // Did not rank: this_model_rd is >= every kept value. Prune only when it - // strictly exceeds the largest kept RD. An unfilled pool keeps the INT64_MAX - // sentinel in the last slot, which can never be exceeded, so it returns 0. - return this_model_rd > - top_motion_mode_model_rd[TOP_MOTION_MODE_MODEL_COUNT - 1]; + // Did not rank: prune only if worse than every kept value. Caller must + // initialize top_motion_mode_model_rd[] to INT64_MAX so the pool fills first. + return this_model_rd > top_motion_mode_model_rd[threshold_slot]; } // Records the best fast/full RD for a given (mode, refs) into the @@ -3122,7 +3124,8 @@ static AVM_INLINE int evaluate_motion_mode_trial( int64_t est_rd = RDCOST(x->rdmult, rd_stats->rate + est_residue_cost, est_dist); update_inter_mode_rd(args, mbmi, est_rd, 1); - if (prune_motion_mode(est_rd, top_motion_mode_model_rd, cm, xd, bsize)) + if (prune_motion_mode(est_rd, top_motion_mode_model_rd, cm, xd, bsize, + x->inter_mode_prune_top)) return -1; } @@ -3269,6 +3272,7 @@ static int64_t motion_mode_rd( MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; MB_MODE_INFO_EXT *mbmi_ext = x->mbmi_ext; + const DryPassCfg *const cfg = args->dry_pass_cfg; const int rate2_nocoeff = rd_stats->rate; const int rate_mv0 = mbmi->mode == WARPMV ? 0 : *rate_mv; assert(IMPLIES(mbmi->mode == WARPMV, (rate_mv0 == 0))); @@ -3283,11 +3287,17 @@ static int64_t motion_mode_rd( int allowed_motion_modes = motion_mode_allowed( cm, xd, mbmi_ext->ref_mv_stack[mbmi->ref_frame[0]], mbmi); - const int modes_to_search = - (base_mbmi.mode == WARPMV || base_mbmi.mode == WARP_NEWMV) - ? allowed_motion_modes - : select_modes_to_search(cpi, allowed_motion_modes, eval_motion_mode, - args->skip_motion_mode); + // The dry pass uses simple translation only, except for the warp modes, + // which would produce an invalid prediction without a warp motion mode. + int modes_to_search; + if (base_mbmi.mode == WARPMV || base_mbmi.mode == WARP_NEWMV) { + modes_to_search = allowed_motion_modes; + } else if (x->apply_dry_pass_shortcuts) { + modes_to_search = cfg->motion_mode_mask; + } else { + modes_to_search = select_modes_to_search( + cpi, allowed_motion_modes, eval_motion_mode, args->skip_motion_mode); + } // Initialize shared trial context (constant across all trials) MotionModeTrialCtx ctx; @@ -3324,8 +3334,12 @@ static int64_t motion_mode_rd( eval_motion_mode && (mode_index == WARP_CAUSAL || mode_index == WARP_EXTEND)) continue; - const int warp_ref_idx_limit = + int warp_ref_idx_limit = get_warp_ref_idx_limit(xd, &base_mbmi, mbmi_ext, mode_index); + // Dry pass: try only one warp reference candidate. + if (x->apply_dry_pass_shortcuts) { + warp_ref_idx_limit = AVMMIN(warp_ref_idx_limit, cfg->warp_ref_idx_cap); + } if (mode_index != WARP_DELTA) { // SIMPLE_TRANSLATION, WARP_CAUSAL, INTERINTRA, WARP_EXTEND: @@ -3346,8 +3360,14 @@ static int64_t motion_mode_rd( previous_mvs[i].as_int = INVALID_MV; ctx.previous_mvs = previous_mvs; const int is_low_delay_enc = (cpi->oxcf.gf_cfg.lag_in_frames == 0); - const int warp_inter_intra_limit = + int warp_inter_intra_limit = 1 + (allow_warp_inter_intra(&base_mbmi) && !is_low_delay_enc); + int warpmv_with_mvd_limit = 2; + // Dry pass: try only the first option of each extra warp choice. + if (x->apply_dry_pass_shortcuts) { + warp_inter_intra_limit = cfg->warp_inter_intra_cap; + warpmv_with_mvd_limit = cfg->warpmv_with_mvd_cap; + } for (int warp_inter_intra = 0; warp_inter_intra < warp_inter_intra_limit; warp_inter_intra++) { for (int warp_ref_idx = 0; warp_ref_idx < warp_ref_idx_limit; @@ -3360,7 +3380,8 @@ static int64_t motion_mode_rd( assert(IMPLIES(cpi->sf.inter_sf.enable_warp_inter_intra_in_winner && !eval_motion_mode, (!warp_inter_intra || warp_ref_idx >= 2))); - for (int warpmv_with_mvd_flag = 0; warpmv_with_mvd_flag < 2; + for (int warpmv_with_mvd_flag = 0; + warpmv_with_mvd_flag < warpmv_with_mvd_limit; warpmv_with_mvd_flag++) { const MotionModeTrialParams trial = { mode_index, warp_ref_idx, warp_ref_idx_limit, @@ -3382,11 +3403,14 @@ static int64_t motion_mode_rd( warp_mode_info_array prev_best_models; reset_warp_stats_buffer(&prev_best_models); ctx.prev_best_models = &prev_best_models; + int warp_precision_limit = NUM_WARP_PRECISION_MODES; + // Dry pass: try only the first warp precision. + if (x->apply_dry_pass_shortcuts) + warp_precision_limit = cfg->warp_precision_cap; for (int warp_ref_idx = 0; warp_ref_idx < warp_ref_idx_limit; warp_ref_idx++) { for (int warp_precision_idx = 0; - warp_precision_idx < NUM_WARP_PRECISION_MODES; - warp_precision_idx++) { + warp_precision_idx < warp_precision_limit; warp_precision_idx++) { const MotionModeTrialParams trial = { mode_index, warp_ref_idx, warp_ref_idx_limit, 0, 0, warp_precision_idx @@ -4485,6 +4509,7 @@ static int process_compound_inter_mode( MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; const AV2_COMMON *cm = &cpi->common; + const DryPassCfg *const cfg = args->dry_pass_cfg; const int masked_compound_used = is_any_masked_compound_used(bsize) && cm->seq_params.enable_masked_compound && @@ -4496,6 +4521,11 @@ static int process_compound_inter_mode( if (get_cwp_idx(mbmi) != CWP_EQUAL) { mode_search_mask = (1 << COMPOUND_AVERAGE); } + // Dry pass: restrict compound types. Only applied when CWP is CWP_EQUAL, + // since WEDGE is invalid otherwise. + if (x->apply_dry_pass_shortcuts && get_cwp_idx(mbmi) == CWP_EQUAL) { + mode_search_mask = cfg->compound_type_mask; + } const int num_planes = av2_num_planes(cm); const int mi_row = xd->mi_row; const int mi_col = xd->mi_col; @@ -5250,6 +5280,7 @@ static int64_t handle_inter_mode( MB_MODE_INFO *mbmi = xd->mi[0]; MB_MODE_INFO_EXT *const mbmi_ext = x->mbmi_ext; TxfmSearchInfo *txfm_info = &x->txfm_search_info; + const DryPassCfg *const cfg = args->dry_pass_cfg; const int is_comp_pred = has_second_ref(mbmi); const PREDICTION_MODE this_mode = mbmi->mode; @@ -5302,6 +5333,11 @@ static int64_t handle_inter_mode( ref_set[1] = get_drl_refmv_count(cm->features.max_drl_bits, x, mbmi->ref_frame, this_mode, 1); } + // Dry pass: look at no more than 2 reference MV candidates per reference. + if (x->apply_dry_pass_shortcuts) { + ref_set[0] = AVMMIN(ref_set[0], cfg->ref_mv_set_cap); + ref_set[1] = AVMMIN(ref_set[1], cfg->ref_mv_set_cap); + } inter_mode_info mode_info[BAWP_OPTION_CNT][NUM_MV_PRECISIONS] [MAX_REF_MV_SQUARE]; @@ -5469,6 +5505,9 @@ static int64_t handle_inter_mode( for (int scale_index = 0; scale_index < jmvd_scaling_factor_num; ++scale_index) { + // Dry pass: cap jmvd scale index. + if (x->apply_dry_pass_shortcuts && scale_index > cfg->jmvd_scale_cap) + continue; mbmi->jmvd_scale_mode = scale_index; if (is_joint_amvd_coding_mode(mbmi->mode, mbmi->use_amvd)) { if (scale_index > JOINT_AMVD_SCALE_FACTOR_CNT - 1) continue; @@ -5504,6 +5543,8 @@ static int64_t handle_inter_mode( if (best_cwp_idxs[scale_index] == CWP_EQUAL && (ref_mv_idx[0] > 0 || ref_mv_idx[1] > 0)) cwp_loop_num = 1; + // Dry pass: use only cwp_idx == CWP_EQUAL (no CWP search). + if (x->apply_dry_pass_shortcuts) cwp_loop_num = cfg->cwp_loop_cap; int cwp_search_mask[MAX_CWP_NUM] = { 0 }; av2_zero(cwp_search_mask); @@ -5571,6 +5612,11 @@ static int64_t handle_inter_mode( continue; } assert(pb_mv_precision <= mbmi->max_mv_precision); + // Dry pass: try only the top N MV precisions. + if (x->apply_dry_pass_shortcuts && + precision_dx < + precision_def->num_precisions - cfg->precisions_from_top) + break; const int jmvd_scale_mode_cost = get_jmvd_scale_mode_cost(mbmi, mode_costs); @@ -5654,6 +5700,9 @@ static int64_t handle_inter_mode( av2_allow_bawp(cm, mbmi, xd->mi_row, xd->mi_col); if (bawp_eanbled && av2_allow_explicit_bawp(mbmi)) bawp_eanbled += EXPLICIT_BAWP_SCALE_CNT; + // Dry pass: cap BAWP flag (0 => BAWP off). + if (x->apply_dry_pass_shortcuts) + bawp_eanbled = AVMMIN(bawp_eanbled, cfg->bawp_cap); for (int bawp_flag = 0; bawp_flag <= bawp_eanbled; bawp_flag++) { if (mbmi->ref_mv_idx[0] > 0 && bawp_flag > 1 && best_mbmi.bawp_flag[0] == 0) @@ -5784,6 +5833,10 @@ static int64_t handle_inter_mode( for (int refinemv_loop = 0; refinemv_loop < REFINEMV_NUM_MODES; refinemv_loop++) { + // Dry pass: cap refinemv loop index. + if (x->apply_dry_pass_shortcuts && + refinemv_loop > cfg->refinemv_cap) + break; if (refinemv_loop == 1 && (!switchable_refinemv_flag(cm, mbmi) || cpi->sf.inter_sf.disable_switchable_refinemv)) @@ -8581,7 +8634,9 @@ static void av2_evaluate_intra_modes_in_inter_frame( const struct AV2_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, int64_t inter_cost, int64_t intra_cost, InterModeSearchState *search_state, RD_STATS *rd_cost, - unsigned int intra_ref_frame_cost, int is_intra_mode_allowed) { + unsigned int intra_ref_frame_cost, int is_intra_mode_allowed, + const DryPassCfg *dry_pass_cfg) { + const bool apply_dry_pass_shortcuts = x->apply_dry_pass_shortcuts; const AV2_COMMON *const cm = &cpi->common; const SPEED_FEATURES *const sf = &cpi->sf; MACROBLOCKD *const xd = &x->e_mbd; @@ -8652,12 +8707,18 @@ static void av2_evaluate_intra_modes_in_inter_frame( } } for (int dpcm_idx = 0; dpcm_idx < dpcm_loop_num; dpcm_idx++) { + // Dry pass: cap DPCM index. + if (apply_dry_pass_shortcuts && dpcm_idx > dry_pass_cfg->intra_dpcm_cap) + break; mbmi->use_dpcm_y = dpcm_idx; memset(search_state->intra_search_state.mrl0_dir_mode_survived, 0, sizeof(search_state->intra_search_state.mrl0_dir_mode_survived)); for (int fsc_mode = 0; fsc_mode < (allow_fsc_intra(cm, bsize, mbmi) ? FSC_MODES : 1); fsc_mode++) { + // Dry pass: cap FSC mode index. + if (apply_dry_pass_shortcuts && fsc_mode > dry_pass_cfg->intra_fsc_cap) + break; uint8_t enable_mrls_flag = cm->seq_params.enable_mrls && !fsc_mode; const int num_mrl_indices = enable_mrls_flag ? MRL_LINE_NUMBER : 1; ModeRDInfoUV mode_rd_info_uv = { { false }, { 0 }, { 0 } }; @@ -8668,6 +8729,9 @@ static void av2_evaluate_intra_modes_in_inter_frame( av2_zero(mode_rd_info_uv.mode_evaluated); } for (int mrl_index = 0; mrl_index < num_mrl_indices; mrl_index++) { + // Dry pass: cap MRL index (0 => nearest reference line only). + if (apply_dry_pass_shortcuts && mrl_index > dry_pass_cfg->intra_mrl_cap) + break; if (mrl_index > 0 && (xd->tree_type == CHROMA_PART ? mbmi->fsc_mode[PLANE_TYPE_Y] : fsc_mode)) { @@ -8681,6 +8745,11 @@ static void av2_evaluate_intra_modes_in_inter_frame( if (!is_intra_mode_allowed) break; for (int mode_idx = INTRA_MODE_START; mode_idx < LUMA_MODE_COUNT; ++mode_idx) { + // Dry pass: only the top MPM intra modes, capped. + if (apply_dry_pass_shortcuts && + mode_idx >= AVMMIN((int)mbmi->num_y_intra_mpm, + dry_pass_cfg->intra_mpm_cap)) + break; if (sf->rt_sf.use_only_dc_intra_interframe && mode_idx != DC_PRED) continue; if (sf->intra_sf.skip_intra_in_interframe && @@ -8912,6 +8981,43 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, struct macroblock *x, struct RD_STATS *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, int64_t best_rd_so_far) { + // WARNING: on the dry pass, all exits must go through dry_pass_cleanup — + // use `goto dry_pass_cleanup;` instead of `return`. + const bool apply_dry_pass_shortcuts = x->apply_dry_pass_shortcuts; + + // Save rd_model for restore on exit; the dry pass forces FULL_TXFM_RD. + TXFM_RD_MODEL saved_rd_model = FULL_TXFM_RD; + // Dry-pass policy caps consulted by every gate below. + DryPassCfg dry_pass_cfg = { 0 }; + if (apply_dry_pass_shortcuts) { + saved_rd_model = x->rd_model; + dry_pass_cfg = (DryPassCfg){ + .ref_rank_cap = 1, + .same_ref_compound_rank_cap = 0, + .ref_mv_set_cap = 2, + .warp_ref_idx_cap = 1, + .warp_precision_cap = 1, + .warpmv_with_mvd_cap = 1, + .warp_inter_intra_cap = 1, + .cwp_loop_cap = 1, + .jmvd_scale_cap = 0, + .bawp_cap = 0, + .refinemv_cap = 0, + .intra_dpcm_cap = 0, + .intra_fsc_cap = 0, + .intra_mrl_cap = 0, + .motion_mode_mask = (1u << SIMPLE_TRANSLATION), + .compound_type_mask = (1u << COMPOUND_AVERAGE) | (1u << COMPOUND_WEDGE), + .inter_mode_mask = (1u << NEWMV) | (1u << NEW_NEWMV) | (1u << NEARMV) | + (1u << NEAR_NEARMV) | (1u << WARPMV) | + (1u << WARP_NEWMV), + .precisions_from_top = 3, + .intra_mpm_cap = 13, + }; + // Keep the normal distortion measure; a cheaper one made the partition + // choices worse. + x->rd_model = FULL_TXFM_RD; + } AV2_COMMON *const cm = &cpi->common; const FeatureFlags *const features = &cm->features; const int num_planes = av2_num_planes(cm); @@ -8964,6 +9070,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, 0, { { 0 } }, 0, + apply_dry_pass_shortcuts ? &dry_pass_cfg : NULL, }; // Indicates the appropriate number of simple translation winner modes for @@ -9084,10 +9191,14 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, const InterModeRdModel *md = &tile_data->inter_mode_rd_models[bsize]; // If do_tx_search is 0, only estimated RD should be computed. // If do_tx_search is 1, all modes have TX search performed. + // Dry pass: transform search stays on, but the settings above keep it cheap. const int do_tx_search = - !((cpi->sf.inter_sf.inter_mode_rd_model_estimation == 1 && md->ready) || - (cpi->sf.inter_sf.inter_mode_rd_model_estimation == 2 && - num_pels_log2_lookup[bsize] > 8)); + apply_dry_pass_shortcuts + ? 1 + : !((cpi->sf.inter_sf.inter_mode_rd_model_estimation == 1 && + md->ready) || + (cpi->sf.inter_sf.inter_mode_rd_model_estimation == 2 && + num_pels_log2_lookup[bsize] > 8)); InterModesInfo *inter_modes_info = x->inter_modes_info; inter_modes_info->num = 0; @@ -9277,6 +9388,35 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, continue; } + // Dry pass: search a small set of inter modes that still covers the range + // of MV costs, so the partition ranking matches a full search. Modes with + // an explicit MV difference, modes with a near-zero MV, and the warp modes + // are all represented. Searching only the explicit-MV modes made the dry + // pass split too much at high QP, and the more expensive optical-flow + // modes are not worth their cost here. + if (apply_dry_pass_shortcuts && + !(dry_pass_cfg.inter_mode_mask & (1u << this_mode))) + continue; + // Dry pass: use the top ranks only. The eval order iterates rank indices + // 0..N-1 where rank 0 is the closest reference. TIP is always allowed + // because it is a different kind of prediction and can win on smooth + // content. + if (apply_dry_pass_shortcuts && is_inter_ref_frame(ref_frame) && + ref_frame > dry_pass_cfg.ref_rank_cap && !is_tip_ref_frame(ref_frame)) + continue; + // Dry pass: same limit for the second reference of a compound mode. + if (apply_dry_pass_shortcuts && is_inter_ref_frame(second_ref_frame) && + second_ref_frame > dry_pass_cfg.ref_rank_cap) + continue; + // Dry pass: mostly skip compound modes that use the same reference twice. + // They pay for two MVs but rarely win the partition choice. When the frame + // has references on both sides they are dropped completely; otherwise the + // top same_ref_compound_rank_cap ranks are kept. + if (apply_dry_pass_shortcuts && is_comp_mode && + ref_frame == second_ref_frame && + (cm->has_both_sides_refs || + ref_frame > dry_pass_cfg.same_ref_compound_rank_cap)) + continue; if (this_mode == WARPMV && !warpmv_allowed) continue; if (this_mode == WARP_NEWMV && (!warpmv_allowed || !warp_newmv_allowed)) continue; @@ -9490,7 +9630,8 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, } av2_evaluate_intra_modes_in_inter_frame( cpi, x, bsize, ctx, inter_cost, intra_cost, &search_state, rd_cost, - intra_ref_frame_cost, is_intra_mode_allowed); + intra_ref_frame_cost, is_intra_mode_allowed, + apply_dry_pass_shortcuts ? &dry_pass_cfg : NULL); #if CONFIG_COLLECT_COMPONENT_TIMING end_timing(cpi, handle_intra_mode_time); @@ -9601,7 +9742,7 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, search_state.best_rd >= best_rd_so_far) { rd_cost->rate = INT_MAX; rd_cost->rdcost = INT64_MAX; - return; + goto dry_pass_cleanup; } const InterpFilter interp_filter = features->interp_filter; @@ -9665,6 +9806,10 @@ void av2_rd_pick_inter_mode_sb(struct AV2_COMP *cpi, // TODO(urvang): Remove index from `palette_size` array, as palette is no // longer allowed for chroma. assert(mbmi->palette_mode_info.palette_size[1] == 0); +dry_pass_cleanup: + if (apply_dry_pass_shortcuts) { + x->rd_model = saved_rd_model; + } } void av2_rd_pick_inter_mode_sb_seg_skip(const AV2_COMP *cpi, diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index aecb9a27e0..45ecea2e6a 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -15,6 +15,7 @@ #include "av2/common/reconintra.h" #include "av2/encoder/encoder.h" +#include "av2/encoder/encoder_utils.h" #include "av2/encoder/speed_features.h" #include "av2/encoder/rdopt.h" @@ -770,7 +771,7 @@ static AVM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) { part_sf->prune_part_4_horz_or_vert = 0; part_sf->prune_part_4_with_part_3 = 0; part_sf->prune_part_4b_with_part_4a = 0; - part_sf->two_pass_partition_search = 0; + part_sf->two_pass_partition_search = TWO_PASS_PART_OFF; part_sf->prune_rect_with_ml = 0; part_sf->partition_pruning_with_mlp = 0; part_sf->partition_pruning_with_mlp_none_thresh = 0.0f; @@ -1407,31 +1408,11 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { static AVM_INLINE void set_erp_speed_features_qindex_dependent(AV2_COMP *cpi) { SPEED_FEATURES *const sf = &cpi->sf; const AV2_COMMON *const cm = &cpi->common; - const int is_1080p_or_larger = AVMMIN(cm->width, cm->height) >= 1080; - const unsigned int erp_pruning_level = cpi->oxcf.part_cfg.erp_pruning_level; const int boosted = frame_is_boosted(cpi); const int qindex_offset = MAXQ_OFFSET * (cm->seq_params.bit_depth - 8); - const int qindex_thresh2 = 113 + qindex_offset; const int qindex_thresh3 = 135 + qindex_offset; - switch (erp_pruning_level) { - case 6: AVM_FALLTHROUGH_INTENDED; - case 5: - if (is_1080p_or_larger && - cm->quant_params.base_qindex <= qindex_thresh2 && - !frame_is_intra_only(cm)) { - sf->part_sf.two_pass_partition_search = 1; - } - AVM_FALLTHROUGH_INTENDED; - case 4: AVM_FALLTHROUGH_INTENDED; - case 3: AVM_FALLTHROUGH_INTENDED; - case 2: AVM_FALLTHROUGH_INTENDED; - case 1: AVM_FALLTHROUGH_INTENDED; - case 0: break; - default: assert(0 && "Invalid ERP pruning level."); - } - if (cpi->speed == 1) { if (!boosted && cm->quant_params.base_qindex < qindex_thresh3) { sf->part_sf.simple_motion_search_split = 1; @@ -1443,6 +1424,42 @@ static AVM_INLINE void set_erp_speed_features_qindex_dependent(AV2_COMP *cpi) { } } +// Pick the two-pass superblock partition search level for this frame. This is +// the single decision point for the feature: it runs at the end of +// av2_set_speed_features_qindex_dependent(), which is the last speed-feature +// pass before av2_encode_frame(), so it sees the final frame type and qindex. +static AVM_INLINE void set_two_pass_partition_level(AV2_COMP *cpi) { + const AV2_COMMON *const cm = &cpi->common; + int *const level = &cpi->sf.part_sf.two_pass_partition_search; + + *level = TWO_PASS_PART_OFF; + // Both regimes only ever run on inter frames. + // TODO(Yeqing): Extend to intra/key frames. + if (frame_is_intra_only(cm)) return; + + // The fast level takes precedence: it is the speed >= 3 regime, and + // av2_select_sb_size() keys the superblock size off the same config-time + // predicate, so the size and the level have to agree. Note that this + // predicate is GOOD-only, which is what keeps the fast level out of REALTIME + // mode even though set_rt_speed_features_framesize_independent() runs the + // GOOD setters. + if (av2_wants_two_pass_partition(&cpi->oxcf)) { + *level = TWO_PASS_PART_FAST; + return; + } + + // The conservative level is deliberately not restricted to GOOD mode: it is + // reachable in REALTIME mode too, where it still affects the dry-run + // partition tree store even when the partition search itself is variance + // based. + const int qindex_thresh = 113 + MAXQ_OFFSET * (cm->seq_params.bit_depth - 8); + if (cpi->oxcf.part_cfg.erp_pruning_level >= 5 && + AVMMIN(cm->width, cm->height) >= 1080 && + cm->quant_params.base_qindex <= qindex_thresh) { + *level = TWO_PASS_PART_CONSERVATIVE; + } +} + // Override some speed features based on qindex void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { AV2_COMMON *const cm = &cpi->common; @@ -1546,4 +1563,6 @@ void av2_set_speed_features_qindex_dependent(AV2_COMP *cpi, int speed) { set_erp_speed_features(cpi); set_erp_speed_features_framesize_dependent(cpi); set_erp_speed_features_qindex_dependent(cpi); + + set_two_pass_partition_level(cpi); } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 58ccd0f44f..236c4156ce 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -304,6 +304,21 @@ typedef struct GLOBAL_MOTION_SPEED_FEATURES { int disable_gm_search_based_on_stats; } GLOBAL_MOTION_SPEED_FEATURES; +// Levels for the two-pass superblock partition search. In both enabled levels +// the first ("dry") pass works out a rough partition shape down to 16x16, and +// the second ("wet") pass codes the superblock for real while trusting the +// dry-pass shape for blocks of 32x32 and larger. +enum { + TWO_PASS_PART_OFF = 0, + // The dry pass runs the full tool set, and the wet pass trusts every shape + // of 32x32 and larger, including blocks the dry pass left unsplit. + TWO_PASS_PART_CONSERVATIVE = 1, + // The dry pass runs a reduced tool set (see DryPassCfg), and the wet pass + // re-searches unsplit blocks up to 128 px and narrows the mode pool on the + // shapes it reuses. + TWO_PASS_PART_FAST = 2, +}; + typedef struct PARTITION_SPEED_FEATURES { PARTITION_SEARCH_TYPE partition_search_type; @@ -399,6 +414,10 @@ typedef struct PARTITION_SPEED_FEATURES { // Prunes PARTITION_HORZ/VERT_4B based on PARTITION_HORZ/VERT_4A result. int prune_part_4b_with_part_4a; + // Two-pass superblock partition search level: one of TWO_PASS_PART_OFF, + // TWO_PASS_PART_CONSERVATIVE or TWO_PASS_PART_FAST. Decided once per frame in + // set_two_pass_partition_level(); read through av2_two_pass_part_enabled() + // and av2_two_pass_part_is_fast(). int two_pass_partition_search; // Prunes rect partition with ml model @@ -467,6 +486,20 @@ typedef struct PARTITION_SPEED_FEATURES { unsigned int force_max_pb_aspect_ratio; } PARTITION_SPEED_FEATURES; +// True when the two-pass superblock partition search runs at all. +static INLINE bool av2_two_pass_part_enabled( + const PARTITION_SPEED_FEATURES *part_sf) { + return part_sf->two_pass_partition_search != TWO_PASS_PART_OFF; +} + +// True when the two-pass search runs in its faster regime: a reduced-tool dry +// pass, a wet pass that re-searches unsplit blocks, and a narrowed mode pool on +// reused shapes. +static INLINE bool av2_two_pass_part_is_fast( + const PARTITION_SPEED_FEATURES *part_sf) { + return part_sf->two_pass_partition_search >= TWO_PASS_PART_FAST; +} + typedef struct MV_SPEED_FEATURES { // Motion search method (Diamond, NSTEP, Hex, Big Diamond, Square, etc). SEARCH_METHODS search_method; diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index bf9242a059..55beeaae2e 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -3405,7 +3405,8 @@ static AVM_INLINE void choose_largest_tx_size(const AV2_COMP *const cpi, const int64_t no_skip_txfm_rd = is_inter_block(mbmi, xd->tree_type) ? RDCOST(x->rdmult, no_skip_txfm_rate, 0) : 0; - const int skip_trellis = 0; + // Dry pass: skip trellis (no RDOQ) — light quant only. + const int skip_trellis = x->apply_dry_pass_shortcuts ? 1 : 0; av2_txfm_rd_in_plane(x, cpi, rd_stats, ref_best_rd, AVMMIN(no_skip_txfm_rd, skip_txfm_rd), AVM_PLANE_Y, bs, FTXS_NONE, skip_trellis); From 171fec0f725314b4041a8e80eec93a3b9f95becf Mon Sep 17 00:00:00 2001 From: ram Date: Tue, 18 Aug 2026 10:58:26 +0530 Subject: [PATCH 167/205] Refactor ccso search (#5268) This MR doesn't change the bitstream. --- av2/encoder/encoder.c | 110 ++++--- av2/encoder/pickccso.c | 726 +++++++++++++++++++---------------------- av2/encoder/pickccso.h | 4 +- 3 files changed, 398 insertions(+), 442 deletions(-) diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index f0bbc7c448..fc879b6003 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -3027,39 +3027,34 @@ static void avm_band_search(AV2_COMP *cpi, AV2_COMMON *cm, MACROBLOCKD *xd) { static void cdef_restoration_frame(AV2_COMP *cpi, AV2_COMMON *cm, MACROBLOCKD *xd, int use_restoration, int use_cdef, int use_gdf) { - uint16_t *rec_uv[CCSO_NUM_COMPONENTS]; - uint16_t *org_uv[CCSO_NUM_COMPONENTS]; uint16_t *ext_rec_y = NULL; - uint16_t *ref_buffer; - const YV12_BUFFER_CONFIG *ref = cpi->source; - int ref_stride; const int use_ccso = !cm->features.coded_lossless && !cm->bru.frame_inactive_flag && !cm->bridge_frame_info.is_bridge_frame && cm->seq_params.enable_ccso; const int num_planes = av2_num_planes(cm); + av2_setup_dst_planes(xd->plane, &cm->cur_frame->buf, 0, 0, 0, num_planes, NULL); - const int ccso_stride = xd->plane[0].dst.width; - for (int pli = 0; pli < num_planes; pli++) { - rec_uv[pli] = avm_malloc(sizeof(*rec_uv[pli]) * xd->plane[0].dst.height * - ccso_stride); - org_uv[pli] = avm_malloc(sizeof(*org_uv[pli]) * xd->plane[0].dst.height * - ccso_stride); - } if (use_ccso) { + const int ccso_stride = xd->plane[AVM_PLANE_Y].dst.width; + const int ccso_height = xd->plane[AVM_PLANE_Y].dst.height; + const int ccso_stride_ext = ccso_stride + (CCSO_PADDING_SIZE << 1); + const int ccso_height_ext = ccso_height + (CCSO_PADDING_SIZE << 1); + CHECK_MEM_ERROR( + cm, ext_rec_y, + avm_malloc(sizeof(*ext_rec_y) * ccso_stride_ext * ccso_height_ext)); + const int pic_height = cm->cur_frame->buf.y_height; const int pic_width = cm->cur_frame->buf.y_width; const int dst_stride = cm->cur_frame->buf.y_stride; - const uint16_t *rec_y = cm->cur_frame->buf.y_buffer; - const int ccso_stride_ext = pic_width + (CCSO_PADDING_SIZE << 1); - ext_rec_y = avm_malloc(sizeof(*ext_rec_y) * - (pic_height + (CCSO_PADDING_SIZE << 1)) * - (pic_width + (CCSO_PADDING_SIZE << 1))); + uint16_t *rec_y = cm->cur_frame->buf.y_buffer; + uint16_t *ext_rec_y_row = + ext_rec_y + CCSO_PADDING_SIZE + (CCSO_PADDING_SIZE * ccso_stride_ext); + for (int r = 0; r < pic_height; ++r) { - for (int c = 0; c < pic_width; ++c) { - ext_rec_y[(r + CCSO_PADDING_SIZE) * ccso_stride_ext + c + - CCSO_PADDING_SIZE] = rec_y[r * dst_stride + c]; - } + av2_copy_array(ext_rec_y_row, rec_y, pic_width); + ext_rec_y_row += ccso_stride_ext; + rec_y += dst_stride; } extend_ccso_border(&cm->cur_frame->buf, ext_rec_y, CCSO_PADDING_SIZE); } @@ -3102,43 +3097,50 @@ static void cdef_restoration_frame(AV2_COMP *cpi, AV2_COMMON *cm, cm->cdef_info.cdef_frame_enable = 0; // if not use ccso, need to init cm->ccso_info.ccso_frame_flag = false; - cm->ccso_info.ccso_enable[0] = cm->ccso_info.ccso_enable[1] = - cm->ccso_info.ccso_enable[2] = 0; - for (int plane = 0; plane < av2_num_planes(cm); plane++) { - cm->cur_frame->ccso_info.ccso_enable[plane] = 0; + for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + cm->cur_frame->ccso_info.ccso_enable[plane] = false; + cm->ccso_info.ccso_enable[plane] = false; cm->ccso_info.sb_reuse_ccso[plane] = false; cm->ccso_info.reuse_ccso[plane] = false; } } + if (use_ccso) { av2_setup_dst_planes(xd->plane, &cm->cur_frame->buf, 0, 0, 0, num_planes, NULL); - // Reading original and reconstructed chroma samples as input - for (int pli = 0; pli < num_planes; pli++) { - const int pic_height = xd->plane[pli].dst.height; - const int pic_width = xd->plane[pli].dst.width; - const int dst_stride = xd->plane[pli].dst.stride; - switch (pli) { - case 0: - ref_buffer = ref->y_buffer; - ref_stride = ref->y_stride; - break; - case 1: - ref_buffer = ref->u_buffer; - ref_stride = ref->uv_stride; - break; - case 2: - ref_buffer = ref->v_buffer; - ref_stride = ref->uv_stride; - break; - default: ref_stride = 0; - } + + uint16_t *rec_uv[CCSO_NUM_COMPONENTS]; + uint16_t *org_uv[CCSO_NUM_COMPONENTS]; + const int ccso_stride = xd->plane[AVM_PLANE_Y].dst.width; + const int ccso_height = xd->plane[AVM_PLANE_Y].dst.height; + for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + CHECK_MEM_ERROR( + cm, rec_uv[plane], + avm_malloc(sizeof(*rec_uv[plane]) * ccso_height * ccso_stride)); + CHECK_MEM_ERROR( + cm, org_uv[plane], + avm_malloc(sizeof(*org_uv[plane]) * ccso_height * ccso_stride)); + + // Reading original and reconstructed chroma samples as input + const YV12_BUFFER_CONFIG *src = cpi->source; + uint16_t *rec_buffer = xd->plane[plane].dst.buf; + uint16_t *src_cpy = org_uv[plane]; + uint16_t *rec_cpy = rec_uv[plane]; + const int pic_height = xd->plane[plane].dst.height; + const int pic_width = xd->plane[plane].dst.width; + const int rec_stride = xd->plane[plane].dst.stride; + uint16_t *src_buffer = src->buffers[plane]; + int src_stride = src->strides[plane == AVM_PLANE_Y ? 0 : 1]; + for (int r = 0; r < pic_height; ++r) { - for (int c = 0; c < pic_width; ++c) { - rec_uv[pli][r * ccso_stride + c] = - xd->plane[pli].dst.buf[r * dst_stride + c]; - org_uv[pli][r * ccso_stride + c] = ref_buffer[r * ref_stride + c]; - } + av2_copy_array(src_cpy, src_buffer, pic_width); + src_buffer += src_stride; + + av2_copy_array(rec_cpy, rec_buffer, pic_width); + rec_buffer += rec_stride; + + rec_cpy += ccso_stride; + src_cpy += ccso_stride; } } ccso_search(cm, xd, cpi->td.mb.rdmult, ext_rec_y, rec_uv, org_uv, @@ -3154,10 +3156,10 @@ static void cdef_restoration_frame(AV2_COMP *cpi, AV2_COMMON *cm, mismatch_record_frame(&cm->cur_frame->buf, num_planes, 2); #endif avm_free(ext_rec_y); - } - for (int pli = 0; pli < num_planes; pli++) { - avm_free(rec_uv[pli]); - avm_free(org_uv[pli]); + for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + avm_free(rec_uv[plane]); + avm_free(org_uv[plane]); + } } if (use_gdf) { diff --git a/av2/encoder/pickccso.c b/av2/encoder/pickccso.c index a5898421a8..2c2170e435 100644 --- a/av2/encoder/pickccso.c +++ b/av2/encoder/pickccso.c @@ -27,17 +27,20 @@ typedef struct { uint8_t final_band_log2; - int8_t best_filter_offset[CCSO_NUM_COMPONENTS][CCSO_BAND_NUM * 16]; - int8_t final_filter_offset[CCSO_NUM_COMPONENTS][CCSO_BAND_NUM * 16]; - bool best_filter_enabled[CCSO_NUM_COMPONENTS]; - bool final_filter_enabled[CCSO_NUM_COMPONENTS]; - uint8_t final_ext_filter_support[CCSO_NUM_COMPONENTS]; - int final_reuse_ccso[CCSO_NUM_COMPONENTS]; - int final_sb_reuse_ccso[CCSO_NUM_COMPONENTS]; - uint8_t final_scale_idx[CCSO_NUM_COMPONENTS]; - uint8_t final_quant_idx[CCSO_NUM_COMPONENTS]; - uint8_t final_ccso_bo_only[CCSO_NUM_COMPONENTS]; + int8_t best_filter_offset[CCSO_BAND_NUM * 16]; + int8_t final_filter_offset[CCSO_BAND_NUM * 16]; + bool best_filter_enabled; + bool final_filter_enabled; + uint8_t final_ext_filter_support; + int final_reuse_ccso; + int final_sb_reuse_ccso; + uint8_t final_scale_idx; + uint8_t final_quant_idx; + uint8_t final_ccso_bo_only; + uint16_t *temp_rec_uv_buf; + uint8_t *src_cls0; + uint8_t *src_cls1; int chroma_error[CCSO_BAND_NUM * 16]; int chroma_count[CCSO_BAND_NUM * 16]; int *total_class_err[CCSO_INPUT_INTERVAL][CCSO_INPUT_INTERVAL][CCSO_BAND_NUM]; @@ -57,8 +60,21 @@ typedef struct { [CCSO_BAND_NUM]; int *reuse_total_class_cnt[CCSO_INPUT_INTERVAL][CCSO_INPUT_INTERVAL] [CCSO_BAND_NUM]; + + // Single backing allocations of arrays above. + int *class_err_slab; // backs total_class_err + int *class_cnt_slab; // backs total_class_cnt + int *class_err_bo_slab; // backs total_class_err + int *class_cnt_bo_slab; // backs total_class_cnt + int *reuse_class_err_slab; // backs reuse_total_class_err + int *reuse_class_cnt_slab; // backs reuse_total_class_cnt } CcsoCtx; +// Number of (d0, d1, band) combinations spanned by total_class_err/cnt and +// reuse_total_class_err/cnt. +#define CCSO_CLASS_STATS_ENTRIES \ + (CCSO_INPUT_INTERVAL * CCSO_INPUT_INTERVAL * CCSO_BAND_NUM) + const int ccso_offset[8] = { -10, -7, -3, -1, 0, 1, 3, 7 }; const int ccso_scale[4] = { 1, 2, 3, 4 }; @@ -232,16 +248,10 @@ static void ccso_pre_compute_class_err( // Initialize total class error and count for each band to reuse if (reuse_ccso_class_info(cm)) { - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - av2_zero_array(ctx->reuse_total_class_err[d0][d1][band_num], - sb_count); - av2_zero_array(ctx->reuse_total_class_cnt[d0][d1][band_num], - sb_count); - } - } - } + av2_zero_array(ctx->reuse_total_class_err[0][0][0], + CCSO_CLASS_STATS_ENTRIES * sb_count); + av2_zero_array(ctx->reuse_total_class_cnt[0][0][0], + CCSO_CLASS_STATS_ENTRIES * sb_count); } for (int y = 0; y < pic_height; y += blk_size_y) { @@ -314,16 +324,12 @@ static void ccso_pre_compute_class_err( // Store the computed error and count to reuse the same for a given band if (reuse_ccso_class_info(cm)) { - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - av2_copy_array(ctx->reuse_total_class_err[d0][d1][band_num], - ctx->total_class_err[d0][d1][band_num], fb_idx); - av2_copy_array(ctx->reuse_total_class_cnt[d0][d1][band_num], - ctx->total_class_cnt[d0][d1][band_num], fb_idx); - } - } - } + av2_copy_array(ctx->reuse_total_class_err[0][0][0], + ctx->total_class_err[0][0][0], + CCSO_CLASS_STATS_ENTRIES * sb_count); + av2_copy_array(ctx->reuse_total_class_cnt[0][0][0], + ctx->total_class_cnt[0][0][0], + CCSO_CLASS_STATS_ENTRIES * sb_count); } } @@ -677,24 +683,22 @@ static void compute_distortion( const AV2_COMMON *cm, const int subsampling_y, const int subsampling_x, const int height, const int width, uint64_t *distortion_buf, const int distortion_buf_stride, uint64_t *total_distortion) { - int unit_log2_x = log2_proc_unit_size > log2_filter_unit_size_x - ? log2_filter_unit_size_x - : log2_proc_unit_size; - int unit_log2_y = log2_proc_unit_size > log2_filter_unit_size_y - ? log2_filter_unit_size_y - : log2_proc_unit_size; + const int unit_log2_x = AVMMIN(log2_proc_unit_size, log2_filter_unit_size_x); + const int unit_log2_y = AVMMIN(log2_proc_unit_size, log2_filter_unit_size_y); const int unit_size_x = 1 << (unit_log2_x); const int unit_size_y = 1 << (unit_log2_y); const int blk_size_x = (1 << log2_filter_unit_size_x); const int blk_size_y = (1 << log2_filter_unit_size_y); - for (int y = 0; y < height; y += (1 << log2_filter_unit_size_y)) { - for (int x = 0; x < width; x += (1 << log2_filter_unit_size_x)) { + + *total_distortion = 0; + for (int y = 0; y < height; y += blk_size_y) { + for (int x = 0; x < width; x += blk_size_x) { + const int h_scale = MI_SIZE_LOG2 - subsampling_x; + const int v_scale = MI_SIZE_LOG2 - subsampling_y; // check BRU skip in entire CCSO FSU - if (bru_is_fu_skipped_mbmi( - cm, x >> (MI_SIZE_LOG2 - subsampling_x), - y >> (MI_SIZE_LOG2 - subsampling_y), - blk_size_x >> (MI_SIZE_LOG2 - subsampling_x), - blk_size_y >> (MI_SIZE_LOG2 - subsampling_y))) { + if (bru_is_fu_skipped_mbmi(cm, x >> h_scale, y >> v_scale, + blk_size_x >> h_scale, + blk_size_y >> v_scale)) { distortion_buf[(y >> log2_filter_unit_size_y) * distortion_buf_stride + (x >> log2_filter_unit_size_x)] = 0; continue; @@ -703,14 +707,13 @@ static void compute_distortion( uint64_t sb_ssd = 0; const uint16_t *org_unit = org; const uint16_t *rec_unit = rec16; - const int y_end = AVMMIN(height - y, (1 << log2_filter_unit_size_y)); - const int x_end = AVMMIN(width - x, (1 << log2_filter_unit_size_x)); + const int y_end = AVMMIN(height - y, blk_size_y); + const int x_end = AVMMIN(width - x, blk_size_x); for (int unit_y = 0; unit_y < y_end; unit_y += unit_size_y) { for (int unit_x = 0; unit_x < x_end; unit_x += unit_size_x) { // skip if unit skip const int mbmi_idx = get_mi_grid_idx( - &cm->mi_params, (y + unit_y) >> (MI_SIZE_LOG2 - subsampling_y), - (x + unit_x) >> (MI_SIZE_LOG2 - subsampling_x)); + &cm->mi_params, (y + unit_y) >> v_scale, (x + unit_x) >> h_scale); if (cm->bru.enabled && cm->mi_params.mi_grid_base[mbmi_idx]->sb_active_mode != BRU_ACTIVE_SB) { @@ -725,10 +728,9 @@ static void compute_distortion( org_unit += (org_stride << unit_log2_x); rec_unit += (rec_stride << unit_log2_x); } - const uint64_t ssd = sb_ssd; distortion_buf[(y >> log2_filter_unit_size_y) * distortion_buf_stride + - (x >> log2_filter_unit_size_x)] = ssd; - *total_distortion += ssd; + (x >> log2_filter_unit_size_x)] = sb_ssd; + *total_distortion += sb_ssd; } org += (org_stride << log2_filter_unit_size_y); rec16 += (rec_stride << log2_filter_unit_size_y); @@ -1095,6 +1097,120 @@ static void derive_lut_offset(int8_t *temp_filter_offset, int scale_idx, } } +// Allocates buffers required for ccso parameter rdo search +static void ccso_alloc_search_buffers(AV2_COMMON *cm, MACROBLOCKD *xd, + CcsoCtx *ctx, int sb_count) { + int *p; + + CHECK_MEM_ERROR(cm, ctx->class_err_slab, + avm_malloc(sizeof(*ctx->class_err_slab) * + CCSO_CLASS_STATS_ENTRIES * sb_count)); + p = ctx->class_err_slab; + for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; ++d0) + for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; ++d1) + for (int band_num = 0; band_num < CCSO_BAND_NUM; + ++band_num, p += sb_count) + ctx->total_class_err[d0][d1][band_num] = p; + + CHECK_MEM_ERROR(cm, ctx->class_cnt_slab, + avm_malloc(sizeof(*ctx->class_cnt_slab) * + CCSO_CLASS_STATS_ENTRIES * sb_count)); + p = ctx->class_cnt_slab; + for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; ++d0) + for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; ++d1) + for (int band_num = 0; band_num < CCSO_BAND_NUM; + ++band_num, p += sb_count) + ctx->total_class_cnt[d0][d1][band_num] = p; + + CHECK_MEM_ERROR( + cm, ctx->class_err_bo_slab, + avm_malloc(sizeof(*ctx->class_err_bo_slab) * CCSO_BAND_NUM * sb_count)); + p = ctx->class_err_bo_slab; + for (int band_num = 0; band_num < CCSO_BAND_NUM; ++band_num, p += sb_count) + ctx->total_class_err_bo[band_num] = p; + + CHECK_MEM_ERROR( + cm, ctx->class_cnt_bo_slab, + avm_malloc(sizeof(*ctx->class_cnt_bo_slab) * CCSO_BAND_NUM * sb_count)); + p = ctx->class_cnt_bo_slab; + for (int band_num = 0; band_num < CCSO_BAND_NUM; ++band_num, p += sb_count) + ctx->total_class_cnt_bo[band_num] = p; + + if (reuse_ccso_class_info(cm)) { + CHECK_MEM_ERROR(cm, ctx->reuse_class_err_slab, + avm_malloc(sizeof(*ctx->reuse_class_err_slab) * + CCSO_CLASS_STATS_ENTRIES * sb_count)); + p = ctx->reuse_class_err_slab; + for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; ++d0) + for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; ++d1) + for (int band_num = 0; band_num < CCSO_BAND_NUM; + ++band_num, p += sb_count) + ctx->reuse_total_class_err[d0][d1][band_num] = p; + + CHECK_MEM_ERROR(cm, ctx->reuse_class_cnt_slab, + avm_malloc(sizeof(*ctx->reuse_class_cnt_slab) * + CCSO_CLASS_STATS_ENTRIES * sb_count)); + p = ctx->reuse_class_cnt_slab; + for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; ++d0) + for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; ++d1) + for (int band_num = 0; band_num < CCSO_BAND_NUM; + ++band_num, p += sb_count) + ctx->reuse_total_class_cnt[d0][d1][band_num] = p; + } + + CHECK_MEM_ERROR(cm, ctx->unfiltered_dist_block, + avm_malloc(sb_count * sizeof(*ctx->unfiltered_dist_block))); + CHECK_MEM_ERROR(cm, ctx->training_dist_block, + avm_malloc(sb_count * sizeof(*ctx->training_dist_block))); + + CHECK_MEM_ERROR(cm, ctx->filter_control, + avm_malloc(sb_count * sizeof(*ctx->filter_control))); + CHECK_MEM_ERROR(cm, ctx->best_filter_control, + avm_malloc(sb_count * sizeof(*ctx->best_filter_control))); + CHECK_MEM_ERROR(cm, ctx->final_filter_control, + avm_malloc(sb_count * sizeof(*ctx->final_filter_control))); + + CHECK_MEM_ERROR(cm, ctx->temp_rec_uv_buf, + avm_malloc(xd->plane[AVM_PLANE_Y].dst.height * + ctx->ccso_stride * sizeof(*ctx->temp_rec_uv_buf))); + CHECK_MEM_ERROR(cm, ctx->src_cls0, + avm_malloc(xd->plane[AVM_PLANE_Y].dst.height * + ctx->ccso_stride * sizeof(*ctx->src_cls0))); + CHECK_MEM_ERROR(cm, ctx->src_cls1, + avm_malloc(xd->plane[AVM_PLANE_Y].dst.height * + ctx->ccso_stride * sizeof(*ctx->src_cls1))); +} + +// Frees ccso rdo search buffers. +static void ccso_free_search_buffers(CcsoCtx *ctx) { + avm_free(ctx->class_err_slab); + avm_free(ctx->class_cnt_slab); + avm_free(ctx->class_err_bo_slab); + avm_free(ctx->class_cnt_bo_slab); + avm_free(ctx->reuse_class_err_slab); + avm_free(ctx->reuse_class_cnt_slab); + avm_free(ctx->unfiltered_dist_block); + avm_free(ctx->training_dist_block); + avm_free(ctx->filter_control); + avm_free(ctx->best_filter_control); + avm_free(ctx->final_filter_control); + avm_free(ctx->temp_rec_uv_buf); + avm_free(ctx->src_cls0); + avm_free(ctx->src_cls1); +} + +// Writes val into the MB_MODE_INFO field that stores CCSO's per-block +// enable state for `plane`. +static void set_mbmi_ccso_blk(MB_MODE_INFO *mbmi, int plane, uint8_t val) { + if (plane == AVM_PLANE_Y) { + mbmi->ccso_blk_y = val; + } else if (plane == AVM_PLANE_U) { + mbmi->ccso_blk_u = val; + } else { + mbmi->ccso_blk_v = val; + } +} + /* Derive the look-up table for a color component */ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, MACROBLOCKD *xd, const uint16_t *org_uv, @@ -1108,85 +1224,34 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, , int early_terminate_ccso_search) { const CommonModeInfoParams *const mi_params = &cm->mi_params; + const int ss_x = xd->plane[plane].subsampling_x; + const int ss_y = xd->plane[plane].subsampling_y; + const int ccso_blk_size = get_ccso_unit_size_log2_adaptive_tile( cm, cm->mib_size_log2 + MI_SIZE_LOG2, CCSO_BLK_SIZE); - const int log2_filter_unit_size_y = - ccso_blk_size - xd->plane[plane].subsampling_y; - const int log2_filter_unit_size_x = - ccso_blk_size - xd->plane[plane].subsampling_x; cm->ccso_info.ccso_blk_size = ccso_blk_size; + const int log2_filter_unit_size_y = ccso_blk_size - ss_y; + const int log2_filter_unit_size_x = ccso_blk_size - ss_x; + const int ccso_nvfb = - ((mi_params->mi_rows >> xd->plane[plane].subsampling_y) + - (1 << log2_filter_unit_size_y >> 2) - 1) / + ((mi_params->mi_rows >> ss_y) + (1 << log2_filter_unit_size_y >> 2) - 1) / (1 << log2_filter_unit_size_y >> 2); const int ccso_nhfb = - ((mi_params->mi_cols >> xd->plane[plane].subsampling_x) + - (1 << log2_filter_unit_size_x >> 2) - 1) / + ((mi_params->mi_cols >> ss_x) + (1 << log2_filter_unit_size_x >> 2) - 1) / (1 << log2_filter_unit_size_x >> 2); const int sb_count = ccso_nvfb * ccso_nhfb; - // Use cropped height for derivation of ccso filter coefficients at encoder + + // Use cropped dimensions for derivation of ccso filter coeffs at encoder const int pic_height_c = xd->plane[plane].dst.crop_height; - // Use cropped width for derivation of ccso filter coefficients at encoder const int pic_width_c = xd->plane[plane].dst.crop_width; - uint16_t *temp_rec_uv_buf; - ctx->unfiltered_dist_frame = 0; - ctx->unfiltered_dist_block = - avm_malloc(sizeof(*ctx->unfiltered_dist_block) * sb_count); - memset(ctx->unfiltered_dist_block, 0, - sizeof(*ctx->unfiltered_dist_block) * sb_count); - ctx->training_dist_block = - avm_malloc(sizeof(*ctx->training_dist_block) * sb_count); - memset(ctx->training_dist_block, 0, - sizeof(*ctx->training_dist_block) * sb_count); - ctx->filter_control = avm_malloc(sizeof(*ctx->filter_control) * sb_count); - memset(ctx->filter_control, 0, sizeof(*ctx->filter_control) * sb_count); - ctx->best_filter_control = - avm_malloc(sizeof(*ctx->best_filter_control) * sb_count); - memset(ctx->best_filter_control, 0, - sizeof(*ctx->best_filter_control) * sb_count); - ctx->final_filter_control = - avm_malloc(sizeof(*ctx->final_filter_control) * sb_count); - memset(ctx->final_filter_control, 0, - sizeof(*ctx->final_filter_control) * sb_count); - temp_rec_uv_buf = avm_malloc(sizeof(*temp_rec_uv_buf) * - xd->plane[0].dst.height * ctx->ccso_stride); - const int ss_x = xd->plane[plane].subsampling_x; - const int ss_y = xd->plane[plane].subsampling_y; + const int sb_unit_size_x = (1 << log2_filter_unit_size_x >> (MI_SIZE_LOG2 - ss_x)); const int sb_unit_size_y = (1 << log2_filter_unit_size_y >> (MI_SIZE_LOG2 - ss_y)); - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - ctx->total_class_err[d0][d1][band_num] = avm_malloc( - sizeof(*ctx->total_class_err[d0][d1][band_num]) * sb_count); - ctx->total_class_cnt[d0][d1][band_num] = avm_malloc( - sizeof(*ctx->total_class_cnt[d0][d1][band_num]) * sb_count); - } - } - } - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - ctx->total_class_err_bo[band_num] = - avm_malloc(sizeof(*ctx->total_class_err_bo[band_num]) * sb_count); - ctx->total_class_cnt_bo[band_num] = - avm_malloc(sizeof(*ctx->total_class_cnt_bo[band_num]) * sb_count); - } - // Allocate memory required to store class error and class count - // for reusing the same for a given band - if (reuse_ccso_class_info(cm)) { - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - ctx->reuse_total_class_err[d0][d1][band_num] = avm_malloc( - sizeof(*ctx->reuse_total_class_err[d0][d1][band_num]) * sb_count); - ctx->reuse_total_class_cnt[d0][d1][band_num] = avm_malloc( - sizeof(*ctx->reuse_total_class_cnt[d0][d1][band_num]) * sb_count); - } - } - } - } + + ccso_alloc_search_buffers(cm, xd, ctx, sb_count); compute_distortion(org_uv, ctx->ccso_stride, rec_uv, ctx->ccso_stride, log2_filter_unit_size_y, log2_filter_unit_size_x, @@ -1194,71 +1259,69 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, ss_y, ss_x, pic_height_c, pic_width_c, ctx->unfiltered_dist_block, ccso_nhfb, &ctx->unfiltered_dist_frame); - ctx->unfiltered_dist_frame = ROUND_POWER_OF_TWO(ctx->unfiltered_dist_frame, (xd->bd - 8) * 2); const uint64_t best_unfiltered_cost = RDCOST(rdmult, av2_cost_literal(1), ctx->unfiltered_dist_frame * 16); - uint64_t best_filtered_cost; - uint64_t final_filtered_cost = UINT64_MAX; + + const int total_scale_idx = 4; + const int total_filter_support = 7; + const int total_quant_idx = 4; + const int total_edge_classifier = 2; + const int total_band_log2_plus1 = 4; + int best_reuse_ccso = 0; int best_sb_reuse_ccso = 0; int best_ref_idx = -1; - int final_ref_idx = -1; - const int total_scale_idx = 4; - uint8_t best_edge_classifier = 0; + uint64_t best_filtered_cost; + + int final_ref_idx = -1; uint8_t final_edge_classifier = 0; - const int total_edge_classifier = 2; + uint64_t final_filtered_cost = UINT64_MAX; + int8_t filter_offset[CCSO_BAND_NUM * 16]; - const int total_filter_support = 7; - const int total_quant_idx = 4; - const int total_band_log2_plus1 = 4; - uint8_t frame_bits = 1; - uint8_t frame_bits_bo_only = 1; // enabling flag - frame_bits_bo_only += 1; // bo only flag - frame_bits += 1; // bo only flag - frame_bits += 2; // quant step size - frame_bits += 2; // scale index - frame_bits += 3; // filter support index - frame_bits += 1; // edge_clf - frame_bits += 2; // band number log2 - frame_bits_bo_only += 3; // band number log2 - frame_bits_bo_only += 2; // scale index - uint8_t *src_cls0; - uint8_t *src_cls1; - src_cls0 = avm_malloc(sizeof(*src_cls0) * xd->plane[0].dst.height * - xd->plane[0].dst.width); - src_cls1 = avm_malloc(sizeof(*src_cls1) * xd->plane[0].dst.height * - xd->plane[0].dst.width); - memset(src_cls0, 0, - sizeof(*src_cls0) * xd->plane[0].dst.height * xd->plane[0].dst.width); - memset(src_cls1, 0, - sizeof(*src_cls1) * xd->plane[0].dst.height * xd->plane[0].dst.width); - const int is_intra_frame = frame_is_intra_only(cm); + uint8_t frame_bits = 1; // ccso_planes[ plane ] + frame_bits += 1; // ccso_bo_only[ plane ] + frame_bits += 2; // ccso_scale_idx[ plane ] + frame_bits += 2; // ccso_quant_idx[ plane ] + frame_bits += 3; // ccso_ext_filter[ plane ] + frame_bits += 1; // ccso_edge_clf[ plane ] + frame_bits += 2; // ccso_max_band_log2[ plane ] + + uint8_t frame_bits_bo_only = 1; // ccso_planes[ plane ] + frame_bits_bo_only += 1; // ccso_bo_only[ plane ] + frame_bits_bo_only += 2; // ccso_scale_idx[ plane ] + frame_bits_bo_only += 3; // ccso_max_band_log2[ plane ] + int check_ccso = 0; + const bool is_frame_intra_or_switch = + frame_is_intra_only(cm) || frame_is_sframe(cm); + const int num_ref_frames = + (is_frame_intra_or_switch || error_resilient_frame_seen) + ? 0 + : cm->ref_frames_info.num_total_refs; + + if (!is_frame_intra_or_switch) { + frame_bits += 1; // reuse_ccso[ plane ] + frame_bits += 1; // sb_reuse_ccso[ plane ] + + frame_bits_bo_only += 1; // reuse_ccso[ plane ] + frame_bits_bo_only += 1; // sb_reuse_ccso[ plane ] + + check_ccso = 1; + } RefCntBuffer *ref_frame = NULL; CcsoInfo *ref_frame_ccso_info = NULL; - int init_shift_bits = -1; - const int num_ref_frames = (frame_is_intra_only(cm) || frame_is_sframe(cm) || - error_resilient_frame_seen) - ? 0 - : cm->ref_frames_info.num_total_refs; + cm->cur_frame->ccso_info.ccso_enable[plane] = false; - cm->cur_frame->ccso_info.ccso_enable[plane] = 0; memset(cm->cur_frame->ccso_info.sb_filter_control[plane], 0, sizeof(*cm->cur_frame->ccso_info.sb_filter_control[plane]) * sb_count); - if (!is_intra_frame) { - frame_bits += 2; - frame_bits_bo_only += 2; - check_ccso = 1; - } - for (int scale_idx = 0; scale_idx < total_scale_idx; ++scale_idx) { for (uint8_t ccso_bo_only = 0; ccso_bo_only < 2; ccso_bo_only++) { int num_filter_iter = ccso_bo_only ? 1 : total_filter_support; @@ -1277,10 +1340,10 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, if (!ccso_bo_only) { ccso_derive_src_info( cm, xd, plane, ext_rec_y, - cm->mib_size_log2 - (ss_x > ss_y ? ss_x : ss_y) + - MI_SIZE_LOG2, - quant_sz[scale_idx][quant_idx], ext_filter_support, src_cls0, - src_cls1, edge_clf, ctx->ccso_stride, ctx->ccso_stride_ext); + cm->mib_size_log2 - AVMMAX(ss_x, ss_y) + MI_SIZE_LOG2, + quant_sz[scale_idx][quant_idx], ext_filter_support, + ctx->src_cls0, ctx->src_cls1, edge_clf, ctx->ccso_stride, + ctx->ccso_stride_ext); // reset so as to populate ccso_pre_compute_class_err data and // reuse the same init_shift_bits = -1; @@ -1298,18 +1361,16 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, const int max_band = 1 << (num_band_iter - 1); for (int d0 = 0; d0 < max_edge_interval; d0++) { for (int d1 = 0; d1 < max_edge_interval; d1++) { - for (int band_num = 0; band_num < max_band; band_num++) { - av2_zero_array(ctx->total_class_err[d0][d1][band_num], - sb_count); - av2_zero_array(ctx->total_class_cnt[d0][d1][band_num], - sb_count); - } + av2_zero_array(ctx->total_class_err[d0][d1][0], + max_band * sb_count); + av2_zero_array(ctx->total_class_cnt[d0][d1][0], + max_band * sb_count); } } ccso_pre_compute_class_err( ctx, xd, plane, cm, cm->mib_size_log2 - AVMMAX(ss_x, ss_y) + MI_SIZE_LOG2, - ext_rec_y, org_uv, rec_uv, src_cls0, src_cls1, + ext_rec_y, org_uv, rec_uv, ctx->src_cls0, ctx->src_cls1, init_shift_bits, init_shift_bits); } @@ -1318,12 +1379,12 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, const int shift_bits = cm->seq_params.bit_depth - max_band_log2; const int max_band = 1 << max_band_log2; if (ccso_bo_only) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - memset(ctx->total_class_err_bo[band_num], 0, - sizeof(*ctx->total_class_err_bo[band_num]) * sb_count); - memset(ctx->total_class_cnt_bo[band_num], 0, - sizeof(*ctx->total_class_cnt_bo[band_num]) * sb_count); - } + memset(ctx->total_class_err_bo[0], 0, + sizeof(*ctx->total_class_err_bo[0]) * CCSO_BAND_NUM * + sb_count); + memset(ctx->total_class_cnt_bo[0], 0, + sizeof(*ctx->total_class_cnt_bo[0]) * CCSO_BAND_NUM * + sb_count); ccso_pre_compute_class_err_bo( ctx, xd, plane, cm, cm->mib_size_log2 - AVMMAX(ss_x, ss_y) + MI_SIZE_LOG2, @@ -1331,14 +1392,12 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, } else { for (int d0 = 0; d0 < max_edge_interval; d0++) { for (int d1 = 0; d1 < max_edge_interval; d1++) { - for (int band_num = 0; band_num < max_band; band_num++) { - memset(ctx->total_class_err[d0][d1][band_num], 0, - sizeof(*ctx->total_class_err[d0][d1][band_num]) * - sb_count); - memset(ctx->total_class_cnt[d0][d1][band_num], 0, - sizeof(*ctx->total_class_cnt[d0][d1][band_num]) * - sb_count); - } + memset(ctx->total_class_err[d0][d1][0], 0, + sizeof(*ctx->total_class_err[d0][d1][0]) * max_band * + sb_count); + memset(ctx->total_class_cnt[d0][d1][0], 0, + sizeof(*ctx->total_class_cnt[d0][d1][0]) * max_band * + sb_count); } } if ((init_shift_bits != shift_bits) || @@ -1346,27 +1405,17 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, ccso_pre_compute_class_err( ctx, xd, plane, cm, cm->mib_size_log2 - AVMMAX(ss_x, ss_y) + MI_SIZE_LOG2, - ext_rec_y, org_uv, rec_uv, src_cls0, src_cls1, shift_bits, - init_shift_bits); + ext_rec_y, org_uv, rec_uv, ctx->src_cls0, ctx->src_cls1, + shift_bits, init_shift_bits); } else { - // When the shift_bits same as that of the initial value - // computed before the current loop starts, perform a memcpy - // directly - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; - band_num++) { - av2_copy_array( - ctx->total_class_err[d0][d1][band_num], - ctx->reuse_total_class_err[d0][d1][band_num], - sb_count); - av2_copy_array( - ctx->total_class_cnt[d0][d1][band_num], - ctx->reuse_total_class_cnt[d0][d1][band_num], - sb_count); - } - } - } + memcpy(ctx->total_class_err[0][0][0], + ctx->reuse_total_class_err[0][0][0], + sizeof(*ctx->total_class_err[0][0][0]) * + CCSO_CLASS_STATS_ENTRIES * sb_count); + memcpy(ctx->total_class_cnt[0][0][0], + ctx->reuse_total_class_cnt[0][0][0], + sizeof(*ctx->total_class_cnt[0][0][0]) * + CCSO_CLASS_STATS_ENTRIES * sb_count); } } @@ -1493,24 +1542,26 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, sizeof(filter_offset)); } } - memcpy(temp_rec_uv_buf, rec_uv, - sizeof(*temp_rec_uv_buf) * + memcpy(ctx->temp_rec_uv_buf, rec_uv, + sizeof(*ctx->temp_rec_uv_buf) * xd->plane[0].dst.height * ctx->ccso_stride); if (plane > 0) ccso_try_chroma_filter( - ctx, cm, xd, plane, ext_rec_y, temp_rec_uv_buf, - ctx->ccso_stride, filter_offset, src_cls0, - src_cls1, shift_bits, ccso_bo_only, - ctx->ccso_stride, ctx->ccso_stride_ext); + ctx, cm, xd, plane, ext_rec_y, + ctx->temp_rec_uv_buf, ctx->ccso_stride, + filter_offset, ctx->src_cls0, ctx->src_cls1, + shift_bits, ccso_bo_only, ctx->ccso_stride, + ctx->ccso_stride_ext); else ccso_try_luma_filter( - ctx, cm, xd, plane, ext_rec_y, temp_rec_uv_buf, - ctx->ccso_stride, filter_offset, src_cls0, - src_cls1, shift_bits, ccso_bo_only, - ctx->ccso_stride, ctx->ccso_stride_ext); - ctx->filtered_dist_frame = 0; + ctx, cm, xd, plane, ext_rec_y, + ctx->temp_rec_uv_buf, ctx->ccso_stride, + filter_offset, ctx->src_cls0, ctx->src_cls1, + shift_bits, ccso_bo_only, ctx->ccso_stride, + ctx->ccso_stride_ext); + compute_distortion( - org_uv, ctx->ccso_stride, temp_rec_uv_buf, + org_uv, ctx->ccso_stride, ctx->temp_rec_uv_buf, ctx->ccso_stride, log2_filter_unit_size_y, log2_filter_unit_size_x, cm->mib_size_log2 - AVMMAX(ss_x, ss_y) + @@ -1566,9 +1617,9 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, best_filtered_cost = cur_total_cost; best_reuse_ccso = reuse_ccso_idx; best_sb_reuse_ccso = sb_reuse_idx; - ctx->best_filter_enabled[plane] = ccso_enable; + ctx->best_filter_enabled = ccso_enable; best_ref_idx = ref_idx - 1; - memcpy(ctx->best_filter_offset[plane], filter_offset, + memcpy(ctx->best_filter_offset, filter_offset, sizeof(filter_offset)); best_edge_classifier = edge_clf; memcpy(ctx->best_filter_control, ctx->filter_control, @@ -1590,18 +1641,16 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, if (best_filtered_cost < final_filtered_cost) { final_filtered_cost = best_filtered_cost; - ctx->final_reuse_ccso[plane] = best_reuse_ccso; - ctx->final_sb_reuse_ccso[plane] = best_sb_reuse_ccso; - ctx->final_filter_enabled[plane] = - ctx->best_filter_enabled[plane]; - ctx->final_quant_idx[plane] = quant_idx; - ctx->final_scale_idx[plane] = scale_idx; - ctx->final_ext_filter_support[plane] = ext_filter_support; - ctx->final_ccso_bo_only[plane] = ccso_bo_only; + ctx->final_reuse_ccso = best_reuse_ccso; + ctx->final_sb_reuse_ccso = best_sb_reuse_ccso; + ctx->final_filter_enabled = ctx->best_filter_enabled; + ctx->final_quant_idx = quant_idx; + ctx->final_scale_idx = scale_idx; + ctx->final_ext_filter_support = ext_filter_support; + ctx->final_ccso_bo_only = ccso_bo_only; final_ref_idx = best_ref_idx; - memcpy(ctx->final_filter_offset[plane], - ctx->best_filter_offset[plane], - sizeof(ctx->best_filter_offset[plane])); + memcpy(ctx->final_filter_offset, ctx->best_filter_offset, + sizeof(ctx->best_filter_offset)); ctx->final_band_log2 = max_band_log2; final_edge_classifier = best_edge_classifier; memcpy(ctx->final_filter_control, ctx->best_filter_control, @@ -1627,7 +1676,7 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, } if (cm->ccso_info.ccso_enable[plane] && - (ctx->final_reuse_ccso[plane] || ctx->final_sb_reuse_ccso[plane])) { + (ctx->final_reuse_ccso || ctx->final_sb_reuse_ccso)) { assert(get_ref_frame_buf(cm, final_ref_idx) != NULL); ref_frame_ccso_info = &get_ref_frame_buf(cm, final_ref_idx)->ccso_info; cm->ccso_info.ccso_ref_idx[plane] = final_ref_idx; @@ -1635,16 +1684,14 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, cm->ccso_info.sb_reuse_ccso[plane] = false; cm->ccso_info.reuse_ccso[plane] = false; - cm->cur_frame->ccso_info.subsampling_y[plane] = - xd->plane[plane].subsampling_y; - cm->cur_frame->ccso_info.subsampling_x[plane] = - xd->plane[plane].subsampling_x; + cm->cur_frame->ccso_info.subsampling_y[plane] = ss_y; + cm->cur_frame->ccso_info.subsampling_x[plane] = ss_x; if (cm->ccso_info.ccso_enable[plane]) { cm->cur_frame->ccso_info.ccso_enable[plane] = 1; cm->cur_frame->ccso_info.ccso_blk_size = ccso_blk_size; cm->cur_frame->ccso_info.reuse_root_ref[plane] = cm->current_frame.display_order_hint; - cm->ccso_info.sb_reuse_ccso[plane] = ctx->final_sb_reuse_ccso[plane]; + cm->ccso_info.sb_reuse_ccso[plane] = ctx->final_sb_reuse_ccso; const BLOCK_SIZE bsize = xd->mi[0]->sb_type[PLANE_TYPE_Y]; const int bw = mi_size_wide[bsize]; const int bh = mi_size_high[bsize]; @@ -1661,46 +1708,25 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, for (int row = y_sb; row < y_sb + step_h; row++) { for (int col = x_sb; col < x_sb + step_w; col++) { int sb_idx = row * ccso_nhfb + col; - cm->cur_frame->ccso_info.sb_filter_control[plane][sb_idx] = + const bool sb_filter_control = ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; + cm->cur_frame->ccso_info.sb_filter_control[plane][sb_idx] = + sb_filter_control; const int grid_idx_mbmi = (1 << ccso_blk_size >> MI_SIZE_LOG2) * row * mi_params->mi_stride + (1 << ccso_blk_size >> MI_SIZE_LOG2) * col; MB_MODE_INFO *const mbmi = mi_params->mi_grid_base[grid_idx_mbmi]; - if (plane == AVM_PLANE_Y) { - // for tile skip, no valid mi exist - if (cm->bru.enabled && - bru_is_fu_skipped_mbmi(cm, sb_unit_size_x * col, - sb_unit_size_y * row, f_w, f_h)) { - assert(ctx->final_filter_control[y_sb * ccso_nhfb + x_sb] == - 0); - mbmi->ccso_blk_y = 0; - } else - mbmi->ccso_blk_y = - ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; - } else if (plane == AVM_PLANE_U) { - if (cm->bru.enabled && - bru_is_fu_skipped_mbmi(cm, sb_unit_size_x * col, - sb_unit_size_y * row, f_w, f_h)) { - assert(ctx->final_filter_control[y_sb * ccso_nhfb + x_sb] == - 0); - mbmi->ccso_blk_u = 0; - } else - mbmi->ccso_blk_u = - ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; + // for tile skip, no valid mi exist + if (cm->bru.enabled && + bru_is_fu_skipped_mbmi(cm, sb_unit_size_x * col, + sb_unit_size_y * row, f_w, f_h)) { + assert(sb_filter_control == 0); + set_mbmi_ccso_blk(mbmi, plane, 0); } else { - // for tile skip, no valid mi exist - if (cm->bru.enabled && - bru_is_fu_skipped_mbmi(cm, sb_unit_size_x * col, - sb_unit_size_y * row, f_w, f_h)) { - assert(ctx->final_filter_control[y_sb * ccso_nhfb + x_sb] == - 0); - mbmi->ccso_blk_v = 0; - } else - mbmi->ccso_blk_v = - ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; + set_mbmi_ccso_blk(mbmi, plane, sb_filter_control); } + const int ccso_mib_size_y = (1 << (ccso_blk_size - MI_SIZE_LOG2)); const int ccso_mib_size_x = (1 << (ccso_blk_size - MI_SIZE_LOG2)); @@ -1714,16 +1740,8 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, k++) { const int grid_idx = get_mi_grid_idx(mi_params, mi_row + j, mi_col + k); - if (plane == AVM_PLANE_Y) { - mi_params->mi_grid_base[grid_idx]->ccso_blk_y = - ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; - } else if (plane == AVM_PLANE_U) { - mi_params->mi_grid_base[grid_idx]->ccso_blk_u = - ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; - } else { - mi_params->mi_grid_base[grid_idx]->ccso_blk_v = - ctx->final_filter_control[y_sb * ccso_nhfb + x_sb]; - } + set_mbmi_ccso_blk(mi_params->mi_grid_base[grid_idx], plane, + sb_filter_control); } } } @@ -1752,44 +1770,30 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, const int grid_idx = (1 << ccso_blk_size >> MI_SIZE_LOG2) * y_sb * mi_params->mi_stride + (1 << ccso_blk_size >> MI_SIZE_LOG2) * x_sb; - MB_MODE_INFO *const mbmi = mi_params->mi_grid_base[grid_idx]; - if (plane == AVM_PLANE_Y) { - mbmi->ccso_blk_y = - ref_frame_ccso_info - ->sb_filter_control[plane][y_sb * ccso_nhfb + x_sb]; - } else if (plane == AVM_PLANE_U) { - mbmi->ccso_blk_u = - ref_frame_ccso_info - ->sb_filter_control[plane][y_sb * ccso_nhfb + x_sb]; - } else { - mbmi->ccso_blk_v = - ref_frame_ccso_info - ->sb_filter_control[plane][y_sb * ccso_nhfb + x_sb]; - } + set_mbmi_ccso_blk( + mi_params->mi_grid_base[grid_idx], plane, + ref_frame_ccso_info + ->sb_filter_control[plane][y_sb * ccso_nhfb + x_sb]); } } } - cm->ccso_info.reuse_ccso[plane] = ctx->final_reuse_ccso[plane]; + cm->ccso_info.reuse_ccso[plane] = ctx->final_reuse_ccso; if (!cm->ccso_info.reuse_ccso[plane]) { - memcpy(cm->ccso_info.filter_offset[plane], - ctx->final_filter_offset[plane], - sizeof(ctx->final_filter_offset[plane])); - cm->ccso_info.quant_idx[plane] = ctx->final_quant_idx[plane]; - cm->ccso_info.scale_idx[plane] = ctx->final_scale_idx[plane]; - cm->ccso_info.ext_filter_support[plane] = - ctx->final_ext_filter_support[plane]; - cm->ccso_info.ccso_bo_only[plane] = ctx->final_ccso_bo_only[plane]; + memcpy(cm->ccso_info.filter_offset[plane], ctx->final_filter_offset, + sizeof(ctx->final_filter_offset)); + cm->ccso_info.quant_idx[plane] = ctx->final_quant_idx; + cm->ccso_info.scale_idx[plane] = ctx->final_scale_idx; + cm->ccso_info.ext_filter_support[plane] = ctx->final_ext_filter_support; + cm->ccso_info.ccso_bo_only[plane] = ctx->final_ccso_bo_only; cm->ccso_info.max_band_log2[plane] = ctx->final_band_log2; cm->ccso_info.edge_clf[plane] = final_edge_classifier; memcpy(cm->cur_frame->ccso_info.filter_offset[plane], - ctx->final_filter_offset[plane], - sizeof(ctx->final_filter_offset[plane])); - cm->cur_frame->ccso_info.quant_idx[plane] = ctx->final_quant_idx[plane]; - cm->cur_frame->ccso_info.scale_idx[plane] = ctx->final_scale_idx[plane]; + ctx->final_filter_offset, sizeof(ctx->final_filter_offset)); + cm->cur_frame->ccso_info.quant_idx[plane] = ctx->final_quant_idx; + cm->cur_frame->ccso_info.scale_idx[plane] = ctx->final_scale_idx; cm->cur_frame->ccso_info.ext_filter_support[plane] = - ctx->final_ext_filter_support[plane]; - cm->cur_frame->ccso_info.ccso_bo_only[plane] = - ctx->final_ccso_bo_only[plane]; + ctx->final_ext_filter_support; + cm->cur_frame->ccso_info.ccso_bo_only[plane] = ctx->final_ccso_bo_only; cm->cur_frame->ccso_info.max_band_log2[plane] = ctx->final_band_log2; cm->cur_frame->ccso_info.edge_clf[plane] = final_edge_classifier; } else { @@ -1803,101 +1807,51 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, cm->cur_frame->ccso_info.reuse_root_ref[plane] = ref_frame_ccso_info->reuse_root_ref[plane]; } - } else { - cm->cur_frame->ccso_info.ccso_enable[plane] = 0; - } - avm_free(ctx->unfiltered_dist_block); - avm_free(ctx->training_dist_block); - avm_free(ctx->filter_control); - avm_free(ctx->final_filter_control); - avm_free(temp_rec_uv_buf); - avm_free(ctx->best_filter_control); - avm_free(src_cls0); - avm_free(src_cls1); - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - avm_free(ctx->total_class_err[d0][d1][band_num]); - avm_free(ctx->total_class_cnt[d0][d1][band_num]); - } - } - } - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - avm_free(ctx->total_class_err_bo[band_num]); - avm_free(ctx->total_class_cnt_bo[band_num]); - } - if (reuse_ccso_class_info(cm)) { - for (int d0 = 0; d0 < CCSO_INPUT_INTERVAL; d0++) { - for (int d1 = 0; d1 < CCSO_INPUT_INTERVAL; d1++) { - for (int band_num = 0; band_num < CCSO_BAND_NUM; band_num++) { - avm_free(ctx->reuse_total_class_err[d0][d1][band_num]); - avm_free(ctx->reuse_total_class_cnt[d0][d1][band_num]); - } - } - } } + ccso_free_search_buffers(ctx); } /* Derive the look-up table for a frame */ void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, - const uint16_t *ext_rec_y, uint16_t *rec_uv[3], - uint16_t *org_uv[3], bool error_resilient_frame_seen + const uint16_t *ext_rec_y, uint16_t *rec_uv[MAX_MB_PLANE], + uint16_t *org_uv[MAX_MB_PLANE], bool error_resilient_frame_seen #if CONFIG_ENTROPY_STATS , ThreadData *td #endif , int early_terminate_ccso_search) { - int rdmult_weight = clamp(cm->quant_params.base_qindex >> 3, 1, 37); - int64_t rdmult_temp = (int64_t)rdmult * (int64_t)rdmult_weight; - if (rdmult_temp >= INT_MAX) { - cm->ccso_info.ccso_frame_flag = false; - cm->ccso_info.ccso_enable[0] = cm->ccso_info.ccso_enable[1] = - cm->ccso_info.ccso_enable[2] = 0; - for (int plane = 0; plane < av2_num_planes(cm); plane++) { - cm->cur_frame->ccso_info.ccso_enable[plane] = 0; + const int num_planes = av2_num_planes(cm); + const int rdmult_weight = clamp(cm->quant_params.base_qindex >> 3, 1, 37); + + cm->ccso_info.ccso_frame_flag = false; + if ((int64_t)rdmult * rdmult_weight >= INT_MAX) { + for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + cm->cur_frame->ccso_info.ccso_enable[plane] = false; + cm->ccso_info.ccso_enable[plane] = false; cm->ccso_info.sb_reuse_ccso[plane] = false; cm->ccso_info.reuse_ccso[plane] = false; } - return; - } - const int num_planes = av2_num_planes(cm); - av2_setup_dst_planes(xd->plane, &cm->cur_frame->buf, 0, 0, 0, num_planes, - NULL); - - CcsoCtx *const ctx = avm_calloc(1, sizeof(CcsoCtx)); - ctx->ccso_stride = xd->plane[0].dst.width; - ctx->ccso_stride_ext = xd->plane[0].dst.width + (CCSO_PADDING_SIZE << 1); - derive_ccso_filter(ctx, cm, AVM_PLANE_Y, xd, org_uv[AVM_PLANE_Y], ext_rec_y, - rec_uv[AVM_PLANE_Y], rdmult, error_resilient_frame_seen -#if CONFIG_ENTROPY_STATS - , - td -#endif - , - early_terminate_ccso_search); - - cm->ccso_info.ccso_frame_flag = cm->ccso_info.ccso_enable[0]; - if (num_planes > 1) { - rdmult = (rdmult * 7) >> 3; - derive_ccso_filter(ctx, cm, AVM_PLANE_U, xd, org_uv[AVM_PLANE_U], ext_rec_y, - rec_uv[AVM_PLANE_U], rdmult, error_resilient_frame_seen -#if CONFIG_ENTROPY_STATS - , - td -#endif - , - early_terminate_ccso_search); - derive_ccso_filter(ctx, cm, AVM_PLANE_V, xd, org_uv[AVM_PLANE_V], ext_rec_y, - rec_uv[AVM_PLANE_V], rdmult, error_resilient_frame_seen + } else { + CcsoCtx *ctx; + CHECK_MEM_ERROR(cm, ctx, avm_calloc(1, sizeof(*ctx))); + + av2_setup_dst_planes(xd->plane, &cm->cur_frame->buf, 0, 0, 0, num_planes, + NULL); + ctx->ccso_stride = xd->plane[AVM_PLANE_Y].dst.width; + ctx->ccso_stride_ext = ctx->ccso_stride + (CCSO_PADDING_SIZE << 1); + for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + if (plane == AVM_PLANE_U) rdmult = (rdmult * 7) >> 3; + derive_ccso_filter(ctx, cm, plane, xd, org_uv[plane], ext_rec_y, + rec_uv[plane], rdmult, error_resilient_frame_seen #if CONFIG_ENTROPY_STATS - , - td + , + td #endif - , - early_terminate_ccso_search); - cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[1]; - cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[2]; + , + early_terminate_ccso_search); + cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[plane]; + } + avm_free(ctx); } - avm_free(ctx); } diff --git a/av2/encoder/pickccso.h b/av2/encoder/pickccso.h index 2dfd41ef7f..4da43c2b19 100644 --- a/av2/encoder/pickccso.h +++ b/av2/encoder/pickccso.h @@ -23,8 +23,8 @@ extern "C" { #endif void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, - const uint16_t *ext_rec_y, uint16_t *rec_uv[3], - uint16_t *org_uv[3], bool error_resilient_frame_seen + const uint16_t *ext_rec_y, uint16_t *rec_uv[MAX_MB_PLANE], + uint16_t *org_uv[MAX_MB_PLANE], bool error_resilient_frame_seen #if CONFIG_ENTROPY_STATS , ThreadData *td From e8c204a218dbe0c77a373300d0c78cf52af49769 Mon Sep 17 00:00:00 2001 From: jadhuran Date: Mon, 17 Aug 2026 22:29:15 -0700 Subject: [PATCH 168/205] Fast warp delta search for four and six param models in warp newmv (#5272) Decouple warp parameter searches Add cost based early termination Enabled for speed levels four and above Results Anchor: a341351f73129e48ee134579154c16b80496de05 Speed 4 ``` +-------+-------+------+------+------+------+-------+ | Class | Y% | U% | V% | YUV% | ENC% | DEC% | +-------+-------+------+------+------+------+-------+ | A1 | 0.07 | 0.32 | 0.28 | 0.09 | 97.6 | 100.7 | | A2 | -0.01 | 0.23 | 0.20 | 0.00 | 95.3 | 100.1 | +-------+-------+------+------+------+------+-------+ ``` --- av2/encoder/mcomp.c | 362 ++++++++++++++++++++++++++--------- av2/encoder/mcomp.h | 3 +- av2/encoder/rdopt.c | 6 +- av2/encoder/speed_features.c | 2 + av2/encoder/speed_features.h | 3 + 5 files changed, 278 insertions(+), 98 deletions(-) diff --git a/av2/encoder/mcomp.c b/av2/encoder/mcomp.c index e7c410415d..1df9238b36 100644 --- a/av2/encoder/mcomp.c +++ b/av2/encoder/mcomp.c @@ -4921,7 +4921,7 @@ static void refine_translational_mv( WarpedMotionParams *best_wm_params, MV *best_mv, int warp_precision_idx_rate, const ModeCosts *mode_costs, int step_size, int max_coded_index, int num_neighbors, int num_mv_iterations, - uint64_t *best_rd) { + uint64_t *best_rd, const float cost_cmp_thr_speed) { static const MV neighbors[8] = { { 0, -1 }, { 1, 0 }, { 0, 1 }, { -1, 0 }, { 1, -1 }, { 1, 1 }, { -1, -1 }, { -1, 1 } }; @@ -4970,6 +4970,12 @@ static void refine_translational_mv( if (this_rd < *best_rd) { best_idx = idx; *best_wm_params = *params; + if (cost_cmp_thr_speed != 0.f) { + if (this_rd * cost_cmp_thr_speed >= *best_rd) { + *best_rd = this_rd; + break; + } + } *best_rd = this_rd; } } @@ -5056,6 +5062,140 @@ static int get_valid_model_from_warp_stats_buffer( return 0; } +uint64_t get_warp_delta_param_cost( + const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, + const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, + WarpedMotionParams *base_params, WarpedMotionParams *params, + const struct scale_factors *sf, const BLOCK_SIZE bsize, int mi_row, + int mi_col, const int_mv center_mv, MV *best_mv, int step_size, + int max_coded_index, bool can_refine_mv, const int error_per_bit, + const int warp_precision_idx_rate) { + int rate; + unsigned int sse; + uint64_t rd; + int valid; + valid = av2_is_warp_model_reduced(params); + av2_get_shear_params(params, sf); + if (valid) { + av2_set_warp_translation(mi_row, mi_col, bsize, center_mv.as_mv, params); + rate = warp_precision_idx_rate + + av2_cost_model_param(mbmi, mode_costs, step_size, max_coded_index, + base_params); + sse = compute_motion_cost(xd, cm, ms_params, bsize, best_mv, can_refine_mv); + rd = sse + (int)ROUND_POWER_OF_TWO_64((int64_t)rate * error_per_bit, + RDDIV_BITS + AV2_PROB_COST_SHIFT - + RD_EPB_SHIFT + + PIXEL_TRANSFORM_ERROR_SCALE); + } else { + rd = UINT64_MAX; + } + return rd; +} + +static AVM_INLINE void search_warp_translational_params( + const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, + const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, + const float cost_cmp_thr_speed, WarpedMotionParams *best_wm_params, + WarpedMotionParams base_params, WarpedMotionParams *params, MV *best_mv, + const int warp_precision_idx_rate, uint64_t *best_rd, int_mv *center_mv, + int num_neighbors, int num_mv_iterations, int step_size, + int max_coded_index, bool skip_mv_search) { + bool can_refine_mv = (mbmi->mode == WARP_NEWMV); + if (can_refine_mv && !skip_mv_search) { + *params = *best_wm_params; + refine_translational_mv( + cm, xd, ms_params, mbmi, params, &base_params, best_wm_params, best_mv, + warp_precision_idx_rate, mode_costs, step_size, max_coded_index, + num_neighbors, num_mv_iterations, best_rd, cost_cmp_thr_speed); + center_mv->as_mv = *best_mv; + } +} + +static AVM_INLINE void search_warp_delta_params( + const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, + const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, + const float cost_cmp_thr_speed, WarpedMotionParams *best_wm_params, + WarpedMotionParams *base_params, WarpedMotionParams *params, MV *best_mv, + const int warp_precision_idx_rate, const int error_per_bit, + uint64_t *best_rd, int_mv center_mv, int step_size, int max_coded_index, + int number_of_iterations, const int max_warp_delta_value, + int param_index_test) { + const BLOCK_SIZE bsize = mbmi->sb_type[PLANE_TYPE_Y]; + int mi_row = xd->mi_row; + int mi_col = xd->mi_col; + const struct scale_factors *sf = + get_ref_scale_factors_const(cm, mbmi->ref_frame[0]); + int delta; + uint64_t inc_rd, dec_rd; + bool can_refine_mv = (mbmi->mode == WARP_NEWMV); + + const float cost_cmp_thr = cost_cmp_thr_speed; + for (int iter = 0; iter < number_of_iterations; iter++) { + int center_best_so_far = 1; + + int param_index = param_index_test; + // Try increasing the parameter + *params = *best_wm_params; + params->wmmat[param_index] += step_size; + delta = params->wmmat[param_index] - base_params->wmmat[param_index]; + if (abs(delta) > max_warp_delta_value) { + inc_rd = UINT64_MAX; + } else { + if (!mbmi->six_param_warp_model_flag) { + params->wmmat[4] = -params->wmmat[3]; + params->wmmat[5] = params->wmmat[2]; + } + inc_rd = get_warp_delta_param_cost( + cm, xd, mbmi, ms_params, mode_costs, base_params, params, sf, bsize, + mi_row, mi_col, center_mv, best_mv, step_size, max_coded_index, + can_refine_mv, error_per_bit, warp_precision_idx_rate); + } + WarpedMotionParams inc_params = *params; + + // Try decreasing the parameter + *params = *best_wm_params; + params->wmmat[param_index] -= step_size; + delta = params->wmmat[param_index] - base_params->wmmat[param_index]; + if (abs(delta) > max_warp_delta_value) { + dec_rd = UINT64_MAX; + } else { + if (!mbmi->six_param_warp_model_flag) { + params->wmmat[4] = -params->wmmat[3]; + params->wmmat[5] = params->wmmat[2]; + } + dec_rd = get_warp_delta_param_cost( + cm, xd, mbmi, ms_params, mode_costs, base_params, params, sf, bsize, + mi_row, mi_col, center_mv, best_mv, step_size, max_coded_index, + can_refine_mv, error_per_bit, warp_precision_idx_rate); + } + WarpedMotionParams dec_params = *params; + + // Pick the best parameter value at this level + if (inc_rd < *best_rd) { + if (dec_rd < inc_rd) { + // Decreasing is best + if (dec_rd * cost_cmp_thr < *best_rd) center_best_so_far = 0; + *best_wm_params = dec_params; + *best_rd = dec_rd; + } else { + // Increasing is best + if (inc_rd * cost_cmp_thr < *best_rd) center_best_so_far = 0; + *best_wm_params = inc_params; + *best_rd = inc_rd; + } + } else if (dec_rd < *best_rd) { + // Decreasing is best + if (dec_rd * cost_cmp_thr < *best_rd) center_best_so_far = 0; + *best_wm_params = dec_params; + *best_rd = dec_rd; + } + + if (center_best_so_far) { + break; + } + } +} + // Returns 1 if able to select a good model, 0 if not // TODO(rachelbarker): // This function cannot use the same neighbor pruning used in the other warp @@ -5067,7 +5207,8 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, warp_mode_info_array *prev_best_models, - WARP_CANDIDATE *warp_param_stack) { + WARP_CANDIDATE *warp_param_stack, + const int fast_decoupled_search) { WarpedMotionParams *params = &mbmi->wm_params[0]; const BLOCK_SIZE bsize = mbmi->sb_type[PLANE_TYPE_Y]; int mi_row = xd->mi_row; @@ -5077,6 +5218,7 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, get_ref_scale_factors_const(cm, mbmi->ref_frame[0]); bool skip_mv_search = 0; + const float cost_cmp_thr = fast_decoupled_search ? 1.005f : 0.f; int enable_fast_model_search = prev_best_models && mbmi->warp_precision_idx; // Note(rachelbarker): Technically we can refine MVs for the AMVDNEWMV mode // too, but it requires more complex logic for less payoff compared to @@ -5108,7 +5250,7 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, uint64_t best_rd, inc_rd, dec_rd; int valid; - int num_neighbors = 8; + int num_neighbors = fast_decoupled_search ? 4 : 8; int num_mv_iterations = 1; const int error_per_bit = ms_params->mv_cost_params.mv_costs->errorperbit; @@ -5213,111 +5355,141 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, // Refine model, by making a few passes through the available // parameters and trying to increase/decrease them + if (!fast_decoupled_search) { + for (int iter = 0; iter < number_of_iterations; iter++) { + int center_best_so_far = 1; + + if (can_refine_mv && !skip_mv_search) { + *params = best_wm_params; + refine_translational_mv(cm, xd, ms_params, mbmi, params, &base_params, + &best_wm_params, best_mv, + warp_precision_idx_rate, mode_costs, step_size, + max_coded_index, num_neighbors, + num_mv_iterations, &best_rd, cost_cmp_thr); + center_mv.as_mv = *best_mv; + } - for (int iter = 0; iter < number_of_iterations; iter++) { - int center_best_so_far = 1; - - if (can_refine_mv && !skip_mv_search) { - *params = best_wm_params; - refine_translational_mv(cm, xd, ms_params, mbmi, params, &base_params, - &best_wm_params, best_mv, warp_precision_idx_rate, - mode_costs, step_size, max_coded_index, - num_neighbors, num_mv_iterations, &best_rd); - center_mv.as_mv = *best_mv; - } - - for (int param_index = 2; - param_index < (mbmi->six_param_warp_model_flag ? 6 : 4); - param_index++) { - // Try increasing the parameter - *params = best_wm_params; - params->wmmat[param_index] += step_size; - delta = params->wmmat[param_index] - base_params.wmmat[param_index]; - if (abs(delta) > max_warp_delta_value) { - inc_rd = UINT64_MAX; - } else { - if (!mbmi->six_param_warp_model_flag) { - params->wmmat[4] = -params->wmmat[3]; - params->wmmat[5] = params->wmmat[2]; - } - valid = av2_is_warp_model_reduced(params); - av2_get_shear_params(params, sf); - - if (valid) { - av2_set_warp_translation(mi_row, mi_col, bsize, center_mv.as_mv, - params); - rate = warp_precision_idx_rate + - av2_cost_model_param(mbmi, mode_costs, step_size, - max_coded_index, &base_params); - sse = compute_motion_cost(xd, cm, ms_params, bsize, best_mv, - can_refine_mv); - inc_rd = sse + (int)ROUND_POWER_OF_TWO_64( - (int64_t)rate * error_per_bit, - RDDIV_BITS + AV2_PROB_COST_SHIFT - RD_EPB_SHIFT + - PIXEL_TRANSFORM_ERROR_SCALE); - } else { + for (int param_index = 2; + param_index < (mbmi->six_param_warp_model_flag ? 6 : 4); + param_index++) { + // Try increasing the parameter + *params = best_wm_params; + params->wmmat[param_index] += step_size; + delta = params->wmmat[param_index] - base_params.wmmat[param_index]; + if (abs(delta) > max_warp_delta_value) { inc_rd = UINT64_MAX; - } - } - WarpedMotionParams inc_params = *params; - - // Try decreasing the parameter - *params = best_wm_params; - params->wmmat[param_index] -= step_size; - delta = params->wmmat[param_index] - base_params.wmmat[param_index]; - if (abs(delta) > max_warp_delta_value) { - dec_rd = UINT64_MAX; - } else { - if (!mbmi->six_param_warp_model_flag) { - params->wmmat[4] = -params->wmmat[3]; - params->wmmat[5] = params->wmmat[2]; - } - valid = av2_is_warp_model_reduced(params); - av2_get_shear_params(params, sf); - if (valid) { - av2_set_warp_translation(mi_row, mi_col, bsize, center_mv.as_mv, - params); - rate = warp_precision_idx_rate + - av2_cost_model_param(mbmi, mode_costs, step_size, - max_coded_index, &base_params); - sse = compute_motion_cost(xd, cm, ms_params, bsize, best_mv, - can_refine_mv); - dec_rd = sse + (int)ROUND_POWER_OF_TWO_64( - (int64_t)rate * error_per_bit, - RDDIV_BITS + AV2_PROB_COST_SHIFT - RD_EPB_SHIFT + - PIXEL_TRANSFORM_ERROR_SCALE); } else { - dec_rd = UINT64_MAX; + if (!mbmi->six_param_warp_model_flag) { + params->wmmat[4] = -params->wmmat[3]; + params->wmmat[5] = params->wmmat[2]; + } + valid = av2_is_warp_model_reduced(params); + av2_get_shear_params(params, sf); + + if (valid) { + av2_set_warp_translation(mi_row, mi_col, bsize, center_mv.as_mv, + params); + rate = warp_precision_idx_rate + + av2_cost_model_param(mbmi, mode_costs, step_size, + max_coded_index, &base_params); + sse = compute_motion_cost(xd, cm, ms_params, bsize, best_mv, + can_refine_mv); + inc_rd = sse + (int)ROUND_POWER_OF_TWO_64( + (int64_t)rate * error_per_bit, + RDDIV_BITS + AV2_PROB_COST_SHIFT - RD_EPB_SHIFT + + PIXEL_TRANSFORM_ERROR_SCALE); + } else { + inc_rd = UINT64_MAX; + } } - } - WarpedMotionParams dec_params = *params; + WarpedMotionParams inc_params = *params; - // Pick the best parameter value at this level - if (inc_rd < best_rd) { - if (dec_rd < inc_rd) { + // Try decreasing the parameter + *params = best_wm_params; + params->wmmat[param_index] -= step_size; + delta = params->wmmat[param_index] - base_params.wmmat[param_index]; + if (abs(delta) > max_warp_delta_value) { + dec_rd = UINT64_MAX; + } else { + if (!mbmi->six_param_warp_model_flag) { + params->wmmat[4] = -params->wmmat[3]; + params->wmmat[5] = params->wmmat[2]; + } + valid = av2_is_warp_model_reduced(params); + av2_get_shear_params(params, sf); + if (valid) { + av2_set_warp_translation(mi_row, mi_col, bsize, center_mv.as_mv, + params); + rate = warp_precision_idx_rate + + av2_cost_model_param(mbmi, mode_costs, step_size, + max_coded_index, &base_params); + sse = compute_motion_cost(xd, cm, ms_params, bsize, best_mv, + can_refine_mv); + dec_rd = sse + (int)ROUND_POWER_OF_TWO_64( + (int64_t)rate * error_per_bit, + RDDIV_BITS + AV2_PROB_COST_SHIFT - RD_EPB_SHIFT + + PIXEL_TRANSFORM_ERROR_SCALE); + } else { + dec_rd = UINT64_MAX; + } + } + WarpedMotionParams dec_params = *params; + + // Pick the best parameter value at this level + if (inc_rd < best_rd) { + if (dec_rd < inc_rd) { + // Decreasing is best + best_wm_params = dec_params; + best_rd = dec_rd; + center_best_so_far = 0; + } else { + // Increasing is best + best_wm_params = inc_params; + best_rd = inc_rd; + center_best_so_far = 0; + } + } else if (dec_rd < best_rd) { // Decreasing is best best_wm_params = dec_params; best_rd = dec_rd; center_best_so_far = 0; } else { - // Increasing is best - best_wm_params = inc_params; - best_rd = inc_rd; - center_best_so_far = 0; + // Current is best + // No need to change anything } - } else if (dec_rd < best_rd) { - // Decreasing is best - best_wm_params = dec_params; - best_rd = dec_rd; - center_best_so_far = 0; - } else { - // Current is best - // No need to change anything } - } - if (center_best_so_far) { - break; + if (center_best_so_far) { + break; + } + } + } else { + search_warp_translational_params( + cm, xd, mbmi, ms_params, mode_costs, cost_cmp_thr, &best_wm_params, + base_params, params, best_mv, warp_precision_idx_rate, &best_rd, + ¢er_mv, num_neighbors, num_mv_iterations, step_size, + max_coded_index, skip_mv_search); + search_warp_delta_params(cm, xd, mbmi, ms_params, mode_costs, cost_cmp_thr, + &best_wm_params, &base_params, params, best_mv, + warp_precision_idx_rate, error_per_bit, &best_rd, + center_mv, step_size, max_coded_index, + number_of_iterations, max_warp_delta_value, 2); + search_warp_delta_params(cm, xd, mbmi, ms_params, mode_costs, cost_cmp_thr, + &best_wm_params, &base_params, params, best_mv, + warp_precision_idx_rate, error_per_bit, &best_rd, + center_mv, step_size, max_coded_index, + number_of_iterations, max_warp_delta_value, 3); + if (mbmi->six_param_warp_model_flag) { + search_warp_delta_params( + cm, xd, mbmi, ms_params, mode_costs, cost_cmp_thr, &best_wm_params, + &base_params, params, best_mv, warp_precision_idx_rate, error_per_bit, + &best_rd, center_mv, step_size, max_coded_index, number_of_iterations, + max_warp_delta_value, 4); + search_warp_delta_params( + cm, xd, mbmi, ms_params, mode_costs, cost_cmp_thr, &best_wm_params, + &base_params, params, best_mv, warp_precision_idx_rate, error_per_bit, + &best_rd, center_mv, step_size, max_coded_index, number_of_iterations, + max_warp_delta_value, 5); } } diff --git a/av2/encoder/mcomp.h b/av2/encoder/mcomp.h index da61d62429..5522bf10b6 100644 --- a/av2/encoder/mcomp.h +++ b/av2/encoder/mcomp.h @@ -576,7 +576,8 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, warp_mode_info_array *prev_best_models, - WARP_CANDIDATE *warp_param_stack); + WARP_CANDIDATE *warp_param_stack, + const int fast_decoupled_search); int av2_refine_mv_for_base_param_warp_model( const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 807000ced1..d5c7a8658f 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -2654,10 +2654,12 @@ static AVM_INLINE int handle_warp_delta_mode( const bool use_six_param_in_winner = (eval_motion_mode == six_param_enabled_by_tid); if (use_six_param_in_winner || - !cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode) + !cpi->sf.inter_sf.enable_six_param_warp_in_winner_mode) { valid = av2_pick_warp_delta( cm, xd, mbmi, &ms_params, &x->mode_costs, prev_best_models, - mbmi_ext->warp_param_stack[av2_ref_frame_type(mbmi->ref_frame)]); + mbmi_ext->warp_param_stack[av2_ref_frame_type(mbmi->ref_frame)], + cpi->sf.inter_sf.fast_warp_delta_decoupled_search); + } } if (!valid) return -1; diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 45ecea2e6a..3975ac54d1 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -582,6 +582,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.alt_ref_search_fp = 1; sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 4; + sf->inter_sf.fast_warp_delta_decoupled_search = 1; sf->inter_sf.prune_inter_modes_based_on_tpl = boosted ? 0 : 3; sf->inter_sf.prune_comp_using_best_single_mode_ref = 2; @@ -836,6 +837,7 @@ static AVM_INLINE void init_flexmv_sf( static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->enable_six_param_warp_in_winner_mode = 0; inter_sf->enable_six_param_warp_in_winner_mode_by_tid = 0; + inter_sf->fast_warp_delta_decoupled_search = 0; inter_sf->comp_inter_joint_search_thresh = BLOCK_4X4; inter_sf->adaptive_rd_thresh = 0; inter_sf->model_based_post_interp_filter_breakout = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 236c4156ce..45119b1fa5 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -618,6 +618,9 @@ typedef struct INTER_MODE_SPEED_FEATURES { // aggressively than lower ones. (0 means no pruning). int selective_ref_frame; + // Enable fast warp delta search for 4 param and 6 param models + int fast_warp_delta_decoupled_search; + // When 1, prune single-ref NEWMV / WARP_NEWMV for a given ref frame // when the best RD seen so far for that ref (taken from a prior mode // such as NEARMV, NEWMV[amvd=0], or WARPMV) is far from the best RD From e062332cae51b172ff9c5e58c62623d49786f32f Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Tue, 18 Aug 2026 13:43:30 -0700 Subject: [PATCH 169/205] Disable a speed feature to recover coding gains at sp3 (#5281) The speed feature "disable_smooth_intra" has no time saving while introducing coding loss at speed 3, RA: Speed3 PSNR-YUV EncTime A1 (17 frames) -1.28% 99.14% A2 (33 frames) -0.88% 100.34% By disabling the feature, we recover coding gains without noticable slowdown. STATS_CHANGED --- av2/encoder/speed_features.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 3975ac54d1..09caf3810d 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -537,8 +537,10 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : (is_boosted_arf2_bwd_type ? 1 : 2); - sf->intra_sf.disable_smooth_intra = - !frame_is_intra_only(&cpi->common) || (cpi->rc.frames_to_key != 1); + // TODO(any): disable_smooth_intra does not have speed up while introducing + // coding loss. Disable it before it is improved. + // sf->intra_sf.disable_smooth_intra = + // !frame_is_intra_only(&cpi->common) || (cpi->rc.frames_to_key != 1); sf->intra_sf.prune_palette_search_level = 2; sf->tpl_sf.prune_ref_frames_in_tpl = 1; From d20e3b35ca28a126c3f85c81a2842fdc218fb6fa Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Tue, 18 Aug 2026 14:04:22 -0700 Subject: [PATCH 170/205] Allow MV precision based on last frame MV data for < 4K resolution. (#5280) In particular, use last frame MV data for 1080p resolution that was NOT used before. Only exception are: - screen content at 1080p+ resolution will use QTR_ONLY MV precision mode - 4k or larger: will also use QTR_ONLY MV precision mode In CTC, affects A2 and B1 sets only. Results for anchor: 2abcfff1f - RA CTC 33 frames, speed 4: ``` +---------+--------+----------+ | Summary | YUV | Enc-time | +---------+--------+----------+ | A2 | -0.11% | 98.35% | | B1 | 0.01% | 97.89% | +---------+--------+----------+ ``` - RA CTC 33 frames, speed 1: ``` +---------+--------+----------+ | Summary | YUV | Enc-time | +---------+--------+----------+ | A2 | -0.03% | 98.61% | | B1 | 0.01% | 99.72% | +---------+--------+----------+ ``` STATS_CHANGED --- av2/encoder/speed_features.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 09caf3810d..38a03aa10e 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -137,7 +137,8 @@ static void set_good_speed_feature_framesize_dependent( const int is_1080p_or_larger = AVMMIN(cm->width, cm->height) >= 1080; const int is_4k_or_larger = AVMMIN(cm->width, cm->height) >= 2160; if (cm->seq_params.enable_flex_mvres) { - if (is_1080p_or_larger) { + if (is_4k_or_larger || + (is_1080p_or_larger && cm->features.allow_screen_content_tools)) { sf->hl_sf.high_precision_mv_usage = QTR_ONLY; } From e1e616f96108fa0baf19b9792963a08784697fea Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Tue, 18 Aug 2026 14:59:40 -0700 Subject: [PATCH 171/205] Enable dc block pred level 1 at Speed 3 (#5283) Enabling the speed feature at speed 3 shows encoder speed up with acceptable neutral coding Performance. Performance on RA speed 3 Testset PSNR-YUV EncSpeedUp A1 (17 frames) -0.01% 3.39% A2 (33 frames) 0.01% 2.76% STATS_CHANGED --- av2/encoder/speed_features.c | 1 + 1 file changed, 1 insertion(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 38a03aa10e..01ffd5cb5d 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -564,6 +564,7 @@ static void set_good_speed_features_framesize_independent( // TODO(any): Re-enable for inter frames after fixing speed feature. sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch = 0; sf->winner_mode_sf.enable_winner_mode_for_use_tx_domain_dist = 1; + sf->winner_mode_sf.dc_blk_pred_level = 1; sf->winner_mode_sf.motion_mode_for_winner_cand = boosted ? 0 : gf_group->update_type[gf_group->index] == INTNL_ARF_UPDATE ? 1 From f37b2f71dc8bbc8a119c353990601d2f7ab80d1e Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Tue, 18 Aug 2026 16:36:19 -0700 Subject: [PATCH 172/205] Disable a speed feature to recover coding gains at sp4 (#5285) The speed feature "prune_comp_using_best_single_mode_ref" currently performs below the bar for quality and speed tradeoff. By disabling the feature, we recover coding gains with about 5.5% (A1), 11.5% (A2) encoding time slowdown. Speed4 PSNR-YUV EncTime A1 (17 frames) -1.11% 105.52% A2 (33 frames) -0.88% 111.53% STATS_CHANGED Change-Id: I91afc0b8130c6e538ac11a804a17078da480065b --- av2/encoder/speed_features.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 01ffd5cb5d..db16e4b346 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -589,7 +589,10 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.fast_warp_delta_decoupled_search = 1; sf->inter_sf.prune_inter_modes_based_on_tpl = boosted ? 0 : 3; - sf->inter_sf.prune_comp_using_best_single_mode_ref = 2; + // TODO(any): prune_comp_using_best_single_mode_ref introduces a large + // coding loss (> 1%) without enough encoding speed up (5% - 11%). + // Disabling it until it is fixed. + // sf->inter_sf.prune_comp_using_best_single_mode_ref = 2; sf->intra_sf.intra_uv_mode_mask[TX_16X16] = UV_INTRA_DC_H_V_CFL; sf->intra_sf.intra_uv_mode_mask[TX_32X32] = UV_INTRA_DC_H_V_CFL; From 572c35129a19111f23c56880c76321998784cac4 Mon Sep 17 00:00:00 2001 From: kslu Date: Wed, 19 Aug 2026 04:35:36 +0000 Subject: [PATCH 173/205] Refactor handle_inter_mode and separate single and compound mode searches (#5239) Reduce the search loop nesting by using a helper function for single and another for compound. The order of nested loops has been changed, so that a common search loop for MV precision is moved to higher level and remains in handle_inter_mode, while the other loops are moved to the helper functions. The double search loops for compound DRL and for BAWP are flattened as one single loop. Some pruning logic of skip_newmv are refactored using an inline function. There is an ongoing effort to further unnest the loops inside handle_compound_inter_prediction. Evaluation based on b5bb354c8 with 33 frames Speed 0 (1 point remaining for each set) ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | -0.05% | -0.02% | +0.13% | -0.04% | 101.2% | 101.4% | | A2 | -0.02% | +0.26% | +0.02% | -0.01% | 101.5% | 101.4% | +---------+--------+--------+--------+--------+----------+----------+ ``` Speed 1 ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | +0.01% | -0.03% | -0.17% | -0.01% | 102.5% | 102.6% | | A2 | -0.03% | +0.13% | -0.07% | -0.03% | 102.6% | 101.9% | +---------+--------+--------+--------+--------+----------+----------+ ``` Encoder instruction count number on A4-A5 are 99.5% STATS_CHANGED --- av2/common/reconinter.c | 4 +- av2/common/reconinter.h | 3 +- av2/decoder/decodemv.c | 2 +- av2/encoder/rdopt.c | 967 +++++++++++++++++++++++----------------- 4 files changed, 567 insertions(+), 409 deletions(-) diff --git a/av2/common/reconinter.c b/av2/common/reconinter.c index 71742fcb11..a753ed9b8e 100644 --- a/av2/common/reconinter.c +++ b/av2/common/reconinter.c @@ -4030,12 +4030,10 @@ void set_most_probable_mv_precision(const AV2_COMMON *const cm, #endif } void set_precision_set(const AV2_COMMON *const cm, MACROBLOCKD *const xd, - MB_MODE_INFO *mbmi, const BLOCK_SIZE bsize, - int *ref_mv_idx) { + MB_MODE_INFO *mbmi, const BLOCK_SIZE bsize) { (void)bsize; (void)cm; (void)xd; - (void)ref_mv_idx; mbmi->mb_precision_set = (mbmi->max_mv_precision < MV_PRECISION_HALF_PEL) ? 0 diff --git a/av2/common/reconinter.h b/av2/common/reconinter.h index cf3591101d..dc815388e5 100644 --- a/av2/common/reconinter.h +++ b/av2/common/reconinter.h @@ -1250,8 +1250,7 @@ void set_default_precision_set(const AV2_COMMON *const cm, MB_MODE_INFO *mbmi, // Set the precision set of the block. Currently, the value is 0. void set_precision_set(const AV2_COMMON *const cm, MACROBLOCKD *const xd, - MB_MODE_INFO *mbmi, const BLOCK_SIZE bsize, - int *ref_mv_idx); + MB_MODE_INFO *mbmi, const BLOCK_SIZE bsize); // Get the index of the precision // this index is signalled when precision is not same as the most probable // precision diff --git a/av2/decoder/decodemv.c b/av2/decoder/decodemv.c index 51919c2170..9aea3e36fd 100644 --- a/av2/decoder/decodemv.c +++ b/av2/decoder/decodemv.c @@ -2799,7 +2799,7 @@ static void read_inter_block_mode_info(AV2Decoder *const pbi, ec_ctx, mbmi, r); set_mv_precision(mbmi, mbmi->max_mv_precision); if (is_pb_mv_precision_active(cm, mbmi, bsize)) { - set_precision_set(cm, xd, mbmi, bsize, mbmi->ref_mv_idx); + set_precision_set(cm, xd, mbmi, bsize); set_most_probable_mv_precision(cm, mbmi, bsize); mbmi->pb_mv_precision = av2_read_pb_mv_precision(cm, xd, r); } diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index d5c7a8658f..3d74806445 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -4273,9 +4273,8 @@ static int skip_repeated_newmv( motion_mode_candidate *motion_mode_cand, int64_t *ref_best_rd, RD_STATS *best_rd_stats, RD_STATS *best_rd_stats_y, RD_STATS *best_rd_stats_uv, inter_mode_info *mode_info, - HandleInterModeArgs *args, int drl_cost, const MV_REFERENCE_FRAME *refs, - int_mv *cur_mv, int64_t *best_rd, const BUFFER_SET orig_dst, - int ref_mv_idx[2]) { + HandleInterModeArgs *args, int drl_cost, int_mv *cur_mv, int64_t *best_rd, + const BUFFER_SET orig_dst, int ref_mv_idx[2]) { // This feature only works for NEWMV when a previous mv has been searched if ((this_mode != NEWMV && this_mode != WARP_NEWMV) || (ref_mv_idx[0] == 0 && ref_mv_idx[1] == 0)) @@ -4286,6 +4285,8 @@ static int skip_repeated_newmv( const int num_planes = av2_num_planes(cm); MB_MODE_INFO *mbmi = xd->mi[0]; + const MV_REFERENCE_FRAME refs[2] = { COMPACT_INDEX0_NRS(mbmi->ref_frame[0]), + COMPACT_INDEX1_NRS(mbmi->ref_frame[1]) }; const int is_adaptive_mvd = enable_adaptive_mvd_resolution(cm, mbmi); // We can-not change the ref_mv_idx of best_mbmi becasue motion mode is tied @@ -4346,8 +4347,8 @@ static int skip_repeated_newmv( // best_mv is the same as ref_mv. In this case we skip and // rely on NEAR(EST)MV instead if (best_mbmi->mode == this_mode && - best_mbmi->ref_frame[0] == refs[0] && - best_mbmi->ref_frame[1] == refs[1] && + best_mbmi->ref_frame[0] == mbmi->ref_frame[0] && + best_mbmi->ref_frame[1] == mbmi->ref_frame[1] && av2_ref_mv_idx_type(best_mbmi, best_mbmi->ref_mv_idx) == i && best_mbmi->mv[0].as_int != ref_mv.as_int && @@ -4746,6 +4747,8 @@ typedef struct { motion_mode_candidate *motion_mode_cand; int64_t *top_motion_mode_model_rd; // 1D in HEAD int64_t *best_est_rd; + int is_best_mode_warp; + int64_t best_mode_rd_so_far; } PredictorSearchEnv; // Holds the context for a single iteration of the predictor evaluation. @@ -4779,7 +4782,8 @@ static AVM_INLINE void init_predictor_search_env( const CompoundTypeRdBuffers *rd_buffers, const BUFFER_SET *orig_dst, const BUFFER_SET *tmp_dst, int64_t *skip_rd, int do_tx_search, InterModesInfo *inter_modes_info, motion_mode_candidate *motion_mode_cand, - int64_t *top_motion_mode_model_rd, int64_t *best_est_rd) { + int64_t *top_motion_mode_model_rd, int64_t *best_est_rd, + int is_best_mode_warp, int64_t best_mode_rd_so_far) { env->args = args; env->rd_buffers = rd_buffers; env->orig_dst = orig_dst; @@ -4790,6 +4794,8 @@ static AVM_INLINE void init_predictor_search_env( env->motion_mode_cand = motion_mode_cand; env->top_motion_mode_model_rd = top_motion_mode_model_rd; env->best_est_rd = best_est_rd; + env->is_best_mode_warp = is_best_mode_warp; + env->best_mode_rd_so_far = best_mode_rd_so_far; } // Initializes the PredictorIterationContext structure. @@ -5199,6 +5205,471 @@ static INLINE bool prune_ref_mv_idx_for_warp_newmv( return false; } +// Checks if current NEWMV candidate is out of range or should be skipped. +static INLINE int should_skip_newmv( + AV2_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, + const PredictorSearchEnv *env, const PredictorSearchState *search_state, + PREDICTION_MODE this_mode, const MB_MODE_INFO *mbmi, int_mv cur_mv[2], + int ref_mv_idx[2], int drl_cost, HandleInterModeArgs *args) { + if (!have_newmv_in_inter_mode(this_mode)) return 0; + + const int is_comp_pred = has_second_ref(mbmi); + for (int ref = 0; ref < is_comp_pred + 1; ref++) { + const PREDICTION_MODE single_mode = get_single_mode(this_mode, ref); + if (single_mode == NEWMV || single_mode == WARP_NEWMV) { + SUBPEL_MOTION_SEARCH_PARAMS ms_params; + MV ref_mv = av2_get_ref_mv(x, ref).as_mv; + if (mbmi->pb_mv_precision < MV_PRECISION_HALF_PEL) + lower_mv_precision(&ref_mv, mbmi->pb_mv_precision); + av2_make_default_subpel_ms_params(&ms_params, cpi, x, bsize, &ref_mv, + mbmi->pb_mv_precision, 0, NULL); + if (!av2_is_subpelmv_in_range(&ms_params.mv_limits, cur_mv[ref].as_mv)) { + return 1; + } + } + } + + const int skip_new_mv = cpi->sf.inter_sf.skip_repeated_newmv || + (mbmi->pb_mv_precision != mbmi->max_mv_precision && + cpi->sf.flexmv_sf.skip_repeated_newmv_low_prec); + if (skip_new_mv && + skip_repeated_newmv( + cpi, x, bsize, env->do_tx_search, this_mode, mbmi->pb_mv_precision, + mbmi->bawp_flag[0], mbmi->bawp_flag[1], search_state->best_mbmi, + env->motion_mode_cand, search_state->ref_best_rd, + search_state->best_rd_stats, search_state->best_rd_stats_y, + search_state->best_rd_stats_uv, + (*search_state->mode_info)[mbmi->bawp_flag[0]][mbmi->pb_mv_precision], + args, drl_cost, cur_mv, search_state->best_rd, *env->orig_dst, + ref_mv_idx)) { + return 1; + } + + return 0; +} + +static INLINE int prune_tpl_candidate( + const AV2_COMP *const cpi, const PredictorSearchState *search_state, + PREDICTION_MODE this_mode, int prune_modes_based_on_tpl, + int ref_match_found_in_above_nb, int ref_match_found_in_left_nb, + PruneInfoFromTpl *inter_cost_info_from_tpl, const MV_REFERENCE_FRAME *refs, + int ref_mv_idx0) { + if (this_mode != WARPMV && prune_modes_based_on_tpl && + !ref_match_found_in_above_nb && !ref_match_found_in_left_nb && + (*search_state->ref_best_rd != INT64_MAX)) { + return prune_modes_based_on_tpl_stats( + &cpi->common.features, inter_cost_info_from_tpl, refs, ref_mv_idx0, + this_mode, cpi->sf.inter_sf.prune_inter_modes_based_on_tpl); + } + return 0; +} + +// Handles single inter prediction search for a given mode and precision. +// Iterates over candidates in the dynamic reference list (ref_mv_idx) and BAWP +// options, performs motion vector generation/search, pruning checks, and +// evaluates predictors. +static void handle_single_inter_prediction( + AV2_COMP *const cpi, TileDataEnc *tile_data, MACROBLOCK *x, + PredictorSearchEnv *env, PredictorSearchState *search_state, + PREDICTION_MODE this_mode, BLOCK_SIZE bsize, const int ref_set[2], + int precision_dx, const PRECISION_SET *precision_def, + MvSubpelPrecision *best_precision_so_far, int *best_precision_dx_so_far, + int64_t *best_precision_rd_so_far, int mode_ctx, HandleInterModeArgs *args, + const int *flex_mv_cost, int idx_mask[BAWP_OPTION_CNT][NUM_MV_PRECISIONS]) { + const AV2_COMMON *cm = &cpi->common; + MACROBLOCKD *xd = &x->e_mbd; + MB_MODE_INFO *mbmi = xd->mi[0]; + const MB_MODE_INFO_EXT *const mbmi_ext = x->mbmi_ext; + const DryPassCfg *const cfg = args->dry_pass_cfg; + const MV_REFERENCE_FRAME refs[2] = { COMPACT_INDEX0_NRS(mbmi->ref_frame[0]), + COMPACT_INDEX1_NRS(mbmi->ref_frame[1]) }; + const int num_planes = av2_num_planes(cm); + inter_mode_info(*const mode_info)[NUM_MV_PRECISIONS][MAX_REF_MV_SQUARE] = + *search_state->mode_info; + + for (int ref_mv_idx0 = 0; ref_mv_idx0 < ref_set[0]; ++ref_mv_idx0) { + if (prune_ref_mv_idx_for_warp_newmv( + mbmi, *search_state->best_rd, env->best_mode_rd_so_far, + env->is_best_mode_warp, ref_mv_idx0, + cpi->sf.inter_sf.prune_warp_newmv_ref_mv_idx)) + continue; + int ref_mv_idx[2] = { ref_mv_idx0, 0 }; + mbmi->ref_mv_idx[1] = 0; + mbmi->ref_mv_idx[0] = ref_mv_idx0; + int ref_mv_idx_type = av2_ref_mv_idx_type(mbmi, ref_mv_idx); + set_mv_precision(mbmi, mbmi->max_mv_precision); + + const int drl_cost = + get_drl_cost(cm->features.max_drl_bits, mbmi, mbmi_ext, x); + + int rate_mv = 0; + int64_t newmv_ret_val = 0; + + mbmi->mode = this_mode; + mbmi->refinemv_flag = 0; + mbmi->cwp_idx = CWP_EQUAL; + mbmi->jmvd_scale_mode = 0; + + // Initialize mode data + mbmi->interinter_comp.type = COMPOUND_AVERAGE; + mbmi->comp_group_idx = 0; + if (mbmi->ref_frame[1] == INTRA_FRAME) mbmi->ref_frame[1] = NONE_FRAME; + mbmi->num_proj_ref[0] = mbmi->num_proj_ref[1] = 0; + mbmi->motion_mode = SIMPLE_TRANSLATION; + mbmi->ref_mv_idx[1] = ref_mv_idx[1]; + mbmi->ref_mv_idx[0] = ref_mv_idx[0]; + set_mv_precision(mbmi, precision_def->precision[precision_dx]); + + const ModeCosts *mode_costs = &x->mode_costs; + const int prediction_mode_cost = + cost_prediction_mode(mode_costs, this_mode, cm, mbmi, xd, mode_ctx); + const int base_rate = + args->ref_frame_cost + args->single_comp_cost + prediction_mode_cost; + const int jmvd_scale_mode_cost = get_jmvd_scale_mode_cost(mbmi, mode_costs); + const int rate_so_far = base_rate + drl_cost + + flex_mv_cost[mbmi->pb_mv_precision] + + jmvd_scale_mode_cost; + if (cpi->sf.inter_sf.skip_mode_eval_based_on_rate_cost && + *search_state->ref_best_rd != INT64_MAX && + RDCOST(x->rdmult, rate_so_far, 0) > *search_state->ref_best_rd) { + continue; + } + + assert(mbmi->motion_mode == SIMPLE_TRANSLATION); + mbmi->refinemv_flag = 0; + + int_mv cur_mv[2]; + int skip_repeated_ref_mv = cpi->sf.inter_sf.skip_repeated_ref_mv; + if (mbmi->mode != WARPMV && + !build_cur_mv(cur_mv, this_mode, cm, x, skip_repeated_ref_mv)) { + continue; + } + if (mbmi->mode == WARPMV) { + cur_mv[0].as_int = 0; + cur_mv[1].as_int = 0; + assert(ref_mv_idx[0] == 0 && ref_mv_idx[1] == 0); + } + + if (mbmi->mode != WARPMV && cpi->sf.flexmv_sf.skip_similar_ref_mv && + skip_similar_ref_mv(cpi, x, bsize)) { + continue; + } + + int_mv bawp_off_mv[2]; + int64_t bawp_off_newmv_ret_val = 0; + int bawp_off_rate_mv = 0; + bawp_off_mv[0].as_int = cur_mv[0].as_int; + bawp_off_mv[1].as_int = -1; + + int bawp_enabled = cm->features.enable_bawp && + av2_allow_bawp(cm, mbmi, xd->mi_row, xd->mi_col); + if (bawp_enabled && av2_allow_explicit_bawp(mbmi)) + bawp_enabled += EXPLICIT_BAWP_SCALE_CNT; + // Dry pass: cap BAWP flag (0 => BAWP off). + if (x->apply_dry_pass_shortcuts) + bawp_enabled = AVMMIN(bawp_enabled, cfg->bawp_cap); + const int total_bawp_iters = + (bawp_enabled == 0) ? 1 : (1 + 2 * bawp_enabled); + for (int b_idx = 0; b_idx < total_bawp_iters; b_idx++) { + int bawp_flag = (b_idx + 1) / 2; + int bawp_flag_uv = (b_idx == 0) ? 0 : ((b_idx + 1) % 2); + + if (mbmi->ref_mv_idx[0] > 0 && bawp_flag > 1 && + search_state->best_mbmi->bawp_flag[0] == 0) + continue; + + if (bawp_flag_uv && (!xd->is_chroma_ref || cm->seq_params.monochrome)) { + continue; + } + + mbmi->bawp_flag[0] = bawp_flag; + mbmi->bawp_flag[1] = bawp_flag_uv; + + if (bawp_flag_uv == 0) { + mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type] + .full_search_mv.as_int = INVALID_MV; + mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type].mv.as_int = + INVALID_MV; + mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type].rd = + INT64_MAX; + mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type].drl_cost = + drl_cost; + } + + if (mbmi->mode != WARPMV && + !mask_check_bit(idx_mask[bawp_flag][mbmi->pb_mv_precision], + ref_mv_idx_type)) { + continue; + } + + if (mbmi->bawp_flag[0] >= 1) { + mbmi->mv[0].as_int = bawp_off_mv[0].as_int; + cur_mv[0].as_int = bawp_off_mv[0].as_int; + + mode_info[mbmi->bawp_flag[0]][mbmi->pb_mv_precision][ref_mv_idx_type] + .full_search_mv.as_int = + mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type] + .full_search_mv.as_int; + mode_info[mbmi->bawp_flag[0]][mbmi->pb_mv_precision][ref_mv_idx_type] + .full_mv_rate = + mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type].full_mv_rate; + + rate_mv = bawp_off_rate_mv; + if (bawp_off_newmv_ret_val != 0) continue; + } else { + if (have_newmv_in_inter_mode(this_mode)) { +#if CONFIG_COLLECT_COMPONENT_TIMING + start_timing(cpi, handle_newmv_time); +#endif + newmv_ret_val = + handle_newmv(cpi, x, bsize, cur_mv, &rate_mv, args, + mode_info[bawp_flag][mbmi->pb_mv_precision]); + +#if CONFIG_COLLECT_COMPONENT_TIMING + end_timing(cpi, handle_newmv_time); +#endif + bawp_off_rate_mv = rate_mv; + bawp_off_mv[0].as_int = cur_mv[0].as_int; + bawp_off_newmv_ret_val = newmv_ret_val; + if (newmv_ret_val != 0) continue; + } + } + + if (should_skip_newmv(cpi, x, bsize, env, search_state, this_mode, mbmi, + cur_mv, ref_mv_idx, drl_cost, args)) + continue; + + int single_cwp_mask[MAX_CWP_NUM] = { 0 }; + single_cwp_mask[0] = 1; + + const MB_MODE_INFO base_mbmi = *mbmi; + PredictorIterationContext it_ctx; + init_predictor_iteration_context( + &it_ctx, bsize, ref_mv_idx[0], ref_mv_idx[1], precision_dx, bawp_flag, + ref_mv_idx_type, 0, single_cwp_mask, this_mode, refs, flex_mv_cost, + drl_cost, jmvd_scale_mode_cost, base_rate, cur_mv, rate_mv, + &base_mbmi, 0, num_planes, args->skip_motion_mode); + it_ctx.refinemv_loop = 0; + evaluate_inter_predictor(cpi, tile_data, x, env, &it_ctx, search_state, + best_precision_so_far, best_precision_dx_so_far, + best_precision_rd_so_far); + } + } +} + +// Handles compound inter prediction search for a given mode and precision. +// Iterates over candidate combinations of reference MVs (ref_mv_idx[0], +// ref_mv_idx[1]), JMVD scaling factors, CWP indices, and refinement modes, +// evaluating inter predictors. +static void handle_compound_inter_prediction( + AV2_COMP *const cpi, TileDataEnc *tile_data, MACROBLOCK *x, + PredictorSearchEnv *env, PredictorSearchState *search_state, + PREDICTION_MODE this_mode, BLOCK_SIZE bsize, const int ref_set[2], + int precision_dx, const PRECISION_SET *precision_def, + MvSubpelPrecision *best_precision_so_far, int *best_precision_dx_so_far, + int64_t *best_precision_rd_so_far, int mode_ctx, HandleInterModeArgs *args, + const int *flex_mv_cost, int idx_mask[BAWP_OPTION_CNT][NUM_MV_PRECISIONS], + int jmvd_scaling_factor_num, PREDICTION_MODE best_ref_mode) { + const AV2_COMMON *cm = &cpi->common; + MACROBLOCKD *xd = &x->e_mbd; + MB_MODE_INFO *mbmi = xd->mi[0]; + const MB_MODE_INFO_EXT *const mbmi_ext = x->mbmi_ext; + const DryPassCfg *const cfg = args->dry_pass_cfg; + const ModeCosts *mode_costs = &x->mode_costs; + const MV_REFERENCE_FRAME refs[2] = { COMPACT_INDEX0_NRS(mbmi->ref_frame[0]), + COMPACT_INDEX1_NRS(mbmi->ref_frame[1]) }; + const int num_planes = av2_num_planes(cm); + inter_mode_info(*const mode_info)[NUM_MV_PRECISIONS][MAX_REF_MV_SQUARE] = + *search_state->mode_info; + + int cwp_search_mask[MAX_CWP_NUM] = { 0 }; + av2_zero(cwp_search_mask); + + const int total_ref_mv_idx = ref_set[1] * ref_set[0]; + for (int flat_idx = 0; flat_idx < total_ref_mv_idx; ++flat_idx) { + int ref_mv_idx[2]; + ref_mv_idx[1] = flat_idx / ref_set[0]; + ref_mv_idx[0] = flat_idx % ref_set[0]; + + if (mbmi->ref_frame[0] == mbmi->ref_frame[1] && mbmi->mode == NEAR_NEARMV && + ref_mv_idx[0] >= ref_mv_idx[1]) + continue; + + mbmi->ref_mv_idx[1] = ref_mv_idx[1]; + mbmi->ref_mv_idx[0] = ref_mv_idx[0]; + int ref_mv_idx_type = av2_ref_mv_idx_type(mbmi, ref_mv_idx); + set_mv_precision(mbmi, mbmi->max_mv_precision); + + const int drl_cost = + get_drl_cost(cm->features.max_drl_bits, mbmi, mbmi_ext, x); + + for (int scale_index = 0; scale_index < jmvd_scaling_factor_num; + ++scale_index) { + // Dry pass: cap jmvd scale index. + if (x->apply_dry_pass_shortcuts && scale_index > cfg->jmvd_scale_cap) + continue; + mbmi->jmvd_scale_mode = scale_index; + if (is_joint_amvd_coding_mode(mbmi->mode, mbmi->use_amvd)) { + if (scale_index > JOINT_AMVD_SCALE_FACTOR_CNT - 1) continue; + } + if (cpi->sf.inter_sf.early_terminate_jmvd_scale_factor) { + if (scale_index > 0 && + *search_state->best_rd > 1.5 * *search_state->ref_best_rd && + (!is_inter_compound_mode(best_ref_mode))) + continue; + if (scale_index > 0 && (ref_mv_idx[0] > 0 || ref_mv_idx[1] > 0) && + search_state->best_mbmi->jmvd_scale_mode == 0 && + (search_state->best_mbmi->ref_mv_idx[0] < ref_mv_idx[0] || + search_state->best_mbmi->ref_mv_idx[1] < ref_mv_idx[1])) + continue; + } + + int cwp_loop_num = cm->features.enable_cwp ? MAX_CWP_NUM : 1; + if (search_state->best_cwp_idxs[scale_index] == CWP_EQUAL && + (ref_mv_idx[0] > 0 || ref_mv_idx[1] > 0)) + cwp_loop_num = 1; + // Dry pass: use only cwp_idx == CWP_EQUAL (no CWP search). + if (x->apply_dry_pass_shortcuts) cwp_loop_num = cfg->cwp_loop_cap; + + for (int cwp_search_idx = 0; cwp_search_idx < cwp_loop_num; + cwp_search_idx++) { + mbmi->ref_mv_idx[1] = ref_mv_idx[1]; + mbmi->ref_mv_idx[0] = ref_mv_idx[0]; + mbmi->interinter_comp.type = COMPOUND_AVERAGE; + mbmi->comp_group_idx = 0; + mbmi->motion_mode = SIMPLE_TRANSLATION; + + const int same_side = is_ref_frame_same_side(cm, mbmi); + mbmi->cwp_idx = cwp_weighting_factor[same_side][cwp_search_idx]; + + if (mbmi->cwp_idx != CWP_EQUAL) { + if (!is_cwp_allowed(mbmi)) break; + if (cwp_search_mask[cwp_search_idx] == 0) { + continue; + } + } + if (mbmi->cwp_idx == -1) { + break; + } + + if (mbmi->ref_frame[1] == INTRA_FRAME) mbmi->ref_frame[1] = NONE_FRAME; + + mbmi->num_proj_ref[0] = mbmi->num_proj_ref[1] = 0; + mbmi->motion_mode = SIMPLE_TRANSLATION; + mbmi->ref_mv_idx[1] = ref_mv_idx[1]; + mbmi->ref_mv_idx[0] = ref_mv_idx[0]; + set_mv_precision(mbmi, precision_def->precision[precision_dx]); + + const int prediction_mode_cost = + cost_prediction_mode(mode_costs, this_mode, cm, mbmi, xd, mode_ctx); + const int base_rate = args->ref_frame_cost + args->single_comp_cost + + prediction_mode_cost; + const int jmvd_scale_mode_cost = + get_jmvd_scale_mode_cost(mbmi, mode_costs); + const int rate_so_far = base_rate + drl_cost + + flex_mv_cost[mbmi->pb_mv_precision] + + jmvd_scale_mode_cost; + if (cpi->sf.inter_sf.skip_mode_eval_based_on_rate_cost && + *search_state->ref_best_rd != INT64_MAX && + RDCOST(x->rdmult, rate_so_far, 0) > *search_state->ref_best_rd) { + continue; + } + + if (cpi->sf.inter_sf.early_terminate_jmvd_scale_factor) { + if (scale_index > 0 && (!is_inter_compound_mode(best_ref_mode)) && + mbmi->pb_mv_precision <= MV_PRECISION_HALF_PEL && + search_state->best_mbmi->jmvd_scale_mode == 0 && + search_state->best_mbmi->pb_mv_precision > MV_PRECISION_HALF_PEL) + continue; + } + + assert(mbmi->motion_mode == SIMPLE_TRANSLATION); + mbmi->refinemv_flag = get_default_refinemv_flag(cm, mbmi); + + int_mv cur_mv[2]; + int skip_repeated_ref_mv = 0; + if (mbmi->mode != WARPMV && + !build_cur_mv(cur_mv, this_mode, cm, x, skip_repeated_ref_mv)) { + continue; + } + if (mbmi->mode == WARPMV) { + cur_mv[0].as_int = 0; + cur_mv[1].as_int = 0; + assert(ref_mv_idx[0] == 0 && ref_mv_idx[1] == 0); + } + + if (mbmi->mode != WARPMV && cpi->sf.flexmv_sf.skip_similar_ref_mv && + skip_similar_ref_mv(cpi, x, bsize)) { + continue; + } + + mbmi->bawp_flag[0] = 0; + mbmi->bawp_flag[1] = 0; + + mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type] + .full_search_mv.as_int = INVALID_MV; + mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type].mv.as_int = + INVALID_MV; + mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type].rd = INT64_MAX; + mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type].drl_cost = + drl_cost; + + if (mbmi->mode != WARPMV && !mbmi->refinemv_flag && + !mask_check_bit(idx_mask[0][mbmi->pb_mv_precision], + ref_mv_idx_type)) { + continue; + } + + int rate_mv = 0; + if (have_newmv_in_inter_mode(this_mode)) { +#if CONFIG_COLLECT_COMPONENT_TIMING + start_timing(cpi, handle_newmv_time); +#endif + const int64_t newmv_ret_val = + handle_newmv(cpi, x, bsize, cur_mv, &rate_mv, args, + mode_info[0][mbmi->pb_mv_precision]); + +#if CONFIG_COLLECT_COMPONENT_TIMING + end_timing(cpi, handle_newmv_time); +#endif + if (newmv_ret_val != 0) continue; + } + + if (should_skip_newmv(cpi, x, bsize, env, search_state, this_mode, mbmi, + cur_mv, ref_mv_idx, drl_cost, args)) + continue; + + const MB_MODE_INFO base_mbmi = *mbmi; + PredictorIterationContext it_ctx; + init_predictor_iteration_context( + &it_ctx, bsize, ref_mv_idx[0], ref_mv_idx[1], precision_dx, 0, + ref_mv_idx_type, scale_index, cwp_search_mask, this_mode, refs, + flex_mv_cost, drl_cost, jmvd_scale_mode_cost, base_rate, cur_mv, + rate_mv, &base_mbmi, 0, num_planes, args->skip_motion_mode); + for (int refinemv_loop = 0; refinemv_loop < REFINEMV_NUM_MODES; + refinemv_loop++) { + // Dry pass: cap refinemv loop index. + if (x->apply_dry_pass_shortcuts && refinemv_loop > cfg->refinemv_cap) + break; + if (refinemv_loop == 1 && + (!switchable_refinemv_flag(cm, mbmi) || + cpi->sf.inter_sf.disable_switchable_refinemv)) + continue; + if (refinemv_loop == 1 && + cpi->sf.inter_sf.prune_refinemv_by_ref_idx && + !(base_mbmi.ref_frame[0] == 0 && base_mbmi.ref_frame[1] == 1)) + continue; + it_ctx.refinemv_loop = refinemv_loop; + evaluate_inter_predictor(cpi, tile_data, x, env, &it_ctx, + search_state, best_precision_so_far, + best_precision_dx_so_far, + best_precision_rd_so_far); + } + } + } + } +} + /*!\brief AV2 inter mode RD computation * * \ingroup inter_mode_search @@ -5265,7 +5736,6 @@ static INLINE bool prune_ref_mv_idx_for_warp_newmv( * * \return The RD cost for the mode being searched. */ - static int64_t handle_inter_mode( AV2_COMP *const cpi, TileDataEnc *tile_data, MACROBLOCK *x, BLOCK_SIZE bsize, RD_STATS *rd_stats, RD_STATS *rd_stats_y, @@ -5292,11 +5762,6 @@ static int64_t handle_inter_mode( const int prune_modes_based_on_tpl = cpi->sf.inter_sf.prune_inter_modes_based_on_tpl && tpl_idx < MAX_TPL_FRAME_IDX && tpl_frame->is_valid; - int i; - // Reference frames for this mode - const MV_REFERENCE_FRAME refs[2] = { COMPACT_INDEX0_NRS(mbmi->ref_frame[0]), - COMPACT_INDEX1_NRS(mbmi->ref_frame[1]) }; - int rate_mv = 0; // Do first prediction into the destination buffer. Do the next // prediction into a temporary buffer. Then keep track of which one @@ -5319,7 +5784,6 @@ static int64_t handle_inter_mode( CctxType best_cctx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE]; MB_MODE_INFO best_mbmi = *mbmi; int best_xskip_txfm = 0; - int64_t newmv_ret_val = INT64_MAX; const int is_pb_mv_prec_active = is_pb_mv_precision_active(cm, mbmi, bsize); const int has_two_drls = has_second_drl(mbmi); int64_t best_mode_rd_so_far = ref_best_rd; @@ -5347,18 +5811,19 @@ static int64_t handle_inter_mode( for (int bawp = 0; bawp < BAWP_OPTION_CNT; bawp++) { for (int prec = MV_PRECISION_8_PEL; prec <= mbmi->max_mv_precision; ++prec) { - for (int ref_mv_id_1 = 0; ref_mv_id_1 < ref_set[1]; ++ref_mv_id_1) { - for (int ref_mv_id_0 = 0; ref_mv_id_0 < ref_set[0]; ++ref_mv_id_0) { - const int idx = has_two_drls - ? ref_mv_id_1 * MAX_REF_MV_SEARCH + ref_mv_id_0 - : ref_mv_id_0; - mode_info[bawp][prec][idx].full_search_mv.as_int = INVALID_MV; - mode_info[bawp][prec][idx].mv.as_int = INVALID_MV; - mode_info[bawp][prec][idx].rd = INT64_MAX; - mode_info[bawp][prec][idx].drl_cost = 0; - mode_info[bawp][prec][idx].rate_mv = 0; - mode_info[bawp][prec][idx].full_mv_rate = 0; - } + const int total_ref_mv_idx = ref_set[1] * ref_set[0]; + for (int flat_idx = 0; flat_idx < total_ref_mv_idx; ++flat_idx) { + const int ref_mv_id_1 = flat_idx / ref_set[0]; + const int ref_mv_id_0 = flat_idx % ref_set[0]; + const int idx = has_two_drls + ? ref_mv_id_1 * MAX_REF_MV_SEARCH + ref_mv_id_0 + : ref_mv_id_0; + mode_info[bawp][prec][idx].full_search_mv.as_int = INVALID_MV; + mode_info[bawp][prec][idx].mv.as_int = INVALID_MV; + mode_info[bawp][prec][idx].rd = INT64_MAX; + mode_info[bawp][prec][idx].drl_cost = 0; + mode_info[bawp][prec][idx].rate_mv = 0; + mode_info[bawp][prec][idx].full_mv_rate = 0; } } } @@ -5390,15 +5855,10 @@ static int64_t handle_inter_mode( av2_mode_context_analyzer(mbmi_ext->mode_context, mbmi->ref_frame); const ModeCosts *mode_costs = &x->mode_costs; - const int prediction_mode_cost = - cost_prediction_mode(mode_costs, this_mode, cm, mbmi, xd, mode_ctx); - - const int base_rate = - args->ref_frame_cost + args->single_comp_cost + prediction_mode_cost; for (int pb_mv_precision = mbmi->max_mv_precision; pb_mv_precision >= MV_PRECISION_8_PEL; pb_mv_precision--) { - for (i = 0; i < MAX_REF_MV_SQUARE - 1; ++i) { + for (int i = 0; i < MAX_REF_MV_SQUARE - 1; ++i) { save_mv[pb_mv_precision][i][0].as_int = INVALID_MV; save_mv[pb_mv_precision][i][1].as_int = INVALID_MV; } @@ -5409,7 +5869,7 @@ static int64_t handle_inter_mode( if (is_pb_mv_prec_active) { const int down_ctx = av2_get_pb_mv_precision_down_context(cm, xd); const int mpp_flag_context = av2_get_mpp_flag_context(cm, xd); - set_precision_set(cm, xd, mbmi, bsize, 0); + set_precision_set(cm, xd, mbmi, bsize); set_most_probable_mv_precision(cm, mbmi, bsize); const PRECISION_SET *precision_def = &av2_mv_precision_sets[mbmi->mb_precision_set]; @@ -5423,7 +5883,6 @@ static int64_t handle_inter_mode( flex_mv_cost[pb_mv_precision] = cost_mv_precision( mode_costs, mbmi->max_mv_precision, pb_mv_precision, down_ctx, mbmi->most_probable_pb_mv_precision, mpp_flag_context, mbmi); - set_mv_precision(mbmi, pb_mv_precision); mbmi->bawp_flag[0] = 0; mbmi->bawp_flag[1] = 0; @@ -5443,12 +5902,8 @@ static int64_t handle_inter_mode( mbmi->bawp_flag[0] = 0; } } - - // restore the MV precision to max value - set_mv_precision(mbmi, mbmi->max_mv_precision); } else { set_mv_precision(mbmi, mbmi->max_mv_precision); - mbmi->bawp_flag[0] = 0; mbmi->bawp_flag[1] = 0; @@ -5467,24 +5922,13 @@ static int64_t handle_inter_mode( mbmi->bawp_flag[0] = 0; } } + set_mv_precision(mbmi, mbmi->max_mv_precision); - // Main loop of this function. This will iterate over all combinations of - // JMVD scaling factors, reference MVs in the dynamic reference list, CWP - // indices, MV precisions, BAWP flags, and refinement modes, and do the - // following: - // 1.) Get the current MV. Create newmv MV if necessary - // 2.) Search compound type and parameters if applicable - // 3.) Do interpolation filter search - // 4.) Build the inter predictor - // 5.) Pick the motion mode - // 6.) Update stats if best so far - mbmi->refinemv_flag = - 0; // initialize to 0; later on the default value is assigned + // Setup search environment and state for evaluating inter prediction + // candidates across MV precisions. const int jmvd_scaling_factor_num = is_joint_mvd_coding_mode(mbmi->mode) ? JOINT_NEWMV_SCALE_FACTOR_CNT : 1; - // Declarations moved from inner scopes to support PredictorSearchState - int64_t best_cwp_costs[MAX_CWP_NUM]; int best_cwp_idxs[MAX_CWP_NUM]; for (int cwp_idx = 0; cwp_idx < MAX_CWP_NUM; ++cwp_idx) { @@ -5493,10 +5937,10 @@ static int64_t handle_inter_mode( } PredictorSearchEnv env; - init_predictor_search_env(&env, args, rd_buffers, &orig_dst, &tmp_dst, - skip_rd, do_tx_search, inter_modes_info, - motion_mode_cand, top_motion_mode_model_rd, - best_est_rd); + init_predictor_search_env( + &env, args, rd_buffers, &orig_dst, &tmp_dst, skip_rd, do_tx_search, + inter_modes_info, motion_mode_cand, top_motion_mode_model_rd, best_est_rd, + is_best_mode_warp, best_mode_rd_so_far); PredictorSearchState search_state; init_predictor_search_state( @@ -5505,360 +5949,77 @@ static int64_t handle_inter_mode( best_tx_type_map, best_cctx_type_map, best_cwp_costs, best_cwp_idxs, &ref_best_rd, best_ref_mv_idx, &mode_info, &save_mv); - for (int scale_index = 0; scale_index < jmvd_scaling_factor_num; - ++scale_index) { - // Dry pass: cap jmvd scale index. - if (x->apply_dry_pass_shortcuts && scale_index > cfg->jmvd_scale_cap) + set_precision_set(cm, xd, mbmi, bsize); + set_most_probable_mv_precision(cm, mbmi, bsize); + const PRECISION_SET *precision_def = + &av2_mv_precision_sets[mbmi->mb_precision_set]; + + MvSubpelPrecision best_precision_so_far = mbmi->max_mv_precision; + int64_t best_precision_rd_so_far = INT64_MAX; + int best_precision_dx_so_far = precision_def->num_precisions; + + for (int precision_dx = precision_def->num_precisions - 1; precision_dx >= 0; + precision_dx--) { + const MvSubpelPrecision pb_mv_precision = + precision_def->precision[precision_dx]; + mbmi->pb_mv_precision = pb_mv_precision; + if (!is_pb_mv_prec_active && (pb_mv_precision != mbmi->max_mv_precision)) continue; - mbmi->jmvd_scale_mode = scale_index; - if (is_joint_amvd_coding_mode(mbmi->mode, mbmi->use_amvd)) { - if (scale_index > JOINT_AMVD_SCALE_FACTOR_CNT - 1) continue; - } - if (cpi->sf.inter_sf.early_terminate_jmvd_scale_factor) { - if (scale_index > 0 && best_rd > 1.5 * ref_best_rd && - (!is_inter_compound_mode(best_ref_mode))) - continue; - } - - int ref_mv_idx[2]; - for (ref_mv_idx[1] = 0; ref_mv_idx[1] < ref_set[1]; ++ref_mv_idx[1]) { - for (ref_mv_idx[0] = 0; ref_mv_idx[0] < ref_set[0]; ++ref_mv_idx[0]) { - if (prune_ref_mv_idx_for_warp_newmv( - mbmi, *search_state.best_rd, best_mode_rd_so_far, - is_best_mode_warp, ref_mv_idx[0], - cpi->sf.inter_sf.prune_warp_newmv_ref_mv_idx)) - continue; - // apply early termination method to jmvd scaling factors - if (cpi->sf.inter_sf.early_terminate_jmvd_scale_factor) { - if (scale_index > 0 && (ref_mv_idx[0] > 0 || ref_mv_idx[1] > 0) && - best_mbmi.jmvd_scale_mode == 0 && - (best_mbmi.ref_mv_idx[0] < ref_mv_idx[0] || - best_mbmi.ref_mv_idx[1] < ref_mv_idx[1])) - continue; - } - if (mbmi->ref_frame[0] == mbmi->ref_frame[1] && - mbmi->mode == NEAR_NEARMV && ref_mv_idx[0] >= ref_mv_idx[1]) - continue; - mbmi->cwp_idx = CWP_EQUAL; - const int same_side = is_ref_frame_same_side(cm, mbmi); - int cwp_loop_num = cm->features.enable_cwp ? MAX_CWP_NUM : 1; - if (best_cwp_idxs[scale_index] == CWP_EQUAL && - (ref_mv_idx[0] > 0 || ref_mv_idx[1] > 0)) - cwp_loop_num = 1; - // Dry pass: use only cwp_idx == CWP_EQUAL (no CWP search). - if (x->apply_dry_pass_shortcuts) cwp_loop_num = cfg->cwp_loop_cap; - - int cwp_search_mask[MAX_CWP_NUM] = { 0 }; - av2_zero(cwp_search_mask); - // Loop all supported weighting factors for CWP - for (int cwp_search_idx = 0; cwp_search_idx < cwp_loop_num; - cwp_search_idx++) { - mbmi->ref_mv_idx[1] = ref_mv_idx[1]; - mbmi->ref_mv_idx[0] = ref_mv_idx[0]; - mbmi->interinter_comp.type = COMPOUND_AVERAGE; - mbmi->comp_group_idx = 0; - mbmi->motion_mode = SIMPLE_TRANSLATION; - - mbmi->cwp_idx = cwp_weighting_factor[same_side][cwp_search_idx]; - - if (mbmi->cwp_idx != CWP_EQUAL) { - if (!is_cwp_allowed(mbmi)) break; - if (cwp_search_mask[cwp_search_idx] == 0) { - continue; - } - } - if (mbmi->cwp_idx == -1) { - break; - } - - // Initialize compound mode data - mbmi->interinter_comp.type = COMPOUND_AVERAGE; - mbmi->comp_group_idx = 0; - if (mbmi->ref_frame[1] == INTRA_FRAME) - mbmi->ref_frame[1] = NONE_FRAME; - - mbmi->num_proj_ref[0] = mbmi->num_proj_ref[1] = 0; - mbmi->motion_mode = SIMPLE_TRANSLATION; - mbmi->ref_mv_idx[1] = ref_mv_idx[1]; - mbmi->ref_mv_idx[0] = ref_mv_idx[0]; - int ref_mv_idx_type = av2_ref_mv_idx_type(mbmi, ref_mv_idx); - set_mv_precision(mbmi, mbmi->max_mv_precision); - if (mbmi->mode != WARPMV && prune_modes_based_on_tpl && - !ref_match_found_in_above_nb && !ref_match_found_in_left_nb && - (ref_best_rd != INT64_MAX)) { - // Skip mode if TPL model indicates it will not be beneficial. - if (prune_modes_based_on_tpl_stats( - &cm->features, inter_cost_info_from_tpl, refs, - ref_mv_idx[0], this_mode, - cpi->sf.inter_sf.prune_inter_modes_based_on_tpl)) - continue; - } - const int drl_cost = - get_drl_cost(cm->features.max_drl_bits, mbmi, mbmi_ext, x); - - MvSubpelPrecision best_precision_so_far = mbmi->max_mv_precision; - int64_t best_precision_rd_so_far = INT64_MAX; - set_precision_set(cm, xd, mbmi, bsize, ref_mv_idx); - set_most_probable_mv_precision(cm, mbmi, bsize); - const PRECISION_SET *precision_def = - &av2_mv_precision_sets[mbmi->mb_precision_set]; - int best_precision_dx_so_far = precision_def->num_precisions; - - for (int precision_dx = precision_def->num_precisions - 1; - precision_dx >= 0; precision_dx--) { - MvSubpelPrecision pb_mv_precision = - precision_def->precision[precision_dx]; - mbmi->pb_mv_precision = pb_mv_precision; - if (!is_pb_mv_prec_active && - (pb_mv_precision != mbmi->max_mv_precision)) { - continue; - } - assert(pb_mv_precision <= mbmi->max_mv_precision); - // Dry pass: try only the top N MV precisions. - if (x->apply_dry_pass_shortcuts && - precision_dx < - precision_def->num_precisions - cfg->precisions_from_top) - break; - - const int jmvd_scale_mode_cost = - get_jmvd_scale_mode_cost(mbmi, mode_costs); - const int rate_so_far = base_rate + drl_cost + - flex_mv_cost[mbmi->pb_mv_precision] + - jmvd_scale_mode_cost; - if (cpi->sf.inter_sf.skip_mode_eval_based_on_rate_cost && - ref_best_rd != INT64_MAX && - RDCOST(x->rdmult, rate_so_far, 0) > ref_best_rd) { - continue; - } - - // apply early termination method to jmvd scaling factors - if (cpi->sf.inter_sf.early_terminate_jmvd_scale_factor) { - if (scale_index > 0 && (!is_inter_compound_mode(best_ref_mode)) && - mbmi->pb_mv_precision <= MV_PRECISION_HALF_PEL && - best_mbmi.jmvd_scale_mode == 0 && - best_mbmi.pb_mv_precision > MV_PRECISION_HALF_PEL) - continue; - } - - if (is_pb_mv_prec_active) { - if (cpi->sf.flexmv_sf.terminate_early_4_pel_precision && - pb_mv_precision < MV_PRECISION_FOUR_PEL && - best_precision_so_far >= MV_PRECISION_QTR_PEL) - continue; - if (prune_curr_mv_precision_eval(cpi, mbmi, precision_def, - precision_dx, - best_precision_dx_so_far)) - continue; - if (mbmi->ref_mv_idx[0] || mbmi->ref_mv_idx[1]) { - if (cpi->sf.flexmv_sf.do_not_search_8_pel_precision && - mbmi->pb_mv_precision == MV_PRECISION_8_PEL) - continue; - - if (cpi->sf.flexmv_sf.do_not_search_4_pel_precision && - mbmi->pb_mv_precision == MV_PRECISION_FOUR_PEL) - continue; - } - } - // Get the default value of SMVR flag based on mode - assert(mbmi->motion_mode == SIMPLE_TRANSLATION); - mbmi->refinemv_flag = get_default_refinemv_flag(cm, mbmi); - - int_mv cur_mv[2]; - // TODO(Cherma): Extend this speed feature to support compound mode - int skip_repeated_ref_mv = - is_comp_pred ? 0 : cpi->sf.inter_sf.skip_repeated_ref_mv; - // Generate the current mv according to the prediction mode - if (mbmi->mode != WARPMV && - !build_cur_mv(cur_mv, this_mode, cm, x, skip_repeated_ref_mv)) { - continue; - } - // For WARPMV mode we will build MV in the later stage - // Currently initialize to 0 - if (mbmi->mode == WARPMV) { - cur_mv[0].as_int = 0; - cur_mv[1].as_int = 0; - - assert(ref_mv_idx[0] == 0 && ref_mv_idx[1] == 0); - } - - if (mbmi->mode != WARPMV && cpi->sf.flexmv_sf.skip_similar_ref_mv && - skip_similar_ref_mv(cpi, x, bsize)) { - continue; - } - - assert(IMPLIES(mbmi->mode == WARPMV, - mbmi->pb_mv_precision == mbmi->max_mv_precision)); - - int_mv bawp_off_mv[2]; - int64_t bawp_off_newmv_ret_val = 0; - int bawp_off_rate_mv = 0; - for (i = 0; i < is_comp_pred + 1; ++i) { - bawp_off_mv[i].as_int = cur_mv[i].as_int; - } + assert(pb_mv_precision <= mbmi->max_mv_precision); + // Dry pass: try only the top N MV precisions. + if (x->apply_dry_pass_shortcuts && + precision_dx < precision_def->num_precisions - cfg->precisions_from_top) + break; - int bawp_eanbled = cm->features.enable_bawp && - !mbmi->refinemv_flag && - av2_allow_bawp(cm, mbmi, xd->mi_row, xd->mi_col); - if (bawp_eanbled && av2_allow_explicit_bawp(mbmi)) - bawp_eanbled += EXPLICIT_BAWP_SCALE_CNT; - // Dry pass: cap BAWP flag (0 => BAWP off). - if (x->apply_dry_pass_shortcuts) - bawp_eanbled = AVMMIN(bawp_eanbled, cfg->bawp_cap); - for (int bawp_flag = 0; bawp_flag <= bawp_eanbled; bawp_flag++) { - if (mbmi->ref_mv_idx[0] > 0 && bawp_flag > 1 && - best_mbmi.bawp_flag[0] == 0) - continue; + if (is_pb_mv_prec_active) { + if (cpi->sf.flexmv_sf.terminate_early_4_pel_precision && + pb_mv_precision < MV_PRECISION_FOUR_PEL && + best_precision_so_far >= MV_PRECISION_QTR_PEL) + continue; + if (prune_curr_mv_precision_eval(cpi, mbmi, precision_def, precision_dx, + best_precision_dx_so_far)) + continue; + } - mbmi->bawp_flag[0] = bawp_flag; - - for (int bawp_flag_uv = 0; bawp_flag_uv <= AVMMIN(1, bawp_flag); - bawp_flag_uv++) { - if (bawp_flag_uv && - (!xd->is_chroma_ref || cm->seq_params.monochrome)) { - mbmi->bawp_flag[1] = 0; - continue; - } - mbmi->bawp_flag[1] = bawp_flag_uv; - - mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type] - .full_search_mv.as_int = INVALID_MV; - mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type] - .mv.as_int = INVALID_MV; - mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type] - .rd = INT64_MAX; - mode_info[bawp_flag][mbmi->pb_mv_precision][ref_mv_idx_type] - .drl_cost = drl_cost; - if (mbmi->mode != WARPMV && !mbmi->refinemv_flag && - !mask_check_bit(idx_mask[bawp_flag][mbmi->pb_mv_precision], - ref_mv_idx_type)) { - // MV did not perform well in simple translation search. Skip - // it. - continue; - } - - assert(!(mbmi->bawp_flag[0] && mbmi->refinemv_flag)); - - if (mbmi->bawp_flag[0] >= 1) { - bawp_off_mv[1].as_int = -1; // bawp_off_mv[1] won't be used - // when mbmi->bawp_flag==1. - assert(is_comp_pred == 0); - for (i = 0; i < is_comp_pred + 1; ++i) { - mbmi->mv[i].as_int = bawp_off_mv[i].as_int; - cur_mv[i].as_int = bawp_off_mv[i].as_int; - } - - mode_info[mbmi->bawp_flag[0]][mbmi->pb_mv_precision] - [ref_mv_idx_type] - .full_search_mv.as_int = - mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type] - .full_search_mv.as_int; - mode_info[mbmi->bawp_flag[0]][mbmi->pb_mv_precision] - [ref_mv_idx_type] - .full_mv_rate = - mode_info[0][mbmi->pb_mv_precision][ref_mv_idx_type] - .full_mv_rate; - - rate_mv = bawp_off_rate_mv; - if (bawp_off_newmv_ret_val != 0) continue; - } else { - // The above call to build_cur_mv does not handle NEWMV modes. - // Build the mv here if we have NEWMV for any predictors. - if (have_newmv_in_inter_mode(this_mode)) { -#if CONFIG_COLLECT_COMPONENT_TIMING - start_timing(cpi, handle_newmv_time); -#endif - newmv_ret_val = handle_newmv( - cpi, x, bsize, cur_mv, &rate_mv, args, - mode_info[bawp_flag][mbmi->pb_mv_precision]); + int cur_ref_set[2] = { ref_set[0], ref_set[1] }; + if (is_pb_mv_prec_active) { + if ((cpi->sf.flexmv_sf.do_not_search_8_pel_precision && + pb_mv_precision == MV_PRECISION_8_PEL) || + (cpi->sf.flexmv_sf.do_not_search_4_pel_precision && + pb_mv_precision == MV_PRECISION_FOUR_PEL)) { + cur_ref_set[0] = 1; + cur_ref_set[1] = 1; + } + } -#if CONFIG_COLLECT_COMPONENT_TIMING - end_timing(cpi, handle_newmv_time); -#endif - bawp_off_rate_mv = rate_mv; - for (i = 0; i < is_comp_pred + 1; ++i) { - bawp_off_mv[i].as_int = cur_mv[i].as_int; - } - bawp_off_newmv_ret_val = newmv_ret_val; - if (newmv_ret_val != 0) continue; - } - } - if (have_newmv_in_inter_mode(this_mode)) { - int mv_outlim = 0; - for (int ref = 0; ref < is_comp_pred + 1; ref++) { - const PREDICTION_MODE single_mode = - get_single_mode(this_mode, ref); - if (single_mode == NEWMV || single_mode == WARP_NEWMV) { - SUBPEL_MOTION_SEARCH_PARAMS ms_params; - MV ref_mv = av2_get_ref_mv(x, ref).as_mv; - if (mbmi->pb_mv_precision < MV_PRECISION_HALF_PEL) - lower_mv_precision(&ref_mv, mbmi->pb_mv_precision); - av2_make_default_subpel_ms_params( - &ms_params, cpi, x, bsize, &ref_mv, pb_mv_precision, - 0, NULL); - if (!av2_is_subpelmv_in_range(&ms_params.mv_limits, - cur_mv[ref].as_mv)) { - mv_outlim = 1; - break; - } - } - } - if (mv_outlim) continue; - - // skip NEWMV mode in drl if the motion search result is the - // same as a previous result - int skip_new_mv = - cpi->sf.inter_sf.skip_repeated_newmv || - (mbmi->pb_mv_precision != mbmi->max_mv_precision && - cpi->sf.flexmv_sf.skip_repeated_newmv_low_prec); - if (skip_new_mv && - skip_repeated_newmv( - cpi, x, bsize, do_tx_search, this_mode, - mbmi->pb_mv_precision, mbmi->bawp_flag[0], - mbmi->bawp_flag[1], &best_mbmi, motion_mode_cand, - &ref_best_rd, &best_rd_stats, &best_rd_stats_y, - &best_rd_stats_uv, - mode_info[bawp_flag][mbmi->pb_mv_precision], args, - drl_cost, refs, cur_mv, &best_rd, orig_dst, - ref_mv_idx)) - continue; - } - - const MB_MODE_INFO base_mbmi = *mbmi; - PredictorIterationContext it_ctx; - init_predictor_iteration_context( - &it_ctx, bsize, ref_mv_idx[0], ref_mv_idx[1], precision_dx, - bawp_flag, ref_mv_idx_type, scale_index, cwp_search_mask, - this_mode, refs, flex_mv_cost, drl_cost, - jmvd_scale_mode_cost, base_rate, cur_mv, rate_mv, - &base_mbmi, 0, num_planes, args->skip_motion_mode); - - for (int refinemv_loop = 0; refinemv_loop < REFINEMV_NUM_MODES; - refinemv_loop++) { - // Dry pass: cap refinemv loop index. - if (x->apply_dry_pass_shortcuts && - refinemv_loop > cfg->refinemv_cap) - break; - if (refinemv_loop == 1 && - (!switchable_refinemv_flag(cm, mbmi) || - cpi->sf.inter_sf.disable_switchable_refinemv)) - continue; - if (refinemv_loop == 1 && - cpi->sf.inter_sf.prune_refinemv_by_ref_idx && - !(base_mbmi.ref_frame[0] == 0 && - base_mbmi.ref_frame[1] == 1)) - continue; - it_ctx.refinemv_loop = refinemv_loop; - evaluate_inter_predictor( - cpi, tile_data, x, &env, &it_ctx, &search_state, - &best_precision_so_far, &best_precision_dx_so_far, - &best_precision_rd_so_far); - } - } - } - } + if (!is_comp_pred) { + const MV_REFERENCE_FRAME refs[2] = { + COMPACT_INDEX0_NRS(mbmi->ref_frame[0]), + COMPACT_INDEX1_NRS(mbmi->ref_frame[1]) + }; + for (int ref_mv_idx0 = 0; ref_mv_idx0 < cur_ref_set[0]; ++ref_mv_idx0) { + if (prune_tpl_candidate( + cpi, &search_state, this_mode, prune_modes_based_on_tpl, + ref_match_found_in_above_nb, ref_match_found_in_left_nb, + inter_cost_info_from_tpl, refs, ref_mv_idx0)) { + cur_ref_set[0] = ref_mv_idx0; + break; } } + if (cur_ref_set[0] == 0) continue; + + handle_single_inter_prediction( + cpi, tile_data, x, &env, &search_state, this_mode, bsize, cur_ref_set, + precision_dx, precision_def, &best_precision_so_far, + &best_precision_dx_so_far, &best_precision_rd_so_far, mode_ctx, args, + flex_mv_cost, idx_mask); + } else { + handle_compound_inter_prediction( + cpi, tile_data, x, &env, &search_state, this_mode, bsize, cur_ref_set, + precision_dx, precision_def, &best_precision_so_far, + &best_precision_dx_so_far, &best_precision_rd_so_far, mode_ctx, args, + flex_mv_cost, idx_mask, jmvd_scaling_factor_num, best_ref_mode); } } @@ -5872,7 +6033,7 @@ static int64_t handle_inter_mode( txfm_info->skip_txfm = best_xskip_txfm; assert(IMPLIES(mbmi->comp_group_idx == 1, mbmi->interinter_comp.type != COMPOUND_AVERAGE)); - for (i = 0; i < num_planes; ++i) { + for (int i = 0; i < num_planes; ++i) { const int num_blk_plane = (xd->plane[i].height * xd->plane[i].width) >> (2 * MI_SIZE_LOG2); memcpy(txfm_info->blk_skip[i], best_blk_skip[i], From 7b3bb2690b5667326a2bbf13c92a5164a19bdce8 Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Wed, 19 Aug 2026 09:33:42 -0700 Subject: [PATCH 174/205] CCSO BO-first warm start under early termination (#5286) Evaluating BO-only first quickly establishes a competitive rate-distortion cost which might triggers more early termination. For speed 2, RA, it provides coding gains (especially for chroma) with slightly speed up. Speed2 PSNR-Y PSNR-U PSNR-V PSNR-YUV EncTime A1 (17 frames) -0.09% -0.12% -0.96% -0.14% 99.36% A2 (33 frames) +0.02% -1.43% -1.31% -0.10% 98.39% STATS_CHANGED --- av2/encoder/pickccso.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/av2/encoder/pickccso.c b/av2/encoder/pickccso.c index 2c2170e435..67c2b51142 100644 --- a/av2/encoder/pickccso.c +++ b/av2/encoder/pickccso.c @@ -1323,7 +1323,13 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, sizeof(*cm->cur_frame->ccso_info.sb_filter_control[plane]) * sb_count); for (int scale_idx = 0; scale_idx < total_scale_idx; ++scale_idx) { - for (uint8_t ccso_bo_only = 0; ccso_bo_only < 2; ccso_bo_only++) { + for (uint8_t search_idx = 0; search_idx < 2; search_idx++) { + // A BO-only candidate is cheaper and covers a different part of the + // search space. Under early termination, evaluate it first so the full + // filter search starts with a finite RD bound. Keep the original order + // for exhaustive search, where ordering should not affect the result. + const uint8_t ccso_bo_only = + early_terminate_ccso_search ? 1 - search_idx : search_idx; int num_filter_iter = ccso_bo_only ? 1 : total_filter_support; int num_quant_iter = ccso_bo_only ? 1 : total_quant_idx; int num_edge_clf_iter = ccso_bo_only ? 1 : total_edge_classifier; From 12e5b4a582b5e215aa6c4ea0a02128fc143cbd1e Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 19 Aug 2026 09:48:40 -0700 Subject: [PATCH 175/205] Bypass Luma plane search in CCSO (#5273) For speed >= 1, if the Chroma planes ccos doesn't choose to use ccso, bypass the search over the Luma plane. Anchor: b5bb354c8000eff7a0e535b93639b813a2f7f352 Test condition: CTC, RA, 33 frames, speed 1 ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.10% | -0.02% | -0.13% | 0.08% | 92.17% | | A2 | 0.06% | -0.02% | -0.01% | 0.05% | 96.49% | | A3 | 0.12% | -0.72% | -0.31% | 0.07% | 97.72% | | A4 | 0.12% | 0.03% | 0.10% | 0.11% | 99.03% | | A5 | 0.04% | -0.30% | 0.41% | 0.04% | 98.64% | | B1 | -0.02% | -0.30% | -0.36% | -0.04% | 97.60% | |avg wo b2| 0.07% | -0.19% | -0.09% | 0.05% | 96.65% | +---------+--------+--------+--------+--------+----------+ STATS_CHANGED --------- Co-authored-by: Lin Zheng --- av2/encoder/encoder.c | 13 +++++----- av2/encoder/pickccso.c | 49 +++++++++++++++++++++++++----------- av2/encoder/pickccso.h | 15 +++++------ av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 3 +++ 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index fc879b6003..474e872dd2 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -3143,14 +3143,15 @@ static void cdef_restoration_frame(AV2_COMP *cpi, AV2_COMMON *cm, src_cpy += ccso_stride; } } - ccso_search(cm, xd, cpi->td.mb.rdmult, ext_rec_y, rec_uv, org_uv, - cpi->error_resilient_frame_seen + av2_ccso_search(cm, xd, cpi->td.mb.rdmult, ext_rec_y, rec_uv, org_uv, + cpi->error_resilient_frame_seen #if CONFIG_ENTROPY_STATS - , - &cpi->td + , + &cpi->td #endif - , - cpi->sf.lpf_sf.early_terminate_ccso_search_by_cost); + , + cpi->sf.lpf_sf.early_terminate_ccso_search_by_cost, + cpi->sf.lpf_sf.ccso_chroma_dep); ccso_frame(&cm->cur_frame->buf, cm, xd, ext_rec_y); #if CONFIG_MISMATCH_DEBUG mismatch_record_frame(&cm->cur_frame->buf, num_planes, 2); diff --git a/av2/encoder/pickccso.c b/av2/encoder/pickccso.c index 67c2b51142..c5a6fe44e7 100644 --- a/av2/encoder/pickccso.c +++ b/av2/encoder/pickccso.c @@ -1818,35 +1818,38 @@ static void derive_ccso_filter(CcsoCtx *ctx, AV2_COMMON *cm, const int plane, } /* Derive the look-up table for a frame */ -void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, - const uint16_t *ext_rec_y, uint16_t *rec_uv[MAX_MB_PLANE], - uint16_t *org_uv[MAX_MB_PLANE], bool error_resilient_frame_seen +void av2_ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, + const uint16_t *ext_rec_y, uint16_t *rec_uv[MAX_MB_PLANE], + uint16_t *org_uv[MAX_MB_PLANE], + bool error_resilient_frame_seen #if CONFIG_ENTROPY_STATS - , - ThreadData *td + , + ThreadData *td #endif - , - int early_terminate_ccso_search) { + , + int early_terminate_ccso_search, int ccso_chroma_dep) { const int num_planes = av2_num_planes(cm); const int rdmult_weight = clamp(cm->quant_params.base_qindex >> 3, 1, 37); + int rdmult_orig = rdmult; cm->ccso_info.ccso_frame_flag = false; + for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + cm->cur_frame->ccso_info.ccso_enable[plane] = false; + cm->ccso_info.ccso_enable[plane] = false; + cm->ccso_info.sb_reuse_ccso[plane] = false; + cm->ccso_info.reuse_ccso[plane] = false; + } + if ((int64_t)rdmult * rdmult_weight >= INT_MAX) { - for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { - cm->cur_frame->ccso_info.ccso_enable[plane] = false; - cm->ccso_info.ccso_enable[plane] = false; - cm->ccso_info.sb_reuse_ccso[plane] = false; - cm->ccso_info.reuse_ccso[plane] = false; - } + return; } else { CcsoCtx *ctx; CHECK_MEM_ERROR(cm, ctx, avm_calloc(1, sizeof(*ctx))); - av2_setup_dst_planes(xd->plane, &cm->cur_frame->buf, 0, 0, 0, num_planes, NULL); ctx->ccso_stride = xd->plane[AVM_PLANE_Y].dst.width; ctx->ccso_stride_ext = ctx->ccso_stride + (CCSO_PADDING_SIZE << 1); - for (int plane = AVM_PLANE_Y; plane < num_planes; ++plane) { + for (int plane = AVM_PLANE_U; plane < num_planes; ++plane) { if (plane == AVM_PLANE_U) rdmult = (rdmult * 7) >> 3; derive_ccso_filter(ctx, cm, plane, xd, org_uv[plane], ext_rec_y, rec_uv[plane], rdmult, error_resilient_frame_seen @@ -1858,6 +1861,22 @@ void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, early_terminate_ccso_search); cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[plane]; } + + int check_luma_planes = + (ccso_chroma_dep && num_planes > 1) ? cm->ccso_info.ccso_frame_flag : 1; + + if (check_luma_planes) { + derive_ccso_filter(ctx, cm, AVM_PLANE_Y, xd, org_uv[AVM_PLANE_Y], + ext_rec_y, rec_uv[AVM_PLANE_Y], rdmult_orig, + error_resilient_frame_seen +#if CONFIG_ENTROPY_STATS + , + td +#endif + , + early_terminate_ccso_search); + cm->ccso_info.ccso_frame_flag |= cm->ccso_info.ccso_enable[0]; + } avm_free(ctx); } } diff --git a/av2/encoder/pickccso.h b/av2/encoder/pickccso.h index 4da43c2b19..edc11e2b7e 100644 --- a/av2/encoder/pickccso.h +++ b/av2/encoder/pickccso.h @@ -22,15 +22,16 @@ extern "C" { #endif -void ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, - const uint16_t *ext_rec_y, uint16_t *rec_uv[MAX_MB_PLANE], - uint16_t *org_uv[MAX_MB_PLANE], bool error_resilient_frame_seen +void av2_ccso_search(AV2_COMMON *cm, MACROBLOCKD *xd, int rdmult, + const uint16_t *ext_rec_y, uint16_t *rec_uv[MAX_MB_PLANE], + uint16_t *org_uv[MAX_MB_PLANE], + bool error_resilient_frame_seen #if CONFIG_ENTROPY_STATS - , - ThreadData *td + , + ThreadData *td #endif - , - int early_terminate_ccso_search); + , + int early_terminate_ccso_search, int ccso_chroma_dep); #ifdef __cplusplus } // extern "C" diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index db16e4b346..2c4d9d1809 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -432,6 +432,7 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.reduce_search_range = 1; sf->mv_sf.subpel_search_type = boosted ? USE_8_TAPS : USE_4_TAPS; sf->mv_sf.subpel_iters_per_step = boosted ? 2 : 1; + sf->lpf_sf.ccso_chroma_dep = 1; } if (speed >= 2) { @@ -1000,6 +1001,7 @@ static AVM_INLINE void init_lpf_sf(LOOP_FILTER_SPEED_FEATURES *lpf_sf) { lpf_sf->wienerns_refine_iters = 2; lpf_sf->enable_deblock_for_partition_search = 0; lpf_sf->early_terminate_ccso_search_by_cost = 0; + lpf_sf->ccso_chroma_dep = 0; } static void av2_disable_ml_based_transform_sf(TX_SPEED_FEATURES *const tx_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 45119b1fa5..d3a7b234d7 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -1048,6 +1048,9 @@ typedef struct LOOP_FILTER_SPEED_FEATURES { // early terminate ccso search by cost threshold int early_terminate_ccso_search_by_cost; + + // bypass ccso luma plane check + int ccso_chroma_dep; } LOOP_FILTER_SPEED_FEATURES; typedef struct REALTIME_SPEED_FEATURES { From c7b93c8e164f7caac6725f72ef11cf8768497201 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 19 Aug 2026 10:16:47 -0700 Subject: [PATCH 176/205] Handle near zero coefficients in tcq (#5261) Add functions to handle the coefficients that are quantized to 1. In such cases, there is no need to check upper abs levels in the trellis framework, and hence reducing the complexity. Anchor: https://github.com/AOMediaCodec/avm/commit/b5bb354c8000eff7a0e535b93639b813a2f7f352 Test condition: CTC, RA, 33 frames, speed 1 ``` +---------+--------+--------+--------+--------+----------+ | Summary | Y | U | V | YUV | Enc-time | +---------+--------+--------+--------+--------+----------+ | A1 | 0.03% | 0.06% | -0.12% | 0.02% | 96.12% | | A2 | 0.06% | 0.31% | -0.19% | 0.06% | 96.18% | | A3 | 0.11% | -0.21% | -0.42% | 0.06% | 97.11% | | A4 | 0.16% | 0.76% | -0.91% | 0.14% | 97.20% | | A5 | -0.12% | -0.17% | -1.18% | -0.20% | 96.32% | | B1 | -0.12% | 0.03% | 0.03% | -0.11% | 96.15% | |avg wo b2| 0.03% | 0.16% | -0.32% | 0.01% | 96.42% | +---------+--------+--------+--------+--------+----------+ STATS_CHANGED --- av2/common/av2_rtcd_defs.pl | 8 + av2/encoder/trellis_quant.c | 304 ++++++++++++++++-- av2/encoder/trellis_quant.h | 1 + av2/encoder/x86/trellis_quant_avx2.c | 321 ++++++++++++++++++- test/trellis_test.cc | 447 +++++++++++++++++++++++++++ 5 files changed, 1043 insertions(+), 38 deletions(-) diff --git a/av2/common/av2_rtcd_defs.pl b/av2/common/av2_rtcd_defs.pl index d1ebd23cb0..37a5d4ffa5 100644 --- a/av2/common/av2_rtcd_defs.pl +++ b/av2/common/av2_rtcd_defs.pl @@ -221,13 +221,21 @@ () # trellis quant add_proto qw/void av2_decide_states/, "const struct tcq_node_t *prev, const struct tcq_rate_t *rd, const struct prequant_t *pq, int limits, int tru_eob, int64_t rdmult, struct tcq_node_t *decision"; specialize qw/av2_decide_states avx2/; + add_proto qw/void av2_decide_states_q1/, "const struct tcq_node_t *prev, const struct tcq_rate_t *rd, const struct prequant_t *pq, int limits, int tru_eob, int64_t rdmult, struct tcq_node_t *decision"; + specialize qw/av2_decide_states_q1 avx2/; add_proto qw/void av2_pre_quant/, "tran_low_t tqc, struct prequant_t* pqData, const int32_t* quant_ptr, int dqv, int log_scale, int scan_pos"; specialize qw/av2_pre_quant avx2/; + add_proto qw/void av2_pre_quant_q1/, "tran_low_t tqc, struct prequant_t* pqData, const int32_t* quant_ptr, int dqv, int log_scale, int scan_pos"; + specialize qw/av2_pre_quant_q1 avx2/; add_proto qw/void av2_get_rate_dist_def_luma/, "const struct tcq_param_t *p, const struct prequant_t *pq, const struct tcq_coeff_ctx_t *coeff_ctx, int blk_pos, int diag_ctx, int eob_rate, struct tcq_rate_t *rd"; specialize qw/av2_get_rate_dist_def_luma avx2/; + add_proto qw/void av2_get_rate_dist_def_luma_q1/, "const struct tcq_param_t *p, const struct prequant_t *pq, const struct tcq_coeff_ctx_t *coeff_ctx, int blk_pos, int diag_ctx, int eob_rate, struct tcq_rate_t *rd"; + specialize qw/av2_get_rate_dist_def_luma_q1 avx2/; add_proto qw/void av2_get_rate_dist_lf_luma/, "const struct tcq_param_t *p, const struct prequant_t *pq, const struct tcq_coeff_ctx_t *coeff_ctx, int blk_pos, int diag_ctx, int eob_rate, int coeff_sign, struct tcq_rate_t *rd"; specialize qw/av2_get_rate_dist_lf_luma avx2/; + add_proto qw/void av2_get_rate_dist_lf_luma_q1/, "const struct tcq_param_t *p, const struct prequant_t *pq, const struct tcq_coeff_ctx_t *coeff_ctx, int blk_pos, int diag_ctx, int eob_rate, int coeff_sign, struct tcq_rate_t *rd"; + specialize qw/av2_get_rate_dist_lf_luma_q1 avx2/; add_proto qw/void av2_update_states/, "const struct tcq_node_t *decision, int col, struct tcq_ctx_t *tcq_ctx"; specialize qw/av2_update_states avx2/; add_proto qw/void av2_calc_block_eob_rate/, "struct macroblock *x, int plane, TX_SIZE tx_size, int eob, uint16_t *block_eob_rate"; diff --git a/av2/encoder/trellis_quant.c b/av2/encoder/trellis_quant.c index 292bb3e8dc..133da9a307 100644 --- a/av2/encoder/trellis_quant.c +++ b/av2/encoder/trellis_quant.c @@ -36,19 +36,30 @@ static AVM_INLINE void init_tcq_decision(tcq_node_t *decision) { // Initialize previous state storage to identity mapping. // As trellis decisions are made, magnitudes and // state transitions will be updated. -static AVM_INLINE void init_tcq_ctx(struct tcq_ctx_t *tcq_ctx) { +static AVM_INLINE void init_tcq_ctx(struct tcq_ctx_t *tcq_ctx, + const tcq_param_t *p, int si) { + int blk_pos = p->scan[si]; + TX_SIZE tx_size = p->tx_size; + const int bwl = get_txb_bwl(tx_size); + const int row = blk_pos >> bwl; + const int col = blk_pos - (row << bwl); + + int diag = AVMMIN(row + col, MAX_DIAG) + 2; + int ctx_array_size = diag << TCQ_N_STATES_LOG; + static const int8_t init_st[4][TCQ_MAX_STATES] = { { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0, 1, 2, 3, 4, 5, 6, 7 }, }; - memset(&tcq_ctx->mag_base, 0, sizeof(tcq_ctx->mag_base)); - memset(&tcq_ctx->mag_mid, 0, sizeof(tcq_ctx->mag_mid)); - memset(&tcq_ctx->ctx, 0, sizeof(tcq_ctx->ctx)); - memset(&tcq_ctx->lev_new, 0, sizeof(tcq_ctx->lev_new)); - int n_elem = sizeof(tcq_ctx->prev_st) / sizeof(tcq_ctx->prev_st[0]); - for (int i = 0; i < n_elem; i += 4) { + + memset(&tcq_ctx->mag_base, 0, ctx_array_size); + memset(&tcq_ctx->mag_mid, 0, ctx_array_size); + memset(&tcq_ctx->ctx, 0, ctx_array_size); + memset(&tcq_ctx->lev_new, 0, ctx_array_size); + + for (int i = 0; i < diag; i += 4) { memcpy(tcq_ctx->prev_st[i], init_st, sizeof(init_st)); } } @@ -303,6 +314,32 @@ static void update_node_general(int64_t costA, int64_t costB, int64_t cost_zero, } } +static void update_node_q1(int64_t costB, int64_t cost_zero, int rateB, + int rate_zero, tran_low_t absB, int limits, + int prev_rate, int prev_state, + tcq_node_t *decision_0, tcq_node_t *decision_1) { + assert(tcq_parity(absB) == 1); + + (void)limits; + int even_bias = 1; + rateB += prev_rate; + rate_zero += prev_rate; + + if (cost_zero < decision_0->rdCost + even_bias) { + decision_0->rdCost = cost_zero; + decision_0->rate = rate_zero; + decision_0->prevId = prev_state; + decision_0->absLevel = 0; + } + + if (costB < decision_1->rdCost) { + decision_1->rdCost = costB; + decision_1->rate = rateB; + decision_1->prevId = prev_state; + decision_1->absLevel = absB; + } +} + // Evaluate NEW_EOB at the current position static void decide_eob(int64_t costA, int64_t costB, int rateA, int rateB, tran_low_t absA, tran_low_t absB, tcq_node_t *decision_0, @@ -384,21 +421,111 @@ void av2_decide_states_c(const struct tcq_node_t *prev, } } +void av2_decide_states_q1_c(const struct tcq_node_t *prev, + const struct tcq_rate_t *rd, + const struct prequant_t *pq, int limits, + int try_eob, int64_t rdmult, + struct tcq_node_t *decision) { + const int32_t *rate = rd->rate; + const int32_t *rate_zero = rd->rate_zero; + const int32_t *rate_eob = rd->rate_eob; + int64_t rdCost[2 * TCQ_MAX_STATES]; + int64_t rdCost_zero[TCQ_MAX_STATES]; + int64_t rdCost_eob[2]; + + // Init to 0 to avoid ASAN uninitialization warnings + memset(rdCost, 0, sizeof(rdCost)); + memset(rdCost_zero, 0, sizeof(rdCost_zero)); + init_tcq_decision(decision); + + for (int i = 0; i < TCQ_N_STATES; i++) { + int a0 = tcq_quant(i); + int a1 = a0 + 2; + rdCost_zero[i] = prev[i].rdCost + RDCOST(rdmult, rate_zero[i], 0); + + if (a0 == 1) { + rdCost[2 * i] = + prev[i].rdCost + RDCOST(rdmult, rate[2 * i], pq->deltaDist[a0]); + } else { + rdCost[2 * i + 1] = + prev[i].rdCost + RDCOST(rdmult, rate[2 * i + 1], pq->deltaDist[a1]); + } + } + rdCost_eob[0] = RDCOST(rdmult, rate_eob[0], pq->deltaDist[0]); + rdCost_eob[1] = RDCOST(rdmult, rate_eob[1], pq->deltaDist[2]); + + update_node_q1(rdCost[1], rdCost_zero[0], rate[1], rate_zero[0], + pq->absLevel[2], limits, prev[0].rate, 0, &decision[0], + &decision[4]); + update_node_q1(rdCost[3], rdCost_zero[1], rate[3], rate_zero[1], + pq->absLevel[2], limits, prev[1].rate, 1, &decision[4], + &decision[0]); + update_node_q1(rdCost[4], rdCost_zero[2], rate[4], rate_zero[2], + pq->absLevel[1], limits, prev[2].rate, 2, &decision[1], + &decision[5]); + update_node_q1(rdCost[6], rdCost_zero[3], rate[6], rate_zero[3], + pq->absLevel[1], limits, prev[3].rate, 3, &decision[5], + &decision[1]); + update_node_q1(rdCost[9], rdCost_zero[4], rate[9], rate_zero[4], + pq->absLevel[2], limits, prev[4].rate, 4, &decision[6], + &decision[2]); + update_node_q1(rdCost[11], rdCost_zero[5], rate[11], rate_zero[5], + pq->absLevel[2], limits, prev[5].rate, 5, &decision[2], + &decision[6]); + update_node_q1(rdCost[12], rdCost_zero[6], rate[12], rate_zero[6], + pq->absLevel[1], limits, prev[6].rate, 6, &decision[7], + &decision[3]); + update_node_q1(rdCost[14], rdCost_zero[7], rate[14], rate_zero[7], + pq->absLevel[1], limits, prev[7].rate, 7, &decision[3], + &decision[7]); + + if (try_eob) { + if (rdCost_eob[1] < decision[4].rdCost) { + decision[4].rdCost = rdCost_eob[1]; + decision[4].rate = rate_eob[1]; + decision[4].prevId = -1; + decision[4].absLevel = pq->absLevel[2]; + } + } +} + +void av2_pre_quant_q1_c(tran_low_t tqc, struct prequant_t *pqData, + const int32_t *quant_ptr, int dqv, int log_scale, + int scan_pos) { + // calculate qIdx + (void)quant_ptr; + (void)scan_pos; + tran_low_t abs_tqc = abs(tqc); + + pqData->qIdx = 1; + + const int64_t dist0 = get_coeff_dist(abs_tqc, 0, log_scale - 1); + + tran_low_t dqca = + (tran_low_t)ROUND_POWER_OF_TWO_64(dqv, QUANT_TABLE_BITS) >> log_scale; + + pqData->absLevel[1] = 1; + pqData->deltaDist[1] = get_coeff_dist(abs_tqc, dqca, log_scale - 1) - dist0; + + tran_low_t dqcb = + (tran_low_t)ROUND_POWER_OF_TWO_64(dqv << 1, QUANT_TABLE_BITS) >> + log_scale; + pqData->absLevel[2] = 1; + pqData->deltaDist[2] = get_coeff_dist(abs_tqc, dqcb, log_scale - 1) - dist0; +} + // Prepare 4 quant candidates for each coeff // [0] and [2] are for Q0. One is even and the other is odd // [1] and [3] are for Q1. One is even and the other is odd void av2_pre_quant_c(tran_low_t tqc, struct prequant_t *pqData, const int32_t *quant_ptr, int dqv, int log_scale, int scan_pos) { + (void)quant_ptr; + (void)scan_pos; // calculate qIdx - const int shift = 16 - log_scale + QUANT_FP_BITS; - tran_low_t add = -((2 << shift) >> 1); tran_low_t abs_tqc = abs(tqc); - - tran_low_t qIdx = (int)AVMMAX( - 1, AVMMIN(INT16_MAX, - ((int64_t)abs_tqc * quant_ptr[scan_pos != 0] + add) >> shift)); - pqData->qIdx = qIdx; + pqData->qIdx = AVMMAX(pqData->orig_qIdx - 2, 1); + int32_t qIdx = pqData->qIdx; const int64_t dist0 = get_coeff_dist(abs_tqc, 0, log_scale - 1); @@ -556,6 +683,13 @@ void trellis_first_pos(const tcq_param_t *p, int scan_pos, tcq_ctx_t *tcq_ctx, prequant_t pqData; int tempdqv = get_dqv(dequant, scan[scan_pos], iqmatrix); + int shift = 16 - log_scale + QUANT_FP_BITS; + + tran_low_t orig_qIdx = + (tran_low_t)(((int64_t)abs(tcoeff[blk_pos]) * quant[scan_pos != 0]) >> + shift); + pqData.orig_qIdx = orig_qIdx; + av2_pre_quant(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, scan_pos); // init state @@ -602,6 +736,87 @@ void trellis_first_pos(const tcq_param_t *p, int scan_pos, tcq_ctx_t *tcq_ctx, } } +void av2_get_rate_dist_lf_luma_q1_c(const struct tcq_param_t *p, + const struct prequant_t *pq, + const struct tcq_coeff_ctx_t *coeff_ctx, + int blk_pos, int diag_ctx, int eob_rate, + int coeff_sign, struct tcq_rate_t *rd) { + const tran_low_t *absLevel = pq->absLevel; + const LV_MAP_COEFF_COST *txb_costs = p->txb_costs; + const int32_t *tmp_sign = p->tmp_sign; + TX_CLASS tx_class = p->tx_class; + int bwl = p->bwl; + int dc_sign_ctx = p->dc_sign_ctx; + int t_sign = tmp_sign[blk_pos]; + int plane = 0; + + for (int i = 0; i < TCQ_N_STATES; i++) { + int q_i = tcq_quant(i); + int base_ctx = + get_base_diag_ctx(diag_ctx) + get_base_ctx(coeff_ctx->coef[i]); + int mid_ctx = get_mid_diag_ctx(diag_ctx) + get_mid_ctx(coeff_ctx->coef[i]); + + rd->rate_zero[i] = txb_costs->base_lf_cost[base_ctx][q_i][0]; + + if (q_i == 1) { + int a0 = q_i; // 1 + int cost0 = get_coeff_cost(blk_pos, absLevel[a0], coeff_sign, base_ctx, + mid_ctx, dc_sign_ctx, txb_costs, bwl, tx_class, + tmp_sign, plane, 1, q_i); + rd->rate[2 * i] = cost0; + } else { + int a1 = q_i + 2; + int cost1 = get_coeff_cost(blk_pos, absLevel[a1], coeff_sign, base_ctx, + mid_ctx, dc_sign_ctx, txb_costs, bwl, tx_class, + tmp_sign, plane, 1, q_i); + rd->rate[2 * i + 1] = cost1; + } + } + rd->rate_eob[1] = + eob_rate + get_coeff_cost_eob(blk_pos, absLevel[2], coeff_sign, + coeff_ctx->coef_eob, dc_sign_ctx, txb_costs, + bwl, tx_class, t_sign, plane); +} + +void av2_get_rate_dist_def_luma_q1_c(const struct tcq_param_t *p, + const struct prequant_t *pq, + const struct tcq_coeff_ctx_t *coeff_ctx, + int blk_pos, int diag_ctx, int eob_rate, + struct tcq_rate_t *rd) { + const LV_MAP_COEFF_COST *txb_costs = p->txb_costs; + TX_CLASS tx_class = p->tx_class; + int bwl = p->bwl; + const int plane = 0; + const int t_sign = 0; + const int sign = 0; + const int dc_sign_ctx = 0; + const tran_low_t *absLevel = pq->absLevel; + + for (int i = 0; i < TCQ_N_STATES; i++) { + int q_i = tcq_quant(i); + int base_ctx = + get_base_diag_ctx(diag_ctx) + get_base_ctx(coeff_ctx->coef[i]); + + rd->rate_zero[i] = txb_costs->base_cost[base_ctx][q_i][0]; + + if (q_i == 1) { + int a0 = q_i; // 1 + int cost0 = get_coeff_cost_def(absLevel[a0], coeff_ctx->coef[i], diag_ctx, + plane, txb_costs, q_i, t_sign, sign); + rd->rate[2 * i] = cost0; + } else { + int a1 = q_i + 2; // 1 + int cost1 = get_coeff_cost_def(absLevel[a1], coeff_ctx->coef[i], diag_ctx, + plane, txb_costs, q_i, t_sign, sign); + rd->rate[2 * i + 1] = cost1; + } + } + rd->rate_eob[1] = + eob_rate + get_coeff_cost_eob(blk_pos, absLevel[2], sign, + coeff_ctx->coef_eob, dc_sign_ctx, txb_costs, + bwl, tx_class, t_sign, plane); +} + void av2_get_rate_dist_def_luma_c(const struct tcq_param_t *p, const struct prequant_t *pq, const struct tcq_coeff_ctx_t *coeff_ctx, @@ -743,6 +958,7 @@ static void trellis_loop_diagonal_st8(const tcq_param_t *p, int scan_hi, int dc_coeff_sign = tcoeff[0] < 0; int blk_pos_inc = (1 << bwl) - 1; int blk_pos, row, col; + int shift = 16 - log_scale + QUANT_FP_BITS; // Handle default region. while (scan_hi >= 10) { @@ -761,22 +977,35 @@ static void trellis_loop_diagonal_st8(const tcq_param_t *p, int scan_hi, prequant_t pqData; int tempdqv = get_dqv(dequant, scan[scan_pos], iqmatrix); - av2_pre_quant(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, - scan_pos); + + tran_low_t orig_qIdx = + (tran_low_t)(((int64_t)abs(tcoeff[blk_pos]) * quant[scan_pos != 0]) >> + shift); + pqData.orig_qIdx = orig_qIdx; // Get coeff contexts tcq_coeff_ctx_t coeff_ctx; av2_get_coeff_ctx(tcq_ctx, col, &coeff_ctx); coeff_ctx.coef_eob = get_lower_levels_ctx_eob(bwl, height, scan_pos); int eob_rate = block_eob_rate[scan_pos]; - - // Calculate rate and distortion. tcq_rate_t rd; - av2_get_rate_dist_def_luma(p, &pqData, &coeff_ctx, blk_pos, diag_ctx, - eob_rate, &rd); - av2_decide_states(prev_decision, &rd, &pqData, lf, try_eob, rdmult, - decision); + if (pqData.orig_qIdx < 2) { + av2_pre_quant_q1(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, + scan_pos); + av2_get_rate_dist_def_luma_q1(p, &pqData, &coeff_ctx, blk_pos, diag_ctx, + eob_rate, &rd); + av2_decide_states_q1(prev_decision, &rd, &pqData, lf, try_eob, rdmult, + decision); + } else { + av2_pre_quant(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, + scan_pos); + av2_get_rate_dist_def_luma(p, &pqData, &coeff_ctx, blk_pos, diag_ctx, + eob_rate, &rd); + + av2_decide_states(prev_decision, &rd, &pqData, lf, try_eob, rdmult, + decision); + } av2_update_states(decision, col, tcq_ctx); @@ -804,22 +1033,35 @@ static void trellis_loop_diagonal_st8(const tcq_param_t *p, int scan_hi, prequant_t pqData; int tempdqv = get_dqv(dequant, scan[scan_pos], iqmatrix); - av2_pre_quant(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, - scan_pos); + + tran_low_t orig_qIdx = + (tran_low_t)(((int64_t)abs(tcoeff[blk_pos]) * quant[scan_pos != 0]) >> + shift); + pqData.orig_qIdx = orig_qIdx; // Get coeff contexts tcq_coeff_ctx_t coeff_ctx; av2_get_coeff_ctx(tcq_ctx, col, &coeff_ctx); coeff_ctx.coef_eob = get_lower_levels_ctx_eob(bwl, height, scan_pos); int eob_rate = block_eob_rate[scan_pos]; - - // Calculate rate and distortion. tcq_rate_t rd; - av2_get_rate_dist_lf_luma(p, &pqData, &coeff_ctx, blk_pos, diag_ctx, - eob_rate, dc_coeff_sign, &rd); - av2_decide_states(prev_decision, &rd, &pqData, lf, try_eob, rdmult, - decision); + if (pqData.orig_qIdx < 2) { + av2_pre_quant_q1(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, + scan_pos); + av2_get_rate_dist_lf_luma_q1(p, &pqData, &coeff_ctx, blk_pos, diag_ctx, + eob_rate, dc_coeff_sign, &rd); + av2_decide_states_q1(prev_decision, &rd, &pqData, lf, try_eob, rdmult, + decision); + } else { + // Calculate rate and distortion. + av2_pre_quant(tcoeff[blk_pos], &pqData, quant, tempdqv, log_scale, + scan_pos); + av2_get_rate_dist_lf_luma(p, &pqData, &coeff_ctx, blk_pos, diag_ctx, + eob_rate, dc_coeff_sign, &rd); + av2_decide_states(prev_decision, &rd, &pqData, lf, try_eob, rdmult, + decision); + } av2_update_states(decision, col, tcq_ctx); @@ -1103,7 +1345,7 @@ int av2_trellis_quant(const struct AV2_COMP *cpi, MACROBLOCK *x, int plane, // Buffers for diagonal contexts. tcq_ctx_t tcq_ctx; - init_tcq_ctx(&tcq_ctx); + init_tcq_ctx(&tcq_ctx, ¶m, first_scan_pos); // Process the first position trellis_first_pos(¶m, first_scan_pos, &tcq_ctx, trellis); diff --git a/av2/encoder/trellis_quant.h b/av2/encoder/trellis_quant.h index 17b9fa3d37..839b06ede8 100644 --- a/av2/encoder/trellis_quant.h +++ b/av2/encoder/trellis_quant.h @@ -70,6 +70,7 @@ typedef struct prequant_t { int32_t absLevel[4]; int64_t deltaDist[4]; int16_t qIdx; + int16_t orig_qIdx; } prequant_t; typedef struct tcq_rate_t { diff --git a/av2/encoder/x86/trellis_quant_avx2.c b/av2/encoder/x86/trellis_quant_avx2.c index 40e9b4dab1..c249c192b3 100644 --- a/av2/encoder/x86/trellis_quant_avx2.c +++ b/av2/encoder/x86/trellis_quant_avx2.c @@ -23,10 +23,21 @@ // av2_decide_states_*() constants. static const int32_t kShuffle[8] = { 0, 2, 1, 3, 5, 7, 4, 6 }; +static const int32_t kShuffleOdd[8] = { 3, 1, 6, 4, 0, 0, 0, 0 }; static const int32_t kPrevId[TCQ_MAX_STATES / 4][8] = { { 0, 0 << 24, 0, 1 << 24, 0, 2 << 24, 0, 3 << 24 }, { 0, 4 << 24, 0, 5 << 24, 0, 6 << 24, 0, 7 << 24 }, }; +static const int32_t kPrevIdQ1[2][2][8] = { + { + { 0, 0 << 24, 0, 1 << 24, 0, 2 << 24, 0, 3 << 24 }, + { 0, 1 << 24, 0, 0 << 24, 0, 3 << 24, 0, 2 << 24 }, + }, + { + { 0, 4 << 24, 0, 5 << 24, 0, 6 << 24, 0, 7 << 24 }, + { 0, 5 << 24, 0, 4 << 24, 0, 7 << 24, 0, 6 << 24 }, + }, +}; // clang-format off static const uint8_t kGolombExp0Bits[256] = { @@ -187,6 +198,106 @@ void av2_decide_states_avx2(const struct tcq_node_t *prev, } } +void av2_decide_states_q1_avx2(const struct tcq_node_t *prev, + const struct tcq_rate_t *rd, + const struct prequant_t *pq, int limits, + int try_eob, int64_t rdmult, + struct tcq_node_t *decision) { + (void)limits; + assert((rdmult >> 32) == 0); + + __m256i c_rdmult = _mm256_set1_epi64x(rdmult); + __m256i c_round = _mm256_set1_epi64x(1 << (AV2_PROB_COST_SHIFT - 1)); + + __m128i dist12 = _mm_lddqu_si128((__m128i *)&pq->deltaDist[1]); + __m256i dist_2211 = + _mm256_permute4x64_epi64(_mm256_castsi128_si256(dist12), 0x05); + dist_2211 = _mm256_slli_epi64(dist_2211, RDDIV_BITS); + + __m256i *out_a = (__m256i *)&decision[0]; + __m256i *out_b = (__m256i *)&decision[TCQ_N_STATES >> 1]; + + for (int i = 0; i < TCQ_N_STATES >> 2; i++) { + // Load prev states. + __m256i state01 = _mm256_lddqu_si256((__m256i *)&prev[4 * i]); + __m256i state23 = _mm256_lddqu_si256((__m256i *)&prev[4 * i + 2]); + __m256i state02 = _mm256_permute2x128_si256(state01, state23, 0x20); + __m256i state13 = _mm256_permute2x128_si256(state01, state23, 0x31); + __m256i prev_rd_zero = _mm256_unpacklo_epi64(state02, state13); + __m256i prev_rate_zero = _mm256_unpackhi_epi64(state02, state13); + prev_rate_zero = + _mm256_and_si256(prev_rate_zero, _mm256_set1_epi64x(0xFFFFFFFFULL)); + + __m256i prev_rd_odd = _mm256_shuffle_epi32(prev_rd_zero, 0x4E); + __m256i prev_rate_odd = _mm256_shuffle_epi32(prev_rate_zero, 0x4E); + + // Calc rd-cost for zero quant. + __m128i ratezero_128 = _mm_lddqu_si128((__m128i *)&rd->rate_zero[4 * i]); + __m256i ratezero = _mm256_cvtepu32_epi64(ratezero_128); + __m256i rdcost_zero = _mm256_mul_epu32(c_rdmult, ratezero); + rdcost_zero = _mm256_add_epi64(rdcost_zero, c_round); + rdcost_zero = _mm256_srli_epi64(rdcost_zero, AV2_PROB_COST_SHIFT); + rdcost_zero = _mm256_add_epi64(rdcost_zero, prev_rd_zero); + + // Calc rd-cost for odd quant. + __m256i rates = _mm256_lddqu_si256((__m256i *)&rd->rate[8 * i]); + __m256i permute_mask = _mm256_lddqu_si256((__m256i *)kShuffleOdd); + __m256i rate_odd_32 = _mm256_permutevar8x32_epi32(rates, permute_mask); + __m256i rate_odd = + _mm256_cvtepu32_epi64(_mm256_castsi256_si128(rate_odd_32)); + __m256i rdcost_odd = _mm256_mul_epu32(c_rdmult, rate_odd); + rdcost_odd = _mm256_add_epi64(rdcost_odd, c_round); + rdcost_odd = _mm256_srli_epi64(rdcost_odd, AV2_PROB_COST_SHIFT); + rdcost_odd = _mm256_add_epi64(rdcost_odd, dist_2211); + rdcost_odd = _mm256_add_epi64(rdcost_odd, prev_rd_odd); + + __m256i rate_zero_tot = _mm256_add_epi64(ratezero, prev_rate_zero); + __m256i rate_odd_tot = _mm256_add_epi64(rate_odd, prev_rate_odd); + + // Compare Zero vs Odd. + __m256i use_odd = _mm256_cmpgt_epi64(rdcost_zero, rdcost_odd); + __m256i rdcost_best = _mm256_blendv_epi8(rdcost_zero, rdcost_odd, use_odd); + __m256i rate_best = + _mm256_blendv_epi8(rate_zero_tot, rate_odd_tot, use_odd); + __m256i prev_id_zero = _mm256_lddqu_si256((__m256i *)kPrevIdQ1[i][0]); + __m256i prev_id_odd = _mm256_lddqu_si256((__m256i *)kPrevIdQ1[i][1]); + __m256i prev_id = _mm256_blendv_epi8(prev_id_zero, prev_id_odd, use_odd); + __m256i abs_best = + _mm256_and_si256(use_odd, _mm256_set1_epi64x(1ULL << 32)); + + // Compare with EOB candidate (only state 4 in iteration 0). + if (try_eob && i == 0) { + int rate_eob1 = rd->rate_eob[1]; + int64_t dist_eob1 = pq->deltaDist[2]; + int64_t rdcost_eob1 = + ((int64_t)rdmult * rate_eob1 + (1 << (AV2_PROB_COST_SHIFT - 1))) >> + AV2_PROB_COST_SHIFT; + rdcost_eob1 += dist_eob1 * (1 << RDDIV_BITS); + __m256i v_rdcost_eob = _mm256_set_epi64x(0, 0, rdcost_eob1, 0); + __m256i mask_eob = _mm256_set_epi64x(0, 0, (int64_t)-1, 0); + __m256i use_eob = _mm256_and_si256( + _mm256_cmpgt_epi64(rdcost_best, v_rdcost_eob), mask_eob); + rdcost_best = _mm256_blendv_epi8(rdcost_best, v_rdcost_eob, use_eob); + rate_best = _mm256_blendv_epi8( + rate_best, _mm256_set_epi64x(0, 0, rate_eob1, 0), use_eob); + prev_id = _mm256_blendv_epi8( + prev_id, _mm256_set_epi64x(0, 0, 0xff00000000000000, 0), use_eob); + abs_best = _mm256_blendv_epi8( + abs_best, _mm256_set_epi64x(0, 0, 1ULL << 32, 0), use_eob); + } + + // Pack and store state info. + __m256i info_best = _mm256_or_si256(rate_best, abs_best); + info_best = _mm256_or_si256(info_best, prev_id); + __m256i info01 = _mm256_unpacklo_epi64(rdcost_best, info_best); + __m256i info23 = _mm256_unpackhi_epi64(rdcost_best, info_best); + _mm256_storeu_si256(out_a, info01); + _mm256_storeu_si256(out_b, info23); + out_a = (__m256i *)&decision[6]; + out_b = (__m256i *)&decision[2]; + } +} + void av2_pre_quant_avx2(tran_low_t tqc, struct prequant_t *pqData, const int32_t *quant_ptr, int dqv, int log_scale, int scan_pos) { @@ -194,15 +305,13 @@ void av2_pre_quant_avx2(tran_low_t tqc, struct prequant_t *pqData, { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 } }; + (void)quant_ptr; + (void)scan_pos; + // calculate qIdx - int shift = 16 - log_scale + QUANT_FP_BITS; - int32_t add = -((2 << shift) >> 1); int32_t abs_tqc = abs(tqc); - - int32_t qIdx = (int)AVMMAX( - 1, AVMMIN(INT16_MAX, - ((int64_t)abs_tqc * quant_ptr[scan_pos != 0] + add) >> shift)); - pqData->qIdx = qIdx; + pqData->qIdx = AVMMAX(pqData->orig_qIdx - 2, 1); + int32_t qIdx = pqData->qIdx; __m256i c_zero = _mm256_setzero_si256(); __m128i base_qc = _mm_set1_epi32(qIdx); @@ -233,6 +342,32 @@ void av2_pre_quant_avx2(tran_low_t tqc, struct prequant_t *pqData, _mm256_storeu_si256((__m256i *)pqData->deltaDist, dist); } +void av2_pre_quant_q1_avx2(tran_low_t tqc, struct prequant_t *pqData, + const int32_t *quant_ptr, int dqv, int log_scale, + int scan_pos) { + (void)quant_ptr; + (void)scan_pos; + int32_t abs_tqc = abs(tqc); + + pqData->qIdx = 1; + pqData->absLevel[1] = 1; + pqData->absLevel[2] = 1; + + __m128i dqv_12 = _mm_set_epi64x((int64_t)dqv << 1, (int64_t)dqv); + __m128i dq_round = _mm_set1_epi64x(1 << (QUANT_TABLE_BITS - 1)); + __m128i dqv_rnd = _mm_add_epi64(dqv_12, dq_round); + __m128i dqc = _mm_srli_epi64(dqv_rnd, QUANT_TABLE_BITS + log_scale); + + __m128i abs_tqc_sh = _mm_set1_epi64x(abs_tqc << (log_scale - 1)); + __m128i dist0 = _mm_mul_epi32(abs_tqc_sh, abs_tqc_sh); + __m128i dqc_sh = _mm_slli_epi32(dqc, log_scale - 1); + __m128i diff = _mm_sub_epi32(dqc_sh, abs_tqc_sh); + __m128i dist = _mm_mul_epi32(diff, diff); + __m128i deltaDist = _mm_sub_epi64(dist, dist0); + + _mm_storeu_si128((__m128i *)&pqData->deltaDist[1], deltaDist); +} + void av2_update_states_avx2(const tcq_node_t *decision, int col, struct tcq_ctx_t *tcq_ctx) { // Extract prevId, absLevel from decision[] @@ -471,6 +606,76 @@ void av2_get_rate_dist_def_luma_avx2(const struct tcq_param_t *p, } } +void av2_get_rate_dist_def_luma_q1_avx2(const struct tcq_param_t *p, + const struct prequant_t *pq, + const struct tcq_coeff_ctx_t *coeff_ctx, + int blk_pos, int diag_ctx, int eob_rate, + struct tcq_rate_t *rd) { + const LV_MAP_COEFF_COST *txb_costs = p->txb_costs; + (void)blk_pos; + (void)pq; + const int32_t(*cost_zero)[SIG_COEF_CONTEXTS] = txb_costs->base_cost_zero; + const uint16_t(*cost_low_tbl)[SIG_COEF_CONTEXTS][TCQ_CTXS][2] = + txb_costs->base_cost_low_tbl; + const uint16_t(*cost_eob_tbl)[SIG_COEF_CONTEXTS_EOB][2] = + txb_costs->base_eob_cost_tbl; + int base_diag_ctx = get_base_diag_ctx(diag_ctx); + + // Calc zero coeff costs. + __m256i zero = _mm256_setzero_si256(); + __m256i cost_zero_dq0 = + _mm256_lddqu_si256((__m256i *)&cost_zero[0][base_diag_ctx]); + __m256i cost_zero_dq1 = + _mm256_lddqu_si256((__m256i *)&cost_zero[1][base_diag_ctx]); + + __m256i coef_ctx = _mm256_castsi128_si256(_mm_loadu_si64(&coeff_ctx->coef)); + __m256i ctx16 = _mm256_unpacklo_epi8(coef_ctx, zero); + __m256i ctx = _mm256_shuffle_epi32(ctx16, 0xD8); + __m256i ctx_dq0 = _mm256_unpacklo_epi16(ctx, zero); + __m256i ctx_dq1 = _mm256_unpackhi_epi16(ctx, zero); + __m256i ratez_dq0 = _mm256_permutevar8x32_epi32(cost_zero_dq0, ctx_dq0); + __m256i ratez_dq1 = _mm256_permutevar8x32_epi32(cost_zero_dq1, ctx_dq1); + __m256i ratez_0123 = _mm256_unpacklo_epi64(ratez_dq0, ratez_dq1); + _mm_storeu_si128((__m128i *)&rd->rate_zero[0], + _mm256_castsi256_si128(ratez_0123)); + __m256i ratez_4567 = _mm256_unpackhi_epi64(ratez_dq0, ratez_dq1); + _mm_storeu_si128((__m128i *)&rd->rate_zero[4], + _mm256_castsi256_si128(ratez_4567)); + + // Calc coeff_base rate (qIdx = 1, idx = 0). + const int idx = 0; + __m128i c_zero = _mm_setzero_si128(); + __m256i diag = _mm256_set1_epi16(base_diag_ctx); + __m256i base_ctx = _mm256_slli_epi16(ctx16, 12); + base_ctx = _mm256_srli_epi16(base_ctx, 12); + base_ctx = _mm256_add_epi16(base_ctx, diag); + for (int i = 0; i < (TCQ_N_STATES >> 2); i++) { + int ctx0 = _mm256_extract_epi16(base_ctx, 0); + int ctx1 = _mm256_extract_epi16(base_ctx, 1); + int ctx2 = _mm256_extract_epi16(base_ctx, 2); + int ctx3 = _mm256_extract_epi16(base_ctx, 3); + base_ctx = _mm256_bsrli_epi128(base_ctx, 8); + __m128i rate_01 = _mm_loadu_si64(&cost_low_tbl[idx][ctx0][0]); + __m128i rate_23 = _mm_loadu_si64(&cost_low_tbl[idx][ctx1][0]); + __m128i rate_45 = _mm_loadu_si64(&cost_low_tbl[idx][ctx2][1]); + __m128i rate_67 = _mm_loadu_si64(&cost_low_tbl[idx][ctx3][1]); + __m128i rate_0123 = _mm_unpacklo_epi32(rate_01, rate_23); + __m128i rate_4567 = _mm_unpacklo_epi32(rate_45, rate_67); + rate_0123 = _mm_unpacklo_epi16(rate_0123, c_zero); + rate_4567 = _mm_unpacklo_epi16(rate_4567, c_zero); + _mm_storeu_si128((__m128i *)&rd->rate[8 * i], rate_0123); + _mm_storeu_si128((__m128i *)&rd->rate[8 * i + 4], rate_4567); + } + + // Calc coeff/eob cost. + int eob_ctx = coeff_ctx->coef_eob; + __m128i rate_eob_coef = _mm_loadu_si64(&cost_eob_tbl[idx][eob_ctx][0]); + rate_eob_coef = _mm_unpacklo_epi16(rate_eob_coef, c_zero); + __m128i rate_eob_position = _mm_set1_epi32(eob_rate); + __m128i rate_eob = _mm_add_epi32(rate_eob_coef, rate_eob_position); + _mm_storeu_si64(&rd->rate_eob[0], rate_eob); +} + static __m128i map_state(__m128i state, __m128i prev_st) { // Track previous states. __m128i map_st = _mm_shuffle_epi8(state, prev_st); @@ -742,6 +947,108 @@ void av2_get_rate_dist_lf_luma_avx2(const struct tcq_param_t *p, } } +void av2_get_rate_dist_lf_luma_q1_avx2(const struct tcq_param_t *p, + const struct prequant_t *pq, + const struct tcq_coeff_ctx_t *coeff_ctx, + int blk_pos, int diag_ctx, int eob_rate, + int coeff_sign, struct tcq_rate_t *rd) { + (void)pq; + const LV_MAP_COEFF_COST *txb_costs = p->txb_costs; + static const int8_t kShuf[2][32] = { + { 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15, + 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15 }, + { 0, 8, Z, Z, 1, 9, Z, Z, 2, 10, Z, Z, 3, 11, Z, Z, + 4, 12, Z, Z, 5, 13, Z, Z, 6, 14, Z, Z, 7, 15, Z, Z } + }; + const uint16_t(*cost_zero)[LF_SIG_COEF_CONTEXTS] = + txb_costs->base_lf_cost_zero; + const uint16_t(*cost_low_tbl)[LF_SIG_COEF_CONTEXTS][TCQ_CTXS][2] = + txb_costs->base_lf_cost_low_tbl; + const uint16_t(*cost_eob_tbl)[SIG_COEF_CONTEXTS_EOB][2] = + txb_costs->base_lf_eob_cost_tbl; + int bwl = p->bwl; + TX_CLASS tx_class = p->tx_class; + int dc_sign_ctx = p->dc_sign_ctx; + int base_diag_ctx = get_base_diag_ctx(diag_ctx); + + // Calc zero coeff costs. + __m256i cost_zero_dq0 = + _mm256_lddqu_si256((__m256i *)&cost_zero[0][base_diag_ctx]); + __m256i cost_zero_dq1 = + _mm256_lddqu_si256((__m256i *)&cost_zero[1][base_diag_ctx]); + __m256i shuf = _mm256_lddqu_si256((__m256i *)kShuf[0]); + cost_zero_dq0 = _mm256_shuffle_epi8(cost_zero_dq0, shuf); + cost_zero_dq1 = _mm256_shuffle_epi8(cost_zero_dq1, shuf); + __m256i cost_dq0 = _mm256_permute4x64_epi64(cost_zero_dq0, 0xD8); + __m256i cost_dq1 = _mm256_permute4x64_epi64(cost_zero_dq1, 0xD8); + __m256i ctx = _mm256_castsi128_si256(_mm_loadu_si64(&coeff_ctx->coef)); + __m256i fifteen = _mm256_set1_epi8(15); + __m256i base_ctx = _mm256_and_si256(ctx, fifteen); + __m256i base_ctx1 = _mm256_permute4x64_epi64(base_ctx, 0); + __m256i ratez_dq0 = _mm256_shuffle_epi8(cost_dq0, base_ctx1); + __m256i ratez_dq1 = _mm256_shuffle_epi8(cost_dq1, base_ctx1); + __m256i ratez = _mm256_blend_epi16(ratez_dq0, ratez_dq1, 0xAA); + ratez = _mm256_permute4x64_epi64(ratez, 0x88); + __m256i shuf1 = _mm256_lddqu_si256((__m256i *)kShuf[1]); + ratez = _mm256_shuffle_epi8(ratez, shuf1); + _mm256_storeu_si256((__m256i *)&rd->rate_zero[0], ratez); + + // Calc coeff_base rate (qIdx = 1, idx = 0). + const int idx = 0; + __m256i zero = _mm256_setzero_si256(); + __m128i c_zero = _mm256_castsi256_si128(zero); + __m256i base_diag = _mm256_set1_epi8(base_diag_ctx); + base_ctx = _mm256_add_epi8(base_ctx, base_diag); + + const int row = blk_pos >> bwl; + const int col = blk_pos - (row << bwl); + const bool dc_2dtx = (blk_pos == 0); + const bool dc_hor = (col == 0) && tx_class == TX_CLASS_HORIZ; + const bool dc_ver = (row == 0) && tx_class == TX_CLASS_VERT; + const bool is_dc_coeff = dc_2dtx || dc_hor || dc_ver; + __m128i v_dc_cost = c_zero; + if (is_dc_coeff) { + const int dc_ph_group = 0; + int dc_cost = + txb_costs->dc_sign_cost[dc_ph_group][dc_sign_ctx][coeff_sign] - + av2_cost_literal(1); + v_dc_cost = _mm_set1_epi32(dc_cost); + } + + for (int i = 0; i < (TCQ_N_STATES >> 2); i++) { + int ctx0 = _mm256_extract_epi8(base_ctx, 0); + int ctx1 = _mm256_extract_epi8(base_ctx, 1); + int ctx2 = _mm256_extract_epi8(base_ctx, 2); + int ctx3 = _mm256_extract_epi8(base_ctx, 3); + base_ctx = _mm256_bsrli_epi128(base_ctx, 4); + __m128i rate_01 = _mm_loadu_si64(&cost_low_tbl[idx][ctx0][0]); + __m128i rate_23 = _mm_loadu_si64(&cost_low_tbl[idx][ctx1][0]); + __m128i rate_45 = _mm_loadu_si64(&cost_low_tbl[idx][ctx2][1]); + __m128i rate_67 = _mm_loadu_si64(&cost_low_tbl[idx][ctx3][1]); + __m128i rate_0123 = _mm_unpacklo_epi32(rate_01, rate_23); + __m128i rate_4567 = _mm_unpacklo_epi32(rate_45, rate_67); + rate_0123 = _mm_unpacklo_epi16(rate_0123, c_zero); + rate_4567 = _mm_unpacklo_epi16(rate_4567, c_zero); + if (is_dc_coeff) { + rate_0123 = _mm_add_epi32(rate_0123, v_dc_cost); + rate_4567 = _mm_add_epi32(rate_4567, v_dc_cost); + } + _mm_storeu_si128((__m128i *)&rd->rate[8 * i], rate_0123); + _mm_storeu_si128((__m128i *)&rd->rate[8 * i + 4], rate_4567); + } + + // Calc coeff/eob cost. + int eob_ctx = coeff_ctx->coef_eob; + __m128i rate_eob_coef = _mm_loadu_si64(&cost_eob_tbl[idx][eob_ctx][0]); + rate_eob_coef = _mm_unpacklo_epi16(rate_eob_coef, c_zero); + __m128i rate_eob_position = _mm_set1_epi32(eob_rate); + __m128i rate_eob = _mm_add_epi32(rate_eob_coef, rate_eob_position); + if (is_dc_coeff) { + rate_eob = _mm_add_epi32(rate_eob, v_dc_cost); + } + _mm_storeu_si64(&rd->rate_eob[0], rate_eob); +} + // Pre-calculate eob bits (rate) for each EOB candidate position from 1 // to the initial eob location. Store rate in array block_eob_rate[], // starting with index. diff --git a/test/trellis_test.cc b/test/trellis_test.cc index c63d18a560..fac2ab4fad 100644 --- a/test/trellis_test.cc +++ b/test/trellis_test.cc @@ -344,6 +344,93 @@ TEST_P(TcqRateLumaTest, RandomValues) { } } +class TcqRateLumaQ1Test : public FunctionEquivalenceTest { + protected: + static const int kIterations = 100000; + + void Execute(tcq_rate_t *rate_ref, tcq_rate_t *rate_tst) { + memset(rate_ref, 0, sizeof(*rate_ref)); + memset(rate_tst, 0, sizeof(*rate_tst)); + params_.ref_func(¶m_, &pre_quant_, &coeff_ctx_, blk_pos_, diag_ctx_, + eob_rate_, rate_ref); + ASM_REGISTER_STATE_CHECK(params_.tst_func(¶m_, &pre_quant_, &coeff_ctx_, + blk_pos_, diag_ctx_, eob_rate_, + rate_tst)); + } + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + int log_scale = 1; + int shift = 16 - log_scale + QUANT_FP_BITS; + const int32_t quant[2] = { 1 << shift, 1 << shift }; + int dqv = 1 << QUANT_TABLE_BITS; + int tqc = 0; + + // Initialize param structure. + int bwl = 3 + (rng_.Rand8() & 2); + int height = 1 << bwl; + int max = (1 << bwl) - 1; + int row = rng_.Rand8() & max; + int col = rng_.Rand8() & max; + row = AVMMAX(row, 4); + col = AVMMAX(col, 4); + int blk_pos = (row << bwl) + col; + int scan_pos = blk_pos; + int diag_ctx = get_nz_map_ctx_from_stats(0, blk_pos, bwl, TX_CLASS_2D, 0); + + blk_pos_ = blk_pos; + diag_ctx_ = diag_ctx; + param_.bwl = bwl; + param_.txb_height = height; + param_.tx_class = 0; + param_.txb_costs = &txb_costs_; + + // Generate random syntax costs. + generate_random_cost_tables(&rng_, &txb_costs_); + + // Generate pre_quant info with random coeff. + av2_pre_quant_q1(tqc, &pre_quant_, quant, dqv, log_scale, scan_pos); + eob_rate_ = rng_(512 * 4); + + // Generate random coeff_ctx + for (int i = 0; i < 8; i++) { + coeff_ctx_.coef[i] = (rng_(4) << 4) + rng_(4); + } + coeff_ctx_.coef_eob = get_lower_levels_ctx_eob(bwl, height, scan_pos); + coeff_ctx_.pad[0] = 0; + coeff_ctx_.pad[1] = 0; + coeff_ctx_.pad[2] = 0; + + tcq_rate_t rate_ref, rate_tst; + Execute(&rate_ref, &rate_tst); + + for (int i = 0; i < 8; i++) { + ASSERT_EQ(rate_ref.rate_zero[i], rate_tst.rate_zero[i]) + << "rate_zero mismatch at i=" << i; + } + ASSERT_EQ(rate_ref.rate_eob[1], rate_tst.rate_eob[1]); + ASSERT_EQ(rate_ref.rate[1], rate_tst.rate[1]); + ASSERT_EQ(rate_ref.rate[3], rate_tst.rate[3]); + ASSERT_EQ(rate_ref.rate[4], rate_tst.rate[4]); + ASSERT_EQ(rate_ref.rate[6], rate_tst.rate[6]); + ASSERT_EQ(rate_ref.rate[9], rate_tst.rate[9]); + ASSERT_EQ(rate_ref.rate[11], rate_tst.rate[11]); + ASSERT_EQ(rate_ref.rate[12], rate_tst.rate[12]); + ASSERT_EQ(rate_ref.rate[14], rate_tst.rate[14]); + } + } + + tcq_param_t param_; + LV_MAP_COEFF_COST txb_costs_; + prequant_t pre_quant_; + tcq_coeff_ctx_t coeff_ctx_; + int blk_pos_; + int diag_ctx_; + int eob_rate_; +}; + +TEST_P(TcqRateLumaQ1Test, RandomValues) { RunTest(); } + TEST_P(TcqRateLfLumaTest, RandomValues) { for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { int log_scale = 1; @@ -396,6 +483,100 @@ TEST_P(TcqRateLfLumaTest, RandomValues) { } } +class TcqRateLfLumaQ1Test : public FunctionEquivalenceTest { + protected: + static const int kIterations = 100000; + + void Execute(tcq_rate_t *rate_ref, tcq_rate_t *rate_tst) { + memset(rate_ref, 0, sizeof(*rate_ref)); + memset(rate_tst, 0, sizeof(*rate_tst)); + params_.ref_func(¶m_, &pre_quant_, &coeff_ctx_, blk_pos_, diag_ctx_, + eob_rate_, coeff_sign_, rate_ref); + ASM_REGISTER_STATE_CHECK(params_.tst_func(¶m_, &pre_quant_, &coeff_ctx_, + blk_pos_, diag_ctx_, eob_rate_, + coeff_sign_, rate_tst)); + } + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + int log_scale = 1; + int shift = 16 - log_scale + QUANT_FP_BITS; + const int32_t quant[2] = { 1 << shift, 1 << shift }; + int dqv = 1 << QUANT_TABLE_BITS; + int tqc = 0; + + // Initialize param structure. + int bwl = 2 + (rng_.Rand8() & 3); + int height = 1 << bwl; + int diag = rng_.Rand8() & 3; + int row = rng_.Rand8() % (diag + 1); + int col = diag - row; + int blk_pos = (row << bwl) + col; + int scan_pos = blk_pos; + int diag_ctx = get_nz_map_ctx_from_stats_lf(0, blk_pos, bwl, TX_CLASS_2D); + if (scan_pos > 0) { + diag_ctx += 7 << 8; + } + + blk_pos_ = blk_pos; + diag_ctx_ = diag_ctx; + coeff_sign_ = rng_.Rand8() & 1; + param_.bwl = bwl; + param_.txb_height = height; + param_.tx_class = 0; + param_.txb_costs = &txb_costs_; + param_.tmp_sign = tmp_sign_; + param_.dc_sign_ctx = rng_.Rand8() % DC_SIGN_CONTEXTS; + tmp_sign_[blk_pos] = rng_.Rand8() % CROSS_COMPONENT_CONTEXTS; + + // Generate random syntax costs. + generate_random_cost_tables(&rng_, &txb_costs_); + + // Generate pre_quant info for q1. + av2_pre_quant_q1(tqc, &pre_quant_, quant, dqv, log_scale, scan_pos); + eob_rate_ = rng_(512 * 4); + + // Generate random coeff_ctx + for (int i = 0; i < 8; i++) { + coeff_ctx_.coef[i] = (rng_(4) << 4) + rng_(4); + } + coeff_ctx_.coef_eob = get_lower_levels_ctx_eob(bwl, height, scan_pos); + coeff_ctx_.pad[0] = 0; + coeff_ctx_.pad[1] = 0; + coeff_ctx_.pad[2] = 0; + + tcq_rate_t rate_ref, rate_tst; + Execute(&rate_ref, &rate_tst); + + for (int i = 0; i < 8; i++) { + ASSERT_EQ(rate_ref.rate_zero[i], rate_tst.rate_zero[i]) + << "rate_zero mismatch at i=" << i; + } + ASSERT_EQ(rate_ref.rate_eob[1], rate_tst.rate_eob[1]); + ASSERT_EQ(rate_ref.rate[1], rate_tst.rate[1]); + ASSERT_EQ(rate_ref.rate[3], rate_tst.rate[3]); + ASSERT_EQ(rate_ref.rate[4], rate_tst.rate[4]); + ASSERT_EQ(rate_ref.rate[6], rate_tst.rate[6]); + ASSERT_EQ(rate_ref.rate[9], rate_tst.rate[9]); + ASSERT_EQ(rate_ref.rate[11], rate_tst.rate[11]); + ASSERT_EQ(rate_ref.rate[12], rate_tst.rate[12]); + ASSERT_EQ(rate_ref.rate[14], rate_tst.rate[14]); + } + } + + tcq_param_t param_; + LV_MAP_COEFF_COST txb_costs_; + prequant_t pre_quant_; + tcq_coeff_ctx_t coeff_ctx_; + int blk_pos_; + int diag_ctx_; + int eob_rate_; + int coeff_sign_; + int tmp_sign_[1024]; +}; + +TEST_P(TcqRateLfLumaQ1Test, RandomValues) { RunTest(); } + typedef void (*TcqUpdateNbrDiagonalFunc)(struct tcq_ctx_t *tcq_ctx, int row, int col, int bwl); typedef libavm_test::FuncParam @@ -470,27 +651,293 @@ class TcqUpdateNbrDiagonalTest TEST_P(TcqUpdateNbrDiagonalTest, RandomValues) { RunTest(); } +typedef void (*PreQuantFunc)(tran_low_t tqc, struct prequant_t *pqData, + const int32_t *quant_ptr, int dqv, int log_scale, + int scan_pos); +typedef libavm_test::FuncParam PreQuantTestFuncs; + +class PreQuantTest : public FunctionEquivalenceTest { + protected: + static const int kIterations = 100000; + + void Execute(prequant_t *ref, prequant_t *tst) { + memset(ref, 0, sizeof(*ref)); + memset(tst, 0, sizeof(*tst)); + params_.ref_func(tqc_, ref, quant_, dqv_, log_scale_, scan_pos_); + ASM_REGISTER_STATE_CHECK( + params_.tst_func(tqc_, tst, quant_, dqv_, log_scale_, scan_pos_)); + } + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + log_scale_ = 1 + (rng_.Rand8() % 3); + int shift = 16 - log_scale_ + QUANT_FP_BITS; + quant_[0] = 1 << shift; + quant_[1] = 1 << shift; + dqv_ = rng_(1 << (QUANT_TABLE_BITS + 4)); + scan_pos_ = rng_.Rand8() % 64; + tqc_ = (tran_low_t)(rng_.Rand16() - 32768); + + prequant_t ref, tst; + Execute(&ref, &tst); + + ASSERT_EQ(ref.qIdx, tst.qIdx); + for (int i = 0; i < 4; i++) { + ASSERT_EQ(ref.absLevel[i], tst.absLevel[i]); + ASSERT_EQ(ref.deltaDist[i], tst.deltaDist[i]); + } + } + } + + tran_low_t tqc_; + int32_t quant_[2]; + int dqv_; + int log_scale_; + int scan_pos_; +}; + +TEST_P(PreQuantTest, RandomValues) { RunTest(); } + +class PreQuantQ1Test : public FunctionEquivalenceTest { + protected: + static const int kIterations = 100000; + + void Execute(prequant_t *ref, prequant_t *tst) { + memset(ref, 0, sizeof(*ref)); + memset(tst, 0, sizeof(*tst)); + params_.ref_func(tqc_, ref, quant_, dqv_, log_scale_, scan_pos_); + ASM_REGISTER_STATE_CHECK( + params_.tst_func(tqc_, tst, quant_, dqv_, log_scale_, scan_pos_)); + } + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + log_scale_ = 1 + (rng_.Rand8() % 3); + int shift = 16 - log_scale_ + QUANT_FP_BITS; + quant_[0] = 1 << shift; + quant_[1] = 1 << shift; + dqv_ = rng_(1 << (QUANT_TABLE_BITS + 4)); + scan_pos_ = rng_.Rand8() % 64; + tqc_ = (tran_low_t)(rng_.Rand16() - 32768); + + prequant_t ref, tst; + Execute(&ref, &tst); + + ASSERT_EQ(ref.qIdx, tst.qIdx); + ASSERT_EQ(ref.absLevel[1], tst.absLevel[1]); + ASSERT_EQ(ref.absLevel[2], tst.absLevel[2]); + ASSERT_EQ(ref.deltaDist[1], tst.deltaDist[1]); + ASSERT_EQ(ref.deltaDist[2], tst.deltaDist[2]); + } + } + + tran_low_t tqc_; + int32_t quant_[2]; + int dqv_; + int log_scale_; + int scan_pos_; +}; + +TEST_P(PreQuantQ1Test, RandomValues) { RunTest(); } + +typedef void (*TcqDecideStatesFunc)(const struct tcq_node_t *prev, + const struct tcq_rate_t *rd, + const struct prequant_t *pq, int limits, + int try_eob, int64_t rdmult, + struct tcq_node_t *decision); +typedef libavm_test::FuncParam TcqDecideStatesTestFuncs; + +class TcqDecideStatesTest + : public FunctionEquivalenceTest { + protected: + static const int kIterations = 100000; + + void Execute(tcq_node_t *ref, tcq_node_t *tst) { + memset(ref, 0, sizeof(tcq_node_t) * TCQ_N_STATES); + memset(tst, 0, sizeof(tcq_node_t) * TCQ_N_STATES); + params_.ref_func(prev_, &rd_, &pq_, limits_, try_eob_, rdmult_, ref); + ASM_REGISTER_STATE_CHECK( + params_.tst_func(prev_, &rd_, &pq_, limits_, try_eob_, rdmult_, tst)); + } + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + for (int i = 0; i < TCQ_N_STATES; i++) { + prev_[i].rdCost = rng_(1 << 20); + prev_[i].rate = rng_(1 << 16); + prev_[i].absLevel = rng_.Rand8() % 16; + prev_[i].prevId = rng_.Rand8() % 8; + } + for (int i = 0; i < 2 * TCQ_MAX_STATES; i++) { + rd_.rate[i] = rng_(1 << 16); + } + for (int i = 0; i < TCQ_MAX_STATES; i++) { + rd_.rate_zero[i] = rng_(1 << 16); + } + rd_.rate_eob[0] = rng_(1 << 16); + rd_.rate_eob[1] = rng_(1 << 16); + + pq_.absLevel[0] = (rng_.Rand8() % 8) * 2; + pq_.absLevel[1] = (rng_.Rand8() % 8) * 2 + 1; + pq_.absLevel[2] = (rng_.Rand8() % 8) * 2 + 1; + pq_.absLevel[3] = (rng_.Rand8() % 8) * 2; + for (int i = 0; i < 4; i++) { + pq_.deltaDist[i] = (int64_t)rng_(1 << 20); + } + pq_.qIdx = 1 + (rng_.Rand8() % 16); + limits_ = 0; + try_eob_ = rng_.Rand8() & 1; + rdmult_ = rng_(1 << 16); + + tcq_node_t ref[TCQ_N_STATES], tst[TCQ_N_STATES]; + Execute(ref, tst); + + for (int i = 0; i < TCQ_N_STATES; i++) { + ASSERT_EQ(ref[i].rdCost, tst[i].rdCost) << "rdCost mismatch at i=" << i; + ASSERT_EQ(ref[i].rate, tst[i].rate) << "rate mismatch at i=" << i; + ASSERT_EQ(ref[i].absLevel, tst[i].absLevel) + << "absLevel mismatch at i=" << i; + ASSERT_EQ(ref[i].prevId, tst[i].prevId) << "prevId mismatch at i=" << i; + } + } + } + + tcq_node_t prev_[TCQ_N_STATES]; + tcq_rate_t rd_; + prequant_t pq_; + int limits_; + int try_eob_; + int64_t rdmult_; +}; + +TEST_P(TcqDecideStatesTest, RandomValues) { RunTest(); } + +class TcqDecideStatesQ1Test + : public FunctionEquivalenceTest { + protected: + static const int kIterations = 100000; + + void Execute(tcq_node_t *ref, tcq_node_t *tst) { + memset(ref, 0, sizeof(tcq_node_t) * TCQ_N_STATES); + memset(tst, 0, sizeof(tcq_node_t) * TCQ_N_STATES); + params_.ref_func(prev_, &rd_, &pq_, limits_, try_eob_, rdmult_, ref); + ASM_REGISTER_STATE_CHECK( + params_.tst_func(prev_, &rd_, &pq_, limits_, try_eob_, rdmult_, tst)); + } + + void RunTest() { + for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) { + for (int i = 0; i < TCQ_N_STATES; i++) { + prev_[i].rdCost = rng_(1 << 20); + prev_[i].rate = rng_(1 << 16); + prev_[i].absLevel = rng_.Rand8() % 16; + prev_[i].prevId = rng_.Rand8() % 8; + } + for (int i = 0; i < 2 * TCQ_MAX_STATES; i++) { + rd_.rate[i] = rng_(1 << 16); + } + for (int i = 0; i < TCQ_MAX_STATES; i++) { + rd_.rate_zero[i] = rng_(1 << 16); + } + rd_.rate_eob[0] = rng_(1 << 16); + rd_.rate_eob[1] = rng_(1 << 16); + + pq_.absLevel[0] = 0; + pq_.absLevel[1] = 1; + pq_.absLevel[2] = 1; + pq_.absLevel[3] = 0; + pq_.deltaDist[0] = (int64_t)rng_(1 << 20); + pq_.deltaDist[1] = (int64_t)rng_(1 << 20); + pq_.deltaDist[2] = (int64_t)rng_(1 << 20); + pq_.deltaDist[3] = (int64_t)rng_(1 << 20); + pq_.qIdx = 1; + limits_ = 0; + try_eob_ = rng_.Rand8() & 1; + rdmult_ = rng_(1 << 16); + + tcq_node_t ref[TCQ_N_STATES], tst[TCQ_N_STATES]; + Execute(ref, tst); + + for (int i = 0; i < TCQ_N_STATES; i++) { + ASSERT_EQ(ref[i].rdCost, tst[i].rdCost) << "rdCost mismatch at i=" << i; + ASSERT_EQ(ref[i].rate, tst[i].rate) << "rate mismatch at i=" << i; + ASSERT_EQ(ref[i].absLevel, tst[i].absLevel) + << "absLevel mismatch at i=" << i; + ASSERT_EQ(ref[i].prevId, tst[i].prevId) << "prevId mismatch at i=" << i; + } + } + } + + tcq_node_t prev_[TCQ_N_STATES]; + tcq_rate_t rd_; + prequant_t pq_; + int limits_; + int try_eob_; + int64_t rdmult_; +}; + +TEST_P(TcqDecideStatesQ1Test, RandomValues) { RunTest(); } + #if HAVE_AVX2 +INSTANTIATE_TEST_SUITE_P(AVX2, TcqDecideStatesTest, + ::testing::Values(TcqDecideStatesTestFuncs( + av2_decide_states_c, av2_decide_states_avx2))); + +INSTANTIATE_TEST_SUITE_P( + AVX2, TcqDecideStatesQ1Test, + ::testing::Values(TcqDecideStatesTestFuncs(av2_decide_states_q1_c, + av2_decide_states_q1_avx2))); + +INSTANTIATE_TEST_SUITE_P( + AVX2, PreQuantTest, + ::testing::Values(PreQuantTestFuncs(av2_pre_quant_c, av2_pre_quant_avx2))); + +INSTANTIATE_TEST_SUITE_P(AVX2, PreQuantQ1Test, + ::testing::Values(PreQuantTestFuncs( + av2_pre_quant_q1_c, av2_pre_quant_q1_avx2))); + INSTANTIATE_TEST_SUITE_P( AVX2, TcqRateLumaTest, ::testing::Values(TcqRateLumaTestFuncs(av2_get_rate_dist_def_luma_c, av2_get_rate_dist_def_luma_avx2))); +INSTANTIATE_TEST_SUITE_P(AVX2, TcqRateLumaQ1Test, + ::testing::Values(TcqRateLumaTestFuncs( + av2_get_rate_dist_def_luma_q1_c, + av2_get_rate_dist_def_luma_q1_avx2))); + INSTANTIATE_TEST_SUITE_P( AVX2, TcqRateLfLumaTest, ::testing::Values(TcqRateLfLumaTestFuncs(av2_get_rate_dist_lf_luma_c, av2_get_rate_dist_lf_luma_avx2))); +INSTANTIATE_TEST_SUITE_P(AVX2, TcqRateLfLumaQ1Test, + ::testing::Values(TcqRateLfLumaTestFuncs( + av2_get_rate_dist_lf_luma_q1_c, + av2_get_rate_dist_lf_luma_q1_avx2))); + INSTANTIATE_TEST_SUITE_P(AVX2, TcqUpdateNbrDiagonalTest, ::testing::Values(TcqUpdateNbrDiagonalTestFuncs( av2_update_nbr_diagonal_c, av2_update_nbr_diagonal_avx2))); #endif // HAVE_AVX2 +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqDecideStatesTest); + +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqDecideStatesQ1Test); + +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(PreQuantTest); + +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(PreQuantQ1Test); + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqRateLumaTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqRateLumaQ1Test); + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqRateLfLumaTest); +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqRateLfLumaQ1Test); + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TcqUpdateNbrDiagonalTest); } // namespace From 875606101aed70d3e7a25ef3390587cf5d9dc976 Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Wed, 19 Aug 2026 11:30:04 -0700 Subject: [PATCH 177/205] Promote feature DC-block-pred-level to speed 3 (#5287) The speed feature works for speed 4. Its tradeoff is still good when we promote it to speed 3. On speed 3, RA, the performance is Test-set PSNR-YUV EncTime A1 (17 frames) 0.04% 94.78% A2 (33 frames) 0.00% 98.01% STATS_CHANGED Change-Id: Ib510a6b42898d6fba923fa92bede2b4de21b12d2 --- av2/encoder/speed_features.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 2c4d9d1809..c4d72500b2 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -575,6 +575,7 @@ static void set_good_speed_features_framesize_independent( // For screen content, "prune_sgr_based_on_wiener = 2" cause large quality // loss. sf->lpf_sf.disable_loop_restoration_chroma = boosted ? 0 : 1; + sf->winner_mode_sf.dc_blk_pred_level = 2; } if (speed >= 4) { @@ -632,7 +633,6 @@ static void set_good_speed_features_framesize_independent( sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; sf->mv_sf.newmv_drl_search_limit = 1; - sf->winner_mode_sf.dc_blk_pred_level = 2; } if (speed >= 5) { From 42ae3a01ae2a1109e8cc960ad39f946f944a45b3 Mon Sep 17 00:00:00 2001 From: yunqingwang1 Date: Wed, 19 Aug 2026 15:49:28 -0700 Subject: [PATCH 178/205] Fix non-monotonic behavior for screen content (#5292) Fixed #5216 One speed feature added recently "disable_multiway_tx_part_in_rough_mode" caused non-monotonic behavior for screen content. This PR fixed it. Tested the fix with a recent (Aug 17, 2026) commit ea89c21 Encoder command: ./avmenc video/av2_b2/Slides1_1920x1080_30fps_8bit_420.y4m --tile-columns=0 --threads=1 --cpu-used=0 --tune-content=screen --enable-intrabc-ext=1 --passes=1 --lag-in-frames=19 --auto-alt-ref=1 --min-gf-interval=16 --max-gf-interval=16 --gf-min-pyr-height=4 --gf-max-pyr-height=4 --kf-min-dist=65 --kf-max-dist=65 --use-fixed-qp-offsets=1 --deltaq-mode=0 --enable-tpl-model=0 --enable-keyframe-filtering=0 --obu --end-usage=q --qp=${qp} --limit=130 -o output_${qp}.bin --psnr --test-decode=warn --cpu-used=1 ``` Without the fix: // Non-monotonic behavior was seen. For QP110: Bitrate(kbps) | PSNR(Y) | PSNR(U) | PSNR(V) | PSNR(Avg) | PSNR(Overall) | Encoding time (FPS) ------------------------------------------------------------------------------------------------------------ Summary: 879.334154 | 46.995655 | 57.128215 | 56.976782 | 47.502603 | 35.471795 | 13305.0s (0.0 fps) For QP135: Bitrate(kbps) | PSNR(Y) | PSNR(U) | PSNR(V) | PSNR(Avg) | PSNR(Overall) | Encoding time (FPS) ------------------------------------------------------------------------------------------------------------ Summary: 498.976615 | 48.933906 | 53.864854 | 53.696037 | 49.457692 | 39.826879 | 11583.3s (0.0 fps) With the fix: // Non-monotonic behavior was fixed. For QP110: Bitrate(kbps) | PSNR(Y) | PSNR(U) | PSNR(V) | PSNR(Avg) | PSNR(Overall) | Encoding time (FPS) ------------------------------------------------------------------------------------------------------------ Summary: 832.482462 | 55.846373 | 57.211316 | 57.175542 | 55.940801 | 55.250666 | 12483.5s (0.0 fps) For QP135: Bitrate(kbps) | PSNR(Y) | PSNR(U) | PSNR(V) | PSNR(Avg) | PSNR(Overall) | Encoding time (FPS) ------------------------------------------------------------------------------------------------------------ Summary: 484.464000 | 51.602224 | 53.997568 | 53.858700 | 51.997805 | 51.192436 | 10998.2s (0.0 fps) ``` STATS_CHANGED for screen content --- av2/encoder/speed_features.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index c4d72500b2..9e2789ee04 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -377,7 +377,8 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_comp_search_by_single_result = boosted ? 2 : 1; - sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode = 1; + sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode = + allow_screen_content_tools ? 0 : 1; if (!frame_is_intra_only(cm) && sf->winner_mode_sf.disable_multiway_tx_part_in_rough_mode) { sf->winner_mode_sf.multi_winner_mode_type = MULTI_WINNER_MODE_DEFAULT; From 4abfd7741eb0af38fd8c2b41f581dcd28216d046 Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Wed, 19 Aug 2026 18:24:49 -0700 Subject: [PATCH 179/205] Disable three speed-4 features that cost quality and save little time (#5288) Disable perform_coeff_opt_based_on_satd, multi_winner_mode_type (inter), and cdef_pick_method LVL3 at speed 4. By disabling, we recover some coding gains. Performance at speed 4, RA: Testset PSNR-Y PSNR-U PSNR-V PSNR-YUV EncTime A1 (17 frames) -0.06% -0.28% -0.31% -0.08% 101.72% A2 (33 frames) -0.12% -0.41% -0.11% -0.14% 102.00% STATS_CHANGED --- av2/encoder/speed_features.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 9e2789ee04..77bdf9583c 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -616,24 +616,25 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.tx_type_search.prune_tx_type_est_rd = 1; sf->rd_sf.perform_coeff_opt = is_boosted_arf2_bwd_type ? 3 : 5; - sf->rd_sf.perform_coeff_opt_based_on_satd = - is_boosted_arf2_bwd_type ? 1 : 2; sf->rd_sf.tx_domain_dist_thres_level = 1; - // TODO(any): Extend multi-winner mode processing support for inter frames - sf->winner_mode_sf.multi_winner_mode_type = - frame_is_intra_only(&cpi->common) ? MULTI_WINNER_MODE_DEFAULT - : MULTI_WINNER_MODE_OFF; // TODO(any): Re-enable for all frames after fixing speed feature. sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch = 0; sf->lpf_sf.lpf_pick = LPF_PICK_FROM_FULL_IMAGE_NON_DUAL; - sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL3; - sf->mv_sf.reduce_search_range = 1; - sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; sf->mv_sf.newmv_drl_search_limit = 1; + sf->winner_mode_sf.dc_blk_pred_level = 2; + + // TODO(any): Disable these speed features because they do not have a good + // tradeoff. Fix and evaluate them before turning them on. + // sf->rd_sf.perform_coeff_opt_based_on_satd = + // is_boosted_arf2_bwd_type ? 1 : 2; + // sf->winner_mode_sf.multi_winner_mode_type = + // frame_is_intra_only(&cpi->common) ? MULTI_WINNER_MODE_DEFAULT + // : MULTI_WINNER_MODE_OFF; + // sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL3; } if (speed >= 5) { From 2a9136d3aea8b761735262f60fa491a5dca304d6 Mon Sep 17 00:00:00 2001 From: Jerome Date: Thu, 20 Aug 2026 12:05:50 -0400 Subject: [PATCH 180/205] rtc: Reuse pc_tree in non-RD partition search (#5284) Pre-allocate and reuse the partition context tree (pc_root / PC_TREE) per thread in real-time non-RD partition search instead of allocating and freeing nodes for every superblock. - Add pc_root to ThreadData and pre-allocate once per thread/frame. - Add av2_reset_pmc to reset PICK_MODE_CONTEXT state on node reuse. - In av2_nonrd_use_partition, lazily allocate child pc_tree nodes and reset existing PMC nodes across superblocks. This change is bitexact for RTC with 2.5% speed up for QVGA and 1.5% speed up for VGA and HD on speed 6. --- av2/encoder/context_tree.c | 15 +++++++++ av2/encoder/context_tree.h | 5 +++ av2/encoder/encodeframe.c | 30 +++++++++++++---- av2/encoder/encoder.c | 7 ++++ av2/encoder/encoder.h | 3 ++ av2/encoder/encoder_alloc.h | 2 ++ av2/encoder/ethread.c | 24 ++++++++++++++ av2/encoder/partition_search.c | 60 +++++++++++++++++++++++++--------- 8 files changed, 125 insertions(+), 21 deletions(-) diff --git a/av2/encoder/context_tree.c b/av2/encoder/context_tree.c index e8acb1e9ed..962fcc0752 100644 --- a/av2/encoder/context_tree.c +++ b/av2/encoder/context_tree.c @@ -200,6 +200,21 @@ PICK_MODE_CONTEXT *av2_alloc_pmc(const AV2_COMMON *cm, TREE_TYPE tree_type, return ctx; } +// Resets the state of a PICK_MODE_CONTEXT node so it can be reused across +// blocks/superblocks without re-allocation. +void av2_reset_pmc(PICK_MODE_CONTEXT *ctx) { + if (ctx == NULL) return; + ctx->rd_mode_is_ready = 0; + av2_invalid_rd_stats(&ctx->rd_stats); + if (ctx->tx_type_map) av2_zero_array(ctx->tx_type_map, ctx->num_4x4_blk); + if (ctx->cctx_type_map) + av2_zero_array(ctx->cctx_type_map, ctx->num_4x4_blk_chroma); + ctx->skippable = 0; + ctx->hybrid_pred_diff = 0; + ctx->comp_pred_diff = 0; + ctx->single_pred_diff = 0; +} + void av2_free_pmc(PICK_MODE_CONTEXT *ctx, int num_planes) { if (ctx == NULL) return; diff --git a/av2/encoder/context_tree.h b/av2/encoder/context_tree.h index 47461cecee..c0dcc3b150 100644 --- a/av2/encoder/context_tree.h +++ b/av2/encoder/context_tree.h @@ -136,6 +136,11 @@ PICK_MODE_CONTEXT *av2_alloc_pmc(const AV2_COMMON *cm, TREE_TYPE tree_type, int subsampling_x, int subsampling_y, PC_TREE_SHARED_BUFFERS *shared_bufs); void av2_free_pmc(PICK_MODE_CONTEXT *ctx, int num_planes); +/*!\brief Resets the state of a PICK_MODE_CONTEXT node for reuse. + * + * \param[in,out] ctx Pointer to the PICK_MODE_CONTEXT to reset + */ +void av2_reset_pmc(PICK_MODE_CONTEXT *ctx); void av2_copy_tree_context(PICK_MODE_CONTEXT *dst_ctx, PICK_MODE_CONTEXT *src_ctx, int num_planes); diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index af4b750aa4..31ba04b4e0 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -817,9 +817,19 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, const BLOCK_SIZE min_partition_size = x->sb_enc.min_partition_size; init_encode_rd_sb(cpi, td, tile_data, sms_root, &dummy_rdc, mi_row, mi_col, 1); - PC_TREE *const pc_root = av2_alloc_pc_tree_node( - xd->tree_type, mi_row, mi_col, cm->sb_size, sb_size, NULL, - PARTITION_NONE, 0, 1, ss_x, ss_y); + PC_TREE *pc_root; + if (cpi->sf.rt_sf.use_nonrd_partition) { + if (!td->pc_root) { + td->pc_root = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col, cm->sb_size, sb_size, NULL, + PARTITION_NONE, 0, 1, ss_x, ss_y); + } + pc_root = td->pc_root; + } else { + pc_root = av2_alloc_pc_tree_node(xd->tree_type, mi_row, mi_col, + cm->sb_size, sb_size, NULL, + PARTITION_NONE, 0, 1, ss_x, ss_y); + } av2_reset_ptree_in_sbi(xd->sbi, xd->tree_type); av2_build_partition_tree_fixed_partitioning( cm, xd->tree_type, mi_row, mi_col, @@ -843,8 +853,8 @@ static AVM_INLINE void encode_rd_sb(AV2_COMP *cpi, ThreadData *td, &dummy_rate, &dummy_dist, 1, xd->sbi->ptree_root[av2_get_sdp_idx(xd->tree_type)], pc_root, ptree_luma); + av2_free_pc_tree_recursive(pc_root, num_planes, 0, 0); } - av2_free_pc_tree_recursive(pc_root, num_planes, 0, 0); x->sb_enc.min_partition_size = min_partition_size; } xd->tree_type = SHARED_PART; @@ -2184,10 +2194,18 @@ static AVM_INLINE void encode_frame_internal(AV2_COMP *cpi) { enc_row_mt->sync_write_ptr = av2_row_mt_sync_write; av2_encode_tiles_row_mt(cpi); } else { - if (AVMMIN(mt_info->num_workers, cm->tiles.cols * cm->tiles.rows) > 1) + if (AVMMIN(mt_info->num_workers, cm->tiles.cols * cm->tiles.rows) > 1) { av2_encode_tiles_mt(cpi); - else + } else { + if (cpi->sf.rt_sf.use_nonrd_partition) { + cpi->td.pc_root = av2_alloc_pc_tree_node( + SHARED_PART, 0, 0, cm->sb_size, cm->sb_size, NULL, PARTITION_NONE, + 0, 1, cm->seq_params.subsampling_x, cm->seq_params.subsampling_y); + } encode_tiles(cpi); + av2_free_pc_tree_recursive(cpi->td.pc_root, av2_num_planes(cm), 0, 0); + cpi->td.pc_root = NULL; + } } // If intrabc is allowed but never selected, reset the allow_intrabc flag. diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index 474e872dd2..97ebeb6480 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1409,6 +1409,8 @@ void av2_change_config(struct AV2_COMP *cpi, const AV2EncoderConfig *oxcf) { av2_free_shared_coeff_buffer(&cpi->td.shared_coeff_buf); av2_free_sms_tree(&cpi->td); av2_free_sms_bufs(&cpi->td); + av2_free_pc_tree_recursive(cpi->td.pc_root, av2_num_planes(cm), 0, 0); + cpi->td.pc_root = NULL; #if CONFIG_ML_PART_SPLIT av2_part_prune_tflite_close(&(cpi->td.partition_model)); #endif // CONFIG_ML_PART_SPLIT @@ -1816,6 +1818,9 @@ static AVM_INLINE void free_thread_data(AV2_COMP *cpi) { thread_data->td->vt64x64 = NULL; av2_free_sms_tree(thread_data->td); av2_free_sms_bufs(thread_data->td); + av2_free_pc_tree_recursive(thread_data->td->pc_root, av2_num_planes(cm), 0, + 0); + thread_data->td->pc_root = NULL; #if CONFIG_ML_PART_SPLIT av2_part_prune_tflite_close(&(thread_data->td->partition_model)); #endif // CONFIG_ML_PART_SPLIT @@ -2544,6 +2549,8 @@ int av2_set_size_literal(AV2_COMP *cpi, int width, int height) { av2_free_shared_coeff_buffer(&cpi->td.shared_coeff_buf); av2_free_sms_tree(&cpi->td); av2_free_sms_bufs(&cpi->td); + av2_free_pc_tree_recursive(cpi->td.pc_root, av2_num_planes(cm), 0, 0); + cpi->td.pc_root = NULL; #if CONFIG_ML_PART_SPLIT av2_part_prune_tflite_close(&(cpi->td.partition_model)); #endif // CONFIG_ML_PART_SPLIT diff --git a/av2/encoder/encoder.h b/av2/encoder/encoder.h index f90981b31f..c53fe5deba 100644 --- a/av2/encoder/encoder.h +++ b/av2/encoder/encoder.h @@ -1747,6 +1747,9 @@ typedef struct ThreadData { void *partition_model; #endif // CONFIG_ML_PART_SPLIT void *dip_pruning_model; + // Root node for pre-allocated partition context tree (PC_TREE) reused + // across superblocks in real-time non-RD mode. + struct PC_TREE *pc_root; } ThreadData; struct EncWorkerData; diff --git a/av2/encoder/encoder_alloc.h b/av2/encoder/encoder_alloc.h index ccb97356ac..e93f50e700 100644 --- a/av2/encoder/encoder_alloc.h +++ b/av2/encoder/encoder_alloc.h @@ -239,6 +239,8 @@ static AVM_INLINE void dealloc_compressor_data(AV2_COMP *cpi) { cpi->td.vt64x64 = NULL; av2_free_sms_tree(&cpi->td); av2_free_sms_bufs(&cpi->td); + av2_free_pc_tree_recursive(cpi->td.pc_root, av2_num_planes(cm), 0, 0); + cpi->td.pc_root = NULL; #if CONFIG_ML_PART_SPLIT av2_part_prune_tflite_close(&(cpi->td.partition_model)); #endif // CONFIG_ML_PART_SPLIT diff --git a/av2/encoder/ethread.c b/av2/encoder/ethread.c index ecf87c570b..255f1c9b53 100644 --- a/av2/encoder/ethread.c +++ b/av2/encoder/ethread.c @@ -418,6 +418,9 @@ static int enc_row_mt_worker_hook(void *arg1, void *unused) { pthread_mutex_unlock(enc_row_mt_mutex_); #endif set_encoding_done(cpi); + av2_free_pc_tree_recursive(thread_data->td->pc_root, + av2_num_planes(&cpi->common), 0, 0); + thread_data->td->pc_root = NULL; return 0; } error_info->setjmp = 1; @@ -427,6 +430,12 @@ static int enc_row_mt_worker_hook(void *arg1, void *unused) { assert(cur_tile_id != -1); + if (cpi->sf.rt_sf.use_nonrd_partition) { + thread_data->td->pc_root = av2_alloc_pc_tree_node( + SHARED_PART, 0, 0, cm->sb_size, cm->sb_size, NULL, PARTITION_NONE, 0, 1, + cm->seq_params.subsampling_x, cm->seq_params.subsampling_y); + } + int end_of_frame = 0; bool row_mt_exit = false; @@ -491,6 +500,9 @@ static int enc_row_mt_worker_hook(void *arg1, void *unused) { #endif } + av2_free_pc_tree_recursive(thread_data->td->pc_root, av2_num_planes(cm), 0, + 0); + thread_data->td->pc_root = NULL; error_info->setjmp = 0; return 1; } @@ -514,10 +526,19 @@ static int enc_worker_hook(void *arg1, void *unused) { // before it returns. if (setjmp(error_info->jmp)) { error_info->setjmp = 0; + av2_free_pc_tree_recursive(thread_data->td->pc_root, av2_num_planes(cm), 0, + 0); + thread_data->td->pc_root = NULL; return 0; } error_info->setjmp = 1; + if (cpi->sf.rt_sf.use_nonrd_partition) { + thread_data->td->pc_root = av2_alloc_pc_tree_node( + SHARED_PART, 0, 0, cm->sb_size, cm->sb_size, NULL, PARTITION_NONE, 0, 1, + cm->seq_params.subsampling_x, cm->seq_params.subsampling_y); + } + for (t = thread_data->start; t < tile_rows * tile_cols; t += cpi->mt_info.num_workers) { int tile_row = t / tile_cols; @@ -529,6 +550,9 @@ static int enc_worker_hook(void *arg1, void *unused) { av2_encode_tile(cpi, thread_data->td, tile_row, tile_col); } + av2_free_pc_tree_recursive(thread_data->td->pc_root, av2_num_planes(cm), 0, + 0); + thread_data->td->pc_root = NULL; error_info->setjmp = 0; return 1; } diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 6ae591028e..34bc31be16 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -2428,12 +2428,32 @@ void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, pc_tree->none_chroma = av2_alloc_pmc(cm, xd->tree_type, mi_row, mi_col, bsize, pc_tree, PARTITION_NONE, 0, ss_x, ss_y, &td->shared_coeff_buf); + } else { + av2_reset_pmc(pc_tree->none_chroma); + set_chroma_ref_info( + xd->tree_type, mi_row, mi_col, 0, bsize, + &pc_tree->none_chroma->chroma_ref_info, + pc_tree->parent ? &pc_tree->parent->chroma_ref_info : NULL, + pc_tree->parent ? pc_tree->parent->block_size : BLOCK_INVALID, + PARTITION_NONE, ss_x, ss_y); + pc_tree->none_chroma->mic.chroma_ref_info = + pc_tree->none_chroma->chroma_ref_info; } } else { if (pc_tree->none[cur_region_type] == NULL) { pc_tree->none[cur_region_type] = av2_alloc_pmc(cm, xd->tree_type, mi_row, mi_col, bsize, pc_tree, PARTITION_NONE, 0, ss_x, ss_y, &td->shared_coeff_buf); + } else { + av2_reset_pmc(pc_tree->none[cur_region_type]); + set_chroma_ref_info( + xd->tree_type, mi_row, mi_col, 0, bsize, + &pc_tree->none[cur_region_type]->chroma_ref_info, + pc_tree->parent ? &pc_tree->parent->chroma_ref_info : NULL, + pc_tree->parent ? pc_tree->parent->block_size : BLOCK_INVALID, + PARTITION_NONE, ss_x, ss_y); + pc_tree->none[cur_region_type]->mic.chroma_ref_info = + pc_tree->none[cur_region_type]->chroma_ref_info; } } @@ -2487,12 +2507,16 @@ void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, partition, ctx_none, &rate); break; case PARTITION_HORZ: - pc_tree->horizontal[cur_region_type][0] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row, mi_col, cm->sb_size, subsize, pc_tree, - PARTITION_HORZ, 0, 0, ss_x, ss_y); - pc_tree->horizontal[cur_region_type][1] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row + hbh, mi_col, cm->sb_size, subsize, pc_tree, - PARTITION_HORZ, 1, 1, ss_x, ss_y); + if (!pc_tree->horizontal[cur_region_type][0]) { + pc_tree->horizontal[cur_region_type][0] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_HORZ, 0, 0, ss_x, ss_y); + } + if (!pc_tree->horizontal[cur_region_type][1]) { + pc_tree->horizontal[cur_region_type][1] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row + hbh, mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_HORZ, 1, 1, ss_x, ss_y); + } av2_nonrd_use_partition(cpi, td, tile_data, mib, tp, mi_row, mi_col, subsize, ptree ? ptree->sub_tree[0] : NULL, @@ -2507,12 +2531,16 @@ void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, } break; case PARTITION_VERT: - pc_tree->vertical[cur_region_type][0] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row, mi_col, cm->sb_size, subsize, pc_tree, - PARTITION_VERT, 0, 0, ss_x, ss_y); - pc_tree->vertical[cur_region_type][1] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row, mi_col + hbw, cm->sb_size, subsize, pc_tree, - PARTITION_VERT, 1, 1, ss_x, ss_y); + if (!pc_tree->vertical[cur_region_type][0]) { + pc_tree->vertical[cur_region_type][0] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col, cm->sb_size, subsize, pc_tree, + PARTITION_VERT, 0, 0, ss_x, ss_y); + } + if (!pc_tree->vertical[cur_region_type][1]) { + pc_tree->vertical[cur_region_type][1] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row, mi_col + hbw, cm->sb_size, subsize, pc_tree, + PARTITION_VERT, 1, 1, ss_x, ss_y); + } av2_nonrd_use_partition(cpi, td, tile_data, mib, tp, mi_row, mi_col, subsize, ptree ? ptree->sub_tree[0] : NULL, pc_tree->vertical[cur_region_type][0], @@ -2533,9 +2561,11 @@ void av2_nonrd_use_partition(AV2_COMP *cpi, ThreadData *td, if ((mi_row + y_idx >= mi_params->mi_rows) || (mi_col + x_idx >= mi_params->mi_cols)) continue; - pc_tree->split[cur_region_type][i] = av2_alloc_pc_tree_node( - xd->tree_type, mi_row + y_idx, mi_col + x_idx, cm->sb_size, subsize, - pc_tree, PARTITION_SPLIT, i, i == 3, ss_x, ss_y); + if (!pc_tree->split[cur_region_type][i]) { + pc_tree->split[cur_region_type][i] = av2_alloc_pc_tree_node( + xd->tree_type, mi_row + y_idx, mi_col + x_idx, cm->sb_size, + subsize, pc_tree, PARTITION_SPLIT, i, i == 3, ss_x, ss_y); + } av2_nonrd_use_partition( cpi, td, tile_data, mib + jj * hbh * mi_params->mi_stride + ii * hbw, tp, From b59e9df13033e180c0a1cae14f72976b5b9a1e3e Mon Sep 17 00:00:00 2001 From: Samuthirika Date: Thu, 16 Jul 2026 15:03:20 +0530 Subject: [PATCH 181/205] Consolidate intra FSC mode search into outer loop Refactor av2_rd_pick_intra_sby_mode() to evaluate Forward Skip Coding (FSC) modes using an outer fsc_mode loop, eliminating redundant candidate search logic and unifying non-FSC and FSC intra mode evaluation. --- av2/encoder/intra_mode_search.c | 720 ++++++++++++++------------------ av2/encoder/intra_mode_search.h | 36 -- 2 files changed, 325 insertions(+), 431 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index d26d746b75..cfd7bcc650 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1388,224 +1388,6 @@ int64_t av2_handle_intra_mode(IntraModeSearchState *intra_search_state, return this_rd; } -void search_fsc_mode(const AV2_COMP *const cpi, MACROBLOCK *x, int *rate, - int *rate_tokenonly, int64_t *distortion, int *skippable, - BLOCK_SIZE bsize, int mode_costs, uint8_t *dir_skip_mask, - int64_t *best_rd, int64_t *best_model_rd, - PICK_MODE_CONTEXT *ctx, MB_MODE_INFO *best_mbmi) { - (void)ctx; - MACROBLOCKD *const xd = &x->e_mbd; - MB_MODE_INFO *mbmi = xd->mi[0]; - const int context = get_y_mode_idx_ctx(xd); - uint8_t best_y_mode_idx = best_mbmi->y_mode_idx; - uint8_t best_joint_ymode = best_mbmi->joint_y_mode_delta_angle; - uint8_t best_fsc_mode = 0; - PREDICTION_MODE best_intra_mode = best_mbmi->mode; - TX_SIZE best_tx_size = best_mbmi->tx_size; - TX_PARTITION_TYPE best_tx_partition_type[TX_PARTITION_BUF]; - av2_copy(best_tx_partition_type, best_mbmi->tx_partition_type); - TX_TYPE best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE]; - int8_t best_angle_delta = best_mbmi->angle_delta[PLANE_TYPE_Y]; - uint8_t best_mrl = best_mbmi->mrl_index; - uint8_t enable_mrls_flag = cpi->common.seq_params.enable_mrls; - uint8_t mrl_loop = (enable_mrls_flag && best_mrl) ? 2 : 1; - uint8_t best_multi_line_mrl = best_mbmi->multi_line_mrl; - uint8_t multi_line_mrl_loop = (enable_mrls_flag && best_mrl) ? 2 : 1; - - int dpcm_fsc_loop = 1; - uint8_t best_dpcm_fsc = mbmi->use_dpcm_y; - uint8_t best_dpcm_fsc_dir = mbmi->dpcm_mode_y; - // uint8_t best_dpcm_fsc_angle_delta = mbmi->dpcm_angle_delta; - mbmi->use_dpcm_y = 0; - if (xd->lossless[mbmi->segment_id]) { - dpcm_fsc_loop = 2; - } - int64_t top_intra_model_rd[TOP_INTRA_MODEL_COUNT]; - for (int i = 0; i < TOP_INTRA_MODEL_COUNT; i++) { - top_intra_model_rd[i] = INT64_MAX; - } - x->prune_tx_partition = 1; - for (int i = 0; i < TOP_TX_PART_COUNT; i++) { - x->top_tx_part_rd[i] = INT64_MAX; - } - for (int dpcm_fsc_index = 0; dpcm_fsc_index < dpcm_fsc_loop; - dpcm_fsc_index++) { - mbmi->use_dpcm_y = dpcm_fsc_index; - for (int mrl_idx = 0; mrl_idx < mrl_loop; ++mrl_idx) { - mbmi->mrl_index = mrl_idx ? best_mbmi->mrl_index : mrl_idx; - for (int multi_line_mrl = 0; - multi_line_mrl < (mrl_idx ? multi_line_mrl_loop : 1); - ++multi_line_mrl) { - mbmi->multi_line_mrl = - multi_line_mrl ? best_mbmi->multi_line_mrl : multi_line_mrl; - for (int mode_idx = INTRA_MODE_START; mode_idx < LUMA_MODE_COUNT; - ++mode_idx) { - mbmi->y_mode_idx = mode_idx; - mbmi->joint_y_mode_delta_angle = mbmi->y_intra_mode_list[mode_idx]; - av2_set_y_mode_and_delta_angle(mbmi->joint_y_mode_delta_angle, mbmi); - if (mbmi->y_mode_idx >= FIRST_MODE_COUNT && - !(mbmi->angle_delta[PLANE_TYPE_Y] == - best_mbmi->angle_delta[PLANE_TYPE_Y])) { - continue; - } - mode_costs = 0; - if (xd->lossless[mbmi->segment_id]) { - if (mbmi->use_dpcm_y > 0 && - (mrl_idx > 0 || - (mbmi->mode != V_PRED && mbmi->mode != H_PRED) || - ((mbmi->mode == V_PRED || mbmi->mode == H_PRED) && - mbmi->angle_delta[0] != 0))) { - continue; - } - int dpcm_cost = x->mode_costs.dpcm_cost[mbmi->use_dpcm_y]; - mode_costs += dpcm_cost; - if (mbmi->use_dpcm_y > 0) { - mbmi->dpcm_mode_y = mbmi->mode - 1; - } - } - if (mbmi->use_dpcm_y == 0) { - int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; - mode_set_index += - ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); - mode_costs += x->mode_costs.y_primary_flag_cost[mode_set_index]; - if (mode_idx < FIRST_MODE_COUNT) { - int mode_set_low = - AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); - mode_costs += - x->mode_costs.y_mode_idx_costs[context][mode_set_low]; - if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) - mode_costs += - x->mode_costs - .y_mode_idx_offset_costs[context] - [mode_idx - mode_set_low]; - } else { - mode_costs += av2_cost_literal(4); - } - } else { - int dpcm_dir_cost = - x->mode_costs.dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; - mode_costs += dpcm_dir_cost; - } - if (xd->lossless[mbmi->segment_id]) { - mbmi->fsc_mode[xd->tree_type == CHROMA_PART] = 1; - } else { - mbmi->fsc_mode[PLANE_TYPE_Y] = 1; - } - - mbmi->use_intra_dip = 0; - mbmi->palette_mode_info.palette_size[0] = 0; - int64_t this_rd; - RD_STATS tokenonly_rd_stats; - if ((!cpi->oxcf.intra_mode_cfg.enable_smooth_intra || - cpi->sf.intra_sf.disable_smooth_intra) && - (mbmi->mode == SMOOTH_PRED || mbmi->mode == SMOOTH_H_PRED || - mbmi->mode == SMOOTH_V_PRED)) { - continue; - } - if (!cpi->oxcf.intra_mode_cfg.enable_paeth_intra && - mbmi->mode == PAETH_PRED) { - continue; - } - int is_directional_mode = av2_is_directional_mode(mbmi->mode); - if (is_directional_mode && dir_skip_mask[mbmi->mode] && - mode_idx >= FIRST_MODE_COUNT) - continue; - - if (!is_directional_mode && mrl_idx) continue; - if (((best_mbmi->mrl_index == 0 && - av2_is_directional_mode(best_mbmi->mode) == 0) || - (best_mbmi->mrl_index && mbmi->multi_line_mrl == 0)) && - mbmi->mrl_index > 1 && mbmi->multi_line_mrl) { - continue; - } - int mrl_ctx = get_mrl_index_ctx(xd->neighbors[0], xd->neighbors[1]); - int mrl_idx_cost = - (is_directional_mode && enable_mrls_flag) - ? x->mode_costs.mrl_index_cost[mrl_ctx][mbmi->mrl_index] - : 0; - - if (is_directional_mode && enable_mrls_flag && mbmi->mrl_index) { - int multi_line_mrl_ctx = get_multi_line_mrl_index_ctx( - xd->neighbors[0], xd->neighbors[1]); - mrl_idx_cost += - x->mode_costs.multi_line_mrl_cost[multi_line_mrl_ctx] - [mbmi->multi_line_mrl]; - } - mode_costs += mrl_idx_cost; - int64_t this_model_rd; - this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); - - if (prune_intra_y_mode(this_model_rd, best_model_rd, - top_intra_model_rd, x->intra_mode_prune_top, - xd->lossless[mbmi->segment_id], - mbmi->use_dpcm_y)) { - continue; - } - av2_pick_uniform_tx_size_type_yrd(cpi, x, &tokenonly_rd_stats, bsize, - *best_rd); - if (tokenonly_rd_stats.rate == INT_MAX) continue; - const int this_rate = - tokenonly_rd_stats.rate + - intra_mode_info_cost_y(cpi, x, mbmi, bsize, mode_costs); - this_rd = RDCOST(x->rdmult, this_rate, tokenonly_rd_stats.dist); - // Collect mode stats for multiwinner mode processing - const int txfm_search_done = 1; - const MV_REFERENCE_FRAME refs[2] = { -1, -1 }; - store_winner_mode_stats(&cpi->common, x, mbmi, NULL, NULL, NULL, refs, - 0, NULL, bsize, this_rd, - cpi->sf.winner_mode_sf.multi_winner_mode_type, - txfm_search_done); - - if (this_rd < *best_rd) { - *best_rd = this_rd; - best_tx_size = mbmi->tx_size; - av2_copy(best_tx_partition_type, mbmi->tx_partition_type); - best_intra_mode = mbmi->mode; - best_y_mode_idx = mbmi->y_mode_idx; - best_joint_ymode = mbmi->joint_y_mode_delta_angle; - best_mrl = mbmi->mrl_index; - best_multi_line_mrl = mbmi->multi_line_mrl; - if (xd->lossless[mbmi->segment_id]) { - best_dpcm_fsc = mbmi->use_dpcm_y; - best_dpcm_fsc_dir = mbmi->dpcm_mode_y; - } - best_angle_delta = mbmi->angle_delta[PLANE_TYPE_Y]; - av2_copy_array(best_tx_type_map, xd->tx_type_map, ctx->num_4x4_blk); - memcpy(ctx->blk_skip[AVM_PLANE_Y], - x->txfm_search_info.blk_skip[AVM_PLANE_Y], - sizeof(*x->txfm_search_info.blk_skip[AVM_PLANE_Y]) * - ctx->num_4x4_blk); - *rate = this_rate; - *rate_tokenonly = tokenonly_rd_stats.rate; - *distortion = tokenonly_rd_stats.dist; - *skippable = tokenonly_rd_stats.skip_txfm; - best_fsc_mode = 1; - } - } - } - } - } - if (best_fsc_mode) { - mbmi->fsc_mode[PLANE_TYPE_Y] = 1; - mbmi->mode = best_intra_mode; - mbmi->y_mode_idx = best_y_mode_idx; - mbmi->joint_y_mode_delta_angle = best_joint_ymode; - if (xd->lossless[mbmi->segment_id]) { - mbmi->use_dpcm_y = best_dpcm_fsc; - mbmi->dpcm_mode_y = best_dpcm_fsc_dir; - } - mbmi->tx_size = best_tx_size; - av2_copy(mbmi->tx_partition_type, best_tx_partition_type); - mbmi->mrl_index = best_mrl; - mbmi->multi_line_mrl = best_multi_line_mrl; - mbmi->angle_delta[PLANE_TYPE_Y] = best_angle_delta; - av2_copy_array(ctx->tx_type_map, best_tx_type_map, ctx->num_4x4_blk); - *best_mbmi = *mbmi; - } else { - *mbmi = *best_mbmi; - } -} - // Compute MLP-derived base-mode mask for the current block. See header for // API doc. Runs once per block. void av2_intra_mlp_compute_mode_mask( @@ -1675,6 +1457,53 @@ void av2_intra_mlp_compute_mode_mask( } } +/*! \brief Structure to hold best FSC mode parameters during intra mode search. + */ +typedef struct FscBestParams { + /*! \brief Reference line index for multiple reference line selection. */ + int mrl_idx; + /*! \brief Flag to indicate more than one reference line used for multiple + * reference line selection. */ + int multi_line_mrl; + /*! \brief Delta angle used in directional mode. */ + int angle_delta; + /*! \brief Transform type map for the given transform block. */ + TX_TYPE tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE]; + /*! \brief Transform partition type. */ + TX_PARTITION_TYPE tx_partition_type[TX_PARTITION_BUF]; + /*! \brief The intra prediction mode used. */ + PREDICTION_MODE intra_mode; + /*! \brief Transform size when fixed size txfm is used. */ + TX_SIZE tx_size; + /*! \brief Mode index corresponding to a luma intra mode after re-ordering. */ + uint8_t y_mode_idx; + /*! \brief Joint mode index corresponding to a luma intra mode before + * re-ordering. */ + uint8_t joint_ymode; + /*! \brief Flag to indicate if a valid best FSC mode is found. */ + uint8_t best_fsc_mode; + /*! \brief Whether DPCM mode is selected for luma block. */ + uint8_t use_dpcm_y; + /*! \brief DPCM direction if DPCM is selected for luma block. */ + uint8_t dpcm_mode_y; +} FscBestParams; + +static AVM_INLINE void init_fsc_best_params(FscBestParams *const fsc_best, + const MB_MODE_INFO *const best_mbmi, + const MB_MODE_INFO *const mbmi) { + fsc_best->y_mode_idx = best_mbmi->y_mode_idx; + fsc_best->joint_ymode = best_mbmi->joint_y_mode_delta_angle; + fsc_best->best_fsc_mode = 0; + fsc_best->intra_mode = best_mbmi->mode; + fsc_best->tx_size = best_mbmi->tx_size; + av2_copy(fsc_best->tx_partition_type, best_mbmi->tx_partition_type); + fsc_best->mrl_idx = best_mbmi->mrl_index; + fsc_best->multi_line_mrl = best_mbmi->multi_line_mrl; + fsc_best->angle_delta = best_mbmi->angle_delta[PLANE_TYPE_Y]; + fsc_best->use_dpcm_y = mbmi->use_dpcm_y; + fsc_best->dpcm_mode_y = mbmi->dpcm_mode_y; +} + // Finds the best non-intrabc mode on an intra frame. int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, int *rate, @@ -1685,7 +1514,6 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MB_MODE_INFO *const mbmi = xd->mi[0]; assert(!is_inter_block(mbmi, xd->tree_type)); int64_t best_model_rd = INT64_MAX; - int is_directional_mode; mbmi->fsc_mode[xd->tree_type == CHROMA_PART] = 0; uint8_t directional_mode_skip_mask[INTRA_MODES] = { 0 }; @@ -1737,195 +1565,297 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MB_MODE_INFO best_mbmi = *mbmi; av2_zero(x->winner_mode_stats); x->winner_mode_count = 0; - mbmi->use_dpcm_y = 0; mbmi->dpcm_mode_y = 0; // mbmi->dpcm_angle_delta = 0; // Searches the intra-modes except for intrabc, palette, and filter_intra. - int64_t top_intra_model_rd[TOP_INTRA_MODEL_COUNT]; - for (int i = 0; i < TOP_INTRA_MODEL_COUNT; i++) { - top_intra_model_rd[i] = INT64_MAX; - } - x->prune_tx_partition = 1; - for (int i = 0; i < TOP_TX_PART_COUNT; i++) { - x->top_tx_part_rd[i] = INT64_MAX; - } - uint8_t enable_mrls_flag = cpi->common.seq_params.enable_mrls; - int dpcm_loop_num = 1; - if (xd->lossless[mbmi->segment_id]) { - dpcm_loop_num = 2; - } - for (int dpcm_index = 0; dpcm_index < dpcm_loop_num; ++dpcm_index) { - uint8_t mrl0_dir_mode_survived[INTRA_MODES] = { 0 }; - for (int mrl_idx = 0; mrl_idx < (enable_mrls_flag ? MRL_LINE_NUMBER : 1); - ++mrl_idx) { - mbmi->mrl_index = mrl_idx; - for (int multi_line_mrl = 0; multi_line_mrl < (mrl_idx ? 2 : 1); - multi_line_mrl++) { - mbmi->multi_line_mrl = multi_line_mrl; - for (int mode_idx = INTRA_MODE_START; mode_idx < LUMA_MODE_COUNT; - ++mode_idx) { - mbmi->y_mode_idx = mode_idx; - mbmi->joint_y_mode_delta_angle = mbmi->y_intra_mode_list[mode_idx]; - // the below function changes the mbmi->mode based on the mode_idx - av2_set_y_mode_and_delta_angle(mbmi->joint_y_mode_delta_angle, mbmi); - mode_costs = 0; - if (dpcm_index > 0 && - (mrl_idx > 0 || (mbmi->mode != V_PRED && mbmi->mode != H_PRED) || - ((mbmi->mode == V_PRED || mbmi->mode == H_PRED) && - mbmi->angle_delta[0] != 0))) { - continue; - } - int dpcm_cost = 0; - if (xd->lossless[mbmi->segment_id]) { - dpcm_cost = x->mode_costs.dpcm_cost[dpcm_index]; - mode_costs += dpcm_cost; - } - mbmi->use_dpcm_y = dpcm_index; - if (mbmi->use_dpcm_y > 0) { - mbmi->dpcm_mode_y = mbmi->mode - 1; - } else { - mbmi->dpcm_mode_y = 0; - } - if (mbmi->use_dpcm_y == 0) { - int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; - mode_set_index += - ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); - mode_costs += x->mode_costs.y_primary_flag_cost[mode_set_index]; - if (mode_idx < FIRST_MODE_COUNT) { - int mode_set_low = - AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); - mode_costs += - x->mode_costs.y_mode_idx_costs[context][mode_set_low]; - if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) + const int fsc_loop_num = + allow_fsc_intra(&cpi->common, bsize, mbmi) ? FSC_MODES : 1; + + for (int fsc_mode = 0; fsc_mode < fsc_loop_num; ++fsc_mode) { + if (fsc_mode == 1 && !beat_best_rd) break; + + FscBestParams fsc_best; + init_fsc_best_params(&fsc_best, &best_mbmi, mbmi); + + int64_t top_intra_model_rd[TOP_INTRA_MODEL_COUNT]; + for (int i = 0; i < TOP_INTRA_MODEL_COUNT; ++i) { + top_intra_model_rd[i] = INT64_MAX; + } + x->prune_tx_partition = 1; + for (int i = 0; i < TOP_TX_PART_COUNT; ++i) { + x->top_tx_part_rd[i] = INT64_MAX; + } + + const uint8_t enable_mrls_flag = cpi->common.seq_params.enable_mrls; + int mrl_loop_num; + if (fsc_mode) { + mrl_loop_num = (enable_mrls_flag && best_mbmi.mrl_index) ? 2 : 1; + } else { + mrl_loop_num = enable_mrls_flag ? MRL_LINE_NUMBER : 1; + } + + mbmi->use_dpcm_y = 0; + const int dpcm_loop_num = xd->lossless[mbmi->segment_id] ? 2 : 1; + + for (int dpcm_idx = 0; dpcm_idx < dpcm_loop_num; ++dpcm_idx) { + uint8_t mrl0_dir_mode_survived[INTRA_MODES] = { 0 }; + for (int mrl_iter = 0; mrl_iter < mrl_loop_num; ++mrl_iter) { + const int mrl_idx = + (fsc_mode && mrl_iter > 0) ? best_mbmi.mrl_index : mrl_iter; + mbmi->mrl_index = mrl_idx; + const int ml_mrl_loop_num = mrl_idx ? 2 : 1; + for (int ml_mrl_iter = 0; ml_mrl_iter < ml_mrl_loop_num; + ++ml_mrl_iter) { + const int ml_mrl_idx = (fsc_mode && ml_mrl_iter > 0) + ? best_mbmi.multi_line_mrl + : ml_mrl_iter; + mbmi->multi_line_mrl = ml_mrl_idx; + for (int mode_idx = INTRA_MODE_START; mode_idx < LUMA_MODE_COUNT; + ++mode_idx) { + mbmi->y_mode_idx = mode_idx; + mbmi->joint_y_mode_delta_angle = mbmi->y_intra_mode_list[mode_idx]; + mbmi->use_dpcm_y = dpcm_idx; + // the below function changes the mbmi->mode based on the mode_idx + av2_set_y_mode_and_delta_angle(mbmi->joint_y_mode_delta_angle, + mbmi); + // During FSC search, prune secondary directional modes that differ + // in angle delta from the best non-FSC mode. + if (fsc_mode && (mbmi->y_mode_idx >= FIRST_MODE_COUNT && + mbmi->angle_delta[PLANE_TYPE_Y] != + best_mbmi.angle_delta[PLANE_TYPE_Y])) { + continue; + } + + if (dpcm_idx > 0 && + (mrl_idx > 0 || + (mbmi->mode != V_PRED && mbmi->mode != H_PRED) || + ((mbmi->mode == V_PRED || mbmi->mode == H_PRED) && + mbmi->angle_delta[0] != 0))) { + continue; + } + + int dpcm_cost = 0; + if (xd->lossless[mbmi->segment_id]) { + dpcm_cost = x->mode_costs.dpcm_cost[dpcm_idx]; + mode_costs += dpcm_cost; + } + if (mbmi->use_dpcm_y > 0) { + mbmi->dpcm_mode_y = mbmi->mode - 1; + } else { + // Reset DPCM prediction direction to 0 for non-DPCM modes during + // standard non-FSC search. In FSC pass, preserve the initial DPCM + // direction state. + if (!fsc_mode) { + mbmi->dpcm_mode_y = 0; + } + } + if (mbmi->use_dpcm_y == 0) { + int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; + mode_set_index += + ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); + mode_costs += x->mode_costs.y_primary_flag_cost[mode_set_index]; + if (mode_idx < FIRST_MODE_COUNT) { + int mode_set_low = + AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); mode_costs += - x->mode_costs - .y_mode_idx_offset_costs[context] - [mode_idx - mode_set_low]; + x->mode_costs.y_mode_idx_costs[context][mode_set_low]; + if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) + mode_costs += + x->mode_costs + .y_mode_idx_offset_costs[context] + [mode_idx - mode_set_low]; + } else { + mode_costs += av2_cost_literal(4); + } } else { - mode_costs += av2_cost_literal(4); + int dpcm_dir_cost = + x->mode_costs.dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; + mode_costs += dpcm_dir_cost; } - } else { - int dpcm_dir_cost = - x->mode_costs.dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; - mode_costs += dpcm_dir_cost; - } - RD_STATS this_rd_stats; - int this_rate, this_rate_tokenonly, s; - int64_t this_distortion, this_rd; - if ((!cpi->oxcf.intra_mode_cfg.enable_smooth_intra || - cpi->sf.intra_sf.disable_smooth_intra) && - (mbmi->mode == SMOOTH_PRED || mbmi->mode == SMOOTH_H_PRED || - mbmi->mode == SMOOTH_V_PRED)) - continue; - if (!cpi->oxcf.intra_mode_cfg.enable_paeth_intra && - mbmi->mode == PAETH_PRED) - continue; - is_directional_mode = av2_is_directional_mode(mbmi->mode); - if (cpi->sf.intra_sf.intra_pruning_with_mlp && mrl_idx > 0 && - is_directional_mode && mode_idx >= FIRST_MODE_COUNT && - !mrl0_dir_mode_survived[mbmi->mode]) - continue; - if (!is_directional_mode && mrl_idx) continue; - if (!mlp_fallback && mode_idx >= FIRST_MODE_COUNT && - !mlp_mode_mask[mbmi->mode]) - continue; - if (is_directional_mode && directional_mode_skip_mask[mbmi->mode] && - mode_idx >= FIRST_MODE_COUNT) - continue; - - if (((best_mbmi.mrl_index == 0 && - av2_is_directional_mode(best_mbmi.mode) == 0) || - (best_mbmi.mrl_index && mbmi->multi_line_mrl == 0)) && - mbmi->mrl_index > 1 && mbmi->multi_line_mrl) { - continue; - } - int mrl_ctx = get_mrl_index_ctx(xd->neighbors[0], xd->neighbors[1]); - int mrl_idx_cost = - (is_directional_mode && enable_mrls_flag) - ? x->mode_costs.mrl_index_cost[mrl_ctx][mbmi->mrl_index] - : 0; - - if (is_directional_mode && enable_mrls_flag && mbmi->mrl_index) { - int multi_line_mrl_ctx = get_multi_line_mrl_index_ctx( - xd->neighbors[0], xd->neighbors[1]); - mrl_idx_cost += - x->mode_costs.multi_line_mrl_cost[multi_line_mrl_ctx] - [mbmi->multi_line_mrl]; - } - if (dpcm_index == 0) mode_costs += mrl_idx_cost; - int64_t this_model_rd; - this_model_rd = intra_model_yrd(cpi, x, bsize, mode_costs); - if (prune_intra_y_mode(this_model_rd, &best_model_rd, - top_intra_model_rd, x->intra_mode_prune_top, - xd->lossless[mbmi->segment_id], - mbmi->use_dpcm_y)) - continue; - - if (cpi->sf.intra_sf.intra_pruning_with_mlp && mrl_idx == 0 && - is_directional_mode) - mrl0_dir_mode_survived[mbmi->mode] = 1; - - av2_pick_uniform_tx_size_type_yrd(cpi, x, &this_rd_stats, bsize, - best_rd); - this_rate_tokenonly = this_rd_stats.rate; - this_distortion = this_rd_stats.dist; - s = this_rd_stats.skip_txfm; - - if (this_rate_tokenonly == INT_MAX) continue; - if (!xd->lossless[mbmi->segment_id] && - block_signals_txsize(mbmi->sb_type[PLANE_TYPE_Y])) { - // av2_pick_uniform_tx_size_type_yrd above includes the cost of the - // tx_size in the tokenonly rate, but for intra blocks, tx_size is - // always coded (prediction granularity), so we account for it in - // the full rate, not the tokenonly rate. - this_rate_tokenonly -= tx_size_cost(x, bsize, mbmi->tx_size); - } - this_rate = this_rd_stats.rate + - intra_mode_info_cost_y(cpi, x, mbmi, bsize, mode_costs); - this_rd = RDCOST(x->rdmult, this_rate, this_distortion); + + // Set FSC mode flag and disable incompatible modes (DIP and + // Palette) during FSC search pass. + if (fsc_mode) { + if (xd->lossless[mbmi->segment_id]) { + mbmi->fsc_mode[xd->tree_type == CHROMA_PART] = 1; + } else { + mbmi->fsc_mode[PLANE_TYPE_Y] = 1; + } + mbmi->use_intra_dip = 0; + mbmi->palette_mode_info.palette_size[0] = 0; + } + + RD_STATS this_rd_stats; + int this_rate, this_rate_tokenonly, this_skip_txfm; + int64_t this_distortion, this_rd; + if ((!cpi->oxcf.intra_mode_cfg.enable_smooth_intra || + cpi->sf.intra_sf.disable_smooth_intra) && + (mbmi->mode == SMOOTH_PRED || mbmi->mode == SMOOTH_H_PRED || + mbmi->mode == SMOOTH_V_PRED)) + continue; + + if (!cpi->oxcf.intra_mode_cfg.enable_paeth_intra && + mbmi->mode == PAETH_PRED) + continue; + + const bool is_directional_mode = + av2_is_directional_mode(mbmi->mode); + if (!fsc_mode && cpi->sf.intra_sf.intra_pruning_with_mlp && + mrl_idx > 0 && is_directional_mode && + mode_idx >= FIRST_MODE_COUNT && + !mrl0_dir_mode_survived[mbmi->mode]) + continue; + + if (!is_directional_mode && mrl_idx) continue; + + if (!fsc_mode && !mlp_fallback && mode_idx >= FIRST_MODE_COUNT && + !mlp_mode_mask[mbmi->mode]) + continue; + + if (is_directional_mode && directional_mode_skip_mask[mbmi->mode] && + mode_idx >= FIRST_MODE_COUNT) + continue; + + if (((best_mbmi.mrl_index == 0 && + av2_is_directional_mode(best_mbmi.mode) == 0) || + (best_mbmi.mrl_index && mbmi->multi_line_mrl == 0)) && + mbmi->mrl_index > 1 && mbmi->multi_line_mrl) { + continue; + } + + const int mrl_ctx = + get_mrl_index_ctx(xd->neighbors[0], xd->neighbors[1]); + int mrl_idx_cost = + (is_directional_mode && enable_mrls_flag) + ? x->mode_costs.mrl_index_cost[mrl_ctx][mbmi->mrl_index] + : 0; + if (is_directional_mode && enable_mrls_flag && mbmi->mrl_index) { + int multi_line_mrl_ctx = get_multi_line_mrl_index_ctx( + xd->neighbors[0], xd->neighbors[1]); + mrl_idx_cost += + x->mode_costs.multi_line_mrl_cost[multi_line_mrl_ctx] + [mbmi->multi_line_mrl]; + } + // In FSC intra search, MRL index signaling cost is added + // unconditionally to account for MRL signaling when combining MRL + // with FSC mode. + if (dpcm_idx == 0 || fsc_mode) mode_costs += mrl_idx_cost; + + // Calculate intra model rd for Luma. + const int64_t this_model_rd = + intra_model_yrd(cpi, x, bsize, mode_costs); + if (prune_intra_y_mode(this_model_rd, &best_model_rd, + top_intra_model_rd, x->intra_mode_prune_top, + xd->lossless[mbmi->segment_id], + mbmi->use_dpcm_y)) + continue; + + if (!fsc_mode && cpi->sf.intra_sf.intra_pruning_with_mlp && + mrl_idx == 0 && is_directional_mode) + mrl0_dir_mode_survived[mbmi->mode] = 1; + + // Evaluate best transform size and type for Luma. + av2_pick_uniform_tx_size_type_yrd(cpi, x, &this_rd_stats, bsize, + best_rd); + this_rate_tokenonly = this_rd_stats.rate; + this_distortion = this_rd_stats.dist; + this_skip_txfm = this_rd_stats.skip_txfm; + + if (this_rate_tokenonly == INT_MAX) continue; + + if (!fsc_mode && + (!xd->lossless[mbmi->segment_id] && + block_signals_txsize(mbmi->sb_type[PLANE_TYPE_Y]))) { + // av2_pick_uniform_tx_size_type_yrd above includes the cost of + // the tx_size in the tokenonly rate, but for intra blocks, + // tx_size is always coded (prediction granularity), so we account + // for it in the full rate, not the tokenonly rate. + this_rate_tokenonly -= tx_size_cost(x, bsize, mbmi->tx_size); + } + this_rate = this_rd_stats.rate + + intra_mode_info_cost_y(cpi, x, mbmi, bsize, mode_costs); + this_rd = RDCOST(x->rdmult, this_rate, this_distortion); #if CONFIG_DIP_EXT_PRUNING - if (mbmi->mode == DC_PRED) { - extra_dip.dc_mode_rd = this_rd; - } + if (!fsc_mode && mbmi->mode == DC_PRED) { + extra_dip.dc_mode_rd = this_rd; + } #endif // CONFIG_DIP_EXT_PRUNING // Collect mode stats for multiwinner mode processing - const int txfm_search_done = 1; - const MV_REFERENCE_FRAME refs[2] = { -1, -1 }; - store_winner_mode_stats(&cpi->common, x, mbmi, NULL, NULL, NULL, refs, - 0, NULL, bsize, this_rd, - cpi->sf.winner_mode_sf.multi_winner_mode_type, - txfm_search_done); - if (this_rd < best_rd) { - best_mbmi = *mbmi; - best_rd = this_rd; - // Setting beat_best_rd flag because current mode rd is better than - // best_rd passed to this function - beat_best_rd = 1; + const int txfm_search_done = 1; + const MV_REFERENCE_FRAME refs[2] = { -1, -1 }; + store_winner_mode_stats( + &cpi->common, x, mbmi, NULL, NULL, NULL, refs, 0, NULL, bsize, + this_rd, cpi->sf.winner_mode_sf.multi_winner_mode_type, + txfm_search_done); + if (this_rd < best_rd) { + // Save winning FSC mode parameters and transform maps when FSC + // mode beats best RD cost. + if (fsc_mode) { + fsc_best.tx_size = mbmi->tx_size; + av2_copy(fsc_best.tx_partition_type, mbmi->tx_partition_type); + fsc_best.intra_mode = mbmi->mode; + fsc_best.y_mode_idx = mbmi->y_mode_idx; + fsc_best.joint_ymode = mbmi->joint_y_mode_delta_angle; + fsc_best.mrl_idx = mbmi->mrl_index; + fsc_best.multi_line_mrl = mbmi->multi_line_mrl; + if (xd->lossless[mbmi->segment_id]) { + fsc_best.use_dpcm_y = mbmi->use_dpcm_y; + fsc_best.dpcm_mode_y = mbmi->dpcm_mode_y; + } + fsc_best.angle_delta = mbmi->angle_delta[PLANE_TYPE_Y]; + av2_copy_array(fsc_best.tx_type_map, xd->tx_type_map, + ctx->num_4x4_blk); + fsc_best.best_fsc_mode = 1; + } else { + best_mbmi = *mbmi; + // Setting beat_best_rd flag because current mode rd is better + // than best_rd passed to this function + beat_best_rd = 1; #if CONFIG_DIP_EXT_PRUNING - extra_dip.beat_best_rd = 1; - extra_dip.best_mode = mbmi->mode; + extra_dip.beat_best_rd = 1; + extra_dip.best_mode = mbmi->mode; #endif // CONFIG_DIP_EXT_PRUNING - *rate = this_rate; - *rate_tokenonly = this_rate_tokenonly; - *distortion = this_distortion; - *skippable = s; - memcpy(ctx->blk_skip[AVM_PLANE_Y], - x->txfm_search_info.blk_skip[AVM_PLANE_Y], - sizeof(*x->txfm_search_info.blk_skip[AVM_PLANE_Y]) * - ctx->num_4x4_blk); - av2_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk); - } + av2_copy_array(ctx->tx_type_map, xd->tx_type_map, + ctx->num_4x4_blk); + } + *rate = this_rate; + *rate_tokenonly = this_rate_tokenonly; + *distortion = this_distortion; + *skippable = this_skip_txfm; + best_rd = this_rd; + memcpy(ctx->blk_skip[AVM_PLANE_Y], + x->txfm_search_info.blk_skip[AVM_PLANE_Y], + sizeof(*x->txfm_search_info.blk_skip[AVM_PLANE_Y]) * + ctx->num_4x4_blk); + } + } // End of mode_idx loop. + } // End of ml_mrl_iter loop. + } // End of mrl_iter loop. + } // End of dpcm_idx loop. + + if (fsc_mode) { + if (fsc_best.best_fsc_mode) { + mbmi->fsc_mode[PLANE_TYPE_Y] = 1; + mbmi->mode = fsc_best.intra_mode; + mbmi->y_mode_idx = fsc_best.y_mode_idx; + mbmi->joint_y_mode_delta_angle = fsc_best.joint_ymode; + if (xd->lossless[mbmi->segment_id]) { + mbmi->use_dpcm_y = fsc_best.use_dpcm_y; + mbmi->dpcm_mode_y = fsc_best.dpcm_mode_y; } + mbmi->tx_size = fsc_best.tx_size; + av2_copy(mbmi->tx_partition_type, fsc_best.tx_partition_type); + mbmi->mrl_index = fsc_best.mrl_idx; + mbmi->multi_line_mrl = fsc_best.multi_line_mrl; + mbmi->angle_delta[PLANE_TYPE_Y] = fsc_best.angle_delta; + av2_copy_array(ctx->tx_type_map, fsc_best.tx_type_map, + ctx->num_4x4_blk); + best_mbmi = *mbmi; + } else { + *mbmi = best_mbmi; } } - } - - // Searches forward skip coding - if (beat_best_rd && allow_fsc_intra(&cpi->common, bsize, mbmi)) { - search_fsc_mode(cpi, x, rate, rate_tokenonly, distortion, skippable, bsize, - mode_costs, directional_mode_skip_mask, &best_rd, - &best_model_rd, ctx, &best_mbmi); - } + } // End of fsc_mode loop. // Searches palette mode_costs = x->mode_costs.y_primary_flag_cost[DC_PRED]; @@ -1968,7 +1898,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, av2_get_block_dimensions(bsize, AVM_PLANE_Y, xd, &block_width, &block_height, NULL, NULL); - for (int mode_idx = 0; mode_idx < x->winner_mode_count; mode_idx++) { + for (int mode_idx = 0; mode_idx < x->winner_mode_count; ++mode_idx) { *mbmi = x->winner_mode_stats[mode_idx].mbmi; if (is_winner_mode_processing_enabled(cpi, mbmi, mbmi->mode)) { // Restore color_map of palette mode before winner mode processing diff --git a/av2/encoder/intra_mode_search.h b/av2/encoder/intra_mode_search.h index 33a740d506..bed7d0e30a 100644 --- a/av2/encoder/intra_mode_search.h +++ b/av2/encoder/intra_mode_search.h @@ -219,42 +219,6 @@ void av2_intra_mlp_compute_mode_mask( uint8_t mlp_mode_mask[INTRA_MODES], int *mlp_fallback, uint8_t directional_mode_skip_mask[INTRA_MODES]); -/*!\brief Search for the best forward skip coding mode for intra blocks. - * - * \ingroup intra_mode_search - * \callergraph - * \callgraph - * This function searches for the best forward skip coding mode when - * the current frame is an intra frame. - * - * \param[in] cpi Top-level encoder structure. - * \param[in] x Pointer to structure holding all the data - * for the current macroblock. - * \param[in] rate The total rate needed to predict the current - * chroma block. - * \param[in] rate_tokenonly The rate without the cost of sending the - * prediction modes. - * chroma block. - * after the reconstruction. - * \param[in] distortion The chroma distortion of the best prediction - * after the reconstruction. - * \param[in] skippable Whether we can skip txfm process. - * \param[in] bsize Current partition block size. - * \param[in] mode_costs Costs associated with different intra modes. - * \param[in] dir_skip_mask Whether a directional mode is pruned. - * \param[in] best_rd Best RD seen for this block so far. - * \param[in] best_model_rd Best model RD seen for this block so far. - * \param[in] ctx Structure to hold the number of 4x4 blks to - * copy the tx_type and txfm_skip arrays. - * \param[in] best_mbmi Pointer to structure holding - * the mode info for the best macroblock. - */ -void search_fsc_mode(const AV2_COMP *const cpi, MACROBLOCK *x, int *rate, - int *rate_tokenonly, int64_t *distortion, int *skippable, - BLOCK_SIZE bsize, int mode_costs, uint8_t *dir_skip_mask, - int64_t *best_rd, int64_t *best_model_rd, - PICK_MODE_CONTEXT *ctx, MB_MODE_INFO *best_mbmi); - /*!\brief Evaluate luma palette mode for inter frames. * * \ingroup intra_mode_search From cc2c7533aa4d34b69419d0c09677d08f8aae3e02 Mon Sep 17 00:00:00 2001 From: Samuthirika Date: Wed, 29 Jul 2026 11:06:01 +0530 Subject: [PATCH 182/205] Abstract intra mode pruning logic into a function This patch refactors and abstracts different pruning logics within the intra mode evaluation loop into a new function and also avoids redundant computations in intra mode loop. This is a bit-exact change. --- av2/encoder/intra_mode_search.c | 116 +++++++++++++++++++++----------- 1 file changed, 75 insertions(+), 41 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index cfd7bcc650..deb17dbb4a 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1504,6 +1504,63 @@ static AVM_INLINE void init_fsc_best_params(FscBestParams *const fsc_best, fsc_best->dpcm_mode_y = mbmi->dpcm_mode_y; } +// Determines whether the given intra mode should be skipped based on speed +// features and pruning heuristics. +static AVM_INLINE bool skip_intra_mode( + const MB_MODE_INFO *mbmi, int mode_idx, int mrl_idx, int dpcm_index, + const uint8_t directional_mode_skip_mask[], const MB_MODE_INFO *best_mbmi, + bool allow_smooth_intra, bool allow_paeth_intra, + uint8_t mrl0_dir_mode_survived, uint8_t mlp_mode_mask, int mlp_fallback, + bool intra_pruning_with_mlp, bool fsc_mode) { + const PREDICTION_MODE mode = mbmi->mode; + // Skip unsupported DPCM candidates. + if (dpcm_index > 0 && (mrl_idx > 0 || (mode != V_PRED && mode != H_PRED) || + ((mode == V_PRED || mode == H_PRED) && + mbmi->angle_delta[PLANE_TYPE_Y] != 0))) + return true; + + // Skip smooth intra modes when disabled by encoder configuration or speed + // features. + if (!allow_smooth_intra && + (mode == SMOOTH_PRED || mode == SMOOTH_H_PRED || mode == SMOOTH_V_PRED)) + return true; + + // Skip Paeth prediction when disabled. + if (!allow_paeth_intra && mode == PAETH_PRED) return true; + + const bool is_directional_mode = av2_is_directional_mode(mode); + + // Skip secondary directional modes for MRL lines when MLP pruning is enabled + // if the mode did not survive line 0 (MRL 0) evaluation. + if (!fsc_mode && intra_pruning_with_mlp && mrl_idx > 0 && + is_directional_mode && mode_idx >= FIRST_MODE_COUNT && + !mrl0_dir_mode_survived) + return true; + + // Skip MRL candidates for non-directional intra prediction modes. + if (!is_directional_mode && mrl_idx) return true; + + // Skip secondary directional modes if excluded by MLP pruning mask. + if (!fsc_mode && !mlp_fallback && mode_idx >= FIRST_MODE_COUNT && + !mlp_mode_mask) + return true; + + // Skip directional modes based on directional mode mask. + if (is_directional_mode && directional_mode_skip_mask[mode] && + mode_idx >= FIRST_MODE_COUNT) + return true; + + // Prune higher-order multi-line MRL candidates based on the current best + // mode. + if (((best_mbmi->mrl_index == 0 && + av2_is_directional_mode(best_mbmi->mode) == 0) || + (best_mbmi->mrl_index && mbmi->multi_line_mrl == 0)) && + mbmi->mrl_index > 1 && mbmi->multi_line_mrl) + return true; + + return false; +} + // Finds the best non-intrabc mode on an intra frame. int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, int *rate, @@ -1512,6 +1569,10 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, int64_t best_rd, PICK_MODE_CONTEXT *ctx) { MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; + const bool allow_smooth_intra = + cpi->oxcf.intra_mode_cfg.enable_smooth_intra && + !cpi->sf.intra_sf.disable_smooth_intra; + const bool allow_paeth_intra = cpi->oxcf.intra_mode_cfg.enable_paeth_intra; assert(!is_inter_block(mbmi, xd->tree_type)); int64_t best_model_rd = INT64_MAX; mbmi->fsc_mode[xd->tree_type == CHROMA_PART] = 0; @@ -1626,13 +1687,19 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, continue; } - if (dpcm_idx > 0 && - (mrl_idx > 0 || - (mbmi->mode != V_PRED && mbmi->mode != H_PRED) || - ((mbmi->mode == V_PRED || mbmi->mode == H_PRED) && - mbmi->angle_delta[0] != 0))) { + const uint8_t this_mrl0_dir_mode_survived = + mrl0_dir_mode_survived[mbmi->mode]; + const uint8_t this_mlp_mode_mask = mlp_mode_mask[mbmi->mode]; + const bool intra_pruning_with_mlp = + cpi->sf.intra_sf.intra_pruning_with_mlp; + + // Check if the current mode can be skipped. + if (skip_intra_mode(mbmi, mode_idx, mrl_idx, dpcm_idx, + directional_mode_skip_mask, &best_mbmi, + allow_smooth_intra, allow_paeth_intra, + this_mrl0_dir_mode_survived, this_mlp_mode_mask, + mlp_fallback, intra_pruning_with_mlp, fsc_mode)) continue; - } int dpcm_cost = 0; if (xd->lossless[mbmi->segment_id]) { @@ -1688,43 +1755,10 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, RD_STATS this_rd_stats; int this_rate, this_rate_tokenonly, this_skip_txfm; int64_t this_distortion, this_rd; - if ((!cpi->oxcf.intra_mode_cfg.enable_smooth_intra || - cpi->sf.intra_sf.disable_smooth_intra) && - (mbmi->mode == SMOOTH_PRED || mbmi->mode == SMOOTH_H_PRED || - mbmi->mode == SMOOTH_V_PRED)) - continue; - - if (!cpi->oxcf.intra_mode_cfg.enable_paeth_intra && - mbmi->mode == PAETH_PRED) - continue; - - const bool is_directional_mode = - av2_is_directional_mode(mbmi->mode); - if (!fsc_mode && cpi->sf.intra_sf.intra_pruning_with_mlp && - mrl_idx > 0 && is_directional_mode && - mode_idx >= FIRST_MODE_COUNT && - !mrl0_dir_mode_survived[mbmi->mode]) - continue; - - if (!is_directional_mode && mrl_idx) continue; - - if (!fsc_mode && !mlp_fallback && mode_idx >= FIRST_MODE_COUNT && - !mlp_mode_mask[mbmi->mode]) - continue; - - if (is_directional_mode && directional_mode_skip_mask[mbmi->mode] && - mode_idx >= FIRST_MODE_COUNT) - continue; - - if (((best_mbmi.mrl_index == 0 && - av2_is_directional_mode(best_mbmi.mode) == 0) || - (best_mbmi.mrl_index && mbmi->multi_line_mrl == 0)) && - mbmi->mrl_index > 1 && mbmi->multi_line_mrl) { - continue; - } - const int mrl_ctx = get_mrl_index_ctx(xd->neighbors[0], xd->neighbors[1]); + const bool is_directional_mode = + av2_is_directional_mode(mbmi->mode); int mrl_idx_cost = (is_directional_mode && enable_mrls_flag) ? x->mode_costs.mrl_index_cost[mrl_ctx][mbmi->mrl_index] From 739a07162726c29bb9e4055a8d1c5c5accff1508 Mon Sep 17 00:00:00 2001 From: Samuthirika S Date: Wed, 8 Jul 2026 08:02:49 +0530 Subject: [PATCH 183/205] Abstract multi-winner mode processing into helper function Abstracted code related to multi winner mode processing into a helper function `refine_winner_intra_mode_tx`. Also replaces memcpy with `av2_copy_array()`. --- av2/encoder/intra_mode_search.c | 117 +++++++++++++++++++------------- 1 file changed, 68 insertions(+), 49 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index deb17dbb4a..228e2bc3f0 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1561,6 +1561,71 @@ static AVM_INLINE bool skip_intra_mode( return false; } +// Restores the saved luma palette color map. +static AVM_INLINE void restore_palette_color_map(MACROBLOCKD *xd, + BLOCK_SIZE bsize, + const MB_MODE_INFO *mbmi, + const uint8_t *color_map_src) { + if (mbmi->palette_mode_info.palette_size[PLANE_TYPE_Y] > 0) { + int block_width, block_height; + av2_get_block_dimensions(bsize, AVM_PLANE_Y, xd, &block_width, + &block_height, /*rows_within_bounds*/ NULL, + /*cols_within_bounds*/ NULL); + uint8_t *color_map_dst = xd->plane[PLANE_TYPE_Y].color_index_map; + av2_copy_array(color_map_dst, color_map_src, block_width * block_height); + } +} + +// If multi-winner mode processing is enabled, this function iterates over the +// top N candidate intra modes saved during mode evaluation and performs a +// detailed transform search(with Rate - Distortion Optimized Quantization RDOQ +// enabled) to find the best configuration. If disabled, it refines only the +// single best intra candidate mode. +static AVM_INLINE void refine_winner_intra_mode_tx( + const AV2_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mode_cost, + int64_t *best_rd_so_far, int *rate, int *rate_tokenonly, + int64_t *distortion, int *skippable, MB_MODE_INFO *best_mbmi, + PICK_MODE_CONTEXT *ctx) { + MACROBLOCKD *const xd = &x->e_mbd; + MB_MODE_INFO *const mbmi = xd->mi[0]; + + // If previous searches use only the default tx type/no R-D optimization of + // quantized coeffs, do an extra search for the best tx type/better R-D + // optimization of quantized coeffs. + if (cpi->sf.winner_mode_sf.multi_winner_mode_type) { + int best_mode_idx = 0; + + for (int mode_idx = 0; mode_idx < x->winner_mode_count; ++mode_idx) { + *mbmi = x->winner_mode_stats[mode_idx].mbmi; + if (is_winner_mode_processing_enabled(cpi, mbmi, mbmi->mode)) { + // Restore color_map of palette mode before winner mode processing. + restore_palette_color_map( + xd, bsize, mbmi, x->winner_mode_stats[mode_idx].color_index_map); + // Set params for winner mode evaluation. + set_mode_eval_params(cpi, x, WINNER_MODE_EVAL); + + // Winner mode processing. + if (intra_block_yrd(cpi, x, bsize, mode_cost, best_rd_so_far, rate, + rate_tokenonly, distortion, skippable, best_mbmi, + ctx)) + best_mode_idx = mode_idx; + } + } + // Copy color_map of palette mode for final winner mode. + restore_palette_color_map( + xd, bsize, best_mbmi, + x->winner_mode_stats[best_mode_idx].color_index_map); + } else { + if (is_winner_mode_processing_enabled(cpi, mbmi, best_mbmi->mode)) { + // Set params for winner mode evaluation. + set_mode_eval_params(cpi, x, WINNER_MODE_EVAL); + *mbmi = *best_mbmi; + intra_block_yrd(cpi, x, bsize, mode_cost, best_rd_so_far, rate, + rate_tokenonly, distortion, skippable, best_mbmi, ctx); + } + } +} + // Finds the best non-intrabc mode on an intra frame. int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, int *rate, @@ -1925,55 +1990,9 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, // In multi-winner mode processing, perform tx search for few best modes // identified during mode evaluation. Winner mode processing uses best tx // configuration for tx search. - if (cpi->sf.winner_mode_sf.multi_winner_mode_type) { - int best_mode_idx = 0; - int block_width, block_height; - uint8_t *color_map_dst = xd->plane[PLANE_TYPE_Y].color_index_map; - av2_get_block_dimensions(bsize, AVM_PLANE_Y, xd, &block_width, - &block_height, NULL, NULL); - - for (int mode_idx = 0; mode_idx < x->winner_mode_count; ++mode_idx) { - *mbmi = x->winner_mode_stats[mode_idx].mbmi; - if (is_winner_mode_processing_enabled(cpi, mbmi, mbmi->mode)) { - // Restore color_map of palette mode before winner mode processing - if (mbmi->palette_mode_info.palette_size[0] > 0) { - uint8_t *color_map_src = - x->winner_mode_stats[mode_idx].color_index_map; - memcpy(color_map_dst, color_map_src, - block_width * block_height * sizeof(*color_map_src)); - } - // Set params for winner mode evaluation - set_mode_eval_params(cpi, x, WINNER_MODE_EVAL); - - // Winner mode processing - // If previous searches use only the default tx type/no R-D - // optimization of quantized coeffs, do an extra search for the best - // tx type/better R-D optimization of quantized coeffs - if (intra_block_yrd(cpi, x, bsize, mode_costs, &best_rd, rate, - rate_tokenonly, distortion, skippable, &best_mbmi, - ctx)) - best_mode_idx = mode_idx; - } - } - // Copy color_map of palette mode for final winner mode - if (best_mbmi.palette_mode_info.palette_size[0] > 0) { - uint8_t *color_map_src = - x->winner_mode_stats[best_mode_idx].color_index_map; - memcpy(color_map_dst, color_map_src, - block_width * block_height * sizeof(*color_map_src)); - } - } else { - // If previous searches use only the default tx type/no R-D optimization - // of quantized coeffs, do an extra search for the best tx type/better R-D - // optimization of quantized coeffs - if (is_winner_mode_processing_enabled(cpi, mbmi, best_mbmi.mode)) { - // Set params for winner mode evaluation - set_mode_eval_params(cpi, x, WINNER_MODE_EVAL); - *mbmi = best_mbmi; - intra_block_yrd(cpi, x, bsize, mode_costs, &best_rd, rate, rate_tokenonly, - distortion, skippable, &best_mbmi, ctx); - } - } + refine_winner_intra_mode_tx(cpi, x, bsize, mode_costs, &best_rd, rate, + rate_tokenonly, distortion, skippable, &best_mbmi, + ctx); *mbmi = best_mbmi; if (mbmi->joint_y_mode_delta_angle < NON_DIRECTIONAL_MODES_COUNT) assert(mbmi->joint_y_mode_delta_angle == mbmi->y_mode_idx); From 8cb7d44463c87562b850b832adb4feb69e19f9b4 Mon Sep 17 00:00:00 2001 From: Samuthirika Date: Thu, 30 Jul 2026 10:21:53 +0530 Subject: [PATCH 184/205] Rename variables for intra mode search This patch renames variables in av2_rd_pick_intra_sby_mode() for better readablity and code consistency. --- av2/encoder/intra_mode_search.c | 64 +++++++++++++++++---------------- av2/encoder/intra_mode_search.h | 9 ++--- 2 files changed, 39 insertions(+), 34 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index 228e2bc3f0..dc3a207f8d 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1631,7 +1631,8 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, BLOCK_SIZE bsize, - int64_t best_rd, PICK_MODE_CONTEXT *ctx) { + int64_t best_rd_so_far, + PICK_MODE_CONTEXT *ctx) { MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; const bool allow_smooth_intra = @@ -1648,11 +1649,11 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, struct extra_dip_info extra_dip; extra_dip.beat_best_rd = 0; extra_dip.dc_mode_rd = INT64_MAX; - extra_dip.orig_best_rd = best_rd; + extra_dip.orig_best_rd = best_rd_so_far; extra_dip.best_mode = 0; #endif // CONFIG_DIP_EXT_PRUNING - // Flag to check rd of any intra mode is better than best_rd passed to this - // function + // Flag to check rd of any intra mode is better than best_rd_so_far passed to + // this function int beat_best_rd = 0; PALETTE_MODE_INFO *const pmi = &mbmi->palette_mode_info; const int try_palette = @@ -1663,7 +1664,6 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, uint8_t *best_palette_color_map = try_palette ? x->palette_buffer->best_palette_color_map : NULL; const int context = get_y_mode_idx_ctx(xd); - int mode_costs = 0; mbmi->angle_delta[PLANE_TYPE_Y] = 0; uint8_t mlp_mode_mask[INTRA_MODES] = { 0 }; @@ -1766,10 +1766,11 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mlp_fallback, intra_pruning_with_mlp, fsc_mode)) continue; + int this_mode_cost = 0; int dpcm_cost = 0; if (xd->lossless[mbmi->segment_id]) { dpcm_cost = x->mode_costs.dpcm_cost[dpcm_idx]; - mode_costs += dpcm_cost; + this_mode_cost += dpcm_cost; } if (mbmi->use_dpcm_y > 0) { mbmi->dpcm_mode_y = mbmi->mode - 1; @@ -1785,24 +1786,25 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; mode_set_index += ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); - mode_costs += x->mode_costs.y_primary_flag_cost[mode_set_index]; + this_mode_cost += + x->mode_costs.y_primary_flag_cost[mode_set_index]; if (mode_idx < FIRST_MODE_COUNT) { int mode_set_low = AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); - mode_costs += + this_mode_cost += x->mode_costs.y_mode_idx_costs[context][mode_set_low]; if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) - mode_costs += + this_mode_cost += x->mode_costs .y_mode_idx_offset_costs[context] [mode_idx - mode_set_low]; } else { - mode_costs += av2_cost_literal(4); + this_mode_cost += av2_cost_literal(4); } } else { int dpcm_dir_cost = x->mode_costs.dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; - mode_costs += dpcm_dir_cost; + this_mode_cost += dpcm_dir_cost; } // Set FSC mode flag and disable incompatible modes (DIP and @@ -1838,11 +1840,11 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, // In FSC intra search, MRL index signaling cost is added // unconditionally to account for MRL signaling when combining MRL // with FSC mode. - if (dpcm_idx == 0 || fsc_mode) mode_costs += mrl_idx_cost; + if (dpcm_idx == 0 || fsc_mode) this_mode_cost += mrl_idx_cost; // Calculate intra model rd for Luma. const int64_t this_model_rd = - intra_model_yrd(cpi, x, bsize, mode_costs); + intra_model_yrd(cpi, x, bsize, this_mode_cost); if (prune_intra_y_mode(this_model_rd, &best_model_rd, top_intra_model_rd, x->intra_mode_prune_top, xd->lossless[mbmi->segment_id], @@ -1855,7 +1857,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, // Evaluate best transform size and type for Luma. av2_pick_uniform_tx_size_type_yrd(cpi, x, &this_rd_stats, bsize, - best_rd); + best_rd_so_far); this_rate_tokenonly = this_rd_stats.rate; this_distortion = this_rd_stats.dist; this_skip_txfm = this_rd_stats.skip_txfm; @@ -1871,8 +1873,9 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, // for it in the full rate, not the tokenonly rate. this_rate_tokenonly -= tx_size_cost(x, bsize, mbmi->tx_size); } - this_rate = this_rd_stats.rate + - intra_mode_info_cost_y(cpi, x, mbmi, bsize, mode_costs); + this_rate = + this_rd_stats.rate + + intra_mode_info_cost_y(cpi, x, mbmi, bsize, this_mode_cost); this_rd = RDCOST(x->rdmult, this_rate, this_distortion); #if CONFIG_DIP_EXT_PRUNING if (!fsc_mode && mbmi->mode == DC_PRED) { @@ -1886,7 +1889,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, &cpi->common, x, mbmi, NULL, NULL, NULL, refs, 0, NULL, bsize, this_rd, cpi->sf.winner_mode_sf.multi_winner_mode_type, txfm_search_done); - if (this_rd < best_rd) { + if (this_rd < best_rd_so_far) { // Save winning FSC mode parameters and transform maps when FSC // mode beats best RD cost. if (fsc_mode) { @@ -1908,7 +1911,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } else { best_mbmi = *mbmi; // Setting beat_best_rd flag because current mode rd is better - // than best_rd passed to this function + // than best_rd_so_far passed to this function beat_best_rd = 1; #if CONFIG_DIP_EXT_PRUNING extra_dip.beat_best_rd = 1; @@ -1921,7 +1924,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, *rate_tokenonly = this_rate_tokenonly; *distortion = this_distortion; *skippable = this_skip_txfm; - best_rd = this_rd; + best_rd_so_far = this_rd; memcpy(ctx->blk_skip[AVM_PLANE_Y], x->txfm_search_info.blk_skip[AVM_PLANE_Y], sizeof(*x->txfm_search_info.blk_skip[AVM_PLANE_Y]) * @@ -1957,13 +1960,14 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } // End of fsc_mode loop. // Searches palette - mode_costs = x->mode_costs.y_primary_flag_cost[DC_PRED]; - mode_costs += x->mode_costs.y_mode_idx_costs[context][DC_PRED]; + int mode_cost = x->mode_costs.y_primary_flag_cost[DC_PRED]; + mode_cost += x->mode_costs.y_mode_idx_costs[context][DC_PRED]; if (try_palette) { - av2_rd_pick_palette_intra_sby( - cpi, x, bsize, mode_costs, &best_mbmi, best_palette_color_map, &best_rd, - &best_model_rd, rate, rate_tokenonly, distortion, skippable, - &beat_best_rd, ctx, ctx->blk_skip[AVM_PLANE_Y], ctx->tx_type_map); + av2_rd_pick_palette_intra_sby(cpi, x, bsize, mode_cost, &best_mbmi, + best_palette_color_map, &best_rd_so_far, + &best_model_rd, rate, rate_tokenonly, + distortion, skippable, &beat_best_rd, ctx, + ctx->blk_skip[AVM_PLANE_Y], ctx->tx_type_map); } // Try Intra ML prediction (within intra frame). @@ -1971,7 +1975,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, av2_intra_dip_allowed_bsize(&cpi->common, bsize); if (try_intra_dip) { if (rd_pick_intra_dip_sby(cpi, td, x, rate, rate_tokenonly, distortion, - skippable, bsize, mode_costs, &best_rd, + skippable, bsize, mode_cost, &best_rd_so_far, &best_model_rd, ctx #if CONFIG_DIP_EXT_PRUNING , @@ -1982,20 +1986,20 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } } - // No mode is identified with less rd value than best_rd passed to this + // No mode is identified with less rd value than best_rd_so_far passed to this // function. In such cases winner mode processing is not necessary and - // return best_rd as INT64_MAX to indicate best mode is not identified + // return best_rd_so_far as INT64_MAX to indicate best mode is not identified if (!beat_best_rd) return INT64_MAX; // In multi-winner mode processing, perform tx search for few best modes // identified during mode evaluation. Winner mode processing uses best tx // configuration for tx search. - refine_winner_intra_mode_tx(cpi, x, bsize, mode_costs, &best_rd, rate, + refine_winner_intra_mode_tx(cpi, x, bsize, mode_cost, &best_rd_so_far, rate, rate_tokenonly, distortion, skippable, &best_mbmi, ctx); *mbmi = best_mbmi; if (mbmi->joint_y_mode_delta_angle < NON_DIRECTIONAL_MODES_COUNT) assert(mbmi->joint_y_mode_delta_angle == mbmi->y_mode_idx); av2_copy_array(xd->tx_type_map, ctx->tx_type_map, ctx->num_4x4_blk); - return best_rd; + return best_rd_so_far; } diff --git a/av2/encoder/intra_mode_search.h b/av2/encoder/intra_mode_search.h index bed7d0e30a..56397978b0 100644 --- a/av2/encoder/intra_mode_search.h +++ b/av2/encoder/intra_mode_search.h @@ -286,19 +286,20 @@ int av2_search_palette_mode(IntraModeSearchState *intra_search_state, * after the reconstruction. * \param[in] skippable Whether we can skip txfm process. * \param[in] bsize Current partition block size. - * \param[in] best_rd Best RD seen for this block so far. + * \param[in] best_rd_so_far Best RD seen for this block so far. * \param[in] ctx Structure to hold the number of 4x4 blks to * copy the tx_type and txfm_skip arrays. * * \return Returns the rd_cost if this function finds a mode better than - * best_rd, otherwise returns INT64_MAX. This also updates the mbmi, the rate - * and distortion, and the tx_type arrays in ctx. + * best_rd_so_far, otherwise returns INT64_MAX. This also updates the mbmi, the + * rate and distortion, and the tx_type arrays in ctx. */ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, MACROBLOCK *x, int *rate, int *rate_tokenonly, int64_t *distortion, int *skippable, BLOCK_SIZE bsize, - int64_t best_rd, PICK_MODE_CONTEXT *ctx); + int64_t best_rd_so_far, + PICK_MODE_CONTEXT *ctx); /*!\brief Perform intra-mode search on chroma channels. * From 2d97d8d96877109ed5df8afadfa1c016975b4352 Mon Sep 17 00:00:00 2001 From: Samuthirika Date: Wed, 29 Jul 2026 14:51:01 +0530 Subject: [PATCH 185/205] Refactor av2_rd_pick_intra_sby_mode - Updated comments to adhere to coding guidelines. - Used local variables to avoid repetitive access from data structures. - Modified code logic for better readability. --- av2/encoder/intra_mode_search.c | 196 ++++++++++++++++---------------- 1 file changed, 99 insertions(+), 97 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index dc3a207f8d..6b8e4d9c75 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1635,9 +1635,15 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, PICK_MODE_CONTEXT *ctx) { MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; + const AV2_COMMON *const cm = &cpi->common; + const INTRA_MODE_SPEED_FEATURES *const intra_sf = &cpi->sf.intra_sf; + const ModeCosts *const mode_costs = &x->mode_costs; + const MB_MODE_INFO *const neighbor0 = xd->neighbors[0]; + const MB_MODE_INFO *const neighbor1 = xd->neighbors[1]; + const bool is_lossless = xd->lossless[mbmi->segment_id]; const bool allow_smooth_intra = cpi->oxcf.intra_mode_cfg.enable_smooth_intra && - !cpi->sf.intra_sf.disable_smooth_intra; + !intra_sf->disable_smooth_intra; const bool allow_paeth_intra = cpi->oxcf.intra_mode_cfg.enable_paeth_intra; assert(!is_inter_block(mbmi, xd->tree_type)); int64_t best_model_rd = INT64_MAX; @@ -1653,13 +1659,12 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, extra_dip.best_mode = 0; #endif // CONFIG_DIP_EXT_PRUNING // Flag to check rd of any intra mode is better than best_rd_so_far passed to - // this function + // this function. int beat_best_rd = 0; PALETTE_MODE_INFO *const pmi = &mbmi->palette_mode_info; - const int try_palette = + const bool try_palette = cpi->oxcf.tool_cfg.enable_palette && - av2_allow_palette(PLANE_TYPE_Y, - cpi->common.features.allow_screen_content_tools, + av2_allow_palette(PLANE_TYPE_Y, cm->features.allow_screen_content_tools, mbmi->sb_type[PLANE_TYPE_Y]); uint8_t *best_palette_color_map = try_palette ? x->palette_buffer->best_palette_color_map : NULL; @@ -1667,35 +1672,33 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->angle_delta[PLANE_TYPE_Y] = 0; uint8_t mlp_mode_mask[INTRA_MODES] = { 0 }; - int mlp_fallback = !cpi->sf.intra_sf.intra_pruning_with_mlp; - if (cpi->sf.intra_sf.intra_pruning_with_mlp) { + int mlp_fallback = !intra_sf->intra_pruning_with_mlp; + if (intra_sf->intra_pruning_with_mlp) { av2_intra_mlp_compute_mode_mask(cpi, x, bsize, mlp_mode_mask, &mlp_fallback, directional_mode_skip_mask); - } else if (cpi->sf.intra_sf.intra_pruning_with_hog) { - prune_intra_mode_with_hog(x, bsize, - cpi->sf.intra_sf.intra_pruning_with_hog_thresh, + } else if (intra_sf->intra_pruning_with_hog) { + prune_intra_mode_with_hog(x, bsize, intra_sf->intra_pruning_with_hog_thresh, directional_mode_skip_mask); } mbmi->use_intra_dip = 0; - pmi->palette_size[0] = 0; + pmi->palette_size[PLANE_TYPE_Y] = 0; mbmi->motion_mode = SIMPLE_TRANSLATION; - // Set params for mode evaluation + // Set params for mode evaluation. set_mode_eval_params(cpi, x, MODE_EVAL); get_y_intra_mode_set(mbmi, xd); - mbmi->is_wide_angle[0][mbmi->txb_idx] = 0; - mbmi->mapped_intra_mode[0][mbmi->txb_idx] = DC_PRED; + mbmi->is_wide_angle[PLANE_TYPE_Y][mbmi->txb_idx] = 0; + mbmi->mapped_intra_mode[PLANE_TYPE_Y][mbmi->txb_idx] = DC_PRED; MB_MODE_INFO best_mbmi = *mbmi; av2_zero(x->winner_mode_stats); x->winner_mode_count = 0; mbmi->dpcm_mode_y = 0; - // mbmi->dpcm_angle_delta = 0; + // Searches the intra-modes except for intrabc, palette, and filter_intra. - const int fsc_loop_num = - allow_fsc_intra(&cpi->common, bsize, mbmi) ? FSC_MODES : 1; + const int fsc_loop_num = allow_fsc_intra(cm, bsize, mbmi) ? FSC_MODES : 1; for (int fsc_mode = 0; fsc_mode < fsc_loop_num; ++fsc_mode) { if (fsc_mode == 1 && !beat_best_rd) break; @@ -1712,7 +1715,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, x->top_tx_part_rd[i] = INT64_MAX; } - const uint8_t enable_mrls_flag = cpi->common.seq_params.enable_mrls; + const uint8_t enable_mrls_flag = cm->seq_params.enable_mrls; int mrl_loop_num; if (fsc_mode) { mrl_loop_num = (enable_mrls_flag && best_mbmi.mrl_index) ? 2 : 1; @@ -1721,7 +1724,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } mbmi->use_dpcm_y = 0; - const int dpcm_loop_num = xd->lossless[mbmi->segment_id] ? 2 : 1; + const int dpcm_loop_num = is_lossless ? 2 : 1; for (int dpcm_idx = 0; dpcm_idx < dpcm_loop_num; ++dpcm_idx) { uint8_t mrl0_dir_mode_survived[INTRA_MODES] = { 0 }; @@ -1741,7 +1744,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->y_mode_idx = mode_idx; mbmi->joint_y_mode_delta_angle = mbmi->y_intra_mode_list[mode_idx]; mbmi->use_dpcm_y = dpcm_idx; - // the below function changes the mbmi->mode based on the mode_idx + // The below function changes the mbmi->mode based on the mode_idx. av2_set_y_mode_and_delta_angle(mbmi->joint_y_mode_delta_angle, mbmi); // During FSC search, prune secondary directional modes that differ @@ -1756,7 +1759,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mrl0_dir_mode_survived[mbmi->mode]; const uint8_t this_mlp_mode_mask = mlp_mode_mask[mbmi->mode]; const bool intra_pruning_with_mlp = - cpi->sf.intra_sf.intra_pruning_with_mlp; + intra_sf->intra_pruning_with_mlp; // Check if the current mode can be skipped. if (skip_intra_mode(mbmi, mode_idx, mrl_idx, dpcm_idx, @@ -1766,106 +1769,105 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mlp_fallback, intra_pruning_with_mlp, fsc_mode)) continue; + // Set FSC mode flag and disable incompatible modes (DIP and + // Palette) during FSC search pass. + if (fsc_mode) { + if (is_lossless) { + mbmi->fsc_mode[xd->tree_type == CHROMA_PART] = 1; + } else { + mbmi->fsc_mode[PLANE_TYPE_Y] = 1; + } + mbmi->use_intra_dip = 0; + mbmi->palette_mode_info.palette_size[PLANE_TYPE_Y] = 0; + } + int this_mode_cost = 0; int dpcm_cost = 0; - if (xd->lossless[mbmi->segment_id]) { - dpcm_cost = x->mode_costs.dpcm_cost[dpcm_idx]; + if (is_lossless) { + dpcm_cost = mode_costs->dpcm_cost[dpcm_idx]; this_mode_cost += dpcm_cost; } - if (mbmi->use_dpcm_y > 0) { - mbmi->dpcm_mode_y = mbmi->mode - 1; - } else { + + // Add the bit cost for signaling the selected luma prediction + // mode. Non-DPCM modes are signaled using the standard luma mode + // syntax, whereas DPCM modes use the dedicated DPCM direction + // syntax. + if (mbmi->use_dpcm_y == 0) { // Reset DPCM prediction direction to 0 for non-DPCM modes during // standard non-FSC search. In FSC pass, preserve the initial DPCM // direction state. - if (!fsc_mode) { - mbmi->dpcm_mode_y = 0; - } - } - if (mbmi->use_dpcm_y == 0) { + if (!fsc_mode) mbmi->dpcm_mode_y = 0; int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; mode_set_index += ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); - this_mode_cost += - x->mode_costs.y_primary_flag_cost[mode_set_index]; + this_mode_cost += mode_costs->y_primary_flag_cost[mode_set_index]; if (mode_idx < FIRST_MODE_COUNT) { int mode_set_low = AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); this_mode_cost += - x->mode_costs.y_mode_idx_costs[context][mode_set_low]; + mode_costs->y_mode_idx_costs[context][mode_set_low]; if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) this_mode_cost += - x->mode_costs - .y_mode_idx_offset_costs[context] - [mode_idx - mode_set_low]; + mode_costs + ->y_mode_idx_offset_costs[context] + [mode_idx - mode_set_low]; } else { this_mode_cost += av2_cost_literal(4); } } else { - int dpcm_dir_cost = - x->mode_costs.dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; + mbmi->dpcm_mode_y = mbmi->mode - 1; + const int dpcm_dir_cost = + mode_costs->dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; this_mode_cost += dpcm_dir_cost; } - // Set FSC mode flag and disable incompatible modes (DIP and - // Palette) during FSC search pass. - if (fsc_mode) { - if (xd->lossless[mbmi->segment_id]) { - mbmi->fsc_mode[xd->tree_type == CHROMA_PART] = 1; - } else { - mbmi->fsc_mode[PLANE_TYPE_Y] = 1; - } - mbmi->use_intra_dip = 0; - mbmi->palette_mode_info.palette_size[0] = 0; - } - - RD_STATS this_rd_stats; - int this_rate, this_rate_tokenonly, this_skip_txfm; - int64_t this_distortion, this_rd; - const int mrl_ctx = - get_mrl_index_ctx(xd->neighbors[0], xd->neighbors[1]); - const bool is_directional_mode = - av2_is_directional_mode(mbmi->mode); - int mrl_idx_cost = - (is_directional_mode && enable_mrls_flag) - ? x->mode_costs.mrl_index_cost[mrl_ctx][mbmi->mrl_index] - : 0; - if (is_directional_mode && enable_mrls_flag && mbmi->mrl_index) { - int multi_line_mrl_ctx = get_multi_line_mrl_index_ctx( - xd->neighbors[0], xd->neighbors[1]); - mrl_idx_cost += - x->mode_costs.multi_line_mrl_cost[multi_line_mrl_ctx] - [mbmi->multi_line_mrl]; - } // In FSC intra search, MRL index signaling cost is added // unconditionally to account for MRL signaling when combining MRL // with FSC mode. - if (dpcm_idx == 0 || fsc_mode) this_mode_cost += mrl_idx_cost; + bool is_directional_mode = av2_is_directional_mode(mbmi->mode); + if (dpcm_idx == 0 || fsc_mode) { + int mrl_idx_cost = 0; + const bool use_mrl = is_directional_mode && enable_mrls_flag; + if (use_mrl) { + const int mrl_ctx = get_mrl_index_ctx(neighbor0, neighbor1); + mrl_idx_cost = + mode_costs->mrl_index_cost[mrl_ctx][mbmi->mrl_index]; + + if (mbmi->mrl_index) { + const int multi_line_mrl_ctx = + get_multi_line_mrl_index_ctx(neighbor0, neighbor1); + mrl_idx_cost += + mode_costs->multi_line_mrl_cost[multi_line_mrl_ctx] + [mbmi->multi_line_mrl]; + } + } + this_mode_cost += mrl_idx_cost; + } // Calculate intra model rd for Luma. const int64_t this_model_rd = intra_model_yrd(cpi, x, bsize, this_mode_cost); if (prune_intra_y_mode(this_model_rd, &best_model_rd, top_intra_model_rd, x->intra_mode_prune_top, - xd->lossless[mbmi->segment_id], - mbmi->use_dpcm_y)) + is_lossless, mbmi->use_dpcm_y)) continue; - if (!fsc_mode && cpi->sf.intra_sf.intra_pruning_with_mlp && - mrl_idx == 0 && is_directional_mode) + if (!fsc_mode && intra_sf->intra_pruning_with_mlp && mrl_idx == 0 && + is_directional_mode) mrl0_dir_mode_survived[mbmi->mode] = 1; // Evaluate best transform size and type for Luma. + RD_STATS this_rd_stats; av2_pick_uniform_tx_size_type_yrd(cpi, x, &this_rd_stats, bsize, best_rd_so_far); - this_rate_tokenonly = this_rd_stats.rate; - this_distortion = this_rd_stats.dist; - this_skip_txfm = this_rd_stats.skip_txfm; + int this_rate_tokenonly = this_rd_stats.rate; + const int64_t this_distortion = this_rd_stats.dist; + const int this_skip_txfm = this_rd_stats.skip_txfm; if (this_rate_tokenonly == INT_MAX) continue; if (!fsc_mode && - (!xd->lossless[mbmi->segment_id] && + (!is_lossless && block_signals_txsize(mbmi->sb_type[PLANE_TYPE_Y]))) { // av2_pick_uniform_tx_size_type_yrd above includes the cost of // the tx_size in the tokenonly rate, but for intra blocks, @@ -1873,21 +1875,22 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, // for it in the full rate, not the tokenonly rate. this_rate_tokenonly -= tx_size_cost(x, bsize, mbmi->tx_size); } - this_rate = + const int this_rate = this_rd_stats.rate + intra_mode_info_cost_y(cpi, x, mbmi, bsize, this_mode_cost); - this_rd = RDCOST(x->rdmult, this_rate, this_distortion); + const int64_t this_rd = + RDCOST(x->rdmult, this_rate, this_distortion); #if CONFIG_DIP_EXT_PRUNING if (!fsc_mode && mbmi->mode == DC_PRED) { extra_dip.dc_mode_rd = this_rd; } #endif // CONFIG_DIP_EXT_PRUNING - // Collect mode stats for multiwinner mode processing + // Collect mode stats for multiwinner mode processing. const int txfm_search_done = 1; - const MV_REFERENCE_FRAME refs[2] = { -1, -1 }; + const MV_REFERENCE_FRAME refs[2] = { NONE_FRAME, NONE_FRAME }; store_winner_mode_stats( - &cpi->common, x, mbmi, NULL, NULL, NULL, refs, 0, NULL, bsize, - this_rd, cpi->sf.winner_mode_sf.multi_winner_mode_type, + cm, x, mbmi, NULL, NULL, NULL, refs, 0, NULL, bsize, this_rd, + cpi->sf.winner_mode_sf.multi_winner_mode_type, txfm_search_done); if (this_rd < best_rd_so_far) { // Save winning FSC mode parameters and transform maps when FSC @@ -1900,7 +1903,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, fsc_best.joint_ymode = mbmi->joint_y_mode_delta_angle; fsc_best.mrl_idx = mbmi->mrl_index; fsc_best.multi_line_mrl = mbmi->multi_line_mrl; - if (xd->lossless[mbmi->segment_id]) { + if (is_lossless) { fsc_best.use_dpcm_y = mbmi->use_dpcm_y; fsc_best.dpcm_mode_y = mbmi->dpcm_mode_y; } @@ -1911,7 +1914,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } else { best_mbmi = *mbmi; // Setting beat_best_rd flag because current mode rd is better - // than best_rd_so_far passed to this function + // than best_rd_so_far passed to this function. beat_best_rd = 1; #if CONFIG_DIP_EXT_PRUNING extra_dip.beat_best_rd = 1; @@ -1925,10 +1928,9 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, *distortion = this_distortion; *skippable = this_skip_txfm; best_rd_so_far = this_rd; - memcpy(ctx->blk_skip[AVM_PLANE_Y], - x->txfm_search_info.blk_skip[AVM_PLANE_Y], - sizeof(*x->txfm_search_info.blk_skip[AVM_PLANE_Y]) * - ctx->num_4x4_blk); + av2_copy_array(ctx->blk_skip[AVM_PLANE_Y], + x->txfm_search_info.blk_skip[AVM_PLANE_Y], + ctx->num_4x4_blk); } } // End of mode_idx loop. } // End of ml_mrl_iter loop. @@ -1941,7 +1943,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->mode = fsc_best.intra_mode; mbmi->y_mode_idx = fsc_best.y_mode_idx; mbmi->joint_y_mode_delta_angle = fsc_best.joint_ymode; - if (xd->lossless[mbmi->segment_id]) { + if (is_lossless) { mbmi->use_dpcm_y = fsc_best.use_dpcm_y; mbmi->dpcm_mode_y = fsc_best.dpcm_mode_y; } @@ -1959,9 +1961,9 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } } // End of fsc_mode loop. - // Searches palette - int mode_cost = x->mode_costs.y_primary_flag_cost[DC_PRED]; - mode_cost += x->mode_costs.y_mode_idx_costs[context][DC_PRED]; + // Searches palette. + int mode_cost = mode_costs->y_primary_flag_cost[DC_PRED]; + mode_cost += mode_costs->y_mode_idx_costs[context][DC_PRED]; if (try_palette) { av2_rd_pick_palette_intra_sby(cpi, x, bsize, mode_cost, &best_mbmi, best_palette_color_map, &best_rd_so_far, @@ -1971,8 +1973,8 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, } // Try Intra ML prediction (within intra frame). - const int try_intra_dip = !cpi->sf.intra_sf.skip_intra_dip_search && - av2_intra_dip_allowed_bsize(&cpi->common, bsize); + const bool try_intra_dip = !intra_sf->skip_intra_dip_search && + av2_intra_dip_allowed_bsize(cm, bsize); if (try_intra_dip) { if (rd_pick_intra_dip_sby(cpi, td, x, rate, rate_tokenonly, distortion, skippable, bsize, mode_cost, &best_rd_so_far, @@ -1988,7 +1990,7 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, // No mode is identified with less rd value than best_rd_so_far passed to this // function. In such cases winner mode processing is not necessary and - // return best_rd_so_far as INT64_MAX to indicate best mode is not identified + // return best_rd_so_far as INT64_MAX to indicate best mode is not identified. if (!beat_best_rd) return INT64_MAX; // In multi-winner mode processing, perform tx search for few best modes From 680421096a2a33a88aa4077f28c608565859fa43 Mon Sep 17 00:00:00 2001 From: Samuthirika Date: Thu, 30 Jul 2026 20:09:46 +0530 Subject: [PATCH 186/205] Abstract intra mode cost calculation into a function Abstracted code related to luma intra mode cost calculation into a helper function to improve readability. --- av2/encoder/intra_mode_search.c | 134 +++++++++++++++++--------------- 1 file changed, 70 insertions(+), 64 deletions(-) diff --git a/av2/encoder/intra_mode_search.c b/av2/encoder/intra_mode_search.c index 6b8e4d9c75..84a93836a1 100644 --- a/av2/encoder/intra_mode_search.c +++ b/av2/encoder/intra_mode_search.c @@ -1504,6 +1504,71 @@ static AVM_INLINE void init_fsc_best_params(FscBestParams *const fsc_best, fsc_best->dpcm_mode_y = mbmi->dpcm_mode_y; } +// Calculates mode signaling bit cost for luma intra prediction mode. +static AVM_INLINE int get_intra_mode_cost_y( + MACROBLOCKD *const xd, MB_MODE_INFO *const mbmi, + const ModeCosts *const mode_costs, int mode_idx, int context, + bool is_lossless, bool enable_mrls_flag, int fsc_mode) { + const MB_MODE_INFO *const neighbor0 = xd->neighbors[0]; + const MB_MODE_INFO *const neighbor1 = xd->neighbors[1]; + int use_dpcm_y = mbmi->use_dpcm_y; + int this_mode_cost = 0; + if (is_lossless) { + const int dpcm_cost = mode_costs->dpcm_cost[use_dpcm_y]; + this_mode_cost += dpcm_cost; + } + + // Add the bit cost for signaling the selected luma prediction mode. Non-DPCM + // modes are signaled using the standard luma mode syntax, whereas DPCM modes + // use the dedicated DPCM direction syntax. + if (use_dpcm_y == 0) { + // Reset DPCM prediction direction to 0 for non-DPCM modes during standard + // non-FSC search. In FSC pass, preserve the initial DPCM direction state. + if (!fsc_mode) mbmi->dpcm_mode_y = 0; + int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; + mode_set_index += + ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); + this_mode_cost += mode_costs->y_primary_flag_cost[mode_set_index]; + if (mode_idx < FIRST_MODE_COUNT) { + const int mode_set_low = + AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); + this_mode_cost += mode_costs->y_mode_idx_costs[context][mode_set_low]; + if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) + this_mode_cost += + mode_costs + ->y_mode_idx_offset_costs[context][mode_idx - mode_set_low]; + } else { + this_mode_cost += av2_cost_literal(4); + } + } else { + mbmi->dpcm_mode_y = mbmi->mode - 1; + const int dpcm_dir_cost = + mode_costs->dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; + this_mode_cost += dpcm_dir_cost; + } + + // In FSC intra search, MRL index signaling cost is added unconditionally to + // account for MRL signaling when combining MRL with FSC mode. + if (use_dpcm_y == 0 || fsc_mode) { + const bool is_directional_mode = av2_is_directional_mode(mbmi->mode); + const bool use_mrl = is_directional_mode && enable_mrls_flag; + if (use_mrl) { + const int mrl_ctx = get_mrl_index_ctx(neighbor0, neighbor1); + int mrl_idx_cost = mode_costs->mrl_index_cost[mrl_ctx][mbmi->mrl_index]; + if (mbmi->mrl_index) { + const int multi_line_mrl_ctx = + get_multi_line_mrl_index_ctx(neighbor0, neighbor1); + mrl_idx_cost += + mode_costs + ->multi_line_mrl_cost[multi_line_mrl_ctx][mbmi->multi_line_mrl]; + } + this_mode_cost += mrl_idx_cost; + } + } + + return this_mode_cost; +} + // Determines whether the given intra mode should be skipped based on speed // features and pruning heuristics. static AVM_INLINE bool skip_intra_mode( @@ -1638,8 +1703,6 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, const AV2_COMMON *const cm = &cpi->common; const INTRA_MODE_SPEED_FEATURES *const intra_sf = &cpi->sf.intra_sf; const ModeCosts *const mode_costs = &x->mode_costs; - const MB_MODE_INFO *const neighbor0 = xd->neighbors[0]; - const MB_MODE_INFO *const neighbor1 = xd->neighbors[1]; const bool is_lossless = xd->lossless[mbmi->segment_id]; const bool allow_smooth_intra = cpi->oxcf.intra_mode_cfg.enable_smooth_intra && @@ -1781,68 +1844,9 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, mbmi->palette_mode_info.palette_size[PLANE_TYPE_Y] = 0; } - int this_mode_cost = 0; - int dpcm_cost = 0; - if (is_lossless) { - dpcm_cost = mode_costs->dpcm_cost[dpcm_idx]; - this_mode_cost += dpcm_cost; - } - - // Add the bit cost for signaling the selected luma prediction - // mode. Non-DPCM modes are signaled using the standard luma mode - // syntax, whereas DPCM modes use the dedicated DPCM direction - // syntax. - if (mbmi->use_dpcm_y == 0) { - // Reset DPCM prediction direction to 0 for non-DPCM modes during - // standard non-FSC search. In FSC pass, preserve the initial DPCM - // direction state. - if (!fsc_mode) mbmi->dpcm_mode_y = 0; - int mode_set_index = mbmi->y_mode_idx < FIRST_MODE_COUNT ? 0 : 1; - mode_set_index += - ((mbmi->y_mode_idx - FIRST_MODE_COUNT) / SECOND_MODE_COUNT); - this_mode_cost += mode_costs->y_primary_flag_cost[mode_set_index]; - if (mode_idx < FIRST_MODE_COUNT) { - int mode_set_low = - AVMMIN(mode_idx, LUMA_INTRA_MODE_INDEX_COUNT - 1); - this_mode_cost += - mode_costs->y_mode_idx_costs[context][mode_set_low]; - if (mode_set_low == (LUMA_INTRA_MODE_INDEX_COUNT - 1)) - this_mode_cost += - mode_costs - ->y_mode_idx_offset_costs[context] - [mode_idx - mode_set_low]; - } else { - this_mode_cost += av2_cost_literal(4); - } - } else { - mbmi->dpcm_mode_y = mbmi->mode - 1; - const int dpcm_dir_cost = - mode_costs->dpcm_vert_horz_cost[mbmi->dpcm_mode_y]; - this_mode_cost += dpcm_dir_cost; - } - - // In FSC intra search, MRL index signaling cost is added - // unconditionally to account for MRL signaling when combining MRL - // with FSC mode. - bool is_directional_mode = av2_is_directional_mode(mbmi->mode); - if (dpcm_idx == 0 || fsc_mode) { - int mrl_idx_cost = 0; - const bool use_mrl = is_directional_mode && enable_mrls_flag; - if (use_mrl) { - const int mrl_ctx = get_mrl_index_ctx(neighbor0, neighbor1); - mrl_idx_cost = - mode_costs->mrl_index_cost[mrl_ctx][mbmi->mrl_index]; - - if (mbmi->mrl_index) { - const int multi_line_mrl_ctx = - get_multi_line_mrl_index_ctx(neighbor0, neighbor1); - mrl_idx_cost += - mode_costs->multi_line_mrl_cost[multi_line_mrl_ctx] - [mbmi->multi_line_mrl]; - } - } - this_mode_cost += mrl_idx_cost; - } + const int this_mode_cost = + get_intra_mode_cost_y(xd, mbmi, mode_costs, mode_idx, context, + is_lossless, enable_mrls_flag, fsc_mode); // Calculate intra model rd for Luma. const int64_t this_model_rd = @@ -1852,6 +1856,8 @@ int64_t av2_rd_pick_intra_sby_mode(const AV2_COMP *const cpi, ThreadData *td, is_lossless, mbmi->use_dpcm_y)) continue; + const bool is_directional_mode = + av2_is_directional_mode(mbmi->mode); if (!fsc_mode && intra_sf->intra_pruning_with_mlp && mrl_idx == 0 && is_directional_mode) mrl0_dir_mode_survived[mbmi->mode] = 1; From 8e078b4ef27c5f47660666af948c44bd03b6f835 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Thu, 20 Aug 2026 09:09:30 -0700 Subject: [PATCH 187/205] Simplify av2_trellis_quant function (#5295) Coding stats shall remain the same. --- av2/encoder/encodemb.c | 4 +-- av2/encoder/trellis_quant.c | 57 +++++++++++++++---------------------- av2/encoder/trellis_quant.h | 4 +-- 3 files changed, 27 insertions(+), 38 deletions(-) diff --git a/av2/encoder/encodemb.c b/av2/encoder/encodemb.c index 28106e1a27..33aec553be 100644 --- a/av2/encoder/encodemb.c +++ b/av2/encoder/encodemb.c @@ -346,8 +346,8 @@ int av2_optimize_b(const struct AV2_COMP *cpi, MACROBLOCK *x, int plane, int use_tcq = tcq_enable(cpi->common.features.tcq_mode, xd->lossless[segment_id], plane, tx_class); if (use_tcq) { - return av2_trellis_quant(cpi, x, plane, block, tx_size, tx_type, cctx_type, - txb_ctx, rate_cost, cpi->oxcf.algo_cfg.sharpness); + return av2_trellis_quant(cpi, x, plane, block, tx_size, tx_type, txb_ctx, + rate_cost, cpi->oxcf.algo_cfg.sharpness); } else return av2_optimize_txb_new(cpi, x, plane, block, tx_size, tx_type, cctx_type, txb_ctx, rate_cost, diff --git a/av2/encoder/trellis_quant.c b/av2/encoder/trellis_quant.c index 133da9a307..f822d176a6 100644 --- a/av2/encoder/trellis_quant.c +++ b/av2/encoder/trellis_quant.c @@ -1246,8 +1246,8 @@ and all_zero, back track until it reaches eob. */ int av2_trellis_quant(const struct AV2_COMP *cpi, MACROBLOCK *x, int plane, int block, TX_SIZE tx_size, TX_TYPE tx_type, - CctxType cctx_type, const TXB_CTX *const txb_ctx, - int *rate_cost, int sharpness) { + const TXB_CTX *const txb_ctx, int *rate_cost, + int sharpness) { MACROBLOCKD *xd = &x->e_mbd; const struct macroblock_plane *p = &x->plane[plane]; @@ -1366,49 +1366,38 @@ int av2_trellis_quant(const struct AV2_COMP *cpi, MACROBLOCK *x, int plane, int txb_skip_ctx = txb_ctx->txb_skip_ctx; int non_skip_cost = 0; int skip_cost = 0; - if (plane == AVM_PLANE_V) { - txb_skip_ctx += - (x->plane[AVM_PLANE_U].eobs[block] ? V_TXB_SKIP_CONTEXT_OFFSET : 0); - non_skip_cost = txb_costs->v_txb_skip_cost[txb_skip_ctx][0]; - skip_cost = txb_costs->v_txb_skip_cost[txb_skip_ctx][1]; - } else { - const int pred_mode_ctx = - (is_inter || mbmi->fsc_mode[xd->tree_type == CHROMA_PART]) ? 1 : 0; - non_skip_cost = txb_costs->txb_skip_cost[pred_mode_ctx][txb_skip_ctx][0]; - skip_cost = txb_costs->txb_skip_cost[pred_mode_ctx][txb_skip_ctx][1]; - } + + const int pred_mode_ctx = + (is_inter || mbmi->fsc_mode[xd->tree_type == CHROMA_PART]) ? 1 : 0; + non_skip_cost = txb_costs->txb_skip_cost[pred_mode_ctx][txb_skip_ctx][0]; + skip_cost = txb_costs->txb_skip_cost[pred_mode_ctx][txb_skip_ctx][1]; int accu_rate = 0; set_bob(x, plane, block, tx_size, tx_type); - if (eob == 0) - assert(0); // in current implementation, this could not happen. - else { - const int tx_type_cost = get_tx_type_cost(x, xd, plane, tx_size, tx_type, - cm->features.reduced_tx_set_used, - eob, bob_code, is_fsc); - int64_t rd_cost_skip = RDCOST(rdmult, skip_cost, 0); - accu_rate = non_skip_cost + tx_type_cost + min_rate; - int64_t rd_cost_coded = - min_path_cost + - (int64_t)RDCOST(rdmult, non_skip_cost + tx_type_cost, 0); - // skip block - if ((rd_cost_coded > rd_cost_skip) && sharpness == 0) { - for (int scan_idx = 0; scan_idx <= first_scan_pos; scan_idx++) { - int blk_idx = scan[scan_idx]; - qcoeff[blk_idx] = 0; - dqcoeff[blk_idx] = 0; - } - accu_rate = skip_cost; - eob = 0; + assert(eob > 0); + const int tx_type_cost = + get_tx_type_cost(x, xd, plane, tx_size, tx_type, + cm->features.reduced_tx_set_used, eob, bob_code, is_fsc); + int64_t rd_cost_skip = RDCOST(rdmult, skip_cost, 0); + accu_rate = non_skip_cost + tx_type_cost + min_rate; + int64_t rd_cost_coded = + min_path_cost + (int64_t)RDCOST(rdmult, non_skip_cost + tx_type_cost, 0); + // skip block + if ((rd_cost_coded > rd_cost_skip) && sharpness == 0) { + for (int scan_idx = 0; scan_idx <= first_scan_pos; scan_idx++) { + int blk_idx = scan[scan_idx]; + qcoeff[blk_idx] = 0; + dqcoeff[blk_idx] = 0; } + accu_rate = skip_cost; + eob = 0; } p->eobs[block] = eob; p->txb_entropy_ctx[block] = av2_get_txb_entropy_context(qcoeff, scan_order, p->eobs[block]); - accu_rate += get_cctx_type_cost(cm, x, xd, plane, tx_size, block, cctx_type); *rate_cost = accu_rate; return eob; diff --git a/av2/encoder/trellis_quant.h b/av2/encoder/trellis_quant.h index 839b06ede8..e15972072e 100644 --- a/av2/encoder/trellis_quant.h +++ b/av2/encoder/trellis_quant.h @@ -228,8 +228,8 @@ static INLINE int get_br_cost_tcq(tran_low_t level, const int *coeff_lps) { */ int av2_trellis_quant(const struct AV2_COMP *cpi, MACROBLOCK *x, int plane, int block, TX_SIZE tx_size, TX_TYPE tx_type, - CctxType cctx_type, const TXB_CTX *const txb_ctx, - int *rate_cost, int sharpness); + const TXB_CTX *const txb_ctx, int *rate_cost, + int sharpness); #ifdef __cplusplus } From ec7975da3bf09ba0461a784d87a8b2f22ac926a9 Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Thu, 20 Aug 2026 11:16:25 -0700 Subject: [PATCH 188/205] Promote WienerNS zero-refine to speed 1 (#5293) The speed feature wienerns_refine_iters was in speed 2. Enabling it in speed 1 shows speedup with minor quality loss. Testset PSNR-YUV EncTime A1 (17 frames) 0.02% 95.58% A2 (33 frames) 0.03% 99.08% STATS_CHANGED Change-Id: I91fd3184f45190347c19b49eaf7bf1934238e5ea --- av2/encoder/speed_features.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 77bdf9583c..9b815c184b 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -349,6 +349,8 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.perform_coeff_opt = 1; if (speed >= 1) { + sf->lpf_sf.wienerns_refine_iters = 0; + sf->flexmv_sf.prune_non_one_pel_mv_using_best_mv_prec = 1; sf->inter_sf.selective_ref_frame = 2; sf->inter_sf.prune_newmv_modes_using_prior_rd = 1; @@ -482,7 +484,6 @@ static void set_good_speed_features_framesize_independent( sf->rd_sf.tx_domain_dist_thres_level = 1; sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL1; - sf->lpf_sf.wienerns_refine_iters = 0; // TODO(any, yunqing): move this feature to speed 0. sf->tpl_sf.skip_alike_starting_mv = 1; From 5a4b089e90bd50acfc3ce2afc215ec526ab3801a Mon Sep 17 00:00:00 2001 From: tianqitliu Date: Thu, 20 Aug 2026 17:22:57 -0700 Subject: [PATCH 189/205] Skip unit size search for Loop Restoration based on pyramid level for speed 4 (#5294) Skip unit size search for Loop Restoration based on pyramid level for speed >= 4. Anchor: e96e164934 Tests: RA, A1 17 frames, others 33 frames cpu-used=4: +----------+--------+-------+--------+--------+-------------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +----------+--------+-------+--------+--------+-------------+----------+ | A1 | 0.00% | -0.02% | 0.12% | 0.00% | 95.621% | 99% | | A2 | 0.00% | -0.11% | 0.02% | 0.00% | 97.579% | 100% | | A3 | -0.03% | 0.02% | 0.02% | -0.03% | 97.019% | 100% | | A4 | 0.03% | 0.10% | -0.04% | 0.03% | 97.039% | 100% | | A5 | -0.04% | 0.20% | -0.09% | -0.03% | 97.165% | 99% | +----------+--------+--------+--------+--------+------------+----------+ --- av2/encoder/pickrst.c | 20 ++++++++++++++++++-- av2/encoder/speed_features.c | 13 +++++++++++++ av2/encoder/speed_features.h | 8 ++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/av2/encoder/pickrst.c b/av2/encoder/pickrst.c index 116da6141f..59717c7a99 100644 --- a/av2/encoder/pickrst.c +++ b/av2/encoder/pickrst.c @@ -3871,11 +3871,27 @@ void av2_pick_filter_restoration(const YV12_BUFFER_CONFIG *src, AV2_COMP *cpi) { ? 0 : 1; RestorationInfo *rsi = &cm->rst_info[plane]; - const int max_unit_size = rsi->max_restoration_unit_size; - const int min_unit_size = rsi->min_restoration_unit_size; + int max_unit_size = rsi->max_restoration_unit_size; + int min_unit_size = rsi->min_restoration_unit_size; int best_unit_size = min_unit_size; + if (cpi->sf.lpf_sf.reduce_lr_unit_size_by_pyr) { + // Trim the RU-size search window by pyramid level: drop the largest at + // level>=3, and also drop the smallest at level>=5 when drop_low is set. + const int pyr_level = cm->current_frame.pyramid_level; + const int drop_high = (pyr_level >= 3); + const int drop_low = + (cpi->sf.lpf_sf.reduce_lr_unit_size_by_pyr_drop_low && + pyr_level >= 5); + int hi_unit_size = max_unit_size >> drop_high; + int lo_unit_size = min_unit_size << drop_low; + if (hi_unit_size < min_unit_size) hi_unit_size = min_unit_size; + if (lo_unit_size > hi_unit_size) lo_unit_size = min_unit_size; + min_unit_size = lo_unit_size; + max_unit_size = hi_unit_size; + } + for (int unit_size = min_unit_size; unit_size <= max_unit_size; unit_size <<= 1) { // ru_size can be not smaller than stripe size, this process could only be diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 9b815c184b..574f784826 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -229,6 +229,12 @@ static void set_good_speed_feature_framesize_dependent( if (is_480p_or_larger) { sf->tx_sf.tx_type_search.prune_tx_type_using_stats = 1; } + + // On small resolutions (<=360p), keep the smallest RU size available at + // deep pyramid levels by disabling drop_low. + if (AVMMIN(cm->width, cm->height) <= 360) { + sf->lpf_sf.reduce_lr_unit_size_by_pyr_drop_low = 0; + } } if (speed >= 5) { @@ -623,6 +629,11 @@ static void set_good_speed_features_framesize_independent( sf->winner_mode_sf.enable_winner_mode_for_tx_size_srch = 0; sf->lpf_sf.lpf_pick = LPF_PICK_FROM_FULL_IMAGE_NON_DUAL; + // Trim the RU-size candidate set by pyramid level (policy in pickrst.c). + // drop_low is disabled later for small resolutions. + sf->lpf_sf.reduce_lr_unit_size_by_pyr = 1; + sf->lpf_sf.reduce_lr_unit_size_by_pyr_drop_low = 1; + sf->mv_sf.reduce_search_range = 1; sf->mv_sf.warp_search_method = WARP_SEARCH_DIAMOND; sf->mv_sf.newmv_drl_search_limit = 1; @@ -1004,6 +1015,8 @@ static AVM_INLINE void init_lpf_sf(LOOP_FILTER_SPEED_FEATURES *lpf_sf) { lpf_sf->wienerns_refine_iters = 2; lpf_sf->enable_deblock_for_partition_search = 0; lpf_sf->early_terminate_ccso_search_by_cost = 0; + // Off by default: keep full RU-size search for all pyramid levels. + lpf_sf->reduce_lr_unit_size_by_pyr = 0; lpf_sf->ccso_chroma_dep = 0; } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index d3a7b234d7..8d57e95a69 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -1049,6 +1049,14 @@ typedef struct LOOP_FILTER_SPEED_FEATURES { // early terminate ccso search by cost threshold int early_terminate_ccso_search_by_cost; + // If set, trim the RU-size candidate set by pyramid_level in + // av2_pick_filter_restoration() (see pickrst.c). Default 0 = full search. + int reduce_lr_unit_size_by_pyr; + + // Sub-flag of reduce_lr_unit_size_by_pyr. If set, also drop the smallest RU + // size at deep pyramid levels. Default 0 keeps the smallest size available. + int reduce_lr_unit_size_by_pyr_drop_low; + // bypass ccso luma plane check int ccso_chroma_dep; } LOOP_FILTER_SPEED_FEATURES; From b9482868c548edc4a2f1e4d05404a52771a7cbbc Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:47:34 -0700 Subject: [PATCH 190/205] Transform partition stationarity pruning (#5274) Add a new speed feature to analyze the stationarity of signal to prune partition type searches. The speed feature shows a good tradeoff of quality and speed up. On speed 1, RA: Enc_Speedup PSNR-YUV Ratio A1 (17frames) +4.75% +0.13% 36.5 A2 (33 frames) +7.39% +0.13% 56.8 STATS_CHANGED --- av2/encoder/speed_features.c | 2 + av2/encoder/speed_features.h | 4 ++ av2/encoder/tx_search.c | 123 +++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 574f784826..49b185f746 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -423,6 +423,7 @@ static void set_good_speed_features_framesize_independent( sf->tx_sf.enable_adaptive_tcq_threshold = true; sf->tx_sf.adaptive_tcq_threshold_qidx = 185; + sf->tx_sf.prune_tx_part_stationarity = true; sf->inter_sf.enable_enhanced_inter_mode_cache_reuse = 1; sf->inter_sf.skip_temporary_pred_for_opfl = 1; sf->inter_sf.enable_warp_inter_intra_in_winner = 1; @@ -961,6 +962,7 @@ static AVM_INLINE void init_tx_sf(TX_SPEED_FEATURES *tx_sf) { tx_sf->enable_tx_partition = true; tx_sf->enable_adaptive_tx_search_level = false; tx_sf->prune_intra_ist_stx_by_zero_eob = false; + tx_sf->prune_tx_part_stationarity = false; } static AVM_INLINE void init_rd_sf(RD_CALC_SPEED_FEATURES *rd_sf, diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 8d57e95a69..0598322605 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -954,6 +954,10 @@ typedef struct TX_SPEED_FEATURES { // predicts eob == 0 from the post-primary coefficients to skip // av2_quant + trellis + cost_coeffs. bool prune_intra_ist_stx_by_zero_eob; + + // Prune transform partition type search by the analysis of signal + // stationarity along horizontal and vertical axis. + bool prune_tx_part_stationarity; } TX_SPEED_FEATURES; typedef struct RD_CALC_SPEED_FEATURES { diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 55beeaae2e..256f900960 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -3145,6 +3145,110 @@ static AVM_INLINE int skip_tx_partition_by_eval_type( } // Search for the best tx partition type for a given luma block. +// Number of strips the residual is divided into along each axis when testing +// whether it is stationary. +#define TX_PART_STRIPS_LOG2 2 +#define TX_PART_STRIPS (1 << TX_PART_STRIPS_LOG2) + +// The residual counts as stationary along an axis when its strongest strip +// exceeds the average strip by at most 1/TX_PART_STATIONARITY_MARGIN, so the +// strip energies must agree to within (1 + 1/MARGIN). +// MARGIN = 2 --> 1.5X +#define TX_PART_STATIONARITY_MARGIN 2 + +// Tests whether the prediction residual of a transform block is stationary +// along each axis. +// +// Splitting a transform block trades away the coding gain of one large +// transform in exchange for describing the pieces separately, and pays the rate +// of signalling the split on top. That trade can only pay off when the residual +// is non stationary along the split axis: if its energy is spread evenly across +// the block then every piece sees the same statistics the whole block did, so +// the split gives up transform gain and buys nothing back. +// +// The residual is divided into TX_PART_STRIPS strips along each axis and the +// strip energies are compared against their mean. Horizontal partitions cut the +// block into strips stacked vertically, so they are governed by the variation +// across rows, and vertical partitions by the variation across columns. The +// measurement is subsampled on larger blocks, which costs a small fraction of a +// single partition trial. +static AVM_INLINE void measure_residual_stationarity( + const MACROBLOCK *x, BLOCK_SIZE plane_bsize, int blk_row, int blk_col, + TX_SIZE max_tx_size, int *stationary_rows, int *stationary_cols) { + *stationary_rows = 0; + *stationary_cols = 0; + + const int txw = tx_size_wide[max_tx_size]; + const int txh = tx_size_high[max_tx_size]; + // Below two samples per strip the measurement is meaningless. + if (txw < TX_PART_STRIPS * 2 || txh < TX_PART_STRIPS * 2) return; + + const struct macroblock_plane *const p = &x->plane[0]; + const int diff_stride = block_size_wide[plane_bsize]; + const int16_t *const diff = + &p->src_diff[(blk_row * diff_stride + blk_col) << MI_SIZE_LOG2]; + const int step_y = txh >= 16 ? 2 : 1; + const int step_x = txw >= 16 ? 2 : 1; + const int strip_h = txh >> TX_PART_STRIPS_LOG2; + const int strip_w = txw >> TX_PART_STRIPS_LOG2; + + uint64_t row_energy[TX_PART_STRIPS] = { 0 }; + uint64_t col_energy[TX_PART_STRIPS] = { 0 }; + uint64_t total = 0; + + for (int i = 0; i < txh; i += step_y) { + const int16_t *const row = diff + (ptrdiff_t)i * diff_stride; + const int strip_i = i / strip_h; + assert(strip_i < TX_PART_STRIPS); + for (int j = 0; j < txw; j += step_x) { + const uint64_t magnitude = (uint64_t)abs((int)row[j]); + row_energy[strip_i] += magnitude; + const int strip_j = j / strip_w; + assert(strip_j < TX_PART_STRIPS); + col_energy[strip_j] += magnitude; + total += magnitude; + } + } + if (total == 0) { + // A residual that is identically zero is trivially stationary: no split can + // describe it any better than the whole block does. + *stationary_rows = 1; + *stationary_cols = 1; + return; + } + + const uint64_t mean = total >> TX_PART_STRIPS_LOG2; + uint64_t max_row = 0; + uint64_t max_col = 0; + for (int s = 0; s < TX_PART_STRIPS; ++s) { + if (row_energy[s] > max_row) max_row = row_energy[s]; + if (col_energy[s] > max_col) max_col = col_energy[s]; + } + + // max <= mean * (1 + 1/margin), written without division. + const uint64_t bound = mean * (TX_PART_STATIONARITY_MARGIN + 1); + *stationary_rows = (max_row * TX_PART_STATIONARITY_MARGIN <= bound); + *stationary_cols = (max_col * TX_PART_STATIONARITY_MARGIN <= bound); +} + +// True when `type` cuts the block along an axis the residual is stationary on, +// so that the split cannot describe the residual any better than +// TX_PARTITION_NONE already does. +static AVM_INLINE int tx_partition_cuts_stationary_axis(TX_PARTITION_TYPE type, + int stationary_rows, + int stationary_cols) { + switch (type) { + case TX_PARTITION_HORZ: + case TX_PARTITION_HORZ4: + case TX_PARTITION_HORZ5: return stationary_rows; + case TX_PARTITION_VERT: + case TX_PARTITION_VERT4: + case TX_PARTITION_VERT5: return stationary_cols; + case TX_PARTITION_SPLIT: return stationary_rows && stationary_cols; + default: return 0; + } +} + static void select_tx_partition_type( const AV2_COMP *cpi, MACROBLOCK *x, int blk_row, int blk_col, int block, BLOCK_SIZE plane_bsize, ENTROPY_CONTEXT *ta, ENTROPY_CONTEXT *tl, @@ -3191,6 +3295,12 @@ static void select_tx_partition_type( TX_TYPE best_partition_tx_types[MAX_TX_PARTITIONS] = { 0 }; uint8_t full_blk_skip[MAX_TX_PARTITIONS] = { 0 }; + // Axes along which this block's residual carries no structure a split could + // exploit. Measured lazily -- see the call site below for why. + int stationary_rows = 0; + int stationary_cols = 0; + int stationarity_valid = 0; + for (TX_PARTITION_TYPE type = 0; type < TX_PARTITION_TYPES; ++type) { if (cpi->oxcf.txfm_cfg.reduced_tx_part_set && type > TX_PARTITION_VERT) { break; @@ -3212,6 +3322,19 @@ static void select_tx_partition_type( continue; } + if (cpi->sf.tx_sf.prune_tx_part_stationarity && type != TX_PARTITION_NONE) { + if (!stationarity_valid) { + measure_residual_stationarity(x, plane_bsize, blk_row, blk_col, + max_tx_size, &stationary_rows, + &stationary_cols); + stationarity_valid = 1; + } + if (tx_partition_cuts_stationary_axis(type, stationary_rows, + stationary_cols)) { + continue; + } + } + if (cpi->sf.tx_sf.restrict_tx_partition_type_search) { if ((type == TX_PARTITION_HORZ4 && best_tx_partition != TX_PARTITION_HORZ) || From c3677217c224079e9694c72764f93f1179c11d8f Mon Sep 17 00:00:00 2001 From: Remya Prakasan Date: Thu, 13 Aug 2026 21:31:00 +0530 Subject: [PATCH 191/205] Refactor av2_compound_type_rd - Consolidated initializations and moved early gating to the function start - Introduced local variables for readability - Renamed calc_masked_type_cost() to calc_comp_type_cost() and abstracted compound type cost calculation - Replaced update_mask_best_mv() with av2_copy_array() - Renamed rs2 to comp_type_rate - Simplified the masked_compound_type_rd() signature - Made cosmetic changes to follow coding guidelines No Stats Changed --- av2/encoder/compound_type.c | 410 ++++++++++++++++++------------------ 1 file changed, 200 insertions(+), 210 deletions(-) diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index bba4099032..1c08f254e1 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -905,28 +905,42 @@ static INLINE int compute_valid_comp_types(MACROBLOCK *x, return valid_type_count; } -// Calculates the cost for compound type mask -static INLINE void calc_masked_type_cost(const ModeCosts *mode_costs, - BLOCK_SIZE bsize, - int comp_group_idx_ctx, - int masked_compound_used, - int *masked_type_cost) { - (void)bsize; - av2_zero_array(masked_type_cost, COMPOUND_TYPES); - // Account for group index cost when wedge and/or diffwtd prediction are - // enabled - if (masked_compound_used) { - // Compound group index of average is 0 and that of wedge and diffwtd is 1. - masked_type_cost[COMPOUND_AVERAGE] += - mode_costs->comp_group_idx_cost[comp_group_idx_ctx][0]; - masked_type_cost[COMPOUND_WEDGE] += - mode_costs->comp_group_idx_cost[comp_group_idx_ctx][1]; - masked_type_cost[COMPOUND_DIFFWTD] += masked_type_cost[COMPOUND_WEDGE]; +// Calculates the cost for each compound type, including group index, mask type, +// and CWP signaling costs. When refine mv is enabled, only CWP cost for +// COMPOUND_AVERAGE is initialized as masked types are not searched in that +// case. +static AVM_INLINE void calc_comp_type_cost(const AV2_COMP *cpi, + const MACROBLOCK *x, + int masked_compound_used, + bool is_refinemv_mode, + int *comp_type_cost) { + const AV2_COMMON *const cm = &cpi->common; + const MACROBLOCKD *const xd = &x->e_mbd; + const MB_MODE_INFO *const mbmi = xd->mi[0]; + const ModeCosts *const mode_costs = &x->mode_costs; + + if (!is_refinemv_mode) { + // Account for group index cost when wedge and/or diffwtd prediction are + // enabled. + if (masked_compound_used) { + const int ctx = get_comp_group_idx_context(cm, xd); + // Compound group index of average is 0, wedge and diffwtd is 1. + comp_type_cost[COMPOUND_AVERAGE] = + mode_costs->comp_group_idx_cost[ctx][0]; + comp_type_cost[COMPOUND_WEDGE] = mode_costs->comp_group_idx_cost[ctx][1]; + comp_type_cost[COMPOUND_DIFFWTD] = comp_type_cost[COMPOUND_WEDGE]; + } + + // Compute the cost to signal compound index/type. + comp_type_cost[COMPOUND_WEDGE] += mode_costs->compound_type_cost[0]; + comp_type_cost[COMPOUND_DIFFWTD] += mode_costs->compound_type_cost[1]; } - // Compute the cost to signal compound index/type - masked_type_cost[COMPOUND_WEDGE] += mode_costs->compound_type_cost[0]; - masked_type_cost[COMPOUND_DIFFWTD] += mode_costs->compound_type_cost[1]; + // Add CWP index signaling cost for compound average. + if (cm->features.enable_cwp && is_cwp_allowed(mbmi) && !mbmi->skip_mode) { + comp_type_cost[COMPOUND_AVERAGE] += + av2_get_cwp_idx_cost(mbmi->cwp_idx, cm, x); + } } // Updates mbmi structure with the relevant compound type info @@ -964,29 +978,15 @@ static INLINE int populate_reuse_comp_type_data( static INLINE void update_best_info(const MB_MODE_INFO *const mbmi, int64_t *rd, BEST_COMP_TYPE_STATS *best_type_stats, int64_t best_rd_cur, - int64_t comp_model_rd_cur, int rs2) { + int64_t comp_model_rd_cur, + int comp_type_rate) { *rd = best_rd_cur; best_type_stats->comp_best_model_rd = comp_model_rd_cur; best_type_stats->best_compound_data = mbmi->interinter_comp; - best_type_stats->best_compmode_interinter_cost = rs2; + best_type_stats->best_compmode_interinter_cost = comp_type_rate; best_type_stats->cwp_idx = mbmi->cwp_idx; } -// Updates best_mv for masked compound types -static INLINE void update_mask_best_mv(const MB_MODE_INFO *const mbmi, - int_mv *best_mv, int_mv *cur_mv, - const COMPOUND_TYPE cur_type, - int *best_tmp_rate_mv, int tmp_rate_mv) { - if (cur_type == COMPOUND_WEDGE) { - *best_tmp_rate_mv = tmp_rate_mv; - best_mv[0].as_int = mbmi->mv[0].as_int; - best_mv[1].as_int = mbmi->mv[1].as_int; - } else { - best_mv[0].as_int = cur_mv[0].as_int; - best_mv[1].as_int = cur_mv[1].as_int; - } -} - static INLINE void save_comp_rd_search_stat( MACROBLOCK *x, const MB_MODE_INFO *const mbmi, const int32_t *comp_rate, const int64_t *comp_dist, const int32_t *comp_model_rate, @@ -1040,26 +1040,32 @@ static INLINE void backup_stats(COMPOUND_TYPE cur_type, int32_t *comp_rate, int64_t *comp_dist, int32_t *comp_model_rate, int64_t *comp_model_dist, int rate_sum, int64_t dist_sum, RD_STATS *rd_stats, - int *comp_rs2, int rs2) { + int *comp_rs2, int comp_type_rate) { comp_rate[cur_type] = rd_stats->rate; comp_dist[cur_type] = rd_stats->dist; comp_model_rate[cur_type] = rate_sum; comp_model_dist[cur_type] = dist_sum; - comp_rs2[cur_type] = rs2; + comp_rs2[cur_type] = comp_type_rate; } static int64_t masked_compound_type_rd( const AV2_COMP *const cpi, MACROBLOCK *x, const int_mv *const cur_mv, - const BLOCK_SIZE bsize, const PREDICTION_MODE this_mode, int *rs2, - int rate_mv, const BUFFER_SET *ctx, int *out_rate_mv, uint16_t *pred0, - uint16_t *pred1, int16_t *residual1, int16_t *diff10, int stride, - int mode_rate, int64_t rd_thresh, int *calc_pred_masked_compound, - int32_t *comp_rate, int64_t *comp_dist, int32_t *comp_model_rate, - int64_t *comp_model_dist, const int64_t comp_best_model_rd, - int64_t *const comp_model_rd_cur, int *comp_rs2, int64_t ref_skip_rd) { + const BLOCK_SIZE bsize, int *comp_type_rate, int rate_mv, + const BUFFER_SET *ctx, int *out_rate_mv, + const CompoundTypeRdBuffers *buffers, int mode_rate, int64_t rd_thresh, + int *calc_pred_masked_compound, int32_t *comp_rate, int64_t *comp_dist, + int32_t *comp_model_rate, int64_t *comp_model_dist, + const int64_t comp_best_model_rd, int64_t *const comp_model_rd_cur, + int *comp_rs2, int64_t ref_skip_rd, bool *is_newmv_searched) { const AV2_COMMON *const cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; + uint16_t *const pred0 = buffers->pred0; + uint16_t *const pred1 = buffers->pred1; + int16_t *const residual1 = buffers->residual1; + int16_t *const diff10 = buffers->diff10; + const int stride = block_size_wide[bsize]; + const PREDICTION_MODE this_mode = mbmi->mode; int64_t best_rd_cur = INT64_MAX; int64_t rd = INT64_MAX; const COMPOUND_TYPE compound_type = mbmi->interinter_comp.type; @@ -1096,15 +1102,16 @@ static int64_t masked_compound_type_rd( uint64_t cur_sse = UINT64_MAX; best_rd_cur = pick_interinter_mask[compound_type - COMPOUND_WEDGE]( cpi, x, bsize, pred0, pred1, residual1, diff10, &cur_sse); - *rs2 += get_interinter_compound_mask_rate(mbmi, x); - best_rd_cur += RDCOST(x->rdmult, *rs2 + rate_mv, 0); + *comp_type_rate += get_interinter_compound_mask_rate(mbmi, x); + best_rd_cur += RDCOST(x->rdmult, *comp_type_rate + rate_mv, 0); assert(cur_sse != UINT64_MAX); - int64_t skip_rd_cur = RDCOST(x->rdmult, *rs2 + rate_mv, (cur_sse << 4)); + int64_t skip_rd_cur = + RDCOST(x->rdmult, *comp_type_rate + rate_mv, (cur_sse << 4)); // Although the true rate_mv might be different after motion search, but it // is unlikely to be the best mode considering the transform rd cost and other // mode overhead cost - int64_t mode_rd = RDCOST(x->rdmult, *rs2 + mode_rate, 0); + int64_t mode_rd = RDCOST(x->rdmult, *comp_type_rate + mode_rate, 0); if (mode_rd > rd_thresh) { *comp_model_rd_cur = INT64_MAX; return INT64_MAX; @@ -1147,7 +1154,7 @@ static int64_t masked_compound_type_rd( model_rd_sb_fn[MODELRD_TYPE_MASKED_COMPOUND]( cpi, bsize, x, xd, 0, 0, &rate_sum, &dist_sum, &tmp_skip_txfm_sb, &tmp_skip_sse_sb, NULL, NULL, NULL); - rd = RDCOST(x->rdmult, *rs2 + *out_rate_mv + rate_sum, dist_sum); + rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + rate_sum, dist_sum); *comp_model_rd_cur = rd; // Override with best if current is worse than best for new MV if (wedge_newmv_search) { @@ -1158,6 +1165,8 @@ static int64_t masked_compound_type_rd( av2_build_wedge_inter_predictor_from_buf_y(xd, bsize, pred0, stride, pred1, stride); *comp_model_rd_cur = best_rd_cur; + } else { + *is_newmv_searched = true; } } if (cpi->sf.inter_sf.prune_comp_type_by_model_rd && @@ -1168,16 +1177,17 @@ static int64_t masked_compound_type_rd( } // Compute RD cost for the current type RD_STATS rd_stats; - const int64_t tmp_mode_rd = RDCOST(x->rdmult, *rs2 + *out_rate_mv, 0); + const int64_t tmp_mode_rd = + RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv, 0); const int64_t tmp_rd_thresh = rd_thresh - tmp_mode_rd; rd = estimate_yrd_for_sb(cpi, bsize, x, tmp_rd_thresh, &rd_stats); if (rd != INT64_MAX) { - rd = - RDCOST(x->rdmult, *rs2 + *out_rate_mv + rd_stats.rate, rd_stats.dist); + rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + rd_stats.rate, + rd_stats.dist); // Backup rate and distortion for future reuse backup_stats(compound_type, comp_rate, comp_dist, comp_model_rate, comp_model_dist, rate_sum, dist_sum, &rd_stats, comp_rs2, - *rs2); + *comp_type_rate); } } else { // Reuse data as matching record is found @@ -1190,11 +1200,13 @@ static int64_t masked_compound_type_rd( assert(mbmi->mv[1].as_int == cur_mv[1].as_int); *out_rate_mv = rate_mv; // Calculate RD cost based on stored stats - rd = RDCOST(x->rdmult, *rs2 + *out_rate_mv + comp_rate[compound_type], + rd = RDCOST(x->rdmult, + *comp_type_rate + *out_rate_mv + comp_rate[compound_type], comp_dist[compound_type]); // Recalculate model rdcost with the updated rate *comp_model_rd_cur = - RDCOST(x->rdmult, *rs2 + *out_rate_mv + comp_model_rate[compound_type], + RDCOST(x->rdmult, + *comp_type_rate + *out_rate_mv + comp_model_rate[compound_type], comp_model_dist[compound_type]); } return rd; @@ -1202,8 +1214,8 @@ static int64_t masked_compound_type_rd( // scaling values to be used for gating wedge/compound segment based on best // approximate rd -static int comp_type_rd_threshold_mul[3] = { 1, 11, 12 }; -static int comp_type_rd_threshold_div[3] = { 3, 16, 16 }; +static int masked_rd_threshold_mul[3] = { 1, 11, 12 }; +static int masked_rd_threshold_div[3] = { 3, 16, 16 }; int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int_mv *cur_mv, int mode_search_mask, @@ -1217,218 +1229,196 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; const PREDICTION_MODE this_mode = mbmi->mode; - const int bw = block_size_wide[bsize]; - int rs2; - int_mv best_mv[2]; - int best_tmp_rate_mv = *rate_mv; + const INTER_MODE_SPEED_FEATURES *const inter_sf = &cpi->sf.inter_sf; + BEST_COMP_TYPE_STATS best_type_stats; - // Initializing BEST_COMP_TYPE_STATS + // Initializing BEST_COMP_TYPE_STATS. best_type_stats.best_compound_data.type = COMPOUND_AVERAGE; best_type_stats.best_compmode_interinter_cost = 0; best_type_stats.comp_best_model_rd = INT64_MAX; - best_type_stats.cwp_idx = CWP_EQUAL; - int tmp_rate_mv; - const int num_pix = 1 << num_pels_log2_lookup[bsize]; - const int mask_len = 2 * num_pix * sizeof(uint8_t); - COMPOUND_TYPE cur_type; - // Local array to store the mask cost for different compound types - int masked_type_cost[COMPOUND_TYPES]; - - int calc_pred_masked_compound = 1; + // Local arrays for stored stats. int64_t comp_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX }; int32_t comp_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX }; int comp_rs2[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX }; int32_t comp_model_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX }; int64_t comp_model_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX }; int match_index = 0; - const int reuse_compound_type_data = - cpi->sf.inter_sf.reuse_compound_type_data; + + const int reuse_compound_type_data = inter_sf->reuse_compound_type_data; const int match_found = reuse_compound_type_data ? find_comp_rd_in_stats(cpi, x, mbmi, comp_rate, comp_dist, comp_model_rate, comp_model_dist, comp_rs2, &match_index) : 0; - best_mv[0].as_int = cur_mv[0].as_int; - best_mv[1].as_int = cur_mv[1].as_int; - *rd = INT64_MAX; - int rate_sum, tmp_skip_txfm_sb; - int64_t dist_sum, tmp_skip_sse_sb; - // Local array to store the valid compound types to be evaluated in the core - // loop + const bool is_refinemv_mode = + this_mode >= NEAR_NEARMV_OPTFLOW || + (mbmi->refinemv_flag && switchable_refinemv_flag(cm, mbmi)); + + // If the match is found, calculate the rd cost using the + // stored stats and update the mbmi appropriately. + if (match_found && !is_refinemv_mode && reuse_compound_type_data >= 2) { + return populate_reuse_comp_type_data(x, mbmi, &best_type_stats, cur_mv, + comp_rate, comp_dist, comp_rs2, + rate_mv, rd, match_index); + } + + // Determine the number of valid compound types to be + // evaluated and populate the same in the local array valid_comp_types[]. COMPOUND_TYPE valid_comp_types[COMPOUND_TYPES] = { COMPOUND_AVERAGE, COMPOUND_WEDGE, COMPOUND_DIFFWTD }; - - // compute_valid_comp_types() returns the number of valid compound types to be - // evaluated and populates the same in the local array valid_comp_types[]. const int valid_type_count = compute_valid_comp_types( x, cpi, bsize, masked_compound_used, mode_search_mask, valid_comp_types); - // The following context indices are independent of compound type - const int comp_group_idx_ctx = get_comp_group_idx_context(cm, xd); - - if (this_mode >= NEAR_NEARMV_OPTFLOW) - av2_zero_array(masked_type_cost, COMPOUND_TYPES); - else if (mbmi->refinemv_flag && switchable_refinemv_flag(cm, mbmi)) - av2_zero_array(masked_type_cost, COMPOUND_TYPES); - else - // Populates masked_type_cost local array for the 3 compound types. - calc_masked_type_cost(&x->mode_costs, bsize, comp_group_idx_ctx, - masked_compound_used, masked_type_cost); + // Populate local array comp_type_cost[] to store mode signaling cost for + // different compound types. Group index and mask type costs are only added + // when refine mv is disabled. CWP cost for COMPOUND_AVERAGE is always added. + int comp_type_cost[COMPOUND_TYPES] = { 0 }; + calc_comp_type_cost(cpi, x, masked_compound_used, is_refinemv_mode, + comp_type_cost); + + const int prune_idx = inter_sf->prune_comp_type_by_comp_avg; + // Factors to control gating of masked compound type selection based on best + // approximate rd so far. + const int max_rd_threshold_mul = masked_rd_threshold_mul[prune_idx]; + const int max_rd_threshold_div = masked_rd_threshold_div[prune_idx]; + const int num_pix = 1 << num_pels_log2_lookup[bsize]; + const int mask_len = 2 * num_pix * sizeof(xd->seg_mask[0]); + bool is_newmv_searched = false; - int64_t comp_model_rd_cur = INT64_MAX; - int64_t best_rd_cur = INT64_MAX; - const int mi_row = xd->mi_row; - const int mi_col = xd->mi_col; + int_mv best_mv[2] = { cur_mv[0], cur_mv[1] }; + int best_tmp_rate_mv = *rate_mv; + *rd = INT64_MAX; - // If the match is found, calculate the rd cost using the - // stored stats and update the mbmi appropriately. - if (match_found && this_mode < NEAR_NEARMV_OPTFLOW && - (!mbmi->refinemv_flag || !switchable_refinemv_flag(cm, mbmi)) && - (reuse_compound_type_data >= 2)) { - return populate_reuse_comp_type_data(x, mbmi, &best_type_stats, cur_mv, - comp_rate, comp_dist, comp_rs2, - rate_mv, rd, match_index); - } + // Indicates whether to obtain the masked compound type predictor. + int calc_pred_masked_compound = 1; - // If COMPOUND_AVERAGE is not valid, use the spare buffer + // If COMPOUND_AVERAGE is not valid, use the spare buffer. if (valid_comp_types[0] != COMPOUND_AVERAGE) restore_dst_buf(xd, *tmp_dst, 1); - // Loop over valid compound types - for (int i = 0; i < valid_type_count; i++) { - cur_type = valid_comp_types[i]; - - comp_model_rd_cur = INT64_MAX; - tmp_rate_mv = *rate_mv; - best_rd_cur = INT64_MAX; + // Loop over valid compound types. + for (int cmp_type_idx = 0; cmp_type_idx < valid_type_count; ++cmp_type_idx) { + COMPOUND_TYPE cur_type = valid_comp_types[cmp_type_idx]; assert(IMPLIES(is_thin_4xn_nx4_block(bsize), cur_type != COMPOUND_DIFFWTD)); - if (cur_type == COMPOUND_AVERAGE) { - update_mbmi_for_compound_type(mbmi, cur_type); - rs2 = masked_type_cost[cur_type]; + update_mbmi_for_compound_type(mbmi, cur_type); + int comp_type_rate = comp_type_cost[cur_type]; + const int64_t mode_rd = + RDCOST(x->rdmult, comp_type_rate + rd_stats->rate, 0); + if (mode_rd >= ref_best_rd) continue; - if (cm->features.enable_cwp && is_cwp_allowed(mbmi) && !mbmi->skip_mode) { - rs2 += av2_get_cwp_idx_cost(mbmi->cwp_idx, cm, x); - } + int64_t comp_model_rd_cur = INT64_MAX; + int64_t best_rd_cur = INT64_MAX; + int tmp_rate_mv = *rate_mv; - const int64_t mode_rd = RDCOST(x->rdmult, rs2 + rd_stats->rate, 0); - if (mode_rd < ref_best_rd) { - // Reuse data if matching record is found - if (comp_rate[cur_type] == INT_MAX) { - av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, orig_dst, bsize, - AVM_PLANE_Y, AVM_PLANE_Y); - *is_luma_interp_done = 1; - - // Compute RD cost for the current type - RD_STATS est_rd_stats; - const int64_t tmp_rd_thresh = AVMMIN(*rd, rd_thresh) - mode_rd; - int64_t est_rd = INT64_MAX; - int eval_txfm = 1; - // Check if the mode is good enough based on skip rd - if (cpi->sf.inter_sf.txfm_rd_gate_level) { - int64_t sse_y = compute_sse_plane(x, xd, PLANE_TYPE_Y, bsize); - int64_t skip_rd = RDCOST(x->rdmult, rs2 + *rate_mv, (sse_y << 4)); - eval_txfm = check_txfm_eval(x, bsize, ref_skip_rd, skip_rd, - cpi->sf.inter_sf.txfm_rd_gate_level, 1); - } - // Evaluate further if skip rd is low enough - if (eval_txfm) { - est_rd = estimate_yrd_for_sb(cpi, bsize, x, tmp_rd_thresh, - &est_rd_stats); - } - - if (est_rd != INT64_MAX) { - best_rd_cur = RDCOST(x->rdmult, rs2 + *rate_mv + est_rd_stats.rate, - est_rd_stats.dist); - model_rd_sb_fn[MODELRD_TYPE_MASKED_COMPOUND]( - cpi, bsize, x, xd, 0, 0, &rate_sum, &dist_sum, - &tmp_skip_txfm_sb, &tmp_skip_sse_sb, NULL, NULL, NULL); - comp_model_rd_cur = - RDCOST(x->rdmult, rs2 + *rate_mv + rate_sum, dist_sum); - - // Backup rate and distortion for future reuse - backup_stats(cur_type, comp_rate, comp_dist, comp_model_rate, - comp_model_dist, rate_sum, dist_sum, &est_rd_stats, - comp_rs2, rs2); - } - } else { - // Calculate RD cost based on stored stats - assert(comp_dist[cur_type] != INT64_MAX); - best_rd_cur = RDCOST(x->rdmult, rs2 + *rate_mv + comp_rate[cur_type], - comp_dist[cur_type]); - // Recalculate model rdcost with the updated rate + if (cur_type == COMPOUND_AVERAGE) { + // Reuse data if matching record is found. + if (comp_rate[cur_type] == INT_MAX) { + av2_enc_build_inter_predictor(cm, xd, xd->mi_row, xd->mi_col, orig_dst, + bsize, AVM_PLANE_Y, AVM_PLANE_Y); + *is_luma_interp_done = 1; + + // Compute RD cost. + RD_STATS est_rd_stats; + const int64_t tmp_rd_thresh = AVMMIN(*rd, rd_thresh) - mode_rd; + int64_t est_rd = INT64_MAX; + int eval_txfm = 1; + int rate_sum, tmp_skip_txfm_sb; + int64_t dist_sum, tmp_skip_sse_sb; + // Check if the mode is good enough based on skip rd. + if (inter_sf->txfm_rd_gate_level) { + int64_t sse_y = compute_sse_plane(x, xd, PLANE_TYPE_Y, bsize); + int64_t skip_rd = + RDCOST(x->rdmult, comp_type_rate + *rate_mv, (sse_y << 4)); + eval_txfm = check_txfm_eval(x, bsize, ref_skip_rd, skip_rd, + inter_sf->txfm_rd_gate_level, 1); + } + // Evaluate further if skip rd is low enough. + if (eval_txfm) { + est_rd = + estimate_yrd_for_sb(cpi, bsize, x, tmp_rd_thresh, &est_rd_stats); + } + + if (est_rd != INT64_MAX) { + best_rd_cur = + RDCOST(x->rdmult, comp_type_rate + *rate_mv + est_rd_stats.rate, + est_rd_stats.dist); + model_rd_sb_fn[MODELRD_TYPE_MASKED_COMPOUND]( + cpi, bsize, x, xd, 0, 0, &rate_sum, &dist_sum, &tmp_skip_txfm_sb, + &tmp_skip_sse_sb, NULL, NULL, NULL); comp_model_rd_cur = - RDCOST(x->rdmult, rs2 + *rate_mv + comp_model_rate[cur_type], - comp_model_dist[cur_type]); + RDCOST(x->rdmult, comp_type_rate + *rate_mv + rate_sum, dist_sum); + + // Backup rate and distortion for future reuse. + backup_stats(cur_type, comp_rate, comp_dist, comp_model_rate, + comp_model_dist, rate_sum, dist_sum, &est_rd_stats, + comp_rs2, comp_type_rate); } + } else { + // Calculate RD cost based on stored stats. + assert(comp_dist[cur_type] != INT64_MAX); + best_rd_cur = + RDCOST(x->rdmult, comp_type_rate + *rate_mv + comp_rate[cur_type], + comp_dist[cur_type]); + // Recalculate model rdcost with the updated rate. + comp_model_rd_cur = RDCOST( + x->rdmult, comp_type_rate + *rate_mv + comp_model_rate[cur_type], + comp_model_dist[cur_type]); } // Use spare buffer for other compound types. restore_dst_buf(xd, *tmp_dst, 1); } else { - // Handle masked compound types - update_mbmi_for_compound_type(mbmi, cur_type); - rs2 = masked_type_cost[cur_type]; - // Factors to control gating of compound type selection based on best - // approximate rd so far - const int max_comp_type_rd_threshold_mul = - comp_type_rd_threshold_mul[cpi->sf.inter_sf - .prune_comp_type_by_comp_avg]; - const int max_comp_type_rd_threshold_div = - comp_type_rd_threshold_div[cpi->sf.inter_sf - .prune_comp_type_by_comp_avg]; + // Handle masked compound types. + const int64_t approx_rd = + ((*rd / max_rd_threshold_div) * max_rd_threshold_mul); // Evaluate COMPOUND_WEDGE / COMPOUND_DIFFWTD if approximated cost is - // within threshold - int64_t approx_rd = ((*rd / max_comp_type_rd_threshold_div) * - max_comp_type_rd_threshold_mul); - + // within threshold. if (approx_rd < ref_best_rd) { const int64_t tmp_rd_thresh = AVMMIN(*rd, rd_thresh); best_rd_cur = masked_compound_type_rd( - cpi, x, cur_mv, bsize, this_mode, &rs2, *rate_mv, orig_dst, - &tmp_rate_mv, buffers->pred0, buffers->pred1, buffers->residual1, - buffers->diff10, bw, rd_stats->rate, tmp_rd_thresh, + cpi, x, cur_mv, bsize, &comp_type_rate, *rate_mv, orig_dst, + &tmp_rate_mv, buffers, rd_stats->rate, tmp_rd_thresh, &calc_pred_masked_compound, comp_rate, comp_dist, comp_model_rate, comp_model_dist, best_type_stats.comp_best_model_rd, - &comp_model_rd_cur, comp_rs2, ref_skip_rd); + &comp_model_rd_cur, comp_rs2, ref_skip_rd, &is_newmv_searched); } } - // Update stats for best compound type + // Update stats for best compound type. if (best_rd_cur < *rd) { update_best_info(mbmi, rd, &best_type_stats, best_rd_cur, - comp_model_rd_cur, rs2); - if (masked_compound_used && cur_type >= COMPOUND_WEDGE) { + comp_model_rd_cur, comp_type_rate); + if (cur_type >= COMPOUND_WEDGE) { + assert(masked_compound_used); memcpy(buffers->tmp_best_mask_buf, xd->seg_mask, mask_len); - if (have_newmv_in_inter_mode(this_mode)) - update_mask_best_mv(mbmi, best_mv, cur_mv, cur_type, - &best_tmp_rate_mv, tmp_rate_mv); + if (is_newmv_searched && cur_type == COMPOUND_WEDGE) { + av2_copy_array(best_mv, mbmi->mv, 2); + best_tmp_rate_mv = tmp_rate_mv; + } } } - // reset to original mvs for next iteration - mbmi->mv[0].as_int = cur_mv[0].as_int; - mbmi->mv[1].as_int = cur_mv[1].as_int; + // Reset to original mvs for next iteration. + av2_copy_array(mbmi->mv, cur_mv, 2); } + + // Update mbmi with the best compound type and associated data. if (mbmi->interinter_comp.type != best_type_stats.best_compound_data.type) { mbmi->comp_group_idx = - (best_type_stats.best_compound_data.type < COMPOUND_WEDGE) ? 0 : 1; + best_type_stats.best_compound_data.type >= COMPOUND_WEDGE; mbmi->interinter_comp = best_type_stats.best_compound_data; memcpy(xd->seg_mask, buffers->tmp_best_mask_buf, mask_len); + mbmi->cwp_idx = best_type_stats.cwp_idx; } - // update best cwp_idx - mbmi->cwp_idx = best_type_stats.cwp_idx; - - if (have_newmv_in_inter_mode(this_mode)) { - mbmi->mv[0].as_int = best_mv[0].as_int; - mbmi->mv[1].as_int = best_mv[1].as_int; - if (mbmi->interinter_comp.type == COMPOUND_WEDGE) { - rd_stats->rate += best_tmp_rate_mv - *rate_mv; - *rate_mv = best_tmp_rate_mv; - } + if (is_newmv_searched && mbmi->interinter_comp.type == COMPOUND_WEDGE) { + av2_copy_array(mbmi->mv, best_mv, 2); + rd_stats->rate += best_tmp_rate_mv - *rate_mv; + *rate_mv = best_tmp_rate_mv; } + restore_dst_buf(xd, *orig_dst, 1); if (!match_found && reuse_compound_type_data) save_comp_rd_search_stat(x, mbmi, comp_rate, comp_dist, comp_model_rate, From 750e58482567c11b25b00faa53e879ea7659f4ce Mon Sep 17 00:00:00 2001 From: Remya Prakasan Date: Fri, 14 Aug 2026 17:48:24 +0530 Subject: [PATCH 192/205] Consolidate RD cost related members in COMP_RD_STATS - Added CompTypeRdStats to consolidate RD cost members in COMP_RD_STATS - Replaced local arrays in av2_compound_type_rd() with CompTypeRdStats This improves readability, simplifies the function signature and data copy in various helper functions. No Stats Changed --- av2/encoder/block.h | 30 ++++--- av2/encoder/compound_type.c | 171 ++++++++++++++++-------------------- 2 files changed, 93 insertions(+), 108 deletions(-) diff --git a/av2/encoder/block.h b/av2/encoder/block.h index 4658743a1a..efcb772cd1 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -427,19 +427,27 @@ typedef struct { //! Number of compound rd stats #define MAX_COMP_RD_STATS 64 -/*! \brief Rdcost stats in compound mode. + +/*! \brief Rate-distortion statistics for a compound type. + */ +typedef struct { + //! Distortion of the compound mode. + int64_t dist; + //! Estimated distortion of the compound mode. + int64_t model_dist; + //! Rate of the compound mode. + int rate; + //! Estimated rate of the compound mode. + int model_rate; + //! Rate required to signal the compound type. + int comp_type_rate; +} CompTypeRdStats; + +/*! \brief Stats in compound mode. */ typedef struct { - //! Rate of the compound modes. - int32_t rate[COMPOUND_TYPES]; - //! Distortion of the compound modes. - int64_t dist[COMPOUND_TYPES]; - //! Estimated rate of the compound modes. - int32_t model_rate[COMPOUND_TYPES]; - //! Estimated distortion of the compound modes. - int64_t model_dist[COMPOUND_TYPES]; - //! Rate need to send the mask type. - int comp_rs2[COMPOUND_TYPES]; + //! Rdcost stats for compound types. + CompTypeRdStats rd_stats[COMPOUND_TYPES]; //! Motion vector for each predictor. int_mv mv[2]; //! Ref frame for each predictor. diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index 1c08f254e1..3b30a2a0b8 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -25,14 +25,23 @@ typedef int64_t (*pick_interinter_mask_type)( const int16_t *const residual1, const int16_t *const diff10, uint64_t *best_sse); +// Initializes CompTypeRdStats array with default values. +static AVM_INLINE void init_comp_type_rd_stats(CompTypeRdStats *comp_stats) { + for (COMPOUND_TYPE cmp_idx = 0; cmp_idx < COMPOUND_TYPES; ++cmp_idx) { + comp_stats[cmp_idx].dist = INT64_MAX; + comp_stats[cmp_idx].model_dist = INT64_MAX; + comp_stats[cmp_idx].rate = INT32_MAX; + comp_stats[cmp_idx].model_rate = INT32_MAX; + comp_stats[cmp_idx].comp_type_rate = INT32_MAX; + } +} + // Checks if characteristics of search match static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, const MACROBLOCK *const x, const COMP_RD_STATS *st, const MB_MODE_INFO *const mi, - int32_t *comp_rate, int64_t *comp_dist, - int32_t *comp_model_rate, - int64_t *comp_model_dist, int *comp_rs2) { + CompTypeRdStats *comp_stats) { // TODO(ranjit): Ensure that compound type search use regular filter always // and check if following check can be removed // Check if interp filter matches with previous case @@ -54,27 +63,15 @@ static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, // TODO(any): Consider tools like OPFL, SMVR in the match criteria. // Store the stats for COMPOUND_AVERAGE. - comp_rate[COMPOUND_AVERAGE] = st->rate[COMPOUND_AVERAGE]; - comp_dist[COMPOUND_AVERAGE] = st->dist[COMPOUND_AVERAGE]; - comp_model_rate[COMPOUND_AVERAGE] = st->model_rate[COMPOUND_AVERAGE]; - comp_model_dist[COMPOUND_AVERAGE] = st->model_dist[COMPOUND_AVERAGE]; - comp_rs2[COMPOUND_AVERAGE] = st->comp_rs2[COMPOUND_AVERAGE]; + comp_stats[COMPOUND_AVERAGE] = st->rd_stats[COMPOUND_AVERAGE]; // For compound wedge/segment, reuse data only if NEWMV is not present in // either of the directions if ((!have_newmv_in_inter_mode(mi->mode) && !have_newmv_in_inter_mode(st->mode)) || (cpi->sf.inter_sf.disable_interinter_wedge_newmv_search)) { - memcpy(&comp_rate[COMPOUND_WEDGE], &st->rate[COMPOUND_WEDGE], - sizeof(comp_rate[COMPOUND_WEDGE]) * 2); - memcpy(&comp_dist[COMPOUND_WEDGE], &st->dist[COMPOUND_WEDGE], - sizeof(comp_dist[COMPOUND_WEDGE]) * 2); - memcpy(&comp_model_rate[COMPOUND_WEDGE], &st->model_rate[COMPOUND_WEDGE], - sizeof(comp_model_rate[COMPOUND_WEDGE]) * 2); - memcpy(&comp_model_dist[COMPOUND_WEDGE], &st->model_dist[COMPOUND_WEDGE], - sizeof(comp_model_dist[COMPOUND_WEDGE]) * 2); - memcpy(&comp_rs2[COMPOUND_WEDGE], &st->comp_rs2[COMPOUND_WEDGE], - sizeof(comp_rs2[COMPOUND_WEDGE]) * 2); + comp_stats[COMPOUND_WEDGE] = st->rd_stats[COMPOUND_WEDGE]; + comp_stats[COMPOUND_DIFFWTD] = st->rd_stats[COMPOUND_DIFFWTD]; } return 1; } @@ -84,16 +81,12 @@ static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, static INLINE int find_comp_rd_in_stats(const AV2_COMP *const cpi, const MACROBLOCK *x, const MB_MODE_INFO *const mbmi, - int32_t *comp_rate, int64_t *comp_dist, - int32_t *comp_model_rate, - int64_t *comp_model_dist, int *comp_rs2, + CompTypeRdStats *comp_stats, int *match_index) { if (mbmi->cwp_idx != CWP_EQUAL) return 0; for (int j = 0; j < x->comp_rd_stats_idx; ++j) { - if (is_comp_rd_match(cpi, x, &x->comp_rd_stats[j], mbmi, comp_rate, - comp_dist, comp_model_rate, comp_model_dist, - comp_rs2)) { + if (is_comp_rd_match(cpi, x, &x->comp_rd_stats[j], mbmi, comp_stats)) { *match_index = j; return 1; } @@ -956,22 +949,23 @@ static INLINE void update_mbmi_for_compound_type(MB_MODE_INFO *mbmi, // update the mbmi appropriately. static INLINE int populate_reuse_comp_type_data( const MACROBLOCK *x, MB_MODE_INFO *mbmi, - BEST_COMP_TYPE_STATS *best_type_stats, int_mv *cur_mv, int32_t *comp_rate, - int64_t *comp_dist, int *comp_rs2, int *rate_mv, int64_t *rd, + BEST_COMP_TYPE_STATS *best_type_stats, int_mv *cur_mv, + const CompTypeRdStats *comp_stats, int *rate_mv, int64_t *rd, int match_index) { const int winner_comp_type = x->comp_rd_stats[match_index].interinter_comp.type; - if (comp_rate[winner_comp_type] == INT_MAX) + const CompTypeRdStats *const winner_stats = &comp_stats[winner_comp_type]; + if (winner_stats->rate == INT32_MAX) return best_type_stats->best_compmode_interinter_cost; + update_mbmi_for_compound_type(mbmi, winner_comp_type); mbmi->interinter_comp = x->comp_rd_stats[match_index].interinter_comp; - *rd = RDCOST( - x->rdmult, - comp_rs2[winner_comp_type] + *rate_mv + comp_rate[winner_comp_type], - comp_dist[winner_comp_type]); + *rd = RDCOST(x->rdmult, + winner_stats->comp_type_rate + *rate_mv + winner_stats->rate, + winner_stats->dist); mbmi->mv[0].as_int = cur_mv[0].as_int; mbmi->mv[1].as_int = cur_mv[1].as_int; - return comp_rs2[winner_comp_type]; + return winner_stats->comp_type_rate; } // Updates rd cost and relevant compound type data for the best compound type @@ -987,25 +981,20 @@ static INLINE void update_best_info(const MB_MODE_INFO *const mbmi, int64_t *rd, best_type_stats->cwp_idx = mbmi->cwp_idx; } -static INLINE void save_comp_rd_search_stat( - MACROBLOCK *x, const MB_MODE_INFO *const mbmi, const int32_t *comp_rate, - const int64_t *comp_dist, const int32_t *comp_model_rate, - const int64_t *comp_model_dist, const int_mv *cur_mv, const int *comp_rs2) { +static INLINE void save_comp_rd_search_stat(MACROBLOCK *x, + const MB_MODE_INFO *const mbmi, + const CompTypeRdStats *comp_stats, + const int_mv *cur_mv) { if (mbmi->cwp_idx != CWP_EQUAL) return; const int offset = x->comp_rd_stats_idx; if (offset < MAX_COMP_RD_STATS) { COMP_RD_STATS *const rd_stats = x->comp_rd_stats + offset; - memcpy(rd_stats->rate, comp_rate, sizeof(rd_stats->rate)); - memcpy(rd_stats->dist, comp_dist, sizeof(rd_stats->dist)); - memcpy(rd_stats->model_rate, comp_model_rate, sizeof(rd_stats->model_rate)); - memcpy(rd_stats->model_dist, comp_model_dist, sizeof(rd_stats->model_dist)); - memcpy(rd_stats->comp_rs2, comp_rs2, sizeof(rd_stats->comp_rs2)); - memcpy(rd_stats->mv, cur_mv, sizeof(rd_stats->mv)); - memcpy(rd_stats->ref_frames, mbmi->ref_frame, sizeof(rd_stats->ref_frames)); + av2_copy_array(rd_stats->rd_stats, comp_stats, COMPOUND_TYPES); + av2_copy_array(rd_stats->mv, cur_mv, 2); + av2_copy(rd_stats->ref_frames, mbmi->ref_frame); rd_stats->mode = mbmi->mode; rd_stats->interp_fltr = mbmi->interp_fltr; - rd_stats->ref_mv_idx[0] = mbmi->ref_mv_idx[0]; - rd_stats->ref_mv_idx[1] = mbmi->ref_mv_idx[1]; + av2_copy(rd_stats->ref_mv_idx, mbmi->ref_mv_idx); rd_stats->cwp_idx = mbmi->cwp_idx; const MACROBLOCKD *const xd = &x->e_mbd; for (int i = 0; i < 2; ++i) { @@ -1013,8 +1002,7 @@ static INLINE void save_comp_rd_search_stat( &xd->global_motion[mbmi->ref_frame[i]]; rd_stats->is_global[i] = is_global_mv_block(mbmi, wm->wmtype); } - memcpy(&rd_stats->interinter_comp, &mbmi->interinter_comp, - sizeof(rd_stats->interinter_comp)); + rd_stats->interinter_comp = mbmi->interinter_comp; ++x->comp_rd_stats_idx; } } @@ -1036,16 +1024,15 @@ static INLINE int get_interinter_compound_mask_rate( } // Takes a backup of rate, distortion and model_rd for future reuse -static INLINE void backup_stats(COMPOUND_TYPE cur_type, int32_t *comp_rate, - int64_t *comp_dist, int32_t *comp_model_rate, - int64_t *comp_model_dist, int rate_sum, - int64_t dist_sum, RD_STATS *rd_stats, - int *comp_rs2, int comp_type_rate) { - comp_rate[cur_type] = rd_stats->rate; - comp_dist[cur_type] = rd_stats->dist; - comp_model_rate[cur_type] = rate_sum; - comp_model_dist[cur_type] = dist_sum; - comp_rs2[cur_type] = comp_type_rate; +static INLINE void backup_stats(COMPOUND_TYPE cur_type, + CompTypeRdStats *comp_stats, int rate_sum, + int64_t dist_sum, const RD_STATS *rd_stats, + int comp_type_rate) { + comp_stats[cur_type].rate = rd_stats->rate; + comp_stats[cur_type].dist = rd_stats->dist; + comp_stats[cur_type].model_rate = rate_sum; + comp_stats[cur_type].model_dist = dist_sum; + comp_stats[cur_type].comp_type_rate = comp_type_rate; } static int64_t masked_compound_type_rd( @@ -1053,10 +1040,9 @@ static int64_t masked_compound_type_rd( const BLOCK_SIZE bsize, int *comp_type_rate, int rate_mv, const BUFFER_SET *ctx, int *out_rate_mv, const CompoundTypeRdBuffers *buffers, int mode_rate, int64_t rd_thresh, - int *calc_pred_masked_compound, int32_t *comp_rate, int64_t *comp_dist, - int32_t *comp_model_rate, int64_t *comp_model_dist, + int *calc_pred_masked_compound, CompTypeRdStats *comp_stats, const int64_t comp_best_model_rd, int64_t *const comp_model_rd_cur, - int *comp_rs2, int64_t ref_skip_rd, bool *is_newmv_searched) { + int64_t ref_skip_rd, bool *is_newmv_searched) { const AV2_COMMON *const cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *const mbmi = xd->mi[0]; @@ -1130,7 +1116,7 @@ static int64_t masked_compound_type_rd( } // Compute cost if matching record not found, else, reuse data - if (comp_rate[compound_type] == INT_MAX) { + if (comp_stats[compound_type].rate == INT32_MAX) { // Check whether new MV search for wedge is to be done int wedge_newmv_search = have_newmv_in_inter_mode(this_mode) && @@ -1185,13 +1171,13 @@ static int64_t masked_compound_type_rd( rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + rd_stats.rate, rd_stats.dist); // Backup rate and distortion for future reuse - backup_stats(compound_type, comp_rate, comp_dist, comp_model_rate, - comp_model_dist, rate_sum, dist_sum, &rd_stats, comp_rs2, + backup_stats(compound_type, comp_stats, rate_sum, dist_sum, &rd_stats, *comp_type_rate); } } else { // Reuse data as matching record is found - assert(comp_dist[compound_type] != INT64_MAX); + const CompTypeRdStats *const cur_stats = &comp_stats[compound_type]; + assert(cur_stats->dist != INT64_MAX); // When disable_interinter_wedge_newmv_search is set, motion refinement is // disabled. Hence rate and distortion can be reused in this case as well assert(IMPLIES(have_newmv_in_inter_mode(this_mode), @@ -1200,14 +1186,12 @@ static int64_t masked_compound_type_rd( assert(mbmi->mv[1].as_int == cur_mv[1].as_int); *out_rate_mv = rate_mv; // Calculate RD cost based on stored stats - rd = RDCOST(x->rdmult, - *comp_type_rate + *out_rate_mv + comp_rate[compound_type], - comp_dist[compound_type]); + rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + cur_stats->rate, + cur_stats->dist); // Recalculate model rdcost with the updated rate - *comp_model_rd_cur = - RDCOST(x->rdmult, - *comp_type_rate + *out_rate_mv + comp_model_rate[compound_type], - comp_model_dist[compound_type]); + *comp_model_rd_cur = RDCOST( + x->rdmult, *comp_type_rate + *out_rate_mv + cur_stats->model_rate, + cur_stats->model_dist); } return rd; } @@ -1238,20 +1222,15 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, best_type_stats.comp_best_model_rd = INT64_MAX; best_type_stats.cwp_idx = CWP_EQUAL; - // Local arrays for stored stats. - int64_t comp_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX }; - int32_t comp_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX }; - int comp_rs2[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX }; - int32_t comp_model_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX }; - int64_t comp_model_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX }; + // Local struct array for stored stats. + CompTypeRdStats comp_stats[COMPOUND_TYPES]; + init_comp_type_rd_stats(comp_stats); int match_index = 0; const int reuse_compound_type_data = inter_sf->reuse_compound_type_data; const int match_found = reuse_compound_type_data - ? find_comp_rd_in_stats(cpi, x, mbmi, comp_rate, comp_dist, - comp_model_rate, comp_model_dist, comp_rs2, - &match_index) + ? find_comp_rd_in_stats(cpi, x, mbmi, comp_stats, &match_index) : 0; const bool is_refinemv_mode = @@ -1262,8 +1241,7 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, // stored stats and update the mbmi appropriately. if (match_found && !is_refinemv_mode && reuse_compound_type_data >= 2) { return populate_reuse_comp_type_data(x, mbmi, &best_type_stats, cur_mv, - comp_rate, comp_dist, comp_rs2, - rate_mv, rd, match_index); + comp_stats, rate_mv, rd, match_index); } // Determine the number of valid compound types to be @@ -1318,7 +1296,8 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, if (cur_type == COMPOUND_AVERAGE) { // Reuse data if matching record is found. - if (comp_rate[cur_type] == INT_MAX) { + const CompTypeRdStats *const cur_stats = &comp_stats[cur_type]; + if (cur_stats->rate == INT32_MAX) { av2_enc_build_inter_predictor(cm, xd, xd->mi_row, xd->mi_col, orig_dst, bsize, AVM_PLANE_Y, AVM_PLANE_Y); *is_luma_interp_done = 1; @@ -1355,20 +1334,19 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, RDCOST(x->rdmult, comp_type_rate + *rate_mv + rate_sum, dist_sum); // Backup rate and distortion for future reuse. - backup_stats(cur_type, comp_rate, comp_dist, comp_model_rate, - comp_model_dist, rate_sum, dist_sum, &est_rd_stats, - comp_rs2, comp_type_rate); + backup_stats(cur_type, comp_stats, rate_sum, dist_sum, &est_rd_stats, + comp_type_rate); } } else { // Calculate RD cost based on stored stats. - assert(comp_dist[cur_type] != INT64_MAX); + assert(cur_stats->dist != INT64_MAX); best_rd_cur = - RDCOST(x->rdmult, comp_type_rate + *rate_mv + comp_rate[cur_type], - comp_dist[cur_type]); + RDCOST(x->rdmult, comp_type_rate + *rate_mv + cur_stats->rate, + cur_stats->dist); // Recalculate model rdcost with the updated rate. - comp_model_rd_cur = RDCOST( - x->rdmult, comp_type_rate + *rate_mv + comp_model_rate[cur_type], - comp_model_dist[cur_type]); + comp_model_rd_cur = + RDCOST(x->rdmult, comp_type_rate + *rate_mv + cur_stats->model_rate, + cur_stats->model_dist); } // Use spare buffer for other compound types. restore_dst_buf(xd, *tmp_dst, 1); @@ -1383,9 +1361,9 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, best_rd_cur = masked_compound_type_rd( cpi, x, cur_mv, bsize, &comp_type_rate, *rate_mv, orig_dst, &tmp_rate_mv, buffers, rd_stats->rate, tmp_rd_thresh, - &calc_pred_masked_compound, comp_rate, comp_dist, comp_model_rate, - comp_model_dist, best_type_stats.comp_best_model_rd, - &comp_model_rd_cur, comp_rs2, ref_skip_rd, &is_newmv_searched); + &calc_pred_masked_compound, comp_stats, + best_type_stats.comp_best_model_rd, &comp_model_rd_cur, ref_skip_rd, + &is_newmv_searched); } } // Update stats for best compound type. @@ -1421,7 +1399,6 @@ int av2_compound_type_rd(const AV2_COMP *const cpi, MACROBLOCK *x, restore_dst_buf(xd, *orig_dst, 1); if (!match_found && reuse_compound_type_data) - save_comp_rd_search_stat(x, mbmi, comp_rate, comp_dist, comp_model_rate, - comp_model_dist, cur_mv, comp_rs2); + save_comp_rd_search_stat(x, mbmi, comp_stats, cur_mv); return best_type_stats.best_compmode_interinter_cost; } From 7418a50afed96314b05f50596de7d846c699e180 Mon Sep 17 00:00:00 2001 From: Remya Prakasan Date: Thu, 13 Aug 2026 21:35:53 +0530 Subject: [PATCH 193/205] Unify pick_wedge() and pick_wedge_fixed_sign() - Unified pick_wedge() and pick_wedge_fixed_sign() to avoid code duplication - Cleaned up the dead code and debug prints in pick_wedge() - Modified get_wedge_cost() to cleanup unused parameter No Stats Changed --- av2/encoder/compound_type.c | 124 ++++++++++-------------------------- 1 file changed, 32 insertions(+), 92 deletions(-) diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index 3b30a2a0b8..bacb7e490b 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -179,9 +179,7 @@ static int8_t estimate_wedge_sign(const AV2_COMP *cpi, const MACROBLOCK *x, return (tl + br > 0); } -static int get_wedge_cost(const BLOCK_SIZE bsize, const int8_t wedge_index, - const MACROBLOCK *const x) { - (void)bsize; +static int get_wedge_cost(const int8_t wedge_index, const MACROBLOCK *const x) { assert(wedge_index >= 0 && wedge_index < MAX_WEDGE_TYPES); const int wedge_angle = wedge_index_2_angle[wedge_index]; const int wedge_dist = wedge_index_2_dist[wedge_index]; @@ -199,59 +197,45 @@ static int get_wedge_cost(const BLOCK_SIZE bsize, const int8_t wedge_index, return wedge_cost; } -// Choose the best wedge index and sign +// Choose the best wedge index and sign. +// If use_fixed_wedge_sign is true, only best_wedge_sign is evaluated else both +// signs (0 and 1) are evaluated. static int64_t pick_wedge(const AV2_COMP *const cpi, const MACROBLOCK *const x, - const BLOCK_SIZE bsize, const uint16_t *const p0, - const int16_t *const residual1, + BLOCK_SIZE bsize, const int16_t *const residual1, const int16_t *const diff10, + bool use_fixed_wedge_sign, int8_t *const best_wedge_sign, int8_t *const best_wedge_index, int8_t *const best_boundary_index, uint64_t *best_sse) { const MACROBLOCKD *const xd = &x->e_mbd; - const struct buf_2d *const src = &x->plane[0].src; const int bw = block_size_wide[bsize]; const int bh = block_size_high[bsize]; const int N = bw * bh; assert(N >= 64); + assert(IMPLIES(use_fixed_wedge_sign, *best_wedge_sign >= 0)); int rate; int64_t dist; int64_t rd, best_rd = INT64_MAX; - int8_t wedge_index; - int8_t wedge_sign; const int8_t wedge_types = get_wedge_types_lookup(bsize); - const uint8_t *mask; - uint64_t sse; const int bd_round = (xd->bd - 8) * 2; - DECLARE_ALIGNED(32, int16_t, residual0[MAX_SB_SQUARE]); // src - pred0 - - avm_highbd_subtract_block(bh, bw, residual0, bw, src->buf, src->stride, p0, - bw, xd->bd); - int16_t *ds = residual0; - - av2_wedge_compute_delta_squares(ds, residual0, residual1, N); + const int sign_start = use_fixed_wedge_sign ? *best_wedge_sign : 0; + const int sign_end = use_fixed_wedge_sign ? *best_wedge_sign : 1; - for (wedge_index = 0; wedge_index < wedge_types; ++wedge_index) { - int k = get_wedge_boundary_type(bsize); + for (int8_t wedge_index = 0; wedge_index < wedge_types; ++wedge_index) { + const int k = get_wedge_boundary_type(bsize); - // rd-estimation based wedge_sign selection - for (wedge_sign = 0; wedge_sign < 2; wedge_sign++) { - mask = + for (int8_t wedge_sign = sign_start; wedge_sign <= sign_end; ++wedge_sign) { + const uint8_t *mask = av2_get_all_contiguous_soft_mask(wedge_index, wedge_sign, bsize, k); - sse = av2_wedge_sse_from_residuals(residual1, diff10, mask, N); + uint64_t sse = av2_wedge_sse_from_residuals(residual1, diff10, mask, N); sse = ROUND_POWER_OF_TWO(sse, bd_round); model_rd_sse_fn[MODELRD_TYPE_MASKED_COMPOUND](cpi, x, bsize, 0, sse, N, &rate, &dist); - // int rate2; - // int64_t dist2; - // model_rd_with_curvfit(cpi, x, bsize, 0, sse, N, &rate2, &dist2); - // printf("sse %"PRId64": leagacy: %d %"PRId64", curvfit %d %"PRId64"\n", - // sse, rate, dist, rate2, dist2); dist = dist2; - // rate = rate2; - - rate += get_wedge_cost(bsize, wedge_index, x); + + rate += get_wedge_cost(wedge_index, x); rd = RDCOST(x->rdmult, rate, dist); if (rd < best_rd) { @@ -264,51 +248,7 @@ static int64_t pick_wedge(const AV2_COMP *const cpi, const MACROBLOCK *const x, } } - return best_rd - - RDCOST(x->rdmult, get_wedge_cost(bsize, *best_wedge_index, x), 0); -} - -// Choose the best wedge index the specified sign -static int64_t pick_wedge_fixed_sign( - const AV2_COMP *const cpi, const MACROBLOCK *const x, - const BLOCK_SIZE bsize, const int16_t *const residual1, - const int16_t *const diff10, const int8_t wedge_sign, - int8_t *const best_wedge_index, int8_t *const best_boundary_index, - uint64_t *best_sse) { - const MACROBLOCKD *const xd = &x->e_mbd; - - const int bw = block_size_wide[bsize]; - const int bh = block_size_high[bsize]; - const int N = bw * bh; - assert(N >= 64); - int rate; - int64_t dist; - int64_t rd, best_rd = INT64_MAX; - int8_t wedge_index; - const int8_t wedge_types = get_wedge_types_lookup(bsize); - const uint8_t *mask; - uint64_t sse; - const int bd_round = (xd->bd - 8) * 2; - for (wedge_index = 0; wedge_index < wedge_types; ++wedge_index) { - int k = get_wedge_boundary_type(bsize); - mask = av2_get_all_contiguous_soft_mask(wedge_index, wedge_sign, bsize, k); - sse = av2_wedge_sse_from_residuals(residual1, diff10, mask, N); - sse = ROUND_POWER_OF_TWO(sse, bd_round); - - model_rd_sse_fn[MODELRD_TYPE_MASKED_COMPOUND](cpi, x, bsize, 0, sse, N, - &rate, &dist); - rate += get_wedge_cost(bsize, wedge_index, x); - rd = RDCOST(x->rdmult, rate, dist); - - if (rd < best_rd) { - *best_wedge_index = wedge_index; - *best_boundary_index = k; - best_rd = rd; - *best_sse = sse; - } - } - return best_rd - - RDCOST(x->rdmult, get_wedge_cost(bsize, *best_wedge_index, x), 0); + return best_rd - RDCOST(x->rdmult, get_wedge_cost(*best_wedge_index, x), 0); } static int64_t pick_interinter_wedge( @@ -320,23 +260,23 @@ static int64_t pick_interinter_wedge( MB_MODE_INFO *const mbmi = xd->mi[0]; const int bw = block_size_wide[bsize]; - int64_t rd; int8_t wedge_index = -1; int8_t boundary_index = -1; - int8_t wedge_sign = 0; + int8_t wedge_sign = -1; assert(is_interinter_compound_used(COMPOUND_WEDGE, bsize)); assert(cpi->common.seq_params.enable_masked_compound); + bool use_fixed_wedge_sign = false; if (cpi->sf.inter_sf.fast_wedge_sign_estimate) { wedge_sign = estimate_wedge_sign(cpi, x, bsize, p0, bw, p1, bw); - rd = pick_wedge_fixed_sign(cpi, x, bsize, residual1, diff10, wedge_sign, - &wedge_index, &boundary_index, best_sse); - } else { - rd = pick_wedge(cpi, x, bsize, p0, residual1, diff10, &wedge_sign, - &wedge_index, &boundary_index, best_sse); + use_fixed_wedge_sign = true; } + const int64_t rd = + pick_wedge(cpi, x, bsize, residual1, diff10, use_fixed_wedge_sign, + &wedge_sign, &wedge_index, &boundary_index, best_sse); + mbmi->interinter_comp.wedge_sign = wedge_sign; mbmi->interinter_comp.wedge_index = wedge_index; mbmi->interinter_comp.wedge_boundary_index = boundary_index; @@ -412,10 +352,12 @@ static int64_t pick_interintra_wedge(const AV2_COMP *const cpi, avm_highbd_subtract_block(bh, bw, diff10, bw, p1, bw, p0, bw, xd->bd); int8_t wedge_index = -1; + int8_t wedge_sign = 0; int8_t boundary_index = -1; uint64_t sse; - int64_t rd = pick_wedge_fixed_sign(cpi, x, bsize, residual1, diff10, 0, - &wedge_index, &boundary_index, &sse); + const int64_t rd = pick_wedge(cpi, x, bsize, residual1, diff10, + /*use_fixed_wedge_sign*/ true, &wedge_sign, + &wedge_index, &boundary_index, &sse); mbmi->interintra_wedge_index = wedge_index; mbmi->wedge_boundary_index = boundary_index; @@ -526,9 +468,8 @@ static AVM_INLINE int64_t compute_best_wedge_interintra( av2_build_intra_predictors_for_interintra(cm, xd, 0, orig_dst, intrapred, bw); int64_t rd = pick_interintra_wedge(cpi, x, bsize, intrapred, tmp_buf_); - const int rate_overhead = - interintra_mode_cost[mode] + - get_wedge_cost(bsize, mbmi->interintra_wedge_index, x); + const int rate_overhead = interintra_mode_cost[mode] + + get_wedge_cost(mbmi->interintra_wedge_index, x); const int64_t total_rd = rd + RDCOST(x->rdmult, rate_overhead, 0); if (total_rd < best_total_rd) { best_total_rd = total_rd; @@ -680,7 +621,7 @@ static int handle_wedge_inter_intra_mode( } *rate_overhead = interintra_mode_cost[mbmi->interintra_mode] + - get_wedge_cost(bsize, mbmi->interintra_wedge_index, x) + + get_wedge_cost(mbmi->interintra_wedge_index, x) + mode_costs->wedge_interintra_cost[1]; *best_rd += RDCOST(x->rdmult, *rate_overhead + *rate_mv, 0); @@ -1014,8 +955,7 @@ static INLINE int get_interinter_compound_mask_rate( if (compound_type == COMPOUND_WEDGE) { return av2_is_wedge_used(mbmi->sb_type[PLANE_TYPE_Y]) ? av2_cost_literal(1) + - get_wedge_cost(mbmi->sb_type[PLANE_TYPE_Y], - mbmi->interinter_comp.wedge_index, x) + get_wedge_cost(mbmi->interinter_comp.wedge_index, x) : 0; } else { assert(compound_type == COMPOUND_DIFFWTD); From 0d4122e573cd7165e8142e587a7ec95087d074f7 Mon Sep 17 00:00:00 2001 From: Remya Prakasan Date: Fri, 14 Aug 2026 12:22:30 +0530 Subject: [PATCH 194/205] Cosmetic changes in compound_type.c - Modified comments to ensure correctness and correct punctuations - Replaced INLINE with AVM_INLINE - Replaced hard coded values with enums - Used pre-increments in loop counters No Stats Changed --- av2/encoder/compound_type.c | 196 +++++++++++++++++------------------- 1 file changed, 94 insertions(+), 102 deletions(-) diff --git a/av2/encoder/compound_type.c b/av2/encoder/compound_type.c index bacb7e490b..2ca40003a6 100644 --- a/av2/encoder/compound_type.c +++ b/av2/encoder/compound_type.c @@ -36,21 +36,21 @@ static AVM_INLINE void init_comp_type_rd_stats(CompTypeRdStats *comp_stats) { } } -// Checks if characteristics of search match -static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, - const MACROBLOCK *const x, - const COMP_RD_STATS *st, - const MB_MODE_INFO *const mi, - CompTypeRdStats *comp_stats) { +// Checks if characteristics of search match. +static AVM_INLINE int is_comp_rd_match(const AV2_COMP *const cpi, + const MACROBLOCK *const x, + const COMP_RD_STATS *st, + const MB_MODE_INFO *const mi, + CompTypeRdStats *comp_stats) { // TODO(ranjit): Ensure that compound type search use regular filter always - // and check if following check can be removed - // Check if interp filter matches with previous case + // and check if following check can be removed. + // Check if interp filter matches with previous case. if (st->interp_fltr != mi->interp_fltr) return 0; if (st->cwp_idx != mi->cwp_idx) return 0; const MACROBLOCKD *const xd = &x->e_mbd; - // Match MV and reference indices + // Match MV and reference indices. for (int i = 0; i < 2; ++i) { if ((st->ref_frames[i] != mi->ref_frame[i]) || (st->mv[i].as_int != mi->mv[i].as_int)) { @@ -66,7 +66,7 @@ static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, comp_stats[COMPOUND_AVERAGE] = st->rd_stats[COMPOUND_AVERAGE]; // For compound wedge/segment, reuse data only if NEWMV is not present in - // either of the directions + // either of the directions. if ((!have_newmv_in_inter_mode(mi->mode) && !have_newmv_in_inter_mode(st->mode)) || (cpi->sf.inter_sf.disable_interinter_wedge_newmv_search)) { @@ -76,13 +76,13 @@ static INLINE int is_comp_rd_match(const AV2_COMP *const cpi, return 1; } -// Checks if similar compound type search case is accounted earlier -// If found, returns relevant rd data -static INLINE int find_comp_rd_in_stats(const AV2_COMP *const cpi, - const MACROBLOCK *x, - const MB_MODE_INFO *const mbmi, - CompTypeRdStats *comp_stats, - int *match_index) { +// Checks if similar compound type search case is accounted earlier and returns +// relevant rd data if found. +static AVM_INLINE int find_comp_rd_in_stats(const AV2_COMP *const cpi, + const MACROBLOCK *x, + const MB_MODE_INFO *const mbmi, + CompTypeRdStats *comp_stats, + int *match_index) { if (mbmi->cwp_idx != CWP_EQUAL) return 0; for (int j = 0; j < x->comp_rd_stats_idx; ++j) { @@ -94,22 +94,21 @@ static INLINE int find_comp_rd_in_stats(const AV2_COMP *const cpi, return 0; // no match result found } -static INLINE bool enable_wedge_search(MACROBLOCK *const x, - const AV2_COMP *const cpi) { - // Enable wedge search if source variance and edge strength are above - // the thresholds. +static AVM_INLINE bool enable_wedge_search(MACROBLOCK *const x, + const AV2_COMP *const cpi) { + // Enable wedge search if source variance is above the threshold. return x->source_variance > cpi->sf.inter_sf.disable_wedge_search_var_thresh; } -static INLINE bool enable_wedge_interinter_search(MACROBLOCK *const x, - const AV2_COMP *const cpi) { +static AVM_INLINE bool enable_wedge_interinter_search( + MACROBLOCK *const x, const AV2_COMP *const cpi) { return enable_wedge_search(x, cpi) && cpi->oxcf.comp_type_cfg.enable_interinter_wedge && !cpi->sf.inter_sf.disable_interinter_wedge; } -static INLINE bool enable_wedge_interintra_search(MACROBLOCK *const x, - const AV2_COMP *const cpi) { +static AVM_INLINE bool enable_wedge_interintra_search( + MACROBLOCK *const x, const AV2_COMP *const cpi) { return enable_wedge_search(x, cpi) && cpi->oxcf.comp_type_cfg.enable_interintra_wedge; } @@ -144,7 +143,7 @@ static int8_t estimate_wedge_sign(const AV2_COMP *cpi, const MACROBLOCK *x, BLOCK_4X32 }; /* clang-format on */ - const struct macroblock_plane *const p = &x->plane[0]; + const struct macroblock_plane *const p = &x->plane[AVM_PLANE_Y]; const uint16_t *src = p->src.buf; int src_stride = p->src.stride; const int bw = block_size_wide[bsize]; @@ -303,13 +302,12 @@ static int64_t pick_interinter_seg(const AV2_COMP *const cpi, const int bd_round = (xd->bd - 8) * 2; DECLARE_ALIGNED(16, uint8_t, seg_mask[2 * MAX_SB_SQUARE]); uint8_t *tmp_mask[2] = { xd->seg_mask, seg_mask }; - // try each mask type and its inverse - for (cur_mask_type = 0; cur_mask_type < DIFFWTD_MASK_TYPES; cur_mask_type++) { - // build mask and inverse + // Try each mask type and its inverse. + for (cur_mask_type = 0; cur_mask_type < DIFFWTD_MASK_TYPES; ++cur_mask_type) { av2_build_compound_diffwtd_mask_highbd( tmp_mask[cur_mask_type], cur_mask_type, p0, bw, p1, bw, bh, bw, xd->bd); - // compute rd for mask + // Compute rd cost. uint64_t sse = av2_wedge_sse_from_residuals(residual1, diff10, tmp_mask[cur_mask_type], N); sse = ROUND_POWER_OF_TWO(sse, bd_round); @@ -370,7 +368,7 @@ static AVM_INLINE void get_inter_predictor_masked_compound_y( MACROBLOCKD *xd = &x->e_mbd; const int bw = block_size_wide[bsize]; const int bh = block_size_high[bsize]; - // get inter predictors to use for masked compound modes + // Get inter predictors to use for masked compound modes. av2_build_inter_predictor_single_buf_y(xd, bsize, 0, pred0, stride); av2_build_inter_predictor_single_buf_y(xd, bsize, 1, pred1, stride); const struct buf_2d *const src = &x->plane[0].src; @@ -380,8 +378,8 @@ static AVM_INLINE void get_inter_predictor_masked_compound_y( avm_highbd_subtract_block(bh, bw, diff10, bw, pred1, bw, pred0, bw, xd->bd); } -// Computes the rd cost for the given interintra mode and updates the best -static INLINE void compute_best_interintra_mode( +// Computes the rd cost for the given interintra mode and updates the best. +static AVM_INLINE void compute_best_interintra_mode( const AV2_COMP *const cpi, MB_MODE_INFO *mbmi, MACROBLOCKD *xd, MACROBLOCK *const x, const int *const interintra_mode_cost, const BUFFER_SET *orig_dst, uint16_t *intrapred, const uint16_t *tmp_buf, @@ -396,7 +394,7 @@ static INLINE void compute_best_interintra_mode( assert(is_interintra_mode(mbmi)); assert(mbmi->ref_frame[1] == NONE_FRAME); - int rmode = interintra_mode_cost[interintra_mode]; + const int rmode = interintra_mode_cost[interintra_mode]; av2_build_intra_predictors_for_interintra(cm, xd, 0, orig_dst, intrapred, bw); av2_combine_interintra(xd, bsize, 0, tmp_buf, bw, intrapred, bw); model_rd_sb_fn[MODELRD_TYPE_INTERINTRA](cpi, bsize, x, xd, 0, 0, &rate, &dist, @@ -449,7 +447,7 @@ static AVM_INLINE int64_t compute_rd_thresh(MACROBLOCK *const x, return (rd_thresh - mode_rd); } -// Computes the best wedge interintra mode +// Computes the best wedge interintra mode. static AVM_INLINE int64_t compute_best_wedge_interintra( const AV2_COMP *const cpi, MB_MODE_INFO *mbmi, MACROBLOCKD *xd, MACROBLOCK *const x, const int *const interintra_mode_cost, @@ -514,7 +512,7 @@ static int handle_smooth_inter_intra_mode( } assert(IMPLIES(!cpi->oxcf.comp_type_cfg.enable_smooth_interintra, *best_interintra_mode != II_SMOOTH_PRED)); - // Recompute prediction if required + // Recompute prediction if required. bool interintra_mode_reuse = cpi->sf.inter_sf.reuse_inter_intra_mode || *best_interintra_mode != INTERINTRA_MODES; if (interintra_mode_reuse || *best_interintra_mode != INTERINTRA_MODES - 1) { @@ -524,7 +522,7 @@ static int handle_smooth_inter_intra_mode( av2_combine_interintra(xd, bsize, 0, tmp_buf, bw, intrapred, bw); } - // Compute rd cost for best smooth_interintra + // Compute rd cost for best smooth_interintra. RD_STATS rd_stats; const int is_wedge_used = av2_is_wedge_used(bsize); int rmode = interintra_mode_cost[*best_interintra_mode] + @@ -540,7 +538,7 @@ static int handle_smooth_inter_intra_mode( } *best_rd = rd; *best_mode_rate = rmode; - // Return early if best rd not good enough + // Return early if best rd not good enough. if (ref_best_rd < INT64_MAX && (*best_rd >> INTER_INTRA_RD_THRESH_SHIFT) * INTER_INTRA_RD_THRESH_SCALE > ref_best_rd) { @@ -591,7 +589,7 @@ static int handle_wedge_inter_intra_mode( *best_interintra_mode = INTERINTRA_MODES - 1; av2_build_intra_predictors_for_interintra(cm, xd, 0, orig_dst, intrapred, bw); - // Pick wedge mask based on INTERINTRA_MODES - 1 + // Pick wedge mask based on INTERINTRA_MODES - 1. *best_rd = pick_interintra_wedge(cpi, x, bsize, intrapred_, tmp_buf_); // Find the best interintra mode for the chosen wedge mask for (INTERINTRA_MODE cur_mode = 0; cur_mode < INTERINTRA_MODES; @@ -603,20 +601,20 @@ static int handle_wedge_inter_intra_mode( args->inter_intra_mode[mbmi->ref_frame[0]] = *best_interintra_mode; mbmi->interintra_mode = *best_interintra_mode; - // Recompute prediction if required + // Recompute prediction if required. if (*best_interintra_mode != INTERINTRA_MODES - 1) { av2_build_intra_predictors_for_interintra(cm, xd, 0, orig_dst, intrapred, bw); } } else { - // Pick wedge mask for the best interintra mode (reused) + // Pick wedge mask for the best interintra mode (reused). mbmi->interintra_mode = *best_interintra_mode; av2_build_intra_predictors_for_interintra(cm, xd, 0, orig_dst, intrapred, bw); *best_rd = pick_interintra_wedge(cpi, x, bsize, intrapred_, tmp_buf_); } } else { - // Pick wedge mask for the best interintra mode from smooth_interintra + // Pick wedge mask for the best interintra mode from smooth_interintra. *best_rd = pick_interintra_wedge(cpi, x, bsize, intrapred_, tmp_buf_); } @@ -631,7 +629,7 @@ static int handle_wedge_inter_intra_mode( if (have_newmv_in_inter_mode(mbmi->mode) && !mbmi->warp_inter_intra) { int rate_sum, skip_txfm_sb; int64_t dist_sum, skip_sse_sb; - // get negative of mask + // Get negative of mask. const uint8_t *mask = av2_get_all_contiguous_soft_mask( mbmi->interintra_wedge_index, 1, bsize, mbmi->wedge_boundary_index); av2_compound_single_motion_search(cpi, x, bsize, &tmp_mv->as_mv, @@ -639,9 +637,6 @@ static int handle_wedge_inter_intra_mode( tmp_rate_mv, 0); if (mbmi->mv[0].as_int != tmp_mv->as_int) { mbmi->mv[0].as_int = tmp_mv->as_int; - // Set ref_frame[1] to NONE_FRAME temporarily so that the intra - // predictor is not calculated again in av2_enc_build_inter_predictor(). - mbmi->motion_mode = SIMPLE_TRANSLATION; const int mi_row = xd->mi_row; const int mi_col = xd->mi_col; @@ -662,7 +657,7 @@ static int handle_wedge_inter_intra_mode( *tmp_rate_mv = *rate_mv; av2_combine_interintra(xd, bsize, 0, tmp_buf, bw, intrapred, bw); } - // Evaluate closer to true rd + // Evaluate closer to true rd. RD_STATS rd_stats; const int64_t mode_rd = RDCOST(x->rdmult, *rate_overhead + *tmp_rate_mv, 0); const int64_t tmp_rd_thresh = best_rd_no_wedge - mode_rd; @@ -699,19 +694,19 @@ int av2_handle_inter_intra_mode(const AV2_COMP *const cpi, MACROBLOCK *const x, const int mi_row = xd->mi_row; const int mi_col = xd->mi_col; - // Single reference inter prediction - // Only generate inter part of inter-intra + // Single reference inter prediction - only generate inter part of + // inter-intra. mbmi->motion_mode = org_warp_inter_intra ? org_motion_mode : SIMPLE_TRANSLATION; mbmi->warp_inter_intra = 0; - xd->plane[0].dst.buf = tmp_buf; - xd->plane[0].dst.stride = bw; + xd->plane[AVM_PLANE_Y].dst.buf = tmp_buf; + xd->plane[AVM_PLANE_Y].dst.stride = bw; av2_enc_build_inter_predictor(cm, xd, mi_row, mi_col, orig_dst, bsize, AVM_PLANE_Y, AVM_PLANE_Y); const int num_planes = av2_num_planes(cm); - // Restore the buffers for intra prediction + // Restore the buffers for intra prediction. restore_dst_buf(xd, *orig_dst, num_planes); mbmi->warp_inter_intra = org_warp_inter_intra; @@ -726,7 +721,7 @@ int av2_handle_inter_intra_mode(const AV2_COMP *const cpi, MACROBLOCK *const x, best_interintra_mode = INTERINTRA_MODES; } - // Compute smooth_interintra + // Compute smooth_interintra. int64_t best_interintra_rd_nowedge = INT64_MAX; int best_mode_rate = INT_MAX; if (try_smooth_interintra) { @@ -743,7 +738,7 @@ int av2_handle_inter_intra_mode(const AV2_COMP *const cpi, MACROBLOCK *const x, assert(IMPLIES(mbmi->warp_inter_intra, mbmi->motion_mode >= WARP_CAUSAL)); assert(mbmi->ref_frame[1] == NONE_FRAME); - // Compute wedge interintra + // Compute wedge interintra. int64_t best_interintra_rd_wedge = INT64_MAX; const int_mv mv0 = mbmi->mv[0]; int_mv tmp_mv = mv0; @@ -794,12 +789,10 @@ int av2_handle_inter_intra_mode(const AV2_COMP *const cpi, MACROBLOCK *const x, } // Computes the valid compound_types to be evaluated. -static INLINE int compute_valid_comp_types(MACROBLOCK *x, - const AV2_COMP *const cpi, - BLOCK_SIZE bsize, - int masked_compound_used, - int mode_search_mask, - COMPOUND_TYPE *valid_comp_types) { +static AVM_INLINE int compute_valid_comp_types( + MACROBLOCK *x, const AV2_COMP *const cpi, BLOCK_SIZE bsize, + int masked_compound_used, int mode_search_mask, + COMPOUND_TYPE *valid_comp_types) { int valid_type_count = 0; MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = xd->mi[0]; @@ -877,18 +870,17 @@ static AVM_INLINE void calc_comp_type_cost(const AV2_COMP *cpi, } } -// Updates mbmi structure with the relevant compound type info -static INLINE void update_mbmi_for_compound_type(MB_MODE_INFO *mbmi, - COMPOUND_TYPE cur_type) { +// Updates mbmi structure with the relevant compound type info. +static AVM_INLINE void update_mbmi_for_compound_type(MB_MODE_INFO *mbmi, + COMPOUND_TYPE cur_type) { mbmi->interinter_comp.type = cur_type; mbmi->comp_group_idx = (cur_type >= COMPOUND_WEDGE); mbmi->cwp_idx = (cur_type == COMPOUND_AVERAGE) ? mbmi->cwp_idx : CWP_EQUAL; } -// When match is found, populate the compound type data -// and calculate the rd cost using the stored stats and -// update the mbmi appropriately. -static INLINE int populate_reuse_comp_type_data( +// When match is found, populate the compound type data and calculate the rd +// cost using the stored stats and update the mbmi appropriately. +static AVM_INLINE int populate_reuse_comp_type_data( const MACROBLOCK *x, MB_MODE_INFO *mbmi, BEST_COMP_TYPE_STATS *best_type_stats, int_mv *cur_mv, const CompTypeRdStats *comp_stats, int *rate_mv, int64_t *rd, @@ -909,12 +901,13 @@ static INLINE int populate_reuse_comp_type_data( return winner_stats->comp_type_rate; } -// Updates rd cost and relevant compound type data for the best compound type -static INLINE void update_best_info(const MB_MODE_INFO *const mbmi, int64_t *rd, - BEST_COMP_TYPE_STATS *best_type_stats, - int64_t best_rd_cur, - int64_t comp_model_rd_cur, - int comp_type_rate) { +// Updates rd cost and relevant compound type data for the best compound type. +static AVM_INLINE void update_best_info(const MB_MODE_INFO *const mbmi, + int64_t *rd, + BEST_COMP_TYPE_STATS *best_type_stats, + int64_t best_rd_cur, + int64_t comp_model_rd_cur, + int comp_type_rate) { *rd = best_rd_cur; best_type_stats->comp_best_model_rd = comp_model_rd_cur; best_type_stats->best_compound_data = mbmi->interinter_comp; @@ -922,10 +915,9 @@ static INLINE void update_best_info(const MB_MODE_INFO *const mbmi, int64_t *rd, best_type_stats->cwp_idx = mbmi->cwp_idx; } -static INLINE void save_comp_rd_search_stat(MACROBLOCK *x, - const MB_MODE_INFO *const mbmi, - const CompTypeRdStats *comp_stats, - const int_mv *cur_mv) { +static AVM_INLINE void save_comp_rd_search_stat( + MACROBLOCK *x, const MB_MODE_INFO *const mbmi, + const CompTypeRdStats *comp_stats, const int_mv *cur_mv) { if (mbmi->cwp_idx != CWP_EQUAL) return; const int offset = x->comp_rd_stats_idx; if (offset < MAX_COMP_RD_STATS) { @@ -948,10 +940,10 @@ static INLINE void save_comp_rd_search_stat(MACROBLOCK *x, } } -static INLINE int get_interinter_compound_mask_rate( +static AVM_INLINE int get_interinter_compound_mask_rate( const MB_MODE_INFO *const mbmi, MACROBLOCK *x) { const COMPOUND_TYPE compound_type = mbmi->interinter_comp.type; - // This function will be called only for COMPOUND_WEDGE and COMPOUND_DIFFWTD + // This function will be called only for COMPOUND_WEDGE and COMPOUND_DIFFWTD. if (compound_type == COMPOUND_WEDGE) { return av2_is_wedge_used(mbmi->sb_type[PLANE_TYPE_Y]) ? av2_cost_literal(1) + @@ -963,11 +955,11 @@ static INLINE int get_interinter_compound_mask_rate( } } -// Takes a backup of rate, distortion and model_rd for future reuse -static INLINE void backup_stats(COMPOUND_TYPE cur_type, - CompTypeRdStats *comp_stats, int rate_sum, - int64_t dist_sum, const RD_STATS *rd_stats, - int comp_type_rate) { +// Takes a backup of rate, distortion and model_rd for future reuse. +static AVM_INLINE void backup_stats(COMPOUND_TYPE cur_type, + CompTypeRdStats *comp_stats, int rate_sum, + int64_t dist_sum, const RD_STATS *rd_stats, + int comp_type_rate) { comp_stats[cur_type].rate = rd_stats->rate; comp_stats[cur_type].dist = rd_stats->dist; comp_stats[cur_type].model_rate = rate_sum; @@ -995,7 +987,7 @@ static int64_t masked_compound_type_rd( int64_t best_rd_cur = INT64_MAX; int64_t rd = INT64_MAX; const COMPOUND_TYPE compound_type = mbmi->interinter_comp.type; - // This function will be called only for COMPOUND_WEDGE and COMPOUND_DIFFWTD + // This function will be called only for COMPOUND_WEDGE and COMPOUND_DIFFWTD. assert(compound_type == COMPOUND_WEDGE || compound_type == COMPOUND_DIFFWTD); int rate_sum, tmp_skip_txfm_sb; int64_t dist_sum, tmp_skip_sse_sb; @@ -1016,13 +1008,13 @@ static int64_t masked_compound_type_rd( (void)cpi->fn_ptr[bsize].vf(pred0, stride, pred1, stride, &sse); const unsigned int mse = ROUND_POWER_OF_TWO(sse, num_pels_log2_lookup[bsize]); - // If two predictors are very similar, skip wedge compound mode search + // If two predictors are very similar, skip wedge compound mode search. if (mse < 8 || (!have_newmv_in_inter_mode(this_mode) && mse < 64)) { *comp_model_rd_cur = INT64_MAX; return INT64_MAX; } } - // Function pointer to pick the appropriate mask + // Function pointer to pick the appropriate mask. // compound_type == COMPOUND_WEDGE, calls pick_interinter_wedge() // compound_type == COMPOUND_DIFFWTD, calls pick_interinter_seg() uint64_t cur_sse = UINT64_MAX; @@ -1036,16 +1028,16 @@ static int64_t masked_compound_type_rd( // Although the true rate_mv might be different after motion search, but it // is unlikely to be the best mode considering the transform rd cost and other - // mode overhead cost + // mode overhead cost. int64_t mode_rd = RDCOST(x->rdmult, *comp_type_rate + mode_rate, 0); if (mode_rd > rd_thresh) { *comp_model_rd_cur = INT64_MAX; return INT64_MAX; } - // Check if the mode is good enough based on skip rd + // Check if the mode is good enough based on skip rd. // TODO(nithya): Handle wedge_newmv_search if extending for lower speed - // setting + // setting. if (cpi->sf.inter_sf.txfm_rd_gate_level) { int eval_txfm = check_txfm_eval(x, bsize, ref_skip_rd, skip_rd_cur, cpi->sf.inter_sf.txfm_rd_gate_level, 1); @@ -1055,7 +1047,7 @@ static int64_t masked_compound_type_rd( } } - // Compute cost if matching record not found, else, reuse data + // Compute cost if matching record not found, else, reuse data. if (comp_stats[compound_type].rate == INT32_MAX) { // Check whether new MV search for wedge is to be done int wedge_newmv_search = @@ -1063,7 +1055,7 @@ static int64_t masked_compound_type_rd( (compound_type == COMPOUND_WEDGE) && (!cpi->sf.inter_sf.disable_interinter_wedge_newmv_search); - // Search for new MV if needed and build predictor + // Search for new MV if needed and build predictor. if (wedge_newmv_search) { *out_rate_mv = av2_interinter_compound_motion_search(cpi, x, cur_mv, bsize, this_mode); @@ -1076,13 +1068,13 @@ static int64_t masked_compound_type_rd( av2_build_wedge_inter_predictor_from_buf_y(xd, bsize, pred0, stride, pred1, stride); } - // Get the RD cost from model RD + // Get the RD cost from model RD. model_rd_sb_fn[MODELRD_TYPE_MASKED_COMPOUND]( cpi, bsize, x, xd, 0, 0, &rate_sum, &dist_sum, &tmp_skip_txfm_sb, &tmp_skip_sse_sb, NULL, NULL, NULL); rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + rate_sum, dist_sum); *comp_model_rd_cur = rd; - // Override with best if current is worse than best for new MV + // Override with best if current is worse than best for new MV. if (wedge_newmv_search) { if (rd >= best_rd_cur) { mbmi->mv[0].as_int = cur_mv[0].as_int; @@ -1101,7 +1093,7 @@ static int64_t masked_compound_type_rd( *comp_model_rd_cur = INT64_MAX; return INT64_MAX; } - // Compute RD cost for the current type + // Compute RD cost for the current type. RD_STATS rd_stats; const int64_t tmp_mode_rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv, 0); @@ -1110,25 +1102,25 @@ static int64_t masked_compound_type_rd( if (rd != INT64_MAX) { rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + rd_stats.rate, rd_stats.dist); - // Backup rate and distortion for future reuse + // Backup rate and distortion for future reuse. backup_stats(compound_type, comp_stats, rate_sum, dist_sum, &rd_stats, *comp_type_rate); } } else { - // Reuse data as matching record is found + // Reuse data as matching record is found. const CompTypeRdStats *const cur_stats = &comp_stats[compound_type]; assert(cur_stats->dist != INT64_MAX); // When disable_interinter_wedge_newmv_search is set, motion refinement is - // disabled. Hence rate and distortion can be reused in this case as well + // disabled. Hence rate and distortion can be reused in this case as well. assert(IMPLIES(have_newmv_in_inter_mode(this_mode), cpi->sf.inter_sf.disable_interinter_wedge_newmv_search)); assert(mbmi->mv[0].as_int == cur_mv[0].as_int); assert(mbmi->mv[1].as_int == cur_mv[1].as_int); *out_rate_mv = rate_mv; - // Calculate RD cost based on stored stats + // Calculate RD cost based on stored stats. rd = RDCOST(x->rdmult, *comp_type_rate + *out_rate_mv + cur_stats->rate, cur_stats->dist); - // Recalculate model rdcost with the updated rate + // Recalculate model rdcost with the updated rate. *comp_model_rd_cur = RDCOST( x->rdmult, *comp_type_rate + *out_rate_mv + cur_stats->model_rate, cur_stats->model_dist); @@ -1136,8 +1128,8 @@ static int64_t masked_compound_type_rd( return rd; } -// scaling values to be used for gating wedge/compound segment based on best -// approximate rd +// Scaling values to be used for gating wedge/compound segment based on best +// approximate rd. static int masked_rd_threshold_mul[3] = { 1, 11, 12 }; static int masked_rd_threshold_div[3] = { 3, 16, 16 }; From 772a9d9fb3383fb909126d2c2663ae8841639830 Mon Sep 17 00:00:00 2001 From: Jerome Date: Fri, 21 Aug 2026 13:51:28 -0400 Subject: [PATCH 195/205] Set default configuration for realtime usage (--rt) (#5299) Add default extra and encoder configuration options for AVM_USAGE_REALTIME in av2/av2_cx_iface.c to match standard RTC encoding defaults, and simplify test/rtc_test.cc to use the new defaults. Setting `--rt` in the `avmenc` command line applies standard Realtime (RTC) defaults equivalent to: --bit-depth=8 --passes=1 --lag-in-frames=0 --auto-alt-ref=0 --enable-tpl-model=0 \ --enable-keyframe-filtering=0 --enable-deblocking=1 --enable-restoration=0 \ --enable-intra-edge-filter=0 --enable-flip-idtx=1 --enable-masked-comp=0 \ --enable-onesided-comp=0 --enable-interintra-comp=0 --enable-smooth-interintra=0 \ --enable-diff-wtd-comp=0 --enable-interinter-wedge=0 --enable-interintra-wedge=0 \ --enable-global-motion=0 --enable-warped-motion=0 --enable-smooth-intra=0 \ --enable-paeth-intra=0 --enable-cfl-intra=0 --force-video-mode=1 --enable-overlay=0 \ --enable-angle-delta=0 --enable-trellis-quant=0 --enable-qm=0 --use-intra-dct-only=1 \ --coeff-cost-upd-freq=2 --mode-cost-upd-freq=2 --mv-cost-upd-freq=3 --frame-parallel=0 \ --aq-mode=0 --deltaq-mode=0 --frame-boost=0 --noise-sensitivity=0 --cdf-update-mode=1 \ --reduced-reference-set=1 --enable-ref-frame-mvs=0 --erp-pruning-level=0 \ --use-ml-erp-pruning=0 --enable-ext-partitions=0 --enable-mrls=0 --enable-pc-wiener=0 \ --enable-wiener-nonsep=0 --enable-tip=0 --enable-bawp=0 --enable-cwp=0 \ --enable-imp-msk-bld=0 --enable-ist=0 --enable-inter-ist=0 --enable-inter-ddt=0 \ --enable-cctx=0 --enable-ibp=0 --max-drl-refmvs=0 --max-drl-refbvs=0 --enable-refmvbank=0 \ --enable-opfl-refine=0 --enable-ccso=0 --enable-lf-sub-pu=0 --enable-adaptive-mvd=0 \ --enable-flex-mvres=0 --enable-joint-mvd=0 --enable-refinemv=0 --enable-mvd-sign-derive=0 \ --enable-parity-hiding=0 --enable-warp-delta=0 --enable-warp-extend=0 --tile-columns=0 \ --gf-min-pyr-height=0 --gf-max-pyr-height=0 --enable-sdp=0 --min-gf-interval=8 \ --max-gf-interval=8 --explicit-ref-frame-map=1 --enable-bru=0 --enable-ext-seg=0 \ --enable-six-param-warp-delta=0 --enable-cdef=1 --enable-cdef-on-skip-txfm=0 \ --dpb-size=8 --use-inter-dct-only=0 --enable-fsc=1 --enable-idtx-intra=1 \ --enable-palette=1 --enable-intrabc-ext=0 --enable-intrabc=1 --cpu-used=6 \ --enable-gdf=0 --max-reference-frames=3 --- av2/av2_cx_iface.c | 384 +++++++++++++++++++++++++++++++++++++-------- test/rtc_test.cc | 70 --------- 2 files changed, 315 insertions(+), 139 deletions(-) diff --git a/av2/av2_cx_iface.c b/av2/av2_cx_iface.c index 162b6ca037..5a4587caf9 100644 --- a/av2/av2_cx_iface.c +++ b/av2/av2_cx_iface.c @@ -577,6 +577,207 @@ static struct av2_extracfg default_extra_cfg = { 0, // force_deferred_frames_for_ras_test 0, // enable_low_complexity_decode }; + +static struct av2_extracfg default_extra_cfg_rt = { + .cpu_used = 6, + .enable_auto_alt_ref = 0, + .enable_auto_bwd_ref = 0, + .noise_sensitivity = 0, + .sharpness = 0, + .static_thresh = 0, + .row_mt = 0, + .tile_columns = 0, + .tile_rows = 0, + .enable_tpl_model = 0, + .enable_keyframe_filtering = 0, + .arnr_max_frames = 7, + .arnr_strength = 5, + .min_gf_interval = 8, + .max_gf_interval = 8, + .gf_min_pyr_height = 0, + .gf_max_pyr_height = 0, + .tuning = AVM_TUNE_PSNR, + .subgop_config_str = NULL, + .subgop_config_path = NULL, + .qp = 40, + .rc_max_intra_bitrate_pct = 0, + .rc_max_inter_bitrate_pct = 0, + .gf_cbr_boost_pct = 0, + .lossless = 0, + .enable_deblocking = 1, + .enable_cdef = 1, + .enable_gdf = 0, + .gdf_unit_matches_sb = 0, + .enable_restoration = 0, + .enable_pc_wiener = 0, + .enable_wiener_nonsep = 0, + .enable_ccso = 0, + .ccso_unit_matches_sb = 0, + .enable_band_metadata = 0, + .enable_lf_sub_pu = 0, + .force_video_mode = 1, + .enable_trellis_quant = 0, + .enable_qm = 0, + .qm_y = DEFAULT_QM_Y, + .qm_u = DEFAULT_QM_U, + .qm_v = DEFAULT_QM_V, + .qm_min = DEFAULT_QM_FIRST, + .qm_max = DEFAULT_QM_LAST, + .user_defined_qmatrix = 0, + .frame_multi_qmatrix_unit_test = 0, + .sef_with_order_hint_test = 0, + .multi_seq_header_test = 0, + .num_tg = 1, + .mtu_size = 0, + .timing_info_type = AVM_TIMING_UNSPECIFIED, + .frame_parallel_decoding_mode = 0, + .enable_chroma_deltaq = 0, + .aq_mode = NO_AQ, + .deltaq_mode = DELTA_Q_OBJECTIVE, + .frame_periodic_boost = 0, + .bit_depth = AVM_BITS_8, + .content = AVM_CONTENT_DEFAULT, + .color_primaries = AVM_CICP_CP_UNSPECIFIED, + .transfer_characteristics = AVM_CICP_TC_UNSPECIFIED, + .matrix_coefficients = AVM_CICP_MC_UNSPECIFIED, + .chroma_sample_position = AVM_CSP_UNSPECIFIED, + .color_range = 0, + .render_width = 0, + .render_height = 0, + .superblock_size = AVM_SUPERBLOCK_SIZE_DYNAMIC, + .enable_sframe = 0, + .film_grain_test_vector = 0, + .film_grain_table_filename = 0, + .film_grain_block_size = 0, + .motion_vector_unit_test = 0, + .cdf_update_mode = 1, + .disable_ml_partition_speed_features = 1, + .erp_pruning_level = 0, + .use_ml_erp_pruning = 0, + .enable_ext_partitions = 0, + .enable_tx_partition = 1, + .enable_rect_partitions = 1, + .enable_uneven_4way_partitions = 1, + .max_partition_aspect_ratio = 8, + .disable_ml_transform_speed_features = 0, + .enable_sdp = 0, + .enable_extended_sdp = 0, + .enable_mrls = 0, + .enable_tip = 0, + .enable_tip_refinemv = 0, + .enable_mv_traj = 0, + .enable_high_motion = 0, + .enable_bawp = 0, + .enable_cwp = 0, + .enable_imp_msk_bld = 0, + .enable_fsc = 1, + .enable_idtx_intra = 1, + .enable_ist = 0, + .enable_inter_ist = 0, + .enable_chroma_dctonly = 0, + .enable_inter_ddt = 0, + .enable_cctx = 0, + .enable_ibp = 0, + .enable_adaptive_mvd = 0, + .enable_flex_mvres = 0, + .select_cfl_ds_filter = 3, + .enable_joint_mvd = 0, + .enable_refinemv = 0, + .enable_mvd_sign_derive = 0, + .min_partition_size = 4, + .max_partition_size = 256, + .enable_intra_edge_filter = 0, + .reduced_tx_part_set = 0, + .enable_flip_idtx = 1, + .max_reference_frames = 3, + .enable_reduced_reference_set = 1, + .explicit_ref_frame_map = 1, + .add_sef_for_hidden_frames = 0, + .monotonic_output_order = 0, + .enable_ref_frame_mvs = 0, + .reduced_ref_frame_mvs_mode = 0, + .allow_ref_frame_mvs = 0, + .enable_masked_comp = 0, + .enable_onesided_comp = 0, + .enable_interintra_comp = 0, + .enable_smooth_interintra = 0, + .enable_diff_wtd_comp = 0, + .enable_interinter_wedge = 0, + .enable_interintra_wedge = 0, + .enable_global_motion = 0, + .enable_skip_mode = 0, + .enable_warped_motion = 0, + .enable_warp_causal = 0, + .enable_warp_delta = 0, + .enable_six_param_warp_delta = 0, + .enable_warp_extend = 0, + .enable_intra_dip = 0, + .enable_smooth_intra = 0, + .enable_paeth_intra = 0, + .enable_cfl_intra = 0, + .enable_mhccp = 0, + .enable_overlay = 0, + .enable_palette = 1, + .enable_intrabc = !CONFIG_SHARP_SETTINGS, + .enable_intrabc_ext = 0, + .enable_angle_delta = 0, + .enable_opfl_refine = AVM_OPFL_REFINE_NONE, +#if CONFIG_DENOISE + .noise_level = 0, + .noise_block_size = 32, +#endif + .chroma_subsampling_x = 0, + .chroma_subsampling_y = 0, + .reduced_tx_type_set = 0, + .use_intra_dct_only = 1, + .use_inter_dct_only = 0, + .use_intra_default_tx_only = 0, + .quant_b_adapt = 0, + .vbr_corpus_complexity_lap = 0, + .target_seq_level_idx = { + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + SEQ_LEVEL_MAX, SEQ_LEVEL_MAX, + }, + .tier_mask = 0, + .min_cr = 0, + .coeff_cost_upd_freq = (COST_UPDATE_TYPE)2, + .mode_cost_upd_freq = (COST_UPDATE_TYPE)2, + .mv_cost_upd_freq = (COST_UPDATE_TYPE)3, + .sb_multipass_unit_test = 0, + .enable_subgop_stats = 0, + .max_drl_refmvs = 0, + .max_drl_refbvs = 0, + .enable_refmvbank = 0, + .enable_drl_reorder = 0, + .enable_cdef_on_skip_txfm = 0, + .enable_avg_cdf = 1, + .avg_cdf_type = 1, + .enable_parity_hiding = 0, + .enable_short_refresh_frame_flags = 1, + .enable_ext_seg = 0, + .dpb_size = 8, + .enable_bru = 0, + .disable_loopfilters_across_tiles = 0, + .enable_cropping_window = 0, + .crop_win_left_offset = 0, + .crop_win_right_offset = 0, + .crop_win_top_offset = 0, + .crop_win_bottom_offset = 0, + .scan_type_info_present_flag = 0, + .enable_mfh_obu_signaling = 0, + .operating_points_count = 1, + .cross_frame_cdf_init_mode = 1, + .use_buffer_refresh_multi_layers_test = 0, + .buffer_refresh_multi_layers_test = { 0 }, + .multi_layers_lag_test = 0, + .force_deferred_frames_for_ras_test = 0, + .enable_low_complexity_decode = 0, +}; // clang-format on struct avm_codec_alg_priv { @@ -2856,7 +3057,11 @@ static avm_codec_err_t encoder_init(avm_codec_ctx_t *ctx) { ctx->config.enc = &priv->cfg; } - priv->extra_cfg = default_extra_cfg; + if (priv->cfg.g_usage == AVM_USAGE_REALTIME) { + priv->extra_cfg = default_extra_cfg_rt; + } else { + priv->extra_cfg = default_extra_cfg; + } avm_once(av2_initialize_enc); res = validate_config(priv, &priv->cfg, &priv->extra_cfg); @@ -4936,7 +5141,7 @@ static const avm_codec_enc_cfg_t encoder_usage_cfg[] = { SCALE_NUMERATOR, // rc_resize_denominator SCALE_NUMERATOR, // rc_resize_kf_denominator - AVM_VBR, // rc_end_usage + AVM_CBR, // rc_end_usage { NULL, 0 }, // rc_firstpass_mb_stats_in 256, // rc_target_bandwidth 0, // rc_min_quantizer @@ -4977,73 +5182,114 @@ static const avm_codec_enc_cfg_t encoder_usage_cfg[] = { 0, // frame_hash_per_plane; 0, // use_short_metadata; { - 0, // init_by_cfg_file - 128, // superblock_size - 128, // max_partition_size - 4, // min_partition_size - 1, // enable_rect_partitions - 1, // enable_uneven_4way_partitions - 1, // disable_ml_partition_speed_features - 5, // erp_pruning_level - 0, // use_ml_erp_pruning - 1, // enable_ext_partitions - 1, // enable_tx_partition - 8, // max_partition_aspect_ratio - 0, 1, 1, /*extended sdp*/ 1, - 1, - 1, // enable RefineMv and OPFL for TIP - 1, // MV traj - 0, // enable_high_motion - 1, 1, 1, 1, - 1, // enable idtx intra for fsc is disabled case - 1, - 1, // IST - 1, // inter IST - 0, // chroma DCT only - 1, // inter DDT - 1, // enable_cctx - 1, 1, 1, - 3, // select_cfl_ds - 1, 1, 1, 1, - 1, 1, 1, 0, - 1, 1, 1, 1, - 0, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 0, 0, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, - 0, // reduced_tx_part_set - 1, 1, 1, 1, - 3, 1, - 0, // reduced_ref_frame_mvs_mode - 1, // enable_reduced_reference_set - 0, // explicit_ref_frame_map - 0, // add_sef_for_hidden_frames - 0, // monotonic_output_order - 0, // reduced_tx_type_set - 0, // max_drl_refmvs - - 0, // max_drl_refbvs - 1, 1, 1, - 1, // enable_avg_cdf - 1, // avg_cdf_type - 1, - 1, // enable_short_refresh_frame_flags - 0, // enable_ext_seg - 8, // dpb_size - 0, // enable_bru - 0, // disable_loopfilters_across_tiles - 0, // enable cropping window - 0, // crop_win_left_offset - 0, // crop_win_right_offset - 0, // crop_win_top_offset - 0, // crop_win_bottom_offset - NULL, 0, 0, - 0, // enable_mfh_obu_signaling - 1, - 0, // enable_low_complexity_decode - }, // cfg + .init_by_cfg_file = 0, + .superblock_size = 128, + .max_partition_size = 128, + .min_partition_size = 4, + .enable_rect_partitions = 1, + .enable_uneven_4way_partitions = 1, + .disable_ml_partition_speed_features = 1, + .erp_pruning_level = 0, + .use_ml_erp_pruning = 0, + .enable_ext_partitions = 0, + .enable_tx_partition = 1, + .max_partition_aspect_ratio = 8, + .disable_ml_transform_speed_features = 0, + .enable_sdp = 0, + .enable_extended_sdp = 0, + .enable_mrls = 0, + .enable_tip = 0, + .enable_tip_refinemv = 0, + .enable_mv_traj = 0, + .enable_high_motion = 0, + .enable_bawp = 0, + .enable_cwp = 0, + .enable_imp_msk_bld = 0, + .enable_fsc = 1, + .enable_idtx_intra = 1, + .enable_ist = 0, + .enable_inter_ist = 0, + .enable_chroma_dctonly = 0, + .enable_inter_ddt = 0, + .enable_cctx = 0, + .enable_ibp = 0, + .enable_adaptive_mvd = 0, + .enable_flex_mvres = 0, + .select_cfl_ds_filter = 3, + .enable_joint_mvd = 0, + .enable_refinemv = 0, + .enable_mvd_sign_derive = 0, + .enable_flip_idtx = 1, + .enable_deblocking = 1, + .enable_cdef = 1, + .enable_gdf = 0, + .gdf_unit_matches_sb = 0, + .enable_restoration = 0, + .enable_pc_wiener = 0, + .enable_wiener_nonsep = 0, + .enable_ccso = 0, + .ccso_unit_matches_sb = 0, + .enable_band_metadata = 0, + .enable_lf_sub_pu = 0, + .enable_warped_motion = 0, + .enable_warp_causal = 0, + .enable_warp_delta = 0, + .enable_six_param_warp_delta = 0, + .enable_warp_extend = 0, + .enable_global_motion = 0, + .enable_skip_mode = 0, + .enable_diff_wtd_comp = 0, + .enable_interintra_comp = 0, + .enable_masked_comp = 0, + .enable_onesided_comp = 0, + .enable_palette = 1, + .enable_intrabc = 1, + .enable_intrabc_ext = 0, + .enable_cfl_intra = 0, + .enable_mhccp = 0, + .enable_smooth_intra = 0, + .enable_intra_dip = 0, + .enable_angle_delta = 0, + .enable_opfl_refine = AVM_OPFL_REFINE_NONE, + .enable_intra_edge_filter = 0, + .reduced_tx_part_set = 0, + .enable_smooth_interintra = 0, + .enable_interinter_wedge = 0, + .enable_interintra_wedge = 0, + .enable_paeth_intra = 0, + .enable_trellis_quant = 0, + .enable_ref_frame_mvs = 0, + .reduced_ref_frame_mvs_mode = 0, + .enable_reduced_reference_set = 1, + .explicit_ref_frame_map = 1, + .add_sef_for_hidden_frames = 0, + .monotonic_output_order = 0, + .reduced_tx_type_set = 0, + .max_drl_refmvs = 0, + .max_drl_refbvs = 0, + .enable_refmvbank = 0, + .enable_drl_reorder = 0, + .enable_cdef_on_skip_txfm = 0, + .enable_avg_cdf = 1, + .avg_cdf_type = 1, + .enable_parity_hiding = 0, + .enable_short_refresh_frame_flags = 1, + .enable_ext_seg = 0, + .dpb_size = 8, + .enable_bru = 0, + .disable_loopfilters_across_tiles = 0, + .enable_cropping_window = 0, + .crop_win_left_offset = 0, + .crop_win_right_offset = 0, + .crop_win_top_offset = 0, + .crop_win_bottom_offset = 0, + .icc_data = NULL, + .icc_size = 0, + .scan_type_info_present_flag = 0, + .enable_mfh_obu_signaling = 0, + .operating_points_count = 1, + .enable_low_complexity_decode = 0, + }, // cfg }, }; diff --git a/test/rtc_test.cc b/test/rtc_test.cc index 29eb0b02d1..a39eabbfbc 100644 --- a/test/rtc_test.cc +++ b/test/rtc_test.cc @@ -50,77 +50,7 @@ class RtcTest : public ::libavm_test::CodecTestWithParam, if (video->frame() == 0) { encoder->Control(AV2E_SET_TUNE_CONTENT, tune_content_); encoder->Control(AVME_SET_CPUUSED, 6); - // Other RTC settings, to be updated. - encoder->Control(AVME_SET_ENABLEAUTOALTREF, 0); - encoder->Control(AV2E_SET_ENABLE_KEYFRAME_FILTERING, 0); - encoder->Control(AV2E_SET_ENABLE_RECT_PARTITIONS, 0); - encoder->Control(AV2E_SET_ENABLE_INTRA_EDGE_FILTER, 0); - encoder->Control(AV2E_SET_ENABLE_MASKED_COMP, 0); - encoder->Control(AV2E_SET_ENABLE_ONESIDED_COMP, 0); - encoder->Control(AV2E_SET_ENABLE_INTERINTRA_COMP, 0); - encoder->Control(AV2E_SET_ENABLE_SMOOTH_INTERINTRA, 0); - encoder->Control(AV2E_SET_ENABLE_DIFF_WTD_COMP, 0); - encoder->Control(AV2E_SET_ENABLE_INTERINTER_WEDGE, 0); - encoder->Control(AV2E_SET_ENABLE_INTERINTRA_WEDGE, 0); - encoder->Control(AV2E_SET_ENABLE_GLOBAL_MOTION, 0); - encoder->Control(AV2E_SET_ENABLE_WARPED_MOTION, 0); - encoder->Control(AV2E_SET_ENABLE_SMOOTH_INTRA, 0); - encoder->Control(AV2E_SET_ENABLE_PAETH_INTRA, 0); - encoder->Control(AV2E_SET_ENABLE_CFL_INTRA, 0); - encoder->Control(AV2E_SET_ENABLE_OVERLAY, 0); - encoder->Control(AV2E_SET_QUANT_B_ADAPT, 0); - encoder->Control(AV2E_SET_ENABLE_TPL_MODEL, 0); - encoder->Control(AV2E_SET_FRAME_PERIODIC_BOOST, 0); encoder->Control(AV2E_SET_MAX_REFERENCE_FRAMES, 1); - encoder->Control(AV2E_SET_REDUCED_REFERENCE_SET, 1); - encoder->Control(AV2E_SET_ENABLE_REF_FRAME_MVS, 0); - encoder->Control(AV2E_SET_ENABLE_QM, 0); - encoder->Control(AV2E_SET_ENABLE_ANGLE_DELTA, 0); - encoder->Control(AV2E_SET_ENABLE_RESTORATION, 0); - encoder->Control(AV2E_SET_ENABLE_BRU, 0); - encoder->Control(AV2E_SET_AQ_MODE, 0); - encoder->Control(AV2E_SET_CDF_UPDATE_MODE, 1); - encoder->Control(AV2E_SET_ENABLE_DEBLOCKING, 1); - encoder->Control(AV2E_SET_ENABLE_CDEF, 1); - encoder->Control(AV2E_SET_ENABLE_PALETTE, 1); - encoder->Control(AV2E_SET_ENABLE_INTRABC, 1); - encoder->Control(AV2E_SET_INTRA_DCT_ONLY, 1); - encoder->Control(AV2E_SET_INTER_DCT_ONLY, 1); - encoder->Control(AV2E_SET_FORCE_VIDEO_MODE, 1); - encoder->Control(AV2E_SET_COEFF_COST_UPD_FREQ, 2); - encoder->Control(AV2E_SET_MODE_COST_UPD_FREQ, 2); - encoder->Control(AV2E_SET_MV_COST_UPD_FREQ, 3); - // The following settings don't have codec control assigned yet. - encoder->SetOption("enable-sdp", "0"); - encoder->SetOption("enable-extended-sdp", "0"); - encoder->SetOption("enable-mhccp", "0"); - encoder->SetOption("enable-mrls", "0"); - encoder->SetOption("enable-tip", "0"); - encoder->SetOption("enable-bawp", "0"); - encoder->SetOption("enable-cwp", "0"); - encoder->SetOption("enable-imp-msk-bld", "0"); - encoder->SetOption("enable-ist", "0"); - encoder->SetOption("enable-inter-ist", "0"); - encoder->SetOption("enable-inter-ddt", "0"); - encoder->SetOption("enable-cctx", "0"); - encoder->SetOption("enable-ccso", "0"); - encoder->SetOption("enable-ext-partitions", "0"); - encoder->SetOption("enable-pc-wiener", "0"); - encoder->SetOption("enable-wiener-nonsep", "0"); - encoder->SetOption("enable-ibp", "0"); - encoder->SetOption("enable-refmvbank", "0"); - encoder->SetOption("enable-opfl-refine", "0"); - encoder->SetOption("enable-lf-sub-pu", "0"); - encoder->SetOption("enable-adaptive-mvd", "0"); - encoder->SetOption("enable-flex-mvres", "0"); - encoder->SetOption("enable-joint-mvd", "0"); - encoder->SetOption("enable-refinemv", "0"); - encoder->SetOption("enable-mvd-sign-derive", "0"); - encoder->SetOption("enable-parity-hiding", "0"); - encoder->SetOption("enable-warp-delta", "0"); - encoder->SetOption("enable-warp-extend", "0"); - encoder->SetOption("max-drl-refmvs", "0"); - encoder->SetOption("max-drl-refbvs", "0"); } } From 70b910250f5b0c0fd3700d34f6460840c0760152 Mon Sep 17 00:00:00 2001 From: marpan-max Date: Fri, 21 Aug 2026 10:53:22 -0700 Subject: [PATCH 196/205] Adjust speed features for RTC speed >= 6. (#5300) Set tx_size_search_level = USE_FAST_RD, and add level 3 to restrict_tx_partition_type_search to only test TX_PARTITION_NONE and TX_PARTITION_SPLIT. Also switch cdef_pick_method to CDEF_FAST_SEARCH_LVL3, until the CDEF_PICK_FROM_Q model is further evaluated/improved. Only affects realtime mode speed >= 6. This brings back some quality with small speed loss: on average over rtc set of vga and 720p clips, ~10% bdrate gain with ~4% encoder speed slowdown. This is with the command line settings below with the qp range {70 80 90 100 110 120 130 150 170}: --passes=1 --bit-depth=8 --obu --lag-in-frames=0 --kf-min-dist=1000 --kf-max-dist=1000 --auto-alt-ref=0 --enable-tpl-model=0 --enable-keyframe-filtering=0 --enable-deblocking=1 --enable-restoration=0 --enable-intra-edge-filter=0 --enable-flip-idtx=1 --enable-masked-comp=0 --enable-onesided-comp=0 --enable-interintra-comp=0 --enable-smooth-interintra=0 --enable-diff-wtd-comp=0 --enable-interinter-wedge=0 --enable-interintra-wedge=0 --enable-global-motion=0 --enable-warped-motion=0 --enable-smooth-intra=0 --enable-paeth-intra=0 --enable-cfl-intra=0 --force-video-mode=1 --enable-overlay=0 --enable-angle-delta=0 --enable-trellis-quant=0 --enable-qm=0 --use-intra-dct-only=1 --coeff-cost-upd-freq=2 --mode-cost-upd-freq=2 --mv-cost-upd-freq=3 --frame-parallel=0 --aq-mode=0 --deltaq-mode=0 --frame-boost=0 --noise-sensitivity=0 --cdf-update-mode=1 --reduced-reference-set=1 --enable-ref-frame-mvs=0 --erp-pruning-level=0 --use-ml-erp-pruning=0 --enable-ext-partitions=0 --enable-mrls=0 --enable-pc-wiener=0 --enable-wiener-nonsep=0 --enable-tip=0 --enable-bawp=0 --enable-cwp=0 --enable-imp-msk-bld=0 --enable-ist=0 --enable-inter-ist=0 --enable-inter-ddt=0 --enable-cctx=0 --enable-ibp=0 --max-drl-refmvs=0 --max-drl-refbvs=0 --enable-refmvbank=0 --enable-opfl-refine=0 --enable-ccso=0 --enable-lf-sub-pu=0 --enable-adaptive-mvd=0 --enable-flex-mvres=0 --enable-joint-mvd=0 --enable-refinemv=0 --enable-mvd-sign-derive=0 --enable-parity-hiding=0 --enable-warp-delta=0 --enable-warp-extend=0 --tile-columns=0 --gf-min-pyr-height=0 --gf-max-pyr-height=0 --end-usage=q --use-fixed-qp-offsets=0 --psnr --threads=1 --enable-sdp=0 --min-gf-interval=8 --max-gf-interval=8 --explicit-ref-frame-map=0 --enable-bru=0 --enable-ext-seg=0 --enable-six-param-warp-delta=0 --enable-cdef=1 --enable-cdef-on-skip-txfm=0 --dpb-size=8 --use-inter-dct-only=0 --enable-fsc=1 --enable-idtx-intra=1 --enable-palette=1 --enable-intrabc-ext=0 --enable-intrabc=0 --tune-content=0 --rt --cpu-used=6 --enable-gdf=0 --max-reference-frames=3 --max-q=qp ---min-q=qp --- av2/encoder/speed_features.c | 5 +++-- av2/encoder/speed_features.h | 6 +++++- av2/encoder/tx_search.c | 10 ++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 49b185f746..0db9cef25c 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -721,14 +721,15 @@ static void set_rt_speed_features_framesize_independent( sf->hl_sf.frame_parameter_update = 0; sf->hl_sf.recode_loop = DISALLOW_RECODE; sf->lpf_sf.lpf_pick = LPF_PICK_FROM_Q; - sf->lpf_sf.cdef_pick_method = CDEF_PICK_FROM_Q; + sf->lpf_sf.cdef_pick_method = CDEF_FAST_SEARCH_LVL3; sf->mv_sf.search_method = DIAMOND; sf->part_sf.partition_pruning_with_mlp = 0; sf->part_sf.partition_search_type = VAR_BASED_PARTITION; sf->rd_sf.tx_domain_dist_thres_level = 2; sf->rt_sf.use_nonrd_partition = 1; sf->rt_sf.use_only_dc_intra_interframe = true; - sf->winner_mode_sf.tx_size_search_level = USE_LARGESTALL; + sf->winner_mode_sf.tx_size_search_level = USE_FAST_RD; + sf->tx_sf.restrict_tx_partition_type_search = 3; } } diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 0598322605..5c1e6ae8a6 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -930,7 +930,11 @@ typedef struct TX_SPEED_FEATURES { // or equal to BLOCK_16X16. bool use_largest_tx_size_for_small_bsize; - // tx_type search pruning at low qp and resolution >= 1080p + // Restrict transform partition type search: + // 0: no restriction + // 1: prune HORZ4/VERT4 unless HORZ/VERT is best + // 2: prune HORZ5/VERT5 unless HORZ4/VERT4 is best + // 3: disallow all but NONE and SPLIT. int restrict_tx_partition_type_search; // Prune RD evaluation of transform block using RD Cost of NONE transform diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 256f900960..2b6b4a6421 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -3357,6 +3357,11 @@ static void select_tx_partition_type( if (type >= TX_PARTITION_HORZ4 && !is_rect) { continue; } + + if (cpi->sf.tx_sf.restrict_tx_partition_type_search >= 3 && + type >= TX_PARTITION_HORZ) { + continue; + } } RD_STATS partition_rd_stats; @@ -3693,6 +3698,11 @@ static void choose_tx_size_type_from_rd(const AV2_COMP *const cpi, if (type >= TX_PARTITION_HORZ4 && !is_rect) { continue; } + + if (cpi->sf.tx_sf.restrict_tx_partition_type_search >= 3 && + type >= TX_PARTITION_HORZ) { + continue; + } } RD_STATS this_rd_stats; From b0d3d3124aaa5920193d80734d3f3a37d40eb42c Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:26:26 -0700 Subject: [PATCH 197/205] Promote tx stat pruning to Speed 3 (#5282) Promote tx stat pruning to Speed 3 The speed feature was at speed 4. Enabling the speed feature at speed 3 shows encoder speed up with acceptable coding loss. New test on top of base commit [5d628d8](https://github.com/AOMediaCodec/avm/commit/5d628d840b84be2eef1d0b1e2b7353719cc1f92a) Speed 3 Testset PSNR-YUV EncSpeedUp Ratio A1 (17 frames) 0.14% 8.28% 59.1 A2 (33 frames) 0.17% 6.53% 38.4 Original test on top of base commit https://github.com/AOMediaCodec/avm/commit/fe1bfdee5427ea2e01149c5ebce904084a93ba79 Performance on RA speed 3 Testset PSNR-YUV EncSpeedUp A1 (17 frames) 0.15% 6.55% A2 (33 frames) 0.22% 5.68% Besides, we tested the speed feature at speed 2, it does not meet the bar for A1. Performance on RA speed 2 Testset PSNR-YUV EncSpeedUp A1 (17 frames) 0.16% 4.02% A2 (33 frames) 0.13% 4.46% STATS_CHANGED --- av2/encoder/speed_features.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 0db9cef25c..8cbe2dfbd1 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -217,6 +217,10 @@ static void set_good_speed_feature_framesize_dependent( sf->part_sf.partition_search_breakout_dist_thr = (1 << 23); sf->part_sf.partition_search_breakout_rate_thr = 120; } + + if (is_480p_or_larger) { + sf->tx_sf.tx_type_search.prune_tx_type_using_stats = 1; + } } if (speed >= 4) { @@ -226,10 +230,6 @@ static void set_good_speed_feature_framesize_dependent( sf->part_sf.partition_search_breakout_dist_thr = (1 << 24); } - if (is_480p_or_larger) { - sf->tx_sf.tx_type_search.prune_tx_type_using_stats = 1; - } - // On small resolutions (<=360p), keep the smallest RU size available at // deep pyramid levels by disabling drop_low. if (AVMMIN(cm->width, cm->height) <= 360) { From 55d02ed89f052f388cb4c66785e0520c9d2cc53f Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Mon, 24 Aug 2026 09:10:25 -0700 Subject: [PATCH 198/205] Reduce intra mode top count to 3 for speed 3 and 4 (#5289) By reducing the number of candidates, we achieve a considerable speed up with accepted coding loss. Result of reducing the count to 3 for speed 4: TestSet PSNR-YUV EncTime Ratio A1 (17 frames) 0.10% 96.70% 34.1 A2 (33 frames) 0.07% 96.81% 47.0 Result of reducing the count to 3 for speed 3: TestSet PSNR-YUV EncTime Ratio A1 (17 frames) 0.11% 96.87% 29.4 A2 (33 frames) 0.09% 96.41% 41.3 If we reduce the count to 2 The speedup/loss ratio is good for A2, but not good enough for A1. On speed 4, RA, the performance is: TestSet PSNR-YUV EncTime Ratio A1 (17 frames) 0.41% 92.76% 19.0 A2 (33 frames) 0.19% 93.44% 36.9 STATS_CHANGED --- av2/common/pred_common.c | 8 +++++--- av2/encoder/encodeframe_utils.h | 5 +++-- av2/encoder/speed_features.c | 3 +++ av2/encoder/speed_features.h | 3 +++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/av2/common/pred_common.c b/av2/common/pred_common.c index a5d797ea7f..fc97b1e862 100644 --- a/av2/common/pred_common.c +++ b/av2/common/pred_common.c @@ -798,12 +798,13 @@ int av2_get_cdef_context(const AV2_COMMON *const cm, const int block_mask = ~(cdef_size - 1); const CommonModeInfoParams *const mi_params = &cm->mi_params; + const TileInfo *const tile = &xd->tile; const int mi_row = xd->mi_row; const int mi_col = xd->mi_col; const int left_cdef_mi_col = mi_col - cdef_size; MB_MODE_INFO *neighbor0 = NULL; - if (left_cdef_mi_col >= 0) { + if (left_cdef_mi_col >= tile->mi_col_start) { const int left_grid_idx = get_mi_grid_idx(mi_params, mi_row & block_mask, left_cdef_mi_col & block_mask); neighbor0 = mi_params->mi_grid_base[left_grid_idx]; @@ -811,8 +812,9 @@ int av2_get_cdef_context(const AV2_COMMON *const cm, const int above_cdef_mi_row = mi_row - cdef_size; MB_MODE_INFO *neighbor1 = NULL; - if (above_cdef_mi_row >= 0 && (mi_row >> cm->mib_size_log2) == - (above_cdef_mi_row >> cm->mib_size_log2)) { + if (above_cdef_mi_row >= tile->mi_row_start && + (mi_row >> cm->mib_size_log2) == + (above_cdef_mi_row >> cm->mib_size_log2)) { const int above_grid_idx = get_mi_grid_idx( mi_params, above_cdef_mi_row & block_mask, mi_col & block_mask); neighbor1 = mi_params->mi_grid_base[above_grid_idx]; diff --git a/av2/encoder/encodeframe_utils.h b/av2/encoder/encodeframe_utils.h index c0da1810d1..3787cb3b2e 100644 --- a/av2/encoder/encodeframe_utils.h +++ b/av2/encoder/encodeframe_utils.h @@ -198,8 +198,9 @@ static AVM_INLINE void av2_set_two_pass_flags( x->inter_mode_prune_top = 4; } else { // Full pool. - x->intra_mode_prune_top = - cpi->sf.intra_sf.intra_pruning_with_mlp ? 4 : TOP_INTRA_MODEL_COUNT; + x->intra_mode_prune_top = cpi->sf.intra_sf.intra_pruning_with_mlp + ? cpi->sf.intra_sf.intra_mode_prune_top + : TOP_INTRA_MODEL_COUNT; x->inter_mode_prune_top = TOP_MOTION_MODE_MODEL_COUNT; } } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 8cbe2dfbd1..0f8eb0b5ea 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -372,6 +372,7 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.prune_interintra_by_ref_idx = 1; sf->inter_sf.prune_warp_delta_by_ref_idx = 1; sf->intra_sf.intra_pruning_with_mlp = 1; + sf->intra_sf.intra_mode_prune_top = 4; sf->inter_sf.prune_comp_mode_eval_using_est_rd = true; sf->inter_sf.prune_warp_newmv_ref_mv_idx = true; @@ -553,6 +554,7 @@ static void set_good_speed_features_framesize_independent( // sf->intra_sf.disable_smooth_intra = // !frame_is_intra_only(&cpi->common) || (cpi->rc.frames_to_key != 1); sf->intra_sf.prune_palette_search_level = 2; + sf->intra_sf.intra_mode_prune_top = 3; sf->tpl_sf.prune_ref_frames_in_tpl = 1; sf->tpl_sf.skip_alike_starting_mv = 2; @@ -927,6 +929,7 @@ static AVM_INLINE void init_intra_sf(INTRA_MODE_SPEED_FEATURES *intra_sf) { intra_sf->skip_intra_in_interframe = 1; intra_sf->intra_pruning_with_hog = 0; intra_sf->intra_pruning_with_mlp = 0; + intra_sf->intra_mode_prune_top = TOP_INTRA_MODEL_COUNT; intra_sf->src_var_thresh_intra_skip = 1; intra_sf->prune_palette_search_level = 0; intra_sf->reuse_uv_mode_rd_info = false; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 5c1e6ae8a6..f55f96890f 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -894,6 +894,9 @@ typedef struct INTRA_MODE_SPEED_FEATURES { bool include_dip_for_top_n_model_rd_pruning; bool skip_intra_dip_search; + + // Number of top intra mode candidates to keep during model RD pruning. + int intra_mode_prune_top; } INTRA_MODE_SPEED_FEATURES; typedef struct TX_SPEED_FEATURES { From f41bc1f9306fc48164cf4db0a2638115832befee Mon Sep 17 00:00:00 2001 From: yeqing-wu Date: Mon, 24 Aug 2026 11:19:24 -0700 Subject: [PATCH 199/205] Bound the two-pass wet-pass mode search with the dry pass's rd (#5304) The wet pass starts mode search from an unbounded rd limit, so its pruning cannot bite until it finds a good candidate on its own. Start it instead from the dry pass's rd for the same block and size, plus a margin. The two passes see different contexts, so the bound can be violated. A block left with no valid mode is re-searched once with the original limit. Anchor: commit c77f169 Speed 4 (cpu-used=4): FG16 CTC (33 frames, class A1 and A2, RA) ``` +------------+-------+-------+-------+-------+------+------+ | Class | Y | Cb | Cr | wAvg | Enc% | Dec% | +------------+-------+-------+-------+-------+------+------+ | A1 | -0.30 | -0.29 | -0.38 | -0.30 | 100 | 100 | | A2 | -0.17 | 0.07 | 0.31 | -0.15 | 101 | 100 | | Avg w/o B2 | -0.21 | -0.04 | 0.11 | -0.19 | 100 | 100 | +------------+-------+-------+-------+-------+------+------+ ``` STATS_CHANGED --- av2/encoder/block.h | 21 ++++++++ av2/encoder/encodeframe.c | 3 ++ av2/encoder/encodeframe_utils.h | 1 + av2/encoder/partition_search.c | 86 ++++++++++++++++++++++++++++++++- 4 files changed, 109 insertions(+), 2 deletions(-) diff --git a/av2/encoder/block.h b/av2/encoder/block.h index efcb772cd1..2c76bf7894 100644 --- a/av2/encoder/block.h +++ b/av2/encoder/block.h @@ -30,6 +30,19 @@ extern "C" { #endif +/*! \brief Granularity of the dry-pass rd grid, in mi units (log2): 16x16 px. */ +#define TWO_PASS_DRY_RD_UNIT_LOG2 2 +/*! \brief Side of the dry-pass rd grid, in units. */ +#define TWO_PASS_DRY_RD_SIDE (MAX_MIB_SIZE >> TWO_PASS_DRY_RD_UNIT_LOG2) +/*! \brief Number of positions in the dry-pass rd grid. */ +#define TWO_PASS_DRY_RD_GRID (TWO_PASS_DRY_RD_SIDE * TWO_PASS_DRY_RD_SIDE) +/*! \brief Smallest side, in pixels, the dry pass can produce. */ +#define TWO_PASS_DRY_RD_MIN_1D 16 +/*! \brief Number of block sizes the dry pass can record. */ +#define TWO_PASS_DRY_RD_BSIZES 15 +/*! \brief Number of slots in the dry-pass rd grid. */ +#define TWO_PASS_DRY_RD_SLOTS (TWO_PASS_DRY_RD_GRID * TWO_PASS_DRY_RD_BSIZES) + //! Minimum linear dimension of a tpl block #define MIN_TPL_BSIZE_1D 16 //! Maximum number of tpl block in a super block @@ -1660,6 +1673,14 @@ typedef struct macroblock { * search; gates the block-level dry-pass shortcuts. */ bool apply_dry_pass_shortcuts; + /*! \brief The dry pass's best rdcost per block, or 0 when absent. Indexed by + * dry_pass_rd_slot(). Reset per superblock. */ + int64_t unit_dry_rd[TWO_PASS_DRY_RD_SLOTS]; + + /*! \brief True during the wet pass of the SB-level two-pass partition + * search; gates consumption of any dry-pass side information. */ + bool consume_dry_pass_info; + /*! \brief Cap on top intra Y candidates for full RD. */ int intra_mode_prune_top; diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 31ba04b4e0..3f682b0c1a 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -679,6 +679,9 @@ static AVM_INLINE void perform_two_pass_partition_search( // The dry pass does not go below 16x16: it only needs a rough shape, and it // scores blocks with a reduced set of tools. x->sb_enc.min_partition_size = BLOCK_16X16; + // Drop the previous superblock's dry-pass rd records. The recorded rdcosts + // are in the dry pass's rdmult units, which the wet pass must not recompute. + if (fast_two_pass) av2_zero(x->unit_dry_rd); perform_one_partition_pass(cpi, td, tile_data, tp, tp_chroma, mi_row, mi_col, SB_DRY_PASS, NULL); PARTITION_TREE *part_ref = xd->sbi->ptree_root[0]; diff --git a/av2/encoder/encodeframe_utils.h b/av2/encoder/encodeframe_utils.h index 3787cb3b2e..859ce83a7d 100644 --- a/av2/encoder/encodeframe_utils.h +++ b/av2/encoder/encodeframe_utils.h @@ -185,6 +185,7 @@ static AVM_INLINE void av2_set_two_pass_flags( const bool fast_two_pass = av2_two_pass_part_is_fast(&cpi->sf.part_sf); x->apply_dry_pass_shortcuts = fast_two_pass && (multi_pass_mode == SB_DRY_PASS); + x->consume_dry_pass_info = fast_two_pass && (multi_pass_mode == SB_WET_PASS); const bool is_wet_pass_reuse = (fast_two_pass && multi_pass_mode == SB_WET_PASS && part_search_state && part_search_state->forced_partition != PARTITION_INVALID); diff --git a/av2/encoder/partition_search.c b/av2/encoder/partition_search.c index 34bc31be16..ec698bcc4e 100644 --- a/av2/encoder/partition_search.c +++ b/av2/encoder/partition_search.c @@ -479,6 +479,69 @@ void av2_set_offsets(const AV2_COMP *const cpi, const TileInfo *const tile, } } +// Percent the dry-pass rdcost is inflated by before the wet pass uses it as an +// initial rd limit, to absorb the context drift between the passes. +#define TWO_PASS_WARMSTART_MARGIN_PCT 4 + +// Dense index into unit_dry_rd's size dimension, biased by 1 so 0 means "no +// slot". Only sizes with both sides >= TWO_PASS_DRY_RD_MIN_1D are listed; the +// dry pass cannot produce the rest. +static const int8_t dry_rd_bsize_idx[BLOCK_SIZES_ALL] = { + [BLOCK_16X16] = 1, [BLOCK_16X32] = 2, [BLOCK_32X16] = 3, + [BLOCK_32X32] = 4, [BLOCK_32X64] = 5, [BLOCK_64X32] = 6, + [BLOCK_64X64] = 7, [BLOCK_64X128] = 8, [BLOCK_128X64] = 9, + [BLOCK_128X128] = 10, [BLOCK_16X64] = 11, [BLOCK_64X16] = 12, + [BLOCK_128X256] = 13, [BLOCK_256X128] = 14, [BLOCK_256X256] = 15, +}; + +// Slot for a block in the dry-pass rd grid, or -1 if the dry pass cannot have +// recorded it. The size is checked first, so blocks below the floor cost one +// table lookup. +static AVM_INLINE int dry_pass_rd_slot(BLOCK_SIZE sb_size, int mi_row, + int mi_col, BLOCK_SIZE bsize) { + if (bsize >= BLOCK_SIZES_ALL) return -1; + const int size_idx = dry_rd_bsize_idx[bsize] - 1; + // The table must agree with the real block dimensions. + assert((size_idx >= 0) == (block_size_wide[bsize] >= TWO_PASS_DRY_RD_MIN_1D && + block_size_high[bsize] >= TWO_PASS_DRY_RD_MIN_1D)); + assert(size_idx < TWO_PASS_DRY_RD_BSIZES); + if (size_idx < 0) return -1; + const int gr = + (mi_row & (mi_size_high[sb_size] - 1)) >> TWO_PASS_DRY_RD_UNIT_LOG2; + const int gc = + (mi_col & (mi_size_wide[sb_size] - 1)) >> TWO_PASS_DRY_RD_UNIT_LOG2; + if (gr >= TWO_PASS_DRY_RD_SIDE || gc >= TWO_PASS_DRY_RD_SIDE) return -1; + return (gr * TWO_PASS_DRY_RD_SIDE + gc) * TWO_PASS_DRY_RD_BSIZES + size_idx; +} + +// Record the dry pass's best rdcost for this block. Keyed by position and by +// exact block size: rd cost scales with block area, so a smaller block's rdcost +// is not a valid bound for a larger one. +static AVM_INLINE void record_dry_pass_rd(MACROBLOCK *x, BLOCK_SIZE sb_size, + int mi_row, int mi_col, + BLOCK_SIZE bsize, int64_t rdcost) { + if (rdcost <= 0 || rdcost == INT64_MAX) return; + const int slot_idx = dry_pass_rd_slot(sb_size, mi_row, mi_col, bsize); + if (slot_idx < 0) return; + int64_t *const slot = &x->unit_dry_rd[slot_idx]; + if (*slot == 0 || rdcost < *slot) *slot = rdcost; +} + +// The wet pass's initial rd limit for this block: the dry pass's rdcost plus a +// margin, or 0 when the dry pass has no record for it. +static AVM_INLINE int64_t dry_pass_rd_bound(const MACROBLOCK *x, + BLOCK_SIZE sb_size, int mi_row, + int mi_col, BLOCK_SIZE bsize) { + if (!x->consume_dry_pass_info) return 0; + const int slot_idx = dry_pass_rd_slot(sb_size, mi_row, mi_col, bsize); + if (slot_idx < 0) return 0; + const int64_t rd = x->unit_dry_rd[slot_idx]; + if (rd <= 0) return 0; + // Guard the multiply against overflow on very large rd values. + if (rd > INT64_MAX / (100 + TWO_PASS_WARMSTART_MARGIN_PCT)) return 0; + return rd * (100 + TWO_PASS_WARMSTART_MARGIN_PCT) / 100; +} + /*!\brief Interface for AV2 mode search for an individual coding block * * \ingroup partition_search @@ -665,8 +728,27 @@ static void pick_sb_modes(AV2_COMP *const cpi, ThreadData *td, av2_rd_pick_inter_mode_sb_seg_skip(cpi, tile_data, x, mi_row, mi_col, rd_cost, bsize, ctx, best_rd.rdcost); } else { - av2_rd_pick_inter_mode_sb(cpi, tile_data, x, rd_cost, bsize, ctx, - best_rd.rdcost); + // Wet pass: start from the dry pass's rd for this block plus a margin, so + // pruning bites from the first candidate. The bound can be violated + // because the two passes see different contexts, so if it leaves the + // block with no valid mode the search is re-run once with the original + // limit. + const int64_t warmstart_bound = + dry_pass_rd_bound(x, cm->sb_size, mi_row, mi_col, bsize); + const bool warmstart_applied = + warmstart_bound > 0 && warmstart_bound < best_rd.rdcost; + av2_rd_pick_inter_mode_sb( + cpi, tile_data, x, rd_cost, bsize, ctx, + warmstart_applied ? warmstart_bound : best_rd.rdcost); + if (warmstart_applied && rd_cost->rate == INT_MAX) { + av2_rd_pick_inter_mode_sb(cpi, tile_data, x, rd_cost, bsize, ctx, + best_rd.rdcost); + } + } + // Dry pass: record the rd it achieved, to bound the wet pass on this block. + if (x->apply_dry_pass_shortcuts && rd_cost->rate != INT_MAX) { + record_dry_pass_rd(x, cm->sb_size, mi_row, mi_col, bsize, + rd_cost->rdcost); } #if CONFIG_COLLECT_COMPONENT_TIMING end_timing(cpi, av2_rd_pick_inter_mode_sb_time); From a5ab19f6f5e95ef769d91a130a1b01fc8a07bc2b Mon Sep 17 00:00:00 2001 From: kslu Date: Tue, 25 Aug 2026 15:51:05 +0000 Subject: [PATCH 200/205] Conditionally reduce max DRL ref MVs for speeds >= 2 (#5279) - Introduce the reduce_max_drl_refmvs speed feature to reduce the default DRL candidate count from 4 to 3 in higher encode speeds. - Enable frame-level DRL adaptation (allow_frame_max_drl_bits = 1) when reduce_max_drl_refmvs is active: key, boosted, and low pyramid level frames (<= 2) retain 4 candidates (max_drl_bits = 3) to retain reference quality, while leaf frames use 3 candidates (max_drl_bits = 2). - Condition newmv_drl_search_limit on reduce_max_drl_refmvs to ensure both ref_mv_idx 0 and 1 are searched before reusing results, preventing motion predictor diversity collapse. - The existing --max-drl-refmvs CLI flag can override this behavior. Evaluation based on 2abcfff1f9 with 33 frames at speed 2: ``` +---------+--------+--------+--------+--------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+--------+--------+--------+----------+----------+ | A1 | +0.05% | -0.05% | +0.10% | +0.05% | 98.1% | 100.0% | | A2 | +0.08% | +0.27% | -0.03% | +0.08% | 97.5% | 100.5% | +---------+--------+--------+--------+--------+----------+----------+ ``` --- av2/encoder/encoder.c | 6 +++++- av2/encoder/speed_features.c | 14 ++++++++++++++ av2/encoder/speed_features.h | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/av2/encoder/encoder.c b/av2/encoder/encoder.c index 97ebeb6480..cc6ae621bb 100644 --- a/av2/encoder/encoder.c +++ b/av2/encoder/encoder.c @@ -1136,7 +1136,11 @@ static void set_max_drl_bits(struct AV2_COMP *cpi) { cm->features.max_drl_bits = cm->seq_params.def_max_drl_bits; } else { // Can be changed with logic later if (cpi->oxcf.tool_cfg.max_drl_refmvs == 0) { - cm->features.max_drl_bits = DEF_MAX_DRL_REFMVS - 1; + // Spend one fewer DRL bit on low importance frames + const int reduce_drl = cpi->sf.inter_sf.reduce_max_drl_refmvs && + cm->current_frame.pyramid_level > 2 && + !frame_is_kf_gf_arf(cpi); + cm->features.max_drl_bits = DEF_MAX_DRL_REFMVS - 1 - reduce_drl; } else { cm->features.max_drl_bits = cpi->oxcf.tool_cfg.max_drl_refmvs - 1; } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 0f8eb0b5ea..2080ed16b4 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -479,6 +479,13 @@ static void set_good_speed_features_framesize_independent( sf->inter_sf.reuse_inter_intra_mode = 1; sf->inter_sf.selective_ref_frame = 2; sf->inter_sf.skip_repeated_newmv = 1; + sf->inter_sf.reduce_max_drl_refmvs = 1; + if (!allow_screen_content_tools) { + // When reduce_max_drl_refmvs is enabled, keep newmv_drl_search_limit at 2 + // to search both ref_mv_idx 0 and 1 before reusing results, preserving + // motion vector predictor diversity and mitigating coding loss. + sf->mv_sf.newmv_drl_search_limit = 2; + } sf->intra_sf.prune_palette_search_level = 1; @@ -873,6 +880,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->alt_ref_search_fp = 0; inter_sf->disable_switchable_refinemv = 0; inter_sf->reduce_comp_refs = 0; + inter_sf->reduce_max_drl_refmvs = 0; inter_sf->selective_ref_frame = 0; inter_sf->prune_newmv_modes_using_prior_rd = 0; inter_sf->share_motion_mode_prune_pool = 0; @@ -1313,6 +1321,12 @@ void av2_set_speed_features_framesize_independent(AV2_COMP *cpi, int speed) { if (sf->intra_sf.skip_intra_dip_search) { cpi->common.seq_params.enable_intra_dip = 0; } + + if (oxcf->tool_cfg.max_drl_refmvs == 0 && + !cpi->common.seq_params.single_picture_header_flag && + sf->inter_sf.reduce_max_drl_refmvs) { + cpi->common.seq_params.allow_frame_max_drl_bits = 1; + } // Disable tcq modes in sequence header when cpu-used >= 2 if (sf->rd_sf.disable_tcq) { cpi->common.seq_params.enable_tcq = TCQ_DISABLE; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index f55f96890f..862fe4f580 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -647,6 +647,11 @@ typedef struct INTER_MODE_SPEED_FEATURES { // compound reference combinations in priority order. int reduce_comp_refs; + // Reduce max DRL reference MVs signaled for frames at a higher pyramid level + // 0: default (DEF_MAX_DRL_REFMVS - 1) + // 1: reduce by 1 (DEF_MAX_DRL_REFMVS - 2) + int reduce_max_drl_refmvs; + // Prune reference frames for ALTREF int alt_ref_search_fp; From 3c1023516f00b192ce7d3e9babc58eaa7f9fd2df Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Fri, 21 Aug 2026 16:25:15 -0700 Subject: [PATCH 201/205] Temporal filter function optimization Pulled common calculations from the pixel filtering loop and conducted them beforehand. CTC tests showed no stats change. --- av2/encoder/temporal_filter.c | 56 ++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/av2/encoder/temporal_filter.c b/av2/encoder/temporal_filter.c index 67cb98fe42..2e8cf5e680 100644 --- a/av2/encoder/temporal_filter.c +++ b/av2/encoder/temporal_filter.c @@ -695,6 +695,39 @@ void av2_highbd_apply_temporal_filter_c( const int half_window = TF_WINDOW_LENGTH >> 1; // Handle planes in sequence. + const double inv_factor = 1.0 / ((TF_WINDOW_BLOCK_BALANCE_WEIGHT + 1) * + TF_SEARCH_ERROR_NORM_WEIGHT); + const double weight_factor = + (double)TF_WINDOW_BLOCK_BALANCE_WEIGHT * inv_factor; + + // Decay factors for non-local mean approach. + double decay_factor[MAX_MB_PLANE] = { 0 }; + // Smaller q -> smaller filtering weight. + const double q_decay = + CLIP(pow((double)q_factor / TF_Q_DECAY_THRESHOLD, 2), 1e-5, 1); + + // Smaller strength -> smaller filtering weight. + const double s_decay = + CLIP(pow((double)filter_strength / TF_STRENGTH_THRESHOLD, 2), 1e-5, 1); + + for (int plane = 0; plane < num_planes; plane++) { + // Larger noise -> larger filtering weight. + const double n_decay = 0.5 + log(2 * noise_levels[plane] + 5.0); + decay_factor[plane] = 1.0 / (n_decay * q_decay * s_decay); + } + + // Figure out each 16x16 block's d_factor beforehand. + // Number of 16x16 blocks within one 64x64 TF block is 16. + double d_factor[16] = { 0 }; + for (int subblock_idx = 0; subblock_idx < 16; subblock_idx++) { + // Larger motion vector -> smaller filtering weight. + const MV mv = subblock_mvs[subblock_idx]; + const double distance = sqrt(pow(mv.row, 2) + pow(mv.col, 2)); + const double distance_threshold = + (double)AVMMAX(min_frame_size * TF_SEARCH_DISTANCE_THRESHOLD, 1); + d_factor[subblock_idx] = AVMMAX(distance / distance_threshold, 1); + } + plane_offset = 0; for (int plane = 0; plane < num_planes; ++plane) { const int subsampling_y = mbd->plane[plane].subsampling_y; @@ -750,28 +783,11 @@ void av2_highbd_apply_temporal_filter_c( const int subblock_idx = (y32 * 2 + x32) * 4 + (y16 * 2 + x16); const double block_error = (double)subblock_mses[subblock_idx]; const double combined_error = - (TF_WINDOW_BLOCK_BALANCE_WEIGHT * window_error + block_error) / - (TF_WINDOW_BLOCK_BALANCE_WEIGHT + 1) / TF_SEARCH_ERROR_NORM_WEIGHT; - - // Decay factors for non-local mean approach. - // Larger noise -> larger filtering weight. - const double n_decay = 0.5 + log(2 * noise_levels[plane] + 5.0); - // Smaller q -> smaller filtering weight. - const double q_decay = - CLIP(pow((double)q_factor / TF_Q_DECAY_THRESHOLD, 2), 1e-5, 1); - // Smaller strength -> smaller filtering weight. - const double s_decay = CLIP( - pow((double)filter_strength / TF_STRENGTH_THRESHOLD, 2), 1e-5, 1); - // Larger motion vector -> smaller filtering weight. - const MV mv = subblock_mvs[subblock_idx]; - const double distance = sqrt(pow(mv.row, 2) + pow(mv.col, 2)); - const double distance_threshold = - (double)AVMMAX(min_frame_size * TF_SEARCH_DISTANCE_THRESHOLD, 1); - const double d_factor = AVMMAX(distance / distance_threshold, 1); + weight_factor * window_error + block_error * inv_factor; // Compute filter weight. - const double scaled_error = - AVMMIN(combined_error * d_factor / n_decay / q_decay / s_decay, 7); + const double scaled_error = AVMMIN( + combined_error * d_factor[subblock_idx] * decay_factor[plane], 7); const int weight = (int)(exp(-scaled_error) * TF_WEIGHT_SCALE); const int idx = plane_offset + pred_idx; // Index with plane shift. From 60cfe782ee86a49117a81b06352f718691d5ce3e Mon Sep 17 00:00:00 2001 From: chengchen-google <38364020+chengchen-google@users.noreply.github.com> Date: Tue, 25 Aug 2026 10:28:04 -0700 Subject: [PATCH 202/205] Promote the uneven-4-way partition disable to speed 1 (#5305) --- av2/encoder/speed_features.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 2080ed16b4..6cf96e5377 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -132,6 +132,8 @@ static int frame_is_boosted(const AV2_COMP *cpi) { static void set_good_speed_feature_framesize_dependent( const AV2_COMP *const cpi, SPEED_FEATURES *const sf, int speed) { const AV2_COMMON *const cm = &cpi->common; + const int is_270p_or_lesser = + AVMMIN(cpi->common.width, cpi->common.height) <= 270; const int is_480p_or_larger = AVMMIN(cm->width, cm->height) >= 480; const int is_720p_or_larger = AVMMIN(cm->width, cm->height) >= 720; const int is_1080p_or_larger = AVMMIN(cm->width, cm->height) >= 1080; @@ -183,6 +185,9 @@ static void set_good_speed_feature_framesize_dependent( if (!is_4k_or_larger) { sf->mv_sf.prune_mesh_search = 1; } + if (!is_270p_or_lesser) { + sf->part_sf.disable_uneven_4way_partitions = true; + } } if (speed >= 2) { From c39b7f16377e73b5f508fc0714145d3ff942d734 Mon Sep 17 00:00:00 2001 From: deepa-kg Date: Wed, 26 Aug 2026 00:15:42 +0530 Subject: [PATCH 203/205] Add early termination in warp delta refinement (#5309) Added a speed feature to early terminate the warp delta refinement loop if the rate-distortion cost improvement in a pass drops below 5%. Results for RA CTC, A1 17 frames, A2 33 frames, speed 1: (Anchor: 7c9dfbaa287ab6df4613f746bbab4b410853fced) ``` +-----+-------+-------+-------+-------+---------------+ |Class| Y | Cb | Cr | wAvg |EncInstCount(%)| +-----+-------+-------+-------+-------+---------------+ | A2 |-0.0004|-0.0367|-0.2123|-0.0103| 98.93 | | A1 |-0.0649| 0.1274| 0.0844|-0.0513| 98.89 | +-----+-------+-------+-------+-------+---------------+ ``` STATS_CHANGED for speed >= 1 --- av2/encoder/mcomp.c | 21 +++++++++++++-------- av2/encoder/mcomp.h | 12 +++++------- av2/encoder/rdopt.c | 3 ++- av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 3 +++ 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/av2/encoder/mcomp.c b/av2/encoder/mcomp.c index 1df9238b36..a6c964f7df 100644 --- a/av2/encoder/mcomp.c +++ b/av2/encoder/mcomp.c @@ -5202,13 +5202,11 @@ static AVM_INLINE void search_warp_delta_params( // search functions, due to the way that it alternates MV and warp parameter // refinement. Need to revisit this function in phase 2 and revisit whether // there is a good way to do something similar. -int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, - MB_MODE_INFO *mbmi, - const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, - const ModeCosts *mode_costs, - warp_mode_info_array *prev_best_models, - WARP_CANDIDATE *warp_param_stack, - const int fast_decoupled_search) { +int av2_pick_warp_delta( + const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, + const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, + warp_mode_info_array *prev_best_models, WARP_CANDIDATE *warp_param_stack, + const int fast_decoupled_search, bool early_term_warp_delta_refine) { WarpedMotionParams *params = &mbmi->wm_params[0]; const BLOCK_SIZE bsize = mbmi->sb_type[PLANE_TYPE_Y]; int mi_row = xd->mi_row; @@ -5356,6 +5354,7 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, // Refine model, by making a few passes through the available // parameters and trying to increase/decrease them if (!fast_decoupled_search) { + uint64_t best_rd_prev = best_rd; for (int iter = 0; iter < number_of_iterations; iter++) { int center_best_so_far = 1; @@ -5459,9 +5458,15 @@ int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, } } - if (center_best_so_far) { + const int early_terminate_refine = + center_best_so_far || + (early_term_warp_delta_refine && best_rd > 0.95 * best_rd_prev); + + if (early_terminate_refine) { break; } + + best_rd_prev = best_rd; } } else { search_warp_translational_params( diff --git a/av2/encoder/mcomp.h b/av2/encoder/mcomp.h index 5522bf10b6..b744bd23c0 100644 --- a/av2/encoder/mcomp.h +++ b/av2/encoder/mcomp.h @@ -571,13 +571,11 @@ uint8_t need_mv_adjustment(MACROBLOCKD *xd, const AV2_COMMON *const cm, int *num_nonzero_mvd); // Returns 1 if able to select a good model, 0 if not -int av2_pick_warp_delta(const AV2_COMMON *const cm, MACROBLOCKD *xd, - MB_MODE_INFO *mbmi, - const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, - const ModeCosts *mode_costs, - warp_mode_info_array *prev_best_models, - WARP_CANDIDATE *warp_param_stack, - const int fast_decoupled_search); +int av2_pick_warp_delta( + const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, + const SUBPEL_MOTION_SEARCH_PARAMS *ms_params, const ModeCosts *mode_costs, + warp_mode_info_array *prev_best_models, WARP_CANDIDATE *warp_param_stack, + const int fast_decoupled_search, bool early_term_warp_delta_refine); int av2_refine_mv_for_base_param_warp_model( const AV2_COMMON *const cm, MACROBLOCKD *xd, MB_MODE_INFO *mbmi, diff --git a/av2/encoder/rdopt.c b/av2/encoder/rdopt.c index 3d74806445..9a151073a0 100644 --- a/av2/encoder/rdopt.c +++ b/av2/encoder/rdopt.c @@ -2658,7 +2658,8 @@ static AVM_INLINE int handle_warp_delta_mode( valid = av2_pick_warp_delta( cm, xd, mbmi, &ms_params, &x->mode_costs, prev_best_models, mbmi_ext->warp_param_stack[av2_ref_frame_type(mbmi->ref_frame)], - cpi->sf.inter_sf.fast_warp_delta_decoupled_search); + cpi->sf.inter_sf.fast_warp_delta_decoupled_search, + cpi->sf.inter_sf.early_term_warp_delta_refine); } } diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 6cf96e5377..1f9fccc74a 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -380,6 +380,7 @@ static void set_good_speed_features_framesize_independent( sf->intra_sf.intra_mode_prune_top = 4; sf->inter_sf.prune_comp_mode_eval_using_est_rd = true; sf->inter_sf.prune_warp_newmv_ref_mv_idx = true; + sf->inter_sf.early_term_warp_delta_refine = true; sf->intra_sf.include_dip_for_top_n_model_rd_pruning = true; @@ -876,6 +877,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->enable_six_param_warp_in_winner_mode = 0; inter_sf->enable_six_param_warp_in_winner_mode_by_tid = 0; inter_sf->fast_warp_delta_decoupled_search = 0; + inter_sf->early_term_warp_delta_refine = false; inter_sf->comp_inter_joint_search_thresh = BLOCK_4X4; inter_sf->adaptive_rd_thresh = 0; inter_sf->model_based_post_interp_filter_breakout = 0; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 862fe4f580..1a69a69c61 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -621,6 +621,9 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Enable fast warp delta search for 4 param and 6 param models int fast_warp_delta_decoupled_search; + // Early terminate warp delta refinement when RD cost improvements diminish. + bool early_term_warp_delta_refine; + // When 1, prune single-ref NEWMV / WARP_NEWMV for a given ref frame // when the best RD seen so far for that ref (taken from a prior mode // such as NEARMV, NEWMV[amvd=0], or WARPMV) is far from the best RD From 63bf361b2925a19f5f0f5a544144d82302437454 Mon Sep 17 00:00:00 2001 From: Jianle Chen Date: Tue, 25 Aug 2026 15:06:00 -0700 Subject: [PATCH 204/205] Add frame level on/off bawp (#5156) Enable frame level bawp based on histogram. Enabled for speed 2 and above. 33 frame RA results for speed 2 and 3 are as follows: +---------+--------+-------+-------+-------+----------+----------+ | Summary | Y | U | V | YUV | Enc-time | Dec-time | +---------+--------+-------+-------+-------+----------+----------+ Speed2, Overall w/o B2 (RA) +0.00% +0.01% +0.01% +0.00% 99.51% 100.12% Speed3, Overall w/o B2 (RA) +0.00% +0.01% +0.03% +0.00% 99.45% 99.53% +---------+--------+-------+-------+-------+----------+----------+ --- av2/encoder/encodeframe.c | 73 ++++++++++++++++++++++++++++++++++++ av2/encoder/speed_features.c | 2 + av2/encoder/speed_features.h | 4 ++ 3 files changed, 79 insertions(+) diff --git a/av2/encoder/encodeframe.c b/av2/encoder/encodeframe.c index 3f682b0c1a..267e92fc14 100644 --- a/av2/encoder/encodeframe.c +++ b/av2/encoder/encodeframe.c @@ -1870,6 +1870,75 @@ static AVM_INLINE void av2_enc_setup_tip_frame(AV2_COMP *cpi) { } } +static void get_histogram(int32_t *hist, const YV12_BUFFER_CONFIG *buf, + int width, int height) { + uint16_t *y_buf = buf->y_buffer; + int stride = buf->y_stride; + const int step = 2; + for (int i = 0; i < height; i += step) { + for (int j = 0; j < width; j += step) { + hist[y_buf[j]]++; + } + y_buf += stride; + } +} + +static int av2_set_on_bawp_picture_level(AV2_COMP *const cpi) { + int enable_curr_pic_bawp = 0; + assert(cpi->sf.inter_sf.enable_fast_bawp == 1); + AV2_COMMON *const cm = &cpi->common; + const YV12_BUFFER_CONFIG *source = cpi->source; + + const int num_values = 1 << cm->seq_params.bit_depth; + + int32_t *curr_hist; + int32_t *ref_hist; + CHECK_MEM_ERROR(cm, curr_hist, avm_calloc(num_values, sizeof(int32_t))); + CHECK_MEM_ERROR(cm, ref_hist, avm_calloc(num_values, sizeof(int32_t))); + + const int width = source->y_width; + const int height = source->y_height; + const int step = 2; + const int num_samples = width * height / (step * step); + + //----- get histogram diff threshold ----- + const double sample_thres = + cm->features.allow_screen_content_tools ? 0.075 : 0.1; + const int32_t hist_diff_thres = (int32_t)(sample_thres * num_samples); + + // get histogram of the current picture + get_histogram(curr_hist, source, width, height); + + for (MV_REFERENCE_FRAME rf = 0; rf < cm->ref_frames_info.num_total_refs; + ++rf) { + const RefCntBuffer *ref_buf = get_ref_frame_buf(cm, rf); + if (ref_buf != NULL) { + int ref_width = ref_buf->mi_cols * MI_SIZE; + int ref_height = ref_buf->mi_rows * MI_SIZE; + + if (width == ref_width && height == ref_height) { + memset(ref_hist, 0, sizeof(int32_t) * num_values); + // get histogram of the reference picture + get_histogram(ref_hist, &ref_buf->buf, width, height); + + // get SAD of delta histogram + int32_t diff_hist = 0; + for (int i = 0; i < num_values; i++) { + diff_hist += abs(curr_hist[i] - ref_hist[i]); + } + + if (diff_hist > hist_diff_thres) { + enable_curr_pic_bawp = 1; + break; + } + } + } + } + avm_free(curr_hist); + avm_free(ref_hist); + return enable_curr_pic_bawp; +} + /*!\brief Set the lossless flags for a frame before encoding it * * \ingroup high_level_algo @@ -2147,6 +2216,10 @@ static AVM_INLINE void encode_frame_internal(AV2_COMP *cpi) { start_timing(cpi, av2_compute_global_motion_time); #endif av2_compute_global_motion_facade(cpi); + + if (features->enable_bawp && cpi->sf.inter_sf.enable_fast_bawp) + features->enable_bawp = av2_set_on_bawp_picture_level(cpi); + #if CONFIG_COLLECT_COMPONENT_TIMING end_timing(cpi, av2_compute_global_motion_time); #endif diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 1f9fccc74a..3439fcc7a3 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -492,6 +492,7 @@ static void set_good_speed_features_framesize_independent( // motion vector predictor diversity and mitigating coding loss. sf->mv_sf.newmv_drl_search_limit = 2; } + sf->inter_sf.enable_fast_bawp = 1; sf->intra_sf.prune_palette_search_level = 1; @@ -934,6 +935,7 @@ static AVM_INLINE void init_inter_sf(INTER_MODE_SPEED_FEATURES *inter_sf) { inter_sf->enable_enhanced_inter_mode_cache_reuse = 0; inter_sf->prune_comp_mode_eval_using_est_rd = false; inter_sf->prune_warp_newmv_ref_mv_idx = false; + inter_sf->enable_fast_bawp = 0; } static AVM_INLINE void init_interp_sf(INTERP_FILTER_SPEED_FEATURES *interp_sf) { diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 1a69a69c61..4019b9f1ad 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -846,6 +846,10 @@ typedef struct INTER_MODE_SPEED_FEATURES { // Prune the evaluation of ref_mv_idx > 0 for WARP_NEWMV modes based on RD // Cost of ref_mv_idx = 0 and best mode so far. bool prune_warp_newmv_ref_mv_idx; + // Histogram based frame level on/off decision for BAWP + // 0: no frame level on/off decision + // 1: enable histogram based frame level on/off + int enable_fast_bawp; } INTER_MODE_SPEED_FEATURES; typedef struct INTERP_FILTER_SPEED_FEATURES { From b579dae750fc42ea21e4edf27d281126b36a5eb9 Mon Sep 17 00:00:00 2001 From: ranjit-tulabandu Date: Wed, 26 Aug 2026 05:56:17 +0530 Subject: [PATCH 205/205] Skip pixel-domain distortion using tx-domain RD estimate (#5314) The expensive pixel-domain distortion path in search_tx_type() is skipped if the lightweight transform-domain RD estimate already exceeds best_rd or ref_best_rd. This is controlled by a new speed feature flag skip_pixel_dist_calc_using_tx_dist, enabled for speed >= 1. STATS_CHANGED for speed >= 1 Test results (RA) for Speed 1 Anchor: commit 5d628d8 A1 - 17 frames A2 - 33 frames ``` +------------+-------+-------+-------+-------+-------------+ | Class | Y | Cb | Cr | YUV |EncInstCount%| +------------+-------+-------+-------+-------+-------------+ | A1 | -0.03 | 0.43 | -0.06 | 0.00 | 95.84 | | A2 | 0.04 | 0.46 | -0.15 | 0.05 | 97.35 | +------------+-------+-------+-------+-------+-------------+ ``` --- av2/encoder/speed_features.c | 2 ++ av2/encoder/speed_features.h | 7 +++++ av2/encoder/tx_search.c | 51 ++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/av2/encoder/speed_features.c b/av2/encoder/speed_features.c index 3439fcc7a3..9b011db5f0 100644 --- a/av2/encoder/speed_features.c +++ b/av2/encoder/speed_features.c @@ -385,6 +385,7 @@ static void set_good_speed_features_framesize_independent( sf->intra_sf.include_dip_for_top_n_model_rd_pruning = true; sf->tx_sf.adaptive_tx_type_search_idx = 4; + sf->tx_sf.skip_pixel_dist_calc_using_tx_dist = true; sf->tx_sf.adaptive_tx_partition_type_search_idx = 4; sf->tx_sf.enable_adaptive_tx_search_level = true; @@ -973,6 +974,7 @@ static AVM_INLINE void init_tx_sf(TX_SPEED_FEATURES *tx_sf) { tx_sf->tx_type_search.prune_tx_type_est_rd = 0; tx_sf->tx_type_search.winner_mode_tx_type_pruning = 0; tx_sf->txb_split_cap = 1; + tx_sf->skip_pixel_dist_calc_using_tx_dist = false; tx_sf->adaptive_tx_type_search_idx = 0; tx_sf->adaptive_tx_partition_type_search_idx = 0; tx_sf->use_inter_txb_hash = 1; diff --git a/av2/encoder/speed_features.h b/av2/encoder/speed_features.h index 4019b9f1ad..176a0835fb 100644 --- a/av2/encoder/speed_features.h +++ b/av2/encoder/speed_features.h @@ -958,6 +958,13 @@ typedef struct TX_SPEED_FEATURES { // Enable txfm partition search bool enable_tx_partition; + + // Skip the full pixel-domain distortion calculation for a tx candidate when + // a lightweight transform-domain RD estimate is already worse than best_rd + // and ref_best_rd. Avoids the more expensive pixel-domain reconstruction path + // for candidates that are unlikely to improve the best RD. + bool skip_pixel_dist_calc_using_tx_dist; + // Enable adaptive tx search level bool enable_adaptive_tx_search_level; // Enable adaptive TCQ threshold: diff --git a/av2/encoder/tx_search.c b/av2/encoder/tx_search.c index 2b6b4a6421..b5e7e18207 100644 --- a/av2/encoder/tx_search.c +++ b/av2/encoder/tx_search.c @@ -2309,6 +2309,50 @@ static AVM_INLINE RD_STATS get_tx_blk_distortion( return this_rd_stats; } +// Lightweight pre-distortion RD gate used inside search_tx_type's inner loop. +// Computes an approximate RD cost using transform-domain distortion and returns +// true when the candidate should be skipped (pruned). +static INLINE bool prune_tx_type_rd_calc_using_tx_domain_dist( + MACROBLOCK *x, const uint16_t *eobs_ptr, int64_t block_sse, + int64_t sec_tx_sse_to_be_coded, int64_t best_rd, int64_t ref_best_rd, + int plane, int block, int stx, int rate_cost, + int use_transform_domain_distortion, TX_SIZE tx_size, + bool skip_pixel_dist_calc_using_tx_dist) { + if (!skip_pixel_dist_calc_using_tx_dist || eobs_ptr[block] == 0 || + best_rd == INT64_MAX || use_transform_domain_distortion) + return false; + + // sec_tx_sse_to_be_coded is the residual SSE after the forward + // secondary transform, set by the prune_tx_rd_eval_sec_tx_sse filter earlier + // in the loop. When available, block_sse - sec_tx_sse_to_be_coded is the + // minimum distortion. If even this optimistic estimate exceeds best_rd or + // ref_best_rd, there is no need to run the more expensive + // dist_block_tx_domain() call below. + if (sec_tx_sse_to_be_coded != INT64_MAX) { + int64_t tmp_rd = RDCOST(x->rdmult, rate_cost, + AVMMAX((block_sse - sec_tx_sse_to_be_coded), 0)); + if (tmp_rd > AVMMIN(best_rd, ref_best_rd)) return true; + } + + // Compute the tx-domain distortion. For 64x64 blocks or when a secondary + // transform (stx) is applied, the coded coefficients cover only part of the + // transform domain, so the residual energy (block_sse - coded_sse) is added + // as a correction. Prune if the resulting RD exceeds the threshold. + RD_STATS this_rd_stats; + dist_block_tx_domain(x, plane, block, tx_size, &this_rd_stats.dist, + &this_rd_stats.sse); + int64_t tx_domain_dist; + if (stx != 0 || txsize_sqr_up_map[tx_size] == TX_64X64) + tx_domain_dist = + this_rd_stats.dist + AVMMAX((block_sse - this_rd_stats.sse), 0); + else + tx_domain_dist = this_rd_stats.dist; + const int64_t tx_domain_rd = RDCOST(x->rdmult, rate_cost, tx_domain_dist); + if (tx_domain_rd > AVMMIN(best_rd, ref_best_rd)) return true; + + return false; +} + // Search for the best transform type for a given transform block. // This function can be used for both inter and intra, both luma and chroma. static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, @@ -2658,6 +2702,13 @@ static void search_tx_type(const AV2_COMP *cpi, MACROBLOCK *x, int plane, // terminate early. if (RDCOST(x->rdmult, rate_cost, 0) > best_rd) continue; + if (prune_tx_type_rd_calc_using_tx_domain_dist( + x, eobs_ptr, block_sse, sec_tx_sse_to_be_coded, best_rd, + ref_best_rd, plane, block, stx, rate_cost, + use_transform_domain_distortion, tx_size, + tx_sf->skip_pixel_dist_calc_using_tx_dist)) { + continue; + } RD_STATS this_rd_stats = get_tx_blk_distortion( cpi, x, plane, block, blk_row, blk_col, tx_size, block_sse, eobs_ptr[block], dc_only_blk, fsc_mode_in,