diff options
author | Jon Bergli Heier <snakebite@jvnv.net> | 2011-08-04 15:03:15 +0200 |
---|---|---|
committer | Jon Bergli Heier <snakebite@jvnv.net> | 2011-08-04 15:03:15 +0200 |
commit | 16e1e247638aa0da5541aa78fb141e60744d56a0 (patch) | |
tree | b6f99c16767c95c0b9fb0a79abea613150b11a4e /encoders/lame_encoder.cpp | |
parent | 2c01957dfe1135955627cbbbffddc70d090d2656 (diff) |
Handle sample rates and channels.
Diffstat (limited to 'encoders/lame_encoder.cpp')
-rw-r--r-- | encoders/lame_encoder.cpp | 6 |
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) { |