public override RTPPacket[] Encode(short[] sData) { byte [] bCompressed = new byte[this.ReceivePTime * 8]; Codec.Encode(EncodeState, bCompressed, sData, sData.Length); RTPPacket packet = new RTPPacket(); packet.PayloadData = bCompressed; return(new RTPPacket[] { packet }); }
public byte[] Encode(byte[] data, int offset, int length) { if (offset != 0) { throw new ArgumentException("G722 does not yet support non-zero offsets"); } WaveBuffer wb = new WaveBuffer(data); int encodedLength = length / 4; byte[] outputBuffer = new byte[encodedLength]; _codec.Encode(_encoderState, outputBuffer, wb.ShortBuffer, length / 2); return(outputBuffer); }
public byte[] Encode(byte[] data, int offset, int length) { if (offset != 0) { throw new ArgumentException("G722 does not yet support non-zero offsets"); } var wb = new WaveBuffer(data); var encodedLength = length / 4; var outputBuffer = new byte[encodedLength]; var encoded = codec.Encode(encoderState, outputBuffer, wb.ShortBuffer, length / 2); Debug.Assert(encodedLength == encoded); return(outputBuffer); }
// public int Encode(byte[] encoded, short[] pcm) // { // if (g722Codec == null) // { // g722Codec = new G722Codec(); // g722CodecState = new G722CodecState(G722_BIT_RATE, G722Flags.None); // } // var requiredEncodedByteCount = pcm.Length / 2; // if (encoded.Length < requiredEncodedByteCount) // { // return -1; // } // var encodedByteCount = g722Codec.Encode(g722CodecState, encoded, // pcm, pcm.Length); // return encodedByteCount; // } public byte[] Encode(short[] pcm) { if (g722Codec == null) { g722Codec = new G722Codec(); g722CodecState = new G722CodecState(G722_BIT_RATE, G722Flags.None); } var requiredEncodedByteCount = pcm.Length / 2; var enc = new byte[requiredEncodedByteCount]; g722Codec.Encode(g722CodecState, enc, pcm, pcm.Length); return(enc); }
/** * FORMAT 2 * G722 16kHz mono **/ private byte[] EncodeFormat2(float[] data) { byte[] rs = codecDownSampler.inputResample(Converters.floats2bytes(data), data.Length); float[] f = Converters.bytes2floats(rs); float[] mono = Converters.stereo2mono(f); short[] shorts = Converters.floats2shorts(mono, true); int bytes = (int)(shorts.Length / 2); byte[] output = new byte[bytes]; encode2.Encode(encode2State, output, shorts, shorts.Length); return(output); }
static private void WaveIn_DataAvailable(object sender, WaveInEventArgs e) { G722Codec codec = new G722Codec(); short[] newData = new short[e.BytesRecorded / 2]; for (int i = 0; i < e.BytesRecorded / 2; i++) { newData[i] = (short)(e.Buffer[2 * i] >> 8); newData[i] += e.Buffer[2 * i + 1]; } byte[] buffer = new byte[newData.Length * 2]; //for (int i = 0; i < buffer.Length; i++) //buffer[i] = ALawEncoder.LinearToALawSample(newData[i]); codec.Encode(_g722CodecState, buffer, newData, newData.Length); _bufferedWaveProvider.AddSamples(buffer, 0, buffer.Length); }
/** * FORMAT 1 * G722 48kHz stereo **/ private byte[] EncodeFormat1(float[] data) { short[] shorts = Converters.floats2shorts(data, true); // DeMux into Left and Right List <short[]> lr = Converters.deMuxStereo(shorts); // CALCULATE NUMBER OF BYTES IN OUTPUT int bytes = (int)(lr[0].Length / 2); byte[] outputL = new byte[bytes]; byte[] outputR = new byte[bytes]; encode1L.Encode(encode1Lstate, outputL, lr[0], lr[0].Length); encode1R.Encode(encode1Rstate, outputR, lr[1], lr[1].Length); byte[] output = new byte[outputL.Length + outputR.Length]; Array.Copy(outputL, output, outputL.Length); Array.Copy(outputR, 0, output, outputL.Length, outputR.Length); return(output); }