Hi,
I'm having lots of trouble with the DM355 mpeg4enc rate control algorithms. Our application needs to limit the output bitrate and should not drop frames, so I've studied the behaviour of CVBR (IVIDEO_STORAGE) and VBR (IMP4ENC_VBR_RATEFIX).
CVBR (IVIDEO_STORAGE) seems to behave okay some of the time, but often it appears to go into a mode where it does not use the bitrate specified, but instead chooses a much lower bit rate. When it does this (which sometimes happens right from the start of encoding and seems to happen more often when the images to encode are fairly static), the output bitrate eventually drops to a level where it cannot encode sensibly at all as the I-frames are encoded with far too few bits. For example, I have some 640x360 recordings using CVBR at 2.2Mbps which on analysis are outputting 2.2Mbps quite consistently and look not too bad, but I have some other recordings using the same settings where from the start, the codec is outputting 1.5Mbps instead of 2.2Mbps and this drops towards 1.0Mbps over 3 minutes or so.
VBR (IMP4ENC_VBR_RATEFIX) appears to have more sensible behaviour at first. It constrains the bitrate over a longer period due to the gradual workings of it's algorithm and works okay for 15 minutes or so. However, for recordings longer than this, it appears to go into a mode where the bit rate suddenly becomes unconstrained. For example, if I limit it to 2.2Mbps, it will acheive this rate (measured over several seconds), but then starts outputting 6Mbps or so, which is roughly what IVIDEO_NONE produces for this resolution.
I'm using dm355_codecs_1_13_000.