public IPlayer GetPlayer(MediaItem mediaItem) { string mimeType; string title; if (!mediaItem.GetPlayData(out mimeType, out title)) { return(null); } IResourceLocator locator = mediaItem.GetResourceLocator(); Type playerType = PlayerRegistration.GetPlayerTypeForMediaItem(locator, mimeType); if (playerType == null) { return(null); } IInitializablePlayer player = (IInitializablePlayer)Activator.CreateInstance(playerType); try { player.SetMediaItem(locator, title, mediaItem); } catch (Exception e) { // The file might be broken, so the player wasn't able to play it ServiceRegistration.Get <ILogger>().Warn("{0}: Unable to play '{1}'", e, playerType, locator); IDisposable disposablePlayer = player as IDisposable; if (disposablePlayer != null) { disposablePlayer.Dispose(); } throw; } return((IPlayer)player); }