[gst-devel] On writing GStreamer plugins for OpenCV video surveillance facility

Andrey Nechypurenko andreynech at googlemail.com
Sun Jun 13 02:38:18 CEST 2010


Hi Giorgio,

> I've already worked with gst-opencv project. Plugins defined in gst-opencv
> wraps some of the C APIs of OpenCV. I need to work with some OpenCV's C++
> APIs and classes that do not have a C correspondence (and are documented at
> all, but this is a different problem).

AFAIK, there should not be any problems mixing C/C++ with gstreamer.
It just a matter of adding ' extern "C" ' in the proper places :-) .

I did not try it myself but I think it should be possible to compile
whole plugin with C++ but declare functions expected by gstreamer
infrastructure as extern "C". As alternative (and I preffere this
way), it should be possible to define C-style interface to your C++
algorithms and invoke it where appropriate. For example:

extern "C" void MyMegaProcessingFunction(...)
{
  OpenCVClassA a;
  a.doSomething();
}

and compile it with C++. Then, for in other file compiled with C:

gst_your_plugin_chain(GstPad * pad, GstBuffer * buf)
{
  MyMegaProcessingFunction(buf)
}

Once again, this is just my thoughs and I did not test it. Maybe there
are some other problems which I did not realize. You are welcome to
try it and tell whether it works ;-) .


Regards,
Andrey.




More information about the gstreamer-devel mailing list