mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Added cDevice::NewOsd() to allow a derived cDevice class to implement its own OSD capabilities
This commit is contained in:
parent
df5be87dc3
commit
c6ed4da7a0
@ -161,6 +161,8 @@ Andreas Schultz <aschultz@warp10.net>
|
|||||||
for adding direct access to the index data of cPalette (needed for displaying SPUs)
|
for adding direct access to the index data of cPalette (needed for displaying SPUs)
|
||||||
for pointing out a possible race condition in the cDvbPlayer
|
for pointing out a possible race condition in the cDvbPlayer
|
||||||
for making the use of malloc/free and new/delete consistent
|
for making the use of malloc/free and new/delete consistent
|
||||||
|
for adding cDevice::NewOsd() to allow a derived cDevice class to implement its own
|
||||||
|
OSD capabilities
|
||||||
|
|
||||||
Aaron Holtzman
|
Aaron Holtzman
|
||||||
for writing 'ac3dec'
|
for writing 'ac3dec'
|
||||||
|
4
HISTORY
4
HISTORY
@ -1416,8 +1416,10 @@ Video Disk Recorder Revision History
|
|||||||
there is at least one device, either a DVB device found by the core VDR code
|
there is at least one device, either a DVB device found by the core VDR code
|
||||||
itself, or a device implemented by a plugin.
|
itself, or a device implemented by a plugin.
|
||||||
|
|
||||||
2002-08-24: Version 1.1.8
|
2002-08-25: Version 1.1.8
|
||||||
|
|
||||||
- Fixed replaying the last few seconds of a recording.
|
- Fixed replaying the last few seconds of a recording.
|
||||||
- Added some missing #includes to files in libdtv for gcc 3.2 (thanks to Jürgen
|
- Added some missing #includes to files in libdtv for gcc 3.2 (thanks to Jürgen
|
||||||
Zimmermann).
|
Zimmermann).
|
||||||
|
- Added cDevice::NewOsd() to allow a derived cDevice class to implement its own
|
||||||
|
OSD capabilities (thanks to Andreas Schultz).
|
||||||
|
43
PLUGINS.html
43
PLUGINS.html
@ -21,18 +21,18 @@ VDR program and present itself to the user.
|
|||||||
The <i>inside</i> interface provides the plugin code access to VDR's internal data
|
The <i>inside</i> interface provides the plugin code access to VDR's internal data
|
||||||
structures and allows it to hook itself into specific areas to perform special actions.
|
structures and allows it to hook itself into specific areas to perform special actions.
|
||||||
<p>
|
<p>
|
||||||
<!--X1.1.4--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
<!--X1.1.5--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.4 are marked like this.
|
|
||||||
<!--X1.1.4--></td></tr></table>
|
|
||||||
<!--X1.1.5--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
|
||||||
Important modifications introduced in version 1.1.5 are marked like this.
|
Important modifications introduced in version 1.1.5 are marked like this.
|
||||||
<!--X1.1.5--></td></tr></table>
|
<!--X1.1.5--></td></tr></table>
|
||||||
<!--X1.1.6--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
<!--X1.1.6--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.6 are marked like this.
|
Important modifications introduced in version 1.1.6 are marked like this.
|
||||||
<!--X1.1.6--></td></tr></table>
|
<!--X1.1.6--></td></tr></table>
|
||||||
<!--X1.1.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
Important modifications introduced in version 1.1.7 are marked like this.
|
Important modifications introduced in version 1.1.7 are marked like this.
|
||||||
<!--X1.1.7--></td></tr></table>
|
<!--X1.1.7--></td></tr></table>
|
||||||
|
<!--X1.1.8--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||||
|
Important modifications introduced in version 1.1.8 are marked like this.
|
||||||
|
<!--X1.1.8--></td></tr></table>
|
||||||
|
|
||||||
<a name="Part I - The Outside Interface"><hr><center><h1>Part I - The Outside Interface</h1></center>
|
<a name="Part I - The Outside Interface"><hr><center><h1>Part I - The Outside Interface</h1></center>
|
||||||
|
|
||||||
@ -907,7 +907,6 @@ See the file <tt>status.h</tt> for detailed information on which status monitor
|
|||||||
member functions are available in <tt>cStatus</tt>. You only need to implement
|
member functions are available in <tt>cStatus</tt>. You only need to implement
|
||||||
the functions you actually want to use.
|
the functions you actually want to use.
|
||||||
|
|
||||||
<!--X1.1.4--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
|
||||||
<hr><h2>Players</h2>
|
<hr><h2>Players</h2>
|
||||||
|
|
||||||
<center><i><b>Play it again, Sam!</b></i></center><p>
|
<center><i><b>Play it again, Sam!</b></i></center><p>
|
||||||
@ -958,7 +957,7 @@ stream. There are no prerequisites regarding the length or alignment of an
|
|||||||
individual block of data. The sum of all blocks must simply result in the
|
individual block of data. The sum of all blocks must simply result in the
|
||||||
desired video data stream, and it must be delivered fast enough so that the
|
desired video data stream, and it must be delivered fast enough so that the
|
||||||
DVB device doesn't run out of data.
|
DVB device doesn't run out of data.
|
||||||
<!--X1.1.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
To avoid busy loops the player should call its member function
|
To avoid busy loops the player should call its member function
|
||||||
|
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
@ -1065,9 +1064,8 @@ Of course, these are only suggestions which should make it easier for VDR users
|
|||||||
enjoy additional players, since they will be able to control them with actions
|
enjoy additional players, since they will be able to control them with actions
|
||||||
that they already know. If you absolutely want to do things differently, just go
|
that they already know. If you absolutely want to do things differently, just go
|
||||||
ahead - it's your show...
|
ahead - it's your show...
|
||||||
<!--X1.1.4--></td></tr></table>
|
|
||||||
|
|
||||||
<!--X1.1.6--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
<!--X1.1.6--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||||
<hr><h2>Receivers</h2>
|
<hr><h2>Receivers</h2>
|
||||||
|
|
||||||
<center><i><b>Tapping into the stream...</b></i></center><p>
|
<center><i><b>Tapping into the stream...</b></i></center><p>
|
||||||
@ -1123,7 +1121,7 @@ If the <tt>cReceiver</tt> isn't needed any more, it may simply be <i>deleted</i>
|
|||||||
and will automatically detach itself from the <tt>cDevice</tt>.
|
and will automatically detach itself from the <tt>cDevice</tt>.
|
||||||
<!--X1.1.6--></td></tr></table>
|
<!--X1.1.6--></td></tr></table>
|
||||||
|
|
||||||
<!--X1.1.5--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
<!--X1.1.5--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||||
<hr><h2>The On Screen Display</h2>
|
<hr><h2>The On Screen Display</h2>
|
||||||
|
|
||||||
<center><i><b>Express yourself</b></i></center><p>
|
<center><i><b>Express yourself</b></i></center><p>
|
||||||
@ -1155,7 +1153,7 @@ of these functions, and VDR/osd.c to see how VDR opens the OSD and sets up
|
|||||||
its windows and color depths).
|
its windows and color depths).
|
||||||
<!--X1.1.5--></td></tr></table>
|
<!--X1.1.5--></td></tr></table>
|
||||||
|
|
||||||
<!--X1.1.6--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
<!--X1.1.6--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||||
<hr><h2>Devices</h2>
|
<hr><h2>Devices</h2>
|
||||||
|
|
||||||
<center><i><b>Expanding the possibilities</b></i></center><p>
|
<center><i><b>Expanding the possibilities</b></i></center><p>
|
||||||
@ -1228,7 +1226,7 @@ to indicate this to VDR.
|
|||||||
<p>
|
<p>
|
||||||
The functions to implement replaying capabilites are
|
The functions to implement replaying capabilites are
|
||||||
|
|
||||||
<!--X1.1.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
<!--X1.1.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||||
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
virtual bool HasDecoder(void) const;
|
virtual bool HasDecoder(void) const;
|
||||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||||
@ -1252,6 +1250,25 @@ 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>
|
||||||
|
|
||||||
|
<!--X1.1.8--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||||
|
<p>
|
||||||
|
<b>On Screen Display</b>
|
||||||
|
<p>
|
||||||
|
If your device provides On Screen Display (OSD) capabilities (which every device
|
||||||
|
that is supposed to be used as a primary device should do), it can implement
|
||||||
|
the function
|
||||||
|
|
||||||
|
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
|
||||||
|
virtual cOsdBase *NewOsd(int x, int y);
|
||||||
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
|
which must return a newly created object of a derived cOsdBase class that
|
||||||
|
implements the functions necessary to display OSD information on your device.
|
||||||
|
The caller of this function will delete the object as soon as it is no longer
|
||||||
|
needed.
|
||||||
|
<!--X1.1.8--></td></tr></table>
|
||||||
|
|
||||||
|
<p>
|
||||||
<b>Initializing new devices</b>
|
<b>Initializing new devices</b>
|
||||||
<p>
|
<p>
|
||||||
A derived cDevice class shall implement a static function
|
A derived cDevice class shall implement a static function
|
||||||
|
7
device.c
7
device.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: device.c 1.12 2002/08/16 09:50:43 kls Exp $
|
* $Id: device.c 1.13 2002/08/25 09:16:51 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -111,6 +111,11 @@ bool cDevice::HasDecoder(void) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cOsdBase *cDevice::NewOsd(int x, int y)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
cDevice *cDevice::GetDevice(int Ca, int Priority, int Frequency, int Vpid, bool *ReUse)
|
cDevice *cDevice::GetDevice(int Ca, int Priority, int Frequency, int Vpid, bool *ReUse)
|
||||||
{
|
{
|
||||||
if (ReUse)
|
if (ReUse)
|
||||||
|
13
device.h
13
device.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: device.h 1.9 2002/08/16 08:52:27 kls Exp $
|
* $Id: device.h 1.10 2002/08/25 09:16:34 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -43,6 +43,7 @@ enum ePlayMode { pmNone, // audio/video from decoder
|
|||||||
// KNOWN TO YOUR PLAYER.
|
// KNOWN TO YOUR PLAYER.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class cOsdBase;
|
||||||
class cChannel;
|
class cChannel;
|
||||||
class cPlayer;
|
class cPlayer;
|
||||||
class cReceiver;
|
class cReceiver;
|
||||||
@ -129,6 +130,16 @@ public:
|
|||||||
virtual bool HasDecoder(void) const;
|
virtual bool HasDecoder(void) const;
|
||||||
// Tells whether this device has an MPEG decoder.
|
// Tells whether this device has an MPEG decoder.
|
||||||
|
|
||||||
|
// OSD facilities
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual cOsdBase *NewOsd(int x, int y);
|
||||||
|
// Creates a new cOsdBase object that can be used by the cOsd class
|
||||||
|
// to display information on the screen, with the upper left corner
|
||||||
|
// of the OSD at the given coordinates. If a derived cDevice doesn't
|
||||||
|
// implement this function, NULL will be returned by default (which
|
||||||
|
// means the device has no OSD capabilities).
|
||||||
|
|
||||||
// Channel facilities
|
// Channel facilities
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -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.7 2002/08/16 09:27:53 kls Exp $
|
* $Id: dvbdevice.c 1.8 2002/08/25 09:20:53 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -193,6 +193,11 @@ bool cDvbDevice::HasDecoder(void) const
|
|||||||
return fd_video >= 0 && fd_audio >= 0;
|
return fd_video >= 0 && fd_audio >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cOsdBase *cDvbDevice::NewOsd(int x, int y)
|
||||||
|
{
|
||||||
|
return new cDvbOsd(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
bool cDvbDevice::GrabImage(const char *FileName, bool Jpeg, int Quality, int SizeX, int SizeY)
|
bool cDvbDevice::GrabImage(const char *FileName, bool Jpeg, int Quality, int SizeX, int SizeY)
|
||||||
{
|
{
|
||||||
int videoDev = DvbOpen(DEV_VIDEO, CardIndex(), O_RDWR, true);
|
int videoDev = DvbOpen(DEV_VIDEO, CardIndex(), O_RDWR, true);
|
||||||
|
@ -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.5 2002/08/16 08:53:30 kls Exp $
|
* $Id: dvbdevice.h 1.6 2002/08/25 09:19:34 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -48,6 +48,11 @@ public:
|
|||||||
virtual bool CanBeReUsed(int Frequency, int Vpid);
|
virtual bool CanBeReUsed(int Frequency, int Vpid);
|
||||||
virtual bool HasDecoder(void) const;
|
virtual bool HasDecoder(void) const;
|
||||||
|
|
||||||
|
// OSD facilities
|
||||||
|
|
||||||
|
public:
|
||||||
|
cOsdBase *NewOsd(int x, int y);
|
||||||
|
|
||||||
// Channel facilities
|
// Channel facilities
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
5
osd.c
5
osd.c
@ -4,13 +4,12 @@
|
|||||||
* 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: osd.c 1.34 2002/08/15 11:20:44 kls Exp $
|
* $Id: osd.c 1.35 2002/08/25 09:18:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "dvbosd.h"
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
|
|
||||||
@ -73,7 +72,7 @@ cOsdBase *cOsd::OpenRaw(int x, int y)
|
|||||||
#ifdef DEBUG_OSD
|
#ifdef DEBUG_OSD
|
||||||
return NULL;
|
return NULL;
|
||||||
#else
|
#else
|
||||||
return osd ? NULL : new cDvbOsd(x, y);
|
return osd ? NULL : cDevice::PrimaryDevice()->NewOsd(x, y);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user