]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
the return of the idct with 16bit output by ("Ivan Kalvachev" <ivan at cacad dot...
authormichaelni <michaelni@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 21 Jun 2003 01:11:31 +0000 (01:11 +0000)
committermichaelni <michaelni@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 21 Jun 2003 01:11:31 +0000 (01:11 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@1983 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/alpha/dsputil_alpha.c
libavcodec/armv4l/dsputil_arm.c
libavcodec/dsputil.c
libavcodec/dsputil.h
libavcodec/i386/dsputil_mmx.c
libavcodec/mlib/dsputil_mlib.c
libavcodec/ps2/dsputil_mmi.c
libavcodec/sh4/dsputil_sh4.c

index cdc8a6d5a3f547db5a742a740fa86a804272cc41..108fc347642f2980eb55cd1756ba8dbe0275923e 100644 (file)
@@ -363,4 +363,5 @@ void dsputil_init_alpha(DSPContext* c, AVCodecContext *avctx)
     
     c->idct_put = simple_idct_put_axp;
     c->idct_add = simple_idct_add_axp;
+    c->idct_idct = simple_idct_axp;
 }
index e3cc05f638ae5e63cc5b4cc4b65a6f6d61184358..74eb96961af227c6f6de5e46556f837fcb6ba265 100644 (file)
@@ -48,6 +48,7 @@ void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx)
     if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_ARM){
         c->idct_put= arm_idct_put;
         c->idct_add= arm_idct_add;
+        c->idct    = j_rev_dct_ARM;
         c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;/* FF_NO_IDCT_PERM */
     }
 }
index f6ce967da567e806a0d5937282a8e727b268b060..df33e511287eb26fd1eaf96cf76ea3e507308384 100644 (file)
@@ -2860,10 +2860,12 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx)
     if(avctx->idct_algo==FF_IDCT_INT){
         c->idct_put= ff_jref_idct_put;
         c->idct_add= ff_jref_idct_add;
+        c->idct    = j_rev_dct;
         c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
     }else{ //accurate/default
         c->idct_put= simple_idct_put;
         c->idct_add= simple_idct_add;
+        c->idct    = simple_idct;
         c->idct_permutation_type= FF_NO_IDCT_PERM;
     }
 
index e6c4030d4e2be5d2f5a7702148518de9f9dd142f..0a2935bbff49f8745f6dd085d3dc541a3e308798 100644 (file)
@@ -34,7 +34,6 @@
 //#define DEBUG
 /* dct code */
 typedef short DCTELEM;
-//typedef int DCTELEM;
 
 void fdct_ifast (DCTELEM *data);
 void ff_jpeg_fdct_islow (DCTELEM *data);
@@ -240,6 +239,9 @@ typedef struct DSPContext {
     /* (I)DCT */
     void (*fdct)(DCTELEM *block/* align 16*/);
     
+    /* IDCT really*/
+    void (*idct)(DCTELEM *block/* align 16*/);
+    
     /**
      * block -> idct -> clip to unsigned 8 bit -> dest.
      * (-1392, 0, 0, ...) -> idct -> (-174, -174, ...) -> put -> (0, 0, ...)
index d58ebcc4ef3fcd96638865e55246e08930f17180..adf27d4a111e3de5aae2bd597940aff6f81323b0 100644 (file)
@@ -1567,14 +1567,17 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
         if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_SIMPLEMMX){
             c->idct_put= ff_simple_idct_put_mmx;
             c->idct_add= ff_simple_idct_add_mmx;
+            c->idct    = ff_simple_idct_mmx;
             c->idct_permutation_type= FF_SIMPLE_IDCT_PERM;
         }else if(idct_algo==FF_IDCT_LIBMPEG2MMX){
             if(mm_flags & MM_MMXEXT){
                 c->idct_put= ff_libmpeg2mmx2_idct_put;
                 c->idct_add= ff_libmpeg2mmx2_idct_add;
+                c->idct    = ff_mmxext_idct;
             }else{
                 c->idct_put= ff_libmpeg2mmx_idct_put;
                 c->idct_add= ff_libmpeg2mmx_idct_add;
+                c->idct    = ff_mmx_idct;
             }
             c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
         }
index 30111e2825a59be9dc0c2fdabd4e4fafdf9e96b3..46594f5a61c966c5c5ac7857d5b4d1ddfc7fdfd0 100644 (file)
@@ -221,6 +221,11 @@ static void ff_idct_add_mlib(uint8_t *dest, int line_size, DCTELEM *data)
     mlib_VideoAddBlock_U8_S16(dest, (mlib_s16 *)data, line_size);
 }
 
+static void ff_idct_mlib(uint8_t *dest, int line_size, DCTELEM *data)
+{
+    mlib_VideoIDCT8x8_S16_S16 (data, data);
+}
+
 static void ff_fdct_mlib(DCTELEM *data)
 {
     mlib_VideoDCT8x8_S16_S16 (data, data);
@@ -264,6 +269,7 @@ void MPV_common_init_mlib(MpegEncContext *s)
     if(s->avctx->idct_algo==FF_IDCT_AUTO || s->avctx->idct_algo==FF_IDCT_MLIB){
         s->dsp.idct_put= ff_idct_put_mlib;
         s->dsp.idct_add= ff_idct_add_mlib;
+        s->dsp.idct    = ff_idct_mlib;
         s->dsp.idct_permutation_type= FF_NO_IDCT_PERM;
     }
 }
index 3932f39e1e03bf16a40c804d7c09ad047e7bcc03..f7bea7e359632d3ba5a80b2b4c2d11980ced72f9 100644 (file)
@@ -25,7 +25,7 @@
 
 void ff_mmi_idct_put(uint8_t *dest, int line_size, DCTELEM *block);
 void ff_mmi_idct_add(uint8_t *dest, int line_size, DCTELEM *block);
-
+void ff_mmi_idct(DCTELEM *block);
 
 static void clear_blocks_mmi(DCTELEM * blocks)
 {
@@ -154,6 +154,7 @@ void dsputil_init_mmi(DSPContext* c, AVCodecContext *avctx)
     if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_PS2){
         c->idct_put= ff_mmi_idct_put;
         c->idct_add= ff_mmi_idct_add;
+        c->idct    = ff_mmi_idct;
         c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
     }
 }
index 8ba5c64d27a9a370e62e56b0375e668a58be2c18..6cff76c3b5243452af422b6e2b62ec57a64b484b 100644 (file)
@@ -112,6 +112,7 @@ void dsputil_init_sh4(DSPContext* c, AVCodecContext *avctx)
        if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_SH4){        
                c->idct_put = idct_put;
                c->idct_add = idct_add;
+               c->idct     = idct_sh4;
                c->idct_permutation_type= FF_NO_IDCT_PERM; //FF_SIMPLE_IDCT_PERM; //FF_LIBMPEG2_IDCT_PERM;
        }
 }