Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

FSound.h

Go to the documentation of this file.
00001 #ifndef FSOUND_H_FILE
00002 #define FSOUND_H_FILE
00003 
00004 #include "FBase.h"
00005 #include <vector>
00006 #include <iostream>
00007 
00008 
00009 #define FTDS_COMPRESS_NONE              (0 << 4)
00010 #define FTDS_COMPRESS_ADPCM             (1 << 4)
00011 #define FTDS_COMPRESS_MP3               (2 << 4)
00012 
00013 #define FTDS_RATE_5_5_KHZ               (0 << 2)
00014 #define FTDS_RATE_11_KHZ                (1 << 2)
00015 #define FTDS_RATE_22_KHZ                (2 << 2)
00016 #define FTDS_RATE_44_KHZ                (3 << 2)
00017 
00018 #define FTDS_SND_16BIT                  (1 << 1)
00019 #define FTDS_SND_8BIT                   (0 << 1)
00020 
00021 #define FTDS_SND_STEREO                 (1)
00022 #define FTDS_SND_MONO                   (0)
00023 
00024 class FlashTagDefineSound : public FlashTag, public FlashIDEnabled
00025 {
00026         DEFINE_RW_INTERFACE
00027                 FlashTagDefineSound() {}
00028 public:
00029         FlashTagDefineSound(unsigned char _flags, UDWORD _samplecount, char *_samples, UDWORD _len)
00030                 : samples(_samples), flags(_flags), samplecount(_samplecount), len(_len) {}
00031 protected:
00032         friend class FlashImportHandler;        
00033         friend std::ostream& operator<<(std::ostream& out, const FlashTagDefineSound &data);
00034         friend std::istream& operator>>(std::istream& in, FlashTagDefineSound &data);
00035 public:
00036         char GetFlags() const { return flags; }
00037         UDWORD GetSampleCount() const { return samplecount; };
00038         UDWORD GetSampleLength() const { return len; };
00039         char *GetSamples() { return samples; };
00040 protected:
00041         char *samples;
00042         gc_vector<char *>samplevec;
00043         unsigned char flags;
00044         UDWORD samplecount;
00045         UDWORD len;
00046 };
00047 
00048 
00049 class FlashTagDefineSoundMP3 : public FlashTagDefineSound
00050 {
00051         DEFINE_RW_INTERFACE
00052         FlashTagDefineSoundMP3() {}
00053 public:
00054         FlashTagDefineSoundMP3(unsigned char _flags, UDWORD _samplecount, char *_samples, UDWORD _len, UWORD _delayseek)
00055                 : FlashTagDefineSound((unsigned char)((_flags & 0xf) | (2 << 4)) , _samplecount, _samples, _len), delayseek(_delayseek) {}
00056 private:
00057         friend class FlashImportHandler;
00058         friend std::ostream& operator<<(std::ostream& out, const FlashTagDefineSoundMP3 &data);
00059         friend std::istream& operator>>(std::istream& in, FlashTagDefineSoundMP3 &data);
00060         gc_vector<char *>samplevec;
00061         UWORD delayseek;
00062 public:
00063         UWORD GetDelaySeek() const { return delayseek; }
00064 };
00065 
00066 class FlashSoundEnvelope
00067 {
00068 public: 
00069         FlashSoundEnvelope(UDWORD _mark44, UWORD _level0, UWORD _level1) : mark44(_mark44), 
00070                 level0(_level0), level1(_level1)   {}
00071 
00072         friend std::ostream& operator<<(std::ostream& out, FlashSoundEnvelope &data);
00073         friend std::istream& operator>>(std::istream& in, FlashSoundEnvelope &data);
00074 
00075 private:
00076         UDWORD mark44;
00077         UWORD level0;
00078         UWORD level1;
00079 };
00080 
00081 #define FSI_SYNC_NO_MULTIPLE    (1 << 4)
00082 #define FSI_SYNC_STOP                   (2 << 4)
00083 #define FSI_HAS_ENVELOPE                (1 << 3)
00084 #define FSI_HAS_LOOP                    (1 << 2)
00085 #define FSI_HAS_OUT                             (1 << 1)
00086 #define FSI_HAS_IN                              (1)
00087 
00088 class FlashTagStartSound;
00089 
00090 class FlashSoundInfo 
00091 {
00092         FlashSoundInfo() {}
00093 public:
00094         FlashSoundInfo(unsigned char _flags) : flags(_flags & 0xf0) {}
00095         FlashSoundInfo(unsigned char _flags, UDWORD _inPoint, UDWORD _outPoint, UWORD _loopCount)  :
00096                 flags(_flags & 0xfe), inPoint(_inPoint), outPoint(_outPoint), loopCount(_loopCount) {}
00097         FlashSoundInfo(unsigned char _flags, UDWORD _inPoint, UDWORD _outPoint, UWORD _loopCount, 
00098                 std::vector<FlashSoundEnvelope> &v) : flags(_flags),
00099                 inPoint(_inPoint), outPoint(_outPoint), loopCount(_loopCount), v_snd_env(v) {}
00100 private:
00101         friend class FlashTagStartSound;
00102         friend std::ostream& operator<<(std::ostream& out, FlashSoundInfo &data);
00103         friend std::istream& operator>>(std::istream& in, FlashSoundInfo &data);
00104 
00105 public:
00106         
00107         unsigned char GetFlags() { return flags; }
00108         UDWORD GetInPoint() { return inPoint; }
00109         UDWORD GetOutPoint() { return outPoint; }
00110         UDWORD GetLoopCount() { return loopCount; }
00111         std::vector<FlashSoundEnvelope> &GetEnvelopes() { return v_snd_env; }
00112 
00113 
00114 private:
00115         unsigned char flags;
00116         UDWORD inPoint;
00117         UDWORD outPoint;
00118         UWORD loopCount;
00119         std::vector<FlashSoundEnvelope> v_snd_env;
00120 };
00121 
00122 class FlashTagStartSound : public FlashSpriteEnabled
00123 {
00124         DEFINE_RW_INTERFACE
00125         FlashTagStartSound() {}
00126 public:
00127         FlashTagStartSound(UWORD _id, FlashSoundInfo &s) : id(_id), si(s) {}
00128 private:
00129         friend class FlashImportHandler;
00130         friend std::ostream& operator<<(std::ostream& out, FlashTagStartSound &data);
00131         friend std::istream& operator>>(std::istream& in, FlashTagStartSound &data);
00132         UWORD id;
00133 public: 
00134         UWORD GetID() const { return id; }
00135         FlashSoundInfo GetSoundInfo() { return si; }
00136 private:
00137         FlashSoundInfo si;      
00138 };
00139 
00140 #define FTSSH_RATE_5_5_KHZ 0
00141 #define FTSSH_RATE_11_KHZ  1
00142 #define FTSSH_RATE_22_KHZ  2
00143 #define FTSSH_RATE_44_KHZ  3
00144 
00145 class FlashTagSoundStreamHead : public FlashSpriteEnabled
00146 {
00147         DEFINE_RW_INTERFACE
00148         FlashTagSoundStreamHead() {}
00149 public:
00150         FlashTagSoundStreamHead(char play_rate, bool play_16bit, bool play_stereo, 
00151                                                         char stream_rate, bool stream_stereo, UWORD samplecountavg)
00152                                                         : mplay_rate(play_rate), mplay_16bit(play_16bit), mplay_stereo(play_stereo), 
00153                                                         mcompression(1), mstream_rate(stream_rate), mstream_16bit(1), 
00154                                                         mstream_stereo(stream_stereo), msamplecountavg(samplecountavg) {}
00155 private:
00156         friend class FlashImportHandler;
00157         friend std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamHead &data);
00158         friend std::istream& operator>>(std::istream& in, FlashTagSoundStreamHead &data);
00159 
00160 public:
00161         char GetPlayRate() { return mplay_rate; }
00162         bool GetPlay16bit() { return mplay_16bit; }
00163         bool GetPlayStereo() { return mplay_stereo; }
00164         char GetCompression() { return mcompression; }
00165         char GetStreamRate() { return mstream_rate; }
00166         bool GetStream16bit() { return mstream_16bit; }
00167         bool GetStreamStereo() { return mstream_stereo; }
00168         UWORD GetSampleCountAvg() { return msamplecountavg; }
00169 private:        
00170         char mplay_rate;
00171         bool mplay_16bit;
00172         bool mplay_stereo;
00173         char mcompression;
00174         char mstream_rate;
00175         bool mstream_16bit;
00176         bool mstream_stereo; 
00177         UWORD msamplecountavg;  
00178 };
00179 
00180 #define FTSSH2_RATE_5_5_KHZ 0
00181 #define FTSSH2_RATE_11_KHZ  1
00182 #define FTSSH2_RATE_22_KHZ  2
00183 #define FTSSH2_RATE_44_KHZ  3
00184 
00185 #define FTSSH2_COMPRESS_NONE   0
00186 #define FTSSH2_COMPRESS_ADPCM  1
00187 #define FTSSH2_COMPRESS_MP3    2
00188 
00189 class FlashTagSoundStreamHead2 : public FlashSpriteEnabled
00190 {
00191         DEFINE_RW_INTERFACE
00192         FlashTagSoundStreamHead2() {}
00193 public:
00194         friend class FlashImportHandler;
00195         FlashTagSoundStreamHead2(char play_rate, bool play_16bit, bool play_stereo, char compression,
00196                                                         char stream_rate, bool stream_16bit, bool stream_stereo, UWORD samplecountavg)
00197                                                         : mplay_rate(play_rate), mplay_16bit(play_16bit), mplay_stereo(play_stereo), 
00198                                                         mcompression(compression), mstream_rate(stream_rate), mstream_16bit(stream_16bit), 
00199                                                         mstream_stereo(stream_stereo), msamplecountavg(samplecountavg) {}
00200 private:
00201         friend std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamHead2 &data);
00202         friend std::istream& operator>>(std::istream& in, FlashTagSoundStreamHead2 &data);
00203 public:
00204         char GetPlayRate() { return mplay_rate; }
00205         bool GetPlay16bit() { return mplay_16bit; }
00206         bool GetPlayStereo() { return mplay_stereo; }
00207         char GetCompression() { return mcompression; }
00208         char GetStreamRate() { return mstream_rate; }
00209         bool GetStream16bit() { return mstream_16bit; }
00210         bool GetStreamStereo() { return mstream_stereo; }
00211         UWORD GetSampleCountAvg() { return msamplecountavg; }
00212 private:
00213         char mplay_rate;
00214         bool mplay_16bit;
00215         bool mplay_stereo;
00216         char mcompression;
00217         char mstream_rate;
00218         bool mstream_16bit;
00219         bool mstream_stereo; 
00220         UWORD msamplecountavg;  
00221 };
00222 
00223 
00224 class FlashTagSoundStreamBlock : public FlashSpriteEnabled
00225 {
00226         DEFINE_RW_INTERFACE
00227         FlashTagSoundStreamBlock() {}
00228 public:
00229         friend class FlashImportHandler;
00230         FlashTagSoundStreamBlock(char *_data, UDWORD _len) : data(_data), len(_len) {}
00231 
00232 protected:
00233         friend std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamBlock &data);
00234         friend std::istream& operator>>(std::istream& in, FlashTagSoundStreamBlock &data);
00235 
00236 public:
00237         UDWORD GetSampleLength() const { return len; }
00238         char *GetSamples() { return data; }
00239 protected:
00240         UDWORD len;
00241         char *data;
00242         
00243         gc_vector<char *> gc;
00244 };
00245 
00246 class FlashTagSoundStreamBlockMP3 : public FlashTagSoundStreamBlock
00247 {
00248         DEFINE_RW_INTERFACE
00249         FlashTagSoundStreamBlockMP3() {}
00250 public:
00251         FlashTagSoundStreamBlockMP3(UWORD _samplecount, UWORD _delayseek, char *_data, UDWORD _len) : samplecount(_samplecount), delay_seek(_delayseek), FlashTagSoundStreamBlock(_data,_len){}
00252 
00253         friend std::ostream& operator<<(std::ostream& out, const FlashTagSoundStreamBlockMP3 &data);
00254         friend std::istream& operator>>(std::istream& in, FlashTagSoundStreamBlockMP3 &data);
00255 private:
00256         friend class FlashImportHandler;
00257         UWORD delay_seek;
00258         UWORD samplecount;
00259 };
00260 
00261 #endif

Generated at Wed Aug 1 13:33:51 2001 for SWFSource by doxygen1.2.9 written by Dimitri van Heesch, © 1997-2001