Mercurial > libavformat.hg
changeset 2792:e0a046abae56 libavformat
Fix muxer so that generated files are playable by realplayer, other open
source players and by fixed ffmpeg rm demuxer (after r11127)
Patch by kostya
author | rtogni |
---|---|
date | Sun, 02 Dec 2007 17:51:05 +0000 |
parents | 5d0fecceff17 |
children | d5842afe8539 |
files | rmenc.c |
diffstat | 1 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/rmenc.c Sun Dec 02 17:41:12 2007 +0000 +++ b/rmenc.c Sun Dec 02 17:51:05 2007 +0000 @@ -349,7 +349,7 @@ /* Well, I spent some time finding the meaning of these bits. I am not sure I understood everything, but it works !! */ #if 1 - write_packet_header(s, stream, size + 7, key_frame); + write_packet_header(s, stream, size + 7 + (size >= 0x4000)*4, key_frame); /* bit 7: '1' if final packet of a frame converted in several packets */ put_byte(pb, 0x81); /* bit 7: '1' if I frame. bits 6..0 : sequence number in current @@ -359,8 +359,13 @@ } else { put_byte(pb, 0x01); } - put_be16(pb, 0x4000 + (size)); /* total frame size */ - put_be16(pb, 0x4000 + (size)); /* offset from the start or the end */ + if(size >= 0x4000){ + put_be32(pb, size); /* total frame size */ + put_be32(pb, size); /* offset from the start or the end */ + }else{ + put_be16(pb, 0x4000 | size); /* total frame size */ + put_be16(pb, 0x4000 | size); /* offset from the start or the end */ + } #else /* full frame */ write_packet_header(s, size + 6);