예제 #1
0
static int G7221Encode(const struct PluginCodec_Definition * codec, 
                                                      void * context,
                                                const void * fromPtr, 
                                                  unsigned * fromLen,
                                                      void * toPtr,         
                                                  unsigned * toLen,
                                              unsigned int * flag)
{
  if (context == NULL)
    return 0;

  *toLen = g722_1_encode((g722_1_encode_state_t *)context, toPtr, (const int16_t *)fromPtr, *fromLen / 2);
  return 1;
}
예제 #2
0
static switch_status_t switch_siren_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 siren_context *context = codec->private_info;

	if (!context) {
		return SWITCH_STATUS_FALSE;
	}

	*encoded_data_len = g722_1_encode(&context->encoder_object, (uint8_t *) encoded_data, (int16_t *) decoded_data, decoded_data_len / sizeof(int16_t));
	return SWITCH_STATUS_SUCCESS;
}
예제 #3
0
파일: encode.c 프로젝트: GGGO/baresip
int g7221_encode(struct auenc_state *aes, uint8_t *buf, size_t *len,
		 const int16_t *sampv, size_t sampc)
{
	size_t framec;

	if (!aes || !buf || !len || !sampv)
		return EINVAL;

	framec = sampc / aes->enc.frame_size;

	if (sampc != aes->enc.frame_size * framec)
		return EPROTO;

	if (*len < aes->enc.bytes_per_frame * framec)
		return ENOMEM;

	*len = g722_1_encode(&aes->enc, buf, sampv, (int)sampc);

	return 0;
}