Commit 08728f40 authored by Andreas Cadhalpun's avatar Andreas Cadhalpun Committed by Michael Niedermayer

avformat/rm: limit packet size

The chunk size is limited to 0xFFFF (written by avio_wb16), so make
sure that the packet size is not too large.

Such large frames need to be split into slices smaller than 64 kB, but
that is currently supported neither by the rv10/rv20 encoders nor the rm
muxer.
Signed-off-by: 's avatarAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>

See Ticket244
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 7c9e7bd4
......@@ -396,6 +396,11 @@ 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
not sure I understood everything, but it works !! */
#if 1
/* 0xFFFF is the maximal chunk size; header needs at most 7 + 4 + 12 B */
if (size > 0xFFFF - 7 - 4 - 12) {
av_log(s, AV_LOG_ERROR, "large packet size %d not supported\n", size);
return AVERROR_PATCHWELCOME;
}
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 */
avio_w8(pb, 0x81);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment