]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpdec_h264.c
rtpdec_hevc: Share the implementation of parsing a=framesize with h264
[ffmpeg] / libavformat / rtpdec_h264.c
index 8a38392a264af1a6b252844db766897e64da19a2..ba166b87b6b70c68d08aa3aeaac5cc1bd92590b3 100644 (file)
@@ -177,6 +177,28 @@ static int sdp_parse_fmtp_config_h264(AVFormatContext *s,
     return 0;
 }
 
+void ff_h264_parse_framesize(AVCodecContext *codec, const char *p)
+{
+    char buf1[50];
+    char *dst = buf1;
+
+    // remove the protocol identifier
+    while (*p && *p == ' ')
+        p++;                     // strip spaces.
+    while (*p && *p != ' ')
+        p++;                     // eat protocol identifier
+    while (*p && *p == ' ')
+        p++;                     // strip trailing spaces.
+    while (*p && *p != '-' && (dst - buf1) < sizeof(buf1) - 1)
+        *dst++ = *p++;
+    *dst = '\0';
+
+    // a='framesize:96 320-240'
+    // set our parameters
+    codec->width   = atoi(buf1);
+    codec->height  = atoi(p + 1); // skip the -
+}
+
 int ff_h264_handle_aggregated_packet(AVFormatContext *ctx, AVPacket *pkt,
                                      const uint8_t *buf, int len,
                                      int skip_between, int *nal_counters,
@@ -361,34 +383,15 @@ static int parse_h264_sdp_line(AVFormatContext *s, int st_index,
                                PayloadContext *h264_data, const char *line)
 {
     AVStream *stream;
-    AVCodecContext *codec;
     const char *p = line;
 
     if (st_index < 0)
         return 0;
 
     stream = s->streams[st_index];
-    codec  = stream->codec;
 
     if (av_strstart(p, "framesize:", &p)) {
-        char buf1[50];
-        char *dst = buf1;
-
-        // remove the protocol identifier
-        while (*p && *p == ' ')
-            p++;                     // strip spaces.
-        while (*p && *p != ' ')
-            p++;                     // eat protocol identifier
-        while (*p && *p == ' ')
-            p++;                     // strip trailing spaces.
-        while (*p && *p != '-' && (dst - buf1) < sizeof(buf1) - 1)
-            *dst++ = *p++;
-        *dst = '\0';
-
-        // a='framesize:96 320-240'
-        // set our parameters
-        codec->width   = atoi(buf1);
-        codec->height  = atoi(p + 1); // skip the -
+        ff_h264_parse_framesize(stream->codec, p);
     } else if (av_strstart(p, "fmtp:", &p)) {
         return ff_parse_fmtp(s, stream, h264_data, p, sdp_parse_fmtp_config_h264);
     } else if (av_strstart(p, "cliprect:", &p)) {