00001 #ifndef __CABDEF0_H 00002 #define __CABDEF0_H 00003 00004 00005 /************************************/ 00006 /* 1992 (c) Grupo de Voz - DAET */ 00007 /* ETSII/IT Bilbao */ 00008 /************************************/ 00009 00010 00011 /**********************************************************/ 00012 00013 #include "tdef.h" 00014 00015 /**********************************************************/ 00016 00017 #ifdef __CC_MSVC__ 00018 #pragma pack(push,1) 00019 #elif __CC_BORLANDC__ 00020 typedef struct {CHAR8 x; INT2 y; } ____tmp_cabdef0_align_test___; 00021 #if sizeof(____tmp_cabdef0_align_test___)>3 00022 #error You must disable Word Alignment 00023 #endif 00024 #endif 00025 00026 /**********************************************************/ 00027 /* Definici¢n de las estructuras b sicas de las cabeceras */ 00028 /**********************************************************/ 00029 00030 /* rango de variacion en coma flotante */ 00031 struct fminmax { 00032 FLOAT4 min MINALIGN; 00033 FLOAT4 max MINALIGN; 00034 }; 00035 00036 /* rango de variacion en enteros de 2 UCHAR1s */ 00037 struct iminmax { 00038 INT2 min MINALIGN; 00039 INT2 max MINALIGN; 00040 }; 00041 00042 /* definicion de marcas */ 00043 struct marcdef { 00044 UINT4 unimarc MINALIGN; /* unidad de las marcas (en muestras) */ 00045 UINT4 nmarc MINALIGN; /* n£mero de marcas */ 00046 pUINT4 marcas MINALIGN; /* marcas */ 00047 }; 00048 00049 /* definicion de texto */ 00050 struct txtdef { 00051 UINT2 ltxt MINALIGN; /* longitud */ 00052 pCHAR1 txt MINALIGN; /* texto */ 00053 }; 00054 00055 /* definicion de vectores multi-dimensionales */ 00056 struct vecdef { 00057 UINT2 dimv MINALIGN; /* dimension */ 00058 UINT4 nvec MINALIGN; /* n£mero de vectores */ 00059 }; 00060 00061 /* definicion de ventana de analisis */ 00062 struct ventdef { 00063 UINT2 lvent MINALIGN; /* longitud de la ventana */ 00064 UINT2 despv MINALIGN; /* desplazamiento */ 00065 UCHAR1 tipov MINALIGN; /* tipo de ventana */ 00066 }; 00067 00068 /* estructura de la primera parte de la cabecera de cualquier fichero */ 00069 /* esta estructura existe siempre en todos los ficheros */ 00070 struct cfich { 00071 UINT4 lcab MINALIGN; /* longitud en UCHAR11s lcab NO inclu¡da */ 00072 UINT2 tfich MINALIGN; /* tipo de fichero (definido en cabcod.h) */ 00073 UCHAR1 tdato MINALIGN; /* tipo de dato. Definido en CABCOD */ 00074 UINT4 mcab MINALIGN; /* mascara de cabeceras incluidas */ 00075 }; 00076 00077 /* estructura de la cabecera general de se¤al */ 00078 struct cgsenal { 00079 UINT4 nm MINALIGN; /* n£mero de muestras */ 00080 FLOAT4 fm MINALIGN; /* frecuencia de muestreo en Hz */ 00081 struct fminmax rango MINALIGN; /* de la se¤al */ 00082 struct txtdef locu MINALIGN; /* informante */ 00083 struct txtdef texto MINALIGN; /* de la se¤al */ 00084 struct txtdef version MINALIGN; /* de la se¤al */ 00085 struct txtdef obs MINALIGN; /* observaciones */ 00086 struct marcdef marc MINALIGN; /* marcas */ 00087 }; 00088 /* nota sobre rango: indica los valores que correspondan a los 00089 niveles -1 (rango.min) y +1 (rango.max) de la senal. 00090 Ej. En convertidor de 12 bits entre 0 y 4095, si tenemos 00091 rango.min=0 y rango.max=4096, indica que el -1 esta como 0, 00092 el 1 como 4096 (nunca se da porque solo llega a 4095) y el cero 00093 se codifica como 2048 ((min+max)/2). En cambio, si min=0 y 00094 max=4095, -1-->0, +1-->4095, y el cero no tiene representacion 00095 en el convertidor (0-->2047.5 es un numero REAL) */ 00096 00097 /* estructura de la cabecera general de parametros */ 00098 /* esta estructura puede existir en todos los ficheros */ 00099 /* esta estructura existe siempre en los ficheros de par metros */ 00100 /* (tfich>=100) */ 00101 struct cgparam { 00102 struct vecdef vecd MINALIGN; 00103 struct ventdef pventa MINALIGN; 00104 }; 00105 00106 /**********************************************************/ 00107 /* la cabecera completa de un fichero se compone de: 00108 00109 - cfich <--- datos de la cabecera al completo (siempre) 00110 - long+ cgsenal + ext <--- datos de la se¤al original (op) 00111 - long+ cgparam + ext <--- datos de la parametrizaci¢n (op) 00112 - long+ cg..... + ext 00113 - ..... 00114 00115 ext significa que podr haber mas valores, dependientes del tipo del fichero. 00116 long es un UINT4 que indica la longitud de cada una de las subcabeceras sin 00117 incluirse a si mismo. 00118 00119 IMPORTANTE: el alineamiento debe estar a byte (Alignment=Byte) y no a UINT2*/ 00120 /**********************************************************/ 00121 00122 #ifdef __CC_MSVC__ 00123 #pragma pack(pop) 00124 #endif 00125 00126 /**********************************************************/ 00127 00128 #endif 00129