| #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; |
| } __attribute__((packed)); |