osmo-bsc/openbsc/include/openbsc/rtp.h

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));