source: roaraudio/roard/driver_wmm.c @ 2775:4c6ea0731ddf

Last change on this file since 2775:4c6ea0731ddf was 2775:4c6ea0731ddf, checked in by phi, 15 years ago

set up a lot internal parameters

File size: 2.3 KB
Line 
1//driver_wmm.c:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009
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#if defined(ROAR_HAVE_H_MMSYSTEM) && defined(ROAR_TARGET_WIN32)
28
29int     driver_wmm_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
30 struct driver_wmm * self;
31 WAVEFORMATEX wavefmt;
32
33 if ( (self = malloc(sizeof(struct driver_wmm))) == NULL )
34  return -1;
35
36 memset(self, 0, sizeof(struct driver_wmm));
37
38 // VIO Setup:
39 memset(inst, 0, sizeof(struct roar_vio_calls));
40 inst->inst  = self;
41 inst->close = driver_wmm_close_vio;
42 inst->write = driver_wmm_write;
43
44 // WMM Setup:
45 memset(&wavefmt, 0, sizeof(wavefmt));
46
47 wavefmt.wFormatTag      = WAVE_FORMAT_PCM;
48 wavefmt.nChannels       = info->channels;
49 wavefmt.wBitsPerSample  = info->bits;
50 wavefmt.nSamplesPerSec  = info->rate;
51 wavefmt.nBlockAlign     = (wavefmt.wBitsPerSample>>3)*wavefmt.nChannels;
52 wavefmt.nAvgBytesPerSec = wavefmt.nSamplesPerSec*wavefmt.nBlockAlign;
53 wavefmt.cbSize          = 0;
54
55 /* $$$ later this should be optionnal parms */
56  self->blocks      = 64;
57  self->splPerBlock = 512;
58  self->msPerBlock  =
59    (self->splPerBlock * 1000 + info->rate - 1) / info->rate;
60
61 return 0;
62}
63
64int     driver_wmm_close_vio(struct roar_vio_calls * vio) {
65 struct driver_wmm * self;
66
67 if ( vio == NULL )
68  return -1;
69
70 if ( (self = vio->inst) == NULL )
71  return -1;
72
73 free(self);
74
75 return 0;
76}
77
78ssize_t driver_wmm_write(struct roar_vio_calls * vio, void *buf, size_t count) {
79 return -1;
80}
81
82#endif
83
84//ll
Note: See TracBrowser for help on using the repository browser.