Gstreamer流 翻译自part-streams.txt
Streams
----------------------
这篇文档描述在流线程中从一个元素传递到另一个元素的对象。
Stream objects
~~~~~~~~~~~~~~
如下的对象可能会出现在流线程中。
- events
- NEW_SEGMENT (NS)
- EOS (EOS) *
- TAG (T)
- buffers (B) *
*号标记的对象表示这些对象需要被同步到时钟。
Typical stream
~~~~~~~~~~~~~~
一个典型的流以一个标记了buffer有效时间范围的newsegment event开始,发送了newsegment event后,数据buffer就一个接一个被发送 ,最后一个buffer后,EOS标记了流的结束。在EOS event后,不会再有buffer被处理。如下图:
+--+ +-++-+ +-+ +---+
|NS| |B||B| ... |B| |EOS|
+--+ +-++-+ +-+ +---+
1)NEW_SEGMENT, rate, start/stop, time
- start,stop标记了buffer的有效时间。
- time标记了stream time.
- rate标记了待请求的播放速率.
- applied_rate标记了已经采用的播放速率.
2) N buffers
- displayable buffers 的时间戳应于start和stop之间,范围之外的buffer应该被丢弃。
- running_time:
if (NS.rate > 0.0)
running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
else
running_time = (NS.stop - B.timestamp) / NS.abs_rate + NS.accum
- stream_time:
stream_time = (B.timestamp - NS.start) * NS.abs_applied_rate + NS.time
stream_time介于0和媒体长度之间.
3) EOS
- 标记数据的结束。
Streams
----------------------
这篇文档描述在流线程中从一个元素传递到另一个元素的对象。
Stream objects
~~~~~~~~~~~~~~
如下的对象可能会出现在流线程中。
- events
- NEW_SEGMENT (NS)
- EOS (EOS) *
- TAG (T)
- buffers (B) *
*号标记的对象表示这些对象需要被同步到时钟。
Typical stream
~~~~~~~~~~~~~~
一个典型的流以一个标记了buffer有效时间范围的newsegment event开始,发送了newsegment event后,数据buffer就一个接一个被发送 ,最后一个buffer后,EOS标记了流的结束。在EOS event后,不会再有buffer被处理。如下图:
+--+ +-++-+ +-+ +---+
|NS| |B||B| ... |B| |EOS|
+--+ +-++-+ +-+ +---+
1)NEW_SEGMENT, rate, start/stop, time
- start,stop标记了buffer的有效时间。
- time标记了stream time.
- rate标记了待请求的播放速率.
- applied_rate标记了已经采用的播放速率.
2) N buffers
- displayable buffers 的时间戳应于start和stop之间,范围之外的buffer应该被丢弃。
- running_time:
if (NS.rate > 0.0)
running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
else
running_time = (NS.stop - B.timestamp) / NS.abs_rate + NS.accum
- stream_time:
stream_time = (B.timestamp - NS.start) * NS.abs_applied_rate + NS.time
stream_time介于0和媒体长度之间.
3) EOS
- 标记数据的结束。