Example #1
0
        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 });
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        // 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);
        }
Example #5
0
        /**
         * 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);
        }
Example #6
0
        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);
        }
Example #7
0
        /**
         * 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);
        }