예제 #1
0
        public int DecodeArray(byte[] buffer, int offset, int size, int arrayLength, bool decodeName)
        {
            bool error        = false;
            int  originalSize = size;

            while (arrayLength > 0)
            {
                arrayLength--;

                AMFObjectProperty prop = new AMFObjectProperty();
                int nRes = prop.Decode(buffer, offset, size, decodeName);
                if (nRes == -1)
                {
                    error = true;
                }
                else
                {
                    size   -= nRes;
                    offset += nRes;
                    properties.Add(prop);
                }
            }
            if (error)
            {
                return(-1);
            }

            return(originalSize - size);
        }
예제 #2
0
        public int Decode(byte[] pBuffer, int bufferOffset, int size, bool bDecodeName)
        {
            int  originalSize = size;
            bool error        = false; // if there is an error while decoding - try to at least find the end mark 0x000009

            while (size >= 3)
            {
                if (RTMPHelper.ReadInt24(pBuffer, bufferOffset) == 0x00000009)
                {
                    size -= 3;
                    error = false;
                    break;
                }

                if (error)
                {
                    size--;
                    bufferOffset++;
                    continue;
                }

                AMFObjectProperty prop = new AMFObjectProperty();
                int result             = prop.Decode(pBuffer, bufferOffset, size, bDecodeName);
                if (result == -1)
                {
                    error = true;
                }
                else
                {
                    size         -= result;
                    bufferOffset += result;
                    properties.Add(prop);
                }
            }

            if (error)
            {
                return(-1);
            }

            return(originalSize - size);
        }
예제 #3
0
        public int Decode(byte[] pBuffer, int bufferOffset, int size, bool bDecodeName)
        {
            int originalSize = size;
            bool error = false; // if there is an error while decoding - try to at least find the end mark 0x000009

            while (size >= 3)
            {
                if (RTMPHelper.ReadInt24(pBuffer, bufferOffset) == 0x00000009)
                {
                    size -= 3;
                    error = false;
                    break;
                }

                if (error)
                {
                    size--;
                    bufferOffset++;
                    continue;
                }

                AMFObjectProperty prop = new AMFObjectProperty();
                int result = prop.Decode(pBuffer, bufferOffset, size, bDecodeName);
                if (result == -1)
                    error = true;
                else
                {
                    size -= result;
                    bufferOffset += result;
                    properties.Add(prop);
                }
            }

            if (error) return -1;

            return originalSize - size;
        }
예제 #4
0
        public int DecodeArray(byte[] buffer, int offset, int size, int arrayLength, bool decodeName)
        {
            bool error = false;
            int originalSize = size;

            while (arrayLength > 0)
            {
                arrayLength--;

                AMFObjectProperty prop = new AMFObjectProperty();
                int nRes = prop.Decode(buffer, offset, size, decodeName);
                if (nRes == -1)
                {
                    error = true;
                }
                else
                {
                    size -= nRes;
                    offset += nRes;
                    properties.Add(prop);
                }
            }
            if (error)
            {
                return -1;
            }

            return originalSize - size;
        }