Gnash
0.8.11dev
|
SDL-based sound_handler. More...
#include <sound_handler_sdl.h>
Public Member Functions | |
SDL_sound_handler (media::MediaHandler *m) | |
~SDL_sound_handler () | |
virtual int | createStreamingSound (const media::SoundInfo &sinfo) |
Streaming sound functions: More... | |
virtual int | create_sound (std::unique_ptr< SimpleBuffer > data, const media::SoundInfo &sinfo) |
Event sound functions: More... | |
virtual StreamBlockId | addSoundBlock (SimpleBuffer buf, size_t sample_count, int seekSamples, int streamId) |
virtual void | stopEventSound (int sound_handle) |
Remove scheduled requests to play the specified sound buffer slot. More... | |
virtual void | stopAllEventSounds () |
Stop all instances of all playing event sounds. More... | |
virtual void | stopStreamingSound (int sound_handle) |
Remove scheduled requests to play the specified sound buffer slot. More... | |
virtual void | delete_sound (int sound_handle) |
Discard the sound data for an embedded event sound. More... | |
virtual void | reset () |
Discard all sound inputs (slots and aux streamers) and clear scheduling. More... | |
virtual void | stop_all_sounds () |
Mixed functions: More... | |
virtual int | get_volume (int sound_handle) const |
Gets the volume for a given sound buffer slot. More... | |
virtual void | set_volume (int sound_handle, int volume) |
Sets the volume for a given event sound. More... | |
virtual media::SoundInfo * | get_sound_info (int soundHandle) const |
Returns a SoundInfo object for the sound with the given id. More... | |
virtual void | pause () |
gnash calls this to pause audio More... | |
virtual void | unpause () |
gnash calls this to unpause audio More... | |
virtual unsigned int | get_duration (int sound_handle) const |
Gets the duration in milliseconds of an event sound. More... | |
virtual unsigned int | tell (int sound_handle) const |
Gets the playhead position in milliseconds of an event sound. More... | |
void | plugInputStream (std::unique_ptr< InputStream > in) |
Plug an InputStream to the mixer. More... | |
void | unplugInputStream (InputStream *id) |
Unplug an external InputStream from the mixer. More... | |
void | fetchSamples (std::int16_t *to, unsigned int nSamples) |
Fetch mixed samples. More... | |
![]() | |
virtual | ~sound_handler () |
void | startSound (int id, int loops, const SoundEnvelopes *env, bool allowMultiple, unsigned int inPoint=0, unsigned int outPoint=std::numeric_limits< unsigned int >::max()) |
Start playback of an event sound. More... | |
bool | isSoundPlaying (int id) const |
Check if an event sound is playing. More... | |
void | playStream (int handle, StreamBlockId blockId) |
Start playback of a streaming sound, if not playing already. More... | |
int | getStreamBlock (int handle) const |
Get the identifier for the block playing in a specific stream. More... | |
int | getFinalVolume () const |
Sound output functions. More... | |
void | setFinalVolume (int v) |
Set the volume to apply to mixed output. More... | |
void | mute () |
Call this to mute audio. More... | |
void | unmute () |
Call this to unmute audio. More... | |
bool | is_muted () const |
Returns whether or not sound is muted. More... | |
bool | isPaused () const |
return true if audio is paused More... | |
virtual InputStream * | attach_aux_streamer (aux_streamer_ptr ptr, void *udata) |
Plug an external InputStream into the mixer. More... | |
size_t | numSoundsStarted () const |
Special test-fuction. Reports how many times a sound has been started. More... | |
size_t | numSoundsStopped () const |
Special test-fuction. Reports how many times a sound has been stopped. More... | |
void | setAudioDump (const std::string &wavefile) |
Request to dump audio to the given filename. More... | |
bool | streamingSound () const |
Check if a streaming sound is playing. More... | |
Additional Inherited Members | |
![]() | |
typedef unsigned long | StreamBlockId |
Identifier of a streaming sound block. More... | |
![]() | |
sound_handler (media::MediaHandler *m) | |
virtual void | unplugAllInputStreams () |
Unplug all input streams. More... | |
bool | hasInputStreams () const |
Does the mixer have input streams ? More... | |
virtual void | delete_all_sounds () |
Stop and delete all sounds. More... | |
SDL-based sound_handler.
gnash::sound::SDL_sound_handler::SDL_sound_handler | ( | media::MediaHandler * | m | ) |
Referenced by gnash::sound::create_sound_handler_sdl().
gnash::sound::SDL_sound_handler::~SDL_sound_handler | ( | ) |
References gnash::log_debug().
|
virtual |
Append data for a streaming sound.
Gnash's parser calls this to fill up soundstreams data.
data | The sound data to be stored. This should be appropriately padded ( |
sampleCount | Number of samples in the data |
seekSamples | Offset of sound to frame data |
streamId | The soundhandlers id of the sound we want to add data to |
SoundException | on error |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::addSoundBlock().
|
virtual |
Event sound functions:
Create a sound buffer slot, for on-demand playback.
data | The sound data to be stored. May not be null. This should be appropriately padded ( |
sinfo | A SoundInfo object containing info about samplerate, samplecount, stereo etc. |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::create_sound().
|
virtual |
Streaming sound functions:
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::createStreamingSound().
|
virtual |
Discard the sound data for an embedded event sound.
Only embedded event sounds are deleted; this happens when the associated sound_sample is deleted.
sound_handle | The id for the event sound to be deleted |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::delete_sound().
|
virtual |
Fetch mixed samples.
We run through all the plugged InputStreams fetching decoded audio blocks and mixing them into the given output stream.
to | The buffer to write mixed samples to. Buffer must be big enough to hold nSamples samples. |
nSamples | The amount of samples to fetch. NOTE: this number currently refers to "mono" samples due to some bad design decision. It is so expected that the user fetches 44100 * 2 samples which has to be interpreted as series of left,right channel couples. TODO: use actual number of samples so that it's expected to fetch 44100 per second and let expose a function to give interpretation of what comes back (how many bytes per channel, which format). |
Reimplemented from gnash::sound::sound_handler.
References _, fetchSamples(), gnash::sound::sound_handler::fetchSamples(), gnash::sound::sound_handler::hasInputStreams(), gnash::log_debug(), gnash::log_error(), and volume.
Referenced by fetchSamples().
|
virtual |
Gets the duration in milliseconds of an event sound.
sound_handle | The id of the event sound |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::get_duration().
|
virtual |
Returns a SoundInfo object for the sound with the given id.
Note: This should only be used for streaming sounds. The SoundInfo object is still owned by the soundhandler.
soundHandle | The soundhandlers id of the sound we want some info about. |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::get_sound_info().
|
virtual |
Gets the volume for a given sound buffer slot.
Only use for event sounds!
sound_handle | The sound to get the volume for. |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::get_volume().
|
virtual |
gnash calls this to pause audio
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::pause().
|
virtual |
Plug an InputStream to the mixer.
in | The InputStream to plug, ownership transferred |
Reimplemented from gnash::sound::sound_handler.
References gnash::log_debug(), and gnash::sound::sound_handler::plugInputStream().
|
virtual |
Discard all sound inputs (slots and aux streamers) and clear scheduling.
Gnash calls this on movie restart.
The function should stop all sounds and get ready for a "parse from scratch" operation.
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::stop_all_sounds().
|
virtual |
Sets the volume for a given event sound.
Only used by the AS Sound class
sound_handle | The handle of the event sound to set volume for. |
volume | A number from 0 to 100 representing a volume level. 100 is full volume and 0 is no volume. The default setting is 100. |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::set_volume().
|
virtual |
Mixed functions:
Remove all scheduled request for playback of sound buffer slots This applies both to streaming and event sounds.
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::stop_all_sounds().
|
virtual |
Stop all instances of all playing event sounds.
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::stopAllEventSounds().
|
virtual |
Remove scheduled requests to play the specified sound buffer slot.
Stop all instances of the specified event sound if it's playing. (Normally a full-featured sound API would take a handle specifying the instance of a playing sample, but SWF is not expressive that way.)
sound_handle | id for the sound to be stopped |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::stopEventSound().
|
virtual |
Remove scheduled requests to play the specified sound buffer slot.
sound_handle | The sound_handlers id for the sound to be stopped. |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::stopStreamingSound().
|
virtual |
Gets the playhead position in milliseconds of an event sound.
sound_handle | The id of the event sound |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::tell().
|
virtual |
gnash calls this to unpause audio
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::hasInputStreams(), and gnash::sound::sound_handler::unpause().
|
virtual |
Unplug an external InputStream from the mixer.
This is called by AS classes NetStream or Sound to dettach callback, so that audio from the classes no longer will be played through the soundhandler.
id | The key identifying the auxiliary streamer, as returned by attach_aux_streamer. |
Reimplemented from gnash::sound::sound_handler.
References gnash::sound::sound_handler::unplugInputStream().