Lines Matching refs:play

109 static gboolean play_next (GstPlay * play);
110 static gboolean play_prev (GstPlay * play);
113 static void play_reset (GstPlay * play);
114 static void play_set_relative_volume (GstPlay * play, gdouble volume_step);
115 static gboolean play_do_seek (GstPlay * play, gint64 pos, gdouble rate,
123 static void relative_seek (GstPlay * play, gdouble percent);
155 GstPlay *play; in play_new() local
167 play = g_new0 (GstPlay, 1); in play_new()
169 play->uris = uris; in play_new()
170 play->num_uris = g_strv_length (uris); in play_new()
171 play->cur_idx = -1; in play_new()
173 play->playbin = playbin; in play_new()
176 play->is_playbin3 = TRUE; in play_new()
180 play->is_playbin3 = TRUE; in play_new()
183 g_mutex_init (&play->selection_lock); in play_new()
192 g_object_set (play->playbin, "audio-sink", sink, NULL); in play_new()
203 g_object_set (play->playbin, "video-sink", sink, NULL); in play_new()
216 g_object_set_property (G_OBJECT (play->playbin), "flags", &val); in play_new()
223 play->deep_notify_id = in play_new()
224 gst_element_add_property_deep_notify_watch (play->playbin, NULL, TRUE); in play_new()
227 play->loop = g_main_loop_new (NULL, FALSE); in play_new()
229 play->bus_watch = gst_bus_add_watch (GST_ELEMENT_BUS (play->playbin), in play_new()
230 play_bus_msg, play); in play_new()
233 play->timeout = g_timeout_add (100, play_timeout, play); in play_new()
235 play->missing = NULL; in play_new()
236 play->buffering = FALSE; in play_new()
237 play->is_live = FALSE; in play_new()
239 play->desired_state = GST_STATE_PLAYING; in play_new()
241 play->gapless = gapless; in play_new()
243 g_signal_connect (play->playbin, "about-to-finish", in play_new()
244 G_CALLBACK (play_about_to_finish), play); in play_new()
248 play_set_relative_volume (play, initial_volume - 1.0); in play_new()
250 play->rate = 1.0; in play_new()
251 play->trick_mode = GST_PLAY_TRICK_MODE_NONE; in play_new()
253 return play; in play_new()
257 play_free (GstPlay * play) in play_free() argument
260 if (play->deep_notify_id != 0) in play_free()
261 g_signal_handler_disconnect (play->playbin, play->deep_notify_id); in play_free()
263 play_reset (play); in play_free()
265 gst_element_set_state (play->playbin, GST_STATE_NULL); in play_free()
266 gst_object_unref (play->playbin); in play_free()
268 g_source_remove (play->bus_watch); in play_free()
269 g_source_remove (play->timeout); in play_free()
270 g_main_loop_unref (play->loop); in play_free()
272 g_strfreev (play->uris); in play_free()
274 if (play->collection) in play_free()
275 gst_object_unref (play->collection); in play_free()
276 g_free (play->cur_audio_sid); in play_free()
277 g_free (play->cur_video_sid); in play_free()
278 g_free (play->cur_text_sid); in play_free()
280 g_mutex_clear (&play->selection_lock); in play_free()
282 g_free (play); in play_free()
287 play_reset (GstPlay * play) in play_reset() argument
289 g_list_foreach (play->missing, (GFunc) gst_message_unref, NULL); in play_reset()
290 play->missing = NULL; in play_reset()
292 play->buffering = FALSE; in play_reset()
293 play->is_live = FALSE; in play_reset()
297 play_set_relative_volume (GstPlay * play, gdouble volume_step) in play_set_relative_volume() argument
301 volume = gst_stream_volume_get_volume (GST_STREAM_VOLUME (play->playbin), in play_set_relative_volume()
307 gst_stream_volume_set_volume (GST_STREAM_VOLUME (play->playbin), in play_set_relative_volume()
316 play_install_missing_plugins (GstPlay * play) in play_install_missing_plugins() argument
326 GstPlay *play = user_data; in play_bus_msg() local
332 GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (play->playbin), in play_bus_msg()
336 if (play->missing != NULL && play_install_missing_plugins (play)) { in play_bus_msg()
338 --play->cur_idx; in play_bus_msg()
339 play_next (play); in play_bus_msg()
345 if (!play->buffering) in play_bus_msg()
353 if (play->buffering) { in play_bus_msg()
354 play->buffering = FALSE; in play_bus_msg()
356 if (!play->is_live) in play_bus_msg()
357 gst_element_set_state (play->playbin, play->desired_state); in play_bus_msg()
361 if (!play->buffering) { in play_bus_msg()
362 if (!play->is_live) in play_bus_msg()
363 gst_element_set_state (play->playbin, GST_STATE_PAUSED); in play_bus_msg()
364 play->buffering = TRUE; in play_bus_msg()
371 gst_element_set_state (play->playbin, GST_STATE_PAUSED); in play_bus_msg()
372 gst_element_set_state (play->playbin, GST_STATE_PLAYING); in play_bus_msg()
377 gst_bin_recalculate_latency (GST_BIN (play->playbin)); in play_bus_msg()
390 gst_element_set_state (play->playbin, state); in play_bus_msg()
396 play_timeout (play); in play_bus_msg()
399 if (!wait_on_eos && !play_next (play)) { in play_bus_msg()
401 g_main_loop_quit (play->loop); in play_bus_msg()
409 GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (play->playbin), in play_bus_msg()
425 GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (play->playbin), in play_bus_msg()
430 play->uris[play->cur_idx]); in play_bus_msg()
437 gst_element_set_state (play->playbin, GST_STATE_NULL); in play_bus_msg()
439 if (play->missing != NULL && play_install_missing_plugins (play)) { in play_bus_msg()
441 --play->cur_idx; in play_bus_msg()
442 play_next (play); in play_bus_msg()
446 if (!play_next (play)) { in play_bus_msg()
448 g_main_loop_quit (play->loop); in play_bus_msg()
492 relative_seek (play, +0.08); in play_bus_msg()
495 relative_seek (play, -0.01); in play_bus_msg()
543 g_mutex_lock (&play->selection_lock); in play_bus_msg()
544 gst_object_replace ((GstObject **) & play->collection, in play_bus_msg()
546 g_mutex_unlock (&play->selection_lock); in play_bus_msg()
557 g_mutex_lock (&play->selection_lock); in play_bus_msg()
558 gst_object_replace ((GstObject **) & play->collection, in play_bus_msg()
562 g_free (play->cur_audio_sid); in play_bus_msg()
563 g_free (play->cur_video_sid); in play_bus_msg()
564 g_free (play->cur_text_sid); in play_bus_msg()
565 play->cur_audio_sid = NULL; in play_bus_msg()
566 play->cur_video_sid = NULL; in play_bus_msg()
567 play->cur_text_sid = NULL; in play_bus_msg()
577 play->cur_audio_sid = g_strdup (stream_id); in play_bus_msg()
579 play->cur_video_sid = g_strdup (stream_id); in play_bus_msg()
581 play->cur_text_sid = g_strdup (stream_id); in play_bus_msg()
590 g_mutex_unlock (&play->selection_lock); in play_bus_msg()
601 play->missing = g_list_append (play->missing, gst_message_ref (msg)); in play_bus_msg()
612 GstPlay *play = user_data; in play_timeout() local
617 if (play->buffering) in play_timeout()
620 gst_element_query_position (play->playbin, GST_FORMAT_TIME, &pos); in play_timeout()
621 gst_element_query_duration (play->playbin, GST_FORMAT_TIME, &dur); in play_timeout()
623 if (play->desired_state == GST_STATE_PAUSED) { in play_timeout()
647 play_uri_get_display_name (GstPlay * play, const gchar * uri) in play_uri_get_display_name() argument
664 play_uri (GstPlay * play, const gchar * next_uri) in play_uri() argument
668 gst_element_set_state (play->playbin, GST_STATE_READY); in play_uri()
669 play_reset (play); in play_uri()
671 loc = play_uri_get_display_name (play, next_uri); in play_uri()
675 g_object_set (play->playbin, "uri", next_uri, NULL); in play_uri()
677 switch (gst_element_set_state (play->playbin, GST_STATE_PAUSED)) { in play_uri()
683 play->is_live = TRUE; in play_uri()
692 if (play->desired_state != GST_STATE_PAUSED) in play_uri()
693 gst_element_set_state (play->playbin, play->desired_state); in play_uri()
698 play_next (GstPlay * play) in play_next() argument
700 if ((play->cur_idx + 1) >= play->num_uris) in play_next()
703 play_uri (play, play->uris[++play->cur_idx]); in play_next()
709 play_prev (GstPlay * play) in play_prev() argument
711 if (play->cur_idx == 0 || play->num_uris <= 1) in play_prev()
714 play_uri (play, play->uris[--play->cur_idx]); in play_prev()
721 GstPlay *play = user_data; in play_about_to_finish() local
726 if (!play->gapless) in play_about_to_finish()
729 next_idx = play->cur_idx + 1; in play_about_to_finish()
730 if (next_idx >= play->num_uris) in play_about_to_finish()
733 next_uri = play->uris[next_idx]; in play_about_to_finish()
734 loc = play_uri_get_display_name (play, next_uri); in play_about_to_finish()
739 g_object_set (play->playbin, "uri", next_uri, NULL); in play_about_to_finish()
740 play->cur_idx = next_idx; in play_about_to_finish()
744 do_play (GstPlay * play) in do_play() argument
749 for (i = 0; i < play->num_uris; ++i) in do_play()
750 GST_INFO ("%4u : %s", i, play->uris[i]); in do_play()
752 if (!play_next (play)) in do_play()
755 g_main_loop_run (play->loop); in do_play()
839 toggle_paused (GstPlay * play) in toggle_paused() argument
841 if (play->desired_state == GST_STATE_PLAYING) in toggle_paused()
842 play->desired_state = GST_STATE_PAUSED; in toggle_paused()
844 play->desired_state = GST_STATE_PLAYING; in toggle_paused()
846 if (!play->buffering) { in toggle_paused()
847 gst_element_set_state (play->playbin, play->desired_state); in toggle_paused()
848 } else if (play->desired_state == GST_STATE_PLAYING) { in toggle_paused()
854 relative_seek (GstPlay * play, gdouble percent) in relative_seek() argument
862 if (!gst_element_query_position (play->playbin, GST_FORMAT_TIME, &pos)) in relative_seek()
866 if (!gst_element_query (play->playbin, query)) { in relative_seek()
883 if (!play_next (play)) { in relative_seek()
885 g_main_loop_quit (play->loop); in relative_seek()
891 play_do_seek (play, pos, play->rate, play->trick_mode); in relative_seek()
903 play_set_rate_and_trick_mode (GstPlay * play, gdouble rate, in play_set_rate_and_trick_mode() argument
910 if (!gst_element_query_position (play->playbin, GST_FORMAT_TIME, &pos)) in play_set_rate_and_trick_mode()
913 return play_do_seek (play, pos, rate, mode); in play_set_rate_and_trick_mode()
917 play_do_seek (GstPlay * play, gint64 pos, gdouble rate, GstPlayTrickMode mode) in play_do_seek() argument
925 if (!gst_element_query (play->playbin, query)) { in play_do_seek()
968 if (!gst_element_send_event (play->playbin, seek)) in play_do_seek()
971 play->rate = rate; in play_do_seek()
972 play->trick_mode = mode; in play_do_seek()
977 play_set_playback_rate (GstPlay * play, gdouble rate) in play_set_playback_rate() argument
979 if (play_set_rate_and_trick_mode (play, rate, play->trick_mode)) { in play_set_playback_rate()
990 play_set_relative_playback_rate (GstPlay * play, gdouble rate_step, in play_set_relative_playback_rate() argument
993 gdouble new_rate = play->rate + rate_step; in play_set_relative_playback_rate()
998 play_set_playback_rate (play, new_rate); in play_set_relative_playback_rate()
1022 play_switch_trick_mode (GstPlay * play) in play_switch_trick_mode() argument
1024 GstPlayTrickMode new_mode = ++play->trick_mode; in play_switch_trick_mode()
1032 if (play_set_rate_and_trick_mode (play, play->rate, new_mode)) { in play_switch_trick_mode()
1033 gst_print ("Rate: %.2f (%s) \n", play->rate, in play_switch_trick_mode()
1041 play_get_nth_stream_in_collection (GstPlay * play, guint index, in play_get_nth_stream_in_collection() argument
1061 len = gst_stream_collection_get_size (play->collection); in play_get_nth_stream_in_collection()
1064 GstStream *stream = gst_stream_collection_get_stream (play->collection, i); in play_get_nth_stream_in_collection()
1079 play_cycle_track_selection (GstPlay * play, GstPlayTrackType track_type) in play_cycle_track_selection() argument
1091 g_mutex_lock (&play->selection_lock); in play_cycle_track_selection()
1092 if (play->is_playbin3) { in play_cycle_track_selection()
1093 if (!play->collection) { in play_cycle_track_selection()
1095 g_mutex_unlock (&play->selection_lock); in play_cycle_track_selection()
1100 len = gst_stream_collection_get_size (play->collection); in play_cycle_track_selection()
1103 gst_stream_collection_get_stream (play->collection, i); in play_cycle_track_selection()
1109 if (play->cur_audio_sid && !g_strcmp0 (play->cur_audio_sid, sid)) in play_cycle_track_selection()
1113 if (play->cur_video_sid && !g_strcmp0 (play->cur_video_sid, sid)) in play_cycle_track_selection()
1117 if (play->cur_text_sid && !g_strcmp0 (play->cur_text_sid, sid)) in play_cycle_track_selection()
1134 if (play->is_playbin3) { in play_cycle_track_selection()
1137 if (play->cur_video_sid) { in play_cycle_track_selection()
1139 g_list_append (selected_streams, play->cur_video_sid); in play_cycle_track_selection()
1141 if (play->cur_text_sid) { in play_cycle_track_selection()
1143 g_list_append (selected_streams, play->cur_text_sid); in play_cycle_track_selection()
1153 if (play->is_playbin3) { in play_cycle_track_selection()
1156 if (play->cur_audio_sid) { in play_cycle_track_selection()
1158 g_list_append (selected_streams, play->cur_audio_sid); in play_cycle_track_selection()
1160 if (play->cur_text_sid) { in play_cycle_track_selection()
1162 g_list_append (selected_streams, play->cur_text_sid); in play_cycle_track_selection()
1172 if (play->is_playbin3) { in play_cycle_track_selection()
1175 if (play->cur_audio_sid) { in play_cycle_track_selection()
1177 g_list_append (selected_streams, play->cur_audio_sid); in play_cycle_track_selection()
1179 if (play->cur_video_sid) { in play_cycle_track_selection()
1181 g_list_append (selected_streams, play->cur_video_sid); in play_cycle_track_selection()
1189 if (play->is_playbin3) { in play_cycle_track_selection()
1197 g_object_get (play->playbin, prop_cur, &cur, prop_n, &n, "flags", in play_cycle_track_selection()
1208 g_mutex_unlock (&play->selection_lock); in play_cycle_track_selection()
1217 if (play->is_playbin3) { in play_cycle_track_selection()
1221 g_object_set (play->playbin, "flags", cur_flags, NULL); in play_cycle_track_selection()
1228 if (play->is_playbin3) { in play_cycle_track_selection()
1231 stream = play_get_nth_stream_in_collection (play, cur, track_type); in play_cycle_track_selection()
1243 g_object_set (play->playbin, "flags", cur_flags, NULL); in play_cycle_track_selection()
1245 g_signal_emit_by_name (play->playbin, prop_get, cur, &tags); in play_cycle_track_selection()
1263 g_mutex_unlock (&play->selection_lock); in play_cycle_track_selection()
1265 if (play->is_playbin3) { in play_cycle_track_selection()
1267 gst_element_send_event (play->playbin, in play_cycle_track_selection()
1272 g_object_set (play->playbin, prop_cur, cur, NULL); in play_cycle_track_selection()
1328 GstPlay *play = (GstPlay *) user_data; in keyboard_cb() local
1340 toggle_paused (play); in keyboard_cb()
1344 g_main_loop_quit (play->loop); in keyboard_cb()
1348 if (!play_next (play)) { in keyboard_cb()
1350 g_main_loop_quit (play->loop); in keyboard_cb()
1355 play_prev (play); in keyboard_cb()
1358 if (play->rate > -0.2 && play->rate < 0.0) in keyboard_cb()
1359 play_set_relative_playback_rate (play, 0.0, TRUE); in keyboard_cb()
1360 else if (ABS (play->rate) < 2.0) in keyboard_cb()
1361 play_set_relative_playback_rate (play, 0.1, FALSE); in keyboard_cb()
1362 else if (ABS (play->rate) < 4.0) in keyboard_cb()
1363 play_set_relative_playback_rate (play, 0.5, FALSE); in keyboard_cb()
1365 play_set_relative_playback_rate (play, 1.0, FALSE); in keyboard_cb()
1368 if (play->rate > 0.0 && play->rate < 0.20) in keyboard_cb()
1369 play_set_relative_playback_rate (play, 0.0, TRUE); in keyboard_cb()
1370 else if (ABS (play->rate) <= 2.0) in keyboard_cb()
1371 play_set_relative_playback_rate (play, -0.1, FALSE); in keyboard_cb()
1372 else if (ABS (play->rate) <= 4.0) in keyboard_cb()
1373 play_set_relative_playback_rate (play, -0.5, FALSE); in keyboard_cb()
1375 play_set_relative_playback_rate (play, -1.0, FALSE); in keyboard_cb()
1378 play_set_relative_playback_rate (play, 0.0, TRUE); in keyboard_cb()
1381 play_switch_trick_mode (play); in keyboard_cb()
1385 g_main_loop_quit (play->loop); in keyboard_cb()
1389 play_cycle_track_selection (play, GST_PLAY_TRACK_TYPE_AUDIO); in keyboard_cb()
1392 play_cycle_track_selection (play, GST_PLAY_TRACK_TYPE_VIDEO); in keyboard_cb()
1395 play_cycle_track_selection (play, GST_PLAY_TRACK_TYPE_SUBTITLE); in keyboard_cb()
1398 play_do_seek (play, 0, play->rate, play->trick_mode); in keyboard_cb()
1402 relative_seek (play, +0.08); in keyboard_cb()
1404 relative_seek (play, -0.01); in keyboard_cb()
1406 play_set_relative_volume (play, +1.0 / VOLUME_STEPS); in keyboard_cb()
1408 play_set_relative_volume (play, -1.0 / VOLUME_STEPS); in keyboard_cb()
1421 GstPlay *play; in main() local
1581 play = play_new (uris, audio_sink, video_sink, gapless, volume, verbose, in main()
1584 if (play == NULL) { in main()
1591 if (gst_play_kb_set_key_handler (keyboard_cb, play)) { in main()
1600 do_play (play); in main()
1603 play_free (play); in main()