Currently, device must always be
NULL to indicate that the default
playback device should be used.
| Class Overview |
BPushGameSound(size_t inBufferFrameCount,
const gs_audio_format* format,
size_t inBufferCount = 2,
BGameSoundDevice* device = NULL);
Prepares the object to play audio pushed by your application.
inBufferFrameCount specifies the number of frames each audio buffer
should be able to hold. format indicates the audio format that will be
streamed. inBufferCount specifies the number of buffers to use, and, as
always, device is the sound device to use for playback.
Currently, device must always be
NULL to indicate that the default
playback device should be used.
By default, two audio buffers are used.
Be sure to call InitCheck() before using the BPushGameSound object.
status_t InitCheck() const;
Returns a status_t indicating whether or not the object was successfully
initialized. A return value of B_OK means everything's fine; any other
value means an error occurred in the constructor.
virtual lock_status LockForCyclic(void** outBasePtr,
size_t* outSize);virtual status_t UnlockCyclic();virtual size_t CurrentPosition();
LockForCyclic() gives you access to the entire sound buffer; audio
playback continues while you have access. Use CurrentPosition() to
determine where the playback is currently located in the buffer area, and
be sure to stay well ahead of it. See the
overview for a more in-depth
discussion. If lock_failed is returned, you can't access the audio area,
but if lock_ok is returned, you can start pushing audio.
On return, outBasePtr points to the first byte of the audio buffer area,
and outSize indicates the total size of the audio buffer area.
UnlockCyclic() releases the audio area.
| Return Code | Description |
|---|---|
|
|
virtual lock_status LockNextPage(void** outPagePtr,
size_t* outPageSize);virtual status_t UnlockPage(void* inPagePtr);
LockNextPage() requests access to the next page of the sound buffer. The
lock_status
return value is lock_ok or lock_ok_frames_dropped if a valid page has
been returned. If either of these values is returned, you can then write
up to outPageSize bytes of audio data into the audio page returned in
outPagePtr.
If lock_failed is returned, you can't access an audio page.
UnlockPage() releases the audio page pointed
to by inPagePtr and returns
B_OK if it succeeds in unlocking the page.
| Constant | Description |
|---|---|
| Couldn't get the lock; it's not time to update yet. |
| Locked; you can update. |
| Locked; you can update, but you may have missed some buffers. |
These values are returned by the locking functions in the BPushGameSound
class (
LockNextPage() and
LockForCyclic()). If either function returns
lock_failed, there isn't a buffer to be filled; your code is pushing
buffers too fast.
If lock_ok is returned, the next buffer is ready. The
lock_ok_frames_dropped result is received if a buffer is available but
some buffers have been lost; this can happen if you're not pushing fast
enough.