summaryrefslogtreecommitdiff
path: root/libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c')
-rw-r--r--libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c494
1 files changed, 0 insertions, 494 deletions
diff --git a/libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c b/libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c
deleted file mode 100644
index eb4969682f8..00000000000
--- a/libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/*gstinputstream.c - Header file for the GstClasspathPlugin
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath 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
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-#include <jni.h>
-#include <jcl.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <gdk/gdk.h>
-
-#include <glib.h>
-#include <glib/gprintf.h>
-
-#include "gstinputstream.h"
-
-struct _GstInputStreamPrivate
-{
- JavaVM *vm;
- jobject *reader;
-
- gboolean eof;
- guint8 *buffer;
- long size;
- long length;
-
- gboolean disposed;
-};
-
-#define INPUT_STREAM_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), GST_TYPE_INPUT_STREAM, GstInputStreamPrivate))
-
-/* properties */
-
-enum
-{
- ARG_0,
- ARG_JVM,
- ARG_READER
-};
-
-/* ***** */
-
-static JNIEnv *gst_input_stream_get_jenv(GstInputStream *self);
-
-static void gst_input_stream_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec);
-
-static void gst_input_stream_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gst_input_stream_instance_init (GTypeInstance *instance,
- gpointer g_class);
-
-static void gst_input_stream_class_init (gpointer g_class,
- gpointer g_class_data);
-
-static GObject *
-gst_input_stream_constructor (GType type, guint n_construct_properties,
- GObjectConstructParam *construct_properties);
-
-static void
-gst_input_stream_dispose (GObject *obj);
-
-static void
-gst_input_stream_finalize (GObject *obj);
-
-/* ************************************************************************** */
-
-/* class methods */
-
-int
-gst_input_stream_read (GstInputStream *self, int *data, int offset,
- int length)
-{
- /* TODO: cache */
- jmethodID _readID = NULL;
- jclass InputStream = NULL;
-
- JNIEnv *env = NULL;
-
- int ret = -1;
- jbyteArray buffer;
- jbyte *bytes = NULL;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return -1;
- }
-
- env = gst_input_stream_get_jenv (self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_read failed to get java env");
- return -1;
- }
-
- buffer = (*env)->NewByteArray (env, length);
- if (buffer == NULL)
- {
- g_warning ("GstInputStream::gst_input_stream_read called, failed");
- return -1;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _readID = (*env)->GetMethodID(env, InputStream, "read", "([BII)I");
- if (_readID == NULL)
- {
- (*env)->DeleteLocalRef(env, buffer);
- return -1;
- }
-
- ret = (*env)->CallIntMethod (env, self->priv->reader, _readID, buffer, 0,
- length);
- if (ret == -1)
- {
- (*env)->DeleteLocalRef(env, buffer);
- return ret;
- }
-
- bytes = (*env)->GetByteArrayElements (env, buffer, NULL);
-
- /* copy bytes and release */
- memcpy (data + offset, bytes, ret);
-
- (*env)->ReleaseByteArrayElements (env, buffer, bytes, 0);
- (*env)->DeleteLocalRef (env, buffer);
-
- return ret;
-}
-
-gboolean
-gst_input_stream_available (GstInputStream *self, guint64 *size)
-{
- /* TODO: caching */
-
- jmethodID _availableID = NULL;
- jclass InputStream = NULL;
- JNIEnv *env = NULL;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return FALSE;
- }
-
- env = gst_input_stream_get_jenv(self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_available failed to get java env");
- return FALSE;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _availableID = (*env)->GetMethodID(env, InputStream, "available", "()I");
- if (_availableID == NULL)
- {
- return FALSE;
- }
-
- *size = (*env)->CallIntMethod (env, self->priv->reader, _availableID);
-
- return TRUE;
-}
-
-void gst_input_stream_reset (GstInputStream *self)
-{
- jmethodID _resetID = NULL;
- jclass InputStream = NULL;
- JNIEnv *env = NULL;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return;
- }
-
- env = gst_input_stream_get_jenv(self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_reset failed to get java env");
- return;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _resetID = (*env)->GetMethodID(env, InputStream, "reset", "()V");
- if (_resetID == NULL)
- {
- return;
- }
-
- (*env)->CallVoidMethod (env, self->priv->reader, _resetID);
-}
-
-long gst_input_stream_skip (GstInputStream *self, long size)
-{
- jmethodID _seekID = NULL;
- jclass InputStream = NULL;
- JNIEnv *env = NULL;
-
- long skipped = -1;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return skipped;
- }
-
- env = gst_input_stream_get_jenv(self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_skip failed to get java env");
- return size;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _seekID = (*env)->GetMethodID(env, InputStream, "skip", "(J)J");
- if (_seekID == NULL)
- {
- return skipped;
- }
-
- size = (*env)->CallIntMethod (env, self->priv->reader, _seekID, size);
- if (size != 0)
- {
- return skipped;
- }
-
- return skipped;
-}
-
-gboolean gst_input_stream_can_seek (GstInputStream *self)
-{
- if (gst_input_stream_skip(self, 0) != 0)
- {
- g_warning ("GstInputStream::gst_input_stream_can_seek CANNOT seek");
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* ************************************************************************** */
-
-/* getter and setter */
-
-static void
-gst_input_stream_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GstInputStream *self = GST_INPUT_STREAM (object);
-
- switch (property_id)
- {
- case ARG_JVM:
- {
- self->priv->vm = g_value_get_pointer(value);
- }
- break;
-
- case ARG_READER:
- {
- self->priv->reader = g_value_get_pointer(value);
- }
- break;
-
- default:
- /* We don't have any other property... */
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object,property_id,pspec);
- break;
- } /* switch */
-}
-
-static void
-gst_input_stream_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GstInputStream *self = GST_INPUT_STREAM (object);
-
- switch (property_id)
- {
- case ARG_JVM:
- {
- g_value_set_pointer (value, self->priv->vm);
- }
- break;
-
- case ARG_READER:
- {
- g_value_set_pointer (value, self->priv->reader);
- }
- break;
-
- default:
- /* We don't have any other property... */
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object,property_id,pspec);
- break;
- } /* switch */
-}
-
-/* ************************************************************************** */
-
-static void
-gst_input_stream_instance_init (GTypeInstance *instance,
- gpointer g_class __attribute__ ((unused)))
-{
- GstInputStream *self = GST_INPUT_STREAM (instance);
-
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GST_TYPE_INPUT_STREAM,
- GstInputStreamPrivate);
-
- self->priv->vm = NULL;
- self->priv->reader = NULL;
- self->priv->disposed = FALSE;
- self->priv->eof = FALSE;
- self->priv->buffer = NULL;
- self->priv->size = 0;
- self->priv->length = 0;
-}
-
-static void
-gst_input_stream_class_init (gpointer g_class,
- gpointer g_class_data __attribute__ ((unused)))
-{
- GObjectClass *gobject_class;
- GstInputStreamClass *klass;
- GObjectClass *parent_class;
-
- GParamSpec *pspec;
-
- gobject_class = G_OBJECT_CLASS (g_class);
- klass = GST_INPUT_STREAM_CLASS (g_class);
- gobject_class = G_OBJECT_CLASS (g_class);
-
- g_type_class_add_private (klass, sizeof (GstInputStreamPrivate));
-
- gobject_class->set_property = gst_input_stream_set_property;
- gobject_class->get_property = gst_input_stream_get_property;
- gobject_class->dispose = gst_input_stream_dispose;
- gobject_class->finalize = gst_input_stream_finalize;
- gobject_class->constructor = gst_input_stream_constructor;
-
- parent_class = g_type_class_peek_parent (klass);
-
- /* register properties */
- pspec = g_param_spec_pointer (GST_ISTREAM_JVM,
- "Set the java environment property",
- "Set the java environment property",
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class, ARG_JVM, pspec);
-
- pspec = g_param_spec_pointer (GST_ISTREAM_READER,
- "Set the java reader property",
- "Set the java reader property",
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class, ARG_READER, pspec);
-
-}
-
-/* class constructors */
-
-static GObject *
-gst_input_stream_constructor (GType type, guint n_construct_properties,
- GObjectConstructParam *construct_properties)
-{
- GObject *obj;
- GObjectClass *parent_class;
-
- /* parent */
- GstInputStreamClass *klass;
- klass = GST_INPUT_STREAM_CLASS (g_type_class_peek (GST_TYPE_INPUT_STREAM));
- parent_class = g_type_class_peek_parent (klass);
- obj = parent_class->constructor (type, n_construct_properties,
- construct_properties);
- return obj;
-}
-
-static void
-gst_input_stream_dispose (GObject *obj)
-{
- GObjectClass *parent_class;
- GstInputStream *self = GST_INPUT_STREAM (obj);
- if (self->priv->disposed)
- {
- /* If dispose did already run, return. */
- return;
- }
-
- /* Make sure dispose does not run twice. */
- self->priv->disposed = TRUE;
-
- if (self->priv->buffer != NULL)
- g_free(self->priv->buffer);
-
- /* Chain up to the parent class */
- parent_class = g_type_class_peek_parent (GST_INPUT_STREAM_CLASS (obj));
- G_OBJECT_CLASS (parent_class)->dispose (obj);
-}
-
-static void
-gst_input_stream_finalize (GObject *obj)
-{
- /* nothing else to do */
- GObjectClass *parent_class =
- g_type_class_peek_parent (GST_INPUT_STREAM_CLASS (obj));
- G_OBJECT_CLASS (parent_class)->finalize (obj);
-}
-
-static JNIEnv *
-gst_input_stream_get_jenv(GstInputStream *self)
-{
- void *env = NULL;
-
- if ((*self->priv->vm)->GetEnv(self->priv->vm, &env, JNI_VERSION_1_2) != JNI_OK)
- {
- if ((*self->priv->vm)->AttachCurrentThreadAsDaemon(self->priv->vm,
- &env, NULL) < 0)
- {
- g_warning ("GstInputStream:- env not attached");
- return NULL;
- }
- }
-
- return (JNIEnv *) env;
-}
-
-GType gst_input_stream_get_type (void)
-{
- static GType type = 0;
-
- if (type == 0)
- {
- static const GTypeInfo info = {
- sizeof (GstInputStreamClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- gst_input_stream_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GstInputStream),
- 0, /* n_preallocs */
- gst_input_stream_instance_init /* instance_init */
- };
-
- type = g_type_register_static (G_TYPE_OBJECT,
- "GstInputStreamType",
- &info, 0);
- }
-
- return type;
-}