public void putBit(int oneBit) throws IOException {
        mByteBuf[mBytePos] |= (oneBit<<(7-mBitPos++));
        if (mBitPos == 8){
            byte lastByte = mByteBuf[mBytePos];
            ++mBytePos;mBitPos = 0;
            if (mBytePos == mByteBuf.length){
                mOs.write(mByteBuf);
                mBytePos = mBitPos = 0;
                for (int i=0; i!=mByteBuf.length; ++i){
                    mByteBuf[i] = 0;
                }
            }
            if (lastByte == (byte)0xff){
                this.putByte( (byte) 0x00 );
            }
        }
    }