游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2866|回复: 0

OpenAl Queue使用问题求解

[复制链接]

2

主题

8

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2011-5-4 14:32:00 | 显示全部楼层 |阅读模式
我从服务器获得PCm格式的数据包,然后用下面的方法播放,但是播放是会有很多的杂音,并且,播放会就会卡死,求高人指点,谢谢了

下面是主要函数

#define QUEUECOUNT        10

void initOpenAL()
{
    mDevice=alcOpenDevice(NULL);
    if (mDevice) {
        mContext=alcCreateContext(mDevice, NULL);
        alcMakeContextCurrent(mContext);
    }
       
        alGenSources(1, &outSourceID);
        alSpeedOfSound(1.0);
        alSourcef(outSourceID, AL_PITCH, 1.0f);
        alSourcef(outSourceID, AL_GAIN, 1.0f);
        alSourcei(outSourceID, AL_LOOPING, AL_FALSE);

        alSourcei(outSourceID, AL_BUFFERS_QUEUED, QUEUECOUNT);
}

void openAudioFromQueue(unsigned char* data ,(UInt32)dataSize)
{

        updataQueueBuffer();
       
        ALuint bufferID = 0;
        alGenBuffers(1, &bufferID);
       

        alBufferData(bufferID, AL_FORMAT_STEREO16, data, dataSize, 44100);

        alSourceQueueBuffers(outSourceID, 1, &bufferID);
       
        alSourcePlay(outSourceID);
}

void updataQueueBuffer()
{
        int processed;

    alGetSourcei(outSourceID, AL_BUFFERS_PROCESSED, &processed);
       
    while(processed--)
    {
        ALuint buff;
        
        alSourceUnqueueBuffers(outSourceID, 1, &buff);
                check();
               
        alSourceQueueBuffers(outSourceID, 1, &buff);
                check();
    }
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 05:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表