Overview - 2023.2 English

Vitis Libraries

Release Date
2023-12-20
Version
2023.2 English

JXL Encoder demos contain 3 kernels which show acceleration cases on different parts of JPEG-XL encoder. JxlEnc_lossy_enc_compute kernel mainly responsible for accelerating AC and DC generation and processing. The input is XYB image data and other componets such as maskfield, raw quantfield and aq maps. The output is AC and DC coefficients, and block order and strategy and quantfield for next steps. JxlEnc_ans_initHistogram and JxlEnc_ans_clusterHistogram are two parts of ANS encoding, accelerating on these two kernels responsible for generation of ACtokens and histograms. The internel block design is show as below.

The design of the JxlEnc_lossy_enc_compute kernel is as follows:

Block Design of JxlEnc_lossy_enc_compute

LoadData is responsible for load host data to internal stream and pass to next step. Then, a parallel computing of DCT8x8, DCT16x16 and DCT32x32 is processed by VarDCT and the result is sending to acs_heuritic which further compute ac strategy for each image block. CFL is responsible for color correlation of YtoX and YtoB and also pass quantfield and acs to next module. In Compute_CoeffAC, ac coefficients are generated and then ouput to AXI writeout. All order of image blocks are computed after dataflow processing of AC and DC coefficients, its’ result are then send to AXI writeout.

The design of the JxlEnc_ans_initHistogram and JxlEnc_ans_clusterHistogram is as follows:

Block Design of JxlEnc_ans_initHistogram AND JxlEnc_ans_initHistogram

Kernel JxlEnc_ans_initHistogram and JxlEnc_ans_clusterHistogram are designed for accelerating ANS encoding. The JxlEnc_ans_initHistogram is processed within dataflow and parallely doing AC Tokenize and Histogram initiation. For JxlEnc_ans_clusterHistogram, it is processed in pipeline acceleration and generates all histograms for post-processing in JPEG-XL computing flow.