Hauptseite   Klassenhierarchie   Alphabetische Liste   Übersicht   Auflistung der Dateien   Elementübersicht  

Quicktime.h

00001 /********************************************************************\
00002 *****   Methoden für IO in Quicktime Dateien                     *****
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 /***** Quicktime - Klasse ***************************************************************/
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     // Quicktime Datei-Descriptor
00039     quicktime_t *QuicktimeDatei( void );
00040 
00041 
00042     /*** Videofunktionen ***/
00043     // Video codec initialisieren
00044     //    Codec: Name des internen Videocodecs des Backends
00045     V_Track *initVideoCodec( float Rate,
00046                              int x, int y,
00047                              const char *Codec = NULL );
00048 
00049 
00050     /*** Audiofunktionen ***/
00051     // Audio codec initialisieren
00052     A_Track *initAudioCodec( int Sample_rate,
00053                              int Bits,
00054                              int Channels,
00055                              const char *Codec = NULL );
00056 
00057 protected:
00058     // Video-Track öffnen
00059     V_Track *openVideoTrack( int track );
00060     // Audio-Track öffnen
00061     A_Track *openAudioTrack( int track );
00062 
00063     quicktime_t *Datei;         // Quicktime Datei
00064 };
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 /****************************************************************************************/
00075 /***** Quicktime - Videotrack ***********************************************************/
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     // Bild-Position setzen
00091     int Seek( long bild );
00092 
00093     //int readData( unsigned char *&data, long &bytes );
00094     //int writeData( unsigned char *data, long bytes );
00095 
00096 
00097 private:
00098     QuicktimeIO *file;          // übergeordnete Klasse
00099     quicktime_t *Datei;         // Quicktime Datei
00100     unsigned char *FrameBuf;    // Datenpuffer für gelesene Bilddaten
00101     long BufGr;                 // Puffergröße
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 /***** Quicktime - Videocodec ***********************************************************/
00119 /****************************************************************************************/
00120 class QuicktimeV:public V_Codec {
00121 public:
00122     QuicktimeV( QuicktimeVtr *Track );
00123 
00124     ~QuicktimeV();
00125 
00126     // Farbraum festlegen
00127     bool ColorModel( int cmodel );
00128 
00129     // JPEG-Qualität
00130     bool jpegQuality( int q );
00131 
00132 private:
00133     quicktime_t *Datei;         // Quicktime Datei
00134     unsigned char **row_pointers;
00135     int track_nummer;
00136 
00137 protected:
00138     // Video-Bild schreiben
00139     int encode( unsigned char *bild );
00140 
00141     // Video-Bild lesen
00142     int decode( unsigned char *bild );
00143 
00144     int qt_c_model( void );     // Colormodel gemäß Quicktime
00145     void erz_row_pointers( unsigned char **row_pointers, unsigned char *buf );  // erzeuge row_pointers
00146                                                                               // abhängig von Farbraum
00147 };
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 
00157 /****************************************************************************************/
00158 /***** Qicktime - Audiotrack ************************************************************/
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;          // übergeordnete Klasse
00174     quicktime_t *Datei;         // Quicktime Datei
00175 };
00176 
00177 
00178 
00179 
00180 
00181 
00182 
00183 /****************************************************************************************/
00184 /***** Qicktime - Audiocodec ************************************************************/
00185 /****************************************************************************************/
00186 class QuicktimeA:public A_Codec {
00187 public:
00188     QuicktimeA( QuicktimeAtr *Track );
00189     ~QuicktimeA();
00190 
00191 protected:
00192     // Audiodaten schreiben
00193     int encode( int16_t **daten, int sampels );
00194 
00195     // Audiodaten lesen
00196     int decode( int16_t **daten, int sampels );
00197 
00198     // positionieren
00199     int SeekSample( long long sample );
00200 
00201 private:
00202     quicktime_t *Datei;         // Quicktime Datei
00203 };
00204 
00205 
00206 
00207 #endif

Erzeugt am Mon Jan 7 19:15:12 2002 für av_convert von doxygen1.2.9.1 geschrieben von Dimitri van Heesch, © 1997-2001