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

VideoFile.h

00001 /********************************************************************\
00002 *****   Basisblasse für Videodateiformate                        *****
00003 \********************************************************************/
00004 
00005 #ifndef _VIDEO_FILE_H_
00006 #define _VIDEO_FILE_H_
00007 
00008 #include <sys/types.h>
00009 #include <list.h>
00010 #include "String.h"
00011 
00012 #include "Convert.h"
00013 #include "PluginList.h"
00014 #include "Errors.h"
00015 
00016 class V_Codec;
00017 class V_Track;
00018 class A_Codec;
00019 class A_Track;
00020 class Track;
00021 class Codec;
00022 class CodecPlugins;
00023 class IOModulPlugins;
00024 class Codec_Info;
00025 class IOModul_Info;
00026 
00031 class VideoFile {
00032     friend class V_Codec;
00033     friend class V_Track;
00034     friend class A_Codec;
00035     friend class A_Track;
00036     friend class Track;
00037     friend class Codec;
00038 public:
00039     typedef enum IOMODE { read, write } IO_Mode;
00040 
00043     static void Init( void );
00044     
00047     static VideoFile *Create_VideoFile( const String file, const String typ, IO_Mode mode = write );
00048 
00051     static PluginList<IOModul_Info> *IOModulList( void );
00052 
00055     static PluginList<Codec_Info> *AVCodecList( void );
00056 
00057 
00058 
00059     
00060     VideoFile( const String file, const String typ, IO_Mode mode = write );
00061     virtual ~VideoFile();
00062 
00068     virtual V_Codec *initVideoCodec( double Rate,
00069                                      int x, int y,
00070                                      const char *Codec = NULL );
00071 
00072 
00075     virtual A_Codec *initAudioCodec( int Sample_rate,
00076                                      int Channels,
00077                                      const char *Codec = NULL );
00078 
00083     virtual V_Codec *VideoCodec( int track );
00084 
00089     virtual A_Codec *AudioCodec( int track );
00090 
00091     
00094     virtual long long BytesWritten( void );
00095 
00098     virtual const String ModulName( void ) { return iomodul; }
00099 
00100     // Fehlernachricht
00101     //virtual void Fehler( const char* fmt, ... );
00102 
00105     virtual Errors &ErrorStatus( void ) { return err_stat; }
00106       
00107 protected:
00108     // Video-Track öffnen
00109     virtual V_Track *openVideoTrack( int track );
00110     virtual V_Track *openVideoTrack( double Rate, int x, int y, const char *Codec );
00111 
00112     // Audio-Track öffnen
00113     virtual A_Track *openAudioTrack( int track );
00114     virtual A_Track *openAudioTrack( int Sample_rate, int Channels, const char *Codec );
00115 
00116     list<A_Track*> ATrackListe;
00117     list<V_Track*> VTrackListe;
00118 
00119     V_Track *getVideoTrack( int track );
00120     A_Track *getAudioTrack( int track );
00121     void addTrack( V_Track *track );
00122     void addTrack( A_Track *track );
00123     void removeTrack( V_Track *track );
00124     void removeTrack( A_Track *track );
00125 
00126     void deleteTracks( void );
00127 
00128     IO_Mode iomode;         // lesen/schreiben
00129     String iofile;          // Datei für Video ein/ausgabe
00130     String iomodul;         // Name des Backends
00131 
00132     static CodecPlugins *AV_Codecs;
00133     static IOModulPlugins *IO_Moduls;
00134 
00135     // Status
00136     Errors err_stat;
00137 
00138     // VideoFile initialisiert
00139     static bool init;
00140 };
00141 
00142 #include "V_Track.h"
00143 #include "V_Codec.h"
00144 #include "A_Track.h"
00145 #include "A_Codec.h"
00146 #include "Codec_Info.h"
00147 #include "IOModul_Info.h"
00148 
00149 #endif

Erzeugt am Tue Dec 31 22:54:54 2002 für av_convert von doxygen1.2.9.1 geschrieben von Dimitri van Heesch, © 1997-2001