|
|
|
@ -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)) { |
|
|
|
|