void RulesClick(ChannelLinkEventArgs evarg) { ReleaseViewModels(RegionNames.reg_property); ContentColumn column = new ContentColumn(); ShowView(column, "RulesClick", RegionNames.reg_property); column.CreateBinding(ContentColumn.TitleProperty, LinkButtonsStrings.instance, x => x.ruleEngine); var ctx = CreateActivityContext(RegionNames.reg_property, evarg.session, column); //TODO: Stub fix for #225 Remove this with plugin functionality ILastChangedModule lmodule = new LastChangedModule(); ctx.RegisterInstance<ILastChangedModule>(lmodule); // StreamInfoHelper strinfo = new StreamInfoHelper(); strinfo.streamInfo = () => { return Apm.Iterate(LoadStreamInfoNVT(evarg, strinfo)); }; ctx.RegisterInstance<IStreamInfoHelper>(strinfo); Ctxdisp = ctx; ctx.RegisterInstance<IVideoInfo>(evarg.videoInfo); ctx.RegisterInstance<odm.ui.activities.AnalyticsView.AnalyticType>(odm.ui.activities.AnalyticsView.AnalyticType.RULE); string token = null; if (evarg.profile.videoAnalyticsConfiguration != null) token = evarg.profile.videoAnalyticsConfiguration.token; UIdisp = AnalyticsActivity .Run(ctx, token) .Subscribe(x => { //TODO: handle return from activity }, err => { dbg.Error(err); }); }
IEnumerable<FSharpAsync<Unit>> LoadStreamInfoNVT(ChannelLinkEventArgs args, StreamInfoHelper parent) { StreamInfoArgs strInfoArgs = new StreamInfoArgs(args.session); strInfoArgs.encoderResolution = new Size(args.profile.videoEncoderConfiguration.resolution.width, args.profile.videoEncoderConfiguration.resolution.height); var strsetup = new StreamSetup() { stream = StreamType.rtpUnicast, transport = new Transport() { protocol = AppDefaults.visualSettings.Transport_Type } }; strInfoArgs.streamSetup = strsetup; yield return args.session.GetStreamUri(strsetup, args.profile.token).Select(muri => { strInfoArgs.streamUri = muri.uri; parent.args = strInfoArgs; return (Unit)null; }); yield return args.session.GetVideoSourceConfiguration(args.profile.videoSourceConfiguration.token).Select(conf => { if (conf != null && conf.bounds != null) strInfoArgs.sourceResolution = new Size(conf.bounds.width, conf.bounds.height); else { strInfoArgs.sourceResolution = new Size(720, 576); } return (Unit)null; }); }
void NVAMetadataClick(NVALinkEventArgs evarg) { ReleaseViewModels(RegionNames.reg_property); ContentColumn column = new ContentColumn(); ShowView(column, "MetadataClick", RegionNames.reg_property); column.CreateBinding(ContentColumn.TitleProperty, LinkButtonsStrings.instance, x => x.nvaMetadata); var ctx = CreateActivityContext(RegionNames.reg_property, evarg.session, column); StreamInfoHelper strinfo = new StreamInfoHelper(); strinfo.streamInfo = () => { return Apm.Iterate(LoadStreamInfoNVA(evarg, strinfo)); }; ctx.RegisterInstance<IStreamInfoHelper>(strinfo); Ctxdisp = ctx; StreamSetup ssetup = new StreamSetup() { transport = new Transport() { protocol = AppDefaults.visualSettings.Transport_Type } }; //EngineControlsView.Start(new EngineControlsView.Model(null, null), container, column); UIdisp = NvaMetadataSettingsActivity .Run(ctx, evarg.control.token, evarg.control.engineConfigToken, ssetup) .ObserveOnCurrentDispatcher() .Subscribe(x => { }, err => { dbg.Error(err); }); }
void LiveVideoClick(ChannelLinkEventArgs evarg) { ReleaseViewModels(RegionNames.reg_property); ContentColumn column = new ContentColumn(); ShowView(column, "LiveVideoClick", RegionNames.reg_property); column.CreateBinding(ContentColumn.TitleProperty, LinkButtonsStrings.instance, x => x.liveVideo); var ctx = CreateActivityContext(RegionNames.reg_property, evarg.session, column); StreamInfoHelper strinfo = new StreamInfoHelper(); strinfo.streamInfo = () => { return Apm.Iterate(LoadStreamInfoNVT(evarg, strinfo)); }; ctx.RegisterInstance<IStreamInfoHelper>(strinfo); Ctxdisp = ctx; ctx.RegisterInstance<IVideoInfo>(evarg.videoInfo); string videoSourceToken = evarg.token; string profToken = evarg.profile.token; UIdisp = LiveVideoActivity .Run(ctx, profToken, videoSourceToken) .Subscribe(x => { eventAggregator.GetEvent<VideoChangedEvent>().Publish(evarg); }, err => { dbg.Error(err); }); }
IEnumerable<FSharpAsync<Unit>> LoadStreamInfoNVA(NVALinkEventArgs args, StreamInfoHelper parent) { StreamInfoArgs strInfoArgs = new StreamInfoArgs(args.session); //strInfoArgs.encoderResolution = new Size(args.profile.VideoEncoderConfiguration.Resolution.Width, args.profile.VideoEncoderConfiguration.Resolution.Height); StreamSetup strsetup = new StreamSetup() { stream = StreamType.rtpUnicast, transport = new Transport() { protocol = AppDefaults.visualSettings.Transport_Type }, }; strInfoArgs.streamSetup = strsetup; yield return args.session.GetAnalyticsDeviceStreamUri(strsetup, args.control.token).Select(muri => { strInfoArgs.streamUri = muri; parent.args = strInfoArgs; return (Unit)null; }); var inputtoken = ""; try { inputtoken = args.control.inputToken.First(); } catch (Exception err) { dbg.Error(err); } yield return args.session.GetAnalyticsEngineInput(inputtoken).Select(inp => { strInfoArgs.encoderResolution = new Size(inp.videoInput.resolution.width, inp.videoInput.resolution.height); strInfoArgs.sourceResolution = new Size(inp.videoInput.resolution.width, inp.videoInput.resolution.height); return (Unit)null; }); }