Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio openal:获取源的当前播放位置_Audio_Streaming_Core Audio_Openal - Fatal编程技术网

Audio openal:获取源的当前播放位置

Audio openal:获取源的当前播放位置,audio,streaming,core-audio,openal,Audio,Streaming,Core Audio,Openal,如何获得openal中播放源代码的当前位置?我想我的意思是,在经过你的缓冲区、openal的缓冲区、硬件缓冲区等之后,音频中的哪个位置当前正在硬件上播放 我已经简单地看了一下api,但我不太确定AL_SAMPLE_OFFSET/AL_BYTE_OFFSET/AL_SEC_OFFSET代表什么。如果我在播放流媒体源,我似乎没有得到一个不断增加的数字,似乎我在当前播放缓冲区中得到了一个位置?(或所有缓冲区的?) 例如,在播放时,我循环并运行以下代码: alGetSourcef( sources[0]

如何获得openal中播放源代码的当前位置?我想我的意思是,在经过你的缓冲区、openal的缓冲区、硬件缓冲区等之后,音频中的哪个位置当前正在硬件上播放

我已经简单地看了一下api,但我不太确定AL_SAMPLE_OFFSET/AL_BYTE_OFFSET/AL_SEC_OFFSET代表什么。如果我在播放流媒体源,我似乎没有得到一个不断增加的数字,似乎我在当前播放缓冲区中得到了一个位置?(或所有缓冲区的?)

例如,在播放时,我循环并运行以下代码:

alGetSourcef( sources[0], AL_SAMPLE_OFFSET, &secoffset );
printf(" - %f samples\n", secoffset);
得到

 - 0.000000 samples
 - 8192.000000 samples
 - 9216.000000 samples
 - 5632.000000 samples
这似乎没有增加

这是在macos 10.7和最新的xcode 4.3上实现的,但我认为在其他平台上应该是类似的

更新:

我尝试过增加缓冲区大小,但实际上它看起来只是当前播放缓冲区中的当前位置:

 - 0.000000 bytes
 - 18432.000000 bytes
 - 20480.000000 bytes
 - 36864.000000 bytes
 - 36864.000000 bytes
 - 55296.000000 bytes
 - 55296.000000 bytes
 - 73728.000000 bytes
refilling buffer 2408
re-queued buffer 2408
 - 16384.000000 bytes
 - 34816.000000 bytes
 - 34816.000000 bytes
 - 51200.000000 bytes
 - 51200.000000 bytes
 - 69632.000000 bytes
refilling buffer 2409
re-queued buffer 2409

既然如此,有没有一种合适的方法来跟踪openal通过多个不同的缓冲区播放的情况?

这些偏移量是从队列缓冲区开始的。您需要手动计算已经未排队的缓冲区的大小,并将其添加到此数字

在这里,如果你读了,第40页上写着:

该位置相对于所有排队缓冲区的开头 对于源,以及set调用所遍历的任何排队缓冲区都将 标记为已处理