16 const char* fsk_id,
const uint8_t* framebuffer,
17 double rise_time,
double fall_time,
18 uint32_t sample_rate, uint8_t time_unit) {
24 sample_rate, time_unit);
67 uint64_t expected_total_samples
76 uint64_t diff = expected_total_samples
148 double* buffer,
size_t buffer_sz) {
149 size_t written_sz = 0;
void sstvenc_osc_init(struct sstvenc_oscillator *const osc, double amplitude, double frequency, double offset, uint32_t sample_rate)
void sstvenc_osc_set_frequency(struct sstvenc_oscillator *const osc, double frequency)
void sstvenc_osc_compute(struct sstvenc_oscillator *const osc)
#define SSTVENC_PS_PHASE_HOLD
#define SSTVENC_PS_PHASE_FALL
#define SSTVENC_PS_PHASE_INIT
#define SSTVENC_PS_PHASE_RISE
#define SSTVENC_PS_PHASE_DONE
void sstvenc_ps_advance(struct sstvenc_pulseshape *const ps)
void sstvenc_ps_compute(struct sstvenc_pulseshape *const ps)
void sstvenc_ps_init(struct sstvenc_pulseshape *const ps, double amplitude, double rise_time, double hold_time, double fall_time, uint32_t sample_rate, uint8_t time_unit)
struct sstvenc_oscillator osc
struct sstvenc_pulseshape ps
struct sstvenc_encoder enc
void sstvenc_modulator_init(struct sstvenc_mod *const mod, const struct sstvenc_mode *mode, const char *fsk_id, const uint8_t *framebuffer, double rise_time, double fall_time, uint32_t sample_rate, uint8_t time_unit)
void sstvenc_modulator_compute(struct sstvenc_mod *const mod)
static void sstvenc_modulator_next_rise_sample(struct sstvenc_mod *const mod)
size_t sstvenc_modulator_fill_buffer(struct sstvenc_mod *const mod, double *buffer, size_t buffer_sz)
static void sstvenc_modulator_next_hold_sample(struct sstvenc_mod *const mod)
static void sstvenc_modulator_next_tone(struct sstvenc_mod *const mod)
static void sstvenc_modulator_next_fall_sample(struct sstvenc_mod *const mod)
#define SSTVENC_ENCODER_PHASE_DONE
void sstvenc_encoder_init(struct sstvenc_encoder *const enc, const struct sstvenc_mode *mode, const char *fsk_id, const uint8_t *framebuffer)
const struct sstvenc_encoder_pulse * sstvenc_encoder_next_pulse(struct sstvenc_encoder *const enc)
#define SSTVENC_FREQ_SYNC
#define SSTVENC_TS_UNIT_NANOSECONDS
uint32_t sstvenc_ts_unit_to_samples(double time, uint32_t sample_rate, uint8_t unit)