#ifndef __GST_TRANSCODER_H #define __GST_TRANSCODER_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include "transcoder-prelude.h" #include "transcoder-enumtypes.h" G_BEGIN_DECLS /*********** Error definitions ************/ #define GST_TRANSCODER_ERROR (gst_transcoder_error_quark ()) /** * GstTranscoderError: * @GST_TRANSCODER_ERROR_FAILED: generic error. */ typedef enum { GST_TRANSCODER_ERROR_FAILED = 0 } GstTranscoderError; GST_TRANSCODER_API GQuark gst_transcoder_error_quark (void); GST_TRANSCODER_API const gchar * gst_transcoder_error_get_name (GstTranscoderError error); /*********** State definition ************/ /** * GstTranscoderState: * @GST_TRANSCODER_STATE_STOPPED: the transcoder is stopped. * @GST_TRANSCODER_STATE_PAUSED: the transcoder is paused. * @GST_TRANSCODER_STATE_PLAYING: the transcoder is currently transcoding a * stream. * * High level representation of the transcoder pipeline state. * * Since: 1.20 */ typedef enum { GST_TRANSCODER_STATE_STOPPED, GST_TRANSCODER_STATE_PAUSED, GST_TRANSCODER_STATE_PLAYING } GstTranscoderState; GST_TRANSCODER_API const gchar * gst_transcoder_state_get_name (GstTranscoderState state); /*********** Messages types definitions ************/ /** * GstTranscoderMessage: * @GST_TRANSCODER_MESSAGE_POSITION_UPDATED: Sink position changed * @GST_TRANSCODER_MESSAGE_DURATION_CHANGED: Duration of stream changed * @GST_TRANSCODER_MESSAGE_STATE_CHANGED: Pipeline state changed * @GST_TRANSCODER_MESSAGE_DONE: Transcoding is done * @GST_TRANSCODER_MESSAGE_ERROR: Message contains an error * @GST_TRANSCODER_MESSAGE_WARNING: Message contains an error * * Types of messages that will be posted on the transcoder API bus. * * See also #gst_transcoder_get_message_bus() * * Since: 1.20 */ typedef enum { GST_TRANSCODER_MESSAGE_POSITION_UPDATED, GST_TRANSCODER_MESSAGE_DURATION_CHANGED, GST_TRANSCODER_MESSAGE_STATE_CHANGED, GST_TRANSCODER_MESSAGE_DONE, GST_TRANSCODER_MESSAGE_ERROR, GST_TRANSCODER_MESSAGE_WARNING, } GstTranscoderMessage; GST_TRANSCODER_API gboolean gst_transcoder_is_transcoder_message (GstMessage * msg); GST_TRANSCODER_API const gchar * gst_transcoder_message_get_name (GstTranscoderMessage message); GST_TRANSCODER_API void gst_transcoder_message_parse_position (GstMessage * msg, GstClockTime * position); GST_TRANSCODER_API void gst_transcoder_message_parse_duration (GstMessage * msg, GstClockTime * duration); GST_TRANSCODER_API void gst_transcoder_message_parse_state (GstMessage * msg, GstTranscoderState * state); GST_TRANSCODER_API void gst_transcoder_message_parse_error (GstMessage * msg, GError * error, GstStructure ** details); GST_TRANSCODER_API void gst_transcoder_message_parse_warning (GstMessage * msg, GError * error, GstStructure ** details); /*********** GstTranscoder definition ************/ #define GST_TYPE_TRANSCODER (gst_transcoder_get_type ()) /** * GstTranscoderClass.parent_class: * * Since: 1.20 */ GST_TRANSCODER_API G_DECLARE_FINAL_TYPE (GstTranscoder, gst_transcoder, GST, TRANSCODER, GstObject) GST_TRANSCODER_API GstTranscoder * gst_transcoder_new (const gchar * source_uri, const gchar * dest_uri, const gchar * encoding_profile); GST_TRANSCODER_API GstTranscoder * gst_transcoder_new_full (const gchar * source_uri, const gchar * dest_uri, GstEncodingProfile * profile); GST_TRANSCODER_API gboolean gst_transcoder_run (GstTranscoder * self, GError ** error); GST_TRANSCODER_API GstBus * gst_transcoder_get_message_bus (GstTranscoder * transcoder); GST_TRANSCODER_API void gst_transcoder_set_cpu_usage (GstTranscoder * self, gint cpu_usage); GST_TRANSCODER_API void gst_transcoder_run_async (GstTranscoder * self); GST_TRANSCODER_API void gst_transcoder_set_position_update_interval (GstTranscoder * self, guint interval); GST_TRANSCODER_API gchar * gst_transcoder_get_source_uri (GstTranscoder * self); GST_TRANSCODER_API gchar * gst_transcoder_get_dest_uri (GstTranscoder * self); GST_TRANSCODER_API guint gst_transcoder_get_position_update_interval (GstTranscoder * self); GST_TRANSCODER_API GstClockTime gst_transcoder_get_position (GstTranscoder * self); GST_TRANSCODER_API GstClockTime gst_transcoder_get_duration (GstTranscoder * self); GST_TRANSCODER_API GstElement * gst_transcoder_get_pipeline (GstTranscoder * self); GST_TRANSCODER_API gboolean gst_transcoder_get_avoid_reencoding (GstTranscoder * self); GST_TRANSCODER_API void gst_transcoder_set_avoid_reencoding (GstTranscoder * self, gboolean avoid_reencoding); #include "gsttranscoder-signal-adapter.h" GST_TRANSCODER_API GstTranscoderSignalAdapter* gst_transcoder_get_signal_adapter (GstTranscoder * self, GMainContext *context); GST_TRANSCODER_API GstTranscoderSignalAdapter* gst_transcoder_get_sync_signal_adapter (GstTranscoder * self); G_END_DECLS #endif