GNOME Bugzilla – Bug 736515
avviddec: keep draining buffers from libav until libav says so
Last modified: 2014-09-13 13:50:37 UTC
Bug 734608 didn't completely fix the last missing frames. I have been able to try this in a 32-core machine with and we never rendered the last 20 frames (from a total of 300). The problem is in the do-while loop in gst_ffmpegviddec_drain. It only retries 10 times, but this might not be enough. I guess this machine has more frames decoded but only 10 are decoded on draining.
Created attachment 285967 [details] [review] really drain all frames Since bug 734608, have_data is obtained from libav. So, we really want to drain frames until libav has no more data.
commit 25ab0036c0a5e35c9ddb203e9b225fdcc5d3360a Author: IBM Thinklab <oblong@wall-center.(none)> Date: Thu Sep 11 19:37:33 2014 -0400 avviddec: drain frames until libav doesn't have more data We use have_data (that comes from libav), instead of only trying 10 times, to know if there are more frames available. The old code was machine dependant as different amount of frames could be decoded by different type of (more powerful) machines, and 10 times was not always sufficient. https://bugzilla.gnome.org/show_bug.cgi?id=736515
> Author: IBM Thinklab <oblong@wall-center.(none)> Aleix, please make sure to submit patches with proper author/e-mail info :)
Oh, yes. Terrible mistake. I guess it's too late to ammend the commit.