No, I have done before ,but it doesn’t work.
I am trying gstprobe now.
gst-launch-1.0 nvarguscamerasrc ! ‘video/x-raw(memory:NVMM), width=(int)1280, height=(int)960, format=(string)NV12, framerate=(fraction)30/1’ ! queue ! tee name=t ! queue ! nvvidconv ! ‘video/x-raw, width=(int)1280, height=(int)960, format=(string)RGBA, framerate=(fraction)30/1’ ! fakesink t. ! queue ! nvv4l2h264enc ! h264parse ! mpegtsmux ! udpsink
I insert a probe in the sinkpad of fakesink.
It also give error info but memory dosen’t overload.
static GstPadProbeReturn
pic_fetch (GstPad *pad,
GstPadProbeInfo *info,
VideoStream *ptr)
{
GstMapInfo map;
GstBuffer *buffer;
buffer = GST_PAD_PROBE_INFO_BUFFER (info);
if (buffer == NULL)
return GST_PAD_PROBE_OK;
buffer = gst_buffer_make_writable (buffer);
GstBuffer * app_buffer = gst_buffer_copy(buffer);
ptr->freq++;
if(ptr->freq == 3)
{
ptr->freq = 0;
}
else{
cout<<"skip the frame"<<endl;
return GST_PAD_PROBE_OK;
}
// if (gst_buffer_map (buffer, &map, GST_MAP_WRITE)) {
// // cout<<"map info size : "<<gst_buffer_get_size(app_buffer)<<endl;
// }
GstMapInfo map_pic;
if (gst_buffer_map (app_buffer, &map_pic, GST_MAP_WRITE)) {
cout<<"map info size : "<<gst_buffer_get_size(app_buffer)<<endl;
}
cv::Mat img(960 ,1280, CV_8UC4, (char*)map_pic.data);
if(!img.data)
{
cout<<"error while load image"<<endl;
return GST_PAD_PROBE_DROP;
}
else{
cout<<"load image succesfully"<<endl;
}
cout<<"before unmap"<<endl;
gst_buffer_unmap(app_buffer, &map_pic);
gst_buffer_unref(app_buffer);
// gst_buffer_unref(buffer);
// GST_PAD_PROBE_INFO_DATA (info) = buffer;
return GST_PAD_PROBE_OK;
}
Above is my pronbe function.
And I get error message below:
(jo_fpv_node:11162): GStreamer-CRITICAL **: 18:15:28.021: gst_buffer_get_sizes_range: assertion ‘GST_IS_BUFFER (buffer)’ failed
(jo_fpv_node:11162): GStreamer-CRITICAL **: 18:15:28.021: gst_mini_object_unref: assertion ‘GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0’ failed
skip the frame
(jo_fpv_node:11162): GStreamer-CRITICAL **: 18:15:28.055: gst_buffer_get_sizes_range: assertion ‘GST_IS_BUFFER (buffer)’ failed
(jo_fpv_node:11162): GStreamer-CRITICAL **: 18:15:28.056: gst_mini_object_unref: assertion ‘GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0’ failed
skip the frame
(jo_fpv_node:11162): GStreamer-CRITICAL **: 18:15:28.088: gst_buffer_get_sizes_range: assertion ‘GST_IS_BUFFER (buffer)’ failed
(jo_fpv_node:11162): GStreamer-CRITICAL **: 18:15:28.088: gst_mini_object_unref: assertion ‘GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0’ failed
map info size : 4915200
load image succesfully
before unmap