GNOME Bugzilla – Bug 326311
basesink does not call the PAUSED->PLAYING change_state for live pipelines
Last modified: 2006-03-28 10:06:38 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.
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.
also happens when the pipeline is in lost_state. (#335553)
*** Bug 335553 has been marked as a duplicate of this bug. ***
* 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
*** Bug 336216 has been marked as a duplicate of this bug. ***