From 42805eda554a7fc44341282771531e7837ac72b7 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Tue, 11 Dec 2012 15:52:18 +0200 Subject: rtpdec: Store the dynamic payload handler in the rtpdec context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows calling other dynamic payload handler functions if needed. Signed-off-by: Martin Storsjö --- libavformat/rtpdec.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'libavformat/rtpdec.c') diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 08150b734a..348b796d83 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -425,7 +425,7 @@ void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, RTPDynamicProtocolHandler *handler) { s->dynamic_protocol_context = ctx; - s->parse_packet = handler->parse_packet; + s->handler = handler; } /** @@ -540,9 +540,10 @@ static int rtp_parse_packet_internal(RTPDemuxContext *s, AVPacket *pkt, return 1; } return 0; - } else if (s->parse_packet) { - rv = s->parse_packet(s->ic, s->dynamic_protocol_context, - s->st, pkt, ×tamp, buf, len, seq, flags); + } else if (s->handler && s->handler->parse_packet) { + rv = s->handler->parse_packet(s->ic, s->dynamic_protocol_context, + s->st, pkt, ×tamp, buf, len, seq, + flags); } else { /* At this point, the RTP header has been stripped; * This is ASSUMING that there is only 1 CSRC, which isn't wise. */ @@ -680,13 +681,13 @@ static int rtp_parse_one_packet(RTPDemuxContext *s, AVPacket *pkt, if (s->prev_ret <= 0) return rtp_parse_queued_packet(s, pkt); /* return the next packets, if any */ - if (s->st && s->parse_packet) { + if (s->st && s->handler && s->handler->parse_packet) { /* timestamp should be overwritten by parse_packet, if not, * the packet is left with pts == AV_NOPTS_VALUE */ timestamp = RTP_NOTS_VALUE; - rv = s->parse_packet(s->ic, s->dynamic_protocol_context, - s->st, pkt, ×tamp, NULL, 0, 0, - flags); + rv = s->handler->parse_packet(s->ic, s->dynamic_protocol_context, + s->st, pkt, ×tamp, NULL, 0, 0, + flags); finalize_packet(s, pkt, timestamp); return rv; } else { -- cgit v1.2.3