/*
- * Copyright (C) 2005-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2008 Andre Noll <maan@systemlinux.org>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file wav.c a filter that inserts a wave header */
#include "para.h"
#include "list.h"
+#include "sched.h"
#include "filter.h"
#include "string.h"
+/** size of the output buffer */
#define WAV_OUTBUF_SIZE 81920
+/** a wav header is always 44 bytes */
#define WAV_HEADER_LEN 44
+/** always write 16 bit header */
#define BITS 16
-/* derived from oggdec.c of the vorbis-tools-1.0.1 package */
+/**
+ * write a 32 bit unsigned value to a buffer
+ *
+ * \param buf the buffer to write to
+ * \param x the value to write
+ */
#define WRITE_U32(buf, x) (buf)[0] = (unsigned char)((x) & 0xff);\
(buf)[1] = (unsigned char)(((x) >> 8) & 0xff);\
(buf)[2] = (unsigned char)(((x) >> 16) & 0xff);\
(buf)[3] = (unsigned char)(((x) >> 24) & 0xff);
+
+/**
+ * write a 16 bit unsigned value to a buffer
+ *
+ * \param buf the buffer to write to
+ * \param x the value to write
+ */
#define WRITE_U16(buf, x) (buf)[0] = (unsigned char)((x) & 0xff);
-static void make_wav_header(int channels, int samplerate, struct filter_node *fn)
+static void make_wav_header(unsigned int channels, unsigned int samplerate,
+ struct filter_node *fn)
{
char *headbuf = fn->buf;
int *bof = fn->private_data;
if (*bof) {
- make_wav_header(fn->fci->channels, fn->fci->samplerate, fn);
+ make_wav_header(fn->fc->channels, fn->fc->samplerate, fn);
fn->loaded = WAV_HEADER_LEN;
*bof = 0;
// return 0;
}
- copy = MIN(len, fn->bufsize - fn->loaded);
+ copy = PARA_MIN(len, fn->bufsize - fn->loaded);
memmove(fn->buf + fn->loaded, inbuf, copy);
fn->loaded += copy;
// PARA_DEBUG_LOG("len = %d, copy = %d\n", len, copy);
fn->buf = para_malloc(fn->bufsize);
fn->private_data = para_malloc(sizeof(int));
bof = fn->private_data;
+ fn->loaded = 0;
*bof = 1;
- PARA_DEBUG_LOG("wav filter node: %p, output buffer: %p, loaded: %zd\n",
+ PARA_INFO_LOG("wav filter node: %p, output buffer: %p, loaded: %zd\n",
fn, fn->buf, fn->loaded);
}
+/**
+ * the init function of the wav filter
+ *
+ * \param f struct to initialize
+ */
void wav_init(struct filter *f)
{
f->convert = wav_convert;