History

avcodec/idctdsp: make add/put_pixels_clamped_c internal functions

This reduces code duplication and differences with the fork.

James Almer committed 12 years ago

Commit a8592db1 parent 0081a144 files · +60 −55Browse files

Unified · Split

4 files
  1. libavcodec/arm/idctdsp_init_arm.c +8 −8
  2. libavcodec/idctdsp.c +45 −4
  3. libavcodec/idctdsp.h +5 −41
  4. libavcodec/xvididct.c +2 −2
libavcodec/arm/idctdsp_init_arm.c+8−8
@@ -30,8 +30,8 @@ · 29 unmodified lines
3030 #include "idctdsp_arm.h"
3131
3232 /* XXX: local hack */
33−static void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
34−static void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
33+static void (*put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
34+static void (*add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
3535
3636 void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest,
3737 int line_size);
@@ -41,25 +41,25 @@ void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest, · 3 unmodified lines
4141 static void j_rev_dct_arm_put(uint8_t *dest, int line_size, int16_t *block)
4242 {
4343 ff_j_rev_dct_arm(block);
44− ff_put_pixels_clamped(block, dest, line_size);
44+ put_pixels_clamped(block, dest, line_size);
4545 }
4646
4747 static void j_rev_dct_arm_add(uint8_t *dest, int line_size, int16_t *block)
4848 {
4949 ff_j_rev_dct_arm(block);
50− ff_add_pixels_clamped(block, dest, line_size);
50+ add_pixels_clamped(block, dest, line_size);
5151 }
5252
5353 static void simple_idct_arm_put(uint8_t *dest, int line_size, int16_t *block)
5454 {
5555 ff_simple_idct_arm(block);
56− ff_put_pixels_clamped(block, dest, line_size);
56+ put_pixels_clamped(block, dest, line_size);
5757 }
5858
5959 static void simple_idct_arm_add(uint8_t *dest, int line_size, int16_t *block)
6060 {
6161 ff_simple_idct_arm(block);
62− ff_add_pixels_clamped(block, dest, line_size);
62+ add_pixels_clamped(block, dest, line_size);
6363 }
6464
6565 av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx,
@@ -67,8 +67,8 @@ av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx, · 1 unmodified line
6767 {
6868 int cpu_flags = av_get_cpu_flags();
6969
70− ff_put_pixels_clamped = c->put_pixels_clamped;
71− ff_add_pixels_clamped = c->add_pixels_clamped;
70+ put_pixels_clamped = c->put_pixels_clamped;
71+ add_pixels_clamped = c->add_pixels_clamped;
7272
7373 if (!avctx->lowres && !high_bit_depth) {
7474 if ((avctx->idct_algo == FF_IDCT_AUTO && !(avctx->flags & CODEC_FLAG_BITEXACT)) ||
libavcodec/idctdsp.c+45−4
@@ -80,6 +80,27 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation, · 79 unmodified lines
8080 }
8181 }
8282
83+void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
84+ int line_size)
85+{
86+ int i;
87+
88+ /* read the pixels */
89+ for (i = 0; i < 8; i++) {
90+ pixels[0] = av_clip_uint8(block[0]);
91+ pixels[1] = av_clip_uint8(block[1]);
92+ pixels[2] = av_clip_uint8(block[2]);
93+ pixels[3] = av_clip_uint8(block[3]);
94+ pixels[4] = av_clip_uint8(block[4]);
95+ pixels[5] = av_clip_uint8(block[5]);
96+ pixels[6] = av_clip_uint8(block[6]);
97+ pixels[7] = av_clip_uint8(block[7]);
98+
99+ pixels += line_size;
100+ block += 8;
101+ }
102+}
103+
83104 static void put_pixels_clamped4_c(const int16_t *block, uint8_t *av_restrict pixels,
84105 int line_size)
85106 {
@@ -133,6 +154,26 @@ static void put_signed_pixels_clamped_c(const int16_t *block, · 47 unmodified lines
133154 }
134155 }
135156
157+void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
158+ int line_size)
159+{
160+ int i;
161+
162+ /* read the pixels */
163+ for (i = 0; i < 8; i++) {
164+ pixels[0] = av_clip_uint8(pixels[0] + block[0]);
165+ pixels[1] = av_clip_uint8(pixels[1] + block[1]);
166+ pixels[2] = av_clip_uint8(pixels[2] + block[2]);
167+ pixels[3] = av_clip_uint8(pixels[3] + block[3]);
168+ pixels[4] = av_clip_uint8(pixels[4] + block[4]);
169+ pixels[5] = av_clip_uint8(pixels[5] + block[5]);
170+ pixels[6] = av_clip_uint8(pixels[6] + block[6]);
171+ pixels[7] = av_clip_uint8(pixels[7] + block[7]);
172+ pixels += line_size;
173+ block += 8;
174+ }
175+}
176+
136177 static void add_pixels_clamped4_c(const int16_t *block, uint8_t *av_restrict pixels,
137178 int line_size)
138179 {
@@ -166,13 +207,13 @@ static void add_pixels_clamped2_c(const int16_t *block, uint8_t *av_restrict pix · 27 unmodified lines
166207 static void jref_idct_put(uint8_t *dest, int line_size, int16_t *block)
167208 {
168209 ff_j_rev_dct(block);
169− put_pixels_clamped_c(block, dest, line_size);
210+ ff_put_pixels_clamped(block, dest, line_size);
170211 }
171212
172213 static void jref_idct_add(uint8_t *dest, int line_size, int16_t *block)
173214 {
174215 ff_j_rev_dct(block);
175− add_pixels_clamped_c(block, dest, line_size);
216+ ff_add_pixels_clamped(block, dest, line_size);
176217 }
177218 static void ff_jref_idct4_put(uint8_t *dest, int line_size, int16_t *block)
178219 {
@@ -255,9 +296,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) · 76 unmodified lines
255296 }
256297 }
257298
258− c->put_pixels_clamped = put_pixels_clamped_c;
299+ c->put_pixels_clamped = ff_put_pixels_clamped;
259300 c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
260− c->add_pixels_clamped = add_pixels_clamped_c;
301+ c->add_pixels_clamped = ff_add_pixels_clamped;
261302
262303 if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
263304 ff_xvididct_init(c, avctx);
libavcodec/idctdsp.h+5−41
@@ -48,6 +48,11 @@ void ff_init_scantable_permutation(uint8_t *idct_permutation, · 47 unmodified lines
4848 int ff_init_scantable_permutation_x86(uint8_t *idct_permutation,
4949 enum idct_permutation_type perm_type);
5050
51+void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
52+ int line_size);
53+void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
54+ int line_size);
55+
5156 typedef struct IDCTDSPContext {
5257 /* pixel ops : interface with DCT */
5358 void (*put_pixels_clamped)(const int16_t *block /* align 16 */,
@@ -106,45 +111,4 @@ void ff_idctdsp_init_ppc(IDCTDSPContext *c, AVCodecContext *avctx, · 52 unmodified lines
106111 void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx,
107112 unsigned high_bit_depth);
108113
109−static inline void put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
110− int line_size)
111−{
112− int i;
113−
114− /* read the pixels */
115− for (i = 0; i < 8; i++) {
116− pixels[0] = av_clip_uint8(block[0]);
117− pixels[1] = av_clip_uint8(block[1]);
118− pixels[2] = av_clip_uint8(block[2]);
119− pixels[3] = av_clip_uint8(block[3]);
120− pixels[4] = av_clip_uint8(block[4]);
121− pixels[5] = av_clip_uint8(block[5]);
122− pixels[6] = av_clip_uint8(block[6]);
123− pixels[7] = av_clip_uint8(block[7]);
124−
125− pixels += line_size;
126− block += 8;
127− }
128−}
129−
130−static inline void add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
131− int line_size)
132−{
133− int i;
134−
135− /* read the pixels */
136− for (i = 0; i < 8; i++) {
137− pixels[0] = av_clip_uint8(pixels[0] + block[0]);
138− pixels[1] = av_clip_uint8(pixels[1] + block[1]);
139− pixels[2] = av_clip_uint8(pixels[2] + block[2]);
140− pixels[3] = av_clip_uint8(pixels[3] + block[3]);
141− pixels[4] = av_clip_uint8(pixels[4] + block[4]);
142− pixels[5] = av_clip_uint8(pixels[5] + block[5]);
143− pixels[6] = av_clip_uint8(pixels[6] + block[6]);
144− pixels[7] = av_clip_uint8(pixels[7] + block[7]);
145− pixels += line_size;
146− block += 8;
147− }
148−}
149−
150114 #endif /* AVCODEC_IDCTDSP_H */
libavcodec/xvididct.c+2−2
@@ -25,13 +25,13 @@ · 24 unmodified lines
2525 static void idct_xvid_put(uint8_t *dest, int line_size, int16_t *block)
2626 {
2727 ff_idct_xvid(block);
28− put_pixels_clamped_c(block, dest, line_size);
28+ ff_put_pixels_clamped(block, dest, line_size);
2929 }
3030
3131 static void idct_xvid_add(uint8_t *dest, int line_size, int16_t *block)
3232 {
3333 ff_idct_xvid(block);
34− add_pixels_clamped_c(block, dest, line_size);
34+ ff_add_pixels_clamped(block, dest, line_size);
3535 }
3636
3737 av_cold void ff_xvididct_init(IDCTDSPContext *c, AVCodecContext *avctx)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t