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.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/encoders/lame_encoder.cpp b/encoders/lame_encoder.cpp
index 28749aa..9c70507 100644
--- a/encoders/lame_encoder.cpp
+++ b/encoders/lame_encoder.cpp
@@ -4,6 +4,11 @@
EncoderLame::EncoderLame(RawAudioSource::p source_) : source(source_) {
gfp = lame_init();
+
+ lame_set_in_samplerate(gfp, source->get_samplerate());
+ lame_set_out_samplerate(gfp, 0);
+ lame_set_num_channels(gfp, source->get_channels());
+
int error = lame_init_params(gfp);
if(error < 0) {
@@ -20,6 +25,7 @@ std::size_t EncoderLame::read(char* buf, std::size_t buf_size) {
std::streamsize src_read = source->read(src_data, 0x30000);
if(src_read < 0)
src_read = 0;
+ // TODO: handle non-stereo inputs
std::size_t size = lame_encode_buffer_interleaved(gfp, (short*)src_data, src_read / 4, (unsigned char*)buf, buf_size);
// no more data, flush encoder
if(src_read == 0 && size == 0) {