Data structures 我可以测试一个指针吗';什么是数据类型?

Data structures 我可以测试一个指针吗';什么是数据类型?,data-structures,if-statement,casting,compare,gstreamer,Data Structures,If Statement,Casting,Compare,Gstreamer,我有一个gstreamer插件,有两个输入,只有一个函数来处理它们。其中一个输入是char*,另一个是struct 有没有办法测试输入缓冲区的数据类型 比如: chain_function(GstBuffer) { if(GST_BUFFER_DATA(buffer) is mystruct) do something... elseif(GST_BUFFER_DATA(buffer) is char*) do something else } 如果是C+

我有一个gstreamer插件,有两个输入,只有一个函数来处理它们。其中一个输入是char*,另一个是struct

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

比如:

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

如果是C++,如果共享一个公共层次结构,可以使用<强> <强>。

< P>我从来没有真正使用过gStuffER;但是从中,我猜要使用的函数是
gst\u buffer\u set\u qdata()
gst\u buffer\u get\u qdata()
来设置和获取GstBuffer上的元数据。
然后,您将在每个表示该类型的GstBuffer上分配元数据,然后在您的函数中检索元数据并将其与各自的数据类型相匹配。

您将向插件提供什么类型的数据?无论如何,正如已经指出的,您将在输入(pad)上接收GstBuffer对象。每个GstBuffer都有实际的数据+元数据。元数据包括时间戳和持续时间,但也包括上限。大写字母描述了数据格式。您可以检查CAP以了解如何处理发送的数据

如果要发送的内容不是已定义的格式之一(如音频/视频/文本),则需要设置自己的上限,例如“application/x-”。描述你想做什么可能是个好主意,因为这很少需要