summaryrefslogtreecommitdiff
path: root/encoders/lame_encoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'encoders/lame_encoder.cpp')
-rw-r--r--encoders/lame_encoder.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/encoders/lame_encoder.cpp b/encoders/lame_encoder.cpp
new file mode 100644
index 0000000..4cbfc9c
--- /dev/null
+++ b/encoders/lame_encoder.cpp
@@ -0,0 +1,26 @@
+#include "lame_encoder.h"
+
+#include <stdexcept>
+
+EncoderLame::EncoderLame() {
+ gfp = lame_init();
+ int error = lame_init_params(gfp);
+
+ if(error < 0) {
+ throw std::runtime_error("failed to initialize LAME");
+ }
+}
+
+EncoderLame::~EncoderLame() {
+ lame_close(gfp);
+}
+
+size_t EncoderLame::encode(uint8_t *input, size_t input_size, uint8_t *output, size_t output_size) {
+ size_t size = lame_encode_buffer_interleaved(gfp, (short*)input, input_size / 4, output, output_size);
+ return size;
+}
+
+size_t EncoderLame::flush(uint8_t *output, size_t output_size) {
+ size_t size = lame_encode_flush(gfp, output, output_size);
+ return size;
+}