All pastes #732791 Raw Edit

Someone

public text v1 · immutable
·published 2007-10-11 08:05 UTC
rendered paste body
#include <glib.h>
#include <gst/gst.h>

int
main (int   argc,
      char *argv[])
{
  GstElement *bin, *rtpbin, *encoder, *payloader ,*parser;
  GMainLoop *loop;
  gst_init (&argc, &argv);

  loop = g_main_loop_new(NULL, FALSE);

  bin = gst_pipeline_new("pipe");

  fprintf(stderr,"bin: %p\n",bin);

  if (argc != 4)
  {
      printf("Usage :g711send [rtcplocalport-1] [destaddr:port] <ogg file > \n");
      return 0;
  }

  int port = atoi (argv[1]);
  char *addr = argv[2];

  // first we create our rtpbin object
  rtpbin = gst_element_factory_make("rtpbin", "rtpbin");
  fprintf(stderr,"rtpbin: %p\n",rtpbin);
  g_object_set(G_OBJECT(rtpbin), "destinations", addr, NULL);
  g_object_set(G_OBJECT(rtpbin), "rtcp-support", TRUE, NULL);
  g_object_set(G_OBJECT(rtpbin), "localport", port, NULL);

  // then our encoder/payloader
  encoder = gst_element_factory_make("oggdemux", "oggdemux");
  parser = gst_element_factory_make("vorbisparse","vorbisparse");
  payloader = gst_element_factory_make("rtpvorbispay", "rtpvorbispay");

  // add both to the piepline and link them
  gst_bin_add_many(GST_BIN(bin), rtpbin, encoder,parser, payloader, NULL);
  gst_element_link_pads(encoder, "src", parser, "sink");
  gst_element_link_pads(parser,"src",payloader,"sink");
  gst_element_link_pads(payloader, "src", rtpbin, "sink%d");

  // our videotestsrc and link it to the encoder
GstElement *source = gst_element_factory_make ("filesrc", "file-source");
g_object_set (G_OBJECT (source), "location", argv[3], NULL);
  //GstElement *testsrc = gst_element_factory_make("audiotestsrc", "alsasrc");
  //g_object_set(G_OBJECT(testsrc), "blocksize", 320, NULL);
  gst_bin_add_many(GST_BIN(bin), source, NULL);
  gst_element_link_pads(source, "src", encoder, "sink");

  // let's start playing
  gst_element_set_state (bin, GST_STATE_PLAYING);
printf (" \n============================================le tube est en streaming ==================================\n");
  //gst_debug_set_threshold_for_name ("rtpbin", 1);
  //gst_debug_set_threshold_for_name ("rtpsend", 5);
  //gst_debug_set_threshold_for_name ("*pad*", 5);

  g_main_loop_run(loop);

  return 0;
}