Beispiel #1
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);
        }
Beispiel #2
0
        /// <summary>
        /// Update external state and tell MP that the current media item ended.
        /// </summary>
        public void PlaybackEnded_Async()
        {
            BassPlayer player = _player;

            if (player == null)
            {
                return;
            }
            EnqueueWorkItem(new WorkItem(new WorkItemDelegate(player.PlaybackEnded)));
        }
Beispiel #3
0
        /// <summary>
        /// Make MP provide the next audio item.
        /// </summary>
        public void RequestNextMediaItem_Async()
        {
            BassPlayer player = _player;

            if (player == null)
            {
                return;
            }
            EnqueueWorkItem(new WorkItem(new WorkItemDelegate(player.RequestNextMediaItemFromSystem)));
        }
Beispiel #4
0
        /// <summary>
        /// Initializes a new instance of the BASS player controller.
        /// </summary>
        /// <param name="player">BASS player instance which contains this controller instance.</param>
        /// <param name="playerMainDirectory">Directory where the BASS player is located. Plugins will be searched relative
        /// to this directory.</param>
        public Controller(BassPlayer player, string playerMainDirectory)
        {
            Log.Debug("Initializing BASS controller");
            _player = player;

            _bassLibraryManager = BassLibraryManager.Get(Path.Combine(playerMainDirectory, InternalSettings.PluginsPath));

            _playbackProcessor   = new PlaybackProcessor(this);
            _outputDeviceManager = new OutputDeviceManager(this);

            _mainThreadTerminated = false;

            _workItemQueue = new WorkItemQueue();

            _playerThread = new Thread(PlayerThreadMain)
            {
                Name = "BassPlay"
            };
            _playerThread.Start();

            SetVolume_Async(100);
        }
 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;
 }
Beispiel #6
0
    /// <summary>
    /// Initializes a new instance of the BASS player controller.
    /// </summary>
    /// <param name="player">BASS player instance which contains this controller instance.</param>
    /// <param name="playerMainDirectory">Directory where the BASS player is located. Plugins will be searched relative
    /// to this directory.</param>
    public Controller(BassPlayer player, string playerMainDirectory)
    {
      Log.Debug("Initializing BASS controller");
      _player = player;

      _bassLibraryManager = BassLibraryManager.Get(Path.Combine(playerMainDirectory, InternalSettings.PluginsPath));

      _playbackProcessor = new PlaybackProcessor(this);
      _outputDeviceManager = new OutputDeviceManager(this);

      _mainThreadTerminated = false;

      _workItemQueue = new WorkItemQueue();

      _playerThread = new Thread(PlayerThreadMain) {Name = "BassPlay"};
      _playerThread.Start();

      SetVolume_Async(100);
    }