mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
rtsp: Factor out fmtp parsing
This commit is contained in:
parent
49a242687c
commit
c9c1e00f95
@ -309,6 +309,22 @@ static void copy_default_source_addrs(struct RTSPSource **addrs, int count,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void parse_fmtp(AVFormatContext *s, RTSPState *rt,
|
||||||
|
int payload_type, const char *line)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < rt->nb_rtsp_streams; i++) {
|
||||||
|
RTSPStream *rtsp_st = rt->rtsp_streams[i];
|
||||||
|
if (rtsp_st->sdp_payload_type == payload_type &&
|
||||||
|
rtsp_st->dynamic_handler &&
|
||||||
|
rtsp_st->dynamic_handler->parse_sdp_a_line) {
|
||||||
|
rtsp_st->dynamic_handler->parse_sdp_a_line(s, i,
|
||||||
|
rtsp_st->dynamic_protocol_context, line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
||||||
int letter, const char *buf)
|
int letter, const char *buf)
|
||||||
{
|
{
|
||||||
@ -316,7 +332,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
|||||||
char buf1[64], st_type[64];
|
char buf1[64], st_type[64];
|
||||||
const char *p;
|
const char *p;
|
||||||
enum AVMediaType codec_type;
|
enum AVMediaType codec_type;
|
||||||
int payload_type, i;
|
int payload_type;
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
RTSPStream *rtsp_st;
|
RTSPStream *rtsp_st;
|
||||||
RTSPSource *rtsp_src;
|
RTSPSource *rtsp_src;
|
||||||
@ -494,14 +510,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
|||||||
// let dynamic protocol handlers have a stab at the line.
|
// let dynamic protocol handlers have a stab at the line.
|
||||||
get_word(buf1, sizeof(buf1), &p);
|
get_word(buf1, sizeof(buf1), &p);
|
||||||
payload_type = atoi(buf1);
|
payload_type = atoi(buf1);
|
||||||
for (i = 0; i < rt->nb_rtsp_streams; i++) {
|
parse_fmtp(s, rt, payload_type, buf);
|
||||||
rtsp_st = rt->rtsp_streams[i];
|
|
||||||
if (rtsp_st->sdp_payload_type == payload_type &&
|
|
||||||
rtsp_st->dynamic_handler &&
|
|
||||||
rtsp_st->dynamic_handler->parse_sdp_a_line)
|
|
||||||
rtsp_st->dynamic_handler->parse_sdp_a_line(s, i,
|
|
||||||
rtsp_st->dynamic_protocol_context, buf);
|
|
||||||
}
|
|
||||||
} else if (av_strstart(p, "range:", &p)) {
|
} else if (av_strstart(p, "range:", &p)) {
|
||||||
int64_t start, end;
|
int64_t start, end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user