summaryrefslogtreecommitdiff
path: root/gst-libs/gst/transcoder/gsttranscoder.h
blob: dcd22860d76dcd133ac8e29142a2e623f4afafcc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#ifndef __GST_TRANSCODER_H
#define __GST_TRANSCODER_H

#ifdef HAVE_CONFIG_H
#  include "config.h"
#endif

#include <gst/gst.h>
#include <gst/pbutils/pbutils.h>
#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);

/*********** Messages types definitions ************/

/**
 * GstTranscoderMessage:
 * @GST_TRANSCODER_MESSAGE_POSITION_UPDATED: Sink position changed
 * @GST_TRANSCODER_MESSAGE_DURATION_CHANGED: Duration of stream 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_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_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"

G_END_DECLS

#endif