Appsrc internal dataflow error.

dtmoodie dtmoodie at gmail.com
Sat Aug 29 14:01:04 PDT 2015


I'm trying to stream images from opencv to a gstreamer pipeline.

My caps are as follows:
GstCaps* caps = gst_caps_new_simple("video/x-raw",
	"format", G_TYPE_STRING, "RGB24",
	"width", G_TYPE_INT, imgSize.width,
	"height", G_TYPE_INT, imgSize.height,
	"framerate", GST_TYPE_FRACTION, 15, 1,
	"pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
	NULL);

I've also tried with format = RGB.
red_mask     = 0x00ff0000
blue_mask   = 0x000000ff
green_mask = 0x0000ff00
endianness

Some examples I'm going off of:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-caps-api.html
http://www.imgportal.net/home/wp-content/uploads/maris-script1.cpp

My desired pipeline:
appsrc name=mysource ! openh264enc ! rtph264pay config-interval=1 pt=96 !
udpsink host=127.0.0.1 port=8004

Pushing data onto the appsrc:

cv::Mat frameimage(user_data->imgSize, CV_8UC3);
static GstClockTime timestamp = 0;
GstBuffer *buffer;
guint buffersize;
GstFlowReturn ret;
GstMapInfo info;
buffersize = frameimage.cols * frameimage.rows * frameimage.channels();
buffer = gst_buffer_new_and_alloc(buffersize);
if (gst_buffer_map(buffer, &info, (GstMapFlags)GST_MAP_WRITE)) {
	memcpy(info.data, frameimage.data, buffersize);
	gst_buffer_unmap(buffer, &info);
}
else
{
	BOOST_LOG_TRIVIAL(error) << "Unable to map image data to buffer";
}
ret = gst_app_src_push_buffer((GstAppSrc*)user_data->source_OpenCV, buffer);
if (ret != GST_FLOW_OK) {
	BOOST_LOG_TRIVIAL(error) << "something wrong in cb_need_data";
	g_main_loop_quit(user_data->glib_MainLoop);
}

Full source can be found here:
https://github.com/dtmoodie/EagleEye/blob/Dev/Plugins/GStreamer/src/gstreamer.cpp




--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Appsrc-internal-dataflow-error-tp4673397.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list