/// <summary> /// Adds a source filter to the graph and sets the input. /// </summary> protected virtual void AddSourceFilter() { int hr = 0; var networkResourceAccessor = _resourceAccessor as INetworkResourceAccessor; if (networkResourceAccessor != null) { ServiceRegistration.Get <ILogger>().Debug("{0}: Initializing for network media item '{1}'", PlayerTitle, networkResourceAccessor.URL); // try to render the url and let DirectShow choose the source filter hr = _graphBuilder.RenderFile(networkResourceAccessor.URL, null); new HRESULT(hr).Throw(); return; } var fileSystemResourceAccessor = _resourceAccessor as IFileSystemResourceAccessor; if (fileSystemResourceAccessor != null) { ServiceRegistration.Get <ILogger>().Debug("{0}: Initializing for file system media item '{1}'", PlayerTitle, fileSystemResourceAccessor.Path); // For locally accessible files prefer the default filters ILocalFsResourceAccessor lfsra = fileSystemResourceAccessor as ILocalFsResourceAccessor; if (lfsra != null) { // try to render the file and let DirectShow choose the source filter hr = _graphBuilder.RenderFile(lfsra.LocalFileSystemPath, null); new HRESULT(hr).Throw(); return; } // use the DotNetStreamSourceFilter as source filter _streamFilter = new DotNetStreamSourceFilter(); _resourceStream = fileSystemResourceAccessor.OpenRead(); _streamFilter.SetSourceStream(_resourceStream, fileSystemResourceAccessor.ResourcePathName); hr = _graphBuilder.AddFilter(_streamFilter, _streamFilter.Name); new HRESULT(hr).Throw(); using (DSFilter source2 = new DSFilter(_streamFilter)) hr = source2.OutputPin.Render(); new HRESULT(hr).Throw(); return; } throw new IllegalCallException("The VideoPlayer can only play resources of type INetworkResourceAccessor or IFileSystemResourceAccessor"); }
/// <summary> /// Adds a source filter to the graph and sets the input. /// </summary> protected virtual void AddSourceFilter() { var networkResourceAccessor = _resourceAccessor as INetworkResourceAccessor; if (networkResourceAccessor != null) { ServiceRegistration.Get<ILogger>().Debug("{0}: Initializing for network media item '{1}'", PlayerTitle, networkResourceAccessor.URL); // try to render the url and let DirectShow choose the source filter int hr = _graphBuilder.RenderFile(networkResourceAccessor.URL, null); new HRESULT(hr).Throw(); return; } var fileSystemResourceAccessor = _resourceAccessor as IFileSystemResourceAccessor; if (fileSystemResourceAccessor != null) { ServiceRegistration.Get<ILogger>().Debug("{0}: Initializing for file system media item '{1}'", PlayerTitle, fileSystemResourceAccessor.Path); // use the DotNetStreamSourceFilter as source filter var sourceFilter = new DotNetStreamSourceFilter(); _resourceStream = fileSystemResourceAccessor.OpenRead(); sourceFilter.SetSourceStream(_resourceStream, fileSystemResourceAccessor.ResourcePathName); int hr = _graphBuilder.AddFilter(sourceFilter, sourceFilter.Name); new HRESULT(hr).Throw(); using(DSFilter source2 = new DSFilter(sourceFilter)) hr = source2.OutputPin.Render(); new HRESULT(hr).Throw(); return; } throw new IllegalCallException("The VideoPlayer can only play resources of type INetworkResourceAccessor or IFileSystemResourceAccessor"); }