00001 #ifndef AVFECODER_H_ 00002 #define AVFECODER_H_ 00003 00004 #include <stdint.h> 00005 00006 #include "decoder.h" 00007 00008 #include <audiooutputsettings.h> 00009 00010 extern "C" { 00011 #include <libavformat/avformat.h> 00012 #include <libavcodec/avcodec.h> 00013 } 00014 00015 class Metadata; 00016 00017 class avfDecoder : public Decoder 00018 { 00019 public: 00020 avfDecoder(const QString &file, DecoderFactory *, QIODevice *, AudioOutput *); 00021 virtual ~avfDecoder(void); 00022 00023 bool initialize(); 00024 double lengthInSeconds(); 00025 void seek(double); 00026 void stop(); 00027 00028 MetaIO *doCreateTagger(void); 00029 00030 private: 00031 void run(); 00032 00033 void writeBlock(); 00034 void deinit(); 00035 00036 bool inited, user_stop; 00037 int stat; 00038 char *output_buf; 00039 ulong output_at; 00040 00041 unsigned int bks, bksFrames, decodeBytes; 00042 bool finish; 00043 long freq, bitrate; 00044 AudioFormat m_sampleFmt; 00045 int m_channels; 00046 double seekTime; 00047 00048 QString devicename; 00049 00050 AVInputFormat *m_inputFormat; 00051 AVFormatContext *m_inputContext; 00052 AVCodec *m_codec; // Codec 00053 AVCodecContext *m_audioDec; 00054 00055 bool m_inputIsFile; 00056 unsigned char *m_buffer; 00057 AVIOContext *m_byteIOContext; 00058 00059 int errcode; 00060 }; 00061 00062 #endif 00063
1.6.3