From 520594be747b5ad6a1d639ee33372472badff4ef Mon Sep 17 00:00:00 2001 From: bruceperens Date: Fri, 30 May 2014 03:00:17 +0000 Subject: [PATCH] Oops, missing some increments. git-svn-id: https://svn.code.sf.net/p/freetel/code@1612 01035d8c-6547-0410-b346-abe4f91aad63 --- freedv-server/source/codec2.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/freedv-server/source/codec2.cpp b/freedv-server/source/codec2.cpp index c58e9dca..380c1ef4 100644 --- a/freedv-server/source/codec2.cpp +++ b/freedv-server/source/codec2.cpp @@ -107,18 +107,26 @@ namespace FreeDV { } std::size_t - Codec2::decode16(const std::uint8_t * i, std::int16_t * o, std::size_t * data_length, std::size_t sample_length) + Codec2::decode16( + const std::uint8_t * i, + std::int16_t * o, + std::size_t * data_length, + std::size_t sample_length) { std::size_t bytes_read = 0; std::size_t samples_read = 0; while ( *data_length >= bytes_per && sample_length >= samples_per ) { + codec2_decode(c, o, i); - *data_length -= bytes_per; - sample_length -= samples_per; + i += bytes_per; bytes_read += bytes_per; + *data_length -= bytes_per; + + o += samples_per; samples_read += samples_per; + sample_length -= samples_per; } *data_length = bytes_read; return samples_read; @@ -126,10 +134,10 @@ namespace FreeDV { std::size_t Codec2::encode16( - const std::int16_t * i, - std::uint8_t * o, - std::size_t data_length, - std::size_t *sample_length) + const std::int16_t * i, + std::uint8_t * o, + std::size_t data_length, + std::size_t * sample_length) { std::size_t bytes_read = 0; std::size_t samples_read = 0; @@ -139,10 +147,13 @@ namespace FreeDV { // libcodec2. codec2_encode(c, o, (std::int16_t *)i); - data_length -= bytes_per; - *sample_length -= samples_per; + o += bytes_per; bytes_read += bytes_per; + data_length -= bytes_per; + + i += samples_per; samples_read += samples_per; + *sample_length -= samples_per; } *sample_length = samples_read; return bytes_read; -- 2.25.1