21 #ifndef AVCODEC_SNOW_DWT_H 22 #define AVCODEC_SNOW_DWT_H 32 #define MAX_DECOMPOSITIONS 8 44 typedef struct slice_buffer_s {
61 void (*inner_add_yblock)(
const uint8_t *obmc,
const int obmc_stride,
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), \ 95 int max_allocated_lines,
int line_width,
115 int type,
int decomposition_count);
119 int decomposition_count);
123 int type,
int decomposition_count,
int y);
125 int stride,
int type,
int decomposition_count);
void ff_snow_horizontal_compose97i(IDWTELEM *b, IDWTELEM *temp, int width)
void ff_spatial_idwt(IDWTELEM *buffer, IDWTELEM *temp, int width, int height, int stride, int type, int decomposition_count)
uint8_t * b[MAX_DWT_SUPPORT]
void ff_spatial_idwt_buffered_init(DWTCompose *cs, slice_buffer *sb, int width, int height, int stride_line, int type, int decomposition_count)
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_flush(slice_buffer *buf)
The exact code depends on how similar the blocks are and how related they are to the block
void ff_spatial_dwt(int *buffer, int *temp, int width, int height, int stride, int type, int decomposition_count)
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
int ff_w53_32_c(struct MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t line_size, int h)
void ff_dwt_init(SnowDWTContext *c)
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)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
IDWTELEM * base_buffer
Buffer that this structure is caching.
void ff_slice_buffer_release(slice_buffer *buf, int line)
void ff_slice_buffer_destroy(slice_buffer *buf)
GLint GLenum GLboolean GLsizei stride
IDWTELEM ** line
For use by idwt and predict_slices.
IDWTELEM * ff_slice_buffer_load_line(slice_buffer *buf, int line)
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_snow_vertical_compose97i(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width)
int ff_w97_32_c(struct MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t line_size, int h)
static float add(float src0, float src1)
IDWTELEM ** data_stack
Used for internal purposes.
void ff_dwt_init_x86(SnowDWTContext *c)
Used to minimize the amount of memory used in order to optimize cache performance.