public CaptureSourceDVR(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { AppLogger.Message("In CaptureSourceDVR constructor - CurrentProfile is " + CurrentProfile.Name); _captureFilter = AddFilterByName(FilterCategory.VideoInputDevice, sourceConfig.Description); _videoEncoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Encoder (4.0)"); // _transcoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Transcoder"); InitializeSink(); ConnectFilters(_captureFilter, "Capture", _videoEncoder, "XForm In"); // ConnectFilters(_videoEncoder, "XForm Out", _transcoder, "Input"); // ConnectFilterToMux(_transcoder, "Output", "Input 01"); ConnectFilterToMux(_videoEncoder, "XForm Out", "Input 01"); ConnectMuxToSink(); _videoEncoderControl = (ILMH264Encoder)_videoEncoder; _videoEncoderControl.EnableRateControl = true; _videoEncoderControl.BitRate = CurrentProfile.Video.ConstantBitRate * 1024; _videoEncoderControl.OutputFormat = eH264OUTPUTFORMAT.H264FORMAT_IPOD; // seems to work the best }
private async Task <OpenGraphResult> GetGraphResultAsync(HttpRequest req, OpenGraphRequest openGraphRequest) { string url = openGraphRequest.Url, id = openGraphRequest.Id; if (!string.IsNullOrEmpty(url) && !string.IsNullOrEmpty(id)) { /** * This check is a hack in support of adding our own URLs to lists. Rendered URLs return no Open Graph * metadata and deep links return HTTP 404s when hosting in Blob storage. So we skip the HTTP request. */ if (!req.Host.HasValue || !url.Contains(req.Host.Host)) { try { OpenGraph graph = await OpenGraph.ParseUrlAsync(url, "Urlist"); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(graph.OriginalHtml); var descriptionMetaTag = doc.DocumentNode.SelectSingleNode("//meta[@name='description']"); var titleTag = doc.DocumentNode.SelectSingleNode("//head/title"); return(new OpenGraphResult(id, graph, descriptionMetaTag, titleTag)); } catch (Exception) { // Todo - Add logging } } } return(new OpenGraphResult { Id = id }); }
public SRM314(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { InitializeNetworkSink(); _currentVideoSettings = new VideoSettings(); _crossbar = AddFilterByName(FilterCategory.AMKSCrossbar, "Sensoray 314 Crossbar"); _captureFilter = AddFilterByName(FilterCategory.AMKSCapture, "Sensoray 314 A/V Capture"); //instantiate BDA VES and get reference to capture pin _ves = AddFilterByName(FilterCategory.WDMStreamingEncoderDevices, "Sensoray 314 BDA MPEG VES Encoder"); _vesCapturePin = DsFindPin.ByName(_ves, "Capture"); //instantiate frame rate filter and get control interface _frameRateFilter = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "FC Frame Rate Filter"); _frameRate = (IFCFrameRateAPI)_frameRateFilter; SetInputAndSystem(); _frameRate.set_InputFramerate(15.0); ChangeProfile(CurrentProfile); ConnectFilters(_crossbar, "0: Video Decoder Out", _captureFilter, "Analog Video In", false); ConnectFilters(_captureFilter, "Analog ITU Video", _ves, "Analog ITU Video", false); // ConnectFilterToNetMux(_ves, "Capture", "Input 01"); ConnectFilters(_ves, "Capture", _frameRateFilter, "Input", false); ConnectFilterToNetMux(_frameRateFilter, "Output", "Input 01"); ConnectNetMuxToNetSnk(); }
public WinTV500(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _captureDevice = FindDevice(FilterCategory.AMKSCapture, @"Hauppauge WinTV PVR PCI II Capture"); _tunerDevice = FindDevice(FilterCategory.AMKSTVTuner, @"Hauppauge WinTV PVR PCI II TvTuner"); _audioDevice = FindDevice(FilterCategory.AMKSTVAudio, @"Hauppauge WinTV PVR PCI II TvAudio"); _crossbarDevice = FindDevice(FilterCategory.AMKSCrossbar, @"Hauppauge WinTV PVR PCI II Crossbar"); _encoderDevice = FindDevice(FilterCategory.WDMStreamingEncoderDevices, @"Hauppauge WinTV PVR PCI II Encoder"); CreateWinTVGraph(); }
public BouncingBallDVR(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _captureFilter = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "Bouncing Ball"); _videoEncoder = AddFilterByName(FilterCategory.VideoCompressorCategory, "LEAD H264 Encoder (4.0)"); ConnectFilters(_captureFilter, "A Bouncing Ball!", _videoEncoder, "XForm In"); ConnectFilterToMux(_videoEncoder, "XForm Out", "Input 01"); ConnectMuxToSink(); InitializeSink(); this.SaveGraphFile(@"C:\Temp\balldvr.grf"); }
public override SessionDescription FillOutSessionDescription(OpenGraphRequest openGraphRequest) { SessionDescription sd = base.FillOutSessionDescription(openGraphRequest); sd.TVSessionInfo = new TVSessionInfo(); sd.TVSessionInfo.Channel = this.Channel; sd.TVSessionInfo.TVMode = this.TVMode; sd.TVSessionInfo.ChannelScanInProgress = (channelScanWorker != null) ? channelScanWorker.IsBusy : false; return(sd); }
/// <summary> /// Returns a session description for a given open graph request /// </summary> /// <param name="openGraphRequest">Open graph request info</param> /// <returns>the SessionDescription that the client will be needing to complete the connection</returns> public virtual SessionDescription FillOutSessionDescription(OpenGraphRequest openGraphRequest) { SessionDescription sd = new SessionDescription(); sd.SourceName = SourceConfig.SourceName; sd.ProfileGroups = ProfileGroups; sd.CurrentProfileName = CurrentProfile.Name; sd.SinkURL = ExpandInterfaceAddressMacro(BaseClientURL, openGraphRequest.InterfaceAddress); AppLogger.Message("Returning SinkURL " + sd.SinkURL); Debug.WriteLine("Returning SinkURL " + sd.SinkURL); sd.StreamTimeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["StreamTimeLimit"]); return(sd); }
public FastVDODVR(StreamSourceInfo streamSourceInfo, OpenGraphRequest openGraphRequest) : base(streamSourceInfo, openGraphRequest) { //maximum number of retries before blowing away graph/connection int MaxRetries = 1; for (int retry = 1; retry <= MaxRetries; retry++) { try { InitializeSmartCapture(CurrentProfile); InitializeSink(); _captureFilter = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "FastVDO-SmartCapture QBoxSplitter"); _transcoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "H.264 Byte Stream Transform"); AppLogger.Message("Attempting to connect capture filter (Video) to transform (XForm In)"); ConnectFilters(_captureFilter, "Video", _transcoder, "XForm In"); AppLogger.Message("Attempting to connect transform (XForm Out) to mux (Input 01)"); ConnectFilterToMux(_transcoder, "XForm Out", "Input 01"); ConnectMuxToSink(); break; //this worked, so stop retrying } catch (Exception exc) { ErrorLogger.DumpToDebug(exc); if (_deviceContext != IntPtr.Zero) { try { AppLogger.Message("Resetting FVDO device"); NativeMethods.SCReset(_deviceContext); Thread.Sleep(2000); } catch (Exception exc2) { ErrorLogger.DumpToDebug(exc2); } } //on the last retry, give up if (retry == MaxRetries) { this.Dispose(); throw; } else { CloseSmartCapture(); } } } }
public ScreenCapture(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { InitializeSink(); _captureFilter = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD Screen Capture (2.0)"); if (_captureFilter == null) { throw new Exception("screen capture filter not found"); } _videoEncoder = AddFilterByName(FilterCategory.VideoCompressorCategory, "LEAD Screen Capture Encoder (2.0)"); ConnectFilters(_captureFilter, "Capture", _videoEncoder, "XForm In"); ConnectFilterToMux(_videoEncoder, "XForm Out", "Input 01"); ConnectMuxToSink(); }
public StreamingAndRecording(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { InitializeNetworkSink(); int hr; _tee = (IBaseFilter) new InfTee(); hr = _graphBuilder.AddFilter(_tee, "Inf Tee"); DsError.ThrowExceptionForHR(hr); _recordSink = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "DVR Writer"); _recordSinkFilter = (IFileSinkFilter)_recordSink; _recordSinkFilter.SetFileName(@"c:\test.lts", new AMMediaType()); _dvrWriter = (IDVRWriterApi)_recordSink; }
public DVRtoMPEG2TS(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { AppLogger.Message("In DVRtoMPEG2TS - CurrentProfile is " + CurrentProfile.Name); InitializeSink(); _captureFilter = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD DVR Source"); IFileSourceFilter fileSource = (IFileSourceFilter)_captureFilter; String[] sourceNameParts = sourceConfig.SourceName.Split('-'); DVRSettings dvrSettings = DVRSettings.LoadFromFile(); int hr = fileSource.Load(dvrSettings.RootFolder + sourceNameParts[0] + @"/Stream.LBL", null); DsError.ThrowExceptionForHR(hr); ILMDVRSource sourceControl = (ILMDVRSource)_captureFilter; sourceControl.ResetToDefaultsEx(LMDVRSource_APILEVEL.LMDVRSource_APILEVEL_1); _demux = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD MPEG2 Transport Demultiplexer"); _demuxControl = (ILMMpgDmx)_demux; _demuxControl.AutoLive = true; _demuxControl.AutoLiveTolerance = .5; // _currentVideoSettings = new VideoSettings(); // _currentVideoSettings.CodecType = CurrentProfile.Video.CodecType; ConnectFilters(_captureFilter, "Output", _demux, "Input 01"); if (CurrentProfile.Video != null) { VideoSettings settings = CurrentProfile.Video; _videoDecoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Decoder (3.0)"); _videoEncoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Encoder (4.0)"); ConnectFilters(_demux, "H.264 Video", _videoDecoder, "XForm In"); ConnectFilters(_videoDecoder, "XForm Out", _videoEncoder, "XForm In"); LMH264EncoderLib.ILMH264Encoder encoderConfig = (LMH264EncoderLib.ILMH264Encoder)_videoEncoder; encoderConfig.EnableRateControl = true; encoderConfig.BitRate = settings.ConstantBitRate * 1024; ConnectFilterToMux(_videoEncoder, "XForm Out", "Input 01"); } else { ConnectFilterToMux(_demux, "H.264 Video", "Input 01"); } ConnectMuxToSink(); }
public StreamingTVGraph(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { InitializeNetworkSink(); this.TVConfig = sourceConfig.TVTuner; try { this.KnownChannels = ChannelCollection.LoadFromFile(GetKnownChannelsStoreFilename()); } catch (Exception ex) { this.KnownChannels = new ChannelCollection(); AppLogger.Dump(ex); } }
public MangoDVR(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { InitializeSink(); // _transcoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Transcoder"); _captureFilter = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "Mango Capture"); _currentVideoSettings = new VideoSettings(); _currentVideoSettings.CodecType = CurrentProfile.Video.CodecType; SetDSP_and_Camera(sourceConfig); ChangeProfile(CurrentProfile); // ConnectFilters(_captureFilter, "H264", _transcoder, "Input"); // ConnectFilterToMux(_transcoder, "Output", "Input 01"); ConnectFilterToMux(_captureFilter, "H264", "Input 01"); ConnectMuxToSink(); }
public DVRLeadNetSink(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { AppLogger.Message("In DVRNetSink constructor - CurrentProfile is " + CurrentProfile.Name); InitializeNetworkSink(); _captureFilter = DVRGraphHelper.GetAndConfigureDVRSourceForSink(_graphBuilder, sourceConfig); _demux = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD MPEG2 Transport Demultiplexer"); _demuxControl = (ILMMpgDmx)_demux; _demuxControl.AutoLive = true; _demuxControl.AutoLiveTolerance = .5; ConnectFilters(_captureFilter, "Output", _demux, "Input 01"); ConnectFilterToNetMux(_demux, "H.264 Video", "Input 01"); ConnectNetMuxToNetSnk(); }
public BaseGraph(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) { int hr = 0; SourceConfig = sourceConfig; OpenGraphRequest = openGraphRequest; // An exception is thrown if cast fail _graphBuilder = (IGraphBuilder) new FilterGraph(); _captureGraphBuilder = (ICaptureGraphBuilder2) new CaptureGraphBuilder2(); _mediaControl = (IMediaControl)_graphBuilder; // Attach the filter graph to the capture graph hr = _captureGraphBuilder.SetFiltergraph(_graphBuilder); DsError.ThrowExceptionForHR(hr); #if DEBUG_ROTENTRY _rot = new DsROTEntry(_graphBuilder); #endif LoadProfileGroups(); //the first listed ProfileGroup is the default ProfileGroup if (ProfileGroups.Items.Count == 0) { throw new SourceConfigException("No Profile Groups loaded!"); } ProfileGroup profileGroup = ProfileGroups.Items[0]; DefaultProfileName = profileGroup.Name + ":" + profileGroup.DefaultProfileName; if (OpenGraphRequest.Profile != null) { CurrentProfile = OpenGraphRequest.Profile; } else { CurrentProfile = FindProfile(DefaultProfileName); } }
public ASFNetSink(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _eventTimer = new System.Timers.Timer(); _eventTimer.Elapsed += new System.Timers.ElapsedEventHandler(_eventTimer_Elapsed); _eventTimer.Interval = 100; int hr; IFileSinkFilter pTmpSink; hr = _captureGraphBuilder.SetOutputFileName(MediaSubType.Asf, SourceConfig.SourceName.Replace(':', '_') + @".asf", out _asfFilter, out pTmpSink); DsError.ThrowExceptionForHR(hr); ConfigureWriterFilter(); CreateNetworkWriterSink(); OpenSink(); AddSinkToWriter(); _eventTimer.Start(); }
public DVRtoDVR(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { AppLogger.Message("In DVRtoDVR - CurrentProfile is " + CurrentProfile.Name); InitializeSink(); _captureFilter = DVRGraphHelper.GetAndConfigureDVRSourceForSink(_graphBuilder, sourceConfig); _demux = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD MPEG2 Transport Demultiplexer"); _demuxControl = (ILMMpgDmx)_demux; _demuxControl.AutoLive = true; _demuxControl.AutoLiveTolerance = .5; // _currentVideoSettings = new VideoSettings(); // _currentVideoSettings.CodecType = CurrentProfile.Video.CodecType; ConnectFilters(_captureFilter, "Output", _demux, "Input 01"); if (CurrentProfile.Video != null) { VideoSettings settings = CurrentProfile.Video; _videoDecoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Decoder (3.0)"); _videoEncoder = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD H264 Encoder (4.0)"); ConnectFilters(_demux, "H.264 Video", _videoDecoder, "XForm In"); ConnectFilters(_videoDecoder, "XForm Out", _videoEncoder, "XForm In"); LMH264EncoderLib.ILMH264Encoder encoderConfig = (LMH264EncoderLib.ILMH264Encoder)_videoEncoder; encoderConfig.EnableRateControl = true; encoderConfig.BitRate = settings.ConstantBitRate * 1024; ConnectFilterToMux(_videoEncoder, "XForm Out", "Input 01"); } else { ConnectFilterToMux(_demux, "H.264 Video", "Input 01"); } ConnectMuxToSink(); }
public StreamingGraph(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _netMux = AddFilterByName(FilterCategory.LegacyAmFilterCategory, @"LEAD Network Multiplexer (2.0)"); _lmNetMux = (ILMNetMux)_netMux; _lmNetMux.LiveSource = SourceConfig.LiveSource; AppLogger.Message(String.Format("LiveSource={0}", LiveSource)); // _lmNetMux.MaxQueueDuration = SourceConfig.MaxQueueDuration; // _lmNetMux.MaxQueueDuration = SourceConfig.MaxQueueDuration; AppLogger.Message(String.Format("MaxQueueDuration={0}", _lmNetMux.MaxQueueDuration)); _netSnk = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD Network Sink (2.0)"); //parse the app.config to see if we are disabling either of these. bool.TryParse(ConfigurationManager.AppSettings["DispatchClientsUpdate"], out this.DispatchClientsUpdate); bool.TryParse(ConfigurationManager.AppSettings["DispatchProfileUpdate"], out this.DispatchProfileUpdate); if (!this.DispatchProfileUpdate) { AppLogger.Message(" DispatchProfileUpdate is disabled."); } if (!this.DispatchClientsUpdate) { AppLogger.Message(" DispatchClientsUpdate is disabled."); } BuildClientURL(SinkProtocolType.LTSF_TCP); }
public SessionDescription OpenGraph(OpenGraphRequest openGraphRequest) { _openGraphRequest = openGraphRequest; _graph = GraphManager.Singleton.OpenGraph(openGraphRequest); return(_graph.SessionDescription); }
public WinTV418ATSC(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { if (SourceConfig.TVTuner == null) { throw new SourceConfigException("TVTuner config section not found!"); } _deviceIndex = sourceConfig.TVTuner.DeviceIndex; tuningSpace = GetTuningSpace(); Guid networkType; tuningSpace.get__NetworkType(out networkType); if (networkType.Equals(Guid.Empty)) { throw new Exception("Not a digital Network Type!"); } networkProvider = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(networkType)); int hr = _graphBuilder.AddFilter(networkProvider, "Network Provider"); DsError.ThrowExceptionForHR(hr); tuner = (ITuner)networkProvider; //add MPEG2 Demux mpeg2Demux = FilterGraphTools.AddFilterByName(_graphBuilder, FilterCategory.LegacyAmFilterCategory, "MPEG-2 Demultiplexer"); //add BDA MPEG-2 Transport Information Filter bdaTransportInfo = FilterGraphTools.AddFilterByName(_graphBuilder, FilterCategory.BDATransportInformationRenderersCategory, "BDA MPEG2 Transport Information Filter"); //add MPEG-2 Sections and Tables Filter mpeg2SectionsAndTables = FilterGraphTools.AddFilterByName(_graphBuilder, FilterCategory.BDATransportInformationRenderersCategory, "MPEG-2 Sections and Tables"); //tunerFilter = FilterGraphTools.AddFilterByName(_graphBuilder, FilterCategory.BDASourceFiltersCategory, "Hauppauge WinTV 418 BDA Tuner"); DsDevice tunerDevice = FindDevice(FilterCategory.BDASourceFiltersCategory, "Hauppauge WinTV 418 BDA Tuner"); tunerFilter = FilterGraphTools.AddFilterByDevicePath(_graphBuilder, tunerDevice.DevicePath, tunerDevice.Name); //captureFilter = FilterGraphTools.AddFilterByName(_graphBuilder, FilterCategory.BDAReceiverComponentsCategory, "Hauppauge WinTV 418 TS Capture"); DsDevice captureDevice = FindDevice(FilterCategory.BDAReceiverComponentsCategory, "Hauppauge WinTV 418 TS Capture"); captureFilter = FilterGraphTools.AddFilterByDevicePath(_graphBuilder, captureDevice.DevicePath, captureDevice.Name); //connect network provider to BDA tuner ConnectFilters(networkProvider, "Antenna Out", (IBaseFilter)tunerFilter, "Input0", false); ConnectFilters((IBaseFilter)tunerFilter, "MPEG2 Transport", captureFilter, "MPEG2 Transport", false); //These filters need to be connected via their explicit pins, // because Hauppauge saw fit to name all the pins on the capture filter the same name. IPin captureFilterOut = DsFindPin.ByDirection(captureFilter, PinDirection.Output, 0); IPin mpeg2DemuxIn = DsFindPin.ByDirection(mpeg2Demux, PinDirection.Input, 0); FilterGraphTools.ConnectFilters(_graphBuilder, captureFilterOut, mpeg2DemuxIn, false); //clean up the two pins Marshal.ReleaseComObject(captureFilterOut); Marshal.ReleaseComObject(mpeg2DemuxIn); //add and connect meta data filters and connect them to the Demux ConnectFilters(mpeg2Demux, "1", bdaTransportInfo, "Input", false); ConnectFilters(mpeg2Demux, "5", mpeg2SectionsAndTables, "In", false); //this interface must be queried after the S&T filter has been connected. mpeg2Data = (IMpeg2Data)mpeg2SectionsAndTables; _vctParser = new Parser(mpeg2Data); //build out the rest of the graph for the given source config / profile BuildForProfile(); ConnectNetMuxToNetSnk(); if (KnownChannels.Count > 0) { this.Channel = KnownChannels.Items[0]; } SaveGraphFile("WinTV418ATSC.grf"); }
public WinTVAnalogBase(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _tvConfig = SourceConfig.TVTuner; _deviceIndex = _tvConfig.DeviceIndex; }
public BaseMPEG2TSGraph(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _mux = AddFilterByName(FilterCategory.LegacyAmFilterCategory, @"LEAD MPEG2 Transport Multiplexer"); _sink = AddFilterByName(FilterCategory.LegacyAmFilterCategory, @"LEAD MPEG2 Transport UDP Sink"); }
public BaseDVRSinkGraph(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) : base(sourceConfig, openGraphRequest) { _mux = AddFilterByName(FilterCategory.LegacyAmFilterCategory, @"LEAD MPEG2 Transport Multiplexer"); _sink = AddFilterByName(FilterCategory.LegacyAmFilterCategory, "LEAD DVR Sink"); _sinkControl = (ILMDVRSink)_sink; }
/// <summary> /// Factory method to instantiate graphs /// </summary> /// <param name="sourceConfig">source configuration. the SourceType here specifies the type of graph to instantiate</param> /// <param name="openGraphRequest">parameters regarding the creation of the graph</param> /// <returns>a new instance of the graph requested</returns> public static BaseGraph CreateInstance(StreamSourceInfo sourceConfig, OpenGraphRequest openGraphRequest) { BaseGraph graph; switch (sourceConfig.SourceType) { case SourceType.WinTV150: graph = new WinTV150(sourceConfig, openGraphRequest); break; case SourceType.WinTV418: graph = new WinTV418(sourceConfig, openGraphRequest); break; case SourceType.WinTV418ATSC: graph = new WinTV418ATSC(sourceConfig, openGraphRequest); break; case SourceType.WinTV500: graph = new WinTV500(sourceConfig, openGraphRequest); break; case SourceType.BouncingBallDVR: graph = new BouncingBallDVR(sourceConfig, openGraphRequest); break; case SourceType.CaptureSourceDVR: graph = new CaptureSourceDVR(sourceConfig, openGraphRequest); break; case SourceType.DVRtoMPEG2TS: graph = new DVRtoMPEG2TS(sourceConfig, openGraphRequest); break; case SourceType.DVRLeadNetSink: graph = new DVRLeadNetSink(sourceConfig, openGraphRequest); break; case SourceType.DVRtoDVR: graph = new DVRtoDVR(sourceConfig, openGraphRequest); break; case SourceType.ScreenCapture: graph = new ScreenCapture(sourceConfig, openGraphRequest); break; case SourceType.FastVDODVR: graph = new FastVDODVR(sourceConfig, openGraphRequest); break; case SourceType.MangoDVR: graph = new MangoDVR(sourceConfig, openGraphRequest); break; #if SUPPORT_SRM314 case SourceType.SRM314: graph = new SRM314(sourceConfig, openGraphRequest); break; #endif default: throw new ConfigurationErrorsException(sourceConfig.SourceName + " has invalid SourceType."); } return(graph); }