[FFmpeg-cvslog] r16718 - trunk/libavformat/utils.c

Baptiste Coudurier baptiste.coudurier
Mon Mar 2 07:45:38 CET 2009


michael wrote:
> Author: michael
> Date: Thu Jan 22 13:06:02 2009
> New Revision: 16718
> 
> Log:
> Handle av_read_frame() EAGAIN return.
> 
> Modified:
>    trunk/libavformat/utils.c
> 
> Modified: trunk/libavformat/utils.c
> ==============================================================================
> --- trunk/libavformat/utils.c	Thu Jan 22 13:04:01 2009	(r16717)
> +++ trunk/libavformat/utils.c	Thu Jan 22 13:06:02 2009	(r16718)
> @@ -1493,7 +1493,10 @@ static int av_seek_frame_generic(AVForma
>                  return ret;
>          }
>          for(i=0;; i++) {
> -            int ret = av_read_frame(s, &pkt);
> +            int ret;
> +            do{
> +                ret = av_read_frame(s, &pkt);
> +            }while(ret == AVERROR(EAGAIN));
>              if(ret<0)
>                  break;
>              av_free_packet(&pkt);
> @@ -1718,7 +1721,9 @@ static void av_estimate_timings_from_pts
>          if (i == ic->nb_streams)
>              break;
>  
> -        ret = av_read_packet(ic, pkt);
> +        do{
> +            ret = av_read_packet(ic, pkt);
> +        }while(ret == AVERROR(EAGAIN));
>          if (ret != 0)
>              break;
>          read_size += pkt->size;
> @@ -1743,7 +1748,9 @@ static void av_estimate_timings_from_pts
>          if (read_size >= DURATION_MAX_READ_SIZE)
>              break;
>  
> -        ret = av_read_packet(ic, pkt);
> +        do{
> +            ret = av_read_packet(ic, pkt);
> +        }while(ret == AVERROR(EAGAIN));
>          if (ret != 0)
>              break;
>          read_size += pkt->size;
> @@ -2044,6 +2051,8 @@ int av_find_stream_info(AVFormatContext 
>          /* NOTE: a new stream can be added there if no header in file
>             (AVFMTCTX_NOHEADER) */
>          ret = av_read_frame_internal(ic, &pkt1);
> +        if(ret == AVERROR(EAGAIN))
> +            continue;
>          if (ret < 0) {
>              /* EOF or error */
>              ret = -1; /* we could not have all the codec parameters before EOF */

I believe this commit broke FFserver in fact. Many users reported problems.

I propose to revert this commit, the flvdec.c commit and the ffmpeg.c
one before the release.

-- 
Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
checking for life_signs in -lkenny... no
FFmpeg maintainer                                  http://www.ffmpeg.org




More information about the ffmpeg-cvslog mailing list