mirror of
				https://github.com/chylex/TweetDuck.git
				synced 2025-10-31 18:17:15 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Runtime.InteropServices;
 | |
| using TweetLib.Audio.Impl;
 | |
| 
 | |
| namespace TweetLib.Audio{
 | |
|     public abstract class AudioPlayer : IDisposable{
 | |
|         private static bool? IsWMPAvailable;
 | |
| 
 | |
|         public static AudioPlayer New(){
 | |
|             if (IsWMPAvailable.HasValue){
 | |
|                 if (IsWMPAvailable.Value){
 | |
|                     return new SoundPlayerImplWMP();
 | |
|                 }
 | |
|                 else{
 | |
|                     return new SoundPlayerImplFallback();
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             try{
 | |
|                 SoundPlayerImplWMP implWMP = new SoundPlayerImplWMP();
 | |
|                 IsWMPAvailable = true;
 | |
|                 return implWMP;
 | |
|             }catch(COMException){
 | |
|                 IsWMPAvailable = false;
 | |
|                 return new SoundPlayerImplFallback();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public abstract string SupportedFormats { get; }
 | |
|         public abstract event EventHandler<PlaybackErrorEventArgs> PlaybackError;
 | |
| 
 | |
|         public abstract void Play(string file);
 | |
|         public abstract bool SetVolume(int volume);
 | |
|         protected abstract void Dispose(bool disposing);
 | |
| 
 | |
|         public void Dispose(){
 | |
|             Dispose(true);
 | |
|             GC.SuppressFinalize(this);
 | |
|         }
 | |
|     }
 | |
| }
 |