private static byte[] CreateLowQualityRtpJpegHeader(uint fragmentOffset, int quality, int width, int height)
{
byte[] rtpJpegHeader = new byte[8] { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 };
// Byte 0: Type specific
//http://tools.ietf.org/search/rfc2435#section-3.1.1
// Bytes 1 to 3: Three byte fragment offset
//http://tools.ietf.org/search/rfc2435#section-3.1.2
if (BitConverter.IsLittleEndian) fragmentOffset = NetConvert.DoReverseEndian(fragmentOffset);
byte[] offsetBytes = BitConverter.GetBytes(fragmentOffset);
rtpJpegHeader[1] = offsetBytes[2];
rtpJpegHeader[2] = offsetBytes[1];
rtpJpegHeader[3] = offsetBytes[0];
// Byte 4: JPEG Type.
//http://tools.ietf.org/search/rfc2435#section-3.1.3
//Byte 5: http://tools.ietf.org/search/rfc2435#section-3.1.4 (Q)
rtpJpegHeader[5] = (byte)quality;
// Byte 6: http://tools.ietf.org/search/rfc2435#section-3.1.5 (Width)
rtpJpegHeader[6] = (byte)(width / 8);
// Byte 7: http://tools.ietf.org/search/rfc2435#section-3.1.6 (Height)
rtpJpegHeader[7] = (byte)(height / 8);
return rtpJpegHeader;
}