コード例 #1
0
        public IPlayer GetPlayer(MediaItem mediaItem)
        {
            string mimeType;
            string title;

            if (!mediaItem.GetPlayData(out mimeType, out title))
            {
                return(null);
            }
            if (mimeType != LiveTvMediaItem.MIME_TYPE_TV && mimeType != LiveTvMediaItem.MIME_TYPE_RADIO)
            {
                return(null);
            }
            IResourceLocator locator = mediaItem.GetResourceLocator();
            BaseDXPlayer     player  = mimeType == LiveTvMediaItem.MIME_TYPE_TV ? (BaseDXPlayer) new LiveTvPlayer() : new LiveRadioPlayer(true);

            try
            {
                player.SetMediaItem(locator, title);
            }
            catch (Exception e)
            {
                ServiceRegistration.Get <ILogger>().Warn("SlimTvPlayerBuilder: Error playing media item '{0}'", e, locator);
                player.Dispose();
                return(null);
            }
            return(player);
        }
コード例 #2
0
        public TsReaderStreamInfoHandler(ISubtitleStream subtitleStream)
        {
            if (subtitleStream == null)
            {
                return;
            }

            int count = 0;

            _subtitleStream = subtitleStream;
            subtitleStream.GetSubtitleStreamCount(ref count);
            if (count > 0)
            {
                StreamInfo subStream = new StreamInfo(null, NO_STREAM_INDEX, VideoPlayer.NO_SUBTITLES, 0);
                AddUnique(subStream);
            }
            for (int i = 0; i < count; ++i)
            {
                //FIXME: language should be passed back also as LCID
                SubtitleLanguage language = new SubtitleLanguage();
                subtitleStream.GetSubtitleStreamLanguage(i, ref language);
                int lcid = BaseDXPlayer.LookupLcidFromName(language.lang);
                // Note: the "type" is no longer considered in MP1 code as well, so I guess DVBSub3 only supports Bitmap subs at all.
                string     name      = language.lang;
                StreamInfo subStream = new StreamInfo(null, i, name, lcid);
                AddUnique(subStream);
            }
        }
コード例 #3
0
        public TsReaderTeletextInfoHandler(ITeletextSource teletextSource)
        {
            if (teletextSource == null)
            {
                return;
            }
            int teletextStreamCount = 0;

            _teletextSource = teletextSource;
            teletextSource.GetTeletextStreamCount(ref teletextStreamCount);
            if (teletextStreamCount > 0)
            {
                StreamInfo subStream = new StreamInfo(null, NO_STREAM_INDEX, VideoPlayer.GetNoSubsName(), 0);
                AddUnique(subStream);
            }
            for (int i = 0; i < teletextStreamCount; ++i)
            {
                //FIXME: language should be passed back also as LCID
                SubtitleLanguage language = new SubtitleLanguage();
                teletextSource.GetTeletextStreamLanguage(i, ref language);
                int        lcid      = BaseDXPlayer.LookupLcidFromName(language.lang);
                string     name      = language.lang;
                StreamInfo subStream = new StreamInfo(null, i, name, lcid);
                AddUnique(subStream);
            }
        }
コード例 #4
0
        public void StartBackgroundPlayback()
        {
            if (!IsEnabled)
            {
                return;
            }

            IScreenControl screenControl = ServiceRegistration.Get <IScreenControl>();
            IVideoPlayerSynchronizationStrategy current = screenControl.VideoPlayerSynchronizationStrategy;

            if (current != _backgroundPlayerStrategy)
            {
                // We replace the default strategy with our own to prefer the video background player.
                screenControl.VideoPlayerSynchronizationStrategy = _backgroundPlayerStrategy;
            }

            IPlayerManager playerManager = ServiceRegistration.Get <IPlayerManager>();

            if (_backgroundPsc == null)
            {
                _backgroundPsc = playerManager.OpenSlot();
            }

            if (_backgroundPsc == null)
            {
                return;
            }

            // If we already have a player active, don't start a new one.
            IPlayer currentPlayer = _backgroundPsc.CurrentPlayer;

            if (currentPlayer != null && currentPlayer.State == PlayerState.Active)
            {
                return;
            }

            try
            {
                _backgroundPsc.Play(_video, StartTime.AtOnce);
                BaseDXPlayer player = _backgroundPsc.CurrentPlayer as BaseDXPlayer;
                if (player != null)
                {
                    player.AutoRepeat = true;
                }

                VideoPlayer = player as ISharpDXVideoPlayer;
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Error("VideoBackgroundModel: Error opening MediaItem {0} for background playback!", ex, _videoFilename);
            }
        }
コード例 #5
0
        public MpcStreamInfoHandler()
        {
            var subtitleCount = MpcSubtitles.GetCount();

            for (int i = 0; i < subtitleCount; ++i)
            {
                string     subtitleTrackName = MpcSubtitles.GetTrackName(i);
                int        lcid      = BaseDXPlayer.LookupLcidFromName(subtitleTrackName);
                StreamInfo subStream = new StreamInfo(null, i, subtitleTrackName, lcid);
                AddUnique(subStream);
            }
            AddUnique(new StreamInfo(null, subtitleCount + 1, VideoPlayer.NO_SUBTITLES, 0));
        }