Browse code

fbdev: simplify logic in fbdev_read_packet()

Signed-off-by: Stefano Sabatini <stefano.sabatini-lala@poste.it>

Stefano Sabatini authored on 2011/03/12 23:24:54
Showing 1 changed files
... ...
@@ -189,22 +189,20 @@ static int fbdev_read_packet(AVFormatContext *avctx, AVPacket *pkt)
189 189
         fbdev->time_frame = av_gettime();
190 190
 
191 191
     /* wait based on the frame rate */
192
-    while (1) {
193
-        curtime = av_gettime();
194
-        delay = fbdev->time_frame - curtime;
195
-        av_dlog(avctx,
196
-                "time_frame:%"PRId64" curtime:%"PRId64" delay:%"PRId64"\n",
197
-                fbdev->time_frame, curtime, delay);
198
-        if (delay <= 0) {
199
-            fbdev->time_frame += INT64_C(1000000) * av_q2d(fbdev->time_base);
200
-            break;
201
-        }
192
+    curtime = av_gettime();
193
+    delay = fbdev->time_frame - curtime;
194
+    av_dlog(avctx,
195
+            "time_frame:%"PRId64" curtime:%"PRId64" delay:%"PRId64"\n",
196
+            fbdev->time_frame, curtime, delay);
197
+    if (delay > 0) {
202 198
         if (avctx->flags & AVFMT_FLAG_NONBLOCK)
203 199
             return AVERROR(EAGAIN);
204 200
         ts.tv_sec  =  delay / 1000000;
205 201
         ts.tv_nsec = (delay % 1000000) * 1000;
206 202
         while (nanosleep(&ts, &ts) < 0 && errno == EINTR);
207 203
     }
204
+    /* compute the time of the next frame */
205
+    fbdev->time_frame += INT64_C(1000000) * av_q2d(fbdev->time_base);
208 206
 
209 207
     if ((ret = av_new_packet(pkt, fbdev->frame_size)) < 0)
210 208
         return ret;