diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2008-10-04 04:15:06 +0000 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2008-10-04 04:15:06 +0000 |
commit | 9b932b8ac0c63cf52642dbe4e3953a312e6cf900 (patch) | |
tree | 67591ba263b0fb8d56ffc32a6dd4257df0c266fc /libavformat | |
parent | ed0aacc76eccf2b523352f0c74107e2f6ba9cf93 (diff) | |
download | ffmpeg-9b932b8ac0c63cf52642dbe4e3953a312e6cf900.tar.gz |
Change function prototype of RTPDynamicPayloadHandler.parse_packet() to
not use RTPDemuxContext, but rather take a pointer to the payload context
directly. This allows using payload handlers regardless over the transport
over which they were sent, and prepares for the introduction of a future
RDTDemuxContext. See discussion in "RDT/Realmedia patches #2" thread on ML.
Originally committed as revision 15541 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/rdt.c | 11 | ||||
-rw-r--r-- | libavformat/rtp_h264.c | 6 | ||||
-rw-r--r-- | libavformat/rtp_internal.h | 4 | ||||
-rw-r--r-- | libavformat/rtpdec.c | 6 |
4 files changed, 15 insertions, 12 deletions
diff --git a/libavformat/rdt.c b/libavformat/rdt.c index 1fa36df04d..cce8a8bf8a 100644 --- a/libavformat/rdt.c +++ b/libavformat/rdt.c @@ -163,14 +163,13 @@ ff_rdt_parse_header(const uint8_t *buf, int len, /**< return 0 on packet, no more left, 1 on packet, 1 on partial packet... */ static int -rdt_parse_packet (RTPDemuxContext *s, AVPacket *pkt, uint32_t *timestamp, +rdt_parse_packet (PayloadContext *rdt, AVStream *st, + AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, int flags) { - PayloadContext *rdt = s->dynamic_protocol_context; int seq = 1, res; ByteIOContext *pb = rdt->rmctx->pb; RMContext *rm = rdt->rmctx->priv_data; - AVStream *st = s->st; if (rm->audio_pkt_cnt == 0) { int pos; @@ -217,7 +216,8 @@ ff_rdt_parse_packet(RTPDemuxContext *s, AVPacket *pkt, if (!buf) { /* return the next packets, if any */ timestamp= 0; ///< Should not be used if buf is NULL, but should be set to the timestamp of the packet returned.... - rv= s->parse_packet(s, pkt, ×tamp, NULL, 0, flags); + rv= s->parse_packet(s->dynamic_protocol_context, + s->st, pkt, ×tamp, NULL, 0, flags); return rv; } @@ -235,7 +235,8 @@ ff_rdt_parse_packet(RTPDemuxContext *s, AVPacket *pkt, len -= rv; s->seq = seq; - rv = s->parse_packet(s, pkt, ×tamp, buf, len, flags); + rv = s->parse_packet(s->dynamic_protocol_context, + s->st, pkt, ×tamp, buf, len, flags); return rv; } diff --git a/libavformat/rtp_h264.c b/libavformat/rtp_h264.c index 861798bcb1..bc298527ec 100644 --- a/libavformat/rtp_h264.c +++ b/libavformat/rtp_h264.c @@ -159,15 +159,13 @@ static void sdp_parse_fmtp_config_h264(AVStream * stream, } // return 0 on packet, no more left, 1 on packet, 1 on partial packet... -static int h264_handle_packet(RTPDemuxContext * s, +static int h264_handle_packet(PayloadContext *data, + AVStream *st, AVPacket * pkt, uint32_t * timestamp, const uint8_t * buf, int len, int flags) { -#ifdef DEBUG - PayloadContext *data = s->dynamic_protocol_context; -#endif uint8_t nal = buf[0]; uint8_t type = (nal & 0x1f); int result= 0; diff --git a/libavformat/rtp_internal.h b/libavformat/rtp_internal.h index c1d9001a17..448d1fabe9 100644 --- a/libavformat/rtp_internal.h +++ b/libavformat/rtp_internal.h @@ -46,13 +46,15 @@ typedef struct PayloadContext PayloadContext; * Packet parsing for "private" payloads in the RTP specs. * * @param s stream context + * @param st stream that this packet belongs to * @param pkt packet in which to write the parsed data * @param timestamp pointer in which to write the timestamp of this RTP packet * @param buf pointer to raw RTP packet data * @param len length of buf * @param flags flags from the RTP packet header (PKT_FLAG_*) */ -typedef int (*DynamicPayloadPacketHandlerProc) (struct RTPDemuxContext * s, +typedef int (*DynamicPayloadPacketHandlerProc) (PayloadContext *s, + AVStream *st, AVPacket * pkt, uint32_t *timestamp, const uint8_t * buf, diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 119682041d..4c33544afb 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -399,7 +399,8 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, /* return the next packets, if any */ if(s->st && s->parse_packet) { timestamp= 0; ///< Should not be used if buf is NULL, but should be set to the timestamp of the packet returned.... - rv= s->parse_packet(s, pkt, ×tamp, NULL, 0, flags); + rv= s->parse_packet(s->dynamic_protocol_context, + s->st, pkt, ×tamp, NULL, 0, flags); finalize_packet(s, pkt, timestamp); return rv; } else { @@ -463,7 +464,8 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, return 1; } } else if (s->parse_packet) { - rv = s->parse_packet(s, pkt, ×tamp, buf, len, flags); + rv = s->parse_packet(s->dynamic_protocol_context, + s->st, pkt, ×tamp, buf, len, flags); } else { // at this point, the RTP header has been stripped; This is ASSUMING that there is only 1 CSRC, which in't wise. switch(st->codec->codec_id) { |