summaryrefslogtreecommitdiff
path: root/rpihddevice.c
diff options
context:
space:
mode:
Diffstat (limited to 'rpihddevice.c')
-rw-r--r--rpihddevice.c36
1 files changed, 26 insertions, 10 deletions
diff --git a/rpihddevice.c b/rpihddevice.c
index 9ca329a..fb90c11 100644
--- a/rpihddevice.c
+++ b/rpihddevice.c
@@ -9,10 +9,9 @@
#include "ovgosd.h"
#include "omxdevice.h"
+#include "setup.h"
-#include "bcm_host.h"
-
-static const char *VERSION = "0.0.3";
+static const char *VERSION = "0.0.4";
static const char *DESCRIPTION = "HD output device for Raspberry Pi";
class cDummyDevice : cDevice
@@ -29,7 +28,8 @@ public:
virtual bool Poll(cPoller &Poller, int TimeoutMs = 0) { return true; }
virtual bool Flush(int TimeoutMs = 0) { return true; }
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect)
- { cOmxDevice::GetDisplaySize(Width, Height, PixelAspect); }
+ { cRpiSetup::GetDisplaySize(Width, Height, PixelAspect); }
+
bool Start(void) {return true;}
protected:
@@ -43,7 +43,7 @@ private:
cOmxDevice *m_device;
- static void OnPrimaryDevice() { new cRpiOsdProvider(); }
+ static void OnPrimaryDevice(void) { new cRpiOsdProvider(); }
public:
cPluginRpiHdDevice(void);
@@ -58,30 +58,36 @@ public:
virtual void Housekeeping(void) {}
virtual const char *MainMenuEntry(void) { return NULL; }
virtual cOsdObject *MainMenuAction(void) { return NULL; }
- virtual cMenuSetupPage *SetupMenu(void) { return NULL; }
- virtual bool SetupParse(const char *Name, const char *Value) { return false; };
+ virtual cMenuSetupPage *SetupMenu(void);
+ virtual bool SetupParse(const char *Name, const char *Value);
};
cPluginRpiHdDevice::cPluginRpiHdDevice(void) :
m_device(0)
{
- m_device = new cOmxDevice(&cPluginRpiHdDevice::OnPrimaryDevice);
//new cDummyDevice();
}
cPluginRpiHdDevice::~cPluginRpiHdDevice()
{
delete m_device;
+ cRpiSetup::DropInstance();
}
bool cPluginRpiHdDevice::Initialize(void)
{
- bcm_host_init();
+ if (!cRpiSetup::HwInit())
+ return false;
+
+ if (!cRpiSetup::IsVideoCodecSupported(cOmxDevice::eMPEG2))
+ esyslog("rpihddevice: WARNING: MPEG2 video decoder not enabled!");
+
+ m_device = new cOmxDevice(&OnPrimaryDevice);
if (m_device)
return (m_device->Init() == 0);
- return true;
+ return false;
}
bool cPluginRpiHdDevice::Start(void)
@@ -95,4 +101,14 @@ void cPluginRpiHdDevice::Stop(void)
m_device->DeInit();
}
+cMenuSetupPage* cPluginRpiHdDevice::SetupMenu(void)
+{
+ return cRpiSetup::GetInstance()->GetSetupPage();
+}
+
+bool cPluginRpiHdDevice::SetupParse(const char *Name, const char *Value)
+{
+ return cRpiSetup::GetInstance()->Parse(Name, Value);
+}
+
VDRPLUGINCREATOR(cPluginRpiHdDevice); // Don't touch this!