Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
45aba72f
Commit
45aba72f
authored
Jun 18, 2009
by
JP Dinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor spatializer initialisation and teardown to use a table and a loop.
parent
9ff188c7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
39 deletions
+45
-39
modules/audio_filter/spatializer/spatializer.cpp
modules/audio_filter/spatializer/spatializer.cpp
+45
-39
No files found.
modules/audio_filter/spatializer/spatializer.cpp
View file @
45aba72f
...
...
@@ -19,9 +19,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
*
along with this program; if not, write to the Free Software
*
Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* You should have received a copy of the GNU General Public License
along
*
with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
...
...
@@ -49,7 +49,7 @@ static void Close( vlc_object_t * );
#define ROOMSIZE_TEXT N_("Room size")
#define ROOMSIZE_LONGTEXT N_("Defines the virtual surface of the room" \
"
emulated by the filter." )
"
emulated by the filter." )
#define WIDTH_TEXT N_("Room width")
#define WIDTH_LONGTEXT N_("Width of the virtual room")
...
...
@@ -97,7 +97,7 @@ public:
{
vlc_mutex_lock
(
p_lock
);
}
virtual
~
CLocker
()
~
CLocker
()
{
vlc_mutex_unlock
(
p_lock
);
}
...
...
@@ -105,28 +105,37 @@ private:
vlc_mutex_t
*
p_lock
;
};
static
const
char
*
psz_control_names
[]
=
{
"spatializer-roomsize"
,
"spatializer-width"
,
"spatializer-wet"
,
"spatializer-dry"
,
"spatializer-damp"
#define DECLARECB(fn) static int fn (vlc_object_t *,char const *, \
vlc_value_t, vlc_value_t, void *)
DECLARECB
(
RoomCallback
);
DECLARECB
(
WetCallback
);
DECLARECB
(
DryCallback
);
DECLARECB
(
DampCallback
);
DECLARECB
(
WidthCallback
);
#undef DECLARECB
struct
callback_s
{
const
char
*
psz_name
;
int
(
*
fp_callback
)(
vlc_object_t
*
,
const
char
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
void
(
revmodel
::*
fp_set
)(
float
);
};
static
const
callback_s
callbacks
[]
=
{
{
"spatializer-roomsize"
,
RoomCallback
,
&
revmodel
::
setroomsize
},
{
"spatializer-width"
,
WidthCallback
,
&
revmodel
::
setwidth
},
{
"spatializer-wet"
,
WetCallback
,
&
revmodel
::
setwet
},
{
"spatializer-dry"
,
DryCallback
,
&
revmodel
::
setdry
},
{
"spatializer-damp"
,
DampCallback
,
&
revmodel
::
setdamp
}
};
enum
{
num_callbacks
=
sizeof
(
callbacks
)
/
sizeof
(
callback_s
)
};
static
void
DoWork
(
aout_instance_t
*
,
aout_filter_t
*
,
aout_buffer_t
*
,
aout_buffer_t
*
);
static
void
SpatFilter
(
aout_instance_t
*
,
aout_filter_t
*
,
float
*
,
float
*
,
int
,
int
);
static
int
RoomCallback
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
static
int
WetCallback
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
static
int
DryCallback
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
static
int
DampCallback
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
static
int
WidthCallback
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
/*****************************************************************************
* Open:
...
...
@@ -135,8 +144,8 @@ static int Open( vlc_object_t *p_this )
{
aout_filter_t
*
p_filter
=
(
aout_filter_t
*
)
p_this
;
aout_filter_sys_t
*
p_sys
;
aout_instance_t
*
p_aout
=
(
aout_instance_t
*
)
p_filter
->
p_parent
;
bool
b_fit
=
true
;
aout_instance_t
*
p_aout
=
(
aout_instance_t
*
)
p_filter
->
p_parent
;
bool
b_fit
=
true
;
msg_Dbg
(
p_this
,
"Opening filter spatializer"
);
if
(
p_filter
->
input
.
i_format
!=
VLC_CODEC_FL32
||
...
...
@@ -170,20 +179,17 @@ static int Open( vlc_object_t *p_this )
vlc_mutex_init
(
&
p_sys
->
lock
);
/* Init the variables */
/* Init the variables */
/* Add the callbacks */
p_sys
->
p_reverbm
=
new
revmodel
();
p_sys
->
p_reverbm
->
setroomsize
(
var_CreateGetFloatCommand
(
p_aout
,
psz_control_names
[
0
]
)
);
p_sys
->
p_reverbm
->
setwidth
(
var_CreateGetFloatCommand
(
p_aout
,
psz_control_names
[
1
]
)
);
p_sys
->
p_reverbm
->
setwet
(
var_CreateGetFloatCommand
(
p_aout
,
psz_control_names
[
2
]
)
);
p_sys
->
p_reverbm
->
setdry
(
var_CreateGetFloatCommand
(
p_aout
,
psz_control_names
[
3
]
)
);
p_sys
->
p_reverbm
->
setdamp
(
var_CreateGetFloatCommand
(
p_aout
,
psz_control_names
[
4
]
));
/* Add the callbacks */
var_AddCallback
(
p_aout
,
psz_control_names
[
0
],
RoomCallback
,
p_sys
);
var_AddCallback
(
p_aout
,
psz_control_names
[
1
],
WidthCallback
,
p_sys
);
var_AddCallback
(
p_aout
,
psz_control_names
[
2
],
WetCallback
,
p_sys
);
var_AddCallback
(
p_aout
,
psz_control_names
[
3
],
DryCallback
,
p_sys
);
var_AddCallback
(
p_aout
,
psz_control_names
[
4
],
DampCallback
,
p_sys
);
for
(
unsigned
i
=
0
;
i
<
num_callbacks
;
++
i
)
{
/* NOTE: C++ pointer-to-member function call from table lookup. */
(
p_sys
->
p_reverbm
->*
(
callbacks
[
i
].
fp_set
))
(
var_CreateGetFloatCommand
(
p_aout
,
callbacks
[
i
].
psz_name
));
var_AddCallback
(
p_aout
,
callbacks
[
i
].
psz_name
,
callbacks
[
i
].
fp_callback
,
p_sys
);
}
return
VLC_SUCCESS
;
}
...
...
@@ -198,11 +204,11 @@ static void Close( vlc_object_t *p_this )
aout_instance_t
*
p_aout
=
(
aout_instance_t
*
)
p_filter
->
p_parent
;
/* Delete the callbacks */
var_DelCallback
(
p_aout
,
psz_control_names
[
0
],
RoomCallback
,
p_sys
);
var_DelCallback
(
p_aout
,
psz_control_names
[
1
],
WidthCallback
,
p_sys
);
var_DelCallback
(
p_aout
,
psz_control_names
[
2
],
WetCallback
,
p_sys
);
var_DelCallback
(
p_aout
,
psz_control_names
[
3
],
DryC
allback
,
p_sys
);
var_DelCallback
(
p_aout
,
psz_control_names
[
4
],
DampCallback
,
p_sys
);
for
(
unsigned
i
=
0
;
i
<
num_callbacks
;
++
i
)
{
var_DelCallback
(
p_aout
,
callbacks
[
i
].
psz_name
,
callbacks
[
i
].
fp_c
allback
,
p_sys
);
}
delete
p_sys
->
p_reverbm
;
vlc_mutex_destroy
(
&
p_sys
->
lock
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment