removed lib directories (they are in libs/gst now)
authorAndy Wingo <wingo@pobox.com>
Mon, 24 Dec 2001 20:52:36 +0000 (20:52 +0000)
committerAndy Wingo <wingo@pobox.com>
Mon, 24 Dec 2001 20:52:36 +0000 (20:52 +0000)
Original commit message from CVS:
removed lib directories (they are in libs/gst now)

52 files changed:
libs/audio/Makefile.am [deleted file]
libs/audio/gstaudio.c [deleted file]
libs/audio/gstaudio.h [deleted file]
libs/control/Makefile.am [deleted file]
libs/control/gstcontrol.c [deleted file]
libs/control/gstcontrol.h [deleted file]
libs/control/gstdparam.c [deleted file]
libs/control/gstdparam.h [deleted file]
libs/control/gstdparamcommon.h [deleted file]
libs/control/gstdparammanager.c [deleted file]
libs/control/gstdparammanager.h [deleted file]
libs/control/gstdplinearinterp.c [deleted file]
libs/control/gstdplinearinterp.h [deleted file]
libs/getbits/.gitignore [deleted file]
libs/getbits/Makefile.am [deleted file]
libs/getbits/gbtest.c [deleted file]
libs/getbits/gstgetbits.c [deleted file]
libs/getbits/gstgetbits.h [deleted file]
libs/getbits/gstgetbits_generic.c [deleted file]
libs/getbits/gstgetbits_i386.s [deleted file]
libs/getbits/gstgetbits_inl.h [deleted file]
libs/idct/.gitignore [deleted file]
libs/idct/Makefile.am [deleted file]
libs/idct/README [deleted file]
libs/idct/dct.h [deleted file]
libs/idct/doieee [deleted file]
libs/idct/fastintidct.c [deleted file]
libs/idct/floatidct.c [deleted file]
libs/idct/gstidct.c [deleted file]
libs/idct/gstidct.h [deleted file]
libs/idct/ieeetest.c [deleted file]
libs/idct/intidct.c [deleted file]
libs/idct/mmx32idct.c [deleted file]
libs/idct/mmxidct.S [deleted file]
libs/idct/sseidct.S [deleted file]
libs/putbits/.gitignore [deleted file]
libs/putbits/Makefile.am [deleted file]
libs/putbits/gstputbits.c [deleted file]
libs/putbits/gstputbits.h [deleted file]
libs/resample/Makefile.am [deleted file]
libs/resample/README [deleted file]
libs/resample/dtos.c [deleted file]
libs/resample/functable.c [deleted file]
libs/resample/resample.c [deleted file]
libs/resample/resample.h [deleted file]
libs/resample/test.c [deleted file]
libs/riff/Makefile.am [deleted file]
libs/riff/gstriff.c [deleted file]
libs/riff/gstriff.h [deleted file]
libs/riff/gstriffencode.c [deleted file]
libs/riff/gstriffparse.c [deleted file]
libs/riff/gstriffutil.c [deleted file]

diff --git a/libs/audio/Makefile.am b/libs/audio/Makefile.am
deleted file mode 100644 (file)
index 20a5376..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libgstaudio.la
-
-libgstaudio_la_SOURCES = gstaudio.c
-
-libgstaudioincludedir = $(includedir)/gst/libs/gstaudio
-libgstaudioinclude_HEADERS = gstaudio.h
-
-libgstaudio_la_LIBADD = $(GST_LIBS)
-libgstaudio_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
-# FIXME is this needed?
-## from merge, kept for reference 
-## libgstaudio_la_CFLAGS = -O2 $(FOMIT_FRAME_POINTER) -finline-functions -ffast-math $(GLIB_CFLAGS) $(XML_CFLAGS)  $(GST_CFLAGS)
diff --git a/libs/audio/gstaudio.c b/libs/audio/gstaudio.c
deleted file mode 100644 (file)
index c18d6c6..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-#include "gstaudio.h"
-
-int
-gst_audio_frame_byte_size (GstPad* pad)
-{
-/* calculate byte size of an audio frame
- * this should be moved closer to the gstreamer core
- * and be implemented for every mime type IMO
- * returns 0 if there's an error, or the byte size if everything's ok
- */
-
-  int width = 0;
-  int channels = 0;
-
-  GstCaps *caps = NULL;
-
-  /* get caps of pad */
-  caps = GST_PAD_CAPS (pad);
-
-  if (caps == NULL)
-    /* ERROR: could not get caps of pad */
-    return 0;
-
-  width    = gst_caps_get_int (caps, "width");
-  channels = gst_caps_get_int (caps, "channels");
-  return (width / 8) * channels; 
-}
-
-long
-gst_audio_frame_length (GstPad* pad, GstBuffer* buf)
-/* calculate length of buffer in frames
- * this should be moved closer to the gstreamer core
- * and be implemented for every mime type IMO
- * returns 0 if there's an error, or the number of frames if everything's ok
- */
-{
-  int frame_byte_size = 0;
-
-  frame_byte_size = gst_audio_frame_byte_size (pad);
-  if (frame_byte_size == 0)
-    /* error */
-    return 0;
-  /* FIXME: this function assumes the buffer size to be a whole multiple
-   *       of the frame byte size
-   */
-  return GST_BUFFER_SIZE (buf) / frame_byte_size;
-}
-
-long
-gst_audio_frame_rate (GstPad *pad)
-/*
- * calculate frame rate (based on caps of pad)
- * returns 0 if failed, rate if success
- */
-{
-  GstCaps *caps = NULL;
-
-  /* get caps of pad */
-  caps = GST_PAD_CAPS (pad);
-
-  if (caps == NULL)
-    /* ERROR: could not get caps of pad */
-    return 0;
-  else
-    return gst_caps_get_int (caps, "rate");
-}
-
-double 
-gst_audio_length (GstPad* pad, GstBuffer* buf)
-{
-/* calculate length in seconds
- * of audio buffer buf
- * based on capabilities of pad
- */
-
-  long bytes = 0;
-  int width = 0;
-  int channels = 0;
-  long rate = 0L;
-
-  double length;
-
-  GstCaps *caps = NULL;
-
-  /* get caps of pad */
-  caps = GST_PAD_CAPS (pad);
-  if (caps == NULL)
-  {
-    /* ERROR: could not get caps of pad */
-    length = 0.0;
-  }
-  else
-  {
-    bytes = GST_BUFFER_SIZE (buf);
-    width    = gst_caps_get_int (caps, "width");
-    channels = gst_caps_get_int (caps, "channels");
-    rate     = gst_caps_get_int (caps, "rate");
-
-    length = (bytes * 8.0) / (double) (rate * channels * width);
-  }
-  return length;
-}
-
-long 
-gst_audio_highest_sample_value (GstPad* pad)
-/* calculate highest possible sample value
- * based on capabilities of pad
- */
-{
-  gboolean is_signed = FALSE;
-  gint width = 0;
-  GstCaps *caps = NULL;
-  
-  caps = GST_PAD_CAPS (pad);
-    // FIXME : Please change this to a better warning method !
-  if (caps == NULL)
-    printf ("WARNING: gstaudio: could not get caps of pad !\n");
-  width = gst_caps_get_int (caps, "width");
-  is_signed = gst_caps_get_boolean (caps, "signed");
-  if (is_signed) --width;
-  /* example : 16 bit, signed : samples between -32768 and 32767 */
-  return ((long) (1 << width));
-}
-
-gboolean 
-gst_audio_is_buffer_framed (GstPad* pad, GstBuffer* buf)
-/* check if the buffer size is a whole multiple of the frame size */
-{
-  if (GST_BUFFER_SIZE (buf) % gst_audio_frame_byte_size (pad) == 0)
-    return TRUE;
-  else
-    return FALSE;
-}
diff --git a/libs/audio/gstaudio.h b/libs/audio/gstaudio.h
deleted file mode 100644 (file)
index 09ef3ec..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- * Library       <2001> Thomas Vander Stichele <thomas@apestaart.org>
- *
- * 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.
- */
-
-#include <gst/gst.h>
-
-/* for people that are looking at this source: the purpose of these defines is
- * to make GstCaps a bit easier, in that you don't have to know all of the
- * properties that need to be defined. you can just use these macros. currently
- * (8/01) the only plugins that use these are the passthrough, speed, volume,
- * and [de]interleave plugins. so. these are for convenience only, and do not
- * specify the 'limits' of gstreamer. you might also use these definitions as a
- * base for making your own caps, if need be.
- *
- * for example, to make a source pad that can output mono streams of either
- * float or int:
-
-    template = gst_padtemplate_new 
-      ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
-      gst_caps_append(gst_caps_new ("sink_int",  "audio/raw",
-                                    GST_AUDIO_INT_PAD_TEMPLATE_PROPS),
-                      gst_caps_new ("sink_float", "audio/raw",
-                                    GST_AUDIO_FLOAT_MONO_PAD_TEMPLATE_PROPS)),
-      NULL);
-
-    srcpad = gst_pad_new_from_template(template,"src");
-
- * Andy Wingo, 18 August 2001 */
-
-#define GST_AUDIO_INT_PAD_TEMPLATE_PROPS \
-        gst_props_new (\
-          "format",             GST_PROPS_STRING ("int"),\
-            "law",              GST_PROPS_INT (0),\
-            "endianness",       GST_PROPS_INT (G_BYTE_ORDER),\
-            "signed",           GST_PROPS_LIST (\
-                                                 GST_PROPS_BOOLEAN (TRUE),\
-                                                 GST_PROPS_BOOLEAN(FALSE)\
-                                               ),\
-            "width",            GST_PROPS_LIST (GST_PROPS_INT(8), GST_PROPS_INT(16)),\
-            "depth",            GST_PROPS_LIST (GST_PROPS_INT(8), GST_PROPS_INT(16)),\
-            "rate",             GST_PROPS_INT_RANGE (4000, 96000),\
-            "channels",         GST_PROPS_INT_RANGE (1, G_MAXINT),\
-          NULL)
-
-#define GST_AUDIO_INT_MONO_PAD_TEMPLATE_PROPS \
-        gst_props_new (\
-          "format",             GST_PROPS_STRING ("int"),\
-            "law",              GST_PROPS_INT (0),\
-            "endianness",       GST_PROPS_INT (G_BYTE_ORDER),\
-            "signed",           GST_PROPS_LIST (\
-                                                 GST_PROPS_BOOLEAN (TRUE),\
-                                                 GST_PROPS_BOOLEAN(FALSE)\
-                                               ),\
-            "width",            GST_PROPS_LIST (GST_PROPS_INT(8), GST_PROPS_INT(16)),\
-            "depth",            GST_PROPS_LIST (GST_PROPS_INT(8), GST_PROPS_INT(16)),\
-            "rate",             GST_PROPS_INT_RANGE (4000, 96000),\
-            "channels",         GST_PROPS_INT (1),\
-          NULL)
-
-#define GST_AUDIO_FLOAT_MONO_PAD_TEMPLATE_PROPS \
-        gst_props_new (\
-          "format",             GST_PROPS_STRING ("float"),\
-            "layout",           GST_PROPS_STRING ("gfloat"),\
-            "intercept",        GST_PROPS_FLOAT (0.0),\
-            "slope",            GST_PROPS_FLOAT (1.0),\
-            "rate",             GST_PROPS_INT_RANGE (4000, 96000),\
-            "channels",         GST_PROPS_INT (1),\
-            NULL)
-
-/*
- * this library defines and implements some helper functions for audio
- * handling
- */
-
-/* get byte size of audio frame (based on caps of pad */
-int            gst_audio_frame_byte_size       (GstPad* pad);
-
-/* get length in frames of buffer */
-long           gst_audio_frame_length          (GstPad* pad, GstBuffer* buf);
-
-/* get frame rate based on caps */
-long           gst_audio_frame_rate            (GstPad *pad);
-
-/* calculate length in seconds of audio buffer buf based on caps of pad */
-double                 gst_audio_length                (GstPad* pad, GstBuffer* buf);
-
-/* calculate highest possible sample value based on capabilities of pad */
-long           gst_audio_highest_sample_value  (GstPad* pad);
-
-/* check if the buffer size is a whole multiple of the frame size */
-gboolean       gst_audio_is_buffer_framed      (GstPad* pad, GstBuffer* buf);
-
-
diff --git a/libs/control/Makefile.am b/libs/control/Makefile.am
deleted file mode 100644 (file)
index 6ffb774..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libgstcontrol.la
-
-libgstcontrol_la_SOURCES = \
-    gstcontrol.c \
-    gstdparammanager.c \
-    gstdparam.c \
-    gstdplinearinterp.c
-    
-
-libgstcontrolincludedir = $(includedir)/gst/libs/control
-libgstcontrolinclude_HEADERS = \
-    gstcontrol.h \
-    gstdparammanager.h \
-    gstdparam.h \
-    gstdparamcommon.h \
-    gstdplinearinterp.h
-
-libgstcontrol_la_LIBADD = $(GST_LIBS)
-libgstcontrol_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
-
diff --git a/libs/control/gstcontrol.c b/libs/control/gstcontrol.c
deleted file mode 100644 (file)
index aaf9993..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstcontrol.c: GStreamer control utility library
- *
- * 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.
- */
-#include "gstcontrol.h"
-
-void
-gst_control_init (int *argc, char **argv[]) {
-       _gst_dpman_initialize ();
-}
diff --git a/libs/control/gstcontrol.h b/libs/control/gstcontrol.h
deleted file mode 100644 (file)
index 293f831..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstcontrol.h: GStreamer control utility library
- *
- * 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.
- */
-#ifndef __GST_CONTROL_H__
-#define __GST_CONTROL_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#include <libs/control/gstdparammanager.h>
-#include <libs/control/gstdparam.h>
-
-#include <libs/control/gstdplinearinterp.h>
-
-void gst_control_init (int *argc, char **argv[]);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __GST_CONTROL_H__ */
diff --git a/libs/control/gstdparam.c b/libs/control/gstdparam.c
deleted file mode 100644 (file)
index 44cceff..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdparam.c: Dynamic Parameter functionality
- *
- * 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.
- */
-
-#include <math.h>
-#include <string.h>
-#include <gst/gstinfo.h>
-
-#include "gstdparam.h"
-#include "gstdparammanager.h"
-
-static void gst_dparam_class_init (GstDParamClass *klass);
-static void gst_dparam_init (GstDParam *dparam);
-static void gst_dparam_dispose (GObject *object);
-
-static void gst_dparam_do_update_realtime (GstDParam *dparam, gint64 timestamp);
-static GValue** gst_dparam_get_point_realtime (GstDParam *dparam, gint64 timestamp);
-
-GType 
-gst_dparam_get_type(void) {
-       static GType dparam_type = 0;
-
-       if (!dparam_type) {
-               static const GTypeInfo dparam_info = {
-                       sizeof(GstDParamClass),
-                       NULL,
-                       NULL,
-                       (GClassInitFunc)gst_dparam_class_init,
-                       NULL,
-                       NULL,
-                       sizeof(GstDParam),
-                       0,
-                       (GInstanceInitFunc)gst_dparam_init,
-               };
-               dparam_type = g_type_register_static(GST_TYPE_OBJECT, "GstDParam", &dparam_info, 0);
-       }
-       return dparam_type;
-}
-
-static void
-gst_dparam_class_init (GstDParamClass *klass)
-{
-       GObjectClass *gobject_class;
-       GstDParamClass *dparam_class;
-       GstObjectClass *gstobject_class;
-
-       gobject_class = (GObjectClass*)klass;
-       dparam_class = (GstDParamClass*)klass;
-       gstobject_class = (GstObjectClass*) klass;
-       
-       gobject_class->dispose = gst_dparam_dispose;
-       //gstobject_class->save_thyself = gst_dparam_save_thyself;
-
-}
-
-static void
-gst_dparam_init (GstDParam *dparam)
-{
-       g_return_if_fail (dparam != NULL);
-       GST_DPARAM_VALUE(dparam) = NULL;
-       GST_DPARAM_TYPE(dparam) = 0;
-       GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam)=0LL;
-       GST_DPARAM_LAST_UPDATE_TIMESTAMP(dparam)=0LL;
-       GST_DPARAM_READY_FOR_UPDATE(dparam)=FALSE;
-       dparam->lock = g_mutex_new ();
-}
-
-/**
- * gst_dparam_new:
- * @type: the type that this dparam will store
- *
- * Returns: a new instance of GstDParam
- */
-GstDParam* 
-gst_dparam_new (GType type)
-{
-       GstDParam *dparam;
-
-       dparam = g_object_new (gst_dparam_get_type (), NULL);
-       dparam->do_update_func = gst_dparam_do_update_realtime;
-       dparam->get_point_func = gst_dparam_get_point_realtime;
-       
-       dparam->point = gst_dparam_new_value_array(type, 0);    
-       GST_DPARAM_TYPE(dparam) = type;
-       
-       return dparam;
-}
-
-static void
-gst_dparam_dispose (GObject *object)
-{
-       GstDParam *dparam = GST_DPARAM(object);
-       GValue **point = dparam->point;
-       guint i = 0;
-       gchar *dparam_name = g_strdup(GST_DPARAM_NAME(dparam));
-       
-       g_print("disposing of %s\n", dparam_name);
-       if (GST_DPARAM_MANAGER(dparam)){
-               gst_dpman_detach_dparam(GST_DPARAM_MANAGER(dparam), dparam_name);
-       }
-       point = dparam->point;
-       while (point[i]){
-               g_value_unset(point[i]);
-               g_free(point[i]);
-               i++;
-       }
-       g_free(dparam_name);
-       
-}
-
-/**
- * gst_dparam_attach
- * @dparam: GstDParam instance
- * @manager: the GstDParamManager that this dparam belongs to
- *
- */
-void
-gst_dparam_attach (GstDParam *dparam, GstDParamManager *manager, GValue *value, GstDParamSpec *spec)
-{
-       
-       g_return_if_fail (dparam != NULL);
-       g_return_if_fail (GST_IS_DPARAM (dparam));
-       g_return_if_fail (manager != NULL);
-       g_return_if_fail (GST_IS_DPMAN (manager));
-       g_return_if_fail (value != NULL);
-       g_return_if_fail (spec != NULL);
-       g_return_if_fail (GST_DPARAM_TYPE(dparam) == G_VALUE_TYPE(value));
-       
-       GST_DPARAM_NAME(dparam) = spec->dparam_name;
-       GST_DPARAM_VALUE(dparam) = value;
-       GST_DPARAM_SPEC(dparam) = spec;
-       GST_DPARAM_MANAGER(dparam) = manager;
-}
-
-/**
- * gst_dparam_detach
- * @dparam: GstDParam instance
- * @manager: the GstDParamManager that this dparam belongs to
- *
- */
-void
-gst_dparam_detach (GstDParam *dparam)
-{
-       
-       g_return_if_fail (dparam != NULL);
-       g_return_if_fail (GST_IS_DPARAM (dparam));
-       
-       GST_DPARAM_NAME(dparam) = NULL;
-       GST_DPARAM_VALUE(dparam) = NULL;
-       GST_DPARAM_SPEC(dparam) = NULL;
-       GST_DPARAM_MANAGER(dparam) = NULL;
-}
-
-/**
- * gst_dparam_new_value_array
- * @type: the type of the first GValue in the array
- * @...: the type of other GValues in the array
- *
- * The list of types should be terminated with a 0.
- * If the type of a value is not yet known then use G_TYPE_NONE .
- *
- * Returns: an newly created array of GValues
- */
-GValue**
-gst_dparam_new_value_array(GType type, ...)
-{
-       GValue **point;
-       GValue *value;
-       guint x;
-       guint values_length = 0;
-       va_list var_args;
-       GType each_type;
-
-       va_start (var_args, type);
-       each_type = type;
-       while (each_type){
-               values_length++;
-               each_type = va_arg (var_args, GType);
-       }
-       va_end (var_args);
-       
-       point = g_new0(GValue*,values_length + 1);
-
-       va_start (var_args, type);
-       each_type = type;
-       for (x=0 ; x < values_length ; x++){
-               value = g_new0(GValue,1);
-               if (each_type != G_TYPE_NONE){
-                       g_value_init(value, each_type);
-               }
-               point[x] = value;
-               each_type = va_arg (var_args, GType);
-       }
-       point[values_length] = NULL;
-       va_end (var_args);
-       
-       GST_DEBUG(GST_CAT_PARAMS, "array with %d values created\n", values_length);
-
-       return point;
-}
-
-void
-gst_dparam_set_value_from_string(GValue *value, const gchar *value_str)
-{
-
-       g_return_if_fail(value != NULL);
-       g_return_if_fail(value_str != NULL);
-       
-       GST_DEBUG(GST_CAT_PARAMS, "parsing '%s' to type %s\n", value_str, g_type_name(G_VALUE_TYPE(value)));
-
-       switch (G_VALUE_TYPE(value)) {
-               case G_TYPE_STRING:
-                       g_value_set_string(value, g_strdup(value_str));
-                       break;
-               case G_TYPE_ENUM: 
-               case G_TYPE_INT: {
-                       gint i;
-                       sscanf (value_str, "%d", &i);
-                       g_value_set_int(value, i);
-                       break;
-               }
-               case G_TYPE_UINT: {
-                       guint i;
-                       sscanf (value_str, "%u", &i);
-                       g_value_set_uint(value, i);
-                       break;
-               }
-               case G_TYPE_LONG: {
-                       glong i;
-                       sscanf (value_str, "%ld", &i);
-                       g_value_set_long(value, i);
-                       break;
-               }
-               case G_TYPE_ULONG: {
-                       gulong i;
-                       sscanf (value_str, "%lu", &i);
-                       g_value_set_ulong(value, i);
-                       break;
-               }
-               case G_TYPE_BOOLEAN: {
-                       gboolean i = FALSE;
-                       if (!strncmp ("true", value_str, 4)) i = TRUE;
-                       g_value_set_boolean(value, i);
-                       break;
-               }
-               case G_TYPE_CHAR: {
-                       gchar i;
-                       sscanf (value_str, "%c", &i);
-                       g_value_set_char(value, i);
-                       break;
-               }
-               case G_TYPE_UCHAR: {
-                       guchar i;
-                       sscanf (value_str, "%c", &i);
-                       g_value_set_uchar(value, i);
-                       break;
-               }
-               case G_TYPE_FLOAT: {
-                       gfloat i;
-                       sscanf (value_str, "%f", &i);
-                       g_value_set_float(value, i);
-                       break;
-               }
-               case G_TYPE_DOUBLE: {
-                       gfloat i;
-                       sscanf (value_str, "%g", &i);
-                       g_value_set_double(value, (gdouble)i);
-                       break;
-               }
-               default:
-                       break;
-       }
-}
-
-static void
-gst_dparam_do_update_realtime (GstDParam *dparam, gint64 timestamp)
-{
-       GST_DPARAM_LOCK(dparam);
-       GST_DPARAM_READY_FOR_UPDATE(dparam) = FALSE;
-       GST_DEBUG(GST_CAT_PARAMS, "updating value for %s(%p)\n",GST_DPARAM_NAME (dparam),dparam);
-       g_value_copy(dparam->point[0], GST_DPARAM_VALUE(dparam));
-       GST_DPARAM_UNLOCK(dparam);
-}
-
-static GValue** 
-gst_dparam_get_point_realtime (GstDParam *dparam, gint64 timestamp)
-{
-       GST_DEBUG(GST_CAT_PARAMS, "getting point for %s(%p)\n",GST_DPARAM_NAME (dparam),dparam);
-       return dparam->point;
-}
-
-/**********************
- * GstDParamSmooth
- **********************/
-
-static void gst_dparam_do_update_smooth (GstDParam *dparam, gint64 timestamp);
-static GValue** gst_dparam_get_point_smooth (GstDParam *dparam, gint64 timestamp);
-
-/**
- * gst_dparam_smooth_new:
- * @type: the type that this dparam will store
- *
- * Returns: a new instance of GstDParamSmooth
- */
-GstDParam* 
-gst_dparam_smooth_new (GType type)
-{
-       GstDParam *dparam;
-
-       dparam = g_object_new (gst_dparam_get_type (), NULL);
-       
-       dparam->do_update_func = gst_dparam_do_update_smooth;
-       dparam->get_point_func = gst_dparam_get_point_smooth;
-       
-       dparam->point = gst_dparam_new_value_array(type, type, G_TYPE_FLOAT, 0);        
-       GST_DPARAM_TYPE(dparam) = type;
-       
-       return dparam;
-}
-
-static void
-gst_dparam_do_update_smooth (GstDParam *dparam, gint64 timestamp)
-{
-       gint64 time_diff;
-       gfloat time_ratio;
-       
-       time_diff = MIN(GST_DPARAM_DEFAULT_UPDATE_PERIOD(dparam), 
-                       timestamp - GST_DPARAM_LAST_UPDATE_TIMESTAMP(dparam));
-                       
-       time_ratio = (gfloat)time_diff / g_value_get_float(dparam->point[2]);
-
-       GST_DPARAM_LOCK(dparam);
-
-       GST_DPARAM_LAST_UPDATE_TIMESTAMP(dparam) = GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam);  
-       while(GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam) <= timestamp){
-               GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam) += GST_DPARAM_DEFAULT_UPDATE_PERIOD(dparam);
-       }
-       GST_DEBUG(GST_CAT_PARAMS, "last:%lld current:%lld next:%lld\n",
-                                  GST_DPARAM_LAST_UPDATE_TIMESTAMP(dparam), timestamp, GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam));
-
-       
-       switch (G_VALUE_TYPE(GST_DPARAM_VALUE(dparam))){
-               case G_TYPE_FLOAT: {
-                       gfloat current, target, max_change, current_diff, final_val;
-                       
-                       target = g_value_get_float(dparam->point[0]);
-                       current = g_value_get_float(GST_DPARAM_VALUE(dparam));
-                       max_change = time_ratio * g_value_get_float(dparam->point[1]);
-
-                       GST_DEBUG(GST_CAT_PARAMS, "target:%f current:%f max_change:%f \n", 
-                                                  target, current, max_change);
-                                                  
-                       if (dparam->spec->is_log){
-                               gfloat current_log;
-                               current_log = log(current);
-                               current_diff = ABS(current_log - log(target));
-                               if (current_diff > max_change)
-                                       final_val = (target < current) ? exp(current_log-max_change) : exp(current_log+max_change);
-                               else
-                                       final_val = target;
-                       } 
-                       else {
-                               current_diff = ABS (current - target);
-                               if (current_diff > max_change)
-                                       final_val = (target < current) ? current-max_change : current+max_change;
-                               else
-                                       final_val = target;                                                                     
-                       }
-
-                       GST_DPARAM_READY_FOR_UPDATE(dparam) = (current_diff > max_change);
-                       g_value_set_float(GST_DPARAM_VALUE(dparam), final_val);
-                       
-                       break;
-               }
-               default:
-                       break;
-       }
-
-                                          
-       //GST_DEBUG(GST_CAT_PARAMS, "smooth update for %s(%p): %f\n",
-       //                           GST_DPARAM_NAME (dparam),dparam, g_value_get_float(GST_DPARAM_VALUE(dparam)));
-
-       GST_DPARAM_UNLOCK(dparam);
-}
-
-static GValue** 
-gst_dparam_get_point_smooth (GstDParam *dparam, gint64 timestamp)
-{
-       GST_DEBUG(GST_CAT_PARAMS, "getting point for %s(%p)\n",GST_DPARAM_NAME (dparam),dparam);
-       return dparam->point;
-}
diff --git a/libs/control/gstdparam.h b/libs/control/gstdparam.h
deleted file mode 100644 (file)
index 1b3131a..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdparam.h: Dynamic Parameter functionality
- *
- * 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.
- */
-
-#ifndef __GST_DPARAM_H__
-#define __GST_DPARAM_H__
-
-#include <gst/gstobject.h>
-#include <gst/gstprops.h>
-#include <libs/control/gstdparamcommon.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GST_TYPE_DPARAM                        (gst_dparam_get_type ())
-#define GST_DPARAM(obj)                        (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DPARAM,GstDParam))
-#define GST_DPARAM_CLASS(klass)                (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DPARAM,GstDParam))
-#define GST_IS_DPARAM(obj)                     (G_TYPE_CHECK_INSTANCE_TYPE     ((obj), GST_TYPE_DPARAM))
-#define GST_IS_DPARAM_CLASS(obj)               (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DPARAM))
-
-#define GST_DPARAM_NAME(dparam)                                 (GST_OBJECT_NAME(dparam))
-#define GST_DPARAM_PARENT(dparam)                       (GST_OBJECT_PARENT(dparam))
-#define GST_DPARAM_VALUE(dparam)                                ((dparam)->value)
-#define GST_DPARAM_SPEC(dparam)                                 ((dparam)->spec)
-#define GST_DPARAM_MANAGER(dparam)                              ((dparam)->manager)
-#define GST_DPARAM_TYPE(dparam)                                 ((dparam)->type)
-
-#define GST_DPARAM_LOCK(dparam)                (g_mutex_lock((dparam)->lock))
-#define GST_DPARAM_UNLOCK(dparam)              (g_mutex_unlock((dparam)->lock))
-
-#define GST_DPARAM_READY_FOR_UPDATE(dparam)            ((dparam)->ready_for_update)
-#define GST_DPARAM_DEFAULT_UPDATE_PERIOD(dparam)       ((dparam)->default_update_period)
-#define GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam)       ((dparam)->next_update_timestamp)
-#define GST_DPARAM_LAST_UPDATE_TIMESTAMP(dparam)       ((dparam)->last_update_timestamp)
-
-#define GST_DPARAM_GET_POINT(dparam, timestamp) \
-       ((dparam->get_point_func)(dparam, timestamp))
-
-#define GST_DPARAM_FIND_POINT(dparam, timestamp, search_flag) \
-       ((dparam->find_point_func)(dparam, data, search_flag))
-
-#define GST_DPARAM_DO_UPDATE(dparam, timestamp) \
-       ((dparam->do_update_func)(dparam, timestamp))
-               
-#define GST_DPARAM_INSERT_POINT(dparam, timestamp) \
-       ((dparam->insert_point_func)(dparam, timestamp))
-
-#define GST_DPARAM_REMOVE_POINT(dparam, data) \
-       ((dparam->remove_point_func)(dparam, data))
-       
-typedef enum {
-  GST_DPARAM_CLOSEST,
-  GST_DPARAM_CLOSEST_AFTER,
-  GST_DPARAM_CLOSEST_BEFORE,
-  GST_DPARAM_EXACT,
-} GstDParamSearchFlag;
-
-typedef enum {
-  GST_DPARAM_NOT_FOUND = 0,
-  GST_DPARAM_FOUND_EXACT,
-  GST_DPARAM_FOUND_CLOSEST,
-} GstDParamSearchResult;
-
-typedef struct _GstDParamClass GstDParamClass;
-
-typedef GValue** (*GstDParamInsertPointFunction) (GstDParam *dparam, guint64 timestamp);
-typedef void (*GstDParamRemovePointFunction) (GstDParam *dparam, GValue** point);
-typedef GValue** (*GstDParamGetPointFunction) (GstDParam *dparam, gint64 timestamp);
-typedef GstDParamSearchResult (*GstDParamFindPointFunction) (GstDParam *dparam, gint64 *timestamp, GstDParamSearchFlag search_flag);
-
-typedef void (*GstDParamDoUpdateFunction) (GstDParam *dparam, gint64 timestamp);
-
-struct _GstDParam {
-       GstObject               object;
-
-       GstDParamGetPointFunction get_point_func;
-       GstDParamFindPointFunction find_point_func;
-
-       GstDParamDoUpdateFunction do_update_func;
-       
-       GstDParamInsertPointFunction insert_point_func;
-       GstDParamRemovePointFunction remove_point_func; 
-       
-       GMutex *lock;
-       GValue *value;
-       GstDParamManager *manager;
-       GstDParamSpec *spec;
-       GValue **point;
-       GType type;
-       gint64 last_update_timestamp;
-       gint64 next_update_timestamp;
-       gint64 default_update_period;
-       gboolean ready_for_update;
-};
-
-struct _GstDParamClass {
-       GstObjectClass parent_class;
-
-       /* signal callbacks */
-};
-
-struct _GstDParamSpec {
-       gchar *dparam_name;
-       gchar *unit_name;
-       GValue *min_val;
-       GValue *max_val;
-       GValue *default_val;
-       gboolean is_log;
-       gboolean is_rate;
-};
-
-GType gst_dparam_get_type (void);
-GstDParam* gst_dparam_new (GType type);
-void gst_dparam_attach (GstDParam *dparam, GstDParamManager *manager, GValue *value, GstDParamSpec *spec);
-void gst_dparam_detach (GstDParam *dparam);
-GValue** gst_dparam_new_value_array(GType type, ...);
-void gst_dparam_set_value_from_string(GValue *value, const gchar *value_str);
-
-/**********************
- * GstDParamSmooth
- **********************/
-
-GstDParam* gst_dparam_smooth_new (GType type);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __GST_DPARAM_H__ */
diff --git a/libs/control/gstdparamcommon.h b/libs/control/gstdparamcommon.h
deleted file mode 100644 (file)
index 96c388b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdparamcommon.h: Dynamic Parameter common header
- *
- * 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.
- */
-
-#ifndef __GST_DPCOMMON_H__
-#define __GST_DPCOMMON_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef struct _GstDParam GstDParam;
-typedef struct _GstDParamSpec GstDParamSpec;
-typedef struct _GstDParamManager GstDParamManager;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __GST_DPCOMMON_H__ */
diff --git a/libs/control/gstdparammanager.c b/libs/control/gstdparammanager.c
deleted file mode 100644 (file)
index dbfcb40..0000000
+++ /dev/null
@@ -1,782 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdparammanager.c: Dynamic Parameter group functionality
- *
- * 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.
- */
-
-#include "gstdparammanager.h"
-#include <gst/gstelement.h>
-#include <gst/gstinfo.h>
-
-static GHashTable *_element_registry;
-
-static void gst_dpman_class_init (GstDParamManagerClass *klass);
-static void gst_dpman_init (GstDParamManager *dpman);
-static void gst_dpman_dispose (GObject *object);
-static GstDParamWrapper* gst_dpman_new_wrapper(GstDParamManager *dpman, gchar *dparam_name, GType type, GstDPMUpdateMethod update_method);
-static GstDParamWrapper* gst_dpman_get_wrapper(GstDParamManager *dpman, gchar *dparam_name);
-static void gst_dpman_state_change (GstElement *element, gint state, GstDParamManager *dpman);
-static void gst_dpman_caps_changed (GstPad *pad, GstCaps *caps, GstDParamManager *dpman);
-static guint gst_dpman_preprocess_synchronous(GstDParamManager *dpman, guint frames, gint64 timestamp);
-static guint gst_dpman_preprocess_noop(GstDParamManager *dpman, guint frames, gint64 timestamp);
-static guint gst_dpman_process_noop(GstDParamManager *dpman, guint frame_count);
-
-static GObjectClass *parent_class;
-
-void 
-_gst_dpman_initialize()
-{
-}
-
-GType
-gst_dpman_get_type (void)
-{
-       static GType dpman_type = 0;
-
-       if (!dpman_type) {
-               static const GTypeInfo dpman_info = {
-                       sizeof(GstDParamManagerClass),
-                       NULL,
-                       NULL,
-                       (GClassInitFunc)gst_dpman_class_init,
-                       NULL,
-                       NULL,
-                       sizeof(GstDParamManager),
-                       0,
-                       (GInstanceInitFunc)gst_dpman_init,
-               };
-               dpman_type = g_type_register_static(GST_TYPE_OBJECT, "GstDParamManager", &dpman_info, 0);
-       }
-       return dpman_type;
-}
-
-static void
-gst_dpman_class_init (GstDParamManagerClass *klass)
-{
-       GstObjectClass *gstobject_class;
-       GObjectClass *gobject_class;
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       gstobject_class = (GstObjectClass*) klass;
-       gobject_class = (GObjectClass*) klass;
-       gobject_class->dispose = gst_dpman_dispose;
-
-       klass->modes = g_hash_table_new(g_str_hash,g_str_equal);
-
-       gst_dpman_register_mode (klass, "synchronous", 
-                              gst_dpman_preprocess_synchronous, gst_dpman_process_noop, NULL, NULL);
-       gst_dpman_register_mode (klass, "asynchronous", 
-                              gst_dpman_preprocess_noop, gst_dpman_process_noop, NULL, NULL);
-       gst_dpman_register_mode (klass, "disabled", 
-                              gst_dpman_preprocess_noop, gst_dpman_process_noop, NULL, NULL);
-
-       _element_registry = g_hash_table_new(NULL,NULL);
-}
-
-static void
-gst_dpman_init (GstDParamManager *dpman)
-{
-       GST_DPMAN_DPARAMS(dpman) = g_hash_table_new(g_str_hash,g_str_equal);
-       GST_DPMAN_DPARAMS_LIST(dpman) = NULL;
-       GST_DPMAN_NAME(dpman) = NULL;
-       GST_DPMAN_PARENT(dpman) = NULL;
-       GST_DPMAN_MODE_NAME(dpman) = NULL;
-       GST_DPMAN_MODE(dpman) = NULL;
-       GST_DPMAN_MODE_DATA(dpman) = NULL;
-       GST_DPMAN_RATE(dpman) = 0;
-}
-
-/**
- * gst_dpman_new:
- * @name: name of the GstDParamManager instance
- * @parent: element which created this instance
- *
- * Returns: a new instance of GstDParamManager
- */
-GstDParamManager* 
-gst_dpman_new (gchar *name, GstElement *parent)
-{
-       GstDParamManager *dpman;
-       
-       g_return_val_if_fail (name != NULL, NULL);
-
-       dpman = g_object_new (gst_dpman_get_type (), NULL);
-       gst_object_set_name (GST_OBJECT (dpman), name);
-       gst_dpman_set_parent(dpman, parent);
-
-       gst_dpman_set_mode(dpman, "disabled");
-
-       return dpman;
-}
-
-
-static void
-gst_dpman_dispose (GObject *object)
-{
-/*     GstDParamManager *dpman = GST_DPMAN(object); */
-
-       G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-/**
- * gst_dpman_add_required_dparam_callback:
- * @dpman: GstDParamManager instance
- * @dparam_name: a parameter name unique to this GstDParamManager
- * @type: the GValue type that this parameter will store
- * @update_func: callback to update the element with the new value
- * @update_data: will be included in the call to update_func
- *
- * Returns: true if it was successfully added
- */
-gboolean 
-gst_dpman_add_required_dparam_callback (GstDParamManager *dpman, 
-                                        gchar *dparam_name, 
-                                        GType type, 
-                                        GstDPMUpdateFunction update_func, 
-                                        gpointer update_data)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, FALSE);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), FALSE);
-       g_return_val_if_fail (update_func != NULL, FALSE);
-
-       dpwrap = gst_dpman_new_wrapper(dpman, dparam_name, type, GST_DPMAN_CALLBACK);
-
-       g_return_val_if_fail (dpwrap != NULL, FALSE);
-
-       GST_DEBUG(GST_CAT_PARAMS,"adding required callback dparam '%s' of type %s\n", dparam_name, g_type_name(type));
-
-       dpwrap->update_func = update_func;
-       dpwrap->update_data = update_data;
-
-       return TRUE;    
-}
-
-/**
- * gst_dpman_add_required_dparam_direct:
- * @dpman: GstDParamManager instance
- * @dparam_name: a parameter name unique to this GstDParamManager
- * @type: the GValue type that this parameter will store
- * @update_data: pointer to the member to be updated
- *
- * Returns: true if it was successfully added
- */
-gboolean 
-gst_dpman_add_required_dparam_direct (GstDParamManager *dpman, 
-                                        gchar *dparam_name, 
-                                        GType type, 
-                                        gpointer update_data)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, FALSE);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), FALSE);
-       g_return_val_if_fail (update_data != NULL, FALSE);
-
-       dpwrap = gst_dpman_new_wrapper(dpman, dparam_name, type, GST_DPMAN_DIRECT);
-
-       g_return_val_if_fail (dpwrap != NULL, FALSE);
-
-       GST_DEBUG(GST_CAT_PARAMS,"adding required direct dparam '%s' of type %s\n", dparam_name, g_type_name(type));
-
-       dpwrap->update_data = update_data;
-
-       return TRUE;    
-}
-
-/**
- * gst_dpman_add_required_dparam_array:
- * @dpman: GstDParamManager instance
- * @dparam_name: a parameter name unique to this GstDParamManager
- * @type: the GValue type that this parameter will store
- * @update_data: pointer to where the array will be stored
- *
- * Returns: true if it was successfully added
- */
-gboolean 
-gst_dpman_add_required_dparam_array (GstDParamManager *dpman, 
-                                        gchar *dparam_name, 
-                                        GType type, 
-                                        gpointer update_data)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, FALSE);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), FALSE);
-       g_return_val_if_fail (update_data != NULL, FALSE);
-
-       dpwrap = gst_dpman_new_wrapper(dpman, dparam_name, type, GST_DPMAN_ARRAY);
-
-       g_return_val_if_fail (dpwrap != NULL, FALSE);
-
-       GST_DEBUG(GST_CAT_PARAMS,"adding required array dparam '%s' of type %s\n", dparam_name, g_type_name(type));
-
-       dpwrap->update_data = update_data;
-
-       return TRUE;    
-}
-
-/**
- * gst_dpman_remove_required_dparam:
- * @dpman: GstDParamManager instance
- * @dparam_name: the name of an existing parameter
- *
- */
-void 
-gst_dpman_remove_required_dparam (GstDParamManager *dpman, gchar *dparam_name)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_if_fail (dpman != NULL);
-       g_return_if_fail (GST_IS_DPMAN (dpman));
-       g_return_if_fail (dparam_name != NULL);
-
-       dpwrap = gst_dpman_get_wrapper(dpman, dparam_name);
-       
-       g_return_if_fail(dpwrap != NULL);
-       g_return_if_fail(dpwrap->dparam == NULL);
-
-       GST_DEBUG(GST_CAT_PARAMS, "removing required dparam: %s\n", dparam_name);
-       
-       g_hash_table_remove(GST_DPMAN_DPARAMS(dpman), dparam_name);
-       GST_DPMAN_DPARAMS_LIST(dpman) = g_slist_remove(GST_DPMAN_DPARAMS_LIST(dpman), dpwrap);
-
-       g_free(dpwrap->value);
-       g_free(dpwrap);
-}
-
-/**
- * gst_dpman_attach_dparam:
- * @dpman: GstDParamManager instance
- * @dparam_name: a name previously added with gst_dpman_add_required_dparam
- * @dparam: GstDParam instance to attach
- *
- * Returns: true if it was successfully attached
- */
-gboolean 
-gst_dpman_attach_dparam (GstDParamManager *dpman, gchar *dparam_name, GstDParam *dparam)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, FALSE);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), FALSE);
-       g_return_val_if_fail (dparam_name != NULL, FALSE);
-       g_return_val_if_fail (dparam != NULL, FALSE);
-       g_return_val_if_fail (GST_IS_DPARAM (dparam), FALSE);
-       g_return_val_if_fail (dparam != NULL, FALSE);
-
-       dpwrap = gst_dpman_get_wrapper(dpman, dparam_name);
-
-       g_return_val_if_fail(dpwrap != NULL, FALSE);
-       g_return_val_if_fail(dpwrap->value != NULL, FALSE);
-
-       dpwrap->dparam = dparam;
-       gst_dparam_attach(dparam, dpman, dpwrap->value, dpwrap->spec);
-
-       return TRUE;
-}
-
-/**
- * gst_dpman_detach_dparam:
- * @dpman: GstDParamManager instance
- * @dparam_name: the name of a parameter with a previously attached GstDParam
- *
- */
-void 
-gst_dpman_detach_dparam (GstDParamManager *dpman, gchar *dparam_name)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_if_fail (dpman != NULL);
-       g_return_if_fail (GST_IS_DPMAN (dpman));
-       g_return_if_fail (dparam_name != NULL);
-       
-       dpwrap = gst_dpman_get_wrapper(dpman, dparam_name);
-
-       g_return_if_fail(dpwrap);
-       
-       gst_dparam_detach(dpwrap->dparam);
-       dpwrap->dparam = NULL;
-       
-}
-
-/**
- * gst_dpman_get_dparam:
- * @dpman: GstDParamManager instance
- * @name: the name of an existing dparam instance
- *
- * Returns: the dparam with the given name - or NULL otherwise
- */
-GstDParam *
-gst_dpman_get_dparam (GstDParamManager *dpman, gchar *name)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, NULL);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), NULL);
-       g_return_val_if_fail (name != NULL, NULL);
-       
-       dpwrap = g_hash_table_lookup(GST_DPMAN_DPARAMS(dpman), name);
-       g_return_val_if_fail (dpwrap != NULL, NULL);
-       
-       return dpwrap->dparam;
-}
-
-/**
- * gst_dpman_get_dparam_type:
- * @dpman: GstDParamManager instance
- * @name: the name of dparam
- *
- * Returns: the type that this dparam requires/uses
- */
-GType
-gst_dpman_get_dparam_type (GstDParamManager *dpman, gchar *name)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, 0);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), 0);
-       g_return_val_if_fail (name != NULL, 0);
-       
-       dpwrap = g_hash_table_lookup(GST_DPMAN_DPARAMS(dpman), name);
-       g_return_val_if_fail (dpwrap != NULL, 0);
-       
-       return G_VALUE_TYPE(dpwrap->value);
-}
-
-GstDParamSpec**
-gst_dpman_list_dparam_specs(GstDParamManager *dpman)
-{
-       GstDParamWrapper* dpwrap;
-       GSList *dpwraps;
-       GstDParamSpec** dparam_specs;
-       guint x = 0;
-
-       g_return_val_if_fail (dpman != NULL, NULL);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), NULL);
-       
-       dpwraps = GST_DPMAN_DPARAMS_LIST(dpman);
-
-       dparam_specs = g_new0(GstDParamSpec*, g_slist_length(dpwraps) + 1);
-       
-       while (dpwraps){
-               dpwrap = (GstDParamWrapper*)dpwraps->data;
-               dparam_specs[x++] = dpwrap->spec;
-               dpwraps = g_slist_next(dpwraps);
-       }
-       return dparam_specs;
-}
-
-GstDParamSpec*
-gst_dpman_get_dparam_spec (GstDParamManager *dpman, gchar *dparam_name)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, NULL);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), NULL);
-       g_return_val_if_fail (dparam_name != NULL, NULL);
-
-       dpwrap = gst_dpman_get_wrapper(dpman, dparam_name);
-       return dpwrap->spec;
-}
-
-void
-gst_dpman_dparam_spec_has_changed (GstDParamManager *dpman, gchar *dparam_name)
-{
-       
-}
-
-/**
- * gst_dpman_register_mode
- * @klass: GstDParamManagerClass class instance
- * @modename: the unique name of the new mode
- * @preprocessfunc: the function which will be called before each buffer is processed
- * @processfunc: the function which may be called throughout the processing of a buffer
- * @setupfunc: the function which initialises the mode when activated
- * @teardownfunc: the function which frees any resources the mode uses
- *
- */
-void
-gst_dpman_register_mode (GstDParamManagerClass *klass,
-                         gchar *modename, 
-                         GstDPMModePreProcessFunction preprocessfunc,
-                         GstDPMModeProcessFunction processfunc,
-                         GstDPMModeSetupFunction setupfunc,
-                         GstDPMModeTeardownFunction teardownfunc)
-{
-       GstDPMMode *mode;
-
-       g_return_if_fail (klass != NULL);
-       g_return_if_fail (modename != NULL);
-       g_return_if_fail (GST_IS_DPMAN_CLASS (klass));
-       
-       mode = g_new0(GstDPMMode,1);
-
-       mode->preprocessfunc = preprocessfunc;
-       mode->processfunc = processfunc;
-       mode->setupfunc = setupfunc;
-       mode->teardownfunc = teardownfunc;
-       
-       g_hash_table_insert(klass->modes, modename, mode);
-       GST_DEBUG(GST_CAT_PARAMS, "mode '%s' registered\n", modename);
-}
-
-/**
- * gst_dpman_set_mode
- * @dpman: GstDParamManager instance
- * @modename: the name of the mode to use
- *
- * Returns: TRUE if the mode was set, FALSE otherwise
- */
-gboolean
-gst_dpman_set_mode(GstDParamManager *dpman, gchar *modename)
-{
-       GstDPMMode *mode=NULL;
-       GstDParamManagerClass *oclass;
-       
-       g_return_val_if_fail (dpman != NULL, FALSE);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), FALSE);
-       g_return_val_if_fail (modename != NULL, FALSE);
-
-       oclass = (GstDParamManagerClass*)(G_OBJECT_GET_CLASS(dpman));
-       
-       mode = g_hash_table_lookup(oclass->modes, modename);
-       g_return_val_if_fail (mode != NULL, FALSE);
-       
-       if (GST_DPMAN_MODE(dpman) == mode) {
-               GST_DEBUG(GST_CAT_PARAMS, "mode %s already set\n", modename);
-               return TRUE;
-       }
-       
-       GST_DEBUG(GST_CAT_PARAMS, "setting mode to %s\n", modename);
-       if (GST_DPMAN_MODE(dpman) && GST_DPMAN_TEARDOWNFUNC(dpman)){
-               GST_DPMAN_TEARDOWNFUNC(dpman)(dpman);
-       }
-       
-       GST_DPMAN_MODE(dpman) = mode;
-
-       if (GST_DPMAN_SETUPFUNC(dpman)){
-               GST_DPMAN_SETUPFUNC(dpman)(dpman);
-       }
-       
-       return TRUE;
-}
-
-/**
- * gst_dpman_set_parent
- * @dpman: GstDParamManager instance
- * @parent: the element that this GstDParamManager belongs to
- *
- */
-void
-gst_dpman_set_parent (GstDParamManager *dpman, GstElement *parent)
-{
-       g_return_if_fail (dpman != NULL);
-       g_return_if_fail (GST_IS_DPMAN (dpman));
-       g_return_if_fail (parent != NULL);
-       g_return_if_fail (GST_IS_ELEMENT (parent));
-
-       g_hash_table_insert(_element_registry, parent, dpman);
-       gst_object_set_parent (GST_OBJECT (dpman), GST_OBJECT(parent));
-       g_signal_connect(G_OBJECT(parent), "state_change", 
-                        G_CALLBACK (gst_dpman_state_change), dpman);
-}
-
-/**
- * gst_dpman_get_manager
- * @parent: the element that the desired GstDParamManager belongs to
- *
- * Returns: the GstDParamManager which belongs to this element or NULL
- * if it doesn't exist
- */
-GstDParamManager *
-gst_dpman_get_manager (GstElement *parent)
-{
-       GstDParamManager *dpman;
-       g_return_val_if_fail (parent != NULL, NULL);
-       g_return_val_if_fail (GST_IS_ELEMENT (parent), NULL);
-       
-       dpman = (GstDParamManager*)g_hash_table_lookup(_element_registry, parent);
-       return dpman;
-}
-
-/**
- * gst_dpman_set_rate_change_pad
- * @dpman: GstDParamManager instance
- * @pad: the pad which may have a "rate" caps property
- *
- */
-void
-gst_dpman_set_rate_change_pad(GstDParamManager *dpman, GstPad *pad)
-{
-       g_return_if_fail (dpman != NULL);
-       g_return_if_fail (GST_IS_DPMAN (dpman));
-       g_return_if_fail (pad != NULL);
-       g_return_if_fail (GST_IS_PAD (pad));
-
-       g_signal_connect(G_OBJECT(pad), "caps_changed", 
-                        G_CALLBACK (gst_dpman_caps_changed), dpman);
-}
-
-static GstDParamWrapper* 
-gst_dpman_get_wrapper(GstDParamManager *dpman, gchar *dparam_name)
-{
-       g_return_val_if_fail (dpman != NULL, NULL);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), NULL);
-       g_return_val_if_fail (dparam_name != NULL, NULL);
-       
-       return g_hash_table_lookup(GST_DPMAN_DPARAMS(dpman), dparam_name);
-}
-
-static GstDParamWrapper* 
-gst_dpman_new_wrapper(GstDParamManager *dpman, gchar *dparam_name, GType type, GstDPMUpdateMethod update_method)
-{
-       GstDParamWrapper* dpwrap;
-
-       g_return_val_if_fail (dpman != NULL, NULL);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), NULL);
-       g_return_val_if_fail (dparam_name != NULL, NULL);
-
-       g_return_val_if_fail(gst_dpman_get_wrapper(dpman, dparam_name) == NULL, NULL);
-
-       dpwrap = g_new0(GstDParamWrapper,1);
-       dpwrap->update_method = update_method;
-       dpwrap->value = g_new0(GValue,1);
-       g_value_init(dpwrap->value, type);
-       
-       dpwrap->spec = g_new0(GstDParamSpec,1);
-       dpwrap->spec->dparam_name = dparam_name;
-       dpwrap->spec->min_val = g_new0(GValue,1);
-       dpwrap->spec->max_val = g_new0(GValue,1);
-       dpwrap->spec->default_val = g_new0(GValue,1);
-       g_value_init(dpwrap->spec->min_val, type);
-       g_value_init(dpwrap->spec->max_val, type);
-       g_value_init(dpwrap->spec->default_val, type);
-
-       g_hash_table_insert(GST_DPMAN_DPARAMS(dpman), dparam_name, dpwrap);
-       GST_DPMAN_DPARAMS_LIST(dpman) = g_slist_append(GST_DPMAN_DPARAMS_LIST(dpman), dpwrap);
-       
-       return dpwrap;  
-}
-
-
-static void 
-gst_dpman_state_change (GstElement *element, gint state, GstDParamManager *dpman)
-{
-       GSList *dwraps;
-       GstDParam *dparam;
-       GstDParamWrapper *dpwrap;
-
-       g_return_if_fail (dpman != NULL);
-       g_return_if_fail (GST_IS_DPMAN (dpman));
-       
-       if (state == GST_STATE_PLAYING){
-               GST_DEBUG(GST_CAT_PARAMS, "initialising params\n");
-                       
-               // force all params to be updated
-               dwraps = GST_DPMAN_DPARAMS_LIST(dpman);
-               while (dwraps){
-                       dpwrap = (GstDParamWrapper*)dwraps->data;
-                       dparam = dpwrap->dparam;
-                       
-                       if (dparam){
-                               GST_DPARAM_READY_FOR_UPDATE(dparam) = TRUE;
-                               if (dparam->spec){
-                                       g_value_copy(dparam->spec->default_val, GST_DPARAM_VALUE(dparam));
-                               }
-                       }
-                       dwraps = g_slist_next(dwraps);
-               }
-       }
-}
-
-static void
-gst_dpman_caps_changed (GstPad *pad, GstCaps *caps, GstDParamManager *dpman)
-{
-       g_return_if_fail (caps != NULL);
-       g_return_if_fail (dpman != NULL);
-       g_return_if_fail (GST_IS_DPMAN (dpman));
-       
-       GST_DPMAN_RATE(dpman) = gst_caps_get_int (caps, "rate");
-       
-       GST_DEBUG(GST_CAT_PARAMS, "got caps change %d\n", GST_DPMAN_RATE(dpman));
-}
-
-static guint 
-gst_dpman_preprocess_synchronous(GstDParamManager *dpman, guint frames, gint64 timestamp)
-{
-       GSList *dwraps;
-       GstDParam *dparam;
-       GstDParamWrapper *dpwrap;
-       guint x;
-
-       g_return_val_if_fail (dpman != NULL, frames);
-       g_return_val_if_fail (GST_IS_DPMAN (dpman), frames);
-
-       // now check whether any passive dparams are ready for an update
-       dwraps = GST_DPMAN_DPARAMS_LIST(dpman);
-       while (dwraps){
-               dpwrap = (GstDParamWrapper*)dwraps->data;
-               dparam = dpwrap->dparam;
-
-               if (dparam && (GST_DPARAM_READY_FOR_UPDATE(dparam) && 
-                             (GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam) <= timestamp))){
-                               
-                   // this will make dpwrap->value contain the latest value.
-                   // now we just need to get it to the element
-                       GST_DPARAM_DO_UPDATE(dparam, timestamp);
-                       
-                       switch (dpwrap->update_method) {
-                               
-                               // direct method - set the value directly in the struct of the element
-                               case GST_DPMAN_DIRECT:
-                                       GST_DEBUG(GST_CAT_PARAMS, "doing direct update\n");
-                                       switch (G_VALUE_TYPE(dpwrap->value)){
-                                               case G_TYPE_CHAR:
-                                                       *(gchar*)dpwrap->update_data = g_value_get_char(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_UCHAR:
-                                                       *(guchar*)dpwrap->update_data = g_value_get_uchar(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_BOOLEAN:
-                                                       *(gboolean*)dpwrap->update_data = g_value_get_boolean(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_INT:
-                                                       *(gint*)dpwrap->update_data = g_value_get_int(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_UINT:
-                                                       *(guint*)dpwrap->update_data = g_value_get_uint(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_LONG:
-                                                       *(glong*)dpwrap->update_data = g_value_get_long(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_ULONG:
-                                                       *(gulong*)dpwrap->update_data = g_value_get_ulong(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_FLOAT:
-                                                       *(gfloat*)dpwrap->update_data = g_value_get_float(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_DOUBLE:
-                                                       *(gdouble*)dpwrap->update_data = g_value_get_double(dpwrap->value);
-                                                       break;
-                                               case G_TYPE_POINTER:
-                                                       *(gpointer*)dpwrap->update_data = g_value_get_pointer(dpwrap->value);
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       break;
-
-                               // callback method - call the element's callback so it can do what it likes
-                               case GST_DPMAN_CALLBACK:
-                                       GST_DEBUG(GST_CAT_PARAMS, "doing callback update\n");
-                                       GST_DPMAN_DO_UPDATE(dpwrap);
-                                       break;
-                                       
-                               // array method - generate an array of the right size 
-                               // with each value being the same (in synchronous update mode)
-                               case GST_DPMAN_ARRAY:
-                                       GST_DEBUG(GST_CAT_PARAMS, "doing array update\n");
-                                       switch (G_VALUE_TYPE(dpwrap->value)){
-                                               case G_TYPE_CHAR:
-                                                       (gchar*)dpwrap->update_data = g_new(gchar, frames);
-                                                       *(gchar*)dpwrap->update_data = g_value_get_char(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gchar*)dpwrap->update_data)[x] = *(gchar*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_UCHAR:
-                                                       (guchar*)dpwrap->update_data = g_new(guchar, frames);
-                                                       *(guchar*)dpwrap->update_data = g_value_get_uchar(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((guchar*)dpwrap->update_data)[x] = *(guchar*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_BOOLEAN:
-                                                       (gboolean*)dpwrap->update_data = g_new(gboolean, frames);
-                                                       *(gboolean*)dpwrap->update_data = g_value_get_boolean(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gboolean*)dpwrap->update_data)[x] = *(gboolean*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_INT:
-                                                       (gint*)dpwrap->update_data = g_new(gint, frames);
-                                                       *(gint*)dpwrap->update_data = g_value_get_int(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gint*)dpwrap->update_data)[x] = *(gint*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_UINT:
-                                                       (guint*)dpwrap->update_data = g_new(guint, frames);
-                                                       *(guint*)dpwrap->update_data = g_value_get_uint(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((guint*)dpwrap->update_data)[x] = *(guint*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_LONG:
-                                                       (glong*)dpwrap->update_data = g_new(glong, frames);
-                                                       *(glong*)dpwrap->update_data = g_value_get_long(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((glong*)dpwrap->update_data)[x] = *(glong*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_ULONG:
-                                                       (gulong*)dpwrap->update_data = g_new(gulong, frames);
-                                                       *(gulong*)dpwrap->update_data = g_value_get_ulong(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gulong*)dpwrap->update_data)[x] = *(gulong*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_FLOAT:
-                                                       (gfloat*)dpwrap->update_data = g_new(gfloat, frames);
-                                                       *(gfloat*)dpwrap->update_data = g_value_get_float(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gfloat*)dpwrap->update_data)[x] = *(gfloat*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_DOUBLE:
-                                                       (gdouble*)dpwrap->update_data = g_new(gdouble, frames);
-                                                       *(gdouble*)dpwrap->update_data = g_value_get_double(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gdouble*)dpwrap->update_data)[x] = *(gdouble*)dpwrap->update_data;
-                                                       break;
-                                               case G_TYPE_POINTER:
-                                                       (gpointer*)dpwrap->update_data = g_new(gpointer, frames);
-                                                       *(gpointer*)dpwrap->update_data = g_value_get_pointer(dpwrap->value);
-                                                       for (x = 1 ; x < frames ; x++)
-                                                               ((gpointer*)dpwrap->update_data)[x] = *(gpointer*)dpwrap->update_data;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       break;
-                               default:
-                                       break;
-                       }
-               }
-               dwraps = g_slist_next(dwraps);
-       }
-       return frames;
-}
-
-static guint 
-gst_dpman_preprocess_noop(GstDParamManager *dpman, guint frames, gint64 timestamp)
-{
-       return frames;
-}
-
-static guint 
-gst_dpman_process_noop(GstDParamManager *dpman, guint frame_count)
-{
-       return 0;
-}
-
diff --git a/libs/control/gstdparammanager.h b/libs/control/gstdparammanager.h
deleted file mode 100644 (file)
index 59171ac..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdparammanager.h: Dynamic Parameter group functionality
- *
- * 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.
- */
-
-#ifndef __GST_DPMAN_H__
-#define __GST_DPMAN_H__
-
-#include <gst/gstobject.h>
-#include <gst/gstprops.h>
-#include <libs/control/gstdparamcommon.h>
-#include <libs/control/gstdparam.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GST_TYPE_DPMAN                 (gst_dpman_get_type ())
-#define GST_DPMAN(obj)                 (G_TYPE_CHECK_INSTANCE_CAST     ((obj), GST_TYPE_DPMAN,GstDParamManager))
-#define GST_DPMAN_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST        ((klass), GST_TYPE_DPMAN,GstDParamManager))
-#define GST_IS_DPMAN(obj)                      (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DPMAN))
-#define GST_IS_DPMAN_CLASS(obj)                (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DPMAN))
-
-#define GST_DPMAN_NAME(dpman)                  (GST_OBJECT_NAME(dpman))
-#define GST_DPMAN_PARENT(dpman)                (GST_OBJECT_PARENT(dpman))
-#define GST_DPMAN_DPARAMS(dpman)               ((dpman)->dparams)
-#define GST_DPMAN_DPARAMS_LIST(dpman)          ((dpman)->dparams_list)
-
-#define GST_DPMAN_MODE_NAME(dpman)                              ((dpman)->mode_name)
-#define GST_DPMAN_MODE(dpman)                           ((dpman)->mode)
-#define GST_DPMAN_MODE_DATA(dpman)                              ((dpman)->mode_data)
-#define GST_DPMAN_RATE(dpman)                           ((dpman)->rate)
-
-typedef enum {
-  GST_DPMAN_CALLBACK,
-  GST_DPMAN_DIRECT,
-  GST_DPMAN_ARRAY,
-} GstDPMUpdateMethod;
-
-typedef struct _GstDParamManagerClass GstDParamManagerClass;
-typedef struct _GstDPMMode GstDPMMode;
-typedef struct _GstDParamWrapper GstDParamWrapper;
-
-typedef guint (*GstDPMModePreProcessFunction) (GstDParamManager *dpman, guint frames, gint64 timestamp);
-typedef guint (*GstDPMModeProcessFunction) (GstDParamManager *dpman, guint frame_count);
-typedef void (*GstDPMModeSetupFunction) (GstDParamManager *dpman);
-typedef void (*GstDPMModeTeardownFunction) (GstDParamManager *dpman);
-
-typedef void (*GstDPMUpdateFunction) (GValue *value, gpointer data);
-
-struct _GstDParamManager {
-       GstObject               object;
-
-       GHashTable *dparams;
-       GSList *dparams_list;
-       
-       gchar *mode_name;
-       GstDPMMode* mode;
-       gpointer mode_data;
-       
-       gint64 timestamp;
-       guint rate;
-};
-
-struct _GstDParamManagerClass {
-       GstObjectClass parent_class;
-       
-       GHashTable *modes;
-       /* signal callbacks */
-};
-
-struct _GstDPMMode {
-       GstDPMModePreProcessFunction preprocessfunc;
-       GstDPMModeProcessFunction processfunc;
-       GstDPMModeSetupFunction setupfunc;
-       GstDPMModeTeardownFunction teardownfunc;
-};
-
-struct _GstDParamWrapper {
-       GstDParamSpec* spec;
-       GValue *value;
-       GstDParam *dparam;
-       GstDPMUpdateMethod update_method;
-       gpointer update_data;
-       GstDPMUpdateFunction update_func;
-};
-
-#define GST_DPMAN_PREPROCESSFUNC(dpman)                (((dpman)->mode)->preprocessfunc)
-#define GST_DPMAN_PROCESSFUNC(dpman)           (((dpman)->mode)->processfunc)
-#define GST_DPMAN_SETUPFUNC(dpman)             (((dpman)->mode)->setupfunc)
-#define GST_DPMAN_TEARDOWNFUNC(dpman)          (((dpman)->mode)->teardownfunc)
-
-#define GST_DPMAN_PREPROCESS(dpman, buffer_size, timestamp) \
-                               (GST_DPMAN_PREPROCESSFUNC(dpman)(dpman, buffer_size, timestamp))
-
-#define GST_DPMAN_PROCESS(dpman, frame_count) \
-                               (GST_DPMAN_PROCESSFUNC(dpman)(dpman, frame_count))
-
-#define GST_DPMAN_PROCESS_COUNTDOWN(dpman, frame_countdown, frame_count) \
-                               (frame_countdown-- || \
-                               (frame_countdown = GST_DPMAN_PROCESS(dpman, frame_count)))
-                               
-#define GST_DPMAN_DO_UPDATE(dpwrap) ((dpwrap->update_func)(dpwrap->value, dpwrap->update_data))
-
-void _gst_dpman_initialize();
-GType gst_dpman_get_type (void);
-GstDParamManager* gst_dpman_new (gchar *name, GstElement *parent);
-void gst_dpman_set_parent (GstDParamManager *dpman, GstElement *parent);
-GstDParamManager* gst_dpman_get_manager (GstElement *parent);
-
-gboolean gst_dpman_add_required_dparam_callback (GstDParamManager *dpman, 
-                                                gchar *dparam_name, 
-                                                GType type, 
-                                                GstDPMUpdateFunction update_func, 
-                                                gpointer update_data);
-gboolean gst_dpman_add_required_dparam_direct (GstDParamManager *dpman, 
-                                               gchar *dparam_name, 
-                                               GType type, 
-                                               gpointer update_data);
-gboolean gst_dpman_add_required_dparam_array (GstDParamManager *dpman, 
-                                              gchar *dparam_name, 
-                                              GType type, 
-                                              gpointer update_data);
-void gst_dpman_remove_required_dparam (GstDParamManager *dpman, gchar *dparam_name);
-gboolean gst_dpman_attach_dparam (GstDParamManager *dpman, gchar *dparam_name, GstDParam *dparam);
-void gst_dpman_detach_dparam (GstDParamManager *dpman, gchar *dparam_name);                         
-GstDParam* gst_dpman_get_dparam(GstDParamManager *dpman, gchar *name);
-GType gst_dpman_get_dparam_type (GstDParamManager *dpman, gchar *name);
-
-GstDParamSpec** gst_dpman_list_dparam_specs(GstDParamManager *dpman);
-GstDParamSpec* gst_dpman_get_dparam_spec (GstDParamManager *dpman, gchar *dparam_name);
-void gst_dpman_dparam_spec_has_changed (GstDParamManager *dpman, gchar *dparam_name);
-
-void gst_dpman_set_rate_change_pad(GstDParamManager *dpman, GstPad *pad);
-
-gboolean gst_dpman_set_mode(GstDParamManager *dpman, gchar *modename);
-void gst_dpman_register_mode (GstDParamManagerClass *klass,
-                           gchar *modename, 
-                           GstDPMModePreProcessFunction preprocessfunc,
-                           GstDPMModeProcessFunction processfunc,
-                           GstDPMModeSetupFunction setupfunc,
-                           GstDPMModeTeardownFunction teardownfunc);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __GST_DPMAN_H__ */
diff --git a/libs/control/gstdplinearinterp.c b/libs/control/gstdplinearinterp.c
deleted file mode 100644 (file)
index 2444165..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdplinearinterp.c: linear interpolation dynamic parameter
- *
- * 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.
- */
-
-#include "gstdplinearinterp.h"
-
-static void gst_dp_linint_class_init (GstDParamClass *klass);
-static void gst_dp_linint_base_class_init (GstDParamClass *klass);
-static void gst_dp_linint_init (GstDParam *dp_linint);
-
-GType 
-gst_dp_linint_get_type(void) {
-       static GType dp_linint_type = 0;
-
-       if (!dp_linint_type) {
-               static const GTypeInfo dp_linint_info = {
-                       sizeof(GstDParamClass),
-                       (GBaseInitFunc)gst_dp_linint_base_class_init,
-                       NULL,
-                       (GClassInitFunc)gst_dp_linint_class_init,
-                       NULL,
-                       NULL,
-                       sizeof(GstDParam),
-                       0,
-                       (GInstanceInitFunc)gst_dp_linint_init,
-               };
-               dp_linint_type = g_type_register_static(GST_TYPE_DPARAM, "GstDParamLinInterp", &dp_linint_info, 0);
-       }
-       return dp_linint_type;
-}
-
-static void
-gst_dp_linint_base_class_init (GstDParamClass *klass)
-{
-
-}
-
-static void
-gst_dp_linint_class_init (GstDParamClass *klass)
-{
-
-}
-
-static void
-gst_dp_linint_init (GstDParam *dp_linint)
-{
-       g_return_if_fail (dp_linint != NULL);
-}
-
-/**
- * gst_dp_linint_new:
- * @type: the type that this dp_linint will store
- *
- * Returns: a new instance of GstDParam
- */
-GstDParam* 
-gst_dp_linint_new (GType type)
-{
-       GstDParam *dparam;
-       GstDParamLinInterp *dp_linint;
-
-       dp_linint = g_object_new (gst_dp_linint_get_type (), NULL);
-       dparam = GST_DPARAM(dp_linint);
-       
-       return dparam;
-}
diff --git a/libs/control/gstdplinearinterp.h b/libs/control/gstdplinearinterp.h
deleted file mode 100644 (file)
index fa1a7dc..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* GStreamer
- * Copyright (C) 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
- *
- * gstdplinearinterp.h: linear interpolation dynamic parameter
- *
- * 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.
- */
-
-
-#ifndef __GST_DP_LININT_H__
-#define __GST_DP_LININT_H__
-
-#include <gst/gstobject.h>
-#include "gstdparam.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define GST_TYPE_DP_LININT                     (gst_dp_linint_get_type ())
-#define GST_DP_LININT(obj)                     (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DP_LININT,GstDParamLinInterp))
-#define GST_DP_LININT_CLASS(klass)             (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DP_LININT,GstDParamLinInterp))
-#define GST_IS_DP_LININT(obj)                  (G_TYPE_CHECK_INSTANCE_TYPE     ((obj), GST_TYPE_DP_LININT))
-#define GST_IS_DP_LININT_CLASS(obj)            (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DP_LININT))
-
-typedef struct _GstDParamLinInterp GstDParamLinInterp;
-typedef struct _GstDParamLinInterpClass GstDParamLinInterpClass;
-
-struct _GstDParamLinInterp {
-       GstDParam               dparam;
-
-};
-
-struct _GstDParamLinInterpClass {
-       GstDParamClass parent_class;
-
-       /* signal callbacks */
-};
-
-GType gst_dp_linint_get_type (void);
-GstDParam* gst_dp_linint_new (GType type);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __GST_DP_LININT_H__ */
diff --git a/libs/getbits/.gitignore b/libs/getbits/.gitignore
deleted file mode 100644 (file)
index 64cdc3b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-*.o
-*.lo
-*.la
-.deps
-.libs
-gbtest
diff --git a/libs/getbits/Makefile.am b/libs/getbits/Makefile.am
deleted file mode 100644 (file)
index 26ece2f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libgstgetbits.la
-
-if HAVE_CPU_I386
-GSTARCH_SRCS = gstgetbits_i386.s
-else
-GSTARCH_SRCS = 
-endif
-
-libgstgetbits_la_SOURCES = gstgetbits.c gstgetbits_inl.h gstgetbits_generic.c $(GSTARCH_SRCS)
-libgstgetbits_la_LIBADD = $(GST_LIBS)
-libgstgetbits_la_CFLAGS = $(GST_CFLAGS) -funroll-all-loops -finline-functions -ffast-math
-EXTRA_libgstgetbits_la_SOURCES = gstgetbits_i386.s
-
-libgstgetbitsincludedir = $(includedir)/gst/libs/gstgetbits
-libgstgetbitsinclude_HEADERS = gstgetbits.h
-
-noinst_HEADERS = gstgetbits.h gstgetbits_inl.h
-
-# check_PROGRAMS = gbtest
-
diff --git a/libs/getbits/gbtest.c b/libs/getbits/gbtest.c
deleted file mode 100644 (file)
index 0d1f629..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#include <stdlib.h>
-#include "gstgetbits.h"
-
-char *print_bits(unsigned long bits,int size) {
-  char *ret = (char *)malloc(size+1);
-  int i;
-  ret[size] = 0;
-  for (i=0;i<size;i++) {
-    if (bits & (1<<i))
-      ret[(size-1)-i] = '1';
-    else
-      ret[(size-1)-i] = '0';
-  }
-  return ret;
-}
-
-static unsigned char testbuffer[] = 
-{
-  0x11, 0x22, 0x44, 0x88, 0xCC, 0xEE,0xFF,0x11
-};
-
-void empty(gst_getbits_t *gb, void *data) {
-  printf("buffer empty\n");
-
-  gst_getbits_newbuf(gb,(unsigned char *)testbuffer, 7);
-}
-
-int main(int argc,char *argv[]) {
-  gst_getbits_t gb;
-  int i, j;
-  int bits;
-
-  gst_getbits_init(&gb, NULL, NULL);
-  gst_getbits_newbuf(&gb,(unsigned char *)testbuffer, 7);
-
-  for (i=0;i<7;i++) {
-    for (j=0;j<8;j++) {
-      printf("%lu",gst_getbits2(&gb));
-      gst_backbitsn(&gb, 1);
-    }
-    printf(" = %01x\n", testbuffer[i]);
-  }
-
-  gst_getbits_newbuf(&gb,(unsigned char *)testbuffer, 7);
-
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000011 %lu\n",bits, gb.bits);
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000022 %lu\n",bits, gb.bits);
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000044 %lu\n",bits, gb.bits);
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000088 %lu\n",bits, gb.bits);
-  bits = gst_getbits6(&gb);
-  printf("%08x <-> 00000033 %lu\n",bits, gb.bits);
-
-  gst_backbitsn(&gb, 16);
-
-  bits = gst_getbits10(&gb);
-  printf("%08x <-> 00000088 \n",bits);
-
-  gst_getbits_newbuf(&gb,(unsigned char *)testbuffer, 7);
-
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000011 \n",bits);
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000022 \n",bits);
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000044 \n",bits);
-
-  bits = gst_getbits6(&gb);
-  printf("%08x <-> 00000022 \n",bits);
-
-  gst_backbitsn(&gb, 19);
-
-  bits = gst_getbits19(&gb);
-  printf("%08x <-> 00009122 \n",bits);
-
-  bits = gst_getbits10(&gb);
-  printf("%08x <-> 000000cc \n",bits);
-
-  gst_backbitsn(&gb, 8);
-
-  gst_backbitsn(&gb, 19);
-
-  gst_backbitsn(&gb, 8);
-
-  bits = gst_getbits19(&gb);
-  printf("%08x <-> 00012244 \n",bits);
-  bits = gst_getbits8(&gb);
-  printf("%08x <-> 00000088 \n",bits);
-
-  return 0;
-}
diff --git a/libs/getbits/gstgetbits.c b/libs/getbits/gstgetbits.c
deleted file mode 100644 (file)
index 1a04acb..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-
-#include "config.h"
-
-#include "gstgetbits.h"
-
-/* Defined in gstgetbits_i386.s */
-extern unsigned long _gst_get1bit_i386(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_getbits_i386(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_getbits_fast_i386(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_showbits_i386(gst_getbits_t *gb, unsigned long bits);
-extern void _gst_flushbits_i386(gst_getbits_t *gb, unsigned long bits);
-extern void _gst_getbits_back_i386(gst_getbits_t *gb, unsigned long bits);
-
-/* Defined in gstgetbits_generic.c */
-extern unsigned long _gst_getbits_int_cb(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_get1bit_int(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_getbits_int(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_getbits_fast_int(gst_getbits_t *gb, unsigned long bits);
-extern unsigned long _gst_showbits_int(gst_getbits_t *gb, unsigned long bits);
-extern void _gst_flushbits_int(gst_getbits_t *gb, unsigned long bits);
-extern void _gst_getbits_back_int(gst_getbits_t *gb, unsigned long bits);
-
-
-unsigned long gst_getbits_nBitMask[] = { 
-  0x00000000, 0x80000000, 0xc0000000, 0xe0000000,
-  0xf0000000, 0xf8000000, 0xfc000000, 0xfe000000,
-  0xff000000, 0xff800000, 0xffc00000, 0xffe00000,
-  0xfff00000, 0xfff80000, 0xfffc0000, 0xfffe0000,
-  0xffff0000, 0xffff8000, 0xffffc000, 0xffffe000,
-  0xfffff000, 0xfffff800, 0xfffffc00, 0xfffffe00,
-  0xffffff00, 0xffffff80, 0xffffffc0, 0xffffffe0,
-  0xfffffff0, 0xfffffff8, 0xfffffffc, 0xfffffffe};
-
-unsigned long _getbits_masks[] = {
-  0x00000000,
-  0x00000001, 0x00000003, 0x00000007, 0x0000000f,
-  0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff,
-  0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff,
-  0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff,
-  0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff,
-  0x001fffff, 0x003fffff, 0x007fffff, 0x00ffffff,
-  0x01ffffff, 0x03ffffff, 0x07ffffff, 0x0fffffff,
-  0x1fffffff, 0x3fffffff, 0x7fffffff, 0xffffffff,
-};
-
-#ifdef HAVE_LIBMMX
-unsigned long _getbits_64_minus_index[] = {
-  64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,
-  40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,
-  16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 };
-
-/* this routine taken from Intel AppNote AP-527:
-   "Using MMX[tm] Instructions to Get Bits From a Data Stream"
-   written in C with libmmx to *closely* mimic Intel's ASM implementation
-
-   this isn't as cycle-efficient, due to the simple fact that I must call
-   emms() at the end.  all state must be kept in *gb, not in registers */
-unsigned long _gst_getbits_mmx(gst_getbits_t *gb,unsigned long bits) {
-  signed long remaining;
-  unsigned long result;
-
-  /* NOTE: this is a code-size optimization Intel seems to have missed!
-     according to the MMX Programmer's Reference Manual, Chapter 5,
-     neither movd nor movq have any effect on the flags.  that means you
-     can put them before the sub and jl in their code, which I've done
-     symbolically in this C code.  gcc is probably going to lose horribly,
-     I'll do an inline asm version later.  I've a point to prove ;-) */
-  /* find the right shift value, put it in mm3 */
-  movd_m2r(_getbits_64_minus_index[bits],mm3);
-  /* load the current quadword into mm0 */
-  movq_m2r(gb->qword,mm0);
-  /* copy it to mm2 */
-  movq_r2r(mm0,mm2);
-
-  remaining = gb->bits - bits;
-
-  if (remaining <= 0) {
-    unsigned long dword1,dword2;
-
-    /* shift the pointer by 64 bits (8 bytes) */
-    gb->ptr += 8;
-    /* add 64 to bits remaining, to bring it positive */
-    remaining += 64;
-
-    /* grab the first 32 bits from the buffer and swap them around */
-    dword1 = swab32(*(gb->ptr-8));
-    /* grab the second 32 bits, swap */
-    dword2 = swab32(*(gb->ptr-4));
-
-    /* put second dword in mm4 */
-    movd_m2r(dword2,mm4);
-    /* shift mm2 over to make room for new bits */
-    psrlq_r2r(mm3,mm2);
-
-    /* put first dword in mm1 */
-    movd_m2r(dword1,mm1);
-    /* shift second dword up 32 bits */
-    psrlq_i2r(32,mm4);
-
-    /* put the shift counter in mm3 */
-    movd_m2r(remaining,mm3);
-    /* combine the swapped data in mm4 */
-    por_r2r(mm1,mm4);
-
-    /* save off the bits in mm4 to mm0 */
-    movq_r2r(mm4,mm0);
-    /* get the new low-order bits in mm4, shifted by 'mm3' */
-    psrlq_r2r(mm3,mm4);
-
-    /* save off new remaining bits */
-    gb->bits = remaining;
-    /* combine bits into mm2 */
-    por_r2r(mm2,mm4);
-
-    /* save off the result */
-    movd_r2m(mm2,result);
-    /* get rid of the bits we just read */
-    psllq_r2r(mm1,mm0);
-
-    /* save off mm0 */
-    movq_r2m(mm0,gb->qword);
-
-    /* finished with MMX */
-    emms();
-
-    /* we have what we came for */
-    return(result);
-  } else {
-    /* load the number of bits requested into mm1 */
-    movd_m2r(bits,mm1);
-    /* shift the quadword in mm2 by 'mm3' bits */
-    psrlq_r2r(mm3,mm2);
-
-    /* update the number of valid bits */
-    gb->bits = remaining;
-
-    /* save off the remaining bits */
-    movd_r2m(mm2,result);
-    /* discard those bits in mm0 */
-    psllq_r2r(mm1,mm0);
-
-    /* save off mm0 */
-    movq_r2m(mm0,gb->qword);
-    /* finished with MMX */
-    emms();
-
-    /* we have what we came for */
-    return(result);
-  }
-}
-#endif /* HAVE_LIBMMX */
-
-unsigned long _gst_getbyte(gst_getbits_t *gb, unsigned long bits) {
-  return *gb->ptr++;
-}
-
-/* initialize the getbits structure with the proper getbits func */
-void gst_getbits_init(gst_getbits_t *gb, GstGetbitsCallback callback, void *data) {
-  gb->ptr = NULL;
-  gb->bits = 0;
-  gb->callback = callback;
-  gb->data = data;
-
-#ifdef HAVE_LIBMMX
-  if (1) {
-    gb->getbits = _gst_getbits_mmx;
-//    gb->backbits = _gst_getbits_back_mmx;
-//    gb->backbytes = _gst_getbits_byteback_mmx;
-//    printf("gstgetbits: using MMX optimized versions\n");
-  } else
-#endif /* HAVE_LIBMMX */
-  {
-    if (gb->callback) {
-      gb->getbits = _gst_getbits_int_cb;
-      gb->showbits = _gst_showbits_int;
-      gb->flushbits = _gst_flushbits_int;
-      gb->backbits = _gst_getbits_back_int;
-//      printf("gstgetbits: using callback versions\n");
-    }
-    else {
-#ifdef HAVE_CPU_I386
-      gb->get1bit = _gst_get1bit_i386;
-      gb->getbits = _gst_getbits_i386;
-      gb->getbits_fast = _gst_getbits_fast_i386;
-      gb->getbyte = _gst_getbyte;
-      gb->show1bit = _gst_showbits_i386;
-      gb->showbits = _gst_showbits_i386;
-      gb->flushbits = _gst_flushbits_i386;
-      gb->backbits = _gst_getbits_back_i386;
-//      printf("gstgetbits: using i386 optimized versions\n");
-#else
-      gb->get1bit = _gst_get1bit_int;
-      gb->getbits = _gst_getbits_int;
-      gb->getbits_fast = _gst_getbits_fast_int;
-      gb->getbyte = _gst_getbyte;
-      gb->show1bit = _gst_showbits_int;
-      gb->showbits = _gst_showbits_int;
-      gb->flushbits = _gst_flushbits_int;
-      gb->backbits = _gst_getbits_back_int;
-//      printf("gstgetbits: using normal versions\n");
-#endif
-    }
-  }
-}
-
-/* set up the getbits structure with a new buffer */
-void gst_getbits_newbuf(gst_getbits_t *gb,unsigned char *buffer, unsigned long len) {
-  gb->ptr = buffer;
-  gb->endptr = buffer+len;
-  gb->bits = 0;
-#ifdef HAVE_LIBMMX
-//  gb->qword = 0;
-#endif /* HAVE_LIBMMX */
-}
diff --git a/libs/getbits/gstgetbits.h b/libs/getbits/gstgetbits.h
deleted file mode 100644 (file)
index 79b29f3..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-#ifndef __GST_GETBITS_H__
-#define __GST_GETBITS_H__
-
-#include <stdio.h>
-
-// getbits is critical, we need to forcibly disable DEBUG   
-#define GST_DEBUG_FORCE_DISABLE
-#include <gst/gst.h>
-
-/* disabled for now */
-#undef HAVE_LIBMMX
-
-#ifdef HAVE_LIBMMX
-#include <mmx.h>
-#endif /* HAVE_LIBMMX */
-#ifdef HAVE_LIBSSE
-#include <sse.h>
-#endif /* HAVE_LIBSSE */
-
-#define swab32(x) GUINT32_FROM_BE(x)
-
-typedef struct _gst_getbits_t gst_getbits_t;
-typedef void (*GstGetbitsCallback) (gst_getbits_t *gb, void *data);
-
-/* breaks in structure show alignment on quadword boundaries */
-/* FIXME: need to find out how to force GCC to align this to octwords */
-struct _gst_getbits_t {
-  unsigned char *ptr;          
-  unsigned long *longptr;
-  unsigned char *endptr;
-  unsigned long length;
-  long bits;   
-  unsigned long dword;
-  unsigned long temp;
-
-  GstGetbitsCallback callback;
-  void *data;
-
-  unsigned long (*get1bit)(gst_getbits_t *gb, unsigned long bits);
-  unsigned long (*getbits)(gst_getbits_t *gb, unsigned long bits);
-  unsigned long (*getbits_fast)(gst_getbits_t *gb, unsigned long bits);
-  unsigned long (*getbyte)(gst_getbits_t *gb, unsigned long bits);
-  unsigned long (*show1bit)(gst_getbits_t *gb, unsigned long bits);
-  unsigned long (*showbits)(gst_getbits_t *gb, unsigned long bits);
-  void (*flushbits)(gst_getbits_t *gb, unsigned long bits);    
-  void (*backbits)(gst_getbits_t *gb, unsigned long bits);
-
-#ifdef HAVE_LIBMMX
-  mmx_t qword;                 /* qword */
-#endif /* HAVE_LIBMMX */
-
-#ifdef HAVE_LIBSSE
-  sse_t oword;                 /* oword */
-#endif /* HAVE_LIBSSE */
-};
-
-
-#ifdef GST_GETBITS_INLINE
-#include "gstgetbits_inl.h"
-#else
-
-void gst_getbits_init(gst_getbits_t *gb, GstGetbitsCallback callback, void *data);
-void gst_getbits_newbuf(gst_getbits_t *gb, unsigned char *buffer, unsigned long len);
-
-#define gst_getbits_bitoffset(gb)                                       \
-(                                                                       \
-  (-(gb)->bits)&0x7                                                     \
-)
-
-#define gst_getbits_align_byte(gb)                                 
-
-#define gst_getbits_bufferpos(gb)  ((gb)->ptr)
-
-#define gst_getbits_bytesleft(gb) ((gb)->endptr - (gb)->ptr)        
-
-#define gst_getbits_bitsleft(gb) (((gb)->endptr - (gb)->ptr)*8  - ((-(gb)->bits)&0x7))
-
-#define gst_get1bit(gb) (((gb)->get1bit)(gb, 1))
-#define gst_getbitsX(gb,bits) (((gb)->getbits)(gb,bits))
-#define gst_getbits_fastX(gb,bits) (((gb)->getbits_fast)(gb,bits))
-#define gst_show1bit(gb,bits) (((gb)->show1bit)(gb,bits))
-#define gst_showbitsX(gb,bits) (((gb)->showbits)(gb,bits))
-#define gst_flushbitsX(gb,bits) (((gb)->flushbits)(gb,bits))
-#define gst_backbitsX(gb,bits) (((gb)->backbits)(gb,bits))
-
-#define gst_getbyte(gb) (((gb)->getbyte)(gb,8))
-
-#define gst_getbits_fastn(gb,n) gst_getbits_fastX(gb, n)
-
-#define gst_getbitsn(gb,n) gst_getbitsX(gb, n)
-#define gst_getbits1(gb) gst_get1bit(gb)
-#define gst_getbits2(gb) gst_getbits_fastX(gb, 2)
-#define gst_getbits3(gb) gst_getbits_fastX(gb, 3)
-#define gst_getbits4(gb) gst_getbits_fastX(gb, 4)
-#define gst_getbits5(gb) gst_getbits_fastX(gb, 5)
-#define gst_getbits6(gb) gst_getbits_fastX(gb, 6)
-#define gst_getbits7(gb) gst_getbits_fastX(gb, 7)
-#define gst_getbits8(gb) gst_getbits_fastX(gb, 8)
-#define gst_getbits9(gb) gst_getbits_fastX(gb, 9)
-#define gst_getbits10(gb) gst_getbitsX(gb, 10)
-#define gst_getbits11(gb) gst_getbitsX(gb, 11)
-#define gst_getbits12(gb) gst_getbitsX(gb, 12)
-#define gst_getbits13(gb) gst_getbitsX(gb, 13)
-#define gst_getbits14(gb) gst_getbitsX(gb, 14)
-#define gst_getbits15(gb) gst_getbitsX(gb, 15)
-#define gst_getbits16(gb) gst_getbitsX(gb, 16)
-#define gst_getbits17(gb) gst_getbitsX(gb, 17)
-#define gst_getbits18(gb) gst_getbitsX(gb, 18)
-#define gst_getbits19(gb) gst_getbitsX(gb, 19)
-#define gst_getbits20(gb) gst_getbitsX(gb, 20)
-#define gst_getbits21(gb) gst_getbitsX(gb, 21)
-#define gst_getbits22(gb) gst_getbitsX(gb, 22)
-#define gst_getbits23(gb) gst_getbitsX(gb, 23)
-
-#define gst_showbitsn(gb,n) gst_showbitsX(gb, n)
-#define gst_showbits1(gb) gst_show1bit(gb, 1)
-#define gst_showbits2(gb) gst_showbitsX(gb, 2)
-#define gst_showbits3(gb) gst_showbitsX(gb, 3)
-#define gst_showbits4(gb) gst_showbitsX(gb, 4)
-#define gst_showbits5(gb) gst_showbitsX(gb, 5)
-#define gst_showbits6(gb) gst_showbitsX(gb, 6)
-#define gst_showbits7(gb) gst_showbitsX(gb, 7)
-#define gst_showbits8(gb) gst_showbitsX(gb, 8)
-#define gst_showbits9(gb) gst_showbitsX(gb, 9)
-#define gst_showbits10(gb) gst_showbitsX(gb, 10)
-#define gst_showbits11(gb) gst_showbitsX(gb, 11)
-#define gst_showbits12(gb) gst_showbitsX(gb, 12)
-#define gst_showbits13(gb) gst_showbitsX(gb, 13)
-#define gst_showbits14(gb) gst_showbitsX(gb, 14)
-#define gst_showbits15(gb) gst_showbitsX(gb, 15)
-#define gst_showbits16(gb) gst_showbitsX(gb, 16)
-#define gst_showbits17(gb) gst_showbitsX(gb, 17)
-#define gst_showbits18(gb) gst_showbitsX(gb, 18)
-#define gst_showbits19(gb) gst_showbitsX(gb, 19)
-#define gst_showbits20(gb) gst_showbitsX(gb, 20)
-#define gst_showbits21(gb) gst_showbitsX(gb, 21)
-#define gst_showbits22(gb) gst_showbitsX(gb, 22)
-#define gst_showbits23(gb) gst_showbitsX(gb, 23)
-#define gst_showbits24(gb) gst_showbitsX(gb, 24)
-#define gst_showbits32(gb) gst_showbitsX(gb, 32)
-
-#define gst_flushbitsn(gb,n) gst_flushbitsX(gb, n)
-#define gst_flushbits32(gb) gst_flushbitsX(gb, 32)
-
-#define gst_backbitsn(gb,n) gst_backbitsX(gb, n)
-#define gst_backbits24(gb) gst_backbitsX(gb, 24)
-#endif
-
-#endif /* __GST_GETBITS_H__ */
diff --git a/libs/getbits/gstgetbits_generic.c b/libs/getbits/gstgetbits_generic.c
deleted file mode 100644 (file)
index 4e39ad9..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#include "gstgetbits.h"
-
-unsigned long _gst_getbits_int_cb(gst_getbits_t *gb, unsigned long bits);
-unsigned long _gst_get1bit_int(gst_getbits_t *gb, unsigned long bits);
-unsigned long _gst_getbits_int(gst_getbits_t *gb, unsigned long bits);
-unsigned long _gst_getbits_fast_int(gst_getbits_t *gb, unsigned long bits);
-unsigned long _gst_showbits_int(gst_getbits_t *gb, unsigned long bits);
-void _gst_flushbits_int(gst_getbits_t *gb, unsigned long bits);
-void _gst_getbits_back_int(gst_getbits_t *gb, unsigned long bits);
-
-
-unsigned long _gst_getbits_int_cb(gst_getbits_t *gb, unsigned long bits) {
-  int result;
-  int bitsleft;
-
-  //printf("gst_getbits%lu %ld %p %08x\n", bits, gb->bits, gb->ptr, gb->dword);
-
-  if (!bits) return 0;
-
-  gb->bits -= bits;
-  result = gb->dword >> (32-bits);
-
-  if (gb->bits < 0) {
-    
-    gb->ptr += 4;
-
-    bitsleft = (gb->endptr - gb->ptr)*8;
-    bits = -gb->bits;
-    gb->bits += (bitsleft>32? 32 : bitsleft); 
-    
-    if (gb->endptr <= gb->ptr) {
-      (gb->callback)(gb, gb->data);
-      gb->bits -= bits;
-    }
-    gb->dword = swab32(*((unsigned long *)(gb->ptr)));
-
-    result |= (gb->dword >> (32-bits));
-  }
-  gb->dword <<= bits;
-
-  return result;
-}
-
-unsigned long _gst_get1bit_int(gst_getbits_t *gb, unsigned long bits) {
-  unsigned char rval;
-
-  rval = *gb->ptr << gb->bits;
-
-  gb->bits++;
-  gb->ptr += (gb->bits>>3);
-  gb->bits &= 0x7;
-
-  GST_DEBUG (0,"getbits%ld, %08x\n", bits, rval);
-  return rval>>7;
-}
-
-unsigned long _gst_getbits_int(gst_getbits_t *gb, unsigned long bits) {
-  unsigned long rval;
-
-  if (bits == 0) return 0;
-
-  rval = swab32(*((unsigned long *)(gb->ptr)));
-  rval <<= gb->bits;
-
-  gb->bits += bits;
-
-  rval >>= (32-bits);
-  gb->ptr += (gb->bits>>3);
-  gb->bits &= 0x7;
-
-  GST_DEBUG (0,"getbits%ld, %08lx\n", bits, rval);
-  return rval;
-}
-
-unsigned long _gst_getbits_fast_int(gst_getbits_t *gb, unsigned long bits) {
-  unsigned long rval;
-
-  rval = (unsigned char) (gb->ptr[0] << gb->bits);
-  rval |= ((unsigned int) gb->ptr[1] << gb->bits)>>8;
-  rval <<= bits;
-  rval >>= 8;
-
-  gb->bits += bits;
-  gb->ptr += (gb->bits>>3);
-  gb->bits &= 0x7;
-
-  GST_DEBUG (0,"getbits%ld, %08lx\n", bits, rval);
-  return rval;
-}
-
-unsigned long _gst_showbits_int(gst_getbits_t *gb, unsigned long bits) {
-  unsigned long rval;
-
-  if (bits == 0) return 0;
-
-  rval = swab32(*((unsigned long *)(gb->ptr)));
-  rval <<= gb->bits;
-  rval >>= (32-bits);
-
-  GST_DEBUG (0,"showbits%ld, %08lx\n", bits, rval);
-  return rval;
-}
-
-void _gst_flushbits_int(gst_getbits_t *gb, unsigned long bits) {
-  gb->bits += bits;
-  gb->ptr += (gb->bits>>3);
-  gb->bits &= 0x7;
-  GST_DEBUG (0,"flushbits%ld\n", bits);
-}
-
-void _gst_getbits_back_int(gst_getbits_t *gb, unsigned long bits) {
-  gb->bits -= bits;
-  gb->ptr += (gb->bits>>3);
-  gb->bits &= 0x7;
-}
-
diff --git a/libs/getbits/gstgetbits_i386.s b/libs/getbits/gstgetbits_i386.s
deleted file mode 100644 (file)
index 512378e..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-       .p2align 4,,7
-.globl _gst_getbits_i386
-       .type    _gst_getbits_i386,@function
-_gst_getbits_i386:
-       cmpl $0,8(%esp)
-       jne .L39
-       xorl %eax,%eax
-       ret
-.L39:
-       movl 4(%esp),%edx
-       movl (%edx),%ecx
-       movl (%ecx),%eax
-       bswap %eax
-       movl 16(%edx),%ecx
-        shll %cl, %eax
-       movl 8(%esp),%ecx
-       addl %ecx, 16(%edx)
-       negl %ecx
-       addl $32,%ecx
-        shrl %cl, %eax
-       movl 16(%edx),%ecx
-       sarl $3,%ecx
-       addl %ecx,(%edx)
-       andl $7,16(%edx)
-       ret
-
-       .p2align 4,,7
-.globl _gst_getbits_fast_i386
-       .type    _gst_getbits_fast_i386,@function
-_gst_getbits_fast_i386:
-       movl 4(%esp),%edx
-       movl (%edx),%ecx
-       movzbl 1(%ecx),%eax
-               movb (%ecx), %ah
-       movl 16(%edx),%ecx
-        shlw %cl, %ax
-       movl 8(%esp),%ecx
-       addl %ecx, 16(%edx)
-       negl %ecx
-       addl $16,%ecx
-        shrl %cl, %eax
-       movl 16(%edx),%ecx
-       sarl $3,%ecx
-       addl %ecx,(%edx)
-       andl $7,16(%edx)
-       ret
-
-       .p2align 4,,7
-.globl _gst_get1bit_i386
-       .type    _gst_get1bit_i386,@function
-_gst_get1bit_i386:
-       movl 4(%esp),%edx
-       movl (%edx),%ecx
-       movzbl (%ecx),%eax
-       movl 16(%edx),%ecx
-       incl %ecx
-        rolb %cl, %al
-       andb $1, %al
-       movl %ecx, 16(%edx)
-       andl $7,16(%edx)
-       sarl $3,%ecx
-       addl %ecx,(%edx)
-       ret
-
-       .p2align 4,,7
-.globl _gst_showbits_i386
-       .type    _gst_showbits_i386,@function
-_gst_showbits_i386:
-       cmpl $0,8(%esp)
-       jne .L40
-       xorl %eax,%eax
-       ret
-.L40:
-       movl 4(%esp),%edx
-       movl (%edx),%ecx
-               movl (%ecx), %eax
-       bswap %eax
-       movl 16(%edx),%ecx
-        shll %cl, %eax
-       movl 8(%esp),%ecx
-       negl %ecx
-       addl $32,%ecx
-        shrl %cl, %eax
-       ret
-
-
-       .p2align 4,,7
-.globl _gst_flushbits_i386
-       .type    _gst_flushbits_i386,@function
-_gst_flushbits_i386:
-       movl 4(%esp),%ecx
-       movl 16(%ecx),%eax
-       addl 8(%esp),%eax
-       movl %eax, %edx
-       sarl $3,%eax
-       addl %eax,(%ecx)
-       andl $7, %edx
-       movl %edx, 16(%ecx)
-       ret
-
-
-       .p2align 4,,7
-.globl _gst_getbits_back_i386
-       .type    _gst_getbits_back_i386,@function
-_gst_getbits_back_i386:
-       movl 4(%esp),%edx
-       movl 16(%edx),%ecx
-       subl 8(%esp),%ecx
-       movl %ecx, %eax
-       sarl $3,%ecx
-       addl %ecx,(%edx)
-       andl $7,%eax
-       movl %eax, 16(%edx)
-       ret
-
diff --git a/libs/getbits/gstgetbits_inl.h b/libs/getbits/gstgetbits_inl.h
deleted file mode 100644 (file)
index 0fcbc3b..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright (c) 1995 The Regents of the University of California.
- * All rights reserved.
- * 
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose, without fee, and without written agreement is
- * hereby granted, provided that the above copyright notice and the following
- * two paragraphs appear in all copies of this software.
- * 
- * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
- * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
- * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-/*
- * Portions of this software Copyright (c) 1995 Brown University.
- * All rights reserved.
- * 
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose, without fee, and without written agreement
- * is hereby granted, provided that the above copyright notice and the
- * following two paragraphs appear in all copies of this software.
- * 
- * IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
- * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF BROWN
- * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * BROWN UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
- * BASIS, AND BROWN UNIVERSITY HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
- * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-/*
-   Changes to make the code reentrant:
-     deglobalized: curBits, curVidStream
-     deglobalized: bitOffset, bitLength, bitBuffer in vid_stream, not used
-       here
-   Additional changes:
-   -lsh@cs.brown.edu (Loring Holden)
- */
-
-#ifndef __GST_GETBITS_INL_H__
-#define __GST_GETBITS_INL_H__
-
-#include <glib.h>
-
-//#define GETBITS_DEBUG_ENABLED
-//#define GETBITS_OVERRUN_ENABLED
-
-#ifdef GETBITS_DEBUG_ENABLED
-#define debug2(format,args...) g_print(format,##args)
-#define debug(format,args...) g_print(format,##args),
-#else
-#define debug(format,args...)
-#define debug2(format,args...)
-#endif
-
-#ifdef GETBITS_OVERRUN_ENABLED
-#define checklength2(src, dst) (((unsigned char*)src)<(dst)?0:printf("overrun !! %p>=%p %ld %s %d\n", (src), (dst), (gb)->bits, __PRETTY_FUNCTION__, __LINE__))
-#define checklength(src, dst) (((unsigned char*)src)<(dst)?0:printf("overrun !! %p>=%p %ld %s %d\n", (src), (dst), (gb)->bits, __PRETTY_FUNCTION__, __LINE__)),
-#else
-#define checklength(src, dst)
-#define checklength2(src, dst)
-#endif
-
-#define swab32(x) GUINT32_FROM_BE(x)
-
-/* External declarations for bitstream i/o operations. */
-extern unsigned long gst_getbits_nBitMask[];
-
-#define gst_getbits_init(gb, callback, data)
-
-#define gst_getbits_newbuf(gb, buffer, len)                            \
-{                                                                      \
-  (gb)->longptr = (unsigned long *)(buffer);                           \
-  (gb)->endptr = (unsigned char *)buffer+len;                          \
-  (gb)->length = len;                                                  \
-  (gb)->bits = 0;                                                      \
-  (gb)->dword = swab32(*(gb)->longptr);                                        \
-}
-
-#define gst_getbits_bitoffset(gb)                                      \
-(                                                                      \
-  debug("bitoffset: %ld %p\n", (gb)->bits, (gb)->longptr)              \
-  (gb)->bits                                                           \
-)
-
-#define gst_getbits_bufferpos(gb)  ((gb)->longptr)
-
-#define gst_getbits_bytesleft(gb) ((gb)->endptr - (unsigned char*)(gb)->longptr)       
-
-#define gst_getbits_bitsleft(gb) (((gb)->endptr - (unsigned char*)(gb)->longptr)*8  - (gb)->bits)
-
-#define gst_getbits1(gb)                                                \
-(                                                                       \
-  ((gb)->temp = (((gb)->dword & 0x80000000) != 0)),                    \
-  (gb)->dword <<= 1,                                                   \
-  (gb)->bits++,                                                        \
-                                                                        \
-  ((gb)->bits & 0x20 ? (                                               \
-    (gb)->bits = 0,                                                    \
-    (gb)->longptr++,                                                   \
-    checklength((gb)->longptr, (gb)->endptr)                           \
-    ((gb)->dword = swab32(*(gb)->longptr))                             \
-  )                                                                    \
-  :0),                                                                  \
-  debug("getbits1 : %04lx %08lx %p\n", (gb)->temp, (gb)->dword, (gb)->longptr) \
-  (gb)->temp                                                           \
-)
-
-#define gst_getbits2(gb)                                                \
-(                                                                       \
-  (gb)->bits += 2,                                                     \
-                                                                        \
-  ((gb)->bits & 0x20 ? (                                               \
-    (gb)->bits -= 32,                                                  \
-    (gb)->longptr++,                                                   \
-    checklength((gb)->longptr, (gb)->endptr)                           \
-    ((gb)->bits ? (                                                    \
-      ((gb)->dword |=                                                  \
-        (swab32(*(gb)->longptr) >> (2 - (gb)->bits)))                          \
-    )                                                                  \
-    : 0                                                                        \
-    ),(                                                                \
-    ((gb)->temp = (((gb)->dword & 0xc0000000) >> 30)),                         \
-    ((gb)->dword = swab32(*(gb)->longptr) << (gb)->bits))              \
-  )                                                                    \
-  : (                                                                   \
-      ((gb)->temp = (((gb)->dword & 0xc0000000) >> 30)),                \
-      ((gb)->dword <<= 2)                                              \
-    )                                                                  \
-  ),                                                                   \
-  debug("getbits2 : %04lx %08lx %p\n", (gb)->temp, (gb)->dword, (gb)->longptr)         \
-  (gb)->temp                                                           \
-)
-
-#define gst_getbitsX(gb, num, mask, shift)                             \
-(                                                                       \
-  (gb)->bits += (num),                                                         \
-                                                                        \
-  ((gb)->bits & 0x20 ? (                                               \
-    (gb)->bits -= 32,                                                  \
-    (gb)->longptr++,                                                   \
-    checklength((gb)->longptr, (gb)->endptr)                           \
-    ((gb)->bits ? (                                                    \
-        ((gb)->dword |= (swab32(*(gb)->longptr) >>                             \
-        ((num) - (gb)->bits)))                                                 \
-      )                                                                        \
-      :0                                                               \
-      ),                                                                \
-      ((gb)->temp = (((gb)->dword & (mask)) >> (shift))),                      \
-      ((gb)->dword = swab32(*(gb)->longptr) << (gb)->bits)             \
-    )                                                                  \
-  : (                                                                   \
-      ((gb)->temp = (((gb)->dword & mask) >> shift)),                   \
-      ((gb)->dword <<= (num))                                                  \
-    )                                                                  \
-  ),                                                                    \
-  debug("getbits%-2d: %04lx %08lx %lu %p\n", num, (gb)->temp, (gb)->dword, mask, (gb)->longptr)        \
-  (gb)->temp                                                           \
-)
-
-#define gst_getbits3(gb) gst_getbitsX(gb, 3,   0xe0000000UL, 29)
-#define gst_getbits4(gb) gst_getbitsX(gb, 4,   0xf0000000UL, 28)
-#define gst_getbits5(gb) gst_getbitsX(gb, 5,   0xf8000000UL, 27)
-#define gst_getbits6(gb) gst_getbitsX(gb, 6,   0xfc000000UL, 26)
-#define gst_getbits7(gb) gst_getbitsX(gb, 7,   0xfe000000UL, 25)
-#define gst_getbits8(gb) gst_getbitsX(gb, 8,   0xff000000UL, 24)
-#define gst_getbits9(gb) gst_getbitsX(gb, 9,   0xff800000UL, 23)
-#define gst_getbits10(gb) gst_getbitsX(gb, 10, 0xffc00000UL, 22)
-#define gst_getbits11(gb) gst_getbitsX(gb, 11, 0xffe00000UL, 21)
-#define gst_getbits12(gb) gst_getbitsX(gb, 12, 0xfff00000UL, 20)
-#define gst_getbits13(gb) gst_getbitsX(gb, 13, 0xfff80000UL, 19)
-#define gst_getbits14(gb) gst_getbitsX(gb, 14, 0xfffc0000UL, 18)
-#define gst_getbits15(gb) gst_getbitsX(gb, 15, 0xfffe0000UL, 17)
-#define gst_getbits16(gb) gst_getbitsX(gb, 16, 0xffff0000UL, 16)
-#define gst_getbits17(gb) gst_getbitsX(gb, 17, 0xffff8000UL, 15)
-#define gst_getbits18(gb) gst_getbitsX(gb, 18, 0xffffc000UL, 14)
-#define gst_getbits19(gb) gst_getbitsX(gb, 19, 0xffffe000UL, 13)
-#define gst_getbits20(gb) gst_getbitsX(gb, 20, 0xfffff000UL, 12)
-#define gst_getbits21(gb) gst_getbitsX(gb, 21, 0xfffff800UL, 11)
-#define gst_getbits22(gb) gst_getbitsX(gb, 22, 0xfffffc00UL, 10)
-#define gst_getbits32(gb) gst_getbitsX(gb, 32, 0xffffffffUL,  0)
-
-#define gst_getbitsn(gb,num) gst_getbitsX(gb, (num), ((num) ? ((0xffffffffUL) << (32-(num))):0), (32-(num)))
-
-#define gst_showbits32(gb)                                             \
-(                                                                       \
-  ((gb)->bits ? (                                                      \
-      (gb)->dword | (swab32(*((gb)->longptr+1)) >>                     \
-        (32 - (gb)->bits))                                             \
-  )                                                                    \
-  : (                                                                   \
-      (gb)->dword                                                      \
-    )                                                                  \
-  )                                                                     \
-)
-
-#define gst_showbitsX(gb, num, mask, shift)                            \
-(                                                                       \
-  ((gb)->temp = (gb)->bits + num),                                             \
-  ((gb)->temp > 32 ? (                                                 \
-      (gb)->temp -= 32,                                                 \
-      (((gb)->dword & mask) >> shift) |                                \
-           (swab32(*((gb)->longptr+1)) >> (shift + (num - (gb)->temp)))        \
-  )                                                                     \
-  : (                                                                  \
-      (((gb)->dword & mask) >> shift)                                  \
-    )                                                                  \
-  )                                                                    \
-)
-
-#define gst_showbits1(gb)  gst_showbitsX(gb, 1,  0x80000000, 31)
-#define gst_showbits2(gb)  gst_showbitsX(gb, 2,  0xc0000000, 30)
-#define gst_showbits3(gb)  gst_showbitsX(gb, 3,  0xe0000000, 29)
-#define gst_showbits4(gb)  gst_showbitsX(gb, 4,  0xf0000000, 28)
-#define gst_showbits5(gb)  gst_showbitsX(gb, 5,  0xf8000000, 27)
-#define gst_showbits6(gb)  gst_showbitsX(gb, 6,  0xfc000000, 26)
-#define gst_showbits7(gb)  gst_showbitsX(gb, 7,  0xfe000000, 25)
-#define gst_showbits8(gb)  gst_showbitsX(gb, 8,  0xff000000, 24)
-#define gst_showbits9(gb)  gst_showbitsX(gb, 9,  0xff800000, 23)
-#define gst_showbits10(gb) gst_showbitsX(gb, 10, 0xffc00000, 22)
-#define gst_showbits11(gb) gst_showbitsX(gb, 11, 0xffe00000, 21)
-#define gst_showbits12(gb) gst_showbitsX(gb, 12, 0xfff00000, 20)
-#define gst_showbits13(gb) gst_showbitsX(gb, 13, 0xfff80000, 19)
-#define gst_showbits14(gb) gst_showbitsX(gb, 14, 0xfffc0000, 18)
-#define gst_showbits15(gb) gst_showbitsX(gb, 15, 0xfffe0000, 17)
-#define gst_showbits16(gb) gst_showbitsX(gb, 16, 0xffff0000, 16)
-#define gst_showbits17(gb) gst_showbitsX(gb, 17, 0xffff8000, 15)
-#define gst_showbits18(gb) gst_showbitsX(gb, 18, 0xffffc000, 14)
-#define gst_showbits19(gb) gst_showbitsX(gb, 19, 0xffffe000, 13)
-#define gst_showbits20(gb) gst_showbitsX(gb, 20, 0xfffff000, 12)
-#define gst_showbits21(gb) gst_showbitsX(gb, 21, 0xfffff800, 11)
-#define gst_showbits22(gb) gst_showbitsX(gb, 22, 0xfffffc00, 10)
-#define gst_showbits23(gb) gst_showbitsX(gb, 23, 0xfffffe00,  9)
-#define gst_showbits24(gb) gst_showbitsX(gb, 24, 0xffffff00,  8)
-#define gst_showbits25(gb) gst_showbitsX(gb, 25, 0xffffff80,  7)
-#define gst_showbits26(gb) gst_showbitsX(gb, 26, 0xffffffc0,  6)
-#define gst_showbits27(gb) gst_showbitsX(gb, 27, 0xffffffe0,  5)
-#define gst_showbits28(gb) gst_showbitsX(gb, 28, 0xfffffff0,  4)
-#define gst_showbits29(gb) gst_showbitsX(gb, 29, 0xfffffff8,  3)
-#define gst_showbits30(gb) gst_showbitsX(gb, 30, 0xfffffffc,  2)
-#define gst_showbits31(gb) gst_showbitsX(gb, 31, 0xfffffffe,  1)
-
-#define gst_showbitsn(gb,num) gst_showbitsX(gb, (num), ((0xffffffff) << (32-num)), (32-(num)))
-
-#define gst_flushbits32(gb)                                                    \
-{                                                                       \
-  (gb)->longptr++;                                                      \
-  checklength2((gb)->longptr, (gb)->endptr);                           \
-  (gb)->dword = swab32(*(gb)->longptr)  << (gb)->bits;                 \
-}
-
-
-#define gst_flushbitsn(gb, num)                                         \
-{                                                                       \
-  (gb)->bits += num;                                                   \
-                                                                       \
-  if ((gb)->bits & 0x20) {                                             \
-    (gb)->bits -= 32;                                                  \
-    (gb)->longptr++;                                                   \
-    checklength2((gb)->longptr, (gb)->endptr);                         \
-    (gb)->dword = swab32(*(gb)->longptr)  << (gb)->bits;               \
-  }                                                                    \
-  else {                                                               \
-    (gb)->dword <<= num;                                               \
-  }                                                                    \
-  debug2("flushbits%-2d: %08lx %p\n", num, (gb)->dword, (gb)->longptr);        \
-}
-
-#define gst_backbits24(gb)                                             \
-{                                                                      \
-  (gb)->bits -= 24;                                                    \
-  if ((gb)->bits < 0) {                                                        \
-    (gb)->bits += 32;                                                  \
-    (gb)->longptr--;                                                   \
-  }                                                                    \
-  (gb)->dword = swab32(*(gb)->longptr)  << (gb)->bits;                 \
-}
-
-#define gst_backbitsn(gb, num)                                          \
-{                                                                      \
-  (gb)->bits -= num;                                                   \
-  while ((gb)->bits < 0) {                                             \
-    (gb)->bits += 32;                                                  \
-    (gb)->longptr--;                                                   \
-  }                                                                    \
-  (gb)->dword = swab32(*(gb)->longptr)  << (gb)->bits;                 \
-  debug2("backbits%-2d: %08lx %p\n", num, (gb)->dword, (gb)->longptr);                 \
-}
-
-#endif /* __GST_GETBITS_INL_H__ */
diff --git a/libs/idct/.gitignore b/libs/idct/.gitignore
deleted file mode 100644 (file)
index 86c5c4e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-*.o
-*.lo
-*.la
-.deps
-.libs
-ieeetest
diff --git a/libs/idct/Makefile.am b/libs/idct/Makefile.am
deleted file mode 100644 (file)
index 9350571..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-if HAVE_LIBMMX
-GSTIDCTARCH_SRCS = mmxidct.S mmx32idct.c sseidct.S
-else
-GSTIDCTARCH_SRCS =
-endif
-
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libgstidct.la
-
-libgstidct_la_SOURCES = \
-        fastintidct.c \
-       floatidct.c \
-       gstidct.c \
-       intidct.c \
-       $(GSTIDCTARCH_SRCS)
-
-libgstidctincludedir = $(includedir)/gst/libs/gstidct
-libgstidctinclude_HEADERS = gstidct.h
-
-check_PROGRAMS = ieeetest
-
-ieeetest_SOURCES = ieeetest.c
-ieeetest_LDADD = libgstidct.la
-ieeetest_CFLAGS = $(GNOME_CFLAGS) $(GST_CFLAGS) $(XML_CFLAGS)
-ieeetest_LDFLAGS = $(GNOME_LIBS) $(GST_LIBS)
-
-noinst_HEADERS = dct.h
-
-libgstidct_la_LIBADD = $(GST_LIBS)
-libgstidct_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
diff --git a/libs/idct/README b/libs/idct/README
deleted file mode 100644 (file)
index 600f3da..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-This archive contains a quick & dirty implementation of the IEEE Standard
-1180-1990 accuracy test for inverse DCT.  It is not guaranteed to be
-correct ... but if you find any bugs, please let me know (by email to
-tgl@cs.cmu.edu).
-
-The test harness consists of the C program ieeetest.c and shell script
-doieee.  For comparison purposes I have also supplied a copy of jrevdct.c,
-the inverse DCT routine from release 4 of the Independent JPEG Group's
-free JPEG software.  (jrevdct.c is slightly modified from the IJG release
-so that it will compile without the IJG include files.)  jrevdct.c passes
-the 1180 test --- or at least, this program thinks so.  jrevdct.out is
-the output from a test run.
-
-Note that numerical results may vary somewhat across machines.  This appears
-to be mostly due to differing results from the cosine function.
-
-
-INSTALLATION:
-  Check the Makefile, change CC and CFLAGS if needed.  Then say "make".
-If your C compiler is non-ANSI, you may need to change includes and/or
-function headers.
-
-  To test a different IDCT routine, link with that routine instead of
-jrevdct.o.  You will need to modify dct.h and/or ieeetest.c if your
-routine's calling convention is not in-place modification of an array
-of 64 "short"s.
-
-
-USAGE:
-  The standard test procedure is
-       doieee ieeetest >outputfile
-Expect it to take a while (almost 80 minutes on my old 68030 box).
-Each of the six passes will emit a row of 100 dots as it runs.
-
-You can grep the output for the word FAILS if you just want to know
-yea or nay.
-
-
-LEGAL MUMBO-JUMBO:
-  I hereby release the test harness to the public domain.
-                       Thomas G. Lane, 22 Nov 1993
-
-IMPORTANT: jrevdct.c is NOT public domain, but is copyrighted free software
-(not the same thing at all).  It is subject to IJG's distribution terms, which
-primarily state that if you incorporate it into a program you must acknowledge
-IJG's contribution in your program documentation.  For more details and the
-complete IJG software, see the IJG FTP archive at ftp.uu.net, in directory
-/graphics/jpeg.
diff --git a/libs/idct/dct.h b/libs/idct/dct.h
deleted file mode 100644 (file)
index fcb7de3..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* define DCT types */
-
-#include "config.h"
-
-/*
- * DCTSIZE      underlying (1d) transform size
- * DCTSIZE2     DCTSIZE squared
- */
-
-#define DCTSIZE      (8)
-#define DCTSIZE2     (DCTSIZE*DCTSIZE)
-
-#define EIGHT_BIT_SAMPLES      /* needed in jrevdct.c */
-
-typedef short DCTELEM;         /* must be at least 16 bits */
-
-typedef DCTELEM DCTBLOCK[DCTSIZE2];
-
-typedef long INT32;            /* must be at least 32 bits */
-
-extern void gst_idct_int_idct();
-
-extern void gst_idct_init_fast_int_idct (void);
-extern void gst_idct_fast_int_idct (short *block);
-
-#ifdef HAVE_LIBMMX
-extern void gst_idct_mmx_idct (short *block);
-extern void gst_idct_mmx32_idct (short *block);
-extern void gst_idct_sse_idct (short *block);
-#endif /* HAVE_LIBMMX */
-
-extern void gst_idct_init_float_idct(void);
-extern void gst_idct_float_idct (short *block);
-
diff --git a/libs/idct/doieee b/libs/idct/doieee
deleted file mode 100755 (executable)
index 1d5ff87..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# perform IEEE 1180 test series
-# Typical usage:
-#    doieee  >outfile
-# where progname is ieeetest or a variant
-
-for i in 1 2 3 4 5; 
-do
-time ./ieeetest $i -256 255 1 10000
-time ./ieeetest $i -5 5     1 10000
-time ./ieeetest $i -300 300 1 10000
-
-time ./ieeetest $i -256 255 -1 10000
-time ./ieeetest $i -5 5     -1 10000
-time ./ieeetest $i -300 300 -1 10000
-done
diff --git a/libs/idct/fastintidct.c b/libs/idct/fastintidct.c
deleted file mode 100644 (file)
index 3c9e9bb..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/* idct.c, inverse fast discrete cosine transform                           */
-
-/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
-
-/*
- * Disclaimer of Warranty
- *
- * These software programs are available to the user without any license fee or
- * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
- * any and all warranties, whether express, implied, or statuary, including any
- * implied warranties or merchantability or of fitness for a particular
- * purpose.  In no event shall the copyright-holder be liable for any
- * incidental, punitive, or consequential damages of any kind whatsoever
- * arising from the use of these programs.
- *
- * This disclaimer of warranty extends to the user of these programs and user's
- * customers, employees, agents, transferees, successors, and assigns.
- *
- * The MPEG Software Simulation Group does not represent or warrant that the
- * programs furnished hereunder are free of infringement of any third-party
- * patents.
- *
- * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
- * are subject to royalty fees to patent holders.  Many of these patents are
- * general enough such that they are unavoidable regardless of implementation
- * design.
- *
- */
-
-/**********************************************************/
-/* inverse two dimensional DCT, Chen-Wang algorithm       */
-/* (cf. IEEE ASSP-32, pp. 803-816, Aug. 1984)             */
-/* 32-bit integer arithmetic (8 bit coefficients)         */
-/* 11 mults, 29 adds per DCT                              */
-/*                                      sE, 18.8.91       */
-/**********************************************************/
-/* coefficients extended to 12 bit for IEEE1180-1990      */
-/* compliance                           sE,  2.1.94       */
-/**********************************************************/
-
-/* this code assumes >> to be a two's-complement arithmetic */
-/* right shift: (-2)>>1 == -1 , (-3)>>1 == -2               */
-
-#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */
-#define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */
-#define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */
-#define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */
-#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */
-#define W7 565  /* 2048*sqrt(2)*cos(7*pi/16) */
-
-#include "dct.h"
-
-/* private data */
-static short iclip[1024]; /* clipping table */
-static short *iclp;
-
-/* private prototypes */
-static void idctrow (short *blk);
-static void idctcol (short *blk);
-
-/* row (horizontal) IDCT
- *
- *           7                       pi         1
- * dst[k] = sum c[l] * src[l] * cos( -- * ( k + - ) * l )
- *          l=0                      8          2
- *
- * where: c[0]    = 128
- *        c[1..7] = 128*sqrt(2)
- */
-
-static void idctrow(blk)
-short *blk;
-{
-  int x0, x1, x2, x3, x4, x5, x6, x7, x8;
-
-  /* shortcut */
-  if (!((x1 = blk[4]<<11) | (x2 = blk[6]) | (x3 = blk[2]) |
-        (x4 = blk[1]) | (x5 = blk[7]) | (x6 = blk[5]) | (x7 = blk[3])))
-  {
-    blk[0]=blk[1]=blk[2]=blk[3]=blk[4]=blk[5]=blk[6]=blk[7]=blk[0]<<3;
-    return;
-  }
-
-  x0 = (blk[0]<<11) + 128; /* for proper rounding in the fourth stage */
-
-  /* first stage */
-  x8 = W7*(x4+x5);
-  x4 = x8 + (W1-W7)*x4;
-  x5 = x8 - (W1+W7)*x5;
-  x8 = W3*(x6+x7);
-  x6 = x8 - (W3-W5)*x6;
-  x7 = x8 - (W3+W5)*x7;
-  
-  /* second stage */
-  x8 = x0 + x1;
-  x0 -= x1;
-  x1 = W6*(x3+x2);
-  x2 = x1 - (W2+W6)*x2;
-  x3 = x1 + (W2-W6)*x3;
-  x1 = x4 + x6;
-  x4 -= x6;
-  x6 = x5 + x7;
-  x5 -= x7;
-  
-  /* third stage */
-  x7 = x8 + x3;
-  x8 -= x3;
-  x3 = x0 + x2;
-  x0 -= x2;
-  x2 = (181*(x4+x5)+128)>>8;
-  x4 = (181*(x4-x5)+128)>>8;
-  
-  /* fourth stage */
-  blk[0] = (x7+x1)>>8;
-  blk[1] = (x3+x2)>>8;
-  blk[2] = (x0+x4)>>8;
-  blk[3] = (x8+x6)>>8;
-  blk[4] = (x8-x6)>>8;
-  blk[5] = (x0-x4)>>8;
-  blk[6] = (x3-x2)>>8;
-  blk[7] = (x7-x1)>>8;
-}
-
-/* column (vertical) IDCT
- *
- *             7                         pi         1
- * dst[8*k] = sum c[l] * src[8*l] * cos( -- * ( k + - ) * l )
- *            l=0                        8          2
- *
- * where: c[0]    = 1/1024
- *        c[1..7] = (1/1024)*sqrt(2)
- */
-static void idctcol(blk)
-short *blk;
-{
-  int x0, x1, x2, x3, x4, x5, x6, x7, x8;
-
-  /* shortcut */
-  if (!((x1 = (blk[8*4]<<8)) | (x2 = blk[8*6]) | (x3 = blk[8*2]) |
-        (x4 = blk[8*1]) | (x5 = blk[8*7]) | (x6 = blk[8*5]) | (x7 = blk[8*3])))
-  {
-    blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]=blk[8*5]=blk[8*6]=blk[8*7]=
-      iclp[(blk[8*0]+32)>>6];
-    return;
-  }
-
-  x0 = (blk[8*0]<<8) + 8192;
-
-  /* first stage */
-  x8 = W7*(x4+x5) + 4;
-  x4 = (x8+(W1-W7)*x4)>>3;
-  x5 = (x8-(W1+W7)*x5)>>3;
-  x8 = W3*(x6+x7) + 4;
-  x6 = (x8-(W3-W5)*x6)>>3;
-  x7 = (x8-(W3+W5)*x7)>>3;
-  
-  /* second stage */
-  x8 = x0 + x1;
-  x0 -= x1;
-  x1 = W6*(x3+x2) + 4;
-  x2 = (x1-(W2+W6)*x2)>>3;
-  x3 = (x1+(W2-W6)*x3)>>3;
-  x1 = x4 + x6;
-  x4 -= x6;
-  x6 = x5 + x7;
-  x5 -= x7;
-  
-  /* third stage */
-  x7 = x8 + x3;
-  x8 -= x3;
-  x3 = x0 + x2;
-  x0 -= x2;
-  x2 = (181*(x4+x5)+128)>>8;
-  x4 = (181*(x4-x5)+128)>>8;
-  
-  /* fourth stage */
-  blk[8*0] = iclp[(x7+x1)>>14];
-  blk[8*1] = iclp[(x3+x2)>>14];
-  blk[8*2] = iclp[(x0+x4)>>14];
-  blk[8*3] = iclp[(x8+x6)>>14];
-  blk[8*4] = iclp[(x8-x6)>>14];
-  blk[8*5] = iclp[(x0-x4)>>14];
-  blk[8*6] = iclp[(x3-x2)>>14];
-  blk[8*7] = iclp[(x7-x1)>>14];
-}
-
-/* two dimensional inverse discrete cosine transform */
-void gst_idct_fast_int_idct(block)
-short *block;
-{
-  int i;
-
-  for (i=0; i<8; i++)
-    idctrow(block+8*i);
-
-  for (i=0; i<8; i++)
-    idctcol(block+i);
-}
-
-void gst_idct_init_fast_int_idct()
-{
-  int i;
-
-  iclp = iclip+512;
-  for (i= -512; i<512; i++)
-    iclp[i] = (i<-256) ? -256 : ((i>255) ? 255 : i);
-}
diff --git a/libs/idct/floatidct.c b/libs/idct/floatidct.c
deleted file mode 100644 (file)
index 520c391..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Reference_IDCT.c, Inverse Discrete Fourier Transform, double precision          */
-
-/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
-
-/*
- * Disclaimer of Warranty
- *
- * These software programs are available to the user without any license fee or
- * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
- * any and all warranties, whether express, implied, or statuary, including any
- * implied warranties or merchantability or of fitness for a particular
- * purpose.  In no event shall the copyright-holder be liable for any
- * incidental, punitive, or consequential damages of any kind whatsoever
- * arising from the use of these programs.
- *
- * This disclaimer of warranty extends to the user of these programs and user's
- * customers, employees, agents, transferees, successors, and assigns.
- *
- * The MPEG Software Simulation Group does not represent or warrant that the
- * programs furnished hereunder are free of infringement of any third-party
- * patents.
- *
- * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
- * are subject to royalty fees to patent holders.  Many of these patents are
- * general enough such that they are unavoidable regardless of implementation
- * design.
- *
- */
-
-/*  Perform IEEE 1180 reference (64-bit floating point, separable 8x1
- *  direct matrix multiply) Inverse Discrete Cosine Transform
-*/
-
-
-/* Here we use math.h to generate constants.  Compiler results may
-   vary a little */
-
-#include <math.h>
-
-#ifndef PI
-# ifdef M_PI
-#  define PI M_PI
-# else
-#  define PI 3.14159265358979323846
-# endif
-#endif
-
-/* private data */
-
-/* cosine transform matrix for 8x1 IDCT */
-static double gst_idct_float_c[8][8];
-
-/* initialize DCT coefficient matrix */
-
-void gst_idct_init_float_idct()
-{
-  int freq, time;
-  double scale;
-
-  for (freq=0; freq < 8; freq++)
-  {
-    scale = (freq == 0) ? sqrt(0.125) : 0.5;
-    for (time=0; time<8; time++)
-      gst_idct_float_c[freq][time] = scale*cos((PI/8.0)*freq*(time + 0.5));
-  }
-}
-
-/* perform IDCT matrix multiply for 8x8 coefficient block */
-
-void gst_idct_float_idct(block)
-short *block;
-{
-  int i, j, k, v;
-  double partial_product;
-  double tmp[64];
-
-  for (i=0; i<8; i++)
-    for (j=0; j<8; j++)
-    {
-      partial_product = 0.0;
-
-      for (k=0; k<8; k++)
-        partial_product+= gst_idct_float_c[k][j]*block[8*i+k];
-
-      tmp[8*i+j] = partial_product;
-    }
-
-  /* Transpose operation is integrated into address mapping by switching 
-     loop order of i and j */
-
-  for (j=0; j<8; j++)
-    for (i=0; i<8; i++)
-    {
-      partial_product = 0.0;
-
-      for (k=0; k<8; k++)
-        partial_product+= gst_idct_float_c[k][i]*tmp[8*k+j];
-
-      v = (int) floor(partial_product+0.5);
-      block[8*i+j] = (v<-256) ? -256 : ((v>255) ? 255 : v);
-    }
-}
diff --git a/libs/idct/gstidct.c b/libs/idct/gstidct.c
deleted file mode 100644 (file)
index ae180e3..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-#include <config.h>
-
-#include <gst/gst.h>
-#include "gstidct.h"
-#include "dct.h"
-
-static void gst_idct_int_sparse_idct(short *data);
-
-GstIDCT *gst_idct_new(GstIDCTMethod method) 
-{
-  GstIDCT *new = g_malloc(sizeof(GstIDCT));
-
-  new->need_transpose = FALSE;
-
-  if (method == GST_IDCT_DEFAULT) {
-#ifdef HAVE_LIBMMX
-    if (gst_cpu_get_flags() & GST_CPU_FLAG_MMX) {
-      method = GST_IDCT_MMX;
-    }
-    /* disabled for now 
-    if (gst_cpu_get_flags() & GST_CPU_FLAG_SSE) {
-      method = GST_IDCT_SSE;
-    }
-    */
-    else
-#endif /* HAVE_LIBMMX */
-    {
-      method = GST_IDCT_FAST_INT;
-    }
-  }
-
-  new->convert_sparse = gst_idct_int_sparse_idct;
-
-  switch (method) {
-        case GST_IDCT_FAST_INT:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "using fast_int_idct");
-          gst_idct_init_fast_int_idct();
-               new->convert = gst_idct_fast_int_idct;
-               break;
-        case GST_IDCT_INT:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "using int_idct");
-               new->convert = gst_idct_int_idct;
-               break;
-        case GST_IDCT_FLOAT:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "using float_idct");
-               gst_idct_init_float_idct();
-               new->convert = gst_idct_float_idct;
-               break;
-#ifdef HAVE_LIBMMX
-        case GST_IDCT_MMX:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "using MMX_idct");
-               new->convert = gst_idct_mmx_idct;
-               new->need_transpose = TRUE;
-               break;
-        case GST_IDCT_MMX32:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "using MMX32_idct");
-               new->convert = gst_idct_mmx32_idct;
-               new->need_transpose = TRUE;
-               break;
-        case GST_IDCT_SSE:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "using SSE_idct");
-               new->convert = gst_idct_sse_idct;
-               new->need_transpose = TRUE;
-               break;
-#endif /* HAVE_LIBMMX */
-        default:
-               GST_INFO (GST_CAT_PLUGIN_INFO, "method not supported");
-               g_free(new);
-               return NULL;
-  }
-  return new;
-}
-
-static void gst_idct_int_sparse_idct(short *data) 
-{
-  short val;
-  gint32 v, *dp = (guint32 *)data;
-
-  v = *data;
-
-  if (v < 0) {
-    val = -v;
-    val += (8 >> 1);
-    val /= 8;
-    val = -val;
-  }
-  else {
-    val = (v + (8 >> 1)) / 8;
-  }
-  v = (( val & 0xffff) | (val << 16));
-
-  dp[0] = v;  dp[1] = v;  dp[2] = v;  dp[3] = v;
-  dp[4] = v;  dp[5] = v;  dp[6] = v;  dp[7] = v;
-  dp[8] = v;  dp[9] = v;  dp[10] = v; dp[11] = v;
-  dp[12] = v; dp[13] = v; dp[14] = v; dp[15] = v;
-  dp[16] = v; dp[17] = v; dp[18] = v; dp[19] = v;
-  dp[20] = v; dp[21] = v; dp[22] = v; dp[23] = v;
-  dp[24] = v; dp[25] = v; dp[26] = v; dp[27] = v;
-  dp[28] = v; dp[29] = v; dp[30] = v; dp[31] = v;
-}
-
-void gst_idct_destroy(GstIDCT *idct) 
-{
-  g_return_if_fail(idct != NULL);
-
-  g_free(idct);
-}
-
diff --git a/libs/idct/gstidct.h b/libs/idct/gstidct.h
deleted file mode 100644 (file)
index b565473..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-#ifndef __GST_IDCT_H__
-#define __GST_IDCT_H__
-
-#include <glib.h>
-
-typedef enum {
-  GST_IDCT_DEFAULT,    
-  GST_IDCT_INT,        
-  GST_IDCT_FAST_INT, 
-  GST_IDCT_FLOAT,   
-  GST_IDCT_MMX,        
-  GST_IDCT_MMX32,
-  GST_IDCT_SSE,
-} GstIDCTMethod;
-
-typedef struct _GstIDCT GstIDCT;
-typedef void (*GstIDCTFunction) (gshort *block);
-
-#define GST_IDCT_TRANSPOSE(idct) ((idct)->need_transpose)
-
-struct _GstIDCT {
-  /* private */
-  GstIDCTFunction convert;
-  GstIDCTFunction convert_sparse;
-  gboolean need_transpose;
-};
-
-
-GstIDCT *gst_idct_new(GstIDCTMethod method);
-#define gst_idct_convert(idct, blocks) (idct)->convert((blocks))
-#define gst_idct_convert_sparse(idct, blocks) (idct)->convert_sparse((blocks))
-void gst_idct_destroy(GstIDCT *idct);
-
-#endif /* __GST_IDCT_H__ */
diff --git a/libs/idct/ieeetest.c b/libs/idct/ieeetest.c
deleted file mode 100644 (file)
index d78158e..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * ieeetest.c --- test IDCT code against the IEEE Std 1180-1990 spec
- *
- * Note that this does only one pass of the test.
- * Six invocations of ieeetest are needed to complete the entire spec.
- * The shell script "doieee" performs the complete test.
- *
- * Written by Tom Lane (tgl@cs.cmu.edu).
- * Released to public domain 11/22/93.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include <gst/gst.h>
-#include "gstidct.h"
-#include "dct.h"
-
-
-/* prototypes */
-
-void usage (char *msg);
-long ieeerand (long L, long H);
-void dct_init(void);
-void ref_fdct(DCTELEM block[8][8]);
-void ref_idct(DCTELEM block[8][8]);
-
-/* error stat accumulators -- assume initialized to 0 */
-
-long sumerrs[DCTSIZE2];
-long sumsqerrs[DCTSIZE2];
-int maxerr[DCTSIZE2];
-
-
-char * meets (double val, double limit)
-{
-  return ((fabs(val) <= limit) ? "meets" : "FAILS");
-}
-
-int
-main(int argc, char **argv)
-{
-  long minpix, maxpix, sign;
-  long curiter, niters;
-  int i, j;
-  double max, total;
-  int method;
-  DCTELEM   block[DCTSIZE2];   /* random source data */
-  DCTELEM   refcoefs[DCTSIZE2]; /* coefs from reference FDCT */
-  DCTELEM   refout[DCTSIZE2];  /* output from reference IDCT */
-  DCTELEM   testout[DCTSIZE2]; /* output from test IDCT */
-  GstIDCT   *idct;
-  guint64  tscstart, tscmin = ~0, tscmax = 0;
-  guint64  tscstop;
-
-  /* Argument parsing --- not very bulletproof at all */
-
-  if (argc != 6) usage(NULL);
-
-  method = atoi(argv[1]);
-  minpix = atoi(argv[2]);
-  maxpix = atoi(argv[3]);
-  sign   = atoi(argv[4]);
-  niters = atol(argv[5]);
-
-  gst_library_load("gstidct");
-
-  idct = gst_idct_new(method);
-  if (idct == 0) {
-    printf("method not available\n\n\n");
-
-    return 0;
-  }
-
-  dct_init();
-
-  /* Loop once per generated random-data block */
-
-  for (curiter = 0; curiter < niters; curiter++) {
-
-    /* generate a pseudo-random block of data */
-    for (i = 0; i < DCTSIZE2; i++)
-      block[i] = (DCTELEM) (ieeerand(-minpix,maxpix) * sign);
-
-    /* perform reference FDCT */
-    memcpy(refcoefs, block, sizeof(DCTELEM)*DCTSIZE2);
-    ref_fdct(refcoefs);
-    /* clip */
-    for (i = 0; i < DCTSIZE2; i++) {
-      if (refcoefs[i] < -2048) refcoefs[i] = -2048;
-      else if (refcoefs[i] > 2047) refcoefs[i] = 2047;
-    }
-
-    /* perform reference IDCT */
-    memcpy(refout, refcoefs, sizeof(DCTELEM)*DCTSIZE2);
-    ref_idct(refout);
-    /* clip */
-    for (i = 0; i < DCTSIZE2; i++) {
-      if (refout[i] < -256) refout[i] = -256;
-      else if (refout[i] > 255) refout[i] = 255;
-    }
-
-    /* perform test IDCT */
-        if (GST_IDCT_TRANSPOSE(idct)) {
-      for (j = 0; j < DCTSIZE; j++) {
-        for (i = 0; i < DCTSIZE; i++) {
-                   testout[i*DCTSIZE+j] = refcoefs[j*DCTSIZE+i];
-                 }
-          }
-        }
-        else {
-      memcpy(testout, refcoefs, sizeof(DCTELEM)*DCTSIZE2);
-        }
-
-        gst_trace_read_tsc(&tscstart);
-    gst_idct_convert(idct, testout);
-        gst_trace_read_tsc(&tscstop);
-        //printf("time %llu, %llu %lld\n", tscstart, tscstop, tscstop-tscstart);
-        if (tscstop - tscstart < tscmin) tscmin = tscstop-tscstart;
-        if (tscstop - tscstart > tscmax) tscmax = tscstop-tscstart;
-
-    /* clip */
-    for (i = 0; i < DCTSIZE2; i++) {
-      if (testout[i] < -256) testout[i] = -256;
-      else if (testout[i] > 255) testout[i] = 255;
-    }
-
-    /* accumulate error stats */
-    for (i = 0; i < DCTSIZE2; i++) {
-      register int err = testout[i] - refout[i];
-      sumerrs[i] += err;
-      sumsqerrs[i] += err * err;
-      if (err < 0) err = -err;
-      if (maxerr[i] < err) maxerr[i] = err;
-    }
-
-    if (curiter % 100 == 99) {
-      fprintf(stderr, ".");
-      fflush(stderr);
-    }
-  }
-  fprintf(stderr, "\n");
-
-  /* print results */
-
-  printf("IEEE test conditions: -L = %ld, +H = %ld, sign = %ld, #iters = %ld\n",
-        minpix, maxpix, sign, niters);
-
-  printf("Speed, min time %lld, max %lld\n", tscmin, tscmax);
-
-  printf("Peak absolute values of errors:\n");
-  for (i = 0, j = 0; i < DCTSIZE2; i++) {
-    if (j < maxerr[i]) j = maxerr[i];
-    printf("%4d", maxerr[i]);
-    if ((i%DCTSIZE) == DCTSIZE-1) printf("\n");
-  }
-  printf("Worst peak error = %d  (%s spec limit 1)\n\n", j,
-        meets((double) j, 1.0));
-
-  printf("Mean square errors:\n");
-  max = total = 0.0;
-  for (i = 0; i < DCTSIZE2; i++) {
-    double err = (double) sumsqerrs[i]  / ((double) niters);
-    total += (double) sumsqerrs[i];
-    if (max < err) max = err;
-    printf(" %8.4f", err);
-    if ((i%DCTSIZE) == DCTSIZE-1) printf("\n");
-  }
-  printf("Worst pmse = %.6f  (%s spec limit 0.06)\n", max, meets(max, 0.06));
-  total /= (double) (64*niters);
-  printf("Overall mse = %.6f  (%s spec limit 0.02)\n\n", total,
-        meets(total, 0.02));
-
-  printf("Mean errors:\n");
-  max = total = 0.0;
-  for (i = 0; i < DCTSIZE2; i++) {
-    double err = (double) sumerrs[i]  / ((double) niters);
-    total += (double) sumerrs[i];
-    printf(" %8.4f", err);
-    if (err < 0.0) err = -err;
-    if (max < err) max = err;
-    if ((i%DCTSIZE) == DCTSIZE-1) printf("\n");
-  }
-  printf("Worst mean error = %.6f  (%s spec limit 0.015)\n", max,
-        meets(max, 0.015));
-  total /= (double) (64*niters);
-  printf("Overall mean error = %.6f  (%s spec limit 0.0015)\n\n", total,
-        meets(total, 0.0015));
-
-  /* test for 0 input giving 0 output */
-  memset(testout, 0, sizeof(DCTELEM)*DCTSIZE2);
-  gst_idct_convert(idct, testout);
-  for (i = 0, j=0; i < DCTSIZE2; i++) {
-    if (testout[i]) {
-      printf("Position %d of IDCT(0) = %d (FAILS)\n", i, testout[i]);
-      j++;
-    }
-  }
-  printf("%d elements of IDCT(0) were not zero\n\n\n", j);
-
-  exit(0);
-  return 0;
-}
-
-
-void usage (char *msg)
-{
-  if (msg != NULL)
-    fprintf(stderr, "\nerror: %s\n", msg);
-
-  fprintf(stderr, "\n");
-  fprintf(stderr, "usage: ieeetest minpix maxpix sign niters\n");
-  fprintf(stderr, "\n");
-  fprintf(stderr, "  test = 1 - 5\n");
-  fprintf(stderr, "  minpix = -L value per IEEE spec\n");
-  fprintf(stderr, "  maxpix =  H value per IEEE spec\n");
-  fprintf(stderr, "  sign = +1 for normal, -1 to run negated test\n");
-  fprintf(stderr, "  niters = # iterations (10000 for full test)\n");
-  fprintf(stderr, "\n");
-
-  exit(1);
-}
-
-
-/* Pseudo-random generator specified by IEEE 1180 */
-
-long ieeerand (long L, long H)
-{
-  static long randx = 1;
-  static double z = (double) 0x7fffffff;
-
-  long i,j;
-  double x;
-
-  randx = (randx * 1103515245) + 12345;
-  i = randx & 0x7ffffffe;
-  x = ((double) i) / z;
-  x *= (L+H+1);
-  j = x;
-  return j-L;
-}
-
-
-/* Reference double-precision FDCT and IDCT */
-
-
-/* The cosine lookup table */
-/* coslu[a][b] = C(b)/2 * cos[(2a+1)b*pi/16] */
-double coslu[8][8];
-
-
-/* Routine to initialise the cosine lookup table */
-void dct_init(void)
-{
-  int a,b;
-  double tmp;
-
-  for(a=0;a<8;a++)
-    for(b=0;b<8;b++) {
-      tmp = cos((double)((a+a+1)*b) * (3.14159265358979323846 / 16.0));
-      if(b==0)
-       tmp /= sqrt(2.0);
-      coslu[a][b] = tmp * 0.5;
-    }
-}
-
-
-void ref_fdct (DCTELEM block[8][8])
-{
-  int x,y,u,v;
-  double tmp, tmp2;
-  double res[8][8];
-
-  for (v=0; v<8; v++) {
-    for (u=0; u<8; u++) {
-      tmp = 0.0;
-      for (y=0; y<8; y++) {
-       tmp2 = 0.0;
-       for (x=0; x<8; x++) {
-         tmp2 += (double) block[y][x] * coslu[x][u];
-       }
-       tmp += coslu[y][v] * tmp2;
-      }
-      res[v][u] = tmp;
-    }
-  }
-
-  for (v=0; v<8; v++) {
-    for (u=0; u<8; u++) {
-      tmp = res[v][u];
-      if (tmp < 0.0) {
-       x = - ((int) (0.5 - tmp));
-      } else {
-       x = (int) (tmp + 0.5);
-      }
-      block[v][u] = (DCTELEM) x;
-    }
-  }
-}
-
-
-void ref_idct (DCTELEM block[8][8])
-{
-  int x,y,u,v;
-  double tmp, tmp2;
-  double res[8][8];
-
-  for (y=0; y<8; y++) {
-    for (x=0; x<8; x++) {
-      tmp = 0.0;
-      for (v=0; v<8; v++) {
-       tmp2 = 0.0;
-       for (u=0; u<8; u++) {
-         tmp2 += (double) block[v][u] * coslu[x][u];
-       }
-       tmp += coslu[y][v] * tmp2;
-      }
-      res[y][x] = tmp;
-    }
-  }
-
-  for (v=0; v<8; v++) {
-    for (u=0; u<8; u++) {
-      tmp = res[v][u];
-      if (tmp < 0.0) {
-       x = - ((int) (0.5 - tmp));
-      } else {
-       x = (int) (tmp + 0.5);
-      }
-      block[v][u] = (DCTELEM) x;
-    }
-  }
-}
diff --git a/libs/idct/intidct.c b/libs/idct/intidct.c
deleted file mode 100644 (file)
index 119b7fd..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * jrevdct.c
- *
- * Copyright (C) 1991, 1992, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the basic inverse-DCT transformation subroutine.
- *
- * This implementation is based on an algorithm described in
- *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
- *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
- *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
- * The primary algorithm described there uses 11 multiplies and 29 adds.
- * We use their alternate method with 12 multiplies and 32 adds.
- * The advantage of this method is that no data path contains more than one
- * multiplication; this allows a very simple and accurate implementation in
- * scaled fixed-point arithmetic, with a minimal number of shifts.
- */
-
-#include "dct.h"
-
-/* We assume that right shift corresponds to signed division by 2 with
- * rounding towards minus infinity.  This is correct for typical "arithmetic
- * shift" instructions that shift in copies of the sign bit.  But some
- * C compilers implement >> with an unsigned shift.  For these machines you
- * must define RIGHT_SHIFT_IS_UNSIGNED.
- * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
- * It is only applied with constant shift counts.  SHIFT_TEMPS must be
- * included in the variables of any routine using RIGHT_SHIFT.
- */
-
-#ifdef RIGHT_SHIFT_IS_UNSIGNED
-#define SHIFT_TEMPS    INT32 shift_temp;
-#define RIGHT_SHIFT(x,shft)  \
-       ((shift_temp = (x)) < 0 ? \
-        (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
-        (shift_temp >> (shft)))
-#else
-#define SHIFT_TEMPS
-#define RIGHT_SHIFT(x,shft)    ((x) >> (shft))
-#endif
-
-
-/*
- * This routine is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * A 2-D IDCT can be done by 1-D IDCT on each row followed by 1-D IDCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * The poop on this scaling stuff is as follows:
- *
- * Each 1-D IDCT step produces outputs which are a factor of sqrt(N)
- * larger than the true IDCT outputs.  The final outputs are therefore
- * a factor of N larger than desired; since N=8 this can be cured by
- * a simple right shift at the end of the algorithm.  The advantage of
- * this arrangement is that we save two multiplications per 1-D IDCT,
- * because the y0 and y4 inputs need not be divided by sqrt(N).
- *
- * We have to do addition and subtraction of the integer inputs, which
- * is no problem, and multiplication by fractional constants, which is
- * a problem to do in integer arithmetic.  We multiply all the constants
- * by CONST_SCALE and convert them to integer constants (thus retaining
- * CONST_BITS bits of precision in the constants).  After doing a
- * multiplication we have to divide the product by CONST_SCALE, with proper
- * rounding, to produce the correct output.  This division can be done
- * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
- * as long as possible so that partial sums can be added together with
- * full fractional precision.
- *
- * The outputs of the first pass are scaled up by PASS1_BITS bits so that
- * they are represented to better-than-integral precision.  These outputs
- * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word
- * with the recommended scaling.  (To scale up 12-bit sample data further, an
- * intermediate INT32 array would be needed.)
- *
- * To avoid overflow of the 32-bit intermediate results in pass 2, we must
- * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 26.  Error analysis
- * shows that the values given below are the most effective.
- */
-
-#ifdef EIGHT_BIT_SAMPLES
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  1          /* lose a little precision to avoid overflow */
-#endif
-
-#define ONE    ((INT32) 1)
-
-#define CONST_SCALE (ONE << CONST_BITS)
-
-/* Convert a positive real constant to an integer scaled by CONST_SCALE. */
-
-#define FIX(x) ((INT32) ((x) * CONST_SCALE + 0.5))
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_298631336  ((INT32)  2446)       /* FIX(0.298631336) */
-#define FIX_0_390180644  ((INT32)  3196)       /* FIX(0.390180644) */
-#define FIX_0_541196100  ((INT32)  4433)       /* FIX(0.541196100) */
-#define FIX_0_765366865  ((INT32)  6270)       /* FIX(0.765366865) */
-#define FIX_0_899976223  ((INT32)  7373)       /* FIX(0.899976223) */
-#define FIX_1_175875602  ((INT32)  9633)       /* FIX(1.175875602) */
-#define FIX_1_501321110  ((INT32)  12299)      /* FIX(1.501321110) */
-#define FIX_1_847759065  ((INT32)  15137)      /* FIX(1.847759065) */
-#define FIX_1_961570560  ((INT32)  16069)      /* FIX(1.961570560) */
-#define FIX_2_053119869  ((INT32)  16819)      /* FIX(2.053119869) */
-#define FIX_2_562915447  ((INT32)  20995)      /* FIX(2.562915447) */
-#define FIX_3_072711026  ((INT32)  25172)      /* FIX(3.072711026) */
-#else
-#define FIX_0_298631336  FIX(0.298631336)
-#define FIX_0_390180644  FIX(0.390180644)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_175875602  FIX(1.175875602)
-#define FIX_1_501321110  FIX(1.501321110)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_1_961570560  FIX(1.961570560)
-#define FIX_2_053119869  FIX(2.053119869)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_072711026  FIX(3.072711026)
-#endif
-
-
-/* Descale and correctly round an INT32 value that's scaled by N bits.
- * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
- * the fudge factor is correct for either sign of X.
- */
-
-#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply;
- * this provides a useful speedup on many machines.
- * There is no way to specify a 16x16->32 multiply in portable C, but
- * some C compilers will do the right thing if you provide the correct
- * combination of casts.
- * NB: for 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#ifdef EIGHT_BIT_SAMPLES
-#ifdef SHORTxSHORT_32          /* may work if 'int' is 32 bits */
-#define MULTIPLY(var,const)  (((INT16) (var)) * ((INT16) (const)))
-#endif
-#ifdef SHORTxLCONST_32         /* known to work with Microsoft C 6.0 */
-#define MULTIPLY(var,const)  (((INT16) (var)) * ((INT32) (const)))
-#endif
-#endif
-
-#ifndef MULTIPLY               /* default definition */
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/*
- * Perform the inverse DCT on one block of coefficients.
- */
-
-void
-gst_idct_int_idct (DCTBLOCK data)
-{
-  INT32 tmp0, tmp1, tmp2, tmp3;
-  INT32 tmp10, tmp11, tmp12, tmp13;
-  INT32 z1, z2, z3, z4, z5;
-  register DCTELEM *dataptr;
-  int rowctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows. */
-  /* Note results are scaled up by sqrt(8) compared to a true IDCT; */
-  /* furthermore, we scale the results by 2**PASS1_BITS. */
-
-  dataptr = data;
-  for (rowctr = DCTSIZE-1; rowctr >= 0; rowctr--) {
-    /* Due to quantization, we will usually find that many of the input
-     * coefficients are zero, especially the AC terms.  We can exploit this
-     * by short-circuiting the IDCT calculation for any row in which all
-     * the AC terms are zero.  In that case each output is equal to the
-     * DC coefficient (with scale factor as needed).
-     * With typical images and quantization tables, half or more of the
-     * row DCT calculations can be simplified this way.
-     */
-
-    if ((dataptr[1] | dataptr[2] | dataptr[3] | dataptr[4] |
-        dataptr[5] | dataptr[6] | dataptr[7]) == 0) {
-      /* AC terms all zero */
-      DCTELEM dcval = (DCTELEM) (dataptr[0] << PASS1_BITS);
-      
-      dataptr[0] = dcval;
-      dataptr[1] = dcval;
-      dataptr[2] = dcval;
-      dataptr[3] = dcval;
-      dataptr[4] = dcval;
-      dataptr[5] = dcval;
-      dataptr[6] = dcval;
-      dataptr[7] = dcval;
-      
-      dataptr += DCTSIZE;      /* advance pointer to next row */
-      continue;
-    }
-
-    /* Even part: reverse the even part of the forward DCT. */
-    /* The rotator is sqrt(2)*c(-6). */
-
-    z2 = (INT32) dataptr[2];
-    z3 = (INT32) dataptr[6];
-
-    z1 = MULTIPLY(z2 + z3, FIX_0_541196100);
-    tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065);
-    tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865);
-
-    tmp0 = ((INT32) dataptr[0] + (INT32) dataptr[4]) << CONST_BITS;
-    tmp1 = ((INT32) dataptr[0] - (INT32) dataptr[4]) << CONST_BITS;
-
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    /* Odd part per figure 8; the matrix is unitary and hence its
-     * transpose is its inverse.  i0..i3 are y7,y5,y3,y1 respectively.
-     */
-
-    tmp0 = (INT32) dataptr[7];
-    tmp1 = (INT32) dataptr[5];
-    tmp2 = (INT32) dataptr[3];
-    tmp3 = (INT32) dataptr[1];
-
-    z1 = tmp0 + tmp3;
-    z2 = tmp1 + tmp2;
-    z3 = tmp0 + tmp2;
-    z4 = tmp1 + tmp3;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    tmp0 += z1 + z3;
-    tmp1 += z2 + z4;
-    tmp2 += z2 + z3;
-    tmp3 += z1 + z4;
-
-    /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */
-
-    dataptr[0] = (DCTELEM) DESCALE(tmp10 + tmp3, CONST_BITS-PASS1_BITS);
-    dataptr[7] = (DCTELEM) DESCALE(tmp10 - tmp3, CONST_BITS-PASS1_BITS);
-    dataptr[1] = (DCTELEM) DESCALE(tmp11 + tmp2, CONST_BITS-PASS1_BITS);
-    dataptr[6] = (DCTELEM) DESCALE(tmp11 - tmp2, CONST_BITS-PASS1_BITS);
-    dataptr[2] = (DCTELEM) DESCALE(tmp12 + tmp1, CONST_BITS-PASS1_BITS);
-    dataptr[5] = (DCTELEM) DESCALE(tmp12 - tmp1, CONST_BITS-PASS1_BITS);
-    dataptr[3] = (DCTELEM) DESCALE(tmp13 + tmp0, CONST_BITS-PASS1_BITS);
-    dataptr[4] = (DCTELEM) DESCALE(tmp13 - tmp0, CONST_BITS-PASS1_BITS);
-
-    dataptr += DCTSIZE;                /* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns. */
-  /* Note that we must descale the results by a factor of 8 == 2**3, */
-  /* and also undo the PASS1_BITS scaling. */
-
-  dataptr = data;
-  for (rowctr = DCTSIZE-1; rowctr >= 0; rowctr--) {
-    /* Columns of zeroes can be exploited in the same way as we did with rows.
-     * However, the row calculation has created many nonzero AC terms, so the
-     * simplification applies less often (typically 5% to 10% of the time).
-     * On machines with very fast multiplication, it's possible that the
-     * test takes more time than it's worth.  In that case this section
-     * may be commented out.
-     */
-
-#ifndef NO_ZERO_COLUMN_TEST
-    if ((dataptr[DCTSIZE*1] | dataptr[DCTSIZE*2] | dataptr[DCTSIZE*3] |
-        dataptr[DCTSIZE*4] | dataptr[DCTSIZE*5] | dataptr[DCTSIZE*6] |
-        dataptr[DCTSIZE*7]) == 0) {
-      /* AC terms all zero */
-      DCTELEM dcval = (DCTELEM) DESCALE((INT32) dataptr[0], PASS1_BITS+3);
-      
-      dataptr[DCTSIZE*0] = dcval;
-      dataptr[DCTSIZE*1] = dcval;
-      dataptr[DCTSIZE*2] = dcval;
-      dataptr[DCTSIZE*3] = dcval;
-      dataptr[DCTSIZE*4] = dcval;
-      dataptr[DCTSIZE*5] = dcval;
-      dataptr[DCTSIZE*6] = dcval;
-      dataptr[DCTSIZE*7] = dcval;
-      
-      dataptr++;               /* advance pointer to next column */
-      continue;
-    }
-#endif
-
-    /* Even part: reverse the even part of the forward DCT. */
-    /* The rotator is sqrt(2)*c(-6). */
-
-    z2 = (INT32) dataptr[DCTSIZE*2];
-    z3 = (INT32) dataptr[DCTSIZE*6];
-
-    z1 = MULTIPLY(z2 + z3, FIX_0_541196100);
-    tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065);
-    tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865);
-
-    tmp0 = ((INT32) dataptr[DCTSIZE*0] + (INT32) dataptr[DCTSIZE*4]) << CONST_BITS;
-    tmp1 = ((INT32) dataptr[DCTSIZE*0] - (INT32) dataptr[DCTSIZE*4]) << CONST_BITS;
-
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    /* Odd part per figure 8; the matrix is unitary and hence its
-     * transpose is its inverse.  i0..i3 are y7,y5,y3,y1 respectively.
-     */
-
-    tmp0 = (INT32) dataptr[DCTSIZE*7];
-    tmp1 = (INT32) dataptr[DCTSIZE*5];
-    tmp2 = (INT32) dataptr[DCTSIZE*3];
-    tmp3 = (INT32) dataptr[DCTSIZE*1];
-
-    z1 = tmp0 + tmp3;
-    z2 = tmp1 + tmp2;
-    z3 = tmp0 + tmp2;
-    z4 = tmp1 + tmp3;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    tmp0 += z1 + z3;
-    tmp1 += z2 + z4;
-    tmp2 += z2 + z3;
-    tmp3 += z1 + z4;
-
-    /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */
-
-    dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp3,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp10 - tmp3,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp11 + tmp2,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(tmp11 - tmp2,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(tmp12 + tmp1,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp12 - tmp1,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp13 + tmp0,
-                                          CONST_BITS+PASS1_BITS+3);
-    dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp13 - tmp0,
-                                          CONST_BITS+PASS1_BITS+3);
-    
-    dataptr++;                 /* advance pointer to next column */
-  }
-}
diff --git a/libs/idct/mmx32idct.c b/libs/idct/mmx32idct.c
deleted file mode 100644 (file)
index 78bf45b..0000000
+++ /dev/null
@@ -1,783 +0,0 @@
-/* \r
- *  idctmmx32.cpp \r
- *\r
- *     Copyright (C) Alberto Vigata - January 2000 - ultraflask@yahoo.com\r
- *\r
- *  This file is part of FlasKMPEG, a free MPEG to MPEG/AVI converter\r
- *     \r
- *  FlasKMPEG is free software; you can redistribute it and/or modify\r
- *  it under the terms of the GNU General Public License as published by\r
- *  the Free Software Foundation; either version 2, or (at your option)\r
- *  any later version.\r
- *   \r
- *  FlasKMPEG is distributed in the hope that it will be useful,\r
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- *  GNU General Public License for more details.\r
- *   \r
- *  You should have received a copy of the GNU General Public License\r
- *  along with GNU Make; see the file COPYING.  If not, write to\r
- *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
- *\r
- */\r
-\r
-\r
-// MMX32 iDCT algorithm  (IEEE-1180 compliant) :: idct_mmx32()\r
-//\r
-// MPEG2AVI\r
-// --------\r
-//  v0.16B33 initial release\r
-//\r
-// This was one of the harder pieces of work to code.\r
-// Intel's app-note focuses on the numerical issues of the algorithm, but\r
-// assumes the programmer is familiar with IDCT mathematics, leaving the\r
-// form of the complete function up to the programmer's imagination.\r
-//\r
-//  ALGORITHM OVERVIEW\r
-//  ------------------\r
-// I played around with the code for quite a few hours.  I came up\r
-// with *A* working IDCT algorithm, however I'm not sure whether my routine\r
-// is "the correct one."  But rest assured, my code passes all six IEEE \r
-// accuracy tests with plenty of margin.\r
-//\r
-//   My IDCT algorithm consists of 4 steps:\r
-//\r
-//   1) IDCT-row transformation (using the IDCT-row function) on all 8 rows\r
-//      This yields an intermediate 8x8 matrix.\r
-//\r
-//   2) intermediate matrix transpose (mandatory)\r
-//\r
-//   3) IDCT-row transformation (2nd time) on all 8 rows of the intermediate\r
-//      matrix.  The output is the final-result, in transposed form.\r
-//\r
-//   4) post-transformation matrix transpose \r
-//      (not necessary if the input-data is already transposed, this could\r
-//       be done during the MPEG "zig-zag" scan, but since my algorithm\r
-//       requires at least one transpose operation, why not re-use the\r
-//       transpose-code.)\r
-//\r
-//   Although the (1st) and (3rd) steps use the SAME row-transform operation,\r
-//   the (3rd) step uses different shift&round constants (explained later.)\r
-//\r
-//   Also note that the intermediate transpose (2) would not be neccessary,\r
-//   if the subsequent operation were a iDCT-column transformation.  Since\r
-//   we only have the iDCT-row transform, we transpose the intermediate\r
-//   matrix and use the iDCT-row transform a 2nd time.\r
-//\r
-//   I had to change some constants/variables for my method to work :\r
-//\r
-//      As given by Intel, the #defines for SHIFT_INV_COL and RND_INV_COL are\r
-//      wrong.  Not surprising since I'm not using a true column-transform \r
-//      operation, but the row-transform operation (as mentioned earlier.)\r
-//      round_inv_col[], which is given as "4 short" values, should have the\r
-//      same dimensions as round_inv_row[].  The corrected variables are \r
-//      shown.\r
-//\r
-//      Intel's code defines a different table for each each row operation.\r
-//      The tables given are 0/4, 1/7, 2/6, and 5/3.  My code only uses row#0.\r
-//      Using the other rows messes up the overall transform.\r
-//\r
-//   IMPLEMENTATION DETAILs\r
-//   ----------------------\r
-// \r
-//   I divided the algorithm's work into two subroutines,\r
-//    1) idct_mmx32_rows() - transforms 8 rows, then transpose\r
-//    2) idct_mmx32_cols() - transforms 8 rows, then transpose\r
-//       yields final result ("drop-in" direct replacement for INT32 IDCT)\r
-//\r
-//   The 2nd function is a clone of the 1st, with changes made only to the\r
-//   shift&rounding instructions.\r
-//\r
-//      In the 1st function (rows), the shift & round instructions use \r
-//       SHIFT_INV_ROW & round_inv_row[] (renamed to r_inv_row[])\r
-//\r
-//      In the 2nd function (cols)-> r_inv_col[], and\r
-//       SHIFT_INV_COL & round_inv_col[] (renamed to r_inv_col[])\r
-//\r
-//   Each function contains an integrated transpose-operator, which comes\r
-//   AFTER the primary transformation operation.  In the future, I'll optimize\r
-//   the code to do more of the transpose-work "in-place".  Right now, I've\r
-//   left the code as two subroutines and a main calling function, so other\r
-//   people can read the code more easily.\r
-//\r
-//   liaor@umcc.ais.org  http://members.tripod.com/~liaor\r
-//  \r
-\r
-\r
-//;=============================================================================\r
-//;\r
-//;  AP-922   http://developer.intel.com/vtune/cbts/strmsimd\r
-//; These examples contain code fragments for first stage iDCT 8x8\r
-//; (for rows) and first stage DCT 8x8 (for columns)\r
-//;\r
-//;=============================================================================\r
-/*\r
-mword typedef qword\r
-qword ptr equ mword ptr */\r
-\r
-#include <mmx.h>\r
-\r
-#define BITS_INV_ACC   4       //; 4 or 5 for IEEE\r
-       // 5 yields higher accuracy, but lessens dynamic range on the input matrix\r
-#define SHIFT_INV_ROW  (16 - BITS_INV_ACC)\r
-#define SHIFT_INV_COL  (1 + BITS_INV_ACC +14 )  // changed from Intel's val)\r
-//#define SHIFT_INV_COL        (1 + BITS_INV_ACC )\r
-\r
-#define RND_INV_ROW            (1 << (SHIFT_INV_ROW-1))\r
-#define RND_INV_COL            (1 << (SHIFT_INV_COL-1)) \r
-#define RND_INV_CORR   (RND_INV_COL - 1)               //; correction -1.0 and round\r
-//#define RND_INV_ROW          (1024 * (6 - BITS_INV_ACC)) //; 1 << (SHIFT_INV_ROW-1)\r
-//#define RND_INV_COL          (16 * (BITS_INV_ACC - 3)) //; 1 << (SHIFT_INV_COL-1)\r
-\r
-\r
-//.data\r
-//Align 16\r
-const static long r_inv_row[2] = { RND_INV_ROW, RND_INV_ROW};\r
-const static long r_inv_col[2] = {RND_INV_COL, RND_INV_COL};\r
-const static long r_inv_corr[2] = {RND_INV_CORR, RND_INV_CORR };\r
-\r
-//const static short r_inv_col[4] = \r
-//     {RND_INV_COL, RND_INV_COL, RND_INV_COL, RND_INV_COL};\r
-//const static short r_inv_corr[4] =\r
-//     {RND_INV_CORR, RND_INV_CORR, RND_INV_CORR, RND_INV_CORR};\r
-\r
-/* constants for the forward DCT\r
-\r
-//#define BITS_FRW_ACC 3 //; 2 or 3 for accuracy\r
-//#define SHIFT_FRW_COL        BITS_FRW_ACC\r
-//#define SHIFT_FRW_ROW        (BITS_FRW_ACC + 17)\r
-//#define RND_FRW_ROW          (262144 * (BITS_FRW_ACC - 1)) //; 1 << (SHIFT_FRW_ROW-1)\r
-\r
-const static __int64 one_corr = 0x0001000100010001;\r
-const static long r_frw_row[2] = {RND_FRW_ROW, RND_FRW_ROW };\r
-\r
-//const static short tg_1_16[4] = {13036, 13036, 13036, 13036 }; //tg * (2<<16) + 0.5\r
-//const static short tg_2_16[4] = {27146, 27146, 27146, 27146 }; //tg * (2<<16) + 0.5\r
-//const static short tg_3_16[4] = {-21746, -21746, -21746, -21746 }; //tg * (2<<16) + 0.5\r
-//const static short cos_4_16[4] = {-19195, -19195, -19195, -19195 }; //cos * (2<<16) + 0.5\r
-//const static short ocos_4_16[4] = {23170, 23170, 23170, 23170 }; //cos * (2<<15) + 0.5\r
-\r
-//concatenated table, for forward DCT transformation\r
-const static short tg_all_16[] = {\r
-       13036, 13036, 13036, 13036,             // tg * (2<<16) + 0.5\r
-       27146, 27146, 27146, 27146,             //tg * (2<<16) + 0.5\r
-       -21746, -21746, -21746, -21746, // tg * (2<<16) + 0.5\r
-       -19195, -19195, -19195, -19195, //cos * (2<<16) + 0.5\r
-       23170, 23170, 23170, 23170 };   //cos * (2<<15) + 0.5\r
-\r
-#define tg_1_16 (tg_all_16 + 0)\r
-#define tg_2_16 (tg_all_16 + 8)\r
-#define tg_3_16 (tg_all_16 + 16)\r
-#define cos_4_16 (tg_all_16 + 24)\r
-#define ocos_4_16 (tg_all_16 + 32)\r
-*/\r
-/*\r
-;=============================================================================\r
-;\r
-; The first stage iDCT 8x8 - inverse DCTs of rows\r
-;\r
-;-----------------------------------------------------------------------------\r
-; The 8-point inverse DCT direct algorithm\r
-;-----------------------------------------------------------------------------\r
-;\r
-; static const short w[32] = {\r
-; FIX(cos_4_16), FIX(cos_2_16), FIX(cos_4_16), FIX(cos_6_16),\r
-; FIX(cos_4_16), FIX(cos_6_16), -FIX(cos_4_16), -FIX(cos_2_16),\r
-; FIX(cos_4_16), -FIX(cos_6_16), -FIX(cos_4_16), FIX(cos_2_16),\r
-; FIX(cos_4_16), -FIX(cos_2_16), FIX(cos_4_16), -FIX(cos_6_16),\r
-; FIX(cos_1_16), FIX(cos_3_16), FIX(cos_5_16), FIX(cos_7_16),\r
-; FIX(cos_3_16), -FIX(cos_7_16), -FIX(cos_1_16), -FIX(cos_5_16),\r
-; FIX(cos_5_16), -FIX(cos_1_16), FIX(cos_7_16), FIX(cos_3_16),\r
-; FIX(cos_7_16), -FIX(cos_5_16), FIX(cos_3_16), -FIX(cos_1_16) };\r
-;\r
-; #define DCT_8_INV_ROW(x, y)\r
-\r
-;{\r
-; int a0, a1, a2, a3, b0, b1, b2, b3;\r
-;\r
-; a0 =x[0]*w[0]+x[2]*w[1]+x[4]*w[2]+x[6]*w[3];\r
-; a1 =x[0]*w[4]+x[2]*w[5]+x[4]*w[6]+x[6]*w[7];\r
-; a2 = x[0] * w[ 8] + x[2] * w[ 9] + x[4] * w[10] + x[6] * w[11];\r
-; a3 = x[0] * w[12] + x[2] * w[13] + x[4] * w[14] + x[6] * w[15];\r
-; b0 = x[1] * w[16] + x[3] * w[17] + x[5] * w[18] + x[7] * w[19];\r
-; b1 = x[1] * w[20] + x[3] * w[21] + x[5] * w[22] + x[7] * w[23];\r
-; b2 = x[1] * w[24] + x[3] * w[25] + x[5] * w[26] + x[7] * w[27];\r
-; b3 = x[1] * w[28] + x[3] * w[29] + x[5] * w[30] + x[7] * w[31];\r
-;\r
-; y[0] = SHIFT_ROUND ( a0 + b0 );\r
-; y[1] = SHIFT_ROUND ( a1 + b1 );\r
-; y[2] = SHIFT_ROUND ( a2 + b2 );\r
-; y[3] = SHIFT_ROUND ( a3 + b3 );\r
-; y[4] = SHIFT_ROUND ( a3 - b3 );\r
-; y[5] = SHIFT_ROUND ( a2 - b2 );\r
-; y[6] = SHIFT_ROUND ( a1 - b1 );\r
-; y[7] = SHIFT_ROUND ( a0 - b0 );\r
-;}\r
-;\r
-;-----------------------------------------------------------------------------\r
-;\r
-; In this implementation the outputs of the iDCT-1D are multiplied\r
-; for rows 0,4 - by cos_4_16,\r
-; for rows 1,7 - by cos_1_16,\r
-; for rows 2,6 - by cos_2_16,\r
-; for rows 3,5 - by cos_3_16\r
-; and are shifted to the left for better accuracy\r
-;\r
-; For the constants used,\r
-; FIX(float_const) = (short) (float_const * (1<<15) + 0.5)\r
-;\r
-;=============================================================================\r
-;=============================================================================\r
-IF _MMX ; MMX code\r
-;=============================================================================\r
-\r
-//; Table for rows 0,4 - constants are multiplied by cos_4_16\r
-const short tab_i_04[] = {\r
-       16384, 16384, 16384, -16384,    // ; movq-> w06 w04 w02 w00\r
-       21407, 8867, 8867, -21407,              // w07 w05 w03 w01\r
-       16384, -16384, 16384, 16384,    //; w14 w12 w10 w08\r
-       -8867, 21407, -21407, -8867,    //; w15 w13 w11 w09\r
-       22725, 12873, 19266, -22725,    //; w22 w20 w18 w16\r
-       19266, 4520, -4520, -12873,             //; w23 w21 w19 w17\r
-       12873, 4520, 4520, 19266,               //; w30 w28 w26 w24\r
-       -22725, 19266, -12873, -22725 };//w31 w29 w27 w25\r
-\r
-//; Table for rows 1,7 - constants are multiplied by cos_1_16\r
-const short tab_i_17[] = {\r
-       22725, 22725, 22725, -22725,    // ; movq-> w06 w04 w02 w00\r
-       29692, 12299, 12299, -29692,    //      ; w07 w05 w03 w01\r
-       22725, -22725, 22725, 22725,    //; w14 w12 w10 w08\r
-       -12299, 29692, -29692, -12299,  //; w15 w13 w11 w09\r
-       31521, 17855, 26722, -31521,    //; w22 w20 w18 w16\r
-       26722, 6270, -6270, -17855,             //; w23 w21 w19 w17\r
-       17855, 6270, 6270, 26722,               //; w30 w28 w26 w24\r
-       -31521, 26722, -17855, -31521}; // w31 w29 w27 w25\r
-\r
-//; Table for rows 2,6 - constants are multiplied by cos_2_16\r
-const short tab_i_26[] = {\r
-       21407, 21407, 21407, -21407,    // ; movq-> w06 w04 w02 w00\r
-       27969, 11585, 11585, -27969,    // ; w07 w05 w03 w01\r
-       21407, -21407, 21407, 21407,    // ; w14 w12 w10 w08\r
-       -11585, 27969, -27969, -11585,  //  ;w15 w13 w11 w09\r
-       29692, 16819, 25172, -29692,    // ;w22 w20 w18 w16\r
-       25172, 5906, -5906, -16819,     // ;w23 w21 w19 w17\r
-       16819, 5906, 5906, 25172,               // ;w30 w28 w26 w24\r
-       -29692, 25172, -16819, -29692}; //  ;w31 w29 w27 w25\r
-\r
-\r
-//; Table for rows 3,5 - constants are multiplied by cos_3_16\r
-const short tab_i_35[] = {\r
-       19266, 19266, 19266, -19266,    //; movq-> w06 w04 w02 w00\r
-       25172, 10426, 10426, -25172,    //; w07 w05 w03 w01\r
-       19266, -19266, 19266, 19266,    //; w14 w12 w10 w08\r
-       -10426, 25172, -25172, -10426,  //; w15 w13 w11 w09\r
-       26722, 15137, 22654, -26722,    //; w22 w20 w18 w16\r
-       22654, 5315, -5315, -15137,             //; w23 w21 w19 w17\r
-       15137, 5315, 5315, 22654,               //; w30 w28 w26 w24\r
-       -26722, 22654, -15137, -26722}; //; w31 w29 w27 w25\r
-*/\r
-\r
-// CONCATENATED TABLE, rows 0,1,2,3,4,5,6,7 (in order )\r
-//\r
-// In our implementation, however, we only use row0 !\r
-//\r
-static const short tab_i_01234567[] = {\r
-       //row0, this row is required\r
-       16384, 16384, 16384, -16384,    // ; movq-> w06 w04 w02 w00\r
-       21407, 8867, 8867, -21407,              // w07 w05 w03 w01\r
-       16384, -16384, 16384, 16384,    //; w14 w12 w10 w08\r
-       -8867, 21407, -21407, -8867,    //; w15 w13 w11 w09\r
-       22725, 12873, 19266, -22725,    //; w22 w20 w18 w16\r
-       19266, 4520, -4520, -12873,             //; w23 w21 w19 w17\r
-       12873, 4520, 4520, 19266,               //; w30 w28 w26 w24\r
-       -22725, 19266, -12873, -22725,  //w31 w29 w27 w25\r
-\r
-       // the rest of these rows (1-7), aren't used !\r
-\r
-       //row1\r
-       22725, 22725, 22725, -22725,    // ; movq-> w06 w04 w02 w00\r
-       29692, 12299, 12299, -29692,    //      ; w07 w05 w03 w01\r
-       22725, -22725, 22725, 22725,    //; w14 w12 w10 w08\r
-       -12299, 29692, -29692, -12299,  //; w15 w13 w11 w09\r
-       31521, 17855, 26722, -31521,    //; w22 w20 w18 w16\r
-       26722, 6270, -6270, -17855,             //; w23 w21 w19 w17\r
-       17855, 6270, 6270, 26722,               //; w30 w28 w26 w24\r
-       -31521, 26722, -17855, -31521,  // w31 w29 w27 w25\r
-\r
-       //row2\r
-       21407, 21407, 21407, -21407,    // ; movq-> w06 w04 w02 w00\r
-       27969, 11585, 11585, -27969,    // ; w07 w05 w03 w01\r
-       21407, -21407, 21407, 21407,    // ; w14 w12 w10 w08\r
-       -11585, 27969, -27969, -11585,  //  ;w15 w13 w11 w09\r
-       29692, 16819, 25172, -29692,    // ;w22 w20 w18 w16\r
-       25172, 5906, -5906, -16819,     // ;w23 w21 w19 w17\r
-       16819, 5906, 5906, 25172,               // ;w30 w28 w26 w24\r
-       -29692, 25172, -16819, -29692,  //  ;w31 w29 w27 w25\r
-\r
-       //row3\r
-       19266, 19266, 19266, -19266,    //; movq-> w06 w04 w02 w00\r
-       25172, 10426, 10426, -25172,    //; w07 w05 w03 w01\r
-       19266, -19266, 19266, 19266,    //; w14 w12 w10 w08\r
-       -10426, 25172, -25172, -10426,  //; w15 w13 w11 w09\r
-       26722, 15137, 22654, -26722,    //; w22 w20 w18 w16\r
-       22654, 5315, -5315, -15137,             //; w23 w21 w19 w17\r
-       15137, 5315, 5315, 22654,               //; w30 w28 w26 w24\r
-       -26722, 22654, -15137, -26722,  //; w31 w29 w27 w25\r
-\r
-       //row4\r
-       16384, 16384, 16384, -16384,    // ; movq-> w06 w04 w02 w00\r
-       21407, 8867, 8867, -21407,              // w07 w05 w03 w01\r
-       16384, -16384, 16384, 16384,    //; w14 w12 w10 w08\r
-       -8867, 21407, -21407, -8867,    //; w15 w13 w11 w09\r
-       22725, 12873, 19266, -22725,    //; w22 w20 w18 w16\r
-       19266, 4520, -4520, -12873,             //; w23 w21 w19 w17\r
-       12873, 4520, 4520, 19266,               //; w30 w28 w26 w24\r
-       -22725, 19266, -12873, -22725,  //w31 w29 w27 w25\r
-\r
-       //row5\r
-       19266, 19266, 19266, -19266,    //; movq-> w06 w04 w02 w00\r
-       25172, 10426, 10426, -25172,    //; w07 w05 w03 w01\r
-       19266, -19266, 19266, 19266,    //; w14 w12 w10 w08\r
-       -10426, 25172, -25172, -10426,  //; w15 w13 w11 w09\r
-       26722, 15137, 22654, -26722,    //; w22 w20 w18 w16\r
-       22654, 5315, -5315, -15137,             //; w23 w21 w19 w17\r
-       15137, 5315, 5315, 22654,               //; w30 w28 w26 w24\r
-       -26722, 22654, -15137, -26722,  //; w31 w29 w27 w25\r
-\r
-       //row6\r
-       21407, 21407, 21407, -21407,    // ; movq-> w06 w04 w02 w00\r
-       27969, 11585, 11585, -27969,    // ; w07 w05 w03 w01\r
-       21407, -21407, 21407, 21407,    // ; w14 w12 w10 w08\r
-       -11585, 27969, -27969, -11585,  //  ;w15 w13 w11 w09\r
-       29692, 16819, 25172, -29692,    // ;w22 w20 w18 w16\r
-       25172, 5906, -5906, -16819,     // ;w23 w21 w19 w17\r
-       16819, 5906, 5906, 25172,               // ;w30 w28 w26 w24\r
-       -29692, 25172, -16819, -29692,  //  ;w31 w29 w27 w25\r
-\r
-       //row7\r
-       22725, 22725, 22725, -22725,    // ; movq-> w06 w04 w02 w00\r
-       29692, 12299, 12299, -29692,    //      ; w07 w05 w03 w01\r
-       22725, -22725, 22725, 22725,    //; w14 w12 w10 w08\r
-       -12299, 29692, -29692, -12299,  //; w15 w13 w11 w09\r
-       31521, 17855, 26722, -31521,    //; w22 w20 w18 w16\r
-       26722, 6270, -6270, -17855,             //; w23 w21 w19 w17\r
-       17855, 6270, 6270, 26722,               //; w30 w28 w26 w24\r
-       -31521, 26722, -17855, -31521}; // w31 w29 w27 w25\r
-\r
-\r
-#define INP eax                // pointer to (short *blk)\r
-#define OUT ecx                // pointer to output (temporary store space qwTemp[])\r
-#define TABLE ebx      // pointer to tab_i_01234567[]\r
-#define round_inv_row edx\r
-#define round_inv_col edx\r
-\r
-#define ROW_STRIDE 8 // for 8x8 matrix transposer\r
-\r
-// private variables and functions\r
-\r
-//temporary storage space, 8x8 of shorts\r
-\r
-__inline static void idct_mmx32_rows( short *blk ); // transform rows\r
-__inline static void idct_mmx32_cols( short *blk ); // transform "columns"\r
-       // the "column" transform actually transforms rows, it is\r
-       // identical to the row-transform except for the ROUNDING\r
-       // and SHIFTING coefficients.\r
-\r
\r
-static void \r
-idct_mmx32_rows( short *blk )  // transform all 8 rows of 8x8 iDCT block\r
-{\r
-  int x;\r
-  short qwTemp[64];\r
-  short *out = &qwTemp[0];\r
-  short *inptr = blk;\r
-  // this subroutine performs two operations\r
-  // 1) iDCT row transform\r
-  //           for( i = 0; i < 8; ++ i)\r
-  //                   DCT_8_INV_ROW_1( blk[i*8], qwTemp[i] );\r
-  //\r
-  // 2) transpose the matrix (which was stored in qwTemp[])\r
-  //        qwTemp[] -> [8x8 matrix transpose] -> blk[]\r
-\r
-  for (x=0; x<8; x++) {  // transform one row per iteration\r
-        movq_m2r(*(inptr), mm0);               // 0 ; x3 x2 x1 x0\r
-\r
-        movq_m2r(*(inptr+4), mm1);     // 1 ; x7 x6 x5 x4\r
-        movq_r2r(mm0, mm2);                            // 2 ; x3 x2 x1 x0\r
-\r
-        movq_m2r(*(tab_i_01234567), mm3);      // 3 ; w06 w04 w02 w00\r
-        punpcklwd_r2r(mm1, mm0);                       // x5 x1 x4 x0\r
-\r
-    // ----------\r
-        movq_r2r(mm0, mm5);                                    // 5 ; x5 x1 x4 x0\r
-        punpckldq_r2r(mm0, mm0);                       // x4 x0 x4 x0\r
-\r
-        movq_m2r(*(tab_i_01234567+4), mm4);    // 4 ; w07 w05 w03 w01\r
-        punpckhwd_r2r(mm1, mm2);                       // 1 ; x7 x3 x6 x2\r
-\r
-        pmaddwd_r2r(mm0, mm3);                         // x4*w06+x0*w04 x4*w02+x0*w00\r
-        movq_r2r(mm2, mm6);                            // 6 ; x7 x3 x6 x2\r
-\r
-        movq_m2r(*(tab_i_01234567+16), mm1);// 1 ; w22 w20 w18 w16\r
-        punpckldq_r2r(mm2, mm2);                       // x6 x2 x6 x2\r
-\r
-        pmaddwd_r2r(mm2, mm4);                         // x6*w07+x2*w05 x6*w03+x2*w01\r
-        punpckhdq_r2r(mm5, mm5);                       // x5 x1 x5 x1\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+8), mm0);// x4*w14+x0*w12 x4*w10+x0*w08\r
-        punpckhdq_r2r(mm6, mm6);                       // x7 x3 x7 x3\r
-\r
-        movq_m2r(*(tab_i_01234567+20), mm7);// 7 ; w23 w21 w19 w17\r
-        pmaddwd_r2r(mm5, mm1);                         // x5*w22+x1*w20 x5*w18+x1*w16\r
-\r
-        paddd_m2r(*(r_inv_row), mm3);// +rounder\r
-        pmaddwd_r2r(mm6, mm7);                         // x7*w23+x3*w21 x7*w19+x3*w17\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+12), mm2);// x6*w15+x2*w13 x6*w11+x2*w09\r
-        paddd_r2r(mm4, mm3);                           // 4 ; a1=sum(even1) a0=sum(even0)\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+24), mm5);// x5*w30+x1*w28 x5*w26+x1*w24\r
-        movq_r2r(mm3, mm4);                            // 4 ; a1 a0\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+28), mm6);// x7*w31+x3*w29 x7*w27+x3*w25\r
-        paddd_r2r(mm7, mm1);                           // 7 ; b1=sum(odd1) b0=sum(odd0)\r
-\r
-        paddd_m2r(*(r_inv_row), mm0);// +rounder\r
-        psubd_r2r(mm1, mm3);                           // a1-b1 a0-b0\r
-\r
-        psrad_i2r(SHIFT_INV_ROW, mm3);         // y6=a1-b1 y7=a0-b0\r
-        paddd_r2r(mm4, mm1);                           // 4 ; a1+b1 a0+b0\r
-\r
-        paddd_r2r(mm2, mm0);                           // 2 ; a3=sum(even3) a2=sum(even2)\r
-        psrad_i2r(SHIFT_INV_ROW, mm1);         // y1=a1+b1 y0=a0+b0\r
-\r
-        paddd_r2r(mm6, mm5);                           // 6 ; b3=sum(odd3) b2=sum(odd2)\r
-        movq_r2r(mm0, mm4);                            // 4 ; a3 a2\r
-\r
-        paddd_r2r(mm5, mm0);                           // a3+b3 a2+b2\r
-        psubd_r2r(mm5, mm4);                           // 5 ; a3-b3 a2-b2\r
-\r
-        psrad_i2r(SHIFT_INV_ROW, mm4);         // y4=a3-b3 y5=a2-b2\r
-        psrad_i2r(SHIFT_INV_ROW, mm0);         // y3=a3+b3 y2=a2+b2\r
-\r
-        packssdw_r2r(mm3, mm4);                                // 3 ; y6 y7 y4 y5\r
-\r
-        packssdw_r2r(mm0, mm1);                                // 0 ; y3 y2 y1 y0\r
-        movq_r2r(mm4, mm7);                            // 7 ; y6 y7 y4 y5\r
-\r
-        psrld_i2r(16, mm4);                                    // 0 y6 0 y4\r
-\r
-        movq_r2m(mm1, *(out)); // 1 ; save y3 y2 y1 y0\r
-        pslld_i2r(16, mm7);                                    // y7 0 y5 0\r
-\r
-        por_r2r(mm4, mm7);                                     // 4 ; y7 y6 y5 y4\r
-\r
-   // begin processing row 1\r
-        movq_r2m(mm7, *(out+4));       // 7 ; save y7 y6 y5 y4\r
-\r
-        inptr += 8;\r
-        out += 8;\r
-  }\r
-        \r
-\r
-       // done with the iDCT row-transformation\r
-\r
-       // now we have to transpose the output 8x8 matrix\r
-       // 8x8 (OUT) -> 8x8't' (IN)\r
-       // the transposition is implemented as 4 sub-operations.\r
-       // 1) transpose upper-left quad\r
-       // 2) transpose lower-right quad\r
-       // 3) transpose lower-left quad\r
-       // 4) transpose upper-right quad\r
-\r
\r
-       // mm0 = 1st row [ A B C D ] row1\r
-       // mm1 = 2nd row [ E F G H ] 2\r
-       // mm2 = 3rd row [ I J K L ] 3\r
-       // mm3 = 4th row [ M N O P ] 4\r
-\r
-       // 1) transpose upper-left quad\r
-  out = &qwTemp[0];\r
-\r
-  movq_m2r(*(out + ROW_STRIDE * 0), mm0);\r
-\r
-  movq_m2r(*(out + ROW_STRIDE * 1), mm1);\r
-  movq_r2r(mm0, mm4);  // mm4 = copy of row1[A B C D]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE * 2), mm2);\r
-  punpcklwd_r2r(mm1, mm0); // mm0 = [ 0 4 1 5]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE * 3), mm3);\r
-  punpckhwd_r2r(mm1, mm4); // mm4 = [ 2 6 3 7]\r
-\r
-  movq_r2r(mm2, mm6);\r
-  punpcklwd_r2r(mm3, mm2);     // mm2 = [ 8 12 9 13]\r
-\r
-  punpckhwd_r2r(mm3, mm6);     // mm6 = 10 14 11 15]\r
-  movq_r2r(mm0, mm1);  // mm1 = [ 0 4 1 5]\r
-\r
-  inptr = blk;\r
-\r
-  punpckldq_r2r(mm2, mm0);     // final result mm0 = row1 [0 4 8 12]\r
-\r
-  movq_r2r(mm4, mm3);  // mm3 = [ 2 6 3 7]\r
-  punpckhdq_r2r(mm2, mm1); // mm1 = final result mm1 = row2 [1 5 9 13]\r
-\r
-  movq_r2m(mm0, *(inptr + ROW_STRIDE * 0)); // store row 1\r
-  punpckldq_r2r(mm6, mm4); // final result mm4 = row3 [2 6 10 14]\r
-\r
-// begin reading next quadrant (lower-right)\r
-  movq_m2r(*(out + ROW_STRIDE*4 + 4), mm0); \r
-  punpckhdq_r2r(mm6, mm3); // final result mm3 = row4 [3 7 11 15]\r
-\r
-  movq_r2m(mm4, *(inptr + ROW_STRIDE * 2)); // store row 3\r
-  movq_r2r(mm0, mm4);  // mm4 = copy of row1[A B C D]\r
-\r
-  movq_r2m(mm1, *(inptr + ROW_STRIDE * 1)); // store row 2\r
-\r
-  movq_m2r(*(out + ROW_STRIDE*5 + 4), mm1);\r
-\r
-  movq_r2m(mm3, *(inptr + ROW_STRIDE * 3)); // store row 4\r
-  punpcklwd_r2r(mm1, mm0); // mm0 = [ 0 4 1 5]\r
-\r
-       // 2) transpose lower-right quadrant\r
-\r
-//     movq mm0, qword ptr [OUT + ROW_STRIDE*4 + 8]\r
-\r
-//     movq mm1, qword ptr [OUT + ROW_STRIDE*5 + 8]\r
-//      movq mm4, mm0; // mm4 = copy of row1[A B C D]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE*6 + 4), mm2);\r
-//      punpcklwd mm0, mm1; // mm0 = [ 0 4 1 5]\r
-  punpckhwd_r2r(mm1, mm4); // mm4 = [ 2 6 3 7]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE*7 + 4), mm3);\r
-  movq_r2r(mm2, mm6);\r
-\r
-  punpcklwd_r2r(mm3, mm2);     // mm2 = [ 8 12 9 13]\r
-  movq_r2r(mm0, mm1);  // mm1 = [ 0 4 1 5]\r
-\r
-  punpckhwd_r2r(mm3, mm6);     // mm6 = 10 14 11 15]\r
-  movq_r2r(mm4, mm3);  // mm3 = [ 2 6 3 7]\r
-\r
-  punpckldq_r2r(mm2, mm0);     // final result mm0 = row1 [0 4 8 12]\r
-\r
-  punpckhdq_r2r(mm2, mm1); // mm1 = final result mm1 = row2 [1 5 9 13]\r
-  ; // slot\r
-\r
-  movq_r2m(mm0, *(inptr + ROW_STRIDE*4 + 4)); // store row 1\r
-  punpckldq_r2r(mm6, mm4); // final result mm4 = row3 [2 6 10 14]\r
-\r
-  movq_m2r(*(out + ROW_STRIDE * 4 ), mm0);\r
-  punpckhdq_r2r(mm6, mm3); // final result mm3 = row4 [3 7 11 15]\r
-  \r
-  movq_r2m(mm4, *(inptr + ROW_STRIDE*6 + 4)); // store row 3\r
-  movq_r2r(mm0, mm4);  // mm4 = copy of row1[A B C D]\r
-\r
-  movq_r2m(mm1, *(inptr + ROW_STRIDE*5 + 4)); // store row 2\r
-  ; // slot\r
-  \r
-  movq_m2r(*(out + ROW_STRIDE * 5 ), mm1);\r
-  ; // slot\r
-\r
-  movq_r2m(mm3, *(inptr + ROW_STRIDE*7 + 4)); // store row 4\r
-  punpcklwd_r2r(mm1, mm0); // mm0 = [ 0 4 1 5]\r
-\r
-  // 3) transpose lower-left\r
-//     movq mm0, qword ptr [OUT + ROW_STRIDE * 4 ]\r
-\r
-//     movq mm1, qword ptr [OUT + ROW_STRIDE * 5 ]\r
-//      movq mm4, mm0; // mm4 = copy of row1[A B C D]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE * 6 ), mm2);\r
-//      punpcklwd mm0, mm1; // mm0 = [ 0 4 1 5]\r
-  punpckhwd_r2r(mm1, mm4); // mm4 = [ 2 6 3 7]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE * 7 ), mm3);\r
-  movq_r2r(mm2, mm6);\r
-\r
-  punpcklwd_r2r(mm3, mm2);     // mm2 = [ 8 12 9 13]\r
-  movq_r2r(mm0, mm1);  // mm1 = [ 0 4 1 5]\r
-\r
-  punpckhwd_r2r(mm3, mm6);     // mm6 = 10 14 11 15]\r
-  movq_r2r(mm4, mm3);  // mm3 = [ 2 6 3 7]\r
-\r
-  punpckldq_r2r(mm2, mm0);     // final result mm0 = row1 [0 4 8 12]\r
-\r
-  punpckhdq_r2r(mm2, mm1); // mm1 = final result mm1 = row2 [1 5 9 13]\r
-  ;//slot\r
-\r
-  movq_r2m(mm0, *(inptr + ROW_STRIDE * 0 + 4 )); // store row 1\r
-  punpckldq_r2r(mm6, mm4); // final result mm4 = row3 [2 6 10 14]\r
-\r
-// begin reading next quadrant (upper-right)\r
-  movq_m2r(*(out + ROW_STRIDE*0 + 4), mm0);\r
-  punpckhdq_r2r(mm6, mm3); // final result mm3 = row4 [3 7 11 15]\r
-\r
-  movq_r2m(mm4, *(inptr + ROW_STRIDE * 2 + 4)); // store row 3\r
-  movq_r2r(mm0, mm4);  // mm4 = copy of row1[A B C D]\r
-\r
-  movq_r2m(mm1, *(inptr + ROW_STRIDE * 1 + 4)); // store row 2\r
-  movq_m2r(*(out + ROW_STRIDE*1 + 4), mm1);\r
-\r
-  movq_r2m(mm3, *(inptr + ROW_STRIDE * 3 + 4)); // store row 4\r
-  punpcklwd_r2r(mm1, mm0); // mm0 = [ 0 4 1 5]\r
-\r
-\r
-       // 2) transpose lower-right quadrant\r
-\r
-//     movq mm0, qword ptr [OUT + ROW_STRIDE*4 + 8]\r
-\r
-//     movq mm1, qword ptr [OUT + ROW_STRIDE*5 + 8]\r
-//      movq mm4, mm0; // mm4 = copy of row1[A B C D]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE*2 + 4), mm2);\r
-//      punpcklwd mm0, mm1; // mm0 = [ 0 4 1 5]\r
-  punpckhwd_r2r(mm1, mm4); // mm4 = [ 2 6 3 7]\r
-       \r
-  movq_m2r(*(out + ROW_STRIDE*3 + 4), mm3);\r
-  movq_r2r(mm2, mm6);\r
-\r
-  punpcklwd_r2r(mm3, mm2);     // mm2 = [ 8 12 9 13]\r
-  movq_r2r(mm0, mm1);  // mm1 = [ 0 4 1 5]\r
-\r
-  punpckhwd_r2r(mm3, mm6);     // mm6 = 10 14 11 15]\r
-  movq_r2r(mm4, mm3);  // mm3 = [ 2 6 3 7]\r
-\r
-  punpckldq_r2r(mm2, mm0);     // final result mm0 = row1 [0 4 8 12]\r
-\r
-  punpckhdq_r2r(mm2, mm1); // mm1 = final result mm1 = row2 [1 5 9 13]\r
-  ; // slot\r
-\r
-  movq_r2m(mm0, *(inptr + ROW_STRIDE*4)); // store row 1\r
-  punpckldq_r2r(mm6, mm4); // final result mm4 = row3 [2 6 10 14]\r
-\r
-  movq_r2m(mm1, *(inptr + ROW_STRIDE*5)); // store row 2\r
-  punpckhdq_r2r(mm6, mm3); // final result mm3 = row4 [3 7 11 15]\r
-\r
-  movq_r2m(mm4, *(inptr + ROW_STRIDE*6)); // store row 3\r
-  ; // slot\r
-\r
-  movq_r2m(mm3, *(inptr + ROW_STRIDE*7)); // store row 4\r
-  ; // slot\r
\r
-}\r
-\r
-\r
-static void \r
-idct_mmx32_cols( short *blk )  // transform all 8 cols of 8x8 iDCT block\r
-{\r
-  int x;\r
-  short *inptr = blk;\r
-\r
-       // Despite the function's name, the matrix is transformed\r
-       // row by row.  This function is identical to idct_mmx32_rows(),\r
-       // except for the SHIFT amount and ROUND_INV amount.\r
-\r
-       // this subroutine performs two operations\r
-       // 1) iDCT row transform\r
-       //              for( i = 0; i < 8; ++ i)\r
-       //                      DCT_8_INV_ROW_1( blk[i*8], qwTemp[i] );\r
-       //\r
-       // 2) transpose the matrix (which was stored in qwTemp[])\r
-       //        qwTemp[] -> [8x8 matrix transpose] -> blk[]\r
-\r
-\r
-  for (x=0; x<8; x++) {  // transform one row per iteration\r
-\r
-    movq_m2r(*(inptr), mm0);           // 0 ; x3 x2 x1 x0\r
-\r
-    movq_m2r(*(inptr+4), mm1); // 1 ; x7 x6 x5 x4\r
-        movq_r2r(mm0, mm2);                            // 2 ; x3 x2 x1 x0\r
-\r
-        movq_m2r(*(tab_i_01234567), mm3);      // 3 ; w06 w04 w02 w00\r
-        punpcklwd_r2r(mm1, mm0);                       // x5 x1 x4 x0\r
-\r
-// ----------\r
-        movq_r2r(mm0, mm5);                                    // 5 ; x5 x1 x4 x0\r
-        punpckldq_r2r(mm0, mm0);                       // x4 x0 x4 x0\r
-\r
-        movq_m2r(*(tab_i_01234567+4), mm4);    // 4 ; w07 w05 w03 w01\r
-        punpckhwd_r2r(mm1, mm2);                       // 1 ; x7 x3 x6 x2\r
-\r
-        pmaddwd_r2r(mm0, mm3);                         // x4*w06+x0*w04 x4*w02+x0*w00\r
-        movq_r2r(mm2, mm6);                            // 6 ; x7 x3 x6 x2\r
-\r
-        movq_m2r(*(tab_i_01234567+16), mm1);// 1 ; w22 w20 w18 w16\r
-        punpckldq_r2r(mm2, mm2);                       // x6 x2 x6 x2\r
-\r
-        pmaddwd_r2r(mm2, mm4);                         // x6*w07+x2*w05 x6*w03+x2*w01\r
-        punpckhdq_r2r(mm5, mm5);                       // x5 x1 x5 x1\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+8), mm0);// x4*w14+x0*w12 x4*w10+x0*w08\r
-        punpckhdq_r2r(mm6, mm6);                       // x7 x3 x7 x3\r
-\r
-        movq_m2r(*(tab_i_01234567+20), mm7);// 7 ; w23 w21 w19 w17\r
-        pmaddwd_r2r(mm5, mm1);                         // x5*w22+x1*w20 x5*w18+x1*w16\r
-\r
-        paddd_m2r(*(r_inv_col), mm3);// +rounder\r
-        pmaddwd_r2r(mm6, mm7);                         // x7*w23+x3*w21 x7*w19+x3*w17\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+12), mm2);// x6*w15+x2*w13 x6*w11+x2*w09\r
-        paddd_r2r(mm4, mm3);                           // 4 ; a1=sum(even1) a0=sum(even0)\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+24), mm5);// x5*w30+x1*w28 x5*w26+x1*w24\r
-        movq_r2r(mm3, mm4);                            // 4 ; a1 a0\r
-\r
-        pmaddwd_m2r(*(tab_i_01234567+28), mm6);// x7*w31+x3*w29 x7*w27+x3*w25\r
-        paddd_r2r(mm7, mm1);                           // 7 ; b1=sum(odd1) b0=sum(odd0)\r
-\r
-        paddd_m2r(*(r_inv_col), mm0);// +rounder\r
-        psubd_r2r(mm1, mm3);                           // a1-b1 a0-b0\r
-\r
-        psrad_i2r(SHIFT_INV_COL, mm3);         // y6=a1-b1 y7=a0-b0\r
-        paddd_r2r(mm4, mm1);                           // 4 ; a1+b1 a0+b0\r
-\r
-        paddd_r2r(mm2, mm0);                           // 2 ; a3=sum(even3) a2=sum(even2)\r
-        psrad_i2r(SHIFT_INV_COL, mm1);         // y1=a1+b1 y0=a0+b0\r
-\r
-        paddd_r2r(mm6, mm5);                           // 6 ; b3=sum(odd3) b2=sum(odd2)\r
-        movq_r2r(mm0, mm4);                            // 4 ; a3 a2\r
-\r
-        paddd_r2r(mm5, mm0);                           // a3+b3 a2+b2\r
-        psubd_r2r(mm5, mm4);                           // 5 ; a3-b3 a2-b2\r
-\r
-\r
-        psrad_i2r(SHIFT_INV_COL, mm4);         // y4=a3-b3 y5=a2-b2\r
-        psrad_i2r(SHIFT_INV_COL, mm0);         // y3=a3+b3 y2=a2+b2\r
-\r
-        packssdw_r2r(mm3, mm4);                                // 3 ; y6 y7 y4 y5\r
-\r
-        packssdw_r2r(mm0, mm1);                                // 0 ; y3 y2 y1 y0\r
-        movq_r2r(mm4, mm7);                            // 7 ; y6 y7 y4 y5\r
-\r
-        psrld_i2r(16, mm4);                                    // 0 y6 0 y4\r
-\r
-        movq_r2m(mm1, *(inptr));       // 1 ; save y3 y2 y1 y0\r
-        pslld_i2r(16, mm7);                                    // y7 0 y5 0\r
-\r
-        por_r2r(mm4, mm7);                                     // 4 ; y7 y6 y5 y4\r
-\r
-   // begin processing row 1\r
-        movq_r2m(mm7, *(inptr+4));     // 7 ; save y7 y6 y5 y4\r
-\r
-        inptr += 8;\r
-  }\r
-  // done with the iDCT column-transformation\r
-}\r
-\r
-//     \r
-// public interface to MMX32 IDCT 8x8 operation\r
-//\r
-void\r
-gst_idct_mmx32_idct( short *blk )\r
-{\r
-       // 1) iDCT row transformation\r
-       idct_mmx32_rows( blk ); // 1) transform iDCT row, and transpose\r
-\r
-       // 2) iDCT column transformation\r
-       idct_mmx32_cols( blk ); // 2) transform iDCT row, and transpose\r
-\r
-       emms();  // restore processor state\r
-       // all done\r
-}\r
diff --git a/libs/idct/mmxidct.S b/libs/idct/mmxidct.S
deleted file mode 100644 (file)
index 1b15be5..0000000
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- * the input data is tranposed and each 16 bit element in the 8x8 matrix
- * is left aligned:
- * for example in 11...1110000 format
- * If the iDCT is of I macroblock then 0.5 needs to be added to the;DC Component
- * (element[0][0] of the matrix)
- *
- * Notes:
- *  - the scratchN variables should be put on the stack to avoid
- *    reentrancy problems
- */
-
-#ifdef PIC
-#define pic_offset(a) a@GOTOFF(%ebx)
-#else
-#define pic_offset(a) a
-#endif
-
-/* extrn re_matrix */
-
-.data
-       .align 16
-       .type    preSC,@object
-preSC:  .short  16384,22725,21407,19266,16384,12873,8867,4520
-        .short  22725,31521,29692,26722,22725,17855,12299,6270
-        .short  21407,29692,27969,25172,21407,16819,11585,5906
-        .short  19266,26722,25172,22654,19266,15137,10426,5315
-        .short  16384,22725,21407,19266,16384,12873,8867,4520
-        .short  12873,17855,16819,15137,25746,20228,13933,7103
-        .short  17734,24598,23170,20853,17734,13933,9597,4892
-        .short  18081,25080,23624,21261,18081,14206,9785,4988
-       .size    preSC,128
-       .align 8
-       .type   x0005000200010001,@object
-       .size   x0005000200010001,8
-x0005000200010001:
-       .long   0x00010001,0x00050002
-       .align 8
-       .type   x0040000000000000,@object
-       .size   x0040000000000000,8
-x0040000000000000:
-       .long   0, 0x00400000
-       .align 8
-       .type   x5a825a825a825a82,@object
-       .size   x5a825a825a825a82,8
-x5a825a825a825a82:
-       .long   0x5a825a82, 0x5a825a82
-       .align 8
-       .type   x539f539f539f539f,@object
-       .size   x539f539f539f539f,8
-x539f539f539f539f:
-       .long   0x539f539f,0x539f539f
-       .align 8
-       .type   x4546454645464546,@object
-       .size   x4546454645464546,8
-x4546454645464546:
-       .long   0x45464546,0x45464546
-       .align 8
-       .type   x61f861f861f861f8,@object
-       .size   x61f861f861f861f8,8
-x61f861f861f861f8:
-       .long   0x61f861f8,0x61f861f8
-       .type   x0004000000000000,@object
-       .size   x0004000000000000,8
-x0004000000000000:
-       .long   0x00000000,0x00040000
-       .type   x0000000000000004,@object
-       .size   x0000000000000004,8
-x0000000000000004:
-       .long   0x00000004,0x00000000
-       .align 8
-       .type    scratch1,@object
-       .size    scratch1,8
-scratch1:
-       .long 0,0
-       .align 8
-       .type    scratch3,@object
-       .size    scratch3,8
-scratch3:
-       .long 0,0
-       .align 8
-       .type    scratch5,@object
-       .size    scratch5,8
-scratch5:
-       .long 0,0
-       .align 8
-       .type    scratch7,@object
-       .size    scratch7,8
-scratch7:
-       .long 0,0
-       .type    x0,@object
-       .size    x0,8
-x0:
-       .long 0,0
-       .align 8
-.text
-       .align 4
-.globl gst_idct_mmx_idct
-       .type    gst_idct_mmx_idct,@function
-gst_idct_mmx_idct:
-       pushl %ebp
-       movl %esp,%ebp
-       pushl %ebx
-       pushl %ecx
-       pushl %edx
-       pushl %esi
-       pushl %edi
-#ifdef PIC
-       call here
-here:  popl %ebx
-       addl $_GLOBAL_OFFSET_TABLE_+[.-here],%ebx
-#endif
-       movl 8(%ebp),%esi               /* source matrix */
-       movq (%esi), %mm0
-       paddw pic_offset(x0000000000000004), %mm0
-       movq 8(%esi), %mm1
-       psllw $4, %mm0
-       movq 16(%esi), %mm2
-       psllw $4, %mm1
-       movq 24(%esi), %mm3
-       psllw $4, %mm2
-       movq 32(%esi), %mm4
-       psllw $4, %mm3
-       movq 40(%esi), %mm5
-       psllw $4, %mm4
-       movq 48(%esi), %mm6
-       psllw $4, %mm5
-       movq 56(%esi), %mm7
-       psllw $4, %mm6
-       psllw $4, %mm7
-       movq %mm0,  (%esi)
-       movq %mm1, 8(%esi)
-       movq %mm2,16(%esi)
-       movq %mm3,24(%esi)
-       movq %mm4,32(%esi)
-       movq %mm5,40(%esi)
-       movq %mm6,48(%esi)
-       movq %mm7,56(%esi)
-       movq 64(%esi), %mm0
-       movq 72(%esi), %mm1
-       psllw $4, %mm0
-       movq 80(%esi), %mm2
-       psllw $4, %mm1
-       movq 88(%esi), %mm3
-       psllw $4, %mm2
-       movq 96(%esi), %mm4
-       psllw $4, %mm3
-       movq 104(%esi), %mm5
-       psllw $4, %mm4
-       movq 112(%esi), %mm6
-       psllw $4, %mm5
-       movq 120(%esi), %mm7
-       psllw $4, %mm6
-       psllw $4, %mm7
-       movq %mm0,64(%esi)
-       movq %mm1,72(%esi)
-       movq %mm2,80(%esi)
-       movq %mm3,88(%esi)
-       movq %mm4,96(%esi)
-       movq %mm5,104(%esi)
-       movq %mm6,112(%esi)
-       movq %mm7,120(%esi)
-       leal pic_offset(preSC), %ecx
-/* column 0: even part
- * use V4, V12, V0, V8 to produce V22..V25
- */
-       movq 8*12(%ecx), %mm0   /* maybe the first mul can be done together */
-                               /* with the dequantization in iHuff module */
-       pmulhw 8*12(%esi), %mm0         /* V12 */
-       movq 8*4(%ecx), %mm1
-       pmulhw 8*4(%esi), %mm1          /* V4 */
-       movq (%ecx), %mm3
-       psraw $1, %mm0                  /* t64=t66 */
-       pmulhw (%esi), %mm3             /* V0 */
-       movq 8*8(%ecx), %mm5            /* duplicate V4 */
-       movq %mm1, %mm2                 /* added 11/1/96 */
-       pmulhw 8*8(%esi),%mm5           /* V8 */
-       psubsw %mm0, %mm1               /* V16 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm1      /* 23170 ->V18 */
-       paddsw %mm0, %mm2               /* V17 */
-       movq %mm2, %mm0                 /* duplicate V17 */
-       psraw $1, %mm2                  /* t75=t82 */
-       psraw $2, %mm0                  /* t72 */
-       movq %mm3, %mm4                 /* duplicate V0 */
-       paddsw %mm5, %mm3               /* V19 */
-       psubsw %mm5, %mm4               /* V20 ;mm5 free */
-/* moved from the block below */
-       movq 8*10(%ecx), %mm7
-       psraw $1, %mm3                  /* t74=t81 */
-       movq %mm3, %mm6                 /* duplicate t74=t81 */
-       psraw $2, %mm4                  /* t77=t79 */
-       psubsw %mm0, %mm1               /* V21 ; mm0 free */
-       paddsw %mm2, %mm3               /* V22 */
-       movq %mm1, %mm5                 /* duplicate V21 */
-       paddsw %mm4, %mm1               /* V23 */
-       movq %mm3, 8*4(%esi)            /* V22 */
-       psubsw %mm5, %mm4               /* V24; mm5 free */
-       movq %mm1, 8*12(%esi)           /* V23 */
-       psubsw %mm2, %mm6               /* V25; mm2 free */
-       movq %mm4, (%esi)               /* V24 */
-/* keep mm6 alive all along the next block */
-       /* movq %mm6, 8*8(%esi)         V25 */
-/* column 0: odd part
- * use V2, V6, V10, V14 to produce V31, V39, V40, V41
- */
-/* moved above: movq 8*10(%ecx), %mm7 */
-
-       pmulhw 8*10(%esi), %mm7         /* V10 */
-       movq 8*6(%ecx), %mm0
-       pmulhw 8*6(%esi), %mm0          /* V6 */
-       movq 8*2(%ecx), %mm5
-       movq %mm7, %mm3                 /* duplicate V10 */
-       pmulhw 8*2(%esi), %mm5          /* V2 */
-       movq 8*14(%ecx), %mm4
-       psubsw %mm0, %mm7               /* V26 */
-       pmulhw 8*14(%esi), %mm4         /* V14 */
-       paddsw %mm0, %mm3               /* V29 ; free mm0 */
-       movq %mm7, %mm1                 /* duplicate V26 */
-       psraw $1, %mm3                  /* t91=t94 */
-       pmulhw pic_offset(x539f539f539f539f),%mm7       /* V33 */
-       psraw $1, %mm1                  /* t96 */
-       movq %mm5, %mm0                 /* duplicate V2 */
-       psraw $2, %mm4                  /* t85=t87 */
-       paddsw %mm4,%mm5                /* V27 */
-       psubsw %mm4, %mm0               /* V28 ; free mm4 */
-       movq %mm0, %mm2                 /* duplicate V28 */
-       psraw $1, %mm5                  /* t90=t93 */
-       pmulhw pic_offset(x4546454645464546),%mm0       /* V35 */
-       psraw $1, %mm2                  /* t97 */
-       movq %mm5, %mm4                 /* duplicate t90=t93 */
-       psubsw %mm2, %mm1               /* V32 ; free mm2 */
-       pmulhw pic_offset(x61f861f861f861f8),%mm1       /* V36 */
-       psllw $1, %mm7                  /* t107 */
-       paddsw %mm3, %mm5               /* V31 */
-       psubsw %mm3, %mm4               /* V30 ; free mm3 */
-       pmulhw pic_offset(x5a825a825a825a82),%mm4       /* V34 */
-       nop
-       psubsw %mm1, %mm0               /* V38 */
-       psubsw %mm7, %mm1               /* V37 ; free mm7 */
-       psllw $1, %mm1                  /* t114 */
-/* move from the next block */
-       movq %mm6, %mm3                 /* duplicate V25 */
-/* move from the next block */
-       movq 8*4(%esi), %mm7            /* V22 */
-       psllw $1, %mm0                  /* t110 */
-       psubsw %mm5, %mm0               /* V39 (mm5 needed for next block) */
-       psllw $2, %mm4                  /* t112 */
-/* moved from the next block */
-       movq 8*12(%esi), %mm2           /* V23 */
-       psubsw %mm0, %mm4               /* V40 */
-       paddsw %mm4, %mm1               /* V41; free mm0 */
-/* moved from the next block */
-       psllw $1, %mm2                  /* t117=t125 */
-/* column 0: output butterfly */
-/* moved above:
- * movq %mm6, %mm3                     duplicate V25
- * movq 8*4(%esi), %mm7                        V22
- * movq 8*12(%esi), %mm2               V23
- * psllw $1, %mm2                      t117=t125
- */
-       psubsw %mm1, %mm6               /* tm6 */
-       paddsw %mm1, %mm3               /* tm8; free mm1 */
-       movq %mm7, %mm1                 /* duplicate V22 */
-       paddsw %mm5, %mm7               /* tm0 */
-       movq %mm3, 8*8(%esi)            /* tm8; free mm3 */
-       psubsw %mm5, %mm1               /* tm14; free mm5 */
-       movq %mm6, 8*6(%esi)            /* tm6; free mm6 */
-       movq %mm2, %mm3                 /* duplicate t117=t125 */
-       movq (%esi), %mm6               /* V24 */
-       paddsw %mm0, %mm2               /* tm2 */
-       movq %mm7, (%esi)               /* tm0; free mm7 */
-       psubsw %mm0, %mm3               /* tm12; free mm0 */
-       movq %mm1, 8*14(%esi)           /* tm14; free mm1 */
-       psllw $1, %mm6                  /* t119=t123 */
-       movq %mm2, 8*2(%esi)            /* tm2; free mm2 */
-       movq %mm6, %mm0                 /* duplicate t119=t123 */
-       movq %mm3, 8*12(%esi)           /* tm12; free mm3 */
-       paddsw %mm4, %mm6               /* tm4 */
-/* moved from next block */
-       movq 8*5(%ecx), %mm1
-       psubsw %mm4, %mm0               /* tm10; free mm4 */
-/* moved from next block */
-       pmulhw 8*5(%esi), %mm1          /* V5 */
-       movq %mm6, 8*4(%esi)            /* tm4; free mm6 */
-       movq %mm0, 8*10(%esi)           /* tm10; free mm0 */
-/* column 1: even part
- * use V5, V13, V1, V9 to produce V56..V59
- */
-/* moved to prev block:
- *     movq 8*5(%ecx), %mm1
- *     pmulhw 8*5(%esi), %mm1           V5
- */
-       movq 8*13(%ecx), %mm7
-       psllw $1, %mm1                  /* t128=t130 */
-       pmulhw 8*13(%esi), %mm7         /* V13 */
-       movq %mm1, %mm2                 /* duplicate t128=t130 */
-       movq 8(%ecx), %mm3
-       pmulhw 8(%esi), %mm3            /* V1 */
-       movq 8*9(%ecx), %mm5
-       psubsw %mm7, %mm1               /* V50 */
-       pmulhw 8*9(%esi), %mm5          /* V9 */
-       paddsw %mm7, %mm2               /* V51 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm1      /* 23170 ->V52 */
-       movq %mm2, %mm6                 /* duplicate V51 */
-       psraw $1, %mm2                  /* t138=t144 */
-       movq %mm3, %mm4                 /* duplicate V1 */
-       psraw $2, %mm6                  /* t136 */
-       paddsw %mm5, %mm3               /* V53 */
-       psubsw %mm5, %mm4               /* V54 ;mm5 free */
-       movq %mm3, %mm7                 /* duplicate V53 */
-/* moved from next block */
-       movq 8*11(%ecx), %mm0
-       psraw $1, %mm4                  /* t140=t142 */
-       psubsw %mm6, %mm1               /* V55 ; mm6 free */
-       paddsw %mm2, %mm3               /* V56 */
-       movq %mm4, %mm5                 /* duplicate t140=t142 */
-       paddsw %mm1, %mm4               /* V57 */
-       movq %mm3, 8*5(%esi)            /* V56 */
-       psubsw %mm1, %mm5               /* V58; mm1 free */
-       movq %mm4, 8*13(%esi)           /* V57 */
-       psubsw %mm2, %mm7               /* V59; mm2 free */
-       movq %mm5, 8*9(%esi)            /* V58 */
-/* keep mm7 alive all along the next block
- *     movq %mm7, 8(%esi)              V59
- * moved above
- *     movq 8*11(%ecx), %mm0
- */
-       pmulhw 8*11(%esi), %mm0         /* V11 */
-       movq 8*7(%ecx), %mm6
-       pmulhw 8*7(%esi), %mm6          /* V7 */
-       movq 8*15(%ecx), %mm4
-       movq %mm0, %mm3                 /* duplicate V11 */
-       pmulhw 8*15(%esi), %mm4         /* V15 */
-       movq 8*3(%ecx), %mm5
-       psllw $1, %mm6                  /* t146=t152 */
-       pmulhw 8*3(%esi), %mm5          /* V3 */
-       paddsw %mm6, %mm0               /* V63 */
-/* note that V15 computation has a correction step: 
- * this is a 'magic' constant that rebiases the results to be closer to the
- * expected result.  this magic constant can be refined to reduce the error
- * even more by doing the correction step in a later stage when the number
- * is actually multiplied by 16
- */
-       paddw pic_offset(x0005000200010001), %mm4
-       psubsw %mm6, %mm3               /* V60 ; free mm6 */
-       psraw $1, %mm0                  /* t154=t156 */
-       movq %mm3, %mm1                 /* duplicate V60 */
-       pmulhw pic_offset(x539f539f539f539f), %mm1      /* V67 */
-       movq %mm5, %mm6                 /* duplicate V3 */
-       psraw $2, %mm4                  /* t148=t150 */
-       paddsw %mm4, %mm5               /* V61 */
-       psubsw %mm4, %mm6               /* V62 ; free mm4 */
-       movq %mm5, %mm4                 /* duplicate V61 */
-       psllw $1, %mm1                  /* t169 */
-       paddsw %mm0, %mm5               /* V65 -> result */
-       psubsw %mm0, %mm4               /* V64 ; free mm0 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm4      /* V68 */
-       psraw $1, %mm3                  /* t158 */
-       psubsw %mm6, %mm3               /* V66 */
-       movq %mm5, %mm2                 /* duplicate V65 */
-       pmulhw pic_offset(x61f861f861f861f8), %mm3      /* V70 */
-       psllw $1, %mm6                  /* t165 */
-       pmulhw pic_offset(x4546454645464546), %mm6      /* V69 */
-       psraw $1, %mm2                  /* t172 */
-/* moved from next block */
-       movq 8*5(%esi), %mm0            /* V56 */
-       psllw $1, %mm4                  /* t174 */
-/* moved from next block */
-       psraw $1, %mm0                  /* t177=t188 */
-       nop
-       psubsw %mm3, %mm6               /* V72 */
-       psubsw %mm1, %mm3               /* V71 ; free mm1 */
-       psubsw %mm2, %mm6               /* V73 ; free mm2 */
-/* moved from next block */
-       psraw $1, %mm5                  /* t178=t189 */
-       psubsw %mm6, %mm4               /* V74 */
-/* moved from next block */
-       movq %mm0, %mm1                 /* duplicate t177=t188 */
-       paddsw %mm4, %mm3               /* V75 */
-/* moved from next block */
-       paddsw %mm5, %mm0               /* tm1 */
-/* location
- *  5 - V56
- * 13 - V57
- *  9 - V58
- *  X - V59, mm7
- *  X - V65, mm5
- *  X - V73, mm6
- *  X - V74, mm4
- *  X - V75, mm3
- * free mm0, mm1 & mm2
- * moved above
- *     movq 8*5(%esi), %mm0            V56
- *     psllw $1, %mm0                  t177=t188 ! new !!
- *     psllw $1, %mm5                  t178=t189 ! new !!
- *     movq %mm0, %mm1                 duplicate t177=t188
- *     paddsw %mm5, %mm0               tm1
- */
-       movq 8*13(%esi), %mm2           /* V57 */
-       psubsw %mm5, %mm1               /* tm15; free mm5 */
-       movq %mm0, 8(%esi)              /* tm1; free mm0 */
-       psraw $1, %mm7                  /* t182=t184 ! new !! */
-/* save the store as used directly in the transpose
- *     movq %mm1, 120(%esi)            tm15; free mm1
- */
-       movq %mm7, %mm5                 /* duplicate t182=t184 */
-       psubsw %mm3, %mm7               /* tm7 */
-       paddsw %mm3, %mm5               /* tm9; free mm3 */
-       movq 8*9(%esi), %mm0            /* V58 */
-       movq %mm2, %mm3                 /* duplicate V57 */
-       movq %mm7, 8*7(%esi)            /* tm7; free mm7 */
-       psubsw %mm6, %mm3               /* tm13 */
-       paddsw %mm6, %mm2               /* tm3 ; free mm6 */
-/* moved up from the transpose */
-       movq %mm3, %mm7
-/* moved up from the transpose */
-       punpcklwd %mm1, %mm3
-       movq %mm0, %mm6                 /* duplicate V58 */
-       movq %mm2, 8*3(%esi)            /* tm3; free mm2 */
-       paddsw %mm4, %mm0               /* tm5 */
-       psubsw %mm4, %mm6               /* tm11; free mm4 */
-/* moved up from the transpose */
-       punpckhwd %mm1, %mm7
-       movq %mm0, 8*5(%esi)            /* tm5; free mm0 */
-/* moved up from the transpose */
-       movq %mm5, %mm2
-/* transpose - M4 part
- *  ---------       ---------
- * | M1 | M2 |     | M1'| M3'|
- *  ---------  -->  ---------
- * | M3 | M4 |     | M2'| M4'|
- *  ---------       ---------
- * Two alternatives: use full mmword approach so the following code can be
- * scheduled before the transpose is done without stores, or use the faster
- * half mmword stores (when possible)
- */
-       movd %mm3, 8*9+4(%esi)          /* MS part of tmt9 */
-       punpcklwd %mm6, %mm5
-       movd %mm7, 8*13+4(%esi)         /* MS part of tmt13 */
-       punpckhwd %mm6, %mm2
-       movd %mm5, 8*9(%esi)            /* LS part of tmt9 */
-       punpckhdq %mm3, %mm5            /* free mm3 */
-       movd %mm2, 8*13(%esi)           /* LS part of tmt13 */
-       punpckhdq %mm7, %mm2            /* free mm7 */
-/* moved up from the M3 transpose */
-       movq 8*8(%esi), %mm0
-/* moved up from the M3 transpose */
-       movq 8*10(%esi), %mm1
-/* moved up from the M3 transpose */
-       movq %mm0, %mm3
-/* shuffle the rest of the data, and write it with 2 mmword writes */
-       movq %mm5, 8*11(%esi)           /* tmt11 */
-/* moved up from the M3 transpose */
-       punpcklwd %mm1, %mm0
-       movq %mm2, 8*15(%esi)           /* tmt15 */
-/* moved up from the M3 transpose */
-       punpckhwd %mm1, %mm3
-/* transpose - M3 part
- * moved up to previous code section
- *     movq 8*8(%esi), %mm0
- *     movq 8*10(%esi), %mm1
- *     movq %mm0, %mm3
- *     punpcklwd %mm1, %mm0
- *     punpckhwd %mm1, %mm3
- */
-       movq 8*12(%esi), %mm6
-       movq 8*14(%esi), %mm4
-       movq %mm6, %mm2
-/* shuffle the data and write the lower parts of the transposed in 4 dwords */
-       punpcklwd %mm4, %mm6
-       movq %mm0, %mm1
-       punpckhdq %mm6, %mm1
-       movq %mm3, %mm7
-       punpckhwd %mm4, %mm2            /* free mm4 */
-       punpckldq %mm6, %mm0            /* free mm6 */
-/* moved from next block */
-       movq 8*13(%esi), %mm4           /* tmt13 */
-       punpckldq %mm2, %mm3
-       punpckhdq %mm2, %mm7            /* free mm2 */
-/* moved from next block */
-       movq %mm3, %mm5                 /* duplicate tmt5 */
-/* column 1: even part (after transpose)
-* moved above
-*      movq %mm3, %mm5                 duplicate tmt5
-*      movq 8*13(%esi), %mm4           tmt13
-*/
-       psubsw %mm4, %mm3               /* V134 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm3      /* 23170 ->V136 */
-       movq 8*9(%esi), %mm6            /* tmt9 */
-       paddsw %mm4, %mm5               /* V135 ; mm4 free */
-       movq %mm0, %mm4                 /* duplicate tmt1 */
-       paddsw %mm6, %mm0               /* V137 */
-       psubsw %mm6, %mm4               /* V138 ; mm6 free */
-       psllw $2, %mm3                  /* t290 */
-       psubsw %mm5, %mm3               /* V139 */
-       movq %mm0, %mm6                 /* duplicate V137 */
-       paddsw %mm5, %mm0               /* V140 */
-       movq %mm4, %mm2                 /* duplicate V138 */
-       paddsw %mm3, %mm2               /* V141 */
-       psubsw %mm3, %mm4               /* V142 ; mm3 free */
-       movq %mm0, 8*9(%esi)            /* V140 */
-       psubsw %mm5, %mm6               /* V143 ; mm5 free */
-/* moved from next block */
-       movq 8*11(%esi), %mm0           /* tmt11 */
-       movq %mm2, 8*13(%esi)           /* V141 */
-/* moved from next block */
-       movq %mm0, %mm2                 /* duplicate tmt11 */
-/* column 1: odd part (after transpose) */
-/* moved up to the prev block
- *     movq 8*11(%esi), %mm0           tmt11
- *     movq %mm0, %mm2                 duplicate tmt11
- */
-       movq 8*15(%esi), %mm5           /* tmt15 */
-       psubsw %mm7, %mm0               /* V144 */
-       movq %mm0, %mm3                 /* duplicate V144 */
-       paddsw %mm7, %mm2               /* V147 ; free mm7 */
-       pmulhw pic_offset(x539f539f539f539f), %mm0      /* 21407-> V151 */
-       movq %mm1, %mm7                 /* duplicate tmt3 */
-       paddsw %mm5, %mm7               /* V145 */
-       psubsw %mm5, %mm1               /* V146 ; free mm5 */
-       psubsw %mm1, %mm3               /* V150 */
-       movq %mm7, %mm5                 /* duplicate V145 */
-       pmulhw pic_offset(x4546454645464546), %mm1      /* 17734-> V153 */
-       psubsw %mm2, %mm5               /* V148 */
-       pmulhw pic_offset(x61f861f861f861f8), %mm3      /* 25080-> V154 */
-       psllw $2, %mm0                  /* t311 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm5      /* 23170-> V152 */
-       paddsw %mm2, %mm7               /* V149 ; free mm2 */
-       psllw $1, %mm1                  /* t313 */
-       nop     /* without the nop - freeze here for one clock */
-       movq %mm3, %mm2                 /* duplicate V154 */
-       psubsw %mm0, %mm3               /* V155 ; free mm0 */
-       psubsw %mm2, %mm1               /* V156 ; free mm2 */
-/* moved from the next block */
-       movq %mm6, %mm2                 /* duplicate V143 */
-/* moved from the next block */
-       movq 8*13(%esi), %mm0           /* V141 */
-       psllw $1, %mm1                  /* t315 */
-       psubsw %mm7, %mm1               /* V157 (keep V149) */
-       psllw $2, %mm5                  /* t317 */
-       psubsw %mm1, %mm5               /* V158 */
-       psllw $1, %mm3                  /* t319 */
-       paddsw %mm5, %mm3               /* V159 */
-/* column 1: output butterfly (after transform)
- * moved to the prev block
- *     movq %mm6, %mm2                 duplicate V143
- *     movq 8*13(%esi), %mm0           V141
- */
-       psubsw %mm3, %mm2               /* V163 */
-       paddsw %mm3, %mm6               /* V164 ; free mm3 */
-       movq %mm4, %mm3                 /* duplicate V142 */
-       psubsw %mm5, %mm4               /* V165 ; free mm5 */
-       movq %mm2, pic_offset(scratch7)         /* out7 */
-       psraw $4, %mm6
-       psraw $4, %mm4
-       paddsw %mm5, %mm3               /* V162 */
-       movq 8*9(%esi), %mm2            /* V140 */
-       movq %mm0, %mm5                 /* duplicate V141 */
-/* in order not to perculate this line up,
- * we read 72(%esi) very near to this location
- */
-       movq %mm6, 8*9(%esi)            /* out9 */
-       paddsw %mm1, %mm0               /* V161 */
-       movq %mm3, pic_offset(scratch5)         /* out5 */
-       psubsw %mm1, %mm5               /* V166 ; free mm1 */
-       movq %mm4, 8*11(%esi)           /* out11 */
-       psraw $4, %mm5
-       movq %mm0, pic_offset(scratch3)         /* out3 */
-       movq %mm2, %mm4                 /* duplicate V140 */
-       movq %mm5, 8*13(%esi)           /* out13 */
-       paddsw %mm7, %mm2               /* V160 */
-/* moved from the next block */
-       movq 8(%esi), %mm0
-       psubsw %mm7, %mm4               /* V167 ; free mm7 */
-/* moved from the next block */
-       movq 8*3(%esi), %mm7
-       psraw $4, %mm4
-       movq %mm2, pic_offset(scratch1)         /* out1 */
-/* moved from the next block */
-       movq %mm0, %mm1
-       movq %mm4, 8*15(%esi)           /* out15 */
-/* moved from the next block */
-       punpcklwd %mm7, %mm0
-/* transpose - M2 parts
- * moved up to the prev block
- *     movq 8(%esi), %mm0
- *     movq 8*3(%esi), %mm7
- *     movq %mm0, %mm1
- *     punpcklwd %mm7, %mm0
- */
-       movq 8*5(%esi), %mm5
-       punpckhwd %mm7, %mm1
-       movq 8*7(%esi), %mm4
-       movq %mm5, %mm3
-/* shuffle the data and write the lower parts of the trasposed in 4 dwords */
-       movd %mm0, 8*8(%esi)            /* LS part of tmt8 */
-       punpcklwd %mm4, %mm5
-       movd %mm1, 8*12(%esi)           /* LS part of tmt12 */
-       punpckhwd %mm4, %mm3
-       movd %mm5, 8*8+4(%esi)          /* MS part of tmt8 */
-       punpckhdq %mm5, %mm0            /* tmt10 */
-       movd %mm3, 8*12+4(%esi)         /* MS part of tmt12 */
-       punpckhdq %mm3, %mm1            /* tmt14 */
-/* transpose - M1 parts */
-       movq (%esi), %mm7
-       movq 8*2(%esi), %mm2
-       movq %mm7, %mm6
-       movq 8*4(%esi), %mm5
-       punpcklwd %mm2, %mm7
-       movq 8*6(%esi), %mm4
-       punpckhwd %mm2, %mm6            /* free mm2 */
-       movq %mm5, %mm3
-       punpcklwd %mm4, %mm5
-       punpckhwd %mm4, %mm3            /* free mm4 */
-       movq %mm7, %mm2
-       movq %mm6, %mm4
-       punpckldq %mm5, %mm7            /* tmt0 */
-       punpckhdq %mm5, %mm2            /* tmt2 ; free mm5 */
-/* shuffle the rest of the data, and write it with 2 mmword writes */
-       punpckldq %mm3, %mm6            /* tmt4 */
-/* moved from next block */
-       movq %mm2, %mm5                 /* duplicate tmt2 */
-       punpckhdq %mm3, %mm4            /* tmt6 ; free mm3 */
-/* moved from next block */
-       movq %mm0, %mm3                 /* duplicate tmt10 */
-/* column 0: odd part (after transpose)
- *moved up to prev block
- *     movq %mm0, %mm3                 duplicate tmt10
- *     movq %mm2, %mm5                 duplicate tmt2
- */
-       psubsw %mm4, %mm0               /* V110 */
-       paddsw %mm4, %mm3               /* V113 ; free mm4 */
-       movq %mm0, %mm4                 /* duplicate V110 */
-       paddsw %mm1, %mm2               /* V111 */
-       pmulhw pic_offset(x539f539f539f539f), %mm0      /* 21407-> V117 */
-       psubsw %mm1, %mm5               /* V112 ; free mm1 */
-       psubsw %mm5, %mm4               /* V116 */
-       movq %mm2, %mm1                 /* duplicate V111 */
-       pmulhw pic_offset(x4546454645464546), %mm5      /* 17734-> V119 */
-       psubsw %mm3, %mm2               /* V114 */
-       pmulhw pic_offset(x61f861f861f861f8), %mm4      /* 25080-> V120 */
-       paddsw %mm3, %mm1               /* V115 ; free mm3 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm2      /* 23170-> V118 */
-       psllw $2, %mm0                  /* t266 */
-       movq %mm1, (%esi)               /* save V115 */
-       psllw $1, %mm5                  /* t268 */
-       psubsw %mm4, %mm5               /* V122 */
-       psubsw %mm0, %mm4               /* V121 ; free mm0 */
-       psllw $1, %mm5                  /* t270 */
-       psubsw %mm1, %mm5               /* V123 ; free mm1 */
-       psllw $2, %mm2                  /* t272 */
-       psubsw %mm5, %mm2               /* V124 (keep V123) */
-       psllw $1, %mm4                  /* t274 */
-       movq %mm5, 8*2(%esi)            /* save V123 ; free mm5 */
-       paddsw %mm2, %mm4               /* V125 (keep V124) */
-/* column 0: even part (after transpose) */
-       movq 8*12(%esi), %mm0           /* tmt12 */
-       movq %mm6, %mm3                 /* duplicate tmt4 */
-       psubsw %mm0, %mm6               /* V100 */
-       paddsw %mm0, %mm3               /* V101 ; free mm0 */
-       pmulhw pic_offset(x5a825a825a825a82), %mm6      /* 23170 ->V102 */
-       movq %mm7, %mm5                 /* duplicate tmt0 */
-       movq 8*8(%esi), %mm1            /* tmt8 */
-       paddsw %mm1, %mm7               /* V103 */
-       psubsw %mm1, %mm5               /* V104 ; free mm1 */
-       movq %mm7, %mm0                 /* duplicate V103 */
-       psllw $2, %mm6                  /* t245 */
-       paddsw %mm3, %mm7               /* V106 */
-       movq %mm5, %mm1                 /* duplicate V104 */
-       psubsw %mm3, %mm6               /* V105 */
-       psubsw %mm3, %mm0               /* V109; free mm3 */
-       paddsw %mm6, %mm5               /* V107 */
-       psubsw %mm6, %mm1               /* V108 ; free mm6 */
-/* column 0: output butterfly (after transform) */
-       movq %mm1, %mm3                 /* duplicate V108 */
-       paddsw %mm2, %mm1               /* out4 */
-       psraw $4, %mm1
-       psubsw %mm2, %mm3               /* out10 ; free mm2 */
-       psraw $4, %mm3
-       movq %mm0, %mm6                 /* duplicate V109 */
-       movq %mm1, 8*4(%esi)            /* out4 ; free mm1 */
-       psubsw %mm4, %mm0               /* out6 */
-       movq %mm3, 8*10(%esi)           /* out10 ; free mm3 */
-       psraw $4, %mm0
-       paddsw %mm4, %mm6               /* out8 ; free mm4 */
-       movq %mm7, %mm1                 /* duplicate V106 */
-       movq %mm0, 8*6(%esi)            /* out6 ; free mm0 */
-       psraw $4, %mm6
-       movq (%esi), %mm4               /* V115 */
-       movq %mm6, 8*8(%esi)            /* out8 ; free mm6 */
-       movq %mm5, %mm2                 /* duplicate V107 */
-       movq 8*2(%esi), %mm3            /* V123 */
-       paddsw %mm4, %mm7               /* out0 */
-/* moved up from next block */
-       movq pic_offset(scratch3), %mm0
-       psraw $4, %mm7
-/* moved up from next block */
-       movq pic_offset(scratch5), %mm6 
-       psubsw %mm4, %mm1               /* out14 ; free mm4 */
-       paddsw %mm3, %mm5               /* out2 */
-       psraw $4, %mm1
-       movq %mm7, (%esi)               /* out0 ; free mm7 */
-       psraw $4, %mm5
-       movq %mm1, 8*14(%esi)           /* out14 ; free mm1 */
-       psubsw %mm3, %mm2               /* out12 ; free mm3 */
-       movq %mm5, 8*2(%esi)            /* out2 ; free mm5 */
-       psraw $4, %mm2
-/* moved up to the prev block */
-       movq pic_offset(scratch7), %mm4
-/* moved up to the prev block */
-       psraw $4, %mm0
-       movq %mm2, 8*12(%esi)           /* out12 ; free mm2 */
-/* moved up to the prev block */
-       psraw $4, %mm6
-/* move back the data to its correct place
-* moved up to the prev block
- *     movq pic_offset(scratch3), %mm0
- *     movq pic_offset(scratch5), %mm6
- *     movq pic_offset(scratch7), %mm4
- *     psraw $4, %mm0
- *     psraw $4, %mm6
-*/
-       movq pic_offset(scratch1), %mm1
-       psraw $4, %mm4
-       movq %mm0, 8*3(%esi)            /* out3 */
-       psraw $4, %mm1
-       movq %mm6, 8*5(%esi)            /* out5 */
-       movq %mm4, 8*7(%esi)            /* out7 */
-       movq %mm1, 8(%esi)              /* out1 */
-       emms
-       popl %edi
-       popl %esi
-       popl %edx
-       popl %ecx
-       popl %ebx
-       movl %ebp,%esp
-       popl %ebp
-       ret
-.Lfe1:
-       .size    gst_idct_mmx_idct,.Lfe1-gst_idct_mmx_idct
diff --git a/libs/idct/sseidct.S b/libs/idct/sseidct.S
deleted file mode 100644 (file)
index 99cda4f..0000000
+++ /dev/null
@@ -1,740 +0,0 @@
-.data
-       .align 4
-       .type    rounder0,@object
-rounder0:
-       .long 65536
-       .long 65536
-       .size    rounder0,8
-       .align 4
-       .type    rounder4,@object
-rounder4:
-       .long 1024
-       .long 1024
-       .size    rounder4,8
-       .align 4
-       .type    rounder1,@object
-rounder1:
-       .long 3597
-       .long 3597
-       .size    rounder1,8
-       .align 4
-       .type    rounder7,@object
-rounder7:
-       .long 512
-       .long 512
-       .size    rounder7,8
-       .align 4
-       .type    rounder2,@object
-rounder2:
-       .long 2260
-       .long 2260
-       .size    rounder2,8
-       .align 4
-       .type    rounder6,@object
-rounder6:
-       .long 512
-       .long 512
-       .size    rounder6,8
-       .align 4
-       .type    rounder3,@object
-rounder3:
-       .long 1203
-       .long 1203
-       .size    rounder3,8
-       .align 4
-       .type    rounder5,@object
-rounder5:
-       .long 120
-       .long 120
-       .size    rounder5,8
-       .align 2
-       .type    _T1.46,@object
-_T1.46:
-       .value 13036
-       .value 13036
-       .value 13036
-       .value 13036
-       .align 2
-       .type    _T2.47,@object
-_T2.47:
-       .value 27146
-       .value 27146
-       .value 27146
-       .value 27146
-       .align 2
-       .type    _T3.48,@object
-_T3.48:
-       .value -21746
-       .value -21746
-       .value -21746
-       .value -21746
-       .align 2
-       .type    _C4.49,@object
-_C4.49:
-       .value 23170
-       .value 23170
-       .value 23170
-       .value 23170
-       .local  scratch0.50
-       .comm   scratch0.50,8,4
-       .local  scratch1.51
-       .comm   scratch1.51,8,4
-       .align 2
-       .type    table04.54,@object
-table04.54:
-       .value 16384
-       .value 21407
-       .value -16384
-       .value -21407
-       .value 16384
-       .value 8867
-       .value 16384
-       .value 8867
-       .value 22725
-       .value 19266
-       .value -22725
-       .value -12873
-       .value 12873
-       .value 4520
-       .value 19266
-       .value -4520
-       .value 16384
-       .value -8867
-       .value 16384
-       .value -8867
-       .value -16384
-       .value 21407
-       .value 16384
-       .value -21407
-       .value 12873
-       .value -22725
-       .value 19266
-       .value -22725
-       .value 4520
-       .value 19266
-       .value 4520
-       .value -12873
-       .align 2
-       .type    table17.55,@object
-table17.55:
-       .value 22725
-       .value 29692
-       .value -22725
-       .value -29692
-       .value 22725
-       .value 12299
-       .value 22725
-       .value 12299
-       .value 31521
-       .value 26722
-       .value -31521
-       .value -17855
-       .value 17855
-       .value 6270
-       .value 26722
-       .value -6270
-       .value 22725
-       .value -12299
-       .value 22725
-       .value -12299
-       .value -22725
-       .value 29692
-       .value 22725
-       .value -29692
-       .value 17855
-       .value -31521
-       .value 26722
-       .value -31521
-       .value 6270
-       .value 26722
-       .value 6270
-       .value -17855
-       .align 2
-       .type    table26.56,@object
-table26.56:
-       .value 21407
-       .value 27969
-       .value -21407
-       .value -27969
-       .value 21407
-       .value 11585
-       .value 21407
-       .value 11585
-       .value 29692
-       .value 25172
-       .value -29692
-       .value -16819
-       .value 16819
-       .value 5906
-       .value 25172
-       .value -5906
-       .value 21407
-       .value -11585
-       .value 21407
-       .value -11585
-       .value -21407
-       .value 27969
-       .value 21407
-       .value -27969
-       .value 16819
-       .value -29692
-       .value 25172
-       .value -29692
-       .value 5906
-       .value 25172
-       .value 5906
-       .value -16819
-       .align 2
-       .type    table35.57,@object
-table35.57:
-       .value 19266
-       .value 25172
-       .value -19266
-       .value -25172
-       .value 19266
-       .value 10426
-       .value 19266
-       .value 10426
-       .value 26722
-       .value 22654
-       .value -26722
-       .value -15137
-       .value 15137
-       .value 5315
-       .value 22654
-       .value -5315
-       .value 19266
-       .value -10426
-       .value 19266
-       .value -10426
-       .value -19266
-       .value 25172
-       .value 19266
-       .value -25172
-       .value 15137
-       .value -26722
-       .value 22654
-       .value -26722
-       .value 5315
-       .value 22654
-       .value 5315
-       .value -15137
-.text
-       .align 4
-.globl gst_idct_sse_idct
-       .type    gst_idct_sse_idct,@function
-gst_idct_sse_idct:
-       subl $8,%esp
-       pushl %ebp
-       pushl %edi
-       pushl %esi
-       pushl %ebx
-       call .L51
-.L51:
-       popl %ebx
-       addl $_GLOBAL_OFFSET_TABLE_+[.-.L51],%ebx
-       movl 28(%esp),%edx
-       leal table04.54@GOTOFF(%ebx),%eax
-       movq (%edx), %mm2
-       movq 8(%edx), %mm5
-       movq %mm2, %mm0
-       movq (%eax), %mm3
-       movq %mm5, %mm6
-       movq 8(%eax), %mm4
-       pmaddwd %mm0, %mm3
-       pshufw $78, %mm2, %mm2
-       leal rounder0@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       movq 64(%edx), %mm2
-       psrad $11, %mm0
-       movq 72(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, (%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 8(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder4@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       leal table17.55@GOTOFF(%ebx),%eax
-       movq 16(%edx), %mm2
-       psrad $11, %mm0
-       movq 24(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, 64(%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 72(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder1@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       movq 112(%edx), %mm2
-       psrad $11, %mm0
-       movq 120(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, 16(%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 24(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder7@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       leal table26.56@GOTOFF(%ebx),%eax
-       movq 32(%edx), %mm2
-       psrad $11, %mm0
-       movq 40(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, 112(%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 120(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder2@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       movq 96(%edx), %mm2
-       psrad $11, %mm0
-       movq 104(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, 32(%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 40(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder6@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       leal table35.57@GOTOFF(%ebx),%eax
-       movq 48(%edx), %mm2
-       psrad $11, %mm0
-       movq 56(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, 96(%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 104(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder3@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       movq 80(%edx), %mm2
-       psrad $11, %mm0
-       movq 88(%edx), %mm5
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       movq %mm5, %mm6
-       packssdw %mm3, %mm4
-       movq %mm2, %mm0
-       movq %mm1, 48(%edx)
-       pshufw $177, %mm4, %mm4
-       movq (%eax), %mm3
-       movq %mm4, 56(%edx)
-       pmaddwd %mm0, %mm3
-       movq 8(%eax), %mm4
-       pshufw $78, %mm2, %mm2
-       leal rounder5@GOTOFF(%ebx),%ecx
-       movq 16(%eax), %mm1
-       pmaddwd %mm2, %mm4
-       pmaddwd 32(%eax), %mm0
-       pshufw $78, %mm6, %mm6
-       movq 24(%eax), %mm7
-       pmaddwd %mm5, %mm1
-       paddd (%ecx), %mm3
-       pmaddwd %mm6, %mm7
-       pmaddwd 40(%eax), %mm2
-       paddd %mm4, %mm3
-       pmaddwd 48(%eax), %mm5
-       movq %mm3, %mm4
-       pmaddwd 56(%eax), %mm6
-       paddd %mm7, %mm1
-       paddd (%ecx), %mm0
-       psubd %mm1, %mm3
-       psrad $11, %mm3
-       paddd %mm4, %mm1
-       paddd %mm2, %mm0
-       psrad $11, %mm1
-       paddd %mm6, %mm5
-       movq %mm0, %mm4
-       paddd %mm5, %mm0
-       psubd %mm5, %mm4
-       psrad $11, %mm0
-       psrad $11, %mm4
-       packssdw %mm0, %mm1
-       packssdw %mm3, %mm4
-       movq %mm1, 80(%edx)
-       pshufw $177, %mm4, %mm4
-       movq %mm4, 88(%edx)
-       leal _T1.46@GOTOFF(%ebx),%edi
-       movq (%edi), %mm0
-       movq 16(%edx), %mm1
-       movq %mm0, %mm2
-       movq 112(%edx), %mm4
-       pmulhw %mm1, %mm0
-       leal _T3.48@GOTOFF(%ebx),%esi
-       movl %esi,16(%esp)
-       movq (%esi), %mm5
-       pmulhw %mm4, %mm2
-       movq 80(%edx), %mm6
-       movq %mm5, %mm7
-       movq 48(%edx), %mm3
-       psubsw %mm4, %mm0
-       leal _T2.47@GOTOFF(%ebx),%ecx
-       movq (%ecx), %mm4
-       pmulhw %mm3, %mm5
-       paddsw %mm2, %mm1
-       pmulhw %mm6, %mm7
-       movq %mm4, %mm2
-       paddsw %mm3, %mm5
-       pmulhw 32(%edx), %mm4
-       paddsw %mm6, %mm7
-       psubsw %mm6, %mm5
-       paddsw %mm3, %mm7
-       movq 96(%edx), %mm3
-       movq %mm0, %mm6
-       pmulhw %mm3, %mm2
-       psubsw %mm5, %mm0
-       psubsw %mm3, %mm4
-       paddsw %mm6, %mm5
-       leal scratch0.50@GOTOFF(%ebx),%esi
-       movl %esi,20(%esp)
-       movq %mm0, scratch0.50@GOTOFF(%ebx)
-       movq %mm1, %mm6
-       paddsw 32(%edx), %mm2
-       paddsw %mm7, %mm6
-       psubsw %mm7, %mm1
-       movq %mm1, %mm7
-       movq (%edx), %mm3
-       paddsw %mm5, %mm1
-       leal _C4.49@GOTOFF(%ebx),%eax
-       movq (%eax), %mm0
-       psubsw %mm5, %mm7
-       leal scratch1.51@GOTOFF(%ebx),%ebp
-       movq %mm6, scratch1.51@GOTOFF(%ebx)
-       pmulhw %mm0, %mm1
-       movq %mm4, %mm6
-       pmulhw %mm0, %mm7
-       movq 64(%edx), %mm5
-       movq %mm3, %mm0
-       psubsw %mm5, %mm3
-       paddsw %mm5, %mm0
-       paddsw %mm3, %mm4
-       movq %mm0, %mm5
-       psubsw %mm6, %mm3
-       paddsw %mm2, %mm5
-       paddsw %mm1, %mm1
-       psubsw %mm2, %mm0
-       paddsw %mm7, %mm7
-       movq %mm3, %mm2
-       movq %mm4, %mm6
-       paddsw %mm7, %mm3
-       psraw $6, %mm3
-       paddsw %mm1, %mm4
-       psraw $6, %mm4
-       psubsw %mm1, %mm6
-       movq (%ebp), %mm1
-       psubsw %mm7, %mm2
-       psraw $6, %mm6
-       movq %mm5, %mm7
-       movq %mm4, 16(%edx)
-       psraw $6, %mm2
-       movq %mm3, 32(%edx)
-       paddsw %mm1, %mm5
-       movq (%esi), %mm4
-       psubsw %mm1, %mm7
-       psraw $6, %mm5
-       movq %mm0, %mm3
-       movq %mm2, 80(%edx)
-       psubsw %mm4, %mm3
-       psraw $6, %mm7
-       paddsw %mm0, %mm4
-       movq %mm5, (%edx)
-       psraw $6, %mm3
-       movq %mm6, 96(%edx)
-       psraw $6, %mm4
-       movq %mm7, 112(%edx)
-       movq %mm3, 64(%edx)
-       movq %mm4, 48(%edx)
-       movq (%edi), %mm0
-       movq 24(%edx), %mm1
-       movq %mm0, %mm2
-       movq 120(%edx), %mm4
-       pmulhw %mm1, %mm0
-       movl 16(%esp),%esi
-       movq (%esi), %mm5
-       pmulhw %mm4, %mm2
-       movq 88(%edx), %mm6
-       movq %mm5, %mm7
-       movq 56(%edx), %mm3
-       psubsw %mm4, %mm0
-       movq (%ecx), %mm4
-       pmulhw %mm3, %mm5
-       paddsw %mm2, %mm1
-       pmulhw %mm6, %mm7
-       movq %mm4, %mm2
-       paddsw %mm3, %mm5
-       pmulhw 40(%edx), %mm4
-       paddsw %mm6, %mm7
-       psubsw %mm6, %mm5
-       paddsw %mm3, %mm7
-       movq 104(%edx), %mm3
-       movq %mm0, %mm6
-       pmulhw %mm3, %mm2
-       psubsw %mm5, %mm0
-       psubsw %mm3, %mm4
-       paddsw %mm6, %mm5
-       movq %mm0, scratch0.50@GOTOFF(%ebx)
-       movq %mm1, %mm6
-       paddsw 40(%edx), %mm2
-       paddsw %mm7, %mm6
-       psubsw %mm7, %mm1
-       movq %mm1, %mm7
-       movq 8(%edx), %mm3
-       paddsw %mm5, %mm1
-       movq (%eax), %mm0
-       psubsw %mm5, %mm7
-       movq %mm6, scratch1.51@GOTOFF(%ebx)
-       pmulhw %mm0, %mm1
-       movq %mm4, %mm6
-       pmulhw %mm0, %mm7
-       movq 72(%edx), %mm5
-       movq %mm3, %mm0
-       psubsw %mm5, %mm3
-       paddsw %mm5, %mm0
-       paddsw %mm3, %mm4
-       movq %mm0, %mm5
-       psubsw %mm6, %mm3
-       paddsw %mm2, %mm5
-       paddsw %mm1, %mm1
-       psubsw %mm2, %mm0
-       paddsw %mm7, %mm7
-       movq %mm3, %mm2
-       movq %mm4, %mm6
-       paddsw %mm7, %mm3
-       psraw $6, %mm3
-       paddsw %mm1, %mm4
-       psraw $6, %mm4
-       psubsw %mm1, %mm6
-       movq (%ebp), %mm1
-       psubsw %mm7, %mm2
-       psraw $6, %mm6
-       movq %mm5, %mm7
-       movq %mm4, 24(%edx)
-       psraw $6, %mm2
-       movq %mm3, 40(%edx)
-       paddsw %mm1, %mm5
-       movl 20(%esp),%esi
-       movq (%esi), %mm4
-       psubsw %mm1, %mm7
-       psraw $6, %mm5
-       movq %mm0, %mm3
-       movq %mm2, 88(%edx)
-       psubsw %mm4, %mm3
-       psraw $6, %mm7
-       paddsw %mm0, %mm4
-       movq %mm5, 8(%edx)
-       psraw $6, %mm3
-       movq %mm6, 104(%edx)
-       psraw $6, %mm4
-       movq %mm7, 120(%edx)
-       movq %mm3, 72(%edx)
-       movq %mm4, 56(%edx)
-       popl %ebx
-       popl %esi
-       popl %edi
-       popl %ebp
-       addl $8,%esp
-       ret
diff --git a/libs/putbits/.gitignore b/libs/putbits/.gitignore
deleted file mode 100644 (file)
index 08f5ed3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-*.o
-*.lo
-*.la
-.deps
-.libs
diff --git a/libs/putbits/Makefile.am b/libs/putbits/Makefile.am
deleted file mode 100644 (file)
index 4e75d97..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libgstputbits.la
-
-libgstputbits_la_SOURCES = gstputbits.c 
-
-libgstputbitsincludedir = $(includedir)/gst/libs/gstputbits
-libgstputbitsinclude_HEADERS = gstputbits.h
-
-noinst_HEADERS = gstputbits.h 
-
-libgstputbits_la_LIBADD = $(GST_LIBS)
-libgstputbits_la_CFLAGS = $(GST_CFLAGS) -funroll-all-loops -finline-functions -ffast-math
diff --git a/libs/putbits/gstputbits.c b/libs/putbits/gstputbits.c
deleted file mode 100644 (file)
index cf4a4c1..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/* putbits.c, bit-level output                                              */
-
-/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
-
-/*
- * Disclaimer of Warranty
- *
- * These software programs are available to the user without any license fee or
- * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
- * any and all warranties, whether express, implied, or statuary, including any
- * implied warranties or merchantability or of fitness for a particular
- * purpose.  In no event shall the copyright-holder be liable for any
- * incidental, punitive, or consequential damages of any kind whatsoever
- * arising from the use of these programs.
- *
- * This disclaimer of warranty extends to the user of these programs and user's
- * customers, employees, agents, transferees, successors, and assigns.
- *
- * The MPEG Software Simulation Group does not represent or warrant that the
- * programs furnished hereunder are free of infringement of any third-party
- * patents.
- *
- * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
- * are subject to royalty fees to patent holders.  Many of these patents are
- * general enough such that they are unavoidable regardless of implementation
- * design.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "gstputbits.h"
-
-/* initialize buffer, call once before first putbits or alignbits */
-void gst_putbits_init(gst_putbits_t *pb)
-{
-  pb->outcnt = 8;
-  pb->bytecnt = 0;
-  pb->outbase = 0;
-}
-
-void gst_putbits_new_empty_buffer(gst_putbits_t *pb, int len)
-{
-  pb->outbfr = pb->outbase = malloc(len);
-  pb->temp = 0;
-  pb->len = len;
-  pb->newlen = 0;
-  pb->outcnt = 8;
-}
-
-void gst_putbits_new_buffer(gst_putbits_t *pb, unsigned char *buffer, int len)
-{
-  pb->outbfr = buffer;
-  pb->temp = 0;
-  pb->outcnt = 8;
-  pb->bytecnt = 0;
-  pb->len = len;
-}
-
-/* write rightmost n (0<=n<=32) bits of val to outfile */
-void gst_putbits(gst_putbits_t *pb, int val, int n)
-{
-  int i;
-  unsigned int mask;
-
-  //printf("putbits: %p %08x %d %d %d\n", pb, val, n, pb->outcnt, pb->newlen);
-  mask = 1 << (n-1); /* selects first (leftmost) bit */
-
-  for (i=0; i<n; i++)
-  {
-    pb->temp <<= 1;
-
-    if (val & mask)
-      pb->temp|= 1;
-
-    mask >>= 1; /* select next bit */
-    pb->outcnt--;
-
-    if (pb->outcnt==0) /* 8 bit buffer full */
-    {
-      pb->len--;
-      pb->newlen++;
-      *(pb->outbfr++) = pb->temp;
-      pb->outcnt = 8;
-      pb->bytecnt++;
-    }
-  }
-}
-
-/* zero bit stuffing to next byte boundary (5.2.3, 6.2.1) */
-void gst_putbits_align(gst_putbits_t *pb)
-{
-  if (pb->outcnt!=8)
-    gst_putbits(pb, 0, pb->outcnt);
-}
-
-/* return total number of generated bits */
-int gst_putbits_bitcount(gst_putbits_t *pb)
-{
-  return 8*pb->bytecnt + (8-pb->outcnt);
-}
diff --git a/libs/putbits/gstputbits.h b/libs/putbits/gstputbits.h
deleted file mode 100644 (file)
index 10954b9..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* putbits.h, bit-level output                                              */
-
-/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
-
-/*
- * Disclaimer of Warranty
- *
- * These software programs are available to the user without any license fee or
- * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
- * any and all warranties, whether express, implied, or statuary, including any
- * implied warranties or merchantability or of fitness for a particular
- * purpose.  In no event shall the copyright-holder be liable for any
- * incidental, punitive, or consequential damages of any kind whatsoever
- * arising from the use of these programs.
- *
- * This disclaimer of warranty extends to the user of these programs and user's
- * customers, employees, agents, transferees, successors, and assigns.
- *
- * The MPEG Software Simulation Group does not represent or warrant that the
- * programs furnished hereunder are free of infringement of any third-party
- * patents.
- *
- * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
- * are subject to royalty fees to patent holders.  Many of these patents are
- * general enough such that they are unavoidable regardless of implementation
- * design.
- *
- */
-
-#ifndef __GST_PUTBITS_H__
-#define __GST_PUTBITS_H__
-
-typedef struct _gst_putbits_t gst_putbits_t;
-
-struct _gst_putbits_t {
-  unsigned char *outbfr;
-  unsigned char *outbase;
-  unsigned char temp;
-  int outcnt;
-  int bytecnt;
-  int len;
-  int newlen;
-};
-
-void gst_putbits_init(gst_putbits_t *pb);
-void gst_putbits_new_empty_buffer(gst_putbits_t *pb, int len);
-void gst_putbits_new_buffer(gst_putbits_t *pb, unsigned char *buffer, int len);
-void gst_putbits(gst_putbits_t *pb, int val, int n);
-void gst_putbits_align(gst_putbits_t *pb);
-int gst_putbits_bitcount(gst_putbits_t *pb);
-
-#define gst_putbits1(gb, val) gst_putbits(gb, val, 1) 
-#define gst_putbits2(gb, val) gst_putbits(gb, val, 2) 
-#define gst_putbits3(gb, val) gst_putbits(gb, val, 3) 
-#define gst_putbits4(gb, val) gst_putbits(gb, val, 4) 
-#define gst_putbits5(gb, val) gst_putbits(gb, val, 5) 
-#define gst_putbits6(gb, val) gst_putbits(gb, val, 6) 
-#define gst_putbits7(gb, val) gst_putbits(gb, val, 7) 
-#define gst_putbits8(gb, val) gst_putbits(gb, val, 8) 
-#define gst_putbits9(gb, val) gst_putbits(gb, val, 9) 
-#define gst_putbits10(gb, val) gst_putbits(gb, val, 10) 
-#define gst_putbits11(gb, val) gst_putbits(gb, val, 11) 
-#define gst_putbits12(gb, val) gst_putbits(gb, val, 12) 
-#define gst_putbits13(gb, val) gst_putbits(gb, val, 13) 
-#define gst_putbits14(gb, val) gst_putbits(gb, val, 14) 
-#define gst_putbits15(gb, val) gst_putbits(gb, val, 15) 
-#define gst_putbits16(gb, val) gst_putbits(gb, val, 16) 
-#define gst_putbits17(gb, val) gst_putbits(gb, val, 17) 
-#define gst_putbits18(gb, val) gst_putbits(gb, val, 18) 
-#define gst_putbits19(gb, val) gst_putbits(gb, val, 19) 
-#define gst_putbits20(gb, val) gst_putbits(gb, val, 20) 
-#define gst_putbits21(gb, val) gst_putbits(gb, val, 21) 
-#define gst_putbits22(gb, val) gst_putbits(gb, val, 22) 
-#define gst_putbits32(gb, val) gst_putbits(gb, val, 32) 
-
-#define gst_putbitsn(gb, val, n) gst_putbits(gb, val, n) 
-
-#endif /* __GST_PUTBITS_H__ */
diff --git a/libs/resample/Makefile.am b/libs/resample/Makefile.am
deleted file mode 100644 (file)
index f4b33d9..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libresample.la
-
-
-libresample_la_SOURCES = dtos.c functable.c resample.c resample.h
-
-
-noinst_HEADERS = resample.h
-
-#check_PROGRAMS = test
-
-#test_SOURCES = test.c
-#test_LDADD = libresample.la
-
-
-if HAVE_CPU_I386
-ARCHCFLAGS = -march=i486
-else
-if HAVE_CPU_PPC
-ARCHCFLAGS = -Wa,-m7400
-else
-ARCHCFLAGS =
-endif
-endif
-
-libresample_la_LIBADD = $(GST_LIBS)
-libresample_la_CFLAGS = $(GST_CFLAGS) -ffast-math $(ARCHCFLAGS)
diff --git a/libs/resample/README b/libs/resample/README
deleted file mode 100644 (file)
index f7db110..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-This is a snapshot of my current work developing an audio
-resampling library.  While working on this library, I started
-writing lots of general purpose functions that should really
-be part of a larger library.  Rather than have a constantly
-changing library, and since the current code is capable, I
-decided to freeze this codebase for use with gstreamer, and
-move active development of the code elsewhere.
-
-The algorithm used is based on Shannon's theorem, which says
-that you can recreate an input signal from equidistant samples
-using a sin(x)/x filter; thus, you can create new samples from
-the regenerated input signal.  Since sin(x)/x is expensive to
-evaluate, an interpolated lookup table is used.  Also, a
-windowing function (1-x^2)^2 is used, which aids the convergence
-of sin(x)/x for lower frequencies at the expense of higher.
-
-There is one tunable parameter, which is the filter length.
-Longer filter lengths are obviously slower, but more accurate.
-There's not much reason to use a filter length longer than 64,
-since other approximations start to dominate.  Filter lengths
-as short as 8 are audially acceptable, but should not be
-considered for serious work.
-
-Performance:  A PowerPC G4 at 400 Mhz can resample 2 audio
-channels at almost 10x speed with a filter length of 64, without
-using Altivec extensions.  (My goal was 10x speed, which I almost
-reached.  Maybe later.)
-
-Limitations: Currently only supports streams in the form of
-interleaved signed 16-bit samples.
-
-The test.c program is a simple regression test.  It creates a
-test input pattern (1 sec at 48 khz) that is a frequency ramp
-from 0 to 24000 hz, and then converts it to 44100 hz using a
-filter length of 64.  It then compares the result to the same
-pattern generated at 44100 hz, and outputs the result to the
-file "out".
-
-A graph of the correct output should have field 2 and field 4
-almost equal (plus/minus 1) up to about sample 40000 (which
-corresponds to 20 khz), and then field 2 should be close to 0
-above that.  Running the test program will print to stdout
-something like the following:
-
-  time 0.112526
-  average error 10k=0.4105 22k=639.34
-
-The average error is RMS error over the range [0-10khz] and
-[0-22khz], and is expressed in sample values, for an input
-amplitude of 16000.  Note that RMS errors below 1.0 can't
-really be compared, but basically this shows that below
-10 khz, the resampler is nearly perfect.  Most of the error
-is concentrated above 20 khz.
-
-If the average error is significantly larger after modifying
-the code, it's probably not good.
-
-
-
-dave...
-
diff --git a/libs/resample/dtos.c b/libs/resample/dtos.c
deleted file mode 100644 (file)
index 7762595..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/* Resampling library
- * Copyright (C) <2001> David A. Schleef <ds@schleef.org>
- *
- * 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 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.
- */
-
-
-#include <string.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-//#include <ml.h>
-#include <resample.h>
-
-
-
-#define short_to_double_table
-//#define short_to_double_altivec
-#define short_to_double_unroll
-
-#ifdef short_to_double_table
-static float ints_high[256];
-static float ints_low[256];
-
-void conv_double_short_table(double *dest, short *src, int n)
-{
-       static int init = 0;
-       int i;
-       unsigned int idx;
-       if(!init){
-               for(i=0;i<256;i++){
-                       ints_high[i]=256.0*((i<128)?i:i-256);
-                       ints_low[i]=i;
-               }
-               init = 1;
-       }
-
-       if(n&1){
-               idx = (unsigned short)*src++;
-               *dest++ = ints_high[(idx>>8)] + ints_low[(idx&0xff)];
-               n-=1;
-       }
-       for(i=0;i<n;i+=2){
-               idx = (unsigned short)*src++;
-               *dest++ = ints_high[(idx>>8)] + ints_low[(idx&0xff)];
-               idx = (unsigned short)*src++;
-               *dest++ = ints_high[(idx>>8)] + ints_low[(idx&0xff)];
-       }
-}
-
-#endif
-
-#ifdef short_to_double_unroll
-void conv_double_short_unroll(double *dest, short *src, int n)
-{
-       if(n&1){
-               *dest++ = *src++;
-               n--;
-       }
-       if(n&2){
-               *dest++ = *src++;
-               *dest++ = *src++;
-               n-=2;
-       }
-       while(n>0){
-               *dest++ = *src++;
-               *dest++ = *src++;
-               *dest++ = *src++;
-               *dest++ = *src++;
-               n-=4;
-       }
-}
-#endif
-
-void conv_double_short_ref(double *dest, short *src, int n)
-{
-       int i;
-       for(i=0;i<n;i++){
-               dest[i]=src[i];
-       }
-}
-
-#ifdef HAVE_CPU_PPC
-#if 0
-static union { int i[4]; float f[4]; } av_tmp __attribute__ ((__aligned__ (16)));
-
-void conv_double_short_altivec(double *dest, short *src, int n)
-{
-       int i;
-
-       for(i=0;i<n;i+=4){
-               av_tmp.i[0] = src[0];
-               av_tmp.i[1] = src[1];
-               av_tmp.i[2] = src[2];
-               av_tmp.i[3] = src[3];
-
-               asm(
-               "       lvx 0,0,%0\n"
-               "       vcfsx 1,0,0\n"
-               "       stvx 1,0,%0\n"
-               : : "r" (&av_tmp)
-               );
-
-               dest[0]=av_tmp.f[0];
-               dest[1]=av_tmp.f[1];
-               dest[2]=av_tmp.f[2];
-               dest[3]=av_tmp.f[3];
-               src += 4;
-               dest += 4;
-       }
-}
-#endif
-#endif
-
-
-
-/* double to short */
-
-void conv_short_double_ref(short *dest, double *src, int n)
-{
-       int i;
-       double x;
-
-       for(i=0;i<n;i++){
-               x = *src++;
-               if(x<-32768.0)x=-32768.0;
-               if(x>32767.0)x=32767.0;
-               *dest++ = rint(x);
-       }
-}
-
-#ifdef HAVE_CPU_PPC
-void conv_short_double_ppcasm(short *dest, double *src, int n)
-{
-       int tmp[2];
-       double min = -32768.0;
-       double max = 32767.0;
-       double ftmp0, ftmp1;
-
-       asm __volatile__(
-       "\taddic. %3,%3,-8\n"
-       "\taddic. %6,%6,-2\n"
-       "loop:\n"
-       "\tlfdu %0,8(%3)\n"
-       "\tfsub %1,%0,%4\n"
-       "\tfsel %0,%1,%0,%4\n"
-       "\tfsub %1,%0,%5\n"
-       "\tfsel %0,%1,%5,%0\n"
-       "\tfctiw %1,%0\n"
-       "\taddic. 5,5,-1\n"
-       "\tstfd %1,0(%2)\n"
-       "\tlhz 9,6(%2)\n"
-       "\tsthu 9,2(%6)\n"
-       "\tbne loop\n"
-       : "=&f" (ftmp0), "=&f" (ftmp1)
-       : "b" (tmp), "r" (src), "f" (min), "f" (max), "r" (dest)
-       : "r9", "r5" );
-
-}
-#endif
-
-
-void conv_double_short_dstr(double *dest, short *src, int n, int dstr)
-{
-       int i;
-       void *d = dest;
-       for(i=0;i<n;i++){
-               (*(double *)d)=*src++;
-               d += dstr;
-       }
-}
-
-void conv_short_double_sstr(short *dest, double *src, int n, int sstr)
-{
-       int i;
-       double x;
-       void *s = src;
-
-       for(i=0;i<n;i++){
-               x = *(double *)s;
-               if(x<-32768.0)x=-32768.0;
-               if(x>32767.0)x=32767.0;
-               *dest++ = rint(x);
-               s += sstr;
-       }
-}
-
diff --git a/libs/resample/functable.c b/libs/resample/functable.c
deleted file mode 100644 (file)
index d61efca..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-/* Resampling library
- * Copyright (C) <2001> David A. Schleef <ds@schleef.org>
- *
- * 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 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.
- */
-
-
-#include <string.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <resample.h>
-
-
-
-double functable_sinc(void *p,double x)
-{
-       if(x==0)return 1;
-       return sin(x)/x;
-}
-
-double functable_dsinc(void *p,double x)
-{
-       if(x==0)return 0;
-       return cos(x)/x - sin(x)/(x*x);
-}
-
-double functable_window_boxcar(void *p,double x)
-{
-       if(x<-1 || x>1)return 0;
-       return 1;
-}
-
-double functable_window_dboxcar(void *p,double x)
-{
-       return 0;
-}
-
-double functable_window_std(void *p,double x)
-{
-       if(x<-1 || x>1)return 0;
-       return (1-x*x)*(1-x*x);
-}
-
-double functable_window_dstd(void *p,double x)
-{
-       if(x<-1 || x>1)return 0;
-       return -4*x*(1-x*x);
-}
-
-
-
-void functable_init(functable_t *t)
-{
-       int i;
-       double x;
-
-       t->fx = malloc(sizeof(double)*(t->len+1));
-       t->fdx = malloc(sizeof(double)*(t->len+1));
-
-       t->invoffset = 1.0 / t->offset;
-
-       for(i=0;i<t->len+1;i++){
-               x = t->start + t->offset * i;
-               x *= t->scale;
-
-               t->fx[i] = t->func_x(t->priv,x);
-               t->fdx[i] = t->scale * t->func_dx(t->priv,x);
-       }
-       if(t->func2_x){
-               double f1x,f1dx;
-               double f2x,f2dx;
-
-               for(i=0;i<t->len+1;i++){
-                       x = t->start + t->offset * i;
-                       x *= t->scale2;
-
-                       f2x = t->func2_x(t->priv,x);
-                       f2dx = t->scale2 * t->func2_dx(t->priv,x);
-
-                       f1x = t->fx[i];
-                       f1dx = t->fdx[i];
-
-                       t->fx[i] = f1x * f2x;
-                       t->fdx[i] = f1x * f2dx + f1dx * f2x;
-               }
-       }
-}
-
-double functable_eval(functable_t *t,double x)
-{
-       int i;
-       double f0, f1, w0, w1;
-       double x2, x3;
-       double w;
-
-       if(x<t->start || x>(t->start+(t->len+1)*t->offset)){
-               printf("x out of range %g\n",x);
-       }
-       x -= t->start;
-       x /= t->offset;
-       i = floor(x);
-       x -= i;
-
-       x2 = x * x;
-       x3 = x2 * x;
-
-       f1 = 3 * x2 - 2 * x3;
-       f0 = 1 - f1;
-       w0 = (x - 2 * x2 + x3) * t->offset;
-       w1 = (-x2 + x3) * t->offset;
-
-       //printf("i=%d x=%g f0=%g f1=%g w0=%g w1=%g\n",i,x,f0,f1,w0,w1);
-
-       w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-               t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-
-       //w = t->fx[i] * (1-x) + t->fx[i+1] * x;
-
-       return w;
-}
-
-
-double functable_fir(functable_t *t, double x, int n, double *data, int len)
-{
-       int i,j;
-       double f0, f1, w0, w1;
-       double x2, x3;
-       double w;
-       double sum;
-
-       x -= t->start;
-       x /= t->offset;
-       i = floor(x);
-       x -= i;
-
-       x2 = x * x;
-       x3 = x2 * x;
-
-       f1 = 3 * x2 - 2 * x3;
-       f0 = 1 - f1;
-       w0 = (x - 2 * x2 + x3) * t->offset;
-       w1 = (-x2 + x3) * t->offset;
-
-       sum = 0;
-       for(j=0;j<len;j++){
-               w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-                       t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-               sum += data[j*2] * w;
-               i += n;
-       }
-
-       return sum;
-}
-
-void functable_fir2(functable_t *t, double *r0, double *r1, double x,
-       int n, double *data, int len)
-{
-       int i,j;
-       double f0, f1, w0, w1;
-       double x2, x3;
-       double w;
-       double sum0, sum1;
-       double floor_x;
-
-       x -= t->start;
-       x *= t->invoffset;
-       floor_x = floor(x);
-       i = floor_x;
-       x -= floor_x;
-
-       x2 = x * x;
-       x3 = x2 * x;
-
-       f1 = 3 * x2 - 2 * x3;
-       f0 = 1 - f1;
-       w0 = (x - 2 * x2 + x3) * t->offset;
-       w1 = (-x2 + x3) * t->offset;
-
-       sum0 = 0;
-       sum1 = 0;
-       for(j=0;j<len;j++){
-               w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-                       t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-               sum0 += data[j*2] * w;
-               sum1 += data[j*2+1] * w;
-               i += n;
-
-#define unroll2
-#define unroll3
-#define unroll4
-#ifdef unroll2
-               j++;
-
-               w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-                       t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-               sum0 += data[j*2] * w;
-               sum1 += data[j*2+1] * w;
-               i += n;
-#endif
-#ifdef unroll3
-               j++;
-
-               w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-                       t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-               sum0 += data[j*2] * w;
-               sum1 += data[j*2+1] * w;
-               i += n;
-#endif
-#ifdef unroll4
-               j++;
-
-               w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-                       t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-               sum0 += data[j*2] * w;
-               sum1 += data[j*2+1] * w;
-               i += n;
-#endif
-       }
-
-       *r0 = sum0;
-       *r1 = sum1;
-}
-
-
-
-#ifdef unused
-void functable_fir2_altivec(functable_t *t, float *r0, float *r1,
-       double x, int n, float *data, int len)
-{
-       int i,j;
-       double f0, f1, w0, w1;
-       double x2, x3;
-       double w;
-       double sum0, sum1;
-       double floor_x;
-
-       x -= t->start;
-       x *= t->invoffset;
-       floor_x = floor(x);
-       i = floor_x;
-       x -= floor_x;
-
-       x2 = x * x;
-       x3 = x2 * x;
-
-       f1 = 3 * x2 - 2 * x3;
-       f0 = 1 - f1;
-       w0 = (x - 2 * x2 + x3) * t->offset;
-       w1 = (-x2 + x3) * t->offset;
-
-       sum0 = 0;
-       sum1 = 0;
-       for(j=0;j<len;j++){
-               // t->fx, t->fdx needs to be multiplexed by n
-               // we need 5 consecutive floats, which fit into 2 vecs
-               // load v0, t->fx[i]
-               // load v1, t->fx[i+n]
-               // v2 = v0 (not correct)
-               // v3 = (v0>>32) || (v1<<3*32) (not correct)
-               //
-               // load v4, t->dfx[i]
-               // load v5, t->dfx[i+n]
-               // v6 = v4 (not correct)
-               // v7 = (v4>>32) || (v5<<3*32) (not correct)
-               // 
-               // v8 = splat(f0)
-               // v9 = splat(f1)
-               // v10 = splat(w0)
-               // v11 = splat(w1)
-               //
-               // v12 = v2 * v8
-               // v12 += v3 * v9
-               // v12 += v6 * v10
-               // v12 += v7 * v11
-               
-               w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
-                       t->fdx[i] * w0 + t->fdx[i + 1] * w1;
-               
-               // v13 = data[j*2]
-               // v14 = data[j*2+4]
-               // v15 = deinterlace_high(v13,v14)
-               // v16 = deinterlace_low(v13,v14)
-               // (sum0) v17 += multsum(v13,v15)
-               // (sum1) v18 += multsum(v14,v16)
-               
-               sum0 += data[j*2] * w;
-               sum1 += data[j*2+1] * w;
-               i += n;
-
-       }
-
-       *r0 = sum0;
-       *r1 = sum1;
-}
-#endif
-
diff --git a/libs/resample/resample.c b/libs/resample/resample.c
deleted file mode 100644 (file)
index cedb874..0000000
+++ /dev/null
@@ -1,530 +0,0 @@
-/* Resampling library
- * Copyright (C) <2001> David A. Schleef <ds@schleef.org>
- *
- * 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 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.
- */
-
-
-#include <string.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <resample.h>
-
-inline double sinc(double x)
-{
-       if(x==0)return 1;
-       return sin(x) / x;
-}
-
-inline double window_func(double x)
-{
-       x = 1 - x*x;
-       return x*x;
-}
-
-signed short double_to_s16(double x)
-{
-       if(x<-32768){
-               printf("clipped\n");
-               return -32768;
-       }
-       if(x>32767){
-               printf("clipped\n");
-               return -32767;
-       }
-       return rint(x);
-}
-
-signed short double_to_s16_ppcasm(double x)
-{
-       if(x<-32768){
-               return -32768;
-       }
-       if(x>32767){
-               return -32767;
-       }
-       return rint(x);
-}
-
-static void resample_sinc_ft(resample_t * r);
-
-void resample_init(resample_t * r)
-{
-       r->i_start = 0;
-       if(r->filter_length&1){
-               r->o_start = 0;
-       }else{
-               r->o_start = r->o_inc * 0.5;
-       }
-
-       memset(r->acc, 0, sizeof(r->acc));
-
-       resample_reinit(r);
-}
-
-void resample_reinit(resample_t * r)
-{
-       /* i_inc is the number of samples that the output increments for
-        * each input sample.  o_inc is the opposite. */
-       r->i_inc = (double) r->o_rate / r->i_rate;
-       r->o_inc = (double) r->i_rate / r->o_rate;
-
-       r->halftaps = (r->filter_length - 1.0) * 0.5;
-
-       switch (r->method) {
-       default:
-       case RESAMPLE_NEAREST:
-               r->scale = resample_nearest;
-               break;
-       case RESAMPLE_BILINEAR:
-               r->scale = resample_bilinear;
-               break;
-       case RESAMPLE_SINC_SLOW:
-               r->scale = resample_sinc;
-               break;
-       case RESAMPLE_SINC:
-               r->scale = resample_sinc_ft;
-               break;
-       }
-}
-
-/*
- * Prepare to be confused.
- *
- * We keep a "timebase" that is based on output samples.  The zero
- * of the timebase cooresponds to the next output sample that will
- * be written.
- *
- * i_start is the "time" that corresponds to the first input sample
- * in an incoming buffer.  Since the output depends on input samples
- * ahead in time, i_start will tend to be around halftaps.
- *
- * i_start_buf is the time of the first sample in the temporary
- * buffer.
- */
-void resample_scale(resample_t * r, void *i_buf, unsigned int i_size)
-{
-       int o_size;
-
-       r->i_buf = i_buf;
-
-       r->i_samples = i_size / 2 / r->channels;
-
-       r->i_start_buf = r->i_start - r->filter_length * r->i_inc;
-
-       /* i_start is the offset (in a given output sample) that is the
-        * beginning of the current input buffer */
-       r->i_end = r->i_start + r->i_inc * r->i_samples;
-
-       r->o_samples = floor(r->i_end - r->halftaps * r->i_inc);
-
-       o_size = r->o_samples * r->channels * 2;
-       r->o_buf = r->get_buffer(r->priv, o_size);
-
-       if(r->verbose){
-               printf("resample_scale: i_buf=%p i_size=%d\n",
-                       i_buf,i_size);
-               printf("resample_scale: i_samples=%d o_samples=%d i_inc=%g o_buf=%p\n",
-                       r->i_samples, r->o_samples, r->i_inc, r->o_buf);
-               printf("resample_scale: i_start=%g i_end=%g o_start=%g\n",
-                       r->i_start, r->i_end, r->o_start);
-       }
-
-       if ((r->filter_length + r->i_samples)*2*2 > r->buffer_len) {
-               int size = (r->filter_length + r->i_samples) * sizeof(double) * 2;
-
-               if(r->verbose){
-                       printf("resample temp buffer size=%d\n",size);
-               }
-               if(r->buffer)free(r->buffer);
-               r->buffer_len = size;
-               r->buffer = malloc(size);
-               memset(r->buffer, 0, size);
-       }
-
-       if(r->channels==2){
-               conv_double_short(
-                       r->buffer + r->filter_length * sizeof(double) * 2,
-                       r->i_buf, r->i_samples * 2);
-       }else{
-               conv_double_short_dstr(
-                       r->buffer + r->filter_length * sizeof(double) * 2,
-                       r->i_buf, r->i_samples, sizeof(double) * 2);
-       }
-
-       r->scale(r);
-
-       memcpy(r->buffer,
-               r->buffer + r->i_samples * sizeof(double) * 2,
-               r->filter_length * sizeof(double) * 2);
-
-       /* updating times */
-       r->i_start += r->i_samples * r->i_inc;
-       r->o_start += r->o_samples * r->o_inc - r->i_samples;
-       
-       /* adjusting timebase zero */
-       r->i_start -= r->o_samples;
-}
-
-void resample_nearest(resample_t * r)
-{
-       signed short *i_ptr, *o_ptr;
-       int i_count = 0;
-       double a;
-       int i;
-
-       i_ptr = (signed short *) r->i_buf;
-       o_ptr = (signed short *) r->o_buf;
-
-       a = r->o_start;
-       i_count = 0;
-#define SCALE_LOOP(COPY,INC) \
-       for (i = 0; i < r->o_samples; i++) {    \
-               COPY;                                                   \
-               a += r->o_inc;                                          \
-               while (a >= 1) {                                \
-                       a -= 1;                                         \
-                       i_ptr+=INC;                                     \
-                       i_count++;                                      \
-               }                                                               \
-               o_ptr+=INC;                                             \
-       }
-
-       switch (r->channels) {
-       case 1:
-               SCALE_LOOP(o_ptr[0] = i_ptr[0], 1);
-               break;
-       case 2:
-               SCALE_LOOP(o_ptr[0] = i_ptr[0];
-                          o_ptr[1] = i_ptr[1], 2);
-               break;
-       default:
-       {
-               int n, n_chan = r->channels;
-
-               SCALE_LOOP(for (n = 0; n < n_chan; n++) o_ptr[n] =
-                          i_ptr[n], n_chan);
-       }
-       }
-       if (i_count != r->i_samples) {
-               printf("handled %d in samples (expected %d)\n", i_count,
-                      r->i_samples);
-       }
-}
-
-void resample_bilinear(resample_t * r)
-{
-       signed short *i_ptr, *o_ptr;
-       int o_count = 0;
-       double b;
-       int i;
-       double acc0, acc1;
-
-       i_ptr = (signed short *) r->i_buf;
-       o_ptr = (signed short *) r->o_buf;
-
-       acc0 = r->acc[0];
-       acc1 = r->acc[1];
-       b = r->i_start;
-       for (i = 0; i < r->i_samples; i++) {
-               b += r->i_inc;
-               //printf("in %d\n",i_ptr[0]);
-               if(b>=2){
-                       printf("not expecting b>=2\n");
-               }
-               if (b >= 1) {
-                       acc0 += (1.0 - (b-r->i_inc)) * i_ptr[0];
-                       acc1 += (1.0 - (b-r->i_inc)) * i_ptr[1];
-
-                       o_ptr[0] = rint(acc0);
-                       //printf("out %d\n",o_ptr[0]);
-                       o_ptr[1] = rint(acc1);
-                       o_ptr += 2;
-                       o_count++;
-
-                       b -= 1.0;
-
-                       acc0 = b * i_ptr[0];
-                       acc1 = b * i_ptr[1];
-               } else {
-                       acc0 += i_ptr[0] * r->i_inc;
-                       acc1 += i_ptr[1] * r->i_inc;
-               }
-               i_ptr += 2;
-       }
-       r->acc[0] = acc0;
-       r->acc[1] = acc1;
-
-       if (o_count != r->o_samples) {
-               printf("handled %d out samples (expected %d)\n", o_count,
-                      r->o_samples);
-       }
-}
-
-void resample_sinc_slow(resample_t * r)
-{
-       signed short *i_ptr, *o_ptr;
-       int i, j;
-       double c0, c1;
-       double a;
-       int start;
-       double center;
-       double weight;
-
-       if (!r->buffer) {
-               int size = r->filter_length * 2 * r->channels;
-
-               printf("resample temp buffer\n");
-               r->buffer = malloc(size);
-               memset(r->buffer, 0, size);
-       }
-
-       i_ptr = (signed short *) r->i_buf;
-       o_ptr = (signed short *) r->o_buf;
-
-       a = r->i_start;
-#define GETBUF(index,chan) (((index)<0) \
-                       ? ((short *)(r->buffer))[((index)+r->filter_length)*2+(chan)] \
-                       : i_ptr[(index)*2+(chan)])
-       {
-               double sinx, cosx, sind, cosd;
-               double x, d;
-               double t;
-
-               for (i = 0; i < r->o_samples; i++) {
-                       start = floor(a) - r->filter_length;
-                       center = a - r->halftaps;
-                       x = M_PI * (start - center) * r->o_inc;
-                       sinx = sin(M_PI * (start - center) * r->o_inc);
-                       cosx = cos(M_PI * (start - center) * r->o_inc);
-                       d = M_PI * r->o_inc;
-                       sind = sin(M_PI * r->o_inc);
-                       cosd = cos(M_PI * r->o_inc);
-                       c0 = 0;
-                       c1 = 0;
-                       for (j = 0; j < r->filter_length; j++) {
-                               weight = (x==0)?1:(sinx/x);
-//printf("j %d sin %g cos %g\n",j,sinx,cosx);
-//printf("j %d sin %g x %g sinc %g\n",j,sinx,x,weight);
-                               c0 += weight * GETBUF((start + j), 0);
-                               c1 += weight * GETBUF((start + j), 1);
-                               t = cosx * cosd - sinx * sind;
-                               sinx = cosx * sind + sinx * cosd;
-                               cosx = t;
-                               x += d;
-                       }
-                       o_ptr[0] = rint(c0);
-                       o_ptr[1] = rint(c1);
-                       o_ptr += 2;
-                       a += r->o_inc;
-               }
-       }
-
-       memcpy(r->buffer,
-              i_ptr + (r->i_samples - r->filter_length) * r->channels,
-              r->filter_length * 2 * r->channels);
-}
-
-void resample_sinc(resample_t * r)
-{
-       double *ptr;
-       signed short *o_ptr;
-       int i, j;
-       double c0, c1;
-       double a;
-       int start;
-       double center;
-       double weight;
-       double x0, x, d;
-       double scale;
-
-       ptr = (double *) r->buffer;
-       o_ptr = (signed short *) r->o_buf;
-
-       /* scale provides a cutoff frequency for the low
-        * pass filter aspects of sinc().  scale=M_PI
-        * will cut off at the input frequency, which is
-        * good for up-sampling, but will cause aliasing
-        * for downsampling.  Downsampling needs to be
-        * cut off at o_rate, thus scale=M_PI*r->i_inc. */
-       /* actually, it needs to be M_PI*r->i_inc*r->i_inc.
-        * Need to research why. */
-       scale = M_PI*r->i_inc;
-       for (i = 0; i < r->o_samples; i++) {
-               a = r->o_start + i * r->o_inc;
-               start = floor(a - r->halftaps);
-//printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1);
-               center = a;
-               //x = M_PI * (start - center) * r->o_inc;
-               //d = M_PI * r->o_inc;
-               //x = (start - center) * r->o_inc;
-               x0 = (start - center) * r->o_inc;
-               d = r->o_inc;
-               c0 = 0;
-               c1 = 0;
-               for (j = 0; j < r->filter_length; j++) {
-                       x = x0 + d * j;
-                       weight = sinc(x*scale*r->i_inc)*scale/M_PI;
-                       weight *= window_func(x/r->halftaps*r->i_inc);
-                       c0 += weight * ptr[(start + j + r->filter_length)*2 + 0];
-                       c1 += weight * ptr[(start + j + r->filter_length)*2 + 1];
-               }
-               o_ptr[0] = double_to_s16(c0);
-               o_ptr[1] = double_to_s16(c1);
-               o_ptr += 2;
-       }
-}
-
-
-
-
-/*
- * Resampling audio is best done using a sinc() filter.
- *
- *
- *  out[t] = Sum( in[t'] * sinc((t-t')/delta_t), all t')
- *
- * The immediate problem with this algorithm is that it involves a
- * sum over an infinite number of input samples, both in the past
- * and future.  Note that even though sinc(x) is bounded by 1/x,
- * and thus decays to 0 for large x, since sum(x,{x=0,1..,n}) diverges
- * as log(n), we need to be careful about convergence.  This is
- * typically done by using a windowing function, which also makes
- * the sum over a finite number of input samples.
- *
- * The next problem is computational:  sinc(), and especially
- * sinc() multiplied by a non-trivial windowing function is expensive
- * to calculate, and also difficult to find SIMD optimizations.  Since
- * the time increment on input and output is different, it is not
- * possible to use a FIR filter, because the taps would have to be
- * recalculated for every t.
- *
- * To get around the expense of calculating sinc() for every point,
- * we pre-calculate sinc() at a number of points, and then interpolate
- * for the values we want in calculations.  The interpolation method
- * chosen is bi-cubic, which requires both the evalated function and
- * its derivative at every pre-sampled point.  Also, if the sampled
- * points are spaced commensurate with the input delta_t, we notice
- * that the interpolating weights are the same for every input point.
- * This decreases the number of operations to 4 multiplies and 4 adds
- * for each tap, regardless of the complexity of the filtering function.
- * 
- * At this point, it is possible to rearrange the problem as the sum
- * of 4 properly weghted FIR filters.  Typical SIMD computation units
- * are highly optimized for FIR filters, making long filter lengths
- * reasonable.
- */
-
-static functable_t *ft;
-
-double out_tmp[10000];
-
-static void resample_sinc_ft(resample_t * r)
-{
-       double *ptr;
-       signed short *o_ptr;
-       int i;
-       //int j;
-       double c0, c1;
-       //double a;
-       double start_f, start_x;
-       int start;
-       double center;
-       //double weight;
-       double x, d;
-       double scale;
-       int n = 4;
-
-       scale = r->i_inc;       // cutoff at 22050
-       //scale = 1.0;          // cutoff at 24000
-       //scale = r->i_inc * 0.5;       // cutoff at 11025
-
-       if(!ft){
-               ft = malloc(sizeof(*ft));
-               memset(ft,0,sizeof(*ft));
-
-               ft->len = (r->filter_length + 2) * n;
-               ft->offset = 1.0 / n;
-               ft->start = - ft->len * 0.5 * ft->offset;
-
-               ft->func_x = functable_sinc;
-               ft->func_dx = functable_dsinc;
-               ft->scale = M_PI * scale;
-
-               ft->func2_x = functable_window_std;
-               ft->func2_dx = functable_window_dstd;
-               ft->scale2 = 1.0 / r->halftaps;
-       
-               functable_init(ft);
-
-               //printf("len=%d offset=%g start=%g\n",ft->len,ft->offset,ft->start);
-       }
-
-       ptr = r->buffer;
-       o_ptr = (signed short *) r->o_buf;
-
-       center = r->o_start;
-       start_x = center - r->halftaps;
-       start_f = floor(start_x);
-       start_x -= start_f;
-       start = start_f;
-       for (i = 0; i < r->o_samples; i++) {
-               //start_f = floor(center - r->halftaps);
-//printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1);
-               x = start_f - center;
-               d = 1;
-               c0 = 0;
-               c1 = 0;
-//#define slow
-#ifdef slow
-               for (j = 0; j < r->filter_length; j++) {
-                       weight = functable_eval(ft,x)*scale;
-                       //weight = sinc(M_PI * scale * x)*scale*r->i_inc;
-                       //weight *= window_func(x / r->halftaps);
-                       c0 += weight * ptr[(start + j + r->filter_length)*2 + 0];
-                       c1 += weight * ptr[(start + j + r->filter_length)*2 + 1];
-                       x += d;
-               }
-#else
-               functable_fir2(ft,
-                       &c0,&c1,
-                       x, n,
-                       ptr+(start + r->filter_length)*2,
-                       r->filter_length);
-               c0 *= scale;
-               c1 *= scale;
-#endif
-
-               out_tmp[2 * i + 0] = c0;
-               out_tmp[2 * i + 1] = c1;
-               center += r->o_inc;
-               start_x += r->o_inc;
-               while(start_x>=1.0){
-                       start_f++;
-                       start_x -= 1.0;
-                       start++;
-               }
-       }
-
-       if(r->channels==2){
-               conv_short_double(r->o_buf,out_tmp,2 * r->o_samples);
-       }else{
-               conv_short_double_sstr(r->o_buf,out_tmp,r->o_samples,2 * sizeof(double));
-       }
-}
-
diff --git a/libs/resample/resample.h b/libs/resample/resample.h
deleted file mode 100644 (file)
index 1cc36ed..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Resampling library
- * Copyright (C) <2001> David Schleef <ds@schleef.org>
- *
- * 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 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.
- */
-
-
-#ifndef __RESAMPLE_H__
-#define __RESAMPLE_H__
-
-#include <config.h>
-
-typedef struct resample_s resample_t;
-
-struct resample_s {
-       /* parameters */
-
-       int method;
-       int channels;
-       int verbose;
-
-       int filter_length;
-
-       double i_rate;
-       double o_rate;
-
-       void *priv;
-
-       void *(*get_buffer)(void *priv, unsigned int size);
-
-       /* internal parameters */
-
-       double halftaps;
-
-       /* filter state */
-
-       void *buffer;
-       int buffer_len;
-
-       double i_start;
-       double o_start;
-
-       double i_start_buf;
-       double i_end_buf;
-
-       double i_inc;
-       double o_inc;
-
-       double i_end;
-       double o_end;
-
-       int i_samples;
-       int o_samples;
-
-       void *i_buf, *o_buf;
-
-       double acc[10];
-
-       /* methods */
-       void (*scale)(resample_t *r);
-
-       double ack;
-};
-
-enum{
-       RESAMPLE_NEAREST = 0,
-       RESAMPLE_BILINEAR,
-       RESAMPLE_SINC_SLOW,
-       RESAMPLE_SINC,
-};
-
-void resample_init(resample_t *r);
-void resample_reinit(resample_t *r);
-
-void resample_scale(resample_t *r, void *i_buf, unsigned int size);
-
-void resample_nearest(resample_t *r);
-void resample_bilinear(resample_t *r);
-void resample_sinc(resample_t *r);
-void resample_sinc_slow(resample_t *r);
-
-
-typedef struct functable_s functable_t;
-struct functable_s {
-       double start;
-       double offset;
-       int len;
-
-       double invoffset;
-
-       double scale;
-       double scale2;
-
-       double (*func_x)(void *,double x);
-       double (*func_dx)(void *,double x);
-
-       double (*func2_x)(void *,double x);
-       double (*func2_dx)(void *,double x);
-
-       double *fx;
-       double *fdx;
-
-       void *priv;
-};
-
-void functable_init(functable_t *t);
-double functable_eval(functable_t *t,double x);
-
-double functable_fir(functable_t *t,double x0,int n,double *data,int len);
-void functable_fir2(functable_t *t,double *r0, double *r1, double x0,
-       int n,double *data,int len);
-
-double functable_sinc(void *p, double x);
-double functable_dsinc(void *p, double x);
-double functable_window_std(void *p, double x);
-double functable_window_dstd(void *p, double x);
-double functable_window_boxcar(void *p, double x);
-double functable_window_dboxcar(void *p, double x);
-
-/* math lib stuff */
-
-void conv_double_short_table(double *dest, short *src, int n);
-void conv_double_short_unroll(double *dest, short *src, int n);
-void conv_double_short_ref(double *dest, short *src, int n);
-#ifdef HAVE_CPU_PPC
-void conv_double_short_altivec(double *dest, short *src, int n);
-#endif
-
-void conv_short_double_ref(short *dest, double *src, int n);
-#ifdef HAVE_CPU_PPC
-void conv_short_double_ppcasm(short *dest, double *src, int n);
-#endif
-
-#ifdef HAVE_CPU_PPC
-#define conv_double_short conv_double_short_table
-#define conv_short_double conv_short_double_ppcasm
-#else
-#define conv_double_short conv_double_short_ref
-#define conv_short_double conv_short_double_ref
-#endif
-
-void conv_double_short_dstr(double *dest, short *src, int n, int dstr);
-void conv_short_double_sstr(short *dest, double *src, int n, int dstr);
-
-#endif /* __RESAMPLE_H__ */
-
diff --git a/libs/resample/test.c b/libs/resample/test.c
deleted file mode 100644 (file)
index 44d19a6..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <sys/time.h>
-
-#include <resample.h>
-
-#define AMP 16000
-#define I_RATE 48000
-#define O_RATE 44100
-//#define O_RATE 24000
-
-//#define test_func(x) 1
-//#define test_func(x) sin(2*M_PI*(x)*10)
-//#define test_func(x) sin(2*M_PI*(x)*(x)*1000)
-#define test_func(x) sin(2*M_PI*(x)*(x)*12000)
-
-short i_buf[I_RATE*2*2];
-short o_buf[O_RATE*2*2];
-
-static int i_offset;
-static int o_offset;
-
-FILE *out;
-
-void test_res1(void);
-void test_res2(void);
-void test_res3(void);
-void test_res4(void);
-void test_res5(void);
-void test_res6(void);
-void test_res7(void);
-
-int main(int argc,char *argv[])
-{
-       out = fopen("out","w");
-
-       test_res7();
-
-       return 0;
-}
-
-void *get_buffer(void *priv, unsigned int size)
-{
-       void *ret;
-       ret = ((void *)o_buf) + o_offset;
-       o_offset += size;
-       return ret;
-}
-
-struct timeval start_time;
-void start_timer(void)
-{
-       gettimeofday(&start_time,NULL);
-       //printf("start %ld.%06ld\n",start_time.tv_sec,start_time.tv_usec);
-}
-
-void end_timer(void)
-{
-       struct timeval end_time;
-       double diff;
-
-       gettimeofday(&end_time,NULL);
-       //printf("end %ld.%06ld\n",end_time.tv_sec,end_time.tv_usec);
-       diff = (end_time.tv_sec - start_time.tv_sec) +
-               1e-6*(end_time.tv_usec - start_time.tv_usec);
-
-       printf("time %g\n",diff);
-
-}
-
-void test_res1(void)
-{
-       resample_t *r;
-       int i;
-       double sum10k,sum22k;
-       double f;
-       int n10k,n22k;
-       double x;
-
-       for(i=0;i<I_RATE;i++){
-               i_buf[i*2+0] = rint(AMP * test_func((double)i/I_RATE));
-               //i_buf[i*2+1] = rint(AMP * test_func((double)i/I_RATE));
-               i_buf[i*2+1] = (i<1000)?AMP:0;
-       }
-
-       r = malloc(sizeof(resample_t));
-       memset(r,0,sizeof(resample_t));
-
-       r->i_rate = I_RATE;
-       r->o_rate = O_RATE;
-       //r->method = RESAMPLE_SINC_SLOW;
-       r->method = RESAMPLE_SINC;
-       r->channels = 2;
-       //r->verbose = 1;
-       r->filter_length = 64;
-       r->get_buffer = get_buffer;
-
-       resample_init(r);
-
-       start_timer();
-#define blocked
-#ifdef blocked
-       for(i=0;i+256<I_RATE;i+=256){
-               resample_scale(r,i_buf+i*2,256*2*2);
-       }
-       if(I_RATE-i){
-               resample_scale(r,i_buf+i*2,(I_RATE-i)*2*2);
-       }
-#else
-       resample_scale(r,i_buf,I_RATE*2*2);
-#endif
-       end_timer();
-
-       for(i=0;i<O_RATE;i++){
-               f = AMP*test_func((double)i/O_RATE);
-               //f = rint(AMP*test_func((double)i/O_RATE));
-               fprintf(out,"%d %d %d %g %g\n",i,
-                       o_buf[2*i+0],o_buf[2*i+1],
-                       f,o_buf[2*i+0]-f);
-       }
-
-       sum10k=0;
-       sum22k=0;
-       n10k=0;
-       n22k=0;
-       for(i=0;i<O_RATE;i++){
-               f = AMP*test_func((double)i/O_RATE);
-               //f = rint(AMP*test_func((double)i/O_RATE));
-               x = o_buf[2*i+0]-f;
-               if(((0.5*i)/O_RATE*I_RATE)<10000){
-                       sum10k += x*x;
-                       n10k++;
-               }
-               if(((0.5*i)/O_RATE*I_RATE)<22050){
-                       sum22k += x*x;
-                       n22k++;
-               }
-       }
-       printf("average error 10k=%g 22k=%g\n",
-               sqrt(sum10k/n10k),
-               sqrt(sum22k/n22k));
-}
-
-
-void test_res2(void)
-{
-       functable_t *t;
-       int i;
-       double x;
-       double f1,f2;
-
-       t = malloc(sizeof(*t));
-       memset(t,0,sizeof(*t));
-
-       t->start = -50.0;
-       t->offset = 1;
-       t->len = 100;
-
-       t->func_x = functable_sinc;
-       t->func_dx = functable_dsinc;
-
-       functable_init(t);
-
-       for(i=0;i<1000;i++){
-               x = -50.0 + 0.1 * i;
-               f1 = functable_sinc(NULL,x);
-               f2 = functable_eval(t,x);
-               fprintf(out,"%d %g %g %g\n",i,f1,f2,f1-f2);
-       }
-}
-
-void test_res3(void)
-{
-       functable_t *t;
-       int i;
-       double x;
-       double f1,f2;
-       int n = 1;
-
-       t = malloc(sizeof(*t));
-       memset(t,0,sizeof(*t));
-
-       t->start = -50.0;
-       t->offset = 1.0 / n;
-       t->len = 100 * n;
-
-       t->func_x = functable_sinc;
-       t->func_dx = functable_dsinc;
-
-       t->func2_x = functable_window_std;
-       t->func2_dx = functable_window_dstd;
-
-       t->scale = 1.0;
-       t->scale2 = 1.0 / (M_PI * 16);
-
-       functable_init(t);
-
-       for(i=0;i<1000 * n;i++){
-               x = -50.0 + 0.1/n * i;
-               f1 = functable_sinc(NULL,t->scale * x) *
-                       functable_window_std(NULL,t->scale2 * x);
-               f2 = functable_eval(t,x);
-               fprintf(out,"%d %g %g %g\n",i,f1,f2,f2-f1);
-       }
-}
-
-double sinc_poly(double x)
-{
-#define INV3FAC 1.66666666666666666e-1
-#define INV5FAC 8.33333333333333333e-3
-#define INV7FAC 1.984126984e-4
-#define INV9FAC 2.755731922e-6
-#define INV11FAC 2.505210839e-8
-       double x2 = x * x;
-
-       return 1
-               - x2 * INV3FAC
-               + x2 * x2 * INV5FAC
-               - x2 * x2 * x2 * INV7FAC;
-               //+ x2 * x2 * x2 * x2 * INV9FAC
-               //- x2 * x2 * x2 * x2 * x2 * INV11FAC;
-}
-
-void test_res4(void)
-{
-       int i;
-       double x,f1,f2;
-
-       for(i=1;i<100;i++){
-               x = 0.01 * i;
-               f1 = 1 - sin(x)/x;
-               f2 = 1 - sinc_poly(x);
-       
-               fprintf(out,"%g %.20g %.20g %.20g\n",x,f1,f2,f2-f1);
-       }
-}
-
-
-void test_res5(void)
-{
-       int i;
-       double sum;
-
-       start_timer();
-       sum = 0;
-       for(i=0;i<I_RATE;i++){
-               sum += i_buf[i*2];
-       }
-       end_timer();
-       i_buf[0] = sum;
-}
-
-
-void short_to_double(double *d,short *x) { *d = *x; }
-void short_to_float(float *f,short *x) { *f = *x; }
-void float_to_double(double *f,float *x) { *f = *x; }
-void double_to_short(short *f,double *x) { *f = *x; }
-
-double res6_tmp[1000];
-
-void test_res6(void)
-{
-       int i;
-
-       for(i=0;i<I_RATE;i++){
-               i_buf[i] = rint(AMP * test_func((double)i/I_RATE));
-       }
-
-       conv_double_short_ref(res6_tmp,i_buf,1000);
-       for(i=0;i<1000;i++){
-               res6_tmp[i] *= 3.0;
-       }
-       conv_short_double_ppcasm(o_buf,res6_tmp,1000);
-
-       for(i=0;i<1000;i++){
-               fprintf(out,"%d %d %g %d\n",i,i_buf[i],res6_tmp[i],o_buf[i]);
-       }
-}
-
-void test_res7(void)
-{
-       resample_t *r;
-       int i;
-       double sum10k,sum22k;
-       double f;
-       int n10k,n22k;
-       double x;
-
-       for(i=0;i<I_RATE;i++){
-               i_buf[i] = rint(AMP * test_func((double)i/I_RATE));
-       }
-
-       r = malloc(sizeof(resample_t));
-       memset(r,0,sizeof(resample_t));
-
-       r->i_rate = I_RATE;
-       r->o_rate = O_RATE;
-       //r->method = RESAMPLE_SINC_SLOW;
-       r->method = RESAMPLE_SINC;
-       r->channels = 1;
-       //r->verbose = 1;
-       r->filter_length = 64;
-       r->get_buffer = get_buffer;
-
-       resample_init(r);
-
-       start_timer();
-#define blocked
-#ifdef blocked
-       for(i=0;i+256<I_RATE;i+=256){
-               resample_scale(r,i_buf+i,256*2);
-       }
-       if(I_RATE-i){
-               resample_scale(r,i_buf+i,(I_RATE-i)*2);
-       }
-#else
-       resample_scale(r,i_buf,I_RATE*2);
-#endif
-       end_timer();
-
-       for(i=0;i<O_RATE;i++){
-               f = AMP*test_func((double)i/O_RATE);
-               //f = rint(AMP*test_func((double)i/O_RATE));
-               fprintf(out,"%d %d %d %g %g\n",i,
-                       o_buf[i],0,
-                       f,o_buf[i]-f);
-       }
-
-       sum10k=0;
-       sum22k=0;
-       n10k=0;
-       n22k=0;
-       for(i=0;i<O_RATE;i++){
-               f = AMP*test_func((double)i/O_RATE);
-               //f = rint(AMP*test_func((double)i/O_RATE));
-               x = o_buf[i]-f;
-               if(((0.5*i)/O_RATE*I_RATE)<10000){
-                       sum10k += x*x;
-                       n10k++;
-               }
-               if(((0.5*i)/O_RATE*I_RATE)<22050){
-                       sum22k += x*x;
-                       n22k++;
-               }
-       }
-       printf("average error 10k=%g 22k=%g\n",
-               sqrt(sum10k/n10k),
-               sqrt(sum22k/n22k));
-}
-
diff --git a/libs/riff/Makefile.am b/libs/riff/Makefile.am
deleted file mode 100644 (file)
index d00886d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-filterdir = $(libdir)/gst
-
-filter_LTLIBRARIES = libgstriff.la
-
-libgstriff_la_SOURCES = gstriffparse.c gstriffencode.c gstriffutil.c
-
-libgstriffincludedir = $(includedir)/gst/libs/gstriff
-libgstriffinclude_HEADERS = gstriff.h
-
-libgstriff_la_LIBADD = $(GST_LIBS)
-libgstriff_la_CFLAGS = $(GST_CFLAGS) -funroll-all-loops -finline-functions -ffast-math
diff --git a/libs/riff/gstriff.c b/libs/riff/gstriff.c
deleted file mode 100644 (file)
index bf24c09..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-#include <gstriff.h>
-
-//#define debug(format,args...) g_print(format,##args)
-#define debug(format,args...)
-
-
-GstRiff *gst_riff_new(GstRiffCallback function, gpointer data) {
-  GstRiff *riff;
-
-  riff = (GstRiff *)g_malloc(sizeof(GstRiff));
-  g_return_val_if_fail(riff != NULL, NULL);
-
-  riff->form = 0;
-  riff->chunks = NULL;
-  riff->state = 0;
-  riff->curoffset = 0;
-  riff->nextlikely = 0;
-  riff->new_tag_found = function;
-  riff->callback_data = data;
-  riff->incomplete_chunk = NULL;
-  riff->dataleft = NULL;
-
-  return riff;
-}
-
-gint gst_riff_next_buffer(GstRiff *riff,GstBuffer *buf,gulong off) {
-  gulong last, size;
-  GstRiffChunk *chunk;
-
-  g_return_val_if_fail (riff != NULL, GST_RIFF_EINVAL);
-  g_return_val_if_fail (buf != NULL, GST_RIFF_EINVAL);
-  g_return_val_if_fail (GST_BUFFER_DATA(buf) != NULL, GST_RIFF_EINVAL);
-
-  size = GST_BUFFER_SIZE(buf);
-  last = off + size;
-
-  debug("offset new buffer 0x%08lx size 0x%08x\n", off, GST_BUFFER_SIZE(buf));
-
-  if (riff->dataleft) {
-    gulong newsize;
-
-    debug("recovering left data\n");
-    newsize = riff->dataleft_size + size;
-    riff->dataleft = g_realloc(riff->dataleft, newsize);
-    memcpy (riff->dataleft+riff->dataleft_size, GST_BUFFER_DATA(buf), size);
-    gst_buffer_unref (buf);
-
-    buf = gst_buffer_new ();
-    GST_BUFFER_DATA(buf) = riff->dataleft;
-    GST_BUFFER_SIZE(buf) = newsize;
-    off -= riff->dataleft_size;
-    //last -= riff->dataleft_size;
-    riff->dataleft = NULL;
-  }
-
-  if (off == 0) {
-    guint32 *words = (guin32 *)GST_BUFFER_DATA(buf);
-
-    // don't even try to parse the head if it's not there FIXME
-    if (last < 12) {
-      riff->state = GST_RIFF_ENOTRIFF;
-      return riff->state;
-    }
-
-    //g_print("testing is 0x%08lx '%s'\n",words[0],gst_riff_id_to_fourcc(words[0]));
-    /* verify this is a valid RIFF file, first of all */
-    if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) {
-      riff->state = GST_RIFF_ENOTRIFF;
-      return riff->state;
-    }
-    riff->form = GUINT32_FROM_LE (words[2]);
-    //g_print("form is 0x%08lx '%s'\n",words[2],gst_riff_id_to_fourcc(words[2]));
-    riff->nextlikely = 12;     /* skip 'RIFF', length, and form */
-               // all OK here
-    riff->incomplete_chunk = NULL;
-  }
-
-  // if we have an incomplete chunk from the previous buffer
-  if (riff->incomplete_chunk) {
-    guint leftover;
-    debug("have incomplete chunk %08x filled\n", riff->incomplete_chunk_size);
-    leftover = riff->incomplete_chunk->size - riff->incomplete_chunk_size;
-    if (leftover <= size) {
-      debug("we can fill it from %08x with %08x bytes = %08x\n", riff->incomplete_chunk_size, leftover, riff->incomplete_chunk_size+leftover);
-      memcpy(riff->incomplete_chunk->data+riff->incomplete_chunk_size, GST_BUFFER_DATA(buf), leftover);
-
-      if (riff->new_tag_found) {
-        riff->new_tag_found(riff->incomplete_chunk, riff->callback_data);
-      }
-      g_free(riff->incomplete_chunk->data);
-      g_free(riff->incomplete_chunk);
-      riff->incomplete_chunk = NULL;
-    }
-    else {
-      debug("we cannot fill it %08x >= %08lx\n", leftover, size);
-      memcpy(riff->incomplete_chunk->data+riff->incomplete_chunk_size, GST_BUFFER_DATA(buf), size);
-      riff->incomplete_chunk_size += size;
-      return 0;
-    }
-  }
-
-  if ((riff->nextlikely+12) > last) {
-    guint left = last - riff->nextlikely;
-    debug("not enough data next 0x%08x  last 0x%08lx %08x %08x\n",riff->nextlikely, last, left, off);
-
-    riff->dataleft = g_malloc(left);
-    riff->dataleft_size = left;
-    memcpy(riff->dataleft, GST_BUFFER_DATA(buf)+size-left, left);
-
-    return 0;
-  }
-
-  debug("next 0x%08x  last 0x%08lx offset %08x\n",riff->nextlikely, last, off);
-  /* loop while the next likely chunk header is in this buffer */
-  while ((riff->nextlikely+12) <= last) {
-    guin32 *words = (guin32 *)((guchar *)GST_BUFFER_DATA(buf) + riff->nextlikely - off );
-
-    // loop over all of the chunks to check which one is finished
-    while (riff->chunks) {
-      chunk = g_list_nth_data(riff->chunks, 0);
-
-      debug("next 0x%08x  offset 0x%08lx size 0x%08x\n",riff->nextlikely, chunk->offset, chunk->size);
-      if (riff->nextlikely >= chunk->offset+chunk->size) {
-        //g_print("found END LIST\n");
-       // we have the end of the chunk on the stack, remove it
-       riff->chunks = g_list_remove(riff->chunks, chunk);
-      }
-      else break;
-    }
-
-    debug("next likely chunk is at offset 0x%08x\n",riff->nextlikely);
-
-    chunk = (GstRiffChunk *)g_malloc (sizeof (GstRiffChunk));
-    g_return_val_if_fail (chunk != NULL, GST_RIFF_ENOMEM);
-
-    chunk->offset = riff->nextlikely+8;        /* point to the actual data */
-    chunk->id = GUINT32_FROM_LE (words[0]));
-    chunk->size = GUINT32_FROM_LE (words[1]);
-    chunk->data = (gchar *)(words+2);
-    // we need word alignment
-    //if (chunk->size & 0x01) chunk->size++;
-    chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form,  might not be valid */
-
-
-    if (chunk->id == GST_RIFF_TAG_LIST) {
-      //g_print("found LIST %s\n", gst_riff_id_to_fourcc(chunk->form));
-      riff->nextlikely += 12;  
-      // we push the list chunk on our 'stack'
-      riff->chunks = g_list_prepend(riff->chunks,chunk);
-      // send the buffer to the listener if we have received a function
-      if (riff->new_tag_found) {
-        riff->new_tag_found(chunk, riff->callback_data);
-      }
-    }
-    else {
-
-      debug("chunk id offset %08x is 0x%08lx '%s' and is 0x%08lx long\n",riff->nextlikely, words[0],
-            gst_riff_id_to_fourcc(GUINT32_FROM_LE (words[0])), GUINT32_FROM_LE (words[1]));
-
-      riff->nextlikely += 8 + chunk->size;     /* doesn't include hdr */
-      // if this buffer is incomplete
-      if (riff->nextlikely > last) {
-       guint left = size - (riff->nextlikely - chunk->size - off);
-
-        //g_print("make incomplete buffer %08x\n", left);
-        chunk->data = g_malloc(chunk->size);
-        memcpy(chunk->data, (gchar *)(words+2), left);
-       riff->incomplete_chunk = chunk;
-       riff->incomplete_chunk_size = left;
-      }
-      else {
-        // send the buffer to the listener if we have received a function
-        if (riff->new_tag_found) {
-          riff->new_tag_found(chunk, riff->callback_data);
-        }
-        g_free(chunk);
-      }
-
-      //riff->chunks = g_list_prepend(riff->chunks,chunk);
-    }
-  }
-
-  return 0;
-}
-
-
-gulong gst_riff_fourcc_to_id(gchar *fourcc) {
-  g_return_val_if_fail(fourcc != NULL, 0);
-
-  return (fourcc[0] << 0) | (fourcc[1] << 8) |
-         (fourcc[2] << 16) | (fourcc[3] << 24);
-}
-
-gchar *gst_riff_id_to_fourcc(gulong id) {
-  gchar *fourcc = (gchar *)g_malloc(5);
-
-  g_return_val_if_fail(fourcc != NULL, NULL);
-
-  fourcc[0] = (id >> 0) & 0xff;
-  fourcc[1] = (id >> 8) & 0xff;
-  fourcc[2] = (id >> 16) & 0xff;
-  fourcc[3] = (id >> 24) & 0xff;
-  fourcc[4] = 0;
-
-  return fourcc;
-}
diff --git a/libs/riff/gstriff.h b/libs/riff/gstriff.h
deleted file mode 100644 (file)
index f0e5589..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-#ifndef __GST_RIFF_H__
-#define __GST_RIFF_H__
-
-
-#include <gst/gst.h>
-
-typedef enum {
-  GST_RIFF_OK      =  0,               
-  GST_RIFF_ENOTRIFF = -1,
-  GST_RIFF_EINVAL   = -2,
-  GST_RIFF_ENOMEM   = -3
-} GstRiffReturn;
-
-/* states */
-typedef enum {
-  GST_RIFF_STATE_INITIAL       = 0,
-  GST_RIFF_STATE_HASAVIH       = 1,
-  GST_RIFF_STATE_HASSTRH       = 2,
-  GST_RIFF_STATE_HASSTRF       = 3,
-  GST_RIFF_STATE_MOVI          = 4
-} GstRiffParserState;
-
-#define MAKE_FOUR_CC(a,b,c,d) ( ((guint32)a)     | (((guint32)b)<< 8) | \
-                                ((guint32)c)<<16 | (((guint32)d)<<24) )
-                                                                                                                               
-/* RIFF types */
-#define GST_RIFF_RIFF_WAVE MAKE_FOUR_CC('W','A','V','E')
-#define GST_RIFF_RIFF_AVI  MAKE_FOUR_CC('A','V','I',' ')
-
-/* tags */
-#define GST_RIFF_TAG_RIFF MAKE_FOUR_CC('R','I','F','F')
-#define GST_RIFF_TAG_RIFX MAKE_FOUR_CC('R','I','F','X')
-#define GST_RIFF_TAG_LIST MAKE_FOUR_CC('L','I','S','T')
-#define GST_RIFF_TAG_avih MAKE_FOUR_CC('a','v','i','h')
-#define GST_RIFF_TAG_strd MAKE_FOUR_CC('s','t','r','d')
-#define GST_RIFF_TAG_strh MAKE_FOUR_CC('s','t','r','h')
-#define GST_RIFF_TAG_strf MAKE_FOUR_CC('s','t','r','f')
-#define GST_RIFF_TAG_vedt MAKE_FOUR_CC('v','e','d','t')
-#define GST_RIFF_TAG_JUNK MAKE_FOUR_CC('J','U','N','K')
-#define GST_RIFF_TAG_idx1 MAKE_FOUR_CC('i','d','x','1')
-/* WAV stuff */
-#define GST_RIFF_TAG_fmt  MAKE_FOUR_CC('f','m','t',' ')
-#define GST_RIFF_TAG_data MAKE_FOUR_CC('d','a','t','a')
-
-/* LIST types */
-#define GST_RIFF_LIST_movi MAKE_FOUR_CC('m','o','v','i')
-#define GST_RIFF_LIST_hdrl MAKE_FOUR_CC('h','d','r','l')
-#define GST_RIFF_LIST_strl MAKE_FOUR_CC('s','t','r','l')
-
-/* fcc types */
-#define GST_RIFF_FCC_vids MAKE_FOUR_CC('v','i','d','s')
-#define GST_RIFF_FCC_auds MAKE_FOUR_CC('a','u','d','s')
-#define GST_RIFF_FCC_pads MAKE_FOUR_CC('p','a','d','s')
-#define GST_RIFF_FCC_txts MAKE_FOUR_CC('t','x','t','s')
-#define GST_RIFF_FCC_vidc MAKE_FOUR_CC('v','i','d','c')
-#define GST_RIFF_FCC_iavs MAKE_FOUR_CC('i','a','v','s')
-/* fcc handlers */
-#define GST_RIFF_FCCH_RLE  MAKE_FOUR_CC('R','L','E',' ')
-#define GST_RIFF_FCCH_msvc MAKE_FOUR_CC('m','s','v','c')
-#define GST_RIFF_FCCH_MSVC MAKE_FOUR_CC('M','S','V','C')
-
-/*********Chunk Names***************/
-#define GST_RIFF_FF00 MAKE_FOUR_CC(0xFF,0xFF,0x00,0x00)
-#define GST_RIFF_00   MAKE_FOUR_CC( '0', '0',0x00,0x00)
-#define GST_RIFF_01   MAKE_FOUR_CC( '0', '1',0x00,0x00)
-#define GST_RIFF_02   MAKE_FOUR_CC( '0', '2',0x00,0x00)
-#define GST_RIFF_03   MAKE_FOUR_CC( '0', '3',0x00,0x00)
-#define GST_RIFF_04   MAKE_FOUR_CC( '0', '4',0x00,0x00)
-#define GST_RIFF_05   MAKE_FOUR_CC( '0', '5',0x00,0x00)
-#define GST_RIFF_06   MAKE_FOUR_CC( '0', '6',0x00,0x00)
-#define GST_RIFF_07   MAKE_FOUR_CC( '0', '7',0x00,0x00)
-#define GST_RIFF_00pc MAKE_FOUR_CC( '0', '0', 'p', 'c')
-#define GST_RIFF_01pc MAKE_FOUR_CC( '0', '1', 'p', 'c')
-#define GST_RIFF_00dc MAKE_FOUR_CC( '0', '0', 'd', 'c')
-#define GST_RIFF_00dx MAKE_FOUR_CC( '0', '0', 'd', 'x')
-#define GST_RIFF_00db MAKE_FOUR_CC( '0', '0', 'd', 'b')
-#define GST_RIFF_00xx MAKE_FOUR_CC( '0', '0', 'x', 'x')
-#define GST_RIFF_00id MAKE_FOUR_CC( '0', '0', 'i', 'd')
-#define GST_RIFF_00rt MAKE_FOUR_CC( '0', '0', 'r', 't')
-#define GST_RIFF_0021 MAKE_FOUR_CC( '0', '0', '2', '1')
-#define GST_RIFF_00iv MAKE_FOUR_CC( '0', '0', 'i', 'v')
-#define GST_RIFF_0031 MAKE_FOUR_CC( '0', '0', '3', '1')
-#define GST_RIFF_0032 MAKE_FOUR_CC( '0', '0', '3', '2')
-#define GST_RIFF_00vc MAKE_FOUR_CC( '0', '0', 'v', 'c')
-#define GST_RIFF_00xm MAKE_FOUR_CC( '0', '0', 'x', 'm')
-#define GST_RIFF_01wb MAKE_FOUR_CC( '0', '1', 'w', 'b')
-#define GST_RIFF_01dc MAKE_FOUR_CC( '0', '1', 'd', 'c')
-#define GST_RIFF_00__ MAKE_FOUR_CC( '0', '0', '_', '_')
-
-/*********VIDEO CODECS**************/
-#define GST_RIFF_cram MAKE_FOUR_CC( 'c', 'r', 'a', 'm')
-#define GST_RIFF_CRAM MAKE_FOUR_CC( 'C', 'R', 'A', 'M')
-#define GST_RIFF_wham MAKE_FOUR_CC( 'w', 'h', 'a', 'm')
-#define GST_RIFF_WHAM MAKE_FOUR_CC( 'W', 'H', 'A', 'M')
-#define GST_RIFF_rgb  MAKE_FOUR_CC(0x00,0x00,0x00,0x00)
-#define GST_RIFF_RGB  MAKE_FOUR_CC( 'R', 'G', 'B', ' ')
-#define GST_RIFF_rle8 MAKE_FOUR_CC(0x01,0x00,0x00,0x00)
-#define GST_RIFF_RLE8 MAKE_FOUR_CC( 'R', 'L', 'E', '8')
-#define GST_RIFF_rle4 MAKE_FOUR_CC(0x02,0x00,0x00,0x00)
-#define GST_RIFF_RLE4 MAKE_FOUR_CC( 'R', 'L', 'E', '4')
-#define GST_RIFF_none MAKE_FOUR_CC(0x00,0x00,0xFF,0xFF)
-#define GST_RIFF_NONE MAKE_FOUR_CC( 'N', 'O', 'N', 'E')
-#define GST_RIFF_pack MAKE_FOUR_CC(0x01,0x00,0xFF,0xFF)
-#define GST_RIFF_PACK MAKE_FOUR_CC( 'P', 'A', 'C', 'K')
-#define GST_RIFF_tran MAKE_FOUR_CC(0x02,0x00,0xFF,0xFF)
-#define GST_RIFF_TRAN MAKE_FOUR_CC( 'T', 'R', 'A', 'N')
-#define GST_RIFF_ccc  MAKE_FOUR_CC(0x03,0x00,0xFF,0xFF)
-#define GST_RIFF_CCC  MAKE_FOUR_CC( 'C', 'C', 'C', ' ')
-#define GST_RIFF_cyuv MAKE_FOUR_CC( 'c', 'y', 'u', 'v')
-#define GST_RIFF_CYUV MAKE_FOUR_CC( 'C', 'Y', 'U', 'V')
-#define GST_RIFF_jpeg MAKE_FOUR_CC(0x04,0x00,0xFF,0xFF)
-#define GST_RIFF_JPEG MAKE_FOUR_CC( 'J', 'P', 'E', 'G')
-#define GST_RIFF_MJPG MAKE_FOUR_CC( 'M', 'J', 'P', 'G')
-#define GST_RIFF_mJPG MAKE_FOUR_CC( 'm', 'J', 'P', 'G')
-#define GST_RIFF_IJPG MAKE_FOUR_CC( 'I', 'J', 'P', 'G')
-#define GST_RIFF_rt21 MAKE_FOUR_CC( 'r', 't', '2', '1')
-#define GST_RIFF_RT21 MAKE_FOUR_CC( 'R', 'T', '2', '1')
-#define GST_RIFF_iv31 MAKE_FOUR_CC( 'i', 'v', '3', '1')
-#define GST_RIFF_IV31 MAKE_FOUR_CC( 'I', 'V', '3', '1')
-#define GST_RIFF_iv32 MAKE_FOUR_CC( 'i', 'v', '3', '2')
-#define GST_RIFF_IV32 MAKE_FOUR_CC( 'I', 'V', '3', '2')
-#define GST_RIFF_iv41 MAKE_FOUR_CC( 'i', 'v', '4', '1')
-#define GST_RIFF_IV41 MAKE_FOUR_CC( 'I', 'V', '4', '1')
-#define GST_RIFF_iv50 MAKE_FOUR_CC( 'i', 'v', '5', '0')
-#define GST_RIFF_IV50 MAKE_FOUR_CC( 'I', 'V', '5', '0')
-#define GST_RIFF_cvid MAKE_FOUR_CC( 'c', 'v', 'i', 'd')
-#define GST_RIFF_CVID MAKE_FOUR_CC( 'C', 'V', 'I', 'D')
-#define GST_RIFF_ULTI MAKE_FOUR_CC( 'U', 'L', 'T', 'I')
-#define GST_RIFF_ulti MAKE_FOUR_CC( 'u', 'l', 't', 'i')
-#define GST_RIFF_YUV9 MAKE_FOUR_CC( 'Y', 'V', 'U', '9')
-#define GST_RIFF_YVU9 MAKE_FOUR_CC( 'Y', 'U', 'V', '9')
-#define GST_RIFF_XMPG MAKE_FOUR_CC( 'X', 'M', 'P', 'G')
-#define GST_RIFF_xmpg MAKE_FOUR_CC( 'x', 'm', 'p', 'g')
-#define GST_RIFF_VDOW MAKE_FOUR_CC( 'V', 'D', 'O', 'W')
-#define GST_RIFF_MVI1 MAKE_FOUR_CC( 'M', 'V', 'I', '1')
-#define GST_RIFF_v422 MAKE_FOUR_CC( 'v', '4', '2', '2')
-#define GST_RIFF_V422 MAKE_FOUR_CC( 'V', '4', '2', '2')
-#define GST_RIFF_mvi1 MAKE_FOUR_CC( 'm', 'v', 'i', '1')
-#define GST_RIFF_MPIX MAKE_FOUR_CC(0x04,0x00, 'i', '1')     /* MotionPixels munged their id */
-#define GST_RIFF_AURA MAKE_FOUR_CC( 'A', 'U', 'R', 'A')
-#define GST_RIFF_DMB1 MAKE_FOUR_CC( 'D', 'M', 'B', '1')
-#define GST_RIFF_dmb1 MAKE_FOUR_CC( 'd', 'm', 'b', '1')
-
-#define GST_RIFF_BW10 MAKE_FOUR_CC( 'B', 'W', '1', '0')
-#define GST_RIFF_bw10 MAKE_FOUR_CC( 'b', 'w', '1', '0')
-
-#define GST_RIFF_yuy2 MAKE_FOUR_CC( 'y', 'u', 'y', '2')
-#define GST_RIFF_YUY2 MAKE_FOUR_CC( 'Y', 'U', 'Y', '2')
-#define GST_RIFF_YUV8 MAKE_FOUR_CC( 'Y', 'U', 'V', '8')
-#define GST_RIFF_WINX MAKE_FOUR_CC( 'W', 'I', 'N', 'X')
-#define GST_RIFF_WPY2 MAKE_FOUR_CC( 'W', 'P', 'Y', '2')
-#define GST_RIFF_m263 MAKE_FOUR_CC( 'm', '2', '6', '3')
-#define GST_RIFF_M263 MAKE_FOUR_CC( 'M', '2', '6', '3')
-
-#define GST_RIFF_Q1_0 MAKE_FOUR_CC( 'Q', '1',0x2e, '0')
-#define GST_RIFF_SFMC MAKE_FOUR_CC( 'S', 'F', 'M', 'C')
-
-#define GST_RIFF_y41p MAKE_FOUR_CC( 'y', '4', '1', 'p')
-#define GST_RIFF_Y41P MAKE_FOUR_CC( 'Y', '4', '1', 'P')
-#define GST_RIFF_yv12 MAKE_FOUR_CC( 'y', 'v', '1', '2')
-#define GST_RIFF_YV12 MAKE_FOUR_CC( 'Y', 'V', '1', '2')
-#define GST_RIFF_vixl MAKE_FOUR_CC( 'v', 'i', 'x', 'l')
-#define GST_RIFF_VIXL MAKE_FOUR_CC( 'V', 'I', 'X', 'L')
-#define GST_RIFF_iyuv MAKE_FOUR_CC( 'i', 'y', 'u', 'v')
-#define GST_RIFF_IYUV MAKE_FOUR_CC( 'I', 'Y', 'U', 'V')
-#define GST_RIFF_i420 MAKE_FOUR_CC( 'i', '4', '2', '0')
-#define GST_RIFF_I420 MAKE_FOUR_CC( 'I', '4', '2', '0')
-#define GST_RIFF_vyuy MAKE_FOUR_CC( 'v', 'y', 'u', 'y')
-#define GST_RIFF_VYUY MAKE_FOUR_CC( 'V', 'Y', 'U', 'Y')
-
-#define GST_RIFF_DIV3 MAKE_FOUR_CC( 'D', 'I', 'V', '3')
-
-#define GST_RIFF_rpza MAKE_FOUR_CC( 'r', 'p', 'z', 'a')
-/* And this here's the mistakes that need to be supported */
-#define GST_RIFF_azpr MAKE_FOUR_CC( 'a', 'z', 'p', 'r')  /* recognize Apple's rpza mangled? */
-
-/*********** FND in MJPG **********/
-#define GST_RIFF_ISFT MAKE_FOUR_CC( 'I', 'S', 'F', 'T')
-#define GST_RIFF_IDIT MAKE_FOUR_CC( 'I', 'D', 'I', 'T')
-
-#define GST_RIFF_00AM MAKE_FOUR_CC( '0', '0', 'A', 'M')
-#define GST_RIFF_DISP MAKE_FOUR_CC( 'D', 'I', 'S', 'P')
-#define GST_RIFF_ISBJ MAKE_FOUR_CC( 'I', 'S', 'B', 'J')
-
-#define GST_RIFF_rec  MAKE_FOUR_CC( 'r', 'e', 'c', ' ')
-
-/* common data structures */
-struct _gst_riff_avih {
-  guint32 us_frame;          /* microsec per frame */
-  guint32 max_bps;           /* byte/s overall */
-  guint32 pad_gran;          /* pad_gran (???) */
-  guint32 flags;
-/* flags values */
-#define GST_RIFF_AVIH_HASINDEX       0x00000010 /* has idx1 chunk */
-#define GST_RIFF_AVIH_MUSTUSEINDEX   0x00000020 /* must use idx1 chunk to determine order */
-#define GST_RIFF_AVIH_ISINTERLEAVED  0x00000100 /* AVI file is interleaved */
-#define GST_RIFF_AVIH_WASCAPTUREFILE 0x00010000 /* specially allocated used for capturing real time video */
-#define GST_RIFF_AVIH_COPYRIGHTED    0x00020000 /* contains copyrighted data */
-  guint32 tot_frames;        /* # of frames (all) */
-  guint32 init_frames;       /* initial frames (???) */
-  guint32 streams;
-  guint32 bufsize;           /* suggested buffer size */
-  guint32 width;
-  guint32 height;
-  guint32 scale;
-  guint32 rate;
-  guint32 start;
-  guint32 length;
-};
-
-struct _gst_riff_strh {
-  guint32 type;             /* stream type */
-  guint32 fcc_handler;       /* fcc_handler */
-  guint32 flags;
-/* flags values */
-#define GST_RIFF_STRH_DISABLED        0x000000001
-#define GST_RIFF_STRH_VIDEOPALCHANGES 0x000010000
-  guint32 priority;
-  guint32 init_frames;       /* initial frames (???) */
-  guint32 scale;
-  guint32 rate;
-  guint32 start;
-  guint32 length;
-  guint32 bufsize;           /* suggested buffer size */
-  guint32 quality;
-  guint32 samplesize;
-  /* XXX 16 bytes ? */
-};
-
-struct _gst_riff_strf_vids {       /* == BitMapInfoHeader */
-  guint32 size;
-  guint32 width;
-  guint32 height;
-  guint16 planes;
-  guint16 bit_cnt;
-  guint32 compression;
-  guint32 image_size;
-  guint32 xpels_meter;
-  guint32 ypels_meter;
-  guint32 num_colors;        /* used colors */
-  guint32 imp_colors;        /* important colors */
-  /* may be more for some codecs */
-};
-
-
-struct _gst_riff_strf_auds {       /* == WaveHeader (?) */
-  guint16 format;
-/**** from public Microsoft RIFF docs ******/
-#define GST_RIFF_WAVE_FORMAT_UNKNOWN        (0x0000)
-#define GST_RIFF_WAVE_FORMAT_PCM            (0x0001)
-#define GST_RIFF_WAVE_FORMAT_ADPCM          (0x0002)
-#define GST_RIFF_WAVE_FORMAT_IBM_CVSD       (0x0005)
-#define GST_RIFF_WAVE_FORMAT_ALAW           (0x0006)
-#define GST_RIFF_WAVE_FORMAT_MULAW          (0x0007)
-#define GST_RIFF_WAVE_FORMAT_OKI_ADPCM      (0x0010)
-#define GST_RIFF_WAVE_FORMAT_DVI_ADPCM      (0x0011)
-#define GST_RIFF_WAVE_FORMAT_DIGISTD        (0x0015)
-#define GST_RIFF_WAVE_FORMAT_DIGIFIX        (0x0016)
-#define GST_RIFF_WAVE_FORMAT_YAMAHA_ADPCM   (0x0020)
-#define GST_RIFF_WAVE_FORMAT_DSP_TRUESPEECH (0x0022)
-#define GST_RIFF_WAVE_FORMAT_GSM610         (0x0031)
-#define GST_RIFF_WAVE_FORMAT_MSN            (0x0032)
-#define GST_RIFF_WAVE_FORMAT_MPEGL12        (0x0050)
-#define GST_RIFF_WAVE_FORMAT_MPEGL3         (0x0055)
-#define GST_RIFF_IBM_FORMAT_MULAW           (0x0101)
-#define GST_RIFF_IBM_FORMAT_ALAW            (0x0102)
-#define GST_RIFF_IBM_FORMAT_ADPCM           (0x0103)
-#define GST_RIFF_WAVE_FORMAT_DIVX           (0x0160)
-#define GST_RIFF_WAVE_FORMAT_divx           (0x0161)
-  guint16 channels;
-  guint32 rate;
-  guint32 av_bps;
-  guint16 blockalign;
-  guint16 size;
-};
-
-struct _gst_riff_strf_iavs {    
-  guint32 DVAAuxSrc;
-  guint32 DVAAuxCtl;
-  guint32 DVAAuxSrc1;
-  guint32 DVAAuxCtl1;
-  guint32 DVVAuxSrc;
-  guint32 DVVAuxCtl;
-  guint32 DVReserved1;
-  guint32 DVReserved2;
-};
-
-struct _gst_riff_riff {  
-  guint32 id;
-  guint32 size;
-  guint32 type;
-};
-
-struct _gst_riff_list {  
-  guint32 id;
-  guint32 size;
-  guint32 type;
-};
-
-struct _gst_riff_chunk {  
-  guint32 id;
-  guint32 size;
-};
-
-struct _gst_riff_index_entry {  
-  guint32 id;
-  guint32 flags;
-#define GST_RIFF_IF_LIST               (0x00000001L)
-#define GST_RIFF_IF_KEYFRAME           (0x00000010L)
-#define GST_RIFF_IF_NO_TIME            (0x00000100L)
-#define GST_RIFF_IF_COMPUSE            (0x0FFF0000L)
-  guint32 offset;
-  guint32 size;
-};
-
-typedef struct _gst_riff_riff          gst_riff_riff;
-typedef struct _gst_riff_list          gst_riff_list;
-typedef struct _gst_riff_chunk                 gst_riff_chunk;
-typedef struct _gst_riff_index_entry   gst_riff_index_entry;
-
-typedef struct _gst_riff_avih          gst_riff_avih;
-typedef struct _gst_riff_strh          gst_riff_strh;
-typedef struct _gst_riff_strf_vids     gst_riff_strf_vids;
-typedef struct _gst_riff_strf_auds     gst_riff_strf_auds;
-typedef struct _gst_riff_strf_iavs     gst_riff_strf_iavs;
-typedef struct _GstRiff                GstRiff;
-typedef struct _GstRiffChunk           GstRiffChunk;
-
-typedef void (*GstRiffCallback)        (GstRiffChunk *chunk, gpointer data);
-
-struct _GstRiff {
-  guint32 form;
-
-  /* list of chunks, most recent at the head */
-  GList *chunks;
-
-  /* incomplete chunks are assembled here */
-  GstRiffChunk *incomplete_chunk;
-  guint32 incomplete_chunk_size;
-  /* parse state */
-  GstRiffParserState state;
-  guint32 curoffset;
-  guint32 nextlikely;
-  /* leftover data */
-  guchar *dataleft;
-  guint32 dataleft_size;
-
-  /* callback function and data pointer */
-  GstRiffCallback new_tag_found;
-  gpointer callback_data;
-};
-
-struct _GstRiffChunk {
-  gulong offset;
-
-  guint32 id;
-  guint32 size;
-  guint32 form; /* for list chunks */
-
-  gchar *data;
-};
-
-
-/* from gstriffparse.c */
-GstRiff*               gst_riff_parser_new                     (GstRiffCallback function, gpointer data);
-GstRiffReturn          gst_riff_parser_next_buffer             (GstRiff *riff, GstBuffer *buf, gulong off);
-void                   gst_riff_parser_resync                  (GstRiff *riff, gulong offset);  
-
-/* from gstriffencode.c */
-GstRiff*               gst_riff_encoder_new                    (guint32 type);
-GstRiffReturn          gst_riff_encoder_avih                   (GstRiff *riff, gst_riff_avih *head, gulong size);
-GstRiffReturn          gst_riff_encoder_strh                   (GstRiff *riff, guint32 fcc_type, 
-                                                                gst_riff_strh *head, gulong size);
-GstRiffReturn          gst_riff_encoder_strf                   (GstRiff *riff, void *format, gulong size);
-GstRiffReturn          gst_riff_encoder_chunk                  (GstRiff *riff, guint32 chunk_type, 
-                                                                void *chunk, gulong size);
-
-GstBuffer*             gst_riff_encoder_get_buffer             (GstRiff *riff);
-GstBuffer*             gst_riff_encoder_get_and_reset_buffer   (GstRiff *riff);
-
-/* from gstriffutil.c */
-gulong                         gst_riff_fourcc_to_id                   (gchar *fourcc);
-gchar*                 gst_riff_id_to_fourcc                   (gulong id);
-
-
-#endif /* __GST_RIFF_H__ */
diff --git a/libs/riff/gstriffencode.c b/libs/riff/gstriffencode.c
deleted file mode 100644 (file)
index f5e014a..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-#include <string.h>
-
-//#define DEBUG_ENABLED
-#include "gstriff.h"
-
-#define GST_RIFF_ENCODER_BUF_SIZE    1024
-
-#define ADD_CHUNK(riffenc, chunkid, chunksize) \
-{ \
-  gst_riff_chunk *chunk;\
-  chunk = (gst_riff_chunk *)(riffenc->dataleft + riffenc->nextlikely);\
-  chunk->id = chunkid; \
-  chunk->size = chunksize; \
-  riffenc->nextlikely += sizeof(gst_riff_chunk); \
-}
-
-#define ADD_LIST(riffenc, listsize, listtype) \
-{ \
-  gst_riff_list *list;\
-  list = (gst_riff_list *)(riffenc->dataleft + riffenc->nextlikely); \
-  list->id = GST_RIFF_TAG_LIST; \
-  list->size = listsize; \
-  list->type = listtype; \
-  riffenc->nextlikely += sizeof(gst_riff_list); \
-}
-  
-
-GstRiff *gst_riff_encoder_new(guint32 type) {
-  GstRiff *riff;
-  gst_riff_list *list;
-
-  GST_DEBUG (0,"gst_riff_encoder: making %4.4s encoder\n", (char *)&type);
-  riff = (GstRiff *)g_malloc(sizeof(GstRiff));
-  g_return_val_if_fail(riff != NULL, NULL);
-
-  riff->form = 0;
-  riff->chunks = NULL;
-  riff->state = GST_RIFF_STATE_INITIAL;
-  riff->curoffset = 0;
-  riff->incomplete_chunk = NULL;
-  riff->dataleft = g_malloc(GST_RIFF_ENCODER_BUF_SIZE);
-  riff->dataleft_size = GST_RIFF_ENCODER_BUF_SIZE;
-  riff->nextlikely = 0;
-
-  list = (gst_riff_list *)riff->dataleft;
-  list->id = GST_RIFF_TAG_RIFF;
-  list->size = 0x00FFFFFF;
-  list->type = GST_RIFF_RIFF_AVI;
-
-  riff->nextlikely += sizeof(gst_riff_list);
-  
-  return riff;
-}
-
-gint gst_riff_encoder_avih(GstRiff *riff, gst_riff_avih *head, gulong size) {
-  gst_riff_chunk *chunk;
-
-  g_return_val_if_fail(riff->state == GST_RIFF_STATE_INITIAL, GST_RIFF_EINVAL);
-
-  GST_DEBUG (0,"gst_riff_encoder: add avih\n");
-
-  ADD_LIST(riff, 0xB8, GST_RIFF_LIST_hdrl);
-
-  ADD_CHUNK(riff, GST_RIFF_TAG_avih, size);
-  
-  chunk = (gst_riff_chunk *)(riff->dataleft + riff->nextlikely);
-  memcpy(chunk, head, size);
-  riff->nextlikely += size;
-
-  riff->state = GST_RIFF_STATE_HASAVIH;
-  return GST_RIFF_OK;
-}
-
-gint gst_riff_encoder_strh(GstRiff *riff, guint32 fcc_type, gst_riff_strh *head, gulong size) {
-  gst_riff_chunk *chunk;
-
-  g_return_val_if_fail(riff->state == GST_RIFF_STATE_HASAVIH ||
-                      riff->state == GST_RIFF_STATE_HASSTRF, GST_RIFF_EINVAL);
-
-  GST_DEBUG (0,"gst_riff_encoder: add strh type %08x (%4.4s)\n", fcc_type, (char *)&fcc_type);
-
-  ADD_LIST(riff, 108, GST_RIFF_LIST_strl);
-
-  ADD_CHUNK(riff, GST_RIFF_TAG_strh, size);
-
-  chunk = (gst_riff_chunk *)(riff->dataleft + riff->nextlikely);
-  head->type = fcc_type;
-  memcpy(chunk, head, size);
-
-  riff->nextlikely += size;
-
-  riff->state = GST_RIFF_STATE_HASSTRH;
-  return GST_RIFF_OK;
-}
-
-gint gst_riff_encoder_strf(GstRiff *riff, void *format, gulong size) {
-  gst_riff_chunk *chunk;
-
-  g_return_val_if_fail(riff->state == GST_RIFF_STATE_HASSTRH, GST_RIFF_EINVAL);
-
-  GST_DEBUG (0,"gst_riff_encoder: add strf\n");
-
-  ADD_CHUNK(riff, GST_RIFF_TAG_strf, size);
-
-  chunk = (gst_riff_chunk *)(riff->dataleft + riff->nextlikely);
-  memcpy(chunk, format, size);
-  riff->nextlikely += size;
-
-  riff->state = GST_RIFF_STATE_HASSTRF;
-  return GST_RIFF_OK;
-}
-
-gint gst_riff_encoder_chunk(GstRiff *riff, guint32 chunk_type, void *chunkdata, gulong size) {
-  gst_riff_chunk *chunk;
-
-  g_return_val_if_fail(riff->state == GST_RIFF_STATE_HASSTRF ||
-                      riff->state == GST_RIFF_STATE_MOVI, GST_RIFF_EINVAL);
-
-  if (riff->state != GST_RIFF_STATE_MOVI) {
-    ADD_LIST(riff, 0x00FFFFFF, GST_RIFF_LIST_movi);
-    riff->state = GST_RIFF_STATE_MOVI;
-  }
-
-  GST_DEBUG (0,"gst_riff_encoder: add chunk type %08x (%4.4s)\n", chunk_type, (char *)&chunk_type);
-  
-  ADD_CHUNK(riff, chunk_type, size);
-
-  if (chunkdata != NULL) {
-    chunk = (gst_riff_chunk *)(riff->dataleft + riff->nextlikely);
-    memcpy(chunk, chunkdata, size);
-    riff->nextlikely += size + (size&1);
-  }
-
-  return GST_RIFF_OK;
-}
-
-GstBuffer *gst_riff_encoder_get_buffer(GstRiff *riff) {
-  GstBuffer *newbuf;
-
-  newbuf = gst_buffer_new();
-  GST_BUFFER_DATA(newbuf) = riff->dataleft;
-  GST_BUFFER_SIZE(newbuf) = riff->nextlikely;
-
-  return newbuf;
-}
-
-GstBuffer *gst_riff_encoder_get_and_reset_buffer(GstRiff *riff) {
-  GstBuffer *newbuf;
-
-  newbuf = gst_riff_encoder_get_buffer(riff);
-
-  riff->dataleft = g_malloc(GST_RIFF_ENCODER_BUF_SIZE);
-  riff->dataleft_size = GST_RIFF_ENCODER_BUF_SIZE;
-  riff->nextlikely = 0;
-
-  return newbuf;
-}
-
diff --git a/libs/riff/gstriffparse.c b/libs/riff/gstriffparse.c
deleted file mode 100644 (file)
index 088b4fa..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-#include <string.h>
-
-//#define DEBUG_ENABLED
-#include <gstriff.h>
-
-GstRiff*
-gst_riff_parser_new (GstRiffCallback function, gpointer data) 
-{
-  GstRiff *riff;
-
-  riff = (GstRiff *)g_malloc(sizeof(GstRiff));
-  g_return_val_if_fail(riff != NULL, NULL);
-
-  riff->form = 0;
-  riff->chunks = NULL;
-  riff->state = 0;
-  riff->curoffset = 0;
-  riff->nextlikely = 0;
-  riff->new_tag_found = function;
-  riff->callback_data = data;
-  riff->incomplete_chunk = NULL;
-  riff->dataleft = NULL;
-
-  return riff;
-}
-
-gint 
-gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off) 
-{
-  gulong last, size;
-  GstRiffChunk *chunk;
-
-  g_return_val_if_fail(riff != NULL, GST_RIFF_EINVAL);
-  g_return_val_if_fail(buf != NULL, GST_RIFF_EINVAL);
-  g_return_val_if_fail(GST_BUFFER_DATA(buf) != NULL, GST_RIFF_EINVAL);
-
-  size = GST_BUFFER_SIZE(buf);
-  last = off + size;
-
-  GST_DEBUG (0,"gst_riff_parser: offset new buffer 0x%08lx size 0x%08x\n", off, GST_BUFFER_SIZE(buf));
-
-  if (riff->dataleft) {
-    gulong newsize;
-
-    GST_DEBUG (0,"gst_riff_parser: recovering left data\n");
-    newsize = riff->dataleft_size + size;
-    riff->dataleft = g_realloc(riff->dataleft, newsize);
-    memcpy(riff->dataleft+riff->dataleft_size, GST_BUFFER_DATA(buf), size);
-    gst_buffer_unref(buf);
-
-    buf = gst_buffer_new();
-    GST_BUFFER_DATA(buf) = riff->dataleft;
-    size = GST_BUFFER_SIZE(buf) = newsize;
-    off -= riff->dataleft_size;
-    //last -= riff->dataleft_size;
-    riff->dataleft = NULL;
-  }
-
-  if (off == 0) {
-    guint32 *words = (guint32 *)GST_BUFFER_DATA(buf);
-
-    // don't even try to parse the head if it's not there FIXME
-    if (last < 12) {
-      riff->state = GST_RIFF_ENOTRIFF;
-      return riff->state;
-    }
-
-    //g_print("testing is 0x%08lx '%s'\n",words[0],gst_riff_id_to_fourcc(words[0]));
-    /* verify this is a valid RIFF file, first of all */
-    if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) {
-      riff->state = GST_RIFF_ENOTRIFF;
-      return riff->state;
-    }
-    riff->form = GUINT32_FROM_LE (words[2]);
-    //g_print("form is 0x%08lx '%s'\n",words[2],gst_riff_id_to_fourcc(words[2]));
-    riff->nextlikely = 12;     /* skip 'RIFF', length, and form */
-               // all OK here
-    riff->incomplete_chunk = NULL;
-  }
-
-  // if we have an incomplete chunk from the previous buffer
-  if (riff->incomplete_chunk) {
-    guint leftover;
-    GST_DEBUG (0,"gst_riff_parser: have incomplete chunk %08x filled\n", riff->incomplete_chunk_size);
-    leftover = riff->incomplete_chunk->size - riff->incomplete_chunk_size;
-    if (leftover <= size) {
-      GST_DEBUG (0,"gst_riff_parser: we can fill it from %08x with %08x bytes = %08x\n", 
-               riff->incomplete_chunk_size, leftover, 
-               riff->incomplete_chunk_size+leftover);
-      memcpy(riff->incomplete_chunk->data+riff->incomplete_chunk_size, GST_BUFFER_DATA(buf), leftover);
-
-      if (riff->new_tag_found) {
-        riff->new_tag_found(riff->incomplete_chunk, riff->callback_data);
-      }
-      g_free(riff->incomplete_chunk->data);
-      g_free(riff->incomplete_chunk);
-      riff->incomplete_chunk = NULL;
-    }
-    else {
-      GST_DEBUG (0,"gst_riff_parser: we cannot fill it %08x >= %08lx\n", leftover, size);
-      memcpy(riff->incomplete_chunk->data+riff->incomplete_chunk_size, GST_BUFFER_DATA(buf), size);
-      riff->incomplete_chunk_size += size;
-      return 0;
-    }
-  }
-
-  if (riff->nextlikely & 0x01) riff->nextlikely++;
-
-  GST_DEBUG (0,"gst_riff_parser: next 0x%08x  last 0x%08lx offset %08lx\n",riff->nextlikely, last, off);
-  /* loop while the next likely chunk header is in this buffer */
-  while ((riff->nextlikely+12) <= last) {
-    guint32 *words = (guint32 *)((guchar *)GST_BUFFER_DATA(buf) + riff->nextlikely - off );
-
-    // loop over all of the chunks to check which one is finished
-    while (riff->chunks) {
-      chunk = g_list_nth_data(riff->chunks, 0);
-
-      GST_DEBUG (0,"gst_riff_parser: next 0x%08x  offset 0x%08lx size 0x%08x\n",riff->nextlikely, 
-                     chunk->offset, chunk->size);
-      if (riff->nextlikely >= chunk->offset+chunk->size) {
-        GST_DEBUG (0,"gst_riff_parser: found END LIST\n");
-        // we have the end of the chunk on the stack, remove it
-        riff->chunks = g_list_remove(riff->chunks, chunk);
-      }
-      else break;
-    }
-
-    GST_DEBUG (0,"gst_riff_parser: next likely chunk is at offset 0x%08x\n",riff->nextlikely);
-
-    chunk = (GstRiffChunk *)g_malloc(sizeof(GstRiffChunk));
-    g_return_val_if_fail(chunk != NULL, GST_RIFF_ENOMEM);
-
-    chunk->offset = riff->nextlikely+8;        /* point to the actual data */
-    chunk->id = GUINT32_FROM_LE (words[0]);
-    chunk->size = GUINT32_FROM_LE (words[1]);
-    chunk->data = (gchar *)(words+2);
-    // we need word alignment
-    //if (chunk->size & 0x01) chunk->size++;
-    chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form,  might not be valid */
-
-
-    if (chunk->id == GST_RIFF_TAG_LIST) {
-      GST_DEBUG (0,"found LIST %s\n", gst_riff_id_to_fourcc(chunk->form));
-      riff->nextlikely += 12;  
-      // we push the list chunk on our 'stack'
-      riff->chunks = g_list_prepend(riff->chunks,chunk);
-      // send the buffer to the listener if we have received a function
-      if (riff->new_tag_found) {
-        riff->new_tag_found(chunk, riff->callback_data);
-      }
-    }
-    else {
-
-      GST_DEBUG (0,"gst_riff_parser: chunk id offset %08x is 0x%08x '%s' and is 0x%08x long\n",
-               riff->nextlikely, GUINT32_FROM_LE (words[0]),
-               gst_riff_id_to_fourcc(GUINT32_FROM_LE (words[0])), GUINT32_FROM_LE (words[1]));
-
-      riff->nextlikely += 8 + chunk->size;     /* doesn't include hdr */
-      // if this buffer is incomplete
-      if (riff->nextlikely > last) {
-        guint left = size - (riff->nextlikely - chunk->size - off);
-
-        GST_DEBUG (0,"make incomplete buffer %08x\n", left);
-        chunk->data = g_malloc(chunk->size);
-        memcpy(chunk->data, (gchar *)(words+2), left);
-            riff->incomplete_chunk = chunk;
-            riff->incomplete_chunk_size = left;
-      }
-      else {
-        // send the buffer to the listener if we have received a function
-        if (riff->new_tag_found) {
-          riff->new_tag_found(chunk, riff->callback_data);
-        }
-        g_free(chunk);
-      }
-      if (riff->nextlikely & 0x01) riff->nextlikely++;
-
-      //riff->chunks = g_list_prepend(riff->chunks,chunk);
-    }
-  }
-  if ((riff->nextlikely+12) > last && !riff->incomplete_chunk) {
-    guint left = last - riff->nextlikely;
-    GST_DEBUG (0,"gst_riff_parser: not enough data next 0x%08x  last 0x%08lx %08x %08lx\n",riff->nextlikely, 
-                   last, left, off);
-
-    riff->dataleft = g_malloc(left);
-    riff->dataleft_size = left;
-    memcpy(riff->dataleft, GST_BUFFER_DATA(buf)+size-left, left);
-
-    return 0;
-  }
-
-  return 0;
-}
-
-void 
-gst_riff_parser_resync (GstRiff *riff, gulong offset) 
-{
-  riff->incomplete_chunk = NULL;
-  riff->dataleft = NULL;
-  riff->nextlikely = offset;
-}
diff --git a/libs/riff/gstriffutil.c b/libs/riff/gstriffutil.c
deleted file mode 100644 (file)
index 1a4e7a5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Gnome-Streamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-#include <gstriff.h>
-
-//#define debug(format,args...) g_print(format,##args)
-#define debug(format,args...)
-
-
-gulong gst_riff_fourcc_to_id(gchar *fourcc) {
-  g_return_val_if_fail(fourcc != NULL, 0);
-
-  return (fourcc[0] << 0) | (fourcc[1] << 8) |
-         (fourcc[2] << 16) | (fourcc[3] << 24);
-}
-
-gchar *gst_riff_id_to_fourcc(gulong id) {
-  gchar *fourcc = (gchar *)g_malloc(5);
-
-  g_return_val_if_fail(fourcc != NULL, NULL);
-
-  fourcc[0] = (id >> 0) & 0xff;
-  fourcc[1] = (id >> 8) & 0xff;
-  fourcc[2] = (id >> 16) & 0xff;
-  fourcc[3] = (id >> 24) & 0xff;
-  fourcc[4] = 0;
-
-  return fourcc;
-}