renamed - use of s->dct_unquantize function pointer - SHOULD add faster h263 mmx specific unquantization stuff

Originally committed as revision 23 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Fabrice Bellard 24 years ago
parent 21af69f787
commit 35b2a786f5
  1. 46
      libavcodec/i386/mpegvideo_mmx.c

@ -19,6 +19,14 @@
* Optimized for ia32 cpus by Nick Kurshev <nickols_k@mail.ru> * Optimized for ia32 cpus by Nick Kurshev <nickols_k@mail.ru>
*/ */
#include "../dsputil.h"
#include "../mpegvideo.h"
#if 0
/* XXX: GL: I don't understand why this function needs optimization
(it is called only once per frame!), so I disabled it */
void MPV_frame_start(MpegEncContext *s) void MPV_frame_start(MpegEncContext *s)
{ {
if (s->pict_type == B_TYPE) { if (s->pict_type == B_TYPE) {
@ -52,10 +60,8 @@ void MPV_frame_start(MpegEncContext *s)
:"eax","edx","ecx","memory"); :"eax","edx","ecx","memory");
} }
} }
#endif
static void dct_unquantize(MpegEncContext *s, DCTELEM *block, int n, int qscale);
#ifdef HAVE_MMX
static const unsigned long long int mm_wabs __attribute__ ((aligned(8))) = 0xffffffffffffffffULL; static const unsigned long long int mm_wabs __attribute__ ((aligned(8))) = 0xffffffffffffffffULL;
static const unsigned long long int mm_wone __attribute__ ((aligned(8))) = 0x0001000100010001ULL; static const unsigned long long int mm_wone __attribute__ ((aligned(8))) = 0x0001000100010001ULL;
@ -88,13 +94,8 @@ static const unsigned long long int mm_wone __attribute__ ((aligned(8))) = 0x000
high3:low3 = low1*low2 high3:low3 = low1*low2
high3 += tlow1 high3 += tlow1
*/ */
#ifdef BIN_PORTABILITY static void dct_unquantize_mpeg1_mmx(MpegEncContext *s,
static void dct_unquantize_mmx DCTELEM *block, int n, int qscale)
#else
#define HAVE_DCT_UNQUANTIZE 1
static void dct_unquantize
#endif
(MpegEncContext *s,DCTELEM *block, int n, int qscale)
{ {
int i, level; int i, level;
const UINT16 *quant_matrix; const UINT16 *quant_matrix;
@ -216,24 +217,11 @@ static void dct_unquantize
} }
} }
#ifdef BIN_PORTABILITY void MPV_common_init_mmx(MpegEncContext *s)
static void (*dct_unquantize_ptr)(MpegEncContext *s,
DCTELEM *block, int n, int qscale);
void MPV_common_init_mmx(void)
{ {
int mm_flags; if (mm_flags & MM_MMX) {
mm_flags = mm_support(); /* XXX: should include h263 optimization too. It would go even
if (mm_flags & MM_MMX) { faster! */
dct_unquantize_ptr = dct_unquantize_mmx; s->dct_unquantize = dct_unquantize_mpeg1_mmx;
} }
else {
dct_unquantize_ptr = dct_unquantize;
}
} }
#define DCT_UNQUANTIZE(a,b,c,d) (*dct_unquantize_ptr)(a,b,c,d)
#else
#define DCT_UNQUANTIZE(a,b,c,d) dct_unquantize(a,b,c,d)
#endif /* BIN_PORTABILITY */
#endif /* HAVE_MMX */
Loading…
Cancel
Save