Exemplo n.º 1
0
JNIEXPORT void JNICALL
Java_org_jitsi_impl_neomedia_codec_audio_g722_JNIEncoder_g722_1encoder_1process
    (JNIEnv *jniEnv, jclass clazz,
    jlong encoder,
    jbyteArray input, jint inputOffset,
    jbyteArray output, jint outputOffset, jint outputLength)
{
    jbyte *outputPtr = (*jniEnv)->GetByteArrayElements(jniEnv, output, NULL);

    if (outputPtr)
    {
        jbyte *inputPtr
            = (*jniEnv)->GetPrimitiveArrayCritical(jniEnv, input, NULL);

        if (inputPtr)
        {
            g722_encode(
                    (g722_encode_state_t *) (intptr_t) encoder,
                    (uint8_t *) (outputPtr + outputOffset),
                    (const int16_t *) (inputPtr + inputOffset),
                    2 * (outputLength / sizeof(uint8_t)));
            (*jniEnv)->ReleasePrimitiveArrayCritical(
                    jniEnv,
                    input, inputPtr,
                    JNI_ABORT);
        }
        (*jniEnv)->ReleaseByteArrayElements(jniEnv, output, outputPtr, 0);
    }
}
Exemplo n.º 2
0
int CTG722::encodeFrame(short *pIn,unsigned  char *pOut)
{
   if(!estate){
      estate=g722_encode_init(NULL,BPS,iSampleRate==8000?G722_SAMPLE_RATE_8000|G722_PACKED:G722_PACKED);
      if(!estate)return 0;
   }

 //  for(int i=0;i<iCodecFrameSizeDec/2;i++)pIn[i]>>=1;
   int r=g722_encode((g722_encode_state_t*)estate,pOut,pIn,iCodecFrameSizeDec/2);
//printf(" re=%d %d\n",r,iCodecFrameSizeEnc);
//iCodecFrameSizeEnc=r;
	return r; 
}
Exemplo n.º 3
0
static int lintog722_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
{
	struct g722_encoder_pvt *tmp = pvt->pvt;
	int outlen;

	outlen = g722_encode(&tmp->g722, (&pvt->outbuf.ui8[pvt->datalen]), 
		(int16_t *) f->data.ptr, f->samples);

	pvt->samples += outlen * 2;

	pvt->datalen += outlen;

	return 0;
}
Exemplo n.º 4
0
static int lintog722_framein(struct cw_translator_pvt *pvt, struct cw_frame *f)
{
    struct g722_encoder_pvt *tmp = (struct g722_encoder_pvt *) pvt;
  
    if ((tmp->tail + f->datalen/(2*sizeof(int16_t)) + 1) > BUFFER_SIZE)
    {
        cw_log(LOG_WARNING, "Out of buffer space\n");
        return -1;
    }
    tmp->tail += g722_encode(&(tmp->g722_state),
                             tmp->outbuf + tmp->tail,
                             f->data,
                             f->datalen/sizeof(int16_t));
    return 0;
}
Exemplo n.º 5
0
static switch_status_t switch_g722_encode(switch_codec_t *codec,
										  switch_codec_t *other_codec,
										  void *decoded_data,
										  uint32_t decoded_data_len,
										  uint32_t decoded_rate, void *encoded_data, uint32_t *encoded_data_len, uint32_t *encoded_rate,
										  unsigned int *flag)
{
	struct g722_context *context = codec->private_info;

	if (!context) {
		return SWITCH_STATUS_FALSE;
	}

	*encoded_data_len = g722_encode(context->encoder_object, (uint8_t *) encoded_data, (int16_t *) decoded_data, decoded_data_len / 2);

	return SWITCH_STATUS_SUCCESS;
}