- Overall Designs
PIK Encoder is a multi-kernel design because PIK is a very complex algorithm compared with other image codec. So the algorithm is divided into three kernel and connected by on-board DDR. The overall design are shown in the picture below.
- Kernel1
Kernel1 is responsable for transferring RGB data to XYB. Correlation Map and flooating-point Quant-field stream are also initialized in kernel1.
- Kernel2
Kernel2 firstly do DCT transformation using XYB data and then makes AC strategy decision. The AC stream is composed by several types of DCT streams (DCT4x4, DCT8x8, DCT16x61 and DCT32x32) by the information of AC strategy. The DC stream is generated from AC stream by partial selection. Quantizer takes float stream of AC and DC and quantize them into int16_t. Order data is generated by counting non-zero in quantized AC, then sorting the counting results. Quant-field stream is also quantized into int16_t in kernel2.
- Kernel3
Kernal3 is the encode part. It takes the data (quantized AC, quantized DC, order, AC strategy, block and quant-field) into the encoder and generates serilized token. The final ouput contains AC token, DC token and file headers in which are AC strategy, order,block and quant-field information.