|
|
|
@ -2467,7 +2467,8 @@ static av_always_inline void add_yblock(SnowContext *s, int sliced, slice_buffer |
|
|
|
|
|
|
|
|
|
if(b_w<=0 || b_h<=0) return; |
|
|
|
|
|
|
|
|
|
assert(src_stride > 2*MB_SIZE + 5); |
|
|
|
|
assert(src_stride > 2*MB_SIZE + 5); |
|
|
|
|
|
|
|
|
|
if(!sliced && offset_dst) |
|
|
|
|
dst += src_x + src_y*dst_stride; |
|
|
|
|
dst8+= src_x + src_y*src_stride; |
|
|
|
@ -3531,12 +3532,12 @@ static void update_last_header_values(SnowContext *s){ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
s->last_spatial_decomposition_type= s->spatial_decomposition_type; |
|
|
|
|
s->last_spatial_decomposition_type = s->spatial_decomposition_type; |
|
|
|
|
s->last_qlog = s->qlog; |
|
|
|
|
s->last_qbias = s->qbias; |
|
|
|
|
s->last_mv_scale = s->mv_scale; |
|
|
|
|
s->last_block_max_depth = s->block_max_depth; |
|
|
|
|
s->last_spatial_decomposition_count= s->spatial_decomposition_count; |
|
|
|
|
s->last_spatial_decomposition_count = s->spatial_decomposition_count; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void decode_qlogs(SnowContext *s){ |
|
|
|
@ -4316,7 +4317,7 @@ redo_frame: |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* if(QUANTIZE2)
|
|
|
|
|
/* if(QUANTIZE2)
|
|
|
|
|
dwt_quantize(s, p, s->spatial_dwt_buffer, w, h, w, s->spatial_decomposition_type); |
|
|
|
|
else*/ |
|
|
|
|
ff_spatial_dwt(s->spatial_dwt_buffer, w, h, w, s->spatial_decomposition_type, s->spatial_decomposition_count); |
|
|
|
@ -4394,6 +4395,7 @@ redo_frame: |
|
|
|
|
s->avctx->error[plane_index] += error; |
|
|
|
|
s->current_picture.error[plane_index] = error; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
update_last_header_values(s); |
|
|
|
@ -4522,7 +4524,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const |
|
|
|
|
int x, y; |
|
|
|
|
int decode_state[MAX_DECOMPOSITIONS][4][1]; /* Stored state info for unpack_coeffs. 1 variable per instance. */ |
|
|
|
|
|
|
|
|
|
if(s->avctx->debug&2048){ |
|
|
|
|
if(s->avctx->debug&2048){ |
|
|
|
|
memset(s->spatial_dwt_buffer, 0, sizeof(DWTELEM)*w*h); |
|
|
|
|
predict_plane(s, s->spatial_idwt_buffer, plane_index, 1); |
|
|
|
|
|
|
|
|
@ -4532,18 +4534,18 @@ if(s->avctx->debug&2048){ |
|
|
|
|
s->mconly_picture.data[plane_index][y*s->mconly_picture.linesize[plane_index] + x]= v; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
{ |
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
{ |
|
|
|
|
const int mb_h= s->b_height << s->block_max_depth; |
|
|
|
|
const int block_size = MB_SIZE >> s->block_max_depth; |
|
|
|
|
const int block_w = plane_index ? block_size/2 : block_size; |
|
|
|
@ -4617,7 +4619,8 @@ if(s->avctx->debug&2048){ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
slice_buffer_flush(&s->sb); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
emms_c(); |
|
|
|
@ -4629,9 +4632,9 @@ if(s->avctx->debug&2048){ |
|
|
|
|
av_free(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3] - EDGE_WIDTH*(1+s->current_picture.linesize[i%3])); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!(s->avctx->debug&2048)) |
|
|
|
|
if(!(s->avctx->debug&2048)) |
|
|
|
|
*picture= s->current_picture; |
|
|
|
|
else |
|
|
|
|
else |
|
|
|
|
*picture= s->mconly_picture; |
|
|
|
|
|
|
|
|
|
*data_size = sizeof(AVFrame); |
|
|
|
@ -4736,10 +4739,10 @@ int main(void){ |
|
|
|
|
if(j!=i*i*i/3*FFABS(i)) printf("fsck: %d != %d\n", i, j); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
{ |
|
|
|
|
int level, orientation, x, y; |
|
|
|
|
int64_t errors[8][4]; |
|
|
|
|
int64_t g=0; |
|
|
|
|
{ |
|
|
|
|
int level, orientation, x, y; |
|
|
|
|
int64_t errors[8][4]; |
|
|
|
|
int64_t g=0; |
|
|
|
|
|
|
|
|
|
memset(errors, 0, sizeof(errors)); |
|
|
|
|
s.spatial_decomposition_count=3; |
|
|
|
@ -4820,7 +4823,7 @@ int64_t g=0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
#endif /* TEST */ |
|
|
|
|