You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/snd/libkvisnd.h

215 lines
5.6 KiB

#ifndef _LIBKVISND_H_
#define _LIBKVISND_H_
//
// File : libkvisnd.h
// Creation date : Apr 21 2002 12:30:25 CEST by Juan Jos<6F><73>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 <tqobject.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(TQFile * f);
// ~KviWavSoundFileReader();
//protected:
// TQFile * 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 TQString &szFileName);
virtual ~KviSoundThread();
protected:
TQString m_szFileName;
protected:
virtual void play();
virtual void run();
};
#ifndef COMPILE_ON_WINDOWS
#ifdef COMPILE_OSS_SUPPORT
class KviOssSoundThread : public KviSoundThread
{
public:
KviOssSoundThread(const TQString &szFileName);
virtual ~KviOssSoundThread();
protected:
virtual void play();
};
#ifdef COMPILE_AUDIOFILE_SUPPORT
class KviOssAudiofileSoundThread : public KviSoundThread
{
public:
KviOssAudiofileSoundThread(const TQString &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 TQString &szFileName);
virtual ~KviEsdSoundThread();
protected:
virtual void play();
};
#endif //COMPILE_ESD_SUPPORT
#ifdef COMPILE_ARTS_SUPPORT
class KviArtsSoundThread : public KviSoundThread
{
public:
KviArtsSoundThread(const TQString &szFileName);
virtual ~KviArtsSoundThread();
protected:
virtual void play();
};
#endif //COMPILE_ARTS_SUPPORT
#endif //!COMPILE_ON_WINDOWS
class KviSoundPlayer;
typedef bool (KviSoundPlayer::*SoundSystemRoutine)(const TQString &szFileName);
class KviSoundPlayer : public TQObject
{
friend class KviSoundThread;
Q_OBJECT
public:
KviSoundPlayer();
virtual ~KviSoundPlayer();
public:
bool play(const TQString &szFileName);
void detectSoundSystem();
bool havePlayingSounds();
//void getAvailableSoundSystems(KviPointerList<TQString> * l);
void getAvailableSoundSystems(TQStringList * 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<TQString,SoundSystemRoutine> * m_pSoundSystemDict;
protected:
void registerSoundThread(KviSoundThread * t);
void unregisterSoundThread(KviSoundThread * t);
virtual bool event(TQEvent *e);
protected:
#ifdef COMPILE_ON_WINDOWS
bool playWinmm(const TQString &szFileName);
#else //!COMPILE_ON_WINDOWS
#ifdef COMPILE_OSS_SUPPORT
bool playOss(const TQString &szFileName);
#ifdef COMPILE_AUDIOFILE_SUPPORT
bool playOssAudiofile(const TQString &szFileName);
#endif //COMPILE_AUDIOFILE_SUPPORT
#endif //COMPILE_OSS_SUPPORT
#ifdef COMPILE_ARTS_SUPPORT
bool playArts(const TQString &szFileName);
#endif //COMPILE_ARTS_SUPPORT
#ifdef COMPILE_ESD_SUPPORT
bool playEsd(const TQString &szFileName);
#endif //COMPILE_ESD_SUPPORT
#endif //!COMPILE_ON_WINDOWS
bool playTQt(const TQString &szFileName);
bool playNull(const TQString &szFileName);
};
#endif // _KVISND_H_