Beispiel #1
0
        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);
            });
        }
Beispiel #2
0
        void NVAAnalyticsClick(NVALinkEventArgs evarg)
        {
            ReleaseViewModels(RegionNames.reg_property);

            ContentColumn column = new ContentColumn();

            ShowView(column, "AnalyticsClick", RegionNames.reg_property);
            column.CreateBinding(ContentColumn.TitleProperty, LinkButtonsStrings.instance, x => x.analytics);
            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(LoadStreamInfoNVA(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.ALL);

            //evarg.controlToken

            string token = null;

            if (evarg.control != null)
            {
                token = evarg.control.engineConfigToken;
            }

            UIdisp = AnalyticsActivity
                     .Run(ctx, token)           //evarg.profileToken)
                     .Subscribe(x => {
                //TODO: handle return from activity
            }, err => {
                dbg.Error(err);
            });
        }
Beispiel #3
0
        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;
            }));
        }
Beispiel #4
0
        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);
            });
        }
Beispiel #5
0
        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;
            }));
        }