view release on metacpan or search on metacpan
* own log handler. Since it's installed later, it seems to be
* preferred, so our's is never actually invoked. */
gperl_handle_logs_for ("GStreamer");
# --------------------------------------------------------------------------- #
=for apidoc __hide__
=cut
void
GET_VERSION_INFO (class)
PPCODE:
EXTEND (SP, 3);
/* 0.10.17 provides these macros, but with a different name. */
#if GST_CHECK_VERSION (0, 10, 17)
PUSHs (sv_2mortal (newSViv (GST_VERSION_MAJOR)));
PUSHs (sv_2mortal (newSViv (GST_VERSION_MINOR)));
PUSHs (sv_2mortal (newSViv (GST_VERSION_MICRO)));
#else
PUSHs (sv_2mortal (newSViv (GST_MAJOR_VERSION)));
PUSHs (sv_2mortal (newSViv (GST_MINOR_VERSION)));
PUSHs (sv_2mortal (newSViv (GST_MICRO_VERSION)));
OUTPUT:
RETVAL
=for apidoc __hide__
=cut
# void gst_version (guint *major, guint *minor, guint *micro, guint *nano);
void
gst_version (class)
PREINIT:
guint major, minor, micro, nano;
PPCODE:
PERL_UNUSED_VAR (ax);
gst_version (&major, &minor, µ, &nano);
EXTEND (sp, 3);
PUSHs (sv_2mortal (newSVuv (major)));
PUSHs (sv_2mortal (newSVuv (minor)));
PUSHs (sv_2mortal (newSVuv (micro)));
PUSHs (sv_2mortal (newSVuv (nano)));
=for apidoc __hide__
=cut
xs/GstChildProxy.xs view on Meta::CPAN
# FIXME: Needed?
# gboolean gst_child_proxy_lookup (GstObject *object, const gchar *name, GstObject **target, GParamSpec **pspec);
# void gst_child_proxy_get_property (GstObject * object, const gchar *name, GValue *value);
# void gst_child_proxy_get_valist (GstObject * object, const gchar * first_property_name, va_list var_args);
# void gst_child_proxy_get (GstObject * object, const gchar * first_property_name, ...);
void
gst_child_proxy_get_child_property (GstObject *object, const gchar *property, ...)
PREINIT:
int i;
PPCODE:
for (i = 1; i < items; i++) {
char *name = SvGChar (ST (i));
SV *sv;
GParamSpec *pspec;
GValue value = { 0, };
GstObject *target = NULL;
if (!gst_child_proxy_lookup (object, name, &target, &pspec)) {
const char * classname =
xs/GstClock.xs view on Meta::CPAN
clock, gst_object_ref (master)
GstClock_ornull * gst_clock_get_master (GstClock *clock);
# gboolean gst_clock_add_observation (GstClock *clock, GstClockTime slave, GstClockTime master, gdouble *r_squared);
void
gst_clock_add_observation (GstClock *clock, GstClockTime slave, GstClockTime master)
PREINIT:
gboolean retval;
gdouble r_squared;
PPCODE:
retval = gst_clock_add_observation (clock, slave, master, &r_squared);
EXTEND (sp, 2);
PUSHs (sv_2mortal (newSVuv (retval)));
PUSHs (sv_2mortal (newSVnv (r_squared)));
GstClockTime gst_clock_get_internal_time (GstClock *clock);
GstClockTime gst_clock_adjust_unlocked (GstClock *clock, GstClockTime internal);
GstClockID gst_clock_new_single_shot_id (GstClock *clock, GstClockTime time);
xs/GstClock.xs view on Meta::CPAN
GstClockTime gst_clock_id_get_time (GstClockID id);
# GstClockReturn gst_clock_id_wait (GstClockID id, GstClockTimeDiff *jitter);
void
gst_clock_id_wait (id)
GstClockID id
PREINIT:
GstClockReturn retval = 0;
GstClockTimeDiff jitter = 0;
PPCODE:
retval = gst_clock_id_wait (id, &jitter);
EXTEND (sp, 2);
PUSHs (sv_2mortal (newSVGstClockReturn (retval)));
PUSHs (sv_2mortal (newSVGstClockTime (jitter)));
# GstClockReturn gst_clock_id_wait_async (GstClockID id, GstClockCallback func, gpointer user_data);
GstClockReturn
gst_clock_id_wait_async (id, func, data=NULL);
GstClockID id
SV *func
xs/GstElement.xs view on Meta::CPAN
element, gst_event_ref (event)
gboolean gst_element_seek (GstElement *element, gdouble rate, GstFormat format, GstSeekFlags flags, GstSeekType cur_type, gint64 cur, GstSeekType stop_type, gint64 stop);
# G_CONST_RETURN GstQueryType* gst_element_get_query_types (GstElement *element);
void
gst_element_get_query_types (element)
GstElement *element
PREINIT:
GstQueryType *types;
PPCODE:
types = (GstQueryType *) gst_element_get_query_types (element);
if (types)
while (*types++)
XPUSHs (sv_2mortal (newSVGstQueryType (*types)));
gboolean gst_element_query (GstElement *element, GstQuery *query);
# gboolean gst_element_post_message (GstElement * element, GstMessage * message);
gboolean
gst_element_post_message (GstElement * element, GstMessage * message)
xs/GstElement.xs view on Meta::CPAN
gboolean gst_element_sync_state_with_parent (GstElement *element);
# GstStateChangeReturn gst_element_get_state (GstElement * element, GstState * state, GstState * pending, GstClockTime timeout);
void
gst_element_get_state (GstElement * element, GstClockTime timeout)
PREINIT:
GstStateChangeReturn retval;
GstState state;
GstState pending;
PPCODE:
retval = gst_element_get_state (element, &state, &pending, timeout);
EXTEND (sp, 3);
PUSHs (sv_2mortal (newSVGstStateChangeReturn (retval)));
PUSHs (sv_2mortal (newSVGstState (state)));
PUSHs (sv_2mortal (newSVGstState (pending)));
GstStateChangeReturn gst_element_set_state (GstElement *element, GstState state);
void gst_element_abort_state (GstElement * element);
xs/GstElementFactory.xs view on Meta::CPAN
const gchar * gst_element_factory_get_author (GstElementFactory *factory);
# FIXME: Need GstStaticPadTemplate handlers.
# # guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory);
# # const GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory);
# void
# gst_element_factory_get_static_pad_templates (factory)
# GstElementFactory *factory
# PREINIT:
# GList *templates, *i;
# PPCODE:
# templates = (GList *) gst_element_factory_get_static_pad_templates (factory);
# for (i = templates; i != NULL; i = i->next)
# XPUSHs (sv_2mortal (newSVGstPadTemplate (i->data)));
GstURIType gst_element_factory_get_uri_type (GstElementFactory *factory);
# gchar ** gst_element_factory_get_uri_protocols (GstElementFactory *factory);
void
gst_element_factory_get_uri_protocols (factory)
GstElementFactory *factory
PREINIT:
gchar **uris;
PPCODE:
uris = gst_element_factory_get_uri_protocols (factory);
if (uris) {
gchar *uri;
while ((uri = *(uris++)) != NULL)
XPUSHs (sv_2mortal (newSVGChar (uri)));
}
GstElement_ornull * gst_element_factory_create (GstElementFactory *factory, const gchar_ornull *name);
# GstElement * gst_element_factory_make (const gchar *factoryname, const gchar *name);
void
gst_element_factory_make (class, factoryname, name, ...);
const gchar *factoryname
const gchar *name
PREINIT:
int i;
PPCODE:
for (i = 1; i < items; i += 2)
XPUSHs (
sv_2mortal (
newSVGstElement_ornull (
gst_element_factory_make (SvGChar (ST (i)),
SvGChar (ST (i + 1))))));
# void __gst_element_factory_add_static_pad_template (GstElementFactory *elementfactory, GstStaticPadTemplate *templ);
# void __gst_element_factory_add_interface (GstElementFactory *elementfactory, const gchar *interfacename);
xs/GstFormat.xs view on Meta::CPAN
# gboolean gst_formats_contains (const GstFormat *formats, GstFormat format);
=for apidoc __function__
=cut
# G_CONST_RETURN GstFormatDefinition* gst_format_get_details (GstFormat format);
void
gst_format_get_details (format)
GstFormat format
PREINIT:
const GstFormatDefinition *details;
PPCODE:
details = gst_format_get_details (format);
if (details) {
EXTEND (sp, 3);
PUSHs (sv_2mortal (newSVGstFormat (details->value)));
PUSHs (sv_2mortal (newSVGChar (details->nick)));
PUSHs (sv_2mortal (newSVGChar (details->description)));
}
# FIXME
# GstIterator * gst_format_iterate_definitions (void);
xs/GstPad.xs view on Meta::CPAN
/* We need to keep the buffer alive. */
pad, gst_buffer_ref (buffer)
gboolean gst_pad_check_pull_range (GstPad *pad);
# GstFlowReturn gst_pad_pull_range (GstPad *pad, guint64 offset, guint size, GstBuffer **buffer);
void gst_pad_pull_range (GstPad *pad, guint64 offset, guint size)
PREINIT:
GstFlowReturn retval;
GstBuffer *buffer = NULL;
PPCODE:
retval = gst_pad_pull_range (pad, offset, size, &buffer);
EXTEND (sp, 2);
PUSHs (sv_2mortal (newSVGstFlowReturn (retval)));
PUSHs (sv_2mortal (newSVGstBuffer_ornull (buffer)));
gboolean gst_pad_push_event (GstPad *pad, GstEvent *event)
C_ARGS:
/* Need to keep event alive. */
pad, gst_event_ref (event)
xs/GstPad.xs view on Meta::CPAN
GstFlowReturn gst_pad_chain (GstPad *pad, GstBuffer *buffer)
C_ARGS:
/* We need to keep the buffer alive. */
pad, gst_buffer_ref (buffer)
# GstFlowReturn gst_pad_get_range (GstPad *pad, guint64 offset, guint size, GstBuffer **buffer);
void gst_pad_get_range (GstPad *pad, guint64 offset, guint size);
PREINIT:
GstFlowReturn retval;
GstBuffer *buffer = NULL;
PPCODE:
retval = gst_pad_get_range (pad, offset, size, &buffer);
EXTEND (sp, 2);
PUSHs (sv_2mortal (newSVGstFlowReturn (retval)));
PUSHs (sv_2mortal (newSVGstBuffer_ornull (buffer)));
gboolean gst_pad_send_event (GstPad *pad, GstEvent *event)
C_ARGS:
/* Need to keep event alive. */
pad, gst_event_ref (event)
xs/GstPad.xs view on Meta::CPAN
# GList* gst_pad_get_internal_links (GstPad *pad);
# GList* gst_pad_get_internal_links_default (GstPad *pad);
void
gst_pad_get_internal_links (pad)
GstPad *pad
ALIAS:
get_internal_links_default = 1
PREINIT:
GList *list, *i;
PPCODE:
list = ix == 1 ? gst_pad_get_internal_links_default (pad) :
gst_pad_get_internal_links (pad);
for (i = list; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstPad (i->data)));
# FIXME?
# void gst_pad_set_query_type_function (GstPad *pad, GstPadQueryTypeFunction type_func);
# G_CONST_RETURN GstQueryType* gst_pad_get_query_types (GstPad *pad);
# G_CONST_RETURN GstQueryType* gst_pad_get_query_types_default (GstPad *pad);
void
gst_pad_get_query_types (pad)
GstPad *pad
ALIAS:
get_query_types_default = 1
PREINIT:
const GstQueryType *types = NULL;
PPCODE:
types = ix == 1 ? gst_pad_get_query_types_default (pad) :
gst_pad_get_query_types (pad);
if (types)
while (*types++)
XPUSHs (sv_2mortal (newSVGstQueryType (*types)));
gboolean gst_pad_query (GstPad *pad, GstQuery *query);
# FIXME?
# void gst_pad_set_query_function (GstPad *pad, GstPadQueryFunction query);
xs/GstQuery.xs view on Meta::CPAN
# gboolean gst_query_types_contains (const GstQueryType *types, GstQueryType type);
=for apidoc __function__
=cut
# G_CONST_RETURN GstQueryTypeDefinition* gst_query_type_get_details (GstQueryType type);
void
gst_query_type_get_details (type)
GstQueryType type
PREINIT:
const GstQueryTypeDefinition *details;
PPCODE:
details = gst_query_type_get_details (type);
if (details) {
EXTEND (sp, 3);
PUSHs (sv_2mortal (newSVGstQueryType (details->value)));
PUSHs (sv_2mortal (newSVGChar (details->nick)));
PUSHs (sv_2mortal (newSVGChar (details->description)));
}
# FIXME: Need to somehow apply our converter to the content.
# GstIterator * gst_query_type_iterate_definitions (void);
xs/GstQuery.xs view on Meta::CPAN
OUTPUT:
RETVAL
# void gst_query_set_position (GstQuery *query, GstFormat format, gint64 cur);
# void gst_query_parse_position (GstQuery *query, GstFormat *format, gint64 *cur);
void
position (GstQuery *query, GstFormat format=0, gint64 cur=0)
PREINIT:
GstFormat old_format;
gint64 old_cur;
PPCODE:
gst_query_parse_position (query, &old_format, &old_cur);
if (items == 3)
gst_query_set_position (query, format, cur);
EXTEND (sp, 2);
PUSHs (sv_2mortal (newSVGstFormat (old_format)));
PUSHs (sv_2mortal (newSVGInt64 (old_cur)));
# --------------------------------------------------------------------------- #
MODULE = GStreamer::Query PACKAGE = GStreamer::Query::Duration
xs/GstQuery.xs view on Meta::CPAN
OUTPUT:
RETVAL
# void gst_query_set_duration (GstQuery *query, GstFormat format, gint64 duration);
# void gst_query_parse_duration (GstQuery *query, GstFormat *format, gint64 *duration);
void
duration (GstQuery *query, GstFormat format=0, gint64 duration=0)
PREINIT:
GstFormat old_format;
gint64 old_duration;
PPCODE:
gst_query_parse_duration (query, &old_format, &old_duration);
if (items == 3)
gst_query_set_duration (query, format, duration);
EXTEND (sp, 2);
PUSHs (sv_2mortal (newSVGstFormat (old_format)));
PUSHs (sv_2mortal (newSVGInt64 (old_duration)));
# --------------------------------------------------------------------------- #
MODULE = GStreamer::Query PACKAGE = GStreamer::Query::Convert
xs/GstQuery.xs view on Meta::CPAN
# void gst_query_set_convert (GstQuery *query, GstFormat src_format, gint64 src_value, GstFormat dest_format, gint64 dest_value);
# void gst_query_parse_convert (GstQuery *query, GstFormat *src_format, gint64 *src_value, GstFormat *dest_format, gint64 *dest_value);
void
convert (GstQuery *query, GstFormat src_format=0, gint64 src_value=0, GstFormat dest_format=0, gint64 dest_value=0)
PREINIT:
GstFormat old_src_format;
gint64 old_src_value;
GstFormat old_dest_format;
gint64 old_dest_value;
PPCODE:
gst_query_parse_convert (query, &old_src_format, &old_src_value, &old_dest_format, &old_dest_value);
if (items == 5)
gst_query_set_convert (query, src_format, src_value, dest_format, dest_value);
EXTEND (sp, 4);
PUSHs (sv_2mortal (newSVGstFormat (old_src_format)));
PUSHs (sv_2mortal (newSVGInt64 (old_src_value)));
PUSHs (sv_2mortal (newSVGstFormat (old_dest_format)));
PUSHs (sv_2mortal (newSVGInt64 (old_dest_value)));
# --------------------------------------------------------------------------- #
xs/GstQuery.xs view on Meta::CPAN
# void gst_query_set_segment (GstQuery *query, gdouble rate, GstFormat format, gint64 start_value, gint64 stop_value);
# void gst_query_parse_segment (GstQuery *query, gdouble *rate, GstFormat *format, gint64 *start_value, gint64 *stop_value);
void
segment (GstQuery *query, gdouble rate=0.0, GstFormat format=0, gint64 start_value=0, gint64 stop_value=0)
PREINIT:
gdouble old_rate;
GstFormat old_format;
gint64 old_start_value;
gint64 old_stop_value;
PPCODE:
gst_query_parse_segment (query, &old_rate, &old_format, &old_start_value, &old_stop_value);
if (items == 5)
gst_query_set_segment (query, rate, format, start_value, stop_value);
EXTEND (sp, 4);
PUSHs (sv_2mortal (newSVnv (old_rate)));
PUSHs (sv_2mortal (newSVGstFormat (old_format)));
PUSHs (sv_2mortal (newSVGInt64 (old_start_value)));
PUSHs (sv_2mortal (newSVGInt64 (old_stop_value)));
# --------------------------------------------------------------------------- #
xs/GstRegistry.xs view on Meta::CPAN
/* void */
void gst_registry_scan_path (GstRegistry *registry, const gchar *path);
# GList* gst_registry_get_path_list (GstRegistry *registry);
void
gst_registry_get_path_list (registry)
GstRegistry *registry
PREINIT:
GList *paths, *i;
PPCODE:
paths = gst_registry_get_path_list (registry);
for (i = paths; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGChar (i->data)));
g_list_free (paths);
gboolean gst_registry_add_plugin (GstRegistry *registry, GstPlugin *plugin);
void gst_registry_remove_plugin (GstRegistry *registry, GstPlugin *plugin);
gboolean gst_registry_add_feature (GstRegistry * registry, GstPluginFeature * feature);
void gst_registry_remove_feature (GstRegistry * registry, GstPluginFeature * feature);
# GList * gst_registry_get_plugin_list (GstRegistry *registry);
void
gst_registry_get_plugin_list (registry)
GstRegistry *registry
PREINIT:
GList *plugins, *i;
PPCODE:
plugins = gst_registry_get_plugin_list (registry);
for (i = plugins; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstPlugin (i->data)));
g_list_free (plugins);
# GList* gst_registry_plugin_filter (GstRegistry *registry, GstPluginFilter filter, gboolean first, gpointer user_data);
void
gst_registry_plugin_filter (registry, filter, first, data=NULL)
GstRegistry *registry
SV *filter
gboolean first
SV *data
PREINIT:
GPerlCallback *callback;
GList *list, *i;
PPCODE:
callback = gst2perl_plugin_filter_create (filter, data);
list = gst_registry_plugin_filter (registry,
gst2perl_plugin_filter,
first,
callback);
for (i = list; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstPlugin (i->data)));
g_list_free (list);
xs/GstRegistry.xs view on Meta::CPAN
# GList* gst_registry_feature_filter (GstRegistry *registry, GstPluginFeatureFilter filter, gboolean first, gpointer user_data);
void
gst_registry_feature_filter (registry, filter, first, data=NULL)
GstRegistry *registry
SV *filter
gboolean first
SV *data
PREINIT:
GPerlCallback *callback;
GList *list, *i;
PPCODE:
callback = gst2perl_plugin_feature_filter_create (filter, data);
list = gst_registry_feature_filter (registry,
gst2perl_plugin_feature_filter,
first,
callback);
for (i = list; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstPluginFeature (i->data)));
g_list_free (list);
gperl_callback_destroy (callback);
# GList * gst_registry_get_feature_list (GstRegistry *registry, GType type);
void
gst_registry_get_feature_list (registry, type)
GstRegistry *registry
const char *type
PREINIT:
GList *features, *i;
PPCODE:
features = gst_registry_get_feature_list (registry, gperl_type_from_package (type));
for (i = features; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstPluginFeature (i->data)));
g_list_free (features);
# GList * gst_registry_get_feature_list_by_plugin (GstRegistry *registry, const gchar *name);
void
gst_registry_get_feature_list_by_plugin (registry, name)
GstRegistry *registry
const gchar *name
PREINIT:
GList *features, *i;
PPCODE:
features = gst_registry_get_feature_list_by_plugin (registry, name);
for (i = features; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstPluginFeature (i->data)));
g_list_free (features);
GstPlugin* gst_registry_find_plugin (GstRegistry *registry, const gchar *name);
# GstPluginFeature* gst_registry_find_feature (GstRegistry *registry, const gchar *name, GType type);
GstPluginFeature *
gst_registry_find_feature (registry, name, type)
xs/GstTypeFindFactory.xs view on Meta::CPAN
=for object GStreamer::TypeFindFactory Information about registered typefind functions
=cut
# GList * gst_type_find_factory_get_list (void);
void
gst_type_find_factory_get_list (class)
PREINIT:
GList *list, *i;
PPCODE:
PERL_UNUSED_VAR (ax);
list = gst_type_find_factory_get_list ();
for (i = list; i != NULL; i = i->next)
XPUSHs (sv_2mortal (newSVGstTypeFindFactory (i->data)));
g_list_free (list);
# gchar ** gst_type_find_factory_get_extensions (GstTypeFindFactory *factory);
void
gst_type_find_factory_get_extensions (GstTypeFindFactory *factory)
PREINIT:
gchar **list;
gchar *ext;
PPCODE:
list = gst_type_find_factory_get_extensions (factory);
while (list && (ext = *list++))
XPUSHs (sv_2mortal (newSVGChar (ext)));
GstCaps * gst_type_find_factory_get_caps (GstTypeFindFactory *factory);
# FIXME: Need GstTypeFind support.
# void gst_type_find_factory_call_function (GstTypeFindFactory *factory, GstTypeFind *find);