OSDN Git Service

Use EAGAIN return, primarely intended as example of EAGAIN useage.
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 22 Jan 2009 12:08:06 +0000 (12:08 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 22 Jan 2009 12:08:06 +0000 (12:08 +0000)
Originally committed as revision 16719 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/flvdec.c

index 5fee6b7..ec9b471 100644 (file)
@@ -309,7 +309,6 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
     int64_t dts, pts = AV_NOPTS_VALUE;
     AVStream *st = NULL;
 
- retry:
  for(;;){
     pos = url_ftell(s->pb);
     url_fskip(s->pb, 4); /* size of previous packet */
@@ -345,7 +344,7 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
             av_log(s, AV_LOG_ERROR, "skipping flv packet: type %d, size %d, flags %d\n", type, size, flags);
     skip:
         url_fseek(s->pb, next, SEEK_SET);
-        continue;
+        return AVERROR(EAGAIN);
     }
 
     /* skip empty data packets */
@@ -369,7 +368,7 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
        || st->discard >= AVDISCARD_ALL
        ){
         url_fseek(s->pb, next, SEEK_SET);
-        continue;
+        return AVERROR(EAGAIN);
     }
     if ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY)
         av_add_index_entry(st, pos, dts, size, 0, AVINDEX_KEYFRAME);
@@ -420,7 +419,7 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
         if (type == 0) {
             if ((ret = flv_get_extradata(s, st, size)) < 0)
                 return ret;
-            goto retry;
+            return AVERROR(EAGAIN);
         }
     }