• Home
  • Raw
  • Download

Lines Matching refs:sink

112 static void gst_hls_sink2_reset (GstHlsSink2 * sink);
122 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (object); in gst_hls_sink2_dispose() local
124 G_OBJECT_CLASS (parent_class)->dispose ((GObject *) sink); in gst_hls_sink2_dispose()
130 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (object); in gst_hls_sink2_finalize() local
132 g_free (sink->location); in gst_hls_sink2_finalize()
133 g_free (sink->playlist_location); in gst_hls_sink2_finalize()
134 g_free (sink->playlist_root); in gst_hls_sink2_finalize()
135 g_free (sink->current_location); in gst_hls_sink2_finalize()
136 if (sink->playlist) in gst_hls_sink2_finalize()
137 gst_m3u8_playlist_free (sink->playlist); in gst_hls_sink2_finalize()
139 g_queue_foreach (&sink->old_locations, (GFunc) g_free, NULL); in gst_hls_sink2_finalize()
140 g_queue_clear (&sink->old_locations); in gst_hls_sink2_finalize()
142 G_OBJECT_CLASS (parent_class)->finalize ((GObject *) sink); in gst_hls_sink2_finalize()
147 gst_hls_sink2_get_playlist_stream (GstHlsSink2 * sink, const gchar * location) in gst_hls_sink2_get_playlist_stream() argument
157 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in gst_hls_sink2_get_playlist_stream()
169 gst_hls_sink2_get_fragment_stream (GstHlsSink2 * sink, const gchar * location) in gst_hls_sink2_get_fragment_stream() argument
179 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in gst_hls_sink2_get_fragment_stream()
311 GstHlsSink2 * sink) in on_format_location() argument
316 location = g_strdup_printf (sink->location, fragment_id); in on_format_location()
317 g_signal_emit (sink, signals[SIGNAL_GET_FRAGMENT_STREAM], 0, location, in on_format_location()
321 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in on_format_location()
323 g_free (sink->current_location); in on_format_location()
324 sink->current_location = NULL; in on_format_location()
326 g_free (sink->current_location); in on_format_location()
327 sink->current_location = g_steal_pointer (&location); in on_format_location()
329 g_object_set (sink->giostreamsink, "stream", stream, NULL); in on_format_location()
340 gst_hls_sink2_init (GstHlsSink2 * sink) in gst_hls_sink2_init() argument
344 sink->location = g_strdup (DEFAULT_LOCATION); in gst_hls_sink2_init()
345 sink->playlist_location = g_strdup (DEFAULT_PLAYLIST_LOCATION); in gst_hls_sink2_init()
346 sink->playlist_root = g_strdup (DEFAULT_PLAYLIST_ROOT); in gst_hls_sink2_init()
347 sink->playlist_length = DEFAULT_PLAYLIST_LENGTH; in gst_hls_sink2_init()
348 sink->max_files = DEFAULT_MAX_FILES; in gst_hls_sink2_init()
349 sink->target_duration = DEFAULT_TARGET_DURATION; in gst_hls_sink2_init()
350 sink->send_keyframe_requests = DEFAULT_SEND_KEYFRAME_REQUESTS; in gst_hls_sink2_init()
351 g_queue_init (&sink->old_locations); in gst_hls_sink2_init()
353 sink->splitmuxsink = gst_element_factory_make ("splitmuxsink", NULL); in gst_hls_sink2_init()
354 gst_bin_add (GST_BIN (sink), sink->splitmuxsink); in gst_hls_sink2_init()
356 sink->giostreamsink = gst_element_factory_make ("giostreamsink", NULL); in gst_hls_sink2_init()
359 g_object_set (sink->splitmuxsink, "location", NULL, "max-size-time", in gst_hls_sink2_init()
360 ((GstClockTime) sink->target_duration * GST_SECOND), in gst_hls_sink2_init()
361 "send-keyframe-requests", TRUE, "muxer", mux, "sink", sink->giostreamsink, in gst_hls_sink2_init()
364 g_signal_connect (sink->splitmuxsink, "format-location", in gst_hls_sink2_init()
365 G_CALLBACK (on_format_location), sink); in gst_hls_sink2_init()
367 GST_OBJECT_FLAG_SET (sink, GST_ELEMENT_FLAG_SINK); in gst_hls_sink2_init()
369 gst_hls_sink2_reset (sink); in gst_hls_sink2_init()
373 gst_hls_sink2_reset (GstHlsSink2 * sink) in gst_hls_sink2_reset() argument
375 sink->index = 0; in gst_hls_sink2_reset()
377 if (sink->playlist) in gst_hls_sink2_reset()
378 gst_m3u8_playlist_free (sink->playlist); in gst_hls_sink2_reset()
379 sink->playlist = in gst_hls_sink2_reset()
380 gst_m3u8_playlist_new (GST_M3U8_PLAYLIST_VERSION, sink->playlist_length); in gst_hls_sink2_reset()
382 g_queue_foreach (&sink->old_locations, (GFunc) g_free, NULL); in gst_hls_sink2_reset()
383 g_queue_clear (&sink->old_locations); in gst_hls_sink2_reset()
385 sink->state = GST_M3U8_PLAYLIST_RENDER_INIT; in gst_hls_sink2_reset()
389 gst_hls_sink2_write_playlist (GstHlsSink2 * sink) in gst_hls_sink2_write_playlist() argument
396 g_signal_emit (sink, signals[SIGNAL_GET_PLAYLIST_STREAM], 0, in gst_hls_sink2_write_playlist()
397 sink->playlist_location, &stream); in gst_hls_sink2_write_playlist()
399 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in gst_hls_sink2_write_playlist()
400 (("Got no output stream for playlist '%s'."), sink->playlist_location), in gst_hls_sink2_write_playlist()
405 playlist_content = gst_m3u8_playlist_render (sink->playlist); in gst_hls_sink2_write_playlist()
410 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in gst_hls_sink2_write_playlist()
423 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (bin); in gst_hls_sink2_handle_message() local
429 if (message->src == GST_OBJECT_CAST (sink->splitmuxsink)) { in gst_hls_sink2_handle_message()
432 &sink->current_running_time_start); in gst_hls_sink2_handle_message()
437 if (!sink->current_location) { in gst_hls_sink2_handle_message()
438 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, ((NULL)), in gst_hls_sink2_handle_message()
445 GST_INFO_OBJECT (sink, "COUNT %d", sink->index); in gst_hls_sink2_handle_message()
446 if (sink->playlist_root == NULL) { in gst_hls_sink2_handle_message()
447 entry_location = g_path_get_basename (sink->current_location); in gst_hls_sink2_handle_message()
449 gchar *name = g_path_get_basename (sink->current_location); in gst_hls_sink2_handle_message()
450 entry_location = g_build_filename (sink->playlist_root, name, NULL); in gst_hls_sink2_handle_message()
454 gst_m3u8_playlist_add_entry (sink->playlist, entry_location, in gst_hls_sink2_handle_message()
455 NULL, running_time - sink->current_running_time_start, in gst_hls_sink2_handle_message()
456 sink->index++, FALSE); in gst_hls_sink2_handle_message()
459 gst_hls_sink2_write_playlist (sink); in gst_hls_sink2_handle_message()
460 sink->state |= GST_M3U8_PLAYLIST_RENDER_STARTED; in gst_hls_sink2_handle_message()
462 g_queue_push_tail (&sink->old_locations, in gst_hls_sink2_handle_message()
463 g_strdup (sink->current_location)); in gst_hls_sink2_handle_message()
465 if (sink->max_files > 0) { in gst_hls_sink2_handle_message()
466 while (g_queue_get_length (&sink->old_locations) > sink->max_files) { in gst_hls_sink2_handle_message()
467 gchar *old_location = g_queue_pop_head (&sink->old_locations); in gst_hls_sink2_handle_message()
470 if (g_signal_has_handler_pending (sink, in gst_hls_sink2_handle_message()
472 g_signal_emit (sink, signals[SIGNAL_DELETE_FRAGMENT], 0, in gst_hls_sink2_handle_message()
479 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in gst_hls_sink2_handle_message()
491 g_free (sink->current_location); in gst_hls_sink2_handle_message()
492 sink->current_location = NULL; in gst_hls_sink2_handle_message()
498 sink->playlist->end_list = TRUE; in gst_hls_sink2_handle_message()
499 gst_hls_sink2_write_playlist (sink); in gst_hls_sink2_handle_message()
500 sink->state |= GST_M3U8_PLAYLIST_RENDER_ENDED; in gst_hls_sink2_handle_message()
514 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (element); in gst_hls_sink2_request_new_pad() local
521 || !sink->audio_sink, NULL); in gst_hls_sink2_request_new_pad()
523 || !sink->video_sink, NULL); in gst_hls_sink2_request_new_pad()
528 gst_element_request_pad_simple (sink->splitmuxsink, in gst_hls_sink2_request_new_pad()
539 sink->audio_sink = pad; in gst_hls_sink2_request_new_pad()
541 sink->video_sink = pad; in gst_hls_sink2_request_new_pad()
549 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (element); in gst_hls_sink2_release_pad() local
552 g_return_if_fail (pad == sink->audio_sink || pad == sink->video_sink); in gst_hls_sink2_release_pad()
556 gst_element_release_request_pad (sink->splitmuxsink, peer); in gst_hls_sink2_release_pad()
563 if (pad == sink->audio_sink) in gst_hls_sink2_release_pad()
564 sink->audio_sink = NULL; in gst_hls_sink2_release_pad()
566 sink->video_sink = NULL; in gst_hls_sink2_release_pad()
575 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (element); in gst_hls_sink2_change_state() local
579 if (!sink->splitmuxsink) { in gst_hls_sink2_change_state()
594 if (sink->playlist && (sink->state & GST_M3U8_PLAYLIST_RENDER_STARTED) && in gst_hls_sink2_change_state()
595 !(sink->state & GST_M3U8_PLAYLIST_RENDER_ENDED)) { in gst_hls_sink2_change_state()
596 sink->playlist->end_list = TRUE; in gst_hls_sink2_change_state()
597 gst_hls_sink2_write_playlist (sink); in gst_hls_sink2_change_state()
601 gst_hls_sink2_reset (sink); in gst_hls_sink2_change_state()
614 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (object); in gst_hls_sink2_set_property() local
618 g_free (sink->location); in gst_hls_sink2_set_property()
619 sink->location = g_value_dup_string (value); in gst_hls_sink2_set_property()
620 if (sink->splitmuxsink) in gst_hls_sink2_set_property()
621 g_object_set (sink->splitmuxsink, "location", sink->location, NULL); in gst_hls_sink2_set_property()
624 g_free (sink->playlist_location); in gst_hls_sink2_set_property()
625 sink->playlist_location = g_value_dup_string (value); in gst_hls_sink2_set_property()
628 g_free (sink->playlist_root); in gst_hls_sink2_set_property()
629 sink->playlist_root = g_value_dup_string (value); in gst_hls_sink2_set_property()
632 sink->max_files = g_value_get_uint (value); in gst_hls_sink2_set_property()
635 sink->target_duration = g_value_get_uint (value); in gst_hls_sink2_set_property()
636 if (sink->splitmuxsink) { in gst_hls_sink2_set_property()
637 g_object_set (sink->splitmuxsink, "max-size-time", in gst_hls_sink2_set_property()
638 ((GstClockTime) sink->target_duration * GST_SECOND), NULL); in gst_hls_sink2_set_property()
642 sink->playlist_length = g_value_get_uint (value); in gst_hls_sink2_set_property()
643 sink->playlist->window_size = sink->playlist_length; in gst_hls_sink2_set_property()
646 sink->send_keyframe_requests = g_value_get_boolean (value); in gst_hls_sink2_set_property()
647 if (sink->splitmuxsink) { in gst_hls_sink2_set_property()
648 g_object_set (sink->splitmuxsink, "send-keyframe-requests", in gst_hls_sink2_set_property()
649 sink->send_keyframe_requests, NULL); in gst_hls_sink2_set_property()
662 GstHlsSink2 *sink = GST_HLS_SINK2_CAST (object); in gst_hls_sink2_get_property() local
666 g_value_set_string (value, sink->location); in gst_hls_sink2_get_property()
669 g_value_set_string (value, sink->playlist_location); in gst_hls_sink2_get_property()
672 g_value_set_string (value, sink->playlist_root); in gst_hls_sink2_get_property()
675 g_value_set_uint (value, sink->max_files); in gst_hls_sink2_get_property()
678 g_value_set_uint (value, sink->target_duration); in gst_hls_sink2_get_property()
681 g_value_set_uint (value, sink->playlist_length); in gst_hls_sink2_get_property()
684 g_value_set_boolean (value, sink->send_keyframe_requests); in gst_hls_sink2_get_property()