Refactored audio API.
This commit is contained in:
parent
bcde14d270
commit
7346817669
@ -181,6 +181,9 @@ void guac_rdpsnd_process_message_wave_info(guac_rdpsndPlugin* rdpsnd, audio_stre
|
|||||||
rdpsnd->waveDataSize = BodySize - 8;
|
rdpsnd->waveDataSize = BodySize - 8;
|
||||||
rdpsnd->expectingWave = true;
|
rdpsnd->expectingWave = true;
|
||||||
|
|
||||||
|
audio_stream_begin(audio, 22050, 2, 16); /* FIXME: Hard-coding rates */
|
||||||
|
audio_stream_write_pcm(audio, rdpsnd->waveData, 4);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* header is not removed from data in this function */
|
/* header is not removed from data in this function */
|
||||||
@ -205,8 +208,7 @@ void rdpsnd_process_message_wave(guac_rdpsndPlugin* rdpsnd,
|
|||||||
|
|
||||||
guac_client_log_info(audio->client, "Got sound: %i bytes.", size);
|
guac_client_log_info(audio->client, "Got sound: %i bytes.", size);
|
||||||
|
|
||||||
/* For now, start AND end stream right here */
|
/* Write rest of audio packet */
|
||||||
audio_stream_begin(audio);
|
|
||||||
audio_stream_write_pcm(audio, buffer, size);
|
audio_stream_write_pcm(audio, buffer, size);
|
||||||
audio_stream_end(audio);
|
audio_stream_end(audio);
|
||||||
|
|
||||||
|
@ -134,6 +134,23 @@ struct audio_stream {
|
|||||||
*/
|
*/
|
||||||
guac_stream* stream;
|
guac_stream* stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of samples per second of PCM data sent to this stream.
|
||||||
|
*/
|
||||||
|
int rate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of audio channels per sample of PCM data. Legal values are
|
||||||
|
* 1 or 2.
|
||||||
|
*/
|
||||||
|
int channels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of bits per sample per channel for PCM data. Legal values are
|
||||||
|
* 8 or 16.
|
||||||
|
*/
|
||||||
|
int bps;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -150,7 +167,7 @@ void audio_stream_free(audio_stream* stream);
|
|||||||
/**
|
/**
|
||||||
* Begins a new audio stream.
|
* Begins a new audio stream.
|
||||||
*/
|
*/
|
||||||
void audio_stream_begin(audio_stream* stream);
|
void audio_stream_begin(audio_stream* stream, int rate, int channels, int bps);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ends the current audio stream.
|
* Ends the current audio stream.
|
||||||
@ -172,14 +189,8 @@ void audio_stream_flush(audio_stream* stream);
|
|||||||
* Appends arbitrarily-encoded data to the encoded_data buffer
|
* Appends arbitrarily-encoded data to the encoded_data buffer
|
||||||
* within the given audio stream.
|
* within the given audio stream.
|
||||||
*/
|
*/
|
||||||
void audio_stream_append_data(audio_stream* stream,
|
void audio_stream_write_encoded(audio_stream* audio,
|
||||||
unsigned char* data, int length);
|
unsigned char* data, int length);
|
||||||
|
|
||||||
/**
|
|
||||||
* Clears all data from the encoded_data buffer in the given
|
|
||||||
* audio stream.
|
|
||||||
*/
|
|
||||||
void audio_stream_clear_data(audio_stream* stream);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -67,8 +67,16 @@ audio_stream* audio_stream_alloc(guac_client* client, audio_encoder* encoder) {
|
|||||||
return audio;
|
return audio;
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_stream_begin(audio_stream* audio) {
|
void audio_stream_begin(audio_stream* audio, int rate, int channels, int bps) {
|
||||||
|
|
||||||
|
/* Load PCM properties */
|
||||||
|
audio->rate = rate;
|
||||||
|
audio->channels = channels;
|
||||||
|
audio->bps = bps;
|
||||||
|
|
||||||
|
/* Call handler */
|
||||||
audio->encoder->begin_handler(audio);
|
audio->encoder->begin_handler(audio);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_stream_end(audio_stream* audio) {
|
void audio_stream_end(audio_stream* audio) {
|
||||||
@ -119,7 +127,7 @@ void audio_stream_flush(audio_stream* audio) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_stream_append_data(audio_stream* audio,
|
void audio_stream_write_encoded(audio_stream* audio,
|
||||||
unsigned char* data, int length) {
|
unsigned char* data, int length) {
|
||||||
|
|
||||||
/* Resize audio buffer if necessary */
|
/* Resize audio buffer if necessary */
|
||||||
@ -138,7 +146,3 @@ void audio_stream_append_data(audio_stream* audio,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_stream_clear_data(audio_stream* audio) {
|
|
||||||
audio->encoded_data_used = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user