Mercurial > libavcodec.hg
changeset 1999:18d5eb75ae71 libavcodec
cleanup
author | michael |
---|---|
date | Sun, 02 May 2004 19:18:20 +0000 |
parents | 5bc1a9ad6c33 |
children | 86220e37a31e |
files | ffv1.c |
diffstat | 1 files changed, 19 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/ffv1.c Fri Apr 30 19:53:54 2004 +0000 +++ b/ffv1.c Sun May 02 19:18:20 2004 +0000 @@ -375,8 +375,8 @@ for(x=0; x<w; x++){ int diff, context; - context= get_context(s, sample[1]+x, sample[0]+x, sample[2]+x); - diff= sample[1][x] - predict(sample[1]+x, sample[0]+x); + context= get_context(s, sample[0]+x, sample[1]+x, sample[2]+x); + diff= sample[0][x] - predict(sample[0]+x, sample[1]+x); if(context < 0){ context = -context; @@ -429,25 +429,22 @@ } static void encode_plane(FFV1Context *s, uint8_t *src, int w, int h, int stride, int plane_index){ - int x,y; - int_fast16_t sample_buffer[3][w+6]; - int_fast16_t *sample[3]= {sample_buffer[0]+3, sample_buffer[1]+3, sample_buffer[2]+3}; + int x,y,i; + const int ring_size=2; + int_fast16_t sample_buffer[ring_size][w+6], *sample[ring_size]; s->run_index=0; memset(sample_buffer, 0, sizeof(sample_buffer)); for(y=0; y<h; y++){ - int_fast16_t *temp= sample[0]; //FIXME try a normal buffer - - sample[0]= sample[1]; - sample[1]= sample[2]; - sample[2]= temp; + for(i=0; i<ring_size; i++) + sample[i]= sample_buffer[(h+i-y)%ring_size]+3; - sample[1][-1]= sample[0][0 ]; - sample[0][ w]= sample[0][w-1]; + sample[0][-1]= sample[1][0 ]; + sample[1][ w]= sample[1][w-1]; //{START_TIMER for(x=0; x<w; x++){ - sample[1][x]= src[x + stride*y]; + sample[0][x]= src[x + stride*y]; } encode_line(s, w, sample, plane_index, 8); //STOP_TIMER("encode line")} @@ -455,17 +452,18 @@ } static void encode_rgb_frame(FFV1Context *s, uint32_t *src, int w, int h, int stride){ - int x, y, p; - int_fast16_t sample_buffer[3][2][w+6]; - int_fast16_t *sample[3][2]= { - {sample_buffer[0][0]+3, sample_buffer[0][1]+3}, - {sample_buffer[1][0]+3, sample_buffer[1][1]+3}, - {sample_buffer[2][0]+3, sample_buffer[2][1]+3}}; + int x, y, p, i; + const int ring_size=2; + int_fast16_t sample_buffer[3][ring_size][w+6], *sample[3][ring_size]; s->run_index=0; memset(sample_buffer, 0, sizeof(sample_buffer)); for(y=0; y<h; y++){ + for(i=0; i<ring_size; i++) + for(p=0; p<3; p++) + sample[p][i]= sample_buffer[p][(h+i-y)%ring_size]+3; + for(x=0; x<w; x++){ int v= src[x + stride*y]; int b= v&0xFF; @@ -485,13 +483,8 @@ sample[2][0][x]= r; } for(p=0; p<3; p++){ - int_fast16_t *temp= sample[p][0]; //FIXME try a normal buffer - - sample[p][0]= sample[p][1]; - sample[p][1]= temp; - - sample[p][1][-1]= sample[p][0][0 ]; - sample[p][0][ w]= sample[p][0][w-1]; + sample[p][0][-1]= sample[p][1][0 ]; + sample[p][1][ w]= sample[p][1][w-1]; encode_line(s, w, sample[p], FFMIN(p, 1), 9); } }