summaryrefslogtreecommitdiff
path: root/PLUGINS/src/dvbhddevice/libhdffcmd
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/src/dvbhddevice/libhdffcmd
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/src/dvbhddevice/libhdffcmd')
-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
5 files changed, 58 insertions, 20 deletions
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 */