ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
AudioProcessorBinding Class Reference

Public Member Functions

 AudioProcessorBinding (int sample_rate, bool bypass, unsigned frame_samples)
 AudioProcessorBinding (int sample_rate, bool bypass, unsigned frame_samples, int channels)
 ~AudioProcessorBinding ()
 AudioProcessorBinding (const AudioProcessorBinding &)=delete
AudioProcessorBinding & operator= (const AudioProcessorBinding &)=delete
bool valid () const
int process (AudioSamples input, AudioSamples output)

Detailed Description

Definition at line 33 of file audio.cpp.

Constructor & Destructor Documentation

◆ AudioProcessorBinding() [1/3]

AudioProcessorBinding::AudioProcessorBinding ( int sample_rate,
bool bypass,
unsigned frame_samples )
inline

Definition at line 35 of file audio.cpp.

36 : AudioProcessorBinding(sample_rate, bypass, frame_samples, 2) {}
AudioProcessorBinding(int sample_rate, bool bypass, unsigned frame_samples)
Definition audio.cpp:35

References AudioProcessorBinding().

Referenced by AudioProcessorBinding(), AudioProcessorBinding(), and operator=().

◆ AudioProcessorBinding() [2/3]

AudioProcessorBinding::AudioProcessorBinding ( int sample_rate,
bool bypass,
unsigned frame_samples,
int channels )
inline

Definition at line 37 of file audio.cpp.

38 : processor_(create_processor(sample_rate, bypass, frame_samples, channels)),
39 scratch_(processor_ ? frame_samples : 0) {}

◆ ~AudioProcessorBinding()

AudioProcessorBinding::~AudioProcessorBinding ( )
inline

Definition at line 40 of file audio.cpp.

40 {
41 if (processor_)
42 audio_processor_destroy(processor_);
43 }
void audio_processor_destroy(audio_processor_t *p)
Definition processor.c:229

References audio_processor_destroy().

◆ AudioProcessorBinding() [3/3]

AudioProcessorBinding::AudioProcessorBinding ( const AudioProcessorBinding & )
delete

Member Function Documentation

◆ operator=()

AudioProcessorBinding & AudioProcessorBinding::operator= ( const AudioProcessorBinding & )
delete

◆ process()

int AudioProcessorBinding::process ( AudioSamples input,
AudioSamples output )
inline

Definition at line 51 of file audio.cpp.

51 {
52 const size_t count = input["length"].as<size_t>();
53 if (!processor_)
54 return SET_ERRNO(ERROR_INVALID_STATE, "Audio processor is not initialized");
55 if (count == 0 || count > scratch_.size() || output["length"].as<size_t>() != count)
56 return SET_ERRNO(ERROR_INVALID_PARAM, "Invalid audio processor buffer size: %zu", count);
57 emscripten::val view = emscripten::val(emscripten::typed_memory_view(count, scratch_.data()));
58 view.call<void>("set", input);
59 int result = audio_processor_process(processor_, scratch_.data(), scratch_.data(), count);
60 if (result == 0) {
61 // Processing may grow memory, so do not retain the previous JS view.
62 emscripten::val result_view = emscripten::val(emscripten::typed_memory_view(count, scratch_.data()));
63 output.call<void>("set", result_view);
64 }
65 return result;
66 }
#define SET_ERRNO(code,...)
@ ERROR_INVALID_STATE
@ ERROR_INVALID_PARAM
asciichat_error_t audio_processor_process(audio_processor_t *p, const float *input, float *output, size_t count)
Definition processor.c:125

References audio_processor_process(), ERROR_INVALID_PARAM, ERROR_INVALID_STATE, and SET_ERRNO.

Referenced by EMSCRIPTEN_BINDINGS().

◆ valid()

bool AudioProcessorBinding::valid ( ) const
inline

Definition at line 48 of file audio.cpp.

48 {
49 return processor_ != nullptr;
50 }

Referenced by EMSCRIPTEN_BINDINGS().


The documentation for this class was generated from the following file: