00001 #ifndef __CAUDIOX_HPP__
00002 #define __CAUDIOX_HPP__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __cplusplus
00031 #error Must use C++ compiler
00032 #endif
00033
00034
00035
00036 #include <stdio.h>
00037
00038 #include "tdef.h"
00039 #include "caudio.hpp"
00040
00041
00042
00043 class AFFormat {
00044 protected:
00045 CAudioFile *fa;
00046 public:
00047 AFFormat( CAudioFile *ca ) { fa = ca; };
00048 virtual ~AFFormat( VOID ) {};
00049 virtual BOOL OK( VOID ) = 0;
00050 virtual const CHAR* fFormat( VOID ) = 0;
00051
00052 virtual LONG HdrR( FILE *f, KVStrList &def, BOOL override ) = 0;
00053 virtual VOID HdrG( KVStrList &def, BOOL override ) = 0;
00054 virtual VOID HdrW( FILE *f, LONG nSamp ) = 0;
00055 };
00056
00057
00058
00059 #define ADD(p,v) fa->info().add(p,v)
00060 #define NOV(p) ((!fa->info().contains(p))|| override)
00061 #define ADDIFNOV(p,v) if (NOV(p)) ADD(p,v)
00062
00063
00064
00065 class AFRaw : public AFFormat {
00066 public:
00067 AFRaw( CAudioFile *ca ) : AFFormat(ca) {};
00068 BOOL OK( VOID ) {return TRUE;};
00069 static const CHAR* formatStr( VOID ) { return "Raw"; };
00070 const CHAR* fFormat( VOID ) { return formatStr(); };
00071 static BOOL testFile( FILE *f );
00072
00073 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00074 VOID HdrG( KVStrList &def, BOOL override );
00075 VOID HdrW( FILE *f, LONG nSamp );
00076 };
00077
00078
00079
00080 class AFAho2 : public AFFormat {
00081 protected:
00082 LONG lcgs;
00083
00084 public:
00085 AFAho2( CAudioFile *ca ) : AFFormat(ca) {};
00086 BOOL OK( VOID ) {return TRUE;};
00087 static const CHAR* formatStr( VOID ) { return "Aho2"; };
00088 const CHAR* fFormat( VOID ) { return formatStr(); };
00089 static BOOL testFile( FILE *f );
00090
00091 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00092 VOID HdrG( KVStrList &def, BOOL override );
00093 VOID HdrW( FILE *f, LONG nSamp );
00094 };
00095
00096
00097
00098 class AFTei : public AFFormat {
00099 public:
00100 AFTei( CAudioFile *ca ) : AFFormat(ca) {};
00101 BOOL OK( VOID ) {return TRUE;};
00102 static const CHAR* formatStr( VOID ) { return "Tei"; };
00103 const CHAR* fFormat( VOID ) { return formatStr(); };
00104 static BOOL testFile( FILE *f );
00105
00106 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00107 VOID HdrG( KVStrList &def, BOOL override );
00108 VOID HdrW( FILE *f, LONG nSamp );
00109 };
00110
00111
00112
00113 class AFWav : public AFFormat {
00114 long datapos;
00115 public:
00116 AFWav( CAudioFile *ca ) : AFFormat(ca) {};
00117 BOOL OK( VOID ) {return TRUE;};
00118 static const CHAR* formatStr( VOID ) { return "Wav"; };
00119 const CHAR* fFormat( VOID ) { return formatStr(); };
00120 static BOOL testFile( FILE *f );
00121
00122 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00123 VOID HdrG( KVStrList &def, BOOL override );
00124 VOID HdrW( FILE *f, LONG nSamp );
00125 };
00126
00127
00128
00129
00130 class AFAho1 : public AFFormat{
00131 public:
00132 AFAho1( CAudioFile *ca ) : AFFormat(ca) {};
00133 BOOL OK( VOID ) {return TRUE;};
00134 static const CHAR* formatStr( VOID ) { return "Aho1"; };
00135 const CHAR* fFormat( VOID ) { return formatStr(); };
00136 static BOOL testFile( FILE *f );
00137
00138 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00139 VOID HdrG( KVStrList &def, BOOL override );
00140 VOID HdrW( FILE *f, LONG nSamp );
00141 };
00142
00143
00144
00145 class AFNist : public AFFormat {
00146 public:
00147 AFNist( CAudioFile *ca ) : AFFormat(ca) {};
00148 BOOL OK( VOID ) {return TRUE;};
00149 static const CHAR* formatStr( VOID ) { return "Nist"; };
00150 const CHAR* fFormat( VOID ) { return formatStr(); };
00151 static BOOL testFile( FILE *f );
00152
00153 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00154 VOID HdrG( KVStrList &def, BOOL override );
00155 VOID HdrW( FILE *f, LONG nSamp );
00156 };
00157
00158
00159
00160 class AFHak : public AFFormat {
00161 LONG lc;
00162 public:
00163 AFHak( CAudioFile *ca ) : AFFormat(ca) {};
00164 BOOL OK( VOID ) {return TRUE;};
00165 static const CHAR* formatStr( VOID ) { return "Hak"; };
00166 const CHAR* fFormat( VOID ) { return formatStr(); };
00167 static BOOL testFile( FILE *f );
00168
00169 LONG HdrR( FILE *f, KVStrList &def, BOOL override );
00170 VOID HdrG( KVStrList &def, BOOL override );
00171 VOID HdrW( FILE *f, LONG nSamp );
00172 };
00173
00174
00175
00176 #endif