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); }
public void WriteFlvVideoFrame(FlvVideoFrameFlags flags, int timestampMillis, int reserveBytes, FlvTagWriter tagWriter) { WriteFlvTag(FlvTagType.Video, timestampMillis, reserveBytes + 1, delegate { buffer[bufferOffset++] = (byte)flags; tagWriter(buffer, ref bufferOffset); }); }