前言:

gstappsrc 可以用作作为多种数据类型的src element,包括音视频直播点播流。




数据队列:

gstappsrc 内部有一个数据队列,使用条件变量进行通知管理,这个队列可以按照字节数和时间进行容量计算。

数据队列有一系列监管属性,包括队列里的数据达到队列容量的某个高位百分比的时候会触发 enough-data 信号,数据达到队列容量的某个低位百分比的时候触发 need-data 信号。等等。




数据队列满的处理方式:

提供 leaky-type 属性来确定改如何处理队列慢的情况下后续到来的 gstbuffer,有三种值。

none 为默认值代表不特殊处理,当block属性为true且leaky-type为none时,阻塞等待队列有可用空间,当block属性为false且leaky-type为none时,push_buffer接口返回error给调用者,让调用者决定如何处理当前的buffer。

另外两种分别是 GST_APP_LEAKY_TYPE_UPSTREAM和 GST_APP_LEAKY_TYPE_DOWNSTREAM,这两种方式都会再 block 为 false 的情况下把数据覆盖到队列里,一种是覆盖最新的数据,另一种是覆盖最老的数据。

leaky-type 需要结合 block 属性使用。