Revision 05aec7bb libavcodec/snow.h

View differences:

libavcodec/snow.h
23 23
#define AVCODEC_SNOW_H
24 24

  
25 25
#include "dsputil.h"
26
#include "dwt.h"
26 27

  
27 28
#define MID_STATE 128
28 29

  
29
#define MAX_DECOMPOSITIONS 8
30 30
#define MAX_PLANES 4
31 31
#define QSHIFT 5
32 32
#define QROOT (1<<QSHIFT)
......
37 37
#define LOG2_OBMC_MAX 8
38 38
#define OBMC_MAX (1<<(LOG2_OBMC_MAX))
39 39

  
40
#define DWT_97 0
41
#define DWT_53 1
42

  
43
/** Used to minimize the amount of memory used in order to optimize cache performance. **/
44
struct slice_buffer_s {
45
    IDWTELEM * * line; ///< For use by idwt and predict_slices.
46
    IDWTELEM * * data_stack; ///< Used for internal purposes.
47
    int data_stack_top;
48
    int line_count;
49
    int line_width;
50
    int data_count;
51
    IDWTELEM * base_buffer; ///< Buffer that this structure is caching.
52
};
53

  
54
#define liftS lift
55
#if 1
56
#define W_AM 3
57
#define W_AO 0
58
#define W_AS 1
59

  
60
#undef liftS
61
#define W_BM 1
62
#define W_BO 8
63
#define W_BS 4
64

  
65
#define W_CM 1
66
#define W_CO 0
67
#define W_CS 0
68

  
69
#define W_DM 3
70
#define W_DO 4
71
#define W_DS 3
72
#elif 0
73
#define W_AM 55
74
#define W_AO 16
75
#define W_AS 5
76

  
77
#define W_BM 3
78
#define W_BO 32
79
#define W_BS 6
80

  
81
#define W_CM 127
82
#define W_CO 64
83
#define W_CS 7
84

  
85
#define W_DM 7
86
#define W_DO 8
87
#define W_DS 4
88
#elif 0
89
#define W_AM 97
90
#define W_AO 32
91
#define W_AS 6
92

  
93
#define W_BM 63
94
#define W_BO 512
95
#define W_BS 10
96

  
97
#define W_CM 13
98
#define W_CO 8
99
#define W_CS 4
100

  
101
#define W_DM 15
102
#define W_DO 16
103
#define W_DS 5
104

  
105
#else
106

  
107
#define W_AM 203
108
#define W_AO 64
109
#define W_AS 7
110

  
111
#define W_BM 217
112
#define W_BO 2048
113
#define W_BS 12
114

  
115
#define W_CM 113
116
#define W_CO 64
117
#define W_CS 7
118

  
119
#define W_DM 227
120
#define W_DO 128
121
#define W_DS 9
122
#endif
123

  
124
void ff_snow_vertical_compose97i(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width);
125
void ff_snow_horizontal_compose97i(IDWTELEM *b, int width);
126
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);
127

  
128
#if CONFIG_SNOW_ENCODER
129
int w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h);
130
int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h);
131
#endif
132

  
133
void ff_spatial_dwt(int *buffer, int width, int height, int stride, int type, int decomposition_count);
134

  
135 40
/* C bits used by mmx/sse2/altivec */
136 41

  
137 42
static av_always_inline void snow_interleave_line_header(int * i, int width, IDWTELEM * low, IDWTELEM * high){

Also available in: Unified diff