Allow instant recording to record only present event
Commit Message
On 05/20/2012 02:45 PM, Klaus Schmidinger wrote:
> On 20.05.2012 13:41, Matti Lehtimäki wrote:
>> On 05/20/2012 02:15 PM, Klaus Schmidinger wrote:
>>> One more thing comes to mind: you also need to make sure that
>>> the 'day' is set to the day of the EPG event. Just in case it
>>> is past midnight already and the event started "yesterday" ;-)
>>
>> Indeed that was missing. I think setting the day is relevant only if
>> VPS is used since in otherwise the start time is the current time not
>> the start time of the event. Or should the start time be set to that
>> of the event if VPS is not used?
>
> Well, that's a matter of taste.
> For VPS it is relevant, otherwise it's up to you.
Attached is a new version of the patch with correct day always set when
VPS is used. Could this patch be included in next version of VDR?
Comments
On 20.05.2012 13:55, Matti Lehtimäki wrote:
> On 05/20/2012 02:45 PM, Klaus Schmidinger wrote:
>> On 20.05.2012 13:41, Matti Lehtimäki wrote:
>>> On 05/20/2012 02:15 PM, Klaus Schmidinger wrote:
>>>> One more thing comes to mind: you also need to make sure that
>>>> the 'day' is set to the day of the EPG event. Just in case it
>>>> is past midnight already and the event started "yesterday" ;-)
>>>
>>> Indeed that was missing. I think setting the day is relevant only if
>>> VPS is used since in otherwise the start time is the current time not
>>> the start time of the event. Or should the start time be set to that
>>> of the event if VPS is not used?
>>
>> Well, that's a matter of taste.
>> For VPS it is relevant, otherwise it's up to you.
>
> Attached is a new version of the patch with correct day always set when VPS is used. Could this patch be included in next version of VDR?
I guess so...
Klaus
@@ -3114,7 +3114,7 @@
Add(new cMenuEditIntItem( tr("Setup.Recording$VPS margin (s)"), &data.VpsMargin, 0));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Mark instant recording"), &data.MarkInstantRecord));
Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord)));
- Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"), &data.InstantRecordTime, 1, MAXINSTANTRECTIME));
+ Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"), &data.InstantRecordTime, 0, MAXINSTANTRECTIME, tr("Setup.Recording$present event")));
Add(new cMenuEditIntItem( tr("Setup.Recording$Max. video file size (MB)"), &data.MaxVideoFileSize, MINVIDEOFILESIZE, MAXVIDEOFILESIZETS));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Split edited files"), &data.SplitEditedFiles));
Add(new cMenuEditStraItem(tr("Setup.Recording$Delete timeshift recording"),&data.DelTimeshiftRec, 3, delTimeshiftRecTexts));
@@ -1071,6 +1071,9 @@
msgid "Setup.Recording$Instant rec. time (min)"
msgstr "Pikatallennuksen kesto (min)"
+msgid "Setup.Recording$present event"
+msgstr "nykyinen tapahtuma"
+
msgid "Setup.Recording$Max. video file size (MB)"
msgstr "Suurin tiedostokoko (Mt)"
@@ -41,8 +41,34 @@
day = SetTime(t, 0);
weekdays = 0;
start = now->tm_hour * 100 + now->tm_min;
- stop = now->tm_hour * 60 + now->tm_min + Setup.InstantRecordTime;
- stop = (stop / 60) * 100 + (stop % 60);
+ stop = 0;
+ if (!Setup.InstantRecordTime) {
+ cSchedulesLock SchedulesLock;
+ const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock);
+ if (Schedules && channel) {
+ const cSchedule *Schedule = Schedules->GetSchedule(channel);
+ if (Schedule) {
+ const cEvent *Event = Schedule->GetPresentEvent();
+ if (Event) {
+ time_t tstart = Event->StartTime();
+ if (Event->Vps() && Setup.UseVps) {
+ SetFlags(tfVps);
+ tstart = Event->Vps();
+ day = SetTime(tstart, 0);
+ struct tm *time = localtime_r(&tstart, &tm_r);
+ start = time->tm_hour * 100 + time->tm_min;
+ }
+ time_t tstop = tstart + Event->Duration() + Setup.MarginStop * 60;
+ struct tm *time = localtime_r(&tstop, &tm_r);
+ stop = time->tm_hour * 100 + time->tm_min;
+ }
+ }
+ }
+ }
+ if (!stop) {
+ stop = now->tm_hour * 60 + now->tm_min + (Setup.InstantRecordTime ? Setup.InstantRecordTime : 180);
+ stop = (stop / 60) * 100 + (stop % 60);
+ }
if (stop >= 2400)
stop -= 2400;
priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;