#pragma once
#include <memory>
#include <keyfinder/keyfinder.h>
#include <keyfinder/audiodata.h>
namespace keyfinder_bridge {
struct KeyFinderWrapper;
struct AudioDataWrapper;
}
#include "libkeyfinder-sys/src/lib.rs.h"
namespace keyfinder_bridge {
struct KeyFinderWrapper {
KeyFinder::KeyFinder kf;
};
struct AudioDataWrapper {
KeyFinder::AudioData audio;
};
std::unique_ptr<KeyFinderWrapper> new_keyfinder();
std::unique_ptr<AudioDataWrapper> new_audiodata();
uint32_t key_of_audio(KeyFinderWrapper& kf, const AudioDataWrapper& audio);
void set_frame_rate(AudioDataWrapper& audio, uint32_t frame_rate);
void set_channels(AudioDataWrapper& audio, uint32_t channels);
uint32_t get_channels(const AudioDataWrapper& audio);
uint32_t get_frame_rate(const AudioDataWrapper& audio);
uint32_t get_sample_count(const AudioDataWrapper& audio);
uint32_t get_frame_count(const AudioDataWrapper& audio);
void add_to_sample_count(AudioDataWrapper& audio, uint32_t samples);
void reset_iterators(AudioDataWrapper& audio);
void advance_write_iterator(AudioDataWrapper& audio, uint32_t by);
void set_sample_at_write_iterator(AudioDataWrapper& audio, float sample);
void reduce_to_mono(AudioDataWrapper& audio);
void downsample(AudioDataWrapper& audio, uint32_t factor);
}