/// <summary>
        /// Initializes the SMFLogger and attaches the SMFPlayer to it.
        /// </summary>
        /// <param name="player">An instance of SMFPlayer</param>
        public void SetPlayer(FrameworkElement player)
        {
            if (!IsLoaded)
            {
                Load();
            }

            SMFPlayer smfPlayer = player as SMFPlayer;

            if (monitor == null)
            {
                var metadata = smfPlayer.GlobalConfigMetadata.FirstOrDefault(item => item.Key == MetaDataItemId);
                if (metadata != null)
                {
                    Uri configUri = new Uri(Convert.ToString(metadata.Value), UriKind.Relative);
                    LoadHealthMonitor(configUri);
                }
                else
                {
                    LoadHealthMonitor();
                }
            }

            monitor.AttachToSMF(smfPlayer);
        }
        protected JavascriptBridge(SMFPlayer player, string scriptableName)
        {
            _player = player;
            _scriptableName = scriptableName;
            HtmlPage.RegisterScriptableObject(scriptableName, this);
            _player.TimelineMarkerReached += Player_MarkerReached;
            _player.AddExternalPluginsCompleted += Player_AddExternalPluginsCompleted;
            _player.AddExternalPluginsFailed += Player_AddExternalPluginsFailed;
			_player.PlaybackPositionChanged += Player_PlaybackPositionChanged;
            _player.PlayStateChanged += Player_PlayStateChanged;
            _player.PlaySpeedStateChanged += Player_PlaySpeedStateChanged;
            _player.TimelineMarkerLeft += Player_MarkerLeft;
            _player.TimelineMarkerSkipped += Player_MarkerSkipped;
            _player.FullScreenChanged += Player_FullScreenChanged;
            _player.PlaylistChanged += Player_PlaylistChanged;
            _player.PlaylistItemChanged += Player_PlaylistItemChanged;
            _player.MediaFailed += Player_MediaFailed;
            _player.MediaEnded += Player_MediaEnded;
            _player.MediaOpened += Player_MediaOpened;
			_player.VolumeLevelChanged += Player_VolumeLevelChanged;
			_player.SeekCompleted += Player_SeekCompleted;
			Application.Current.Exit += Application_Exit;

            try
            {
                HtmlPage.Window.Invoke("onPlayerReady", this);
            }
            catch
            {
                // ignore this exception, it will happen if the page doesn't have a onPlayerReady function.
            }
        }
        protected JavascriptBridge(SMFPlayer player, string scriptableName)
        {
            _player         = player;
            _scriptableName = scriptableName;
            HtmlPage.RegisterScriptableObject(scriptableName, this);
            _player.TimelineMarkerReached       += Player_MarkerReached;
            _player.AddExternalPluginsCompleted += Player_AddExternalPluginsCompleted;
            _player.AddExternalPluginsFailed    += Player_AddExternalPluginsFailed;
            _player.PlaybackPositionChanged     += Player_PlaybackPositionChanged;
            _player.PlayStateChanged            += Player_PlayStateChanged;
            _player.PlaySpeedStateChanged       += Player_PlaySpeedStateChanged;
            _player.TimelineMarkerLeft          += Player_MarkerLeft;
            _player.TimelineMarkerSkipped       += Player_MarkerSkipped;
            _player.FullScreenChanged           += Player_FullScreenChanged;
            _player.PlaylistChanged             += Player_PlaylistChanged;
            _player.PlaylistItemChanged         += Player_PlaylistItemChanged;
            _player.MediaFailed        += Player_MediaFailed;
            _player.MediaEnded         += Player_MediaEnded;
            _player.MediaOpened        += Player_MediaOpened;
            _player.VolumeLevelChanged += Player_VolumeLevelChanged;
            _player.SeekCompleted      += Player_SeekCompleted;
            Application.Current.Exit   += Application_Exit;

            try
            {
                HtmlPage.Window.Invoke("onPlayerReady", this);
            }
            catch
            {
                // ignore this exception, it will happen if the page doesn't have a onPlayerReady function.
            }
        }
Пример #4
0
        void smfPlayer_AudioStreamChanged(object sender, CustomEventArgs <Core.Media.StreamMetadata> e)
        {
            SMFPlayer smfPlayer = sender as SMFPlayer;
            var       audioLog  = new AudioTrackChangedLog(e.Value.Language);

            healthMonitorLogger.PopulateVideoEventLog(audioLog);
            audioLog.MediaElementId = ssme.Name;
            audioLog.IsLive         = smfPlayer.IsPositionLive;
            LoggingService.Current.Log(audioLog);
        }
        internal static JavascriptBridge Initialize(SMFPlayer player, string scriptableName)
        {
            JavascriptBridge bridge = null;

            if (HtmlPage.IsEnabled && !Instances.ContainsKey(scriptableName))
            {
                bridge = new JavascriptBridge(player, scriptableName);
                Instances.Add(scriptableName, bridge);
            }
            return(bridge);
        }
Пример #6
0
        /// <summary>
        /// Detaches the SMFPlayer so it no longer monitored.
        /// </summary>
        /// <param name="smfPlayer"></param>
        public void DetachFromSMF(SMFPlayer smfPlayer)
        {
            smfPlayer.CaptionsVisibilityChanged -= smfPlayer_CaptionsVisibilityChanged;
            smfPlayer.AudioStreamChanged        -= smfPlayer_AudioStreamChanged;
            smfPlayer.RetryFailed         -= smfPlayer_RetryFailed;
            smfPlayer.RetrySuccessful     -= smfPlayer_RetrySuccessful;
            smfPlayer.PlayStateChanged    -= smfPlayer_PlayStateChanged;
            smfPlayer.PlaylistItemChanged -= smfPlayer_PlaylistItemChanged;

            DetachFromMediaElement();
        }
Пример #7
0
        void smfPlayer_RetryFailed(object sender, EventArgs e)
        {
            SMFPlayer smfPlayer      = sender as SMFPlayer;
            var       retryFailedLog = new RetryFailedLog();

            healthMonitorLogger.PopulateVideoEventLog(retryFailedLog);
            retryFailedLog.EdgeIP         = healthMonitor.EdgeServer;
            retryFailedLog.MediaElementId = ssme.Name;
            retryFailedLog.IsLive         = smfPlayer.IsPositionLive;
            LoggingService.Current.Log(retryFailedLog);
        }
Пример #8
0
        void smfPlayer_CaptionsVisibilityChanged(object sender, EventArgs e)
        {
            SMFPlayer smfPlayer = sender as SMFPlayer;

            if (CaptionsVisibility != smfPlayer.CaptionsVisibility)
            {
                // only log when the state has changed, this weeds out the initial state
                CaptionsVisibility = smfPlayer.CaptionsVisibility;
                var ccLog = new ClosedCaptionChangedLog(smfPlayer.CaptionsVisibility == FeatureVisibility.Visible);
                healthMonitorLogger.PopulateSimpleVideoLog(ccLog);
                LoggingService.Current.Log(ccLog);
            }
        }
        /// <summary>
        /// Provides a mechanism to pass the SMF player to the plugin.
        /// </summary>
        /// <param name="player"></param>
        public void SetPlayer(FrameworkElement player)
        {
            smfPlayer = player as SMFPlayer;
            smfPlayer.PlaylistItemChanged += smfPlayer_PlaylistItemChanged;
#if !OOB
            smfPlayer.FullScreenChanged += smfPlayer_FullScreenChanged;
#endif
            smfPlayer.SizeChanged            += smfPlayer_SizeChanged;
            smfPlayer.PlaybackBitrateChanged += smfPlayer_PlaybackBitrateChanged;
            smfPlayer.PlayStateChanged       += smfPlayer_PlayStateChanged;
            smfPlayer.MediaPluginRegistered  += smfPlayer_MediaPluginRegistered;

            InitializeAnaglyphSetup();
        }
Пример #10
0
        /// <summary>
        /// Attaches the SMFPlayer so it can be monitored
        /// </summary>
        public void AttachToSMF(SMFPlayer smfPlayer)
        {
            smfPlayer.LogLevel = LogLevel.Information;
            CaptionsVisibility = smfPlayer.CaptionsVisibility;
            smfPlayer.CaptionsVisibilityChanged += smfPlayer_CaptionsVisibilityChanged;
            smfPlayer.AudioStreamChanged        += smfPlayer_AudioStreamChanged;
            smfPlayer.RetryFailed         += smfPlayer_RetryFailed;
            smfPlayer.RetrySuccessful     += smfPlayer_RetrySuccessful;
            smfPlayer.PlayStateChanged    += smfPlayer_PlayStateChanged;
            smfPlayer.PlaylistItemChanged += smfPlayer_PlaylistItemChanged;
#if PROGRAMMATICCOMPOSITION
            // get a list of logagents from the players generic plugins
            var logAgents = ((IPlayer)smfPlayer).Plugins.OfType <ILogAgent>().ToList();
            // merge the plugins with the existing ones
            LoggingService.Current.Agents = LoggingService.Current.Agents.Concat(logAgents).Distinct();
#endif
        }
Пример #11
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            var player = new SMFPlayer();

            if (e.InitParams != null)
            {
                if (!e.InitParams.ContainsKeyIgnoreCase(SupportedInitParams.DeliveryMethod))
                {
                    e.InitParams.Add(SupportedInitParams.DeliveryMethod, DeliveryMethods.ProgressiveDownload.ToString());
                }

                player.LoadInitParams(e.InitParams);
                player.PlaylistVisibility = player.Playlist != null && player.Playlist.Count > 1
                                         ? FeatureVisibility.Hidden
                                         : FeatureVisibility.Disabled;

                player.CaptionsVisibility = e.InitParams.ContainsKeyIgnoreCase(SupportedInitParams.SelectedCaptionStream)
                                        ? FeatureVisibility.Visible
                                        : FeatureVisibility.Disabled;
            }

            this.RootVisual = player;
        }
Пример #12
0
        void smfPlayer_PlayStateChanged(object sender, CustomEventArgs <MediaPluginState> e)
        {
            SMFPlayer player = (SMFPlayer)sender;

            if (e.Value == MediaPluginState.Opening || e.Value == MediaPluginState.Playing)
            {
                var cc = FindMediaPresenter(player);
                if (cc != null)
                {
                    var mediaElement = cc.Content as SmoothStreamingMediaElement;
                    if (mediaElement != null && mediaElement != ssme)
                    {
                        AttachToMediaElement(mediaElement);
                    }
                }
            }
            else if ((e.Value == MediaPluginState.Stopped) && ssme != null)
            {
                if (IsAttached)
                {
                    DetachFromMediaElement();
                }
            }
        }
 internal static JavascriptBridge Initialize(SMFPlayer player, string scriptableName)
 {
     JavascriptBridge bridge = null;
     if (HtmlPage.IsEnabled && !Instances.ContainsKey(scriptableName))
     {
         bridge = new JavascriptBridge(player, scriptableName);
         Instances.Add(scriptableName, bridge);
     }
     return bridge;
 }
 public void SetPlayer(FrameworkElement player)
 {
     _player = player as SMFPlayer;
 }