On a DM368 system using the h264 encoder ( main profile, probably also other profile), with different rcAlgo's etc.
when I change the dynamic targetBitrate every frame (with 1 bit) the output bitrate DOUBLES.
It seems that changing the bitrate does something like doubling the target allocation of bits for a frame.
Also changing once with 1 bit will give a local noticable peak in the bitrate .
And as said changing the bitrate every frame (+-1 bit) doubles the output bitrate.
Could there be something counted double in the TI code?
Note bitrate must be different at least one bit from the last update to have this behaviour.
Whenever you change the bitrate, the rate control module resets itself. Upon reset, it may optionally insert an IDR (depends on the parameter setting) and starts from default buffer level.
This might be the reason why you see o/p bitrate doubling as you do this every frame. Idealy, you may like to change the bitrate only when desired. The kind of test you are doing may have side effects.
there is no IDR or I frame insertion.(Checked the stream for that).
I can imagine indeed that the VBV level is reset, or something like that, although I don't think that should be done (I think It the VBV level should scale with the bitrate). Since the bitrate is allmost exactly doubled I still suspect something else is going on.
This was resolved over email.
Would you mind posting how this issue was resolved?
The reason is our RC implementation does a .RC reset when it sees a bitrate or framerate change and puts in VBV level to default state. This causes the target bitrate becoming higher than target bitrate. Note that it may not always become twice, the resultant value depends on the current bitrate, delay, maxFrameSize etc.
Below are workaround -
1. Try reducing frequency of bitrate change control calls.
2. There is a parameter called LBRmaxpicsize. This control the maximum size a picture can take. (see http://processors.wiki.ti.com/index.php/DM36x_Rate_Control_Modes and also the user guide). Whenever you see that the frequency of bitrate change is becoming higher, you can go and put a smaller value to LBRmaxpicsize and then restore it back when bitrate/channel rate rate becomes steady.
We are also planning a fix for this issue, this would be available in the next release of the encoder(expected after few weeks).
Thank you for posting the information; this is useful to me as well.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.