Пример #1
0
        /// <summary>
        /// Enqueues a play workitem for the given mediaitem.
        /// </summary>
        /// <param name="mediaItem">MediaItem to-be-played item.</param>
        /// <remarks>
        /// The workitem will actually be executed on the controller's mainthread.
        /// </remarks>
        public bool SetMediaItem(MediaItem mediaItem)
        {
            string mimeType;
            string title;

            if (!GetMediaItemPlayData(mediaItem, out mimeType, out title))
            {
                return(false);
            }
            IResourceLocator locator = mediaItem.GetResourceLocator();

            if (!InputSourceFactory.CanPlay(locator, mimeType))
            {
                return(false);
            }

            if (_externalState != PlayerState.Stopped)
            {
                Stop();
            }
            IInputSource inputSource = _inputSourceFactory.CreateInputSource(locator, mimeType);

            if (inputSource == null)
            {
                ServiceRegistration.Get <ILogger>().Warn("Unable to play '{0}'", locator);
                return(false);
            }
            _mediaItemTitle = title;
            _mediaItemId    = mediaItem.MediaItemId;
            _externalState  = PlayerState.Active;
            _controller.MoveToNextItem_Async(inputSource, StartTime.AtOnce);
            return(true);
        }
Пример #2
0
        public IPlayer GetPlayer(MediaItem mediaItem)
        {
            string mimeType;
            string title;

            if (!mediaItem.GetPlayData(out mimeType, out title))
            {
                return(null);
            }
            IResourceLocator locator = mediaItem.GetResourceLocator();

            if (InputSourceFactory.CanPlay(locator, mimeType))
            {
                BassPlayer player = new BassPlayer(_pluginDirectory);
                try
                {
                    player.SetMediaItemLocator(locator, mimeType, title);
                }
                catch (Exception e)
                {
                    ServiceRegistration.Get <ILogger>().Warn("BassPlayerPlugin: Error playing media item '{0}'", e, locator);
                    player.Dispose();
                    return(null);
                }
                return(player);
            }
            return(null);
        }
Пример #3
0
        public void Dispose()
        {
            Log.Debug("Disposing BassPlayer");

            _controller.Dispose();
            _controller = null;
            _inputSourceFactory.Dispose();
            _inputSourceFactory = null;
        }
Пример #4
0
        public IPlayer GetPlayer(MediaItem mediaItem)
        {
            string mimeType;
            string title;

            if (!mediaItem.GetPlayData(out mimeType, out title))
            {
                return(null);
            }

            // Our special player is only used for our mimetype
            if (mimeType != WebRadioPlayerHelper.WEBRADIO_MIMETYPE)
            {
                return(null);
            }

            // Set back to valid audio mimetype
            mimeType = "audio/stream";

            IResourceLocator locator = mediaItem.GetResourceLocator();

            if (InputSourceFactory.CanPlay(locator, mimeType))
            {
                // Bass.BASS_PluginLoad(@"C:\Users\dierk_000\Downloads\basswm24\basswma.dll");

                BassPlayer player = new WebRadioBassPlayer(_pluginDirectory);

                // Config the BASSPlayer to play also .pls and .m3u
                Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PLAYLIST, 1);
                try
                {
                    player.SetMediaItem(mediaItem);
                }
                catch (Exception e)
                {
                    ServiceRegistration.Get <ILogger>().Warn("WebRadioBassPlayer: Error playing media item '{0}'", e, locator);
                    player.Dispose();
                    return(null);
                }
                return(player);
            }
            return(null);
        }
Пример #5
0
 public BassPlayer()
 {
     _controller         = new Controller(this);
     _inputSourceFactory = new InputSourceFactory();
     _externalState      = PlayerState.Stopped;
 }
Пример #6
0
 public BassPlayer(string playerMainDirectory)
 {
     _controller         = new Controller(this, playerMainDirectory);
     _inputSourceFactory = new InputSourceFactory();
     _externalState      = PlayerState.Stopped;
 }