BTIC2D - cr88192/bgbtech_misc GitHub Wiki

BTIC2D was an experimental DCT based codec.

Each macroblock consists of an 8x8 DCT Y block followed by 4x4 DCT UV blocks.

Coefficients are encoded in zigzag order, using AdSRice.

  • Values greater than or equal to zero encode coefficient values.
    • These values have an additional sign-fold.
  • Values less than zero encode a run of zeroes.
Possibility 2:
  • AdSRice: Values!=0 encode coeff value.
  • 0 escapes a zero run (AdRice)
    • 0: EOB
    • 1+: Encodes the number of zeroes.
Possibility 2-1:
  • Store an image with 1 pixel per macroblock;
  • Colorspace is YUVDyuv;
  • DCT blocks encode pixels relative to the YUVDyuv space;
    • Y=Cy+Ly*Dy
    • U=Cu+Ly*Du+Lu
    • V=Cv+Ly*Dv+Lv
  • Add multiple block codings.
Block-level image data uses prediction and linear quantization.
  • Block-Level Cmds
  • Cy, Dy, YBlk8x8
  • Cu, Du, UBlk4x4
  • Cv, Dv, VBlk4x4
 A B
 C x
 P=(3*B+3*C-2*A)/4

Exp Rice Table

  0- 7  0- 7  0
  8-11  8-15  1
 12-15 16-31  2
 16-19 32-63  3
 ...

Exponential coding with AdRice used for coefficients, with the value being sign folded. Zeroes remain special, and are used for EOB or escape-coding runs of zeroes.

Use a mask table.

  • xvuy-VUYs
  • s: sticky
  • YUVyuv: indicates which components are updated.
Block Formats
  • 0, ZigZag+DCT
  • 1, ZigZag+WHT
⚠️ **GitHub.com Fallback** ⚠️