Commit 7512120e authored by Sebastian Dröge's avatar Sebastian Dröge 🍵

rtspsrc: Implement ONVIF backchannel support via TCP

parent befa41cd
......@@ -2851,9 +2851,48 @@ gst_rtspsrc_push_backchannel_buffer (GstRTSPSrc * src, guint id,
goto out;
}
g_signal_emit_by_name (stream->rtpsrc, "push-sample", sample, &res);
GST_DEBUG_OBJECT (src, "sent backchannel RTP sample %p: %s", sample,
gst_flow_get_name (res));
if (src->interleaved) {
GstBuffer *buffer;
GstMapInfo map;
guint8 *data;
guint size;
GstRTSPResult ret;
GstRTSPMessage message = { 0 };
GstRTSPConnInfo *conninfo;
buffer = gst_sample_get_buffer (sample);
gst_buffer_map (buffer, &map, GST_MAP_READ);
size = map.size;
data = map.data;
gst_rtsp_message_init_data (&message, stream->channel[0]);
/* lend the body data to the message */
gst_rtsp_message_take_body (&message, data, size);
if (stream->conninfo.connection)
conninfo = &stream->conninfo;
else
conninfo = &src->conninfo;
GST_DEBUG_OBJECT (src, "sending %u bytes backchannel RTP", size);
ret = gst_rtspsrc_connection_send (src, conninfo, &message, NULL);
GST_DEBUG_OBJECT (src, "sent backchannel RTP, %d", ret);
/* and steal it away again because we will free it when unreffing the
* buffer */
gst_rtsp_message_steal_body (&message, &data, &size);
gst_rtsp_message_unset (&message);
gst_buffer_unmap (buffer, &map);
res = GST_FLOW_OK;
} else {
g_signal_emit_by_name (stream->rtpsrc, "push-sample", sample, &res);
GST_DEBUG_OBJECT (src, "sent backchannel RTP sample %p: %s", sample,
gst_flow_get_name (res));
}
out:
gst_sample_unref (sample);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment