summaryrefslogtreecommitdiffstats
path: root/ext
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-07-14 06:31:26 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-07-14 06:31:26 +0000
commitff1182f0bdba71efe2ba8750f20f8a6f55239fde (patch)
tree9eb8d36f89386b066794f2277bd4a666d143f56f /ext
parent0848c5302e92ee1f1691e22b7e80405d1174e9d4 (diff)
downloadgst-plugins-bad-ff1182f0bdba71efe2ba8750f20f8a6f55239fde.tar.gz
gst-plugins-bad-ff1182f0bdba71efe2ba8750f20f8a6f55239fde.tar.bz2
gst-plugins-bad-ff1182f0bdba71efe2ba8750f20f8a6f55239fde.zip
Fix some weird-ass segfaults in xvid
Original commit message from CVS: Fix some weird-ass segfaults in xvid
Diffstat (limited to 'ext')
-rw-r--r--ext/xvid/gstxvid.c18
-rw-r--r--ext/xvid/gstxviddec.c21
-rw-r--r--ext/xvid/gstxvidenc.c17
3 files changed, 36 insertions, 20 deletions
diff --git a/ext/xvid/gstxvid.c b/ext/xvid/gstxvid.c
index e1a9700e..fb7d06f4 100644
--- a/ext/xvid/gstxvid.c
+++ b/ext/xvid/gstxvid.c
@@ -56,24 +56,6 @@ static gboolean
plugin_init (GModule *module,
GstPlugin *plugin)
{
- XVID_INIT_PARAM xinit;
- gint ret;
-
- /* set up xvid initially (function pointers, CPU flags) */
- memset(&xinit, 0, sizeof(XVID_INIT_PARAM));
- xinit.cpu_flags = 0;
- if ((ret = xvid_init(NULL, 0, &xinit, NULL)) != XVID_ERR_OK) {
- g_warning("Faied to initialize XviD: %s (%d)",
- gst_xvid_error(ret), ret);
- return FALSE;
- }
-
- if (xinit.api_version != API_VERSION) {
- g_warning("Xvid API version mismatch! %d.%d (that's us) != %d.%d (lib)",
- (API_VERSION >> 8) & 0xff, API_VERSION & 0xff,
- (xinit.api_version >> 8) & 0xff, xinit.api_version & 0xff);
- }
-
return (gst_xviddec_plugin_init(module, plugin) &&
gst_xvidenc_plugin_init(module, plugin));
}
diff --git a/ext/xvid/gstxviddec.c b/ext/xvid/gstxviddec.c
index fcde219b..a5888da8 100644
--- a/ext/xvid/gstxviddec.c
+++ b/ext/xvid/gstxviddec.c
@@ -135,6 +135,23 @@ static void
gst_xviddec_class_init (GstXvidDecClass *klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
+ XVID_INIT_PARAM xinit;
+ gint ret;
+
+ /* set up xvid initially (function pointers, CPU flags) */
+ memset(&xinit, 0, sizeof(XVID_INIT_PARAM));
+ xinit.cpu_flags = 0;
+ if ((ret = xvid_init(NULL, 0, &xinit, NULL)) != XVID_ERR_OK) {
+ g_warning("Failed to initialize XviD: %s (%d)",
+ gst_xvid_error(ret), ret);
+ return;
+ }
+
+ if (xinit.api_version != API_VERSION) {
+ g_warning("Xvid API version mismatch! %d.%d (that's us) != %d.%d (lib)",
+ (API_VERSION >> 8) & 0xff, API_VERSION & 0xff,
+ (xinit.api_version >> 8) & 0xff, xinit.api_version & 0xff);
+ }
parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
@@ -248,7 +265,7 @@ gst_xviddec_chain (GstPad *pad,
xframe.bitstream = (void *) GST_BUFFER_DATA(buf);
xframe.image = (void *) GST_BUFFER_DATA(outbuf);
xframe.length = GST_BUFFER_SIZE(buf);
- xframe.stride = xviddec->width * xviddec->bpp / 8;
+ xframe.stride = 0; /*xviddec->width * xviddec->bpp / 8;*/
xframe.colorspace = xviddec->csp;
if ((ret = xvid_decore(xviddec->handle, XVID_DEC_DECODE,
@@ -278,8 +295,8 @@ gst_xviddec_negotiate (GstXvidDec *xviddec)
{ GST_MAKE_FOURCC('Y','U','Y','V'), 16, 16, XVID_CSP_YUY2 },
{ GST_MAKE_FOURCC('U','Y','V','Y'), 16, 16, XVID_CSP_UYVY },
{ GST_MAKE_FOURCC('Y','V','Y','U'), 16, 16, XVID_CSP_YVYU },
- { GST_MAKE_FOURCC('I','4','2','0'), 12, 12, XVID_CSP_I420 },
{ GST_MAKE_FOURCC('Y','V','1','2'), 12, 12, XVID_CSP_YV12 },
+ { GST_MAKE_FOURCC('I','4','2','0'), 12, 12, XVID_CSP_I420 },
{ GST_MAKE_FOURCC('R','G','B',' '), 32, 32, XVID_CSP_RGB32 },
{ GST_MAKE_FOURCC('R','G','B',' '), 24, 24, XVID_CSP_RGB24 },
{ GST_MAKE_FOURCC('R','G','B',' '), 16, 16, XVID_CSP_RGB555 },
diff --git a/ext/xvid/gstxvidenc.c b/ext/xvid/gstxvidenc.c
index 5a4156ce..eb27b8ff 100644
--- a/ext/xvid/gstxvidenc.c
+++ b/ext/xvid/gstxvidenc.c
@@ -147,6 +147,23 @@ gst_xvidenc_class_init (GstXvidEncClass *klass)
{
GstElementClass *gstelement_class;
GObjectClass *gobject_class;
+ XVID_INIT_PARAM xinit;
+ gint ret;
+
+ /* set up xvid initially (function pointers, CPU flags) */
+ memset(&xinit, 0, sizeof(XVID_INIT_PARAM));
+ xinit.cpu_flags = 0;
+ if ((ret = xvid_init(NULL, 0, &xinit, NULL)) != XVID_ERR_OK) {
+ g_warning("Failed to initialize XviD: %s (%d)",
+ gst_xvid_error(ret), ret);
+ return;
+ }
+
+ if (xinit.api_version != API_VERSION) {
+ g_warning("Xvid API version mismatch! %d.%d (that's us) != %d.%d (lib)",
+ (API_VERSION >> 8) & 0xff, API_VERSION & 0xff,
+ (xinit.api_version >> 8) & 0xff, xinit.api_version & 0xff);
+ }
gobject_class = (GObjectClass *) klass;
gstelement_class = (GstElementClass *) klass;