Updated to follow changes in SILK API

This commit is contained in:
Jean-Marc Valin 2010-11-12 06:47:46 +08:00
parent ae1fad2e26
commit b5be826131
3 changed files with 27 additions and 7 deletions

2
silk

@ -1 +1 @@
Subproject commit 6c98e344f395b3d1a285885a8be88c0685a346b2 Subproject commit d513d743fb5d9802e2d39d74a13f5628c1553059

View file

@ -85,7 +85,7 @@ int opus_decode(OpusDecoder *st, const unsigned char *data,
ec_dec dec; ec_dec dec;
ec_byte_buffer buf; ec_byte_buffer buf;
SKP_SILK_SDK_DecControlStruct DecControl; SKP_SILK_SDK_DecControlStruct DecControl;
SKP_int16 silk_frame_size; SKP_int32 silk_frame_size;
short pcm_celt[960]; short pcm_celt[960];
int audiosize; int audiosize;
@ -126,6 +126,21 @@ int opus_decode(OpusDecoder *st, const unsigned char *data,
if (st->mode != MODE_CELT_ONLY) if (st->mode != MODE_CELT_ONLY)
{ {
DecControl.API_sampleRate = st->Fs; 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 */ /* We Should eventually have to set the bandwidth here */

View file

@ -92,7 +92,7 @@ int opus_encode(OpusEncoder *st, const short *pcm, int frame_size,
{ {
int i; int i;
int ret=0; int ret=0;
SKP_int16 nBytes; SKP_int32 nBytes;
ec_enc enc; ec_enc enc;
ec_byte_buffer buf; ec_byte_buffer buf;
SKP_SILK_SDK_EncControlStruct encControl; 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) if (st->Fs == 100 * frame_size)
encControl.bitRate -= 5000; 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) if (st->bandwidth == BANDWIDTH_NARROWBAND)
encControl.maxInternalSampleRate = 8000; encControl.maxInternalSampleRate = 8000;
else if (st->bandwidth == BANDWIDTH_MEDIUMBAND) else if (st->bandwidth == BANDWIDTH_MEDIUMBAND)
encControl.maxInternalSampleRate = 12000; encControl.maxInternalSampleRate = 12000;
else else
encControl.maxInternalSampleRate = 16000; encControl.maxInternalSampleRate = 16000;
/* Call SILK encoder for the low band */ /* Call SILK encoder for the low band */
nBytes = bytes_per_packet; nBytes = bytes_per_packet;
ret = SKP_Silk_SDK_Encode( st->silk_enc, &encControl, pcm, frame_size, &enc, &nBytes ); ret = SKP_Silk_SDK_Encode( st->silk_enc, &encControl, pcm, frame_size, &enc, &nBytes );
if( ret ) { if( ret ) {
fprintf (stderr, "SILK encode error\n"); fprintf (stderr, "SILK encode error %d\n", ret);
/* Handle error */ /* Handle error */
} }
ret = (ec_enc_tell(&enc, 0)+7)>>3; ret = (ec_enc_tell(&enc, 0)+7)>>3;