我正在写一个gstreamer元素,我想添加一个属性来选择元素用来执行其功能的算法。
gst-launch ... ! myelement algo=1 ! ...
现在,假设我有两个alghoritms,我需要能够为每个算法指定不同的参数,当然我希望用户能够通过属性设置这些参数。
例如,算法1将使用名为x:
的属性gst-launch ... ! myelement algo=1 x=10 ! ...
但算法2会使用名为y的属性(并且它不需要x):
gst-launch ... ! myelement algo=2 y=20 ! ...
基本上,某些属性的含义仅取决于另一个属性的值。
处理此问题的标准方法是什么?我应该添加属性' x'并且' y'并记录' x'仅在algo = 1且' y'只有当algo = 2时才有效?
或者,我应该忘记' algo'财产和制造两个不同的元素?
答案 0 :(得分:2)
要在gstreamer中寻找处理事物的标准方法,最好还是检查其他元素的作用。这种情况的一个很好的例子可能是元素'multifilesink',它有几种处理文件分割的方法;查看属性(在cmdline上运行gst-inspect multifilesink),您可以看到属性“max-file-size”仅在“next-file”属性设置为4时才有意义,因此其描述用于指定它:
“max-file-size:在max-size模式下启动新文件之前的最大文件大小”