为什么自定义元素无法链接到交错,而链接到filesinks工作正常?

时间:2015-01-19 15:23:18

标签: pipeline gstreamer custom-element

我有自己的自定义元素,我们称之为MyElement。 它有请求接收垫,有时还有源垫。当一个源垫 创建后,MyElement会发出一个可被用户拦截的信号。在使用此信号注册的回调中,用户可以将新的源垫与其他垫连接起来。

问题是,当我尝试直接或通过标识元素将其源焊盘链接到filesink时,MyElement工作正常。但是,当我尝试将源焊盘链接到交错元素时,管道发生故障。

当我使用' dump'将MyElement的源连接到身份元素时,会发生类似的错误。属性设置为true。

我的元素/管道丢失了什么,这会使交错管道失败?

1 个答案:

答案 0 :(得分:0)

identity和filesink的上限类型为" any"。你的垫子有盖子吗?

 Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      ANY

Interleave有以下上限:

Pad Templates:
  SINK template: 'sink%d'
    Availability: On request
      Has request_new_pad() function: gst_interleave_request_new_pad
    Capabilities:
      audio/x-raw-int
                   rate: [ 1, 2147483647 ]
               channels: 1
             endianness: { 1234, 4321 }
                  width: { 8, 16, 24, 32 }
                  depth: [ 1, 32 ]
                 signed: true
      audio/x-raw-float
                   rate: [ 1, 2147483647 ]
               channels: 1
             endianness: { 1234, 4321 }
                  width: { 32, 64 }

  SRC template: 'src'
    Availability: Always
    Capabilities:
      audio/x-raw-int
                   rate: [ 1, 2147483647 ]
               channels: [ 1, 2147483647 ]
             endianness: { 1234, 4321 }
                  width: { 8, 16, 24, 32 }
                  depth: [ 1, 32 ]
                 signed: true
      audio/x-raw-float
                   rate: [ 1, 2147483647 ]
               channels: [ 1, 2147483647 ]
             endianness: { 1234, 4321 }
                  width: { 32, 64 }

如果您尚未阅读GStreamer的调试选项,可能需要阅读。很多都可能出错。

How do I view gstreamer debug output?