Example #1
0
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;
}
Example #2
0
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;
}