diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-07-07 02:17:30 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-07-07 02:17:30 +0200 |
commit | 46a47077eee2d7755e17f6557903f383cdfe1b8b (patch) | |
tree | 2f42fe2b5bcd4f3e71a24bc9126ce73ecc665a74 /libavcodec/flacdsp_template.c | |
parent | a6da14ec3cbe009b2f6fe3eaaa4865e8c8f5ef1a (diff) | |
parent | 5adc829eb0787682111ca063bfc2b31558999dff (diff) | |
download | ffmpeg-46a47077eee2d7755e17f6557903f383cdfe1b8b.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
configure: add functions for testing code fragments
af_amix: avoid spurious EAGAIN.
af_amix: return AVERROR(EAGAIN) when request_frame didn't produce output.
af_amix: only consider negative return codes as errors.
avconv: use only meaningful timestamps in start time check.
avconv: fix the check for -ss as an output option.
mss3: add forgotten 'static' qualifier for private table
lavc: options: add planar names for request_sample_fmt
flacdec: add planar output support
flvdec: Treat all nellymoser versions as the same codec
Conflicts:
ffmpeg.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/flacdsp_template.c')
-rw-r--r-- | libavcodec/flacdsp_template.c | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/libavcodec/flacdsp_template.c b/libavcodec/flacdsp_template.c index 808b20d41d..62c0a15ff6 100644 --- a/libavcodec/flacdsp_template.c +++ b/libavcodec/flacdsp_template.c @@ -19,68 +19,85 @@ */ #include <stdint.h> +#include "libavutil/avutil.h" #undef FUNC +#undef FSUF #undef sample +#undef sample_type +#undef OUT +#undef S #if SAMPLE_SIZE == 32 -# define FUNC(n) n ## _32 -# define sample int32_t +# define sample_type int32_t #else -# define FUNC(n) n ## _16 -# define sample int16_t +# define sample_type int16_t #endif +#if PLANAR +# define FSUF AV_JOIN(SAMPLE_SIZE, p) +# define sample sample_type * +# define OUT(n) n +# define S(s, c, i) (s[c][i]) +#else +# define FSUF SAMPLE_SIZE +# define sample sample_type +# define OUT(n) n[0] +# define S(s, c, i) (*s++) +#endif + +#define FUNC(n) AV_JOIN(n ## _, FSUF) + static void FUNC(flac_decorrelate_indep_c)(uint8_t **out, int32_t **in, int channels, int len, int shift) { - sample *samples = (sample *) out[0]; + sample *samples = (sample *) OUT(out); int i, j; for (j = 0; j < len; j++) for (i = 0; i < channels; i++) - *samples++ = in[i][j] << shift; + S(samples, i, j) = in[i][j] << shift; } static void FUNC(flac_decorrelate_ls_c)(uint8_t **out, int32_t **in, int channels, int len, int shift) { - sample *samples = (sample *) out[0]; + sample *samples = (sample *) OUT(out); int i; for (i = 0; i < len; i++) { int a = in[0][i]; int b = in[1][i]; - *samples++ = a << shift; - *samples++ = (a - b) << shift; + S(samples, 0, i) = a << shift; + S(samples, 1, i) = (a - b) << shift; } } static void FUNC(flac_decorrelate_rs_c)(uint8_t **out, int32_t **in, int channels, int len, int shift) { - sample *samples = (sample *) out[0]; + sample *samples = (sample *) OUT(out); int i; for (i = 0; i < len; i++) { int a = in[0][i]; int b = in[1][i]; - *samples++ = (a + b) << shift; - *samples++ = b << shift; + S(samples, 0, i) = (a + b) << shift; + S(samples, 1, i) = b << shift; } } static void FUNC(flac_decorrelate_ms_c)(uint8_t **out, int32_t **in, int channels, int len, int shift) { - sample *samples = (sample *) out[0]; + sample *samples = (sample *) OUT(out); int i; for (i = 0; i < len; i++) { int a = in[0][i]; int b = in[1][i]; a -= b >> 1; - *samples++ = (a + b) << shift; - *samples++ = a << shift; + S(samples, 0, i) = (a + b) << shift; + S(samples, 1, i) = a << shift; } } |