60 #define SKIP_PREFIX 0x8400
61 #define SKIPS_MAX 0x0FFF
62 #define MKRGB555(in, off) ((in[off] << 10) | (in[off + 1] << 5) | (in[off + 2]))
64 static const int remap[16] = { 0, 1, 4, 5, 2, 3, 6, 7, 8, 9, 12, 13, 10, 11, 14, 15 };
67 const AVFrame *pict,
int *got_packet)
76 int i, j, k, x, y, ret;
93 for(y = 0; y < avctx->
height; y += 4){
94 for(x = 0; x < avctx->
width; x += 4){
96 int bestscore = INT_MAX;
100 for(j = 0; j < 4; j++){
101 for(i = 0; i < 4; i++){
102 uint16_t val = src[x + i - j*p->
linesize[0]/2];
103 for(k = 0; k < 3; k++){
104 c->
block[(i + j*4)*3 + k] =
105 c->
block2[
remap[i + j*4]*3 + k] = (val >> (10-k*5)) & 0x1F;
111 for(j = 0; j < 4; j++){
112 for(i = 0; i < 4*3; i++){
113 int t = prevptr[x*3 + i - j*3*avctx->
width] - c->
block[i + j*4*3];
125 for(j = 0; j < 4; j++){
126 for(i = 0; i < 4; i++){
127 for(k = 0; k < 3; k++){
128 int t = c->
avg[k] - c->
block[(i+j*4)*3+k];
135 if(score < bestscore){
145 for(i = 0; i < 3; i++)
147 for(i = 0; i < 16; i++)
150 for(j = 0; j < 4; j++){
151 for(i = 0; i < 4; i++){
152 for(k = 0; k < 3; k++){
160 if(score < bestscore){
166 for(i = 0; i < 4; i++){
172 for(i = 0; i < 3; i++)
174 for(i = 12; i < 16; i++)
177 for(j = 0; j < 4; j++){
178 for(i = 0; i < 4; i++){
179 for(k = 0; k < 3; k++){
187 if(score < bestscore){
203 bytestream_put_le16(&dst,
MKRGB555(c->
avg,0) | 0x8000);
204 for(j = 0; j < 4; j++)
205 for(i = 0; i < 4; i++)
206 for(k = 0; k < 3; k++)
207 prevptr[x*3 + i*3 + k - j*3*avctx->
width] = c->
avg[k];
210 for(j = 0; j < 4; j++){
211 for(i = 0; i < 4; i++){
212 flags |= (c->
output[i + j*4]^1) << (i + j*4);
213 for(k = 0; k < 3; k++)
217 bytestream_put_le16(&dst, flags);
222 for(j = 0; j < 4; j++){
223 for(i = 0; i < 4; i++){
225 for(k = 0; k < 3; k++)
229 bytestream_put_le16(&dst, flags);
231 for(i = 3; i < 24; i += 3)
237 prevptr -= avctx->
width * 3 * 4;
242 bytestream_put_byte(&dst, 0);
243 bytestream_put_byte(&dst, 0);
254 pkt->
size = dst - buf;