代码之家  ›  专栏  ›  技术社区  ›  Ivan Vučica

OpenAL在Mac OS X上:设置AL_SAMPLE_OFFSET没有任何作用

  •  0
  • Ivan Vučica  · 技术社区  · 14 年前

    在工作中,我们无法使用 alSourcePause()

    我们正在做一个“简历” alSourcei(this->sourceId, AL_SAMPLE_OFFSET, this->sampleOffset); 使用我们检索到的样本偏移量 alGetSourcei() . 我们试着用 AL_SEC_OFFSET AL_BYTE_OFFSET AL_SAMPLE_OFFSET

    将缓冲区更改为跳过 字节偏移量 不是解决方案,因为它使循环复杂化。

    流媒体声音在速度较慢的机器上跳过;我们在实现多线程播放时遇到问题。

    源代码位于 our Sourceforge repository

    1 回复  |  直到 14 年前
        1
  •  3
  •   Christopher Dissauer    13 年前

    我最近在OSX(10.6.8)上的游戏引擎中遇到了同样的问题。当以给定的采样偏移量恢复静态缓冲区的播放时,我们按以下顺序执行了以下步骤:

    alSourceQueueBuffers(mSourceId, 1, mBufferId);
    alSourcei(mSourceId, AL_SAMPLE_OFFSET, mSampleOffset);
    alSourcePlay(mSourceId);
    

    在此之前,源已停止,所有缓冲区都已取消排队。根据AL 1.1规范,应该可以

    1. 指定已播放源上的偏移量,这将导致立即跳到所需位置。

    (见官方规范第4.3.2节 http://connect.creativelabs.com/openal/Documentation/OpenAL%201.1%20Specification.htm )