40 lines
823 B
C
40 lines
823 B
C
#pragma once
|
|
|
|
/* attempt to determine byte order */
|
|
#include <sys/param.h>
|
|
#include <limits.h>
|
|
#include <time.h>
|
|
|
|
#ifndef __BYTE_ORDER
|
|
# ifdef __APPLE__
|
|
# define __BYTE_ORDER __DARWIN_BYTE_ORDER
|
|
# define __LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
|
|
# define __BIG_ENDIAN __DARWIN_BIG_ENDIAN
|
|
# else
|
|
# error "__BYTE_ORDER should be defined by someone"
|
|
# endif
|
|
#endif
|
|
|
|
/* according to rtp_proxy.c RFC 3550 */
|
|
struct rtp_hdr {
|
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
uint8_t csrc_count:4,
|
|
extension:1,
|
|
padding:1,
|
|
version:2;
|
|
uint8_t payload_type:7,
|
|
marker:1;
|
|
#elif __BYTE_ORDER == __BIG_ENDIAN
|
|
uint8_t version:2,
|
|
padding:1,
|
|
extension:1,
|
|
csrc_count:4;
|
|
uint8_t marker:1,
|
|
payload_type:7;
|
|
#endif
|
|
uint16_t sequence;
|
|
uint32_t timestamp;
|
|
uint32_t ssrc;
|
|
uint8_t data[0];
|
|
} __attribute__((packed));
|