[FFmpeg-cvslog] rtmpproto: Write correct flv packet sizes at the end of packets

Michael Niedermayer git at videolan.org
Wed Oct 14 23:00:32 CEST 2015


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Tue Oct 13 12:17:24 2015 +0300| [e55376a1fd5abebbb0a082aa20739d58c2260a37] | committer: Luca Barbato

rtmpproto: Write correct flv packet sizes at the end of packets

In one case it was written as zero, one case left it uninitialized,
missed the 11 bytes for the flv header.

Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

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

 libavformat/rtmpproto.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index ec4b0e7..77a801d 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -2213,7 +2213,7 @@ static int append_flv_data(RTMPContext *rt, RTMPPacket *pkt, int skip)
     bytestream2_put_byte(&pbc, ts >> 24);
     bytestream2_put_be24(&pbc, 0);
     bytestream2_put_buffer(&pbc, data, size);
-    bytestream2_put_be32(&pbc, 0);
+    bytestream2_put_be32(&pbc, size + RTMP_HEADER);
 
     return 0;
 }
@@ -2363,8 +2363,9 @@ static int handle_metadata(RTMPContext *rt, RTMPPacket *pkt)
         bytestream_put_be24(&p, ts);
         bytestream_put_byte(&p, ts >> 24);
         memcpy(p, next, size + 3 + 4);
+        p    += size + 3;
+        bytestream_put_be32(&p, size + RTMP_HEADER);
         next += size + 3 + 4;
-        p    += size + 3 + 4;
     }
     if (p != rt->flv_data + rt->flv_size) {
         av_log(NULL, AV_LOG_WARNING, "Incomplete flv packets in "
@@ -2554,7 +2555,7 @@ static int inject_fake_duration_metadata(RTMPContext *rt)
     // Finalise object
     bytestream_put_be16(&p, 0); // Empty string
     bytestream_put_byte(&p, AMF_END_OF_OBJECT);
-    bytestream_put_be32(&p, 40); // size of data part (sum of all parts below)
+    bytestream_put_be32(&p, 40 + RTMP_HEADER); // size of data part (sum of all parts above)
 
     return 0;
 }



More information about the ffmpeg-cvslog mailing list