mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
Wrap gst-plugins-base's tag helper library.
Original commit message from CVS: * configure.ac: * gst/Makefile.am: * gst/tag.defs: * gst/tag.override: * gst/tagmodule.c: (inittag): Wrap gst-plugins-base's tag helper library. Partially fixes #565762
This commit is contained in:
parent
8aa05d4cd7
commit
4e04dc11c8
6 changed files with 374 additions and 0 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2008-12-31 Edward Hervey <edward.hervey@collabora.co.uk>
|
||||||
|
|
||||||
|
* configure.ac:
|
||||||
|
* gst/Makefile.am:
|
||||||
|
* gst/tag.defs:
|
||||||
|
* gst/tag.override:
|
||||||
|
* gst/tagmodule.c: (inittag):
|
||||||
|
Wrap gst-plugins-base's tag helper library.
|
||||||
|
Partially fixes #565762
|
||||||
|
|
||||||
2008-12-31 Edward Hervey <edward.hervey@collabora.co.uk>
|
2008-12-31 Edward Hervey <edward.hervey@collabora.co.uk>
|
||||||
|
|
||||||
* configure.ac:
|
* configure.ac:
|
||||||
|
|
|
@ -186,6 +186,7 @@ then
|
||||||
then
|
then
|
||||||
AC_DEFINE_UNQUOTED(HAVE_GST_AUDIO, 1, [We can use the gst-audio library])
|
AC_DEFINE_UNQUOTED(HAVE_GST_AUDIO, 1, [We can use the gst-audio library])
|
||||||
AC_DEFINE_UNQUOTED(HAVE_GST_VIDEO, 1, [We can use the gst-video library])
|
AC_DEFINE_UNQUOTED(HAVE_GST_VIDEO, 1, [We can use the gst-video library])
|
||||||
|
AC_DEFINE_UNQUOTED(HAVE_GST_TAG, 1, [We can use the gst-tag library])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -203,6 +204,7 @@ else
|
||||||
AC_DEFINE_UNQUOTED(HAVE_PLUGINS_INSTALL, 1, [We can use the plugins-install methods])
|
AC_DEFINE_UNQUOTED(HAVE_PLUGINS_INSTALL, 1, [We can use the plugins-install methods])
|
||||||
AC_DEFINE_UNQUOTED(HAVE_GST_AUDIO, 1, [We can use the gst-audio library])
|
AC_DEFINE_UNQUOTED(HAVE_GST_AUDIO, 1, [We can use the gst-audio library])
|
||||||
AC_DEFINE_UNQUOTED(HAVE_GST_VIDEO, 1, [We can use the gst-video library])
|
AC_DEFINE_UNQUOTED(HAVE_GST_VIDEO, 1, [We can use the gst-video library])
|
||||||
|
AC_DEFINE_UNQUOTED(HAVE_GST_TAG, 1, [We can use the gst-tag library])
|
||||||
fi
|
fi
|
||||||
AC_DEFINE_UNQUOTED(HAVE_VIDEO_ORIENTATION_INTERFACE, 1, [We can use the videoorientation interface])
|
AC_DEFINE_UNQUOTED(HAVE_VIDEO_ORIENTATION_INTERFACE, 1, [We can use the videoorientation interface])
|
||||||
AC_SUBST(IGNORE_GST_0_10_13)
|
AC_SUBST(IGNORE_GST_0_10_13)
|
||||||
|
@ -220,6 +222,7 @@ AC_SUBST(HAVE_VIDEO_ORIENTATION)
|
||||||
AC_SUBST(HAVE_PLUGINS_INSTALL)
|
AC_SUBST(HAVE_PLUGINS_INSTALL)
|
||||||
AM_CONDITIONAL(HAVE_GST_AUDIO, $HAVE_GST_AUDIO)
|
AM_CONDITIONAL(HAVE_GST_AUDIO, $HAVE_GST_AUDIO)
|
||||||
AM_CONDITIONAL(HAVE_GST_VIDEO, $HAVE_GST_VIDEO)
|
AM_CONDITIONAL(HAVE_GST_VIDEO, $HAVE_GST_VIDEO)
|
||||||
|
AM_CONDITIONAL(HAVE_GST_TAG, $HAVE_GST_TAG)
|
||||||
|
|
||||||
dnl check for gstreamer-base; uninstalled is selected preferentially
|
dnl check for gstreamer-base; uninstalled is selected preferentially
|
||||||
PKG_CHECK_MODULES(GST_BASE, gstreamer-base-$GST_MAJORMINOR >= $GST_REQ,
|
PKG_CHECK_MODULES(GST_BASE, gstreamer-base-$GST_MAJORMINOR >= $GST_REQ,
|
||||||
|
|
|
@ -149,6 +149,28 @@ video.c: $(VIDEO_DEFS) $(VIDEO_OVERRIDES) $(GEN_FILES)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# GStreamer tag bindings
|
||||||
|
TAG_OVERRIDES = tag.override
|
||||||
|
TAG_DEFS = tag.defs
|
||||||
|
CLEANFILES += tag.c
|
||||||
|
EXTRA_DIST += $(TAG_DEFS) $(TAG_OVERRIDES)
|
||||||
|
defs_DATA += $(TAG_DEFS)
|
||||||
|
GEN_FILES += $(TAG_DEFS)
|
||||||
|
|
||||||
|
if HAVE_GST_TAG
|
||||||
|
|
||||||
|
tag_lib = tag.la
|
||||||
|
pygstexec_LTLIBRARIES += $(tag_lib)
|
||||||
|
tag_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
|
||||||
|
tag_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgsttag-0.10
|
||||||
|
tag_la_LDFLAGS = $(common_ldflags) \
|
||||||
|
-export-symbols-regex "^(inittag|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
|
||||||
|
tag_la_SOURCES = tagmodule.c gst-argtypes.c pygstminiobject.c
|
||||||
|
nodist_tag_la_SOURCES = tag.c
|
||||||
|
tag.c: $(TAG_DEFS) $(TAG_OVERRIDES) $(GEN_FILES)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
.defs.c:
|
.defs.c:
|
||||||
($(PYTHON) $(top_srcdir)/codegen/codegen.py \
|
($(PYTHON) $(top_srcdir)/codegen/codegen.py \
|
||||||
|
|
219
gst/tag.defs
Normal file
219
gst/tag.defs
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
;; -*- scheme -*-
|
||||||
|
; object definitions ...
|
||||||
|
(define-object TagDemux
|
||||||
|
(in-module "Gst")
|
||||||
|
(parent "GstElement")
|
||||||
|
(c-name "GstTagDemux")
|
||||||
|
(gtype-id "GST_TYPE_TAG_DEMUX")
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Enumerations and flags ...
|
||||||
|
|
||||||
|
(define-enum TagDemuxResult
|
||||||
|
(in-module "Gst")
|
||||||
|
(c-name "GstTagDemuxResult")
|
||||||
|
(gtype-id "GST_TYPE_TAG_DEMUX_RESULT")
|
||||||
|
(values
|
||||||
|
'("broken-tag" "GST_TAG_DEMUX_RESULT_BROKEN_TAG")
|
||||||
|
'("again" "GST_TAG_DEMUX_RESULT_AGAIN")
|
||||||
|
'("ok" "GST_TAG_DEMUX_RESULT_OK")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-enum TagImageType
|
||||||
|
(in-module "Gst")
|
||||||
|
(c-name "GstTagImageType")
|
||||||
|
(gtype-id "GST_TYPE_TAG_IMAGE_TYPE")
|
||||||
|
(values
|
||||||
|
'("none" "GST_TAG_IMAGE_TYPE_NONE")
|
||||||
|
'("undefined" "GST_TAG_IMAGE_TYPE_UNDEFINED")
|
||||||
|
'("front-cover" "GST_TAG_IMAGE_TYPE_FRONT_COVER")
|
||||||
|
'("back-cover" "GST_TAG_IMAGE_TYPE_BACK_COVER")
|
||||||
|
'("leaflet-page" "GST_TAG_IMAGE_TYPE_LEAFLET_PAGE")
|
||||||
|
'("medium" "GST_TAG_IMAGE_TYPE_MEDIUM")
|
||||||
|
'("lead-artist" "GST_TAG_IMAGE_TYPE_LEAD_ARTIST")
|
||||||
|
'("artist" "GST_TAG_IMAGE_TYPE_ARTIST")
|
||||||
|
'("conductor" "GST_TAG_IMAGE_TYPE_CONDUCTOR")
|
||||||
|
'("band-orchestra" "GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA")
|
||||||
|
'("composer" "GST_TAG_IMAGE_TYPE_COMPOSER")
|
||||||
|
'("lyricist" "GST_TAG_IMAGE_TYPE_LYRICIST")
|
||||||
|
'("recording-location" "GST_TAG_IMAGE_TYPE_RECORDING_LOCATION")
|
||||||
|
'("during-recording" "GST_TAG_IMAGE_TYPE_DURING_RECORDING")
|
||||||
|
'("during-performance" "GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE")
|
||||||
|
'("video-capture" "GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE")
|
||||||
|
'("fish" "GST_TAG_IMAGE_TYPE_FISH")
|
||||||
|
'("illustration" "GST_TAG_IMAGE_TYPE_ILLUSTRATION")
|
||||||
|
'("band-artist-logo" "GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO")
|
||||||
|
'("publisher-studio-logo" "GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
;; From gsttagdemux.h
|
||||||
|
|
||||||
|
(define-function demux_get_type
|
||||||
|
(c-name "gst_tag_demux_get_type")
|
||||||
|
(return-type "GType")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;; From tag.h
|
||||||
|
|
||||||
|
(define-function image_type_get_type
|
||||||
|
(c-name "gst_tag_image_type_get_type")
|
||||||
|
(return-type "GType")
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function from_vorbis_tag
|
||||||
|
(c-name "gst_tag_from_vorbis_tag")
|
||||||
|
(return-type "const-gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "vorbis_tag")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function to_vorbis_tag
|
||||||
|
(c-name "gst_tag_to_vorbis_tag")
|
||||||
|
(return-type "const-gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "gst_tag")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function gst_vorbis_tag_add
|
||||||
|
(c-name "gst_vorbis_tag_add")
|
||||||
|
(return-type "none")
|
||||||
|
(parameters
|
||||||
|
'("GstTagList*" "list")
|
||||||
|
'("const-gchar*" "tag")
|
||||||
|
'("const-gchar*" "value")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function to_vorbis_comments
|
||||||
|
(c-name "gst_tag_to_vorbis_comments")
|
||||||
|
(return-type "GList*")
|
||||||
|
(parameters
|
||||||
|
'("const-GstTagList*" "list")
|
||||||
|
'("const-gchar*" "tag")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function list_from_vorbiscomment_buffer
|
||||||
|
(c-name "gst_tag_list_from_vorbiscomment_buffer")
|
||||||
|
(return-type "GstTagList*")
|
||||||
|
(parameters
|
||||||
|
'("const-GstBuffer*" "buffer")
|
||||||
|
'("const-guint8*" "id_data")
|
||||||
|
'("const-guint" "id_data_length")
|
||||||
|
'("gchar**" "vendor_string")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-method to_vorbiscomment_buffer
|
||||||
|
(of-object "GstTagList")
|
||||||
|
(c-name "gst_tag_list_to_vorbiscomment_buffer")
|
||||||
|
(return-type "GstBuffer*")
|
||||||
|
(parameters
|
||||||
|
'("const-guint8*" "id_data")
|
||||||
|
'("const-guint" "id_data_length")
|
||||||
|
'("const-gchar*" "vendor_string")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function id3_genre_count
|
||||||
|
(c-name "gst_tag_id3_genre_count")
|
||||||
|
(return-type "guint")
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function id3_genre_get
|
||||||
|
(c-name "gst_tag_id3_genre_get")
|
||||||
|
(return-type "const-gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-guint" "id")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function list_new_from_id3v1
|
||||||
|
(c-name "gst_tag_list_new_from_id3v1")
|
||||||
|
(return-type "GstTagList*")
|
||||||
|
(parameters
|
||||||
|
'("const-guint8*" "data")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function from_id3_tag
|
||||||
|
(c-name "gst_tag_from_id3_tag")
|
||||||
|
(return-type "const-gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "id3_tag")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function from_id3_user_tag
|
||||||
|
(c-name "gst_tag_from_id3_user_tag")
|
||||||
|
(return-type "const-gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "type")
|
||||||
|
'("const-gchar*" "id3_user_tag")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function to_id3_tag
|
||||||
|
(c-name "gst_tag_to_id3_tag")
|
||||||
|
(return-type "const-gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "gst_tag")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-method add_id3_image
|
||||||
|
(of-object "GstTagList")
|
||||||
|
(c-name "gst_tag_list_add_id3_image")
|
||||||
|
(return-type "gboolean")
|
||||||
|
(parameters
|
||||||
|
'("const-guint8*" "image_data")
|
||||||
|
'("guint" "image_data_len")
|
||||||
|
'("guint" "id3_picture_type")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function parse_extended_comment
|
||||||
|
(c-name "gst_tag_parse_extended_comment")
|
||||||
|
(return-type "gboolean")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "ext_comment")
|
||||||
|
'("gchar**" "key")
|
||||||
|
'("gchar**" "lang")
|
||||||
|
'("gchar**" "value")
|
||||||
|
'("gboolean" "fail_if_no_key")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function freeform_string_to_utf8
|
||||||
|
(c-name "gst_tag_freeform_string_to_utf8")
|
||||||
|
(return-type "gchar*")
|
||||||
|
(parameters
|
||||||
|
'("const-gchar*" "data")
|
||||||
|
'("gint" "size")
|
||||||
|
'("const-gchar**" "env_vars")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function image_data_to_image_buffer
|
||||||
|
(c-name "gst_tag_image_data_to_image_buffer")
|
||||||
|
(return-type "GstBuffer*")
|
||||||
|
(parameters
|
||||||
|
'("const-guint8*" "image_data")
|
||||||
|
'("guint" "image_data_len")
|
||||||
|
'("GstTagImageType" "image_type")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(define-function register_musicbrainz_tags
|
||||||
|
(c-name "gst_tag_register_musicbrainz_tags")
|
||||||
|
(return-type "none")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
64
gst/tag.override
Normal file
64
gst/tag.override
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/* -*- Mode: C; c-basic-offset: 4 -*- */
|
||||||
|
/* gst-python
|
||||||
|
* Copyright (C) 2008 <edward.hervey@collabora.co.uk>
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
%%
|
||||||
|
headers
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NO_IMPORT_PYGOBJECT
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <gst/gst.h>
|
||||||
|
|
||||||
|
#include <gst/tag/tag.h>
|
||||||
|
#include <gst/tag/gsttagdemux.h>
|
||||||
|
#include "pygstminiobject.h"
|
||||||
|
GST_DEBUG_CATEGORY_EXTERN (pygst_debug);
|
||||||
|
#define GST_CAT_DEFAULT pygst_debug
|
||||||
|
|
||||||
|
/* Boonky define that allows for backwards compatibility with Python 2.4 */
|
||||||
|
#if PY_VERSION_HEX < 0x02050000
|
||||||
|
#define Py_ssize_t int
|
||||||
|
#endif
|
||||||
|
|
||||||
|
%%
|
||||||
|
modulename gst.tag
|
||||||
|
%%
|
||||||
|
import gobject.GObject as PyGObject_Type
|
||||||
|
import gst.Object as PyGstObject_Type
|
||||||
|
import gst.Structure as PyGstStructure_Type
|
||||||
|
import gst.Element as PyGstElement_Type
|
||||||
|
import gst.Pad as PyGstPad_Type
|
||||||
|
import gst.Buffer as PyGstBuffer_Type
|
||||||
|
import gst.Message as PyGstMessage_Type
|
||||||
|
import gst.SystemClock as PyGstSystemClock_Type
|
||||||
|
import gst.BaseTransform as PyGstBaseTransform_Type
|
||||||
|
import gst.BaseSink as PyGstBaseSink_Type
|
||||||
|
%%
|
||||||
|
include
|
||||||
|
gstversion.override
|
||||||
|
%%
|
||||||
|
ignore-glob
|
||||||
|
_*
|
||||||
|
*init
|
||||||
|
*_free
|
||||||
|
*_get_type
|
56
gst/tagmodule.c
Normal file
56
gst/tagmodule.c
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
/* -*- Mode: C; c-basic-offset: 4 -*- */
|
||||||
|
/* gst-python
|
||||||
|
* Copyright (C) 2008 Edward Hervey <edward.hervey@collabora.co.uk>
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* include this first, before NO_IMPORT_PYGOBJECT is defined */
|
||||||
|
#include <pygobject.h>
|
||||||
|
#include <gst/gst.h>
|
||||||
|
#include <gst/tag/tag.h>
|
||||||
|
|
||||||
|
void pytag_register_classes (PyObject *d);
|
||||||
|
void pytag_add_constants(PyObject *module, const gchar *strip_prefix);
|
||||||
|
|
||||||
|
extern PyMethodDef pytag_functions[];
|
||||||
|
|
||||||
|
GST_DEBUG_CATEGORY (pygst_debug); /* for python code */
|
||||||
|
|
||||||
|
DL_EXPORT(void)
|
||||||
|
inittag (void)
|
||||||
|
{
|
||||||
|
PyObject *m, *d;
|
||||||
|
|
||||||
|
init_pygobject ();
|
||||||
|
/* Initialize tag library */
|
||||||
|
gst_tag_register_musicbrainz_tags ();
|
||||||
|
|
||||||
|
m = Py_InitModule ("tag", pytag_functions);
|
||||||
|
d = PyModule_GetDict (m);
|
||||||
|
|
||||||
|
pytag_register_classes (d);
|
||||||
|
pytag_add_constants (m, "GST_");
|
||||||
|
|
||||||
|
if (PyErr_Occurred ()) {
|
||||||
|
PyErr_Print ();
|
||||||
|
Py_FatalError ("can't initialize module gst.tag");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue