diff options
Diffstat (limited to 'encoders/vorbis_encoder.h')
-rw-r--r-- | encoders/vorbis_encoder.h | 31 |
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 |