Mercurial > libavcodec.hg
comparison imgresample.c @ 2979:bfabfdf9ce55 libavcodec
COSMETICS: tabs --> spaces, some prettyprinting
author | diego |
---|---|
date | Thu, 22 Dec 2005 01:10:11 +0000 |
parents | ef2149182f1c |
children | 0b546eab515d |
comparison
equal
deleted
inserted
replaced
2978:403183bbb505 | 2979:bfabfdf9ce55 |
---|---|
62 return ((pos) >> (POS_FRAC_BITS - PHASE_BITS)) & ((1 << PHASE_BITS) - 1); | 62 return ((pos) >> (POS_FRAC_BITS - PHASE_BITS)) & ((1 << PHASE_BITS) - 1); |
63 } | 63 } |
64 | 64 |
65 /* This function must be optimized */ | 65 /* This function must be optimized */ |
66 static void h_resample_fast(uint8_t *dst, int dst_width, const uint8_t *src, | 66 static void h_resample_fast(uint8_t *dst, int dst_width, const uint8_t *src, |
67 int src_width, int src_start, int src_incr, | 67 int src_width, int src_start, int src_incr, |
68 int16_t *filters) | 68 int16_t *filters) |
69 { | 69 { |
70 int src_pos, phase, sum, i; | 70 int src_pos, phase, sum, i; |
71 const uint8_t *s; | 71 const uint8_t *s; |
72 int16_t *filter; | 72 int16_t *filter; |
73 | 73 |
106 } | 106 } |
107 } | 107 } |
108 | 108 |
109 /* This function must be optimized */ | 109 /* This function must be optimized */ |
110 static void v_resample(uint8_t *dst, int dst_width, const uint8_t *src, | 110 static void v_resample(uint8_t *dst, int dst_width, const uint8_t *src, |
111 int wrap, int16_t *filter) | 111 int wrap, int16_t *filter) |
112 { | 112 { |
113 int sum, i; | 113 int sum, i; |
114 const uint8_t *s; | 114 const uint8_t *s; |
115 | 115 |
116 s = src; | 116 s = src; |
165 | 165 |
166 #define DUMP(reg) movq_r2m(reg, tmp); printf(#reg "=%016Lx\n", tmp.uq); | 166 #define DUMP(reg) movq_r2m(reg, tmp); printf(#reg "=%016Lx\n", tmp.uq); |
167 | 167 |
168 /* XXX: do four pixels at a time */ | 168 /* XXX: do four pixels at a time */ |
169 static void h_resample_fast4_mmx(uint8_t *dst, int dst_width, | 169 static void h_resample_fast4_mmx(uint8_t *dst, int dst_width, |
170 const uint8_t *src, int src_width, | 170 const uint8_t *src, int src_width, |
171 int src_start, int src_incr, int16_t *filters) | 171 int src_start, int src_incr, int16_t *filters) |
172 { | 172 { |
173 int src_pos, phase; | 173 int src_pos, phase; |
174 const uint8_t *s; | 174 const uint8_t *s; |
175 int16_t *filter; | 175 int16_t *filter; |
210 } | 210 } |
211 emms(); | 211 emms(); |
212 } | 212 } |
213 | 213 |
214 static void v_resample4_mmx(uint8_t *dst, int dst_width, const uint8_t *src, | 214 static void v_resample4_mmx(uint8_t *dst, int dst_width, const uint8_t *src, |
215 int wrap, int16_t *filter) | 215 int wrap, int16_t *filter) |
216 { | 216 { |
217 int sum, i, v; | 217 int sum, i, v; |
218 const uint8_t *s; | 218 const uint8_t *s; |
219 mmx_t tmp; | 219 mmx_t tmp; |
220 mmx_t coefs[4]; | 220 mmx_t coefs[4]; |
275 emms(); | 275 emms(); |
276 } | 276 } |
277 #endif | 277 #endif |
278 | 278 |
279 #ifdef HAVE_ALTIVEC | 279 #ifdef HAVE_ALTIVEC |
280 typedef union { | 280 typedef union { |
281 vector unsigned char v; | 281 vector unsigned char v; |
282 unsigned char c[16]; | 282 unsigned char c[16]; |
283 } vec_uc_t; | 283 } vec_uc_t; |
284 | 284 |
285 typedef union { | 285 typedef union { |
286 vector signed short v; | 286 vector signed short v; |
287 signed short s[8]; | 287 signed short s[8]; |
288 } vec_ss_t; | 288 } vec_ss_t; |
289 | 289 |
290 void v_resample16_altivec(uint8_t *dst, int dst_width, const uint8_t *src, | 290 void v_resample16_altivec(uint8_t *dst, int dst_width, const uint8_t *src, |
291 int wrap, int16_t *filter) | 291 int wrap, int16_t *filter) |
292 { | 292 { |
293 int sum, i; | 293 int sum, i; |
294 const uint8_t *s; | 294 const uint8_t *s; |
295 vector unsigned char *tv, tmp, dstv, zero; | 295 vector unsigned char *tv, tmp, dstv, zero; |
296 vec_ss_t srchv[4], srclv[4], fv[4]; | 296 vec_ss_t srchv[4], srclv[4], fv[4]; |
403 } | 403 } |
404 #endif | 404 #endif |
405 | 405 |
406 /* slow version to handle limit cases. Does not need optimisation */ | 406 /* slow version to handle limit cases. Does not need optimisation */ |
407 static void h_resample_slow(uint8_t *dst, int dst_width, | 407 static void h_resample_slow(uint8_t *dst, int dst_width, |
408 const uint8_t *src, int src_width, | 408 const uint8_t *src, int src_width, |
409 int src_start, int src_incr, int16_t *filters) | 409 int src_start, int src_incr, int16_t *filters) |
410 { | 410 { |
411 int src_pos, phase, sum, j, v, i; | 411 int src_pos, phase, sum, j, v, i; |
412 const uint8_t *s, *src_end; | 412 const uint8_t *s, *src_end; |
413 int16_t *filter; | 413 int16_t *filter; |
439 dst++; | 439 dst++; |
440 } | 440 } |
441 } | 441 } |
442 | 442 |
443 static void h_resample(uint8_t *dst, int dst_width, const uint8_t *src, | 443 static void h_resample(uint8_t *dst, int dst_width, const uint8_t *src, |
444 int src_width, int src_start, int src_incr, | 444 int src_width, int src_start, int src_incr, |
445 int16_t *filters) | 445 int16_t *filters) |
446 { | 446 { |
447 int n, src_end; | 447 int n, src_end; |
448 | 448 |
449 if (src_start < 0) { | 449 if (src_start < 0) { |
450 n = (0 - src_start + src_incr - 1) / src_incr; | 450 n = (0 - src_start + src_incr - 1) / src_incr; |
557 int padleft, int padright) | 557 int padleft, int padright) |
558 { | 558 { |
559 ImgReSampleContext *s; | 559 ImgReSampleContext *s; |
560 | 560 |
561 if (!owidth || !oheight || !iwidth || !iheight) | 561 if (!owidth || !oheight || !iwidth || !iheight) |
562 return NULL; | 562 return NULL; |
563 | 563 |
564 s = av_mallocz(sizeof(ImgReSampleContext)); | 564 s = av_mallocz(sizeof(ImgReSampleContext)); |
565 if (!s) | 565 if (!s) |
566 return NULL; | 566 return NULL; |
567 if((unsigned)owidth >= UINT_MAX / (LINE_BUF_HEIGHT + NB_TAPS)) | 567 if((unsigned)owidth >= UINT_MAX / (LINE_BUF_HEIGHT + NB_TAPS)) |