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

Updated to follow changes in SILK API

parent ae1fad2e
No related branches found
No related tags found
No related merge requests found
silk @ d513d743
Subproject commit 6c98e344f395b3d1a285885a8be88c0685a346b2
Subproject commit d513d743fb5d9802e2d39d74a13f5628c1553059
......@@ -85,7 +85,7 @@ int opus_decode(OpusDecoder *st, const unsigned char *data,
ec_dec dec;
ec_byte_buffer buf;
SKP_SILK_SDK_DecControlStruct DecControl;
SKP_int16 silk_frame_size;
SKP_int32 silk_frame_size;
short pcm_celt[960];
int audiosize;
......@@ -126,6 +126,21 @@ int opus_decode(OpusDecoder *st, const unsigned char *data,
if (st->mode != MODE_CELT_ONLY)
{
DecControl.API_sampleRate = st->Fs;
DecControl.payloadSize_ms = 1000 * audiosize / st->Fs;
if( st->mode == MODE_SILK_ONLY ) {
if( st->bandwidth == BANDWIDTH_NARROWBAND ) {
DecControl.internalSampleRate = 8000;
} else if( st->bandwidth == BANDWIDTH_MEDIUMBAND ) {
DecControl.internalSampleRate = 12000;
} else if( st->bandwidth == BANDWIDTH_WIDEBAND ) {
DecControl.internalSampleRate = 16000;
} else {
SKP_assert( 0 );
}
} else {
/* Hybrid mode */
DecControl.internalSampleRate = 16000;
}
/* We Should eventually have to set the bandwidth here */
......
......@@ -92,7 +92,7 @@ int opus_encode(OpusEncoder *st, const short *pcm, int frame_size,
{
int i;
int ret=0;
SKP_int16 nBytes;
SKP_int32 nBytes;
ec_enc enc;
ec_byte_buffer buf;
SKP_SILK_SDK_EncControlStruct encControl;
......@@ -119,20 +119,25 @@ int opus_encode(OpusEncoder *st, const short *pcm, int frame_size,
if (st->Fs == 100 * frame_size)
encControl.bitRate -= 5000;
}
encControl.packetSize = frame_size;
encControl.payloadSize_ms = 1000 * frame_size / st->Fs;
if (st->mode == MODE_HYBRID)
encControl.minInternalSampleRate = 16000;
else
encControl.minInternalSampleRate = 8000;
if (st->bandwidth == BANDWIDTH_NARROWBAND)
encControl.maxInternalSampleRate = 8000;
else if (st->bandwidth == BANDWIDTH_MEDIUMBAND)
encControl.maxInternalSampleRate = 12000;
encControl.maxInternalSampleRate = 12000;
else
encControl.maxInternalSampleRate = 16000;
encControl.maxInternalSampleRate = 16000;
/* Call SILK encoder for the low band */
nBytes = bytes_per_packet;
ret = SKP_Silk_SDK_Encode( st->silk_enc, &encControl, pcm, frame_size, &enc, &nBytes );
if( ret ) {
fprintf (stderr, "SILK encode error\n");
fprintf (stderr, "SILK encode error %d\n", ret);
/* Handle error */
}
ret = (ec_enc_tell(&enc, 0)+7)>>3;
......
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