Preprocessor, Postprocessor or Encoder
We are constantly asked whether our IQ264 product is an encoder, a preprocessor, or a postprocessor. The response? None of the above. It is a plugin that is integrated with an encoder, currently x264. But what is the difference between preprocessing and postprocessing techniques and what IQ264 is doing? Let’s take a closer look.
The diagram above is a depiction of the encoding process. An encoder compresses an input video to produce a smaller file size. The amount of compression and how compression occurs depends on the encoder and the encoder settings. A codec (encoder and decoder) is needed to view a video after it is produced, as inmost cases a raw video is too large to store and move across networks.
Preprocessing and postprocessing techniques sit outside the encoder but affect the resulting bitstream.
A preprocessing technique operates on the input video prior to any encoding operation. Some preprocessing techniques are lossy, meaning that the original input video is not recoverable after the preprocessing technique has been applied. Whether a preprocessing technique is lossy or lossless, it changes the characteristics of the input video prior to encoding. This means that the encoder operates on a different video than the input video.
A postprocessing technique operates on the compressed bitstream, after encoding has completed. A common type of postprocessing technique is transcoding (also sometimes called transrating), where an already-encoded video is re-encoded by either a different encoder or by the same encoder at a different bitrate.
The IQ264 plugin is accessed within the encoding process. It interacts with the quantization step of the encoder. That is, our technology is used to adjust the quantization values as encoding is occurring, not before or after. This adjustment is done via algorithms that approximate the human visual system, which we call perceptual quality optimization (PQO).
Traditional encoders employ a process called rate-distortion optimization (RDO) on a block-by-block basis, determining the best encoding solution for each data block as the one that balances low error and low encoding cost (bits). Typically, RDO treats all errors in a video frame equally, and the RDO solution for a given block is chosen independently of solutions in neighboring blocks. However, the human visual system (HVS) does not perceive video content this way: some parts of a video frame are more noticeable to human observers than others, depending on temporal and spatial history and context.
What this means is that the relative encoding quality of a given data block should depend on the quality of (spatially and temporally) neighboring blocks. Perceptual quality optimization (PQO) takes considerations such as these about what is most noticeable to the HVS and incorporates them into the encoding process to produce encodings that are perceptually (“subjectively”) superior.
The result is better video quality, at the same bitrate, using x264 with IQ264 over x264 by itself. Also, no additional hardware or software is needed to use IQ264. As IQ264 is a plugin, it can be added seamlessly to an x264 encoder without changes to existing workflows.
If you want to understand more about perceptual quality optimization, with additional discussion about the differences between within-encoder optimization techniques such as IQ264 and pre/post-processing techniques, see the following article: Understanding Industry Approaches to Perceptual Optimization.