From 5a4eb3f1041b8a53826cebe570f9d201f3d35826 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 29 Feb 2004 18:00:00 +0100 Subject: =?UTF-8?q?Version=201.3.5=20-=20Fixed=20reading=20the=20EPG=20pre?= =?UTF-8?q?ferred=20language=20parameter=20from=20'setup.conf'.=20-=20Fixe?= =?UTF-8?q?d=20switching=20to=20a=20visible=20programme=20in=20case=20the?= =?UTF-8?q?=20current=20channel=20has=20neither=20=20=20a=20video=20nor=20?= =?UTF-8?q?an=20audio=20PID.=20-=20Fixed=20editing=20channels=20(SID=20now?= =?UTF-8?q?=20range=20checked)=20and=20creating=20new=20channels=20(NID,?= =?UTF-8?q?=20=20=20TID=20and=20RID=20are=20now=20set=20to=200).=20-=20Fix?= =?UTF-8?q?ed=20transponder=20handling=20to=20make=20it=20work=20with=20sa?= =?UTF-8?q?tellites=20that=20provide=20two=20=20=20transponders=20on=20the?= =?UTF-8?q?=20same=20frequency,=20with=20different=20polarization,=20like?= =?UTF-8?q?=20Hispasat=20=20=20at=20S30.0W=20(thanks=20to=20Thomas=20Bergw?= =?UTF-8?q?inkl=20for=20pointing=20this=20out).=20See=20man=20vdr(5)=20=20?= =?UTF-8?q?=20for=20details=20about=20the=20enhanced=20channel=20ID=20form?= =?UTF-8?q?at.=20-=20Since=20there=20appears=20to=20be=20no=20general=20so?= =?UTF-8?q?lution=20for=20the=20UPT=20error=20yet,=20a=20recording=20=20?= =?UTF-8?q?=20now=20initiates=20an=20"emergency=20exit"=20if=20the=20numbe?= =?UTF-8?q?r=20of=20UPT=20errors=20during=20one=20=20=20recording=20exceed?= =?UTF-8?q?s=2010=20(suggested=20by=20Gregoire=20Favre).=20Since=20the=20U?= =?UTF-8?q?PT=20error=20doesn't=20=20=20happen=20on=20my=20system,=20this?= =?UTF-8?q?=20has=20not=20been=20explicitly=20tested.=20=20=20The=20"preli?= =?UTF-8?q?minary=20fix"=20for=20the=20UPT=20error=20in=20VDR/dvbdevice.c?= =?UTF-8?q?=20has=20been=20disabled=20=20=20by=20default,=20since=20it=20m?= =?UTF-8?q?akes=20channel=20switching=20unpleasently=20slow.=20If=20you=20?= =?UTF-8?q?want=20=20=20to=20have=20that=20workaround=20back,=20you=20can?= =?UTF-8?q?=20uncomment=20the=20line=20=20=20//#define=20WAIT=5FFOR=5FLOCK?= =?UTF-8?q?=5FAFTER=5FTUNING=201=20=20=20in=20VDR/dvbdevice.c.=20-=20Adapt?= =?UTF-8?q?ed=20the=20'sky'=20plugin=20to=20use=20the=20actual=20channel?= =?UTF-8?q?=20IDs,=20and=20to=20fetch=20EPG=20data=20=20=20from=20www.bleb?= =?UTF-8?q?.org.=20-=20Limited=20automatic=20retuning=20to=20devices=20tha?= =?UTF-8?q?t=20actually=20provide=20the=20transponder=20=20=20(necessary?= =?UTF-8?q?=20for=20the=20'sky'=20plugin).=20-=20Fixed=20handling=20receiv?= =?UTF-8?q?ers=20in=20the=20'sky'=20plugin,=20so=20that=20a=20recording=20?= =?UTF-8?q?on=20the=20same=20=20=20channel=20won't=20interrupt=20an=20ongo?= =?UTF-8?q?ing=20Transfer=20Mode.=20-=20Added=20subtable=20ID=20and=20TSDT?= =?UTF-8?q?=20handling=20to=20'libsi'=20(thanks=20to=20Marcel=20Wiesweg).?= =?UTF-8?q?=20-=20Fixed=20some=20Russian=20OSD=20texts=20(thanks=20to=20Vy?= =?UTF-8?q?acheslav=20Dikonov).=20-=20Added=20the=20'running=20status'=20t?= =?UTF-8?q?o=20the=20EPG=20events.=20This=20is=20necessary=20for=20impleme?= =?UTF-8?q?nting=20=20=20the=20VPS=20function=20for=20recording.=20-=20Rem?= =?UTF-8?q?oved=20the=20obsolete=20'present'=20and=20'following'=20handlin?= =?UTF-8?q?g=20from=20the=20EPG=20data.=20-=20The=20EPG=20data=20is=20now?= =?UTF-8?q?=20always=20kept=20sorted=20chronologically=20in=20the=20intern?= =?UTF-8?q?al=20data=20=20=20structures.=20This=20also=20means=20that=20an?= =?UTF-8?q?y=20EPG=20data=20retrieved=20through=20the=20SVRDP=20=20=20comm?= =?UTF-8?q?and=20LSTE=20is=20guaranteed=20to=20be=20sorted=20by=20start=20?= =?UTF-8?q?time.=20-=20Now=20using=20the=20'running=20status'=20in=20the?= =?UTF-8?q?=20channel=20display,=20so=20that=20a=20programme=20=20=20that?= =?UTF-8?q?=20has=20an=20end=20time=20that=20is=20before=20the=20current?= =?UTF-8?q?=20time,=20but=20is=20still=20running,=20=20=20will=20still=20b?= =?UTF-8?q?e=20shown=20in=20the=20display=20(provided=20the=20broadcasters?= =?UTF-8?q?=20handle=20the=20=20=20'running=20status'=20flag=20correctly).?= =?UTF-8?q?=20This=20also=20applies=20to=20programmes=20that=20have=20=20?= =?UTF-8?q?=20a=20start=20time=20that=20is=20in=20the=20future,=20but=20ar?= =?UTF-8?q?e=20already=20running.=20-=20Implemented=20an=20"EPG=20linger?= =?UTF-8?q?=20time",=20which=20can=20be=20set=20to=20have=20older=20EPG=20?= =?UTF-8?q?information=20=20=20still=20displayed=20in=20the=20"Schedule"?= =?UTF-8?q?=20menu=20(thanks=20to=20Jaakko=20Hyv=C3=A4tti).=20-=20Added=20?= =?UTF-8?q?PDCDescriptor=20handling=20to=20'libsi'.=20-=20Implemented=20ha?= =?UTF-8?q?ndling=20the=20VPS=20timestamps=20(aka=20"Programme=20Identific?= =?UTF-8?q?ation=20Label")=20=20=20for=20full=20VPS=20support=20for=20time?= =?UTF-8?q?rs=20(provided=20the=20tv=20stations=20actually=20broadcast=20?= =?UTF-8?q?=20=20this=20information).=20The=20VPS=20time=20is=20displayed?= =?UTF-8?q?=20in=20the=20event=20info=20page=20if=20it=20exists=20=20=20an?= =?UTF-8?q?d=20is=20different=20than=20the=20event's=20start=20time.=20-?= =?UTF-8?q?=20Extended=20the=20SVDRP=20command=20LSTE=20to=20allow=20limit?= =?UTF-8?q?ing=20the=20listed=20data=20to=20a=20given=20=20=20channel,=20t?= =?UTF-8?q?he=20present=20or=20following=20events,=20or=20events=20at=20a?= =?UTF-8?q?=20given=20time=20(thanks=20to=20=20=20Thomas=20Heiligenmann).?= =?UTF-8?q?=20-=20Fixed=20a=20typo=20in=20libsi/si.h=20(thanks=20to=20St?= =?UTF-8?q?=C3=A9phane=20Est=C3=A9-Gracias).=20-=20Timers=20can=20now=20be?= =?UTF-8?q?=20set=20to=20use=20the=20VPS=20information=20to=20control=20re?= =?UTF-8?q?cording=20a=20programme.=20=20=20The=20new=20setup=20options=20?= =?UTF-8?q?"Recording/Use=20VPS"=20and=20"Recording/VPS=20margin",=20as=20?= =?UTF-8?q?well=20as=20=20=20the=20"VPS"=20option=20in=20the=20individual?= =?UTF-8?q?=20timers,=20can=20be=20used=20to=20control=20this=20feature=20?= =?UTF-8?q?=20=20(see=20MANUAL=20for=20details).=20=20=20Note=20that=20thi?= =?UTF-8?q?s=20feature=20will=20certainly=20need=20a=20lot=20of=20testing?= =?UTF-8?q?=20before=20it=20can=20be=20=20=20called=20"safe"!=20-=20The=20?= =?UTF-8?q?"Schedule"=20and=20"What's=20on=20now/next=3F"=20menus=20now=20?= =?UTF-8?q?have=20an=20additional=20column=20=20=20which=20displays=20info?= =?UTF-8?q?rmation=20on=20whether=20there=20is=20a=20timer=20defined=20for?= =?UTF-8?q?=20an=20event,=20=20=20whether=20an=20event=20has=20a=20VPS=20t?= =?UTF-8?q?ime=20that's=20different=20than=20its=20start=20time,=20and=20?= =?UTF-8?q?=20=20whether=20an=20event=20is=20currently=20running=20(see=20?= =?UTF-8?q?MANUAL=20under=20"The=20"Schedule"=20Menu"=20=20=20for=20detail?= =?UTF-8?q?s).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.vps | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 README.vps (limited to 'README.vps') diff --git a/README.vps b/README.vps new file mode 100644 index 0000000..2aa19ce --- /dev/null +++ b/README.vps @@ -0,0 +1,130 @@ +VPS (Video Programming Service) +=============================== + +Beginning with version 1.3.5 VDR supports the VPS method +of identifying programmes to record, and making sure they +are recorded in full length, even if they run longer than +initially specified or are shifted in time. + +Of course, the main prerequisite for this to work is that +the broadcasters actually provide the necessary data. In +particular these are + +- EPG data (well, obviously) +- the data for each event must contain the "Programme Identification Label" + descriptor, which contains the VPS timestamp for this programme +- the event data must provide and maintain the "Running Status" flag, + which indicates whether this programme is currently running or not. + +Currently only the German "Öffentlich Rechtliche" tv stations provide +the necessary VPS data, so this will work only for stations like "Das Erste", +"ZDF" and the like. + +Following is a step by step description of what happens for a VPS controlled +timer recording. First let's take a look at what the VDR user needs to do. + +VPS as seen by the VDR user: +---------------------------- + +When the VDR user sets up a timer that shall be under VPS control, there +are only two things that need to be done: + +1. Set the "Start" time to the actual VPS time as published in tv magazines. + Typically the VPS time is the same as the printed start time, unless + expliciltly specified otherwise. For instance, a tv magazine might print + + 20:15 Wetten, dass...? + (VPS = 20:14) + + In this case the timer would need to be set to 20:14. + +2. Set the "VPS" flag in the timer definition to "yes" in order to tell VDR + that this timer is to be handled under VPS control. This is no different + to old analog video recorders, where each timer has also had a separate + VPS flag. + +If the user sets up a timer from the "Schedule" menu, things are even simpler. +If the setup option "Recording/Use VPS" is set to "yes", any timer that is +programmed from an event that has VPS information will automatically be set +up as a VPS timer. + +IMPORTANT: In order for a recording to work under VPS control it is of +========== paramount importance that the start time is set to the actual + VPS time of that event, NOT some time a few minutes before the + event starts! If a timer is set to use VPS, and the time doesn't + match any event's VPS time, nothing will be recorded! + +VPS as seen by VDR: +------------------- + +The following things happen when VDR processes timers: + +- VDR regularly scans the EPG data and assigns events to the timers (see + cTimers::SetEvents() in VDR/timers.c). + This can be seen in the log file as + + timer 1 (15 1830-1900 'Neues') set to event 28.02.2004 18:30-18:59 (VPS: 28.02 18:30) 'neues' + +- When a VPS timer is asked whether it matches (i.e. whether a recording shall + be started), it checks whether it has an event assigned to it, and whether + that event has a running status of "starts in a few seconds" or "running" + (see cTimer::Matches(time_t t, bool Directly) in VDR/timers.c). This allows + the recording process to catch the entire programme, even if it runs longer + than initially advertised. It also works if it runs shorter or gets shifted. + +- When a VPS timer event is coming up (i.e. there are only a few minutes until + it starts, according to the related event data's start time - which may be + different than the VPS time!), VDR tunes a free DVB device to that transponder + (unless there is already a device tuned to that one) in order to make sure + that the event data (especially the "Running Status") will be up to date and + a change in the "Running status" flag will be seen immediately. This may + lead to the primary device being switched to a different channel if there + is no other free DVB device available. See the main program loop in VDR/vdr.c, + "Make sure VPS timers "see" their channel early enough:". + +Problems: +--------- + +- In order for a VPS controlled timer to function properly, it needs to "see" + any changes in the running status of its event. This means that one of the + DVB devices needs to be tuned to the proper transponder some time before + the actual start time of the event. However, this may result in an other + timer (with lower priority) to be stopped, because it occupies the DVB device + and has it tuned to a different transponder. + See "// Make sure VPS timers "see" their channel early enough:" in VDR/vdr.c. +TODO: + Something needs to be done to prevent two timers from repeatedly switching + the device between channels in such a situation. + +- If, for some reason, the driver doesn't deliver any more section data, a + VPS controlled timer will never see that the programme has started (or ended). +TODO: + Therefore some mechanism needs to be implemented that makes absolutely sure + we continuously receive at least the event data for the present event. + +Caveats: +-------- + +Apparently VPS in digital broadcasting is still in an early state. Only few +tv stations actually support it, and other tv stations don't even handle the +"Running Status" correctly (which, by itself, would already be helpful, even +without VPS). + +Here's a list of things that are apparently done wrong by the individual +stations: + +- The German "Öffentlich Rechtliche" tv stations, although supporting VPS, + don't switch the "Running Status" of an upcoming broadcast to "starts in + a few seconds", but rather go directly from "unknown" or "not running" to + "running". This may result in a recording that misses the first few seconds + of the programme. +- The RTL group handles EPG events in a rather random way. They change event + IDs randomly, and switch the "Running Status" flag at times that are only + losely related to the actual events. For instance, if the "RTL aktuell" + programme starts at 18:45, they switch that event to "running" at about + 18:43. Or, even worse, if "Wer wird Millionär?" runs until 21:15, they + switch the _next_ programme to running (which implicitly set "Wer wird + Millionär?" to "not running) at around 21:11 - so anybody using that + information to control recording would not see the end of that programme. + +... more following as it comes up... -- cgit v1.2.3