diff options
-rw-r--r-- | dxr3.c | 5 | ||||
-rw-r--r-- | dxr3device.c | 13 | ||||
-rw-r--r-- | settings.c | 25 | ||||
-rw-r--r-- | settings.h | 8 |
4 files changed, 36 insertions, 15 deletions
@@ -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(); } @@ -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; @@ -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*/ |