diff options
author | Martin Storsjö <martin@martin.st> | 2012-12-11 15:52:18 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2013-01-08 17:47:27 +0200 |
commit | 42805eda554a7fc44341282771531e7837ac72b7 (patch) | |
tree | e41f5c23404f95ebaf2e5bf8687ae83eaee92742 /libavformat/rtpdec.c | |
parent | 9c80ed836a511293f4cc3a858060969d32f2b1ce (diff) | |
download | ffmpeg-42805eda554a7fc44341282771531e7837ac72b7.tar.gz |
rtpdec: Store the dynamic payload handler in the rtpdec context
This allows calling other dynamic payload handler functions if
needed.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/rtpdec.c')
-rw-r--r-- | libavformat/rtpdec.c | 17 |
1 files changed, 9 insertions, 8 deletions
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 { |