#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 */ char format[4]; 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 */