Decoder configuration¶

Inter frames (P or B) decoders involves two Cool-chic decoders, one for the residue and one for the motion while intra frames only requires a residue decoder. Each Cool-chic decoder has the same architecture as the one described in the image coding section.
Since the residue and motion Cool-chic decoders have the same design, they are
parameters through similar arguments. For instance --arm_residue
sets up the
the ARM architecture for the residue decoder, while --arm_motion
achieves
the same thing for the motion decoder.
Similarly, it is possible to provide a decoder configuration file for the motion
Cool-chic decoder through the --dec_cfg_motion
arguments. Example
configuration files are listed in cfg/dec/motion/
.
Motion compensation options¶
Motion compensation requires to interpolate in between pixels e.g., to achieve a
shift of 7.25 pixels. To do so, an interpolation filter is used. The size of the
interpolation filter is parameterized by --warp_filter_size
. See paper Efficient Sub-pixel Motion
Compensation in Learned Video Codecs, Ladune et al for more details.
The type of interpolation performed is derived from the filter size. Note that
--warp_filter_size
must be even
|
Type |
---|---|
2 |
Bilinear |
4 |
Bicubic |
6 or above |
Sinc-based |
Motion fields downsampling¶
To obtain uniform motion on a block of \(B \times B\) pixels, we rely on
--n_ft_per_res_motion
. As explained here, having
the first \(N\) latents of the motion Cool-chic with no feature leads to a
decoding of a motion fields with motion values common to blocks of \(2^N
\times 2^N\) pixels.
# Each motion vector is common for a block of 8x8 pixels.
--n_ft_per_res_motion=0,0,0,1,1
Frame-wise decoder configuration¶
In a hierarchical coding structure, not all frames are equally important. As such, it is often interesting to use lighter architectures for not-so-important frames. The video coding example script provides an example of frame-wise decoder configuration automatically generated.