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:
or
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.
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.