From c2d9577b3dd7557b7a9c702d5c1fd3b1bbe0e5e7 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 19 Feb 2012 14:54:00 +0100 Subject: 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). --- PLUGINS/src/dvbhddevice/libhdffcmd/Makefile | 25 +++++--------- PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h | 3 +- PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h | 1 + PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c | 40 ++++++++++++++++++++++- PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h | 9 +++-- 5 files changed, 58 insertions(+), 20 deletions(-) (limited to 'PLUGINS/src/dvbhddevice/libhdffcmd') 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 */ -- cgit v1.2.3