mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Taking EPG data from 'start + 5min' for instant recordings
This commit is contained in:
parent
aaf792357d
commit
3db87e806c
10
FORMATS
10
FORMATS
@ -45,10 +45,14 @@ Video Disk Recorder File Formats
|
|||||||
The fields in a timer definition have the following meaning (from left
|
The fields in a timer definition have the following meaning (from left
|
||||||
to right):
|
to right):
|
||||||
|
|
||||||
- Timer active (0 = inactive, 1 = active)
|
- Timer active (0 = inactive, 1 = active, 3 = instant recording)
|
||||||
Values larger than '1' can be used by external programs to mark active timers
|
Values other than these can be used by external programs to mark active timers
|
||||||
and recognize if the user has modified them. When a user modifes an active
|
and recognize if the user has modified them. When a user modifes an active
|
||||||
timer the 'active' field will be explicitly set to '1'.
|
timer the 'active' field will be explicitly set to '1' (or '0', respectively,
|
||||||
|
if the user deactivates the timer).
|
||||||
|
Note: in order to allow future extensibility, external programs using the
|
||||||
|
'active' parameter should only use the upper 16 bit of this 32 bit parameter
|
||||||
|
and leave the lower 16 bit untouched.
|
||||||
- Program number of the channel to record
|
- Program number of the channel to record
|
||||||
- Day of recording (in case of a repeating timer), either one or more of
|
- Day of recording (in case of a repeating timer), either one or more of
|
||||||
M------ = Monday
|
M------ = Monday
|
||||||
|
4
HISTORY
4
HISTORY
@ -1014,3 +1014,7 @@ Video Disk Recorder Revision History
|
|||||||
will receive a "First day" setting that skips the timer for this day.
|
will receive a "First day" setting that skips the timer for this day.
|
||||||
- Fixed closing all unused file descriptors when opening a pipe (thanks to
|
- Fixed closing all unused file descriptors when opening a pipe (thanks to
|
||||||
Werner Fink).
|
Werner Fink).
|
||||||
|
- Instant recordings now take the EPG data from the point in time at 5 minutes
|
||||||
|
from the start time of the recording. In order for this to work the 'active'
|
||||||
|
parameter of a timer now uses the second bit to indicate that this is an
|
||||||
|
"instant" recording (see FORMATS for details).
|
||||||
|
4
config.c
4
config.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: config.c 1.84 2002/02/17 11:37:05 kls Exp $
|
* $Id: config.c 1.85 2002/02/17 15:38:34 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -323,7 +323,7 @@ cTimer::cTimer(bool Instant)
|
|||||||
{
|
{
|
||||||
startTime = stopTime = 0;
|
startTime = stopTime = 0;
|
||||||
recording = pending = false;
|
recording = pending = false;
|
||||||
active = Instant;
|
active = Instant ? taActInst : taInactive;
|
||||||
cChannel *ch = Channels.GetByNumber(cDvbApi::CurrentChannel());
|
cChannel *ch = Channels.GetByNumber(cDvbApi::CurrentChannel());
|
||||||
channel = ch ? ch->number : 0;
|
channel = ch ? ch->number : 0;
|
||||||
time_t t = time(NULL);
|
time_t t = time(NULL);
|
||||||
|
8
config.h
8
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.96 2002/02/17 12:17:29 kls Exp $
|
* $Id: config.h 1.97 2002/02/17 15:41:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -119,6 +119,12 @@ public:
|
|||||||
bool Switch(cDvbApi *DvbApi = NULL, bool Log = true);
|
bool Switch(cDvbApi *DvbApi = NULL, bool Log = true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum eTimerActive { taInactive = 0,
|
||||||
|
taActive = 1,
|
||||||
|
taInstant = 2,
|
||||||
|
taActInst = (taActive | taInstant)
|
||||||
|
};
|
||||||
|
|
||||||
class cTimer : public cListObject {
|
class cTimer : public cListObject {
|
||||||
private:
|
private:
|
||||||
time_t startTime, stopTime;
|
time_t startTime, stopTime;
|
||||||
|
6
menu.c
6
menu.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: menu.c 1.154 2002/02/17 14:00:54 kls Exp $
|
* $Id: menu.c 1.155 2002/02/17 16:03:49 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -2436,10 +2436,12 @@ cRecordControl::~cRecordControl()
|
|||||||
delete fileName;
|
delete fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define INSTANT_REC_EPG_LOOKAHEAD 300 // seconds to look into the EPG data for an instant recording
|
||||||
|
|
||||||
bool cRecordControl::GetEventInfo(void)
|
bool cRecordControl::GetEventInfo(void)
|
||||||
{
|
{
|
||||||
cChannel *channel = Channels.GetByNumber(timer->channel);
|
cChannel *channel = Channels.GetByNumber(timer->channel);
|
||||||
time_t Time = timer->IsSingleEvent() ? timer->StartTime() + ((Setup.MarginStart * 2) + 1) * 60 : timer->StartTime() + (timer->StopTime() - timer->StartTime()) / 2;
|
time_t Time = timer->active == taActInst ? timer->StartTime() + INSTANT_REC_EPG_LOOKAHEAD : timer->StartTime() + (timer->StopTime() - timer->StartTime()) / 2;
|
||||||
for (int seconds = 0; seconds <= MAXWAIT4EPGINFO; seconds++) {
|
for (int seconds = 0; seconds <= MAXWAIT4EPGINFO; seconds++) {
|
||||||
{
|
{
|
||||||
cThreadLock ThreadLock;
|
cThreadLock ThreadLock;
|
||||||
|
Loading…
Reference in New Issue
Block a user