# HG changeset patch # User bellard # Date 1023302887 0 # Node ID a7cbee351b55a0c3b1af626a73016057526ff134 # Parent 40ffce2cb6eff192e8f14fe0a324c853e32906d7 added ff_idct_put/add diff -r 40ffce2cb6ef -r a7cbee351b55 dsputil.c --- a/dsputil.c Wed Jun 05 18:46:25 2002 +0000 +++ b/dsputil.c Wed Jun 05 18:48:07 2002 +0000 @@ -23,6 +23,8 @@ #include "simple_idct.h" void (*ff_idct)(DCTELEM *block); +void (*ff_idct_put)(UINT8 *dest, int line_size, DCTELEM *block); +void (*ff_idct_add)(UINT8 *dest, int line_size, DCTELEM *block); void (*av_fdct)(DCTELEM *block); void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); void (*diff_pixels)(DCTELEM *block, const UINT8 *s1, const UINT8 *s2, int stride); @@ -1244,6 +1246,20 @@ memset(blocks, 0, sizeof(DCTELEM)*6*64); } +/* XXX: those functions should be suppressed ASAP when all IDCTs are + converted */ +void gen_idct_put(UINT8 *dest, int line_size, DCTELEM *block) +{ + ff_idct (block); + put_pixels_clamped(block, dest, line_size); +} + +void gen_idct_add(UINT8 *dest, int line_size, DCTELEM *block) +{ + ff_idct (block); + add_pixels_clamped(block, dest, line_size); +} + void dsputil_init(void) { int i, j; @@ -1260,7 +1276,7 @@ } #ifdef SIMPLE_IDCT - ff_idct = simple_idct; + ff_idct = NULL; #else ff_idct = j_rev_dct; #endif @@ -1299,7 +1315,14 @@ #endif #ifdef SIMPLE_IDCT - if(ff_idct == simple_idct) use_permuted_idct=0; + if (ff_idct == NULL) { + ff_idct_put = simple_idct_put; + ff_idct_add = simple_idct_add; + use_permuted_idct=0; + } else { + ff_idct_put = gen_idct_put; + ff_idct_add = gen_idct_add; + } #endif if(use_permuted_idct) diff -r 40ffce2cb6ef -r a7cbee351b55 dsputil.h --- a/dsputil.h Wed Jun 05 18:46:25 2002 +0000 +++ b/dsputil.h Wed Jun 05 18:48:07 2002 +0000 @@ -54,6 +54,8 @@ /* pixel ops : interface with DCT */ extern void (*ff_idct)(DCTELEM *block); +extern void (*ff_idct_put)(UINT8 *dest, int line_size, DCTELEM *block); +extern void (*ff_idct_add)(UINT8 *dest, int line_size, DCTELEM *block); extern void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); extern void (*diff_pixels)(DCTELEM *block, const UINT8 *s1, const UINT8 *s2, int stride); extern void (*put_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size);