3 ms·
So how much better can video formats theoretically get? Are we anywhere near the absolute limit of compression, or are current solutions limited by what can be
by rcthompson 14y ago
So how much better can video formats theoretically get? Are we anywhere near the absolute limit of compression, or are current solutions limited by what can be accomplished in real time on today's hardware?
- ihsw 14y agoThe Wikipedia article[1] outlines various features of this standard, for instance predictive motion vectors are being utilized more heavily, not unlike actual vector graphics. This is impressive however it requires more CPU (naturally we have more CPU available compared to when H.264 was standardized). With regards to hardware: performance/watt is a commonly touted benchmark for measuring the quality of hardware however architectural changes should be considered as well (ie: today's CPUs do more per Hz than yesterday's CPUs). [1] http://en.wikipedia.org/wiki/H.265 http://en.wikipedia.org/wiki/H.265
- bradleyjg 14y agoThese are lossy formats, so there aren't clean, easily defined limits like there are for lossless formats.
- BlackAura 14y agoWe won't know until we get there. Generally, the performance of a video codec is held back by available hardware performance more than anything else. The specifications of a video codec generally specify the decoder, but not the encoder. The decoder specification is intended to be implementable on hardware or software, so it can be played back in real-time, either now or in the immediate future. If some compression technique is available, but can't be done real-time, it can't be used. If a compression technique could be done real-time but only if limits are placed on it, then limits will be placed on it. The encoder has to generate a bitstream that the decoder will decode, so it's limited by the decoder's capabilities. To an extent, it's limited by available algorithms (see how much better a modern h.264 encoder is compared to the original ones), and by encoding performance (particularly if you need to encode in real time, but even offline encoders can only be so slow before they become useless), and the quality / compression performance tends to get better with time. It's still limited mostly by the decoder, though. This example is for audio codecs, but LAME actually generated higher-quality MP3s than all of the first generation of AAC encoders, entirely because it had smarter encoding algorithms. For that matter, XVID tended to produce videos that rivaled, and occasionally surpassed, the first generations of h.264 encoders. Despite that early lead, both LAME and XVID were overtaken once the AAC and h.264 encoders matured, because they were still limited by the decoders they were targetting. There's probably still a long way to go just adding complexity to the decoder, even if we don't invent any new techniques. Eventually, it'll get to the point where you could increase the limits on the decoder, but you'll end up using far more power, and getting no noticeable improvement. So, the limit would be the point when nobody can come up with any new techniques, encoders can perfectly measure perceptual quality (and therefore make perfect decisions about what techniques to use to get the best combination of bitrate vs quality), and improving existing techniques has a high cost and very low return. I don't think we're anywhere near there, yet. Lossless codecs, on the other hand, definitely do have a hard theoretical limit, because they can't discard data like lossy codecs can.
- lmm 14y agoWe're a long, long, way from the theoretical limit - you can tell by comparing the size of programmatically generated videos (e.g. 3D renderings, or videogame videos) with their source material. A "perfect" video codec would mean they were the same size, but at the moment a 256kb SNES rom and a few hundred bytes of buttonpresses will generate you a video that's easily in the 10s of megabytes (granted video codecs aren't optimized with snes gameplay videos as their primary target).
- snowwrestler 14y agoThese are two totally different things. Video codecs do not try to "discover" the equations that created the scene. They take the recorded data of the scene and then try to represent it "well enough" in a smaller number of bits. By analogy: knowing the equation for conservation of momentum does not help you find the smallest way to record the results of 1 million experimental collisions.
- lmm 14y ago>These are two totally different things. Video codecs do not try to "discover" the equations that created the scene. They take the recorded data of the scene and then try to represent it "well enough" in a smaller number of bits. Think of it in information-theory terms (e.g. Kolmogorov complexity). If the scene was created from no more than n bits of data, then it is possible to represent it in n bits, and a "theoretically perfect" video codec would do so. Video codecs really do try and "discover" the simplest representation of a scene (e.g. motion vectors are exactly that), and the things they can "understand" are getting more and more complex as video codecs advance (e.g. film grain).
- snowwrestler 14y agoLet's say you take an algorithm for generating the digits of pi, and run it on 2 computers. One you let run only a short time and it produces a string 100,000 digits long. The other you let run for a longer time and it produces a string one million digits long. Would you argue that these two strings should compress to the same size because the source code that generated each of them is the same size? edit: to clarify my question