source: roaraudio/roard/mixer.c @ 5889:d866fb1213d6

Last change on this file since 5889:d866fb1213d6 was 5823:f9f70dbaa376, checked in by phi, 11 years ago

updated copyright

File size: 2.1 KB
Line 
1//mixer.c:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2013
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, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 */
25
26#include "roard.h"
27
28int need_vol_change  (int channels, struct roar_mixer_settings * set) {
29 int i;
30
31 if ( set == NULL || channels < 1 || channels > ROAR_MAX_CHANNELS )
32  return -1;
33
34 if ( set->rpg_mul != set->rpg_div )
35  return 1;
36
37 for (i = 0; i < channels; i++)
38  if ( set->mixer[i] != set->scale )
39   return 1;
40
41 return 0;
42}
43
44#define _err() streams_delete(stream); return -1
45int add_mixer (int subsys, char * name, struct roar_stream_server ** ss_ptr) {
46 struct roar_stream_server * ss;
47 int stream;
48
49 if ( (stream = streams_new()) == -1 )
50  return -1;
51
52 if ( streams_get(stream, &ss) == -1 ) {
53  _err();
54 }
55
56 if ( streams_set_name(stream, name) == -1 ) {
57  _err();
58 }
59
60 if ( client_stream_add(g_self_client, stream) == -1 ) {
61  _err();
62 }
63
64 if ( streams_set_dir(stream, ROAR_DIR_MIXING, 1) == -1 ) {
65  _err();
66 }
67
68 // the mixers are the most sync thing we have...
69 if ( streams_set_rawflag(stream, ROAR_FLAG_SYNC) == -1 ) {
70  _err();
71 }
72
73 if ( streams_set_flag(stream, ROAR_FLAG_IMMUTABLE) == -1 ) {
74  _err();
75 }
76
77 switch (subsys) {
78  case ROAR_SUBSYS_WAVEFORM:
79    ss->delay = _MEGA/ROAR_OUTPUT_CFREQ;
80   break;
81 }
82
83 if ( ss_ptr != NULL )
84  *ss_ptr = ss;
85
86 return stream;
87}
88
89//ll
Note: See TracBrowser for help on using the repository browser.