diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | accessors.h | 47 | ||||
-rw-r--r-- | dxr3.c | 66 | ||||
-rw-r--r-- | dxr3.h | 2 | ||||
-rw-r--r-- | dxr3audio-alsa.c | 2 | ||||
-rw-r--r-- | dxr3interface.c | 16 | ||||
-rw-r--r-- | dxr3interface.h | 2 | ||||
-rw-r--r-- | settings.c | 46 | ||||
-rw-r--r-- | settings.h | 45 |
9 files changed, 105 insertions, 123 deletions
@@ -68,7 +68,7 @@ DEFINES += -DMICROCODE=\"/lib/firmware/em8300.bin\" OBJS = $(PLUGIN).o dxr3multichannelaudio.o \ dxr3syncbuffer.o dxr3audiodecoder.o dxr3blackframe.o dxr3audio.o \ - dxr3pesframe.o dxr3demuxdevice.o settings.o \ + dxr3pesframe.o dxr3demuxdevice.o \ dxr3interface.o dxr3device.o \ dxr3output.o dxr3output-video.o dxr3output-audio.o dxr3osd.o dxr3spudecoder.o \ dxr3audio-oss.o dxr3audio-alsa.o spuencoder.o spuregion.o scaler.o diff --git a/accessors.h b/accessors.h new file mode 100644 index 0000000..708b266 --- /dev/null +++ b/accessors.h @@ -0,0 +1,47 @@ +/* + * _ _ _ _ _____ + * __ ____| |_ __ _ __ | |_ _ __ _(_)_ __ __| |_ ___ _|___ / + * \ \ / / _` | '__|____| '_ \| | | | |/ _` | | '_ \ _____ / _` \ \/ / '__||_ \ + * \ V / (_| | | |_____| |_) | | |_| | (_| | | | | |_____| (_| |> <| | ___) | + * \_/ \__,_|_| | .__/|_|\__,_|\__, |_|_| |_| \__,_/_/\_\_| |____/ + * |_| |___/ + * + * Copyright (C) 2010 Christian Gmeiner + * + * This file is part of vdr-plugin-dxr3. + * + * vdr-plugin-dxr3 is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2. + * + * vdr-plugin-dxr3 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * 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 dxr3-plugin. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef ACCESSORS_H +#define ACCESSORS_H + +// based on a very good idea from +// * http://www.kirit.com/C%2B%2B%20killed%20the%20get%20%26%20set%20accessors +// * http://www.kirit.com/C%2B%2B%20killed%20the%20get%20%26%20set%20accessors/A%20simple%20meta-accessor + +template<typename T> +class Accessors { +public: + Accessors() {} + explicit Accessors(const T &t) : m_t(t) {} + + const T &operator() () const { return m_t; } + T operator() (const T &t) { return m_t = t; } + +private: + T m_t; +}; + +#endif /*ACCESSORS_H*/ @@ -34,17 +34,17 @@ eOSState cDxr3OsdItem::ProcessKey(eKeys Key) break; case DXR3_FORCE_LETTER_BOX: - cSettings::instance()->SetForceLetterBox( - !cSettings::instance()->GetForceLetterBox()); + cSettings::instance()->forceLetterBox( + !cSettings::instance()->forceLetterBox()); break; case DXR3_ANALOG_OUT: - cSettings::instance()->SetUseDigitalOut(0); + cSettings::instance()->useDigitalOut(0); //cDxr3Device::Instance().Reset(); break; case DXR3_DIGITAL_OUT: - cSettings::instance()->SetUseDigitalOut(1); + cSettings::instance()->useDigitalOut(1); //cDxr3Device::Instance().Reset(); break; } @@ -57,31 +57,31 @@ eOSState cDxr3OsdItem::ProcessKey(eKeys Key) // setup menu cMenuSetupDxr3::cMenuSetupDxr3(void) { - newBrightness = cSettings::instance()->GetBrightness(); + newBrightness = cSettings::instance()->brightness(); Add(new cMenuEditIntItem(tr("Brightness"), &newBrightness, 0, 999)); - newContrast = cSettings::instance()->GetContrast(); + newContrast = cSettings::instance()->contrast(); Add(new cMenuEditIntItem(tr("Contrast"), &newContrast, 0, 999)); - newSaturation = cSettings::instance()->GetSaturation(); + newSaturation = cSettings::instance()->saturation(); Add(new cMenuEditIntItem(tr("Saturation"), &newSaturation, 0, 999)); - newVideoMode = (int) cSettings::instance()->GetVideoMode(); + newVideoMode = (int) cSettings::instance()->videoMode(); menuVideoModes[0] = tr("PAL"); menuVideoModes[1] = tr("PAL60"); menuVideoModes[2] = tr("NTSC"); Add(new cMenuEditStraItem(tr("Video mode"), &newVideoMode, 3, menuVideoModes)); - newUseWSS = cSettings::instance()->GetUseWSS(); + newUseWSS = cSettings::instance()->useWss(); #ifdef EM8300_IOCTL_SET_WSS Add(new cMenuEditBoolItem(tr("Use widescreen signaling (WSS)"), &newUseWSS)); #endif - newUseDigitalOut = cSettings::instance()->GetUseDigitalOut(); + newUseDigitalOut = cSettings::instance()->useDigitalOut(); Add(new cMenuEditBoolItem(tr("Digital audio output"), &newUseDigitalOut)); - newHideMenu = cSettings::instance()->GetHideMenu(); + newHideMenu = cSettings::instance()->hideMenu(); Add(new cMenuEditBoolItem(tr("Hide main menu entry"), &newHideMenu)); - newDxr3Card = cSettings::instance()->GetDxr3Card(); + newDxr3Card = cSettings::instance()->card(); Add(new cMenuEditIntItem(tr("Card number"), &newDxr3Card, 0, DXR3_MAX_CARDS - 1)); } @@ -91,22 +91,22 @@ cMenuSetupDxr3::cMenuSetupDxr3(void) void cMenuSetupDxr3::Store(void) { SetupStore("Brightness", - cSettings::instance()->SetBrightness(newBrightness)); + cSettings::instance()->brightness(newBrightness)); SetupStore("Contrast", - cSettings::instance()->SetContrast(newContrast)); + cSettings::instance()->contrast(newContrast)); SetupStore("Saturation", - cSettings::instance()->SetSaturation(newSaturation)); + cSettings::instance()->saturation(newSaturation)); SetupStore("Dxr3VideoMode", - cSettings::instance()->SetVideoMode( - (eVideoMode) newVideoMode)); + cSettings::instance()->videoMode((eVideoMode) newVideoMode)); SetupStore("UseWSS", - cSettings::instance()->SetUseWSS(newUseWSS)); + cSettings::instance()->useWss(newUseWSS)); SetupStore("UseDigitalOut", - cSettings::instance()->SetUseDigitalOut(newUseDigitalOut)); + cSettings::instance()->useDigitalOut(newUseDigitalOut)); SetupStore("HideMenu", - cSettings::instance()->SetHideMenu(newHideMenu)); + cSettings::instance()->hideMenu(newHideMenu)); SetupStore("Dxr3Card", - cSettings::instance()->SetDxr3Card(newDxr3Card)); + cSettings::instance()->card(newDxr3Card)); + // Apply (some of the) settings cDxr3Interface::instance()->updateBcsValues(); @@ -170,42 +170,42 @@ bool cPluginDxr3::SetupParse(const char *Name, const char *Value) { if (!strcasecmp(Name, "UseDigitalOut")) { - cSettings::instance()->SetUseDigitalOut(atoi(Value)); + cSettings::instance()->useDigitalOut(atoi(Value)); return true; } if (!strcasecmp(Name, "Dxr3Card")) { - cSettings::instance()->SetDxr3Card(atoi(Value)); + cSettings::instance()->card(atoi(Value)); return true; } if (!strcasecmp(Name, "Dxr3VideoMode")) { - cSettings::instance()->SetVideoMode((eVideoMode) atoi(Value)); + cSettings::instance()->videoMode((eVideoMode) atoi(Value)); return true; } if (!strcasecmp(Name, "UseWSS")) { - cSettings::instance()->SetUseWSS(atoi(Value)); + cSettings::instance()->useWss(atoi(Value)); return true; } if (!strcasecmp(Name, "HideMenu")) { - cSettings::instance()->SetHideMenu(atoi(Value)); + cSettings::instance()->hideMenu(atoi(Value)); return true; } if (!strcasecmp(Name, "Brightness")) { - cSettings::instance()->SetBrightness(atoi(Value)); + cSettings::instance()->brightness(atoi(Value)); return true; } if (!strcasecmp(Name, "Contrast")) { - cSettings::instance()->SetContrast(atoi(Value)); + cSettings::instance()->contrast(atoi(Value)); return true; } if (!strcasecmp(Name, "Saturation")) { - cSettings::instance()->SetSaturation(atoi(Value)); + cSettings::instance()->saturation(atoi(Value)); return true; } @@ -215,7 +215,7 @@ bool cPluginDxr3::SetupParse(const char *Name, const char *Value) // ================================== const char* cPluginDxr3::MainMenuEntry() { - return cSettings::instance()->GetHideMenu() ? + return cSettings::instance()->hideMenu() ? NULL : tr(MAINMENUENTRY); } @@ -260,17 +260,17 @@ cString cPluginDxr3::SVDRPCommand(const char *Command, const char *Option, int value = atoi(Option); if (!strcasecmp(Command, "BRI")) { - cSettings::instance()->SetBrightness(value); + cSettings::instance()->brightness(value); cDxr3Interface::instance()->updateBcsValues(); return cString::sprintf("Brightness set to %d", value); } if (!strcasecmp(Command, "CON")) { - cSettings::instance()->SetContrast(value); + cSettings::instance()->contrast(value); cDxr3Interface::instance()->updateBcsValues(); return cString::sprintf("Contrast set to %d", value); } if (!strcasecmp(Command, "SAT")) { - cSettings::instance()->SetSaturation(value); + cSettings::instance()->saturation(value); cDxr3Interface::instance()->updateBcsValues(); return cString::sprintf("Saturation set to %d", value); } @@ -69,7 +69,7 @@ public: Add(new cDxr3OsdItem(hk(tr("Toggle force letterbox")), DXR3_FORCE_LETTER_BOX)); - if (cSettings::instance()->GetUseDigitalOut()) + if (cSettings::instance()->useDigitalOut()) Add(new cDxr3OsdItem(hk(tr("Switch to analog audio output")), DXR3_ANALOG_OUT)); else diff --git a/dxr3audio-alsa.c b/dxr3audio-alsa.c index 2c411f9..46e5332 100644 --- a/dxr3audio-alsa.c +++ b/dxr3audio-alsa.c @@ -30,7 +30,7 @@ void cAudioAlsa::openDevice() return; // generate alsa card name - int card = cSettings::instance()->GetDxr3Card(); + int card = cSettings::instance()->card(); string cardname = "EM8300"; if (card > 0) { diff --git a/dxr3interface.c b/dxr3interface.c index ff6066b..f5563cb 100644 --- a/dxr3interface.c +++ b/dxr3interface.c @@ -147,7 +147,7 @@ void cDxr3Interface::SetAspectRatio(uint32_t ratio) Lock(); - if (cSettings::instance()->GetForceLetterBox()) + if (cSettings::instance()->forceLetterBox()) ratio = EM8300_ASPECTRATIO_16_9; if (ratio != UNKNOWN_ASPECT_RATIO) @@ -490,7 +490,7 @@ void cDxr3Interface::UploadMicroCode() //! config and setup device via ioctl calls void cDxr3Interface::ConfigureDevice() { - uint32_t videomode = cSettings::instance()->GetVideoMode(); + uint32_t videomode = cSettings::instance()->videoMode(); switch (videomode) { case PAL: @@ -511,9 +511,9 @@ void cDxr3Interface::ConfigureDevice() } // set brightness/contrast/saturation - m_bcs.brightness = cSettings::instance()->GetBrightness(); - m_bcs.contrast = cSettings::instance()->GetContrast(); - m_bcs.saturation = cSettings::instance()->GetSaturation(); + m_bcs.brightness = cSettings::instance()->brightness(); + m_bcs.contrast = cSettings::instance()->contrast(); + m_bcs.saturation = cSettings::instance()->saturation(); dsyslog("dxr3: configure: brightness=%d,contrast=%d,saturation=%d", m_bcs.brightness, m_bcs.contrast, m_bcs.saturation); if (ioctl(m_fdControl, EM8300_IOCTL_SETBCS, &m_bcs) == -1) { @@ -609,9 +609,9 @@ void cDxr3Interface::ResetHardware() void cDxr3Interface::updateBcsValues() { // update m_bcs with values from settings - m_bcs.brightness = cSettings::instance()->GetBrightness(); - m_bcs.contrast = cSettings::instance()->GetContrast(); - m_bcs.saturation = cSettings::instance()->GetSaturation(); + m_bcs.brightness = cSettings::instance()->brightness(); + m_bcs.contrast = cSettings::instance()->contrast(); + m_bcs.saturation = cSettings::instance()->saturation(); // update bcs values in hardware CHECK(ioctl(m_fdControl, EM8300_IOCTL_SETBCS, &m_bcs)); diff --git a/dxr3interface.h b/dxr3interface.h index 0392654..96d551a 100644 --- a/dxr3interface.h +++ b/dxr3interface.h @@ -58,7 +58,7 @@ public: ~cDxr3Interface(); static int Dxr3Open(const char *name, int mode, bool report_error = true) { - const char *filename = *cDxr3Name(name, cSettings::instance()->GetDxr3Card()); + const char *filename = *cDxr3Name(name, cSettings::instance()->card()); int fd = open(filename, mode); if (report_error && (fd < 0)) { diff --git a/settings.c b/settings.c deleted file mode 100644 index be60c21..0000000 --- a/settings.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * dxr3configdata.c - * - * Copyright (C) 2002-2004 Kai Möller - * Copyright (C) 2004 Christian Gmeiner - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include "settings.h" - -// ================================== -//! constructor -cSettings::cSettings() -{ - m_digitaloutput = 0; - m_card = 0; - m_forceletterbox = 0; - m_videomode = PAL; - m_brightness = 500; - m_contrast = 500; - m_saturation = 500; - m_hidemenu = 0; - m_usewss = 0; -} - -// Local variables: -// mode: c++ -// c-file-style: "stroustrup" -// c-file-offsets: ((inline-open . 0)) -// tab-width: 4; -// indent-tabs-mode: nil -// End: @@ -24,6 +24,7 @@ #define _DXR3_CONFIGDATA_H_ #include "singleton.h" +#include "accessors.h" #include <linux/em8300.h> // ================================== @@ -44,41 +45,21 @@ enum eVideoMode class cSettings : public Singleton<cSettings> { public: - cSettings(); + cSettings() : useDigitalOut(0), card(0), forceLetterBox(0), videoMode(PAL), + brightness(500), contrast(500), saturation(500), + hideMenu(0), useWss(0) {} - int GetUseDigitalOut() const { return m_digitaloutput; } - int SetUseDigitalOut(int value) { return m_digitaloutput = value; } - int GetDxr3Card() const { return m_card; } - int SetDxr3Card(int value) { return m_card = value; } - int GetForceLetterBox() const { return m_forceletterbox; } - int SetForceLetterBox(int value) { return m_forceletterbox = value; } + Accessors<int> useDigitalOut; + Accessors<int> card; + Accessors<int> forceLetterBox; + Accessors<eVideoMode> videoMode; - eVideoMode GetVideoMode() const { return m_videomode; } - eVideoMode SetVideoMode(eVideoMode m) { return m_videomode = m; } + Accessors<int> brightness; + Accessors<int> contrast; + Accessors<int> saturation; - int GetBrightness() const { return m_brightness; } - int SetBrightness(int value) { return m_brightness = value; } - int GetContrast() const { return m_contrast; } - int SetContrast(int value) { return m_contrast = value; } - int GetSaturation() const { return m_saturation; } - int SetSaturation(int value) { return m_saturation = value; } - - int GetHideMenu() const { return m_hidemenu; } - int SetHideMenu(int value) { return m_hidemenu = value; } - - int GetUseWSS() const { return m_usewss; } - int SetUseWSS(int value) { return m_usewss = value; } - -private: - eVideoMode m_videomode; - int m_usewss; - int m_digitaloutput; - int m_card; - int m_forceletterbox; - int m_brightness; - int m_contrast; - int m_saturation; - int m_hidemenu; + Accessors<int> hideMenu; + Accessors<int> useWss; }; #endif /*_DXR3_CONFIGDATA_H_*/ |