As JCT-VC delegates prepare for this week’s Incheon “M” meeting, we take a look at the work of AHG4. AHG4 is a group of HEVC experts working on establishing a set of conformance test streams that can be used during development and test of HEVC decoding products. As of April 2013, you can find the fruits of AHG4’s labour here. This blog post is likely to become out of date very quickly as work progresses on the streams but the principles behind it should remain solid.
At the time of writing, there are 98 candidate conformance bitstreams created by more than a dozen different companies. Parabola has been involved in this process in a testing role: we have used our tools to detect conformance violations and have assisted some contributors with their streams.
Parabola’s HEVC framework has a large set of checks that are run against various HEVC requirements. In the current implementation, a failed check results in either an error or a warning being reported depending on the semantics of that failure.
Errors: Errors are reported when something about the stream violates a HEVC requirement. A trivial example of one such check is verification that forbidden_zero_bit
is indeed zero.
Warnings: A warning is issued if the bitstream does not conform but a conforming decoder should be able to process it. For example, an unexpected reserved value would result in a warning. Warnings allow existing versions of the tool to be forward compatible with HEVC version 2 and other extensions.
Below is a summary of the failures we see with the current set of AHG4 conformance streams as reported by a development version of Parabola Verifier - our conformance-focused product:
Afflicted streams: EXT_A, PS_A, PS_B
If we examine EXT_A in Parabola Explorer, we see the warnings signified by orange expander icons in the tree view:
A few clicks later, the origin of the first warning is exposed:
Draft specification text L1003 tells us that sps_extension_flag
“shall be equal to 0 in bitstreams conforming to this version of this Specification”. So bitstreams EXT_A, PS_A and PS_B are non-conforming. This is intentional: conformance bitstreams are for testing whether or not a decoder is conforming - they do not themselves have to adhere to the specification. Indeed, it is impossible to test parsing of parameter set extension data without using non-conforming bitstreams. The parameter set extension flags are not truly reserved values as the non-conforming value (1) does have a defined semantic meaning.
Afflicted stream: DBLK_A_MAIN10
This looks like a genuine violation of the specification requirement “the value of Log2MinIpcmCbSizeY shall be in the range of MinCbLog2SizeY to Min( CtbLog2SizeY, 5 ), inclusive”.
Afflicted streams: AMP_A, AMP_B, AMVP_B, CAINIT_A, CAINIT_B, DSLICE_A, DSLICE_B, DSLICE_C, MERGE_F, MVDL1ZERO_A, RAP_A, RPS_A, SAO_A, SAO_B, STRUCT_B, TSCL_A, WP_B_MAIN10
This error is inherent to the HM 10.0 reference encoder so a large number of streams are affected. The issue was recently reported by Frank Bossen.
In Parabola Explorer, the error is denoted with red expander icons. Navigation reveals it to be associated with a slice_segment_header()
:
No other streams raise errors or warnings but there are hundreds of requirements in the HEVC specification and there are some we do not yet cover. It is intended to raise our coverage to as near 100% as practicable and Parabola’s underlying HEVC software architecture makes this achievable in the near future.
Parabola Explorer is available for download as a fully functional trial, please just contact us.
We also have a command-line version of Parabola Verifier available on request to those customers interested in including it in their encoder or media QA automation. Please contact us for more information.
Copyright © 2024 Parabola Research Limited | Registered in England and Wales 7668051 | VAT number GB 117 8538 94