public void InitDecoder(bool useJitterBuffer, int stepSize, int frameSize) { this.frameSize = frameSize; decodedBits = new SpeexBits(); decoderState = speex_decoder_init_new(0); fixed(SpeexBits *bitsDecode = &decodedBits) { speex_bits_init(bitsDecode); } if (useJitterBuffer) { jitterBuffer = jitter_buffer_init(stepSize); validJitterBits = false; } }
public void ResetDecoder() { fixed(SpeexBits *bitsDecoder = &decodedBits) { speex_bits_destroy(bitsDecoder); } if (decoderState != null) { speex_decoder_destroy(decoderState); decoderState = null; } if (jitterBuffer != null) { jitter_buffer_destroy(jitterBuffer); jitterBuffer = null; } }
public static extern int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet, int *start_offset);
public static extern void jitter_buffer_remaining_span(JitterBuffer *jitter, uint rem);
public static extern int jitter_buffer_ctl(JitterBuffer *jitter, int request, void *ptr);
public static extern int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter);
public static extern void jitter_buffer_tick(JitterBuffer *jitter);
public static extern int jitter_buffer_get_another(JitterBuffer *jitter, JitterBufferPacket *packet);
public static extern int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, int desired_span, int *start_offset);
public static extern void jitter_buffer_put(JitterBuffer *jitter, JitterBufferPacket *packet);
public static extern void jitter_buffer_destroy(JitterBuffer *jitter);
public static extern void jitter_buffer_reset(JitterBuffer *jitter);