43 lines
1.6 KiB
C
43 lines
1.6 KiB
C
#ifndef AUDIOPIPELINE_AUDIO_INTERNAL_H__INCLUDED
|
|
#define AUDIOPIPELINE_AUDIO_INTERNAL_H__INCLUDED
|
|
#include "audio.h"
|
|
|
|
struct _AudioPipelineElement {
|
|
void *ctx; /* Internal scratchspace/context */
|
|
|
|
AudioPipelineStatus (*start)(struct _AudioPipelineElement *self);
|
|
AudioPipelineStatus (*reset)(struct _AudioPipelineElement *self);
|
|
AudioPipelineStatus (*stop)(struct _AudioPipelineElement *self);
|
|
|
|
AudioPipelineStatus (*push)(struct _AudioPipelineElement *self, AudioBuffer *buffer);
|
|
AudioPipelineStatus (*link)(struct _AudioPipelineElement *self, struct _AudioPipelineElement *source);
|
|
char *(*describe)(struct _AudioPipelineElement *self);
|
|
void (*destroy)(struct _AudioPipelineElement *self);
|
|
|
|
AudioPipelineElementType type;
|
|
|
|
/* output format */
|
|
uint8_t channels;
|
|
uint8_t bits_per_sample;
|
|
uint32_t sample_rate;
|
|
|
|
/* Set in pipeline assembly method */
|
|
struct _AudioPipelineElement *next;
|
|
AudioPipeline *pipeline;
|
|
};
|
|
|
|
// Some NOP functions to be used by all elements to avoid creating a lot of stub functions
|
|
|
|
AudioPipelineStatus sink_nop(AudioPipelineElement *self);
|
|
|
|
AudioPipelineStatus source_start_nop(AudioPipelineElement *self);
|
|
AudioPipelineStatus source_reset_nop(AudioPipelineElement *self);
|
|
AudioPipelineStatus source_stop_nop(AudioPipelineElement *self);
|
|
AudioPipelineStatus source_nop(AudioPipelineElement *self);
|
|
|
|
AudioPipelineStatus filter_start_nop(AudioPipelineElement *self);
|
|
AudioPipelineStatus filter_reset_nop(AudioPipelineElement *self);
|
|
AudioPipelineStatus filter_stop_nop(AudioPipelineElement *self);
|
|
|
|
|
|
#endif /* AUDIOPIPELINE_AUDIO_H__INCLUDED */
|