source: roaraudio/roard/output.c @ 57:b3abe3c77d41

Last change on this file since 57:b3abe3c77d41 was 57:b3abe3c77d41, checked in by phi, 16 years ago

added some more mlock support

File size: 1.2 KB
Line 
1//output.c:
2
3#include "roard.h"
4
5/*
6void         * g_output_buffer;
7unsigned int   g_output_buffer_len;
8*/
9
10int output_buffer_init   (struct roar_audio_info * info) {
11 size_t   size; // = ROAR_OUTPUT_BUFFER_SAMPLES;
12 void   * buf;
13
14/*
15 size *= info->channels;
16 size *= info->bits / 8;
17*/
18
19 size = ROAR_OUTPUT_CALC_OUTBUFSIZE(info);
20
21 ROAR_DBG("output_buffer_init(*): output buffer size is %i", size);
22
23 if ( (buf = malloc(size)) == NULL )
24  return -1;
25
26 g_output_buffer     = buf;
27 g_output_buffer_len = size;
28
29 ROAR_DBG("output_buffer_init(*): output buffer is at %p", buf);
30
31#ifdef ROAR_HAVE_MLOCK
32 ROAR_MLOCK(buf, size);
33#endif
34
35 output_buffer_reinit();
36
37 return 0;
38}
39
40int output_buffer_reinit (void) {
41
42 if ( g_output_buffer != NULL )
43  memset(g_output_buffer, 0, g_output_buffer_len);
44
45 return 0;
46}
47
48int output_buffer_free   (void) {
49 ROAR_DBG("output_buffer_init(*): freeing output buffer at %p", g_output_buffer);
50
51 if ( g_output_buffer )
52  free(g_output_buffer);
53
54 g_output_buffer     = NULL;
55 g_output_buffer_len = 0;
56
57 return 0;
58}
59
60int output_buffer_flush  (DRIVER_USERDATA_T inst, int driver) {
61 ROAR_DBG("output_buffer_init(*): flushing output buffer");
62
63 return driver_write(inst, driver, g_output_buffer, g_output_buffer_len);
64}
65
66//ll
Note: See TracBrowser for help on using the repository browser.