summaryrefslogtreecommitdiffstats
path: root/src/modules/snd/libkvisnd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/snd/libkvisnd.h')
-rw-r--r--src/modules/snd/libkvisnd.h213
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_