mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.4.1-5
- Replaced the "quick workaround for additional live audio PIDs" in cDvbDevice::SetChannelDevice() with an actual solution in cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs, which caused long switching times or completely blank screens when switching between encrypted channels on the same transponder (reported by Tomas Berglund). - Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skyttä). - Added --remove-destination to the 'cp' command for binaries in the Makefile to avoid a crash in case a new version is installed on a running system (suggested by Petri Hintukainen). - Fixed handling "Ca Info" in case the CAM sends this again if the smart card is replaced with a different one.
This commit is contained in:
parent
f5ad8fc5d7
commit
0e310c57a4
@ -1626,6 +1626,7 @@ Ville Skytt
|
|||||||
thread.c caused a compiler warning with g++ 4.1.1
|
thread.c caused a compiler warning with g++ 4.1.1
|
||||||
for fixing converting the port number in the "connect from..." log message of SVDRP
|
for fixing converting the port number in the "connect from..." log message of SVDRP
|
||||||
for reporting that there are places where ntohs() is assigned to different types
|
for reporting that there are places where ntohs() is assigned to different types
|
||||||
|
for adapting cThread::ThreadId() to recent kernels
|
||||||
|
|
||||||
Steffen Beyer <cpunk@reactor.de>
|
Steffen Beyer <cpunk@reactor.de>
|
||||||
for fixing setting the colored button help after deleting a recording in case the next
|
for fixing setting the colored button help after deleting a recording in case the next
|
||||||
@ -1808,6 +1809,8 @@ Gavin Hamill <gdh@acentral.co.uk>
|
|||||||
Petri Hintukainen <Petri.Hintukainen@hut.fi>
|
Petri Hintukainen <Petri.Hintukainen@hut.fi>
|
||||||
for suggesting to disable the use of "fadvise" in cUnbufferedFile because there
|
for suggesting to disable the use of "fadvise" in cUnbufferedFile because there
|
||||||
have been several reports that it causes more problems than it solves
|
have been several reports that it causes more problems than it solves
|
||||||
|
for suggesting to add --remove-destination to the 'cp' command for binaries in
|
||||||
|
the Makefile to avoid a crash in case a new version is installed on a running system
|
||||||
|
|
||||||
Marcel Schaeben <mts280@gmx.de>
|
Marcel Schaeben <mts280@gmx.de>
|
||||||
for his "Easy Input" patch
|
for his "Easy Input" patch
|
||||||
@ -1980,3 +1983,7 @@ Frank Schmirler <vdr@schmirler.de>
|
|||||||
Jörn Reder <joern@zyn.de>
|
Jörn Reder <joern@zyn.de>
|
||||||
for reporting that a recording may unnecessarily block a device with a CAM, while
|
for reporting that a recording may unnecessarily block a device with a CAM, while
|
||||||
it could record on the primary device as well
|
it could record on the primary device as well
|
||||||
|
|
||||||
|
Tomas Berglund <tomber@telia.com>
|
||||||
|
for reporting a problem with sticky PIDs in CAMs when switching between encrypted
|
||||||
|
channels on the same transponder
|
||||||
|
14
HISTORY
14
HISTORY
@ -4874,3 +4874,17 @@ Video Disk Recorder Revision History
|
|||||||
Oliver Endriss).
|
Oliver Endriss).
|
||||||
- Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it
|
- Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it
|
||||||
from a separate thread (reported by Udo Richter).
|
from a separate thread (reported by Udo Richter).
|
||||||
|
|
||||||
|
2006-08-20: Version 1.4.1-5
|
||||||
|
|
||||||
|
- Replaced the "quick workaround for additional live audio PIDs" in
|
||||||
|
cDvbDevice::SetChannelDevice() with an actual solution in
|
||||||
|
cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs,
|
||||||
|
which caused long switching times or completely blank screens when switching
|
||||||
|
between encrypted channels on the same transponder (reported by Tomas Berglund).
|
||||||
|
- Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skyttä).
|
||||||
|
- Added --remove-destination to the 'cp' command for binaries in the Makefile to
|
||||||
|
avoid a crash in case a new version is installed on a running system (suggested
|
||||||
|
by Petri Hintukainen).
|
||||||
|
- Fixed handling "Ca Info" in case the CAM sends this again if the smart card is
|
||||||
|
replaced with a different one.
|
||||||
|
6
Makefile
6
Makefile
@ -4,7 +4,7 @@
|
|||||||
# See the main source file 'vdr.c' for copyright information and
|
# See the main source file 'vdr.c' for copyright information and
|
||||||
# how to reach the author.
|
# how to reach the author.
|
||||||
#
|
#
|
||||||
# $Id: Makefile 1.94 2006/06/02 14:45:33 kls Exp $
|
# $Id: Makefile 1.95 2006/08/20 10:44:22 kls Exp $
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ install: install-bin install-conf install-doc install-plugins
|
|||||||
|
|
||||||
install-bin: vdr
|
install-bin: vdr
|
||||||
@mkdir -p $(BINDIR)
|
@mkdir -p $(BINDIR)
|
||||||
@cp vdr runvdr $(BINDIR)
|
@cp --remove-destination vdr runvdr $(BINDIR)
|
||||||
|
|
||||||
# Configuration files:
|
# Configuration files:
|
||||||
|
|
||||||
@ -223,7 +223,7 @@ install-doc:
|
|||||||
|
|
||||||
install-plugins: plugins
|
install-plugins: plugins
|
||||||
@mkdir -p $(PLUGINLIBDIR)
|
@mkdir -p $(PLUGINLIBDIR)
|
||||||
@cp $(PLUGINDIR)/lib/lib*-*.so.$(APIVERSION) $(PLUGINLIBDIR)
|
@cp --remove-destination $(PLUGINDIR)/lib/lib*-*.so.$(APIVERSION) $(PLUGINLIBDIR)
|
||||||
|
|
||||||
# Source documentation:
|
# Source documentation:
|
||||||
|
|
||||||
|
12
ci.c
12
ci.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: ci.c 1.44 2006/08/12 10:14:27 kls Exp $
|
* $Id: ci.c 1.45 2006/08/20 11:38:33 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ci.h"
|
#include "ci.h"
|
||||||
@ -985,6 +985,7 @@ bool cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data)
|
|||||||
switch (Tag) {
|
switch (Tag) {
|
||||||
case AOT_CA_INFO: {
|
case AOT_CA_INFO: {
|
||||||
dbgprotocol("%d: <== Ca Info", SessionId());
|
dbgprotocol("%d: <== Ca Info", SessionId());
|
||||||
|
numCaSystemIds = 0;
|
||||||
int l = 0;
|
int l = 0;
|
||||||
const uint8_t *d = GetData(Data, l);
|
const uint8_t *d = GetData(Data, l);
|
||||||
while (l > 1) {
|
while (l > 1) {
|
||||||
@ -992,13 +993,14 @@ bool cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data)
|
|||||||
dbgprotocol(" %04X", id);
|
dbgprotocol(" %04X", id);
|
||||||
d += 2;
|
d += 2;
|
||||||
l -= 2;
|
l -= 2;
|
||||||
if (numCaSystemIds < MAXCASYSTEMIDS) {
|
if (numCaSystemIds < MAXCASYSTEMIDS)
|
||||||
caSystemIds[numCaSystemIds++] = id;
|
caSystemIds[numCaSystemIds++] = id;
|
||||||
caSystemIds[numCaSystemIds] = 0;
|
else {
|
||||||
}
|
|
||||||
else
|
|
||||||
esyslog("ERROR: too many CA system IDs!");
|
esyslog("ERROR: too many CA system IDs!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
caSystemIds[numCaSystemIds] = 0;
|
||||||
dbgprotocol("\n");
|
dbgprotocol("\n");
|
||||||
}
|
}
|
||||||
state = 2; // got ca info
|
state = 2; // got ca info
|
||||||
|
4
config.h
4
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 1.265 2006/08/12 09:10:11 kls Exp $
|
* $Id: config.h 1.266 2006/08/14 09:49:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
// VDR's own version number:
|
// VDR's own version number:
|
||||||
|
|
||||||
#define VDRVERSION "1.4.1-4"
|
#define VDRVERSION "1.4.1-5"
|
||||||
#define VDRVERSNUM 10401 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10401 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
13
dvbdevice.c
13
dvbdevice.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 1.159 2006/06/11 09:03:55 kls Exp $
|
* $Id: dvbdevice.c 1.160 2006/08/14 09:38:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -853,11 +853,6 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
|||||||
esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1);
|
esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//XXX quick workaround for additional live audio PIDs:
|
|
||||||
if (ciHandler) {
|
|
||||||
ciHandler->SetPid(Channel->Apid(1), true);
|
|
||||||
ciHandler->SetPid(Channel->Dpid(0), true);
|
|
||||||
}
|
|
||||||
if (IsPrimaryDevice())
|
if (IsPrimaryDevice())
|
||||||
AddPid(Channel->Tpid(), ptTeletext);
|
AddPid(Channel->Tpid(), ptTeletext);
|
||||||
CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); // actually one would expect 'false' here, but according to Marco Schlüßler <marco@lordzodiac.de> this works
|
CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); // actually one would expect 'false' here, but according to Marco Schlüßler <marco@lordzodiac.de> this works
|
||||||
@ -927,8 +922,14 @@ void cDvbDevice::SetAudioTrackDevice(eTrackType Type)
|
|||||||
if (IS_AUDIO_TRACK(Type) || (IS_DOLBY_TRACK(Type) && SetAudioBypass(true))) {
|
if (IS_AUDIO_TRACK(Type) || (IS_DOLBY_TRACK(Type) && SetAudioBypass(true))) {
|
||||||
if (pidHandles[ptAudio].pid && pidHandles[ptAudio].pid != TrackId->id) {
|
if (pidHandles[ptAudio].pid && pidHandles[ptAudio].pid != TrackId->id) {
|
||||||
DetachAll(pidHandles[ptAudio].pid);
|
DetachAll(pidHandles[ptAudio].pid);
|
||||||
|
if (ciHandler)
|
||||||
|
ciHandler->SetPid(pidHandles[ptAudio].pid, false);
|
||||||
pidHandles[ptAudio].pid = TrackId->id;
|
pidHandles[ptAudio].pid = TrackId->id;
|
||||||
SetPid(&pidHandles[ptAudio], ptAudio, true);
|
SetPid(&pidHandles[ptAudio], ptAudio, true);
|
||||||
|
if (ciHandler) {
|
||||||
|
ciHandler->SetPid(pidHandles[ptAudio].pid, true);
|
||||||
|
ciHandler->StartDecrypting();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IS_DOLBY_TRACK(Type)) {
|
else if (IS_DOLBY_TRACK(Type)) {
|
||||||
|
6
thread.c
6
thread.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: thread.c 1.56 2006/06/24 10:10:58 kls Exp $
|
* $Id: thread.c 1.57 2006/08/20 10:20:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
@ -316,11 +316,9 @@ bool cThread::EmergencyExit(bool Request)
|
|||||||
return emergencyExitRequested = true; // yes, it's an assignment, not a comparison!
|
return emergencyExitRequested = true; // yes, it's an assignment, not a comparison!
|
||||||
}
|
}
|
||||||
|
|
||||||
_syscall0(pid_t, gettid)
|
|
||||||
|
|
||||||
tThreadId cThread::ThreadId(void)
|
tThreadId cThread::ThreadId(void)
|
||||||
{
|
{
|
||||||
return gettid();
|
return syscall(__NR_gettid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cThread::SetMainThreadId(void)
|
void cThread::SetMainThreadId(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user