rtpdec: pass an AVFormatContext to ff_parse_fmtp()
authorAnton Khirnov <anton@khirnov.net>
Sat, 5 Jul 2014 07:01:07 +0000 (07:01 +0000)
committerAnton Khirnov <anton@khirnov.net>
Wed, 9 Jul 2014 13:40:54 +0000 (13:40 +0000)
Use it for logging, instead of NULL or the stream codec context.

libavformat/rtpdec.c
libavformat/rtpdec.h
libavformat/rtpdec_amr.c
libavformat/rtpdec_h264.c
libavformat/rtpdec_ilbc.c
libavformat/rtpdec_latm.c
libavformat/rtpdec_mpeg4.c
libavformat/rtpdec_xiph.c

index 3984489..308a48a 100644 (file)
@@ -826,8 +826,10 @@ void ff_rtp_parse_close(RTPDemuxContext *s)
     av_free(s);
 }
 
     av_free(s);
 }
 
-int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
-                  int (*parse_fmtp)(AVStream *stream,
+int ff_parse_fmtp(AVFormatContext *s,
+                  AVStream *stream, PayloadContext *data, const char *p,
+                  int (*parse_fmtp)(AVFormatContext *s,
+                                    AVStream *stream,
                                     PayloadContext *data,
                                     char *attr, char *value))
 {
                                     PayloadContext *data,
                                     char *attr, char *value))
 {
@@ -852,7 +854,7 @@ int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
     while (ff_rtsp_next_attr_and_value(&p,
                                        attr, sizeof(attr),
                                        value, value_size)) {
     while (ff_rtsp_next_attr_and_value(&p,
                                        attr, sizeof(attr),
                                        value, value_size)) {
-        res = parse_fmtp(stream, data, attr, value);
+        res = parse_fmtp(s, stream, data, attr, value);
         if (res < 0 && res != AVERROR_PATCHWELCOME) {
             av_free(value);
             return res;
         if (res < 0 && res != AVERROR_PATCHWELCOME) {
             av_free(value);
             return res;
index 6b16117..46b08ce 100644 (file)
@@ -200,8 +200,10 @@ RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id,
 int ff_rtsp_next_attr_and_value(const char **p, char *attr, int attr_size,
                                 char *value, int value_size);
 
 int ff_rtsp_next_attr_and_value(const char **p, char *attr, int attr_size,
                                 char *value, int value_size);
 
-int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
-                  int (*parse_fmtp)(AVStream *stream,
+int ff_parse_fmtp(AVFormatContext *s,
+                  AVStream *stream, PayloadContext *data, const char *p,
+                  int (*parse_fmtp)(AVFormatContext *s,
+                                    AVStream *stream,
                                     PayloadContext *data,
                                     char *attr, char *value));
 
                                     PayloadContext *data,
                                     char *attr, char *value));
 
index fd18ff2..86348bb 100644 (file)
@@ -139,7 +139,8 @@ static int amr_handle_packet(AVFormatContext *ctx, PayloadContext *data,
     return 0;
 }
 
     return 0;
 }
 
-static int amr_parse_fmtp(AVStream *stream, PayloadContext *data,
+static int amr_parse_fmtp(AVFormatContext *s,
+                          AVStream *stream, PayloadContext *data,
                           char *attr, char *value)
 {
     /* Some AMR SDP configurations contain "octet-align", without
                           char *attr, char *value)
 {
     /* Some AMR SDP configurations contain "octet-align", without
@@ -147,8 +148,8 @@ static int amr_parse_fmtp(AVStream *stream, PayloadContext *data,
      * interpret it as "1".
      */
     if (!strcmp(value, "")) {
      * interpret it as "1".
      */
     if (!strcmp(value, "")) {
-        av_log(NULL, AV_LOG_WARNING, "AMR fmtp attribute %s had "
-                                     "nonstandard empty value\n", attr);
+        av_log(s, AV_LOG_WARNING, "AMR fmtp attribute %s had "
+                                  "nonstandard empty value\n", attr);
         strcpy(value, "1");
     }
     if (!strcmp(attr, "octet-align"))
         strcpy(value, "1");
     }
     if (!strcmp(attr, "octet-align"))
@@ -177,7 +178,7 @@ static int amr_parse_sdp_line(AVFormatContext *s, int st_index,
      * separated key/value pairs.
      */
     if (av_strstart(line, "fmtp:", &p)) {
      * separated key/value pairs.
      */
     if (av_strstart(line, "fmtp:", &p)) {
-        ret = ff_parse_fmtp(s->streams[st_index], data, p, amr_parse_fmtp);
+        ret = ff_parse_fmtp(s, s->streams[st_index], data, p, amr_parse_fmtp);
         if (!data->octet_align || data->crc ||
             data->interleaving || data->channels != 1) {
             av_log(s, AV_LOG_ERROR, "Unsupported RTP/AMR configuration!\n");
         if (!data->octet_align || data->crc ||
             data->interleaving || data->channels != 1) {
             av_log(s, AV_LOG_ERROR, "Unsupported RTP/AMR configuration!\n");
index 982eb72..abf1f39 100644 (file)
@@ -64,7 +64,8 @@ struct PayloadContext {
 
 static const uint8_t start_sequence[] = { 0, 0, 0, 1 };
 
 
 static const uint8_t start_sequence[] = { 0, 0, 0, 1 };
 
-static int sdp_parse_fmtp_config_h264(AVStream *stream,
+static int sdp_parse_fmtp_config_h264(AVFormatContext *s,
+                                      AVStream *stream,
                                       PayloadContext *h264_data,
                                       char *attr, char *value)
 {
                                       PayloadContext *h264_data,
                                       char *attr, char *value)
 {
@@ -73,7 +74,7 @@ static int sdp_parse_fmtp_config_h264(AVStream *stream,
     assert(h264_data != NULL);
 
     if (!strcmp(attr, "packetization-mode")) {
     assert(h264_data != NULL);
 
     if (!strcmp(attr, "packetization-mode")) {
-        av_log(codec, AV_LOG_DEBUG, "RTP Packetization Mode: %d\n", atoi(value));
+        av_log(s, AV_LOG_DEBUG, "RTP Packetization Mode: %d\n", atoi(value));
         h264_data->packetization_mode = atoi(value);
         /*
          * Packetization Mode:
         h264_data->packetization_mode = atoi(value);
         /*
          * Packetization Mode:
@@ -83,7 +84,7 @@ static int sdp_parse_fmtp_config_h264(AVStream *stream,
          *                      and 29 (FU-B) are allowed.
          */
         if (h264_data->packetization_mode > 1)
          *                      and 29 (FU-B) are allowed.
          */
         if (h264_data->packetization_mode > 1)
-            av_log(codec, AV_LOG_ERROR,
+            av_log(s, AV_LOG_ERROR,
                    "Interleaved RTP mode is not supported yet.\n");
     } else if (!strcmp(attr, "profile-level-id")) {
         if (strlen(value) == 6) {
                    "Interleaved RTP mode is not supported yet.\n");
     } else if (!strcmp(attr, "profile-level-id")) {
         if (strlen(value) == 6) {
@@ -104,7 +105,7 @@ static int sdp_parse_fmtp_config_h264(AVStream *stream,
             buffer[1]   = value[5];
             level_idc   = strtol(buffer, NULL, 16);
 
             buffer[1]   = value[5];
             level_idc   = strtol(buffer, NULL, 16);
 
-            av_log(codec, AV_LOG_DEBUG,
+            av_log(s, AV_LOG_DEBUG,
                    "RTP Profile IDC: %x Profile IOP: %x Level: %x\n",
                    profile_idc, profile_iop, level_idc);
             h264_data->profile_idc = profile_idc;
                    "RTP Profile IDC: %x Profile IOP: %x Level: %x\n",
                    profile_idc, profile_iop, level_idc);
             h264_data->profile_idc = profile_idc;
@@ -137,7 +138,7 @@ static int sdp_parse_fmtp_config_h264(AVStream *stream,
                                           codec->extradata_size +
                                           FF_INPUT_BUFFER_PADDING_SIZE);
                 if (!dest) {
                                           codec->extradata_size +
                                           FF_INPUT_BUFFER_PADDING_SIZE);
                 if (!dest) {
-                    av_log(codec, AV_LOG_ERROR,
+                    av_log(s, AV_LOG_ERROR,
                            "Unable to allocate memory for extradata!\n");
                     return AVERROR(ENOMEM);
                 }
                            "Unable to allocate memory for extradata!\n");
                     return AVERROR(ENOMEM);
                 }
@@ -157,7 +158,7 @@ static int sdp_parse_fmtp_config_h264(AVStream *stream,
                 codec->extradata_size += sizeof(start_sequence) + packet_size;
             }
         }
                 codec->extradata_size += sizeof(start_sequence) + packet_size;
             }
         }
-        av_log(codec, AV_LOG_DEBUG, "Extradata set to %p (size: %d)!\n",
+        av_log(s, AV_LOG_DEBUG, "Extradata set to %p (size: %d)!\n",
                codec->extradata, codec->extradata_size);
     }
     return 0;
                codec->extradata, codec->extradata_size);
     }
     return 0;
@@ -385,7 +386,7 @@ static int parse_h264_sdp_line(AVFormatContext *s, int st_index,
         codec->width   = atoi(buf1);
         codec->height  = atoi(p + 1); // skip the -
     } else if (av_strstart(p, "fmtp:", &p)) {
         codec->width   = atoi(buf1);
         codec->height  = atoi(p + 1); // skip the -
     } else if (av_strstart(p, "fmtp:", &p)) {
-        return ff_parse_fmtp(stream, h264_data, p, sdp_parse_fmtp_config_h264);
+        return ff_parse_fmtp(s, stream, h264_data, p, sdp_parse_fmtp_config_h264);
     } else if (av_strstart(p, "cliprect:", &p)) {
         // could use this if we wanted.
     }
     } else if (av_strstart(p, "cliprect:", &p)) {
         // could use this if we wanted.
     }
index 2e99734..bff47c7 100644 (file)
@@ -23,7 +23,8 @@
 #include "rtpdec_formats.h"
 #include "libavutil/avstring.h"
 
 #include "rtpdec_formats.h"
 #include "libavutil/avstring.h"
 
-static int ilbc_parse_fmtp(AVStream *stream, PayloadContext *data,
+static int ilbc_parse_fmtp(AVFormatContext *s,
+                           AVStream *stream, PayloadContext *data,
                            char *attr, char *value)
 {
     if (!strcmp(attr, "mode")) {
                            char *attr, char *value)
 {
     if (!strcmp(attr, "mode")) {
@@ -36,7 +37,7 @@ static int ilbc_parse_fmtp(AVStream *stream, PayloadContext *data,
             stream->codec->block_align = 50;
             break;
         default:
             stream->codec->block_align = 50;
             break;
         default:
-            av_log(NULL, AV_LOG_ERROR, "Unsupported iLBC mode %d\n", mode);
+            av_log(s, AV_LOG_ERROR, "Unsupported iLBC mode %d\n", mode);
             return AVERROR(EINVAL);
         }
     }
             return AVERROR(EINVAL);
         }
     }
@@ -54,7 +55,7 @@ static int ilbc_parse_sdp_line(AVFormatContext *s, int st_index,
     st = s->streams[st_index];
 
     if (av_strstart(line, "fmtp:", &p)) {
     st = s->streams[st_index];
 
     if (av_strstart(line, "fmtp:", &p)) {
-        int ret = ff_parse_fmtp(st, data, p, ilbc_parse_fmtp);
+        int ret = ff_parse_fmtp(s, st, data, p, ilbc_parse_fmtp);
         if (ret < 0)
             return ret;
         if (!st->codec->block_align) {
         if (ret < 0)
             return ret;
         if (!st->codec->block_align) {
index 050595c..6ab3f78 100644 (file)
@@ -145,7 +145,8 @@ end:
     return ret;
 }
 
     return ret;
 }
 
-static int parse_fmtp(AVStream *stream, PayloadContext *data,
+static int parse_fmtp(AVFormatContext *s,
+                      AVStream *stream, PayloadContext *data,
                       char *attr, char *value)
 {
     int res;
                       char *attr, char *value)
 {
     int res;
@@ -157,7 +158,7 @@ static int parse_fmtp(AVStream *stream, PayloadContext *data,
     } else if (!strcmp(attr, "cpresent")) {
         int cpresent = atoi(value);
         if (cpresent != 0)
     } else if (!strcmp(attr, "cpresent")) {
         int cpresent = atoi(value);
         if (cpresent != 0)
-            avpriv_request_sample(NULL,
+            avpriv_request_sample(s,
                                   "RTP MP4A-LATM with in-band configuration");
     }
 
                                   "RTP MP4A-LATM with in-band configuration");
     }
 
@@ -173,7 +174,7 @@ static int latm_parse_sdp_line(AVFormatContext *s, int st_index,
         return 0;
 
     if (av_strstart(line, "fmtp:", &p))
         return 0;
 
     if (av_strstart(line, "fmtp:", &p))
-        return ff_parse_fmtp(s->streams[st_index], data, p, parse_fmtp);
+        return ff_parse_fmtp(s, s->streams[st_index], data, p, parse_fmtp);
 
     return 0;
 }
 
     return 0;
 }
index bec5c7d..4aedeea 100644 (file)
@@ -210,7 +210,8 @@ static int aac_parse_packet(AVFormatContext *ctx, PayloadContext *data,
     return 0;
 }
 
     return 0;
 }
 
-static int parse_fmtp(AVStream *stream, PayloadContext *data,
+static int parse_fmtp(AVFormatContext *s,
+                      AVStream *stream, PayloadContext *data,
                       char *attr, char *value)
 {
     AVCodecContext *codec = stream->codec;
                       char *attr, char *value)
 {
     AVCodecContext *codec = stream->codec;
@@ -248,7 +249,7 @@ static int parse_sdp_line(AVFormatContext *s, int st_index,
         return 0;
 
     if (av_strstart(line, "fmtp:", &p))
         return 0;
 
     if (av_strstart(line, "fmtp:", &p))
-        return ff_parse_fmtp(s->streams[st_index], data, p, parse_fmtp);
+        return ff_parse_fmtp(s, s->streams[st_index], data, p, parse_fmtp);
 
     return 0;
 }
 
     return 0;
 }
index 2049e4f..9e4fbc5 100644 (file)
@@ -306,7 +306,8 @@ parse_packed_headers(const uint8_t * packed_headers,
     return 0;
 }
 
     return 0;
 }
 
-static int xiph_parse_fmtp_pair(AVStream* stream,
+static int xiph_parse_fmtp_pair(AVFormatContext *s,
+                                AVStream* stream,
                                 PayloadContext *xiph_data,
                                 char *attr, char *value)
 {
                                 PayloadContext *xiph_data,
                                 char *attr, char *value)
 {
@@ -321,7 +322,7 @@ static int xiph_parse_fmtp_pair(AVStream* stream,
         } else if (!strcmp(value, "YCbCr-4:4:4")) {
             codec->pix_fmt = AV_PIX_FMT_YUV444P;
         } else {
         } else if (!strcmp(value, "YCbCr-4:4:4")) {
             codec->pix_fmt = AV_PIX_FMT_YUV444P;
         } else {
-            av_log(codec, AV_LOG_ERROR,
+            av_log(s, AV_LOG_ERROR,
                    "Unsupported pixel format %s\n", attr);
             return AVERROR_INVALIDDATA;
         }
                    "Unsupported pixel format %s\n", attr);
             return AVERROR_INVALIDDATA;
         }
@@ -360,12 +361,12 @@ static int xiph_parse_fmtp_pair(AVStream* stream,
                     (decoded_packet, decoded_packet + packet_size, codec,
                     xiph_data);
             } else {
                     (decoded_packet, decoded_packet + packet_size, codec,
                     xiph_data);
             } else {
-                av_log(codec, AV_LOG_ERROR,
+                av_log(s, AV_LOG_ERROR,
                        "Out of memory while decoding SDP configuration.\n");
                 result = AVERROR(ENOMEM);
             }
         } else {
                        "Out of memory while decoding SDP configuration.\n");
                 result = AVERROR(ENOMEM);
             }
         } else {
-            av_log(codec, AV_LOG_ERROR, "Packet too large\n");
+            av_log(s, AV_LOG_ERROR, "Packet too large\n");
             result = AVERROR_INVALIDDATA;
         }
         av_free(decoded_packet);
             result = AVERROR_INVALIDDATA;
         }
         av_free(decoded_packet);
@@ -382,7 +383,7 @@ static int xiph_parse_sdp_line(AVFormatContext *s, int st_index,
         return 0;
 
     if (av_strstart(line, "fmtp:", &p)) {
         return 0;
 
     if (av_strstart(line, "fmtp:", &p)) {
-        return ff_parse_fmtp(s->streams[st_index], data, p,
+        return ff_parse_fmtp(s, s->streams[st_index], data, p,
                              xiph_parse_fmtp_pair);
     }
 
                              xiph_parse_fmtp_pair);
     }