|
|
|
|
#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_
|