[FFmpeg-cvslog] rtmpproto: Send a full, absolute timestamp if it isn' t monotonically growing

Martin Storsjö git at videolan.org
Tue Jan 21 04:26:11 CET 2014


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Fri Jan 17 14:30:57 2014 +0200| [89564be444d24f75ea5add8b6987e414cf7aa7d5] | committer: Martin Storsjö

rtmpproto: Send a full, absolute timestamp if it isn't monotonically growing

The normal differential timestamps can't handle negative
differences, thus send a full packet header with an absolute
timestamp in these cases.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=89564be444d24f75ea5add8b6987e414cf7aa7d5
---

 libavformat/rtmppkt.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c
index f58f668..81621b1 100644
--- a/libavformat/rtmppkt.c
+++ b/libavformat/rtmppkt.c
@@ -313,7 +313,8 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
 
     //if channel_id = 0, this is first presentation of prev_pkt, send full hdr.
     if (prev_pkt[pkt->channel_id].channel_id &&
-        pkt->extra == prev_pkt[pkt->channel_id].extra) {
+        pkt->extra == prev_pkt[pkt->channel_id].extra &&
+        pkt->timestamp >= prev_pkt[pkt->channel_id].timestamp) {
         if (pkt->type == prev_pkt[pkt->channel_id].type &&
             pkt->size == prev_pkt[pkt->channel_id].size) {
             mode = RTMP_PS_FOURBYTES;



More information about the ffmpeg-cvslog mailing list