00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WPAUDIOWRITER_H
00023 #define WPAUDIOWRITER_H
00024
00025 #include "AbstractAudioWriter.h"
00026
00027 #include "defines.h"
00028 #include "wavpack/wavpack.h"
00029
00030 class QString;
00031
00032 class WPAudioWriter : public AbstractAudioWriter
00033 {
00034
00035 public:
00036 WPAudioWriter();
00037 ~WPAudioWriter();
00038
00039 bool set_format_attribute(const QString& key, const QString& value);
00040 const char* get_extension();
00041
00042 protected:
00043 bool open_private();
00044 nframes_t write_private(void* buffer, nframes_t frameCount);
00045 bool close_private();
00046 int write_to_file(void *lpBuffer, uint32_t nNumberOfBytesToWrite, uint32_t *lpNumberOfBytesWritten);
00047 bool rewrite_first_block();
00048
00049 static int write_block(void *id, void *data, int32_t length);
00050
00051 WavpackConfig m_config;
00052 WavpackContext* m_wp;
00053 FILE* m_file;
00054 char* m_firstBlock;
00055 int32_t m_firstBlockSize;
00056 int m_configFlags;
00057 int32_t* m_tmp_buffer;
00058 nframes_t m_tmpBufferSize;
00059 };
00060
00061 #endif