scalabilityhevcscalableh.265

Is there any bit-stream extractor in scalable HEVC?


I'm using Scalable HEVC reference software (SHM 12.2).

I encode a video in two layers using the following script:

/home/Experiments/Zinon/SHM-12.2/bin/TAppEncoderStatic -c
cfg/encoder_randomaccess_scalable.cfg -c cfg/per-sequence-svc/C_L-1.5x.cfg 
-c cfg/layers.cfg -b str/C_L.bin -o0 rec/C_L_l0_rec.yuv -o1 rec/C_L_l1_rec.yuv

In scalable H.264, using Bit-stream extractor “BitStreamExtractorStatic” I can extract sub-streams of an AVC or SVC stream.

Do you know if there is a similar Bit-stream extractor in Scalable HEVC? Because in SHM there is no any.

In SHM/source/App/utils/ExtractAddLS/ there is a text files that contains the following text. In any case I can't find an executable file of the ExtractAddLS, only a c-file.

This a tool that either:

  1. Extracts an independent non-base layer from a multi-layer bitstream, converts it to a base-layer bistream and writes it to a file. The extraction processs is defined in chapter F.10.2 of the HEVC version 2 specification.

or

  1. Extracts an additional layer set sub-bitstream from multi-layer bitstream and writes it to a file. The extraction processs is defined in chapter F.10.3 of the HEVC version 2 specification.

The tool is invoked as follows:

ExtractAddLS <infile> <outfile> <Max temporal ID> <layer IDs of the extracted layers>

The process that is invoked is decided based on the number of IDs that are given in the layer ID list. If only one layer ID is given, independent non-base layer rewriting process is invoked. If more than one layer ID is given, sub-bitstream extraction for additional layer sets is invoked.

The result of independent non-base layer rewriting process can be decoded with an HEVC/H.265 v1 compliant decoder as long as the extracted independent layer conform with v1 specification text. The tool removes VPS from the output bitstream during rewriting so an HEVC/H.265 decoder should not expect it to be present.


Solution

  • After months of searching, I realized that the SHM decoder can extract the requested layer by just adding a parameter. For example:

    TAppDecoderStatic -b str/pirkagia_10b_lowdelay_P.bin -olsidx 0 -o0 /yuv/pirkagia_10b_lowdelay_P_level_0_dec.yuv >> /txt/pirkagia_10b_lowdelay_P_level_0_dec.txt 
    

    Using the parameter -olsidx we can select Index of output layer set to be decoded.