コード例 #1
0
ファイル: DefaultRenderer.cs プロジェクト: ewin66/media
        /// <summary>
        /// Attaches this graph to a source graph
        /// </summary>
        /// <param name="source">source sub graph to get data from</param>
        public void SetSource(ISourceSubGraph source)
        {
            Debug.WriteLine("DefaultRenderer.SetSource: " + source.GetType().ToString());

            List <DetailPinInfo> pins = null;

            try
            {
                input = (IBaseFilter)source.Controller.InsertSourceFilter(source.Output, this.graph);

                pins = input.EnumPinsDetails();

                foreach (DetailPinInfo i in pins)
                {
                    int hr = this.captureGraph.RenderStream(null, null, i.Pin, null, null);
                    Debug.WriteLine("DefaultRenderer rendered stream; HRESULT = " + hr.ToString("x"));
                }
            }
            finally
            {
                if (pins != null)
                {
                    pins.Release();
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Attach this graph to a source
        /// </summary>
        /// <param name="source">the source sub graph</param>
        public void SetSource(ISourceSubGraph source)
        {
            Debug.WriteLine("LTNetworkSink.SetSource: " + source.GetType().ToString());

            List <DetailPinInfo> pins = null;

            try
            {
                netMux = (IBaseFilter) new LMNetMuxClass();
                graph.AddFilter(netMux, @"LEAD Network Multiplexer (2.0)");
                lmNetMux            = (LMNetMux)netMux;
                lmNetMux.LiveSource = this.LiveSource;
                Debug.WriteLine(String.Format("LiveSource={0}", lmNetMux.LiveSource));

                lmNetMux.MaxQueueDuration = this.MaxQueueDuration;
                netSnk = (IBaseFilter) new LMNetSnkClass();
                graph.AddFilter(netSnk, "LEAD Network Sink (2.0)");

                InitializeNetworkSink();

                input = (IBaseFilter)source.Controller.InsertSourceFilter(source.Output, this.graph);

                pins = input.EnumPinsDetails();

                int muxInputNumber = 1;
                foreach (DetailPinInfo i in pins)
                {
                    IPin muxPin = null;
                    try
                    {
                        muxPin = DsFindPin.ByName(netMux, "Input " + muxInputNumber.ToString("D2"));
                        FilterGraphTools.ConnectFilters(this.graph, i.Pin, muxPin, false);
                    }
                    finally
                    {
                        if (muxPin != null)
                        {
                            muxPin.Release();
                        }
                    }
                    muxInputNumber++;
                }

                FilterGraphTools.ConnectFilters(this.graph, netMux, "Output 01", netSnk, "Input", false);
            }
            finally
            {
                if (pins != null)
                {
                    pins.Release();
                }
            }
        }
コード例 #3
0
ファイル: Main.cs プロジェクト: ewin66/media
        private void btnAddSource_Click(object sender, EventArgs e)
        {
            try
            {
                source = new LTNetworkSource(tbLtsfUrl.Text);
                ((INetworkSource)source).PropertyChanged += new PropertyChangedEventHandler(source_PropertyChanged);

                connector.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
コード例 #4
0
        /// <summary>
        /// Sets the source for this graph
        /// </summary>
        /// <param name="source">source sub graph</param>
        public void SetSource(ISourceSubGraph source)
        {
            Debug.WriteLine("OggWriter.SetSource: " + source.GetType().ToString());

            List <DetailPinInfo> pins = null;

            try
            {
                input = (IBaseFilter)source.Controller.InsertSourceFilter(source.Output, this.graph);

                pins = input.EnumPinsDetails();

                int oggStreamCounter = 0;

                foreach (DetailPinInfo i in pins)
                {
                    if (i.Info.dir == PinDirection.Output)
                    {
                        IPin destPin = DsFindPin.ByName(oggMux, "Stream " + oggStreamCounter.ToString());
                        if (destPin != null)
                        {
                            FilterGraphTools.ConnectFilters(this.graph, i.Pin, destPin, false);
                            Release(destPin);
                            oggStreamCounter++;
                        }
                    }
                }

                FilterGraphTools.ConnectFilters(this.graph, oggMux, "Ogg Stream", fileWriter, "in", false);
            }
            finally
            {
                if (pins != null)
                {
                    pins.Release();
                }
            }
        }
コード例 #5
0
ファイル: Main.cs プロジェクト: ewin66/media
 private void btnTestPattern_Click(object sender, EventArgs e)
 {
     source       = new TestPattern(true);
     graph.Source = source;
 }
コード例 #6
0
 /// <summary>
 /// Connects the GMFBridge between source and destination
 /// </summary>
 /// <param name="source">this / source sub graph</param>
 /// <param name="dest">destination sub graph</param>
 public static void BridgeTo(this ISourceSubGraph source, ISinkSubGraph dest)
 {
     source.Controller.BridgeGraphs(source.Output, (dest != null) ? dest.Input : null);
 }