diff --git a/ffmpeg.c b/ffmpeg.c
index cf2f7b974bbbd164580ae9e00588fd0f191991f4..c5239d4a46fc64fd60c69878f2a23b8c2e5b2f16 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1256,8 +1256,8 @@ static int av_encode(AVFormatContext **output_files,
 
         len = pkt.size;
         ptr = pkt.data;
-        do {    
-            /* decode the packet if needed */
+        while (len > 0) {
+	    /* decode the packet if needed */
             data_buf = NULL; /* fail safe */
             data_size = 0;
             if (ist->decoding_needed) {
@@ -1314,7 +1314,7 @@ static int av_encode(AVFormatContext **output_files,
                             av_free_packet(&pkt);
                             goto redo;
                         }
-                        if (len != 0 && !got_picture) {
+                        if (!got_picture) {
                             /* no picture yet */
                             ptr += ret;
                             len -= ret;
@@ -1431,7 +1431,7 @@ static int av_encode(AVFormatContext **output_files,
                 }
             }
             av_free(buffer_to_free);
-        } while (len > 0);
+        }
     discard_packet:
         av_free_packet(&pkt);