static GstBuffer * create_rtcp_app (guint32 ssrc, guint count) { GInetAddress *inet_addr_0; guint16 port = 5678 + count; GSocketAddress *socket_addr_0; GstBuffer *rtcp_buffer; GstRTCPPacket *rtcp_packet = NULL; GstRTCPBuffer rtcp = GST_RTCP_BUFFER_INIT; inet_addr_0 = g_inet_address_new_from_string ("192.168.1.1"); socket_addr_0 = g_inet_socket_address_new (inet_addr_0, port); g_object_unref (inet_addr_0); rtcp_buffer = gst_rtcp_buffer_new (1400); gst_buffer_add_net_address_meta (rtcp_buffer, socket_addr_0); g_object_unref (socket_addr_0); /* need to begin with rr */ gst_rtcp_buffer_map (rtcp_buffer, GST_MAP_READWRITE, &rtcp); rtcp_packet = g_slice_new0 (GstRTCPPacket); gst_rtcp_buffer_add_packet (&rtcp, GST_RTCP_TYPE_RR, rtcp_packet); gst_rtcp_packet_rr_set_ssrc (rtcp_packet, ssrc); g_slice_free (GstRTCPPacket, rtcp_packet); /* useful to make the rtcp buffer valid */ rtcp_packet = g_slice_new0 (GstRTCPPacket); gst_rtcp_buffer_add_packet (&rtcp, GST_RTCP_TYPE_APP, rtcp_packet); g_slice_free (GstRTCPPacket, rtcp_packet); gst_rtcp_buffer_unmap (&rtcp); return rtcp_buffer; }
static GstBuffer * make_buffer (gboolean have_sr, gint rr_count, gboolean have_sdes, gboolean have_bye) { GstRTCPPacket packet; GstBuffer *buf = gst_rtcp_buffer_new (1024); gint i; GstRTCPBuffer rtcpbuffer = GST_RTCP_BUFFER_INIT; gst_rtcp_buffer_map (buf, GST_MAP_READWRITE, &rtcpbuffer); if (have_sr) { gst_rtcp_buffer_add_packet (&rtcpbuffer, GST_RTCP_TYPE_SR, &packet); gst_rtcp_packet_sr_set_sender_info (&packet, 132132, 12, 12, 12, 12); } if (rr_count >= 0 || !have_sr) { gst_rtcp_buffer_add_packet (&rtcpbuffer, GST_RTCP_TYPE_RR, &packet); gst_rtcp_packet_rr_set_ssrc (&packet, 132132); for (i = 0; i < rr_count; i++) gst_rtcp_packet_add_rb (&packet, 123124+i, 12, 12, 21, 31, 41, 12); } if (have_sdes) { gst_rtcp_buffer_add_packet (&rtcpbuffer, GST_RTCP_TYPE_SDES, &packet); gst_rtcp_packet_sdes_add_item (&packet, 123121); gst_rtcp_packet_sdes_add_entry (&packet, GST_RTCP_SDES_EMAIL, 10, (guint8 *) "*****@*****.**"); gst_rtcp_packet_sdes_add_entry (&packet, GST_RTCP_SDES_CNAME, 10, (guint8 *) "*****@*****.**"); gst_rtcp_packet_sdes_add_entry (&packet, GST_RTCP_SDES_PHONE, 10, (guint8 *) "11-21-2-11"); } if (have_bye) { gst_rtcp_buffer_add_packet (&rtcpbuffer, GST_RTCP_TYPE_BYE, &packet); gst_rtcp_packet_bye_add_ssrc (&packet, 132123); gst_rtcp_packet_bye_set_reason (&packet, "allo"); } gst_rtcp_buffer_unmap (&rtcpbuffer); return buf; }