mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-27 13:30:45 +00:00
Change function prototype of the sdp_parse_a_line in DynamicProtocolHandler.
This function is called in rtsp.c for each a= line in the SDP of the Describe response after m= RTSP stream descriptors. The function prototype used to take an AVStream argument. For RDT, however, every RTSPStream represents a set of streams of identical content, and can thus represent multiple AVStreams. Therefore, it should not take an AVStream as argument. This patch modifies it to accept a AVFormatContext (of the RTSP/SDP demuxer) instead. See discussion in "[PATCH/RFC] change function prototype of parse_sdp_a_line" thread on ML. Originally committed as revision 16024 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
022f0b7c01
commit
7b2a070800
@ -405,8 +405,10 @@ rdt_parse_b64buf (unsigned int *target_len, const char *p)
|
||||
}
|
||||
|
||||
static int
|
||||
rdt_parse_sdp_line (AVStream *stream, PayloadContext *rdt, const char *line)
|
||||
rdt_parse_sdp_line (AVFormatContext *s, int st_index,
|
||||
PayloadContext *rdt, const char *line)
|
||||
{
|
||||
AVStream *stream = s->streams[st_index];
|
||||
const char *p = line;
|
||||
|
||||
if (av_strstart(p, "OpaqueData:buffer;", &p)) {
|
||||
|
@ -348,9 +348,10 @@ static void h264_free_extradata(PayloadContext *data)
|
||||
av_free(data);
|
||||
}
|
||||
|
||||
static int parse_h264_sdp_line(AVStream * stream, PayloadContext *h264_data,
|
||||
const char *line)
|
||||
static int parse_h264_sdp_line(AVFormatContext *s, int st_index,
|
||||
PayloadContext *h264_data, const char *line)
|
||||
{
|
||||
AVStream *stream = s->streams[st_index];
|
||||
AVCodecContext *codec = stream->codec;
|
||||
const char *p = line;
|
||||
|
||||
|
@ -66,7 +66,8 @@ struct RTPDynamicProtocolHandler_s {
|
||||
enum CodecID codec_id;
|
||||
|
||||
// may be null
|
||||
int (*parse_sdp_a_line) (AVStream * stream,
|
||||
int (*parse_sdp_a_line) (AVFormatContext *s,
|
||||
int st_index,
|
||||
PayloadContext *priv_data,
|
||||
const char *line); ///< Parse the a= line from the sdp field
|
||||
PayloadContext *(*open) (); ///< allocate any data needed by the rtp parsing for this dynamic data.
|
||||
|
@ -518,7 +518,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
||||
rtsp_st = st->priv_data;
|
||||
if (rtsp_st->sdp_payload_type == payload_type) {
|
||||
if(rtsp_st->dynamic_handler && rtsp_st->dynamic_handler->parse_sdp_a_line) {
|
||||
if(!rtsp_st->dynamic_handler->parse_sdp_a_line(st, rtsp_st->dynamic_protocol_context, buf)) {
|
||||
if(!rtsp_st->dynamic_handler->parse_sdp_a_line(s, i, rtsp_st->dynamic_protocol_context, buf)) {
|
||||
sdp_parse_fmtp(st, p);
|
||||
}
|
||||
} else {
|
||||
@ -535,7 +535,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
||||
rtsp_st = st->priv_data;
|
||||
if (rtsp_st->sdp_payload_type == payload_type) {
|
||||
if(rtsp_st->dynamic_handler && rtsp_st->dynamic_handler->parse_sdp_a_line) {
|
||||
rtsp_st->dynamic_handler->parse_sdp_a_line(st, rtsp_st->dynamic_protocol_context, buf);
|
||||
rtsp_st->dynamic_handler->parse_sdp_a_line(s, i, rtsp_st->dynamic_protocol_context, buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -553,7 +553,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
||||
rtsp_st = s->streams[s->nb_streams - 1]->priv_data;
|
||||
if (rtsp_st->dynamic_handler &&
|
||||
rtsp_st->dynamic_handler->parse_sdp_a_line)
|
||||
rtsp_st->dynamic_handler->parse_sdp_a_line(s->streams[s->nb_streams - 1],
|
||||
rtsp_st->dynamic_handler->parse_sdp_a_line(s, s->nb_streams - 1,
|
||||
rtsp_st->dynamic_protocol_context, buf);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user