Added cDevice::CloseFilter(); some fixes to PLUGINS.html

This commit is contained in:
Klaus Schmidinger 2007-10-14 13:11:23 +02:00
parent 7780e3664a
commit 67df515c06
8 changed files with 34 additions and 10 deletions

View File

@ -1026,6 +1026,8 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
for adding internationalization to the "skincurses" plugin for adding internationalization to the "skincurses" plugin
for helping with adding compatibility mode for playback of recordings made with for helping with adding compatibility mode for playback of recordings made with
the subtitles plugin the subtitles plugin
for implementing cDevice::CloseFilter()
for some fixes to PLUGINS.html
Ralf Klueber <ralf.klueber@vodafone.com> Ralf Klueber <ralf.klueber@vodafone.com>
for reporting a bug in cutting a recording if there is only a single editing mark for reporting a bug in cutting a recording if there is only a single editing mark

View File

@ -5484,3 +5484,6 @@ Video Disk Recorder Revision History
- Made the default copy ctor of cRecording private (thanks to Markus Hahn). - Made the default copy ctor of cRecording private (thanks to Markus Hahn).
Same for the assign operator. Same for the assign operator.
- Added cRecording::Undelete() (based on a patch from Markus Hahn). - Added cRecording::Undelete() (based on a patch from Markus Hahn).
- Added cDevice::CloseFilter() to allow a device to have complete control over
both opening and closing section filters (thanks to Rolf Ahrenberg).
- Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).

View File

@ -1786,7 +1786,7 @@ selecting which channel it shall tune to:
<p><table><tr><td bgcolor=#F0F0F0><pre> <p><table><tr><td bgcolor=#F0F0F0><pre>
virtual bool ProvidesSource(int Source) const; virtual bool ProvidesSource(int Source) const;
virtual bool ProvidesTransponder(const cChannel *Channel) const; virtual bool ProvidesTransponder(const cChannel *Channel) const;
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL); virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
</pre></td></tr></table><p> </pre></td></tr></table><p>
@ -1849,7 +1849,7 @@ In addition, the following functions may be implemented to provide further
functionality: functionality:
<p><table><tr><td bgcolor=#F0F0F0><pre> <p><table><tr><td bgcolor=#F0F0F0><pre>
virtual bool GrabImage(const char *FileName, bool Jpeg = true, int Quality = -1, int Si virtual bool GrabImage(const char *FileName, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
virtual void SetVideoFormat(bool VideoFormat16_9); virtual void SetVideoFormat(bool VideoFormat16_9);
virtual void SetVolumeDevice(int Volume); virtual void SetVolumeDevice(int Volume);
</pre></td></tr></table><p> </pre></td></tr></table><p>
@ -1858,13 +1858,16 @@ virtual void SetVolumeDevice(int Volume);
<b>Section Filtering</b> <b>Section Filtering</b>
<p> <p>
If your device provides section filtering capabilities it can implement If your device provides section filtering capabilities it can implement
the function the functions
<p><table><tr><td bgcolor=#F0F0F0><pre> <p><table><tr><td bgcolor=#F0F0F0><pre>
virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask); virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
<!--X1.5.10--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
virtual void CloseFilter(int Handle);
<!--X1.5.10--></td></tr></table>
</pre></td></tr></table><p> </pre></td></tr></table><p>
which must open a file handle that delivers section data for the given which must open and close a file handle that delivers section data for the given
filter parameters. filter parameters.
<p> <p>
In order to actually start section handling, the In order to actually start section handling, the

View File

@ -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: device.c 1.144 2007/10/13 10:30:13 kls Exp $ * $Id: device.c 1.145 2007/10/14 13:09:19 kls Exp $
*/ */
#include "device.h" #include "device.h"
@ -652,6 +652,11 @@ int cDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
return -1; return -1;
} }
void cDevice::CloseFilter(int Handle)
{
close(Handle);
}
void cDevice::AttachFilter(cFilter *Filter) void cDevice::AttachFilter(cFilter *Filter)
{ {
if (sectionHandler) if (sectionHandler)

View File

@ -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: device.h 1.84 2007/10/13 12:25:26 kls Exp $ * $Id: device.h 1.85 2007/10/14 13:09:12 kls Exp $
*/ */
#ifndef __DEVICE_H #ifndef __DEVICE_H
@ -308,6 +308,11 @@ public:
///< Opens a file handle for the given filter data. ///< Opens a file handle for the given filter data.
///< A derived device that provides section data must ///< A derived device that provides section data must
///< implement this function. ///< implement this function.
virtual void CloseFilter(int Handle);
///< Closes a file handle that has previously been opened
///< by OpenFilter(). If this is as simple as calling close(Handle),
///< a derived class need not implement this function, because this
///< is done by the default implementation.
void AttachFilter(cFilter *Filter); void AttachFilter(cFilter *Filter);
///< Attaches the given filter to this device. ///< Attaches the given filter to this device.
void Detach(cFilter *Filter); void Detach(cFilter *Filter);

View File

@ -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.166 2007/10/13 11:15:50 kls Exp $ * $Id: dvbdevice.c 1.167 2007/10/14 12:56:03 kls Exp $
*/ */
#include "dvbdevice.h" #include "dvbdevice.h"
@ -711,6 +711,11 @@ int cDvbDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
return -1; return -1;
} }
void cDvbDevice::CloseFilter(int Handle)
{
close(Handle);
}
void cDvbDevice::TurnOffLiveMode(bool LiveView) void cDvbDevice::TurnOffLiveMode(bool LiveView)
{ {
if (LiveView) { if (LiveView) {

View File

@ -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.h 1.44 2007/02/25 12:23:57 kls Exp $ * $Id: dvbdevice.h 1.45 2007/10/14 13:01:25 kls Exp $
*/ */
#ifndef __DVBDEVICE_H #ifndef __DVBDEVICE_H
@ -83,6 +83,7 @@ protected:
protected: protected:
virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask); virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
virtual void CloseFilter(int Handle);
// Common Interface facilities: // Common Interface facilities:

View File

@ -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: sections.c 1.14 2005/09/18 09:33:40 kls Exp $ * $Id: sections.c 1.15 2007/10/14 12:52:07 kls Exp $
*/ */
#include "sections.h" #include "sections.h"
@ -105,7 +105,7 @@ void cSectionHandler::Del(const cFilterData *FilterData)
for (fh = filterHandles.First(); fh; fh = filterHandles.Next(fh)) { for (fh = filterHandles.First(); fh; fh = filterHandles.Next(fh)) {
if (fh->filterData.Is(FilterData->pid, FilterData->tid, FilterData->mask)) { if (fh->filterData.Is(FilterData->pid, FilterData->tid, FilterData->mask)) {
if (--fh->used <= 0) { if (--fh->used <= 0) {
close(fh->handle); device->CloseFilter(fh->handle);
filterHandles.Del(fh); filterHandles.Del(fh);
break; break;
} }