rtpdec: Add an init function that can do custom codec context initialization

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Martin Storsjö 2011-11-29 16:51:26 +02:00
parent 7bb3e62594
commit 2583660664
2 changed files with 7 additions and 0 deletions

View File

@ -122,6 +122,7 @@ struct RTPDynamicProtocolHandler_s {
* require any custom depacketization code. */ * require any custom depacketization code. */
// may be null // may be null
int (*init)(AVFormatContext *s, int st_index, PayloadContext *priv_data); ///< Initialize dynamic protocol handler, called after the full rtpmap line is parsed
int (*parse_sdp_a_line) (AVFormatContext *s, int (*parse_sdp_a_line) (AVFormatContext *s,
int st_index, int st_index,
PayloadContext *priv_data, PayloadContext *priv_data,

View File

@ -251,6 +251,9 @@ static int sdp_parse_rtpmap(AVFormatContext *s,
default: default:
break; break;
} }
if (rtsp_st->dynamic_handler && rtsp_st->dynamic_handler->init)
rtsp_st->dynamic_handler->init(s, st->index,
rtsp_st->dynamic_protocol_context);
return 0; return 0;
} }
@ -387,6 +390,9 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
handler = ff_rtp_handler_find_by_id( handler = ff_rtp_handler_find_by_id(
rtsp_st->sdp_payload_type, st->codec->codec_type); rtsp_st->sdp_payload_type, st->codec->codec_type);
init_rtp_handler(handler, rtsp_st, st->codec); init_rtp_handler(handler, rtsp_st, st->codec);
if (handler && handler->init)
handler->init(s, st->index,
rtsp_st->dynamic_protocol_context);
} }
} }
/* put a default control url */ /* put a default control url */