diff options
author | George Hazan <ghazan@miranda.im> | 2022-08-03 21:02:36 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2022-08-03 21:02:36 +0300 |
commit | 5323a782c4e8c42781f22ce2f488962a18f82554 (patch) | |
tree | f71537197b16f0f8fd0d6937f7120d018d220814 /include/gst/pbutils | |
parent | 50acf9d37183f86f6f623aad410003392b0af41f (diff) |
Jabber: initial version of Jingle support
Diffstat (limited to 'include/gst/pbutils')
-rw-r--r-- | include/gst/pbutils/codec-utils.h | 162 | ||||
-rw-r--r-- | include/gst/pbutils/descriptions.h | 101 | ||||
-rw-r--r-- | include/gst/pbutils/encoding-profile.h | 286 | ||||
-rw-r--r-- | include/gst/pbutils/encoding-target.h | 181 | ||||
-rw-r--r-- | include/gst/pbutils/gstaudiovisualizer.h | 112 | ||||
-rw-r--r-- | include/gst/pbutils/gstdiscoverer.h | 435 | ||||
-rw-r--r-- | include/gst/pbutils/gstpluginsbaseversion.h | 79 | ||||
-rw-r--r-- | include/gst/pbutils/install-plugins.h | 164 | ||||
-rw-r--r-- | include/gst/pbutils/missing-plugins.h | 90 | ||||
-rw-r--r-- | include/gst/pbutils/pbutils-enumtypes.h | 42 | ||||
-rw-r--r-- | include/gst/pbutils/pbutils-prelude.h | 41 | ||||
-rw-r--r-- | include/gst/pbutils/pbutils.h | 44 |
12 files changed, 1737 insertions, 0 deletions
diff --git a/include/gst/pbutils/codec-utils.h b/include/gst/pbutils/codec-utils.h new file mode 100644 index 0000000000..1aa72467c1 --- /dev/null +++ b/include/gst/pbutils/codec-utils.h @@ -0,0 +1,162 @@ +/* GStreamer base utils library codec-specific utility functions + * Copyright (C) 2010 Arun Raghavan <arun.raghavan@collabora.co.uk> + * 2010 Collabora Multimedia + * 2010 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PB_UTILS_CODEC_UTILS_H__ +#define __GST_PB_UTILS_CODEC_UTILS_H__ + +#include <gst/gst.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS + +/* AAC */ + +GST_PBUTILS_API +guint gst_codec_utils_aac_get_sample_rate_from_index (guint sr_idx); + +GST_PBUTILS_API +gint gst_codec_utils_aac_get_index_from_sample_rate (guint rate); + +GST_PBUTILS_API +const gchar * gst_codec_utils_aac_get_profile (const guint8 * audio_config, guint len); + +GST_PBUTILS_API +const gchar * gst_codec_utils_aac_get_level (const guint8 * audio_config, guint len); + +GST_PBUTILS_API +guint gst_codec_utils_aac_get_sample_rate (const guint8 * audio_config, guint len); + +GST_PBUTILS_API +guint gst_codec_utils_aac_get_channels (const guint8 * audio_config, guint len); + +GST_PBUTILS_API +gboolean gst_codec_utils_aac_caps_set_level_and_profile (GstCaps * caps, + const guint8 * audio_config, + guint len); + +/* H.264 */ + +GST_PBUTILS_API +const gchar * gst_codec_utils_h264_get_profile (const guint8 * sps, guint len); + +GST_PBUTILS_API +const gchar * gst_codec_utils_h264_get_level (const guint8 * sps, guint len); + +GST_PBUTILS_API +guint8 gst_codec_utils_h264_get_level_idc (const gchar * level); + +GST_PBUTILS_API +gboolean gst_codec_utils_h264_caps_set_level_and_profile (GstCaps * caps, + const guint8 * sps, + guint len); + +GST_PBUTILS_API +gboolean gst_codec_utils_h264_get_profile_flags_level (const guint8 * codec_data, + guint len, + guint8 * profile, + guint8 * flags, + guint8 * level); + +/* H.265 */ + +GST_PBUTILS_API +const gchar * gst_codec_utils_h265_get_profile (const guint8 * profile_tier_level, + guint len); + +GST_PBUTILS_API +const gchar * gst_codec_utils_h265_get_tier (const guint8 * profile_tier_level, + guint len); + +GST_PBUTILS_API +const gchar * gst_codec_utils_h265_get_level (const guint8 * profile_tier_level, + guint len); + +GST_PBUTILS_API +guint8 gst_codec_utils_h265_get_level_idc (const gchar * level); + +GST_PBUTILS_API +gboolean gst_codec_utils_h265_caps_set_level_tier_and_profile (GstCaps * caps, + const guint8 * profile_tier_level, + guint len); +/* MPEG-4 part 2 */ + +GST_PBUTILS_API +const gchar * gst_codec_utils_mpeg4video_get_profile (const guint8 * vis_obj_seq, guint len); + +GST_PBUTILS_API +const gchar * gst_codec_utils_mpeg4video_get_level (const guint8 * vis_obj_seq, guint len); + +GST_PBUTILS_API +gboolean gst_codec_utils_mpeg4video_caps_set_level_and_profile (GstCaps * caps, + const guint8 * vis_obj_seq, + guint len); + +/* Opus */ + +GST_PBUTILS_API +gboolean gst_codec_utils_opus_parse_caps (GstCaps * caps, + guint32 * rate, + guint8 * channels, + guint8 * channel_mapping_family, + guint8 * stream_count, + guint8 * coupled_count, + guint8 channel_mapping[256]); + +GST_PBUTILS_API +GstCaps * gst_codec_utils_opus_create_caps (guint32 rate, + guint8 channels, + guint8 channel_mapping_family, + guint8 stream_count, + guint8 coupled_count, + const guint8 * channel_mapping); + +GST_PBUTILS_API +GstCaps * gst_codec_utils_opus_create_caps_from_header (GstBuffer * header, GstBuffer * comments); + +GST_PBUTILS_API +GstBuffer * gst_codec_utils_opus_create_header (guint32 rate, + guint8 channels, + guint8 channel_mapping_family, + guint8 stream_count, + guint8 coupled_count, + const guint8 * channel_mapping, + guint16 pre_skip, + gint16 output_gain); + +GST_PBUTILS_API +gboolean gst_codec_utils_opus_parse_header (GstBuffer * header, + guint32 * rate, + guint8 * channels, + guint8 * channel_mapping_family, + guint8 * stream_count, + guint8 * coupled_count, + guint8 channel_mapping[256], + guint16 * pre_skip, + gint16 * output_gain); + +/* General */ +GST_PBUTILS_API +gchar * gst_codec_utils_caps_get_mime_codec (GstCaps * caps); + + +G_END_DECLS + +#endif /* __GST_PB_UTILS_CODEC_UTILS_H__ */ diff --git a/include/gst/pbutils/descriptions.h b/include/gst/pbutils/descriptions.h new file mode 100644 index 0000000000..8b28bf7214 --- /dev/null +++ b/include/gst/pbutils/descriptions.h @@ -0,0 +1,101 @@ +/* GStreamer base utils library source/sink/codec description support + * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PB_UTILS_DESCRIPTIONS_H__ +#define __GST_PB_UTILS_DESCRIPTIONS_H__ + +#include <gst/gsttaglist.h> +#include <gst/gstcaps.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS + +/** + * GstPbUtilsCapsDescriptionFlags: + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER: Caps describe a container format. + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_AUDIO: Caps describe an audio format, or a + * container format that can store audio. + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO: Caps describe an video format, or a + * container format that can store video. + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE: Caps describe an image format, or a + * container format that can store image. + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE: Caps describe an subtitle format, or a + * container format that can store subtitles. + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG: Container format is a tags container. + * @GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC: Container format can store any kind of + * stream type. + * + * Flags that are returned by gst_pb_utils_get_caps_description_flags() and + * describe the format of the caps. + * + * Since: 1.20 + */ +typedef enum { + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER = 1 << 0, + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_AUDIO = 1 << 1, + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO = 1 << 2, + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE = 1 << 3, + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE = 1 << 4, + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG = 1 << 5, + GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC = 1 << 6, +} GstPbUtilsCapsDescriptionFlags; + +/* + * functions for use by demuxers or decoders to add CODEC tags to tag lists + * from caps + */ + +GST_PBUTILS_API +gboolean gst_pb_utils_add_codec_description_to_tag_list (GstTagList * taglist, + const gchar * codec_tag, + const GstCaps * caps); + +GST_PBUTILS_API +gchar * gst_pb_utils_get_codec_description (const GstCaps * caps); + +/* + * functions mainly used by the missing plugins message creation functions to + * find descriptions of what exactly is missing + */ + +GST_PBUTILS_API +gchar * gst_pb_utils_get_source_description (const gchar * protocol); + +GST_PBUTILS_API +gchar * gst_pb_utils_get_sink_description (const gchar * protocol); + +GST_PBUTILS_API +gchar * gst_pb_utils_get_decoder_description (const GstCaps * caps); + +GST_PBUTILS_API +gchar * gst_pb_utils_get_encoder_description (const GstCaps * caps); + +GST_PBUTILS_API +gchar * gst_pb_utils_get_element_description (const gchar * factory_name); + +GST_PBUTILS_API +GstPbUtilsCapsDescriptionFlags gst_pb_utils_get_caps_description_flags (const GstCaps * caps); + +GST_PBUTILS_API +gchar * gst_pb_utils_get_file_extension_from_caps (const GstCaps *caps); + +G_END_DECLS + +#endif /* __GST_PB_UTILS_DESCRIPTIONS_H__ */ + diff --git a/include/gst/pbutils/encoding-profile.h b/include/gst/pbutils/encoding-profile.h new file mode 100644 index 0000000000..ad97d01f0b --- /dev/null +++ b/include/gst/pbutils/encoding-profile.h @@ -0,0 +1,286 @@ +/* GStreamer encoding profiles library + * Copyright (C) 2009-2010 Edward Hervey <edward.hervey@collabora.co.uk> + * (C) 2009-2010 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PROFILE_H__ +#define __GST_PROFILE_H__ + +#include <gst/gst.h> + +#include <gst/pbutils/pbutils-enumtypes.h> +#include <gst/pbutils/gstdiscoverer.h> + +G_BEGIN_DECLS + +/** + * GstEncodingProfile: + * + * The opaque base class object for all encoding profiles. This contains generic + * information like name, description, format and preset. + */ + +#define GST_TYPE_ENCODING_PROFILE \ + (gst_encoding_profile_get_type ()) +#define GST_ENCODING_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_PROFILE, GstEncodingProfile)) +#define GST_IS_ENCODING_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_PROFILE)) +typedef struct _GstEncodingProfile GstEncodingProfile; +typedef struct _GstEncodingProfileClass GstEncodingProfileClass; + +GST_PBUTILS_API +GType gst_encoding_profile_get_type (void); + + + +/** + * GstEncodingContainerProfile: + * + * Encoding profiles for containers. Keeps track of a list of #GstEncodingProfile + */ +#define GST_TYPE_ENCODING_CONTAINER_PROFILE \ + (gst_encoding_container_profile_get_type ()) +#define GST_ENCODING_CONTAINER_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_CONTAINER_PROFILE, GstEncodingContainerProfile)) +#define GST_IS_ENCODING_CONTAINER_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_CONTAINER_PROFILE)) +typedef struct _GstEncodingContainerProfile GstEncodingContainerProfile; +typedef struct _GstEncodingContainerProfileClass GstEncodingContainerProfileClass; + +GST_PBUTILS_API +GType gst_encoding_container_profile_get_type (void); + + + +/** + * GstEncodingVideoProfile: + * + * Variant of #GstEncodingProfile for video streams, allows specifying the @pass. + */ +#define GST_TYPE_ENCODING_VIDEO_PROFILE \ + (gst_encoding_video_profile_get_type ()) +#define GST_ENCODING_VIDEO_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_VIDEO_PROFILE, GstEncodingVideoProfile)) +#define GST_IS_ENCODING_VIDEO_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_VIDEO_PROFILE)) +typedef struct _GstEncodingVideoProfile GstEncodingVideoProfile; +typedef struct _GstEncodingVideoProfileClass GstEncodingVideoProfileClass; + +GST_PBUTILS_API +GType gst_encoding_video_profile_get_type (void); + + + +/** + * GstEncodingAudioProfile: + * + * Variant of #GstEncodingProfile for audio streams. + */ +#define GST_TYPE_ENCODING_AUDIO_PROFILE \ + (gst_encoding_audio_profile_get_type ()) +#define GST_ENCODING_AUDIO_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_AUDIO_PROFILE, GstEncodingAudioProfile)) +#define GST_IS_ENCODING_AUDIO_PROFILE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_AUDIO_PROFILE)) +typedef struct _GstEncodingAudioProfile GstEncodingAudioProfile; +typedef struct _GstEncodingAudioProfileClass GstEncodingAudioProfileClass; + +GST_PBUTILS_API +GType gst_encoding_audio_profile_get_type (void); + + + +/* GstEncodingProfile API */ + +/** + * gst_encoding_profile_unref: + * @profile: a #GstEncodingProfile + * + * Decreases the reference count of the @profile, possibly freeing the @profile. + */ +#define gst_encoding_profile_unref(profile) (g_object_unref ((GObject*) profile)) + +/** + * gst_encoding_profile_ref: + * @profile: a #GstEncodingProfile + * + * Increases the reference count of the @profile. + */ +#define gst_encoding_profile_ref(profile) (g_object_ref ((GObject*) profile)) + +GST_PBUTILS_API +const gchar * gst_encoding_profile_get_name (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_name (GstEncodingProfile *profile, + const gchar *name); + +GST_PBUTILS_API +const gchar * gst_encoding_profile_get_description (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_description (GstEncodingProfile *profile, + const gchar *description); + +GST_PBUTILS_API +GstCaps * gst_encoding_profile_get_format (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_format (GstEncodingProfile *profile, + GstCaps *format); + +GST_PBUTILS_API +gboolean gst_encoding_profile_get_allow_dynamic_output (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_allow_dynamic_output (GstEncodingProfile *profile, + gboolean allow_dynamic_output); + +GST_PBUTILS_API +gboolean gst_encoding_profile_get_single_segment (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_single_segment (GstEncodingProfile *profile, + gboolean single_segment); + +GST_PBUTILS_API +const gchar * gst_encoding_profile_get_preset (GstEncodingProfile *profile); + +GST_PBUTILS_API +const gchar * gst_encoding_profile_get_preset_name (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_preset (GstEncodingProfile *profile, + const gchar *preset); + +GST_PBUTILS_API +guint gst_encoding_profile_get_presence (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_presence (GstEncodingProfile *profile, + guint presence); + +GST_PBUTILS_API +void gst_encoding_profile_set_preset_name (GstEncodingProfile * profile, + const gchar * preset_name); + +GST_PBUTILS_API +GstCaps * gst_encoding_profile_get_restriction (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_restriction (GstEncodingProfile *profile, + GstCaps *restriction); + +GST_PBUTILS_API +gboolean gst_encoding_profile_is_equal (GstEncodingProfile *a, + GstEncodingProfile *b); + +GST_PBUTILS_API +GstCaps * gst_encoding_profile_get_input_caps (GstEncodingProfile *profile); + +GST_PBUTILS_API +const gchar * gst_encoding_profile_get_type_nick (GstEncodingProfile *profile); + +GST_PBUTILS_API +const gchar * gst_encoding_profile_get_file_extension (GstEncodingProfile * profile); + +GST_PBUTILS_API +GstEncodingProfile * gst_encoding_profile_find (const gchar *targetname, + const gchar *profilename, + const gchar *category); + +GST_PBUTILS_API +gboolean gst_encoding_profile_is_enabled (GstEncodingProfile *profile); + +GST_PBUTILS_API +void gst_encoding_profile_set_enabled (GstEncodingProfile *profile, + gboolean enabled); +/* GstEncodingContainerProfile API */ + +GST_PBUTILS_API +gboolean gst_encoding_container_profile_add_profile (GstEncodingContainerProfile *container, + GstEncodingProfile *profile); + +GST_PBUTILS_API +gboolean gst_encoding_container_profile_contains_profile (GstEncodingContainerProfile * container, + GstEncodingProfile *profile); + +GST_PBUTILS_API +const GList * gst_encoding_container_profile_get_profiles (GstEncodingContainerProfile *profile); + + +GST_PBUTILS_API +GstEncodingContainerProfile * gst_encoding_container_profile_new (const gchar *name, + const gchar *description, + GstCaps *format, + const gchar *preset); + + +/* Individual stream encodingprofile API */ + +GST_PBUTILS_API +GstEncodingVideoProfile * gst_encoding_video_profile_new (GstCaps *format, + const gchar *preset, + GstCaps *restriction, + guint presence); + +GST_PBUTILS_API +GstEncodingAudioProfile * gst_encoding_audio_profile_new (GstCaps *format, + const gchar *preset, + GstCaps *restriction, + guint presence); + +GST_PBUTILS_API +guint gst_encoding_video_profile_get_pass (GstEncodingVideoProfile *prof); + +GST_PBUTILS_API +gboolean gst_encoding_video_profile_get_variableframerate (GstEncodingVideoProfile *prof); + +GST_PBUTILS_API +void gst_encoding_video_profile_set_pass (GstEncodingVideoProfile *prof, + guint pass); + +GST_PBUTILS_API +void gst_encoding_video_profile_set_variableframerate (GstEncodingVideoProfile *prof, + gboolean variableframerate); + +GST_PBUTILS_API +GstEncodingProfile * gst_encoding_profile_from_discoverer (GstDiscovererInfo *info); + +GST_PBUTILS_API +GstEncodingProfile * gst_encoding_profile_copy (GstEncodingProfile *self); + +GST_PBUTILS_API +void gst_encoding_profile_set_element_properties (GstEncodingProfile *self, + GstStructure *element_properties); + +GST_PBUTILS_API +GstStructure *gst_encoding_profile_get_element_properties (GstEncodingProfile *self); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingAudioProfile, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingContainerProfile, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingProfile, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingVideoProfile, gst_object_unref) + +G_END_DECLS + +#endif /* __GST_PROFILE_H__ */ diff --git a/include/gst/pbutils/encoding-target.h b/include/gst/pbutils/encoding-target.h new file mode 100644 index 0000000000..9a51dac55f --- /dev/null +++ b/include/gst/pbutils/encoding-target.h @@ -0,0 +1,181 @@ +/* GStreamer encoding profile registry + * Copyright (C) 2010 Edward Hervey <edward.hervey@collabora.co.uk> + * (C) 2010 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PROFILE_REGISTRY_H__ +#define __GST_PROFILE_REGISTRY_H__ + +#include <gst/pbutils/encoding-profile.h> + +G_BEGIN_DECLS + + +/* FIXME/UNKNOWNS + * + * Should encoding categories be well-known strings/quarks ? + * + */ + +/** + * GST_ENCODING_CATEGORY_DEVICE: + * + * #GstEncodingTarget category for device-specific targets. + * The name of the target will usually be the constructor and model of the device, + * and that target will contain #GstEncodingProfiles suitable for that device. + */ +#define GST_ENCODING_CATEGORY_DEVICE "device" + +/** + * GST_ENCODING_CATEGORY_ONLINE_SERVICE: + * + * #GstEncodingTarget category for online-services. + * The name of the target will usually be the name of the online service + * and that target will contain #GstEncodingProfiles suitable for that online + * service. + */ + +#define GST_ENCODING_CATEGORY_ONLINE_SERVICE "online-service" + +/** + * GST_ENCODING_CATEGORY_STORAGE_EDITING: + * + * #GstEncodingTarget category for storage, archiving and editing targets. + * Those targets can be lossless and/or provide very fast random access content. + * The name of the target will usually be the container type or editing target, + * and that target will contain #GstEncodingProfiles suitable for editing or + * storage. + */ +#define GST_ENCODING_CATEGORY_STORAGE_EDITING "storage-editing" + +/** + * GST_ENCODING_CATEGORY_CAPTURE: + * + * #GstEncodingTarget category for recording and capture. + * Targets within this category are optimized for low latency encoding. + */ +#define GST_ENCODING_CATEGORY_CAPTURE "capture" + +/** + * GST_ENCODING_CATEGORY_FILE_EXTENSION: + * + * #GstEncodingTarget category for file extensions. + * The name of the target will be the name of the file extensions possible + * for a particular target. Those targets are defining like 'default' formats + * usually used for a particular file extension. + */ + +#define GST_ENCODING_CATEGORY_FILE_EXTENSION "file-extension" + +/** + * GstEncodingTarget: + * + * Collection of #GstEncodingProfile for a specific target or use-case. + * + * When being stored/loaded, targets come from a specific category, like + * #GST_ENCODING_CATEGORY_DEVICE. + */ +#define GST_TYPE_ENCODING_TARGET \ + (gst_encoding_target_get_type ()) +#define GST_ENCODING_TARGET(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ENCODING_TARGET, GstEncodingTarget)) +#define GST_IS_ENCODING_TARGET(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ENCODING_TARGET)) + +typedef struct _GstEncodingTarget GstEncodingTarget; +typedef GObjectClass GstEncodingTargetClass; + +GST_PBUTILS_API +GType gst_encoding_target_get_type (void); + +/** + * gst_encoding_target_unref: + * @target: a #GstEncodingTarget + * + * Decreases the reference count of the @target, possibly freeing it. + */ +#define gst_encoding_target_unref(target) \ + (g_object_unref ((GObject*) target)) + +/** + * gst_encoding_target_ref: + * @target: a #GstEncodingTarget + * + * Increases the reference count of the @target. + */ +#define gst_encoding_target_ref(target) \ + (g_object_ref ((GObject*) target)) + +GST_PBUTILS_API +GstEncodingTarget * gst_encoding_target_new (const gchar *name, + const gchar *category, + const gchar *description, + const GList *profiles); + +GST_PBUTILS_API +const gchar * gst_encoding_target_get_name (GstEncodingTarget *target); + +GST_PBUTILS_API +const gchar * gst_encoding_target_get_category (GstEncodingTarget *target); + +GST_PBUTILS_API +const gchar * gst_encoding_target_get_description (GstEncodingTarget *target); + +GST_PBUTILS_API +const gchar * gst_encoding_target_get_path (GstEncodingTarget *target); + +GST_PBUTILS_API +const GList * gst_encoding_target_get_profiles (GstEncodingTarget *target); + +GST_PBUTILS_API +GstEncodingProfile * gst_encoding_target_get_profile (GstEncodingTarget *target, + const gchar *name); + +GST_PBUTILS_API +gboolean gst_encoding_target_add_profile (GstEncodingTarget *target, + GstEncodingProfile *profile); + +GST_PBUTILS_API +gboolean gst_encoding_target_save (GstEncodingTarget *target, + GError **error); + +GST_PBUTILS_API +gboolean gst_encoding_target_save_to_file (GstEncodingTarget *target, + const gchar *filepath, + GError **error); + +GST_PBUTILS_API +GstEncodingTarget * gst_encoding_target_load (const gchar *name, + const gchar *category, + GError **error); + +GST_PBUTILS_API +GstEncodingTarget * gst_encoding_target_load_from_file (const gchar *filepath, + GError **error); + +GST_PBUTILS_API +GList * gst_encoding_list_available_categories (void); + +GST_PBUTILS_API +GList * gst_encoding_list_all_targets (const gchar * categoryname); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstEncodingTarget, gst_object_unref) + +G_END_DECLS + +#endif /* __GST_PROFILE_REGISTRY_H__ */ diff --git a/include/gst/pbutils/gstaudiovisualizer.h b/include/gst/pbutils/gstaudiovisualizer.h new file mode 100644 index 0000000000..5c9fb48925 --- /dev/null +++ b/include/gst/pbutils/gstaudiovisualizer.h @@ -0,0 +1,112 @@ +/* GStreamer + * Copyright (C) <2011> Stefan Kost <ensonic@users.sf.net> + * Copyright (C) <2015> Luis de Bethencourt <luis@debethencourt.com> + * + * gstaudiovisualizer.c: base class for audio visualisation elements + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_AUDIO_VISUALIZER_H__ +#define __GST_AUDIO_VISUALIZER_H__ + +#include <gst/gst.h> +#include <gst/base/gstbasetransform.h> + +#include <gst/video/video.h> +#include <gst/audio/audio.h> +#include <gst/base/gstadapter.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS +#define GST_TYPE_AUDIO_VISUALIZER (gst_audio_visualizer_get_type()) +#define GST_AUDIO_VISUALIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_VISUALIZER,GstAudioVisualizer)) +#define GST_AUDIO_VISUALIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_VISUALIZER,GstAudioVisualizerClass)) +#define GST_AUDIO_VISUALIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_AUDIO_VISUALIZER,GstAudioVisualizerClass)) +#define GST_IS_SYNAESTHESIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_VISUALIZER)) +#define GST_IS_SYNAESTHESIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIO_VISUALIZER)) +typedef struct _GstAudioVisualizer GstAudioVisualizer; +typedef struct _GstAudioVisualizerClass GstAudioVisualizerClass; +typedef struct _GstAudioVisualizerPrivate GstAudioVisualizerPrivate; + +typedef void (*GstAudioVisualizerShaderFunc)(GstAudioVisualizer *scope, const GstVideoFrame *s, GstVideoFrame *d); + +/** + * GstAudioVisualizerShader: + * @GST_AUDIO_VISUALIZER_SHADER_NONE: no shading + * @GST_AUDIO_VISUALIZER_SHADER_FADE: plain fading + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP: fade and move up + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN: fade and move down + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT: fade and move left + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT: fade and move right + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT: fade and move horizontally out + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN: fade and move horizontally in + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT: fade and move vertically out + * @GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN: fade and move vertically in + * + * Different types of supported background shading functions. + */ +typedef enum { + GST_AUDIO_VISUALIZER_SHADER_NONE, + GST_AUDIO_VISUALIZER_SHADER_FADE, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT, + GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN +} GstAudioVisualizerShader; + +struct _GstAudioVisualizer +{ + GstElement parent; + + guint req_spf; /* min samples per frame wanted by the subclass */ + + /* video state */ + GstVideoInfo vinfo; + + /* audio state */ + GstAudioInfo ainfo; + + /*< private >*/ + GstAudioVisualizerPrivate *priv; +}; + +struct _GstAudioVisualizerClass +{ + /*< private >*/ + GstElementClass parent_class; + + /*< public >*/ + /* virtual function, called whenever the format changes */ + gboolean (*setup) (GstAudioVisualizer * scope); + + /* virtual function for rendering a frame */ + gboolean (*render) (GstAudioVisualizer * scope, GstBuffer * audio, GstVideoFrame * video); + + gboolean (*decide_allocation) (GstAudioVisualizer * scope, GstQuery *query); +}; + +GST_PBUTILS_API +GType gst_audio_visualizer_get_type (void); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GstAudioVisualizer, gst_object_unref) + +G_END_DECLS +#endif /* __GST_AUDIO_VISUALIZER_H__ */ diff --git a/include/gst/pbutils/gstdiscoverer.h b/include/gst/pbutils/gstdiscoverer.h new file mode 100644 index 0000000000..61a6575391 --- /dev/null +++ b/include/gst/pbutils/gstdiscoverer.h @@ -0,0 +1,435 @@ +/* GStreamer + * Copyright (C) 2009 Edward Hervey <edward.hervey@collabora.co.uk> + * 2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _GST_DISCOVERER_H_ +#define _GST_DISCOVERER_H_ + +#include <gst/gst.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS + +#define GST_TYPE_DISCOVERER_STREAM_INFO \ + (gst_discoverer_stream_info_get_type ()) +#define GST_DISCOVERER_STREAM_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER_STREAM_INFO, GstDiscovererStreamInfo)) +#define GST_IS_DISCOVERER_STREAM_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER_STREAM_INFO)) +typedef struct _GstDiscovererStreamInfo GstDiscovererStreamInfo; +typedef GObjectClass GstDiscovererStreamInfoClass; + +GST_PBUTILS_API +GType gst_discoverer_stream_info_get_type (void); + +/** + * GstDiscovererStreamInfo: + * + * Base structure for information concerning a media stream. Depending on the + * stream type, one can find more media-specific information in + * #GstDiscovererAudioInfo, #GstDiscovererVideoInfo, and + * #GstDiscovererContainerInfo. + * + * The #GstDiscovererStreamInfo represents the topology of the stream. Siblings + * can be iterated over with gst_discoverer_stream_info_get_next() and + * gst_discoverer_stream_info_get_previous(). Children (sub-streams) of a + * stream can be accessed using the #GstDiscovererContainerInfo API. + * + * As a simple example, if you run #GstDiscoverer on an AVI file with one audio + * and one video stream, you will get a #GstDiscovererContainerInfo + * corresponding to the AVI container, which in turn will have a + * #GstDiscovererAudioInfo sub-stream and a #GstDiscovererVideoInfo sub-stream + * for the audio and video streams respectively. + */ +#define gst_discoverer_stream_info_ref(info) ((GstDiscovererStreamInfo*) g_object_ref((GObject*) info)) +#define gst_discoverer_stream_info_unref(info) (g_object_unref((GObject*) info)) + +GST_PBUTILS_API +GstDiscovererStreamInfo* gst_discoverer_stream_info_get_previous(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +GstDiscovererStreamInfo* gst_discoverer_stream_info_get_next(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +GstCaps* gst_discoverer_stream_info_get_caps(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +const GstTagList* gst_discoverer_stream_info_get_tags(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +const GstToc* gst_discoverer_stream_info_get_toc(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +const gchar* gst_discoverer_stream_info_get_stream_id(GstDiscovererStreamInfo* info); + +GST_PBUTILS_DEPRECATED_FOR(gst_discoverer_info_get_missing_elements_installer_details) +const GstStructure* gst_discoverer_stream_info_get_misc(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +const gchar * gst_discoverer_stream_info_get_stream_type_nick(GstDiscovererStreamInfo* info); + +GST_PBUTILS_API +gint gst_discoverer_stream_info_get_stream_number(GstDiscovererStreamInfo *info); + +/** + * GstDiscovererContainerInfo: + * + * #GstDiscovererStreamInfo specific to container streams. + */ +#define GST_TYPE_DISCOVERER_CONTAINER_INFO \ + (gst_discoverer_container_info_get_type ()) +#define GST_DISCOVERER_CONTAINER_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER_CONTAINER_INFO, GstDiscovererContainerInfo)) +#define GST_IS_DISCOVERER_CONTAINER_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER_CONTAINER_INFO)) +typedef struct _GstDiscovererContainerInfo GstDiscovererContainerInfo; +typedef GObjectClass GstDiscovererContainerInfoClass; + +GST_PBUTILS_API +GType gst_discoverer_container_info_get_type (void); + +GST_PBUTILS_API +GList *gst_discoverer_container_info_get_streams(GstDiscovererContainerInfo *info); + +GST_PBUTILS_API +const GstTagList* gst_discoverer_container_info_get_tags(const GstDiscovererContainerInfo *info); + + +/** + * GstDiscovererAudioInfo: + * + * #GstDiscovererStreamInfo specific to audio streams. + */ +#define GST_TYPE_DISCOVERER_AUDIO_INFO \ + (gst_discoverer_audio_info_get_type ()) +#define GST_DISCOVERER_AUDIO_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER_AUDIO_INFO, GstDiscovererAudioInfo)) +#define GST_IS_DISCOVERER_AUDIO_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER_AUDIO_INFO)) +typedef struct _GstDiscovererAudioInfo GstDiscovererAudioInfo; +typedef GObjectClass GstDiscovererAudioInfoClass; + +GST_PBUTILS_API +GType gst_discoverer_audio_info_get_type (void); + +GST_PBUTILS_API +guint gst_discoverer_audio_info_get_channels(const GstDiscovererAudioInfo* info); + +GST_PBUTILS_API +guint64 gst_discoverer_audio_info_get_channel_mask(const GstDiscovererAudioInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_audio_info_get_sample_rate(const GstDiscovererAudioInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_audio_info_get_depth(const GstDiscovererAudioInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_audio_info_get_bitrate(const GstDiscovererAudioInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_audio_info_get_max_bitrate(const GstDiscovererAudioInfo* info); + +GST_PBUTILS_API +const gchar * gst_discoverer_audio_info_get_language(const GstDiscovererAudioInfo* info); + +/** + * GstDiscovererVideoInfo: + * + * #GstDiscovererStreamInfo specific to video streams (this includes images). + */ +#define GST_TYPE_DISCOVERER_VIDEO_INFO \ + (gst_discoverer_video_info_get_type ()) +#define GST_DISCOVERER_VIDEO_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER_VIDEO_INFO, GstDiscovererVideoInfo)) +#define GST_IS_DISCOVERER_VIDEO_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER_VIDEO_INFO)) +typedef struct _GstDiscovererVideoInfo GstDiscovererVideoInfo; +typedef GObjectClass GstDiscovererVideoInfoClass; + +GST_PBUTILS_API +GType gst_discoverer_video_info_get_type (void); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_width(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_height(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_depth(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_framerate_num(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_framerate_denom(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_par_num(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_par_denom(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +gboolean gst_discoverer_video_info_is_interlaced(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_bitrate(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +guint gst_discoverer_video_info_get_max_bitrate(const GstDiscovererVideoInfo* info); + +GST_PBUTILS_API +gboolean gst_discoverer_video_info_is_image(const GstDiscovererVideoInfo* info); + +/** + * GstDiscovererSubtitleInfo: + * + * #GstDiscovererStreamInfo specific to subtitle streams (this includes text and + * image based ones). + */ +#define GST_TYPE_DISCOVERER_SUBTITLE_INFO \ + (gst_discoverer_subtitle_info_get_type ()) +#define GST_DISCOVERER_SUBTITLE_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER_SUBTITLE_INFO, GstDiscovererSubtitleInfo)) +#define GST_IS_DISCOVERER_SUBTITLE_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER_SUBTITLE_INFO)) +typedef struct _GstDiscovererSubtitleInfo GstDiscovererSubtitleInfo; +typedef GObjectClass GstDiscovererSubtitleInfoClass; + +GST_PBUTILS_API +GType gst_discoverer_subtitle_info_get_type (void); + +GST_PBUTILS_API +const gchar * gst_discoverer_subtitle_info_get_language(const GstDiscovererSubtitleInfo* info); + +/** + * GstDiscovererResult: + * @GST_DISCOVERER_OK: The discovery was successful + * @GST_DISCOVERER_URI_INVALID: the URI is invalid + * @GST_DISCOVERER_ERROR: an error happened and the GError is set + * @GST_DISCOVERER_TIMEOUT: the discovery timed-out + * @GST_DISCOVERER_BUSY: the discoverer was already discovering a file + * @GST_DISCOVERER_MISSING_PLUGINS: Some plugins are missing for full discovery + * + * Result values for the discovery process. + */ +typedef enum { + GST_DISCOVERER_OK = 0, + GST_DISCOVERER_URI_INVALID = 1, + GST_DISCOVERER_ERROR = 2, + GST_DISCOVERER_TIMEOUT = 3, + GST_DISCOVERER_BUSY = 4, + GST_DISCOVERER_MISSING_PLUGINS = 5 +} GstDiscovererResult; + +/** + * GstDiscovererSerializeFlags: + * @GST_DISCOVERER_SERIALIZE_BASIC: Serialize only basic information, excluding + * caps, tags and miscellaneous information + * @GST_DISCOVERER_SERIALIZE_CAPS: Serialize the caps for each stream + * @GST_DISCOVERER_SERIALIZE_TAGS: Serialize the tags for each stream + * @GST_DISCOVERER_SERIALIZE_MISC: Serialize miscellaneous information for each stream + * @GST_DISCOVERER_SERIALIZE_ALL: Serialize all the available info, including + * caps, tags and miscellaneous information + * + * You can use these flags to control what is serialized by + * gst_discoverer_info_to_variant() + * + * Since: 1.6 + */ + +typedef enum { + GST_DISCOVERER_SERIALIZE_BASIC = 0, + GST_DISCOVERER_SERIALIZE_CAPS = 1 << 0, + GST_DISCOVERER_SERIALIZE_TAGS = 1 << 1, + GST_DISCOVERER_SERIALIZE_MISC = 1 << 2, + GST_DISCOVERER_SERIALIZE_ALL = GST_DISCOVERER_SERIALIZE_CAPS | GST_DISCOVERER_SERIALIZE_TAGS | GST_DISCOVERER_SERIALIZE_MISC +} GstDiscovererSerializeFlags; + +/** + * GstDiscovererInfo: + * + * Structure containing the information of a URI analyzed by #GstDiscoverer. + */ +typedef struct _GstDiscovererInfo GstDiscovererInfo; + +#define GST_TYPE_DISCOVERER_INFO \ + (gst_discoverer_info_get_type ()) +#define GST_DISCOVERER_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER_INFO, GstDiscovererInfo)) +#define GST_IS_DISCOVERER_INFO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER_INFO)) +typedef GObjectClass GstDiscovererInfoClass; + +GST_PBUTILS_API +GType gst_discoverer_info_get_type (void); + +#define gst_discoverer_info_unref(info) (g_object_unref((GObject*)info)) +#define gst_discoverer_info_ref(info) (g_object_ref((GObject*)info)) + +GST_PBUTILS_API +GstDiscovererInfo* gst_discoverer_info_copy (GstDiscovererInfo * ptr); + +GST_PBUTILS_API +const gchar* gst_discoverer_info_get_uri(const GstDiscovererInfo* info); + +GST_PBUTILS_API +GstDiscovererResult gst_discoverer_info_get_result(const GstDiscovererInfo* info); + +GST_PBUTILS_API +GstDiscovererStreamInfo* gst_discoverer_info_get_stream_info(GstDiscovererInfo* info); + +GST_PBUTILS_API +GList* gst_discoverer_info_get_stream_list(GstDiscovererInfo* info); + +GST_PBUTILS_API +GstClockTime gst_discoverer_info_get_duration(const GstDiscovererInfo* info); + +GST_PBUTILS_API +gboolean gst_discoverer_info_get_seekable(const GstDiscovererInfo* info); + +GST_PBUTILS_API +gboolean gst_discoverer_info_get_live(const GstDiscovererInfo* info); + +GST_PBUTILS_DEPRECATED_FOR(gst_discoverer_info_get_missing_elements_installer_details) +const GstStructure* gst_discoverer_info_get_misc(const GstDiscovererInfo* info); + +GST_PBUTILS_DEPRECATED +const GstTagList* gst_discoverer_info_get_tags(const GstDiscovererInfo* info); +GST_PBUTILS_API +const GstToc* gst_discoverer_info_get_toc(const GstDiscovererInfo* info); + +GST_PBUTILS_API +const gchar** gst_discoverer_info_get_missing_elements_installer_details(const GstDiscovererInfo* info); + +GST_PBUTILS_API +GList * gst_discoverer_info_get_streams (GstDiscovererInfo *info, + GType streamtype); + +GST_PBUTILS_API +GList * gst_discoverer_info_get_audio_streams (GstDiscovererInfo *info); + +GST_PBUTILS_API +GList * gst_discoverer_info_get_video_streams (GstDiscovererInfo *info); + +GST_PBUTILS_API +GList * gst_discoverer_info_get_subtitle_streams (GstDiscovererInfo *info); + +GST_PBUTILS_API +GList * gst_discoverer_info_get_container_streams (GstDiscovererInfo *info); + +GST_PBUTILS_API +GVariant * gst_discoverer_info_to_variant (GstDiscovererInfo *info, + GstDiscovererSerializeFlags flags); + +GST_PBUTILS_API +GstDiscovererInfo * gst_discoverer_info_from_variant (GVariant *variant); + +GST_PBUTILS_API +void gst_discoverer_stream_info_list_free (GList *infos); + +#define GST_TYPE_DISCOVERER \ + (gst_discoverer_get_type()) +#define GST_DISCOVERER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DISCOVERER,GstDiscoverer)) +#define GST_DISCOVERER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DISCOVERER,GstDiscovererClass)) +#define GST_IS_DISCOVERER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DISCOVERER)) +#define GST_IS_DISCOVERER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DISCOVERER)) + +typedef struct _GstDiscoverer GstDiscoverer; +typedef struct _GstDiscovererClass GstDiscovererClass; +typedef struct _GstDiscovererPrivate GstDiscovererPrivate; + +/** + * GstDiscoverer: + * + * The #GstDiscoverer structure. + **/ +struct _GstDiscoverer { + GObject parent; + + /*< private >*/ + GstDiscovererPrivate *priv; + + gpointer _reserved[GST_PADDING]; +}; + +struct _GstDiscovererClass { + GObjectClass parentclass; + + /* signals */ + void (*finished) (GstDiscoverer *discoverer); + void (*starting) (GstDiscoverer *discoverer); + void (*discovered) (GstDiscoverer *discoverer, + GstDiscovererInfo *info, + const GError *err); + void (*source_setup) (GstDiscoverer *discoverer, + GstElement *source); + + gpointer _reserved[GST_PADDING]; +}; + +GST_PBUTILS_API +GType gst_discoverer_get_type (void); + +GST_PBUTILS_API +GstDiscoverer *gst_discoverer_new (GstClockTime timeout, GError **err); + +/* Asynchronous API */ + +GST_PBUTILS_API +void gst_discoverer_start (GstDiscoverer *discoverer); + +GST_PBUTILS_API +void gst_discoverer_stop (GstDiscoverer *discoverer); + +GST_PBUTILS_API +gboolean gst_discoverer_discover_uri_async (GstDiscoverer *discoverer, + const gchar *uri); + +/* Synchronous API */ + +GST_PBUTILS_API +GstDiscovererInfo * +gst_discoverer_discover_uri (GstDiscoverer * discoverer, + const gchar * uri, + GError ** err); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscoverer, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscovererAudioInfo, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscovererContainerInfo, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscovererInfo, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscovererStreamInfo, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscovererSubtitleInfo, gst_object_unref) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstDiscovererVideoInfo, gst_object_unref) + +G_END_DECLS + +#endif /* _GST_DISCOVERER_H */ diff --git a/include/gst/pbutils/gstpluginsbaseversion.h b/include/gst/pbutils/gstpluginsbaseversion.h new file mode 100644 index 0000000000..807096a8e0 --- /dev/null +++ b/include/gst/pbutils/gstpluginsbaseversion.h @@ -0,0 +1,79 @@ +/* GStreamer base plugins libraries version information + * Copyright (C) 2010 Tim-Philipp Müller <tim centricular net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PLUGINS_BASE_VERSION_H__ +#define __GST_PLUGINS_BASE_VERSION_H__ + +#include <gst/gst.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS + +/** + * GST_PLUGINS_BASE_VERSION_MAJOR: + * + * The major version of GStreamer's gst-plugins-base libraries at compile time. + */ +#define GST_PLUGINS_BASE_VERSION_MAJOR (1) +/** + * GST_PLUGINS_BASE_VERSION_MINOR: + * + * The minor version of GStreamer's gst-plugins-base libraries at compile time. + */ +#define GST_PLUGINS_BASE_VERSION_MINOR (20) +/** + * GST_PLUGINS_BASE_VERSION_MICRO: + * + * The micro version of GStreamer's gst-plugins-base libraries at compile time. + */ +#define GST_PLUGINS_BASE_VERSION_MICRO (3) +/** + * GST_PLUGINS_BASE_VERSION_NANO: + * + * The nano version of GStreamer's gst-plugins-base libraries at compile time. + * Actual releases have 0, GIT versions have 1, prerelease versions have 2-... + */ +#define GST_PLUGINS_BASE_VERSION_NANO (0) + +/** + * GST_CHECK_PLUGIN_BASE_VERSION: + * @major: a number indicating the major version + * @minor: a number indicating the minor version + * @micro: a number indicating the micro version + * + * Check whether a GStreamer's gst-plugins-base libraries' version equal to + * or greater than major.minor.micro is present. + */ +#define GST_CHECK_PLUGINS_BASE_VERSION(major,minor,micro) \ + (GST_PLUGINS_BASE_VERSION_MAJOR > (major) || \ + (GST_PLUGINS_BASE_VERSION_MAJOR == (major) && GST_PLUGINS_BASE_VERSION_MINOR > (minor)) || \ + (GST_PLUGINS_BASE_VERSION_MAJOR == (major) && GST_PLUGINS_BASE_VERSION_MINOR == (minor) && \ + GST_PLUGINS_BASE_VERSION_MICRO >= (micro)) || \ + (GST_PLUGINS_BASE_VERSION_MAJOR == (major) && GST_PLUGINS_BASE_VERSION_MINOR == (minor) && \ + GST_PLUGINS_BASE_VERSION_MICRO + 1 == (micro) && GST_PLUGINS_BASE_VERSION_NANO > 0)) + +GST_PBUTILS_API +void gst_plugins_base_version (guint *major, guint *minor, guint *micro, guint *nano); + +GST_PBUTILS_API +gchar * gst_plugins_base_version_string (void); + +G_END_DECLS + +#endif /* __GST_PLUGINS_BASE_VERSION_H__ */ diff --git a/include/gst/pbutils/install-plugins.h b/include/gst/pbutils/install-plugins.h new file mode 100644 index 0000000000..4a8878d67e --- /dev/null +++ b/include/gst/pbutils/install-plugins.h @@ -0,0 +1,164 @@ +/* GStreamer base utils library plugin install support for applications + * Copyright (C) 2007 Tim-Philipp Müller <tim centricular net> + * Copyright (C) 2006 Ryan Lortie <desrt desrt ca> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PB_UTILS_INSTALL_PLUGINS_H__ +#define __GST_PB_UTILS_INSTALL_PLUGINS_H__ + +#include <gst/gst.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS + +/* + * functions for use by applications to initiate installation of missing plugins + */ + +/** + * GstInstallPluginsReturn: + * @GST_INSTALL_PLUGINS_SUCCESS: all of the requested plugins could be + * installed + * @GST_INSTALL_PLUGINS_NOT_FOUND: no appropriate installation candidate for + * any of the requested plugins could be found. Only return this if nothing + * has been installed. Return #GST_INSTALL_PLUGINS_PARTIAL_SUCCESS if + * some (but not all) of the requested plugins could be installed. + * @GST_INSTALL_PLUGINS_ERROR: an error occurred during the installation. If + * this happens, the user has already seen an error message and another + * one should not be displayed + * @GST_INSTALL_PLUGINS_CRASHED: the installer had an unclean exit code + * (ie. death by signal) + * @GST_INSTALL_PLUGINS_PARTIAL_SUCCESS: some of the requested plugins could + * be installed, but not all + * @GST_INSTALL_PLUGINS_USER_ABORT: the user has aborted the installation + * @GST_INSTALL_PLUGINS_INVALID: the helper returned an invalid status code + * @GST_INSTALL_PLUGINS_STARTED_OK: returned by gst_install_plugins_async() to + * indicate that everything went fine so far and the provided callback + * will be called with the result of the installation later + * @GST_INSTALL_PLUGINS_INTERNAL_FAILURE: some internal failure has + * occurred when trying to start the installer + * @GST_INSTALL_PLUGINS_HELPER_MISSING: the helper script to call the + * actual installer is not installed + * @GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS: a previously-started plugin + * installation is still in progress, try again later + * + * Result codes returned by gst_install_plugins_async() and + * gst_install_plugins_sync(), and also the result code passed to the + * #GstInstallPluginsResultFunc specified with gst_install_plugins_async(). + * + * These codes indicate success or failure of starting an external installer + * program and to what extent the requested plugins could be installed. + */ +typedef enum { + /* Return codes from the installer. Returned by gst_install_plugins_sync(), + * or passed as result code to your #GstInstallPluginsResultFunc */ + GST_INSTALL_PLUGINS_SUCCESS = 0, + GST_INSTALL_PLUGINS_NOT_FOUND = 1, + GST_INSTALL_PLUGINS_ERROR = 2, + GST_INSTALL_PLUGINS_PARTIAL_SUCCESS = 3, + GST_INSTALL_PLUGINS_USER_ABORT = 4, + + /* Returned by gst_install_plugins_sync(), or passed as result code to your + * #GstInstallPluginsResultFunc */ + GST_INSTALL_PLUGINS_CRASHED = 100, + GST_INSTALL_PLUGINS_INVALID, + + /* Return codes from starting the external helper, may be returned by both + * gst_install_plugins_sync() and gst_install_plugins_async(), but should + * never be seen by a #GstInstallPluginsResultFunc */ + GST_INSTALL_PLUGINS_STARTED_OK = 200, + GST_INSTALL_PLUGINS_INTERNAL_FAILURE, + GST_INSTALL_PLUGINS_HELPER_MISSING, + GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS +} GstInstallPluginsReturn; + +/** + * GstInstallPluginsContext: + * + * Opaque context structure for the plugin installation. Use the provided + * API to set details on it. + */ + +#define GST_TYPE_INSTALL_PLUGINS_CONTEXT (gst_install_plugins_context_get_type()) + +typedef struct _GstInstallPluginsContext GstInstallPluginsContext; + +GST_PBUTILS_API +GstInstallPluginsContext * gst_install_plugins_context_new (void); + +GST_PBUTILS_API +GstInstallPluginsContext * gst_install_plugins_context_copy (GstInstallPluginsContext * ctx); +GST_PBUTILS_API +void gst_install_plugins_context_free (GstInstallPluginsContext * ctx); + +GST_PBUTILS_API +void gst_install_plugins_context_set_confirm_search (GstInstallPluginsContext * ctx, + gboolean confirm_search); + +GST_PBUTILS_API +void gst_install_plugins_context_set_desktop_id (GstInstallPluginsContext * ctx, + const gchar * desktop_id); + +GST_PBUTILS_API +void gst_install_plugins_context_set_startup_notification_id (GstInstallPluginsContext * ctx, + const gchar * startup_id); + +GST_PBUTILS_API +void gst_install_plugins_context_set_xid (GstInstallPluginsContext * ctx, + guint xid); + +GST_PBUTILS_API +GType gst_install_plugins_context_get_type (void); + +/** + * GstInstallPluginsResultFunc: + * @result: whether the installation of the requested plugins succeeded or not + * @user_data: the user data passed to gst_install_plugins_async() + * + * The prototype of the callback function that will be called once the + * external plugin installer program has returned. You only need to provide + * a callback function if you are using the asynchronous interface. + */ +typedef void (*GstInstallPluginsResultFunc) (GstInstallPluginsReturn result, + gpointer user_data); + +GST_PBUTILS_API +GstInstallPluginsReturn gst_install_plugins_async (const gchar * const * details, + GstInstallPluginsContext * ctx, + GstInstallPluginsResultFunc func, + gpointer user_data); + +GST_PBUTILS_API +GstInstallPluginsReturn gst_install_plugins_sync (const gchar * const * details, + GstInstallPluginsContext * ctx); + +GST_PBUTILS_API +const gchar * gst_install_plugins_return_get_name (GstInstallPluginsReturn ret); + +GST_PBUTILS_API +gboolean gst_install_plugins_installation_in_progress (void); + +GST_PBUTILS_API +gboolean gst_install_plugins_supported (void); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstInstallPluginsContext, gst_install_plugins_context_free) + +G_END_DECLS + +#endif /* __GST_PB_UTILS_INSTALL_PLUGINS_H__ */ + diff --git a/include/gst/pbutils/missing-plugins.h b/include/gst/pbutils/missing-plugins.h new file mode 100644 index 0000000000..c1e6c42e88 --- /dev/null +++ b/include/gst/pbutils/missing-plugins.h @@ -0,0 +1,90 @@ +/* GStreamer base utils library missing plugins support + * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PB_UTILS_MISSING_PLUGINS_H__ +#define __GST_PB_UTILS_MISSING_PLUGINS_H__ + +#include <gst/gst.h> +#include <gst/pbutils/pbutils-prelude.h> + +G_BEGIN_DECLS + +/* + * functions to create missing-plugin messages, for use by plugins primarily + */ + +GST_PBUTILS_API +GstMessage * gst_missing_uri_source_message_new (GstElement * element, + const gchar * protocol); + +GST_PBUTILS_API +GstMessage * gst_missing_uri_sink_message_new (GstElement * element, + const gchar * protocol); + +GST_PBUTILS_API +GstMessage * gst_missing_element_message_new (GstElement * element, + const gchar * factory_name); + +GST_PBUTILS_API +GstMessage * gst_missing_decoder_message_new (GstElement * element, + const GstCaps * decode_caps); + +GST_PBUTILS_API +GstMessage * gst_missing_encoder_message_new (GstElement * element, + const GstCaps * encode_caps); + +/* + * functions for use by applications when dealing with missing-plugin messages + */ + +GST_PBUTILS_API +gchar * gst_missing_plugin_message_get_installer_detail (GstMessage * msg); + +GST_PBUTILS_API +gchar * gst_missing_plugin_message_get_description (GstMessage * msg); + +GST_PBUTILS_API +gboolean gst_is_missing_plugin_message (GstMessage * msg); + + +/* + * functions for use by applications that know exactly what plugins they are + * missing and want to request them directly rather than just react to + * missing-plugin messages posted by elements such as playbin or decodebin + */ + +GST_PBUTILS_API +gchar * gst_missing_uri_source_installer_detail_new (const gchar * protocol); + +GST_PBUTILS_API +gchar * gst_missing_uri_sink_installer_detail_new (const gchar * protocol); + +GST_PBUTILS_API +gchar * gst_missing_element_installer_detail_new (const gchar * factory_name); + +GST_PBUTILS_API +gchar * gst_missing_decoder_installer_detail_new (const GstCaps * decode_caps); + +GST_PBUTILS_API +gchar * gst_missing_encoder_installer_detail_new (const GstCaps * encode_caps); + +G_END_DECLS + +#endif /* __GST_PB_UTILS_MISSING_PLUGINS_H__ */ + diff --git a/include/gst/pbutils/pbutils-enumtypes.h b/include/gst/pbutils/pbutils-enumtypes.h new file mode 100644 index 0000000000..3fea241e65 --- /dev/null +++ b/include/gst/pbutils/pbutils-enumtypes.h @@ -0,0 +1,42 @@ + +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#pragma once + + #include <glib-object.h> + #include <gst/pbutils/pbutils-prelude.h> + + G_BEGIN_DECLS + +/* enumerations from "descriptions.h" */ + +GST_PBUTILS_API +GType gst_pb_utils_caps_description_flags_get_type (void); +#define GST_TYPE_PB_UTILS_CAPS_DESCRIPTION_FLAGS (gst_pb_utils_caps_description_flags_get_type()) + +/* enumerations from "gstaudiovisualizer.h" */ + +GST_PBUTILS_API +GType gst_audio_visualizer_shader_get_type (void); +#define GST_TYPE_AUDIO_VISUALIZER_SHADER (gst_audio_visualizer_shader_get_type()) + +/* enumerations from "gstdiscoverer.h" */ + +GST_PBUTILS_API +GType gst_discoverer_result_get_type (void); +#define GST_TYPE_DISCOVERER_RESULT (gst_discoverer_result_get_type()) + +GST_PBUTILS_API +GType gst_discoverer_serialize_flags_get_type (void); +#define GST_TYPE_DISCOVERER_SERIALIZE_FLAGS (gst_discoverer_serialize_flags_get_type()) + +/* enumerations from "install-plugins.h" */ + +GST_PBUTILS_API +GType gst_install_plugins_return_get_type (void); +#define GST_TYPE_INSTALL_PLUGINS_RETURN (gst_install_plugins_return_get_type()) + +G_END_DECLS + +/* Generated data ends here */ + diff --git a/include/gst/pbutils/pbutils-prelude.h b/include/gst/pbutils/pbutils-prelude.h new file mode 100644 index 0000000000..eefec47664 --- /dev/null +++ b/include/gst/pbutils/pbutils-prelude.h @@ -0,0 +1,41 @@ +/* GStreamer Plugins Base Utils Library + * Copyright (C) 2018 GStreamer developers + * + * pbutils-prelude.h: prelude include header for gst-pbutils library + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PBUTILS_PRELUDE_H__ +#define __GST_PBUTILS_PRELUDE_H__ + +#include <gst/gst.h> + +#ifdef BUILDING_GST_PBUTILS +#define GST_PBUTILS_API GST_API_EXPORT /* from config.h */ +#else +#define GST_PBUTILS_API GST_API_IMPORT +#endif + +#ifndef GST_DISABLE_DEPRECATED +#define GST_PBUTILS_DEPRECATED GST_PBUTILS_API +#define GST_PBUTILS_DEPRECATED_FOR(f) GST_PBUTILS_API +#else +#define GST_PBUTILS_DEPRECATED G_DEPRECATED GST_PBUTILS_API +#define GST_PBUTILS_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) GST_PBUTILS_API +#endif + +#endif /* __GST_PBUTILS_PRELUDE_H__ */ diff --git a/include/gst/pbutils/pbutils.h b/include/gst/pbutils/pbutils.h new file mode 100644 index 0000000000..f04070b3a3 --- /dev/null +++ b/include/gst/pbutils/pbutils.h @@ -0,0 +1,44 @@ +/* GStreamer base utils library + * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_PB_UTILS_BASE_UTILS_H__ +#define __GST_PB_UTILS_BASE_UTILS_H__ + +#include <gst/gst.h> + +#include <gst/pbutils/gstpluginsbaseversion.h> +#include <gst/pbutils/descriptions.h> +#include <gst/pbutils/missing-plugins.h> +#include <gst/pbutils/install-plugins.h> +#include <gst/pbutils/codec-utils.h> +#include <gst/pbutils/pbutils-enumtypes.h> +#include <gst/pbutils/gstdiscoverer.h> +#include <gst/pbutils/encoding-profile.h> +#include <gst/pbutils/encoding-target.h> +#include <gst/pbutils/gstaudiovisualizer.h> + +G_BEGIN_DECLS + +GST_PBUTILS_API +void gst_pb_utils_init (void); + +G_END_DECLS + +#endif /* __GST_PB_UTILS_BASE_UTILS_H__ */ + |