[FFmpeg-devel] [PATCH] probe max read size
Baptiste Coudurier
baptiste.coudurier
Sun May 31 12:12:13 CEST 2009
Baptiste Coudurier wrote:
> Hi,
>
> After some tests, it seems more reasonable to stop probing after some
> max size to avoid consuming to much memory.
>
> I propose to raise probesize default to MAX_READ_SIZE
>
> /* absolute maximum size we read until we abort */
> #define MAX_READ_SIZE 5000000
>
> And also to replace all MAX_READ_SIZE occurence with s->probesize to
> make it configurable.
>
>
>
> ------------------------------------------------------------------------
>
> Index: libavformat/utils.c
> ===================================================================
> --- libavformat/utils.c (revision 19024)
> +++ libavformat/utils.c (working copy)
> @@ -523,7 +523,7 @@
>
> int av_read_packet(AVFormatContext *s, AVPacket *pkt)
> {
> - int ret, i;
> + int ret, i, read_size = 0;
> AVStream *st;
>
> for(;;){
> @@ -541,13 +541,16 @@
>
> av_init_packet(pkt);
> ret= s->iformat->read_packet(s, pkt);
> - if (ret < 0) {
> - if (!pktl || ret == AVERROR(EAGAIN))
> - return ret;
> + if (ret < 0 && (!pktl || ret == AVERROR(EAGAIN)))
> + return ret;
> + if (ret < 0 || read_size >= s->probesize) {
> for (i = 0; i < s->nb_streams; i++)
> s->streams[i]->probe_packets = 0;
> continue;
> }
> +
> + read_size += pkt->size;
> +
> st= s->streams[pkt->stream_index];
>
> switch(st->codec->codec_type){
>
Well there is a problem in the patch, packet just read must be buffered
before "continue", this whole codec probing stuff is really non easy.
I'll check it tomorrow, if noones beats me ;)
--
Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list