audiolib/audio/audio_internal.h
2024-03-06 21:55:32 +01:00

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 */