summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2005-08-31 16:28:05 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2005-08-31 16:28:05 +0000
commit4b5a02d7fbc040fcc95d3e638953040e7a322d1e (patch)
tree9a21c689bcf24337ed084725dbff2b379b33ade0
parentc24fdce58cf9b3b71ef0ea8ffb223f9fcdfba87a (diff)
remove dvdlpcmdec, it's dvd stuff
Original commit message from CVS: remove dvdlpcmdec, it's dvd stuff
-rw-r--r--gst/dvdlpcmdec/.gitignore7
-rw-r--r--gst/dvdlpcmdec/Makefile.am9
-rw-r--r--gst/dvdlpcmdec/gstdvdlpcmdec.c396
-rw-r--r--gst/dvdlpcmdec/gstdvdlpcmdec.h66
4 files changed, 0 insertions, 478 deletions
diff --git a/gst/dvdlpcmdec/.gitignore b/gst/dvdlpcmdec/.gitignore
deleted file mode 100644
index 08f5ed37..00000000
--- a/gst/dvdlpcmdec/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-*.o
-*.lo
-*.la
-.deps
-.libs
diff --git a/gst/dvdlpcmdec/Makefile.am b/gst/dvdlpcmdec/Makefile.am
deleted file mode 100644
index 31e51169..00000000
--- a/gst/dvdlpcmdec/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-
-plugin_LTLIBRARIES = libgstdvdlpcmdec.la
-
-libgstdvdlpcmdec_la_SOURCES = gstdvdlpcmdec.c
-libgstdvdlpcmdec_la_CFLAGS = $(GST_CFLAGS)
-libgstdvdlpcmdec_la_LIBADD =
-libgstdvdlpcmdec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-
-noinst_HEADERS = gstdvdlpcmdec.h
diff --git a/gst/dvdlpcmdec/gstdvdlpcmdec.c b/gst/dvdlpcmdec/gstdvdlpcmdec.c
deleted file mode 100644
index 19b02251..00000000
--- a/gst/dvdlpcmdec/gstdvdlpcmdec.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- * Copyright (C) <2005> Jan Schmidt <jan@noraisin.net>
- *
- * 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.
- */
-/* Element-Checklist-Version: TODO */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-
-#include "gstdvdlpcmdec.h"
-#include <gst/audio/audio.h>
-
-GST_DEBUG_CATEGORY_STATIC (dvdlpcm_debug);
-#define GST_CAT_DEFAULT dvdlpcm_debug
-
-/* elementfactory information */
-static GstElementDetails gst_dvdlpcmdec_details =
-GST_ELEMENT_DETAILS ("DVD LPCM Audio decoder",
- "Codec/Demuxer/Audio",
- "Decode DVD LPCM frames into standard PCM audio",
- "Jan Schmidt <jan@noraisin.net>");
-
-static GstStaticPadTemplate gst_dvdlpcmdec_sink_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-dvd-lpcm, "
- "width = (int) { 16, 20, 24 }, "
- "rate = (int) { 48000, 96000 }, "
- "channels = (int) [ 1, 8 ], "
- "dynamic_range = (int) [ 0, 255 ], "
- "emphasis = (boolean) { TRUE, FALSE }, "
- "mute = (boolean) { TRUE, FALSE }")
- );
-
-static GstStaticPadTemplate gst_dvdlpcmdec_src_template =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS)
- );
-
-/* DvdLpcmDec signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum
-{
- ARG_0
- /* FILL ME */
-};
-
-static void gst_dvdlpcmdec_base_init (gpointer g_class);
-static void gst_dvdlpcmdec_class_init (GstDvdLpcmDecClass * klass);
-static void gst_dvdlpcmdec_init (GstDvdLpcmDec * dvdlpcmdec);
-
-static void gst_dvdlpcmdec_chain (GstPad * pad, GstData * _data);
-static GstPadLinkReturn gst_dvdlpcmdec_link (GstPad * pad,
- const GstCaps * caps);
-
-static GstElementStateReturn gst_dvdlpcmdec_change_state (GstElement * element);
-
-static GstElementClass *parent_class = NULL;
-
-GType
-gst_dvdlpcmdec_get_type (void)
-{
- static GType dvdlpcmdec_type = 0;
-
- if (!dvdlpcmdec_type) {
- static const GTypeInfo dvdlpcmdec_info = {
- sizeof (GstDvdLpcmDecClass),
- gst_dvdlpcmdec_base_init,
- NULL,
- (GClassInitFunc) gst_dvdlpcmdec_class_init,
- NULL,
- NULL,
- sizeof (GstDvdLpcmDec),
- 0,
- (GInstanceInitFunc) gst_dvdlpcmdec_init,
- };
-
- dvdlpcmdec_type =
- g_type_register_static (GST_TYPE_ELEMENT, "GstDvdLpcmDec",
- &dvdlpcmdec_info, 0);
- }
- return dvdlpcmdec_type;
-}
-
-static void
-gst_dvdlpcmdec_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_dvdlpcmdec_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_dvdlpcmdec_src_template));
- gst_element_class_set_details (element_class, &gst_dvdlpcmdec_details);
-}
-
-static void
-gst_dvdlpcmdec_class_init (GstDvdLpcmDecClass * klass)
-{
- GstElementClass *gstelement_class;
-
- gstelement_class = (GstElementClass *) klass;
-
- parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
-
- gstelement_class->change_state = gst_dvdlpcmdec_change_state;
-}
-
-static void
-gst_dvdlpcm_reset (GstDvdLpcmDec * dvdlpcmdec)
-{
- dvdlpcmdec->rate = 0;
- dvdlpcmdec->channels = 0;
- dvdlpcmdec->width = 0;
- dvdlpcmdec->out_width = 0;
- dvdlpcmdec->dynamic_range = 0;
- dvdlpcmdec->emphasis = FALSE;
- dvdlpcmdec->mute = FALSE;
- dvdlpcmdec->offset = 0;
-
- gst_pad_set_explicit_caps (dvdlpcmdec->srcpad, NULL);
-}
-
-static void
-gst_dvdlpcmdec_init (GstDvdLpcmDec * dvdlpcmdec)
-{
- dvdlpcmdec->sinkpad =
- gst_pad_new_from_template (gst_static_pad_template_get
- (&gst_dvdlpcmdec_sink_template), "sink");
- gst_pad_set_link_function (dvdlpcmdec->sinkpad, gst_dvdlpcmdec_link);
- gst_pad_set_chain_function (dvdlpcmdec->sinkpad, gst_dvdlpcmdec_chain);
- gst_element_add_pad (GST_ELEMENT (dvdlpcmdec), dvdlpcmdec->sinkpad);
-
- dvdlpcmdec->srcpad =
- gst_pad_new_from_template (gst_static_pad_template_get
- (&gst_dvdlpcmdec_src_template), "src");
- gst_pad_use_explicit_caps (dvdlpcmdec->srcpad);
- gst_element_add_pad (GST_ELEMENT (dvdlpcmdec), dvdlpcmdec->srcpad);
-
- gst_dvdlpcm_reset (dvdlpcmdec);
-}
-
-
-static GstPadLinkReturn
-gst_dvdlpcmdec_link (GstPad * pad, const GstCaps * caps)
-{
- GstStructure *structure;
- gboolean res = TRUE;
- GstDvdLpcmDec *dvdlpcmdec;
- GstCaps *src_caps;
-
- g_return_val_if_fail (caps != NULL, GST_PAD_LINK_REFUSED);
- g_return_val_if_fail (pad != NULL, GST_PAD_LINK_REFUSED);
-
- dvdlpcmdec = GST_DVDLPCMDEC (gst_pad_get_parent (pad));
-
- structure = gst_caps_get_structure (caps, 0);
-
- res &= gst_structure_get_int (structure, "rate", &dvdlpcmdec->rate);
- res &= gst_structure_get_int (structure, "channels", &dvdlpcmdec->channels);
- res &= gst_structure_get_int (structure, "width", &dvdlpcmdec->width);
- res &= gst_structure_get_int (structure, "dynamic_range",
- &dvdlpcmdec->dynamic_range);
- res &= gst_structure_get_boolean (structure, "emphasis",
- &dvdlpcmdec->emphasis);
- res &= gst_structure_get_boolean (structure, "mute", &dvdlpcmdec->mute);
-
- if (!res)
- return GST_PAD_LINK_REFUSED;
-
- /* Output width is the input width rounded up to the nearest byte */
- if (dvdlpcmdec->width == 20)
- dvdlpcmdec->out_width = 24;
- else
- dvdlpcmdec->out_width = dvdlpcmdec->width;
-
- /* Build explicit caps to set on the src pad */
- src_caps = gst_caps_new_simple ("audio/x-raw-int",
- "rate", G_TYPE_INT, dvdlpcmdec->rate,
- "channels", G_TYPE_INT, dvdlpcmdec->channels,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "depth", G_TYPE_INT, dvdlpcmdec->out_width,
- "width", G_TYPE_INT, dvdlpcmdec->out_width,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
-
- GST_DEBUG_OBJECT (dvdlpcmdec, "Set rate %d, channels %d, width %d (out %d)",
- dvdlpcmdec->rate, dvdlpcmdec->channels, dvdlpcmdec->width,
- dvdlpcmdec->out_width);
-
- if (!gst_pad_set_explicit_caps (dvdlpcmdec->srcpad, src_caps))
- res = FALSE;
-
- gst_caps_free (src_caps);
-
- if (!res)
- return GST_PAD_LINK_REFUSED;
-
- return GST_PAD_LINK_OK;
-}
-
-static void
-gst_dvdlpcmdec_chain (GstPad * pad, GstData * _data)
-{
- GstBuffer *buf = GST_BUFFER (_data);
- GstDvdLpcmDec *dvdlpcmdec;
- gint64 size;
-
- g_return_if_fail (pad != NULL);
- g_return_if_fail (GST_IS_PAD (pad));
- g_return_if_fail (buf != NULL);
-
- dvdlpcmdec = GST_DVDLPCMDEC (gst_pad_get_parent (pad));
-
- size = GST_BUFFER_SIZE (buf);
-
- GST_LOG_OBJECT (dvdlpcmdec, "got buffer %p of size %" G_GINT64_FORMAT, buf,
- size);
-
- if (dvdlpcmdec->rate == 0) {
- GST_ELEMENT_ERROR (dvdlpcmdec, STREAM, FORMAT, (NULL),
- ("Buffer pushed before negotiation"));
- gst_buffer_unref (buf);
- return;
- }
-
- if (!GST_PAD_IS_USABLE (dvdlpcmdec->srcpad)) {
- GST_DEBUG_OBJECT (dvdlpcmdec, "Discarding buffer on disabled pad");
- gst_buffer_unref (buf);
- return;
- }
-
- /* We don't currently do anything at all regarding emphasis, mute or
- * dynamic_range - I'm not sure what they're for */
- switch (dvdlpcmdec->width) {
- case 16:
- {
- /* We can just pass 16-bits straight through intact */
- dvdlpcmdec->offset += GST_BUFFER_SIZE (buf);
- gst_pad_push (dvdlpcmdec->srcpad, GST_DATA (buf));
- return;
- }
- case 20:
- {
- /* Allocate a new buffer and copy 20-bit width to 24-bit */
- gint64 samples = size * 8 / 20;
- gint64 count = size / 10;
- gint64 i;
- guchar *src;
- guchar *dest;
- GstBuffer *outbuf;
-
- if (count * 10 != samples * 3) {
- g_print ("bleh\n");
- }
- outbuf = gst_pad_alloc_buffer (dvdlpcmdec->srcpad, dvdlpcmdec->offset,
- samples * 3);
- if (!outbuf) {
- GST_ELEMENT_ERROR (dvdlpcmdec, RESOURCE, FAILED, (NULL),
- ("Buffer allocation failed"));
- gst_buffer_unref (buf);
- return;
- }
- gst_buffer_stamp (outbuf, buf);
-
- src = GST_BUFFER_DATA (buf);;
- dest = GST_BUFFER_DATA (outbuf);
-
- /* Copy 20-bit LPCM format to 24-bit buffers, with 0x00 in the lowest
- * nibble. Not that the first 2 bytes are already correct */
- for (i = 0; i < count; i++) {
- dest[0] = src[0];
- dest[1] = src[1];
- dest[2] = src[8] & 0xf0;
- dest[3] = src[2];
- dest[4] = src[3];
- dest[5] = (src[8] & 0x0f) << 4;
- dest[6] = src[4];
- dest[7] = src[5];
- dest[8] = src[9] & 0x0f;
- dest[9] = src[6];
- dest[10] = src[7];
- dest[11] = (src[9] & 0x0f) << 4;
-
- src += 10;
- dest += 12;
- }
-
- gst_buffer_unref (buf);
- dvdlpcmdec->offset += GST_BUFFER_SIZE (outbuf);
- gst_pad_push (dvdlpcmdec->srcpad, GST_DATA (outbuf));
- return;
- }
- case 24:
- {
- /* Rearrange 24-bit LPCM format in-place. Note that the first 2
- * and last byte are already correct */
- gint64 count = size / 12;
- gint64 i;
- guchar *src;
-
- /* Ensure our output buffer is writable */
- buf = gst_buffer_copy_on_write (buf);
- src = GST_BUFFER_DATA (buf);
-
- for (i = 0; i < count; i++) {
- guchar temp[9];
-
- temp[0] = src[8];
- temp[1] = src[2];
- temp[2] = src[3];
- temp[3] = src[9];
- temp[4] = src[4];
- temp[5] = src[5];
- temp[6] = src[10];
- temp[7] = src[6];
- temp[8] = src[7];
-
- memcpy (src + 2, temp, 9);
- src += 12;
- }
-
- dvdlpcmdec->offset += GST_BUFFER_SIZE (buf);
- gst_pad_push (dvdlpcmdec->srcpad, GST_DATA (buf));
- return;
- }
- default:
- GST_ELEMENT_ERROR (dvdlpcmdec, STREAM, WRONG_TYPE, (NULL),
- ("Invalid sample width configured"));
- }
-
- gst_buffer_unref (buf);
-}
-
-static GstElementStateReturn
-gst_dvdlpcmdec_change_state (GstElement * element)
-{
- GstDvdLpcmDec *dvdlpcmdec = GST_DVDLPCMDEC (element);
-
- switch (GST_STATE_TRANSITION (element)) {
- case GST_STATE_PAUSED_TO_READY:
- gst_dvdlpcm_reset (dvdlpcmdec);
- break;
- default:
- break;
- }
-
- if (parent_class->change_state)
- return parent_class->change_state (element);
-
- return GST_STATE_SUCCESS;
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- GST_DEBUG_CATEGORY_INIT (dvdlpcm_debug, "dvdlpcmdec", 0, "DVD LPCM Decoder");
-
- if (!gst_element_register (plugin, "dvdlpcmdec", GST_RANK_PRIMARY,
- GST_TYPE_DVDLPCMDEC)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "dvdlpcmdec",
- "Decode DVD LPCM frames into standard PCM",
- plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
diff --git a/gst/dvdlpcmdec/gstdvdlpcmdec.h b/gst/dvdlpcmdec/gstdvdlpcmdec.h
deleted file mode 100644
index 099e70f6..00000000
--- a/gst/dvdlpcmdec/gstdvdlpcmdec.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- * Copyright (C) <2005> Jan Schmidt <jan@noraisin.net>
- *
- * 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_DVDLPCMDEC_H__
-#define __GST_DVDLPCMDEC_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_DVDLPCMDEC \
- (gst_dvdlpcmdec_get_type())
-#define GST_DVDLPCMDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVDLPCMDEC,GstDvdLpcmDec))
-#define GST_DVDLPCMDEC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVDLPCMDEC,GstDvdLpcmDec))
-#define GST_IS_DVDLPCMDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DVDLPCMDEC))
-#define GST_IS_DVDLPCMDEC_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVDLPCMDEC))
-
-typedef struct _GstDvdLpcmDec GstDvdLpcmDec;
-typedef struct _GstDvdLpcmDecClass GstDvdLpcmDecClass;
-
-struct _GstDvdLpcmDec {
- GstElement element;
-
- GstPad *sinkpad,*srcpad;
-
- guint rate;
- guint channels;
- guint width;
- guint out_width;
- guint dynamic_range;
- guint emphasis;
- guint mute;
-
- guint64 offset;
-};
-
-struct _GstDvdLpcmDecClass {
- GstElementClass parent_class;
-};
-
-GType gst_dvdlpcmdec_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_DVDLPCMDEC_H__ */