From 6a8c73967387631a09f65a908a6d3dcc442adc65 Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Thu, 19 Jan 2006 09:08:15 +0000 Subject: [PATCH] docs/design/part-sparsestreams.txt: Update sparse streams doc Original commit message from CVS: * docs/design/part-sparsestreams.txt: Update sparse streams doc --- ChangeLog | 5 +++++ docs/design/part-sparsestreams.txt | 16 ++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 702e6a1d3d..84f15eb496 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-01-19 Jan Schmidt + + * docs/design/part-sparsestreams.txt: + Update sparse streams doc, hopefully for greater clarity + 2006-01-18 Jan Schmidt * docs/design/part-events.txt: diff --git a/docs/design/part-sparsestreams.txt b/docs/design/part-sparsestreams.txt index 83922e10a8..4ff1bf6833 100644 --- a/docs/design/part-sparsestreams.txt +++ b/docs/design/part-sparsestreams.txt @@ -43,10 +43,14 @@ Details packets, and is effectively updating the minimum-timestamp for that stream. A demuxer can do this by sending an 'update' NEWSEGMENT with a new start time - to the subtitle pad. For example, every time the SCR in the MPEG data + to the subtitle pad. For example, every time the SCR in MPEG data advances more than 0.5 seconds, the MPEG demuxer can issue a NEWSEGMENT with (update=TRUE, start=SCR ). Downstream elements can then be aware not to expect any data older than the new start time. + + The same holds true for any element that knows the current position in the + stream - once the element knows that there is no more data to be presented + until time 'n' it can advance the start time of the current segment to 'n'. This technique can also be used, for example, to represent a stream of MIDI events spaced to a clock period. When there is no event present for @@ -70,12 +74,12 @@ Details * Send a NEWSEGMENT to restart playback with the next timestamp in the stream. - The upstream element performing the wait MUST be marked as LIVE element, to - prevent GStreamer from attempting to preroll the element during a still frame - wait. + The upstream element performing the wait must only do so when in the PLAYING + state. During PAUSED, the clock will not be running, and may not even have + been distributed to the element yet. - DRAIN is a new event that will block on the pad until all data downstream has - been played out. + DRAIN is a new event that will block on a src pad until all data downstream + has been played out. Flushing after completing the still wait is to ensure that data after the wait is played correctly. Without it, sinks will consider the first buffers