コード例 #1
0
static void
kms_recorder_end_point_init (KmsRecorderEndPoint * self)
{
  GstBus *bus;

  self->priv = KMS_RECORDER_END_POINT_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);
}
コード例 #2
0
static void
kms_composite_mixer_init (KmsCompositeMixer * self)
{
  self->priv = KMS_COMPOSITE_MIXER_GET_PRIVATE (self);

  g_rec_mutex_init (&self->priv->mutex);

  self->priv->ports = g_hash_table_new_full (g_int_hash, g_int_equal,
      release_gint, kms_composite_mixer_port_data_destroy);
  //TODO:Obtain the dimensions of the bigger input stream
  self->priv->output_height = 600;
  self->priv->output_width = 800;
  self->priv->n_elems = 0;

  self->priv->loop = kms_loop_new ();
}
コード例 #3
0
static void
kms_alpha_blending_init (KmsAlphaBlending * self)
{
  self->priv = KMS_ALPHA_BLENDING_GET_PRIVATE (self);

  g_rec_mutex_init (&self->priv->mutex);

  self->priv->ports = g_hash_table_new_full (g_direct_hash, g_direct_equal,
      NULL, (GDestroyNotify) kms_alpha_blending_port_data_destroy);
  self->priv->n_elems = 0;
  self->priv->master_port = 0;
  self->priv->z_master = 5;
  self->priv->output_height = 480;
  self->priv->output_width = 640;

  self->priv->loop = kms_loop_new ();
}
コード例 #4
0
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);
}
コード例 #5
0
static void
kms_player_end_point_init (KmsPlayerEndPoint * self)
{
  GstBus *bus;

  self->priv = KMS_PLAYER_END_POINT_GET_PRIVATE (self);

  self->priv->loop = kms_loop_new ();
  self->priv->pipeline = gst_pipeline_new ("pipeline");
  self->priv->uridecodebin =
      gst_element_factory_make ("uridecodebin", URIDECODEBIN);

  gst_bin_add (GST_BIN (self->priv->pipeline), self->priv->uridecodebin);

  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);

  /* Connect to signals */
  g_signal_connect (self->priv->uridecodebin, "pad-added",
      G_CALLBACK (pad_added), self);
  g_signal_connect (self->priv->uridecodebin, "pad-removed",
      G_CALLBACK (pad_removed), self);
}