Exemplo n.º 1
0
JNIEXPORT jint JNICALL Java_org_sipdroid_codecs_G729_encode
    (JNIEnv *env, jobject obj, jshortArray lin, jint offset, jbyteArray encoded, jint size) {

Word16  speech[L_FRAME];
UWord8  serial[BITSTREAM_SIZE];

int i;

int frsz=L_FRAME;

unsigned int lin_pos = 0;

		if (!codec_open)
			return 0;
			
		if(hEncoder == NULL)
			return 0;

for (i = 0; (i + L_FRAME) <= size; i+=frsz)
	 {
		env->GetShortArrayRegion(lin, offset + i,frsz, speech);
		g729a_enc_process(hEncoder, speech, (unsigned char*)serial);
		env->SetByteArrayRegion(encoded, RTP_HDR_SIZE+ lin_pos, BITSTREAM_SIZE, (jbyte *)serial);
		lin_pos += BITSTREAM_SIZE;
	 }

    return (jint)lin_pos;
}
int G729CodecNative::Encode(Word16 *pcm, int size, UWord8 *bitstream)
{
	if(!_bOpened)
		return false;

	//int frameSize = L_FRAME;
	int pcmOffset = 0;
	int g729Offset = 0;
	for (; pcmOffset < size;)
	{
		memcpy(_speechBuff, pcm + pcmOffset, PCM_BIT_STREAM_SIZE * 2);
		g729a_enc_process(_hEncoder, _speechBuff, _g729Buff);
		memcpy(bitstream + g729Offset, _g729Buff, G729_BIT_STREAM_SIZE);

		pcmOffset += PCM_BIT_STREAM_SIZE;
		g729Offset += G729_BIT_STREAM_SIZE;
	}

    return g729Offset;
//	return true;
}