[Bug 697806] avdec_h264 Fails during error recovery after packet loss leading to stream corruption

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Apr 12 05:22:16 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=697806
  GStreamer | gst-libav | 1.0.5

--- Comment #1 from tcdgreenwood at hotmail.com 2013-04-12 12:22:13 UTC ---
I can reproduce the same error using:
gst-launch-1.0 videotestsrc ! 'video/x-raw, width=320, height=240,
framerate=15/1'! x264enc speed-preset=ultrafast ! identity
drop-probability=0.01 ! avdec_h264 ! videoconvert ! osxvideosink

I think I'm getting comfortable with the best way to patch this, but the patch
may remove quite a bit of code - 1 structure and most of the code in
gst_ffmpegviddec_get_buffer, gst_ffmpegviddec_reget_buffer and
gst_ffmpegviddec_release_buffer as it aligns the API intentions closer.  I
think that the root cause of the issue was vagueness in the FFMPEG docs leading
to an incorrect assumption that one buffer allocation is one frame.  Whereas
FFMPEG assumes 1 AVFrame is 1 frame and that it's safe if needed to allocate
multiple buffers per frame.  The FFMPEG code has FIXME in the area of code that
causes the actual issue as the assumptions that gst-libav do generally hold (if
they didn't FFMPEG code would most likely have horrible performance).  As far
as I can tell fixing FFMPEG probably wouldn't resolve the need for extra
allocations in all cases (but I am no expert) and so actually changing this in
gstreamer seems a good idea and may resolve some other issues caused by the
mismatch.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list