#include #include int main (int argc, char *argv[]) { GstElement *bin, *rtpbin, *encoder, *payloader; 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 : gsmsend [rtcplocalport-1] [destaddr:port] \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("vorbisenc", "vorbisenc"); payloader = gst_element_factory_make("rtpvorbispay", "rtpvorbispay"); // add both to the piepline and link them gst_bin_add_many(GST_BIN(bin), rtpbin, encoder, payloader, NULL); gst_element_link_pads(encoder, "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); 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============================================THE tube IS streaming ==================================\n"); g_main_loop_run(loop); return 0; }