Posted: October 30, 2012 01:48 by cpratt
The OCAP DVR specification states that (for recording playback) "If the playback location is the same as the recording point (playing back the live point), the implementation SHALL display the broadcast stream rather than the stream coming off the storage medium." And for time-shift playback, ""
There are a variety of issues with the "switch to live" case when playing back a RecordedService. The recently-filed IT-688 touches on one aspect (with ScottD addressing issues raised in the provided patch). But there are some other long-standing issues regarding this functionality. Most notably, a ServiceContext selection session is considered to be limited to one JavaTV Service object. But RecordedServices and broadcast Services ("live" Services) are different objects. So modeling the switch to live at the higher levels of the stack is problematic. Secondly, switching from the recording to the live stream (or vise-versa) results in skipping over whatever content is buffered but not recorded/playable on disk. So the user experience is compromised.
The proposal is to alter the MPEOS contract to add a requirement regarding the delay performance and disable the switch-to-live functionality for RecordedService playback. This doesn't alter the method calls, just the performance requirements of playback.
Change to mpeos_dvr.h:mpeos_dvrRecordingPlayStart():
/** * Starts a new DVR playback session for a given recording name. A new playback handle * is returned if the call is successful. The recording will start playing back at the * normal rate (1.0) at the given media time. * + * Note: If the given recording is being actively recorded into (e.g. via + * mpeos_dvrTsbConvertStart()) and playback is initiated from the end of the + * recording or navigation encounters the end of the recording in the forward + * direction, the content being recorded should be presented with minimal delay from + * the source (comparable to the presentation delay seen with mpeos_mediaDecode()). + *
Change to mpeos_dvr.h: mpeos_dvrTsbPlayStart():
/** * Starts a new DVR playback from a given time shift buffer. A new playback handle is * returned if the call is successful. The recording will start playing back at the * normal rate (1.0) at the given position. * + * Note: If the given TSB is being actively recorded into (e.g. via + * mpeos_dvrTsbBufferingStart()) and playback is initiated from the end of the + * TSB or navigation encounters the end of the TSB in the forward direction, the + * content being recorded should be presented with minimal delay from the source + * (comparable with the presentation delay seen with mpeos_mediaDecode()). + *