diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-02-28 18:05:13 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-02-28 18:06:12 +0100 |
commit | 810eb285e38dac89a0c04a87f1c8ce17a8bec770 (patch) | |
tree | 1bd0e652325726bffa60556460f484e389ebf331 /libavcodec/proresenc_kostya.c | |
parent | 2e88f82a8a50b21a3273785ac1349fd94c1a8aa0 (diff) | |
parent | a55546f48d55e3d1155840541b2be5f4f8cf18ab (diff) | |
download | ffmpeg-810eb285e38dac89a0c04a87f1c8ce17a8bec770.tar.gz |
Merge commit 'a55546f48d55e3d1155840541b2be5f4f8cf18ab'
* commit 'a55546f48d55e3d1155840541b2be5f4f8cf18ab':
proresenc: Reuse proper dsputil infrastructure for FDCT
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/proresenc_kostya.c')
-rw-r--r-- | libavcodec/proresenc_kostya.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/libavcodec/proresenc_kostya.c b/libavcodec/proresenc_kostya.c index 6688a5b417..ea1fd8ae7f 100644 --- a/libavcodec/proresenc_kostya.c +++ b/libavcodec/proresenc_kostya.c @@ -195,7 +195,9 @@ typedef struct ProresContext { const uint8_t *quant_mat; const uint8_t *scantable; - void (* fdct) (const uint16_t *src, int linesize, int16_t *block); + void (* fdct)(DSPContext *dsp, const uint16_t *src, + int linesize, int16_t *block); + DSPContext dsp; int mb_width, mb_height; int mbs_per_slice; @@ -264,27 +266,27 @@ static void get_slice_data(ProresContext *ctx, const uint16_t *src, mb_width * sizeof(*emu_buf)); } if (!is_chroma) { - ctx->fdct(esrc, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc, elinesize, blocks); blocks += 64; if (blocks_per_mb > 2) { - ctx->fdct(esrc + 8, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc + 8, elinesize, blocks); blocks += 64; } - ctx->fdct(esrc + elinesize * 4, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc + elinesize * 4, elinesize, blocks); blocks += 64; if (blocks_per_mb > 2) { - ctx->fdct(esrc + elinesize * 4 + 8, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc + elinesize * 4 + 8, elinesize, blocks); blocks += 64; } } else { - ctx->fdct(esrc, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc, elinesize, blocks); blocks += 64; - ctx->fdct(esrc + elinesize * 4, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc + elinesize * 4, elinesize, blocks); blocks += 64; if (blocks_per_mb > 2) { - ctx->fdct(esrc + 8, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc + 8, elinesize, blocks); blocks += 64; - ctx->fdct(esrc + elinesize * 4 + 8, elinesize, blocks); + ctx->fdct(&ctx->dsp, esrc + elinesize * 4 + 8, elinesize, blocks); blocks += 64; } } @@ -1064,7 +1066,8 @@ static av_cold int encode_close(AVCodecContext *avctx) return 0; } -static void prores_fdct(const uint16_t *src, int linesize, int16_t *block) +static void prores_fdct(DSPContext *dsp, const uint16_t *src, + int linesize, int16_t *block) { int x, y; const uint16_t *tsrc = src; @@ -1074,7 +1077,7 @@ static void prores_fdct(const uint16_t *src, int linesize, int16_t *block) block[y * 8 + x] = tsrc[x]; tsrc += linesize >> 1; } - ff_jpeg_fdct_islow_10(block); + dsp->fdct(block); } static av_cold int encode_init(AVCodecContext *avctx) @@ -1093,6 +1096,7 @@ static av_cold int encode_init(AVCodecContext *avctx) ctx->fdct = prores_fdct; ctx->scantable = interlaced ? ff_prores_interlaced_scan : ff_prores_progressive_scan; + ff_dsputil_init(&ctx->dsp, avctx); mps = ctx->mbs_per_slice; if (mps & (mps - 1)) { |