1 Star 1 Fork 1

孙全/QFFmpeg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
QOpenALEngine.h 3.45 KB
一键复制 编辑 原始数据 按行查看 历史
liu-wenwu 提交于 2015-04-26 17:18 . First Commit
#ifndef OPENALENGINE_H
#define OPENALENGINE_H
#include "al.h"
#include "alc.h"
#include "efx.h"
#include "alext.h"
#include "efx-creative.h"
#include "efx-presets.h"
#include <QObject>
#include <QThread>
#include <QMutex>
#include <QTimer>
extern "C"{
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
#include "libswscale/swscale.h"
#include "libswresample/swresample.h"
#include "libavutil/avstring.h"
#include "libavutil/time.h"
}
#define NUMBUFFERS (4)
#define SERVICE_UPDATE_PERIOD (20)
class QOpenALEngine : public QObject
{
Q_OBJECT
public:
Q_ENUMS(State)
enum State
{
INITIAL=0x1011,
PLAYING=0x1012,
PAUSED=0x1013,
STOPPED=0x1014
};
explicit QOpenALEngine(QObject *parent = 0);
~QOpenALEngine();
static bool init();
static bool deinit();
void end();
void write(void *data, unsigned long size,int samplerate);
void replay();
void seek();
void play();
void pause();
void stop();
void rewind();
int getQueuedNum();
int getProcessedNum();
float getOffset();
float getBufferTimeOffset();
void clear();
void openEFX();
State getState();
void setGain(float gain);
float getGain();
signals:
void needData(int );
public slots:
// void timerSlot();
private:
QList<long> bufsize;
QTimer *timer;
bool isend;
bool isBufInit;
QThread *thread;
static ALCdevice *pDevice;
static ALCcontext *pContext;
ALuint uiBuffers[NUMBUFFERS];
ALuint uiSource;
ALuint uiBuffer;
QMutex mutex;
int bb;
EFXEAXREVERBPROPERTIES efxReverb;
ALuint uiEffectSlot, uiEffect;
ALboolean CreateAuxEffectSlot(ALuint *puiAuxEffectSlot);
ALboolean CreateEffect(ALuint *puiEffect, ALenum eEffectType);
ALboolean SetEFXEAXReverbProperties(EFXEAXREVERBPROPERTIES *pEFXEAXReverb, ALuint uiEffect);
ALboolean ALFWIsEFXSupported();
/////////
// Effect objects
LPALGENEFFECTS alGenEffects;
LPALDELETEEFFECTS alDeleteEffects;
LPALISEFFECT alIsEffect;
LPALEFFECTI alEffecti;
LPALEFFECTIV alEffectiv;
LPALEFFECTF alEffectf;
LPALEFFECTFV alEffectfv;
LPALGETEFFECTI alGetEffecti;
LPALGETEFFECTIV alGetEffectiv;
LPALGETEFFECTF alGetEffectf;
LPALGETEFFECTFV alGetEffectfv;
//Filter objects
LPALGENFILTERS alGenFilters;
LPALDELETEFILTERS alDeleteFilters;
LPALISFILTER alIsFilter;
LPALFILTERI alFilteri;
LPALFILTERIV alFilteriv;
LPALFILTERF alFilterf;
LPALFILTERFV alFilterfv;
LPALGETFILTERI alGetFilteri;
LPALGETFILTERIV alGetFilteriv;
LPALGETFILTERF alGetFilterf;
LPALGETFILTERFV alGetFilterfv;
// Auxiliary slot object
LPALGENAUXILIARYEFFECTSLOTS alGenAuxiliaryEffectSlots;
LPALDELETEAUXILIARYEFFECTSLOTS alDeleteAuxiliaryEffectSlots;
LPALISAUXILIARYEFFECTSLOT alIsAuxiliaryEffectSlot;
LPALAUXILIARYEFFECTSLOTI alAuxiliaryEffectSloti;
LPALAUXILIARYEFFECTSLOTIV alAuxiliaryEffectSlotiv;
LPALAUXILIARYEFFECTSLOTF alAuxiliaryEffectSlotf;
LPALAUXILIARYEFFECTSLOTFV alAuxiliaryEffectSlotfv;
LPALGETAUXILIARYEFFECTSLOTI alGetAuxiliaryEffectSloti;
LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv;
LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf;
LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv;
protected:
};
#endif // OPENALENGINE_H
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/sunshengquan110/QFFmpeg.git
git@gitee.com:sunshengquan110/QFFmpeg.git
sunshengquan110
QFFmpeg
QFFmpeg
master

搜索帮助