@ -349,7 +349,7 @@ static int rm_write_video(AVFormatContext *s, const uint8_t *buf, int size, int
/* Well, I spent some time finding the meaning of these bits. I am
/* Well, I spent some time finding the meaning of these bits. I am
not sure I understood everything , but it works ! ! */
not sure I understood everything , but it works ! ! */
# if 1
# 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 */
/* bit 7: '1' if final packet of a frame converted in several packets */
put_byte ( pb , 0x81 ) ;
put_byte ( pb , 0x81 ) ;
/* bit 7: '1' if I frame. bits 6..0 : sequence number in current
/* bit 7: '1' if I frame. bits 6..0 : sequence number in current
@ -359,8 +359,13 @@ static int rm_write_video(AVFormatContext *s, const uint8_t *buf, int size, int
} else {
} else {
put_byte ( pb , 0x01 ) ;
put_byte ( pb , 0x01 ) ;
}
}
put_be16 ( pb , 0x4000 + ( size ) ) ; /* total frame size */
if ( size > = 0x4000 ) {
put_be16 ( pb , 0x4000 + ( size ) ) ; /* offset from the start or the end */
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
# else
/* full frame */
/* full frame */
write_packet_header ( s , size + 6 ) ;
write_packet_header ( s , size + 6 ) ;