コード例 #1
0
        /// <summary>
        /// Speex in-band request (submode=14).
        /// </summary>
        public void SpeexInbandRequest(Bits bits)
        {
            int code = bits.Unpack(4);

            switch (code)
            {
            case 0:                     // asks the decoder to set perceptual enhancment off (0) or on
                                        // (1)
                bits.Advance(1);
                break;

            case 1:                     // asks (if 1) the encoder to be less "aggressive" due to high
                                        // packet loss
                bits.Advance(1);
                break;

            case 2:                     // asks the encoder to switch to mode N
                bits.Advance(4);
                break;

            case 3:                     // asks the encoder to switch to mode N for low-band
                bits.Advance(4);
                break;

            case 4:                     // asks the encoder to switch to mode N for high-band
                bits.Advance(4);
                break;

            case 5:                     // asks the encoder to switch to quality N for VBR
                bits.Advance(4);
                break;

            case 6:                     // request acknowledgement (0=no, 1=all, 2=only for inband data)
                bits.Advance(4);
                break;

            case 7:                     // asks the encoder to set CBR(0), VAD(1), DTX(3), VBR(5),
                                        // VBR+DTX(7)
                bits.Advance(4);
                break;

            case 8:                     // transmit (8-bit) character to the other end
                bits.Advance(8);
                break;

            case 9:                     // intensity stereo information
                                        // setup the stereo decoder; to skip: tmp = bits.unpack(8); break;
                stereo.Init(bits);      // read 8 bits
                break;

            case 10:                     // announce maximum bit-rate acceptable (N in byets/second)
                bits.Advance(16);
                break;

            case 11:                     // reserved
                bits.Advance(16);
                break;

            case 12:                     // Acknowledge receiving packet N
                bits.Advance(32);
                break;

            case 13:                     // reserved
                bits.Advance(32);
                break;

            case 14:                     // reserved
                bits.Advance(64);
                break;

            case 15:                     // reserved
                bits.Advance(64);
                break;

            default:
                break;
            }
        }