Skip to content
Snippets Groups Projects
Commit 67008d23 authored by Jean-Marc Valin's avatar Jean-Marc Valin
Browse files

Support for setting the audio bandwidth

parent ae18090b
No related branches found
No related tags found
No related merge requests found
celt @ 6bf3b0a7
Subproject commit b1e017f58d2bb319eb7bc3305048185a9c8fe9d9
Subproject commit 6bf3b0a7a13e469d4a2e161143a240220f563150
......@@ -52,9 +52,10 @@ extern "C" {
#define MODE_CELT_ONLY 1002
#define BANDWIDTH_NARROWBAND 1100
#define BANDWIDTH_WIDEBAND 1101
#define BANDWIDTH_SUPERWIDEBAND 1102
#define BANDWIDTH_FULLBAND 1103
#define BANDWIDTH_MEDIUMBAND 1101
#define BANDWIDTH_WIDEBAND 1102
#define BANDWIDTH_SUPERWIDEBAND 1103
#define BANDWIDTH_FULLBAND 1104
......
......@@ -88,6 +88,9 @@ int hybrid_decode(HybridDecoder *st, const unsigned char *data,
if (st->mode != MODE_CELT_ONLY)
{
DecControl.API_sampleRate = st->Fs;
/* We Should eventually have to set the bandwidth here */
/* Call SILK encoder for the low band */
silk_ret = SKP_Silk_SDK_Decode( st->silk_dec, &DecControl, 0, &dec, len, pcm, &silk_frame_size );
if (silk_ret)
......@@ -108,8 +111,12 @@ int hybrid_decode(HybridDecoder *st, const unsigned char *data,
celt_decoder_ctl(st->celt_dec, CELT_SET_START_BAND(0));
}
if (st->mode != MODE_SILK_ONLY)
if (st->mode != MODE_SILK_ONLY && st->bandwidth > BANDWIDTH_WIDEBAND)
{
if (st->bandwidth == BANDWIDTH_SUPERWIDEBAND)
celt_decoder_ctl(st->celt_dec, CELT_SET_END_BAND(20));
else
celt_decoder_ctl(st->celt_dec, CELT_SET_END_BAND(21));
/* Encode high band with CELT */
celt_ret = celt_decode_with_ec(st->celt_dec, data, len, pcm_celt, frame_size, &dec);
for (i=0;i<frame_size;i++)
......
......@@ -103,6 +103,14 @@ int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size,
if (st->Fs / frame_size == 100)
st->encControl.bitRate += 5000;
st->encControl.packetSize = frame_size;
if (st->bandwidth == BANDWIDTH_NARROWBAND)
st->encControl.maxInternalSampleRate = 8000;
else if (st->bandwidth == BANDWIDTH_MEDIUMBAND)
st->encControl.maxInternalSampleRate = 12000;
else
st->encControl.maxInternalSampleRate = 16000;
/* Call SILK encoder for the low band */
nBytes = bytes_per_packet;
ret = SKP_Silk_SDK_Encode( st->silk_enc, &st->encControl, pcm, frame_size, &enc, &nBytes );
......@@ -121,10 +129,15 @@ int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size,
celt_encoder_ctl(st->celt_enc, CELT_SET_START_BAND(0));
}
if (st->mode != MODE_SILK_ONLY)
if (st->mode != MODE_SILK_ONLY && st->bandwidth > BANDWIDTH_WIDEBAND)
{
short buf[960];
if (st->bandwidth == BANDWIDTH_SUPERWIDEBAND)
celt_encoder_ctl(st->celt_enc, CELT_SET_END_BAND(20));
else
celt_encoder_ctl(st->celt_enc, CELT_SET_END_BAND(21));
for (i=0;i<ENCODER_DELAY_COMPENSATION;i++)
buf[i] = st->delay_buffer[i];
for (;i<frame_size;i++)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment