21#ifndef AVCODEC_SNOW_DWT_H
22#define AVCODEC_SNOW_DWT_H
34#define MAX_DECOMPOSITIONS 8
46typedef struct slice_buffer_s {
62 uint8_t **
block,
int b_w,
int b_h,
int src_x,
63 int src_stride,
IDWTELEM *
const *lines,
64 int add, uint8_t *dst8);
89#define slice_buffer_get_line(slice_buf, line_num) \
90 ((slice_buf)->line[line_num] ? (slice_buf)->line[line_num] \
91 : ff_slice_buffer_load_line((slice_buf), \
101 low[*
i + 1] = low[(*
i + 1)>>1];
108 for (; *
i >= 0; *
i -= 2) {
109 low[*
i + 1] =
high[*
i >> 1];
110 low[*
i] = low[*
i >> 1];
119 if ((
width ^ lift_high) & 1)
133 int max_allocated_lines,
int line_width,
141 uint8_t **
block,
int b_w,
int b_h,
int src_x,
142 int src_stride,
IDWTELEM *
const *lines,
143 int add, uint8_t *dst8);
149 int type,
int decomposition_count);
153 int decomposition_count);
157 int type,
int decomposition_count,
int y);
159 int stride,
int type,
int decomposition_count);
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
#define i(width, name, range_min, range_max)
static int shift(int a, int b)
Macro definitions for various function/variable attributes.
void ff_dwt_init(SnowDWTContext *c)
static av_always_inline void snow_horizontal_compose_lift_lead_out(int i, IDWTELEM *dst, const IDWTELEM *src, const IDWTELEM *ref, int width, int w, int lift_high, int mul, int add, int shift)
void ff_spatial_idwt(IDWTELEM *buffer, IDWTELEM *temp, int width, int height, int stride, int type, int decomposition_count)
static av_always_inline void snow_horizontal_compose_liftS_lead_out(int i, IDWTELEM *dst, const IDWTELEM *src, const IDWTELEM *ref, int width, int w)
void ff_spatial_dwt(int *buffer, int *temp, int width, int height, int stride, int type, int decomposition_count)
int ff_w53_32_c(MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t line_size, int h)
void ff_slice_buffer_release(slice_buffer *buf, int line)
static av_always_inline void snow_interleave_line_header(int *i, int width, IDWTELEM *low, IDWTELEM *high)
int ff_w97_32_c(MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t line_size, int h)
void ff_spatial_idwt_buffered_slice(SnowDWTContext *dsp, DWTCompose *cs, slice_buffer *slice_buf, IDWTELEM *temp, int width, int height, int stride_line, int type, int decomposition_count, int y)
void ff_slice_buffer_flush(slice_buffer *buf)
int ff_slice_buffer_init(slice_buffer *buf, int line_count, int max_allocated_lines, int line_width, IDWTELEM *base_buffer)
void ff_dwt_init_x86(SnowDWTContext *c)
void ff_spatial_idwt_buffered_init(DWTCompose *cs, slice_buffer *sb, int width, int height, int stride_line, int type, int decomposition_count)
void ff_snow_inner_add_yblock_c(const uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_stride, IDWTELEM *const *lines, int add, uint8_t *dst8)
IDWTELEM * ff_slice_buffer_load_line(slice_buffer *buf, int line)
void ff_slice_buffer_destroy(slice_buffer *buf)
static av_always_inline void snow_interleave_line_footer(int *i, IDWTELEM *low, const IDWTELEM *high)
void(* horizontal_compose97i)(IDWTELEM *b, IDWTELEM *temp, int width)
void(* 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_stride, IDWTELEM *const *lines, int add, uint8_t *dst8)
void(* vertical_compose97i)(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width)
Used to minimize the amount of memory used in order to optimize cache performance.
IDWTELEM ** data_stack
Used for internal purposes.
IDWTELEM ** line
For use by idwt and predict_slices.
IDWTELEM * base_buffer
Buffer that this structure is caching.
static int ref[MAX_W *MAX_W]
static double b1(void *priv, double x, double y)
static double b2(void *priv, double x, double y)
static double b3(void *priv, double x, double y)
static double b0(void *priv, double x, double y)