mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-18 05:24:42 +00:00
rtsp: Factorize code for initializing the rtp payload handler
Originally committed as revision 25892 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
1e515c4280
commit
003eb64217
@ -122,6 +122,17 @@ static int get_sockaddr(const char *buf, struct sockaddr_storage *sock)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_RTPDEC
|
#if CONFIG_RTPDEC
|
||||||
|
static void init_rtp_handler(RTPDynamicProtocolHandler *handler,
|
||||||
|
RTSPStream *rtsp_st, AVCodecContext *codec)
|
||||||
|
{
|
||||||
|
if (!handler)
|
||||||
|
return;
|
||||||
|
codec->codec_id = handler->codec_id;
|
||||||
|
rtsp_st->dynamic_handler = handler;
|
||||||
|
if (handler->open)
|
||||||
|
rtsp_st->dynamic_protocol_context = handler->open();
|
||||||
|
}
|
||||||
|
|
||||||
/* parse the rtpmap description: <codec_name>/<clock_rate>[/<other params>] */
|
/* parse the rtpmap description: <codec_name>/<clock_rate>[/<other params>] */
|
||||||
static int sdp_parse_rtpmap(AVFormatContext *s,
|
static int sdp_parse_rtpmap(AVFormatContext *s,
|
||||||
AVCodecContext *codec, RTSPStream *rtsp_st,
|
AVCodecContext *codec, RTSPStream *rtsp_st,
|
||||||
@ -139,18 +150,9 @@ static int sdp_parse_rtpmap(AVFormatContext *s,
|
|||||||
* have a trailing space. */
|
* have a trailing space. */
|
||||||
get_word_sep(buf, sizeof(buf), "/ ", &p);
|
get_word_sep(buf, sizeof(buf), "/ ", &p);
|
||||||
if (payload_type >= RTP_PT_PRIVATE) {
|
if (payload_type >= RTP_PT_PRIVATE) {
|
||||||
RTPDynamicProtocolHandler *handler;
|
RTPDynamicProtocolHandler *handler =
|
||||||
for (handler = RTPFirstDynamicPayloadHandler;
|
ff_rtp_handler_find_by_name(buf, codec->codec_type);
|
||||||
handler; handler = handler->next) {
|
init_rtp_handler(handler, rtsp_st, codec);
|
||||||
if (!strcasecmp(buf, handler->enc_name) &&
|
|
||||||
codec->codec_type == handler->codec_type) {
|
|
||||||
codec->codec_id = handler->codec_id;
|
|
||||||
rtsp_st->dynamic_handler = handler;
|
|
||||||
if (handler->open)
|
|
||||||
rtsp_st->dynamic_protocol_context = handler->open();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* If no dynamic handler was found, check with the list of standard
|
/* If no dynamic handler was found, check with the list of standard
|
||||||
* allocated types, if such a stream for some reason happens to
|
* allocated types, if such a stream for some reason happens to
|
||||||
* use a private payload type. This isn't handled in rtpdec.c, since
|
* use a private payload type. This isn't handled in rtpdec.c, since
|
||||||
|
Loading…
Reference in New Issue
Block a user