Gizmo3D

gzAudioSource.h

Go to the documentation of this file.
00001 //*****************************************************************************
00002 // File         : gzAudioSource.h
00003 // Module       : 
00004 // Description  : Class definition of the gzAudioSource class
00005 // Author       : Anders Modén      
00006 // Product      : Gizmo3D 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden
00009 //          
00010 // NOTE:    Gizmo3D is a high performance 3D Scene Graph and effect visualisation 
00011 //          C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for  
00012 //          usage in Game or VisSim development.
00013 //
00014 //
00015 // Revision History...                          
00016 //                                  
00017 // Who  Date    Description                     
00018 //                                  
00019 // AMO  060801  Created file    
00020 //
00021 //******************************************************************************
00022 #ifndef __GZ_AUDIO_SOURCE_H__
00023 #define __GZ_AUDIO_SOURCE_H__
00024 
00030 #include "gzNode.h"
00031 #include "gzThread.h"
00032 
00033 
00034 enum gzAudioSourceFormat
00035 {
00036     GZ_AUDIO_SOURCE_FORMAT_MONO_8       =   GZ_AUDIO_FORMAT_MONO8,
00037     GZ_AUDIO_SOURCE_FORMAT_MONO_16      =   GZ_AUDIO_FORMAT_MONO16,
00038     GZ_AUDIO_SOURCE_FORMAT_STEREO_8     =   GZ_AUDIO_FORMAT_STEREO8,
00039     GZ_AUDIO_SOURCE_FORMAT_STEREO_16    =   GZ_AUDIO_FORMAT_STEREO16,
00040     GZ_AUDIO_SOURCE_FORMAT_INVALID,
00041 };
00042 
00043 enum gzAudioSourceState
00044 {
00045     GZ_AUDIO_SOURCE_INITIAL=GZ_AUDIO_INITIAL,
00046     GZ_AUDIO_SOURCE_PLAYING=GZ_AUDIO_PLAYING,
00047     GZ_AUDIO_SOURCE_PAUSED=GZ_AUDIO_PAUSED,
00048     GZ_AUDIO_SOURCE_STOPPED=GZ_AUDIO_STOPPED,
00049     GZ_AUDIO_SOURCE_ERROR
00050 };
00051 
00052 //******************************************************************************
00053 // Class    : gzAudioSource
00054 //                                  
00055 // Purpose  : -
00056 //                                  
00057 // Notes    : - 
00058 //                                  
00059 // Revision History...                          
00060 //                                  
00061 // Who  Date    Description                     
00062 //                                  
00063 // AMO  060801  Created 
00064 //                                  
00065 //******************************************************************************
00066 class gzAudioSource : public gzNode
00067 {
00068 public:
00069     GZ_GRAPH_EXPORT gzAudioSource(const gzString &name=GZ_EMPTY_STRING);
00070 
00071     GZ_GRAPH_EXPORT virtual ~gzAudioSource();
00072 
00073     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_GRAPH_EXPORT);  // typed interface
00074 
00075     // ---------- Common graph functions --------------------------------
00076 
00077     GZ_GRAPH_EXPORT virtual gzVoid updateNode();
00078 
00079     // ---------- Clone interface ---------------------------------------
00080     GZ_GRAPH_EXPORT virtual gzReference* clone() const;
00081 
00082     // ---------- gzAudioSource commands ------------------------------
00083 
00084     GZ_GRAPH_EXPORT gzBool addData(gzAudioSourceFormat format , gzVoid *data , gzULong samples , gzULong frequency , gzUByte stride=0);
00085 
00086     GZ_GRAPH_EXPORT gzBool play(const gzFloat &offset=0.0);
00087     GZ_GRAPH_EXPORT gzBool pause();
00088     GZ_GRAPH_EXPORT gzBool resume();
00089     GZ_GRAPH_EXPORT gzBool stop();
00090 
00091     GZ_GRAPH_EXPORT gzBool loop(gzBool on=FALSE);
00092 
00093     GZ_GRAPH_EXPORT gzAudioSourceState getAudioSourceState();
00094 
00095     // ---------- Synced control --------------------------------------
00096 
00097     GZ_GRAPH_EXPORT static  gzBool play(const gzRefList<gzAudioSource> &sources,const gzFloat &offset=0.0);
00098     GZ_GRAPH_EXPORT static  gzBool pause(const gzRefList<gzAudioSource> &sources);
00099     GZ_GRAPH_EXPORT static  gzBool resume(const gzRefList<gzAudioSource> &sources);
00100     GZ_GRAPH_EXPORT static  gzBool stop(const gzRefList<gzAudioSource> &sources);
00101 
00102     // ---------- Scene Graph or immediate commands -------------------
00103 
00104     GZ_GRAPH_EXPORT gzBool  setPosition(const gzVec3 &position , gzBool immediate=FALSE);
00105     GZ_GRAPH_EXPORT gzBool  setOrientation(gzReal heading,gzReal pitch,gzReal roll,gzBool immediate=FALSE);
00106     GZ_GRAPH_EXPORT gzBool  setDirection(const gzVec3 &targetvector, gzReal roll , const gzVec3 &up=gzVec3(0,1,0),gzBool immediate=FALSE);
00107 
00108     // ---------- Buffer management -----------------------------------
00109 
00110     GZ_GRAPH_EXPORT gzVoid cleanBuffers();
00111 
00113     GZ_GRAPH_EXPORT gzInt getPendingBuffers();
00114     
00115     // ---------- Action Interface ------------------------------------
00116 
00117     GZ_GRAPH_EXPORT virtual gzVoid preTraverseAction( gzTraverseAction *actionclass , gzContext *context);
00118 
00119 protected:
00120 
00121     GZ_GRAPH_EXPORT gzUInt init();
00122 
00123     gzUInt  m_sourceID;
00124     gzVec3  m_position;
00125     gzVec3  m_orientation;
00126     
00127     gzDynamicArray<gzUByte> m_buffer;
00128 
00129 };
00130 
00131 // ----------------------- gzAudioStreamPlayer -------------------------
00132 
00133 class gzAudioStreamPlayer : public gzThreadTicker
00134 {
00135 public:
00136 
00137     GZ_GRAPH_EXPORT gzAudioStreamPlayer(gzAudioSource *leftSource,gzAudioSource *rightSource=NULL);
00138     GZ_GRAPH_EXPORT virtual ~gzAudioStreamPlayer();
00139 
00140     GZ_PROPERTY_EXPORT(gzAudioSourceFormat,Format,GZ_GRAPH_EXPORT);
00141     GZ_PROPERTY_EXPORT(gzAudioSourceFormat,Frequency,GZ_GRAPH_EXPORT);
00142 
00143     GZ_GRAPH_EXPORT gzVoid play();
00144     GZ_GRAPH_EXPORT gzVoid stop();
00145 
00146     GZ_GRAPH_EXPORT gzBool setStream(gzSerializeAdapter *adapter);
00147 
00148     GZ_GRAPH_EXPORT virtual gzVoid onTick();
00149 
00150 
00151 private:
00152 
00153     gzRefPointer<gzAudioSource>         m_leftSource;
00154     gzRefPointer<gzAudioSource>         m_rightSource;
00155     gzRefPointer<gzReference>           m_extSoundManager;
00156     gzRefPointer<gzSerializeAdapter>    m_adapter;
00157     gzDynamicArray<gzUByte>             m_buffer;
00158 };
00159 
00160 #endif // __GZ_AUDIO_SOURCE_H__
00161 

Documentation for Gizmo3D generated at Wed Feb 20 11:54:02 2008 by   Saab Training Systems AB, ¸ (c) 2003-and beyond