# HG changeset patch
# User Diego 'Flameeyes' Pettenò <[EMAIL PROTECTED]>
# Date 1181395979 -7200
# Node ID 26351512648cf22745672d507b9913cf2f53be4d
# Parent de77c978064fe3fd5c651872fc698138c4e919a9
Port libmpeg2 MMX/MMXEXT/3DNOW tests with the new cpu_accel.h interface.
diff -r 26351512648cf22745672d507b9913cf2f53be4d -r
de77c978064fe3fd5c651872fc698138c4e919a9 src/libmpeg2/cpu_state.c
--- a/src/libmpeg2/cpu_state.c Sat Jun 09 15:32:59 2007 +0200
+++ b/src/libmpeg2/cpu_state.c Sat Jun 09 15:32:35 2007 +0200
@@ -28,11 +28,12 @@
#include "mpeg2_internal.h"
#include "xineutils.h"
+#include "cpu_accel.h"
void (* mpeg2_cpu_state_save) (cpu_state_t * state) = NULL;
void (* mpeg2_cpu_state_restore) (cpu_state_t * state) = NULL;
-#if defined(ARCH_X86) || defined(ARCH_X86_64)
+#ifdef BUILD_MMX_MAYBE
static void state_restore_mmx (cpu_state_t * state)
{
emms ();
@@ -168,10 +169,9 @@ static void state_restore_altivec (cpu_s
void mpeg2_cpu_state_init (uint32_t mm_accel)
{
-#if defined(ARCH_X86) || defined(ARCH_X86_64)
- if (mm_accel & MM_ACCEL_X86_MMX) {
+#ifdef BUILD_MMX_MAYBE
+ if ( CHECK_MMX )
mpeg2_cpu_state_restore = state_restore_mmx;
- }
#endif
#if defined (ARCH_PPC) && defined (ENABLE_ALTIVEC)
if (mm_accel & MM_ACCEL_PPC_ALTIVEC) {
diff -r 26351512648cf22745672d507b9913cf2f53be4d -r
de77c978064fe3fd5c651872fc698138c4e919a9 src/libmpeg2/decode.c
--- a/src/libmpeg2/decode.c Sat Jun 09 15:32:59 2007 +0200
+++ b/src/libmpeg2/decode.c Sat Jun 09 15:32:35 2007 +0200
@@ -41,7 +41,6 @@
#include "video_out.h"
#include "mpeg2.h"
#include "mpeg2_internal.h"
-#include "xineutils.h"
#include "libmpeg2_accel.h"
/*
@@ -57,14 +56,12 @@ void mpeg2_init (mpeg2dec_t * mpeg2dec,
xine_video_port_t * output)
{
static int do_init = 1;
- uint32_t mm_accel;
if (do_init) {
do_init = 0;
- mm_accel = xine_mm_accel();
- mpeg2_cpu_state_init (mm_accel);
- mpeg2_idct_init (mm_accel);
- mpeg2_mc_init (mm_accel);
+ mpeg2_cpu_state_init ();
+ mpeg2_idct_init ();
+ mpeg2_mc_init ();
libmpeg2_accel_scan(&mpeg2dec->accel, mpeg2_scan_norm, mpeg2_scan_alt);
}
diff -r 26351512648cf22745672d507b9913cf2f53be4d -r
de77c978064fe3fd5c651872fc698138c4e919a9 src/libmpeg2/idct.c
--- a/src/libmpeg2/idct.c Sat Jun 09 15:32:59 2007 +0200
+++ b/src/libmpeg2/idct.c Sat Jun 09 15:32:35 2007 +0200
@@ -44,9 +44,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
+#include <string.h>
#include "mpeg2_internal.h"
-#include "xineutils.h"
+#include "cpu_accel.h"
#define W1 2841 /* 2048*sqrt (2)*cos (1*pi/16) */
#define W2 2676 /* 2048*sqrt (2)*cos (2*pi/16) */
@@ -278,12 +279,12 @@ static void mpeg2_zero_block_c (int16_t
memset( wblock, 0, sizeof(int16_t) * 64 );
}
-void mpeg2_idct_init (uint32_t mm_accel)
+void mpeg2_idct_init ()
{
mpeg2_zero_block = mpeg2_zero_block_c;
-#if defined(ARCH_X86) || defined(ARCH_X86_64)
- if (mm_accel & MM_ACCEL_X86_MMXEXT) {
+#ifdef BUILD_MMXEXT_MAYBE
+ if ( CHECK_MMXEXT ) {
#ifdef LOG
fprintf (stderr, "Using MMXEXT for IDCT transform\n");
#endif
@@ -292,7 +293,11 @@ void mpeg2_idct_init (uint32_t mm_accel)
mpeg2_idct = mpeg2_idct_mmxext;
mpeg2_zero_block = mpeg2_zero_block_mmx;
mpeg2_idct_mmx_init ();
- } else if (mm_accel & MM_ACCEL_X86_MMX) {
+ } else
+#endif
+
+#ifdef BUILD_MMX_MAYBE
+ if ( CHECK_MMX ) {
#ifdef LOG
fprintf (stderr, "Using MMX for IDCT transform\n");
#endif
@@ -303,6 +308,7 @@ void mpeg2_idct_init (uint32_t mm_accel)
mpeg2_idct_mmx_init ();
} else
#endif
+
#if defined (ARCH_PPC) && defined (ENABLE_ALTIVEC)
if (mm_accel & MM_ACCEL_PPC_ALTIVEC) {
#ifdef LOG
@@ -314,6 +320,7 @@ void mpeg2_idct_init (uint32_t mm_accel)
mpeg2_idct = mpeg2_idct_c;
} else
#endif
+
#ifdef LIBMPEG2_MLIB
if (mm_accel & MM_ACCEL_MLIB) {
char * env_var;
diff -r 26351512648cf22745672d507b9913cf2f53be4d -r
de77c978064fe3fd5c651872fc698138c4e919a9 src/libmpeg2/motion_comp.c
--- a/src/libmpeg2/motion_comp.c Sat Jun 09 15:32:59 2007 +0200
+++ b/src/libmpeg2/motion_comp.c Sat Jun 09 15:32:35 2007 +0200
@@ -27,11 +27,11 @@
#include <inttypes.h>
#include "mpeg2_internal.h"
-#include "xineutils.h"
+#include "cpu_accel.h"
mpeg2_mc_t mpeg2_mc;
-void mpeg2_mc_init (uint32_t mm_accel)
+void mpeg2_mc_init ()
{
#ifdef LIBMPEG2_MLIB
if (mm_accel & MM_ACCEL_MLIB) {
@@ -42,24 +42,33 @@ void mpeg2_mc_init (uint32_t mm_accel)
}
#endif
-#if defined(ARCH_X86) || defined(ARCH_X86_64)
- if (mm_accel & MM_ACCEL_X86_MMXEXT) {
+#ifdef BUILD_MMXEXT_MAYBE
+ if ( CHECK_MMXEXT ) {
#ifdef LOG
fprintf (stderr, "Using MMXEXT for motion compensation\n");
#endif
mpeg2_mc = mpeg2_mc_mmxext;
- } else if (mm_accel & MM_ACCEL_X86_3DNOW) {
+ } else
+#endif
+
+#ifdef BUILD_3DNOW_MAYBE
+ if ( CHECK_3DNOW ) {
#ifdef LOG
fprintf (stderr, "Using 3DNOW for motion compensation\n");
#endif
mpeg2_mc = mpeg2_mc_3dnow;
- } else if (mm_accel & MM_ACCEL_X86_MMX) {
+ } else
+#endif
+
+#ifdef BUILD_MMX_MAYBE
+ if ( CHECK_MMX ) {
#ifdef LOG
fprintf (stderr, "Using MMX for motion compensation\n");
#endif
mpeg2_mc = mpeg2_mc_mmx;
} else
#endif
+
#if defined (ARCH_PPC) && defined (ENABLE_ALTIVEC)
if (mm_accel & MM_ACCEL_PPC_ALTIVEC) {
#ifdef LOG
diff -r 26351512648cf22745672d507b9913cf2f53be4d -r
de77c978064fe3fd5c651872fc698138c4e919a9 src/libmpeg2/mpeg2_internal.h
--- a/src/libmpeg2/mpeg2_internal.h Sat Jun 09 15:32:59 2007 +0200
+++ b/src/libmpeg2/mpeg2_internal.h Sat Jun 09 15:32:35 2007 +0200
@@ -210,7 +210,7 @@ typedef struct cpu_state_s {
/* cpu_state.c */
extern void (* mpeg2_cpu_state_save) (cpu_state_t * state);
extern void (* mpeg2_cpu_state_restore) (cpu_state_t * state);
-void mpeg2_cpu_state_init (uint32_t mm_accel);
+void mpeg2_cpu_state_init ();
/* header.c */
extern uint8_t mpeg2_scan_norm[64];
@@ -226,7 +226,7 @@ extern void (* mpeg2_idct_add) (int16_t
extern void (* mpeg2_idct_add) (int16_t * block, uint8_t * dest, int stride);
extern void (* mpeg2_idct) (int16_t * block);
extern void (* mpeg2_zero_block) (int16_t * block);
-void mpeg2_idct_init (uint32_t mm_accel);
+void mpeg2_idct_init ();
/* idct_mlib.c */
void mpeg2_idct_add_mlib (int16_t * block, uint8_t * dest, int stride);
@@ -261,7 +261,7 @@ void mpeg2_idct_altivec_init (void);
void mpeg2_idct_altivec_init (void);
/* motion_comp.c */
-void mpeg2_mc_init (uint32_t mm_accel);
+void mpeg2_mc_init ();
typedef struct mpeg2_mc_s {
void (* put [8]) (uint8_t * dst, uint8_t *, int32_t, int32_t);
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Xine-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xine-cvslog