No subject


Wed May 9 12:12:37 PDT 2012


    if (eos && (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_UNEXPECTED)) {
        GST_ELEMENT_ERROR (queue, STREAM, FAILED,
           (_("Internal data flow error.")),
           ("streaming task paused, reason %s (%d)",
           gst_flow_get_name (ret), ret));

What happens under the hood:
 - video starts playing, default subtitle selected and everything working
 - user selects a subtitle with ID
 - playbin2 calls set_text_stream(ID), which then sends a custom flush event to
subtitle_overlay
 - subtitle_overlay then calls _pad_blocked_cb leading to the removal of the
current text_overlay (pango) and the setup of a new one
 - while setting the new overlay, subtitle_overlay sends a newsegment to the
subtitle pad (subparse).

Currently this newsegment event was being sent in BYTES format and being
ignored by subparse, so the patch at comment #9 makes sure the events are sent
in TIME format.

To make everything work, subparse should send the newsegment event to
text_overlay (pango), which would then read the new buffer, etc. But
gst_sub_parse_chain is never called with a new buffer (same for
gst_subtitle_overlay_subtitle_sink_chain).

So the patch on comment #9 includes:
 - Attempt to fix the issue with BYTES vs TIME format by doing the conversion
before sending the events
 - Set subparser->need_segment to true on the NEWSEGMENT handling to make sure
the event is relayed on gst_sub_parse_chain
 - Also includes the reverse patch from comment #2 to fix the "internal error"
issue

We still need to figure out why the new subtitle buffer is never parsed
(gst_sub_parse_chain never called).

https://bugzilla.gnome.org/show_bug.cgi?id=600648 may be related to this issue.

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