mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-12 19:14:16 +00:00
Port to hotdoc
This commit is contained in:
parent
781ad55f68
commit
a0c65067e0
54 changed files with 5149 additions and 3409 deletions
763
docs/gst-hotdoc-plugins-scanner.c
Normal file
763
docs/gst-hotdoc-plugins-scanner.c
Normal file
|
@ -0,0 +1,763 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <locale.h>
|
||||
#include <glib/gprintf.h>
|
||||
#include <gst/gst.h>
|
||||
#include "gst/gst-i18n-app.h"
|
||||
|
||||
static GRegex *cleanup_caps_field = NULL;
|
||||
|
||||
static gboolean
|
||||
has_sometimes_template (GstElement * element)
|
||||
{
|
||||
GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);
|
||||
GList *l;
|
||||
|
||||
for (l = klass->padtemplates; l != NULL; l = l->next) {
|
||||
if (GST_PAD_TEMPLATE (l->data)->presence == GST_PAD_SOMETIMES)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gchar *
|
||||
json_strescape (const gchar * str)
|
||||
{
|
||||
const gchar *p;
|
||||
const gchar *end;
|
||||
GString *output;
|
||||
gsize len;
|
||||
|
||||
if (!str)
|
||||
return g_strdup ("NULL");
|
||||
|
||||
len = strlen (str);
|
||||
end = str + len;
|
||||
output = g_string_sized_new (len);
|
||||
|
||||
for (p = str; p < end; p++) {
|
||||
if (*p == '\\' || *p == '"') {
|
||||
g_string_append_c (output, '\\');
|
||||
g_string_append_c (output, *p);
|
||||
} else if (*p == '%') {
|
||||
g_string_append_c (output, '%');
|
||||
g_string_append_c (output, *p);
|
||||
} else if ((*p > 0 && *p < 0x1f) || *p == 0x7f) {
|
||||
switch (*p) {
|
||||
case '\b':
|
||||
g_string_append (output, "\\b");
|
||||
break;
|
||||
case '\f':
|
||||
g_string_append (output, "\\f");
|
||||
break;
|
||||
case '\n':
|
||||
g_string_append (output, "\\n");
|
||||
break;
|
||||
case '\r':
|
||||
g_string_append (output, "\\r");
|
||||
break;
|
||||
case '\t':
|
||||
g_string_append (output, "\\t");
|
||||
break;
|
||||
default:
|
||||
g_string_append_printf (output, "\\u00%02x", (guint) * p);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
g_string_append_c (output, *p);
|
||||
}
|
||||
}
|
||||
|
||||
return g_string_free (output, FALSE);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
flags_to_string (GFlagsValue * values, guint flags)
|
||||
{
|
||||
GString *s = NULL;
|
||||
guint flags_left, i;
|
||||
|
||||
/* first look for an exact match and count the number of values */
|
||||
for (i = 0; values[i].value_name != NULL; ++i) {
|
||||
if (values[i].value == flags)
|
||||
return g_strdup (values[i].value_nick);
|
||||
}
|
||||
|
||||
s = g_string_new (NULL);
|
||||
|
||||
/* we assume the values are sorted from lowest to highest value */
|
||||
flags_left = flags;
|
||||
while (i > 0) {
|
||||
--i;
|
||||
if (values[i].value != 0
|
||||
&& (flags_left & values[i].value) == values[i].value) {
|
||||
if (s->len > 0)
|
||||
g_string_append_c (s, '+');
|
||||
g_string_append (s, values[i].value_nick);
|
||||
flags_left -= values[i].value;
|
||||
if (flags_left == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (s->len == 0)
|
||||
g_string_assign (s, "(none)");
|
||||
|
||||
return g_string_free (s, FALSE);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_serialize_flags (GString * json, const gchar * key_name, GType gtype,
|
||||
GValue * value)
|
||||
{
|
||||
GFlagsValue *values = G_FLAGS_CLASS (g_type_class_ref (gtype))->values;
|
||||
|
||||
if (value) {
|
||||
gchar *cur;
|
||||
|
||||
cur = flags_to_string (values, g_value_get_flags (value));
|
||||
g_string_append_printf (json, ",\"default\": \"%s\",", cur);
|
||||
g_free (cur);
|
||||
}
|
||||
|
||||
g_string_append_printf (json, "\"%s\": [", key_name);
|
||||
|
||||
while (values[0].value_name) {
|
||||
gchar *value_name = json_strescape (values[0].value_name);
|
||||
g_string_append_printf (json, "{\"name\": \"%s\","
|
||||
"\"value\": \"0x%08x\","
|
||||
"\"desc\": \"%s\"}", values[0].value_nick, values[0].value, value_name);
|
||||
++values;
|
||||
|
||||
if (values[0].value_name)
|
||||
g_string_append_c (json, ',');
|
||||
}
|
||||
g_string_append_c (json, ']');
|
||||
}
|
||||
|
||||
static void
|
||||
_serialize_enum (GString * json, const gchar * key_name, GType gtype,
|
||||
GValue * value)
|
||||
{
|
||||
GEnumValue *values;
|
||||
guint j = 0;
|
||||
gint enum_value;
|
||||
const gchar *value_nick = "";
|
||||
|
||||
values = G_ENUM_CLASS (g_type_class_ref (gtype))->values;
|
||||
|
||||
if (value) {
|
||||
enum_value = g_value_get_enum (value);
|
||||
while (values[j].value_name) {
|
||||
if (values[j].value == enum_value)
|
||||
value_nick = values[j].value_nick;
|
||||
j++;
|
||||
}
|
||||
g_string_append_printf (json, ",\"default\": \"%s (%d)\","
|
||||
"\"enum\": true,", value_nick, enum_value);;
|
||||
}
|
||||
|
||||
g_string_append_printf (json, "\"%s\": [", key_name);
|
||||
|
||||
j = 0;
|
||||
while (values[j].value_name) {
|
||||
gchar *value_name = json_strescape (values[j].value_name);
|
||||
|
||||
g_string_append_printf (json, "{\"name\": \"%s\","
|
||||
"\"value\": \"%d\","
|
||||
"\"desc\": \"%s\"}", values[j].value_nick, values[j].value, value_name);
|
||||
j++;
|
||||
if (values[j].value_name)
|
||||
g_string_append_c (json, ',');
|
||||
}
|
||||
|
||||
g_string_append_c (json, ']');
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_add_element_signals (GString * json, GstElement * element)
|
||||
{
|
||||
gboolean opened = FALSE;
|
||||
guint *signals;
|
||||
guint nsignals;
|
||||
gint i = 0, j, k;
|
||||
GSignalQuery *query = NULL;
|
||||
GType type;
|
||||
GSList *found_signals, *l;
|
||||
|
||||
for (k = 0; k < 2; k++) {
|
||||
found_signals = NULL;
|
||||
|
||||
/* For elements that have sometimes pads, also list a few useful GstElement
|
||||
* signals. Put these first, so element-specific ones come later. */
|
||||
if (k == 0 && has_sometimes_template (element)) {
|
||||
query = g_new0 (GSignalQuery, 1);
|
||||
g_signal_query (g_signal_lookup ("pad-added", GST_TYPE_ELEMENT), query);
|
||||
found_signals = g_slist_append (found_signals, query);
|
||||
query = g_new0 (GSignalQuery, 1);
|
||||
g_signal_query (g_signal_lookup ("pad-removed", GST_TYPE_ELEMENT), query);
|
||||
found_signals = g_slist_append (found_signals, query);
|
||||
query = g_new0 (GSignalQuery, 1);
|
||||
g_signal_query (g_signal_lookup ("no-more-pads", GST_TYPE_ELEMENT),
|
||||
query);
|
||||
found_signals = g_slist_append (found_signals, query);
|
||||
}
|
||||
|
||||
for (type = G_OBJECT_TYPE (element); type; type = g_type_parent (type)) {
|
||||
if (type == GST_TYPE_ELEMENT || type == GST_TYPE_OBJECT)
|
||||
break;
|
||||
|
||||
if (type == GST_TYPE_BIN && G_OBJECT_TYPE (element) != GST_TYPE_BIN)
|
||||
continue;
|
||||
|
||||
signals = g_signal_list_ids (type, &nsignals);
|
||||
for (i = 0; i < nsignals; i++) {
|
||||
query = g_new0 (GSignalQuery, 1);
|
||||
g_signal_query (signals[i], query);
|
||||
|
||||
if ((k == 0 && !(query->signal_flags & G_SIGNAL_ACTION)) ||
|
||||
(k == 1 && (query->signal_flags & G_SIGNAL_ACTION)))
|
||||
found_signals = g_slist_append (found_signals, query);
|
||||
else
|
||||
g_free (query);
|
||||
}
|
||||
g_free (signals);
|
||||
signals = NULL;
|
||||
}
|
||||
|
||||
if (!found_signals)
|
||||
continue;
|
||||
|
||||
for (l = found_signals; l; l = l->next) {
|
||||
query = (GSignalQuery *) l->data;
|
||||
|
||||
g_string_append_printf (json,
|
||||
"%s\"%s\" : {"
|
||||
"\"retval\": \"%s\","
|
||||
"\"args\": [",
|
||||
opened ? "," : ",\"signals\": {",
|
||||
query->signal_name, g_type_name (query->return_type));
|
||||
|
||||
opened = TRUE;
|
||||
for (j = 0; j < query->n_params; j++) {
|
||||
g_string_append_printf (json, "%s\"%s\"",
|
||||
j ? "," : "", g_type_name (query->param_types[j]));
|
||||
}
|
||||
g_string_append_c (json, ']');
|
||||
|
||||
if (g_type_is_a (query->return_type, G_TYPE_ENUM)) {
|
||||
g_string_append_c (json, ',');
|
||||
_serialize_enum (json, "return-values", query->return_type, NULL);
|
||||
} else if (g_type_is_a (query->return_type, G_TYPE_FLAGS)) {
|
||||
g_string_append_c (json, ',');
|
||||
_serialize_flags (json, "return-values", query->return_type, NULL);
|
||||
}
|
||||
|
||||
g_string_append_c (json, '}');
|
||||
}
|
||||
|
||||
g_slist_foreach (found_signals, (GFunc) g_free, NULL);
|
||||
g_slist_free (found_signals);
|
||||
opened = TRUE;
|
||||
}
|
||||
|
||||
if (opened)
|
||||
g_string_append (json, "}");
|
||||
}
|
||||
|
||||
static void
|
||||
_add_element_properties (GString * json, GstElement * element)
|
||||
{
|
||||
gchar *tmpstr;
|
||||
guint i, n_props;
|
||||
gboolean opened = FALSE;
|
||||
GParamSpec **specs, *spec;
|
||||
GObjectClass *klass = G_OBJECT_GET_CLASS (element);
|
||||
|
||||
specs = g_object_class_list_properties (klass, &n_props);
|
||||
|
||||
for (i = 0; i < n_props; i++) {
|
||||
GValue value = { 0, };
|
||||
spec = specs[i];
|
||||
|
||||
g_value_init (&value, spec->value_type);
|
||||
if (element && ! !(spec->flags & G_PARAM_READABLE) &&
|
||||
!(spec->flags & GST_PARAM_DOC_SHOW_DEFAULT)) {
|
||||
g_object_get_property (G_OBJECT (element), spec->name, &value);
|
||||
} else {
|
||||
/* if we can't read the property value, assume it's set to the default
|
||||
* (which might not be entirely true for sub-classes, but that's an
|
||||
* unlikely corner-case anyway) */
|
||||
g_param_value_set_default (spec, &value);
|
||||
}
|
||||
|
||||
if (!opened)
|
||||
g_string_append (json, ",\"properties\": {");
|
||||
|
||||
tmpstr = json_strescape (g_param_spec_get_blurb (spec));
|
||||
g_string_append_printf (json,
|
||||
"%s"
|
||||
"\"%s\": {"
|
||||
"\"construct-only\": %s,"
|
||||
"\"construct\": %s,"
|
||||
"\"writable\": %s,"
|
||||
"\"blurb\": \"%s\","
|
||||
"\"type-name\": \"%s\"",
|
||||
opened ? "," : "",
|
||||
spec->name,
|
||||
spec->flags & G_PARAM_CONSTRUCT_ONLY ? "true" : "false",
|
||||
spec->flags & G_PARAM_CONSTRUCT ? "true" : "false",
|
||||
spec->flags & G_PARAM_WRITABLE ? "true" : "false",
|
||||
tmpstr, g_type_name (G_PARAM_SPEC_VALUE_TYPE (spec)));
|
||||
g_free (tmpstr);
|
||||
|
||||
switch (G_VALUE_TYPE (&value)) {
|
||||
case G_TYPE_STRING:
|
||||
{
|
||||
const char *string_val = g_value_get_string (&value);
|
||||
gchar *tmpstr = json_strescape (string_val);
|
||||
|
||||
g_string_append_printf (json, ",\"default\": \"%s\"", tmpstr);;
|
||||
g_free (tmpstr);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_BOOLEAN:
|
||||
{
|
||||
gboolean bool_val = g_value_get_boolean (&value);
|
||||
|
||||
g_string_append_printf (json, ",\"default\": \"%s\"",
|
||||
bool_val ? "true" : "false");
|
||||
break;
|
||||
}
|
||||
case G_TYPE_ULONG:
|
||||
{
|
||||
GParamSpecULong *pulong = G_PARAM_SPEC_ULONG (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%lu\""
|
||||
",\"min\": \"%lu\""
|
||||
",\"max\": \"%lu\"",
|
||||
g_value_get_ulong (&value), pulong->minimum, pulong->maximum);
|
||||
|
||||
GST_ERROR ("%s: property '%s' of type ulong: consider changing to "
|
||||
"uint/uint64", GST_OBJECT_NAME (element),
|
||||
g_param_spec_get_name (spec));
|
||||
break;
|
||||
}
|
||||
case G_TYPE_LONG:
|
||||
{
|
||||
GParamSpecLong *plong = G_PARAM_SPEC_LONG (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%ld\""
|
||||
",\"min\": \"%ld\""
|
||||
",\"max\": \"%ld\"",
|
||||
g_value_get_long (&value), plong->minimum, plong->maximum);
|
||||
|
||||
GST_ERROR ("%s: property '%s' of type long: consider changing to "
|
||||
"int/int64", GST_OBJECT_NAME (element),
|
||||
g_param_spec_get_name (spec));
|
||||
break;
|
||||
}
|
||||
case G_TYPE_UINT:
|
||||
{
|
||||
GParamSpecUInt *puint = G_PARAM_SPEC_UINT (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%d\""
|
||||
",\"min\": \"%d\""
|
||||
",\"max\": \"%d\"",
|
||||
g_value_get_uint (&value), puint->minimum, puint->maximum);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_INT:
|
||||
{
|
||||
GParamSpecInt *pint = G_PARAM_SPEC_INT (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%d\""
|
||||
",\"min\": \"%d\""
|
||||
",\"max\": \"%d\"",
|
||||
g_value_get_int (&value), pint->minimum, pint->maximum);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_UINT64:
|
||||
{
|
||||
GParamSpecUInt64 *puint64 = G_PARAM_SPEC_UINT64 (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%" G_GUINT64_FORMAT
|
||||
"\",\"min\": \"%" G_GUINT64_FORMAT
|
||||
"\",\"max\": \"%" G_GUINT64_FORMAT "\"",
|
||||
g_value_get_uint64 (&value), puint64->minimum, puint64->maximum);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_INT64:
|
||||
{
|
||||
GParamSpecInt64 *pint64 = G_PARAM_SPEC_INT64 (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%" G_GUINT64_FORMAT
|
||||
"\",\"min\": \"%" G_GINT64_FORMAT
|
||||
"\",\"max\": \"%" G_GINT64_FORMAT "\"",
|
||||
g_value_get_int64 (&value), pint64->minimum, pint64->maximum);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_FLOAT:
|
||||
{
|
||||
GParamSpecFloat *pfloat = G_PARAM_SPEC_FLOAT (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%g\""
|
||||
",\"min\": \"%g\""
|
||||
",\"max\": \"%g\"",
|
||||
g_value_get_float (&value), pfloat->minimum, pfloat->maximum);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_DOUBLE:
|
||||
{
|
||||
GParamSpecDouble *pdouble = G_PARAM_SPEC_DOUBLE (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%g\""
|
||||
",\"min\": \"%g\""
|
||||
",\"max\": \"%g\"",
|
||||
g_value_get_double (&value), pdouble->minimum, pdouble->maximum);
|
||||
break;
|
||||
}
|
||||
case G_TYPE_CHAR:
|
||||
case G_TYPE_UCHAR:
|
||||
GST_ERROR ("%s: property '%s' of type char: consider changing to "
|
||||
"int/string", GST_OBJECT_NAME (element),
|
||||
g_param_spec_get_name (spec));
|
||||
/* fall through */
|
||||
default:
|
||||
if (spec->value_type == GST_TYPE_CAPS) {
|
||||
const GstCaps *caps = gst_value_get_caps (&value);
|
||||
|
||||
if (caps) {
|
||||
gchar *capsstr = gst_caps_to_string (caps);
|
||||
gchar *tmpcapsstr = json_strescape (capsstr);
|
||||
|
||||
g_string_append_printf (json, ",\"default\": \"%s\"", tmpcapsstr);
|
||||
g_free (capsstr);
|
||||
g_free (tmpcapsstr);
|
||||
}
|
||||
} else if (G_IS_PARAM_SPEC_ENUM (spec)) {
|
||||
_serialize_enum (json, "values", spec->value_type, &value);
|
||||
} else if (G_IS_PARAM_SPEC_FLAGS (spec)) {
|
||||
_serialize_flags (json, "values", spec->value_type, &value);
|
||||
} else if (G_IS_PARAM_SPEC_BOXED (spec)) {
|
||||
if (spec->value_type == GST_TYPE_STRUCTURE) {
|
||||
const GstStructure *s = gst_value_get_structure (&value);
|
||||
if (s) {
|
||||
gchar *str = gst_structure_to_string (s);
|
||||
gchar *tmpstr = json_strescape (str);
|
||||
|
||||
g_string_append_printf (json, ",\"default\": \"%s\"", tmpstr);
|
||||
g_free (str);
|
||||
g_free (tmpstr);
|
||||
}
|
||||
}
|
||||
} else if (GST_IS_PARAM_SPEC_FRACTION (spec)) {
|
||||
GstParamSpecFraction *pfraction = GST_PARAM_SPEC_FRACTION (spec);
|
||||
|
||||
g_string_append_printf (json,
|
||||
",\"default\": \"%d/%d\""
|
||||
",\"min\": \"%d/%d\""
|
||||
",\"max\": \"%d/%d\"",
|
||||
gst_value_get_fraction_numerator (&value),
|
||||
gst_value_get_fraction_denominator (&value),
|
||||
pfraction->min_num, pfraction->min_den,
|
||||
pfraction->max_num, pfraction->max_den);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
g_string_append_c (json, '}');
|
||||
|
||||
|
||||
opened = TRUE;
|
||||
}
|
||||
|
||||
if (opened)
|
||||
g_string_append (json, "}");
|
||||
|
||||
}
|
||||
|
||||
static gboolean
|
||||
print_field (GQuark field, const GValue * value, GString * jcaps)
|
||||
{
|
||||
gchar *tmp, *str = gst_value_serialize (value);
|
||||
|
||||
if (!g_strcmp0 (g_quark_to_string (field), "format") ||
|
||||
!g_strcmp0 (g_quark_to_string (field), "rate")) {
|
||||
if (!cleanup_caps_field)
|
||||
cleanup_caps_field = g_regex_new ("\\(string\\)|\\(rate\\)", 0, 0, NULL);
|
||||
|
||||
tmp = str;
|
||||
str = g_regex_replace (cleanup_caps_field, str, -1, 0, "", 0, NULL);;
|
||||
g_free (tmp);
|
||||
}
|
||||
|
||||
g_string_append_printf (jcaps, "%15s: %s\n", g_quark_to_string (field), str);
|
||||
g_free (str);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gchar *
|
||||
_build_caps (const GstCaps * caps)
|
||||
{
|
||||
guint i;
|
||||
gchar *res;
|
||||
GString *jcaps = g_string_new (NULL);
|
||||
|
||||
if (gst_caps_is_any (caps)) {
|
||||
g_string_append (jcaps, "ANY");
|
||||
return g_string_free (jcaps, FALSE);
|
||||
}
|
||||
|
||||
if (gst_caps_is_empty (caps)) {
|
||||
g_string_append (jcaps, "EMPTY");
|
||||
return g_string_free (jcaps, FALSE);
|
||||
}
|
||||
|
||||
for (i = 0; i < gst_caps_get_size (caps); i++) {
|
||||
GstStructure *structure = gst_caps_get_structure (caps, i);
|
||||
GstCapsFeatures *features = gst_caps_get_features (caps, i);
|
||||
|
||||
if (features && (gst_caps_features_is_any (features) ||
|
||||
!gst_caps_features_is_equal (features,
|
||||
GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY))) {
|
||||
gchar *features_string = gst_caps_features_to_string (features);
|
||||
|
||||
g_string_append_printf (jcaps, "%s%s(%s):\n",
|
||||
i ? "\n" : "", gst_structure_get_name (structure), features_string);
|
||||
g_free (features_string);
|
||||
} else {
|
||||
g_string_append_printf (jcaps, "%s:\n",
|
||||
gst_structure_get_name (structure));
|
||||
}
|
||||
gst_structure_foreach (structure, (GstStructureForeachFunc) print_field,
|
||||
jcaps);
|
||||
}
|
||||
|
||||
res = json_strescape (jcaps->str);
|
||||
g_string_free (jcaps, TRUE);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static void
|
||||
_add_element_pad_templates (GString * json, GstElementFactory * factory)
|
||||
{
|
||||
gboolean opened = FALSE;
|
||||
const GList *pads;
|
||||
GstStaticPadTemplate *padtemplate;
|
||||
GRegex *re = g_regex_new ("%", 0, 0, NULL);
|
||||
|
||||
pads = gst_element_factory_get_static_pad_templates (factory);
|
||||
while (pads) {
|
||||
gchar *name, *caps;
|
||||
padtemplate = (GstStaticPadTemplate *) (pads->data);
|
||||
pads = g_list_next (pads);
|
||||
|
||||
name = g_regex_replace (re, padtemplate->name_template,
|
||||
-1, 0, "%%", 0, NULL);;
|
||||
caps = _build_caps (gst_static_caps_get (&padtemplate->static_caps));
|
||||
g_string_append_printf (json, "%s"
|
||||
"\"%s\": {"
|
||||
"\"caps\": \"%s\","
|
||||
"\"direction\": \"%s\","
|
||||
"\"presence\": \"%s\"}",
|
||||
opened ? "," : ",\"pad-templates\": {",
|
||||
name, caps,
|
||||
padtemplate->direction ==
|
||||
GST_PAD_SRC ? "src" : padtemplate->direction ==
|
||||
GST_PAD_SINK ? "sink" : "unknown",
|
||||
padtemplate->presence ==
|
||||
GST_PAD_ALWAYS ? "always" : padtemplate->presence ==
|
||||
GST_PAD_SOMETIMES ? "sometimes" : padtemplate->presence ==
|
||||
GST_PAD_REQUEST ? "request" : "unknown");
|
||||
opened = TRUE;
|
||||
g_free (name);
|
||||
}
|
||||
if (opened)
|
||||
g_string_append (json, "}");
|
||||
|
||||
g_regex_unref (re);
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_rank_name (char *s, gint rank)
|
||||
{
|
||||
static const int ranks[4] = {
|
||||
GST_RANK_NONE, GST_RANK_MARGINAL, GST_RANK_SECONDARY, GST_RANK_PRIMARY
|
||||
};
|
||||
static const char *rank_names[4] = { "none", "marginal", "secondary",
|
||||
"primary"
|
||||
};
|
||||
int i;
|
||||
int best_i;
|
||||
|
||||
best_i = 0;
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (rank == ranks[i])
|
||||
return rank_names[i];
|
||||
if (abs (rank - ranks[i]) < abs (rank - ranks[best_i])) {
|
||||
best_i = i;
|
||||
}
|
||||
}
|
||||
|
||||
sprintf (s, "%s %c %d", rank_names[best_i],
|
||||
(rank - ranks[best_i] > 0) ? '+' : '-', abs (ranks[best_i] - rank));
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
static void
|
||||
_add_factory_details (GString * json, GstElementFactory * factory)
|
||||
{
|
||||
gchar **keys, **k;
|
||||
gboolean f = TRUE;
|
||||
|
||||
keys = gst_element_factory_get_metadata_keys (factory);
|
||||
if (keys != NULL) {
|
||||
for (k = keys; *k != NULL; ++k) {
|
||||
gchar *val;
|
||||
gchar *key = *k;
|
||||
|
||||
val = json_strescape (gst_element_factory_get_metadata (factory, key));
|
||||
g_string_append_printf (json, "%s\"%s\": \"%s\"", f ? "" : ",", key, val);
|
||||
f = FALSE;
|
||||
g_free (val);
|
||||
}
|
||||
g_strfreev (keys);
|
||||
g_string_append (json, ",");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_add_element_details (GString * json, GstPluginFeature * feature)
|
||||
{
|
||||
GType type;
|
||||
GstElement *element =
|
||||
gst_element_factory_create (GST_ELEMENT_FACTORY (feature), NULL);
|
||||
char s[20];
|
||||
|
||||
g_assert (element);
|
||||
|
||||
g_string_append_printf (json,
|
||||
"\"%s\": {"
|
||||
"\"rank\":\"%s\",",
|
||||
GST_OBJECT_NAME (feature),
|
||||
get_rank_name (s, gst_plugin_feature_get_rank (feature)));
|
||||
|
||||
_add_factory_details (json, GST_ELEMENT_FACTORY (feature));
|
||||
|
||||
g_string_append (json, "\"hierarchy\": [");
|
||||
|
||||
for (type = G_OBJECT_TYPE (element);; type = g_type_parent (type)) {
|
||||
g_string_append_printf (json, "\"%s\"%c", g_type_name (type),
|
||||
type == G_TYPE_OBJECT ? ' ' : ',');
|
||||
|
||||
if (type == G_TYPE_OBJECT)
|
||||
break;
|
||||
}
|
||||
g_string_append (json, "]");
|
||||
_add_element_properties (json, element);
|
||||
_add_element_signals (json, element);
|
||||
_add_element_pad_templates (json, GST_ELEMENT_FACTORY (feature));
|
||||
|
||||
g_string_append (json, "}");
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
gchar *libfile;
|
||||
GError *error = NULL;
|
||||
GString *json;
|
||||
GstPlugin *plugin;
|
||||
gboolean f = TRUE;
|
||||
GList *features, *tmp;
|
||||
gint i;
|
||||
gboolean first = TRUE;
|
||||
|
||||
g_assert (argc >= 2);
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
setlocale (LC_NUMERIC, "C");
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
#endif
|
||||
|
||||
g_setenv ("GST_REGISTRY_FORK", "no", TRUE);
|
||||
gst_init (NULL, NULL);
|
||||
|
||||
json = g_string_new ("{");
|
||||
for (i = 1; i < argc; i++) {
|
||||
gchar *basename;
|
||||
libfile = argv[i];
|
||||
plugin = gst_plugin_load_file (libfile, &error);
|
||||
if (!plugin) {
|
||||
g_printerr ("%s could not be loaded as a GstPlugin: %s", libfile,
|
||||
error->message ? error->message : "no known reasons");
|
||||
g_clear_error (&error);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
basename = g_filename_display_basename (libfile);
|
||||
g_string_append_printf (json,
|
||||
"%s\"%s\": {"
|
||||
"\"description\":\"%s\","
|
||||
"\"filename\":\"%s\","
|
||||
"\"source\":\"%s\","
|
||||
"\"package\":\"%s\","
|
||||
"\"license\":\"%s\","
|
||||
"\"url\":\"%s\","
|
||||
"\"elements\":{",
|
||||
first ? "" : ",",
|
||||
gst_plugin_get_name (plugin),
|
||||
gst_plugin_get_description (plugin),
|
||||
basename,
|
||||
gst_plugin_get_source (plugin),
|
||||
gst_plugin_get_package (plugin),
|
||||
gst_plugin_get_license (plugin), gst_plugin_get_origin (plugin));
|
||||
g_free (basename);
|
||||
first = FALSE;
|
||||
|
||||
features =
|
||||
gst_registry_get_feature_list_by_plugin (gst_registry_get (),
|
||||
gst_plugin_get_name (plugin));
|
||||
|
||||
f = TRUE;
|
||||
for (tmp = features; tmp; tmp = tmp->next) {
|
||||
GstPluginFeature *feature = tmp->data;
|
||||
if (GST_IS_ELEMENT_FACTORY (feature)) {
|
||||
|
||||
if (!f)
|
||||
g_string_append_printf (json, ",");
|
||||
f = FALSE;
|
||||
_add_element_details (json, feature);
|
||||
}
|
||||
}
|
||||
g_string_append (json, "}}");
|
||||
}
|
||||
|
||||
g_string_append_c (json, '}');
|
||||
g_print ("%s", json->str);
|
||||
|
||||
return 0;
|
||||
}
|
103
docs/gst-plugins-doc-cache-generator.py
Executable file
103
docs/gst-plugins-doc-cache-generator.py
Executable file
|
@ -0,0 +1,103 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright © 2018 Thibault Saunier <tsaunier@igalia.com>
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation; either version 2.1 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
from collections import OrderedDict
|
||||
try:
|
||||
from collections.abc import Mapping
|
||||
except ImportError: # python <3.3
|
||||
from collections import Mapping
|
||||
|
||||
|
||||
# Marks values in the json file as "unstable" so that they are
|
||||
# not updated automatically, this aims at making the cache file
|
||||
# stable and handle corner cases were we can't automatically
|
||||
# make it happen. For properties, the best way is to use th
|
||||
# GST_PARAM_DOC_SHOW_DEFAULT flag.
|
||||
UNSTABLE_VALUE = "unstable-values"
|
||||
|
||||
|
||||
def dict_recursive_update(d, u):
|
||||
unstable_values = d.get(UNSTABLE_VALUE, [])
|
||||
if not isinstance(unstable_values, list):
|
||||
unstable_values = [unstable_values]
|
||||
for k, v in u.items():
|
||||
if isinstance(v, Mapping):
|
||||
r = dict_recursive_update(d.get(k, {}), v)
|
||||
d[k] = r
|
||||
elif k not in unstable_values:
|
||||
d[k] = u[k]
|
||||
return d
|
||||
|
||||
|
||||
def test_unstable_values():
|
||||
current_cache = { "v1": "yes", "unstable-values": "v1"}
|
||||
new_cache = { "v1": "no" }
|
||||
|
||||
assert(dict_recursive_update(current_cache, new_cache) == current_cache)
|
||||
|
||||
new_cache = { "v1": "no", "unstable-values": "v2" }
|
||||
assert(dict_recursive_update(current_cache, new_cache) == new_cache)
|
||||
|
||||
current_cache = { "v1": "yes", "v2": "yay", "unstable-values": "v1",}
|
||||
new_cache = { "v1": "no" }
|
||||
assert(dict_recursive_update(current_cache, new_cache) == current_cache)
|
||||
|
||||
current_cache = { "v1": "yes", "v2": "yay", "unstable-values": "v2"}
|
||||
new_cache = { "v1": "no", "v2": "unstable" }
|
||||
assert(dict_recursive_update(current_cache, new_cache) == { "v1": "no", "v2": "yay", "unstable-values": "v2" })
|
||||
|
||||
if __name__ == "__main__":
|
||||
cache_filename = sys.argv[1]
|
||||
output_filename = sys.argv[2]
|
||||
|
||||
subenv = os.environ.copy()
|
||||
cache = {}
|
||||
try:
|
||||
with open(cache_filename) as f:
|
||||
cache = json.load(f)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
cmd = [os.path.join(os.path.dirname(os.path.realpath(__file__)), 'gst-hotdoc-plugins-scanner')]
|
||||
gst_plugins_paths = []
|
||||
for plugin_path in sys.argv[3:]:
|
||||
cmd.append(plugin_path)
|
||||
gst_plugins_paths.append(os.path.dirname(plugin_path))
|
||||
|
||||
if subenv.get('GST_REGISTRY_UPDATE') != 'no' and len(cmd) >= 2:
|
||||
data = subprocess.check_output(cmd, env=subenv)
|
||||
try:
|
||||
plugins = json.loads(data.decode(), object_pairs_hook=OrderedDict)
|
||||
except json.decoder.JSONDecodeError:
|
||||
print("Could not decode:\n%s" % data.decode(), file=sys.stderr)
|
||||
raise
|
||||
|
||||
new_cache = dict_recursive_update(cache, plugins)
|
||||
|
||||
with open(output_filename, 'w') as f:
|
||||
json.dump(cache, f, indent=4, sort_keys=True)
|
||||
|
||||
if new_cache != cache:
|
||||
with open(cache_filename, 'w') as f:
|
||||
json.dump(cache, f, indent=4, sort_keys=True)
|
44
docs/gst/building.md
Normal file
44
docs/gst/building.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
title: Building GStreamer and GStreamer Applications
|
||||
short-description: How to build the GStreamer framework and applications using it.
|
||||
...
|
||||
|
||||
# Building GStreamer on UNIX
|
||||
|
||||
On UNIX, GStreamer uses the standard GNU build system, using autoconf
|
||||
for package configuration and resolving portability issues, automake for
|
||||
building makefiles that comply with the GNU Coding Standards, and
|
||||
libtool for building shared libraries on multiple platforms. The normal
|
||||
sequence for compiling and installing the GStreamer library is thus:
|
||||
`./configure` `make` `make install`
|
||||
|
||||
The standard options provided by GNU autoconf may be passed to the
|
||||
`configure` script. Please see the autoconf documentation or run
|
||||
`./configure --help` for information about the standard options.
|
||||
|
||||
In addition there are several options to activate or deactivate
|
||||
features. E.g. passing `--disable-gst-debug` to `configure` will turn
|
||||
the debugging subsystem into a non-functional stub and remove all macro
|
||||
based invocations from within the library (and anything compiled against
|
||||
the library afterwards.)
|
||||
|
||||
If library size matters and one builds in a controlled environment, it
|
||||
is also possible to totally remove subsystem code. This is intentionally
|
||||
not offered as a configure option as it causes an ABI break. Code built
|
||||
against a version of GStreamer without these modifications needs to be
|
||||
recompiled.
|
||||
`make CFLAGS="-DGST_REMOVE_DEPRECATED -DGST_REMOVE_DISABLED"`
|
||||
|
||||
- `GST_REMOVE_DEPRECATED` - Omit deprecated functions from the
|
||||
library.
|
||||
|
||||
- `GST_REMOVE_DISABLED` - Omit stubs for disabled subsystems from the
|
||||
library.
|
||||
|
||||
# Building GStreamer Applications
|
||||
|
||||
Applications and libraries can use `pkg-config` to get all the needed
|
||||
compiler and linker flags to build against GStreamer. Please note that
|
||||
GStreamer is split into several libraries itself.
|
||||
`pkg-config --list-all | grep gstreamer` will list the available
|
||||
libraries.
|
6
docs/gst/gi-index.md
Normal file
6
docs/gst/gi-index.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Core Library
|
||||
|
||||
libgstreamer-{{ gst_api_version.md }}.so provides all the core GStreamer
|
||||
services, including initialization, plugin management and types, as well
|
||||
as the object hierarchy that defines elements and bins, along with some
|
||||
more specialized elements.
|
6
docs/gst/index.md
Normal file
6
docs/gst/index.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Core Library
|
||||
|
||||
libgstreamer-{{ gst_api_version.md }}.so provides all the core GStreamer
|
||||
services, including initialization, plugin management and types, as well
|
||||
as the object hierarchy that defines elements and bins, along with some
|
||||
more specialized elements.
|
14
docs/gst/overview.md
Normal file
14
docs/gst/overview.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: GStreamer Overview
|
||||
short-description: A simple overview of the GStreamer framework
|
||||
...
|
||||
|
||||
# GStreamer Overview
|
||||
|
||||
GStreamer is a streaming media framework. It uses graphs of elements which operate on data. The functionality to process media is provided by plug-ins which provide features like elements, typefinding, and so on. This allows new functionality to be added simply by installing new plug-ins.
|
||||
|
||||
GStreamer is cross-platform and works on most UNIX-like platforms as well as Windows. It is released under the GNU Library General Public License (GNU LGPL).
|
||||
|
||||
Relation between gstreamer core objects:
|
||||
|
||||

|
314
docs/gst/running.md
Normal file
314
docs/gst/running.md
Normal file
|
@ -0,0 +1,314 @@
|
|||
---
|
||||
title: Running GStreamer Applications
|
||||
short-description: How to run and debug your GStreamer application
|
||||
...
|
||||
|
||||
# Running and debugging GStreamer Applications
|
||||
|
||||
## Environment variables
|
||||
|
||||
GStreamer inspects a few of environment variables in addition to
|
||||
standard variables like LANG, PATH or HOME.
|
||||
|
||||
**`GST_PLUGIN_SYSTEM_PATH`, `GST_PLUGIN_SYSTEM_PATH_1_0`.**
|
||||
|
||||
This environment variable can be set to a colon-separated list of paths
|
||||
(or semicolon-separated list on Windows). If this variable is not set,
|
||||
GStreamer will fill in this list for you with
|
||||
|
||||
- plug-ins in the user's home directory, or rather the user's "data
|
||||
home" directory according to the xdg base dir specification.
|
||||
Usually this will be a directory called `plugins` inside the
|
||||
`.local/share/gstreamer-GST_API_VERSION` directory in the user's
|
||||
home directory by default, though this search path may change if the
|
||||
XDG_DATA_HOME environment variable is set.
|
||||
|
||||
- plug-ins installed system-wide. On this system, they are stored in
|
||||
``.
|
||||
|
||||
GStreamer will scan these paths for GStreamer plug-ins. These plug-ins
|
||||
will be loaded after the plug-ins in the GST_PLUGIN_PATH variable
|
||||
below. The paths are scanned in the given order. This allows a user to
|
||||
override system-installed plug-ins with his own versions.
|
||||
|
||||
The GST_PLUGIN_SYSTEM_PATH_1_0 variant is useful if both the old
|
||||
GStreamer 0.10 version and the new GStreamer 1.0 version need to be
|
||||
pointed to new plugin paths. The latter will use the _1_0 variant over
|
||||
the non-versioned one if it is set.
|
||||
|
||||
Setting this variable to an empty string will cause GStreamer not to
|
||||
scan any system paths at all for plug-ins. This can be useful if you're
|
||||
running uninstalled (for development purposes) or while running
|
||||
testsuites.
|
||||
|
||||
**`GST_PLUGIN_PATH`, `GST_PLUGIN_PATH_1_0`.**
|
||||
|
||||
This environment variable can be set to a colon-separated list of paths
|
||||
(or a semicolon-separated list on Windows). GStreamer will scan these
|
||||
paths for GStreamer plug-ins. These plug-ins will be loaded in addition
|
||||
to, and before, the plug-ins in the system paths.
|
||||
|
||||
The GST_PLUGIN_PATH_1_0 variant is useful if both the old GStreamer
|
||||
0.10 version and the new GStreamer 1.0 version need to be pointed to new
|
||||
plugin paths. The latter will use the `_1_0` variant over the
|
||||
non-versioned one if it is set.
|
||||
|
||||
**`GST_DEBUG.`**
|
||||
|
||||
If GStreamer has been configured with `--enable-gst-debug=yes`, this
|
||||
variable can be set to a list of debug options, which cause GStreamer to
|
||||
print out different types of debugging information to stderr.
|
||||
|
||||
The variable takes a comma-separated list of `category_name:level`
|
||||
pairs to set specific levels for the individual categories. The level
|
||||
value ranges from 0 (nothing) to 9 (MEMDUMP).
|
||||
|
||||
1 - `ERROR`
|
||||
|
||||
: Logs all fatal errors. These are errors that do not allow the core
|
||||
or elements to perform the requested action. The application can
|
||||
still recover if programmed to handle the conditions that triggered
|
||||
the error.
|
||||
|
||||
2 - `WARNING`
|
||||
|
||||
: Logs all warnings. Typically these are non-fatal, but user-visible
|
||||
problems are expected to happen.
|
||||
|
||||
3 - `FIXME`
|
||||
|
||||
: Logs all fixme messages. Fixme messages are messages that indicate
|
||||
that something in the executed code path is not fully implemented or
|
||||
handled yet. The purpose of this message is to make it easier to
|
||||
spot incomplete/unfinished pieces of code when reading the debug
|
||||
log.
|
||||
|
||||
4 - `INFO`
|
||||
|
||||
: Logs all informational messages. These are typically used for events
|
||||
in the system that only happen once, or are important and rare
|
||||
enough to be logged at this level.
|
||||
|
||||
5 - `DEBUG`
|
||||
|
||||
: Logs all debug messages. These are general debug messages for events
|
||||
that happen only a limited number of times during an object's
|
||||
lifetime; these include setup, teardown, change of parameters, ...
|
||||
|
||||
6 - `LOG`
|
||||
|
||||
: Logs all log messages. These are messages for events that happen
|
||||
repeatedly during an object's lifetime; these include streaming and
|
||||
steady-state conditions.
|
||||
|
||||
7 - `TRACE`
|
||||
|
||||
: Logs all trace messages. These messages for events that happen
|
||||
repeatedly during an object's lifetime such as the ref/unref
|
||||
cycles.
|
||||
|
||||
9 - `MEMDUMP`
|
||||
|
||||
: Log all memory dump messages. Memory dump messages are used to log
|
||||
(small) chunks of data as memory dumps in the log. They will be
|
||||
displayed as hexdump with ASCII characters.
|
||||
|
||||
The category_name can contain "`*"` as a wildcard.
|
||||
|
||||
For example, setting `GST_DEBUG` to `GST_AUTOPLUG:6,GST_ELEMENT_*:4`,
|
||||
will cause the `GST_AUTOPLUG` category to be logged at full `LOG` level,
|
||||
while all categories starting with `GST_ELEMENT_` will be logged at
|
||||
`INFO` level.
|
||||
|
||||
To get all possible debug output, set `GST_DEBUG` to `*:9`. For debugging
|
||||
purposes a `*:6` debug log is usually the most useful, as it contains
|
||||
all important information, but hides a lot of noise such as refs/unrefs.
|
||||
For bug reporting purposes, a `*:6` log is also what will be requested
|
||||
usually. It's often also worth running with `*:3` to see if there are
|
||||
any non-fatal errors or warnings that might be related to the problem at
|
||||
hand.
|
||||
|
||||
Since GStreamer 1.2 it is also possible to specify debug levels by name,
|
||||
e.g. `GST_DEBUG=*:WARNING,*audio*:LOG`
|
||||
|
||||
**`GST_DEBUG_NO_COLOR.*`*
|
||||
|
||||
Set this environment variable to any value ("1" typically) to switch
|
||||
off colouring in `GST_DEBUG` output. This has the same effect as
|
||||
specifying the `--gst-debug-no-color` or `--gst-debug-color-mode`=off
|
||||
command line option to well-behaved GStreamer applications (ie. those
|
||||
that pass command-line options correctly to GStreamer). This is
|
||||
particularly useful to reduce the size of debug output and also allows
|
||||
for the output to be compressed much better than with colours turned on.
|
||||
|
||||
Has the same effect as setting `GST_DEBUG_COLOR_MODE` environment
|
||||
variable to "off".
|
||||
|
||||
**`GST_DEBUG_COLOR_MODE.`**
|
||||
|
||||
Set this environment variable to change log colouring in `GST_DEBUG` output.
|
||||
Possible values:
|
||||
|
||||
`on`: Enables debug log output coloring. Uses default coloring method for
|
||||
current platform. This is the default.
|
||||
|
||||
`off`: Disables debug log output coloring. This has the same effect as
|
||||
specifying the `--gst-debug-color-mode=off` command line option to well-behaved
|
||||
GStreamer applications (ie. those that pass command-line options correctly to
|
||||
GStreamer). This is particularly useful to reduce the size of debug output and
|
||||
also allows for the output to be compressed much better than with colours turned
|
||||
on. Has the same effect as setting `GST_DEBUG_NO_COLOR` environment variable to
|
||||
any value.
|
||||
|
||||
`auto`: Same as `on`.
|
||||
|
||||
`disable`: Same as `off`.
|
||||
|
||||
`unix`: Enables debug log output coloring and forces the use of UNIX termial
|
||||
codes for coloring, even if this method is not normally used on current
|
||||
platform. This has the same effect as specifying the
|
||||
`--gst-debug-color-mode=unix` command line option to well-behaved GStreamer
|
||||
applications (ie. those that pass command-line options correctly to GStreamer).
|
||||
This is particularly useful to dump debug output into a file on non-UNIX
|
||||
platforms to be sent to developers who have viewers that support UNIX terminal
|
||||
codes.
|
||||
|
||||
**`GST_DEBUG_OPTIONS.`**
|
||||
|
||||
This environment variable can be used to tweak the behaviour of the
|
||||
debugging system. Currently the only options supported are
|
||||
"pretty-tags" and "full-tags". In "pretty-tags" mode (the
|
||||
default), taglists in the debug log will be serialized so that only the
|
||||
first few and last few bytes of a buffer-type tag will be serialized
|
||||
into the log, to avoid dumping hundreds of lines of useless output into
|
||||
the log in case of large image tags and the like.
|
||||
|
||||
**`GST_DEBUG_DUMP_DOT_DIR.`**
|
||||
|
||||
Set this environment variable to a path to turn on all
|
||||
`GST_DEBUG_BIN_TO_DOT_FILE` or `GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS` calls and
|
||||
have the dot files in that location.
|
||||
|
||||
This will only work if the application in question makes these calls in
|
||||
strategic places (like when the pipeline state changes or an error
|
||||
occurs). `gst-launch-1,0` is one such application.
|
||||
|
||||
When `gst-launch-1.0` changes state through NULL to PLAYING
|
||||
and back to NULL, a dot file is generated on each state change. To have
|
||||
`gst-launch-1.0` write a snapshot of the pipeline state,
|
||||
send a SIGHUP to the `gst-launch-1.0` process.
|
||||
|
||||
These .dot files can then be turned into images using the 'dot'
|
||||
utility from the graphviz set of tools, like this:
|
||||
`dot foo.dot -Tsvg -o foo.svg` or `dot foo.dot -Tpng -o foo.png` or
|
||||
`dot foo.dot -Tjpg -o foo.jpg`.
|
||||
|
||||
There is also a utility called `xdot` which allows you to view the dot
|
||||
file directly without converting it first.
|
||||
|
||||
**`GST_REGISTRY`, `GST_REGISTRY_1_0`.**
|
||||
|
||||
Set this environment variable to make GStreamer use a different file for
|
||||
the plugin cache / registry than the default one. This is useful when
|
||||
operating in a separate environment which should not affect the default
|
||||
cache in the user's home directory.
|
||||
|
||||
**`GST_REGISTRY_FORK`.**
|
||||
|
||||
Set this environment variable to "no" to prevent GStreamer from
|
||||
forking on startup in order to update the plugin registry. This is
|
||||
useful for debugging purposes, but should not be used under normal
|
||||
circumstances, since it means that plugins may be loaded into memory
|
||||
even if they are not needed by the application.
|
||||
|
||||
**`GST_REGISTRY_UPDATE`.**
|
||||
|
||||
Set this environment variable to "no" to prevent GStreamer from
|
||||
updating the plugin registry. This is useful for embedded device which
|
||||
is not updating the plugins frequently, it will save time when doing
|
||||
`gst_init()`.
|
||||
|
||||
**GST_TRACE.**
|
||||
|
||||
Enable memory allocation tracing. Most GStreamer objects have support
|
||||
for tracing the number of unfreed objects and their memory pointers.
|
||||
|
||||
The variable takes a comma-separated list of tracing options to enable.
|
||||
|
||||
live
|
||||
|
||||
: Counts all live objects and dumps an overview of the number of
|
||||
unfreed objects at program exit.
|
||||
|
||||
mem-live
|
||||
|
||||
: Keep track of the unfreed memory pointers and dump an overview of
|
||||
all unfreed memory at program exit. Together with a level 9 debug
|
||||
log this can be used to follow the lifecycle of leaked objects in
|
||||
order to track down where they are leaked. This can be useful for
|
||||
debugging memory leaks in situations where tools such as valgrind
|
||||
are not available, or not an option.
|
||||
|
||||
Use `all` to enable all tracing flags.
|
||||
|
||||
**`GST_DEBUG_FILE`.**
|
||||
|
||||
Set this variable to a file path to redirect all GStreamer debug
|
||||
messages to this file. If left unset, debug messages with be output unto
|
||||
the standard error.
|
||||
|
||||
**`ORC_CODE`.**
|
||||
|
||||
Useful Orc environment variable. Set `ORC_CODE=debug` to enable debuggers
|
||||
such as gdb to create useful backtraces from Orc-generated code. Set
|
||||
`ORC_CODE=backup` or `ORC_CODE=emulate` if you suspect Orc's SIMD code
|
||||
generator is producing incorrect code (Quite a few important GStreamer
|
||||
plugins like videotestsrc, audioconvert or audioresample use Orc). One
|
||||
can also combine flags like `ORC_CODE=backup,debug`.
|
||||
|
||||
**`G_DEBUG`.**
|
||||
|
||||
Useful GLib environment variable. Set `G_DEBUG=fatal_warnings` to make
|
||||
GStreamer programs abort when a critical warning such as an assertion
|
||||
failure occurs. This is useful if you want to find out which part of the
|
||||
code caused that warning to be triggered and under what circumstances.
|
||||
Simply set `G_DEBUG` as mentioned above and run the program in gdb (or
|
||||
let it core dump). Then get a stack trace in the usual way.
|
||||
|
||||
**`G_SLICE`.**
|
||||
|
||||
Useful GLib environment variable. Set `G_SLICE=always-malloc` when
|
||||
running GStreamer programs in valgrind, or debugging memory leaks with
|
||||
other tools. See the GLib API reference for more details.
|
||||
|
||||
**`GST_TAG_ENCODING`.**
|
||||
|
||||
Try this character encoding first for tag-related strings where the
|
||||
encoding is not defined and which are not UTF-8 already. By default the
|
||||
current locale will be tried (if not UTF-8).
|
||||
|
||||
**`GST_TAG_ID3_ENCODING`.**
|
||||
|
||||
Try this character encoding first for ID3 tag-related strings where the
|
||||
encoding is not defined and which are not UTF-8 already. By default the
|
||||
current locale will be tried (if not UTF-8).
|
||||
|
||||
**`GST_TAG_ID3V1_ENCODING`.**
|
||||
|
||||
Try this character encoding first for ID3v1 tag-related strings where
|
||||
the encoding does not look like UTF-8.
|
||||
|
||||
**`GST_GL_WINDOW`.**
|
||||
|
||||
Influences the window system to use by the GStreamer OpenGL library.
|
||||
Common values are 'x11', 'wayland', 'win32' or 'cocoa'.
|
||||
|
||||
**`GST_GL_PLATFORM`.**
|
||||
|
||||
Influences the OpenGL platform to use by the GStreamer OpenGL library.
|
||||
Common values are 'egl', 'glx', 'wgl' or 'cgl'.
|
||||
|
||||
**`GST_GL_API`.**
|
||||
|
||||
Influences the OpenGL API requested by the OpenGL platform. Common
|
||||
values are 'opengl' or 'gles2'.
|
3
docs/gst/sitemap.txt
Normal file
3
docs/gst/sitemap.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
gi-index
|
||||
running.md
|
||||
gst.h
|
BIN
docs/images/gdp-header.png
Normal file
BIN
docs/images/gdp-header.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
|
@ -1,906 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="640px"
|
||||
height="480px"
|
||||
id="svg1307"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.43"
|
||||
sodipodi:docbase="/home/thomas"
|
||||
sodipodi:docname="gdp.svg">
|
||||
<defs
|
||||
id="defs1309" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="262.80469"
|
||||
inkscape:cy="202.78641"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
showguides="false"
|
||||
inkscape:grid-points="true"
|
||||
fill="#eeeeec"
|
||||
inkscape:window-width="1024"
|
||||
inkscape:window-height="697"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata1312">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4859">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="158"
|
||||
id="rect3104"
|
||||
style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect3979"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text4855"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan4857"
|
||||
sodipodi:role="line">Version</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4865"
|
||||
transform="translate(160,0)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#edd400;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000048;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4867"
|
||||
width="78.000015"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.109425e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4869"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text4871"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4873"
|
||||
x="8.8222656"
|
||||
y="14.473633">Flags</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(240,0)"
|
||||
id="g4885">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.109425e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="78.000015"
|
||||
id="rect4887"
|
||||
style="opacity:1;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000048;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect4889"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<g
|
||||
id="g4905"
|
||||
transform="translate(320,0)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#c4a000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4907"
|
||||
width="158"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4909"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text4911"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4913"
|
||||
x="8.8222656"
|
||||
y="14.473633">Payload type</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4915"
|
||||
transform="translate(480,0)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#cee14b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4917"
|
||||
width="158"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4919"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text4921"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4923"
|
||||
x="8.8222656"
|
||||
y="14.473633">Payload length</tspan></text>
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="421"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="158"
|
||||
id="rect5196"
|
||||
style="opacity:1;color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<g
|
||||
id="g4942"
|
||||
transform="translate(0,60)">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="158"
|
||||
id="rect4944"
|
||||
style="opacity:1;color:#000000;fill:#cee14b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect4946"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(160,60)"
|
||||
id="g4952">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#9db029;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000048;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4954"
|
||||
width="478.00006"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4956"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text4958"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4960"
|
||||
x="8.8222656"
|
||||
y="14.473633">Timestamp</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(160,120)"
|
||||
id="g4962">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094244e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="477.99994"
|
||||
id="rect4964"
|
||||
style="opacity:1;color:#000000;fill:#fcaf3e;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect4966"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text4968"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan4970"
|
||||
sodipodi:role="line">Duration</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4972"
|
||||
transform="translate(0,180)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#fcaf3e;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4974"
|
||||
width="158"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4976"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
</g>
|
||||
<g
|
||||
id="g4982"
|
||||
transform="translate(160,180)">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="478.00006"
|
||||
id="rect4984"
|
||||
style="opacity:1;color:#000000;fill:#f57900;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000048;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect4986"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text4988"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan4990"
|
||||
sodipodi:role="line">Offset</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4992"
|
||||
transform="translate(160,240)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#ce5c00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4994"
|
||||
width="477.99994"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094244e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4996"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text4998"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5000"
|
||||
x="8.8222656"
|
||||
y="14.473633">Offset end</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g5002"
|
||||
transform="matrix(0.333333,0,0,1,0,120)">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="6.3282746e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="478.00006"
|
||||
id="rect5004"
|
||||
style="opacity:1;color:#000000;fill:#9db029;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.46410275;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="6.3282746e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect5006"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.333333,0,0,1,0,240)"
|
||||
id="g5012">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#f57900;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.46410275;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect5014"
|
||||
width="478.00006"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="6.3282746e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect5016"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="6.3282746e-15"
|
||||
ry="2.1094244e-15" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.333333,0,0,1,0,300)"
|
||||
id="g5022">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="6.3282725e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="477.99994"
|
||||
id="rect5024"
|
||||
style="opacity:1;color:#000000;fill:#ce5c00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.46410179;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="6.3282729e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect5026"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(160,300)"
|
||||
id="g5032">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="158"
|
||||
id="rect5034"
|
||||
style="opacity:1;color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect5036"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text5038"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan5040"
|
||||
sodipodi:role="line">Buffer flags</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g5048"
|
||||
transform="translate(320,300)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect5050"
|
||||
width="317.99997"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094244e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect5052"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text5054"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5056"
|
||||
x="8.8222656"
|
||||
y="14.473633">ABI</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0,360)"
|
||||
id="g5058">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.109424e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="637.99982"
|
||||
id="rect5060"
|
||||
style="opacity:1;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect5062"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text5064"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan5066"
|
||||
sodipodi:role="line">ABI</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0,420)"
|
||||
id="g5068">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094227e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="157.99988"
|
||||
id="rect5070"
|
||||
style="opacity:1;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999952;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect5072"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text5074"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan5076"
|
||||
sodipodi:role="line">ABI</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g5080"
|
||||
transform="translate(160,420)">
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect5082"
|
||||
width="158"
|
||||
height="58.000019"
|
||||
x="1"
|
||||
y="1"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect5084"
|
||||
width="80"
|
||||
height="20"
|
||||
x="10"
|
||||
y="0"
|
||||
rx="2.1094246e-15"
|
||||
ry="2.1094244e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="8.8222656"
|
||||
y="14.473633"
|
||||
id="text5086"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5088"
|
||||
x="8.8222656"
|
||||
y="14.473633">CRC header</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(320,420)"
|
||||
id="g5090">
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="1"
|
||||
x="1"
|
||||
height="58.000019"
|
||||
width="158"
|
||||
id="rect5092"
|
||||
style="opacity:1;color:#000000;fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
ry="2.1094244e-15"
|
||||
rx="2.1094246e-15"
|
||||
y="0"
|
||||
x="10"
|
||||
height="20"
|
||||
width="80"
|
||||
id="rect5094"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<text
|
||||
sodipodi:linespacing="100%"
|
||||
id="text5096"
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
y="14.473633"
|
||||
x="8.8222656"
|
||||
id="tspan5098"
|
||||
sodipodi:role="line">CRC payload</tspan></text>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 81,0.5 L 81,479.5"
|
||||
id="path5104" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#path5104"
|
||||
id="use5106"
|
||||
transform="translate(-0.5,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5106"
|
||||
id="use5108"
|
||||
transform="translate(80,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5106"
|
||||
id="use5112" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5112"
|
||||
id="use5114"
|
||||
transform="translate(400,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5114"
|
||||
id="use5116"
|
||||
width="640"
|
||||
height="480"
|
||||
transform="translate(-80,0)" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5116"
|
||||
id="use5118"
|
||||
width="640"
|
||||
height="480"
|
||||
transform="translate(-80,0)" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5118"
|
||||
id="use5120"
|
||||
width="640"
|
||||
height="480"
|
||||
transform="translate(-80,0)" />
|
||||
<use
|
||||
id="use5126"
|
||||
xlink:href="#use5106"
|
||||
y="0"
|
||||
x="0"
|
||||
transform="matrix(1,0,0,0.87474,480,6.248e-2)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<g
|
||||
id="g5145">
|
||||
<path
|
||||
id="path5128"
|
||||
d="M 170.5,42.5 L 170.5,59.5"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<use
|
||||
transform="translate(10,0)"
|
||||
height="480"
|
||||
width="640"
|
||||
id="use5130"
|
||||
xlink:href="#path5128"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5132"
|
||||
xlink:href="#use5130"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5134"
|
||||
xlink:href="#use5132"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5136"
|
||||
xlink:href="#use5134"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5138"
|
||||
xlink:href="#use5136"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5140"
|
||||
xlink:href="#use5138"
|
||||
y="0"
|
||||
x="0" />
|
||||
</g>
|
||||
<g
|
||||
id="g5154"
|
||||
transform="translate(0,300)">
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 170.5,42.5 L 170.5,59.5"
|
||||
id="path5156" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#path5128"
|
||||
id="use5158"
|
||||
width="640"
|
||||
height="480"
|
||||
transform="translate(10,0)" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5130"
|
||||
id="use5160"
|
||||
transform="translate(10,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5132"
|
||||
id="use5162"
|
||||
transform="translate(10,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5134"
|
||||
id="use5164"
|
||||
transform="translate(10,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5136"
|
||||
id="use5166"
|
||||
transform="translate(10,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use5138"
|
||||
id="use5168"
|
||||
transform="translate(10,0)"
|
||||
width="640"
|
||||
height="480" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(80,300)"
|
||||
id="g5170">
|
||||
<path
|
||||
id="path5172"
|
||||
d="M 170.5,42.5 L 170.5,59.5"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<use
|
||||
transform="translate(10,0)"
|
||||
height="480"
|
||||
width="640"
|
||||
id="use5174"
|
||||
xlink:href="#path5128"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5176"
|
||||
xlink:href="#use5130"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5178"
|
||||
xlink:href="#use5132"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5180"
|
||||
xlink:href="#use5134"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5182"
|
||||
xlink:href="#use5136"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="480"
|
||||
width="640"
|
||||
transform="translate(10,0)"
|
||||
id="use5184"
|
||||
xlink:href="#use5138"
|
||||
y="0"
|
||||
x="0" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
||||
x="501"
|
||||
y="451"
|
||||
id="text5186"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5188"
|
||||
x="501"
|
||||
y="451">GStreamer</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="501"
|
||||
y="471"
|
||||
id="tspan5192">Data Protocol</tspan></text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 38 KiB |
354
docs/images/gst-universe.svg
Normal file
354
docs/images/gst-universe.svg
Normal file
|
@ -0,0 +1,354 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
|
||||
-->
|
||||
<!-- Title: pipeline Pages: 1 -->
|
||||
<svg width="707pt" height="632pt"
|
||||
viewBox="0.00 0.00 707.00 632.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 628)">
|
||||
<title>pipeline</title>
|
||||
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-628 703,-628 703,4 -4,4"/>
|
||||
<!-- application -->
|
||||
<g id="node1" class="node">
|
||||
<title>application</title>
|
||||
<polygon fill="#ffdddd" stroke="#000000" points="577,-624 511,-624 511,-588 577,-588 577,-624"/>
|
||||
<text text-anchor="middle" x="544" y="-603.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">application</text>
|
||||
</g>
|
||||
<!-- bus -->
|
||||
<g id="node3" class="node">
|
||||
<title>bus</title>
|
||||
<g id="a_node3"><a xlink:href="GstBus.html" xlink:title="bus" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="122,-464 68,-464 68,-428 122,-428 122,-464"/>
|
||||
<text text-anchor="middle" x="95" y="-443.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">bus</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- application->bus -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>application->bus</title>
|
||||
<path fill="none" stroke="#000000" d="M510.9115,-603.0792C430.1757,-595.561 225.2233,-574.007 164,-544 132.3738,-528.4992 123.8974,-520.3344 106,-490 103.0991,-485.0833 100.9591,-479.4225 99.3816,-473.8334"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="102.776,-472.9771 97.1069,-464.0266 95.957,-474.5588 102.776,-472.9771"/>
|
||||
<text text-anchor="middle" x="180" y="-524.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">listen on</text>
|
||||
</g>
|
||||
<!-- event -->
|
||||
<g id="node9" class="node">
|
||||
<title>event</title>
|
||||
<g id="a_node9"><a xlink:href="gstreamer-GstEvent.html" xlink:title="event" target="_top">
|
||||
<polygon fill="#ddffdd" stroke="#000000" points="585,-304 531,-304 531,-268 585,-268 585,-304"/>
|
||||
<text text-anchor="middle" x="558" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">event</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- application->event -->
|
||||
<g id="edge26" class="edge">
|
||||
<title>application->event</title>
|
||||
<path fill="none" stroke="#000000" d="M577.281,-590.2893C600.3723,-576.8307 627,-555.0196 627,-526 627,-526 627,-526 627,-366 627,-345.4784 625.4135,-338.3413 613,-322 607.7902,-315.1417 600.8722,-309.1985 593.7059,-304.2267"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="595.5792,-301.2702 585.2668,-298.84 591.8129,-307.1707 595.5792,-301.2702"/>
|
||||
<text text-anchor="middle" x="636" y="-444.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">send</text>
|
||||
</g>
|
||||
<!-- pipeline -->
|
||||
<g id="node13" class="node">
|
||||
<title>pipeline</title>
|
||||
<g id="a_node13"><a xlink:href="GstPipeline.html" xlink:title="pipeline" target="_top">
|
||||
<polygon fill="#ccccff" stroke="#000000" points="259,-544 205,-544 205,-508 259,-508 259,-544"/>
|
||||
<text text-anchor="middle" x="232" y="-523.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">pipeline</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- application->pipeline -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>application->pipeline</title>
|
||||
<path fill="none" stroke="#000000" d="M510.9059,-597.5143C452.3458,-582.4989 330.8592,-551.3485 269.3763,-535.5837"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="269.8879,-532.1017 259.3319,-533.0082 268.1492,-538.8823 269.8879,-532.1017"/>
|
||||
<text text-anchor="middle" x="404.5" y="-564.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has</text>
|
||||
</g>
|
||||
<!-- query -->
|
||||
<g id="node16" class="node">
|
||||
<title>query</title>
|
||||
<g id="a_node16"><a xlink:href="gstreamer-GstQuery.html" xlink:title="query" target="_top">
|
||||
<polygon fill="#ddffdd" stroke="#000000" points="677,-304 623,-304 623,-268 677,-268 677,-304"/>
|
||||
<text text-anchor="middle" x="650" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">query</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- application->query -->
|
||||
<g id="edge25" class="edge">
|
||||
<title>application->query</title>
|
||||
<path fill="none" stroke="#000000" d="M577.1639,-601.3855C617.7094,-593.6598 681,-573.9247 681,-526 681,-526 681,-526 681,-366 681,-347.6719 673.8382,-328.4806 666.3992,-313.4901"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="669.3088,-311.5046 661.5433,-304.2972 663.1192,-314.7742 669.3088,-311.5046"/>
|
||||
<text text-anchor="middle" x="690" y="-444.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">send</text>
|
||||
</g>
|
||||
<!-- bin -->
|
||||
<g id="node2" class="node">
|
||||
<title>bin</title>
|
||||
<g id="a_node2"><a xlink:href="GstBin.html" xlink:title="bin" target="_top">
|
||||
<polygon fill="#ccccff" stroke="#000000" points="343,-464 289,-464 289,-428 343,-428 343,-464"/>
|
||||
<text text-anchor="middle" x="316" y="-443.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">bin</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- element -->
|
||||
<g id="node7" class="node">
|
||||
<title>element</title>
|
||||
<g id="a_node7"><a xlink:href="GstElement.html" xlink:title="element" target="_top">
|
||||
<polygon fill="#ccccff" stroke="#000000" points="379,-384 325,-384 325,-348 379,-348 379,-384"/>
|
||||
<text text-anchor="middle" x="352" y="-363.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">element</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- bin->element -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>bin->element</title>
|
||||
<path fill="none" stroke="#000000" d="M313.4728,-427.8198C313.0652,-419.637 313.6319,-410.0331 317,-402 318.4683,-398.498 320.4504,-395.1455 322.7289,-391.9929"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="325.5616,-394.0618 329.3031,-384.1495 320.1969,-389.5651 325.5616,-394.0618"/>
|
||||
<text text-anchor="middle" x="323.5" y="-404.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">is-a</text>
|
||||
</g>
|
||||
<!-- bin->element -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>bin->element</title>
|
||||
<path fill="none" stroke="#000000" d="M324.169,-427.8468C328.7718,-417.6183 334.6118,-404.6405 339.7523,-393.217"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="342.9514,-394.6369 343.8634,-384.0814 336.5679,-391.7643 342.9514,-394.6369"/>
|
||||
<text text-anchor="middle" x="346" y="-404.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- message -->
|
||||
<g id="node10" class="node">
|
||||
<title>message</title>
|
||||
<g id="a_node10"><a xlink:href="gstreamer-GstMessage.html" xlink:title="message" target="_top">
|
||||
<polygon fill="#ddffdd" stroke="#000000" points="128,-304 72,-304 72,-268 128,-268 128,-304"/>
|
||||
<text text-anchor="middle" x="100" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">message</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- bus->message -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>bus->message</title>
|
||||
<path fill="none" stroke="#000000" d="M95.5638,-427.957C96.4266,-400.3487 98.082,-347.3746 99.1086,-314.5255"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="102.6164,-314.327 99.4305,-304.2226 95.6198,-314.1083 102.6164,-314.327"/>
|
||||
<text text-anchor="middle" x="111.5" y="-364.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">receive</text>
|
||||
</g>
|
||||
<!-- buffer -->
|
||||
<g id="node4" class="node">
|
||||
<title>buffer</title>
|
||||
<g id="a_node4"><a xlink:href="gstreamer-GstBuffer.html" xlink:title="buffer" target="_top">
|
||||
<polygon fill="#ddffdd" stroke="#000000" points="521,-250 467,-250 467,-214 521,-214 521,-250"/>
|
||||
<text text-anchor="middle" x="494" y="-229.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">buffer</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- caps -->
|
||||
<g id="node5" class="node">
|
||||
<title>caps</title>
|
||||
<g id="a_node5"><a xlink:href="gstreamer-GstCaps.html" xlink:title="caps" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="472,-116 418,-116 418,-80 472,-80 472,-116"/>
|
||||
<text text-anchor="middle" x="445" y="-95.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">caps</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- buffer->caps -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>buffer->caps</title>
|
||||
<path fill="none" stroke="#000000" d="M487.8971,-213.8918C482.9336,-199.2961 475.6823,-178.2673 469,-160 464.7467,-148.3727 463.4659,-145.5473 459,-134 457.9568,-131.3027 456.8678,-128.4926 455.7781,-125.6842"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="459.0195,-124.3625 452.1353,-116.309 452.4947,-126.8978 459.0195,-124.3625"/>
|
||||
<text text-anchor="middle" x="492" y="-176.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- structure -->
|
||||
<g id="node18" class="node">
|
||||
<title>structure</title>
|
||||
<g id="a_node18"><a xlink:href="gstreamer-GstStructure.html" xlink:title="structure" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="474.5,-36 415.5,-36 415.5,0 474.5,0 474.5,-36"/>
|
||||
<text text-anchor="middle" x="445" y="-15.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">structure</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- caps->structure -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>caps->structure</title>
|
||||
<path fill="none" stroke="#000000" d="M445,-79.8468C445,-69.9251 445,-57.4167 445,-46.2492"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="448.5001,-46.0814 445,-36.0814 441.5001,-46.0814 448.5001,-46.0814"/>
|
||||
<text text-anchor="middle" x="455" y="-56.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- clock -->
|
||||
<g id="node6" class="node">
|
||||
<title>clock</title>
|
||||
<g id="a_node6"><a xlink:href="GstClock.html" xlink:title="clock" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="200,-304 146,-304 146,-268 200,-268 200,-304"/>
|
||||
<text text-anchor="middle" x="173" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">clock</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- element->buffer -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>element->buffer</title>
|
||||
<path fill="none" stroke="#000000" d="M379.0052,-348.1841C387.6581,-342.4256 397.2602,-335.9827 406,-330 422.585,-318.647 428.7615,-318.1851 443,-304 456.442,-290.6085 468.8159,-273.3197 478.0084,-259.0402"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="481.227,-260.4951 483.569,-250.1624 475.2946,-256.7794 481.227,-260.4951"/>
|
||||
<text text-anchor="middle" x="446" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">send & receive</text>
|
||||
</g>
|
||||
<!-- element->clock -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>element->clock</title>
|
||||
<path fill="none" stroke="#000000" d="M324.9778,-361.1851C299.2847,-355.9049 260.0596,-345.9868 229,-330 218.9195,-324.8114 208.8758,-317.6948 200.1358,-310.6969"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="202.1225,-307.7968 192.197,-304.0908 197.6451,-313.1776 202.1225,-307.7968"/>
|
||||
<text text-anchor="middle" x="251.5" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">may provide</text>
|
||||
</g>
|
||||
<!-- element_factory -->
|
||||
<g id="node8" class="node">
|
||||
<title>element_factory</title>
|
||||
<g id="a_node8"><a xlink:href="GstElementFactory.html" xlink:title="element factory" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="306,-304 218,-304 218,-268 306,-268 306,-304"/>
|
||||
<text text-anchor="middle" x="262" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">element factory</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- element->element_factory -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>element->element_factory</title>
|
||||
<path fill="none" stroke="#000000" d="M324.8244,-356.6294C310.9201,-350.7366 294.5406,-341.9588 283,-330 278.4484,-325.2835 274.729,-319.3944 271.7547,-313.4736"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="274.9408,-312.0246 267.6816,-304.3075 268.5439,-314.8672 274.9408,-312.0246"/>
|
||||
<text text-anchor="middle" x="310.5" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">is created from</text>
|
||||
</g>
|
||||
<!-- element->event -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>element->event</title>
|
||||
<path fill="none" stroke="#000000" d="M379.0347,-360.7461C406.0174,-355.003 448.3405,-344.6282 483,-330 496.4301,-324.3318 510.3994,-316.6794 522.5904,-309.3462"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="524.4387,-312.3185 531.1199,-304.0958 520.7692,-306.3573 524.4387,-312.3185"/>
|
||||
<text text-anchor="middle" x="526" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">send & receive</text>
|
||||
</g>
|
||||
<!-- element->message -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>element->message</title>
|
||||
<path fill="none" stroke="#000000" d="M324.9822,-361.5785C293.1497,-355.9741 238.9085,-345.1811 194,-330 170.198,-321.9538 163.449,-316.9228 137.4211,-304.2336"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="138.777,-301.0021 128.2471,-299.8311 135.7484,-307.3131 138.777,-301.0021"/>
|
||||
<text text-anchor="middle" x="203" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">send</text>
|
||||
</g>
|
||||
<!-- pad -->
|
||||
<g id="node11" class="node">
|
||||
<title>pad</title>
|
||||
<g id="a_node11"><a xlink:href="GstPad.html" xlink:title="pad" target="_top">
|
||||
<polygon fill="#ccccff" stroke="#000000" points="434,-304 380,-304 380,-268 434,-268 434,-304"/>
|
||||
<text text-anchor="middle" x="407" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">pad</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- element->pad -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>element->pad</title>
|
||||
<path fill="none" stroke="#000000" d="M364.4804,-347.8468C371.6531,-337.4137 380.7923,-324.1203 388.7582,-312.5335"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="391.7879,-314.3047 394.569,-304.0814 386.0196,-310.339 391.7879,-314.3047"/>
|
||||
<text text-anchor="middle" x="392" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- pad_template -->
|
||||
<g id="node12" class="node">
|
||||
<title>pad_template</title>
|
||||
<g id="a_node12"><a xlink:href="GstPadTemplate.html" xlink:title="pad template" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="408.5,-196 331.5,-196 331.5,-160 408.5,-160 408.5,-196"/>
|
||||
<text text-anchor="middle" x="370" y="-175.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">pad template</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- element->pad_template -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>element->pad_template</title>
|
||||
<path fill="none" stroke="#000000" d="M351.6297,-347.8244C351.397,-335.4673 351.1189,-318.748 351,-304 350.871,-288.0005 349.3386,-283.9135 351,-268 353.1835,-247.0865 358.1473,-223.877 362.4537,-206.266"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="365.9671,-206.6471 365.0193,-196.0948 359.1797,-204.935 365.9671,-206.6471"/>
|
||||
<text text-anchor="middle" x="361" y="-284.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- element->query -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>element->query</title>
|
||||
<path fill="none" stroke="#000000" d="M379.0863,-363.5768C418.8478,-359.5008 495.0155,-349.7102 557,-330 576.3889,-323.8346 596.9357,-314.4447 613.7714,-305.9205"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="615.4351,-309.0005 622.7118,-301.2998 612.2211,-302.7819 615.4351,-309.0005"/>
|
||||
<text text-anchor="middle" x="594" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">answers</text>
|
||||
</g>
|
||||
<!-- plugin_feature -->
|
||||
<g id="node15" class="node">
|
||||
<title>plugin_feature</title>
|
||||
<g id="a_node15"><a xlink:href="GstPluginFeature.html" xlink:title="plugin feature" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="161,-196 81,-196 81,-160 161,-160 161,-196"/>
|
||||
<text text-anchor="middle" x="121" y="-175.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">plugin feature</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- element_factory->plugin_feature -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>element_factory->plugin_feature</title>
|
||||
<path fill="none" stroke="#000000" d="M238.3998,-267.9232C214.9138,-249.9339 178.719,-222.2103 152.7282,-202.3024"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="154.7443,-199.438 144.6772,-196.1357 150.4877,-204.9951 154.7443,-199.438"/>
|
||||
<text text-anchor="middle" x="219.5" y="-230.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">is-a</text>
|
||||
</g>
|
||||
<!-- pad->caps -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>pad->caps</title>
|
||||
<path fill="none" stroke="#000000" d="M421.5944,-267.8888C425.2714,-262.4333 428.7961,-256.2319 431,-250 438.8006,-227.9426 442.5008,-164.0023 444.0459,-126.4479"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="447.5545,-126.2911 444.4424,-116.1637 440.5597,-126.0214 447.5545,-126.2911"/>
|
||||
<text text-anchor="middle" x="453" y="-176.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- pad->pad_template -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>pad->pad_template</title>
|
||||
<path fill="none" stroke="#000000" d="M387.4506,-267.737C382.9375,-262.4616 378.679,-256.3893 376,-250 370.2976,-236.3999 368.5674,-220.1056 368.3637,-206.4602"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="371.8665,-206.2262 368.4808,-196.1869 364.8669,-206.1464 371.8665,-206.2262"/>
|
||||
<text text-anchor="middle" x="403.5" y="-230.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">is created from</text>
|
||||
</g>
|
||||
<!-- pad_template->caps -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>pad_template->caps</title>
|
||||
<path fill="none" stroke="#000000" d="M386.7291,-159.9921C394.1513,-152.0167 402.9991,-142.5287 411,-134 414.1284,-130.6653 417.4244,-127.1622 420.6835,-123.7048"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="423.3614,-125.9667 427.6795,-116.2917 418.2705,-121.1622 423.3614,-125.9667"/>
|
||||
<text text-anchor="middle" x="421" y="-136.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- pipeline->bin -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>pipeline->bin</title>
|
||||
<path fill="none" stroke="#000000" d="M251.0609,-507.8468C262.4452,-497.0045 277.0731,-483.0732 289.5625,-471.1785"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="292.1869,-473.5125 297.0145,-464.0814 287.3593,-468.4435 292.1869,-473.5125"/>
|
||||
<text text-anchor="middle" x="283.5" y="-484.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">is-a</text>
|
||||
</g>
|
||||
<!-- pipeline->bus -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>pipeline->bus</title>
|
||||
<path fill="none" stroke="#000000" d="M204.6065,-523.7303C178.9936,-520.2926 141.0367,-511.6598 116,-490 110.959,-485.6389 107.0322,-479.7973 104.0111,-473.7986"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="107.1483,-472.2343 99.9793,-464.4332 100.7188,-475.0022 107.1483,-472.2343"/>
|
||||
<text text-anchor="middle" x="126" y="-484.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has 1</text>
|
||||
</g>
|
||||
<!-- pipeline->clock -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>pipeline->clock</title>
|
||||
<path fill="none" stroke="#000000" d="M224.1619,-507.8066C209.9486,-473.7131 180.4285,-397.5454 170,-330 169.2231,-324.968 169.0522,-319.5812 169.225,-314.3635"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="172.7398,-314.2874 169.9782,-304.0589 165.7584,-313.7771 172.7398,-314.2874"/>
|
||||
<text text-anchor="middle" x="199" y="-404.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has 1</text>
|
||||
</g>
|
||||
<!-- plugin -->
|
||||
<g id="node14" class="node">
|
||||
<title>plugin</title>
|
||||
<g id="a_node14"><a xlink:href="GstPlugin.html" xlink:title="plugin" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="54,-304 0,-304 0,-268 54,-268 54,-304"/>
|
||||
<text text-anchor="middle" x="27" y="-283.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">plugin</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- plugin->plugin_feature -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>plugin->plugin_feature</title>
|
||||
<path fill="none" stroke="#000000" d="M42.9458,-267.6793C58.2302,-250.1185 81.4452,-223.4459 98.5869,-203.7512"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="101.3645,-205.8911 105.2897,-196.0502 96.0843,-201.2954 101.3645,-205.8911"/>
|
||||
<text text-anchor="middle" x="98" y="-230.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
<!-- registry -->
|
||||
<g id="node17" class="node">
|
||||
<title>registry</title>
|
||||
<g id="a_node17"><a xlink:href="GstRegistry.html" xlink:title="registry" target="_top">
|
||||
<polygon fill="#eeeeee" stroke="#000000" points="54,-384 0,-384 0,-348 54,-348 54,-384"/>
|
||||
<text text-anchor="middle" x="27" y="-363.8" font-family="Bitstream Vera Sans" font-size="9.00" fill="#000000">registry</text>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- registry->plugin -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>registry->plugin</title>
|
||||
<path fill="none" stroke="#000000" d="M27,-347.8468C27,-337.9251 27,-325.4167 27,-314.2492"/>
|
||||
<polygon fill="#000000" stroke="#000000" points="30.5001,-314.0814 27,-304.0814 23.5001,-314.0814 30.5001,-314.0814"/>
|
||||
<text text-anchor="middle" x="37" y="-324.4" font-family="Bitstream Vera Sans" font-size="7.00" fill="#000000">has n</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 21 KiB |
336
docs/index.md
Normal file
336
docs/index.md
Normal file
|
@ -0,0 +1,336 @@
|
|||
---
|
||||
short-description: GStreamer core API reference.
|
||||
...
|
||||
|
||||
# GStreamer Core
|
||||
|
||||
GStreamer is a streaming media framework. It uses graphs of elements
|
||||
which operate on data. The functionality to process media is provided by
|
||||
plug-ins which provide features like elements, typefinding, and so on.
|
||||
This allows new functionality to be added simply by installing new
|
||||
plug-ins.
|
||||
|
||||
GStreamer is cross-platform and works on most UNIX-like platforms as
|
||||
well as Windows. It is released under the GNU Library General Public
|
||||
License (GNU LGPL).
|
||||
|
||||
![ Relation between gstreamer core objects. ]
|
||||
|
||||
[ Relation between gstreamer core objects. ]: images/gst-universe.svg
|
||||
|
||||
## Building on UNIX
|
||||
|
||||
On UNIX, GStreamer uses the standard GNU build system, using autoconf
|
||||
for package configuration and resolving portability issues, automake for
|
||||
building makefiles that comply with the GNU Coding Standards, and
|
||||
libtool for building shared libraries on multiple platforms. The normal
|
||||
sequence for compiling and installing the GStreamer library is thus:
|
||||
`./configure` `make` `make install`
|
||||
|
||||
The standard options provided by GNU autoconf may be passed to the
|
||||
`configure` script. Please see the autoconf documentation or run
|
||||
`./configure --help` for information about the standard options.
|
||||
|
||||
In addition there are several options to activate or deactivate
|
||||
features. E.g. passing `--disable-gst-debug` to `configure` will turn
|
||||
the debugging subsystem into a non-functional stub and remove all macro
|
||||
based invocations from within the library (and anything compiled against
|
||||
the library afterwards.)
|
||||
|
||||
If library size matters and one builds in a controlled environment, it
|
||||
is also possible to totally remove subsystem code. This is intentionally
|
||||
not offered as a configure option as it causes an ABI break. Code built
|
||||
against a version of GStreamer without these modifications needs to be
|
||||
recompiled.
|
||||
|
||||
`make CFLAGS="-DGST_REMOVE_DEPRECATED -DGST_REMOVE_DISABLED"`
|
||||
|
||||
- `GST_REMOVE_DEPRECATED` - Omit deprecated functions from the
|
||||
library.
|
||||
|
||||
- `GST_REMOVE_DISABLED` - Omit stubs for disabled subsystems from the
|
||||
library.
|
||||
|
||||
## Building GStreamer Applications
|
||||
|
||||
Applications and libraries can use `pkg-config` to get all the needed
|
||||
compiler and linker flags to build against GStreamer. Please note that
|
||||
GStreamer is split into several libraries itself.
|
||||
`pkg-config --list-all | grep gstreamer` will list the available
|
||||
libraries.
|
||||
|
||||
## Running and debugging GStreamer Applications
|
||||
|
||||
### Environment variables
|
||||
|
||||
GStreamer inspects a few of environment variables in addition to
|
||||
standard variables like LANG, PATH or HOME.
|
||||
|
||||
**GST_PLUGIN_SYSTEM_PATH, GST_PLUGIN_SYSTEM_PATH_1_0.**
|
||||
|
||||
This environment variable can be set to a colon-separated list of paths
|
||||
(or semicolon-separated list on Windows). If this variable is not set,
|
||||
GStreamer will fill in this list for you with
|
||||
|
||||
- plug-ins in the user's home directory, or rather the user's "data
|
||||
home" directory according to the xdg base dir specification. Usually
|
||||
this will be a directory called `plugins` inside the
|
||||
`.local/share/gstreamer-GST_API_VERSION` directory in the user's
|
||||
home directory by default, though this search path may change if the
|
||||
XDG_DATA_HOME environment variable is set.
|
||||
|
||||
- plug-ins installed system-wide. On this system, they are stored in
|
||||
`GST_PLUGINS_DIR`.
|
||||
|
||||
GStreamer will scan these paths for GStreamer plug-ins. These plug-ins
|
||||
will be loaded after the plug-ins in the GST_PLUGIN_PATH variable
|
||||
below. The paths are scanned in the given order. This allows a user to
|
||||
override system-installed plug-ins with his own versions.
|
||||
|
||||
The GST_PLUGIN_SYSTEM_PATH_1_0 variant is useful if both the old
|
||||
GStreamer 0.10 version and the new GStreamer 1.0 version need to be
|
||||
pointed to new plugin paths. The latter will use the _1_0 variant over
|
||||
the non-versioned one if it is set.
|
||||
|
||||
Setting this variable to an empty string will cause GStreamer not to
|
||||
scan any system paths at all for plug-ins. This can be useful if you're
|
||||
running uninstalled (for development purposes) or while running
|
||||
testsuites.
|
||||
|
||||
**GST_PLUGIN_PATH, GST_PLUGIN_PATH_1_0.**
|
||||
|
||||
This environment variable can be set to a colon-separated list of paths
|
||||
(or a semicolon-separated list on Windows). GStreamer will scan these
|
||||
paths for GStreamer plug-ins. These plug-ins will be loaded in addition
|
||||
to, and before, the plug-ins in the system paths.
|
||||
|
||||
The GST_PLUGIN_PATH_1_0 variant is useful if both the old GStreamer
|
||||
0.10 version and the new GStreamer 1.0 version need to be pointed to new
|
||||
plugin paths. The latter will use the _1_0 variant over the
|
||||
non-versioned one if it is set.
|
||||
|
||||
**GST_DEBUG.**
|
||||
|
||||
If GStreamer has been configured with `--enable-gst-debug=yes`, this
|
||||
variable can be set to a list of debug options, which cause GStreamer to
|
||||
print out different types of debugging information to stderr.
|
||||
|
||||
The variable takes a comma-separated list of "category_name:level"
|
||||
pairs to set specific levels for the individual categories. The level
|
||||
value ranges from 0 (nothing) to 9 (MEMDUMP).
|
||||
|
||||
* 1 - `ERROR`: Logs all fatal errors. These are errors that do not allow the core
|
||||
or elements to perform the requested action. The application can
|
||||
still recover if programmed to handle the conditions that triggered
|
||||
the error.
|
||||
* 2 - `WARNING`: Logs all warnings. Typically these are non-fatal, but user-visible
|
||||
problems are expected to happen.
|
||||
* 3 - `FIXME`: Logs all fixme messages. Fixme messages are messages that indicate
|
||||
that something in the executed code path is not fully implemented or
|
||||
handled yet. The purpose of this message is to make it easier to
|
||||
spot incomplete/unfinished pieces of code when reading the debug
|
||||
log.
|
||||
* 4 - `INFO`: Logs all informational messages. These are typically used for events
|
||||
in the system that only happen once, or are important and rare
|
||||
enough to be logged at this level.
|
||||
* 5 - `DEBUG`: Logs all debug messages. These are general debug messages for events
|
||||
that happen only a limited number of times during an object's
|
||||
lifetime; these include setup, teardown, change of parameters, ...
|
||||
* 6 - `LOG`: Logs all log messages. These are messages for events that happen
|
||||
repeatedly during an object's lifetime; these include streaming and
|
||||
steady-state conditions.
|
||||
* 7 - `TRACE`: Logs all trace messages. These messages for events that happen
|
||||
repeatedly during an object's lifetime such as the ref/unref cycles.
|
||||
* 9 - `MEMDUMP`: Log all memory dump messages. Memory dump messages are used to log
|
||||
(small) chunks of data as memory dumps in the log. They will be
|
||||
displayed as hexdump with ASCII characters.
|
||||
|
||||
The category_name can contain "`*"` as a wildcard.
|
||||
|
||||
For example, setting GST_DEBUG to `GST_AUTOPLUG:6,GST_ELEMENT_*:4`,
|
||||
will cause the `GST_AUTOPLUG` category to be logged at full `LOG` level,
|
||||
while all categories starting with `GST_ELEMENT_` will be logged at
|
||||
`INFO` level.
|
||||
|
||||
To get all possible debug output, set GST_DEBUG to `*:9`. For debugging
|
||||
purposes a `*:6` debug log is usually the most useful, as it contains
|
||||
all important information, but hides a lot of noise such as refs/unrefs.
|
||||
For bug reporting purposes, a `*:6` log is also what will be requested
|
||||
usually. It's often also worth running with `*:3` to see if there are
|
||||
any non-fatal errors or warnings that might be related to the problem at
|
||||
hand.
|
||||
|
||||
Since GStreamer 1.2 it is also possible to specify debug levels by name,
|
||||
e.g. GST_DEBUG=*:WARNING,*audio*:LOG
|
||||
|
||||
**GST_DEBUG_NO_COLOR.**
|
||||
|
||||
Set this environment variable to any value ("1" typically) to switch off
|
||||
colouring in GST_DEBUG output. This has the same effect as specifying
|
||||
the `--gst-debug-no-color` or `--gst-debug-color-mode`=off command line
|
||||
option to well-behaved GStreamer applications (ie. those that pass
|
||||
command-line options correctly to GStreamer). This is particularly
|
||||
useful to reduce the size of debug output and also allows for the output
|
||||
to be compressed much better than with colours turned on.
|
||||
|
||||
Has the same effect as setting GST_DEBUG_COLOR_MODE environment
|
||||
variable to "off".
|
||||
|
||||
**GST_DEBUG_COLOR_MODE.**
|
||||
|
||||
Set this environment variable to change log colouring in GST_DEBUG
|
||||
output. Possible values:
|
||||
|
||||
* `on`: Enables debug log output coloring. Uses default coloring method for
|
||||
current platform. This is the default.
|
||||
* `off`: Disables debug log output coloring. This has the same effect as
|
||||
specifying the `--gst-debug-color-mode`=off command line option to
|
||||
well-behaved GStreamer applications (ie. those that pass
|
||||
command-line options correctly to GStreamer). This is particularly
|
||||
useful to reduce the size of debug output and also allows for the
|
||||
output to be compressed much better than with colours turned on.
|
||||
|
||||
Has the same effect as setting GST_DEBUG_NO_COLOR environment
|
||||
variable to any value.
|
||||
* `auto`: Same as `on`.
|
||||
* `disable`: Same as `off`.
|
||||
* `unix`: Enables debug log output coloring and forces the use of UNIX termial
|
||||
codes for coloring, even if this method is not normally used on
|
||||
current platform. This has the same effect as specifying the
|
||||
`--gst-debug-color-mode`=unix command line option to well-behaved
|
||||
GStreamer applications (ie. those that pass command-line options
|
||||
correctly to GStreamer). This is particularly useful to dump debug
|
||||
output into a file on non-UNIX platforms to be sent to developers
|
||||
who have viewers that support UNIX terminal codes.
|
||||
|
||||
**GST_DEBUG_OPTIONS.**
|
||||
|
||||
This environment variable can be used to tweak the behaviour of the
|
||||
debugging system. Currently the only options supported are "pretty-tags"
|
||||
and "full-tags". In "pretty-tags" mode (the default), taglists in the
|
||||
debug log will be serialized so that only the first few and last few
|
||||
bytes of a buffer-type tag will be serialized into the log, to avoid
|
||||
dumping hundreds of lines of useless output into the log in case of
|
||||
large image tags and the like.
|
||||
|
||||
**GST_DEBUG_DUMP_DOT_DIR.**
|
||||
|
||||
Set this environment variable to a path to turn on all
|
||||
#GST_DEBUG_BIN_TO_DOT_FILE or
|
||||
#GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS calls and have the dot files
|
||||
in that location.
|
||||
|
||||
This will only work if the application in question makes these calls in
|
||||
strategic places (like when the pipeline state changes or an error
|
||||
occurs). gst-launch-GST_API_VERSION is one such application.
|
||||
|
||||
These .dot files can then be turned into images using the 'dot' utility
|
||||
from the graphviz set of tools, like this:
|
||||
`dot foo.dot -Tsvg -o foo.svg` or `dot foo.dot -Tpng -o foo.png` or
|
||||
`dot foo.dot -Tjpg -o foo.jpg`.
|
||||
|
||||
There is also a utility called `xdot` which allows you to view the dot
|
||||
file directly without converting it first.
|
||||
|
||||
**GST_REGISTRY, GST_REGISTRY_1_0.**
|
||||
|
||||
Set this environment variable to make GStreamer use a different file for
|
||||
the plugin cache / registry than the default one. This is useful when
|
||||
operating in a separate environment which should not affect the default
|
||||
cache in the user's home directory.
|
||||
|
||||
**GST_REGISTRY_FORK.**
|
||||
|
||||
Set this environment variable to "no" to prevent GStreamer from forking
|
||||
on startup in order to update the plugin registry. This is useful for
|
||||
debugging purposes, but should not be used under normal circumstances,
|
||||
since it means that plugins may be loaded into memory even if they are
|
||||
not needed by the application.
|
||||
|
||||
**GST_REGISTRY_UPDATE.**
|
||||
|
||||
Set this environment variable to "no" to prevent GStreamer from updating
|
||||
the plugin registry. This is useful for embedded device which is not
|
||||
updating the plugins frequently, it will save time when doing
|
||||
gst_init().
|
||||
|
||||
**GST_TRACE.**
|
||||
|
||||
Enable memory allocation tracing. Most GStreamer objects have support
|
||||
for tracing the number of unfreed objects and their memory pointers.
|
||||
|
||||
The variable takes a comma-separated list of tracing options to enable.
|
||||
|
||||
* live: Counts all live objects and dumps an overview of the number of
|
||||
unfreed objects at program exit.
|
||||
|
||||
* mem-live: Keep track of the unfreed memory pointers and dump an overview of
|
||||
all unfreed memory at program exit. Together with a level 9 debug
|
||||
log this can be used to follow the lifecycle of leaked objects in
|
||||
order to track down where they are leaked. This can be useful for
|
||||
debugging memory leaks in situations where tools such as valgrind
|
||||
are not available, or not an option.
|
||||
|
||||
Use `all` to enable all tracing flags.
|
||||
|
||||
**GST_DEBUG_FILE.**
|
||||
|
||||
Set this variable to a file path to redirect all GStreamer debug
|
||||
messages to this file. If left unset, debug messages with be output unto
|
||||
the standard error.
|
||||
|
||||
**ORC_CODE.**
|
||||
|
||||
Useful Orc environment variable. Set ORC_CODE=debug to enable debuggers
|
||||
such as gdb to create useful backtraces from Orc-generated code. Set
|
||||
ORC_CODE=backup or ORC_CODE=emulate if you suspect Orc's SIMD code
|
||||
generator is producing incorrect code (Quite a few important GStreamer
|
||||
plugins like videotestsrc, audioconvert or audioresample use Orc). One
|
||||
can also combine flags like ORC_CODE=backup,debug.
|
||||
|
||||
**G_DEBUG.**
|
||||
|
||||
Useful GLib environment variable. Set G_DEBUG=fatal_warnings to make
|
||||
GStreamer programs abort when a critical warning such as an assertion
|
||||
failure occurs. This is useful if you want to find out which part of the
|
||||
code caused that warning to be triggered and under what circumstances.
|
||||
Simply set G_DEBUG as mentioned above and run the program in gdb (or
|
||||
let it core dump). Then get a stack trace in the usual way.
|
||||
|
||||
**G_SLICE.**
|
||||
|
||||
Useful GLib environment variable. Set G_SLICE=always-malloc when
|
||||
running GStreamer programs in valgrind, or debugging memory leaks with
|
||||
other tools. See the GLib API reference for more details.
|
||||
|
||||
**GST_TAG_ENCODING.**
|
||||
|
||||
Try this character encoding first for tag-related strings where the
|
||||
encoding is not defined and which are not UTF-8 already. By default the
|
||||
current locale will be tried (if not UTF-8).
|
||||
|
||||
**GST_TAG_ID3_ENCODING.**
|
||||
|
||||
Try this character encoding first for ID3 tag-related strings where the
|
||||
encoding is not defined and which are not UTF-8 already. By default the
|
||||
current locale will be tried (if not UTF-8).
|
||||
|
||||
**GST_TAG_ID3V1_ENCODING.**
|
||||
|
||||
Try this character encoding first for ID3v1 tag-related strings where
|
||||
the encoding does not look like UTF-8.
|
||||
|
||||
**GST_GL_WINDOW.**
|
||||
|
||||
Influences the window system to use by the GStreamer OpenGL library.
|
||||
Common values are 'x11', 'wayland', 'win32' or 'cocoa'.
|
||||
|
||||
**GST_GL_PLATFORM.**
|
||||
|
||||
Influences the OpenGL platform to use by the GStreamer OpenGL library.
|
||||
Common values are 'egl', 'glx', 'wgl' or 'cgl'.
|
||||
|
||||
**GST_GL_API.**
|
||||
|
||||
Influences the OpenGL API requested by the OpenGL platform. Common
|
||||
values are 'opengl' or 'gles2'.
|
3
docs/libs/base/index.md
Normal file
3
docs/libs/base/index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Base and Utility classes
|
||||
|
||||
`gstreamer-base` provides some base classes to be extended by elements and utility classes that are most useful for plugin developers.
|
4
docs/libs/base/sitemap.txt
Normal file
4
docs/libs/base/sitemap.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
gi-index
|
||||
gstbitreader.h
|
||||
gstbytereader.h
|
||||
gstbytewriter.h
|
3
docs/libs/check/index.md
Normal file
3
docs/libs/check/index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Check Unit Testing
|
||||
|
||||
`gstreamer-check` provides functionality for writing unit tests that use the check framework.
|
2
docs/libs/check/sitemap.txt
Normal file
2
docs/libs/check/sitemap.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
gi-index
|
||||
gstcheck.h
|
3
docs/libs/controller/index.md
Normal file
3
docs/libs/controller/index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Dynamic Parameter Control
|
||||
|
||||
`gstreamer-controller` provides functionality to animate element properties over time.
|
1
docs/libs/controller/sitemap.txt
Normal file
1
docs/libs/controller/sitemap.txt
Normal file
|
@ -0,0 +1 @@
|
|||
gi-index
|
1
docs/libs/index.md
Normal file
1
docs/libs/index.md
Normal file
|
@ -0,0 +1 @@
|
|||
# GStreamer core libraries API
|
3
docs/libs/net/index.md
Normal file
3
docs/libs/net/index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Network Classes
|
||||
|
||||
`gstreamer-net-1.0` provides network elements and objects.
|
1
docs/libs/net/sitemap.txt
Normal file
1
docs/libs/net/sitemap.txt
Normal file
|
@ -0,0 +1 @@
|
|||
gi-index
|
144
docs/meson.build
Normal file
144
docs/meson.build
Normal file
|
@ -0,0 +1,144 @@
|
|||
build_hotdoc = false
|
||||
if meson.is_cross_build()
|
||||
if get_option('doc').enabled()
|
||||
error('Documentation enabled but building the doc while cross building is not supported yet.')
|
||||
endif
|
||||
|
||||
message('Documentation not built as building it while cross building is not supported yet.')
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
hotdoc_plugin_scanner = executable('gst-hotdoc-plugins-scanner',
|
||||
'gst-hotdoc-plugins-scanner.c',
|
||||
c_args : gst_c_args,
|
||||
include_directories : [configinc],
|
||||
dependencies : [gobject_dep, gmodule_dep, glib_dep, gst_dep],
|
||||
install_dir : helpers_install_dir,
|
||||
link_with: [printf_lib],
|
||||
install: true,
|
||||
)
|
||||
|
||||
configure_file(
|
||||
input: 'gst-plugins-doc-cache-generator.py',
|
||||
output: 'gst-plugins-doc-cache-generator',
|
||||
copy: true,
|
||||
install_dir : helpers_install_dir,
|
||||
)
|
||||
|
||||
plugins_cache_generator = find_program(join_paths(meson.current_build_dir(), 'gst-plugins-doc-cache-generator'))
|
||||
plugins_cache = join_paths(meson.current_source_dir(), 'plugins', 'gst_plugins_cache.json')
|
||||
plugins_doc_dep = custom_target('build-doc-cache',
|
||||
build_by_default: true,
|
||||
command: [plugins_cache_generator, plugins_cache, '@OUTPUT@', '@INPUT@'],
|
||||
input: plugins,
|
||||
output: 'gst_plugins_cache.json',
|
||||
depends: [hotdoc_plugin_scanner],
|
||||
)
|
||||
|
||||
hotdoc_p = find_program('hotdoc', required: get_option('doc'))
|
||||
if not hotdoc_p.found()
|
||||
message('Hotdoc not found, not building the documentation')
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
hotdoc = import('hotdoc')
|
||||
required_hotdoc_extensions = ['gi-extension', 'gst-extension']
|
||||
foreach extension: required_hotdoc_extensions
|
||||
if not hotdoc.has_extensions(extension)
|
||||
if get_option('doc').enabled()
|
||||
error('Documentation enabled but @0@ missing'.format(extension))
|
||||
endif
|
||||
|
||||
message('@0@ extension not found, not building documentation'.format(extension))
|
||||
subdir_done()
|
||||
endif
|
||||
endforeach
|
||||
|
||||
|
||||
if not build_gir
|
||||
if get_option('doc').enabled()
|
||||
error('Documentation enabled but introspection not built.')
|
||||
endif
|
||||
|
||||
message('Introspection not built, can\'t build the documentation')
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
all_plugins_paths = []
|
||||
foreach l: plugins
|
||||
all_plugins_paths += l.full_path()
|
||||
endforeach
|
||||
|
||||
build_hotdoc = true
|
||||
docconf = configuration_data()
|
||||
docconf.set('GST_API_VERSION', apiversion)
|
||||
|
||||
version_entities = configure_file(input : 'version.in',
|
||||
output : 'gst_api_version.md',
|
||||
configuration : docconf)
|
||||
|
||||
gst_excludes = []
|
||||
foreach h: ['gettext.h', 'glib-compat-private.h', 'glib-compat.h',
|
||||
'gst-i18n-app.h', 'gst-i18n-lib.h', 'gst_private.h',
|
||||
'gstelementdetails.h', 'gstmacros.h', 'gstmarshal.h',
|
||||
'math-compat.h', 'parse/grammar.tab.h',
|
||||
'../libs/gst/base/gstindex.h',
|
||||
'../libs/gst/base/gstindex.c',
|
||||
'parser/grammar.tab.pre.h', 'parse/parse_lex.h', 'types.h',
|
||||
'gst-printf.h', 'printf-args.h', 'printf-extension.h',
|
||||
'printf-parse.h', 'vasnprintf.h', 'gstregistrybinary.c',
|
||||
'gstregistrybinary.h', 'gstpluginloader.h', 'gstpluginloader.c']
|
||||
gst_excludes += [join_paths(meson.current_source_dir(), '..', 'gst', h)]
|
||||
endforeach
|
||||
|
||||
libs_doc = [hotdoc.generate_doc('gstreamer',
|
||||
project_version: apiversion,
|
||||
gi_c_sources: '../gst/*.[hc]',
|
||||
gi_sources: [gst_gir[0].full_path()],
|
||||
gi_c_source_filters: gst_excludes,
|
||||
sitemap: 'gst/sitemap.txt',
|
||||
index: 'gst/index.md',
|
||||
gi_index: 'gst/gi-index.md',
|
||||
gi_smart_index: true,
|
||||
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../gst/'), ],
|
||||
dependencies: [gst_dep, glib_dep, gobject_dep, gmodule_dep, hotdoc_plugin_scanner],
|
||||
extra_assets: [join_paths(meson.current_source_dir(), 'images')],
|
||||
)]
|
||||
|
||||
libs = [
|
||||
['base', gst_base_gir, gst_base_dep],
|
||||
['controller', gst_controller_gir, gst_controller_dep,],
|
||||
['net', gst_net_gir, gst_net_dep],
|
||||
['check', gst_check_gir, gst_check_dep],
|
||||
]
|
||||
|
||||
foreach lib: libs
|
||||
name = lib[0]
|
||||
gir = lib[1]
|
||||
deps = [lib[2], gir]
|
||||
libs_doc += [hotdoc.generate_doc('gstreamer-' + name,
|
||||
project_version: apiversion,
|
||||
gi_c_sources: ['../libs/gst/' + name + '/*.[hc]'],
|
||||
gi_c_source_filters: gst_excludes,
|
||||
gi_sources: gir[0].full_path(),
|
||||
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../libs/gst/' + name), ],
|
||||
sitemap: join_paths('libs', name, 'sitemap.txt'),
|
||||
index: join_paths('libs/', name, 'index.md'),
|
||||
gi_index: join_paths('libs/', name, 'index.md'),
|
||||
gi_smart_index: true,
|
||||
gi_order_generated_subpages: true,
|
||||
dependencies: deps + [hotdoc_plugin_scanner],
|
||||
install: false,
|
||||
)]
|
||||
endforeach
|
||||
|
||||
plugins_doc = [hotdoc.generate_doc('GStreamer-core-plugins',
|
||||
project_version: apiversion,
|
||||
sitemap: 'plugins/sitemap.txt',
|
||||
index: 'plugins/index.md',
|
||||
gst_index: 'plugins/index.md',
|
||||
gst_smart_index: true,
|
||||
gst_c_sources: ['../plugins/elements/*.c', '../plugins/elements/*.h'],
|
||||
dependencies: [plugins_doc_dep],
|
||||
gst_cache_file: plugins_cache,
|
||||
)]
|
|
@ -1,95 +0,0 @@
|
|||
GST_DOC_SCANOBJ = $(top_srcdir)/common/gstdoc-scangobj
|
||||
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
# The name of the module, e.g. 'glib'.
|
||||
#DOC_MODULE=gst-plugins-libs-@GST_API_VERSION@
|
||||
MODULE=gstreamer
|
||||
DOC_MODULE=$(MODULE)-plugins
|
||||
|
||||
# for upload-doc.mak
|
||||
DOC=$(MODULE)-plugins
|
||||
FORMATS=html
|
||||
html: html-build.stamp
|
||||
include $(top_srcdir)/common/upload-doc.mak
|
||||
|
||||
# Extra environment needed for Core only...
|
||||
INSPECT_EXTRA_ENVIRONMENT= \
|
||||
GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner
|
||||
|
||||
# The top-level SGML file. Change it if you want.
|
||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
|
||||
|
||||
# The directory containing the source code.
|
||||
# gtk-doc will search all .c & .h files beneath here for inline comments
|
||||
# documenting functions and macros.
|
||||
DOC_SOURCE_DIR = $(top_srcdir)/plugins/elements $(top_srcdir)/plugins/tracers
|
||||
|
||||
# Extra options to supply to gtkdoc-scan.
|
||||
SCAN_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb.
|
||||
MKDB_OPTIONS=--sgml-mode
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref.
|
||||
FIXXREF_OPTIONS=--extra-dir=$(top_builddir)/docs/gst/html \
|
||||
--extra-dir=$(top_builddir)/docs/libs/html \
|
||||
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
|
||||
--extra-dir=$(datadir)/gtk-doc/html
|
||||
|
||||
# Used for dependencies.
|
||||
HFILE_GLOB=$(top_srcdir)/plugins/elements/*.h $(top_srcdir)/plugins/tracers/*.h
|
||||
CFILE_GLOB=$(top_srcdir)/plugins/elements/*.c $(top_srcdir)/plugins/tracers/*.c
|
||||
|
||||
# Header files to ignore when scanning.
|
||||
IGNORE_HFILES =
|
||||
IGNORE_CFILES =
|
||||
|
||||
# we add all .h files of elements that have signals/args we want
|
||||
# sadly this also pulls in the private methods - maybe we should
|
||||
# move those around in the source ?
|
||||
# also, we should add some stuff here conditionally based on whether
|
||||
# or not the plugin will actually build
|
||||
# but I'm not sure about that - it might be this Just Works given that
|
||||
# the registry won't have the element
|
||||
|
||||
EXTRA_HFILES = \
|
||||
$(top_srcdir)/plugins/elements/gstcapsfilter.h \
|
||||
$(top_srcdir)/plugins/elements/gstdataurisrc.h \
|
||||
$(top_srcdir)/plugins/elements/gstdownloadbuffer.h \
|
||||
$(top_srcdir)/plugins/elements/gstfakesrc.h \
|
||||
$(top_srcdir)/plugins/elements/gstfakesink.h \
|
||||
$(top_srcdir)/plugins/elements/gstfdsink.h \
|
||||
$(top_srcdir)/plugins/elements/gstfdsrc.h \
|
||||
$(top_srcdir)/plugins/elements/gstfilesrc.h \
|
||||
$(top_srcdir)/plugins/elements/gstfilesink.h \
|
||||
$(top_srcdir)/plugins/elements/gstidentity.h \
|
||||
$(top_srcdir)/plugins/elements/gstinputselector.h \
|
||||
$(top_srcdir)/plugins/elements/gstmultiqueue.h \
|
||||
$(top_srcdir)/plugins/elements/gstoutputselector.h \
|
||||
$(top_srcdir)/plugins/elements/gstqueue.h \
|
||||
$(top_srcdir)/plugins/elements/gstqueue2.h \
|
||||
$(top_srcdir)/plugins/elements/gsttypefindelement.h \
|
||||
$(top_srcdir)/plugins/elements/gsttee.h \
|
||||
$(top_srcdir)/plugins/elements/gstvalve.h
|
||||
|
||||
# Images to copy into HTML directory.
|
||||
HTML_IMAGES =
|
||||
|
||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||
content_files =
|
||||
|
||||
# Other files to distribute.
|
||||
extra_files =
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
|
||||
# contains GtkObjects/GObjects and you want to document signals and properties.
|
||||
GTKDOC_CFLAGS = $(GST_OBJ_CFLAGS) -I$(top_builddir) -I$(top_builddir)/libs
|
||||
GTKDOC_LIBS = $(GST_OBJ_LIBS)
|
||||
|
||||
# If you need to override some of the declarations, place them in this file
|
||||
# and uncomment this line.
|
||||
#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
|
||||
DOC_OVERRIDES =
|
||||
|
||||
include $(top_srcdir)/common/gtk-doc-plugins.mak
|
2916
docs/plugins/gst_plugins_cache.json
Normal file
2916
docs/plugins/gst_plugins_cache.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,58 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % version-entities SYSTEM "version.entities">
|
||||
%version-entities;
|
||||
]>
|
||||
|
||||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
||||
<bookinfo>
|
||||
<title>GStreamer Core Plugins &GST_API_VERSION; Plugins Reference Manual</title>
|
||||
<releaseinfo>
|
||||
for GStreamer Core Plugins &GST_API_VERSION; (&GST_VERSION;)
|
||||
The latest version of this documentation can be found on-line at
|
||||
<ulink role="online-location" url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/</ulink>.
|
||||
</releaseinfo>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<title>gstreamer Elements</title>
|
||||
<xi:include href="xml/element-capsfilter.xml" />
|
||||
<xi:include href="xml/element-concat.xml" />
|
||||
<xi:include href="xml/element-dataurisrc.xml" />
|
||||
<xi:include href="xml/element-downloadbuffer.xml" />
|
||||
<xi:include href="xml/element-fakesink.xml" />
|
||||
<xi:include href="xml/element-fakesrc.xml" />
|
||||
<xi:include href="xml/element-fdsink.xml" />
|
||||
<xi:include href="xml/element-fdsrc.xml" />
|
||||
<xi:include href="xml/element-filesink.xml" />
|
||||
<xi:include href="xml/element-filesrc.xml" />
|
||||
<xi:include href="xml/element-funnel.xml" />
|
||||
<xi:include href="xml/element-identity.xml" />
|
||||
<xi:include href="xml/element-input-selector.xml" />
|
||||
<xi:include href="xml/element-multiqueue.xml" />
|
||||
<xi:include href="xml/element-output-selector.xml" />
|
||||
<xi:include href="xml/element-queue2.xml" />
|
||||
<xi:include href="xml/element-queue.xml" />
|
||||
<xi:include href="xml/element-streamiddemux.xml" />
|
||||
<xi:include href="xml/element-tee.xml" />
|
||||
<xi:include href="xml/element-typefind.xml" />
|
||||
<xi:include href="xml/element-valve.xml" />
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>gstreamer Tracers</title>
|
||||
<xi:include href="xml/element-latencytracer.xml" />
|
||||
<xi:include href="xml/element-leakstracer.xml" />
|
||||
<xi:include href="xml/element-logtracer.xml" />
|
||||
<xi:include href="xml/element-rusagetracer.xml" />
|
||||
<xi:include href="xml/element-statstracer.xml" />
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>gstreamer Plugins</title>
|
||||
<xi:include href="xml/plugin-coreelements.xml" />
|
||||
<xi:include href="xml/plugin-coretracers.xml" />
|
||||
</chapter>
|
||||
</book>
|
||||
|
|
@ -1,430 +0,0 @@
|
|||
<SECTION>
|
||||
<FILE>element-capsfilter</FILE>
|
||||
<TITLE>capsfilter</TITLE>
|
||||
GstCapsFilter
|
||||
GstCapsFilterCapsChangeMode
|
||||
<SUBSECTION Standard>
|
||||
GstCapsFilterClass
|
||||
GST_CAPS_FILTER
|
||||
GST_CAPS_FILTER_CAST
|
||||
GST_IS_CAPS_FILTER
|
||||
GST_CAPS_FILTER_CLASS
|
||||
GST_IS_CAPS_FILTER_CLASS
|
||||
GST_TYPE_CAPS_FILTER
|
||||
<SUBSECTION Private>
|
||||
gst_caps_filter_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-concat</FILE>
|
||||
<TITLE>concat</TITLE>
|
||||
GstConcat
|
||||
<SUBSECTION Standard>
|
||||
GstConcatClass
|
||||
GST_CONCAT
|
||||
GST_CONCAT_CAST
|
||||
GST_IS_CONCAT
|
||||
GST_CONCAT_CLASS
|
||||
GST_IS_CONCAT_CLASS
|
||||
GST_TYPE_CONCAT
|
||||
<SUBSECTION Private>
|
||||
gst_concat_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-dataurisrc</FILE>
|
||||
<TITLE>dataurisrc</TITLE>
|
||||
GstDataURISrc
|
||||
<SUBSECTION Standard>
|
||||
GstDataURISrcClass
|
||||
GST_DATA_URI_SRC
|
||||
GST_DATA_URI_SRC_CAST
|
||||
GST_IS_DATA_URI_SRC
|
||||
GST_DATA_URI_SRC_CLASS
|
||||
GST_IS_DATA_URI_SRC_CLASS
|
||||
GST_TYPE_DATA_URI_SRC
|
||||
<SUBSECTION Private>
|
||||
gst_data_uri_src_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-downloadbuffer</FILE>
|
||||
<TITLE>downloadbuffer</TITLE>
|
||||
GstDownloadBuffer
|
||||
<SUBSECTION Standard>
|
||||
GstDownloadBufferSize
|
||||
GstDownloadBufferClass
|
||||
GST_DOWNLOAD_BUFFER
|
||||
GST_DOWNLOAD_BUFFER_CAST
|
||||
GST_IS_DOWNLOAD_BUFFER
|
||||
GST_DOWNLOAD_BUFFER_CLASS
|
||||
GST_IS_DOWNLOAD_BUFFER_CLASS
|
||||
GST_TYPE_DOWNLOAD_BUFFER
|
||||
<SUBSECTION Private>
|
||||
gst_download_buffer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-fakesink</FILE>
|
||||
<TITLE>fakesink</TITLE>
|
||||
GstFakeSink
|
||||
GstFakeSinkStateError
|
||||
<SUBSECTION Standard>
|
||||
GstFakeSinkClass
|
||||
GST_FAKE_SINK
|
||||
GST_FAKE_SINK_CAST
|
||||
GST_IS_FAKE_SINK
|
||||
GST_FAKE_SINK_CLASS
|
||||
GST_IS_FAKE_SINK_CLASS
|
||||
GST_TYPE_FAKE_SINK
|
||||
<SUBSECTION Private>
|
||||
gst_fake_sink_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-fakesrc</FILE>
|
||||
<TITLE>fakesrc</TITLE>
|
||||
GstFakeSrc
|
||||
GstFakeSrcDataType
|
||||
GstFakeSrcFillType
|
||||
GstFakeSrcOutputType
|
||||
GstFakeSrcSizeType
|
||||
<SUBSECTION Standard>
|
||||
GstFakeSrcClass
|
||||
GST_FAKE_SRC
|
||||
GST_IS_FAKE_SRC
|
||||
GST_FAKE_SRC_CLASS
|
||||
GST_IS_FAKE_SRC_CLASS
|
||||
GST_TYPE_FAKE_SRC
|
||||
<SUBSECTION Private>
|
||||
gst_fake_src_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-fdsink</FILE>
|
||||
<TITLE>fdsink</TITLE>
|
||||
GstFdSink
|
||||
<SUBSECTION Standard>
|
||||
GstFdSinkClass
|
||||
GST_FD_SINK
|
||||
GST_FD_SINK_CAST
|
||||
GST_IS_FD_SINK
|
||||
GST_FD_SINK_CLASS
|
||||
GST_IS_FD_SINK_CLASS
|
||||
GST_TYPE_FD_SINK
|
||||
<SUBSECTION Private>
|
||||
gst_fd_sink_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-fdsrc</FILE>
|
||||
<TITLE>fdsrc</TITLE>
|
||||
GstFdSrc
|
||||
<SUBSECTION Standard>
|
||||
GstFdSrcClass
|
||||
GST_FD_SRC
|
||||
GST_IS_FD_SRC
|
||||
GST_FD_SRC_CLASS
|
||||
GST_IS_FD_SRC_CLASS
|
||||
GST_TYPE_FD_SRC
|
||||
<SUBSECTION Private>
|
||||
gst_fd_src_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-filesink</FILE>
|
||||
<TITLE>filesink</TITLE>
|
||||
GstFileSink
|
||||
GstFileSinkBufferMode
|
||||
<SUBSECTION Standard>
|
||||
GstFileSinkClass
|
||||
GST_FILE_SINK
|
||||
GST_FILE_SINK_CAST
|
||||
GST_IS_FILE_SINK
|
||||
GST_FILE_SINK_CLASS
|
||||
GST_IS_FILE_SINK_CLASS
|
||||
GST_TYPE_FILE_SINK
|
||||
GST_TYPE_FILE_SINK_BUFFER_MODE
|
||||
<SUBSECTION Private>
|
||||
gst_file_sink_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-filesrc</FILE>
|
||||
<TITLE>filesrc</TITLE>
|
||||
GstFileSrc
|
||||
<SUBSECTION Standard>
|
||||
GstFileSrcClass
|
||||
GST_FILE_SRC
|
||||
GST_FILE_SRC_CAST
|
||||
GST_IS_FILE_SRC
|
||||
GST_FILE_SRC_CLASS
|
||||
GST_IS_FILE_SRC_CLASS
|
||||
GST_TYPE_FILE_SRC
|
||||
<SUBSECTION Private>
|
||||
gst_file_src_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-funnel</FILE>
|
||||
<TITLE>funnel</TITLE>
|
||||
GstFunnel
|
||||
<SUBSECTION Standard>
|
||||
GstFunnelClass
|
||||
GST_FUNNEL
|
||||
GST_IS_FUNNEL
|
||||
GST_FUNNEL_CLASS
|
||||
GST_IS_FUNNEL_CLASS
|
||||
GST_TYPE_FUNNEL
|
||||
<SUBSECTION Private>
|
||||
gst_funnel_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-identity</FILE>
|
||||
<TITLE>identity</TITLE>
|
||||
GstIdentity
|
||||
<SUBSECTION Standard>
|
||||
GstIdentityClass
|
||||
GST_IDENTITY
|
||||
GST_IS_IDENTITY
|
||||
GST_IDENTITY_CLASS
|
||||
GST_IS_IDENTITY_CLASS
|
||||
GST_TYPE_IDENTITY
|
||||
<SUBSECTION Private>
|
||||
gst_identity_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-input-selector</FILE>
|
||||
<TITLE>input-selector</TITLE>
|
||||
GstInputSelector
|
||||
GstInputSelectorSyncMode
|
||||
<SUBSECTION Standard>
|
||||
GstInputSelectorClass
|
||||
GST_INPUT_SELECTOR
|
||||
GST_IS_INPUT_SELECTOR
|
||||
GST_INPUT_SELECTOR_CLASS
|
||||
GST_IS_INPUT_SELECTOR_CLASS
|
||||
GST_TYPE_INPUT_SELECTOR
|
||||
GST_INPUT_SELECTOR_BROADCAST
|
||||
GST_INPUT_SELECTOR_GET_COND
|
||||
GST_INPUT_SELECTOR_GET_LOCK
|
||||
GST_INPUT_SELECTOR_LOCK
|
||||
GST_INPUT_SELECTOR_UNLOCK
|
||||
GST_INPUT_SELECTOR_WAIT
|
||||
<SUBSECTION Private>
|
||||
gst_input_selector_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-latencytracer</FILE>
|
||||
<TITLE>latencytracer</TITLE>
|
||||
GstLatencyTracer
|
||||
<SUBSECTION Standard>
|
||||
GstLatencyTracerClass
|
||||
GST_LATENCY_TRACER
|
||||
GST_LATENCY_TRACER_CAST
|
||||
GST_IS_LATENCY_TRACER
|
||||
GST_LATENCY_TRACER_CLASS
|
||||
GST_IS_LATENCY_TRACER_CLASS
|
||||
GST_TYPE_LATENCY_TRACER
|
||||
<SUBSECTION Private>
|
||||
gst_latency_tracer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-leakstracer</FILE>
|
||||
<TITLE>leakstracer</TITLE>
|
||||
GstLeaksTracer
|
||||
<SUBSECTION Standard>
|
||||
GstLeaksTracerClass
|
||||
GST_LEAKS_TRACER
|
||||
GST_LEAKS_TRACER_CAST
|
||||
GST_IS_LEAKS_TRACER
|
||||
GST_LEAKS_TRACER_CLASS
|
||||
GST_IS_LEAKS_TRACER_CLASS
|
||||
GST_TYPE_LEAKS_TRACER
|
||||
<SUBSECTION Private>
|
||||
gst_leaks_tracer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-logtracer</FILE>
|
||||
<TITLE>logtracer</TITLE>
|
||||
GstLogTracer
|
||||
<SUBSECTION Standard>
|
||||
GstLogTracerClass
|
||||
GST_LOG_TRACER
|
||||
GST_LOG_TRACER_CAST
|
||||
GST_IS_LOG_TRACER
|
||||
GST_LOG_TRACER_CLASS
|
||||
GST_IS_LOG_TRACER_CLASS
|
||||
GST_TYPE_LOG_TRACER
|
||||
<SUBSECTION Private>
|
||||
gst_log_tracer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-multiqueue</FILE>
|
||||
<TITLE>multiqueue</TITLE>
|
||||
GstMultiQueue
|
||||
<SUBSECTION Standard>
|
||||
GstMultiQueueClass
|
||||
GST_MULTI_QUEUE
|
||||
GST_IS_MULTI_QUEUE
|
||||
GST_MULTI_QUEUE_CLASS
|
||||
GST_IS_MULTI_QUEUE_CLASS
|
||||
GST_TYPE_MULTI_QUEUE
|
||||
<SUBSECTION Private>
|
||||
gst_multi_queue_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-output-selector</FILE>
|
||||
<TITLE>output-selector</TITLE>
|
||||
GstOutputSelector
|
||||
GstOutputSelectorPadNegotiationMode
|
||||
<SUBSECTION Standard>
|
||||
GstOutputSelectorClass
|
||||
GST_OUTPUT_SELECTOR
|
||||
GST_IS_OUTPUT_SELECTOR
|
||||
GST_OUTPUT_SELECTOR_CLASS
|
||||
GST_IS_OUTPUT_SELECTOR_CLASS
|
||||
GST_TYPE_OUTPUT_SELECTOR
|
||||
<SUBSECTION Private>
|
||||
gst_output_selector_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-queue</FILE>
|
||||
<TITLE>queue</TITLE>
|
||||
GstQueue
|
||||
GstQueueLeaky
|
||||
<SUBSECTION Standard>
|
||||
GstQueueClass
|
||||
GST_QUEUE
|
||||
GST_QUEUE_CAST
|
||||
GST_IS_QUEUE
|
||||
GST_QUEUE_CLASS
|
||||
GST_IS_QUEUE_CLASS
|
||||
GST_TYPE_QUEUE
|
||||
<SUBSECTION Private>
|
||||
GstQueueSize
|
||||
gst_queue_get_type
|
||||
GST_QUEUE_CLEAR_LEVEL
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-queue2</FILE>
|
||||
<TITLE>queue2</TITLE>
|
||||
GstQueue2
|
||||
<SUBSECTION Standard>
|
||||
GstQueue2Class
|
||||
GST_QUEUE2
|
||||
GST_QUEUE2_CAST
|
||||
GST_IS_QUEUE2
|
||||
GST_QUEUE2_CLASS
|
||||
GST_IS_QUEUE2_CLASS
|
||||
GST_TYPE_QUEUE2
|
||||
<SUBSECTION Private>
|
||||
GstQueue2Size
|
||||
GstQueue2Range
|
||||
gst_queue2_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-rusagetracer</FILE>
|
||||
<TITLE>rusagetracer</TITLE>
|
||||
GstRUsageTracer
|
||||
<SUBSECTION Standard>
|
||||
GstRUsageTracerClass
|
||||
GST_RUSAGE_TRACER
|
||||
GST_RUSAGE_TRACER_CAST
|
||||
GST_IS_RUSAGE_TRACER
|
||||
GST_RUSAGE_TRACER_CLASS
|
||||
GST_IS_RUSAGE_TRACER_CLASS
|
||||
GST_TYPE_RUSAGE_TRACER
|
||||
<SUBSECTION Private>
|
||||
gst_rusage_tracer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-statstracer</FILE>
|
||||
<TITLE>statstracer</TITLE>
|
||||
GstStatsTracer
|
||||
<SUBSECTION Standard>
|
||||
GstStatsTracerClass
|
||||
GST_STATS_TRACER
|
||||
GST_STATS_TRACER_CAST
|
||||
GST_IS_STATS_TRACER
|
||||
GST_STATS_TRACER_CLASS
|
||||
GST_IS_STATS_TRACER_CLASS
|
||||
GST_TYPE_STATS_TRACER
|
||||
<SUBSECTION Private>
|
||||
gst_stats_tracer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-streamiddemux</FILE>
|
||||
<TITLE>streamiddemux</TITLE>
|
||||
GstStreamidDemux
|
||||
<SUBSECTION Standard>
|
||||
GstStreamidDemuxClass
|
||||
GST_STREAMID_DEMUX
|
||||
GST_STREAMID_DEMUX_CAST
|
||||
GST_IS_STREAMID_DEMUX
|
||||
GST_STREAMID_DEMUX_CLASS
|
||||
GST_IS_STREAMID_DEMUX_CLASS
|
||||
GST_TYPE_STREAMID_DEMUX
|
||||
<SUBSECTION Private>
|
||||
gst_streamid_demux_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-tee</FILE>
|
||||
<TITLE>tee</TITLE>
|
||||
GstTee
|
||||
GstTeePullMode
|
||||
<SUBSECTION Standard>
|
||||
GstTeeClass
|
||||
GST_TEE
|
||||
GST_TEE_CAST
|
||||
GST_IS_TEE
|
||||
GST_TEE_CLASS
|
||||
GST_IS_TEE_CLASS
|
||||
GST_TYPE_TEE
|
||||
<SUBSECTION Private>
|
||||
gst_tee_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-typefind</FILE>
|
||||
<TITLE>typefind</TITLE>
|
||||
GstTypeFindElement
|
||||
<SUBSECTION Standard>
|
||||
GstTypeFindElementClass
|
||||
GST_TYPE_FIND_ELEMENT
|
||||
GST_IS_TYPE_FIND_ELEMENT
|
||||
GST_TYPE_FIND_ELEMENT_CLASS
|
||||
GST_IS_TYPE_FIND_ELEMENT_CLASS
|
||||
GST_TYPE_TYPE_FIND_ELEMENT
|
||||
<SUBSECTION Private>
|
||||
gst_type_find_element_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>element-valve</FILE>
|
||||
<TITLE>valve</TITLE>
|
||||
GstValve
|
||||
<SUBSECTION Standard>
|
||||
GstValveClass
|
||||
GST_VALVE
|
||||
GST_IS_VALVE
|
||||
GST_VALVE_CLASS
|
||||
GST_IS_VALVE_CLASS
|
||||
GST_TYPE_VALVE
|
||||
<SUBSECTION Private>
|
||||
gst_valve_get_type
|
||||
</SECTION>
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -1,62 +0,0 @@
|
|||
GObject
|
||||
GInitiallyUnowned
|
||||
GstObject
|
||||
GstAllocator
|
||||
GstAllocatorSysmem
|
||||
GstBus
|
||||
GstClock
|
||||
GstControlBinding
|
||||
GstControlSource
|
||||
GstElement
|
||||
GstBaseSink
|
||||
GstFakeSink
|
||||
GstFdSink
|
||||
GstFileSink
|
||||
GstBaseSrc
|
||||
GstDataURISrc
|
||||
GstFakeSrc
|
||||
GstFileSrc
|
||||
GstPushSrc
|
||||
GstFdSrc
|
||||
GstBaseTransform
|
||||
GstCapsFilter
|
||||
GstIdentity
|
||||
GstBin
|
||||
GstPipeline
|
||||
GstConcat
|
||||
GstDownloadBuffer
|
||||
GstFunnel
|
||||
GstInputSelector
|
||||
GstMultiQueue
|
||||
GstOutputSelector
|
||||
GstQueue
|
||||
GstQueue2
|
||||
GstStreamidDemux
|
||||
GstTee
|
||||
GstTypeFindElement
|
||||
GstValve
|
||||
GstPad
|
||||
GstMultiQueuePad
|
||||
GstSelectorPad
|
||||
GstPadTemplate
|
||||
GstPlugin
|
||||
GstPluginFeature
|
||||
GstDeviceProviderFactory
|
||||
GstDynamicTypeFactory
|
||||
GstElementFactory
|
||||
GstTracerFactory
|
||||
GstTypeFindFactory
|
||||
GstRegistry
|
||||
GstTask
|
||||
GstTaskPool
|
||||
GstTracer
|
||||
GstLatencyTracer
|
||||
GstLeaksTracer
|
||||
GstLogTracer
|
||||
GstRUsageTracer
|
||||
GstStatsTracer
|
||||
GstTracerRecord
|
||||
GInterface
|
||||
GTypePlugin
|
||||
GstChildProxy
|
||||
GstURIHandler
|
|
@ -1,7 +0,0 @@
|
|||
GstBin GstChildProxy
|
||||
GstDataURISrc GstURIHandler
|
||||
GstFdSink GstURIHandler
|
||||
GstFdSrc GstURIHandler
|
||||
GstFileSink GstURIHandler
|
||||
GstFileSrc GstURIHandler
|
||||
GstPipeline GstChildProxy
|
|
@ -1 +0,0 @@
|
|||
GstChildProxy GObject
|
|
@ -1,93 +0,0 @@
|
|||
<SIGNAL>
|
||||
<NAME>GstTypeFindElement::have-type</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>l</FLAGS>
|
||||
GstTypeFindElement *gsttypefindelement
|
||||
guint arg1
|
||||
GstCaps *arg2
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstQueue::overrun</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstQueue *gstqueue
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstQueue::pushing</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstQueue *gstqueue
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstQueue::running</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstQueue *gstqueue
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstQueue::underrun</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstQueue *gstqueue
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstMultiQueue::overrun</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstMultiQueue *gstmultiqueue
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstMultiQueue::underrun</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstMultiQueue *gstmultiqueue
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstIdentity::handoff</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>l</FLAGS>
|
||||
GstIdentity *gstidentity
|
||||
GstBuffer *arg1
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstFakeSrc::handoff</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>l</FLAGS>
|
||||
GstFakeSrc *gstfakesrc
|
||||
GstBuffer *arg1
|
||||
GstPad *arg2
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstFakeSink::handoff</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>l</FLAGS>
|
||||
GstFakeSink *gstfakesink
|
||||
GstBuffer *arg1
|
||||
GstPad *arg2
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstFakeSink::preroll-handoff</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>l</FLAGS>
|
||||
GstFakeSink *gstfakesink
|
||||
GstBuffer *arg1
|
||||
GstPad *arg2
|
||||
</SIGNAL>
|
||||
|
||||
<SIGNAL>
|
||||
<NAME>GstQueue2::overrun</NAME>
|
||||
<RETURNS>void</RETURNS>
|
||||
<FLAGS>f</FLAGS>
|
||||
GstQueue2 *gstqueue2
|
||||
</SIGNAL>
|
||||
|
|
@ -1 +0,0 @@
|
|||
#include <gst/gst.h>
|
5
docs/plugins/index.md
Normal file
5
docs/plugins/index.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
short-description: GStreamer plugin from GStreamer core
|
||||
...
|
||||
|
||||
# Core Plugin
|
|
@ -1,412 +0,0 @@
|
|||
<plugin>
|
||||
<name>coreelements</name>
|
||||
<description>GStreamer core elements</description>
|
||||
<filename>../../plugins/elements/.libs/libgstcoreelements.so</filename>
|
||||
<basename>libgstcoreelements.so</basename>
|
||||
<version>1.17.0.1</version>
|
||||
<license>LGPL</license>
|
||||
<source>gstreamer</source>
|
||||
<package>GStreamer git</package>
|
||||
<origin>Unknown package origin</origin>
|
||||
<elements>
|
||||
<element>
|
||||
<name>capsfilter</name>
|
||||
<longname>CapsFilter</longname>
|
||||
<class>Generic</class>
|
||||
<description>Pass data without modification, limiting formats</description>
|
||||
<author>David Schleef <ds@schleef.org></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>concat</name>
|
||||
<longname>Concat</longname>
|
||||
<class>Generic</class>
|
||||
<description>Concatenate multiple streams</description>
|
||||
<author>Sebastian Dröge <sebastian@centricular.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink_%u</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>dataurisrc</name>
|
||||
<longname>data: URI source element</longname>
|
||||
<class>Source</class>
|
||||
<description>Handles data: uris</description>
|
||||
<author>Philippe Normand <pnormand@igalia.com>, Sebastian Dröge <sebastian.droege@collabora.co.uk></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>downloadbuffer</name>
|
||||
<longname>DownloadBuffer</longname>
|
||||
<class>Generic</class>
|
||||
<description>Download Buffer element</description>
|
||||
<author>Wim Taymans <wim.taymans@gmail.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>fakesink</name>
|
||||
<longname>Fake Sink</longname>
|
||||
<class>Sink</class>
|
||||
<description>Black hole for data</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com>, Mr. 'frag-me-more' Vanderwingo <wingo@fluendo.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>fakesrc</name>
|
||||
<longname>Fake Source</longname>
|
||||
<class>Source</class>
|
||||
<description>Push empty (no data) buffers around</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>fdsink</name>
|
||||
<longname>Filedescriptor Sink</longname>
|
||||
<class>Sink/File</class>
|
||||
<description>Write data to a file descriptor</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>fdsrc</name>
|
||||
<longname>Filedescriptor Source</longname>
|
||||
<class>Source/File</class>
|
||||
<description>Read from a file descriptor</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>filesink</name>
|
||||
<longname>File Sink</longname>
|
||||
<class>Sink/File</class>
|
||||
<description>Write stream to a file</description>
|
||||
<author>Thomas Vander Stichele <thomas at apestaart dot org></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>filesrc</name>
|
||||
<longname>File Source</longname>
|
||||
<class>Source/File</class>
|
||||
<description>Read from arbitrary point in a file</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>funnel</name>
|
||||
<longname>Funnel pipe fitting</longname>
|
||||
<class>Generic</class>
|
||||
<description>N-to-1 pipe fitting</description>
|
||||
<author>Olivier Crete <olivier.crete@collabora.co.uk></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink_%u</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>identity</name>
|
||||
<longname>Identity</longname>
|
||||
<class>Generic</class>
|
||||
<description>Pass data without modification</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>input-selector</name>
|
||||
<longname>Input selector</longname>
|
||||
<class>Generic</class>
|
||||
<description>N-to-1 input stream selector</description>
|
||||
<author>Julien Moutte <julien@moutte.net>, Jan Schmidt <thaytan@mad.scientist.com>, Wim Taymans <wim.taymans@gmail.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink_%u</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>multiqueue</name>
|
||||
<longname>MultiQueue</longname>
|
||||
<class>Generic</class>
|
||||
<description>Multiple data queue</description>
|
||||
<author>Edward Hervey <edward@fluendo.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink_%u</name>
|
||||
<direction>sink</direction>
|
||||
<presence>request</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src_%u</name>
|
||||
<direction>source</direction>
|
||||
<presence>sometimes</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>output-selector</name>
|
||||
<longname>Output selector</longname>
|
||||
<class>Generic</class>
|
||||
<description>1-to-N output stream selector</description>
|
||||
<author>Stefan Kost <stefan.kost@nokia.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src_%u</name>
|
||||
<direction>source</direction>
|
||||
<presence>request</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>queue</name>
|
||||
<longname>Queue</longname>
|
||||
<class>Generic</class>
|
||||
<description>Simple data queue</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>queue2</name>
|
||||
<longname>Queue 2</longname>
|
||||
<class>Generic</class>
|
||||
<description>Simple data queue</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim.taymans@gmail.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>streamiddemux</name>
|
||||
<longname>Streamid Demux</longname>
|
||||
<class>Generic</class>
|
||||
<description>1-to-N output stream by stream-id</description>
|
||||
<author>HoonHee Lee <hoonhee.lee@lge.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src_%u</name>
|
||||
<direction>source</direction>
|
||||
<presence>sometimes</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>tee</name>
|
||||
<longname>Tee pipe fitting</longname>
|
||||
<class>Generic</class>
|
||||
<description>1-to-N pipe fitting</description>
|
||||
<author>Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src_%u</name>
|
||||
<direction>source</direction>
|
||||
<presence>request</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>typefind</name>
|
||||
<longname>TypeFind</longname>
|
||||
<class>Generic</class>
|
||||
<description>Finds the media type of a stream</description>
|
||||
<author>Benjamin Otte <in7y118@public.uni-hamburg.de></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
<element>
|
||||
<name>valve</name>
|
||||
<longname>Valve element</longname>
|
||||
<class>Filter</class>
|
||||
<description>Drops buffers and events or lets them through</description>
|
||||
<author>Olivier Crete <olivier.crete@collabora.co.uk></author>
|
||||
<pads>
|
||||
<caps>
|
||||
<name>sink</name>
|
||||
<direction>sink</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
<caps>
|
||||
<name>src</name>
|
||||
<direction>source</direction>
|
||||
<presence>always</presence>
|
||||
<details>ANY</details>
|
||||
</caps>
|
||||
</pads>
|
||||
</element>
|
||||
</elements>
|
||||
</plugin>
|
|
@ -1,28 +0,0 @@
|
|||
<plugin>
|
||||
<name>coretracers</name>
|
||||
<description>GStreamer core tracers</description>
|
||||
<filename>../../plugins/tracers/.libs/libgstcoretracers.so</filename>
|
||||
<basename>libgstcoretracers.so</basename>
|
||||
<version>1.17.0.1</version>
|
||||
<license>LGPL</license>
|
||||
<source>gstreamer</source>
|
||||
<package>GStreamer git</package>
|
||||
<origin>Unknown package origin</origin>
|
||||
<elements>
|
||||
<tracer>
|
||||
<name>latency</name>
|
||||
</tracer>
|
||||
<tracer>
|
||||
<name>leaks</name>
|
||||
</tracer>
|
||||
<tracer>
|
||||
<name>log</name>
|
||||
</tracer>
|
||||
<tracer>
|
||||
<name>rusage</name>
|
||||
</tracer>
|
||||
<tracer>
|
||||
<name>stats</name>
|
||||
</tracer>
|
||||
</elements>
|
||||
</plugin>
|
1
docs/plugins/sitemap.txt
Normal file
1
docs/plugins/sitemap.txt
Normal file
|
@ -0,0 +1 @@
|
|||
gst-index
|
1
docs/version.in
Normal file
1
docs/version.in
Normal file
|
@ -0,0 +1 @@
|
|||
@GST_API_VERSION@
|
|
@ -25,6 +25,13 @@
|
|||
* @title: GstElement
|
||||
* @short_description: Abstract base class for all pipeline elements
|
||||
* @see_also: #GstElementFactory, #GstPad
|
||||
* @symbols:
|
||||
* - GST_ELEMENT_METADATA_LONGNAME
|
||||
* - GST_ELEMENT_METADATA_KLASS
|
||||
* - GST_ELEMENT_METADATA_DESCRIPTION
|
||||
* - GST_ELEMENT_METADATA_AUTHOR
|
||||
* - GST_ELEMENT_METADATA_DOC_URI
|
||||
* - GST_ELEMENT_METADATA_ICON_NAME
|
||||
*
|
||||
* GstElement is the abstract base class needed to construct an element that
|
||||
* can be used in a GStreamer pipeline. Please refer to the plugin writers
|
||||
|
|
|
@ -22,6 +22,12 @@
|
|||
* @title: GstError
|
||||
* @short_description: Categorized error messages
|
||||
* @see_also: #GstMessage
|
||||
* @symbols:
|
||||
* - gst_error_get_message
|
||||
* - gst_stream_error_quark
|
||||
* - gst_core_error_quark
|
||||
* - gst_resource_error_quark
|
||||
* - gst_library_error_quark
|
||||
*
|
||||
* GStreamer elements can throw non-fatal warnings and fatal errors.
|
||||
* Higher-level elements and applications can programmatically filter
|
||||
|
|
|
@ -3050,8 +3050,8 @@ gst_message_parse_streams_selected (GstMessage * message,
|
|||
* such as bitrate statistics for the given location.
|
||||
*
|
||||
* By default, message recipients should treat entries in the order they are
|
||||
* stored. The recipient should therefore try entry #0 first, and if this
|
||||
* entry is not acceptable or working, try entry #1 etc. Senders must make
|
||||
* stored. The recipient should therefore try entry \#0 first, and if this
|
||||
* entry is not acceptable or working, try entry \#1 etc. Senders must make
|
||||
* sure that they add entries in this order. However, recipients are free to
|
||||
* ignore the order and pick an entry that is "best" for them. One example
|
||||
* would be a recipient that scans the entries for the one with the highest
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
* to wait on them in a cancellable way
|
||||
*
|
||||
* A #GstPoll keeps track of file descriptors much like fd_set (used with
|
||||
* select()) or a struct pollfd array (used with poll()). Once created with
|
||||
* select ()) or a struct pollfd array (used with poll ()). Once created with
|
||||
* gst_poll_new(), the set can be used to wait for file descriptors to be
|
||||
* readable and/or writable. It is possible to make this wait be controlled
|
||||
* by specifying %TRUE for the @controllable flag when creating the set (or
|
||||
|
|
|
@ -262,7 +262,7 @@ if build_gir
|
|||
endif
|
||||
|
||||
gst_incdirs += [configinc]
|
||||
gst_gen_sources += [gnome.generate_gir(libgst,
|
||||
gst_gir = gnome.generate_gir(libgst,
|
||||
sources : gst_sources + gst_headers + gst_enums + [gst_version_h],
|
||||
namespace : 'Gst',
|
||||
nsversion : apiversion,
|
||||
|
@ -272,7 +272,8 @@ if build_gir
|
|||
includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
|
||||
install : true,
|
||||
extra_args : gst_gir_extra_args,
|
||||
)]
|
||||
)
|
||||
gst_gen_sources += gst_gir
|
||||
endif
|
||||
|
||||
gst_compile_args = []
|
||||
|
|
|
@ -31,6 +31,17 @@
|
|||
* SECTION:gstbitreader
|
||||
* @title: GstBitReader
|
||||
* @short_description: Reads any number of bits from a memory buffer
|
||||
* @symbols:
|
||||
* - gst_bit_reader_skip_unchecked
|
||||
* - gst_bit_reader_skip_to_byte_unchecked
|
||||
* - gst_bit_reader_get_bits_uint8_unchecked
|
||||
* - gst_bit_reader_peek_bits_uint8_unchecked
|
||||
* - gst_bit_reader_get_bits_uint16_unchecked
|
||||
* - gst_bit_reader_peek_bits_uint16_unchecked
|
||||
* - gst_bit_reader_get_bits_uint32_unchecked
|
||||
* - gst_bit_reader_peek_bits_uint32_unchecked
|
||||
* - gst_bit_reader_get_bits_uint64_unchecked
|
||||
* - gst_bit_reader_peek_bits_uint64_unchecked
|
||||
*
|
||||
* #GstBitReader provides a bit reader that can read any number of bits
|
||||
* from a memory buffer. It provides functions for reading any number of bits
|
||||
|
|
|
@ -33,6 +33,47 @@
|
|||
* @title: GstByteReader
|
||||
* @short_description: Reads different integer, string and floating point
|
||||
* types from a memory buffer
|
||||
* @symbols:
|
||||
* - gst_byte_reader_skip_unchecked
|
||||
* - gst_byte_reader_get_uint8_unchecked
|
||||
* - gst_byte_reader_peek_uint8_unchecked
|
||||
* - gst_byte_reader_get_int8_unchecked
|
||||
* - gst_byte_reader_peek_int8_unchecked
|
||||
* - gst_byte_reader_get_uint16_le_unchecked
|
||||
* - gst_byte_reader_get_uint16_be_unchecked
|
||||
* - gst_byte_reader_peek_uint16_le_unchecked
|
||||
* - gst_byte_reader_peek_uint16_be_unchecked
|
||||
* - gst_byte_reader_get_int16_le_unchecked
|
||||
* - gst_byte_reader_get_int16_be_unchecked
|
||||
* - gst_byte_reader_peek_int16_le_unchecked
|
||||
* - gst_byte_reader_peek_int16_be_unchecked
|
||||
* - gst_byte_reader_get_uint24_le_unchecked
|
||||
* - gst_byte_reader_get_uint24_be_unchecked
|
||||
* - gst_byte_reader_peek_uint24_le_unchecked
|
||||
* - gst_byte_reader_peek_uint24_be_unchecked
|
||||
* - gst_byte_reader_get_int24_le_unchecked
|
||||
* - gst_byte_reader_get_int24_be_unchecked
|
||||
* - gst_byte_reader_peek_int24_le_unchecked
|
||||
* - gst_byte_reader_peek_int24_be_unchecked
|
||||
* - gst_byte_reader_get_uint32_le_unchecked
|
||||
* - gst_byte_reader_get_uint32_be_unchecked
|
||||
* - gst_byte_reader_peek_uint32_le_unchecked
|
||||
* - gst_byte_reader_peek_uint32_be_unchecked
|
||||
* - gst_byte_reader_get_int32_le_unchecked
|
||||
* - gst_byte_reader_get_int32_be_unchecked
|
||||
* - gst_byte_reader_peek_int32_le_unchecked
|
||||
* - gst_byte_reader_peek_int32_be_unchecked
|
||||
* - gst_byte_reader_get_float32_le_unchecked
|
||||
* - gst_byte_reader_get_float32_be_unchecked
|
||||
* - gst_byte_reader_get_float64_le_unchecked
|
||||
* - gst_byte_reader_get_float64_be_unchecked
|
||||
* - gst_byte_reader_peek_float32_le_unchecked
|
||||
* - gst_byte_reader_peek_float32_be_unchecked
|
||||
* - gst_byte_reader_peek_float64_le_unchecked
|
||||
* - gst_byte_reader_peek_float64_be_unchecked
|
||||
* - gst_byte_reader_peek_data_unchecked
|
||||
* - gst_byte_reader_get_data_unchecked
|
||||
* - gst_byte_reader_dup_data_unchecked
|
||||
*
|
||||
* #GstByteReader provides a byte reader that can read different integer and
|
||||
* floating point types from a memory buffer. It provides functions for reading
|
||||
|
|
|
@ -30,6 +30,31 @@
|
|||
* @title: GstByteWriter
|
||||
* @short_description: Writes different integer, string and floating point
|
||||
* types to a memory buffer and allows reading
|
||||
* @symbols:
|
||||
* - gst_byte_writer_put_uint8_unchecked
|
||||
* - gst_byte_writer_put_uint16_be_unchecked
|
||||
* - gst_byte_writer_put_uint24_be_unchecked
|
||||
* - gst_byte_writer_put_uint32_be_unchecked
|
||||
* - gst_byte_writer_put_uint64_be_unchecked
|
||||
* - gst_byte_writer_put_uint16_le_unchecked
|
||||
* - gst_byte_writer_put_uint24_le_unchecked
|
||||
* - gst_byte_writer_put_uint32_le_unchecked
|
||||
* - gst_byte_writer_put_uint64_le_unchecked
|
||||
* - gst_byte_writer_put_int8_unchecked
|
||||
* - gst_byte_writer_put_int16_be_unchecked
|
||||
* - gst_byte_writer_put_int24_be_unchecked
|
||||
* - gst_byte_writer_put_int32_be_unchecked
|
||||
* - gst_byte_writer_put_int64_be_unchecked
|
||||
* - gst_byte_writer_put_int16_le_unchecked
|
||||
* - gst_byte_writer_put_int24_le_unchecked
|
||||
* - gst_byte_writer_put_int32_le_unchecked
|
||||
* - gst_byte_writer_put_int64_le_unchecked
|
||||
* - gst_byte_writer_put_float32_be_unchecked
|
||||
* - gst_byte_writer_put_float64_be_unchecked
|
||||
* - gst_byte_writer_put_float32_le_unchecked
|
||||
* - gst_byte_writer_put_float64_le_unchecked
|
||||
* - gst_byte_writer_put_data_unchecked
|
||||
* - gst_byte_writer_fill_unchecked
|
||||
*
|
||||
* #GstByteWriter provides a byte writer and reader that can write/read different
|
||||
* integer and floating point types to/from a memory buffer. It provides functions
|
||||
|
|
|
@ -53,7 +53,7 @@ gst_base = library('gstbase-@0@'.format(apiversion),
|
|||
|
||||
if build_gir
|
||||
gst_gir_extra_args = gir_init_section + [ '--c-include=gst/base/base.h' ]
|
||||
gst_base_gen_sources += [gnome.generate_gir(gst_base,
|
||||
gst_base_gir = gnome.generate_gir(gst_base,
|
||||
sources : gst_base_sources + gst_base_headers,
|
||||
namespace : 'GstBase',
|
||||
nsversion : apiversion,
|
||||
|
@ -65,7 +65,9 @@ if build_gir
|
|||
includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0', 'Gst-1.0'],
|
||||
install : true,
|
||||
extra_args : gst_gir_extra_args,
|
||||
)]
|
||||
)
|
||||
|
||||
gst_base_gen_sources += [gst_base_gir]
|
||||
endif
|
||||
|
||||
gst_base_dep = declare_dependency(link_with : gst_base,
|
||||
|
|
|
@ -53,7 +53,7 @@ gst_check_gen_sources = []
|
|||
|
||||
if build_gir
|
||||
gst_gir_extra_args = gir_init_section + [ '--c-include=gst/check/check.h' ]
|
||||
gst_check_gen_sources += [gnome.generate_gir(gst_check,
|
||||
gst_check_gir = gnome.generate_gir(gst_check,
|
||||
sources : gst_check_sources + gst_check_headers,
|
||||
namespace : 'GstCheck',
|
||||
nsversion : apiversion,
|
||||
|
@ -65,7 +65,8 @@ if build_gir
|
|||
includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0', 'Gst-1.0'],
|
||||
install : true,
|
||||
extra_args : gst_gir_extra_args,
|
||||
)]
|
||||
)
|
||||
gst_check_gen_sources += gst_check_gir
|
||||
endif
|
||||
|
||||
gst_check_dep = declare_dependency(link_with : gst_check,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
project('gstreamer', 'c',
|
||||
version : '1.17.0.1',
|
||||
meson_version : '>= 0.47',
|
||||
meson_version : '>= 0.48',
|
||||
default_options : [ 'warning_level=1',
|
||||
'buildtype=debugoptimized' ])
|
||||
|
||||
|
@ -521,6 +521,7 @@ endif
|
|||
subdir('pkgconfig')
|
||||
subdir('tests')
|
||||
subdir('data')
|
||||
subdir('docs')
|
||||
|
||||
# xgettext is optional (on Windows for instance)
|
||||
if find_program('xgettext', required : get_option('nls')).found()
|
||||
|
@ -529,7 +530,5 @@ if find_program('xgettext', required : get_option('nls')).found()
|
|||
endif
|
||||
|
||||
configure_file(output : 'config.h', configuration : cdata)
|
||||
|
||||
run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")')
|
||||
|
||||
install_data('gst-element-check-1.0.m4', install_dir : join_paths(get_option('datadir'), 'aclocal'))
|
||||
|
|
|
@ -44,3 +44,5 @@ option('package-name', type : 'string', yield : true,
|
|||
description : 'package name to use in plugins')
|
||||
option('package-origin', type : 'string', value : 'Unknown package origin', yield : true,
|
||||
description : 'package origin URL to use in plugins')
|
||||
option('doc', type : 'feature', value : 'auto', yield: true,
|
||||
description: 'Enable documentation.')
|
||||
|
|
|
@ -22,9 +22,9 @@
|
|||
/**
|
||||
* SECTION:element-capsfilter
|
||||
* @title: capsfilter
|
||||
* @short_description: enforce limitations on the data format
|
||||
*
|
||||
* The element does not modify data as such, but can enforce limitations on the
|
||||
* data format.
|
||||
* The element does not modify data as such, but can enforce limitations on the data format.
|
||||
*
|
||||
* ## Example launch line
|
||||
* |[
|
||||
|
|
|
@ -19,7 +19,11 @@
|
|||
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* plugin-coreelements:
|
||||
*
|
||||
* GStreamer core elements
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
|
|
|
@ -34,3 +34,5 @@ gst_elements = library('gstcoreelements',
|
|||
install_dir : plugins_install_dir,
|
||||
)
|
||||
pkgconfig.generate(gst_elements, install_dir : plugins_pkgconfig_install_dir)
|
||||
|
||||
plugins += [gst_elements]
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
plugins = []
|
||||
subdir('elements')
|
||||
if tracer_hooks
|
||||
subdir('tracers')
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
/*
|
||||
* This is a kind of hacky way to make all the tools use the same version code.
|
||||
* If anyone knows a less hacky way to get this done, feel free to implement it.
|
||||
*
|
||||
*
|
||||
* It also includes all the files that all the tools require.
|
||||
*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue