source: roaraudio/roard/output.c @ 3358:7f9d211148e0

Last change on this file since 3358:7f9d211148e0 was 668:71ac426690da, checked in by phi, 16 years ago

added license statements

File size: 2.1 KB
Line 
1//output.c:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008
5 *
6 *  This file is part of roard a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  RoarAudio is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 */
24
25#include "roard.h"
26
27/*
28void         * g_output_buffer;
29unsigned int   g_output_buffer_len;
30*/
31
32int output_buffer_init   (struct roar_audio_info * info) {
33 size_t   size; // = ROAR_OUTPUT_BUFFER_SAMPLES;
34 void   * buf;
35
36/*
37 size *= info->channels;
38 size *= info->bits / 8;
39*/
40
41 size = ROAR_OUTPUT_CALC_OUTBUFSIZE(info);
42
43 ROAR_DBG("output_buffer_init(*): output buffer size is %i", size);
44
45 if ( (buf = malloc(size)) == NULL )
46  return -1;
47
48 g_output_buffer     = buf;
49 g_output_buffer_len = size;
50
51 ROAR_DBG("output_buffer_init(*): output buffer is at %p", buf);
52
53#ifdef ROAR_HAVE_MLOCK
54 ROAR_MLOCK(buf, size);
55#endif
56
57 output_buffer_reinit();
58
59 return 0;
60}
61
62int output_buffer_reinit (void) {
63
64 if ( g_output_buffer != NULL )
65  memset(g_output_buffer, 0, g_output_buffer_len);
66
67 return 0;
68}
69
70int output_buffer_free   (void) {
71 ROAR_DBG("output_buffer_init(*): freeing output buffer at %p", g_output_buffer);
72
73 if ( g_output_buffer )
74  free(g_output_buffer);
75
76 g_output_buffer     = NULL;
77 g_output_buffer_len = 0;
78
79 return 0;
80}
81
82int output_buffer_flush  (DRIVER_USERDATA_T inst, int driver) {
83 ROAR_DBG("output_buffer_init(*): flushing output buffer");
84
85 return driver_write(inst, driver, g_output_buffer, g_output_buffer_len);
86}
87
88//ll
Note: See TracBrowser for help on using the repository browser.