/*
- * Copyright (C) 2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-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 osx_write.c paraslash's output plugin for MacOs */
* <skortze@sourceforge.net>
*/
+#include <sys/types.h>
+#include <dirent.h>
#include <CoreAudio/CoreAudio.h>
#include "para.h"
#include "fd.h"
float *buffer;
/** the size of this buffer */
long size;
- /* current position in the buffer */
+ /** current position in the buffer */
float *ptr;
/** number of floats not yet consuned */
long remaining;
struct osx_buffer *next;
};
+/** data specific to the osx writer */
struct private_osx_write_data {
/** the main control structure for audio data manipulation */
AudioUnit audio_unit;
char play;
/** callback reads audio data from this buffer */
struct osx_buffer *from;
- /* the post_select writes audio data here */
+ /** the post_select writes audio data here */
struct osx_buffer *to;
/** sample rate of the current audio stream */
unsigned samplerate;
b->size = size;
}
dest = b->buffer;
- while (size--) {
- char *tmp = (char *)source;
- char c = *tmp;
- *tmp = *(tmp + 1);
- *(tmp + 1) = c;
- /* *dest++ = ((*source++) + 32768) / 65536.0; */
+ while (size--)
*dest++ = (*source++) / 32768.0;
- }
b->ptr = b->buffer;
b->remaining = b->size;
}
dest = outOutputData->mBuffers[i].mData;
while (m > 0) {
if ((n = powd->from->remaining) <= 0) {
- PARA_INFO_LOG("%s", "buffer underrun\n");
- /* no more bytes in the current read buffer! */
- while ((n = powd->from->remaining) <= 0)
- /* wait for the results */
- usleep(2000);
+ PARA_INFO_LOG("buffer underrun\n");
+ return 0;
}
// PARA_INFO_LOG("buf %p: n = %ld, m= %ld\n", powd->from->buffer, n, m);
/*
return ret;
}
-__malloc void *osx_write_parse_config(char *options)
+__malloc static void *osx_write_parse_config(const char *options)
{
struct osx_write_args_info *conf
= para_calloc(sizeof(struct osx_write_args_info));