On 12/24/2020 8:08 AM, Paul B Mahol wrote:
+typedef struct RISTContext {
+    const AVClass *class;
+
+    int profile;
+    int buffer_size;
+    int packet_size;
+    int log_level;
+    int encryption;
+    char *secret;
+
+    struct rist_logging_settings logging_settings;
+    struct rist_peer_config peer_config;
+
+    struct rist_peer *peer;
+    struct rist_ctx *rist_ctx;
+} RISTContext;

[...]

+static int librist_open(URLContext *h, const char *uri, int flags)
+{
+    RISTContext *s = h->priv_data;
+    struct rist_logging_settings *logging_settings = &s->logging_settings;
+    struct rist_peer_config *peer_config = &s->peer_config;
+    int ret;
+
+    ret = rist_logging_set(&logging_settings, s->log_level, log_cb, h, NULL, 
NULL);
+    if (ret < 0)
+        return risterr2ret(ret);
+
+    if (flags & AVIO_FLAG_WRITE) {
+        ret = rist_sender_create(&s->rist_ctx, s->profile, 0, 
logging_settings);
+    } else {
+        ret = rist_receiver_create(&s->rist_ctx, s->profile, logging_settings);
+    }
+    if (ret < 0)
+        goto err;
+
+    ret = rist_parse_address(uri, (const struct rist_peer_config 
**)&peer_config);
+    if (ret < 0)
+        goto err;

Look at https://code.videolan.org/rist/librist/-/blob/4fd217662cee398f4706c815958a1efe48b2093f/src/rist.c#L637 rist_parse_address() does not fill peer_config with default values if it doesn't allocate it itself. It assumes it was allocated during a previous call and not by the caller.

Unless the library provides a defaults()/reset() kind of function, it doesn't look like you can really use your own rist_peer_config struct. Can you talk with the devs about it? Or even just submit a PR yourself. It should be very trivial to implement.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to