[Ffmpeg-cvslog] CVS: ffmpeg/libavformat rtp.c,1.19,1.20
Michael Niedermayer CVS
michael
Sat Jul 23 23:49:00 CEST 2005
Update of /cvsroot/ffmpeg/ffmpeg/libavformat
In directory mail:/var2/tmp/cvs-serv22687
Modified Files:
rtp.c
Log Message:
MPEG4 streaming over RTP patch by (Luca Abeni: lucabe72, email it)
Index: rtp.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/rtp.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- rtp.c 17 Jul 2005 22:24:36 -0000 1.19
+++ rtp.c 23 Jul 2005 21:48:58 -0000 1.20
@@ -585,7 +585,7 @@
/* send an rtp packet. sequence number is incremented, but the caller
must update the timestamp itself */
-static void rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len)
+static void rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m)
{
RTPDemuxContext *s = s1->priv_data;
@@ -595,7 +595,7 @@
/* build the RTP header */
put_byte(&s1->pb, (RTP_VERSION << 6));
- put_byte(&s1->pb, s->payload_type & 0x7f);
+ put_byte(&s1->pb, (s->payload_type & 0x7f) | ((m & 0x01) << 7));
put_be16(&s1->pb, s->seq);
put_be32(&s1->pb, s->timestamp);
put_be32(&s1->pb, s->ssrc);
@@ -633,7 +633,7 @@
n = (s->buf_ptr - s->buf);
/* if buffer full, then send it */
if (n >= max_packet_size) {
- rtp_send_data(s1, s->buf, n);
+ rtp_send_data(s1, s->buf, n, 0);
s->buf_ptr = s->buf;
/* update timestamp */
s->timestamp += n / sample_size;
@@ -656,7 +656,7 @@
len = (s->buf_ptr - s->buf);
if ((len + size) > max_packet_size) {
if (len > 4) {
- rtp_send_data(s1, s->buf, s->buf_ptr - s->buf);
+ rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0);
s->buf_ptr = s->buf + 4;
/* 90 KHz time stamp */
s->timestamp = s->base_timestamp +
@@ -678,7 +678,7 @@
s->buf[2] = count >> 8;
s->buf[3] = count;
memcpy(s->buf + 4, buf1, len);
- rtp_send_data(s1, s->buf, len + 4);
+ rtp_send_data(s1, s->buf, len + 4, 0);
size -= len;
buf1 += len;
count += len;
@@ -738,7 +738,7 @@
/* 90 KHz time stamp */
s->timestamp = s->base_timestamp +
av_rescale((int64_t)s->cur_timestamp * st->codec->time_base.num, 90000, st->codec->time_base.den); //FIXME pass timestamps
- rtp_send_data(s1, s->buf, q - s->buf);
+ rtp_send_data(s1, s->buf, q - s->buf, 0);
buf1 += len;
size -= len;
@@ -763,7 +763,7 @@
/* 90 KHz time stamp */
s->timestamp = s->base_timestamp +
av_rescale((int64_t)s->cur_timestamp * st->codec->time_base.num, 90000, st->codec->time_base.den); //FIXME pass timestamps
- rtp_send_data(s1, buf1, len);
+ rtp_send_data(s1, buf1, len, (len == size));
buf1 += len;
size -= len;
@@ -789,7 +789,7 @@
out_len = s->buf_ptr - s->buf;
if (out_len >= s->max_payload_size) {
- rtp_send_data(s1, s->buf, out_len);
+ rtp_send_data(s1, s->buf, out_len, 0);
s->buf_ptr = s->buf;
}
}
More information about the ffmpeg-cvslog
mailing list