home *** CD-ROM | disk | FTP | other *** search
- #ifndef _FILEINFOS_CLASS_HPP
- #define _FILEINFOS_CLASS_HPP
-
- /*
- **
- ** FileInfosC.hpp
- **
- ** $VER: FileInfosC.hpp 1.0 (12.04.98)
- **
- ** $Revision: 1.3 $
- ** $State: Exp $
- ** $Date: 1998/08/16 19:03:36 $
- **
- ** $Log: FileInfosC.hpp $
- ** Revision 1.3 1998/08/16 19:03:36 kakace
- ** Version Beta3+
- **
- ** Revision 1.2 1998/08/02 15:17:02 kakace
- ** Fonctionnement OK (Layer 1/2 + Stereo/JStereo)
- **
- ** Revision 1.1 1998/07/24 14:26:52 kakace
- ** Automatic global CheckIn
- **
- ** Revision 1.16 1998/07/24 14:14:25 kakace
- ** Version intermédiaire (CheckIn global)
- **
- ** Revision 1.14 1998/07/02 15:51:58 kakace
- ** Automatic global CheckIn
- **
- */
-
-
-
- //----------------------------------------------------------------------------------------------------
-
- #ifndef _INCLUDE_STRING_H
- #include <string.h>
- #endif
-
- #ifndef CLASSES_LISTS_HPP
- #include "Lists.hpp"
- #endif
-
- #ifndef _ENCODERCONFIG_CLASS_HPP
- #include "EncoderConfigC.hpp"
- #endif
-
-
- // Formats audio supportés.
-
- enum e_AudioTypes {AFT_UNKNOWN, // Format inconnu.
- AFT_AIFF, // IFF/AIFF
- AFT_MAUD, // IFF/MAUD
- AFT_WAV, // RIFF/WAV
- AFT_CDDA, // CDDA (Motorola)
- AFT_CDDA_INTEL, // CDDA (Intel)
- AFT_PCM, // RAW/PCM (Format déterminé par l'extension).
- AFT_DEFAULT, // RAW/PCM (Hypothèse).
- // Fichiers rejetés...
- AFT_NOT_AUDIO, // Fichier audio, non supporté pour le moment.
- AFT_BAD_AIFF, // Fichier AIFF non supporté.
- AFT_BAD_MAUD, // Fichier MAUD non supporté.
- AFT_BAD_WAV}; // Fichier WAV non supporté.
-
-
- // Codes d'erreur.
-
- enum e_IoErrors {IOERR_NONE, // Pas d'erreur.
- IOERR_WARN, // Avertissements (placés par Pégase)
- IOERR_DOS, // Erreur du DOS (non précisée).
- IOERR_IFF, // Erreur générale IFF.
- IOERR_OPEN, // Erreur pendant l'ouverture du fichier.
- IOERR_READ, // Erreur de la lecture du fichier.
- IOERR_WRITE, // Erreur d'écriture du fichier.
- IOERR_INTERNAL, // Erreurs internes (placées par Pégase)
- IOERR_NO_MEMORY}; // Plus de mémoire.
-
-
- // Structures particulières.
-
- struct s_Time{UBYTE bMinutes;
- UBYTE bSecondes;
- };
-
-
- union u_Time{UWORD iTime;
- s_Time sTime;
- };
-
-
- //----------------------------------------------------------------------------------------------------
- //========================================= class FileInfos ==========================================
- //----------------------------------------------------------------------------------------------------
- //
- // Chaque objet de cette classe centralise les informations concernant un fichier précis. Il est
- // utilisé pour mémoriser les réglages particulier du fichier, et sert aussi de référence aux objets
- // manipulant ce fichier (comme la classe InputStreamC par exemple).
- //
- // Le type du fichier est stocké en tant que priorité de l'objet Node. Cela permet de chaîner les
- // objets en les regroupant par type.
-
- typedef const char * STRING;
-
-
- class FileInfosC : public CNode, public EncoderConfigC
- {
- public:
-
- // Constructeur et destructeur.
-
- FileInfosC(STRING cFileName, STRING cPathName, EncoderConfigC &roConfig);
- ~FileInfosC();
-
- // Fonctions d'accès aux membres privés.
-
- const char *GetAudioName() const;
-
- e_AudioTypes GetFileType() const {return (e_AudioTypes) NodePri();}
- e_IoErrors GetIoError() const {return fi_iIoError;}
- LONG GetError2() const {return fi_iError2;}
- ULONG GetSamplingFreq() const {return fi_iSamplingFreq;}
- ULONG GetNumFrames() const {return fi_iNumFrames;}
- ULONG GetNumSamples() const {return fi_iTotalSamples;}
- UBYTE GetNumChannels() const {return fi_bNumChannels;}
- char *GetPathName() const {return fi_cFullPath;}
- u_Time GetTime() const {return fi_sTime;}
-
- void DefineOutputName();
-
- void ComputeTime(); // Calculer la durée du fichier.
- int OverrideSettings(ULONG iSampleFreq, UBYTE bNumChannels); // Modifier les réglages.
-
- void SetFileLength(ULONG iLength) {fi_iFileLength = iLength;}
- ULONG GetFileLength() const {return fi_iFileLength;}
-
- void SetNumFrames(ULONG iFrames); // Définir le nombre de frames.
- void SetIoError(e_IoErrors iErr, LONG iErr2 = 0); // Définir les codes d'erreur.
- void SetFileType(e_AudioTypes iFileType) // Définir le type du fichier.
- {NodePri(iFileType);}
- void SetByteOrder(UBYTE bByteOrderFlag) {ecfg_iIntelFormat = bByteOrderFlag;}
-
- protected:
-
- char *fi_cFullPath; // Nom complet du répertoire parent.
- e_IoErrors fi_iIoError; // Code d'erreur. 0 = OK.
- LONG fi_iError2; // Code d'erreur spécifique (DOS/IFF/...)
-
- // Données définies par le fichier.
-
- ULONG fi_iSamplingFreq; // Fréquence d'échantillonage (0 = non définie)
- ULONG fi_iNumFrames; // Nombre d'échantillons par canal (0 = non défini)
- ULONG fi_iTotalSamples; // Nombre total d'échantillons.
- ULONG fi_iFileLength; // Longueur du fichier.
- UBYTE fi_bNumChannels; // Nombre de canaux (0 = non défini)
- UBYTE fi_bPad;
- u_Time fi_sTime; // Durée du fichier (88:88 si inconnue).
-
- EncoderConfigC &fi_roDefConfig; // Réglages par défaut de l'encodeur.
-
- FileInfosC& operator = (const FileInfosC &);
- };
-
-
- //----------------------------------------------------------------------------------------------------
-
- inline void FileInfosC::SetIoError(e_IoErrors iErr, LONG iErr2)
- {
- fi_iIoError = iErr;
- fi_iError2 = iErr2;
- }
-
- #endif // _FILEINFOS_CLASS_HPP
-
-