mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented sending all frames to devices that can handle them in fast forward trick speeds
This commit is contained in:
parent
b943bf2c50
commit
78ecc96e17
@ -2190,3 +2190,7 @@ Denis Knauf <denis.knauf@gmail.com>
|
||||
|
||||
Diego Pierotto <vdr-italian@tiscali.it>
|
||||
for translating OSD texts to the Italian language
|
||||
|
||||
Timo Eskola <timo@tolleri.net>
|
||||
for implementing sending all frames to devices that can handle them in fast forward
|
||||
trick speeds
|
||||
|
2
HISTORY
2
HISTORY
@ -5464,3 +5464,5 @@ Video Disk Recorder Revision History
|
||||
Richter).
|
||||
- Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
|
||||
Udo Richter).
|
||||
- Implemented sending all frames to devices that can handle them in fast forward
|
||||
trick speeds (thansk to Timo Eskola).
|
||||
|
27
PLUGINS.html
27
PLUGINS.html
@ -14,18 +14,18 @@ Copyright © 2006 Klaus Schmidinger<br>
|
||||
<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
|
||||
</center>
|
||||
<p>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.1 are marked like this.
|
||||
<!--X1.5.1--></td></tr></table>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.3 are marked like this.
|
||||
<!--X1.5.3--></td></tr></table>
|
||||
<!--X1.5.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
<!--X1.5.7--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.7 are marked like this.
|
||||
<!--X1.5.7--></td></tr></table>
|
||||
<!--X1.5.8--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
<!--X1.5.8--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.8 are marked like this.
|
||||
<!--X1.5.8--></td></tr></table>
|
||||
<!--X1.5.10--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.10 are marked like this.
|
||||
<!--X1.5.10--></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.
|
||||
@ -64,9 +64,7 @@ structures and allows it to hook itself into specific areas to perform special a
|
||||
<li><a href="#Housekeeping">Housekeeping</a>
|
||||
<li><a href="#Main thread hook">Main thread hook</a>
|
||||
<li><a href="#Activity">Activity</a>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
<li><a href="#Wakeup">Wakeup</a>
|
||||
<!--X1.5.1--></td></tr></table>
|
||||
<li><a href="#Setup parameters">Setup parameters</a>
|
||||
<li><a href="#The Setup menu">The Setup menu</a>
|
||||
<li><a href="#Configuration files">Configuration files</a>
|
||||
@ -685,7 +683,6 @@ be queried, and further prompts may show up. If all prompts have been confirmed,
|
||||
the shutdown will take place. As soon as one prompt is not confirmed, no
|
||||
further plugins will be queried and no shutdown will be done.
|
||||
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
<a name="Wakeup"><hr><h2>Wakeup</h2>
|
||||
|
||||
<center><i><b>Wake me up before you go-go</b></i></center><p>
|
||||
@ -718,7 +715,6 @@ After wakeup, the plugin shall continue to return the wakeup time and shall
|
||||
return a string when <tt>Active()</tt> is called at that time, otherwise VDR may shut down
|
||||
again instantly. If <tt>WakeupTime()</tt> returns a time that is not in
|
||||
the future, the time will be ignored.
|
||||
<!--X1.5.1--></td></tr></table>
|
||||
|
||||
<a name="Setup parameters"><hr><h2>Setup parameters</h2>
|
||||
|
||||
@ -910,7 +906,7 @@ const char *MyConfigDir = cPlugin::ConfigDirectory();
|
||||
|
||||
<center><i><b>Welcome to Babylon!</b></i></center><p>
|
||||
|
||||
<!--X1.5.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
<!--X1.5.7--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
If a plugin displays texts to the user, it should prepare for internationalization
|
||||
of these texts. All that is necessary for this is to mark every text that is
|
||||
presented to the user as translatable, as in
|
||||
@ -921,7 +917,7 @@ const char *s = tr("Hello world!");
|
||||
|
||||
The text given here must be the English version, and the returned pointer is either
|
||||
a translated version (if available) or the original string.
|
||||
<!--X1.5.8--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
<!--X1.5.8--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
Texts are searched for in the domain registered for this plugin.
|
||||
If a plugin wants to make use of texts defined by the core VDR code, it can use
|
||||
the special <tt>trVDR()</tt> macro to mark these texts without having them
|
||||
@ -944,7 +940,7 @@ for (int i = 0; i < 3; i++)
|
||||
</pre></td></tr></table><p>
|
||||
|
||||
<p>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
The system VDR is running on may use a character encoding where a single character
|
||||
(or <i>symbol</i>) consists of more than one byte (UTF-8, as opposed to, for instance,
|
||||
ISO8859-1, where every character is represented by a single byte in memory).
|
||||
@ -1606,7 +1602,7 @@ with the full required resolution. Only if this fails shall it use alternate
|
||||
areas. Drawing areas are always rectangular and may not overlap (but do not need
|
||||
to be adjacent).
|
||||
<p>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
Special consideration may have to be given to color usage if the OSD provides
|
||||
8bpp (256 colors). In that case, fonts may be drawn using <i>anti-aliasing</i>,
|
||||
which requires several blended color values between the foreground and background
|
||||
@ -1824,6 +1820,9 @@ virtual bool HasDecoder(void) const;
|
||||
virtual bool CanReplay(void) const;
|
||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||
virtual int64_t GetSTC(void);
|
||||
<!--X1.5.10--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
virtual bool HasIBPTrickSpeed(void);
|
||||
<!--X1.5.10--></td></tr></table>
|
||||
virtual void TrickSpeed(int Speed);
|
||||
virtual void Clear(void);
|
||||
virtual void Play(void);
|
||||
|
5
device.h
5
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.83 2007/10/12 13:53:50 kls Exp $
|
||||
* $Id: device.h 1.84 2007/10/13 12:25:26 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DEVICE_H
|
||||
@ -494,6 +494,9 @@ public:
|
||||
///< 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 bool HasIBPTrickSpeed(void) { return false; }
|
||||
///< Returns true if this device can handle all frames in 'fast forward'
|
||||
///< trick speeds.
|
||||
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
|
||||
|
10
dvbplayer.c
10
dvbplayer.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbplayer.c 1.46 2007/04/28 14:55:22 kls Exp $
|
||||
* $Id: dvbplayer.c 1.47 2007/10/13 12:20:58 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbplayer.h"
|
||||
@ -400,7 +400,13 @@ void cDvbPlayer::Action(void)
|
||||
uchar FileNumber;
|
||||
int FileOffset;
|
||||
bool TimeShiftMode = index->IsStillRecording();
|
||||
int Index = index->GetNextIFrame(readIndex, playDir == pdForward, &FileNumber, &FileOffset, &Length, TimeShiftMode);
|
||||
int Index = -1;
|
||||
if (DeviceHasIBPTrickSpeed() && playDir == pdForward) {
|
||||
if (index->Get(readIndex + 1, &FileNumber, &FileOffset, NULL, &Length))
|
||||
Index = readIndex + 1;
|
||||
}
|
||||
else
|
||||
Index = index->GetNextIFrame(readIndex, playDir == pdForward, &FileNumber, &FileOffset, &Length, TimeShiftMode);
|
||||
if (Index >= 0) {
|
||||
if (!NextFile(FileNumber, FileOffset)) {
|
||||
readIndex = Index;
|
||||
|
3
player.h
3
player.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: player.h 1.19 2006/01/06 11:29:27 kls Exp $
|
||||
* $Id: player.h 1.20 2007/10/13 12:18:10 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __PLAYER_H
|
||||
@ -24,6 +24,7 @@ protected:
|
||||
bool DeviceSetCurrentAudioTrack(eTrackType Type) { return device ? device->SetCurrentAudioTrack(Type) : false; }
|
||||
bool DevicePoll(cPoller &Poller, int TimeoutMs = 0) { return device ? device->Poll(Poller, TimeoutMs) : false; }
|
||||
bool DeviceFlush(int TimeoutMs = 0) { return device ? device->Flush(TimeoutMs) : true; }
|
||||
bool DeviceHasIBPTrickSpeed(void) { return device ? device->HasIBPTrickSpeed() : false; }
|
||||
void DeviceTrickSpeed(int Speed) { if (device) device->TrickSpeed(Speed); }
|
||||
void DeviceClear(void) { if (device) device->Clear(); }
|
||||
void DevicePlay(void) { if (device) device->Play(); }
|
||||
|
Loading…
Reference in New Issue
Block a user