依赖于其他属性的Gstreamer元素属性

依赖于其他属性的Gstreamer元素属性,gstreamer,Gstreamer,我正在编写一个gstreamer元素,我想添加一个属性,该属性选择元素将用于执行其功能的算法 gst-launch ... ! myelement algo=1 ! ... 现在,假设我有两个alghoritms,我需要能够为每个算法指定不同的参数,当然我希望用户能够通过属性设置这些参数 例如,算法1将使用名为x的属性: gst-launch ... ! myelement algo=1 x=10 ! ... 但是算法2将使用一个名为y的属性(它不需要x): 本质上,某些属性的意义仅取决于另

我正在编写一个gstreamer元素,我想添加一个属性,该属性选择元素将用于执行其功能的算法

gst-launch ... ! myelement algo=1 ! ...
现在,假设我有两个alghoritms,我需要能够为每个算法指定不同的参数,当然我希望用户能够通过属性设置这些参数

例如,算法1将使用名为x的属性:

gst-launch ... ! myelement algo=1 x=10 ! ...
但是算法2将使用一个名为y的属性(它不需要x):

本质上,某些属性的意义仅取决于另一个属性的值

处理这个问题的标准方法是什么?我是否应该添加属性“x”和“y”,并记录“x”仅在algo=1时起作用,“y”仅在algo=2时起作用


或者,我是否应该忘记“algo”属性并创建两个不同的元素?

在gstreamer中寻找处理事情的标准方法,检查其他元素的功能总是一个好主意。这种情况下的一个很好的例子是“multifilesink”元素,它有几种处理文件分割的方法;查看属性(在cmdline上运行gst-inspect-multifilesink),您可以看到属性“max-file-size”只有在“next-file”属性设置为4时才有意义,因此其描述用于指定它:

“最大文件大小:以最大文件大小模式启动新文件之前的最大文件大小”

gst-launch ... ! myelement algo=2 y=20 ! ...