[SCM] libav/experimental: Write timestamp deltas, not timestamps, for RTMP packets with partial header

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:55:17 UTC 2013


The following commit has been merged in the experimental branch:
commit 817d967d96995ac63b4f74101768b29b6da5aece
Author: Kostya Shishkov <kostya.shishkov at gmail.com>
Date:   Tue Dec 1 16:43:53 2009 +0000

    Write timestamp deltas, not timestamps, for RTMP packets with partial header
    
    Originally committed as revision 20686 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c
index 37846e3..b48493b 100644
--- a/libavformat/rtmppkt.c
+++ b/libavformat/rtmppkt.c
@@ -163,15 +163,18 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
         bytestream_put_le16(&p, pkt->channel_id - 64);
     }
     if (mode != RTMP_PS_ONEBYTE) {
-        bytestream_put_be24(&p, pkt->timestamp >= 0xFFFFFF ? 0xFFFFFF : pkt->timestamp);
+        uint32_t timestamp = pkt->timestamp;
+        if (mode != RTMP_PS_TWELVEBYTES)
+            timestamp -= prev_pkt[pkt->channel_id].timestamp;
+        bytestream_put_be24(&p, timestamp >= 0xFFFFFF ? 0xFFFFFF : timestamp);
         if (mode != RTMP_PS_FOURBYTES) {
             bytestream_put_be24(&p, pkt->data_size);
             bytestream_put_byte(&p, pkt->type);
             if (mode == RTMP_PS_TWELVEBYTES)
                 bytestream_put_le32(&p, pkt->extra);
         }
-        if (pkt->timestamp >= 0xFFFFFF)
-            bytestream_put_be32(&p, pkt->timestamp);
+        if (timestamp >= 0xFFFFFF)
+            bytestream_put_be32(&p, timestamp);
     }
     url_write(h, pkt_hdr, p-pkt_hdr);
     while (off < pkt->data_size) {

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list