For video, frame_number tracks the number of frames sent to the encoder.
So it should be incremented when we submit a frame, not when we get a
packet back.
---
 avconv.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/avconv.c b/avconv.c
index 087cc0c..00e50ee 100644
--- a/avconv.c
+++ b/avconv.c
@@ -537,6 +537,13 @@ static void do_video_out(AVFormatContext *s,
     if (ret < 0)
         goto error;
 
+    /*
+     * For video, number of frames in == number of packets out.
+     * But there may be reordering, so we can't throw away frames on encoder
+     * flush, we need to limit them here, before they go into encoder.
+     */
+    ost->frame_number++;
+
     while (1) {
         ret = avcodec_receive_packet(enc, &pkt);
         if (ret == AVERROR(EAGAIN))
@@ -554,12 +561,6 @@ static void do_video_out(AVFormatContext *s,
         }
 
         ost->sync_opts++;
-        /*
-        * For video, number of frames in == number of packets out.
-        * But there may be reordering, so we can't throw away frames on encoder
-        * flush, we need to limit them here, before they go into encoder.
-        */
-        ost->frame_number++;
     }
 
     return;
-- 
2.0.0

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to