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

AviFile.h

00001 /********************************************************************\
00002 *****   Methoden für IO in AVI Dateien                           *****
00003 \********************************************************************/
00004 
00005 #ifndef _AVIFILE_H_
00006 #define _AVIFILE_H_
00007 
00008 #include "avifile/AviWrite.h"
00009 #include "avifile/AviRead.h"
00010 #include "VideoFile/VideoFile.h"
00011 
00012 //#define GET_INDEX 1
00013 
00014 class AviFileVtr;
00015 class AviFileAtr;
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 /****************************************************************************************/
00024 /***** Quicktime - Klasse ***************************************************************/
00025 /****************************************************************************************/
00026 
00027 class AviFileIO:public VideoFile {
00028     friend class AviFileV;
00029     friend class AviFileVtr;
00030     friend class AviFileA;
00031     friend class AviFileAtr;
00032 public:
00033     AviFileIO( const char *Dateiname, IO_Mode mode=write );
00034     ~AviFileIO();
00035 
00036     /*** Videofunktionen ***/
00037     // Video codec initialisieren
00038     //    Codec: Name des internen Videocodecs des Backends
00039     V_Track *initVideoCodec( double Rate,
00040                              int x, int y,
00041                              const char *Codec = NULL );
00042 
00043 
00044     /*** Audiofunktionen ***/
00045     // Audio codec initialisieren
00046     A_Track *initAudioCodec( int Sample_rate,
00047                              int Bits,
00048                              int Channels,
00049                              const char *Codec = NULL );
00050 
00051 protected:
00052     // Video-Track öffnen
00053     V_Track *openVideoTrack( int track );
00054     // Audio-Track öffnen
00055     A_Track *openAudioTrack( int track=0 );
00056 
00057     AviWriteFile *wDatei;
00058     AviReadFile *rDatei;
00059 };
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 /****************************************************************************************/
00070 /***** AVI - Videotrack *****************************************************************/
00071 /****************************************************************************************/
00072 class AviFileVtr:public V_Track {
00073 public:
00074     AviFileVtr( AviFileIO *File, int track );
00075 
00076     AviFileVtr( AviFileIO *File,
00077             double Rate,
00078             int x, int y,
00079             const char *Codec = NULL );
00080 
00081     ~AviFileVtr();
00082 
00083 
00084     // Bild-Position setzen
00085     int Seek( long block );
00086 
00087     long GetKeyFrame( long bild );
00088 
00089 private:
00090     AviFileIO *file;            // übergeordnete Klasse
00091     AviWriteFile *wDatei;       // Avi Datei (schreiben)
00092     AviReadFile *rDatei;        // lesen
00093     AviWriteStream *wStream;
00094     AviReadStream *rStream;
00095     char* FrameBuf;             // Speicher für die Daten eines Bildes
00096     unsigned long BufGr;        // Größe von FrameBuf
00097     bool keyframe_ok;
00098 
00099 protected:
00100     // Rohdaten lesen und schreiben
00101     virtual int readRaw( unsigned char *&data, long &bytes );
00102     virtual int writeRaw( unsigned char *data, long bytes, int keyframe=0 );
00103 };
00104 
00105 
00106 
00107 
00108 
00109 
00110 
00111 
00112 
00113 
00114 
00115 /****************************************************************************************/
00116 /***** Avi - Audiotrack *****************************************************************/
00117 /****************************************************************************************/
00118 class AviFileAtr:public A_Track {
00119 public:
00120     AviFileAtr( AviFileIO *File, int track );
00121     AviFileAtr( AviFileIO *File,
00122                 int Sample_rate,
00123                 int Bits,
00124                 int Channels,
00125                 const char *Codec_name = NULL );
00126 
00127     ~AviFileAtr();
00128 
00129     // Audio-Position setzen
00130     int Seek( long block );
00131 
00132 protected:
00133     int readRaw( unsigned char *&data, long &bytes );
00134     int writeRaw( unsigned char *data, long bytes, int samples );
00135 
00136 private:
00137     AviFileIO *file;            // übergeordnete Klasse
00138     AviWriteFile *wDatei;       // Avi Datei (schreiben)
00139     AviReadFile *rDatei;        // lesen
00140     AviWriteStream *wStream;
00141     AviReadStream *rStream;
00142     unsigned short format;               // Audiocodec
00143     unsigned char *puffer;
00144     unsigned puffer_gr;
00145     long samplesize;
00146 };
00147 
00148 #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