Пример #1
0
        private void Configure()
        {
            int hr;

            IFilterGraph2 filterGraph = (IFilterGraph2) new FilterGraph();

            URLReader u = new URLReader();

            m_iop = (IAMOpenProgress)u;
            IFileSourceFilter fsf  = (IFileSourceFilter)u;
            IFileSourceFilter fsf2 = (IFileSourceFilter)u;

            hr = filterGraph.AddFilter((IBaseFilter)m_iop, "url");
            DsError.ThrowExceptionForHR(hr);

            ThreadStart o2 = new ThreadStart(this.ThreadProc);
            Thread      thread;

            thread      = new Thread(o2);
            thread.Name = "cancellor";
            thread.Start();

            hr = fsf.Load(@"http://192.168.1.77/DShow/foo.avi", null);

            m_bAbort = (hr == -2147467260); // Aborted

            Marshal.ReleaseComObject(u);
            Marshal.ReleaseComObject(filterGraph);
        }
Пример #2
0
        private void Configure2()
        {
            int hr;

            IFilterGraph2 filterGraph = (IFilterGraph2) new FilterGraph();

            URLReader u = new URLReader();

            m_iop = (IAMOpenProgress)u;

            IFileSourceFilter fsf = (IFileSourceFilter)u;

            hr = filterGraph.AddFilter((IBaseFilter)m_iop, "url");
            DsError.ThrowExceptionForHR(hr);

            ThreadStart o2 = new ThreadStart(this.ThreadProc2);
            Thread      thread;

            thread      = new Thread(o2);
            thread.Name = "cancellor2";
            thread.Start();

            hr = fsf.Load(@"http://www.LimeGreenSocks.com/test.avi", null);
            DsError.ThrowExceptionForHR(hr); // -2147467260

            m_bLoaded = true;

            ICaptureGraphBuilder2 icgb = (ICaptureGraphBuilder2) new CaptureGraphBuilder2();

            hr = icgb.SetFiltergraph(filterGraph);
            DsError.ThrowExceptionForHR(hr);

            hr = icgb.RenderStream(null, null, u, null, null);

            ((IMediaControl)filterGraph).Run();

            while (!m_bQuery)
            {
                System.Windows.Forms.Application.DoEvents();
            }
        }
Пример #3
0
        public DSFilterNode(IBaseFilter filter, bool manualAdded)
        {
            _filter      = filter;
            _manualAdded = manualAdded;

            AssociatedUINode = typeof(DSFilterNodeUI).AssemblyQualifiedName;

            // if it's a filesource filter, get the filename for it
            IFileSourceFilter fs = filter as IFileSourceFilter;

            if (fs != null)
            {
                IAMOpenProgress op = filter as IAMOpenProgress;
                if (op != null)
                {
                    // it wants a URL (thought you were being sneaky huh?)
                    string      url   = string.Empty;
                    AMMediaType mtype = new AMMediaType();
                    fs.GetCurFile(out url, mtype);
                    if (url == null)
                    {
                        URLDialog ud = new URLDialog();
                        if (ud.ShowDialog() == DialogResult.OK)
                        {
                            fs.Load(ud.URL, null);
                        }
                        ud.Dispose();
                        ud = null;
                    }
                    fs = null;
                }
                else
                {
                    // it wants a filename
                    string      filename = string.Empty;
                    AMMediaType mtype    = new AMMediaType();
                    fs.GetCurFile(out filename, mtype);
                    if (filename == null)
                    {
                        OpenFileDialog ofd = new OpenFileDialog();
                        if (ofd.ShowDialog() == DialogResult.OK)
                        {
                            fs.Load(ofd.FileName, null);
                        }
                        ofd.Dispose();
                        ofd = null;
                    }
                    fs = null;
                }
            }

            // if it's a filewriter, get the filename for it
            IFileSinkFilter fw = filter as IFileSinkFilter;

            if (fw != null)
            {
                string      filename = string.Empty;
                AMMediaType mtype    = new AMMediaType();
                fw.GetCurFile(out filename, mtype);
                if (filename == null)
                {
                    SaveFileDialog sfd = new SaveFileDialog();
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        fw.SetFileName(sfd.FileName, null);
                    }
                }
                fw = null;
            }

            // create and add all DaggerPins for this filter
            SyncPins();
        }