00001 // 00002 // CascadeWAVPlayer.h - header file for class CascadeWAVPlayer 00003 // 00004 // Copyright (c) 2003, Roku, LLC. All rights reserved. 00005 // 00008 00009 #ifndef _ROKU_INCLUDE_CASCADE_AV_CASCADEWAVPLAYER_H 00010 #define _ROKU_INCLUDE_CASCADE_AV_CASCADEWAVPLAYER_H 00011 00012 #include <cascade/CascadeObject.h> 00013 #include <cascade/av/CascadeAudioPlaybackDevice.h> 00014 #include <cascade/util/CascadeFile.h> 00015 00017 // A quick forward declaration for my private friend 00018 #ifndef DOXY_SKIP 00019 namespace CascadePrivate { class WAVPlayer; } 00020 #endif 00021 00032 class CascadeWAVPlayer : public CascadeObject 00033 { 00034 public: 00035 CascadeWAVPlayer(); 00039 virtual ~CascadeWAVPlayer(); 00043 public: 00044 virtual bool Play(CascadeFile & file, CascadeAudioPlaybackDevice & device); 00051 virtual bool Stop(); 00056 virtual bool Pause(); 00061 virtual bool ResumePlayback(); 00066 virtual bool SetVolume(u16 nVolume); 00074 virtual bool IsPlaying(); 00079 virtual bool IsStopped(); 00084 virtual bool IsPaused(); 00089 virtual u32 GetDuration(); 00094 public: 00095 typedef enum 00096 { 00097 kUnknown = 0, 00098 kUnsupportedSampleRate = 1, 00099 kUnsupportedBitsPerSample = 2, 00100 kUnsupportedNumChannels = 3, 00101 } PlaybackError; 00109 protected: 00110 virtual void OnPlaybackBegin(); 00115 virtual void OnPlaybackEnd(); 00120 virtual void OnSecondTick(u32 nSecond); 00126 virtual void OnPlaybackError(PlaybackError error, u32 nErrorData); 00143 private: 00144 void * m_pPlayerInternal; 00145 #ifndef DOXY_SKIP 00146 friend class CascadePrivate::WAVPlayer; 00147 #endif 00148 }; 00149 00150 #endif // #ifndef _ROKU_INCLUDE_CASCADE_AV_CASCADEWAVPLAYER_H 00151 00153 // LO 00155 // 07-Nov-03 narayan created from CascadeMP3Player.h 00156 // 27-Jan-04 dwoodward added OnPlaybackError