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

A_Track.h

00001 /********************************************************************\
00002 *****   Basisblasse für Audio-Track                             *****
00003 \********************************************************************/
00004 
00005 #ifndef _AUDIO_TRACK_H_
00006 #define _AUDIO_TRACK_H_
00007 
00008 #include <sys/types.h>
00009 
00010 #include "Track.h"
00011 #include "A_Format.h"
00012 
00013 class VideoFile;
00014 class A_Codec;
00015 
00022 class A_Track: public Track, public A_Format {
00023     friend class A_Codec;
00024 public:
00025 
00026     A_Track( VideoFile *File, int track=0 );
00027     A_Track ( VideoFile *File,
00028               int Sample_rate,
00029               int Channels,
00030               const char *Codec_name = NULL );
00031 
00032     virtual ~A_Track();
00033     
00034 
00039     virtual int64_t Samples( void ) { return total_samples; }
00040 
00043     virtual double TotalTime( void ) { return (double)total_samples / sample_rate; }
00044 
00047     inline A_Codec *Codec( void ) { return codec; }
00048 
00053     virtual int readData( unsigned char *&data, long &bytes );
00054 
00059     virtual int readBytes( unsigned char *data, long &bytes );
00060 
00063     virtual int writeData( unsigned char *data, long bytes, long samp = 0 );
00064 
00065 
00066 
00067     // Funktionen im Audiocodec
00070     int encodeAudio( int16_t **daten, int sampels );
00071 
00074     int decodeAudio( int16_t **&daten, int sampels );
00075 
00076 
00077 protected:
00080     virtual int readRaw( unsigned char *&data, long &bytes );
00081 
00084     virtual int writeRaw( unsigned char *data, long bytes, int samp=0 );
00085 
00086     A_Codec *codec;             // Videocodec für diesen Track
00087 
00088     long long total_samples;    // Anzahl der Samples im Track
00089     
00090     unsigned char *read_puffer; // Puffer für gelesene Daten
00091     long read_puffer_rest;      // Bytes im Puffer
00092     long read_puffer_start;     // Start der Daten im Puffer
00093     long read_puffer_gr;        // Größe des Puffers
00094     long read_last_pos;         // letzte Position, von der gelesen wurde
00095 };
00096 
00097 #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