Originally committed as revision 22523 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.6
@@ -22,7 +22,7 @@ | |||||
#include "dsputil.h" | #include "dsputil.h" | ||||
#include "dwt.h" | #include "dwt.h" | ||||
void slice_buffer_init(slice_buffer * buf, int line_count, int max_allocated_lines, int line_width, IDWTELEM * base_buffer) | |||||
void ff_slice_buffer_init(slice_buffer * buf, int line_count, int max_allocated_lines, int line_width, IDWTELEM * base_buffer) | |||||
{ | { | ||||
int i; | int i; | ||||
@@ -40,7 +40,7 @@ void slice_buffer_init(slice_buffer * buf, int line_count, int max_allocated_lin | |||||
buf->data_stack_top = max_allocated_lines - 1; | buf->data_stack_top = max_allocated_lines - 1; | ||||
} | } | ||||
IDWTELEM * slice_buffer_load_line(slice_buffer * buf, int line) | |||||
IDWTELEM * ff_slice_buffer_load_line(slice_buffer * buf, int line) | |||||
{ | { | ||||
IDWTELEM * buffer; | IDWTELEM * buffer; | ||||
@@ -56,7 +56,7 @@ IDWTELEM * slice_buffer_load_line(slice_buffer * buf, int line) | |||||
return buffer; | return buffer; | ||||
} | } | ||||
void slice_buffer_release(slice_buffer * buf, int line) | |||||
void ff_slice_buffer_release(slice_buffer * buf, int line) | |||||
{ | { | ||||
IDWTELEM * buffer; | IDWTELEM * buffer; | ||||
@@ -69,19 +69,19 @@ void slice_buffer_release(slice_buffer * buf, int line) | |||||
buf->line[line] = NULL; | buf->line[line] = NULL; | ||||
} | } | ||||
void slice_buffer_flush(slice_buffer * buf) | |||||
void ff_slice_buffer_flush(slice_buffer * buf) | |||||
{ | { | ||||
int i; | int i; | ||||
for(i = 0; i < buf->line_count; i++){ | for(i = 0; i < buf->line_count; i++){ | ||||
if (buf->line[i]) | if (buf->line[i]) | ||||
slice_buffer_release(buf, i); | |||||
ff_slice_buffer_release(buf, i); | |||||
} | } | ||||
} | } | ||||
void slice_buffer_destroy(slice_buffer * buf) | |||||
void ff_slice_buffer_destroy(slice_buffer * buf) | |||||
{ | { | ||||
int i; | int i; | ||||
slice_buffer_flush(buf); | |||||
ff_slice_buffer_flush(buf); | |||||
for(i = buf->data_count - 1; i >= 0; i--){ | for(i = buf->data_count - 1; i >= 0; i--){ | ||||
av_freep(&buf->data_stack[i]); | av_freep(&buf->data_stack[i]); | ||||
@@ -817,11 +817,11 @@ static int w97_16_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int | |||||
return w_c(v, pix1, pix2, line_size, 16, h, 0); | return w_c(v, pix1, pix2, line_size, 16, h, 0); | ||||
} | } | ||||
int w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h){ | |||||
int ff_w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h){ | |||||
return w_c(v, pix1, pix2, line_size, 32, h, 1); | return w_c(v, pix1, pix2, line_size, 32, h, 1); | ||||
} | } | ||||
int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h){ | |||||
int ff_w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h){ | |||||
return w_c(v, pix1, pix2, line_size, 32, h, 0); | return w_c(v, pix1, pix2, line_size, 32, h, 0); | ||||
} | } | ||||
@@ -126,21 +126,21 @@ typedef struct DWTContext { | |||||
#define W_DS 9 | #define W_DS 9 | ||||
#endif | #endif | ||||
#define slice_buffer_get_line(slice_buf, line_num) ((slice_buf)->line[line_num] ? (slice_buf)->line[line_num] : slice_buffer_load_line((slice_buf), (line_num))) | |||||
//#define slice_buffer_get_line(slice_buf, line_num) (slice_buffer_load_line((slice_buf), (line_num))) | |||||
#define slice_buffer_get_line(slice_buf, line_num) ((slice_buf)->line[line_num] ? (slice_buf)->line[line_num] : ff_slice_buffer_load_line((slice_buf), (line_num))) | |||||
//#define slice_buffer_get_line(slice_buf, line_num) (ff_slice_buffer_load_line((slice_buf), (line_num))) | |||||
void slice_buffer_init(slice_buffer * buf, int line_count, int max_allocated_lines, int line_width, IDWTELEM * base_buffer); | |||||
void slice_buffer_release(slice_buffer * buf, int line); | |||||
void slice_buffer_flush(slice_buffer * buf); | |||||
void slice_buffer_destroy(slice_buffer * buf); | |||||
IDWTELEM * slice_buffer_load_line(slice_buffer * buf, int line); | |||||
void 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_flush(slice_buffer * buf); | |||||
void ff_slice_buffer_destroy(slice_buffer * buf); | |||||
IDWTELEM * ff_slice_buffer_load_line(slice_buffer * buf, int line); | |||||
void ff_snow_vertical_compose97i(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width); | void ff_snow_vertical_compose97i(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width); | ||||
void ff_snow_horizontal_compose97i(IDWTELEM *b, int width); | void ff_snow_horizontal_compose97i(IDWTELEM *b, int width); | ||||
void ff_snow_inner_add_yblock(const uint8_t *obmc, const int obmc_stride, uint8_t * * block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer * sb, int add, uint8_t * dst8); | void ff_snow_inner_add_yblock(const uint8_t *obmc, const int obmc_stride, uint8_t * * block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer * sb, int add, uint8_t * dst8); | ||||
int w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h); | |||||
int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h); | |||||
int ff_w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h); | |||||
int ff_w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h); | |||||
void ff_spatial_dwt(int *buffer, int width, int height, int stride, int type, int decomposition_count); | void ff_spatial_dwt(int *buffer, int width, int height, int stride, int type, int decomposition_count); | ||||
@@ -2081,8 +2081,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac | |||||
common_init_after_header(avctx); | common_init_after_header(avctx); | ||||
// realloc slice buffer for the case that spatial_decomposition_count changed | // realloc slice buffer for the case that spatial_decomposition_count changed | ||||
slice_buffer_destroy(&s->sb); | |||||
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); | |||||
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); | |||||
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]; | ||||
@@ -2199,10 +2199,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac | |||||
y = FFMIN(p->height, slice_starty); | y = FFMIN(p->height, slice_starty); | ||||
end_y = FFMIN(p->height, slice_h); | end_y = FFMIN(p->height, slice_h); | ||||
while(y < end_y) | while(y < end_y) | ||||
slice_buffer_release(&s->sb, y++); | |||||
ff_slice_buffer_release(&s->sb, y++); | |||||
} | } | ||||
slice_buffer_flush(&s->sb); | |||||
ff_slice_buffer_flush(&s->sb); | |||||
} | } | ||||
} | } | ||||
@@ -2228,7 +2228,7 @@ static av_cold int decode_end(AVCodecContext *avctx) | |||||
{ | { | ||||
SnowContext *s = avctx->priv_data; | SnowContext *s = avctx->priv_data; | ||||
slice_buffer_destroy(&s->sb); | |||||
ff_slice_buffer_destroy(&s->sb); | |||||
common_end(s); | common_end(s); | ||||
@@ -2829,9 +2829,9 @@ static int get_block_rd(SnowContext *s, int mb_x, int mb_y, int plane_index, con | |||||
* to improve the score of the whole frame, thus iterative motion | * to improve the score of the whole frame, thus iterative motion | ||||
* estimation does not always converge. */ | * estimation does not always converge. */ | ||||
if(s->avctx->me_cmp == FF_CMP_W97) | if(s->avctx->me_cmp == FF_CMP_W97) | ||||
distortion = w97_32_c(&s->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, 32); | |||||
distortion = ff_w97_32_c(&s->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, 32); | |||||
else if(s->avctx->me_cmp == FF_CMP_W53) | else if(s->avctx->me_cmp == FF_CMP_W53) | ||||
distortion = w53_32_c(&s->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, 32); | |||||
distortion = ff_w53_32_c(&s->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, 32); | |||||
else{ | else{ | ||||
distortion = 0; | distortion = 0; | ||||
for(i=0; i<4; i++){ | for(i=0; i<4; i++){ | ||||