最简单OPENAL例子
来源:互联网 发布:下载维棠软件 编辑:程序博客网 时间:2024/06/10 00:04
// soundtest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdlib.h>
#include <AL/alut.h>
#include <al.h>
#include <alc.h>
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
using namespace boost;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
#define AUDIO_DATA_SIZE 898986
ALCdevice * device = alcOpenDevice(NULL);
if (device)
{
ALCcontext * context = alcCreateContext(device, NULL);
alcMakeContextCurrent(context);
}
else
{
cout << "device open error" << endl;
}
FILE *audioFile;
unsigned char *audioBuffer = new unsigned char[AUDIO_DATA_SIZE];
ALuint buffer, source;
// Read the audio data from the file
audioFile = fopen("OutPcm.pcm", "r");
if (audioFile == NULL)
{
cout << "open file error" << endl;
return 0;
}
fread(audioBuffer, sizeof(unsigned char),
AUDIO_DATA_SIZE, audioFile);
// Generate an OpenAL buffer for the data
int err;
alGetError();
alGenBuffers(1, &buffer);
if ((err = alGetError()) != AL_NO_ERROR)
{
string error_str = lexical_cast<string>(err);
cout << "gen buffer error" << endl;
cout << error_str.c_str() << endl;
}
alBufferData(buffer, AL_FORMAT_MONO16, audioBuffer,
AUDIO_DATA_SIZE, 16000);
if ((err = alGetError()) != AL_NO_ERROR)
{
string error_str = lexical_cast<string>(err);
cout << "gen alBufferData error" << endl;
cout << error_str.c_str() << endl;
}
// Pass the buffer to an OpenAL source and play it
alGenSources(1, &source);
if ((err = alGetError()) != AL_NO_ERROR)
{
cout << "gen alGenSources error" << endl;
}
alSourcei(source, AL_BUFFER, buffer);
if ((err = alGetError()) != AL_NO_ERROR)
{
cout << "gen alSourcei error" << endl;
}
alSourcePlay(source);
if ((err = alGetError()) != AL_NO_ERROR)
{
cout << "gen alSourcePlay error" << endl;
}
alutSleep (10);
alutExit ();
return EXIT_SUCCESS;
}
//
#include "stdafx.h"
#include <stdlib.h>
#include <AL/alut.h>
#include <al.h>
#include <alc.h>
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
using namespace boost;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
#define AUDIO_DATA_SIZE 898986
ALCdevice * device = alcOpenDevice(NULL);
if (device)
{
ALCcontext * context = alcCreateContext(device, NULL);
alcMakeContextCurrent(context);
}
else
{
cout << "device open error" << endl;
}
FILE *audioFile;
unsigned char *audioBuffer = new unsigned char[AUDIO_DATA_SIZE];
ALuint buffer, source;
// Read the audio data from the file
audioFile = fopen("OutPcm.pcm", "r");
if (audioFile == NULL)
{
cout << "open file error" << endl;
return 0;
}
fread(audioBuffer, sizeof(unsigned char),
AUDIO_DATA_SIZE, audioFile);
// Generate an OpenAL buffer for the data
int err;
alGetError();
alGenBuffers(1, &buffer);
if ((err = alGetError()) != AL_NO_ERROR)
{
string error_str = lexical_cast<string>(err);
cout << "gen buffer error" << endl;
cout << error_str.c_str() << endl;
}
alBufferData(buffer, AL_FORMAT_MONO16, audioBuffer,
AUDIO_DATA_SIZE, 16000);
if ((err = alGetError()) != AL_NO_ERROR)
{
string error_str = lexical_cast<string>(err);
cout << "gen alBufferData error" << endl;
cout << error_str.c_str() << endl;
}
// Pass the buffer to an OpenAL source and play it
alGenSources(1, &source);
if ((err = alGetError()) != AL_NO_ERROR)
{
cout << "gen alGenSources error" << endl;
}
alSourcei(source, AL_BUFFER, buffer);
if ((err = alGetError()) != AL_NO_ERROR)
{
cout << "gen alSourcei error" << endl;
}
alSourcePlay(source);
if ((err = alGetError()) != AL_NO_ERROR)
{
cout << "gen alSourcePlay error" << endl;
}
alutSleep (10);
alutExit ();
return EXIT_SUCCESS;
}
- 最简单OPENAL例子
- iOS 最简单的OpenAL播放PCM实时音频
- OpenAL的简单示例
- openal 简单实用
- Hibernate 最简单例子
- coredata 最简单例子
- coredata 最简单例子
- 最简单 NDK 例子
- coredata 最简单例子
- Hazelcast 最简单例子
- openal播放ogg的例子
- 最简单的ajax例子
- 最简单的FIT例子
- 最简单的d3d例子
- dwr最简单入门例子
- 最简单的Ajax例子
- 最简单的rmi例子
- 最简单的ajax例子
- 第一页(服务端) :远程资源管理器 c#应用源代码,SERVICE + CLIENT 模式 可实现远程文件管理,下载功能
- 第二页(服务端) :远程资源管理器 c#应用源代码,SERVICE + CLIENT 模式 可实现远程文件管理,下载功能
- 兔子是怎么把狼吃掉的!(经典)-经典寓意文化传承
- 第三页(客户端) :远程资源管理器 c#应用源代码,SERVICE + CLIENT 模式 可实现远程文件管理,下载功能
- Linux中搭建Meego开发环境
- 最简单OPENAL例子
- 中国用外国的软件其实已经付过费了
- 关于VBV-------Video Buffering Verifier
- pci总线概述
- 一些常用的 正则表达式,区别于网上其他式子。
- Linux Programmer's Manual--man(5)--proc(中文)
- 瞬间秒杀所有IE版本代码
- 解决PHP站点被黑客用于群发垃圾邮件问题
- 剖析Windows NT/2000内核对象组织