59 #define SKIP_PREFIX 0x8400
60 #define SKIPS_MAX 0x03FF
61 #define MKRGB555(in, off) ((in[off] << 10) | (in[off + 1] << 5) | (in[off + 2]))
63 static const int remap[16] = { 0, 1, 4, 5, 2, 3, 6, 7, 8, 9, 12, 13, 10, 11, 14, 15 };
66 const AVFrame *pict,
int *got_packet)
75 int i, j, k, x,
y,
ret;
91 for(y = 0; y < avctx->
height; y += 4){
92 for(x = 0; x < avctx->
width; x += 4){
94 int bestscore = INT_MAX;
98 for(j = 0; j < 4; j++){
99 for(i = 0; i < 4; i++){
101 for(k = 0; k < 3; k++){
102 c->
block[(i + j*4)*3 + k] =
103 c->
block2[
remap[i + j*4]*3 + k] = (val >> (10-k*5)) & 0x1F;
109 for(j = 0; j < 4; j++){
110 for(i = 0; i < 4*3; i++){
111 int t = prevptr[x*3 + i - j*3*avctx->
width] - c->
block[i + j*4*3];
115 bestscore /= quality;
123 for(j = 0; j < 4; j++){
124 for(i = 0; i < 4; i++){
125 for(k = 0; k < 3; k++){
126 int t = c->
avg[k] - c->
block[(i+j*4)*3+k];
133 if(score < bestscore){
143 for(i = 0; i < 3; i++)
145 for(i = 0; i < 16; i++)
148 for(j = 0; j < 4; j++){
149 for(i = 0; i < 4; i++){
150 for(k = 0; k < 3; k++){
158 if(score < bestscore){
164 for(i = 0; i < 4; i++){
170 for(i = 0; i < 3; i++)
172 for(i = 12; i < 16; i++)
175 for(j = 0; j < 4; j++){
176 for(i = 0; i < 4; i++){
177 for(k = 0; k < 3; k++){
185 if(score < bestscore){
201 bytestream_put_le16(&dst,
MKRGB555(c->
avg,0) | 0x8000);
202 for(j = 0; j < 4; j++)
203 for(i = 0; i < 4; i++)
204 for(k = 0; k < 3; k++)
205 prevptr[x*3 + i*3 + k - j*3*avctx->
width] = c->
avg[k];
208 for(j = 0; j < 4; j++){
209 for(i = 0; i < 4; i++){
210 flags |= (c->
output[i + j*4]^1) << (i + j*4);
211 for(k = 0; k < 3; k++)
215 bytestream_put_le16(&dst, flags);
220 for(j = 0; j < 4; j++){
221 for(i = 0; i < 4; i++){
223 for(k = 0; k < 3; k++)
227 bytestream_put_le16(&dst, flags);
229 for(i = 3; i < 24; i += 3)
235 prevptr -= avctx->
width * 3 * 4;
240 bytestream_put_byte(&dst, 0);
241 bytestream_put_byte(&dst, 0);