📷 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.
 
 
James Jackson-South b337bce1a6 Complete HEVC parallel slice decoding 7 days ago
..
CIP_A_Panasonic_3.bit Verify HEVC intra prediction against ITU 1 week ago
DBLK_A_MAIN10_VIXS_4.bit Verify HEVC loop filtering against HM 7 days ago
DBLK_A_SONY_3.bit Verify HEVC loop filtering against HM 7 days ago
DELTAQP_A_BRCM_4_frame0.bit Verify HEVC residual reconstruction against HM 7 days ago
DSLICE_A_HHI_5.bit Complete HEVC parallel slice decoding 7 days ago
DSLICE_B_HHI_5.bit Complete HEVC parallel slice decoding 7 days ago
DSLICE_C_HHI_5.bit Complete HEVC parallel slice decoding 7 days ago
ENTP_A_Qualcomm_1.bit Complete HEVC parallel slice decoding 7 days ago
ENTP_C_Qualcomm_1.bit Complete HEVC parallel slice decoding 7 days ago
EXTPREC_MAIN_444_16_INTRA_12BIT_RExt_Sony_1.bit Verify HEVC residual reconstruction against HM 7 days ago
GENERAL_8b_400_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_8b_400_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_8b_420_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_8b_420_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_8b_444_RExt_Sony_2.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_8b_444_RExt_Sony_2_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_10b_420_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_10b_420_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_10b_422_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_10b_422_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_10b_444_RExt_Sony_2.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_10b_444_RExt_Sony_2_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_400_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_400_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_420_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_420_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_422_RExt_Sony_1.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_422_RExt_Sony_1_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_444_RExt_Sony_2.bit Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_444_RExt_Sony_2_frame0.yuv Complete HEVC Range Extensions conformance 2 weeks ago
GENERAL_12b_444_RExt_Sony_2_idr7.bit Verify HEVC residual reconstruction against HM 7 days ago
IPRED_B_Nokia_3.bit Verify HEVC intra prediction against ITU 1 week ago
IPRED_B_Nokia_3.yuv Verify HEVC intra prediction against ITU 1 week ago
LS_A_Orange_2.bit Verify HEVC residual reconstruction against HM 7 days ago
QMATRIX_A_RExt_Sony_1.bit Verify HEVC residual reconstruction against HM 7 days ago
README.md Complete HEVC parallel slice decoding 7 days ago
RQT_A_HHI_4.bit Verify HEVC coding-tree traversal 1 week ago
RQT_B_HHI_4.bit Verify HEVC coding-tree traversal 1 week ago
RQT_C_HHI_4.bit Verify HEVC coding-tree traversal 1 week ago
RQT_D_HHI_4.bit Verify HEVC coding-tree traversal 1 week ago
RQT_E_HHI_4.bit Verify HEVC coding-tree traversal 1 week ago
SAO_A_MediaTek_4.bit Verify HEVC loop filtering against HM 7 days ago
SAO_A_RExt_MediaTek_1.bit Verify HEVC loop filtering against HM 7 days ago
STRUCT_A_Samsung_7.bit Verify HEVC coding-tree traversal 1 week ago
STRUCT_B_Samsung_7.bit Verify HEVC coding-tree traversal 1 week ago
TILES_A_Cisco_2.bit Complete HEVC parallel slice decoding 7 days ago
TILES_B_Cisco_1.bit Complete HEVC parallel slice decoding 7 days ago
TUSIZE_A_Samsung_1.bit Verify HEVC coding-tree traversal 1 week ago
WPP_A_ericsson_MAIN_2.bit Complete HEVC parallel slice decoding 7 days ago
WPP_B_ericsson_MAIN_2.bit Complete HEVC parallel slice decoding 7 days ago
WPP_C_ericsson_MAIN_2.bit Complete HEVC parallel slice decoding 7 days ago
WPP_D_ericsson_MAIN_2.bit Complete HEVC parallel slice decoding 7 days ago
WPP_E_ericsson_MAIN_2.bit Complete HEVC parallel slice decoding 7 days ago
WPP_F_ericsson_MAIN_2.bit Complete HEVC parallel slice decoding 7 days ago

README.md

HEVC conformance fixtures

These fixtures come from the electronic attachment to ITU-T H.265.1 (10/2018), the conformance specification aligned with ISO/IEC 23008-8. Table 4 identifies the Sony GENERAL_*_RExt streams and their required profiles.

The .bit files are the original Annex B conformance streams. The Samsung archives name their payloads .bin; the repository stores those unchanged bytes with the common .bit extension. Each GENERAL_*_frame0.yuv file contains the first decoded picture extracted byte-for-byte from the corresponding published planar reference output; it was not generated by ImageSharp.

HevcPictureDecoderTests.DecodeOfficialRangeExtensionsPictureMatchesPublishedDigest limits each stream to its first independently coded picture, adapts that picture to the bounded hvc1 item contract, compares every reconstructed sample with _frame0.yuv, and verifies the published decoded-picture MD5 value for every present plane.

The retained matrix covers the ImageSharp 8, 10, and 12-bit still-image precision boundary across monochrome, 4:2:0, 4:2:2, and 4:4:4. Tool-specific H.265.1 streams remain necessary before every exposed Range Extensions tool can be marked complete.

The Main-profile traversal matrix comes from the official RQT_A_HHI_4 through RQT_E_HHI_4, STRUCT_A_Samsung_7, STRUCT_B_Samsung_7, and TUSIZE_A_Samsung_1 archives. Their published descriptions target residual-quadtree intra hierarchy depths zero through four, coding-tree and minimum-coding-unit structure, and a 64x64 coding-tree block with 32x32 minimum coding units and 16x16 minimum luma transforms, respectively.

HevcPictureDecoderTests.DecodeOfficialTraversalPictureMatchesPinnedHmDigest decodes each first independently coded picture through the production still-item path and compares all three native planes with fixed MD5 digests. The RQT values are the streams' decoded-picture-hash SEI values. For STRUCT and TUSIZE, the plane values were calculated from the first picture written by the HM reference decoder at commit 9c1f298659ab0cee9dc13d23d0304221575410b9; the complete HM output also matched each archive's published file MD5:

  • STRUCT_A_Samsung_7: 02f02cc9a67222004ae18ee6bebd475a
  • STRUCT_B_Samsung_7: 1f472e014aff120681e8482c8a04ef93
  • TUSIZE_A_Samsung_1: 5e6c198c852e92cdcca0e137fc2610c4

The intra-prediction fixtures come from the same official HEVC v1 attachment:

  • IPRED_B_Nokia_3 is the one-picture Main Still Picture stream identified by H.265.1 Table 1. Its published description states that it uses all 35 modes at each of the luma 32x32, 16x16, 8x8, and 4x4 sizes and the chroma 16x16, 8x8, and 4x4 sizes, for 245 mode-and-size combinations. The archive SHA-256 is 738E35AF4CED173E8CCB558464DC6A1B8B791FB1BB957C073633AA6037288CD0; the published bitstream MD5 is 1be12a94d9da6b84af78cd6cfd5e4407; and the retained published YUV has MD5 ec3bcad4f9174404e52d132206b6617b.
  • CIP_A_Panasonic_3 signals constrained intra prediction and contains one I picture followed by one B picture. The bounded still decoder test extracts only the independently coded I picture. The archive SHA-256 is 5C55B3594E5C951C9F5312913961750283EB2DADD15844FE35F9BEB94A9A548C, and the published bitstream MD5 is e1e00592fc8a158da9109b4dc05d03be.

HM at commit 9c1f298659ab0cee9dc13d23d0304221575410b9 reproduces the published IPRED_B_Nokia_3 YUV MD5 exactly and reports decoded-picture hashes 200ef9f7d2efde44ab872a78a40ece42, bfe9de3bef5ce5596a71bbfdbfb823fc, and 5b14acdd5c5bf8c6887160817ee1ad11. The same pinned decoder reproduces CIP_A_Panasonic_3's published complete two-picture YUV MD5 4cbf601ba98d63f642defab5eaa12c8d; its independently coded first picture reports plane hashes 69a20189e6bbb9c088e3adc967244ca1, 26502d354bb123f54c20413f14360ddb, and baafaef47a55ae2e876862b30b3bc720.

The residual-reconstruction fixtures come from the official HEVC v1 and Range Extensions attachments. Pinned HM commit 9c1f298659ab0cee9dc13d23d0304221575410b9 decodes every retained independently coded picture and produces the plane hashes asserted by the tests.

  • DELTAQP_A_BRCM_4_frame0.bit is the exact first independently coded picture extracted from DELTAQP_A_BRCM_4.bit. The official archive has SHA-256 63ABBBAF43D334D7952EAB7BBC5B3E34B4AD0259EDDCD63CDB164DBCF9A36CA6, the original bitstream has SHA-256 1274E3E308DFE684B38A88F8B3A2845B84F57492B0B02AAECBE5DC29CA8ED532, and the retained picture has SHA-256 4DC49A2AAE1CCE20D5CD190A1342FAF4C3B2BD06D1A59824542B9B22F53C581B. The official description randomizes diff_cu_qp_delta_depth from zero through three and delta QP from -26 through 25; the retained picture contains 384 delta-QP CABAC decisions.
  • QMATRIX_A_RExt_Sony_1.bit has SHA-256 74847E07F3298923DA0E9B68B1F861930D227BD5AD83A834A8280CF042A7E78F. Its official description covers scaling-list data with and without transform skip at every transform size over different QPs; the retained first picture signals scaling lists, coding-unit QP deltas, transform skip, transform-skip contexts and rotation, and implicit residual DPCM.
  • EXTPREC_MAIN_444_16_INTRA_12BIT_RExt_Sony_1.bit is the second of the official stream's two concatenated one-picture sequences, retained with its own VPS, SPS, and PPS. The official archive has SHA-256 66C8E24866210B94A63A29C93F8C1490046CC17B26484C5BD81F805D7BFD18D1, the original bitstream has SHA-256 5F0164DCCC333296FB2753068CAFE4985B758DDB7E282358DBB8FAF74986817D, and the retained sequence has SHA-256 4107D5BB5DF4F95185E7A8A5EEF8F35970A4769C76901FF590F38F7BC36B268B. This 12-bit GBR sequence is the one that signals extended-precision processing and transform skip. Its reference plane hashes were produced by the pinned HM commit built with its HIGH_BITDEPTH option, which is required by HM for this sequence.
  • GENERAL_12b_444_RExt_Sony_2_idr7.bit is the seventh independently coded picture extracted with its active VPS, SPS, and PPS from the already retained official GENERAL stream. It has SHA-256 981D97F0ADC228F2E3A739D7A68161F84CD60309745397D5CF24D2F81C009DBC and contains 39 coding-unit chroma-QP adjustment decisions across 8-, 16-, and 32-sample chroma transforms.
  • LS_A_Orange_2.bit has SHA-256 14251238F005A4576437429A327B34D216B346AAAC2A7A05C132A3430174B11B and published MD5 9118d01cf6b3671038d6f99342c0895e. The official lossless description states that every coding unit uses transform, quantization, and filtering bypass; the retained first picture exercises the bypass-flag path and its decoded-picture hash reports OK.

The loop-filter fixtures are the unchanged Annex B payloads from the official HEVC v1 and Range Extensions archives. HevcPictureDecoderTests.DecodeOfficialLoopFilterPictureMatchesPinnedHmDigest retains each first independently coded picture, verifies its signaled precision and chroma layout, and compares every native plane with output from the pinned HIGH_BITDEPTH HM decoder. The feature-runner companion repeats the same production decoder path through every available SIMD tier and the scalar fallback.

  • DBLK_A_SONY_3.bit is the 8-bit 4:2:0 deblocking stream. The archive SHA-256 is CE18CD42375359B9FF293D12A95793CC6B56EB75D899AD012C68E25DFA54DFBF, and the bitstream SHA-256 is D61A13E04A1678816C0F16CF7A47F5BB918DE95ECF1B6FAB305E2390C3DD7DE9. Pinned HM reproduces the published complete-output MD5 42486a48ea12d5ab6cd98ed2e2807cfe; the retained first picture has Y, Cb, and Cr MD5 values 3ea2c2ef1f973345111480e7658908b3, 0390b32143b1a832a385f78229e7e574, and 8388f3a8af827da46f1fb52941ec00ad.
  • DBLK_A_MAIN10_VIXS_4.bit is the Main 10 negative-QP deblocking stream. The archive SHA-256 is D86EC87F98FCCBCEC3758954A7CF430E8AF8CF021D347DFBBED2F1D5DBB00F25, and the bitstream SHA-256 is 3A9089207BEDDDB0C8DB28B410441E37D4CFF5DD8301CB8BA7D2F75036E2D50C. Pinned HM reproduces the published complete-output MD5 c4594956bb9e8303f1662f9eb1bcdf50; the retained 10-bit 4:2:0 first picture has plane MD5 values 184a72aab144cb474df3c1a289e8692d, d30e750dd70cae163d00f441a75896fd, and d253c41f06228df215f4616febbad34f.
  • SAO_A_MediaTek_4.bit is the 8-bit 4:2:0 sample-adaptive-offset stream. The archive SHA-256 is E0B5C8F4AB4FB592971F06469DB630D9E7EF72B4D37D729604E2FDAA9DF706C9, and the bitstream SHA-256 is 88F693AC4AEC4DEA03CB4BC0CB9D8C98A4023A015905369BB62688064FB58944. Pinned HM reproduces the published complete-output MD5 272e694a2262a2b34f6248f787a4431d; the retained first picture has plane MD5 values 08723eb3fb41af96c87becc4f6973234, 230778eb7df0ebc009ca92e9697ec4d6, and e8e21ed380d2272dc38384ecd6515e53.
  • SAO_A_RExt_MediaTek_1.bit is the 12-bit 4:4:4 Range Extensions stream for PPS bit-shift scaling of SAO offsets. The archive SHA-256 is D0B5646150B35FB8E4C1D51F3D451AEDDF964581132C9C49B253E34556BEEA4D, and the bitstream SHA-256 is 6B0D45B5CA4D4919EAEC5A98DAF0EB4CEBCC6D8B0A12B30B748386CC9358DF13. Pinned HM reproduces the published complete GBR-output MD5 126cd42a185b327d86640a9269044bc8; the retained first picture has G, B, and R plane MD5 values fb342158a61b6cb3174b99d2e1167d7d, 9ff5400aac0380474882acb903f51f89, and bb320be3c7905a5a220e0066a5edb991.

The parallelization fixtures are unchanged Annex B payloads from the official HEVC v1 attachment. Archives that name their payload .bin are retained byte-for-byte with the repository's common .bit extension. HevcPictureDecoderTests.DecodeOfficialParallelizationPictureMatchesPublishedReference adapts every complete first IDR picture to one bounded hvc1 item, asserts its tile, wavefront, dependent-slice, entry-point, extension, and CTB geometry, and compares all three native planes exactly.

Pinned HM commit 9c1f298659ab0cee9dc13d23d0304221575410b9 reproduces the published complete-output MD5 for every dependent-slice, tile, and entry-point archive below. The WPP first-picture plane hashes come directly from the published YUV files included in their archives. The two combined dependent-slice cases also pass through 4 KiB allocator groups with balanced exactly-once disposal.

  • DSLICE_A_HHI_5.bit: archive SHA-256 C41C1A1E1E700AF201EAF4CB0D11D4361B41BA0828E80C78D1835D1DE187F80C; bitstream SHA-256 8398FB23C814A197BBA497AD2C6103F81CA8003434FA40EC347D4D0A07C9468A; published output MD5 c7caf3164b0a316549ac7244f66f1294.
  • DSLICE_B_HHI_5.bit: archive SHA-256 993B933AC6801899B6F04AE5DD2C20FBC2498FD9710A924611E66DE2F690716B; bitstream SHA-256 DB582F1181F3B8ED3BEEB32246A1A99123700DBDC3D3BE4E1797032FCD46C486; published output MD5 2e072130f116a4d0f7fc69fa76cfcdfb.
  • DSLICE_C_HHI_5.bit: archive SHA-256 6836566F0A4465775B4757B84D7A89F453B635EBA2B941AE07132F7C7268C116; bitstream SHA-256 F162007F604AA0E48229C4153F940FD5F24DB955AD158D11E2BD46C89C49CA76; published output MD5 505a47c5ce4bc66ef5661aeb778b0f1f.
  • TILES_A_Cisco_2.bit: archive SHA-256 BD63079966105A3BDAC764979CB82B708F586CC7C34859A1D466E18CC6A5C345; bitstream SHA-256 EFF78A401ECCCC21D995345988F1BE60EE76604CF10FA39D421C3E00668A94D6; published output MD5 946f0771fa87d49f684f96871c9c3c88.
  • TILES_B_Cisco_1.bit: archive SHA-256 75B3C9B2981CDA59D497750322CDE7CA23D6CEF39FA9A8E11F36926758B7F83B; bitstream SHA-256 D2F65167917E42030DB804C60CA7775452445A61930CCEE3FA2AD2CD3830A57A; published output MD5 3382291f2b19ee2d760647d4cc756e95.
  • WPP_A_ericsson_MAIN_2.bit: archive SHA-256 81C601E9301BA5F562EBF9918E73D1C7153E0A6FE8FA4509F61035A212188216; bitstream SHA-256 54D896D9FBDFA0AAE15629001105C6EE132C8459E152ABB06EFC62CEAD4324AE; published output MD5 cd7e815eb47e8138fec2185d4de84304.
  • WPP_B_ericsson_MAIN_2.bit: archive SHA-256 57BFA7DC2417976825187B43829F1E107D87EBE661CFA4A02087EFAE3BD1148E; bitstream SHA-256 F1D18F737A9380F6CE58B6AEAE158AF458C5B557E06DD24977B7A5C6E095B9B2; published output MD5 e37c7e561a1226640a7bf98e81df78b1.
  • WPP_C_ericsson_MAIN_2.bit: archive SHA-256 4D1F3E7FC1B05E22F2C53FABC670A3DB9A642BB511004C4D785B49582890BDF2; bitstream SHA-256 21CF0A7C5F6FBA5A76C7132A2714313D120D1443A0130400FB55AB1E454D5BDA; published output MD5 e067aa3a6a12cd5743849ded793c8d3f.
  • WPP_D_ericsson_MAIN_2.bit: archive SHA-256 04C166DF6E6D68584910FCE77055F6C16428FC5C907BB1BEFD10BBF40C16B939; bitstream SHA-256 30EEC63F2324AA982FB91BD4C1C551C833C253BA711EE131AA9CC4D322398CAF; published output MD5 f710612103f386c415be3e6300693451.
  • WPP_E_ericsson_MAIN_2.bit: archive SHA-256 10F4A50870F763D7CCBD975ADCE20176022A1B9712664244A94C069322534FAF; bitstream SHA-256 C8FE49762A13E1CC2B033308BB22AEB35DA0C96F94CA8EF7D87D95BDADAEAA2C; published output MD5 485798dbf95ad61232075df2f294aa3f.
  • WPP_F_ericsson_MAIN_2.bit: archive SHA-256 39F5FFAA4C273C800B4E05715E2D4002E31B3BBE39505EA59B08C5FDABE6AF21; bitstream SHA-256 E8566E0E48509592DFAF7D314B7E292F51CEDE045559E3C32B447A9822A8B949; published output MD5 2aaf16274fe8e799d72fa08a4963850d.
  • ENTP_A_Qualcomm_1.bit: archive SHA-256 66ABDF60455ECE468ACF160274316C51DCA3858D93A8FFCE93646CBB5568FE43; bitstream SHA-256 1DC1DFB16F676F59CEBDE3A4732209CE5CE0D0F49EF697970987C0C3E0E087B1; published output MD5 25f3c7facf9e7b75e81247206b4fc60d.
  • ENTP_C_Qualcomm_1.bit: archive SHA-256 6CFDFE2F6BA8E1A860909550E5A486E7BF712FED00674869F45C1D82D05833F5; bitstream SHA-256 993CD68F0E749CD1D9CE7CC3A368B4DF26DCCF07DED91048100217B9A0C56D28; published output MD5 0b607e6e7946e6e8d0f92a1a294d135d.

The retained ENTP_A_Qualcomm_1 first picture verifies its uniform 2x2 tile entry points. The archive description places its special entry-point emulation-prevention case at POC 4, which is outside the retained IDR picture. HevcPictureDecoderTests.EntryPointOffsetsExcludeEmulationPreventionBytes therefore verifies the same production boundary-conversion methods directly with prevention bytes in both the encoded header and the bounded non-final entropy substream; it does not claim that the later non-IDR picture itself is decoded.