Пример #1
0
static void
kms_recorder_endpoint_init (KmsRecorderEndpoint * self)
{
  GError *err = NULL;

  self->priv = KMS_RECORDER_ENDPOINT_GET_PRIVATE (self);

  g_mutex_init (&self->priv->base_time_lock);

  self->priv->srcs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
      g_object_unref);

  self->priv->profile = KMS_RECORDING_PROFILE_NONE;

  self->priv->paused_time = G_GUINT64_CONSTANT (0);
  self->priv->paused_start = GST_CLOCK_TIME_NONE;

  self->priv->sink_pad_data = g_hash_table_new_full (g_str_hash, g_str_equal,
      g_free, (GDestroyNotify) sink_pad_data_destroy);

  self->priv->stats.avg_e2e = g_hash_table_new_full (g_str_hash, g_str_equal,
      g_free, (GDestroyNotify) kms_ref_struct_unref);
  self->priv->stats.id = g_strdup ("recorder-id");

  g_cond_init (&self->priv->state_manager.cond);

  self->priv->pool = gst_task_pool_new ();
  gst_task_pool_prepare (self->priv->pool, &err);

  if (G_UNLIKELY (err != NULL)) {
    g_warning ("%s", err->message);
    g_error_free (err);
  }
}
static void
kms_recorder_endpoint_init (KmsRecorderEndpoint * self)
{
  GstBus *bus;

  self->priv = KMS_RECORDER_ENDPOINT_GET_PRIVATE (self);

  self->priv->loop = kms_loop_new ();

  self->priv->paused_time = G_GUINT64_CONSTANT (0);
  self->priv->paused_start = GST_CLOCK_TIME_NONE;

  /* Create internal pipeline */
  self->priv->pipeline = gst_pipeline_new ("recorder-pipeline");
  g_object_set (self->priv->pipeline, "async-handling", TRUE, NULL);
  g_cond_init (&self->priv->state_manager.cond);

  bus = gst_pipeline_get_bus (GST_PIPELINE (self->priv->pipeline));
  gst_bus_set_sync_handler (bus, bus_sync_signal_handler, self, NULL);
  g_object_unref (bus);

  self->priv->controller =
      kms_conf_controller_new (KMS_CONF_CONTROLLER_KMS_ELEMENT, self,
      KMS_CONF_CONTROLLER_PIPELINE, self->priv->pipeline, NULL);
  g_signal_connect (self->priv->controller, "matched-elements",
      G_CALLBACK (matched_elements_cb), self);
  g_signal_connect (self->priv->controller, "sink-required",
      G_CALLBACK (sink_required_cb), self);
  g_signal_connect (self->priv->controller, "sink-unrequired",
      G_CALLBACK (sink_unrequired_cb), self);
}
static void
kms_recorder_endpoint_init (KmsRecorderEndpoint * self)
{
  self->priv = KMS_RECORDER_ENDPOINT_GET_PRIVATE (self);

  g_mutex_init (&self->priv->base_time_lock);

  self->priv->loop = kms_loop_new ();

  self->priv->profile = KMS_RECORDING_PROFILE_NONE;

  self->priv->paused_time = G_GUINT64_CONSTANT (0);
  self->priv->paused_start = GST_CLOCK_TIME_NONE;

  self->priv->video_target = NULL;
  self->priv->audio_target = NULL;

  g_cond_init (&self->priv->state_manager.cond);
}