static void kms_recorder_endpoint_started (KmsUriEndpoint * obj) { KmsRecorderEndpoint *self = KMS_RECORDER_ENDPOINT (obj); kms_recorder_endpoint_create_parent_directories (self); kms_recorder_endpoint_change_state (self); /* Set internal pipeline to playing */ kms_base_media_muxer_set_state (self->priv->mux, GST_STATE_PLAYING); BASE_TIME_LOCK (self); if (GST_CLOCK_TIME_IS_VALID (self->priv->paused_start)) { self->priv->paused_time += gst_clock_get_time (kms_base_media_muxer_get_clock (self->priv->mux)) - self->priv->paused_start; self->priv->paused_start = GST_CLOCK_TIME_NONE; } BASE_TIME_UNLOCK (self); kms_recorder_generate_pads (self); kms_recorder_endpoint_state_changed (self, KMS_URI_ENDPOINT_STATE_START); }
static void kms_recorder_endpoint_paused (KmsUriEndpoint * obj) { KmsRecorderEndpoint *self = KMS_RECORDER_ENDPOINT (obj); GstClock *clk; kms_recorder_endpoint_change_state (self, KMS_URI_ENDPOINT_STATE_PAUSE); kms_recorder_endpoint_remove_pads (self); KMS_ELEMENT_UNLOCK (self); /* Set internal pipeline to GST_STATE_PAUSED */ kms_base_media_muxer_set_state (self->priv->mux, GST_STATE_PAUSED); KMS_ELEMENT_LOCK (self); clk = kms_base_media_muxer_get_clock (self->priv->mux); if (clk) { self->priv->paused_start = gst_clock_get_time (clk); } kms_recorder_endpoint_state_changed (self, KMS_URI_ENDPOINT_STATE_PAUSE); }