Esempio n. 1
0
        private void WriteFlvTag(FlvTagType type, int timestampMillis, int reserveBytes, FlvTagWriter tagWriter)
        {
            int tagStartOffset   = bufferOffset;
            int bodyLengthOffset = WriteFlvTagHeader(type, timestampMillis);

            int bodyStartOffset = bufferOffset;

            ReserveCapacity(reserveBytes);
            tagWriter(buffer, ref bufferOffset);

            WriteFlvTagBodyLengthAtOffset(bodyLengthOffset, bufferOffset - bodyStartOffset);
            WriteFlvTagTotalLenth(bufferOffset - tagStartOffset);
        }
Esempio n. 2
0
        public static FlvTag Create(FlvTagType type)
        {
            switch (type)
            {
            case FlvTagType.Audio:
                return(new FlvAudioTag());

            case FlvTagType.Video:
                return(new FlvVideoTag());

            case FlvTagType.ScriptData:
                return(null);

            default:
                throw new NotSupportedException();
            }
        }
Esempio n. 3
0
        private int WriteFlvTagHeader(FlvTagType type, int timestampMillis)
        {
            ReserveCapacity(11);

            buffer[bufferOffset++] = (byte)type;
            int bodyLengthOffset = bufferOffset;

            bufferOffset          += 3;
            buffer[bufferOffset++] = (byte)(timestampMillis >> 16);
            buffer[bufferOffset++] = (byte)(timestampMillis >> 8);
            buffer[bufferOffset++] = (byte)timestampMillis;
            buffer[bufferOffset++] = (byte)(timestampMillis >> 24); // Most significant bits after other 24 bits.
            buffer[bufferOffset++] = 0x00;
            buffer[bufferOffset++] = 0x00;
            buffer[bufferOffset++] = 0x00;
            return(bodyLengthOffset);
        }