diff options
Diffstat (limited to 'src/modules/snd/libkvisnd.h')
-rw-r--r-- | src/modules/snd/libkvisnd.h | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/src/modules/snd/libkvisnd.h b/src/modules/snd/libkvisnd.h new file mode 100644 index 0000000..6becfa3 --- /dev/null +++ b/src/modules/snd/libkvisnd.h @@ -0,0 +1,213 @@ +#ifndef _LIBKVISND_H_ +#define _LIBKVISND_H_ + +// +// File : libkvisnd.h +// Creation date : Apr 21 2002 12:30:25 CEST by Juan Jos��varez +// +// This file is part of the KVirc irc client distribution +// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net) +// +// 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 opinion) any later version. +// +// This program is distributed in the HOPE that it will be USEFUL, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, write to the Free Software Foundation, +// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// + +#include "kvi_settings.h" + +#include <qobject.h> + +#include "kvi_thread.h" +#include "kvi_string.h" + +#include "kvi_pointerlist.h" +#include "kvi_pointerhashtable.h" +#include "kvi_options.h" + +//class KviWavSoundFileReader +//{ +//public: +// KviWavSoundFileReader(QFile * f); +// ~KviWavSoundFileReader(); +//protected: +// QFile * m_pFile; +//public: +// static bool recognize(KviFile * f); +// bool readHeader(); +//}; + + +//bool KviWavSoundFileReader::recognize(KviFile * f) +//{ +// kvi_u32_t tag; +// if(!f->load(tag))return false; +// +// f->at(0); +//} + +//bool KviWavSoundFileReader::readHeader() +//{ +// +// +// tag = get_le32(pb); +// +// if (tag != MKTAG('R', 'I', 'F', 'F')) +// return -1; +// get_le32(pb); /* file size */ +// tag = get_le32(pb); +// if (tag != MKTAG('W', 'A', 'V', 'E')) +// return -1; +// +// size = find_tag(pb, MKTAG('f', 'm', 't', ' ')); +// if (size < 0) +// return -1; +// id = get_le16(pb); +// channels = get_le16(pb); +// rate = get_le32(pb); +// bit_rate = get_le32(pb) * 8; +// get_le16(pb); /* block align */ +// get_le16(pb); /* bits per sample */ +// if (size >= 18) { +// /* wav_extra_size */ +// extra_size = get_le16(pb); +// /* skip unused data */ +// url_fseek(pb, size - 18, SEEK_CUR); +// } +// +// size = find_tag(pb, MKTAG('d', 'a', 't', 'a')); +// if (size < 0) +// return -1; +// +// /* now we are ready: build format streams */ +// st = malloc(sizeof(AVStream)); +// if (!st) +// return -1; +// s->nb_streams = 1; +// s->streams[0] = st; +// +// st->id = 0; +// +// st->codec.codec_type = CODEC_TYPE_AUDIO; +// st->codec.codec_tag = id; +// st->codec.codec_id = codec_get_id(codec_wav_tags, id); +// st->codec.channels = channels; +// st->codec.sample_rate = rate; +//} + +class KviSoundThread : public KviThread +{ +public: + KviSoundThread(const QString &szFileName); + virtual ~KviSoundThread(); +protected: + QString m_szFileName; +protected: + virtual void play(); + virtual void run(); +}; + +#ifndef COMPILE_ON_WINDOWS + #ifdef COMPILE_OSS_SUPPORT + class KviOssSoundThread : public KviSoundThread + { + public: + KviOssSoundThread(const QString &szFileName); + virtual ~KviOssSoundThread(); + protected: + virtual void play(); + }; + + #ifdef COMPILE_AUDIOFILE_SUPPORT + class KviOssAudiofileSoundThread : public KviSoundThread + { + public: + KviOssAudiofileSoundThread(const QString &szFileName); + virtual ~KviOssAudiofileSoundThread(); + protected: + virtual void play(); + }; + #endif //COMPILE_AUDIOFILE_SUPPORT + #endif //COMPILE_OSS_SUPPORT + + #ifdef COMPILE_ESD_SUPPORT + class KviEsdSoundThread : public KviSoundThread + { + public: + KviEsdSoundThread(const QString &szFileName); + virtual ~KviEsdSoundThread(); + protected: + virtual void play(); + }; + #endif //COMPILE_ESD_SUPPORT + + #ifdef COMPILE_ARTS_SUPPORT + class KviArtsSoundThread : public KviSoundThread + { + public: + KviArtsSoundThread(const QString &szFileName); + virtual ~KviArtsSoundThread(); + protected: + virtual void play(); + }; + #endif //COMPILE_ARTS_SUPPORT +#endif //!COMPILE_ON_WINDOWS + +class KviSoundPlayer; + +typedef bool (KviSoundPlayer::*SoundSystemRoutine)(const QString &szFileName); + +class KviSoundPlayer : public QObject +{ + friend class KviSoundThread; + Q_OBJECT +public: + KviSoundPlayer(); + virtual ~KviSoundPlayer(); +public: + bool play(const QString &szFileName); + void detectSoundSystem(); + bool havePlayingSounds(); + //void getAvailableSoundSystems(KviPointerList<QString> * l); + void getAvailableSoundSystems(QStringList * l); + bool isMuted() {return KVI_OPTION_BOOL(KviOption_boolMuteAllSounds); }; + void setMuted(bool muted) {KVI_OPTION_BOOL(KviOption_boolMuteAllSounds)=muted;}; +protected: + KviPointerList<KviSoundThread> * m_pThreadList; + KviPointerHashTable<QString,SoundSystemRoutine> * m_pSoundSystemDict; +protected: + void registerSoundThread(KviSoundThread * t); + void unregisterSoundThread(KviSoundThread * t); + virtual bool event(QEvent *e); +protected: +#ifdef COMPILE_ON_WINDOWS + bool playWinmm(const QString &szFileName); +#else //!COMPILE_ON_WINDOWS + #ifdef COMPILE_OSS_SUPPORT + bool playOss(const QString &szFileName); + #ifdef COMPILE_AUDIOFILE_SUPPORT + bool playOssAudiofile(const QString &szFileName); + #endif //COMPILE_AUDIOFILE_SUPPORT + #endif //COMPILE_OSS_SUPPORT + #ifdef COMPILE_ARTS_SUPPORT + bool playArts(const QString &szFileName); + #endif //COMPILE_ARTS_SUPPORT + #ifdef COMPILE_ESD_SUPPORT + bool playEsd(const QString &szFileName); + #endif //COMPILE_ESD_SUPPORT +#endif //!COMPILE_ON_WINDOWS + bool playQt(const QString &szFileName); + bool playNull(const QString &szFileName); +}; + + +#endif // _KVISND_H_ |