2012-08-02 64 views
0

我有一个gstreamer插件有两个输入,只有一个函数来处理它们。其中一个输入是char *,另一个是结构我可以测试它的数据类型的指针吗?

有没有办法测试输入缓冲区的数据类型?

喜欢的东西:

chain_function(GstBuffer) 
{ 
    if(GST_BUFFER_DATA(buffer) is mystruct) 
     do something... 
    elseif(GST_BUFFER_DATA(buffer) is char*) 
     do something else 
} 
+0

什么语言? – 2012-08-02 19:45:05

回答

0

如果是c。如果他们都有一个共同的层次++,你可以使用dynamic_cast

0

我从来没有真正使用gstreamer;但从documentation of GstBuffer,我想要使用的函数是gst_buffer_set_qdata()gst_buffer_get_qdata()来设置和获取GstBuffer上的元数据。 然后,您可以在代表该类型的每个相应GstBuffer上分配元数据,然后在您的函数中检索元数据并将它们匹配为其各自的数据类型。

0

你给这个插件提供了什么样的数据?无论如何,正如已经指出的那样,您将在输入(焊盘)上接收到GstBuffer对象。每个GstBuffer都有实际的数据+元数据。元数据是例如时间戳和持续时间,还有上限。大写字母描述数据格式。您可以检查上限以了解如何处理发送的数据。

如果你想发送的东西不是已经定义的格式之一(如音频/视频/文本),你需要设置自己的大小写,例如: “应用程序/ X-”。描述你想要做什么可能是一个好主意,因为这很少需要。