Browse Source

avformat/rtmpproto: Fix 2 more cases of the 2nd packet size being wrong

This should fix RTMP input which was broken by cbbd906be6
the 40 + 11 case is untested as it did not occur in the testcase

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n3.0
Michael Niedermayer 10 years ago
parent
commit
94d50b5d00
1 changed files with 3 additions and 2 deletions
  1. +3
    -2
      libavformat/rtmpproto.c

+ 3
- 2
libavformat/rtmpproto.c View File

@@ -2368,8 +2368,9 @@ static int handle_metadata(RTMPContext *rt, RTMPPacket *pkt)
bytestream_put_be24(&p, ts); bytestream_put_be24(&p, ts);
bytestream_put_byte(&p, ts >> 24); bytestream_put_byte(&p, ts >> 24);
memcpy(p, next, size + 3 + 4); memcpy(p, next, size + 3 + 4);
p += size + 3;
bytestream_put_be32(&p, size + 11);
next += size + 3 + 4; next += size + 3 + 4;
p += size + 3 + 4;
} }
if (p != rt->flv_data + rt->flv_size) { if (p != rt->flv_data + rt->flv_size) {
av_log(NULL, AV_LOG_WARNING, "Incomplete flv packets in " av_log(NULL, AV_LOG_WARNING, "Incomplete flv packets in "
@@ -2559,7 +2560,7 @@ static int inject_fake_duration_metadata(RTMPContext *rt)
// Finalise object // Finalise object
bytestream_put_be16(&p, 0); // Empty string bytestream_put_be16(&p, 0); // Empty string
bytestream_put_byte(&p, AMF_END_OF_OBJECT); 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 + 11); // size of data part (sum of all parts below)


return 0; return 0;
} }


Loading…
Cancel
Save