00001
00002
00003
00004
00005 #ifndef _QUICKTIME_H_
00006 #define _QUICKTIME_H_
00007
00008 #include <quicktime.h>
00009 #include <colormodels.h>
00010
00011 #include "VideoFile.h"
00012
00013 #define USE_FLOAT 1
00014
00015 class QuicktimeA;
00016 class QuicktimeV;
00017 class QuicktimeVtr;
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 class QuicktimeIO:public VideoFile {
00030 friend class QuicktimeV;
00031 friend class QuicktimeVtr;
00032 friend class QuicktimeA;
00033 friend class QuicktimeAtr;
00034 public:
00035 QuicktimeIO( const char *Dateiname, IO_Mode mode=write );
00036 ~QuicktimeIO();
00037
00038
00039 quicktime_t *QuicktimeDatei( void );
00040
00041
00042
00043
00044
00045 V_Track *initVideoCodec( float Rate,
00046 int x, int y,
00047 const char *Codec = NULL );
00048
00049
00050
00051
00052 A_Track *initAudioCodec( int Sample_rate,
00053 int Bits,
00054 int Channels,
00055 const char *Codec = NULL );
00056
00057 protected:
00058
00059 V_Track *openVideoTrack( int track );
00060
00061 A_Track *openAudioTrack( int track );
00062
00063 quicktime_t *Datei;
00064 };
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 class QuicktimeVtr:public V_Track {
00078 friend class QuicktimeV;
00079 public:
00080 QuicktimeVtr( QuicktimeIO *File, int track );
00081
00082 QuicktimeVtr( QuicktimeIO *File,
00083 double Rate,
00084 int x, int y,
00085 const char *Codec = NULL );
00086
00087 ~QuicktimeVtr();
00088
00089
00090
00091 int Seek( long bild );
00092
00093
00094
00095
00096
00097 private:
00098 QuicktimeIO *file;
00099 quicktime_t *Datei;
00100 unsigned char *FrameBuf;
00101 long BufGr;
00102
00103 protected:
00104 int readRaw( unsigned char *&data, long &bytes );
00105 int writeRaw( unsigned char *data, long bytes, int keyframe=0 );
00106 };
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 class QuicktimeV:public V_Codec {
00121 public:
00122 QuicktimeV( QuicktimeVtr *Track );
00123
00124 ~QuicktimeV();
00125
00126
00127 bool ColorModel( int cmodel );
00128
00129
00130 bool jpegQuality( int q );
00131
00132 private:
00133 quicktime_t *Datei;
00134 unsigned char **row_pointers;
00135 int track_nummer;
00136
00137 protected:
00138
00139 int encode( unsigned char *bild );
00140
00141
00142 int decode( unsigned char *bild );
00143
00144 int qt_c_model( void );
00145 void erz_row_pointers( unsigned char **row_pointers, unsigned char *buf );
00146
00147 };
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160 class QuicktimeAtr:public A_Track {
00161 friend class QuicktimeA;
00162 public:
00163 QuicktimeAtr( QuicktimeIO *File, int track );
00164 QuicktimeAtr( QuicktimeIO *File,
00165 int Sample_rate,
00166 int Bits,
00167 int Channels,
00168 const char *Codec_name = NULL );
00169
00170 ~QuicktimeAtr();
00171
00172 private:
00173 QuicktimeIO *file;
00174 quicktime_t *Datei;
00175 };
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186 class QuicktimeA:public A_Codec {
00187 public:
00188 QuicktimeA( QuicktimeAtr *Track );
00189 ~QuicktimeA();
00190
00191 protected:
00192
00193 int encode( int16_t **daten, int sampels );
00194
00195
00196 int decode( int16_t **daten, int sampels );
00197
00198
00199 int SeekSample( long long sample );
00200
00201 private:
00202 quicktime_t *Datei;
00203 };
00204
00205
00206
00207 #endif