00001
00002
00003
00004
00005 #ifndef _TRACK_H_
00006 #define _TRACK_H_
00007
00008 #include <sys/types.h>
00009 #include "String.h"
00010
00011
00012 class VideoFile;
00013 class Codec;
00014 class CodecPlugins;
00015
00020 class Track {
00021 friend class Codec;
00022 friend class CodecPlugins;
00023 public:
00024 Track( VideoFile *File, int track=0 );
00025 Track( VideoFile *File, double rate, const char *Codec_name );
00026 virtual ~Track();
00027
00030 inline const String CodecName( void ) { return codec_name; }
00031
00034 virtual int Number(void) { return nummer; }
00035
00038 virtual long long Position(void) { return pos; }
00039
00042 virtual double CurrentTime( void ) { return (double)pos / block_rate; }
00043
00046 virtual long long BytesWritten(void) { return bytes; }
00047
00052 virtual double Rate( void ) { return block_rate; }
00053
00056 virtual long Frames( void ) { return total_blocks; }
00057
00060 virtual double TotalTime( void ) { return (double)total_blocks / block_rate; }
00061
00067 virtual int SeekTime( double seconds ) { return Seek( seconds * block_rate ); }
00068
00074 virtual int Seek( long block );
00075
00076 protected:
00077 VideoFile *file;
00078 int nummer;
00079 String codec_name;
00080 long pos;
00081 long long bytes;
00082 double block_rate;
00083
00084 long total_blocks;
00085 VideoFile::IO_Mode iomode;
00086
00087 CodecPlugins *AV_Codecs;
00088 };
00089
00090 #endif