summaryrefslogtreecommitdiff
path: root/encoders/vorbis_encoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'encoders/vorbis_encoder.h')
-rw-r--r--encoders/vorbis_encoder.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/encoders/vorbis_encoder.h b/encoders/vorbis_encoder.h
new file mode 100644
index 0000000..c3e3728
--- /dev/null
+++ b/encoders/vorbis_encoder.h
@@ -0,0 +1,31 @@
+#ifndef VORBIS_ENCODER_H
+#define VORBIS_ENCODER_H
+
+#include "encoder.h"
+
+#include <vorbis/vorbisenc.h>
+#include <ogg/ogg.h>
+
+class VorbisEncoder : public Encoder {
+ private:
+ vorbis_info vi;
+ vorbis_dsp_state dsp;
+ vorbis_block vb;
+ ogg_stream_state os;
+ ogg_page og;
+ RawAudioSource::p source;
+ //! Set to true when ogg stream headers are written.
+ bool headers_written;
+
+ protected:
+ std::size_t write_pages(char *buf, std::size_t buf_size);
+ std::size_t decode(char *buf, std::size_t buf_size);
+
+ public:
+ VorbisEncoder(RawAudioSource::p source_);
+ virtual ~VorbisEncoder ();
+
+ virtual std::size_t read(char* buf, std::size_t buf_size);
+};
+
+#endif