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); }
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(); } }
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(); }