SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
The CAL DPCM decoder block only processes data tagged as DAT_PIX_FS, DAT_PIX_LS, DAT_PIX, DAT_PIX_LE and DAT_PIX_FE (as defined in Figure 8-9, CAL Data Pipeline TAGs). All other data types or data belonging to CPORTs where DPCM encode/decode is disabled, is simply forwarded. Software chooses which CPORT a given pixel processing context must process by setting the CAL_PIX_PROC_i[23:19] CPORT register bit-field to the CPORT ID. The DPCM decompression operation is selected though the CAL_PIX_PROC_i[9:5] DPCMD bit-field, and the DPCM compression operation is selected though the CAL_PIX_PROC_i[15:11] DPCME bit-field.
PIX_DAT_FS and PIX_DAT_LS tags initialize the DPCM encoder.
PIX_DAT_FS and PIX_DAT_LS tags initialize the DPCM decoder, except when the previous TAG received on that context was DPCM_INIT. DPCM_INIT copies the received word into the context status register of the DPCM decoder and discards the initialization word (that is, it is not forwarded to the next pipeline stage). The next word of four pixels received on that context is DPCM decoded and the usual initialization step is skipped. That feature is intended to enable DPCM decoding of an image in multiple vertical stripes without re-decoding each line from the beginning.
Codec | Predictor | Decode | Encode | Performance |
---|---|---|---|---|
10 - 8 - 10 | Predictor 1 | YES | YES | 4 px/cyc |
10 - 8 - 10 | Predictor 2 | - | - | - |
10 - 7 - 10 | Predictor 1 | YES | - | 4 px/cyc |
10 - 7 - 10 | Predictor 2 | YES | - | 1 px/cyc |
10 - 6 - 10 | Predictor 1 | YES | - | 4 px/cyc |
10 - 6 - 10 | Predictor 2 | YES | - | 1 px/cyc |
12 - 8 - 12 | Predictor 1 | YES | YES | 4 px/cyc |
12 - 8 - 12 | Predictor 2 | - | - | - |
12 - 7 - 12 | Predictor 1 | YES | - | 4 px/cyc |
12 - 7 - 12 | Predictor 2 | - | - | - |
12 - 6 - 12 | Predictor 1 | YES | - | 4 px/cyc |
12 - 6 - 12 | Predictor 2 | - | - | - |
14 - 10 - 14 | Predictor 1 | YES | YES | 4 px/cyc |
14 - 10 - 14 | Predictor 2 | - | - | - |
14 - 8 - 14 | Predictor 1 | YES | YES | 4 px/cyc |
14 - 8 - 14 | Predictor 2 | - | - | - |
16 - 12 - 16 | Predictor 1 | YES | YES | 4 px/cyc |
16 - 12 - 16 | Predictor 2 | - | - | - |
16 - 10 - 16 | Predictor 1 | YES | YES | 4 px/cyc |
16 - 10 - 16 | Predictor 2 | - | - | - |
16 - 8 - 16 | Predictor 1 | YES | YES | 4 px/cyc |
16 - 8 - 16 | Predictor 2 | - | - | - |
The DPCM encoder and decoder are independent. They preserve state for each of the pixel processing contexts (defined in CAL_HL_HWINFO[12:8] PCTX register bit-field), so that the encoder and the decoder context can be swapped with 4-pixel granularity.
The DPCM encoder and decoder can stall the incoming pixel from the pixel extraction block, if it arrives faster than what they can handle (that is, PREDICTOR2 selection or dataflow stalled by the pixel packing stage/Write DMA).