summaryrefslogtreecommitdiffstats
path: root/tderadio3/plugins/alsa-sound/alsa-sound.h
diff options
context:
space:
mode:
Diffstat (limited to 'tderadio3/plugins/alsa-sound/alsa-sound.h')
-rw-r--r--tderadio3/plugins/alsa-sound/alsa-sound.h297
1 files changed, 0 insertions, 297 deletions
diff --git a/tderadio3/plugins/alsa-sound/alsa-sound.h b/tderadio3/plugins/alsa-sound/alsa-sound.h
deleted file mode 100644
index 4a79832..0000000
--- a/tderadio3/plugins/alsa-sound/alsa-sound.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/***************************************************************************
- alsa-sound.h - description
- -------------------
- begin : Thu May 26 2005
- copyright : (C) 2005 by Martin Witte
- email : witte@kawo1.rwth-aachen.de
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#ifndef _KRADIO_ALSA_SOUND_H
-#define _KRADIO_ALSA_SOUND_H
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "../../src/include/ringbuffer.h"
-#include "../../src/include/plugins.h"
-#include "../../src/include/soundstreamclient_interfaces.h"
-
-#include "alsa-config-mixer-setting.h"
-
-#include <tqobject.h>
-#include <tqtimer.h>
-#include <alsa/asoundlib.h>
-
-enum DUPLEX_MODE { DUPLEX_UNKNOWN, DUPLEX_FULL, DUPLEX_HALF };
-
-
-struct SoundStreamConfig
-{
- SoundStreamConfig()
- : m_ActiveMode(false),
- m_Channel(TQString()),
- m_Volume(-1),
- m_Muted(false)
- {}
-
- SoundStreamConfig(const TQString &_channel, bool active_mode = true)
- : m_ActiveMode(active_mode),
- m_Channel(_channel),
- m_Volume(-1),
- m_Muted(false)
- {}
-
- SoundStreamConfig(const SoundStreamConfig &c)
- : m_ActiveMode(c.m_ActiveMode),
- m_Channel(c.m_Channel),
- m_Volume(c.m_Volume),
- m_Muted(c.m_Muted)
- {}
-
- bool m_ActiveMode;
- TQString m_Channel;
- float m_Volume;
- bool m_Muted;
-};
-
-
-class AlsaCaptureThread;
-
-class AlsaMixerElement
-{
-public:
- AlsaMixerElement() { snd_mixer_selem_id_malloc(&m_ID); }
- AlsaMixerElement(snd_mixer_selem_id_t *id) { snd_mixer_selem_id_malloc(&m_ID); snd_mixer_selem_id_copy(m_ID, id) ; }
- AlsaMixerElement(const AlsaMixerElement &x) { snd_mixer_selem_id_malloc(&m_ID); snd_mixer_selem_id_copy(m_ID, x.m_ID); }
- ~AlsaMixerElement() { snd_mixer_selem_id_free (m_ID); }
-
- operator snd_mixer_selem_id_t *&() { return m_ID; }
-
- AlsaMixerElement &operator = (const AlsaMixerElement &x) { snd_mixer_selem_id_copy(m_ID, x.m_ID); return *this; }
-
-protected:
- snd_mixer_selem_id_t *m_ID;
-};
-
-
-class AlsaSoundDevice : public TQObject,
- public PluginBase,
- public ISoundStreamClient
-{
-Q_OBJECT
-
-
-public:
- AlsaSoundDevice (const TQString &name);
- virtual ~AlsaSoundDevice ();
-
- virtual bool connectI(Interface *i);
- virtual bool disconnectI(Interface *i);
-
- // PluginBase
-
-public:
- virtual void saveState (TDEConfig *) const;
- virtual void restoreState (TDEConfig *);
-
- virtual TQString pluginClassName() const { return "AlsaSoundDevice"; }
-
- virtual const TQString &name() const { return PluginBase::name(); }
- virtual TQString &name() { return PluginBase::name(); }
-
- virtual ConfigPageInfo createConfigurationPage();
- virtual AboutPageInfo createAboutPage();
-
- // ISoundStreamClient: direct device access
-
-RECEIVERS:
- void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
- bool preparePlayback(SoundStreamID id, const TQString &channel, bool active_mode, bool start_immediately);
- bool prepareCapture(SoundStreamID id, const TQString &channel);
- bool releasePlayback(SoundStreamID id);
- bool releaseCapture(SoundStreamID id);
-
-ANSWERS:
- bool supportsPlayback() const;
- bool supportsCapture() const;
-
- TQString getSoundStreamClientDescription() const;
-
- // ISoundStreamClient: mixer access
-
-public:
- static
- void getPlaybackMixerChannels(int card, snd_mixer_t *mixer_handle,
- TQStringList &retval, TQMap<TQString, AlsaMixerElement> &int2id);
- static
- void getCaptureMixerChannels (int card, snd_mixer_t *mixer_handle,
- TQStringList &vol_list, TQMap<TQString, AlsaMixerElement> &vol_ch2id,
- TQStringList &sw_list, TQMap<TQString, AlsaMixerElement> &sw_ch2id,
- TQStringList *all_list = NULL);
-
-ANSWERS:
- const TQStringList &getPlaybackChannels() const;
- const TQStringList &getCaptureChannels() const;
-
-RECEIVERS:
- bool setPlaybackVolume(SoundStreamID id, float volume);
- bool setCaptureVolume(SoundStreamID id, float volume);
- bool getPlaybackVolume(SoundStreamID id, float &volume) const;
- bool getCaptureVolume(SoundStreamID id, float &volume) const;
-
- bool mute (SoundStreamID id, bool mute);
- bool unmute (SoundStreamID id, bool unmute);
- bool isMuted(SoundStreamID id, bool &m) const;
-
-
- // ISoundStreamClient: generic broadcasts
-
-RECEIVERS:
- bool startPlayback(SoundStreamID id);
- bool pausePlayback(SoundStreamID id);
- bool stopPlayback(SoundStreamID id);
- bool isPlaybackRunning(SoundStreamID id, bool &b) const;
-
- bool startCaptureWithFormat(SoundStreamID id,
- const SoundFormat &proposed_format,
- SoundFormat &real_format,
- bool force_format);
- bool stopCapture(SoundStreamID id);
- bool isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const;
-
- bool noticeSoundStreamClosed(SoundStreamID id);
- bool noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID);
-
- bool noticeSoundStreamData(SoundStreamID id,
- const SoundFormat &,
- const char *data, size_t size, size_t &consumed_size,
- const SoundMetaData &md
- );
-
-
- // Config Access
-
- int getHWBufferSize() const { return m_HWBufferSize; }
- int getBufferSize() const { return m_BufferSize; }
- bool isPlaybackEnabled() const { return m_EnablePlayback; }
- bool isCaptureEnabled() const { return m_EnableCapture; }
- int getPlaybackCard() const { return m_PlaybackCard; }
- int getPlaybackDevice() const { return m_PlaybackDevice; }
- int getCaptureCard() const { return m_CaptureCard; }
- int getCaptureDevice() const { return m_CaptureDevice; }
- const TQMap<TQString, AlsaConfigMixerSetting> &
- getCaptureMixerSettings() const { return m_CaptureMixerSettings; }
-
- void setHWBufferSize(int s);
- void setBufferSize(int s);
- void enablePlayback(bool on);
- void enableCapture(bool on);
- void setPlaybackDevice(int card, int device);
- void setCaptureDevice(int card, int device);
- void setCaptureMixerSettings(const TQMap<TQString, AlsaConfigMixerSetting> &map);
-
-protected slots:
-
- void slotPollPlayback();
- void slotPollCapture();
-
-signals:
-
- void sigUpdateConfig();
-
-protected:
-// bool event(TQEvent *_e);
-
- bool openAlsaDevice(snd_pcm_t *&alsa_handle, SoundFormat &format, const char *pcm_name, snd_pcm_stream_t stream, int flags, unsigned &latency);
-
- bool openPlaybackDevice (const SoundFormat &format, bool reopen = false);
- bool openCaptureDevice (const SoundFormat &format, bool reopen = false);
- bool closePlaybackDevice(bool force = false);
- bool closeCaptureDevice (bool force = false);
-
- bool openPlaybackMixerDevice (bool reopen = false);
- bool openCaptureMixerDevice (bool reopen = false);
- static bool openMixerDevice(snd_mixer_t *&mixer_handle, int card, bool reopen, TQTimer *timer, int timer_latency);
- bool closeCaptureMixerDevice (bool force = false);
- bool closePlaybackMixerDevice(bool force = false);
- static bool closeMixerDevice(snd_mixer_t *&mixer_handle, int card, SoundStreamID id, snd_pcm_t *pcm_handle, bool force, TQTimer *timer);
-
- void checkMixerVolume(SoundStreamID id);
- float readPlaybackMixerVolume(const TQString &channel, bool &muted) const;
- float readCaptureMixerVolume(const TQString &channel) const;
- bool writePlaybackMixerVolume(const TQString &channel, float &vol, bool muted);
- bool writeCaptureMixerVolume(const TQString &channel, float &vol);
- bool writeCaptureMixerSwitch(const TQString &channel, bool capture);
-
- void selectCaptureChannel (const TQString &channel);
-
- /* ALSA HANDLES */
- snd_pcm_t *m_hPlayback;
- snd_pcm_t *m_hCapture;
- snd_mixer_t *m_hPlaybackMixer;
- snd_mixer_t *m_hCaptureMixer;
-
- SoundFormat m_PlaybackFormat;
- SoundFormat m_CaptureFormat;
- int m_PlaybackCard;
- int m_PlaybackDevice;
- int m_CaptureCard;
- int m_CaptureDevice;
-
- unsigned m_PlaybackLatency;
- unsigned m_CaptureLatency;
-
- TQStringList m_PlaybackChannels,
- m_CaptureChannels,
- m_CaptureChannelsSwitch;
-
- TQMap<TQString, AlsaMixerElement> m_PlaybackChannels2ID,
- m_CaptureChannels2ID,
- m_CaptureChannelsSwitch2ID;
-
- TQMap<SoundStreamID, SoundStreamConfig>
- m_PlaybackStreams,
- m_CaptureStreams;
-
- TQValueList<SoundStreamID>
- m_PassivePlaybackStreams;
- SoundStreamID m_PlaybackStreamID,
- m_CaptureStreamID;
-
- size_t m_HWBufferSize;
- size_t m_BufferSize;
- RingBuffer m_PlaybackBuffer,
- m_CaptureBuffer;
-
- unsigned m_CaptureRequestCounter;
- TQ_UINT64 m_CapturePos;
- time_t m_CaptureStartTime;
-
- size_t //m_PlaybackSkipCount,
- m_CaptureSkipCount;
-
- bool m_EnablePlayback,
- m_EnableCapture;
-
- TQTimer m_PlaybackPollingTimer;
- TQTimer m_CapturePollingTimer;
-
-// AlsaCaptureThread *m_captureThread;
-
- TQMap<TQString, AlsaConfigMixerSetting> m_CaptureMixerSettings;
-
-};
-
-
-
-#endif