2012-04-15 12 views
1

再生元の現在の位置をオープンにどのように取得しますか?私は、あなたのバッファ、オープンアールのバッファ、ハードウェアバッファなどを通過した後、オーディオのどの位置がハードウェア上で現在再生されているのかと思います。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 

を取得します。

これは最新のxcode 4.3のmacos 10.7ですが、他のプラットフォームでも同じであるはずです。

更新:

私は、バッファサイズを大きくしようと、それが実際に現在再生中のバッファ内の現在位置のみのように見えるんしました:

- 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 

だから、まともながある、ことを考えます複数の異なるバッファを介してオープンな演劇としてのトラックを維持する方法?

答えて

1

これらのオフセットは、キューに入れられたバッファの先頭からのものです。すでにキューに入れられていないバッファのサイズを手動でカウントし、この数に追加する必要があります。あなたがdocumentationを読めばここ

は、それが40ページに書かれています:

位置はソースのすべてのキューに入れられたバッファ の先頭に相対的であり、いずれかが設定されたコールが通過するバッファをキューに入れられました処理済みとして とマークされます。

+0

ありがとうございました。私は後で(私はプログラミングガイドで十分だろうと思った)まで仕様を読んでいなかった。 –

関連する問題