+}
+
+void dodct(fblock_t*fb)
+{
+ dct(fb->y1); dct(fb->y2); dct(fb->y3); dct(fb->y4);
+ dct(fb->u); dct(fb->v);
+ fzigzag(fb->y1);
+ fzigzag(fb->y2);
+ fzigzag(fb->y3);
+ fzigzag(fb->y4);
+ fzigzag(fb->u);
+ fzigzag(fb->v);
+}
+
+void quantize(fblock_t*fb, block_t*b, int has_dc, int quant)
+{
+ quantize8x8(fb->y1,b->y1,has_dc,quant);
+ quantize8x8(fb->y2,b->y2,has_dc,quant);
+ quantize8x8(fb->y3,b->y3,has_dc,quant);
+ quantize8x8(fb->y4,b->y4,has_dc,quant);
+ quantize8x8(fb->u,b->u,has_dc,quant);
+ quantize8x8(fb->v,b->v,has_dc,quant);
+}
+
+void getblockpatterns(block_t*b, int*cbpybits,int*cbpcbits, int has_dc)
+{
+ *cbpybits = 0;
+ *cbpcbits = 0;
+
+ *cbpybits|=hascoef(b->y1, has_dc)*8;
+ *cbpybits|=hascoef(b->y2, has_dc)*4;
+ *cbpybits|=hascoef(b->y3, has_dc)*2;
+ *cbpybits|=hascoef(b->y4, has_dc)*1;
+
+ *cbpcbits|=hascoef(b->u, has_dc)*2;
+ *cbpcbits|=hascoef(b->v, has_dc)*1;
+}
+
+void setQuant(TAG*tag, int dquant)
+{
+ int code = 0;
+ /* 00 01 10 11
+ -1 -2 +1 +2
+ */
+ if(dquant == -1) {
+ swf_SetBits(tag, 0x0, 2);
+ } else if(dquant == -2) {
+ swf_SetBits(tag, 0x1, 2);
+ } else if(dquant == +1) {
+ swf_SetBits(tag, 0x2, 2);
+ } else if(dquant == +2) {
+ swf_SetBits(tag, 0x3, 2);
+ } else {
+ assert(0*strlen("invalid dquant"));
+ }
+}
+
+void change_quant(int quant, int*dquant)
+{
+ /* TODO */
+ *dquant = 0;