SubBand * correlate_band;
static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, uint8_t *buf, int buf_size){    SnowContext *s = avctx->priv_data;    RangeCoder * const c= &s->c;    int bytes_read;    AVFrame *picture = data;    int level, orientation, plane_index;    ff_init_range_decoder(c, buf, buf_size);    ff_build_rac_states(c, 0.05*(1LL<<32), 256-8);    s->current_picture.pict_type= FF_I_TYPE; //FIXME I vs. P    decode_header(s);    if(!s->block) alloc_blocks(s);    frame_start(s);    //keyframe flag dupliaction mess FIXME    if(avctx->debug&FF_DEBUG_PICT_INFO)        av_log(avctx, AV_LOG_ERROR, "keyframe:%d qlog:%d\n", s->keyframe, s->qlog);        decode_blocks(s);    for(plane_index=0; plane_index<3; plane_index++){        Plane *p= &s->plane[plane_index];        int w= p->width;        int h= p->height;        int x, y;        int decode_state[MAX_DECOMPOSITIONS][4][1]; /* Stored state info for unpack_coeffs. 1 variable per instance. */        SubBand * correlate_band;        if(s->avctx->debug&2048){        memset(s->spatial_dwt_buffer, 0, sizeof(DWTELEM)*w*h);        predict_plane(s, s->spatial_dwt_buffer, plane_index, 1);        for(y=0; y<h; y++){            for(x=0; x<w; x++){                int v= s->current_picture.data[plane_index][y*s->current_picture.linesize[plane_index] + x];                s->mconly_picture.data[plane_index][y*s->mconly_picture.linesize[plane_index] + x]= v;            }        }}{   START_TIMER    for(level=0; level<s->spatial_decomposition_count; level++){        for(orientation=level ? 1 : 0; orientation<4; orientation++){            SubBand *b= &p->band[level][orientation];            unpack_coeffs(s, b, b->parent, orientation);        }    }    STOP_TIMER("unpack coeffs");}