After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 326311 - basesink does not call the PAUSED->PLAYING change_state for live pipelines
basesink does not call the PAUSED->PLAYING change_state for live pipelines
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal normal
: 0.10.5
Assigned To: Wim Taymans
GStreamer Maintainers
: 335553 336216 (view as bug list)
Depends on:
Blocks: 330748
 
 
Reported: 2006-01-09 15:57 UTC by Wim Taymans
Modified: 2006-03-28 10:06 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch to fix problem (1.73 KB, patch)
2006-01-09 15:58 UTC, Wim Taymans
none Details | Review

Description Wim Taymans 2006-01-09 15:57:01 UTC
When a NO_PREROLL pipeline is set to PLAYING, basesink will preroll and commit its state to PLAYING in the streaming thread. It does not call the change_state function with a PAUSE->PLAYING transition though. Some subclasses that rely on that state change being called (baseaudiosink) fail to work properly in this case.
Comment 1 Wim Taymans 2006-01-09 15:58:26 UTC
Created attachment 57043 [details] [review]
patch to fix problem

This patch calls the PAUSED->PLAYING state transition. The PREROLL lock has to be released since it is not recursive... There might be a better way to do this.
Comment 2 Wim Taymans 2006-03-23 15:36:20 UTC
also happens when the pipeline is in lost_state. (#335553)
Comment 3 Wim Taymans 2006-03-23 15:36:48 UTC
*** Bug 335553 has been marked as a duplicate of this bug. ***
Comment 4 Wim Taymans 2006-03-23 16:33:19 UTC
        * libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
        (gst_base_sink_init), (gst_base_sink_finalize),
        (gst_base_sink_set_qos_enabled), (gst_base_sink_is_qos_enabled),
        (gst_base_sink_set_property), (gst_base_sink_get_property),
        (gst_base_sink_commit_state), (gst_base_sink_get_sync_times),
        (gst_base_sink_wait_clock), (gst_base_sink_do_sync),
        (gst_base_sink_add_qos_observation), (gst_base_sink_send_qos),
        (gst_base_sink_perform_qos), (gst_base_sink_reset_qos),
        (gst_base_sink_is_too_late), (gst_base_sink_render_object),
        (gst_base_sink_preroll_object), (gst_base_sink_event),
        (gst_base_sink_chain_unlocked), (gst_base_sink_get_position_last),
        (gst_base_sink_get_position_paused), (gst_base_sink_get_position),
        (gst_base_sink_query), (gst_base_sink_change_state):
        Decouple max-lateness and the fact that QoS messages are generated
        with a new property (qos).
        Add vmethod so subclasses can be notified of ASYNC playing
        state changes.
        Collect timestamp start and stop to report better current
        position in EOS/PLAYING/PAUSED/READY/NULL.
        Refactor QoS/frame dropping and other measurements.
        API: GstBaseSrc::qos
        Fixes #326311
Comment 5 Wim Taymans 2006-03-28 10:06:38 UTC
*** Bug 336216 has been marked as a duplicate of this bug. ***