summaryrefslogtreecommitdiff
path: root/PLUGINS
diff options
context:
space:
mode:
authorKlaus Schmidinger <Klaus (dot) Schmidinger (at) tvdr (dot) de>2012-02-19 14:54:00 +0100
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2012-02-19 16:36:45 +0100
commitc2d9577b3dd7557b7a9c702d5c1fd3b1bbe0e5e7 (patch)
treea59a457cc3975f5835e7b307dccc5fd0f0e1b1be /PLUGINS
parent59f0138a7d03fed4fc33e1083928bf5b28e0e4ff (diff)
downloadvdr-patches-c2d9577b3dd7557b7a9c702d5c1fd3b1bbe0e5e7.tar.gz
vdr-patches-c2d9577b3dd7557b7a9c702d5c1fd3b1bbe0e5e7.tar.bz2
Version 1.7.24
Original announce message: VDR developer version 1.7.24 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.24.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.23-1.7.24.diff MD5 checksums: a034c5e399417dfc583483f650d003ee vdr-1.7.24.tar.bz2 aa1a2b202da92e65945ff39470b26618 vdr-1.7.23-1.7.24.diff WARNING: ======== This is a developer version. Even though I use it in my productive environment. I strongly recommend that you only use it under controlled conditions and for testing and debugging. From the HISTORY file: - Updated the Italian OSD texts (thanks to Diego Pierotto). - Fixed a high load in case a transponder can't be received. - Improved the way DVB_API_VERSION is checked. - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Fixed asserting there is a live programme if the primary device is bonded with a device that starts a recording on a different band. - Fixed the return type of cMyDeviceHook::DeviceProvidesTransponder() in PLUGINS.html. - Fixed a crash in a plugin using cDeviceHook when VDR ends (reported by Oliver Endriss). - Some improvements to the Makefiles (thanks to Christian Ruppert). - Fixed cRecording::LengthInSeconds(), which wrongfully rounded the result to full minutes (thanks to Christoph Haubrich). - Symbolic links are no longer resolved in cRecordings::ScanVideoDir() (thanks to Sundararaj Reel). - The epg.data file is now read in a separate thread to make the startup process faster in case the file is very large (suggested by Helmut Auer). - Fixed selecting the primary device for receiving the live viewing channel in case it is bonded with an other device and has no receiver attached to it. - Fixed a possible crash when canceling VDR while displaying subtitles, and the primary device is no longer available. - Improved handling subtitles of BBC channels. - No longer using tabs as delimiter in the EPG bugfix log (they were garbled in the log file). - Added a missing '.' after the month in VPS strings. - Added some missing 'const' to cDevice (thanks to Joachim Wilke). - Fixed handling the PrimaryLimit when requesting a device for live viewing (reported by Uwe Scheffler). - Removed superfluous calls to SetVideoFormat() from device constructors. This function is called in cDevice::SetPrimaryDevice(), anyway. - An ongoing editing process is now canceled if either the original or the edited version of the recording is deleted from the Recordings menu. - The SVDRP command DELR now won't delete a recording that is currently being edited. - Removed code stub for obsolete SVDRP command MOVT. - The DVB device adapters/frontends are now probed by scanning the /dev/dvb directory instead of looping through adapter/frontend numbers. This allows for "holes" in the device numbering. - cReadDir::Next() now skips directory entries "." and "..". - Fixed a possible deadlock in time shift mode. - Fixed switching into time shift mode when pausing live video (thanks to Reinhard Nissl for helping to debug this one).
Diffstat (limited to 'PLUGINS')
-rw-r--r--PLUGINS/src/dvbhddevice/Makefile10
-rw-r--r--PLUGINS/src/dvbhddevice/bitbuffer.c97
-rw-r--r--PLUGINS/src/dvbhddevice/bitbuffer.h31
-rw-r--r--PLUGINS/src/dvbhddevice/dvbhddevice.c37
-rw-r--r--PLUGINS/src/dvbhddevice/dvbhdffdevice.c30
-rw-r--r--PLUGINS/src/dvbhddevice/hdffcmd.c4
-rw-r--r--PLUGINS/src/dvbhddevice/hdffcmd.h3
-rw-r--r--PLUGINS/src/dvbhddevice/libhdffcmd/Makefile25
-rw-r--r--PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h3
-rw-r--r--PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h1
-rw-r--r--PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c40
-rw-r--r--PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h9
-rw-r--r--PLUGINS/src/dvbhddevice/menu.c65
-rw-r--r--PLUGINS/src/dvbhddevice/menu.h29
-rw-r--r--PLUGINS/src/dvbhddevice/po/de_DE.po45
-rw-r--r--PLUGINS/src/dvbhddevice/po/fi_FI.po43
-rw-r--r--PLUGINS/src/dvbhddevice/po/it_IT.po41
-rw-r--r--PLUGINS/src/dvbhddevice/setup.c227
-rw-r--r--PLUGINS/src/dvbhddevice/setup.h13
-rw-r--r--PLUGINS/src/dvbsddevice/Makefile8
-rw-r--r--PLUGINS/src/dvbsddevice/dvbsdffdevice.c6
-rw-r--r--PLUGINS/src/hello/Makefile8
-rw-r--r--PLUGINS/src/osddemo/Makefile10
-rw-r--r--PLUGINS/src/pictures/HISTORY4
-rw-r--r--PLUGINS/src/pictures/Makefile8
-rw-r--r--PLUGINS/src/pictures/entry.c14
-rw-r--r--PLUGINS/src/pictures/pictures.c4
-rw-r--r--PLUGINS/src/servicedemo/Makefile10
-rw-r--r--PLUGINS/src/skincurses/Makefile8
-rw-r--r--PLUGINS/src/status/Makefile10
-rw-r--r--PLUGINS/src/svdrpdemo/Makefile8
31 files changed, 573 insertions, 278 deletions
diff --git a/PLUGINS/src/dvbhddevice/Makefile b/PLUGINS/src/dvbhddevice/Makefile
index 09ca4ad..46597a0 100644
--- a/PLUGINS/src/dvbhddevice/Makefile
+++ b/PLUGINS/src/dvbhddevice/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 1.9 2011/12/04 15:30:21 kls Exp $
+# $Id: Makefile 1.12 2012/02/08 15:10:09 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -22,9 +22,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
@@ -51,7 +51,7 @@ DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
### The object files (add further files here):
-OBJS = $(PLUGIN).o bitbuffer.o dvbhdffdevice.o hdffcmd.o hdffosd.o setup.o
+OBJS = $(PLUGIN).o dvbhdffdevice.o hdffcmd.o hdffosd.o menu.o setup.o
### The main target:
diff --git a/PLUGINS/src/dvbhddevice/bitbuffer.c b/PLUGINS/src/dvbhddevice/bitbuffer.c
deleted file mode 100644
index 244b85e..0000000
--- a/PLUGINS/src/dvbhddevice/bitbuffer.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * bitbuffer.c: TODO(short description)
- *
- * See the README file for copyright information and how to reach the author.
- *
- * $Id: bitbuffer.c 1.1 2009/12/29 14:29:20 kls Exp $
- */
-
-#include "bitbuffer.h"
-#include <stdlib.h>
-
-cBitBuffer::cBitBuffer(uint32_t MaxLength)
-{
- mData = NULL;
- mMaxLength = 0;
- mBitPos = 0;
-
- if (MaxLength <= 0x10000)
- {
- mData = new uint8_t[MaxLength];
- if (mData)
- {
- mMaxLength = MaxLength * 8;
- }
- }
-}
-
-cBitBuffer::~cBitBuffer(void)
-{
- if (mData)
- delete[] mData;
-}
-
-uint8_t * cBitBuffer::GetData(void)
-{
- return mData;
-}
-
-uint32_t cBitBuffer::GetMaxLength(void)
-{
- return mMaxLength / 8;
-}
-
-uint32_t cBitBuffer::GetBits(int NumBits)
-{
- return 0;
-}
-
-void cBitBuffer::SetBits(int NumBits, uint32_t Data)
-{
- uint32_t nextBitPos;
- uint32_t bytePos;
- uint32_t bitsInByte;
- int shift;
-
- if (NumBits <= 0 || NumBits > 32)
- return;
-
- nextBitPos = mBitPos + NumBits;
-
- if (nextBitPos > mMaxLength)
- return;
-
- bytePos = mBitPos / 8;
- bitsInByte = mBitPos % 8;
-
- mData[bytePos] &= (uint8_t) (0xFF << (8 - bitsInByte));
- shift = NumBits - (8 - bitsInByte);
- if (shift > 0)
- mData[bytePos] |= (uint8_t) (Data >> shift);
- else
- mData[bytePos] |= (uint8_t) (Data << (-shift));
- NumBits -= 8 - bitsInByte;
- bytePos++;
- while (NumBits > 0)
- {
- shift = NumBits - 8;
- if (shift > 0)
- mData[bytePos] = (uint8_t) (Data >> shift);
- else
- mData[bytePos] = (uint8_t) (Data << (-shift));
- NumBits -= 8;
- bytePos++;
- }
- mBitPos = nextBitPos;
-}
-
-uint32_t cBitBuffer::GetByteLength(void)
-{
- return (mBitPos + 7) / 8;
-}
-
-void cBitBuffer::SetDataByte(uint32_t Position, uint8_t Data)
-{
- if (Position < mMaxLength)
- mData[Position] = Data;
-}
diff --git a/PLUGINS/src/dvbhddevice/bitbuffer.h b/PLUGINS/src/dvbhddevice/bitbuffer.h
deleted file mode 100644
index e7b3650..0000000
--- a/PLUGINS/src/dvbhddevice/bitbuffer.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * bitbuffer.h: TODO(short description)
- *
- * See the README file for copyright information and how to reach the author.
- *
- * $Id: bitbuffer.h 1.1 2009/12/29 14:27:03 kls Exp $
- */
-
-#ifndef _HDFF_BITBUFFER_H_
-#define _HDFF_BITBUFFER_H_
-
-#include <stdint.h>
-
-class cBitBuffer
-{
-private:
- uint8_t * mData;
- uint32_t mMaxLength;
- uint32_t mBitPos;
-public:
- cBitBuffer(uint32_t MaxLength);
- ~cBitBuffer(void);
- uint8_t * GetData(void);
- uint32_t GetMaxLength(void);
- uint32_t GetBits(int NumBits);
- void SetBits(int NumBits, uint32_t Data);
- uint32_t GetByteLength(void);
- void SetDataByte(uint32_t Position, uint8_t Data);
-};
-
-#endif
diff --git a/PLUGINS/src/dvbhddevice/dvbhddevice.c b/PLUGINS/src/dvbhddevice/dvbhddevice.c
index 0ad1698..a1e5881 100644
--- a/PLUGINS/src/dvbhddevice/dvbhddevice.c
+++ b/PLUGINS/src/dvbhddevice/dvbhddevice.c
@@ -3,29 +3,37 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: dvbhddevice.c 1.14 2011/08/27 09:31:45 kls Exp $
+ * $Id: dvbhddevice.c 1.16 2012/02/08 15:10:30 kls Exp $
*/
#include <vdr/plugin.h>
+#include <vdr/shutdown.h>
#include "dvbhdffdevice.h"
+#include "menu.h"
#include "setup.h"
static const char *VERSION = "0.0.4";
static const char *DESCRIPTION = trNOOP("HD Full Featured DVB device");
+static const char *MAINMENUENTRY = "dvbhddevice";
class cPluginDvbhddevice : public cPlugin {
private:
cDvbHdFfDeviceProbe *probe;
+ bool mIsUserInactive;
public:
cPluginDvbhddevice(void);
virtual ~cPluginDvbhddevice();
virtual const char *Version(void) { return VERSION; }
virtual const char *Description(void) { return tr(DESCRIPTION); }
+ virtual void MainThreadHook(void);
+ virtual const char *MainMenuEntry(void);
+ virtual cOsdObject *MainMenuAction(void);
virtual cMenuSetupPage *SetupMenu(void);
virtual bool SetupParse(const char *Name, const char *Value);
};
cPluginDvbhddevice::cPluginDvbhddevice(void)
+: mIsUserInactive(true)
{
probe = new cDvbHdFfDeviceProbe;
}
@@ -35,6 +43,33 @@ cPluginDvbhddevice::~cPluginDvbhddevice()
delete probe;
}
+void cPluginDvbhddevice::MainThreadHook(void)
+{
+ bool isUserInactive = ShutdownHandler.IsUserInactive();
+ if (isUserInactive != mIsUserInactive)
+ {
+ mIsUserInactive = isUserInactive;
+ if (gHdffSetup.CecEnabled && gHdffSetup.CecTvOn)
+ {
+ HDFF::cHdffCmdIf * hdffCmdIf = cDvbHdFfDevice::GetHdffCmdHandler();
+ if (!mIsUserInactive)
+ {
+ hdffCmdIf->CmdHdmiSendCecCommand(HDFF_CEC_COMMAND_TV_ON);
+ }
+ }
+ }
+}
+
+const char *cPluginDvbhddevice::MainMenuEntry(void)
+{
+ return gHdffSetup.HideMainMenu ? NULL : MAINMENUENTRY;
+}
+
+cOsdObject *cPluginDvbhddevice::MainMenuAction(void)
+{
+ return new cHdffMenu(cDvbHdFfDevice::GetHdffCmdHandler());
+}
+
cMenuSetupPage *cPluginDvbhddevice::SetupMenu(void)
{
return new cHdffSetupPage(cDvbHdFfDevice::GetHdffCmdHandler());
diff --git a/PLUGINS/src/dvbhddevice/dvbhdffdevice.c b/PLUGINS/src/dvbhddevice/dvbhdffdevice.c
index 101558d..160d9c3 100644
--- a/PLUGINS/src/dvbhddevice/dvbhdffdevice.c
+++ b/PLUGINS/src/dvbhddevice/dvbhdffdevice.c
@@ -3,9 +3,11 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: dvbhdffdevice.c 1.35 2011/12/04 15:30:42 kls Exp $
+ * $Id: dvbhdffdevice.c 1.39 2012/02/15 13:14:49 kls Exp $
*/
+#include <stdint.h>
+
#include "dvbhdffdevice.h"
#include <errno.h>
#include <limits.h>
@@ -50,30 +52,34 @@ cDvbHdFfDevice::cDvbHdFfDevice(int Adapter, int Frontend)
mHdffCmdIf->CmdAvSetAudioDownmix((HdffAudioDownmixMode_t) gHdffSetup.AudioDownmix);
mHdffCmdIf->CmdMuxSetVideoOut((HdffVideoOut_t) gHdffSetup.AnalogueVideo);
mHdffCmdIf->CmdHdmiSetVideoMode(gHdffSetup.GetVideoMode());
+
HdffHdmiConfig_t hdmiConfig;
+ memset(&hdmiConfig, 0, sizeof(hdmiConfig));
hdmiConfig.TransmitAudio = true;
hdmiConfig.ForceDviMode = false;
hdmiConfig.CecEnabled = gHdffSetup.CecEnabled;
+ strcpy(hdmiConfig.CecDeviceName, "VDR");
hdmiConfig.VideoModeAdaption = (HdffVideoModeAdaption_t) gHdffSetup.VideoModeAdaption;
mHdffCmdIf->CmdHdmiConfigure(&hdmiConfig);
- if (gHdffSetup.CecEnabled)
- mHdffCmdIf->CmdHdmiSendCecCommand(HDFF_CEC_COMMAND_TV_ON);
+
mHdffCmdIf->CmdRemoteSetProtocol((HdffRemoteProtocol_t) gHdffSetup.RemoteProtocol);
mHdffCmdIf->CmdRemoteSetAddressFilter(gHdffSetup.RemoteAddress >= 0, gHdffSetup.RemoteAddress);
}
-
- // Video format:
-
- SetVideoFormat(Setup.VideoFormat);
}
cDvbHdFfDevice::~cDvbHdFfDevice()
{
- delete spuDecoder;
- if (isHdffPrimary)
- delete mHdffCmdIf;
- // We're not explicitly closing any device files here, since this sometimes
- // caused segfaults. Besides, the program is about to terminate anyway...
+ delete spuDecoder;
+ if (isHdffPrimary)
+ {
+ if (gHdffSetup.CecEnabled && gHdffSetup.CecTvOff)
+ {
+ mHdffCmdIf->CmdHdmiSendCecCommand(HDFF_CEC_COMMAND_TV_OFF);
+ }
+ delete mHdffCmdIf;
+ }
+ // We're not explicitly closing any device files here, since this sometimes
+ // caused segfaults. Besides, the program is about to terminate anyway...
}
void cDvbHdFfDevice::MakePrimaryDevice(bool On)
diff --git a/PLUGINS/src/dvbhddevice/hdffcmd.c b/PLUGINS/src/dvbhddevice/hdffcmd.c
index 957f2c7..cb06b8c 100644
--- a/PLUGINS/src/dvbhddevice/hdffcmd.c
+++ b/PLUGINS/src/dvbhddevice/hdffcmd.c
@@ -3,9 +3,11 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: hdffcmd.c 1.22 2011/12/04 15:31:03 kls Exp $
+ * $Id: hdffcmd.c 1.23 2012/02/06 11:08:48 kls Exp $
*/
+#include <stdint.h>
+
#include "hdffcmd.h"
#include "libhdffcmd/hdffcmd.h"
#include <stdio.h>
diff --git a/PLUGINS/src/dvbhddevice/hdffcmd.h b/PLUGINS/src/dvbhddevice/hdffcmd.h
index 142f65f..c4f5104 100644
--- a/PLUGINS/src/dvbhddevice/hdffcmd.h
+++ b/PLUGINS/src/dvbhddevice/hdffcmd.h
@@ -3,13 +3,12 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: hdffcmd.h 1.18 2011/12/04 15:31:23 kls Exp $
+ * $Id: hdffcmd.h 1.19 2012/02/06 11:09:27 kls Exp $
*/
#ifndef _HDFF_CMD_H_
#define _HDFF_CMD_H_
-#include "bitbuffer.h"
#include "libhdffcmd/hdffcmd.h"
namespace HDFF
diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/Makefile b/PLUGINS/src/dvbhddevice/libhdffcmd/Makefile
index f9c068a..8b25f66 100644
--- a/PLUGINS/src/dvbhddevice/libhdffcmd/Makefile
+++ b/PLUGINS/src/dvbhddevice/libhdffcmd/Makefile
@@ -4,17 +4,9 @@
VERSION = 0.1.0
-ifndef $(INSTALL_PATH)
- INSTALL_PATH=/usr/local
-endif
-
-ifndef $(INSTALL_LIB_PATH)
- INSTALL_LIB_PATH=$(INSTALL_PATH)/lib
-endif
-
-ifndef $(INSTALL_INCLUDE_PATH)
- INSTALL_INCLUDE_PATH=$(INSTALL_PATH)/include
-endif
+INSTALL_PATH ?= /usr/local
+INSTALL_LIB_PATH ?= $(INSTALL_PATH)/lib
+INSTALL_INCLUDE_PATH ?= $(INSTALL_PATH)/include
LIB_NAME = libhdffcmd
@@ -27,9 +19,10 @@ LIB_HEADERS = hdffcmd.h hdffcmd_av.h hdffcmd_generic.h hdffcmd_hdmi.h \
LIB_STATIC = $(LIB_NAME).a
LIB_SHARED = $(LIB_NAME)-$(VERSION).so
-CC = gcc
-CFLAGS = -g -O2 -fPIC -Wall
-AR = ar -r
+CC ?= gcc
+CFLAGS ?= -g -O2 -fPIC -Wall
+AR ?= ar
+ARFLAGS ?= r
### Implicit rules:
@@ -50,10 +43,10 @@ $(DEPFILE): Makefile
all: $(LIB_STATIC) $(LIB_SHARED)
$(LIB_STATIC): $(LIB_OBJS)
- $(AR) $(LIB_STATIC) $(LIB_OBJS)
+ $(AR) $(ARFLAGS) $(LIB_STATIC) $(LIB_OBJS)
$(LIB_SHARED): $(LIB_OBJS)
- $(CC) -fPIC -shared -o $(LIB_SHARED) $(LIB_OBJS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -fPIC -shared -o $(LIB_SHARED) $(LIB_OBJS)
ln -sf $(LIB_SHARED) $(LIB_NAME).so
clean:
diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h
index 7c2189b..0e77c79 100644
--- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h
+++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h
@@ -66,7 +66,8 @@ typedef enum HdffVideoConversion_t
HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9,
HDFF_VIDEO_CONVERSION_PILLARBOX,
HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT,
- HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9
+ HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9,
+ HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9
} HdffVideoConversion_t;
typedef struct HdffVideoFormat_t
diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h
index 8b24d7b..f68da66 100644
--- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h
+++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h
@@ -111,6 +111,7 @@ typedef enum HdffMessageId_t
HDFF_MSG_HDMI_GET_DISPLAY_INFO,
HDFF_MSG_HDMI_GET_VIDEO_MODE,
HDFF_MSG_HDMI_SEND_CEC_COMMAND,
+ HDFF_MSG_HDMI_SEND_RAW_CEC_COMMAND,
HDFF_MSG_REMOTE_SET_PROTOCOL = 0,
HDFF_MSG_REMOTE_SET_ADDRESS_FILTER,
diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c
index 42b82b5..de315f8 100644
--- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c
+++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c
@@ -48,9 +48,11 @@ int HdffCmdHdmiSetVideoMode(int OsdDevice, HdffVideoMode_t VideoMode)
int HdffCmdHdmiConfigure(int OsdDevice, const HdffHdmiConfig_t * Config)
{
- uint8_t cmdData[8];
+ uint8_t cmdData[24];
BitBuffer_t cmdBuf;
osd_raw_cmd_t osd_cmd;
+ size_t nameLen;
+ int i;
BitBuffer_Init(&cmdBuf, cmdData, sizeof(cmdData));
memset(&osd_cmd, 0, sizeof(osd_raw_cmd_t));
@@ -61,6 +63,14 @@ int HdffCmdHdmiConfigure(int OsdDevice, const HdffHdmiConfig_t * Config)
BitBuffer_SetBits(&cmdBuf, 1, Config->ForceDviMode ? 1 : 0);
BitBuffer_SetBits(&cmdBuf, 1, Config->CecEnabled ? 1 : 0);
BitBuffer_SetBits(&cmdBuf, 3, Config->VideoModeAdaption);
+ BitBuffer_SetBits(&cmdBuf, 6, 0); // reserved
+ nameLen = strlen(Config->CecDeviceName);
+ if (nameLen > 13)
+ nameLen = 13;
+ BitBuffer_SetBits(&cmdBuf, 4, nameLen);
+ for (i = 0; i < nameLen; i++)
+ BitBuffer_SetBits(&cmdBuf, 8, Config->CecDeviceName[i]);
+
osd_cmd.cmd_len = HdffCmdSetLength(&cmdBuf);
return ioctl(OsdDevice, OSD_RAW_CMD, &osd_cmd);
}
@@ -80,3 +90,31 @@ int HdffCmdHdmiSendCecCommand(int OsdDevice, HdffCecCommand_t Command)
osd_cmd.cmd_len = HdffCmdSetLength(&cmdBuf);
return ioctl(OsdDevice, OSD_RAW_CMD, &osd_cmd);
}
+
+int HdffCmdHdmiSendRawCecCommand(int OsdDevice, uint8_t Destination,
+ uint8_t Opcode, const uint8_t * Operand,
+ uint8_t OperandLength)
+{
+ uint8_t cmdData[24];
+ BitBuffer_t cmdBuf;
+ osd_raw_cmd_t osd_cmd;
+ int i;
+
+ if (OperandLength > 14)
+ OperandLength = 14;
+
+ BitBuffer_Init(&cmdBuf, cmdData, sizeof(cmdData));
+ memset(&osd_cmd, 0, sizeof(osd_raw_cmd_t));
+ osd_cmd.cmd_data = cmdData;
+ HdffCmdBuildHeader(&cmdBuf, HDFF_MSG_TYPE_COMMAND, HDFF_MSG_GROUP_HDMI,
+ HDFF_MSG_HDMI_SEND_RAW_CEC_COMMAND);
+ BitBuffer_SetBits(&cmdBuf, 4, 0); // reserved
+ BitBuffer_SetBits(&cmdBuf, 4, Destination);
+ BitBuffer_SetBits(&cmdBuf, 8, Opcode);
+ BitBuffer_SetBits(&cmdBuf, 8, OperandLength);
+ for (i = 0; i < OperandLength; i++)
+ BitBuffer_SetBits(&cmdBuf, 8, Operand[i]);
+
+ osd_cmd.cmd_len = HdffCmdSetLength(&cmdBuf);
+ return ioctl(OsdDevice, OSD_RAW_CMD, &osd_cmd);
+}
diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h
index 16e375f..fc79bd9 100644
--- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h
+++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h
@@ -47,14 +47,15 @@ typedef struct HdffHdmiConfig_t
int ForceDviMode;
int CecEnabled;
HdffVideoModeAdaption_t VideoModeAdaption;
+ char CecDeviceName[14];
} HdffHdmiConfig_t;
typedef enum HdffCecCommand_t
{
HDFF_CEC_COMMAND_TV_ON,
HDFF_CEC_COMMAND_TV_OFF,
- HDFF_CEC_COMMAND_TV_ACTIVE_SOURCE,
- HDFF_CEC_COMMAND_TV_INACTIVE_SOURCE
+ HDFF_CEC_COMMAND_ACTIVE_SOURCE,
+ HDFF_CEC_COMMAND_INACTIVE_SOURCE
} HdffCecCommand_t;
@@ -64,4 +65,8 @@ int HdffCmdHdmiConfigure(int OsdDevice, const HdffHdmiConfig_t * Config);
int HdffCmdHdmiSendCecCommand(int OsdDevice, HdffCecCommand_t Command);
+int HdffCmdHdmiSendRawCecCommand(int OsdDevice, uint8_t Destination,
+ uint8_t Opcode, const uint8_t * Operand,
+ uint8_t OperandLength);
+
#endif /* HDFFCMD_HDMI_H */
diff --git a/PLUGINS/src/dvbhddevice/menu.c b/PLUGINS/src/dvbhddevice/menu.c
new file mode 100644
index 0000000..e8fd867
--- /dev/null
+++ b/PLUGINS/src/dvbhddevice/menu.c
@@ -0,0 +1,65 @@
+/*
+ * menu.c: The DVB HD Full Featured device main menu
+ *
+ * See the README file for copyright information and how to reach the author.
+ */
+
+#include "menu.h"
+#include "setup.h"
+
+cHdffMenu::cHdffMenu(HDFF::cHdffCmdIf * pHdffCmdIf)
+: cOsdMenu("dvbhddevice"),
+ mHdffCmdIf(pHdffCmdIf)
+{
+ mVideoConversionItem = new cOsdItem("", osUnknown, false);
+ Add(mVideoConversionItem);
+ SetHelp(tr("Video Conversion"), tr("TV on"));
+ SetVideoConversion();
+}
+
+cHdffMenu::~cHdffMenu()
+{
+}
+
+eOSState cHdffMenu::ProcessKey(eKeys key)
+{
+ eOSState state = cOsdMenu::ProcessKey(key);
+ if (state == osUnknown)
+ {
+ switch (key)
+ {
+ case kRed:
+ gHdffSetup.SetNextVideoConversion();
+ SetVideoConversion();
+ break;
+
+ case kGreen:
+ mHdffCmdIf->CmdHdmiSendCecCommand(HDFF_CEC_COMMAND_TV_ON);
+ state = osEnd;
+ break;
+
+ case kOk:
+ state = osEnd;
+ break;
+
+ default:
+ break;
+ }
+ }
+ return state;
+}
+
+void cHdffMenu::SetVideoConversion(void)
+{
+ HdffVideoFormat_t videoFormat;
+ videoFormat.AutomaticEnabled = true;
+ videoFormat.AfdEnabled = false;
+ videoFormat.TvFormat = (HdffTvFormat_t) gHdffSetup.TvFormat;
+ videoFormat.VideoConversion = (HdffVideoConversion_t) gHdffSetup.VideoConversion;
+ mHdffCmdIf->CmdAvSetVideoFormat(0, &videoFormat);
+
+ char str[128];
+ sprintf(str, "%s: %s", tr("Video Conversion"), gHdffSetup.GetVideoConversionString());
+ mVideoConversionItem->SetText(str);
+ Display();
+}
diff --git a/PLUGINS/src/dvbhddevice/menu.h b/PLUGINS/src/dvbhddevice/menu.h
new file mode 100644
index 0000000..18b3d99
--- /dev/null
+++ b/PLUGINS/src/dvbhddevice/menu.h
@@ -0,0 +1,29 @@
+/*
+ * menu.h: The DVB HD Full Featured device main menu
+ *
+ * See the README file for copyright information and how to reach the author.
+ */
+
+#ifndef _HDFF_MENU_H_
+#define _HDFF_MENU_H_
+
+#include <vdr/osd.h>
+#include <vdr/plugin.h>
+
+#include "hdffcmd.h"
+
+class cHdffMenu : public cOsdMenu
+{
+private:
+ HDFF::cHdffCmdIf * mHdffCmdIf;
+
+ cOsdItem * mVideoConversionItem;
+
+ void SetVideoConversion(void);
+public:
+ cHdffMenu(HDFF::cHdffCmdIf * pHdffCmdIf);
+ virtual ~cHdffMenu();
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+#endif
diff --git a/PLUGINS/src/dvbhddevice/po/de_DE.po b/PLUGINS/src/dvbhddevice/po/de_DE.po
index 78ace1b..ac58c0c 100644
--- a/PLUGINS/src/dvbhddevice/po/de_DE.po
+++ b/PLUGINS/src/dvbhddevice/po/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR \n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2011-08-21 14:02+0200\n"
+"POT-Creation-Date: 2012-02-07 20:13+0100\n"
"PO-Revision-Date: 2011-04-25 21:44+0200\n"
"Last-Translator: Christoph Haubrich\n"
"Language-Team: <see README>\n"
@@ -19,17 +19,11 @@ msgstr ""
msgid "HD Full Featured DVB device"
msgstr "HD Full Featured DVB device"
-msgid "Off"
-msgstr "aus"
-
-msgid "Frame rate"
-msgstr "passende Framerate"
-
-msgid "HD Only"
-msgstr "nur bei HD"
+msgid "Video Conversion"
+msgstr "Bildanpassung"
-msgid "Always"
-msgstr "immer"
+msgid "TV on"
+msgstr "TV ein"
msgid "Automatic"
msgstr "automatisch"
@@ -49,11 +43,26 @@ msgstr "CentreCutOut"
msgid "Always 16/9"
msgstr "immer 16:9"
+msgid "Zoom 16/9"
+msgstr "Zoome 16:9"
+
+msgid "Off"
+msgstr "aus"
+
+msgid "Frame rate"
+msgstr "passende Framerate"
+
+msgid "HD Only"
+msgstr "nur bei HD"
+
+msgid "Always"
+msgstr "immer"
+
msgid "Disabled"
msgstr "abgeschaltet"
msgid "Analogue only"
-msgstr "nur Analoge Ausgänge"
+msgstr "nur analoge Ausgänge"
msgid "HDMI only"
msgstr "nur HDMI"
@@ -73,9 +82,6 @@ msgstr "Auflösungsanpassung"
msgid "TV format"
msgstr "TV-Format"
-msgid "Video Conversion"
-msgstr "Videokonvertierung"
-
msgid "Analogue Video"
msgstr "Analoges Video"
@@ -91,6 +97,12 @@ msgstr "OSD Größe"
msgid "HDMI CEC"
msgstr "HDMI CEC"
+msgid "CEC: Switch TV on"
+msgstr "CEC: TV einschalten"
+
+msgid "CEC: Switch TV off"
+msgstr "CEC: TV ausschalten"
+
msgid "Remote Control Protocol"
msgstr "Fernbedienungsprotokoll"
@@ -102,3 +114,6 @@ msgstr "High Level OSD"
msgid "Allow True Color OSD"
msgstr "Erlaube True Color OSD"
+
+msgid "Hide mainmenu entry"
+msgstr "Hauptmenüeintrag verstecken"
diff --git a/PLUGINS/src/dvbhddevice/po/fi_FI.po b/PLUGINS/src/dvbhddevice/po/fi_FI.po
index 48abaf5..c8980ba 100644
--- a/PLUGINS/src/dvbhddevice/po/fi_FI.po
+++ b/PLUGINS/src/dvbhddevice/po/fi_FI.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR \n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2011-08-21 14:02+0200\n"
+"POT-Creation-Date: 2012-02-07 20:13+0100\n"
"PO-Revision-Date: 2011-04-25 21:44+0200\n"
"Last-Translator: Rolf Ahrenberg\n"
"Language-Team: Finnish <vdr@linuxtv.org>\n"
@@ -19,17 +19,11 @@ msgstr ""
msgid "HD Full Featured DVB device"
msgstr "DVB-laite HD-ulostulolla"
-msgid "Off"
-msgstr "ei"
-
-msgid "Frame rate"
-msgstr "kuvataajuuden mukaan"
-
-msgid "HD Only"
-msgstr "vain HD-resoluutiolla"
+msgid "Video Conversion"
+msgstr "Näyttömuoto"
-msgid "Always"
-msgstr "aina"
+msgid "TV on"
+msgstr ""
msgid "Automatic"
msgstr "automaattinen"
@@ -49,6 +43,21 @@ msgstr "center cut out"
msgid "Always 16/9"
msgstr "aina 16:9"
+msgid "Zoom 16/9"
+msgstr ""
+
+msgid "Off"
+msgstr "ei"
+
+msgid "Frame rate"
+msgstr "kuvataajuuden mukaan"
+
+msgid "HD Only"
+msgstr "vain HD-resoluutiolla"
+
+msgid "Always"
+msgstr "aina"
+
msgid "Disabled"
msgstr "ei käytössä"
@@ -73,9 +82,6 @@ msgstr "Sovita näyttömoodi"
msgid "TV format"
msgstr "Näytön kuvasuhde"
-msgid "Video Conversion"
-msgstr "Näyttömuoto"
-
msgid "Analogue Video"
msgstr "Analoginen kuvalähtö"
@@ -91,6 +97,12 @@ msgstr "Kuvaruutunäytön koko"
msgid "HDMI CEC"
msgstr "Käytä HDMI CEC-toimintoa"
+msgid "CEC: Switch TV on"
+msgstr ""
+
+msgid "CEC: Switch TV off"
+msgstr ""
+
msgid "Remote Control Protocol"
msgstr "Kaukosäätimen protokolla"
@@ -102,3 +114,6 @@ msgstr "Käytä korkean tason kuvaruutunäyttöä"
msgid "Allow True Color OSD"
msgstr "Salli tosivärit kuvaruutunäytölle"
+
+msgid "Hide mainmenu entry"
+msgstr ""
diff --git a/PLUGINS/src/dvbhddevice/po/it_IT.po b/PLUGINS/src/dvbhddevice/po/it_IT.po
index bafb2c5..def0389 100644
--- a/PLUGINS/src/dvbhddevice/po/it_IT.po
+++ b/PLUGINS/src/dvbhddevice/po/it_IT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2011-08-21 14:02+0200\n"
+"POT-Creation-Date: 2012-02-07 20:13+0100\n"
"PO-Revision-Date: 2011-07-10 00:23+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: <see README>\n"
@@ -22,18 +22,12 @@ msgstr ""
msgid "HD Full Featured DVB device"
msgstr ""
-msgid "Off"
-msgstr ""
-
-msgid "Frame rate"
-msgstr ""
+msgid "Video Conversion"
+msgstr "Conversione video"
-msgid "HD Only"
+msgid "TV on"
msgstr ""
-msgid "Always"
-msgstr "Sempre"
-
msgid "Automatic"
msgstr "Automatica"
@@ -52,6 +46,21 @@ msgstr "CentreCutOut"
msgid "Always 16/9"
msgstr "Sempre 16:9"
+msgid "Zoom 16/9"
+msgstr ""
+
+msgid "Off"
+msgstr ""
+
+msgid "Frame rate"
+msgstr ""
+
+msgid "HD Only"
+msgstr ""
+
+msgid "Always"
+msgstr "Sempre"
+
msgid "Disabled"
msgstr "Disabilitata"
@@ -76,9 +85,6 @@ msgstr ""
msgid "TV format"
msgstr "Formato TV"
-msgid "Video Conversion"
-msgstr "Conversione video"
-
msgid "Analogue Video"
msgstr "Video analogico"
@@ -94,6 +100,12 @@ msgstr "Dimensione OSD"
msgid "HDMI CEC"
msgstr "HDMI CEC"
+msgid "CEC: Switch TV on"
+msgstr ""
+
+msgid "CEC: Switch TV off"
+msgstr ""
+
msgid "Remote Control Protocol"
msgstr "Protocollo controllo remoto"
@@ -105,3 +117,6 @@ msgstr "OSD alto livello"
msgid "Allow True Color OSD"
msgstr "Permetti OSD True Color"
+
+msgid "Hide mainmenu entry"
+msgstr ""
diff --git a/PLUGINS/src/dvbhddevice/setup.c b/PLUGINS/src/dvbhddevice/setup.c
index cb476a8..b6525a0 100644
--- a/PLUGINS/src/dvbhddevice/setup.c
+++ b/PLUGINS/src/dvbhddevice/setup.c
@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: setup.c 1.14 2011/12/04 15:31:58 kls Exp $
+ * $Id: setup.c 1.17 2012/02/08 15:14:01 kls Exp $
*/
#include "setup.h"
@@ -28,10 +28,13 @@ cHdffSetup::cHdffSetup(void)
AudioDownmix = HDFF_AUDIO_DOWNMIX_AUTOMATIC;
OsdSize = 0;
CecEnabled = 1;
+ CecTvOn = 1;
+ CecTvOff = 0;
RemoteProtocol = 1;
RemoteAddress = -1;
HighLevelOsd = 1;
TrueColorOsd = 1;
+ HideMainMenu = 0;
}
bool cHdffSetup::SetupParse(const char *Name, const char *Value)
@@ -45,10 +48,13 @@ bool cHdffSetup::SetupParse(const char *Name, const char *Value)
else if (strcmp(Name, "AudioDownmix") == 0) AudioDownmix = atoi(Value);
else if (strcmp(Name, "OsdSize") == 0) OsdSize = atoi(Value);
else if (strcmp(Name, "CecEnabled") == 0) CecEnabled = atoi(Value);
+ else if (strcmp(Name, "CecTvOn") == 0) CecTvOn = atoi(Value);
+ else if (strcmp(Name, "CecTvOff") == 0) CecTvOff = atoi(Value);
else if (strcmp(Name, "RemoteProtocol") == 0) RemoteProtocol = atoi(Value);
else if (strcmp(Name, "RemoteAddress") == 0) RemoteAddress = atoi(Value);
else if (strcmp(Name, "HighLevelOsd") == 0) HighLevelOsd = atoi(Value);
else if (strcmp(Name, "TrueColorOsd") == 0) TrueColorOsd = atoi(Value);
+ else if (strcmp(Name, "HideMainMenu") == 0) HideMainMenu = atoi(Value);
else return false;
return true;
}
@@ -112,12 +118,74 @@ HdffVideoMode_t cHdffSetup::GetVideoMode(void)
}
}
+void cHdffSetup::SetNextVideoConversion(void)
+{
+ int nextVideoConversion = HDFF_VIDEO_CONVERSION_AUTOMATIC;
+
+ if (TvFormat == HDFF_TV_FORMAT_16_BY_9)
+ {
+ switch (VideoConversion)
+ {
+ case HDFF_VIDEO_CONVERSION_PILLARBOX:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT;
+ break;
+ case HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9;
+ break;
+ case HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9;
+ break;
+ case HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_PILLARBOX;
+ break;
+ }
+ }
+ else
+ {
+ switch (VideoConversion)
+ {
+ case HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9;
+ break;
+ case HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT;
+ break;
+ case HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT:
+ nextVideoConversion = HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9;
+ break;
+ }
+ }
+ VideoConversion = nextVideoConversion;
+}
+
+const char * cHdffSetup::GetVideoConversionString(void)
+{
+ switch (VideoConversion)
+ {
+ case HDFF_VIDEO_CONVERSION_AUTOMATIC:
+ default:
+ return tr("Automatic");
+ case HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9:
+ return tr("Letterbox 16/9");
+ case HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9:
+ return tr("Letterbox 14/9");
+ case HDFF_VIDEO_CONVERSION_PILLARBOX:
+ return tr("Pillarbox");
+ case HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT:
+ return tr("CentreCutOut");
+ case HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9:
+ return tr("Always 16/9");
+ case HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9:
+ return tr("Zoom 16/9");
+ }
+}
+
+
cHdffSetupPage::cHdffSetupPage(HDFF::cHdffCmdIf * pHdffCmdIf)
{
const int kResolutions = 4;
const int kVideoModeAdaptions = 4;
const int kTvFormats = 2;
- const int kVideoConversions = 6;
const int kAnalogueVideos = 4;
const int kAudioDownmixes = 5;
const int kOsdSizes = 5;
@@ -145,17 +213,6 @@ cHdffSetupPage::cHdffSetupPage(HDFF::cHdffCmdIf * pHdffCmdIf)
"16/9",
};
- static const char * VideoConversionItems[kVideoConversions] =
- {
- tr("Automatic"),
- tr("Letterbox 16/9"),
- tr("Letterbox 14/9"),
- tr("Pillarbox"),
- tr("CentreCutOut"),
- tr("Always 16/9"),
- };
-
-
static const char * AnalogueVideoItems[kAnalogueVideos] =
{
tr("Disabled"),
@@ -194,25 +251,133 @@ cHdffSetupPage::cHdffSetupPage(HDFF::cHdffCmdIf * pHdffCmdIf)
Add(new cMenuEditStraItem(tr("Resolution"), &mNewHdffSetup.Resolution, kResolutions, ResolutionItems));
Add(new cMenuEditStraItem(tr("Video Mode Adaption"), &mNewHdffSetup.VideoModeAdaption, kVideoModeAdaptions, VideoModeAdaptionItems));
- Add(new cMenuEditStraItem(tr("TV format"), &mNewHdffSetup.TvFormat, kTvFormats, TvFormatItems));
- Add(new cMenuEditStraItem(tr("Video Conversion"), &mNewHdffSetup.VideoConversion, kVideoConversions, VideoConversionItems));
+ mTvFormatItem = new cMenuEditStraItem(tr("TV format"), &mNewHdffSetup.TvFormat, kTvFormats, TvFormatItems);
+ Add(mTvFormatItem);
Add(new cMenuEditStraItem(tr("Analogue Video"), &mNewHdffSetup.AnalogueVideo, kAnalogueVideos, AnalogueVideoItems));
Add(new cMenuEditIntItem(tr("Audio Delay (ms)"), &mNewHdffSetup.AudioDelay, 0, 500));
Add(new cMenuEditStraItem(tr("Audio Downmix"), &mNewHdffSetup.AudioDownmix, kAudioDownmixes, AudioDownmixItems));
Add(new cMenuEditStraItem(tr("OSD Size"), &mNewHdffSetup.OsdSize, kOsdSizes, OsdSizeItems));
Add(new cMenuEditBoolItem(tr("HDMI CEC"), &mNewHdffSetup.CecEnabled));
+ Add(new cMenuEditBoolItem(tr("CEC: Switch TV on"), &mNewHdffSetup.CecTvOn));
+ Add(new cMenuEditBoolItem(tr("CEC: Switch TV off"), &mNewHdffSetup.CecTvOff));
Add(new cMenuEditStraItem(tr("Remote Control Protocol"), &mNewHdffSetup.RemoteProtocol, kRemoteProtocols, RemoteProtocolItems));
Add(new cMenuEditIntItem(tr("Remote Control Address"), &mNewHdffSetup.RemoteAddress, -1, 31));
Add(new cMenuEditBoolItem(tr("High Level OSD"), &mNewHdffSetup.HighLevelOsd));
Add(new cMenuEditBoolItem(tr("Allow True Color OSD"), &mNewHdffSetup.TrueColorOsd));
+ Add(new cMenuEditBoolItem(tr("Hide mainmenu entry"), &mNewHdffSetup.HideMainMenu));
+
+ mVideoConversion = 0;
+ if (mNewHdffSetup.TvFormat == HDFF_TV_FORMAT_16_BY_9)
+ {
+ switch (mNewHdffSetup.VideoConversion)
+ {
+ case HDFF_VIDEO_CONVERSION_PILLARBOX:
+ mVideoConversion = 0;
+ break;
+ case HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT:
+ mVideoConversion = 1;
+ break;
+ case HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9:
+ mVideoConversion = 2;
+ break;
+ case HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9:
+ mVideoConversion = 3;
+ break;
+ }
+ }
+ else
+ {
+ switch (mNewHdffSetup.VideoConversion)
+ {
+ case HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9:
+ mVideoConversion = 0;
+ break;
+ case HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9:
+ mVideoConversion = 1;
+ break;
+ case HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT:
+ mVideoConversion = 2;
+ break;
+ }
+ }
+ BuildVideoConversionItem();
}
cHdffSetupPage::~cHdffSetupPage(void)
{
}
+void cHdffSetupPage::BuildVideoConversionItem(void)
+{
+ const int kVideoConversions4by3 = 3;
+ const int kVideoConversions16by9 = 4;
+
+ static const char * VideoConversionItems4by3[kVideoConversions4by3] =
+ {
+ tr("Letterbox 16/9"),
+ tr("Letterbox 14/9"),
+ tr("CentreCutOut")
+ };
+
+ static const char * VideoConversionItems16by9[kVideoConversions16by9] =
+ {
+ tr("Pillarbox"),
+ tr("CentreCutOut"),
+ tr("Always 16/9"),
+ tr("Zoom 16/9")
+ };
+
+ cOsdItem * item;
+
+ cList<cOsdItem>::Del(mTvFormatItem->Next());
+ if (mNewHdffSetup.TvFormat == HDFF_TV_FORMAT_16_BY_9)
+ {
+ item = new cMenuEditStraItem(tr("Video Conversion"), &mVideoConversion,
+ kVideoConversions16by9, VideoConversionItems16by9);
+ }
+ else
+ {
+ item = new cMenuEditStraItem(tr("Video Conversion"), &mVideoConversion,
+ kVideoConversions4by3, VideoConversionItems4by3);
+ }
+ Add(item, false, mTvFormatItem);
+}
+
void cHdffSetupPage::Store(void)
{
+ if (mNewHdffSetup.TvFormat == HDFF_TV_FORMAT_16_BY_9)
+ {
+ switch (mVideoConversion)
+ {
+ case 0:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_PILLARBOX;
+ break;
+ case 1:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT;
+ break;
+ case 2:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9;
+ break;
+ case 3:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9;
+ break;
+ }
+ }
+ else
+ {
+ switch (mVideoConversion)
+ {
+ case 0:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9;
+ break;
+ case 1:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9;
+ break;
+ case 2:
+ mNewHdffSetup.VideoConversion = HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT;
+ break;
+ }
+ }
SetupStore("Resolution", mNewHdffSetup.Resolution);
SetupStore("VideoModeAdaption", mNewHdffSetup.VideoModeAdaption);
SetupStore("TvFormat", mNewHdffSetup.TvFormat);
@@ -222,10 +387,13 @@ void cHdffSetupPage::Store(void)
SetupStore("AudioDownmix", mNewHdffSetup.AudioDownmix);
SetupStore("OsdSize", mNewHdffSetup.OsdSize);
SetupStore("CecEnabled", mNewHdffSetup.CecEnabled);
+ SetupStore("CecTvOn", mNewHdffSetup.CecTvOn);
+ SetupStore("CecTvOff", mNewHdffSetup.CecTvOff);
SetupStore("RemoteProtocol", mNewHdffSetup.RemoteProtocol);
SetupStore("RemoteAddress", mNewHdffSetup.RemoteAddress);
SetupStore("HighLevelOsd", mNewHdffSetup.HighLevelOsd);
SetupStore("TrueColorOsd", mNewHdffSetup.TrueColorOsd);
+ SetupStore("HideMainMenu", mNewHdffSetup.HideMainMenu);
if (mHdffCmdIf)
{
@@ -237,7 +405,7 @@ void cHdffSetupPage::Store(void)
HdffHdmiConfig_t hdmiConfig;
videoFormat.AutomaticEnabled = true;
- videoFormat.AfdEnabled = true;
+ videoFormat.AfdEnabled = false;
videoFormat.TvFormat = (HdffTvFormat_t) mNewHdffSetup.TvFormat;
videoFormat.VideoConversion = (HdffVideoConversion_t) mNewHdffSetup.VideoConversion;
mHdffCmdIf->CmdAvSetVideoFormat(0, &videoFormat);
@@ -247,6 +415,7 @@ void cHdffSetupPage::Store(void)
mHdffCmdIf->CmdMuxSetVideoOut((HdffVideoOut_t) mNewHdffSetup.AnalogueVideo);
+ memset(&hdmiConfig, 0, sizeof(hdmiConfig));
hdmiConfig.TransmitAudio = true;
hdmiConfig.ForceDviMode = false;
hdmiConfig.CecEnabled = mNewHdffSetup.CecEnabled;
@@ -259,3 +428,29 @@ void cHdffSetupPage::Store(void)
gHdffSetup = mNewHdffSetup;
}
+
+eOSState cHdffSetupPage::ProcessKey(eKeys key)
+{
+ eOSState state = cMenuSetupPage::ProcessKey(key);
+
+ if (state == osContinue)
+ {
+ cOsdItem * item;
+ switch (key)
+ {
+ case kLeft:
+ case kRight:
+ item = Get(Current());
+ if (item == mTvFormatItem)
+ {
+ mVideoConversion = 0;
+ BuildVideoConversionItem();
+ Display();
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ return state;
+}
diff --git a/PLUGINS/src/dvbhddevice/setup.h b/PLUGINS/src/dvbhddevice/setup.h
index 964105e..64033e1 100644
--- a/PLUGINS/src/dvbhddevice/setup.h
+++ b/PLUGINS/src/dvbhddevice/setup.h
@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: setup.h 1.10 2011/12/04 15:32:13 kls Exp $
+ * $Id: setup.h 1.12 2012/02/08 15:14:56 kls Exp $
*/
#ifndef _HDFF_SETUP_H_
@@ -18,6 +18,8 @@ struct cHdffSetup
bool SetupParse(const char * Name, const char * Value);
void GetOsdSize(int &Width, int &Height, double &PixelAspect);
HdffVideoMode_t GetVideoMode(void);
+ void SetNextVideoConversion(void);
+ const char * GetVideoConversionString(void);
int Resolution;
int VideoModeAdaption;
@@ -28,11 +30,15 @@ struct cHdffSetup
int AudioDownmix;
int OsdSize;
int CecEnabled;
+ int CecTvOn;
+ int CecTvOff;
int RemoteProtocol;
int RemoteAddress;
int HighLevelOsd;
int TrueColorOsd;
+
+ int HideMainMenu;
};
extern cHdffSetup gHdffSetup;
@@ -42,6 +48,10 @@ class cHdffSetupPage : public cMenuSetupPage
private:
HDFF::cHdffCmdIf * mHdffCmdIf;
cHdffSetup mNewHdffSetup;
+ cOsdItem * mTvFormatItem;
+ int mVideoConversion;
+
+ void BuildVideoConversionItem(void);
protected:
virtual void Store(void);
@@ -49,6 +59,7 @@ protected:
public:
cHdffSetupPage(HDFF::cHdffCmdIf * pHdffCmdIf);
virtual ~cHdffSetupPage(void);
+ virtual eOSState ProcessKey(eKeys Key);
};
#endif
diff --git a/PLUGINS/src/dvbsddevice/Makefile b/PLUGINS/src/dvbsddevice/Makefile
index 5529976..bf5f717 100644
--- a/PLUGINS/src/dvbsddevice/Makefile
+++ b/PLUGINS/src/dvbsddevice/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 1.7 2011/05/21 12:25:37 kls Exp $
+# $Id: Makefile 1.8 2012/01/18 12:28:43 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -22,9 +22,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
diff --git a/PLUGINS/src/dvbsddevice/dvbsdffdevice.c b/PLUGINS/src/dvbsddevice/dvbsdffdevice.c
index 17f842b..cc6af33 100644
--- a/PLUGINS/src/dvbsddevice/dvbsdffdevice.c
+++ b/PLUGINS/src/dvbsddevice/dvbsdffdevice.c
@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: dvbsdffdevice.c 2.30 2011/08/27 11:33:57 kls Exp $
+ * $Id: dvbsdffdevice.c 2.31 2012/02/15 13:15:05 kls Exp $
*/
#include "dvbsdffdevice.h"
@@ -66,10 +66,6 @@ cDvbSdFfDevice::cDvbSdFfDevice(int Adapter, int Frontend, bool OutputOnly)
fclose(f);
}
devVideoIndex = devVideoOffset >= 0 ? devVideoOffset++ : -1;
-
- // Video format:
-
- SetVideoFormat(Setup.VideoFormat);
}
cDvbSdFfDevice::~cDvbSdFfDevice()
diff --git a/PLUGINS/src/hello/Makefile b/PLUGINS/src/hello/Makefile
index b59d08a..b1a5af1 100644
--- a/PLUGINS/src/hello/Makefile
+++ b/PLUGINS/src/hello/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.7 2011/05/21 12:25:41 kls Exp $
+# $Id: Makefile 2.8 2012/01/18 12:29:09 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -22,9 +22,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
diff --git a/PLUGINS/src/osddemo/Makefile b/PLUGINS/src/osddemo/Makefile
index d93d802..d192b4a 100644
--- a/PLUGINS/src/osddemo/Makefile
+++ b/PLUGINS/src/osddemo/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.3 2011/02/27 10:05:01 kls Exp $
+# $Id: Makefile 2.4 2012/01/18 12:17:23 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -20,9 +20,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
@@ -62,7 +62,7 @@ all: libvdr-$(PLUGIN).so
# Dependencies:
-MAKEDEP = g++ -MM -MG
+MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
diff --git a/PLUGINS/src/pictures/HISTORY b/PLUGINS/src/pictures/HISTORY
index 4f880c6..c85c1a2 100644
--- a/PLUGINS/src/pictures/HISTORY
+++ b/PLUGINS/src/pictures/HISTORY
@@ -63,3 +63,7 @@ VDR Plugin 'pictures' Revision History
2012-01-08:
- Added option -o to pic2mpg.
+
+2012-02-17:
+
+- cReadDir::Next() now skips directory entries "." and "..".
diff --git a/PLUGINS/src/pictures/Makefile b/PLUGINS/src/pictures/Makefile
index 456207b..112586b 100644
--- a/PLUGINS/src/pictures/Makefile
+++ b/PLUGINS/src/pictures/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.7 2011/05/21 12:25:45 kls Exp $
+# $Id: Makefile 2.8 2012/01/18 12:30:05 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -22,9 +22,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
diff --git a/PLUGINS/src/pictures/entry.c b/PLUGINS/src/pictures/entry.c
index 1438481..8c124b5 100644
--- a/PLUGINS/src/pictures/entry.c
+++ b/PLUGINS/src/pictures/entry.c
@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: entry.c 2.0 2008/02/17 13:42:34 kls Exp $
+ * $Id: entry.c 2.1 2012/02/17 14:00:28 kls Exp $
*/
#include "entry.h"
@@ -48,13 +48,11 @@ void cPictureEntry::Load(void) const
if (d.Ok()) {
struct dirent *e;
while ((e = d.Next()) != NULL) {
- if (strcmp(e->d_name, ".") && strcmp(e->d_name, "..")) {
- struct stat ds;
- if (stat(AddDirectory(Directory, e->d_name), &ds) == 0) {
- if (!entries)
- entries = new cList<cPictureEntry>;
- entries->Add(new cPictureEntry(e->d_name, this, S_ISDIR(ds.st_mode)));
- }
+ struct stat ds;
+ if (stat(AddDirectory(Directory, e->d_name), &ds) == 0) {
+ if (!entries)
+ entries = new cList<cPictureEntry>;
+ entries->Add(new cPictureEntry(e->d_name, this, S_ISDIR(ds.st_mode)));
}
}
if (entries)
diff --git a/PLUGINS/src/pictures/pictures.c b/PLUGINS/src/pictures/pictures.c
index 8a890b1..77fb421 100644
--- a/PLUGINS/src/pictures/pictures.c
+++ b/PLUGINS/src/pictures/pictures.c
@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: pictures.c 2.3 2011/02/20 16:50:01 kls Exp $
+ * $Id: pictures.c 2.4 2012/02/17 14:00:48 kls Exp $
*/
#include <getopt.h>
@@ -11,7 +11,7 @@
#include "menu.h"
#include "player.h"
-static const char *VERSION = "0.1.0";
+static const char *VERSION = "0.1.1";
static const char *DESCRIPTION = trNOOP("A simple picture viewer");
static const char *MAINMENUENTRY = trNOOP("Pictures");
diff --git a/PLUGINS/src/servicedemo/Makefile b/PLUGINS/src/servicedemo/Makefile
index 2c8b17b..b2713ed 100644
--- a/PLUGINS/src/servicedemo/Makefile
+++ b/PLUGINS/src/servicedemo/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.3 2011/02/27 10:05:04 kls Exp $
+# $Id: Makefile 2.4 2012/01/18 12:17:23 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -22,9 +22,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
@@ -64,7 +64,7 @@ all: libvdr-$(PLUGIN1).so libvdr-$(PLUGIN2).so
# Dependencies:
-MAKEDEP = g++ -MM -MG
+MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
diff --git a/PLUGINS/src/skincurses/Makefile b/PLUGINS/src/skincurses/Makefile
index a765b65..62f5d25 100644
--- a/PLUGINS/src/skincurses/Makefile
+++ b/PLUGINS/src/skincurses/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.7 2011/05/21 12:25:49 kls Exp $
+# $Id: Makefile 2.8 2012/01/18 12:30:52 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -22,9 +22,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
diff --git a/PLUGINS/src/status/Makefile b/PLUGINS/src/status/Makefile
index f166981..3e9b170 100644
--- a/PLUGINS/src/status/Makefile
+++ b/PLUGINS/src/status/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.3 2011/02/27 10:05:08 kls Exp $
+# $Id: Makefile 2.4 2012/01/18 12:17:23 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -20,9 +20,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included:
@@ -62,7 +62,7 @@ all: libvdr-$(PLUGIN).so
# Dependencies:
-MAKEDEP = g++ -MM -MG
+MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
diff --git a/PLUGINS/src/svdrpdemo/Makefile b/PLUGINS/src/svdrpdemo/Makefile
index 2c84920..1f640b8 100644
--- a/PLUGINS/src/svdrpdemo/Makefile
+++ b/PLUGINS/src/svdrpdemo/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 2.3 2011/02/27 10:05:10 kls Exp $
+# $Id: Makefile 2.4 2012/01/18 12:17:23 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -20,9 +20,9 @@ CXXFLAGS ?= -g -O3 -Wall -Woverloaded-virtual -Wno-parentheses
### The directory environment:
-VDRDIR = ../../..
-LIBDIR = ../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../..
+LIBDIR ?= ../../lib
+TMPDIR ?= /tmp
### Make sure that necessary options are included: