fraunhoferhhi/vvenc

About I P and B frames encoding support

thx4ever opened this issue · 2 comments

Hi, is there a possibility without change the code to output I P and B frames?
Actually the encoder outputs I and B only

Regards

The uvg266 encoder uses all the frames types including 'P' but these frames are 2 or 3 times bigger than 'B' frames and can't be used as references. 'B' frames can be used as references to other 'b' frames. I assume that VVenC is similar to 264 and 265. In VVC the frame order is not sequential. An 'I' reference frame is created 32 frames in the future and then 7 x 'B' reference frames are sparsely created before the 'I' frame. The 'b' frames hang off the 'B' reference frames. The frame layout changes depending on the refresh period used. This keeps the differences w.r.t the reference frames small and lowers the bitrate. The quantizer difference between 'I' and 'B' frames is about 10 which is similar to 264 and 265. A --tune grain parameter in x264/5 flattens out the quantizer differences to stop pulsating noise but it also doubles the bitrate. I assume VVC will eventually use FGS (like AV1) to get around the grain/noise problem.

There is, alas not too easy. You have to use the full-feature app and use config files.

vvencFFapp ... -c cfg/gop32.cfg ...

Than, in cfg/gop32.cfg change Frame1 entry from Type B to P. Mind that using config file, especially with this change, will reduce the coding efficiency. This will only produce P frames if the intra period is at least 33.

There is no easier way.