...
 
Commits (10)
=== release 1.6.4 ===
2016-04-14 Tim-Philipp Müller <tim@centricular.com>
* configure.ac:
releasing 1.6.4
2016-02-19 17:13:57 +0100 Thibault Saunier <tsaunier@gnome.org>
* gi/overrides/gstmodule.c:
Fix bug when checking template object type
2016-02-15 23:26:06 +0100 Thibault Saunier <tsaunier@gnome.org>
* gi/overrides/gstmodule.c:
* testsuite/common.py:
gst: Fix a crash when passing wrong type as __templates__
=== release 1.6.2 ===
2015-12-14 19:55:23 +0100 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* gst-python.doap:
Release 1.6.2
2015-11-08 11:56:20 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net>
* gi/overrides/Gst.py:
overrides: fix a few typos in exception messages
2015-12-14 13:03:24 +0100 Sebastian Dröge <sebastian@centricular.com>
* plugin/gstpythonplugin.c:
python: Check return value of g_module_symbol()
CID 1320702
2015-12-14 13:01:25 +0100 Sebastian Dröge <sebastian@centricular.com>
* plugin/gstpythonplugin.c:
python: Don't call Py_DECREF() on NULL
CID 1320703
2015-11-16 10:12:37 +0200 Sebastian Dröge <sebastian@centricular.com>
* plugin/gstpythonplugin.c:
pythonplugin: Clean up error handling a bit
Don't g_error() but only g_critical() when things go wrong and return FALSE.
g_error() would kill the application immediately.
Also check if we can actually get gi.repository.Gst before using it.
=== release 1.6.1 ===
2015-10-30 17:10:43 +0200 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* gst-python.doap:
Release 1.6.1
2015-10-25 21:33:46 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net>
* gi/overrides/Gst.py:
overrides: chain up to base __init__ in Pad override
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=757108
=== release 1.6.0 ===
2015-09-25 Thibault Saunier <tsaunier@gnome.org>
2015-09-25 12:01:24 +0200 Thibault Saunier <tsaunier@gnome.org>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
releasing 1.6.0
* gst-python.doap:
Release 1.6.0
2015-06-24 17:44:44 +0200 Thibault Saunier <tsaunier@gnome.org>
......
This is GStreamer overrides for PyGobject 1.6.0 release
This is GStreamer 1.6.4
The GStreamer team is pleased to announce the fourth and likely last
bugfix release in the old stable 1.6 release series of your favourite
cross-platform multimedia framework!
This release only contains bugfixes and it should be safe to update from 1.6.x.
This release maintains API/ABI backwards compatibility with the
GStreamer 1.0, 1.2, 1.4 and 1.6 release series.
For details about the GStreamer 1.6 series and the latest version of this
document see the GStreamer 1.6 release page:
http://gstreamer.freedesktop.org/releases/1.6/
Bug fix summary:
- audio parsers: make sure to send tags before pushing the first buffer,
so all metadata is available at preroll. Fixes metadata collection in
mopidy with certain FLAC files.
- fix decoding glitches at the beginning of some mp3 streams when streaming
- multiqueue eos handling fixes
- tcpserversink/multisocketsink: fix 100% cpu usage on client disconnect
- video4linux: colorimetry and colorspace handling fixes
- udpsrc: add option to enable/disable multicast loopback ("loop" property)
- RTP JPEG: depayloader robustness fixes; payloader now accepts different
quant tables for the chroma components
- directsoundsink: fix some issues around muting/unmuting the sound
- dvdreadsrc: don't jump to wrong title when seeking back to 0 for titles != 1
- adaptivedemux: fix race on shutdown that could result in deadlocks
in hlsdemux/dashdemux, especially when stopped before playback started
- decklink: various robustness fixes in decklinkaudiosrc and decklinkvideosrc
- mpeg4parser: prevent assertion when scanning for sync code
- fbdevsink: fix crash caused by wrong bpp calculation
- tsdemux: fix hang in preroll caused by bogus timestamp/wraparound
handling in some corner cases
- tsdemux: fix accurating seeking
- h265parse: fix crash converting from hevc format to nal-aligned bytestream
- h264parse, h265parse: fix handling of downstream force-key-unit events
- g-i annotation fixes for bindings for gst_element_query_convert(),
gst_pad_get_current_caps(), and gst_pad_peer_query_caps()
- gst-libav: update internal libav copy to n2.8.6
- rtsp-server: report RECORD and ANNOUNCE as supported in the OPTIONS
- rtsp-server: prevent receival of looped back packets on Windows if a
multicast transport is used
- various minor memory leak fixes
- miscellaneous other fixes
- Bug list: https://bugzilla.gnome.org/buglist.cgi?product=GStreamer&target_milestone=1.6.4
Release notes for GStreamer Python bindings 1.6.0
The GStreamer team is pleased to announce the first release of
the stable 1.4 release series.
Release notes for GStreamer Python bindings 1.6.4
The GStreamer team is pleased to announce a new bug-fix release in the
old 1.6 stable series of the core of the GStreamer streaming media framework.
This release only contains bugfixes and it should be safe to update from 1.6.x.
This release maintains API/ABI backwards compatibility with the
GStreamer 1.0, 1.2, 1.4 and 1.6 release series.
There were no bugs fixed in this release
==== Download ====
You can find source releases of gst-python in the download
directory: http://gstreamer.freedesktop.org/src/gst-python/
directory: https://gstreamer.freedesktop.org/src/gst-python/
The git repository and details how to clone it can be found at
http://cgit.freedesktop.org/gstreamer/gst-python/
==== Homepage ====
The project's website is http://gstreamer.freedesktop.org/
The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ====
......@@ -38,10 +47,8 @@ from there (see link above).
Interested developers of the core library, plugins, and applications should
subscribe to the gstreamer-devel list.
Applications
Contributors to this release
* Thibault Saunier
 
 
\ No newline at end of file
......@@ -3,7 +3,7 @@ AC_PREREQ([2.68])
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
AC_INIT(GStreamer GObject Introspection overrides for Python , 1.6.0,
AC_INIT(GStreamer GObject Introspection overrides for Python , 1.6.4,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-python)
......@@ -38,7 +38,7 @@ AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
dnl required versions of other packages
dnl Note that they are runtime requirements
AC_SUBST(GST_REQ, 1.6.0)
AC_SUBST(GST_REQ, 1.6.2)
AC_SUBST(PYGOBJECT_REQ, 3.0)
AC_DISABLE_STATIC
......
......@@ -98,10 +98,11 @@ Caps = override(Caps)
__all__.append('Caps')
class Pad(Gst.Pad):
def __init__(self):
def __init__(self, *args, **kwargs):
self._real_chain_func = None
self._real_event_func = None
self._real_query_func = None
super(Gst.Pad, self).__init__(*args, **kwargs)
def _chain_override(self, pad, parent, buf):
return self._real_chain_func(pad, buf)
......@@ -117,7 +118,7 @@ class Pad(Gst.Pad):
try:
res = self._real_query_func(pad, parent, query)
except TypeError:
raise TypeError("Invalid query method %s, 2 or 3 arguments requiered"
raise TypeError("Invalid query method %s, 2 or 3 arguments required"
% self._real_query_func)
query.mini_object.refcount += 1
......@@ -156,7 +157,7 @@ class GhostPad(Gst.GhostPad):
def __init__(self, name, target=None, direction=None):
if direction is None:
if target is None:
raise TypeError('you must pass at least one of target'
raise TypeError('you must pass at least one of target '
'and direction')
direction = target.props.direction
......
......@@ -147,9 +147,27 @@ add_templates (gpointer gclass, PyObject * templates)
for (i = 0; i < len; i++) {
templ = (PyGObject *) PyTuple_GetItem (templates, i);
if (GST_IS_PAD_TEMPLATE (pygobject_get (templ)) == FALSE) {
PyErr_SetString (PyExc_TypeError,
"entries for __gsttemplates__ must be of type GstPadTemplate");
if (!pygobject_check (templ, &PyGObject_Type)) {
PyObject *repr = PyObject_Repr ((PyObject *) templ);
#if PY_VERSION_HEX < 0x03000000
PyErr_Format (PyExc_TypeError, "expected GObject but got %s",
PyString_AsString (repr));
#else
PyErr_Format (PyExc_TypeError, "expected GObject but got %s",
_PyUnicode_AsString (repr));
#endif
Py_DECREF (repr);
return -1;
} else if (!GST_IS_PAD_TEMPLATE (pygobject_get (templ))) {
gchar *error =
g_strdup_printf
("entries for __gsttemplates__ must be of type GstPadTemplate (%s)",
G_OBJECT_TYPE_NAME (pygobject_get (templ)));
PyErr_SetString (PyExc_TypeError, error);
g_free (error);
return -1;
}
}
......@@ -161,11 +179,11 @@ add_templates (gpointer gclass, PyObject * templates)
}
return 0;
}
if (GST_IS_PAD_TEMPLATE (pygobject_get (templates)) == FALSE) {
} else if (!pygobject_check (templates, &PyGObject_Type) ||
GST_IS_PAD_TEMPLATE (pygobject_get (templates)) == FALSE) {
PyErr_SetString (PyExc_TypeError,
"entry for __gsttemplates__ must be of type GstPadTemplate");
return -1;
}
......
......@@ -30,6 +30,33 @@ GStreamer Python Bindings is a set of overrides and Gst fundamental types handli
</GitRepository>
</repository>
<release>
<Version>
<revision>1.6.4</revision>
<branch>1.6</branch>
<created>2016-04-14</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-python/gst-python-1.6.4.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.2</revision>
<branch>1.6</branch>
<created>2015-12-14</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-python/gst-python-1.6.2.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.1</revision>
<branch>1.6</branch>
<created>2015-10-30</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-python/gst-python-1.6.1.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.0</revision>
......
......@@ -229,9 +229,8 @@ plugin_init (GstPlugin * plugin)
GST_PLUGIN_DEPENDENCY_FLAG_NONE);
GST_LOG ("Checking to see if libpython is already loaded");
g_module_symbol (g_module_open (NULL, G_MODULE_BIND_LOCAL), "_Py_NoneStruct",
&has_python);
if (has_python) {
if (g_module_symbol (g_module_open (NULL, G_MODULE_BIND_LOCAL),
"_Py_NoneStruct", &has_python) && has_python) {
GST_LOG ("libpython is already loaded");
} else {
GST_LOG ("loading libpython");
......@@ -239,7 +238,7 @@ plugin_init (GstPlugin * plugin)
g_module_open (PY_LIB_LOC "/libpython" PYTHON_VERSION PY_ABI_FLAGS
"." PY_LIB_SUFFIX, 0);
if (!libpython) {
GST_WARNING ("Couldn't g_module_open libpython. Reason: %s",
g_critical ("Couldn't g_module_open libpython. Reason: %s",
g_module_error ());
return FALSE;
}
......@@ -257,20 +256,25 @@ plugin_init (GstPlugin * plugin)
GST_LOG ("initializing pygobject");
if (!pygobject_init (3, 0, 0)) {
GST_WARNING ("pygobject initialization failed");
g_critical ("pygobject initialization failed");
return FALSE;
}
gst = PyImport_ImportModule ("gi.repository.Gst");
if (!gst) {
g_critical ("can't find gi.repository.Gst");
return FALSE;
}
if (we_initialized) {
PyObject *tmp;
dict = PyModule_GetDict (gst);
if (!dict) {
GST_ERROR ("no dict?!");
g_critical ("gi.repository.Gst is no dict");
return FALSE;
}
tmp =
PyObject_GetAttr (PyMapping_GetItemString (dict,
"_introspection_module"), PyUnicode_FromString ("__dict__"));
......@@ -278,13 +282,16 @@ plugin_init (GstPlugin * plugin)
_PyGstElement_Type = PyMapping_GetItemString (tmp, "Element");
if (!_PyGstElement_Type) {
g_error ("Could not get Gst.Element");
Py_DECREF (pyplugin);
g_critical ("Could not get Gst.Element");
return FALSE;
}
pyplugin = pygobject_new (G_OBJECT (plugin));
if (!pyplugin || PyModule_AddObject (gst, "__plugin__", pyplugin) != 0) {
g_warning ("Couldn't set plugin");
Py_DECREF (pyplugin);
g_critical ("Couldn't set __plugin__ attribute");
if (pyplugin)
Py_DECREF (pyplugin);
return FALSE;
}
}
......
......@@ -31,7 +31,7 @@ import os
import gc
import unittest
import gi.overrides
gi.overrides
from gi.repository import Gst
......