35 #include <librist/librist.h>
38 #define MAX_PAYLOAD_SIZE (10000-28)
57 #define D AV_OPT_FLAG_DECODING_PARAM
58 #define E AV_OPT_FLAG_ENCODING_PARAM
59 #define OFFSET(x) offsetof(RISTContext, x)
65 {
"buffer_size",
"set buffer_size in ms",
OFFSET(buffer_size),
AV_OPT_TYPE_INT, {.i64=0}, 0, 30000, .flags =
D|
E },
67 {
"log_level",
"set loglevel",
OFFSET(log_level),
AV_OPT_TYPE_INT, {.i64=RIST_LOG_INFO}, -1, INT_MAX, .flags =
D|
E },
83 static int log_cb(
void *
arg,
enum rist_log_level log_level,
const char *msg)
110 ret = rist_destroy(
s->ctx);
119 struct rist_logging_settings *logging_settings = &
s->logging_settings;
120 struct rist_peer_config *peer_config = &
s->peer_config;
131 h->max_packet_size =
s->packet_size;
132 ret = rist_sender_create(&
s->ctx,
s->profile, 0, logging_settings);
139 ret = rist_receiver_create(&
s->ctx,
s->profile, logging_settings);
144 ret = rist_peer_config_defaults_set(peer_config);
148 ret = rist_parse_address(uri, (
const struct rist_peer_config **)&peer_config);
152 if (((
s->encryption == 128 ||
s->encryption == 256) && !
s->secret) ||
153 ((peer_config->key_size == 128 || peer_config->key_size == 256) && !peer_config->secret[0])) {
159 if (
s->secret && peer_config->secret[0] == 0)
160 av_strlcpy(peer_config->secret,
s->secret, RIST_MAX_STRING_SHORT);
162 if (
s->secret && (
s->encryption == 128 ||
s->encryption == 256))
163 peer_config->key_size =
s->encryption;
165 if (
s->buffer_size) {
166 peer_config->recovery_length_min =
s->buffer_size;
167 peer_config->recovery_length_max =
s->buffer_size;
170 ret = rist_peer_create(
s->ctx, &
s->peer, &
s->peer_config);
174 ret = rist_start(
s->ctx);
189 const struct rist_data_block *data_block;
200 rist_receiver_data_block_free((
struct rist_data_block**)&data_block);
204 size = data_block->payload_len;
205 memcpy(buf, data_block->payload,
size);
206 rist_receiver_data_block_free((
struct rist_data_block**)&data_block);
214 struct rist_data_block data_block = { 0 };
217 data_block.ts_ntp = 0;
218 data_block.payload = buf;
219 data_block.payload_len =
size;
221 ret = rist_sender_data_write(
s->ctx, &data_block);