uvgrtp-base/src/util.hh

62 lines
1.2 KiB
C++
Raw Normal View History

2019-03-30 09:51:30 +00:00
#pragma once
#include <cstdint>
2019-05-17 09:49:33 +00:00
#include <cstddef>
2019-06-14 08:34:10 +00:00
#include <cstdio>
2019-03-30 09:51:30 +00:00
#ifdef _WIN32
/* TODO: make sure this works on windows too! */
#define PACKED_STRUCT_WIN(name) \
__pragma(pack(push, 1)) \
struct name \
__pragma(pack(pop))
#else
#define PACKED_STRUCT(name) \
struct __attribute__((packed)) name
#endif
2019-05-17 08:08:40 +00:00
const int MAX_PACKET = 65536;
const int MAX_PAYLOAD = 1000;
2019-05-17 09:49:33 +00:00
typedef enum RTP_ERROR {
RTP_INTERRUPTED = 2,
RTP_NOT_READY = 1,
RTP_OK = 0,
RTP_GENERIC_ERROR = -1,
RTP_SOCKET_ERROR = -2,
RTP_BIND_ERROR = -3,
2019-05-17 09:49:33 +00:00
RTP_INVALID_VALUE = -4,
RTP_SEND_ERROR = -5,
RTP_MEMORY_ERROR = -6,
} rtp_error_t;
2019-03-30 09:51:30 +00:00
typedef enum RTP_FORMAT {
RTP_FORMAT_GENERIC = 0,
RTP_FORMAT_HEVC = 96,
RTP_FORMAT_OPUS = 97,
} rtp_format_t;
extern thread_local rtp_error_t rtp_errno;
static inline void hex_dump(uint8_t *buf, size_t len)
{
if (!buf)
return;
for (size_t i = 0; i < len; i += 10) {
fprintf(stderr, "\t");
for (size_t k = i; k < i + 10; ++k) {
fprintf(stderr, "0x%02x ", buf[k]);
}
fprintf(stderr, "\n");
}
}
static inline void set_bytes(int *ptr, int nbytes)
{
if (ptr)
*ptr = nbytes;
}