The Game Kit: BStreamingGameSound

The Game Kit Table of Contents | The Game Kit Index

# BStreamingGameSound

Derived from: BGameSound

Declared in: be/game/StreamingGameSound.h

Library: libgame.so

Allocation: Constructor only

###### Summary

The BStreamingGameSound class provides the ability to stream audio data. A hook function is called whenever a buffer needs to be filled with audio data. This hook function is set by calling `SetStreamHook()`.

Using this class requires special magic powers; unless you're directly in contact with Be about it, don't use it. You'll regret it later.

## Constructor and Destructor

### BStreamingGameSound()

`BStreamingGameSound(`size_t inBufferFrameCount, const gs_audio_format *format, size_t inBufferCount = 2, BGameSoundDevice *device = NULL`)`

protected:

`BStreamingGameSound(`BGameSoundDevice device`)`

Prepares the object to play streamed audio. 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.

### ~BStreamingGameSound

virtual `~BStreamingGameSound()`

Stops playing the sound.

## Member Functions

### FillBuffer()

virtual void `FillBuffer(`void *inBuffer, size_t byteCount`)`

Fills the buffer specified by inBuffer with byteCount bytes of audio data.

In the BStreamingGameSound implemenation, this function calls the stream hook, if one exists.

See also: `SetStreamHook()`

### InitCheck()

status_t `InitCheck(`void`)` const

Returns a status_t indicating whether or not the object was successfully instantiated.

RETURN CODES

`B_OK`. The sound was successfully initialized.

- `B_ERROR`. Unable to create a sound player.

- Other errors. The sound player may return errors.

See also: the BStreamingGameSound constructor

### Lock() , Unlock()

bool `Lock(`void`)`
void `Unlock(`void`) `

`Lock()` locks the BStreamingGameSound to prevent unpleasant collisions in the land of multithreadedness; it returns `true` if it was able to lock the object, otherwise `false` is returned. `Unlock()` releases the lock.

### SetAttributes()

virtual status_t `SetAttributes(`gs_attribute *inAttributes, size_t inAttributeCount`) `

`SetAttributes()` is implemented to disallow the `B_GS_LOOPING` attribute, since streamed sounds can't loop.

See also: `BGameSound::SetAttributes()`

### SetParameters()

protected:

virtual status_t `SetParameters(`size_t inBufferFrameCount, const gs_audio_format *format, size_t inBufferCount`) `

Changes the BStreamingGameSound object's parameters. This lets you change the buffer size, audio format, and number of buffers after the object has been instantiated.

RETURN CODES

`B_OK`. No error.

- `B_ERROR`. Couldn't change the parameters.

### SetStreamHook()

virtual status_t `SetStreamHook(`void (*hook)(void *cookie, void *inBuffer, size_t byteCount, BStreamingGameSound *object`), ` void *cookie`) `

Specfies the hook function to be called to fill buffers with audio data. cookie indicates the cookie pointer that will be passed to the hook function.

The inputs to the hook function are:

- cookie
  A user-defined value.

- inBuffer
  A pointer to the buffer to be filled with audio data.

- byteCount
  The size of the buffer in bytes.

- object
  A pointer to the BStreamingGameSound object.

RETURN CODES

B_OK. The hook function was set without error.

### Unlock() see Lock()

The Game Kit Table of Contents | The Game Kit Index

The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..