
History and characteristics of the MPEG standards. Part 5

ABR: mechanism

Suppose user specified ABR mode and a certain bitrate B (user can specify absolutely any bitrate from 32 to 320, even not from standard bitrate grid, for example you can specify 129 as the rate Average Bit Rate). The encoder accepts a piece of audio (frame) to be encoded. In the same way, as in CBR, it determines its complexity (we will talk about this later). If the passage is complex, then the encoder also takes more bits for it, but not from the repository (as in CBR), but simply increasing the bitrate by the required number of steps (the selected bitrate must be included in the standard grid), thus creating a “virtual repository” (you can increase the bitrate here, this is not CBR). What does “virtual reservoir” mean? It’s simple: we assume that the user-specified bit rate B is not sufficient for the encoder, standard N bit rate, where: N> = K (we call this choice of bit rate “virtual deposit”). Then there is a K-bit encoding of the taken piece of audio. However, N> = K, that is, we use fewer bits than there are in the taken frame, so won’t we throw away these extra bits? It is these extra bits that we write to the actual deposit. Since ABR has the ability to use a “virtual reservoir”, it makes no sense to build a standard reservoir, so when the next piece of audio arrives, the bits from the reservoir will be used to encode it first, and then the encoder will decide what rate bit is needed next. In other words, if in CBR the encoder always tries to accumulate as many bits in the reservoir as possible, then in ABR the encoder, on the contrary, tries to get rid of the bits in the reservoir,
Simple passages are encoded with fewer bits, they take about 95% of the specified bit rate B, but now the rest is not deposited into the repository, the encoder just takes a frame with a lower bit rate. The resulting difference (the remaining bits) is written to the standard repository (don’t discard the remaining bits …). Example. Let’s say a “simple” passage has arrived. Then the encoder takes all the bits (if any) in the repository (present), then looks for the standard bitrate closest to which the total number of bits obtained for this frame (all the bits in the repository + rate of bits taken) is 95% of the user-specified bitrate B performs the encoding and the extra bits (if any) are stored back in the repository.
APR: Summary
So using a tank in ABR is different from CBR. In CBR, the bit rate cannot be changed, and the repository is specially saved by storing there the bits that were left (were saved) from the frame encoding at an initially fixed bit rate determined during a single pass; if bits are required for encoding and the repository is empty, then it is empty, nothing can be done about it, and encoding is simply done at the specified bit rate to the detriment of quality. In ABR, the bit rate is variable and the standard deposit is not really necessary, however, since the increase (decrease) of the bit rate necessarily occurs up to a certain table values that can turn out to be higher than the number. of bits required by the encoder, then the extra bits, of course, are not discarded, but are stored in the repository. In other words, in CBR the accumulation of the standard pool is the main task, while in ABR there is an unlimited “virtual pool” and the standard is used only to store additional bits formed as a result of the difference between the table values. Bitrate and actually required bitrate.
Vbr
VBR: variable bit rate. The user indicates the desired quality. Lame, based on his psychoacoustic model, assigns to each frame exactly the number of bits necessary to achieve a certain quality. In the output stream, the frames have respectively different bit rates (which always fit into the standard bit rate table). Warehouse usage in VBR is absolutely identical to ABR, only unused frame queues go there.
Methods for estimating signal complexity
So the main difference between CBR, ABR and VBR, as you probably already understood from the above, is the use of different methods to calculate the number of bits needed to encode each frame.



