Ejemplo n.º 1
0
static switch_status_t switch_bv16_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 bv16_context *context = codec->private_info;

	if (!context) {
		return SWITCH_STATUS_FALSE;
	}

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

	return SWITCH_STATUS_SUCCESS;
}
Ejemplo n.º 2
0
static void enc_process(MSFilter *f){
	EncState *s=(EncState*)f->data;
	mblk_t *im;
	int size = BV16_CODE_SIZE *2;
	int i,frames;
	uint8_t buf[BV16_FRAME_SIZE * 2 * 4];
	
	while((im=ms_queue_get(f->inputs[0]))!=NULL){
		ms_bufferizer_put(s->bufferizer,im);
	}

	while(ms_bufferizer_read(s->bufferizer,(uint8_t*)buf,sizeof(buf))==sizeof(buf)) {
		mblk_t *om=allocb(BV16_CODE_SIZE*8,0);
		uint8_t *in_buf = (uint8_t *)buf;

		frames = sizeof(buf)/(BV16_FRAME_SIZE  * 2);
		
		
		for(i=0;i<frames;i++)
		{
			//BV16_Encode(&s->ebs, &s->cs,(short *)in_buf);
			//BV16_BitPack((unsigned short *)om->b_wptr, &s->ebs);

			bv16_encode(s->enc,
				(uint8_t *)om->b_wptr,
				(int16_t *) in_buf,
				BV16_FRAME_SIZE);

			//ms_error("BV16_Encode frames %d",i);
			in_buf += 80;
			om->b_wptr += 10;
		}

		mblk_set_timestamp_info(om,s->ts);
		ms_queue_put(f->outputs[0],om);
		s->ts+=sizeof(buf)/2;
	}

}