diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2008-01-18 20:48:32 +0000 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2008-01-18 20:48:32 +0000 |
commit | f841a0fca1977ed9d24537b3c7b376def5ca1a73 (patch) | |
tree | 2e7543cd5082ddf6dfa43c8af6095084ba397641 | |
parent | e2d3e82dfd607ee1db51076e16d8ddc3140ae753 (diff) | |
download | ffmpeg-f841a0fca1977ed9d24537b3c7b376def5ca1a73.tar.gz |
Add a flags field to the RTPDynamicPayloadPacketHandlerProc (PKT_FLAG_*).
This can be used later by RDT to get the flags from the RTP packet and
use that for the RealMedia packet (such as whether this RTP packet
represents a keyframe or not). For discussion, see "[PATCH] Realmedia
/ RTSP (RDT)".
Originally committed as revision 11557 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/rtp_h264.c | 2 | ||||
-rw-r--r-- | libavformat/rtp_internal.h | 13 | ||||
-rw-r--r-- | libavformat/rtpdec.c | 6 |
3 files changed, 15 insertions, 6 deletions
diff --git a/libavformat/rtp_h264.c b/libavformat/rtp_h264.c index 28426b21cf..3e0fc3add4 100644 --- a/libavformat/rtp_h264.c +++ b/libavformat/rtp_h264.c @@ -163,7 +163,7 @@ static int h264_handle_packet(RTPDemuxContext * s, AVPacket * pkt, uint32_t * timestamp, const uint8_t * buf, - int len) + int len, int flags) { #ifdef DEBUG h264_rtp_extra_data *data = s->dynamic_protocol_context; diff --git a/libavformat/rtp_internal.h b/libavformat/rtp_internal.h index fefbaf5504..e9d6cb3905 100644 --- a/libavformat/rtp_internal.h +++ b/libavformat/rtp_internal.h @@ -41,12 +41,21 @@ typedef struct { uint32_t jitter; ///< estimated jitter. } RTPStatistics; - +/** + * Packet parsing for "private" payloads in the RTP specs. + * + * @param s stream context + * @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, AVPacket * pkt, uint32_t *timestamp, const uint8_t * buf, - int len); + int len, int flags); typedef struct RTPDynamicProtocolHandler_s { // fields from AVRtpDynamicPayloadType_s diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index ba2f506c9e..7bdfca30a5 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -402,7 +402,7 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, const uint8_t *buf, int len) { unsigned int ssrc, h; - int payload_type, seq, ret; + int payload_type, seq, ret, flags = 0; AVStream *st; uint32_t timestamp; int rv= 0; @@ -411,7 +411,7 @@ 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); + rv= s->parse_packet(s, pkt, ×tamp, NULL, 0, flags); finalize_packet(s, pkt, timestamp); return rv; } else { @@ -475,7 +475,7 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, return 1; } } else if (s->parse_packet) { - rv = s->parse_packet(s, pkt, ×tamp, buf, len); + rv = s->parse_packet(s, 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) { |