summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2008-10-04 04:15:06 +0000
committerRonald S. Bultje <rsbultje@gmail.com>2008-10-04 04:15:06 +0000
commit9b932b8ac0c63cf52642dbe4e3953a312e6cf900 (patch)
tree67591ba263b0fb8d56ffc32a6dd4257df0c266fc /libavformat
parented0aacc76eccf2b523352f0c74107e2f6ba9cf93 (diff)
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.c11
-rw-r--r--libavformat/rtp_h264.c6
-rw-r--r--libavformat/rtp_internal.h4
-rw-r--r--libavformat/rtpdec.c6
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, &timestamp, NULL, 0, flags);
+ rv= s->parse_packet(s->dynamic_protocol_context,
+ s->st, pkt, &timestamp, 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, &timestamp, buf, len, flags);
+ rv = s->parse_packet(s->dynamic_protocol_context,
+ s->st, pkt, &timestamp, 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, &timestamp, NULL, 0, flags);
+ rv= s->parse_packet(s->dynamic_protocol_context,
+ s->st, pkt, &timestamp, 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, &timestamp, buf, len, flags);
+ rv = s->parse_packet(s->dynamic_protocol_context,
+ s->st, pkt, &timestamp, 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) {