The H.264/SVC standard (ISO/IEC 14496-10)
Juan Francisco Rodríguez Herrera
Vicente González Ruiz
July 10, 2017
Contents
Intro
- Still under development.
- It is the scalable extension of H.264/AVC.
- It is compatible with H.264/AVC. In other words, the base layer of a
H.264/SVC codec can be decompressed by a H.264/AVC codec.
1 Diferencies with previous codecs
- Although H.264/SVC is backward compative with H.264/AVC, it defines
a new temporal decorrelation scheme called MCTF [2, 1] (Motion
Compensated Temporal Filtering ) that it is more efficient than the IPPP...
encoding and enables the temporal scalability.
- The other two forms of scalability (spatial and quality) are also carefully
re-designed in H.264/SVC.
2 Temporal scalability
- H.264/SVC implements the temporal scalability by means of MCTF.
3 Spatial scalability
- H.264/SVC implements the spatial scalability by means of Hierarchical
MCTF.
4 Quality scalabilty
- Quality layers are created decreasing the quantization level progressively. An
example:
Layer | Resolution | Quality | Image rate | (S,T,Q) |
|
|
|
|
|
0 | 176x144 | 0 | 3.75 | (0,0,0) |
1 | 176x144 | 0 | 7.5 | (0,1,0) |
2 | 176x144 | 0 | 15 | (0,2,0) |
3 | 176x144 | 0 | 30 | (0,3,0) |
4 | 176x144 | 1 | 3.75 | (0,0,1) |
5 | 176x144 | 1 | 7.5 | (0,1,1) |
6 | 176x144 | 1 | 15 | (0,2,1) |
7 | 176x144 | 1 | 30 | (0,3,1) |
8 | 352x288 | 0 | 3.75 | (1,0,0) |
9 | 352x288 | 0 | 7.5 | (1,1,0) |
10 | 352x288 | 0 | 15 | (1,2,0) |
11 | 352x288 | 0 | 30 | (1,3,0) |
12 | 352x288 | 1 | 3.75 | (1,0,1) |
13 | 352x288 | 1 | 7.5 | (1,1,1) |
14 | 352x288 | 1 | 15 | (1,2,1) |
15 | 352x288 | 1 | 30 | (1,3,1) |
- If the highest quality layer (15) can not be decompressed, then the odd images
should have less quality (0).
- If the 14-th quality layer is lost also, then only the images of index that is
divisible between 4 should have the maximal quality.
- If layers 15-12 are lost, then all the images should have the same quality
(0).
- If layer 11 is lost, then the odd images should have a quality of (1), but with a
spatial resolution of 176x144.
- If only the base layer is decompressed, then one image of every 8 is going to be
shown, with a quality 0 and with a size of 176x144.
5 About the number of layers
- In a real transmission scenario (such as the Internet), the amount of data
that can reach the receiver depends on unpredictable factors (such as the
network load) and it is not known when the video es compressed.
- To handle this situation, the number of (quality) layers should be as
high as possible because the number of optimal truncation points of
the code-stream is increased and therefore, the error produced by the
truncation is minimzed.
- However, an increment of the number of layers has a negative impact in
the compression ratio.
- For these reasons, the performance of an scalable image or video codec
should be determined in an real (or simulated) transmission scenario.
H.264/SVC in the lab
- Let’s try the H.264/SVC reference software from the Fraunhofer Institute.
export CVSROOT=:pserver:jvtuser:jvt.Amd.2@garcon.\
ient.rwth-aachen.de:/cvs/jvt
cvs login
export CVSROOT=:pserver:jvtuser@garcon.ient.\
rwth-aachen.de:/cvs/jvt
cvs checkout jsvm
cd jsvm
ooffice SoftwareManual.doc &
cd JSVM/H264Extension/build/linux/
make
export PATH=$PATH:<path to "jsvm">/bin
- The H.264/SVC compressor can be used to get spatial and/or quality
scalability. In this example, only a video with quality scalability is generated.
To do this, a set of configuration files are neccesary. There is a main
configuration file and a specific configuration file for each layer (these files
are stored in http://www.ace.ual.es/~vruiz/doctorado/compression-utils.tar.gz).
- The bit-rate control for each quality layer will be specified by the command
line (note: the larger the quantization level, the lower the quality and the
bit-rate):
# Notation: -lpq <layer> <quantization-level>
H264AVCEncoderLibTestStatic -pf main-3layers.cfg\
-lqp 0 250 -lqp 1 51 -lqp 2 49
- It is possible to get the quality layer information with the command:
BitStreamExtractorStatic test.264
- A layer (in this example, the first one) can be extracted by:
BitStreamExtractorStatic test.264 extracted.264 -sl 1
- A H264 stream is decompressed by:
H264AVCDecoderLibTestStatic extracted.264 1.yuv
- Finally, remember that a CIF YUV sequence can be displayed with:
mplayer 1.yuv -demuxer rawvideo -rawvideo cif
- In this point, you should be able to trace the R/D curve of H264SVC.
Moreover, try to measure the negative impact of the quality scalability
on the compression ratio. For achieve this, use the same configuration
parameters, but using one and two quality layers. To do that, run
the compressor using the main-1layer.cfg and main-2layers.cfg
configuration files. How much the bit-rate is increased?
References
[1] Seung-Jong Choi and John W. Woods. Motion-Compensated 3-D
Subband Coding of Video. IEEE Transactions on Image Processing,
8(2):155–167, 1999.
[2] J.-R. Ohm. Three-dimensional subband coding with motion
compensation. IEEE Transactions on Image Processing, 3:559–571, 1994.