|
|
|
@ -118,8 +118,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
|
|
|
|
} |
|
|
|
|
// try to find optimal value to fill whole 4x4 block
|
|
|
|
|
score = 0; |
|
|
|
|
ff_init_elbg(c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); |
|
|
|
|
ff_do_elbg (c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); |
|
|
|
|
avpriv_init_elbg(c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); |
|
|
|
|
avpriv_do_elbg (c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); |
|
|
|
|
if(c->avg[0] == 1) // red component = 1 will be written as skip code
|
|
|
|
|
c->avg[0] = 0; |
|
|
|
|
for(j = 0; j < 4; j++){ |
|
|
|
@ -138,8 +138,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
|
|
|
|
} |
|
|
|
|
// search for optimal filling of 2-color block
|
|
|
|
|
score = 0; |
|
|
|
|
ff_init_elbg(c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); |
|
|
|
|
ff_do_elbg (c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); |
|
|
|
|
avpriv_init_elbg(c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); |
|
|
|
|
avpriv_do_elbg (c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); |
|
|
|
|
// last output value should be always 1, swap codebooks if needed
|
|
|
|
|
if(!c->output[15]){ |
|
|
|
|
for(i = 0; i < 3; i++) |
|
|
|
@ -164,8 +164,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
|
|
|
|
// search for optimal filling of 2-color 2x2 subblocks
|
|
|
|
|
score = 0; |
|
|
|
|
for(i = 0; i < 4; i++){ |
|
|
|
|
ff_init_elbg(c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); |
|
|
|
|
ff_do_elbg (c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); |
|
|
|
|
avpriv_init_elbg(c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); |
|
|
|
|
avpriv_do_elbg (c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); |
|
|
|
|
} |
|
|
|
|
// last value should be always 1, swap codebooks if needed
|
|
|
|
|
if(!c->output2[15]){ |
|
|
|
|