comparison roqvideodec.c @ 5104:b8e8aa53f613 libavcodec

Rename cb field patch by Eric Lasota: [riot at icculus org] original thread: [FFmpeg-devel] [PATCH] RoQ decoder 4:4:4 update date: 06/05/2007 09:22 PM
author benoit
date Wed, 06 Jun 2007 10:40:05 +0000
parents 133329117637
children c2a475157299
comparison
equal deleted inserted replaced
5103:1deb3e53da27 5104:b8e8aa53f613
58 if((nv1 = chunk_arg >> 8) == 0) 58 if((nv1 = chunk_arg >> 8) == 0)
59 nv1 = 256; 59 nv1 = 256;
60 if((nv2 = chunk_arg & 0xff) == 0 && nv1 * 6 < chunk_size) 60 if((nv2 = chunk_arg & 0xff) == 0 && nv1 * 6 < chunk_size)
61 nv2 = 256; 61 nv2 = 256;
62 for(i = 0; i < nv1; i++) { 62 for(i = 0; i < nv1; i++) {
63 ri->cells[i].y[0] = *buf++; 63 ri->cb2x2[i].y[0] = *buf++;
64 ri->cells[i].y[1] = *buf++; 64 ri->cb2x2[i].y[1] = *buf++;
65 ri->cells[i].y[2] = *buf++; 65 ri->cb2x2[i].y[2] = *buf++;
66 ri->cells[i].y[3] = *buf++; 66 ri->cb2x2[i].y[3] = *buf++;
67 ri->cells[i].u = *buf++; 67 ri->cb2x2[i].u = *buf++;
68 ri->cells[i].v = *buf++; 68 ri->cb2x2[i].v = *buf++;
69 } 69 }
70 for(i = 0; i < nv2; i++) 70 for(i = 0; i < nv2; i++)
71 for(j = 0; j < 4; j++) 71 for(j = 0; j < 4; j++)
72 ri->qcells[i].idx[j] = *buf++; 72 ri->cb4x4[i].idx[j] = *buf++;
73 } 73 }
74 } 74 }
75 75
76 bpos = xpos = ypos = 0; 76 bpos = xpos = ypos = 0;
77 while(bpos < chunk_size) { 77 while(bpos < chunk_size) {
92 mx = 8 - (buf[bpos] >> 4) - ((signed char) (chunk_arg >> 8)); 92 mx = 8 - (buf[bpos] >> 4) - ((signed char) (chunk_arg >> 8));
93 my = 8 - (buf[bpos++] & 0xf) - ((signed char) chunk_arg); 93 my = 8 - (buf[bpos++] & 0xf) - ((signed char) chunk_arg);
94 ff_apply_motion_8x8(ri, xp, yp, mx, my); 94 ff_apply_motion_8x8(ri, xp, yp, mx, my);
95 break; 95 break;
96 case RoQ_ID_SLD: 96 case RoQ_ID_SLD:
97 qcell = ri->qcells + buf[bpos++]; 97 qcell = ri->cb4x4 + buf[bpos++];
98 ff_apply_vector_4x4(ri, xp, yp, ri->cells + qcell->idx[0]); 98 ff_apply_vector_4x4(ri, xp, yp, ri->cb2x2 + qcell->idx[0]);
99 ff_apply_vector_4x4(ri, xp+4, yp, ri->cells + qcell->idx[1]); 99 ff_apply_vector_4x4(ri, xp+4, yp, ri->cb2x2 + qcell->idx[1]);
100 ff_apply_vector_4x4(ri, xp, yp+4, ri->cells + qcell->idx[2]); 100 ff_apply_vector_4x4(ri, xp, yp+4, ri->cb2x2 + qcell->idx[2]);
101 ff_apply_vector_4x4(ri, xp+4, yp+4, ri->cells + qcell->idx[3]); 101 ff_apply_vector_4x4(ri, xp+4, yp+4, ri->cb2x2 + qcell->idx[3]);
102 break; 102 break;
103 case RoQ_ID_CCC: 103 case RoQ_ID_CCC:
104 for (k = 0; k < 4; k++) { 104 for (k = 0; k < 4; k++) {
105 x = xp; y = yp; 105 x = xp; y = yp;
106 if(k & 0x01) x += 4; 106 if(k & 0x01) x += 4;
121 mx = 8 - (buf[bpos] >> 4) - ((signed char) (chunk_arg >> 8)); 121 mx = 8 - (buf[bpos] >> 4) - ((signed char) (chunk_arg >> 8));
122 my = 8 - (buf[bpos++] & 0xf) - ((signed char) chunk_arg); 122 my = 8 - (buf[bpos++] & 0xf) - ((signed char) chunk_arg);
123 ff_apply_motion_4x4(ri, x, y, mx, my); 123 ff_apply_motion_4x4(ri, x, y, mx, my);
124 break; 124 break;
125 case RoQ_ID_SLD: 125 case RoQ_ID_SLD:
126 qcell = ri->qcells + buf[bpos++]; 126 qcell = ri->cb4x4 + buf[bpos++];
127 ff_apply_vector_2x2(ri, x, y, ri->cells + qcell->idx[0]); 127 ff_apply_vector_2x2(ri, x, y, ri->cb2x2 + qcell->idx[0]);
128 ff_apply_vector_2x2(ri, x+2, y, ri->cells + qcell->idx[1]); 128 ff_apply_vector_2x2(ri, x+2, y, ri->cb2x2 + qcell->idx[1]);
129 ff_apply_vector_2x2(ri, x, y+2, ri->cells + qcell->idx[2]); 129 ff_apply_vector_2x2(ri, x, y+2, ri->cb2x2 + qcell->idx[2]);
130 ff_apply_vector_2x2(ri, x+2, y+2, ri->cells + qcell->idx[3]); 130 ff_apply_vector_2x2(ri, x+2, y+2, ri->cb2x2 + qcell->idx[3]);
131 break; 131 break;
132 case RoQ_ID_CCC: 132 case RoQ_ID_CCC:
133 ff_apply_vector_2x2(ri, x, y, ri->cells + buf[bpos]); 133 ff_apply_vector_2x2(ri, x, y, ri->cb2x2 + buf[bpos]);
134 ff_apply_vector_2x2(ri, x+2, y, ri->cells + buf[bpos+1]); 134 ff_apply_vector_2x2(ri, x+2, y, ri->cb2x2 + buf[bpos+1]);
135 ff_apply_vector_2x2(ri, x, y+2, ri->cells + buf[bpos+2]); 135 ff_apply_vector_2x2(ri, x, y+2, ri->cb2x2 + buf[bpos+2]);
136 ff_apply_vector_2x2(ri, x+2, y+2, ri->cells + buf[bpos+3]); 136 ff_apply_vector_2x2(ri, x+2, y+2, ri->cb2x2 + buf[bpos+3]);
137 bpos += 4; 137 bpos += 4;
138 break; 138 break;
139 } 139 }
140 } 140 }
141 break; 141 break;