From 8633fb47db2ec39eb8bd1bd65302af75a94ff5d0 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Mon, 23 Feb 2015 20:59:41 +0200 Subject: rtpdec_hevc: Share the implementation of parsing a=framesize with h264 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Storsjö --- libavformat/rtpdec_h264.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) (limited to 'libavformat/rtpdec_h264.c') diff --git a/libavformat/rtpdec_h264.c b/libavformat/rtpdec_h264.c index 8a38392a26..ba166b87b6 100644 --- a/libavformat/rtpdec_h264.c +++ b/libavformat/rtpdec_h264.c @@ -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)) { -- cgit v1.2.3