@@ -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]; | ||||