first try at a general gstreamer audio library with helper functions

Original commit message from CVS:
first try at a general gstreamer audio library with helper functions
This commit is contained in:
Thomas Vander Stichele 2001-06-06 14:13:58 +00:00
parent 4343df9e4f
commit fe7b1abb42
3 changed files with 79 additions and 0 deletions

11
libs/audio/Makefile.am Normal file
View file

@ -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

37
libs/audio/gstaudio.c Normal file
View file

@ -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;
}

31
libs/audio/gstaudio.h Normal file
View file

@ -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);