2 * AudioAlsa.h - device-class that implements ALSA-PCM-output
4 * Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
28 #include "lmmsconfig.h"
32 // older ALSA-versions might require this
33 #define ALSA_PCM_NEW_HW_PARAMS_API
35 #include <alsa/asoundlib.h>
37 #include "AudioBackend.h"
44 class AudioAlsa
: public AudioBackend
, public QThread
47 AudioAlsa( bool & _success_ful
, AudioOutputContext
* context
);
50 inline static QString
name()
52 return QT_TRANSLATE_NOOP( "setupWidget",
53 "ALSA (Advanced Linux Sound Architecture)" );
56 static QString
probeDevice();
59 class setupWidget
: public AudioBackend::setupWidget
62 setupWidget( QWidget
* _parent
);
63 virtual ~setupWidget();
65 virtual void saveSettings();
69 lcdSpinBox
* m_channels
;
71 void poo(const QString
& s
)
73 printf("Got %s\n", qPrintable( s
) );
80 virtual void startProcessing();
81 virtual void stopProcessing();
82 virtual void applyQualitySettings();
85 int setHWParams( const ch_cnt_t _channels
, snd_pcm_access_t _access
);
87 int handleError( int _err
);
92 snd_pcm_uframes_t m_bufferSize
;
93 snd_pcm_uframes_t m_periodSize
;
95 snd_pcm_hw_params_t
* m_hwParams
;
96 snd_pcm_sw_params_t
* m_swParams
;