1
/*****************************************************************************
2
* imdct3dn.c : accelerated 3D Now! IMDCT module
3
*****************************************************************************
4
* Copyright (C) 1999-2001 VideoLAN
5
* $Id: imdct3dn.c,v 1.7 2001/11/28 15:08:05 massiot Exp $
7
* Authors: Renaud Dartus <reno@via.ecp.fr>
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation; either version 2 of the License, or
12
* (at your option) any later version.
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
19
* You should have received a copy of the GNU General Public License
20
* along with this program; if not, write to the Free Software
21
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
22
*****************************************************************************/
24
#define MODULE_NAME imdct3dn
25
#include "modules_inner.h"
27
/*****************************************************************************
29
*****************************************************************************/
42
#include "ac3_imdct.h"
43
#include "ac3_imdct_common.h"
46
#include "modules_export.h"
48
/*****************************************************************************
49
* Local and extern prototypes.
50
*****************************************************************************/
51
static void imdct_getfunctions( function_list_t * p_function_list );
52
static int imdct_Probe ( probedata_t *p_data );
54
/*****************************************************************************
55
* Build configuration tree.
56
*****************************************************************************/
58
ADD_WINDOW( "Configuration for IMDCT module" )
59
ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
63
p_module->i_capabilities = MODULE_CAPABILITY_NULL
64
| MODULE_CAPABILITY_IMDCT;
65
p_module->psz_longname = "3D Now! AC3 IMDCT module";
69
imdct_getfunctions( &p_module->p_functions->imdct );
72
MODULE_DEACTIVATE_START
73
MODULE_DEACTIVATE_STOP
75
/* Following functions are local */
77
/*****************************************************************************
78
* Functions exported as capabilities. They are declared as static so that
79
* we don't pollute the namespace too much.
80
*****************************************************************************/
81
static void imdct_getfunctions( function_list_t * p_function_list )
83
p_function_list->pf_probe = imdct_Probe;
84
#define F p_function_list->functions.imdct
85
F.pf_imdct_init = _M( imdct_init );
86
F.pf_imdct_256 = _M( imdct_do_256 );
87
F.pf_imdct_256_nol = _M( imdct_do_256_nol );
88
F.pf_imdct_512 = _M( imdct_do_512 );
89
F.pf_imdct_512_nol = _M( imdct_do_512_nol );
93
/*****************************************************************************
94
* imdct_Probe: returns a preference score
95
*****************************************************************************/
96
static int imdct_Probe( probedata_t *p_data )
98
if( !TestCPU( CPU_CAPABILITY_3DNOW ) )
103
if( TestMethod( IMDCT_METHOD_VAR, "imdct3dn" )
104
|| TestMethod( IMDCT_METHOD_VAR, "3dn" ) )
109
/* This plugin always works */