📷 A modern, cross-platform, 2D Graphics library for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

27 KiB

AV1 reconstruction conformance fixtures

These fixtures provide independent reference output for AV1 reconstruction and AVIF presentation tests. ImageSharp output is compared exactly with the retained native YUV planes and presented PNG files; the tests do not use a tolerance. Native fixtures remain beside their inputs here, while the PNG files use the repository reference-output naming contract under tests/Images/External/ReferenceOutput/Av1ReconstructionConformanceTests.

Provenance

The source images and original AVIF files come from libavif/tests/data at commit 062e582e8afda88e6baf988fdcf046a801efa0f5. Their licenses are recorded in libavif's tests/data/README.md and continue to apply to the derived fixtures. This includes the unrestricted Kodak image, the CC BY 3.0 Cosmos Laundromat frame, and files distributed under libavif's BSD-2-Clause license.

Original fixture-generation records name scalar builds of:

  • libaom commit 03087864cf4bea6abb0d28f95cf7843511413d8f;
  • libavif 1.4.2 from commit 062e582e8afda88e6baf988fdcf046a801efa0f5, linked to that libaom build.

Those revisions describe how the retained assets were originally produced; they do not pin the current verification checkout. Current AV1 algorithm, arithmetic, syntax, and native-output verification uses only the clean official libaom main checkout. Libavif commands record container and presentation provenance only and are not used as an AV1 implementation reference.

File conventions

  • .avif files exercise the complete container and presentation path.
  • .bit files contain the exact AV1 elementary-stream payload used by reconstruction tests.
  • -libaom.yuv files contain headerless planar Y, U, and V reference samples. Samples above eight bits are stored as little-endian 16-bit values.
  • -libaom-y4m.yuv files retain the Y4M header together with the native planar frame.
  • -libaom.y4m files retain the Y4M header together with the native sequence frames selected for comparison.
  • Reference-output .png files contain retained eight-bit RGBA presentations. Their names combine the public test method, Rgba32, and the input AVIF basename so CompareToReferenceOutput resolves them directly.

Coverage

Fixture family Coverage
libavif-kodim23, libavif-cosmos1650, libaom-cosmos1650 Baseline 8-, 10-, and 12-bit reconstruction, chroma subsampling, and active deblocking
*-cdef-* Active CDEF with loop restoration disabled
*-superres-* Active horizontal super-resolution with CDEF and restoration disabled
*-restoration-* Wiener and self-guided loop restoration
*-restoration-superres-* Restoration after super-resolution, including 10-bit 4:2:2 clipped-edge transform coverage
libavif-profile-* The 8-, 10-, and 12-bit matrix across monochrome, 4:2:0, 4:2:2, and 4:4:4
*-palette-* Luma and chroma palette prediction
*-intrabc-* Intra-block copy at every supported bit depth
*-lossless-* Lossless quantization, reversible transforms, and exact presentation
*-film-grain-* Full and restricted range, monochrome, identity matrix, 8/10/12-bit synthesis, overlap, and odd frame dimensions
libaom-av1-1-b8-00-quantizer-*, libaom-av1-1-b10-00-quantizer-* Official minimum- and maximum-quantizer dependent-frame reconstruction
libaom-av1-1-b8-01-size-* Official frame-size matrix corner reconstruction
libaom-av1-1-b10-23, libaom-av1-1-b10-24 Official ten-bit dependent-frame film grain and monochrome sequence reconstruction
libavif-progressive-draw-points-8b A real two-layer color item whose final frame uses single-reference inter reconstruction, plus its progressive auxiliary alpha item
libavif-webp-logo-average-compound A 19-frame YUV444 image sequence whose retained references reach equal-weight compound inter reconstruction
libavif-webp-logo-distance-weighted-compound Selectable distance-weighted compound prediction
libavif-webp-logo-wedge-compound Wedge compound prediction with both signaled mask orientations
libavif-webp-logo-difference-weighted-compound Difference-weighted compound prediction with both mask orientations
libavif-webp-logo-inter-intra Smooth and wedge inter-intra prediction
libavif-webp-logo-obmc Overlapping motion compensation through a 19-frame dependent sequence
libavif-webp-logo-scaled-reference A 40x40 retained reference scaled into an 80x80 dependent frame
libavif-rotating-grid-local-warp Multi-sample local affine projection and warped prediction through a two-frame dependent sequence
libavif-rotating-grid-global-warp Non-translational rotation/zoom GLOBALMV prediction through a two-frame dependent sequence

The corresponding tests also assert the syntax required by each family before comparing output. This prevents an inactive tool or an incorrectly substituted stream from passing solely because its final pixels happen to match.

Baseline deblocking fixtures

On 2026-08-31 current official libaom main at observed revision 441c439b9916474cac15d2822af47a9ad70674a8 decoded the baseline 8-, 10-, and 12-bit elementary streams using one thread, row threading disabled, raw output, and the corresponding native output depth:

aomdec --codec=av1 --threads=1 --row-mt=0 --rawvideo --output-bit-depth=8 -o deblocking-8b.yuv libavif-kodim23-8b.bit
aomdec --codec=av1 --threads=1 --row-mt=0 --rawvideo --output-bit-depth=10 -o deblocking-10b.yuv libavif-cosmos1650-10b.bit
aomdec --codec=av1 --threads=1 --row-mt=0 --rawvideo --output-bit-depth=12 -o deblocking-12b.yuv libaom-cosmos1650-12b.bit

The payloads contain 20,750, 37,169, and 23,769 bytes. Their SHA-256 values are B7B1D3F85A870475ACF579FBB7A0B59FF94C30F84B3F3A066411A50F9BA1BD20, F930BF11EB2F61BF4EE0FE61853CD387A4C3DBE53503707DB7B2C59D9D273FF3, and A45F9653255C1A660906554BAFCC13FDEE04F88CC6D0E08E1EFA169CF0C6DDD2. The generated native outputs contain 589,824, 2,629,632, and 2,629,632 bytes and match the retained references exactly. Their SHA-256 values are 8DDE2EEC742C39F0579C29AE84CBA0FE01522A9008ADCB2CFFCCEC0295D18141, 9A59DD92A0C579F942ACCA8281EBD0465DC848BE200A4D2FF57EAFF589445F6C, and EF712BE32AF7CF0A95C5C41BDCC51AFC05A4AB7C047383F5F65EDAD2BB986712.

The focused production test covers active 8-, 10-, and 12-bit deblocking. A separate current-main dependent sequence exercises inter, intra, and skipped-inter blocks with reference/mode deltas enabled, compares native reconstruction exactly, compares final presentation through the established reference-output API, and repeats under constrained tracked allocation. The direct production filter test independently distinguishes global and non-global mode-delta classes, LAST and GOLDEN reference deltas, internal transform edges, and skipped prediction-unit boundaries.

Official ten-bit sequence fixtures

The libaom-av1-1-b10-23-film-grain-50.ivf and libaom-av1-1-b10-24-monochrome.ivf streams are the official files from libaom's test-data bucket. Their SHA-1 values are 2F883C7E11C21A31F79BD9C809541BE90B0C7C4A and 03A8D002594CCC51932332002BB6F9837EF46D0F, exactly matching test/test-data.sha1 at pinned libaom commit 03087864cf4bea6abb0d28f95cf7843511413d8f. Their SHA-256 values are C36CF5AB6A2E9E27C212C06863759B60791E3FA681A0800B5D57FD4192EF29CB and 6A1B0729305A167F10737A5375F0570139F055BCD7916DF260B653AB2210ADC1.

The retained native references were generated from the pinned generic libaom build with:

aomdec --threads=1 --output=libaom-av1-1-b10-23-film-grain-50-libaom.y4m libaom-av1-1-b10-23-film-grain-50.ivf
aomdec --threads=1 --output=libaom-av1-1-b10-24-monochrome-libaom.y4m libaom-av1-1-b10-24-monochrome.ivf

The film-grain Y4M SHA-256 is A1B553BE140F48ABDDB2A6D39917AB714BA03AC7FFD6359EAA1CB0D89C985A3B, and the monochrome Y4M SHA-256 is 7394BC8146485D200BFDEC62E170482F8B1A85A64D21FAC62D10116FB1BB140D. The tests decode and compare all ten frames from each sequence exactly under normal and scalar dispatch. The film-grain stream retains dependent ungrained references while applying ten-bit grain to each displayed 352x288 YUV420 frame; the monochrome stream verifies every 320x180 ten-bit luma sample without manufacturing chroma in ImageSharp. Both sequences also run through a constrained tracked allocator.

Official quantizer-boundary fixtures

The retained quantizer-00 and quantizer-63 streams are the minimum- and maximum-quantizer boundaries from libaom's official eight- and ten-bit test matrices. Their SHA-1 values are C2E1EC9936B95254187A359E94AA32A9F3DAD1B7, 2A8AA33513D8E01AE9410C4BF5FE1E471B775482, 9BBE8499796AA588FF02E313FB0D4349940D2FEA, and 8B6EB3FFF2E0DB7EAC775B08C745250CA591E2D9, exactly matching test/test-data.sha1 at pinned libaom commit 03087864cf4bea6abb0d28f95cf7843511413d8f. Their SHA-256 values, in the same order, are 6382DBD2BEFBBC93D4EA283586F4FB43FEA5F1C52400E3D2C5281A46B1104C00, 0E4EC80680F7AF8DE9621B016E0F2D7C0858B2951DEBC173DDA50C6A051547D3, FE6053CE4EE20A1C0EC6F7FE35DB097E92AD25D8A3505598BD89162C74D7944F, and 39759AB77483E1D11049DC38B5F5262158FD9C3CBC9D1F82A02462FC5DF30E0C.

The native references were generated with the pinned generic aomdec --threads=1 build. Their SHA-256 values are D499028E0606DB70CD56A72F151E04F36C09F300A448CCCD8430DD920D3589C5, 4CC9892B3EE3399B293E31014B9F566C21E0C7A4765FC5F444528769C33E6D67, 78373C28F401EB95D3E563D146622ED6C714ED96661E5E57C539CE71D7BED599, and A9DF86F671B8CF01EFC130660556412D4EBAF31A81D6F26FBDAEB0A7E839D8EA. Each reference's two raw-frame MD5 values also match the corresponding official .ivf.md5 file exactly. The tests compare every native sample under normal and scalar FeatureTestRunner dispatch and run all four sequences through a 2,560-byte row-aligned constrained tracked allocator.

Official frame-size corner fixtures

The retained 196x196, 196x226, 226x196, and 226x226 streams are the four corners of libaom's official eight-bit frame-size matrix. Their SHA-1 values are 9F386D19C87DBFD6AC84A06D2393DD88863AC003, 5525F7E312EC073F480ED5A2BE5BDC4F0CE51A09, 1A57B913443B267F4A31A6925C39F5B58022F550, and 40DD208EB525CD90D7C0674CF787097FB909AFAE, exactly matching test/test-data.sha1 at pinned libaom commit 03087864cf4bea6abb0d28f95cf7843511413d8f. Their SHA-256 values, in the same order, are ECACF9C2065EEC1A02248395412BE5E03ED7E3FEDFD6653622E09E73D1CAC747, 2A2ECDDE60546FA8280039228B4BE541825EFAEE30F53EE50B91B11F2952BDA7, 999522FBF3FCD9F8CC8DAC865BEF874B7BF655A4DAD93C397F50A7A1EC2C9027, and B5D9A30F24E33F8FA6A655961645650542DC2545FB7D557E2D55A043DAC69F50.

The native references were generated with the pinned generic aomdec --threads=1 build. Their SHA-256 values are 4479030861DD9D6AB9B00FA8CF77A34712BCECA06C31131927D3E7E9BF5DDA70, 817FF76E70946763C000E19FCCD9F0258CF9358201B6771AA68FB8C84490D26F, F4A70BA358E8B4ED558B589BFE56354C9552469FDABD01B3F4D5754334B0CBD9, and 44FC32FB1D24CE4A33830B67D927F038E0E1379C6B480C598F018382EC78E9CE. Each reference's two raw-frame MD5 values also match the corresponding official .ivf.md5 file exactly. The tests compare every native sample under normal and scalar FeatureTestRunner dispatch and run all four sequences through a 1 KiB constrained tracked allocator.

Progressive dependent-frame fixture

The libavif-progressive-draw-points-8b.avif fixture is the unmodified tests/data/draw_points_idat_progressive.avif file from the pinned libavif tree. Its SHA-256 is 077AB2AD1E46DD912A973E4F024CB1EB242A08298BE2DBF1A52A058E88C48A4A. It was generated with:

./avifenc -q 100 --progressive ../tests/data/draw_points.png ../tests/data/draw_points_idat_progressive.avif

The primary color item's a1lx property divides its logical 72-byte AV1 payload into a 55-byte base layer and a 17-byte dependent layer. The container stores those layers in separate iloc extents at AVIF offsets 511 and 583. The .bit fixture concatenates those two logical color extents; it does not copy the physically adjacent auxiliary-alpha extent between them.

Exact pinned libaom decodes the corrected logical payload into two 33x11 YUV444 frames. Both frames' 1,089 color samples match the corresponding first three planes of the pinned libavif YUV444-alpha outputs exactly. The retained Y4M contains both progressive YUV444-alpha frames, and the PNG contains pinned libavif's final RGBA presentation. The production-path test selects the second native frame, requires inter-coded blocks in the final ImageSharp frame, and compares both native color and final presentation without a tolerance.

Equal-average compound fixture

The libavif-webp-logo-average-compound.avif file is retained solely as interoperability input. It was created from tests/data/webp_logo_animated.y4m with the following command; libavif is not used as an AV1 implementation or reconstruction reference:

./avifenc -j 1 -c aom -s 4 -q 80 -a enable-dist-wtd-comp=0 -a enable-masked-comp=0 -a enable-interintra-comp=0 -a enable-obmc=0 -a enable-warped-motion=0 -a enable-global-motion=0 tests/data/webp_logo_animated.y4m libavif-webp-logo-average-compound.avif

On 2026-08-31 the clean official libaom main checkout was refreshed from its upstream remote. At the observed revision 441c439b9916474cac15d2822af47a9ad70674a8, current aomdec decoded the 5,465-byte mdat payload at file offset 1,065 as 19 shown 80x80 YUV444 frames:

aomdec --codec=av1 --threads=1 --row-mt=0 --output-bit-depth=8 -o compound-current-main.y4m compound-current-main.obu

All 19 frames decoded successfully. The final frame's 19,200 native samples have SHA-256 E79D2F49C260B1AC9B1B9BBBB2D611126AFD3B241DA389EB9E7BD4EA0ED42080 and match the stored Y4M's Y, U, and V samples exactly with zero differences. The observed revision records the source used for this verification; it does not pin the libaom checkout.

The production test decodes every preceding sample to establish the retained-reference state, requires actual equal-average compound blocks, and compares the final native planes exactly. It then compares the final RGBA output through ImageSharp's established reference-output API. The PNG is presentation evidence only and is not used to establish AV1 reconstruction arithmetic.

Selectable compound and inter-intra fixtures

The four AVIF files are retained solely as interoperability inputs. Their original creation commands used the same tests/data/webp_logo_animated.y4m source and encoded at speed zero after disabling later inter-mode checkpoints. These commands record container-fixture provenance only; they are not codec implementation references. Each command also disables competing prediction tools that would prevent the resulting stream from isolating its named mode:

./avifenc -j 1 -c aom -s 0 -q 80 -a enable-obmc=0 -a enable-warped-motion=0 -a enable-global-motion=0 -a enable-masked-comp=0 -a enable-interintra-comp=0 tests/data/webp_logo_animated.y4m libavif-webp-logo-distance-weighted-compound.avif
./avifenc -j 1 -c aom -s 0 -q 80 -a enable-obmc=0 -a enable-warped-motion=0 -a enable-global-motion=0 -a enable-dist-wtd-comp=0 -a enable-diff-wtd-comp=0 -a enable-interintra-comp=0 tests/data/webp_logo_animated.y4m libavif-webp-logo-wedge-compound.avif
./avifenc -j 1 -c aom -s 0 -q 80 -a enable-obmc=0 -a enable-warped-motion=0 -a enable-global-motion=0 -a enable-dist-wtd-comp=0 -a enable-interinter-wedge=0 -a enable-interintra-comp=0 tests/data/webp_logo_animated.y4m libavif-webp-logo-difference-weighted-compound.avif
./avifenc -j 1 -c aom -s 0 -q 80 -a enable-obmc=0 -a enable-warped-motion=0 -a enable-global-motion=0 -a enable-dist-wtd-comp=0 -a enable-masked-comp=0 tests/data/webp_logo_animated.y4m libavif-webp-logo-inter-intra.avif
Fixture AVIF SHA-256 Retained frame-18 Y4M SHA-256 Retained frame-18 PNG SHA-256
libavif-webp-logo-distance-weighted-compound DA710D11C60F03EEA209E4360E2FC807B89C49AD50671F0DFB1BCF4AD5EF76DD 904D1B5B3E7F334CE8D44040F9A7BDCAC1F7773122FF1C5F06A5B4DD31A62A97 D2CB388C9092EF17C4F0382C0150DD30D6F9D0EE247FF45AB5D7D4D312CEB23C
libavif-webp-logo-wedge-compound 98640640A445055FEA3D9E2F4A78FEEF54E97F8171B472CF57D99156E1C553B2 904D1B5B3E7F334CE8D44040F9A7BDCAC1F7773122FF1C5F06A5B4DD31A62A97 D2CB388C9092EF17C4F0382C0150DD30D6F9D0EE247FF45AB5D7D4D312CEB23C
libavif-webp-logo-difference-weighted-compound FC6459CD334762D74D9D2654640221E80C463CC01B82B29A5866C9E725ABE273 904D1B5B3E7F334CE8D44040F9A7BDCAC1F7773122FF1C5F06A5B4DD31A62A97 D2CB388C9092EF17C4F0382C0150DD30D6F9D0EE247FF45AB5D7D4D312CEB23C
libavif-webp-logo-inter-intra 71DF22E63626B5BC9001FF1E88076B90F11BB47D18089750853E66F0CBBB084B 502265688138641A7B12C8C4190B66C76CD4808D9AED05B06486056B39D7E9A0 F0DE4CCDFB6D95A400E69B69FA4C57F0BEEEEE75825722C31613385F0B3FD9FC

The inter-intra fixture's 5,327-byte AV1 mdat payload was decoded directly with the current official libaom main checkout observed at 441c439b9916474cac15d2822af47a9ad70674a8, using one thread and with row threading disabled. Current aomdec produced all 19 YUV444 frames. The final frame's 19,200 native samples have SHA-256 E8B776C2751DC30CA838931A4B74535FC6E681179568A1278747A38CFF2E5BFA and match the retained Y4M with zero differing samples.

The distance-weighted fixture's 5,372-byte AV1 mdat payload was decoded under the same current-libaom conditions. Current aomdec produced all 19 YUV444 frames. The final frame's 19,200 native samples have SHA-256 E8CAA650F1571C5B9CACAF8C06E1DDF5F5D2ED35F65F1C34377076C573425899 and match the retained Y4M with zero differing samples.

The wedge fixture's 5,374-byte AV1 mdat payload was decoded under the same current-libaom conditions. Current aomdec produced all 19 YUV444 frames. The final frame's 19,200 native samples have SHA-256 E8CAA650F1571C5B9CACAF8C06E1DDF5F5D2ED35F65F1C34377076C573425899 and match the retained Y4M with zero differing samples.

The difference-weighted fixture's 5,358-byte AV1 mdat payload was decoded under the same current-libaom conditions. Current aomdec produced all 19 YUV444 frames. The final frame's 19,200 native samples have SHA-256 E8CAA650F1571C5B9CACAF8C06E1DDF5F5D2ED35F65F1C34377076C573425899 and match the retained Y4M with zero differing samples.

The production tests independently require their decoded mode states. The distance-weighted input must exercise distance-weighted compound prediction, the wedge and difference-weighted inputs must each exercise both mask orientations, and the inter-intra input must exercise both smooth and wedge inter-intra prediction. The tests decode all preceding samples, compare final native Y, Cb, and Cr planes exactly, compare final RGBA presentation through ImageSharp's established reference-output API, and repeat reconstruction with constrained tracked allocation. The retained PNG files are presentation evidence only and are not AV1 reconstruction references.

Overlapping motion-compensation fixture

The libavif-webp-logo-obmc.avif fixture is retained interoperability input. It was originally packaged by libavif from the same tests/data/webp_logo_animated.y4m source as the compound fixtures, with libaom's encoder selected and competing compound, inter-intra, warped, and global prediction modes disabled:

./avifenc -j 1 -c aom -s 0 -q 80 -a max-reference-frames=3 -a enable-dist-wtd-comp=0 -a enable-masked-comp=0 -a enable-interintra-comp=0 -a enable-warped-motion=0 -a enable-global-motion=0 tests/data/webp_logo_animated.y4m libavif-webp-logo-obmc.avif

On 2026-08-31 the fixture's 5,387-byte AV1 mdat payload at AVIF offset 1,065 was decoded with aomdec from a freshly updated clean checkout of current official libaom main. One decode thread was used and row threading remained disabled. All 19 frames decoded. The final frame's 19,200 native YUV444 samples have SHA-256 E8CAA650F1571C5B9CACAF8C06E1DDF5F5D2ED35F65F1C34377076C573425899 and match libavif-webp-logo-obmc-libaom.y4m with zero differing samples.

The production test requires decoded OBMC mode state, decodes every retained-reference dependency, compares final Y, Cb, and Cr planes exactly, compares final RGBA presentation through ImageSharp's established reference-output API under normal and scalar FeatureTestRunner dispatch, and repeats the decode with constrained tracked allocation. Direct production-branch tests separately cover above-then-left blending at 8/10/12-bit and 4:2:0 and 4:2:2 overlap geometry. The retained presentation PNG's SHA-256 is D2CB388C9092EF17C4F0382C0150DD30D6F9D0EE247FF45AB5D7D4D312CEB23C; its pixels were not changed when its contract-derived filename was updated with the test name.

Scaled-reference fixture

The libavif-webp-logo-scaled-reference.avif and libavif-webp-logo-scaled-reference-lsel0.avif files are retained solely as interoperability inputs. Their shared 2,195-byte .bit payload contains a 701-byte independent base layer followed by the dependent layer; no container implementation is used as an AV1 arithmetic reference.

On 2026-08-31 the payload was decoded with aomdec from the freshly updated clean checkout of current official libaom main, observed at 441c439b9916474cac15d2822af47a9ad70674a8:

aomdec --codec=av1 --threads=1 --row-mt=0 --all-layers --rawvideo --output-bit-depth=8 -o current-libaom-scaled-reference-all.yuv libavif-webp-logo-scaled-reference.bit

Current libaom produced a 40x40 YUV444 base frame and an 80x80 YUV444 dependent frame. The combined 24,000 native samples have SHA-256 DD219E41B52C6C9343A92CD0A2D451DF57B73B25F10124811675B4CB2F8D666F. The base frame matches libavif-webp-logo-scaled-reference-base-libaom.yuv exactly, and the dependent frame matches the native planes in libavif-webp-logo-scaled-reference-libaom.y4m exactly, with zero differing samples.

The production tests require the retained 40x40 base and the 80x80 dependent reconstruction, compare both native frames exactly, compare the selected base layer and final RGBA presentation through ImageSharp's established reference-output API, and repeat both layer selections with constrained tracked allocation. The scaled-prediction FeatureTestRunner tests cover native and no-round compound output at 8, 10, and 12 bits, and a complete Av1BlockDecoder.DecodeBlock() test proves that scaled compound references remain in the no-round intermediate domain until the final blend.

The two presentation PNGs were renamed with their current-libaom test contracts without changing their bytes. Their SHA-256 values remain DC4C6DBE6BD92C5FCE1E3E23700AFA603EF04ED02EDD336213EBBA1E3BD84BA0 and 678C5E5D4650EA6F0C590302E7DB9E3C6608851BC577453DA4A6837BDB4D3AF3.

Local warped-motion fixture

The libavif-rotating-grid-local-warp.avif file is retained solely as interoperability input. It was originally encoded from a deterministic two-frame 256x256 limited-range YUV444 source whose second frame rotates the first by 2.5 degrees. The original packaging command records fixture provenance only; libavif is not used as an AV1 implementation or reconstruction reference:

./avifenc -j 1 -s 0 -q 60 -a color:enable-warped-motion=1 -a color:enable-global-motion=0 -a color:enable-obmc=0 rotating-grid-256-two-frame.y4m libavif-rotating-grid-local-warp.avif

On 2026-08-31 the clean official libaom main checkout was refreshed from its upstream remote. At the observed revision 441c439b9916474cac15d2822af47a9ad70674a8, the fixture's 2,310-byte AV1 mdat payload at AVIF offset 997 has SHA-256 644D04FE1D1A32BB7A3856AD7EB49CF1EFDE0AC845E55BEAC4170F72353F2391 and was decoded with:

aomdec --codec=av1 --threads=1 --row-mt=0 --all-layers --output-bit-depth=8 -o local-warp-current-main.y4m local-warp-current-main.obu

Current libaom produced two 256x256 YUV444 frames. The complete Y4M has SHA-256 8FDC5D46014F5E5A7455A83643AB6F0DA66FC5A984E72A43F8C75BAD8271C299. Its final frame's 196,608 native samples have SHA-256 47B2AB39BF3B9DA15C1EC59840F964DFDF227760947F6E1295FB38A84555F75C and match the retained libavif-rotating-grid-local-warp-libaom.y4m reference with zero differing samples.

The multi-sample model at mode-information row 6, column 8 derives matrix [-191565, 599107, 61755, -140, -6909, 62012] and reduced shear [-3776, -128, -7360, -3520] from four retained spatial neighbor samples. The production test requires decoded WARPED_CAUSAL state through Av1BlockDecoder.DecodeBlock(), compares every final native Y, U, and V sample exactly, compares the retained final presentation through the established image-reference API, runs intrinsic and scalar dispatch through FeatureTestRunner, and repeats reconstruction with a constrained tracked allocator. Separate 8-, 10-, and 12-bit operator tests use an independent scalar transcription of current libaom's affine loops and all 1,544 current filter coefficients across AVX-512, AVX, 128-bit, and scalar execution.

Global warped-motion fixture

The libavif-rotating-grid-global-warp.avif file is retained solely as interoperability input. It uses the same deterministic two-frame 256x256 limited-range YUV444 source as the local-warp fixture. The original packaging command records fixture provenance only; libavif is not used as an AV1 implementation or reconstruction reference:

./avifenc -j 1 -s 0 -q 100 -a color:enable-warped-motion=0 -a color:enable-global-motion=1 -a color:enable-obmc=0 rotating-grid-256-two-frame.y4m libavif-rotating-grid-global-warp.avif

On 2026-08-31 the clean official libaom main checkout was refreshed from its upstream remote. At the observed revision 441c439b9916474cac15d2822af47a9ad70674a8, the fixture's 38,475-byte AV1 mdat payload at AVIF offset 997 has SHA-256 6AC7EC9984B1FF5C00403D7E3858441E9CEE75128F7414101D06DEEE59A351D0 and was decoded with:

aomdec --codec=av1 --threads=1 --row-mt=0 --all-layers --output-bit-depth=8 -o global-warp-current-main.y4m global-warp-current-main.obu

Current libaom produced two 256x256 YUV444 frames. The complete Y4M has SHA-256 84754DE0B9FABC4F3F8F344C848183EC17B625BFD87E4519C3D8AD7DEFD20F2C. Its final frame's 196,608 native samples have SHA-256 FEC89E2DE7496980389806B194425042F3800C7BAA817249D1A51D44A2B37A8E and match the retained libavif-rotating-grid-global-warp-libaom.y4m reference with zero differing samples.

The decoded stream contains non-translational GLOBALMV blocks using rotation/zoom matrix [-357376, 372736, 65468, 2856, -2856, 65468] and reduced shear [-64, 2880, -2880, 64]. The production sequence test requires that decoded model and mode state, compares every final native Y, U, and V sample exactly, compares the retained final presentation through the established image-reference API, runs intrinsic and scalar dispatch through FeatureTestRunner, and repeats reconstruction with constrained tracked allocation. A direct Av1BlockDecoder.DecodeBlock() test drives both references of GLOBAL_GLOBALMV through matrix prediction and no-round compound averaging at 8, 10, and 12 bits. High-bit-depth warped references remain in current libaom's unsigned CONV_BUF_TYPE domain until the final blend; 12-bit prediction uses the corresponding adjusted round0 and two-bit final rounding.

Updating fixtures

Do not create conformance references with ImageSharp. Generate both the native-plane and presentation references with an independent decoder, record the exact upstream revisions and source license, and preserve exact comparisons. A new tool-specific fixture should demonstrate that the relevant syntax is active and should be no larger than required to cover that behavior.