summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2003-11-07 15:30:51 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2003-11-07 15:30:51 +0100
commit30d9af07a8379df62cdd33c0bafe1c65dd5bdc58 (patch)
tree51becc825a1d796cd747e97bd0682ea9a96ce40a
parent327b4c35ac60dcbe00cc8fa08cd5c129c685de83 (diff)
downloadvdr-30d9af07a8379df62cdd33c0bafe1c65dd5bdc58.tar.gz
vdr-30d9af07a8379df62cdd33c0bafe1c65dd5bdc58.tar.bz2
Added cDevice::GetSTC()
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--PLUGINS.html9
-rw-r--r--device.c7
-rw-r--r--device.h6
-rw-r--r--dvbdevice.c17
-rw-r--r--dvbdevice.h5
7 files changed, 43 insertions, 6 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 1a36bdfa..14ff96fe 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -606,6 +606,7 @@ Thomas Sailer <sailer@scs.ch>
Sven Goethel <sgoethel@jausoft.com>
for making switching audio channels work without stopping/restarting the DMX
for fixing initializing the highlight area in cDvbSpuDecoder
+ for suggesting to add cDevice::GetSTC()
Jan Rieger <jan@ricomp.de>
for suggestions and testing raw keyboard input
diff --git a/HISTORY b/HISTORY
index 6f3d76c9..7a63c3f8 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2451,3 +2451,7 @@ Video Disk Recorder Revision History
is being presented (thanks to Thomas v. Keller for reportign this one).
- Added missing 'const' to some cChannel member functions (thanks to Torsten
Herz).
+
+2003-11-07: Version 1.2.6pre5
+
+- Added cDevice::GetSTC() (suggested by Sven Goethel).
diff --git a/PLUGINS.html b/PLUGINS.html
index 913a9914..95ba5d79 100644
--- a/PLUGINS.html
+++ b/PLUGINS.html
@@ -6,7 +6,7 @@
<center><h1>The VDR Plugin System</h1></center>
-<center><b>Version 1.2</b></center>
+<center><b>Version 1.2.6</b></center>
<p>
<center>
Copyright &copy; 2003 Klaus Schmidinger<br>
@@ -14,6 +14,10 @@ Copyright &copy; 2003 Klaus Schmidinger<br>
<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
</center>
<p>
+<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
+Important modifications introduced in version 1.2.6 are marked like this.
+<!--X1.1.32--></td></tr></table>
+<p>
VDR provides an easy to use plugin interface that allows additional functionality
to be added to the program by implementing a dynamically loadable library file.
This interface allows programmers to develop additional functionality for VDR completely
@@ -1318,6 +1322,9 @@ The functions to implement replaying capabilites are
virtual bool HasDecoder(void) const;
virtual bool CanReplay(void) const;
virtual bool SetPlayMode(ePlayMode PlayMode);
+<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
+virtual int64_t GetSTC(void);
+<!--X1.1.32--></td></tr></table>
virtual void TrickSpeed(int Speed);
virtual void Clear(void);
virtual void Play(void);
diff --git a/device.c b/device.c
index b409ac0e..9a698ead 100644
--- a/device.c
+++ b/device.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: device.c 1.47 2003/08/15 12:34:36 kls Exp $
+ * $Id: device.c 1.47.1.1 2003/11/07 13:16:12 kls Exp $
*/
#include "device.h"
@@ -498,6 +498,11 @@ bool cDevice::SetPlayMode(ePlayMode PlayMode)
return false;
}
+int64_t cDevice::GetSTC(void)
+{
+ return -1;
+}
+
void cDevice::TrickSpeed(int Speed)
{
}
diff --git a/device.h b/device.h
index 144adfb6..c306b4cd 100644
--- a/device.h
+++ b/device.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: device.h 1.34 2003/08/15 13:05:50 kls Exp $
+ * $Id: device.h 1.34.1.1 2003/11/07 13:15:45 kls Exp $
*/
#ifndef __DEVICE_H
@@ -320,6 +320,10 @@ protected:
///< Sets the device into the given play mode.
///< \return true if the operation was successful.
public:
+ virtual int64_t GetSTC(void);
+ ///< Gets the current System Time Counter, which can be used to
+ ///< synchronize audio and video. If this device is unable to
+ ///< provide the STC, -1 will be returned.
virtual void TrickSpeed(int Speed);
///< Sets the device into a mode where replay is done slower.
///< Every single frame shall then be displayed the given number of
diff --git a/dvbdevice.c b/dvbdevice.c
index ebb236e7..4e7b50ca 100644
--- a/dvbdevice.c
+++ b/dvbdevice.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.c 1.67.1.2 2003/10/24 14:32:20 kls Exp $
+ * $Id: dvbdevice.c 1.67.1.3 2003/11/07 13:24:49 kls Exp $
*/
#include "dvbdevice.h"
@@ -326,6 +326,7 @@ cDvbDevice::cDvbDevice(int n)
fd_osd = DvbOpen(DEV_DVB_OSD, n, O_RDWR);
fd_video = DvbOpen(DEV_DVB_VIDEO, n, O_RDWR | O_NONBLOCK);
fd_audio = DvbOpen(DEV_DVB_AUDIO, n, O_RDWR | O_NONBLOCK);
+ fd_stc = DvbOpen(DEV_DVB_DEMUX, n, O_RDWR);
// The DVR device (will be opened and closed as needed):
@@ -869,6 +870,20 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode)
return true;
}
+int64_t cDvbDevice::GetSTC(void)
+{
+ if (fd_stc >= 0) {
+ struct dmx_stc stc;
+ stc.num = 0;
+ if (ioctl(fd_stc, DMX_GET_STC, &stc) == -1) {
+ esyslog("ERROR: stc %d: %m", CardIndex() + 1);
+ return -1;
+ }
+ return stc.stc / stc.base;
+ }
+ return -1;
+}
+
void cDvbDevice::TrickSpeed(int Speed)
{
if (fd_video >= 0)
diff --git a/dvbdevice.h b/dvbdevice.h
index 78df221b..d3fdd17b 100644
--- a/dvbdevice.h
+++ b/dvbdevice.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.h 1.23 2003/10/04 11:54:50 kls Exp $
+ * $Id: dvbdevice.h 1.23.1.1 2003/11/07 13:17:13 kls Exp $
*/
#ifndef __DVBDEVICE_H
@@ -38,7 +38,7 @@ public:
///< \return True if any devices are available.
private:
fe_type_t frontendType;
- int fd_osd, fd_audio, fd_video, fd_dvr;
+ int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc;
int OsdDeviceHandle(void) const { return fd_osd; }
protected:
virtual void MakePrimaryDevice(bool On);
@@ -107,6 +107,7 @@ protected:
virtual bool CanReplay(void) const;
virtual bool SetPlayMode(ePlayMode PlayMode);
public:
+ virtual int64_t GetSTC(void);
virtual void TrickSpeed(int Speed);
virtual void Clear(void);
virtual void Play(void);