[FFmpeg-devel] Bug in libavformat/mov.c?
Måns Rullgård
mans
Wed Jul 9 19:27:29 CEST 2008
Michael Niedermayer <michaelni at gmx.at> writes:
> On Wed, Jul 09, 2008 at 01:24:45PM +0100, M?ns Rullg?rd wrote:
>>
>> Ivan Zezyulya wrote:
>> >
>> > The problem is that I have a .mov file, VERY large file (101GB), and it
>> > has more than UINT_MAX / sizeof(int) entries in one of its sample size
>> > tables. After reaching the above lines with check of "entries" variable,
>> > ffmpeg recursively quits reading .mov file and reports "error reading
>> > header" (in mov_read_header function in libavormat/mov.c:1743) and then
>> > quits. The file itself is correct, the QuickTime player can successfully
>> > play it.
>>
>> The proper way to handle such files is, IMHO, to load the sample sizes
>> in smaller chunks as needed, based on the current playback position.
>> Loading them all would require an insane amount of memory. This could
>> be done either by seeking and reading, or (if virtual address space
>> allows), by mmap()ing that section of the file, and let the OS take
>> care of the caching.
>
> theres an additional complication with that, mov allows these headers to
> be zlib compressed IIRC, that would likely complicate random access
> considerably ...
Yes, random access in zlib compressed data is impossible. For linear
playback, one could of course uncompress a reasonably-sized chunk at a
time, and discard the used data. Does anyone know how Quicktime
player handles such files?
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list