Merge "PJPROJECT logging: Fix detection of max supported log level."
[asterisk/asterisk.git] / res / res_rtp_asterisk.c
index b86463e..750e1ef 100644 (file)
@@ -230,6 +230,7 @@ struct dtls_details {
 /*! \brief RTP session description */
 struct ast_rtp {
        int s;
+       /*! \note The f.subclass.format holds a ref. */
        struct ast_frame f;
        unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET];
        unsigned int ssrc;              /*!< Synchronization source, RFC 3550, page 10. */
@@ -2765,6 +2766,7 @@ static int ast_rtp_destroy(struct ast_rtp_instance *instance)
        if (rtp->red) {
                AST_SCHED_DEL(rtp->sched, rtp->red->schedid);
                ast_free(rtp->red);
+               rtp->red = NULL;
        }
 
 #ifdef HAVE_PJPROJECT
@@ -3485,7 +3487,8 @@ static int ast_rtp_raw_write(struct ast_rtp_instance *instance, struct ast_frame
        return 0;
 }
 
-static struct ast_frame *red_t140_to_red(struct rtp_red *red) {
+static struct ast_frame *red_t140_to_red(struct rtp_red *red)
+{
        unsigned char *data = red->t140red.data.ptr;
        int len = 0;
        int i;
@@ -5059,22 +5062,21 @@ static int rtp_red_init(struct ast_rtp_instance *instance, int buffer_time, int
        struct ast_rtp *rtp = ast_rtp_instance_get_data(instance);
        int x;
 
-       if (!(rtp->red = ast_calloc(1, sizeof(*rtp->red)))) {
+       rtp->red = ast_calloc(1, sizeof(*rtp->red));
+       if (!rtp->red) {
                return -1;
        }
 
        rtp->red->t140.frametype = AST_FRAME_TEXT;
-       ao2_replace(rtp->red->t140.subclass.format, ast_format_t140_red);
+       rtp->red->t140.subclass.format = ast_format_t140_red;
        rtp->red->t140.data.ptr = &rtp->red->buf_data;
 
-       rtp->red->t140.ts = 0;
        rtp->red->t140red = rtp->red->t140;
        rtp->red->t140red.data.ptr = &rtp->red->t140red_data;
-       rtp->red->t140red.datalen = 0;
+
        rtp->red->ti = buffer_time;
        rtp->red->num_gen = generations;
        rtp->red->hdrlen = generations * 4 + 1;
-       rtp->red->prev_ts = 0;
 
        for (x = 0; x < generations; x++) {
                rtp->red->pt[x] = payloads[x];
@@ -5084,8 +5086,6 @@ static int rtp_red_init(struct ast_rtp_instance *instance, int buffer_time, int
        rtp->red->t140red_data[x*4] = rtp->red->pt[x] = payloads[x]; /* primary pt */
        rtp->red->schedid = ast_sched_add(rtp->sched, generations, red_write, instance);
 
-       rtp->red->t140.datalen = 0;
-
        return 0;
 }