summaryrefslogtreecommitdiff
path: root/libavcodec/proresenc_kostya.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-02-28 18:05:13 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-02-28 18:06:12 +0100
commit810eb285e38dac89a0c04a87f1c8ce17a8bec770 (patch)
tree1bd0e652325726bffa60556460f484e389ebf331 /libavcodec/proresenc_kostya.c
parent2e88f82a8a50b21a3273785ac1349fd94c1a8aa0 (diff)
parenta55546f48d55e3d1155840541b2be5f4f8cf18ab (diff)
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.c26
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)) {