| @@ -22,9 +22,9 @@ | |||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "dwt.h" | #include "dwt.h" | ||||
| void ff_slice_buffer_init(slice_buffer *buf, int line_count, | |||||
| int max_allocated_lines, int line_width, | |||||
| IDWTELEM *base_buffer) | |||||
| int ff_slice_buffer_init(slice_buffer *buf, int line_count, | |||||
| int max_allocated_lines, int line_width, | |||||
| IDWTELEM *base_buffer) | |||||
| { | { | ||||
| int i; | int i; | ||||
| @@ -53,6 +53,7 @@ void ff_slice_buffer_init(slice_buffer *buf, int line_count, | |||||
| } | } | ||||
| buf->data_stack_top = max_allocated_lines - 1; | buf->data_stack_top = max_allocated_lines - 1; | ||||
| return 0; | |||||
| } | } | ||||
| IDWTELEM *ff_slice_buffer_load_line(slice_buffer *buf, int line) | IDWTELEM *ff_slice_buffer_load_line(slice_buffer *buf, int line) | ||||
| @@ -137,9 +137,9 @@ typedef struct DWTContext { | |||||
| : ff_slice_buffer_load_line((slice_buf), \ | : ff_slice_buffer_load_line((slice_buf), \ | ||||
| (line_num))) | (line_num))) | ||||
| void ff_slice_buffer_init(slice_buffer *buf, int line_count, | |||||
| int max_allocated_lines, int line_width, | |||||
| IDWTELEM *base_buffer); | |||||
| int ff_slice_buffer_init(slice_buffer *buf, int line_count, | |||||
| int max_allocated_lines, int line_width, | |||||
| IDWTELEM *base_buffer); | |||||
| void ff_slice_buffer_release(slice_buffer *buf, int line); | void ff_slice_buffer_release(slice_buffer *buf, int line); | ||||
| void ff_slice_buffer_flush(slice_buffer *buf); | void ff_slice_buffer_flush(slice_buffer *buf); | ||||
| void ff_slice_buffer_destroy(slice_buffer *buf); | void ff_slice_buffer_destroy(slice_buffer *buf); | ||||
| @@ -396,7 +396,12 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac | |||||
| // realloc slice buffer for the case that spatial_decomposition_count changed | // realloc slice buffer for the case that spatial_decomposition_count changed | ||||
| ff_slice_buffer_destroy(&s->sb); | ff_slice_buffer_destroy(&s->sb); | ||||
| ff_slice_buffer_init(&s->sb, s->plane[0].height, (MB_SIZE >> s->block_max_depth) + s->spatial_decomposition_count * 8 + 1, s->plane[0].width, s->spatial_idwt_buffer); | |||||
| if ((res = ff_slice_buffer_init(&s->sb, s->plane[0].height, | |||||
| (MB_SIZE >> s->block_max_depth) + | |||||
| s->spatial_decomposition_count * 8 + 1, | |||||
| s->plane[0].width, | |||||
| s->spatial_idwt_buffer)) < 0) | |||||
| return res; | |||||
| for(plane_index=0; plane_index<3; plane_index++){ | for(plane_index=0; plane_index<3; plane_index++){ | ||||
| Plane *p= &s->plane[plane_index]; | Plane *p= &s->plane[plane_index]; | ||||