summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dxr3.c5
-rw-r--r--dxr3device.c13
-rw-r--r--settings.c25
-rw-r--r--settings.h8
4 files changed, 36 insertions, 15 deletions
diff --git a/dxr3.c b/dxr3.c
index b584940..23ff281 100644
--- a/dxr3.c
+++ b/dxr3.c
@@ -227,7 +227,10 @@ cOsdObject* cPluginDxr3::MainMenuAction()
const char *cPluginDxr3::CommandLineHelp()
{
- return " -f --firmware-loading Enable automatic firmware loading\n";
+ return " -f --firmware-loading Enable automatic firmware loading\n" \
+ " -a DRIVER --audio-driver=DRIVER Select wanted audio driver" \
+ " - alsa " \
+ " - oss (default)";
}
bool cPluginDxr3::ProcessArgs(int argc, char *argv[])
diff --git a/dxr3device.c b/dxr3device.c
index d9a12e3..29ba21a 100644
--- a/dxr3device.c
+++ b/dxr3device.c
@@ -40,12 +40,13 @@ cDxr3Device::cDxr3Device() : pluginOn(true), vPts(0), scrSet(false), playCount(0
claimDevices();
- // TODO: this will be later the place,
- // where we will decide what kind of
- // audio output system we will use.
- audioOut = new cAudioOss();
- //audioOut = new cAudioAlsa();
- audioOut->openDevice();
+ if (cSettings::instance()->audioDriver() == OSS) {
+ isyslog("[dxr3-device] using oss audio driver");
+ audioOut = new cAudioOss();
+ } else {
+ isyslog("[dxr3-device] using alsa audio driver");
+ audioOut = new cAudioAlsa();
+ }
aDecoder = new cDxr3AudioDecoder();
}
diff --git a/settings.c b/settings.c
index 9aa9e6a..b28db6b 100644
--- a/settings.c
+++ b/settings.c
@@ -32,19 +32,30 @@ bool cSettings::processArgs(int argc, char *argv[])
{
static struct option long_options[] = {
{ "firmware-loading", no_argument, NULL, 'f' },
+ { "audio-driver", required_argument, NULL, 'a' },
{ NULL }
};
int c;
- while ((c = getopt_long(argc, argv, "f", long_options, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "f:a", long_options, NULL)) != -1) {
switch (c) {
- case 'f':
- dsyslog("[dxr3-settings] enableing automatic firmware loading");
- loadFirmware(true);
- break;
+ case 'f':
+ dsyslog("[dxr3-settings] enableing automatic firmware loading");
+ loadFirmware(true);
+ break;
- default:
- return false;
+ case 'a':
+ if (optarg && strcmp(optarg, "alsa") == 0) {
+ audioDriver(ALSA);
+ } else if (optarg && strcmp(optarg, "oss") == 0) {
+ audioDriver(OSS);
+ } else {
+ esyslog("[dxr3-settings] unkown audio driver - default audio driver will be used");
+ }
+ break;
+
+ default:
+ return false;
}
}
return true;
diff --git a/settings.h b/settings.h
index 62b2110..0d9327b 100644
--- a/settings.h
+++ b/settings.h
@@ -39,6 +39,11 @@ enum eVideoMode
NTSC = EM8300_VIDEOMODE_NTSC
};
+enum AudioDriver {
+ OSS = 0,
+ ALSA
+};
+
// ==================================
//! global interface to access all config datas of this plugin
/*
@@ -50,7 +55,7 @@ class cSettings : public Singleton<cSettings>
public:
cSettings() : useDigitalOut(0), card(0), forceLetterBox(0), videoMode(PAL),
brightness(500), contrast(500), saturation(500),
- hideMenu(0), useWss(0), loadFirmware(false) {}
+ hideMenu(0), useWss(0), loadFirmware(false), audioDriver(OSS) {}
bool processArgs(int argc, char *argv[]);
@@ -66,6 +71,7 @@ public:
Accessors<int> hideMenu;
Accessors<int> useWss;
Accessors<bool> loadFirmware;
+ Accessors<AudioDriver> audioDriver;
};
#endif /*SETTINGS_H*/