Lines Matching refs:playbin
279 static GSequence *avelements_create (GstPlayBin * playbin,
296 GstPlayBin *playbin; member
490 void (*about_to_finish) (GstPlayBin * playbin);
493 void (*video_changed) (GstPlayBin * playbin);
494 void (*audio_changed) (GstPlayBin * playbin);
495 void (*text_changed) (GstPlayBin * playbin);
498 void (*video_tags_changed) (GstPlayBin * playbin, gint stream);
499 void (*audio_tags_changed) (GstPlayBin * playbin, gint stream);
500 void (*text_tags_changed) (GstPlayBin * playbin, gint stream);
503 GstTagList *(*get_video_tags) (GstPlayBin * playbin, gint stream);
504 GstTagList *(*get_audio_tags) (GstPlayBin * playbin, gint stream);
505 GstTagList *(*get_text_tags) (GstPlayBin * playbin, gint stream);
508 GstSample *(*convert_sample) (GstPlayBin * playbin, GstCaps * caps);
511 GstPad *(*get_video_pad) (GstPlayBin * playbin, gint stream);
512 GstPad *(*get_audio_pad) (GstPlayBin * playbin, gint stream);
513 GstPad *(*get_text_pad) (GstPlayBin * playbin, gint stream);
644 static void gst_play_bin_deep_element_added (GstBin * playbin, GstBin * sub_bin,
652 static GstTagList *gst_play_bin_get_video_tags (GstPlayBin * playbin,
654 static GstTagList *gst_play_bin_get_audio_tags (GstPlayBin * playbin,
656 static GstTagList *gst_play_bin_get_text_tags (GstPlayBin * playbin,
659 static GstSample *gst_play_bin_convert_sample (GstPlayBin * playbin,
662 static GstPad *gst_play_bin_get_video_pad (GstPlayBin * playbin, gint stream);
663 static GstPad *gst_play_bin_get_audio_pad (GstPlayBin * playbin, gint stream);
664 static GstPad *gst_play_bin_get_text_pad (GstPlayBin * playbin, gint stream);
666 static GstStateChangeReturn setup_next_source (GstPlayBin * playbin,
677 gst_play_bin_update_context (GstPlayBin * playbin, GstContext * context);
728 GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (playbin, "playbin", GST_RANK_NONE,
1442 do_async_start (GstPlayBin * playbin) in do_async_start() argument
1446 playbin->async_pending = TRUE; in do_async_start()
1448 message = gst_message_new_async_start (GST_OBJECT_CAST (playbin)); in do_async_start()
1449 GST_BIN_CLASS (parent_class)->handle_message (GST_BIN_CAST (playbin), in do_async_start()
1454 do_async_done (GstPlayBin * playbin) in do_async_done() argument
1458 if (playbin->async_pending) { in do_async_done()
1459 GST_DEBUG_OBJECT (playbin, "posting ASYNC_DONE"); in do_async_done()
1461 gst_message_new_async_done (GST_OBJECT_CAST (playbin), in do_async_done()
1463 GST_BIN_CLASS (parent_class)->handle_message (GST_BIN_CAST (playbin), in do_async_done()
1466 playbin->async_pending = FALSE; in do_async_done()
1471 init_group (GstPlayBin * playbin, GstSourceGroup * group) in init_group() argument
1484 group->playbin = playbin; in init_group()
1509 free_group (GstPlayBin * playbin, GstSourceGroup * group) in free_group() argument
1544 notify_volume_cb (GObject * combiner, GParamSpec * pspec, GstPlayBin * playbin) in notify_volume_cb() argument
1546 g_object_notify (G_OBJECT (playbin), "volume"); in notify_volume_cb()
1550 notify_mute_cb (GObject * combiner, GParamSpec * pspec, GstPlayBin * playbin) in notify_mute_cb() argument
1552 g_object_notify (G_OBJECT (playbin), "mute"); in notify_mute_cb()
1557 GstColorBalanceChannel * channel, gint value, GstPlayBin * playbin) in colorbalance_value_changed_cb() argument
1559 gst_color_balance_value_changed (GST_COLOR_BALANCE (playbin), channel, value); in colorbalance_value_changed_cb()
1602 gst_play_bin_update_elements_list (GstPlayBin * playbin) in gst_play_bin_update_elements_list() argument
1609 if (!playbin->elements || playbin->elements_cookie != cookie) { in gst_play_bin_update_elements_list()
1610 if (playbin->elements) in gst_play_bin_update_elements_list()
1611 gst_plugin_feature_list_free (playbin->elements); in gst_play_bin_update_elements_list()
1618 playbin->elements = g_list_concat (res, tmp); in gst_play_bin_update_elements_list()
1619 playbin->elements = g_list_sort (playbin->elements, compare_factories_func); in gst_play_bin_update_elements_list()
1622 if (!playbin->aelements || playbin->elements_cookie != cookie) { in gst_play_bin_update_elements_list()
1623 if (playbin->aelements) in gst_play_bin_update_elements_list()
1624 g_sequence_free (playbin->aelements); in gst_play_bin_update_elements_list()
1625 playbin->aelements = avelements_create (playbin, TRUE); in gst_play_bin_update_elements_list()
1628 if (!playbin->velements || playbin->elements_cookie != cookie) { in gst_play_bin_update_elements_list()
1629 if (playbin->velements) in gst_play_bin_update_elements_list()
1630 g_sequence_free (playbin->velements); in gst_play_bin_update_elements_list()
1631 playbin->velements = avelements_create (playbin, FALSE); in gst_play_bin_update_elements_list()
1634 playbin->elements_cookie = cookie; in gst_play_bin_update_elements_list()
1638 gst_play_bin_init (GstPlayBin * playbin) in gst_play_bin_init() argument
1640 g_rec_mutex_init (&playbin->lock); in gst_play_bin_init()
1641 g_mutex_init (&playbin->dyn_lock); in gst_play_bin_init()
1644 playbin->have_selector = TRUE; in gst_play_bin_init()
1647 playbin->curr_group = &playbin->groups[0]; in gst_play_bin_init()
1648 playbin->next_group = &playbin->groups[1]; in gst_play_bin_init()
1649 init_group (playbin, &playbin->groups[0]); in gst_play_bin_init()
1650 init_group (playbin, &playbin->groups[1]); in gst_play_bin_init()
1653 g_mutex_init (&playbin->elements_lock); in gst_play_bin_init()
1656 playbin->playsink = in gst_play_bin_init()
1659 gst_bin_add (GST_BIN_CAST (playbin), GST_ELEMENT_CAST (playbin->playsink)); in gst_play_bin_init()
1660 gst_play_sink_set_flags (playbin->playsink, DEFAULT_FLAGS); in gst_play_bin_init()
1662 g_signal_connect (playbin->playsink, "notify::volume", in gst_play_bin_init()
1663 G_CALLBACK (notify_volume_cb), playbin); in gst_play_bin_init()
1664 g_signal_connect (playbin->playsink, "notify::mute", in gst_play_bin_init()
1665 G_CALLBACK (notify_mute_cb), playbin); in gst_play_bin_init()
1666 g_signal_connect (playbin->playsink, "value-changed", in gst_play_bin_init()
1667 G_CALLBACK (colorbalance_value_changed_cb), playbin); in gst_play_bin_init()
1669 playbin->current_video = DEFAULT_CURRENT_VIDEO; in gst_play_bin_init()
1670 playbin->current_audio = DEFAULT_CURRENT_AUDIO; in gst_play_bin_init()
1671 playbin->current_text = DEFAULT_CURRENT_TEXT; in gst_play_bin_init()
1673 playbin->buffer_duration = DEFAULT_BUFFER_DURATION; in gst_play_bin_init()
1674 playbin->buffer_size = DEFAULT_BUFFER_SIZE; in gst_play_bin_init()
1675 playbin->ring_buffer_max_size = DEFAULT_RING_BUFFER_MAX_SIZE; in gst_play_bin_init()
1677 playbin->force_aspect_ratio = TRUE; in gst_play_bin_init()
1679 playbin->multiview_mode = GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE; in gst_play_bin_init()
1680 playbin->multiview_flags = GST_VIDEO_MULTIVIEW_FLAGS_NONE; in gst_play_bin_init()
1684 playbin->low_percent = DEFAULT_LOW_PERCENT; in gst_play_bin_init()
1685 playbin->high_percent = DEFAULT_HIGH_PERCENT; in gst_play_bin_init()
1693 GstPlayBin *playbin; in gst_play_bin_finalize() local
1695 playbin = GST_PLAY_BIN (object); in gst_play_bin_finalize()
1697 free_group (playbin, &playbin->groups[0]); in gst_play_bin_finalize()
1698 free_group (playbin, &playbin->groups[1]); in gst_play_bin_finalize()
1700 if (playbin->source) in gst_play_bin_finalize()
1701 gst_object_unref (playbin->source); in gst_play_bin_finalize()
1707 if (playbin->video_sink) { in gst_play_bin_finalize()
1708 gst_element_set_state (playbin->video_sink, GST_STATE_NULL); in gst_play_bin_finalize()
1709 gst_object_unref (playbin->video_sink); in gst_play_bin_finalize()
1711 if (playbin->audio_sink) { in gst_play_bin_finalize()
1712 gst_element_set_state (playbin->audio_sink, GST_STATE_NULL); in gst_play_bin_finalize()
1713 gst_object_unref (playbin->audio_sink); in gst_play_bin_finalize()
1715 if (playbin->text_sink) { in gst_play_bin_finalize()
1716 gst_element_set_state (playbin->text_sink, GST_STATE_NULL); in gst_play_bin_finalize()
1717 gst_object_unref (playbin->text_sink); in gst_play_bin_finalize()
1720 if (playbin->video_stream_combiner) { in gst_play_bin_finalize()
1721 gst_element_set_state (playbin->video_stream_combiner, GST_STATE_NULL); in gst_play_bin_finalize()
1722 gst_object_unref (playbin->video_stream_combiner); in gst_play_bin_finalize()
1724 if (playbin->audio_stream_combiner) { in gst_play_bin_finalize()
1725 gst_element_set_state (playbin->audio_stream_combiner, GST_STATE_NULL); in gst_play_bin_finalize()
1726 gst_object_unref (playbin->audio_stream_combiner); in gst_play_bin_finalize()
1728 if (playbin->text_stream_combiner) { in gst_play_bin_finalize()
1729 gst_element_set_state (playbin->text_stream_combiner, GST_STATE_NULL); in gst_play_bin_finalize()
1730 gst_object_unref (playbin->text_stream_combiner); in gst_play_bin_finalize()
1733 if (playbin->elements) in gst_play_bin_finalize()
1734 gst_plugin_feature_list_free (playbin->elements); in gst_play_bin_finalize()
1736 if (playbin->aelements) in gst_play_bin_finalize()
1737 g_sequence_free (playbin->aelements); in gst_play_bin_finalize()
1739 if (playbin->velements) in gst_play_bin_finalize()
1740 g_sequence_free (playbin->velements); in gst_play_bin_finalize()
1742 g_list_free_full (playbin->contexts, (GDestroyNotify) gst_context_unref); in gst_play_bin_finalize()
1744 g_rec_mutex_clear (&playbin->lock); in gst_play_bin_finalize()
1745 g_mutex_clear (&playbin->dyn_lock); in gst_play_bin_finalize()
1746 g_mutex_clear (&playbin->elements_lock); in gst_play_bin_finalize()
1748 playbin->is_live = FALSE; in gst_play_bin_finalize()
1754 gst_playbin_uri_is_valid (GstPlayBin * playbin, const gchar * uri) in gst_playbin_uri_is_valid() argument
1758 GST_LOG_OBJECT (playbin, "checking uri '%s'", uri); in gst_playbin_uri_is_valid()
1775 GST_WARNING_OBJECT (playbin, "uri '%s' not valid, character #%u", in gst_playbin_uri_is_valid()
1782 gst_play_bin_set_uri (GstPlayBin * playbin, const gchar * uri) in gst_play_bin_set_uri() argument
1786 if (uri && !gst_playbin_uri_is_valid (playbin, uri)) { in gst_play_bin_set_uri()
1788 GST_WARNING_OBJECT (playbin, "not entirely correct file URI '%s' - make " in gst_play_bin_set_uri()
1797 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_uri()
1798 group = playbin->next_group; in gst_play_bin_set_uri()
1813 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_uri()
1817 gst_play_bin_set_suburi (GstPlayBin * playbin, const gchar * suburi) in gst_play_bin_set_suburi() argument
1821 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_suburi()
1822 group = playbin->next_group; in gst_play_bin_set_suburi()
1831 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_suburi()
1835 gst_play_bin_set_flags (GstPlayBin * playbin, GstPlayFlags flags) in gst_play_bin_set_flags() argument
1838 old_flags = gst_play_sink_get_flags (playbin->playsink); in gst_play_bin_set_flags()
1841 gst_play_sink_set_flags (playbin->playsink, flags); in gst_play_bin_set_flags()
1842 gst_play_sink_reconfigure (playbin->playsink); in gst_play_bin_set_flags()
1847 gst_play_bin_get_flags (GstPlayBin * playbin) in gst_play_bin_get_flags() argument
1851 flags = gst_play_sink_get_flags (playbin->playsink); in gst_play_bin_get_flags()
1859 get_group (GstPlayBin * playbin) in get_group() argument
1863 if (!(result = playbin->curr_group)) in get_group()
1864 result = playbin->next_group; in get_group()
1870 gst_play_bin_get_video_pad (GstPlayBin * playbin, gint stream) in gst_play_bin_get_video_pad() argument
1875 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_video_pad()
1876 group = get_group (playbin); in gst_play_bin_get_video_pad()
1881 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_video_pad()
1887 gst_play_bin_get_audio_pad (GstPlayBin * playbin, gint stream) in gst_play_bin_get_audio_pad() argument
1892 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_audio_pad()
1893 group = get_group (playbin); in gst_play_bin_get_audio_pad()
1898 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_audio_pad()
1904 gst_play_bin_get_text_pad (GstPlayBin * playbin, gint stream) in gst_play_bin_get_text_pad() argument
1909 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_text_pad()
1910 group = get_group (playbin); in gst_play_bin_get_text_pad()
1915 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_text_pad()
1922 get_tags (GstPlayBin * playbin, GstSourceGroup * group, gint type, gint stream) in get_tags() argument
1953 gst_play_bin_get_video_tags (GstPlayBin * playbin, gint stream) in gst_play_bin_get_video_tags() argument
1958 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_video_tags()
1959 group = get_group (playbin); in gst_play_bin_get_video_tags()
1960 result = get_tags (playbin, group, PLAYBIN_STREAM_VIDEO, stream); in gst_play_bin_get_video_tags()
1961 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_video_tags()
1967 gst_play_bin_get_audio_tags (GstPlayBin * playbin, gint stream) in gst_play_bin_get_audio_tags() argument
1972 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_audio_tags()
1973 group = get_group (playbin); in gst_play_bin_get_audio_tags()
1974 result = get_tags (playbin, group, PLAYBIN_STREAM_AUDIO, stream); in gst_play_bin_get_audio_tags()
1975 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_audio_tags()
1981 gst_play_bin_get_text_tags (GstPlayBin * playbin, gint stream) in gst_play_bin_get_text_tags() argument
1986 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_text_tags()
1987 group = get_group (playbin); in gst_play_bin_get_text_tags()
1988 result = get_tags (playbin, group, PLAYBIN_STREAM_TEXT, stream); in gst_play_bin_get_text_tags()
1989 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_text_tags()
1995 gst_play_bin_convert_sample (GstPlayBin * playbin, GstCaps * caps) in gst_play_bin_convert_sample() argument
1997 return gst_play_sink_convert_sample (playbin->playsink, caps); in gst_play_bin_convert_sample()
2002 get_current_stream_number (GstPlayBin * playbin, GstSourceCombine * combine, in get_current_stream_number() argument
2012 GST_WARNING_OBJECT (playbin, in get_current_stream_number()
2060 gst_play_bin_set_current_video_stream (GstPlayBin * playbin, gint stream) in gst_play_bin_set_current_video_stream() argument
2066 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_current_video_stream()
2068 GST_DEBUG_OBJECT (playbin, "Changing current video stream %d -> %d", in gst_play_bin_set_current_video_stream()
2069 playbin->current_video, stream); in gst_play_bin_set_current_video_stream()
2071 group = get_group (playbin); in gst_play_bin_set_current_video_stream()
2086 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_video_stream()
2099 playbin->video_pending_flush_finish = TRUE; in gst_play_bin_set_current_video_stream()
2116 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_video_stream()
2117 GST_WARNING_OBJECT (playbin, in gst_play_bin_set_current_video_stream()
2123 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_video_stream()
2124 GST_DEBUG_OBJECT (playbin, "can't switch video, we have no channels"); in gst_play_bin_set_current_video_stream()
2130 gst_play_bin_set_current_audio_stream (GstPlayBin * playbin, gint stream) in gst_play_bin_set_current_audio_stream() argument
2136 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_current_audio_stream()
2138 GST_DEBUG_OBJECT (playbin, "Changing current audio stream %d -> %d", in gst_play_bin_set_current_audio_stream()
2139 playbin->current_audio, stream); in gst_play_bin_set_current_audio_stream()
2141 group = get_group (playbin); in gst_play_bin_set_current_audio_stream()
2156 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_audio_stream()
2169 playbin->audio_pending_flush_finish = TRUE; in gst_play_bin_set_current_audio_stream()
2186 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_audio_stream()
2187 GST_WARNING_OBJECT (playbin, in gst_play_bin_set_current_audio_stream()
2193 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_audio_stream()
2194 GST_DEBUG_OBJECT (playbin, "can't switch audio, we have no channels"); in gst_play_bin_set_current_audio_stream()
2248 source_combine_remove_pads (GstPlayBin * playbin, GstSourceCombine * combine) in source_combine_remove_pads() argument
2251 GST_LOG_OBJECT (playbin, "unlinking from sink"); in source_combine_remove_pads()
2255 GST_LOG_OBJECT (playbin, "release sink pad"); in source_combine_remove_pads()
2256 gst_play_sink_release_pad (playbin->playsink, combine->sinkpad); in source_combine_remove_pads()
2321 gst_play_bin_set_current_text_stream (GstPlayBin * playbin, gint stream) in gst_play_bin_set_current_text_stream() argument
2327 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_current_text_stream()
2329 GST_DEBUG_OBJECT (playbin, "Changing current text stream %d -> %d", in gst_play_bin_set_current_text_stream()
2330 playbin->current_text, stream); in gst_play_bin_set_current_text_stream()
2332 group = get_group (playbin); in gst_play_bin_set_current_text_stream()
2347 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_text_stream()
2398 playbin->text_pending_flush_finish = TRUE; in gst_play_bin_set_current_text_stream()
2423 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_text_stream()
2424 GST_WARNING_OBJECT (playbin, in gst_play_bin_set_current_text_stream()
2430 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_current_text_stream()
2436 gst_play_bin_set_sink (GstPlayBin * playbin, GstPlaySinkType type, in gst_play_bin_set_sink() argument
2439 GST_INFO_OBJECT (playbin, "Setting %s sink to %" GST_PTR_FORMAT, dbg, sink); in gst_play_bin_set_sink()
2441 gst_play_sink_set_sink (playbin->playsink, type, sink); in gst_play_bin_set_sink()
2449 gst_play_bin_set_stream_combiner (GstPlayBin * playbin, GstElement ** elem, in gst_play_bin_set_stream_combiner() argument
2452 GST_INFO_OBJECT (playbin, "Setting %s stream combiner to %" GST_PTR_FORMAT, in gst_play_bin_set_stream_combiner()
2455 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_stream_combiner()
2467 GST_LOG_OBJECT (playbin, "%s stream combiner now %" GST_PTR_FORMAT, dbg, in gst_play_bin_set_stream_combiner()
2469 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_stream_combiner()
2473 gst_play_bin_set_encoding (GstPlayBin * playbin, const gchar * encoding) in gst_play_bin_set_encoding() argument
2477 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_encoding()
2480 if ((elem = playbin->groups[0].uridecodebin)) in gst_play_bin_set_encoding()
2482 if ((elem = playbin->groups[0].suburidecodebin)) in gst_play_bin_set_encoding()
2484 if ((elem = playbin->groups[1].uridecodebin)) in gst_play_bin_set_encoding()
2486 if ((elem = playbin->groups[1].suburidecodebin)) in gst_play_bin_set_encoding()
2489 gst_play_sink_set_subtitle_encoding (playbin->playsink, encoding); in gst_play_bin_set_encoding()
2490 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_encoding()
2497 GstPlayBin *playbin = GST_PLAY_BIN (object); in gst_play_bin_set_property() local
2501 gst_play_bin_set_uri (playbin, g_value_get_string (value)); in gst_play_bin_set_property()
2504 gst_play_bin_set_suburi (playbin, g_value_get_string (value)); in gst_play_bin_set_property()
2507 gst_play_bin_set_flags (playbin, g_value_get_flags (value)); in gst_play_bin_set_property()
2508 if (playbin->curr_group) { in gst_play_bin_set_property()
2509 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in gst_play_bin_set_property()
2510 if (playbin->curr_group->uridecodebin) { in gst_play_bin_set_property()
2512 g_object_set (playbin->curr_group->uridecodebin, in gst_play_bin_set_property()
2517 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in gst_play_bin_set_property()
2521 gst_play_bin_set_current_video_stream (playbin, g_value_get_int (value)); in gst_play_bin_set_property()
2524 gst_play_bin_set_current_audio_stream (playbin, g_value_get_int (value)); in gst_play_bin_set_property()
2527 gst_play_bin_set_current_text_stream (playbin, g_value_get_int (value)); in gst_play_bin_set_property()
2530 gst_play_bin_set_encoding (playbin, g_value_get_string (value)); in gst_play_bin_set_property()
2533 gst_play_sink_set_filter (playbin->playsink, GST_PLAY_SINK_TYPE_VIDEO, in gst_play_bin_set_property()
2537 gst_play_sink_set_filter (playbin->playsink, GST_PLAY_SINK_TYPE_AUDIO, in gst_play_bin_set_property()
2541 gst_play_bin_set_sink (playbin, GST_PLAY_SINK_TYPE_VIDEO, "video", in gst_play_bin_set_property()
2542 &playbin->video_sink, g_value_get_object (value)); in gst_play_bin_set_property()
2545 gst_play_bin_set_sink (playbin, GST_PLAY_SINK_TYPE_AUDIO, "audio", in gst_play_bin_set_property()
2546 &playbin->audio_sink, g_value_get_object (value)); in gst_play_bin_set_property()
2549 gst_play_sink_set_vis_plugin (playbin->playsink, in gst_play_bin_set_property()
2553 gst_play_bin_set_sink (playbin, GST_PLAY_SINK_TYPE_TEXT, "text", in gst_play_bin_set_property()
2554 &playbin->text_sink, g_value_get_object (value)); in gst_play_bin_set_property()
2557 gst_play_bin_set_stream_combiner (playbin, in gst_play_bin_set_property()
2558 &playbin->video_stream_combiner, "video", g_value_get_object (value)); in gst_play_bin_set_property()
2561 gst_play_bin_set_stream_combiner (playbin, in gst_play_bin_set_property()
2562 &playbin->audio_stream_combiner, "audio", g_value_get_object (value)); in gst_play_bin_set_property()
2565 gst_play_bin_set_stream_combiner (playbin, in gst_play_bin_set_property()
2566 &playbin->text_stream_combiner, "text", g_value_get_object (value)); in gst_play_bin_set_property()
2569 gst_play_sink_set_volume (playbin->playsink, g_value_get_double (value)); in gst_play_bin_set_property()
2572 gst_play_sink_set_mute (playbin->playsink, g_value_get_boolean (value)); in gst_play_bin_set_property()
2575 gst_play_sink_set_font_desc (playbin->playsink, in gst_play_bin_set_property()
2579 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_property()
2580 playbin->connection_speed = g_value_get_uint64 (value) * 1000; in gst_play_bin_set_property()
2581 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_property()
2584 if (playbin->curr_group && playbin->curr_group->uridecodebin) { in gst_play_bin_set_property()
2585 …g_object_set (playbin->curr_group->uridecodebin, "connection-speed", g_value_get_uint64 (value), N… in gst_play_bin_set_property()
2590 playbin->buffer_size = g_value_get_int (value); in gst_play_bin_set_property()
2595 playbin->buffer_duration = g_value_get_uint64 (value); in gst_play_bin_set_property()
2597 playbin->buffer_duration = g_value_get_int64 (value); in gst_play_bin_set_property()
2601 gst_play_sink_set_av_offset (playbin->playsink, in gst_play_bin_set_property()
2605 gst_play_sink_set_text_offset (playbin->playsink, in gst_play_bin_set_property()
2609 playbin->ring_buffer_max_size = g_value_get_uint64 (value); in gst_play_bin_set_property()
2610 if (playbin->curr_group) { in gst_play_bin_set_property()
2611 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in gst_play_bin_set_property()
2612 if (playbin->curr_group->uridecodebin) { in gst_play_bin_set_property()
2613 g_object_set (playbin->curr_group->uridecodebin, in gst_play_bin_set_property()
2614 "ring-buffer-max-size", playbin->ring_buffer_max_size, NULL); in gst_play_bin_set_property()
2616 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in gst_play_bin_set_property()
2620 g_object_set (playbin->playsink, "force-aspect-ratio", in gst_play_bin_set_property()
2624 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_property()
2625 playbin->multiview_mode = g_value_get_enum (value); in gst_play_bin_set_property()
2626 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_property()
2629 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_property()
2630 playbin->multiview_flags = g_value_get_flags (value); in gst_play_bin_set_property()
2631 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_property()
2636 if (playbin->curr_group) { in gst_play_bin_set_property()
2637 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in gst_play_bin_set_property()
2638 if (playbin->curr_group->uridecodebin) { in gst_play_bin_set_property()
2639 … g_object_set (playbin->curr_group->uridecodebin, "state-change", g_value_get_int (value), NULL); in gst_play_bin_set_property()
2641 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in gst_play_bin_set_property()
2645 if (playbin->curr_group != NULL) { in gst_play_bin_set_property()
2646 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in gst_play_bin_set_property()
2647 if (playbin->curr_group->uridecodebin) { in gst_play_bin_set_property()
2648 … g_object_set (playbin->curr_group->uridecodebin, "exit-block", g_value_get_int (value), NULL); in gst_play_bin_set_property()
2650 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in gst_play_bin_set_property()
2654 if (playbin->curr_group != NULL) { in gst_play_bin_set_property()
2655 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in gst_play_bin_set_property()
2656 if (playbin->curr_group->uridecodebin) { in gst_play_bin_set_property()
2657 … g_object_set (playbin->curr_group->uridecodebin, "timeout", g_value_get_uint (value), NULL); in gst_play_bin_set_property()
2659 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in gst_play_bin_set_property()
2663 playbin->low_percent = g_value_get_int (value); in gst_play_bin_set_property()
2666 playbin->high_percent = g_value_get_int (value); in gst_play_bin_set_property()
2670 GstPlayFlags flags = gst_play_bin_get_flags (playbin); in gst_play_bin_set_property()
2672 gst_play_bin_set_flags (playbin, flags); in gst_play_bin_set_property()
2683 gst_play_bin_get_current_sink (GstPlayBin * playbin, GstElement ** elem, in gst_play_bin_get_current_sink() argument
2686 GstElement *sink = gst_play_sink_get_sink (playbin->playsink, type); in gst_play_bin_get_current_sink()
2688 GST_LOG_OBJECT (playbin, "play_sink_get_sink() returned %s sink %" in gst_play_bin_get_current_sink()
2693 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_current_sink()
2696 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_current_sink()
2703 gst_play_bin_get_current_stream_combiner (GstPlayBin * playbin, in gst_play_bin_get_current_stream_combiner() argument
2708 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_current_stream_combiner()
2709 if ((combiner = playbin->curr_group->combiner[stream_type].combiner)) in gst_play_bin_get_current_stream_combiner()
2713 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_current_stream_combiner()
2722 GstPlayBin *playbin = GST_PLAY_BIN (object); in gst_play_bin_get_property() local
2729 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2730 group = playbin->next_group; in gst_play_bin_get_property()
2732 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2739 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2740 group = get_group (playbin); in gst_play_bin_get_property()
2742 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2749 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2750 group = playbin->next_group; in gst_play_bin_get_property()
2752 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2759 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2760 group = get_group (playbin); in gst_play_bin_get_property()
2762 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2767 GST_OBJECT_LOCK (playbin); in gst_play_bin_get_property()
2768 g_value_set_object (value, playbin->source); in gst_play_bin_get_property()
2769 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_get_property()
2773 g_value_set_flags (value, gst_play_bin_get_flags (playbin)); in gst_play_bin_get_property()
2780 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2781 group = get_group (playbin); in gst_play_bin_get_property()
2784 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2788 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2789 g_value_set_int (value, playbin->current_video); in gst_play_bin_get_property()
2790 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2797 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2798 group = get_group (playbin); in gst_play_bin_get_property()
2801 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2805 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2806 g_value_set_int (value, playbin->current_audio); in gst_play_bin_get_property()
2807 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2814 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2815 group = get_group (playbin); in gst_play_bin_get_property()
2818 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2822 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2823 g_value_set_int (value, playbin->current_text); in gst_play_bin_get_property()
2824 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2827 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2829 gst_play_sink_get_subtitle_encoding (playbin->playsink)); in gst_play_bin_get_property()
2830 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2834 gst_play_sink_get_filter (playbin->playsink, in gst_play_bin_get_property()
2839 gst_play_sink_get_filter (playbin->playsink, in gst_play_bin_get_property()
2844 gst_play_bin_get_current_sink (playbin, &playbin->video_sink, in gst_play_bin_get_property()
2849 gst_play_bin_get_current_sink (playbin, &playbin->audio_sink, in gst_play_bin_get_property()
2854 gst_play_sink_get_vis_plugin (playbin->playsink)); in gst_play_bin_get_property()
2858 gst_play_bin_get_current_sink (playbin, &playbin->text_sink, in gst_play_bin_get_property()
2863 gst_play_bin_get_current_stream_combiner (playbin, in gst_play_bin_get_property()
2864 &playbin->video_stream_combiner, "video", PLAYBIN_STREAM_VIDEO)); in gst_play_bin_get_property()
2868 gst_play_bin_get_current_stream_combiner (playbin, in gst_play_bin_get_property()
2869 &playbin->audio_stream_combiner, "audio", PLAYBIN_STREAM_AUDIO)); in gst_play_bin_get_property()
2873 gst_play_bin_get_current_stream_combiner (playbin, in gst_play_bin_get_property()
2874 &playbin->text_stream_combiner, "text", PLAYBIN_STREAM_TEXT)); in gst_play_bin_get_property()
2877 g_value_set_double (value, gst_play_sink_get_volume (playbin->playsink)); in gst_play_bin_get_property()
2880 g_value_set_boolean (value, gst_play_sink_get_mute (playbin->playsink)); in gst_play_bin_get_property()
2884 gst_play_sink_get_last_sample (playbin->playsink)); in gst_play_bin_get_property()
2888 gst_play_sink_get_font_desc (playbin->playsink)); in gst_play_bin_get_property()
2891 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_get_property()
2892 g_value_set_uint64 (value, playbin->connection_speed / 1000); in gst_play_bin_get_property()
2893 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_get_property()
2896 GST_OBJECT_LOCK (playbin); in gst_play_bin_get_property()
2897 g_value_set_int (value, playbin->buffer_size); in gst_play_bin_get_property()
2898 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_get_property()
2901 GST_OBJECT_LOCK (playbin); in gst_play_bin_get_property()
2904 g_value_set_uint64 (value, playbin->buffer_duration); in gst_play_bin_get_property()
2906 g_value_set_int64 (value, playbin->buffer_duration); in gst_play_bin_get_property()
2908 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_get_property()
2912 gst_play_sink_get_av_offset (playbin->playsink)); in gst_play_bin_get_property()
2916 gst_play_sink_get_text_offset (playbin->playsink)); in gst_play_bin_get_property()
2919 g_value_set_uint64 (value, playbin->ring_buffer_max_size); in gst_play_bin_get_property()
2924 g_object_get (playbin->playsink, "force-aspect-ratio", &v, NULL); in gst_play_bin_get_property()
2929 GST_OBJECT_LOCK (playbin); in gst_play_bin_get_property()
2930 g_value_set_enum (value, playbin->multiview_mode); in gst_play_bin_get_property()
2931 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_get_property()
2934 GST_OBJECT_LOCK (playbin); in gst_play_bin_get_property()
2935 g_value_set_flags (value, playbin->multiview_flags); in gst_play_bin_get_property()
2936 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_get_property()
2941 g_value_set_int (value, playbin->low_percent); in gst_play_bin_get_property()
2944 g_value_set_int (value, playbin->high_percent); in gst_play_bin_get_property()
2954 gst_play_bin_update_cached_duration_from_query (GstPlayBin * playbin, in gst_play_bin_update_cached_duration_from_query() argument
2961 GST_DEBUG_OBJECT (playbin, "Updating cached duration from query"); in gst_play_bin_update_cached_duration_from_query()
2964 for (i = 0; i < G_N_ELEMENTS (playbin->duration); i++) { in gst_play_bin_update_cached_duration_from_query()
2965 if (playbin->duration[i].format == 0 || fmt == playbin->duration[i].format) { in gst_play_bin_update_cached_duration_from_query()
2966 playbin->duration[i].valid = valid; in gst_play_bin_update_cached_duration_from_query()
2967 playbin->duration[i].format = fmt; in gst_play_bin_update_cached_duration_from_query()
2968 playbin->duration[i].duration = valid ? duration : -1; in gst_play_bin_update_cached_duration_from_query()
2975 gst_play_bin_update_cached_duration (GstPlayBin * playbin) in gst_play_bin_update_cached_duration() argument
2983 GST_DEBUG_OBJECT (playbin, "Updating cached durations before group switch"); in gst_play_bin_update_cached_duration()
2987 GST_ELEMENT_CLASS (parent_class)->query (GST_ELEMENT_CAST (playbin), in gst_play_bin_update_cached_duration()
2989 gst_play_bin_update_cached_duration_from_query (playbin, ret, query); in gst_play_bin_update_cached_duration()
2997 GstPlayBin *playbin = GST_PLAY_BIN (element); in gst_play_bin_query() local
3009 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_query()
3012 GstSourceGroup *group = playbin->curr_group; in gst_play_bin_query()
3025 for (i = 0; i < G_N_ELEMENTS (playbin->duration); i++) { in gst_play_bin_query()
3026 if (fmt == playbin->duration[i].format) { in gst_play_bin_query()
3027 ret = playbin->duration[i].valid; in gst_play_bin_query()
3029 (ret ? playbin->duration[i].duration : -1)); in gst_play_bin_query()
3036 GST_DEBUG_OBJECT (playbin, in gst_play_bin_query()
3039 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_query()
3049 gst_play_bin_update_cached_duration_from_query (playbin, ret, query); in gst_play_bin_query()
3050 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_query()
3064 GstPlayBin *playbin = GST_PLAY_BIN (bin); in gst_play_bin_handle_message() local
3088 group = playbin->curr_group; in gst_play_bin_handle_message()
3093 GST_DEBUG_OBJECT (playbin, in gst_play_bin_handle_message()
3100 GstSourceGroup *new_group = playbin->curr_group; in gst_play_bin_handle_message()
3111 GST_DEBUG_OBJECT (playbin, "Stream start from new group %p", new_group); in gst_play_bin_handle_message()
3114 GST_DEBUG_OBJECT (playbin, "Posting pending buffering message: %" in gst_play_bin_handle_message()
3120 GstSourceGroup *group = playbin->curr_group; in gst_play_bin_handle_message()
3131 GST_DEBUG_OBJECT (playbin, "Storing buffering message from pending group " in gst_play_bin_handle_message()
3141 group = playbin->curr_group; in gst_play_bin_handle_message()
3227 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_handle_message()
3228 if (playbin->next_group && playbin->next_group->valid) { in gst_play_bin_handle_message()
3229 GST_DEBUG_OBJECT (playbin, in gst_play_bin_handle_message()
3231 playbin->next_group->uri); in gst_play_bin_handle_message()
3233 GST_DEBUG_OBJECT (playbin, in gst_play_bin_handle_message()
3235 gst_play_bin_set_uri (playbin, uri); in gst_play_bin_handle_message()
3237 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_handle_message()
3239 setup_next_source (playbin, GST_STATE_PAUSED); in gst_play_bin_handle_message()
3252 GST_OBJECT_LOCK (playbin); in gst_play_bin_handle_message()
3253 for (iter = playbin->contexts; iter; iter = g_list_next (iter)) { in gst_play_bin_handle_message()
3262 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_handle_message()
3273 gst_play_bin_update_context (playbin, context); in gst_play_bin_handle_message()
3276 if (playbin->is_live && GST_STATE_TARGET (playbin) == GST_STATE_PLAYING) { in gst_play_bin_handle_message()
3286 gst_element_change_state (GST_ELEMENT (playbin), in gst_play_bin_handle_message()
3292 gst_play_bin_deep_element_added (GstBin * playbin, GstBin * sub_bin, in gst_play_bin_deep_element_added() argument
3295 GST_LOG_OBJECT (playbin, "element %" GST_PTR_FORMAT " was added to " in gst_play_bin_deep_element_added()
3298 g_signal_emit (playbin, gst_play_bin_signals[SIGNAL_ELEMENT_SETUP], 0, child); in gst_play_bin_deep_element_added()
3300 GST_BIN_CLASS (parent_class)->deep_element_added (playbin, sub_bin, child); in gst_play_bin_deep_element_added()
3305 GstPlayBin * playbin) in combiner_active_pad_changed() argument
3312 GST_PLAY_BIN_LOCK (playbin); in combiner_active_pad_changed()
3313 group = get_group (playbin); in combiner_active_pad_changed()
3323 GST_PLAY_BIN_UNLOCK (playbin); in combiner_active_pad_changed()
3330 playbin->current_video = get_current_stream_number (playbin, in combiner_active_pad_changed()
3333 if (playbin->video_pending_flush_finish) { in combiner_active_pad_changed()
3334 playbin->video_pending_flush_finish = FALSE; in combiner_active_pad_changed()
3335 GST_PLAY_BIN_UNLOCK (playbin); in combiner_active_pad_changed()
3343 playbin->current_audio = get_current_stream_number (playbin, in combiner_active_pad_changed()
3346 if (playbin->audio_pending_flush_finish) { in combiner_active_pad_changed()
3347 playbin->audio_pending_flush_finish = FALSE; in combiner_active_pad_changed()
3348 GST_PLAY_BIN_UNLOCK (playbin); in combiner_active_pad_changed()
3356 playbin->current_text = get_current_stream_number (playbin, in combiner_active_pad_changed()
3359 if (playbin->text_pending_flush_finish) { in combiner_active_pad_changed()
3360 playbin->text_pending_flush_finish = FALSE; in combiner_active_pad_changed()
3361 GST_PLAY_BIN_UNLOCK (playbin); in combiner_active_pad_changed()
3370 GST_PLAY_BIN_UNLOCK (playbin); in combiner_active_pad_changed()
3374 g_object_notify (G_OBJECT (playbin), property); in combiner_active_pad_changed()
3378 update_video_multiview_caps (GstPlayBin * playbin, GstCaps * caps) in update_video_multiview_caps() argument
3387 GST_OBJECT_LOCK (playbin); in update_video_multiview_caps()
3388 mv_mode = (GstVideoMultiviewMode) playbin->multiview_mode; in update_video_multiview_caps()
3389 mv_flags = playbin->multiview_flags; in update_video_multiview_caps()
3390 GST_OBJECT_UNLOCK (playbin); in update_video_multiview_caps()
3407 GST_INFO_OBJECT (playbin, "Cannot override existing multiview mode"); in update_video_multiview_caps()
3496 caps = update_video_multiview_caps (group->playbin, caps); in _uridecodebin_event_probe()
3530 GstPlayBin *playbin; member
3541 GST_DEBUG_OBJECT (ntdata->playbin, "Tags on pad %" GST_PTR_FORMAT in notify_tags_cb()
3561 g_signal_emit (G_OBJECT (ntdata->playbin), gst_play_bin_signals[signal], 0, in notify_tags_cb()
3571 GstPlayBin *playbin; in pad_added_cb() local
3583 playbin = group->playbin; in pad_added_cb()
3585 GST_PLAY_BIN_SHUTDOWN_LOCK (playbin, shutdown); in pad_added_cb()
3593 GST_DEBUG_OBJECT (playbin, in pad_added_cb()
3618 custom_combiner = playbin->audio_stream_combiner; in pad_added_cb()
3620 custom_combiner = playbin->text_stream_combiner; in pad_added_cb()
3622 custom_combiner = playbin->video_stream_combiner; in pad_added_cb()
3629 GST_PLAY_BIN_SHUTDOWN_UNLOCK (playbin); in pad_added_cb()
3634 if (combine->combiner == NULL && playbin->have_selector) { in pad_added_cb()
3636 GST_DEBUG_OBJECT (playbin, "creating new input selector"); in pad_added_cb()
3644 playbin->have_selector = FALSE; in pad_added_cb()
3645 gst_element_post_message (GST_ELEMENT_CAST (playbin), in pad_added_cb()
3646 gst_missing_element_message_new (GST_ELEMENT_CAST (playbin), in pad_added_cb()
3648 GST_ELEMENT_WARNING (playbin, CORE, MISSING_PLUGIN, in pad_added_cb()
3668 G_CALLBACK (combiner_active_pad_changed), playbin); in pad_added_cb()
3670 GST_DEBUG_OBJECT (playbin, "adding new stream combiner %p", in pad_added_cb()
3673 gst_bin_add (GST_BIN_CAST (playbin), combine->combiner); in pad_added_cb()
3677 GST_PLAY_BIN_SHUTDOWN_UNLOCK (playbin); in pad_added_cb()
3692 GST_DEBUG_OBJECT (playbin, "blocking %" GST_PTR_FORMAT, combine->srcpad); in pad_added_cb()
3703 GST_DEBUG_OBJECT (playbin, "got pad %s:%s from combiner", in pad_added_cb()
3725 ntdata->playbin = playbin; in pad_added_cb()
3738 GST_DEBUG_OBJECT (playbin, "pad %p added to array", sinkpad); in pad_added_cb()
3749 GST_DEBUG_OBJECT (playbin, "linked pad %s:%s to combiner %p", in pad_added_cb()
3798 g_signal_emit (G_OBJECT (playbin), gst_play_bin_signals[signal], 0, NULL); in pad_added_cb()
3809 GST_ERROR_OBJECT (playbin, "unknown type %s for pad %s:%s", in pad_added_cb()
3815 GST_ERROR_OBJECT (playbin, in pad_added_cb()
3822 GST_ELEMENT_ERROR (playbin, CORE, PAD, in pad_added_cb()
3840 GstPlayBin *playbin; in pad_removed_cb() local
3847 playbin = group->playbin; in pad_removed_cb()
3849 GST_DEBUG_OBJECT (playbin, in pad_removed_cb()
3864 source_combine_remove_pads (playbin, combine); in pad_removed_cb()
3893 GST_DEBUG_OBJECT (playbin, "pad %p removed from array", peer); in pad_removed_cb()
3911 GST_DEBUG_OBJECT (playbin, "all combiner sinkpads removed"); in pad_removed_cb()
3912 GST_DEBUG_OBJECT (playbin, "removing combiner %p", combine->combiner); in pad_removed_cb()
3913 source_combine_remove_pads (playbin, combine); in pad_removed_cb()
3915 gst_bin_remove (GST_BIN_CAST (playbin), combine->combiner); in pad_removed_cb()
3930 g_signal_emit (G_OBJECT (playbin), gst_play_bin_signals[signal], 0, NULL); in pad_removed_cb()
3937 GST_DEBUG_OBJECT (playbin, "pad not linked"); in pad_removed_cb()
3954 GstPlayBin *playbin; in no_more_pads_cb() local
3959 playbin = group->playbin; in no_more_pads_cb()
3961 GST_DEBUG_OBJECT (playbin, "no more pads in group %p", group); in no_more_pads_cb()
3963 GST_PLAY_BIN_SHUTDOWN_LOCK (playbin, shutdown); in no_more_pads_cb()
3974 GST_DEBUG_OBJECT (playbin, "requesting new sink pad %d", combine->type); in no_more_pads_cb()
3976 gst_play_sink_request_pad (playbin->playsink, combine->type); in no_more_pads_cb()
3979 GST_DEBUG_OBJECT (playbin, "refreshing new sink pad %d", combine->type); in no_more_pads_cb()
3980 gst_play_sink_refresh_pad (playbin->playsink, combine->sinkpad, in no_more_pads_cb()
3983 GST_DEBUG_OBJECT (playbin, "releasing sink pad %d", combine->type); in no_more_pads_cb()
3984 gst_play_sink_release_pad (playbin->playsink, combine->sinkpad); in no_more_pads_cb()
3991 GST_DEBUG_OBJECT (playbin, "linked type %s, result: %d", in no_more_pads_cb()
3994 GST_ELEMENT_ERROR (playbin, CORE, PAD, in no_more_pads_cb()
4000 GST_DEBUG_OBJECT (playbin, "pending %d > %d", group->pending, in no_more_pads_cb()
4012 GST_LOG_OBJECT (playbin, "last group complete"); in no_more_pads_cb()
4015 GST_LOG_OBJECT (playbin, "have more pending groups"); in no_more_pads_cb()
4025 GST_INFO_OBJECT (playbin, "setting custom audio sink %" GST_PTR_FORMAT, in no_more_pads_cb()
4027 gst_play_sink_set_sink (playbin->playsink, GST_PLAY_SINK_TYPE_AUDIO, in no_more_pads_cb()
4032 GST_INFO_OBJECT (playbin, "setting custom video sink %" GST_PTR_FORMAT, in no_more_pads_cb()
4034 gst_play_sink_set_sink (playbin->playsink, GST_PLAY_SINK_TYPE_VIDEO, in no_more_pads_cb()
4039 GST_INFO_OBJECT (playbin, "setting custom text sink %" GST_PTR_FORMAT, in no_more_pads_cb()
4041 gst_play_sink_set_sink (playbin->playsink, GST_PLAY_SINK_TYPE_TEXT, in no_more_pads_cb()
4054 GST_DEBUG_OBJECT (playbin, "unblocking %" GST_PTR_FORMAT, in no_more_pads_cb()
4063 gst_play_sink_reconfigure (playbin->playsink); in no_more_pads_cb()
4066 GST_PLAY_BIN_SHUTDOWN_UNLOCK (playbin); in no_more_pads_cb()
4069 do_async_done (playbin); in no_more_pads_cb()
4087 GST_DEBUG_OBJECT (playbin, "requesting new flushing sink pad"); in no_more_pads_cb()
4089 gst_play_sink_request_pad (playbin->playsink, in no_more_pads_cb()
4093 GST_DEBUG_OBJECT (playbin, "linked flushing, result: %d", res); in no_more_pads_cb()
4095 GST_DEBUG_OBJECT (playbin, "unblocking %" GST_PTR_FORMAT, in no_more_pads_cb()
4111 GstPlayBin *playbin; in drained_cb() local
4113 playbin = group->playbin; in drained_cb()
4115 GST_DEBUG_OBJECT (playbin, "about to finish in group %p", group); in drained_cb()
4118 g_signal_emit (G_OBJECT (playbin), in drained_cb()
4123 setup_next_source (playbin, GST_STATE_PAUSED); in drained_cb()
4242 avelements_create (GstPlayBin * playbin, gboolean isaudioelement) in avelements_create() argument
4285 gst_play_bin_get_flags (playbin), isaudioelement); in avelements_create()
4416 GstPlayBin *playbin; in autoplug_factories_cb() local
4428 playbin = group->playbin; in autoplug_factories_cb()
4430 GST_DEBUG_OBJECT (playbin, "factories group %p for %s:%s, %" GST_PTR_FORMAT, in autoplug_factories_cb()
4434 g_mutex_lock (&playbin->elements_lock); in autoplug_factories_cb()
4435 gst_play_bin_update_elements_list (playbin); in autoplug_factories_cb()
4437 gst_element_factory_list_filter (playbin->elements, caps, GST_PAD_SINK, in autoplug_factories_cb()
4439 g_mutex_unlock (&playbin->elements_lock); in autoplug_factories_cb()
4441 GST_DEBUG_OBJECT (playbin, "found factories %p", factory_list); in autoplug_factories_cb()
4468 ave_list = &playbin->aelements; in autoplug_factories_cb()
4470 ave_list = &playbin->velements; in autoplug_factories_cb()
4472 flags = gst_play_bin_get_flags (playbin); in autoplug_factories_cb()
4474 g_mutex_lock (&playbin->elements_lock); in autoplug_factories_cb()
4477 g_mutex_unlock (&playbin->elements_lock); in autoplug_factories_cb()
4542 GstPlayBin *playbin = GST_PLAY_BIN (element); in gst_play_bin_send_event() local
4554 return gst_element_send_event (GST_ELEMENT_CAST (playbin->playsink), event); in gst_play_bin_send_event()
4563 GstPlayBin *playbin = GST_PLAY_BIN (element); in gst_play_bin_set_context() local
4566 GST_PLAY_BIN_LOCK (playbin); in gst_play_bin_set_context()
4567 if (playbin->audio_sink) in gst_play_bin_set_context()
4568 gst_element_set_context (playbin->audio_sink, context); in gst_play_bin_set_context()
4569 if (playbin->video_sink) in gst_play_bin_set_context()
4570 gst_element_set_context (playbin->video_sink, context); in gst_play_bin_set_context()
4571 if (playbin->text_sink) in gst_play_bin_set_context()
4572 gst_element_set_context (playbin->text_sink, context); in gst_play_bin_set_context()
4574 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in gst_play_bin_set_context()
4576 if (playbin->curr_group->audio_sink) in gst_play_bin_set_context()
4577 gst_element_set_context (playbin->curr_group->audio_sink, context); in gst_play_bin_set_context()
4578 if (playbin->curr_group->video_sink) in gst_play_bin_set_context()
4579 gst_element_set_context (playbin->curr_group->video_sink, context); in gst_play_bin_set_context()
4580 if (playbin->curr_group->text_sink) in gst_play_bin_set_context()
4581 gst_element_set_context (playbin->curr_group->text_sink, context); in gst_play_bin_set_context()
4583 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in gst_play_bin_set_context()
4584 GST_PLAY_BIN_UNLOCK (playbin); in gst_play_bin_set_context()
4591 gst_play_bin_update_context (GstPlayBin * playbin, GstContext * context) in gst_play_bin_update_context() argument
4596 GST_OBJECT_LOCK (playbin); in gst_play_bin_update_context()
4598 for (l = playbin->contexts; l; l = l->next) { in gst_play_bin_update_context()
4613 playbin->contexts = in gst_play_bin_update_context()
4614 g_list_prepend (playbin->contexts, gst_context_ref (context)); in gst_play_bin_update_context()
4615 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_update_context()
4619 activate_sink_bus_handler (GstBus * bus, GstMessage * msg, GstPlayBin * playbin) in activate_sink_bus_handler() argument
4624 if (playbin->audio_sink in activate_sink_bus_handler()
4626 GST_OBJECT_CAST (playbin->audio_sink))) in activate_sink_bus_handler()
4627 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_sink_bus_handler()
4628 else if (playbin->video_sink in activate_sink_bus_handler()
4630 GST_OBJECT_CAST (playbin->video_sink))) in activate_sink_bus_handler()
4631 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_sink_bus_handler()
4632 else if (playbin->text_sink in activate_sink_bus_handler()
4634 GST_OBJECT_CAST (playbin->text_sink))) in activate_sink_bus_handler()
4635 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_sink_bus_handler()
4643 GST_OBJECT_LOCK (playbin); in activate_sink_bus_handler()
4644 for (l = playbin->contexts; l; l = l->next) { in activate_sink_bus_handler()
4653 GST_OBJECT_UNLOCK (playbin); in activate_sink_bus_handler()
4657 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_sink_bus_handler()
4665 gst_play_bin_update_context (playbin, context); in activate_sink_bus_handler()
4668 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_sink_bus_handler()
4670 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_sink_bus_handler()
4678 activate_sink (GstPlayBin * playbin, GstElement * sink, gboolean * activated) in activate_sink() argument
4699 (GstBusSyncHandler) activate_sink_bus_handler, playbin, NULL); in activate_sink()
4738 activate_sink (group->playbin, group->text_sink, &activated_sink)) { in autoplug_continue_cb()
4768 activate_sink (group->playbin, group->audio_sink, &activated_sink)) { in autoplug_continue_cb()
4787 && activate_sink (group->playbin, group->video_sink, &activated_sink)) { in autoplug_continue_cb()
4805 GST_DEBUG_OBJECT (group->playbin, in autoplug_continue_cb()
4813 sink_accepts_caps (GstPlayBin * playbin, GstElement * sink, GstCaps * caps) in sink_accepts_caps() argument
4840 GstPlayBin *playbin; in autoplug_select_cb() local
4851 playbin = group->playbin; in autoplug_select_cb()
4853 GST_DEBUG_OBJECT (playbin, "select group %p for %s:%s, %" GST_PTR_FORMAT, in autoplug_select_cb()
4856 GST_DEBUG_OBJECT (playbin, "checking factory %s", GST_OBJECT_NAME (factory)); in autoplug_select_cb()
4874 g_mutex_lock (&playbin->elements_lock); in autoplug_select_cb()
4877 ave_seq = playbin->aelements; in autoplug_select_cb()
4880 ave_seq = playbin->velements; in autoplug_select_cb()
4920 GST_DEBUG_OBJECT (playbin, in autoplug_select_cb()
4925 GST_WARNING_OBJECT (playbin, in autoplug_select_cb()
4934 if (!activate_sink (playbin, *sinkp, NULL)) { in autoplug_select_cb()
4937 GST_WARNING_OBJECT (playbin, in autoplug_select_cb()
4959 GstPlayFlags flags = gst_play_bin_get_flags (playbin); in autoplug_select_cb()
5006 GST_DEBUG_OBJECT (playbin, "%s not compatible with the fixed sink", in autoplug_select_cb()
5017 g_mutex_unlock (&playbin->elements_lock); in autoplug_select_cb()
5024 g_mutex_unlock (&playbin->elements_lock); in autoplug_select_cb()
5030 GST_DEBUG_OBJECT (playbin, "we found a sink '%s'", GST_OBJECT_NAME (factory)); in autoplug_select_cb()
5037 GST_DEBUG_OBJECT (playbin, "we found an audio sink"); in autoplug_select_cb()
5041 GST_DEBUG_OBJECT (playbin, "we found a video sink"); in autoplug_select_cb()
5046 GST_WARNING_OBJECT (playbin, "unknown sink klass %s found", klass); in autoplug_select_cb()
5052 if (gst_play_sink_get_flags (playbin->playsink) & GST_PLAY_FLAG_VIS) { in autoplug_select_cb()
5054 GST_DEBUG_OBJECT (playbin, "skip audio sink because of vis"); in autoplug_select_cb()
5064 if (sink_accepts_caps (playbin, sink, caps)) { in autoplug_select_cb()
5065 GST_DEBUG_OBJECT (playbin, in autoplug_select_cb()
5072 GST_DEBUG_OBJECT (playbin, in autoplug_select_cb()
5080 GST_DEBUG_OBJECT (playbin, "we have no pending sink, try to create '%s'", in autoplug_select_cb()
5084 GST_WARNING_OBJECT (playbin, "Could not create an element from %s", in autoplug_select_cb()
5098 if (!activate_sink (playbin, element, NULL)) { in autoplug_select_cb()
5099 GST_WARNING_OBJECT (playbin, "Could not activate sink %s", in autoplug_select_cb()
5109 if (!sink_accepts_caps (playbin, element, caps)) { in autoplug_select_cb()
5121 GST_DEBUG_OBJECT (playbin, "remember sink"); in autoplug_select_cb()
5126 GST_DEBUG_OBJECT (playbin, "we found a working sink, expose pad"); in autoplug_select_cb()
5225 if ((sink = group->playbin->text_sink)) { in autoplug_query_caps()
5395 if ((sink = group->playbin->text_sink)) { in autoplug_query_context()
5431 GstPlayBin *playbin; in notify_source_cb() local
5434 playbin = group->playbin; in notify_source_cb()
5438 GST_OBJECT_LOCK (playbin); in notify_source_cb()
5439 if (playbin->source) in notify_source_cb()
5440 gst_object_unref (playbin->source); in notify_source_cb()
5441 playbin->source = source; in notify_source_cb()
5442 GST_OBJECT_UNLOCK (playbin); in notify_source_cb()
5444 g_object_notify (G_OBJECT (playbin), "source"); in notify_source_cb()
5451 GstPlayBin *playbin; in source_setup_cb() local
5453 playbin = group->playbin; in source_setup_cb()
5455 g_signal_emit (playbin, gst_play_bin_signals[SIGNAL_SOURCE_SETUP], 0, source); in source_setup_cb()
5460 group_set_locked_state_unlocked (GstPlayBin * playbin, GstSourceGroup * group, in group_set_locked_state_unlocked() argument
5463 GST_DEBUG_OBJECT (playbin, "locked_state %d on group %p", locked, group); in group_set_locked_state_unlocked()
5478 if ((group == NULL) || (group->playbin == NULL)) { in bitrate_parse_complete_cb()
5481 GstPlayBin *playbin = group->playbin; in bitrate_parse_complete_cb() local
5482 GST_INFO_OBJECT (playbin, "in manifest parse complete"); in bitrate_parse_complete_cb()
5483 g_signal_emit (playbin, gst_play_bin_signals[SIGNAL_BITRATE_PARSE_COMPLETE], 0, input, num); in bitrate_parse_complete_cb()
5484 GST_INFO_OBJECT (playbin, "out manifest parse complete"); in bitrate_parse_complete_cb()
5490 activate_group (GstPlayBin * playbin, GstSourceGroup * group, GstState target) in activate_group() argument
5503 GST_DEBUG_OBJECT (playbin, "activating group %p", group); in activate_group()
5508 if (playbin->audio_sink) in activate_group()
5509 group->audio_sink = gst_object_ref (playbin->audio_sink); in activate_group()
5512 gst_play_sink_get_sink (playbin->playsink, GST_PLAY_SINK_TYPE_AUDIO); in activate_group()
5515 if (!activate_sink (playbin, group->audio_sink, &audio_sink_activated)) { in activate_group()
5516 if (group->audio_sink == playbin->audio_sink) { in activate_group()
5525 if (playbin->video_sink) in activate_group()
5526 group->video_sink = gst_object_ref (playbin->video_sink); in activate_group()
5529 gst_play_sink_get_sink (playbin->playsink, GST_PLAY_SINK_TYPE_VIDEO); in activate_group()
5532 if (!activate_sink (playbin, group->video_sink, &video_sink_activated)) { in activate_group()
5533 if (group->video_sink == playbin->video_sink) { in activate_group()
5542 if (playbin->text_sink) in activate_group()
5543 group->text_sink = gst_object_ref (playbin->text_sink); in activate_group()
5546 gst_play_sink_get_sink (playbin->playsink, GST_PLAY_SINK_TYPE_TEXT); in activate_group()
5549 if (!activate_sink (playbin, group->text_sink, &text_sink_activated)) { in activate_group()
5550 if (group->text_sink == playbin->text_sink) { in activate_group()
5565 GST_DEBUG_OBJECT (playbin, "reusing existing uridecodebin"); in activate_group()
5571 gst_bin_add (GST_BIN_CAST (playbin), uridecodebin); in activate_group()
5573 GST_DEBUG_OBJECT (playbin, "making new uridecodebin"); in activate_group()
5577 gst_bin_add (GST_BIN_CAST (playbin), uridecodebin); in activate_group()
5584 "low-percent", playbin->low_percent, in activate_group()
5585 "high-percent", playbin->high_percent, NULL); in activate_group()
5591 flags = gst_play_sink_get_flags (playbin->playsink); in activate_group()
5595 "connection-speed", playbin->connection_speed / 1000, in activate_group()
5605 "buffer-duration", playbin->buffer_duration, in activate_group()
5606 "buffer-size", playbin->buffer_size, in activate_group()
5607 "ring-buffer-max-size", playbin->ring_buffer_max_size, NULL); in activate_group()
5648 GST_DEBUG_OBJECT (playbin, "reusing existing suburidecodebin"); in activate_group()
5654 gst_bin_add (GST_BIN_CAST (playbin), suburidecodebin); in activate_group()
5656 GST_DEBUG_OBJECT (playbin, "making new suburidecodebin"); in activate_group()
5661 gst_bin_add (GST_BIN_CAST (playbin), suburidecodebin); in activate_group()
5667 "connection-speed", playbin->connection_speed, in activate_group()
5702 GST_DEBUG_OBJECT (playbin, in activate_group()
5713 if (GST_OBJECT_PARENT (suburidecodebin) == GST_OBJECT_CAST (playbin)) in activate_group()
5714 gst_bin_remove (GST_BIN_CAST (playbin), suburidecodebin); in activate_group()
5732 group_set_locked_state_unlocked (playbin, group, FALSE); in activate_group()
5745 gst_missing_element_message_new (GST_ELEMENT_CAST (playbin), in activate_group()
5747 gst_element_post_message (GST_ELEMENT_CAST (playbin), msg); in activate_group()
5749 GST_ELEMENT_ERROR (playbin, CORE, MISSING_PLUGIN, in activate_group()
5758 GST_DEBUG_OBJECT (playbin, "failed state change of uridecodebin"); in activate_group()
5764 GST_ERROR_OBJECT (playbin, "failed to activate sinks"); in activate_group()
5812 gst_bin_remove (GST_BIN_CAST (playbin), uridecodebin); in activate_group()
5824 deactivate_group (GstPlayBin * playbin, GstSourceGroup * group) in deactivate_group() argument
5831 GST_DEBUG_OBJECT (playbin, "unlinking group %p", group); in deactivate_group()
5838 GST_DEBUG_OBJECT (playbin, "unlinking combiner %s", combine->media_list[0]); in deactivate_group()
5841 source_combine_remove_pads (playbin, combine); in deactivate_group()
5857 gst_bin_remove (GST_BIN_CAST (playbin), combine->combiner); in deactivate_group()
5865 GST_OBJECT_CAST (playbin->playsink))) { in deactivate_group()
5873 GST_OBJECT_CAST (playbin->playsink))) { in deactivate_group()
5881 GST_OBJECT_CAST (playbin->playsink))) { in deactivate_group()
5903 gst_bin_remove (GST_BIN_CAST (playbin), group->uridecodebin); in deactivate_group()
5914 if (GST_OBJECT_PARENT (group->suburidecodebin) == GST_OBJECT_CAST (playbin)) in deactivate_group()
5915 gst_bin_remove (GST_BIN_CAST (playbin), group->suburidecodebin); in deactivate_group()
5929 setup_next_source (GstPlayBin * playbin, GstState target) in setup_next_source() argument
5934 GST_DEBUG_OBJECT (playbin, "setup sources"); in setup_next_source()
5937 GST_PLAY_BIN_LOCK (playbin); in setup_next_source()
5938 new_group = playbin->next_group; in setup_next_source()
5943 old_group = playbin->curr_group; in setup_next_source()
5947 gst_play_bin_update_cached_duration (playbin); in setup_next_source()
5949 deactivate_group (playbin, old_group); in setup_next_source()
5954 playbin->curr_group = new_group; in setup_next_source()
5955 playbin->next_group = old_group; in setup_next_source()
5959 activate_group (playbin, new_group, in setup_next_source()
5963 GST_PLAY_BIN_UNLOCK (playbin); in setup_next_source()
5970 GST_DEBUG_OBJECT (playbin, "no next group"); in setup_next_source()
5972 GST_ELEMENT_ERROR (playbin, RESOURCE, NOT_FOUND, ("No URI set"), (NULL)); in setup_next_source()
5973 GST_PLAY_BIN_UNLOCK (playbin); in setup_next_source()
5979 GST_DEBUG_OBJECT (playbin, "activate failed"); in setup_next_source()
5981 GST_PLAY_BIN_UNLOCK (playbin); in setup_next_source()
5990 save_current_group (GstPlayBin * playbin) in save_current_group() argument
5994 GST_DEBUG_OBJECT (playbin, "save current group"); in save_current_group()
5997 GST_PLAY_BIN_LOCK (playbin); in save_current_group()
5998 curr_group = playbin->curr_group; in save_current_group()
6001 deactivate_group (playbin, curr_group); in save_current_group()
6004 playbin->curr_group = playbin->next_group; in save_current_group()
6005 playbin->next_group = curr_group; in save_current_group()
6006 GST_PLAY_BIN_UNLOCK (playbin); in save_current_group()
6014 groups_set_locked_state (GstPlayBin * playbin, gboolean locked) in groups_set_locked_state() argument
6016 GST_DEBUG_OBJECT (playbin, "setting locked state to %d on all groups", in groups_set_locked_state()
6019 GST_PLAY_BIN_LOCK (playbin); in groups_set_locked_state()
6020 GST_SOURCE_GROUP_LOCK (playbin->curr_group); in groups_set_locked_state()
6021 group_set_locked_state_unlocked (playbin, playbin->curr_group, locked); in groups_set_locked_state()
6022 GST_SOURCE_GROUP_UNLOCK (playbin->curr_group); in groups_set_locked_state()
6023 GST_SOURCE_GROUP_LOCK (playbin->next_group); in groups_set_locked_state()
6024 group_set_locked_state_unlocked (playbin, playbin->next_group, locked); in groups_set_locked_state()
6025 GST_SOURCE_GROUP_UNLOCK (playbin->next_group); in groups_set_locked_state()
6026 GST_PLAY_BIN_UNLOCK (playbin); in groups_set_locked_state()
6035 GstPlayBin *playbin; in gst_play_bin_change_state() local
6038 playbin = GST_PLAY_BIN (element); in gst_play_bin_change_state()
6042 memset (&playbin->duration, 0, sizeof (playbin->duration)); in gst_play_bin_change_state()
6045 GST_LOG_OBJECT (playbin, "clearing shutdown flag"); in gst_play_bin_change_state()
6046 memset (&playbin->duration, 0, sizeof (playbin->duration)); in gst_play_bin_change_state()
6047 g_atomic_int_set (&playbin->shutdown, 0); in gst_play_bin_change_state()
6048 do_async_start (playbin); in gst_play_bin_change_state()
6053 GST_LOG_OBJECT (playbin, "setting shutdown flag"); in gst_play_bin_change_state()
6054 g_atomic_int_set (&playbin->shutdown, 1); in gst_play_bin_change_state()
6055 memset (&playbin->duration, 0, sizeof (playbin->duration)); in gst_play_bin_change_state()
6060 GST_PLAY_BIN_DYN_LOCK (playbin); in gst_play_bin_change_state()
6061 GST_LOG_OBJECT (playbin, "dynamic lock taken, we can continue shutdown"); in gst_play_bin_change_state()
6062 GST_PLAY_BIN_DYN_UNLOCK (playbin); in gst_play_bin_change_state()
6069 if (!g_atomic_int_get (&playbin->shutdown)) { in gst_play_bin_change_state()
6073 memset (&playbin->duration, 0, sizeof (playbin->duration)); in gst_play_bin_change_state()
6076 groups_set_locked_state (playbin, FALSE); in gst_play_bin_change_state()
6089 setup_next_source (playbin, in gst_play_bin_change_state()
6097 do_async_done (playbin); in gst_play_bin_change_state()
6101 playbin->is_live = FALSE; in gst_play_bin_change_state()
6102 save_current_group (playbin); in gst_play_bin_change_state()
6111 save_current_group (playbin); in gst_play_bin_change_state()
6116 if (playbin->groups[i].active && playbin->groups[i].valid) { in gst_play_bin_change_state()
6117 deactivate_group (playbin, &playbin->groups[i]); in gst_play_bin_change_state()
6118 playbin->groups[i].valid = FALSE; in gst_play_bin_change_state()
6121 if (playbin->groups[i].uridecodebin) { in gst_play_bin_change_state()
6122 gst_element_set_state (playbin->groups[i].uridecodebin, in gst_play_bin_change_state()
6124 gst_object_unref (playbin->groups[i].uridecodebin); in gst_play_bin_change_state()
6125 playbin->groups[i].uridecodebin = NULL; in gst_play_bin_change_state()
6128 if (playbin->groups[i].suburidecodebin) { in gst_play_bin_change_state()
6129 gst_element_set_state (playbin->groups[i].suburidecodebin, in gst_play_bin_change_state()
6131 gst_object_unref (playbin->groups[i].suburidecodebin); in gst_play_bin_change_state()
6132 playbin->groups[i].suburidecodebin = NULL; in gst_play_bin_change_state()
6137 if (playbin->audio_sink) in gst_play_bin_change_state()
6138 gst_element_set_state (playbin->audio_sink, GST_STATE_NULL); in gst_play_bin_change_state()
6139 if (playbin->video_sink) in gst_play_bin_change_state()
6140 gst_element_set_state (playbin->video_sink, GST_STATE_NULL); in gst_play_bin_change_state()
6141 if (playbin->text_sink) in gst_play_bin_change_state()
6142 gst_element_set_state (playbin->text_sink, GST_STATE_NULL); in gst_play_bin_change_state()
6144 if (playbin->video_stream_combiner) in gst_play_bin_change_state()
6145 gst_element_set_state (playbin->video_stream_combiner, GST_STATE_NULL); in gst_play_bin_change_state()
6146 if (playbin->audio_stream_combiner) in gst_play_bin_change_state()
6147 gst_element_set_state (playbin->audio_stream_combiner, GST_STATE_NULL); in gst_play_bin_change_state()
6148 if (playbin->text_stream_combiner) in gst_play_bin_change_state()
6149 gst_element_set_state (playbin->text_stream_combiner, GST_STATE_NULL); in gst_play_bin_change_state()
6153 groups_set_locked_state (playbin, TRUE); in gst_play_bin_change_state()
6156 GST_OBJECT_LOCK (playbin); in gst_play_bin_change_state()
6157 for (l = playbin->contexts; l;) { in gst_play_bin_change_state()
6166 playbin->contexts = g_list_delete_link (playbin->contexts, l); in gst_play_bin_change_state()
6173 if (playbin->source) { in gst_play_bin_change_state()
6174 gst_object_unref (playbin->source); in gst_play_bin_change_state()
6175 playbin->source = NULL; in gst_play_bin_change_state()
6178 GST_OBJECT_UNLOCK (playbin); in gst_play_bin_change_state()
6186 playbin->is_live = ret == GST_STATE_CHANGE_NO_PREROLL; in gst_play_bin_change_state()
6189 do_async_done (playbin); in gst_play_bin_change_state()
6196 do_async_done (playbin); in gst_play_bin_change_state()
6201 curr_group = playbin->curr_group; in gst_play_bin_change_state()
6205 deactivate_group (playbin, curr_group); in gst_play_bin_change_state()
6211 playbin->curr_group = playbin->next_group; in gst_play_bin_change_state()
6212 playbin->next_group = curr_group; in gst_play_bin_change_state()
6221 GstPlayBin *playbin = GST_PLAY_BIN (overlay); in gst_play_bin_overlay_expose() local
6223 gst_video_overlay_expose (GST_VIDEO_OVERLAY (playbin->playsink)); in gst_play_bin_overlay_expose()
6230 GstPlayBin *playbin = GST_PLAY_BIN (overlay); in gst_play_bin_overlay_handle_events() local
6232 gst_video_overlay_handle_events (GST_VIDEO_OVERLAY (playbin->playsink), in gst_play_bin_overlay_handle_events()
6240 GstPlayBin *playbin = GST_PLAY_BIN (overlay); in gst_play_bin_overlay_set_render_rectangle() local
6242 gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (playbin->playsink), in gst_play_bin_overlay_set_render_rectangle()
6250 GstPlayBin *playbin = GST_PLAY_BIN (overlay); in gst_play_bin_overlay_set_window_handle() local
6252 gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (playbin->playsink), in gst_play_bin_overlay_set_window_handle()
6270 GstPlayBin *playbin = GST_PLAY_BIN (navigation); in gst_play_bin_navigation_send_event() local
6272 gst_navigation_send_event (GST_NAVIGATION (playbin->playsink), structure); in gst_play_bin_navigation_send_event()
6286 GstPlayBin *playbin = GST_PLAY_BIN (balance); in gst_play_bin_colorbalance_list_channels() local
6289 gst_color_balance_list_channels (GST_COLOR_BALANCE (playbin->playsink)); in gst_play_bin_colorbalance_list_channels()
6296 GstPlayBin *playbin = GST_PLAY_BIN (balance); in gst_play_bin_colorbalance_set_value() local
6298 gst_color_balance_set_value (GST_COLOR_BALANCE (playbin->playsink), channel, in gst_play_bin_colorbalance_set_value()
6306 GstPlayBin *playbin = GST_PLAY_BIN (balance); in gst_play_bin_colorbalance_get_value() local
6308 return gst_color_balance_get_value (GST_COLOR_BALANCE (playbin->playsink), in gst_play_bin_colorbalance_get_value()
6315 GstPlayBin *playbin = GST_PLAY_BIN (balance); in gst_play_bin_colorbalance_get_balance_type() local
6319 (playbin->playsink)); in gst_play_bin_colorbalance_get_balance_type()