gstreamer元件状态
GST_STATE_NULL: 默认状态
该状态将会回收所有被该元件占用的资源。
GST_STATE_READY: 准备状态
元件会得到所有所需的全局资源,这些全局资源将被通过该元件的数据流所使用。例如打开设备、分配缓存等。但在这种状态下,数据流
仍未开始被处 理,所以数据流的位置信息应该自动置0。如果数据流先前被打开过,它应该被关闭,并且其位置信息、特性信息应该被重
新置为初始状态。
GST_STATE_PAUSED: 暂停状态
在这种状态下,元件已经对流开始了处理,但此刻暂停了处理。因此该状态下元件可以修改流的位置信息,读取或者处理流数据,以及一
旦状态变为 PLAYING,流可以重放数据流。这种情况下,时钟是禁止运行的。总之, PAUSED 状态除了不能运行时钟外,其它与 PLAYING
状态一模一样。处于 PAUSED 状态的元件会很快变换到 PLAYING 状态。举例来说,视频或音频输出元件会等待数据的到来,并将它们压入
队列。一旦状态改变,元件就会处理接收到的数据。同样,视频接收元件能够播放数据的第 一帧。(因为这并不会影响时钟)。自动加载器
(Autopluggers)可以对已经加载进管道的插件进行这种状态转换。其它更多的像codecs或者 filters这种元件不需要在这个状态上做任
何事情。
GST_STATE_PLAYING: 运行状态
PLAYING 状态除了当前运行时钟外,其它与 PAUSED 状态一模一样。你可以通过函数gst_element_set_state()来改变一个元件的状态。你
如果显式地改变一个元件的状态,GStreamer可能会 使它在内部经过一些中间状态。例如你将一个元件从 NULL 状态设置为 PLAYING 状态
,GStreamer在其内部会使得元件经历过 READY 以及 PAUSED 状态。当处于GST_STATE_PLAYING 状态,管道会自动处理数据。它们不需要
任何形式的迭代。 GStreamer 会开启一个新的线程来处理数据。GStreamer 同样可以使用 GstBus在管道线程和应用程序现成间交互信息。