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; }
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; }
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; }