diff options
author | Klaus Schmidinger <Klaus (dot) Schmidinger (at) tvdr (dot) de> | 2012-02-19 14:54:00 +0100 |
---|---|---|
committer | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2012-02-19 16:36:45 +0100 |
commit | c2d9577b3dd7557b7a9c702d5c1fd3b1bbe0e5e7 (patch) | |
tree | a59a457cc3975f5835e7b307dccc5fd0f0e1b1be /PLUGINS/src/dvbhddevice/libhdffcmd | |
parent | 59f0138a7d03fed4fc33e1083928bf5b28e0e4ff (diff) | |
download | vdr-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/Makefile | 25 | ||||
-rw-r--r-- | PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_av.h | 3 | ||||
-rw-r--r-- | PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h | 1 | ||||
-rw-r--r-- | PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.c | 40 | ||||
-rw-r--r-- | PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_hdmi.h | 9 |
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 */ |