Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
936449c6
Commit
936449c6
authored
Jan 25, 2009
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mixer_api: removed struct mixer_data
The mixer plugins should re-use the mixer struct and incorporate it in their object class.
parent
dc575106
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
39 deletions
+45
-39
alsa_mixer.c
src/mixer/alsa_mixer.c
+12
-7
oss_mixer.c
src/mixer/oss_mixer.c
+12
-7
mixer_api.c
src/mixer_api.c
+11
-16
mixer_api.h
src/mixer_api.h
+10
-9
No files found.
src/mixer/alsa_mixer.c
View file @
936449c6
...
...
@@ -26,6 +26,9 @@
#define VOLUME_MIXER_ALSA_CONTROL_DEFAULT "PCM"
struct
alsa_mixer
{
/** the base mixer class */
struct
mixer
base
;
char
*
device
;
char
*
control
;
snd_mixer_t
*
handle
;
...
...
@@ -35,10 +38,12 @@ struct alsa_mixer {
int
volume_set
;
};
static
struct
mixer
_data
*
static
struct
mixer
*
alsa_mixer_init
(
const
struct
config_param
*
param
)
{
struct
alsa_mixer
*
am
=
g_malloc
(
sizeof
(
struct
alsa_mixer
));
struct
alsa_mixer
*
am
=
g_new
(
struct
alsa_mixer
,
1
);
mixer_init
(
&
am
->
base
,
&
alsa_mixer
);
am
->
device
=
config_dup_block_string
(
param
,
"mixer_device"
,
NULL
);
am
->
control
=
config_dup_block_string
(
param
,
"mixer_control"
,
NULL
);
...
...
@@ -49,11 +54,11 @@ alsa_mixer_init(const struct config_param *param)
am
->
volume_max
=
0
;
am
->
volume_set
=
-
1
;
return
(
struct
mixer_data
*
)
am
;
return
&
am
->
base
;
}
static
void
alsa_mixer_finish
(
struct
mixer
_data
*
data
)
alsa_mixer_finish
(
struct
mixer
*
data
)
{
struct
alsa_mixer
*
am
=
(
struct
alsa_mixer
*
)
data
;
...
...
@@ -63,7 +68,7 @@ alsa_mixer_finish(struct mixer_data *data)
}
static
void
alsa_mixer_close
(
struct
mixer
_data
*
data
)
alsa_mixer_close
(
struct
mixer
*
data
)
{
struct
alsa_mixer
*
am
=
(
struct
alsa_mixer
*
)
data
;
if
(
am
->
handle
)
snd_mixer_close
(
am
->
handle
);
...
...
@@ -71,7 +76,7 @@ alsa_mixer_close(struct mixer_data *data)
}
static
bool
alsa_mixer_open
(
struct
mixer
_data
*
data
)
alsa_mixer_open
(
struct
mixer
*
data
)
{
struct
alsa_mixer
*
am
=
(
struct
alsa_mixer
*
)
data
;
int
err
;
...
...
@@ -142,7 +147,7 @@ alsa_mixer_open(struct mixer_data *data)
}
static
bool
alsa_mixer_control
(
struct
mixer
_data
*
data
,
int
cmd
,
void
*
arg
)
alsa_mixer_control
(
struct
mixer
*
data
,
int
cmd
,
void
*
arg
)
{
struct
alsa_mixer
*
am
=
(
struct
alsa_mixer
*
)
data
;
switch
(
cmd
)
{
...
...
src/mixer/oss_mixer.c
View file @
936449c6
...
...
@@ -36,16 +36,21 @@
#define VOLUME_MIXER_OSS_DEFAULT "/dev/mixer"
struct
oss_mixer
{
/** the base mixer class */
struct
mixer
base
;
char
*
device
;
char
*
control
;
int
device_fd
;
int
volume_control
;
};
static
struct
mixer
_data
*
static
struct
mixer
*
oss_mixer_init
(
const
struct
config_param
*
param
)
{
struct
oss_mixer
*
om
=
g_malloc
(
sizeof
(
struct
oss_mixer
));
struct
oss_mixer
*
om
=
g_new
(
struct
oss_mixer
,
1
);
mixer_init
(
&
om
->
base
,
&
oss_mixer
);
om
->
device
=
config_dup_block_string
(
param
,
"mixer_device"
,
NULL
);
om
->
control
=
config_dup_block_string
(
param
,
"mixer_control"
,
NULL
);
...
...
@@ -53,11 +58,11 @@ oss_mixer_init(const struct config_param *param)
om
->
device_fd
=
-
1
;
om
->
volume_control
=
SOUND_MIXER_PCM
;
return
(
struct
mixer_data
*
)
om
;
return
&
om
->
base
;
}
static
void
oss_mixer_finish
(
struct
mixer
_data
*
data
)
oss_mixer_finish
(
struct
mixer
*
data
)
{
struct
oss_mixer
*
om
=
(
struct
oss_mixer
*
)
data
;
...
...
@@ -67,7 +72,7 @@ oss_mixer_finish(struct mixer_data *data)
}
static
void
oss_mixer_close
(
struct
mixer
_data
*
data
)
oss_mixer_close
(
struct
mixer
*
data
)
{
struct
oss_mixer
*
om
=
(
struct
oss_mixer
*
)
data
;
if
(
om
->
device_fd
!=
-
1
)
...
...
@@ -91,7 +96,7 @@ oss_find_mixer(const char *name)
}
static
bool
oss_mixer_open
(
struct
mixer
_data
*
data
)
oss_mixer_open
(
struct
mixer
*
data
)
{
struct
oss_mixer
*
om
=
(
struct
oss_mixer
*
)
data
;
const
char
*
device
=
VOLUME_MIXER_OSS_DEFAULT
;
...
...
@@ -133,7 +138,7 @@ oss_mixer_open(struct mixer_data *data)
}
static
bool
oss_mixer_control
(
struct
mixer
_data
*
data
,
int
cmd
,
void
*
arg
)
oss_mixer_control
(
struct
mixer
*
data
,
int
cmd
,
void
*
arg
)
{
struct
oss_mixer
*
om
=
(
struct
oss_mixer
*
)
data
;
switch
(
cmd
)
{
...
...
src/mixer_api.c
View file @
936449c6
...
...
@@ -21,14 +21,6 @@
#include "mixer_api.h"
void
mixer_finish
(
struct
mixer
*
mixer
)
{
assert
(
mixer
!=
NULL
&&
mixer
->
plugin
!=
NULL
);
mixer
->
plugin
->
finish
(
mixer
->
data
);
mixer
->
data
=
NULL
;
mixer
->
plugin
=
NULL
;
}
struct
mixer
*
mixer_new
(
const
struct
mixer_plugin
*
plugin
,
const
struct
config_param
*
param
)
{
...
...
@@ -36,33 +28,36 @@ mixer_new(const struct mixer_plugin *plugin, const struct config_param *param)
assert
(
plugin
!=
NULL
);
mixer
=
g_new
(
struct
mixer
,
1
);
mixer
->
plugin
=
plugin
;
mixer
->
data
=
mixer
->
plugin
->
init
(
param
);
mixer
=
plugin
->
init
(
param
);
assert
(
mixer
->
plugin
==
plugin
);
return
mixer
;
}
void
mixer_free
(
struct
mixer
*
mixer
)
{
mixer_finish
(
mixer
);
g_free
(
mixer
);
assert
(
mixer
!=
NULL
);
assert
(
mixer
->
plugin
!=
NULL
);
mixer
->
plugin
->
finish
(
mixer
);
}
bool
mixer_open
(
struct
mixer
*
mixer
)
{
assert
(
mixer
!=
NULL
&&
mixer
->
plugin
!=
NULL
);
return
mixer
->
plugin
->
open
(
mixer
->
data
);
return
mixer
->
plugin
->
open
(
mixer
);
}
bool
mixer_control
(
struct
mixer
*
mixer
,
int
cmd
,
void
*
arg
)
{
assert
(
mixer
!=
NULL
&&
mixer
->
plugin
!=
NULL
);
return
mixer
->
plugin
->
control
(
mixer
->
data
,
cmd
,
arg
);
return
mixer
->
plugin
->
control
(
mixer
,
cmd
,
arg
);
}
void
mixer_close
(
struct
mixer
*
mixer
)
{
assert
(
mixer
!=
NULL
&&
mixer
->
plugin
!=
NULL
);
mixer
->
plugin
->
close
(
mixer
->
data
);
mixer
->
plugin
->
close
(
mixer
);
}
src/mixer_api.h
View file @
936449c6
...
...
@@ -28,41 +28,42 @@
extern
const
struct
mixer_plugin
alsa_mixer
;
extern
const
struct
mixer_plugin
oss_mixer
;
struct
mixer_data
;
struct
mixer_plugin
{
/**
* Alocates and configures a mixer device.
*/
struct
mixer
_data
*
(
*
init
)(
const
struct
config_param
*
param
);
struct
mixer
*
(
*
init
)(
const
struct
config_param
*
param
);
/**
* Finish and free mixer data
*/
void
(
*
finish
)(
struct
mixer
_data
*
data
);
void
(
*
finish
)(
struct
mixer
*
data
);
/**
* Open mixer device
*/
bool
(
*
open
)(
struct
mixer
_data
*
data
);
bool
(
*
open
)(
struct
mixer
*
data
);
/**
* Control mixer device.
*/
bool
(
*
control
)(
struct
mixer
_data
*
data
,
int
cmd
,
void
*
arg
);
bool
(
*
control
)(
struct
mixer
*
data
,
int
cmd
,
void
*
arg
);
/**
* Close mixer device
*/
void
(
*
close
)(
struct
mixer
_data
*
data
);
void
(
*
close
)(
struct
mixer
*
data
);
};
struct
mixer
{
const
struct
mixer_plugin
*
plugin
;
struct
mixer_data
*
data
;
};
void
mixer_finish
(
struct
mixer
*
mixer
);
static
inline
void
mixer_init
(
struct
mixer
*
mixer
,
const
struct
mixer_plugin
*
plugin
)
{
mixer
->
plugin
=
plugin
;
}
struct
mixer
*
mixer_new
(
const
struct
mixer_plugin
*
plugin
,
const
struct
config_param
*
param
);
...
...
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