00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef MOVIEAUDIOCURSOR_H
00016 #define MOVIEAUDIOCURSOR_H
00017
00018 #include "pandabase.h"
00019 #include "namable.h"
00020 #include "texture.h"
00021 #include "pointerTo.h"
00022 class MovieAudio;
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 class EXPCL_PANDA_MOVIES MovieAudioCursor : public TypedWritableReferenceCount {
00039
00040 PUBLISHED:
00041 MovieAudioCursor(MovieAudio *src);
00042 virtual ~MovieAudioCursor();
00043 INLINE PT(MovieAudio) get_source() const;
00044 INLINE int audio_rate() const;
00045 INLINE int audio_channels() const;
00046 INLINE double length() const;
00047 INLINE bool can_seek() const;
00048 INLINE bool can_seek_fast() const;
00049 INLINE double tell() const;
00050 INLINE void skip_samples(int n);
00051 INLINE bool aborted() const;
00052 virtual int ready() const;
00053 virtual void seek(double offset);
00054 void read_samples(int n, Datagram *dg);
00055 string read_samples(int n);
00056
00057 public:
00058 virtual void read_samples(int n, PN_int16 *data);
00059
00060 protected:
00061 PT(MovieAudio) _source;
00062 int _audio_rate;
00063 int _audio_channels;
00064 double _length;
00065 bool _can_seek;
00066 bool _can_seek_fast;
00067 bool _aborted;
00068 double _last_seek;
00069 PN_int64 _samples_read;
00070
00071 public:
00072 static TypeHandle get_class_type() {
00073 return _type_handle;
00074 }
00075 static void init_type() {
00076 TypedWritableReferenceCount::init_type();
00077 register_type(_type_handle, "MovieAudioCursor",
00078 TypedWritableReferenceCount::get_class_type());
00079 }
00080 virtual TypeHandle get_type() const {
00081 return get_class_type();
00082 }
00083 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
00084
00085 private:
00086 static TypeHandle _type_handle;
00087 };
00088
00089 #include "movieAudioCursor.I"
00090 #include "movieAudio.h"
00091
00092 #endif