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

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Oct 17 16:38:29 CEST 2013


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

--- Comment #24 from tcdgreenwood at hotmail.com 2013-10-17 14:38:23 UTC ---
It looks like it's most likely that this is a condition that existed before
except before so perhaps it should be a separate bug. 
decoder->priv->output_state should be setup by gst_ffmpegviddec_negotiate which
calls gst_video_decoder_set_output_state as required.  If the decoder doesn't
think the output_state has changed or the output_state changes between
negotiate and gst_video_decoder_allocate_output_buffer then this could happen.

Does this only happen when it has been decoding and changes state?  How can I
reproduce it?

If there is another bug raised I can try to find some more time to fix.  BTW I
think there is actually an issue with gst_video_decoder_allocate_output_buffer
as you cannot tell the difference between failure to allocate and not
negotiated.  Since the locking is managed in the base class I don't see how the
subclass can be 100% thread safe - but I'd like to defer that to someone else. 
I'd like to add a new method that has a return value similar to
allocate_output_frame and passes back the buffer through an output parameter
GstBuffer** or NULL on error.  If it did return not negotiated from buffer
allocation I'm not sure exactly how to handle it - try to negotiate again in a
loop with some sort of limit?  However this type of change should be separated
unless others think this is caused by this patch IMHO.

Does that make sense?  Please someone tell me what is the best way to proceed. 
Thanks!!

-- 
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