Does it affect just macroblocking? Or does it also throw out other information? Usually when I read a definition for bit rate, it's something like, 'it affects quality'. I understand that, but I'm curious as to exactly which piece of information from the video is thrown out. I think the same amount of pixels are used regardless of bit rate so my guess is that resolution (pixels) is tied directly with bit rate, and if there's not high enough of a bit rate, it'll throw out color information from certain pixels and color others the same, resulting in blocks. Am I correct on that?
This also makes me wonder how bit rate ties to frame rate. If you have a hypothetical 300fps video with a low bit rate, to display all of those frames, it'd have to throw out some information. What information is what I want to know. The same as my guess above?
+ Reply to Thread
Results 1 to 5 of 5
As you specify lower bitrates larger quantizers are used. That means blocks (typically 8x8) of pixels will retain less high frequency detail (small details, smooth gradients) in both the luma (greyscale) and chroma (color) components, leading to blocky artifacts. Some encoders (WMV for example) will also reduce the frame rate (ie, skip frames, leading to less smooth motion) if they think the bitrate is too low for the material.
Another artifact that can be exacerbated by low bitrates is DCT ringing. This typically shows up as small dots in flat shaded areas.
Generally, fewer frames per second requires less bitrate to keep from breaking up into macroblock artifacts. Though it's not a 1:1 relationship. Ie, 60 fps doesn't usually require twice the bitrate of 30 fps, but something less than twice, depending on the nature of the video.
Note that some decoders have deblocking filters to reduce the blockiness at playback. But small details cannot be restored.
Last edited by jagabo; 23rd Jul 2012 at 09:06.
In other words....No you are not going to re-invent the wheel by knowing all of the exact details.
Oh I see. So a lower bit rate can potentially throw out pixel color information, to put it extremely simply. Right? I didn't know it worked in 'blocks' though. Are these blocks all macroblocks, or can it be something else?
Am I correct to assume that the higher the bit rate you have, the less pixels the macroblocks are made up of? Maybe if it's at such a high bit rate, it can actually work on every individual pixel instead of blocking them together. Or something.
The blocks are usually 8x8 pixels, regardless of bitrate. As the bitrate gets lower there is less and less detail in those 8x8 blocks, until all 64 pixels are the same color. Some codecs further break those 8x8 blocks down to 8x4 or 4x8 blocks.
To understand how this works you have to first understand Fourier transforms. Basically it says that any mathematical function can be expressed as an infinite series of sin and/or cos functions:
Then that the signal can be approximated by a finite "discreet" series:
In the case of MPEG family codecs the Discreet Cosine Transformation (DCT):
Each row and column of the 8x8 block is treated as a waveform. After the DCT transform those is 8x8 blocks of pixels become 8x8 blocks of DCT coefficients. Those are then "quantized" so that there are fewer different values, and many of them become zeros:
Finally, those coefficients are compressed with a lossless entropy encoding similar to that used in archiving programs like RAR, ZIP, etc:
On playback all those steps are reversed.
Last edited by jagabo; 24th Jul 2012 at 07:48.