libobs/media-io: Remove audio lines (skip)

(Note: This commit breaks libobs compilation.  Skip if bisecting)

Uses a callback and allows the caller to mix audio.  Additionally,
allows the callback to return audio later, allowing it to buffer as much
as it needs.
This commit is contained in:
jp9000
2015-12-17 03:01:47 -08:00
parent 2591f24594
commit ee1842d1f5
2 changed files with 71 additions and 438 deletions

View File

@@ -25,7 +25,9 @@
extern "C" {
#endif
#define MAX_AUDIO_MIXES 4
#define MAX_AUDIO_MIXES 4
#define MAX_AUDIO_CHANNELS 2
#define AUDIO_OUTPUT_FRAMES 1024
/*
* Base audio output component. Use this to create an audio output track
@@ -33,9 +35,7 @@ extern "C" {
*/
struct audio_output;
struct audio_line;
typedef struct audio_output audio_t;
typedef struct audio_line audio_line_t;
enum audio_format {
AUDIO_FORMAT_UNKNOWN,
@@ -72,13 +72,23 @@ struct audio_data {
float volume;
};
struct audio_output_data {
float *data[MAX_AUDIO_CHANNELS];
};
typedef bool (*audio_input_callback_t)(void *param,
uint64_t start_ts, uint64_t end_ts, uint64_t *new_ts,
uint32_t active_mixers, struct audio_output_data *mixes);
struct audio_output_info {
const char *name;
uint32_t samples_per_sec;
enum audio_format format;
enum speaker_layout speakers;
uint64_t buffer_ms;
audio_input_callback_t input_callback;
void *input_param;
};
struct audio_convert_info {
@@ -211,13 +221,6 @@ EXPORT uint32_t audio_output_get_sample_rate(const audio_t *audio);
EXPORT const struct audio_output_info *audio_output_get_info(
const audio_t *audio);
EXPORT audio_line_t *audio_output_create_line(audio_t *audio, const char *name,
uint32_t mixers);
EXPORT void audio_line_set_mixers(audio_line_t *line, uint32_t mixers);
EXPORT uint32_t audio_line_get_mixers(audio_line_t *line);
EXPORT void audio_line_destroy(audio_line_t *line);
EXPORT void audio_line_output(audio_line_t *line, const struct audio_data *data);
#ifdef __cplusplus
}