In gstreamer the encoder bit rate can be variable (contro_rate=1) or constant. in a variable bit rate mode, I assume the encoder sends all the information to reconstruct the original picture regardless of the amount of data. Is there an explanation that describes how much data is lost, what the maximum and minimum bitrates are?
In general, variable bitrate encodings do not send information to reconstruct “the full” image; instead, they use a quality measurement that lets you decide how much quality loss is subjectively acceptable.
I e, “variable bit rate” doesn’t make sense without some other mechanism of describing exactly how much/little quality to preserve. (Unless you hard-code this quality constant to some fixed value, I suppose?)
In addition to comment from @snarky, please check the property of qp-range. It ranges from 1-51. The default setting is in /etc/enctune.conf. The encoder picks one value in the range for each frame according to the bitrate setting. qp=1 gets least data loss/high data rate and qp=51 gets the most data loss/low data rate.
Thanks for the reply. If I choose variable bit rate (control_rate=1), is there a parameter that dictates how aggressive to be in sending information related to picture changes, or does it assume infinite bandwidth and bursts the datarate to send all changes?
We don’t have the interface of what you described. There is a SW algorithm running to select a QP value for each frame. It does not assume infinite bandwidth and obeys the setting of QP range. And yes, if the scene significantly changes, the data rate possibly bursts.