コード例 #1
0
ファイル: G7221Codec.c プロジェクト: myangel13141/opal
static int G7221Decode(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_decode((g722_1_decode_state_t *)context, (int16_t *)toPtr, fromPtr, *fromLen)*2;
  return 1;
}
コード例 #2
0
static switch_status_t switch_siren_decode(switch_codec_t *codec,
										   switch_codec_t *other_codec,
										   void *encoded_data,
										   uint32_t encoded_data_len,
										   uint32_t encoded_rate, void *decoded_data, uint32_t *decoded_data_len, uint32_t *decoded_rate,
										   unsigned int *flag)
{
	struct siren_context *context = codec->private_info;

	if (!context) {
		return SWITCH_STATUS_FALSE;
	}

	*decoded_data_len = g722_1_decode(&context->decoder_object, (int16_t *) decoded_data, (uint8_t *) encoded_data, encoded_data_len) * sizeof(int16_t);

	return SWITCH_STATUS_SUCCESS;
}
コード例 #3
0
ファイル: decode.c プロジェクト: Studio-Link/baresip
int g7221_decode(struct audec_state *ads,
		 int fmt, void *sampv, size_t *sampc,
		 const uint8_t *buf, size_t len)
{
	size_t framec;

	if (!ads || !sampv || !sampc || !buf)
		return EINVAL;

	framec = len / ads->dec.bytes_per_frame;

	if (len != ads->dec.bytes_per_frame * framec)
		return EPROTO;

	if (*sampc < ads->dec.frame_size * framec)
		return ENOMEM;

	*sampc = g722_1_decode(&ads->dec, sampv, buf, (int)len);

	return 0;
}