git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2453 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Brian West 2006-08-30 16:31:35 +00:00
parent 7de2d07626
commit b4005e094d
2 changed files with 10 additions and 11 deletions

View File

@ -46,7 +46,7 @@ Flag UseVx = True;
enum Crate WrkRate = Rate63; enum Crate WrkRate = Rate63;
static const char modname[] = "mod_g723"; static const char modname[] = "mod_g723_1";
struct g723_context { struct g723_context {
struct cod_state encoder_object; struct cod_state encoder_object;

View File

@ -43,6 +43,7 @@ typedef struct {
uint8_t bits_per_frame; uint8_t bits_per_frame;
uint8_t bits; uint8_t bits;
uint8_t bbits; uint8_t bbits;
uint8_t ecount;
uint8_t d_bits; uint8_t d_bits;
uint8_t d_bbits; uint8_t d_bbits;
uint8_t dcount; uint8_t dcount;
@ -132,11 +133,14 @@ static switch_status_t switch_g726_encode(switch_codec_t *codec,
for (x = 0; x < loops && new_len < *encoded_data_len; x++) { for (x = 0; x < loops && new_len < *encoded_data_len; x++) {
int edata = encoder(*ddp, AUDIO_ENCODING_LINEAR, context); int edata = encoder(*ddp, AUDIO_ENCODING_LINEAR, context);
handle->ecount++;
if (!handle->bbits) { if (!handle->bbits) {
*handle->ptr = edata; *handle->ptr = edata;
} else if ((handle->bbits + handle->bits_per_frame) <= BITS_IN_A_BYTE) { } else if ((handle->bbits + handle->bits_per_frame) <= BITS_IN_A_BYTE) {
*handle->ptr <<= handle->bits_per_frame; printf ("WTF %d\n", BITS_IN_A_BYTE - (handle->bits_per_frame * handle->ecount));
*handle->ptr |= edata; *handle->ptr += (edata << (BITS_IN_A_BYTE - (handle->bits_per_frame * handle->ecount)));
handle->ecount = 0;
} else { } else {
int remain, next, rdata, ndata; int remain, next, rdata, ndata;
@ -145,16 +149,11 @@ static switch_status_t switch_g726_encode(switch_codec_t *codec,
rdata = edata; rdata = edata;
ndata = edata; ndata = edata;
rdata >>= remain; *handle->ptr += (edata << remain);
*handle->ptr <<= remain;
*handle->ptr |= rdata;
handle->ptr++;
ndata &= (1 << next) - 1;
*handle->ptr = ndata; *handle->ptr = ndata;
handle->bbits = 0; handle->bbits = 0;
handle->ecount = 0;
} }
handle->bits += handle->bits_per_frame; handle->bits += handle->bits_per_frame;
handle->bbits += handle->bits_per_frame; handle->bbits += handle->bits_per_frame;