public void StartVideoRx(int recvPort, string name) { _videoRxPipeline = new Pipeline("videorx-pipeline"); Bin bin = (Bin)_videoRxPipeline; //bin.Bus.AddWatch(new BusFunc(BusCall)); _videoRxPipeline.Bus.AddSignalWatch(); _videoRxPipeline.Bus.Message += (o, args) => BusCall(args.Message); Element udpSrc = ElementFactory.Make("udpsrc", "udp_src"); Element rtpH263Depayloader = ElementFactory.Make("rtph263pdepay", "h263_deplayloader"); Element h263Decoder = ElementFactory.Make("ffdec_h263", "h263_decoder"); Element cspFilter = ElementFactory.Make("ffmpegcolorspace", "csp_filter_rx"); Element screenSink = ElementFactory.Make("dshowvideosink", "video-sink_rx"); if ((_videoRxPipeline == null) || (udpSrc == null) || (rtpH263Depayloader == null) || (h263Decoder == null) || (cspFilter == null) || (screenSink == null)) { MessageBox.Show("Error Creating Gstreamer Elements for Recieving Video!"); } else { udpSrc["port"] = recvPort; bin.Add(udpSrc, rtpH263Depayloader, h263Decoder, cspFilter, screenSink); Caps caps = Caps.FromString("application/x-rtp,clock-rate=90000,payload=96,encoding-name=H263-1998"); if (!udpSrc.LinkFiltered(rtpH263Depayloader, caps)) { Console.WriteLine("link failed between udp_src and rtp_h263_depayloader"); } if (!Element.Link(rtpH263Depayloader, h263Decoder, cspFilter, screenSink)) { Console.WriteLine("link failed between rtp_h263_depayloader and screen_sink"); } Gst.Interfaces.XOverlayAdapter xadapter = new Gst.Interfaces.XOverlayAdapter(screenSink.Handle); VideoWindow.wfhost2.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate { VideoWindow.remote_video_label.Content = "Remote Video:" + name; xadapter.XwindowId = (ulong)VideoWindow.video_rx_canvas.Handle; })); _videoRxPipeline.SetState(State.Playing); } }
private void btnStart_Click(object sender, EventArgs e) { // Tell d3dvideosink to render into our window. var overlay = new Gst.Interfaces.XOverlayAdapter(m_Sink.Handle); overlay.XwindowId = (ulong)videoPanel.Handle; m_Pipeline.SetState(State.Playing); // m_Pipeline.DebugToDotFile("graph"); // Save pipeline to graph.dot }
public MainWindow() : base(WindowType.Toplevel) { BuildInterface (); pipeline = new Gst.Pipeline (); drawSink = Gst.ElementFactory.Make ("xvimagesink"); camerabin = Gst.ElementFactory.Make ("camerabin"); camerabin.Connect ("image-done", new Gst.SignalHandler (OnImageDone)); pipeline.SetState (Gst.State.Null); overlayAdapter = new Gst.Interfaces.XOverlayAdapter (drawSink.Handle); overlayAdapter.XwindowId = gdk_x11_drawable_get_xid (drawingArea.GdkWindow.Handle); pipeline.Add (camerabin); if (camerabin.HasProperty ("viewfinder-sink")) { camerabin ["viewfinder-sink"] = drawSink; } if (camerabin.HasProperty ("filename")) { camerabin ["filename"] = "snapshot.png"; } pipeline.SetState (Gst.State.Playing); this.ShowAll (); }
private void btnStart_Click(object sender, EventArgs e) { // Tell d3dvideosink to render into our window. var overlay = new Gst.Interfaces.XOverlayAdapter(m_Sink.Handle); overlay.XwindowId = (ulong)videoPanel.Handle; m_Pipeline.SetState(State.Playing); // m_Pipeline.DebugToDotFile("graph"); // Save pipeline to graph.dot }
public void StartVideoTx(string destIP, int destPort) { VideoWindow.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( () => VideoWindow.Show())); Element cameraSrc; _videoTxPipeline = new Pipeline("videotx-pipeline"); Bin bin = (Bin)_videoTxPipeline; //bin.Bus.AddWatch(new BusFunc(BusCall)); _videoTxPipeline.Bus.AddSignalWatch(); _videoTxPipeline.Bus.Message += (o, args) => BusCall(args.Message); if ((cameraSrc = ElementFactory.Make("videotestsrc", "video_src_tx")) == null) { Console.WriteLine("Could not create webcam-source"); } Element cspFilter = ElementFactory.Make("ffmpegcolorspace", "filter_tx"); Element cspFilter2 = ElementFactory.Make("ffmpegcolorspace", "filter2_tx"); Element screenSink = ElementFactory.Make("dshowvideosink", "video-sink_tx"); Element tee = ElementFactory.Make("tee", "tee_tx"); Element screenQueue = ElementFactory.Make("queue", "screen-queue_tx"); Element udpQueue = ElementFactory.Make("queue", "udp-queue_tx"); Element h263Encoder = ElementFactory.Make("ffenc_h263p", "ffenc_h263p_tx"); Element rtpH263Payloader = ElementFactory.Make("rtph263ppay", "rtp_payloader_tx"); Element udpSink = ElementFactory.Make("udpsink", "udp_sink_tx"); if ((_videoTxPipeline == null) || (cameraSrc == null) || (screenSink == null) || (cspFilter == null) || (cspFilter2 == null) || (h263Encoder == null) || (rtpH263Payloader == null) || (udpSink == null) || (udpQueue == null) || (screenQueue == null)) { MessageBox.Show("Error Creating Gstreamer Elements for sending video!"); } else { udpSink["host"] = destIP; udpSink["port"] = destPort; bin.Add(cameraSrc, screenSink, cspFilter, cspFilter2, tee, h263Encoder, rtpH263Payloader, udpSink, udpQueue, screenQueue); Caps caps = Caps.FromString("video/x-raw-rgb,width=" + _settings.videocall_width + ",height=" + _settings.videocall_height); if (!cameraSrc.LinkFiltered(tee, caps)) { Console.WriteLine("link failed between camera_src and tee"); } if (!Element.Link(tee, cspFilter, screenQueue, screenSink)) { Console.WriteLine("link failed between tee and screen_sink"); } if (!Element.Link(tee, cspFilter2, udpQueue, h263Encoder, rtpH263Payloader, udpSink)) { Console.WriteLine("link failed between tee and udp_sink"); } Gst.Interfaces.XOverlayAdapter xadapter = new Gst.Interfaces.XOverlayAdapter(screenSink.Handle); VideoWindow.wfhost1.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate { VideoWindow.local_video_label.Content = "Local Video: " + _settings.ims_public_user_identity; xadapter.XwindowId = (ulong)VideoWindow.video_tx_canvas.Handle; })); _videoTxPipeline.SetState(State.Playing); } }