X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fproresdsp.c;h=6d45def203203caf53c785d800d823fe056de18d;hb=5d3d39c72e57dca76c508a1c28036f8a2c1d8ad8;hp=e19eed208b3516de670f70969e2c49d172fc4d83;hpb=1a265f6187e9036b649fc08f8293b5e1fcd8dfbe;p=ffmpeg diff --git a/libavcodec/proresdsp.c b/libavcodec/proresdsp.c index e19eed208b3..6d45def2032 100644 --- a/libavcodec/proresdsp.c +++ b/libavcodec/proresdsp.c @@ -20,8 +20,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "dct.h" +#include "dsputil.h" #include "proresdsp.h" #include "simple_idct.h" +#include "libavutil/common.h" #define BIAS (1 << (PRORES_BITS_PER_SAMPLE - 1)) ///< bias value for converting signed pixels into unsigned ones #define CLIP_MIN (1 << (PRORES_BITS_PER_SAMPLE - 8)) ///< minimum value for clipping resulting pixels @@ -29,10 +32,11 @@ #define CLIP_AND_BIAS(x) (av_clip((x) + BIAS, CLIP_MIN, CLIP_MAX)) +#if CONFIG_PRORES_DECODER /** * Add bias value, clamp and output pixels of a slice */ -static void put_pixels(uint16_t *dst, int stride, const DCTELEM *in) +static void put_pixels(uint16_t *dst, int stride, const int16_t *in) { int x, y, src_offset, dst_offset; @@ -45,13 +49,15 @@ static void put_pixels(uint16_t *dst, int stride, const DCTELEM *in) } } -static void prores_idct_put_c(uint16_t *out, int linesize, DCTELEM *block, const int16_t *qmat) +static void prores_idct_put_c(uint16_t *out, int linesize, int16_t *block, const int16_t *qmat) { ff_prores_idct(block, qmat); put_pixels(out, linesize >> 1, block); } +#endif -static void prores_fdct_c(const uint16_t *src, int linesize, DCTELEM *block) +#if CONFIG_PRORES_ENCODER +static void prores_fdct_c(const uint16_t *src, int linesize, int16_t *block) { int x, y; const uint16_t *tsrc = src; @@ -63,18 +69,23 @@ static void prores_fdct_c(const uint16_t *src, int linesize, DCTELEM *block) } ff_jpeg_fdct_islow_10(block); } +#endif void ff_proresdsp_init(ProresDSPContext *dsp) { +#if CONFIG_PRORES_DECODER dsp->idct_put = prores_idct_put_c; dsp->idct_permutation_type = FF_NO_IDCT_PERM; - dsp->fdct = prores_fdct_c; - dsp->dct_permutation_type = FF_NO_IDCT_PERM; - if (HAVE_MMX) ff_proresdsp_x86_init(dsp); + if (ARCH_X86) ff_proresdsp_x86_init(dsp); ff_init_scantable_permutation(dsp->idct_permutation, dsp->idct_permutation_type); +#endif +#if CONFIG_PRORES_ENCODER + dsp->fdct = prores_fdct_c; + dsp->dct_permutation_type = FF_NO_IDCT_PERM; ff_init_scantable_permutation(dsp->dct_permutation, dsp->dct_permutation_type); +#endif }