first try at a general gstreamer audio library with helper functions
authorThomas Vander Stichele <thomas@apestaart.org>
Wed, 6 Jun 2001 14:13:58 +0000 (14:13 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Wed, 6 Jun 2001 14:13:58 +0000 (14:13 +0000)
Original commit message from CVS:
first try at a general gstreamer audio library with helper functions

libs/audio/Makefile.am [new file with mode: 0644]
libs/audio/gstaudio.c [new file with mode: 0644]
libs/audio/gstaudio.h [new file with mode: 0644]

diff --git a/libs/audio/Makefile.am b/libs/audio/Makefile.am
new file mode 100644 (file)
index 0000000..355f3f5
--- /dev/null
@@ -0,0 +1,11 @@
+filterdir = $(libdir)/gst
+
+filter_LTLIBRARIES = libgstaudio.la
+
+libgstaudio_la_SOURCES = gstaudio.c
+
+libgstaudioincludedir = $(includedir)/gst/libs/gstaudio
+libgstaudioinclude_HEADERS = gstaudio.h
+
+# FIXME is this needed?
+CFLAGS += -O2 $(FOMIT_FRAME_POINTER) -finline-functions -ffast-math
diff --git a/libs/audio/gstaudio.c b/libs/audio/gstaudio.c
new file mode 100644 (file)
index 0000000..0faca01
--- /dev/null
@@ -0,0 +1,37 @@
+#include "gstaudio.h"
+
+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;
+}
diff --git a/libs/audio/gstaudio.h b/libs/audio/gstaudio.h
new file mode 100644 (file)
index 0000000..ce35115
--- /dev/null
@@ -0,0 +1,31 @@
+/* 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.
+ */
+
+/*
+ * this library defines and implements some helper functions for audio
+ * handling
+ */
+
+#include <gst/gst.h>
+
+/* calculate length in seconds of audio buffer buf based on caps of pad */
+
+double                 gst_audio_length (GstPad* pad, GstBuffer* buf);
+