libsstvenc
Asynchronous Analogue SSTV encoder
Loading...
Searching...
No Matches
sstv.c File Reference
#include <assert.h>
#include <libsstvenc/sstv.h>
#include <libsstvenc/sstvfreq.h>
Include dependency graph for sstv.c:

Go to the source code of this file.

Macros

#define SSTVENC_VIS_BIT_START1   (0)
 
#define SSTVENC_VIS_BIT_START2   (1)
 
#define SSTVENC_VIS_BIT_START3   (2)
 
#define SSTVENC_VIS_BIT_START4   (3)
 
#define SSTVENC_VIS_BIT_DATA1   (4)
 
#define SSTVENC_VIS_BIT_DATA2   (5)
 
#define SSTVENC_VIS_BIT_DATA3   (6)
 
#define SSTVENC_VIS_BIT_DATA4   (7)
 
#define SSTVENC_VIS_BIT_DATA5   (8)
 
#define SSTVENC_VIS_BIT_DATA6   (9)
 
#define SSTVENC_VIS_BIT_DATA7   (10)
 
#define SSTVENC_VIS_BIT_PARITY   (11)
 
#define SSTVENC_VIS_BIT_STOP   (12)
 
#define SSTVENC_VIS_BIT_END   (13)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_FRONTPORCH   (0)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_CH0   (1)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_GAP01   (2)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_CH1   (3)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_GAP12   (4)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_CH2   (5)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_GAP23   (6)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_CH3   (7)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_BACKPORCH   (8)
 
#define SSTVENC_ENCODER_SCAN_SEGMENT_NEXT   (9)
 
#define SSTVENC_ENCODER_FSK_SEGMENT_BEGIN   (0)
 
#define SSTVENC_ENCODER_FSK_SEGMENT_PREAMBLE   (1)
 
#define SSTVENC_ENCODER_FSK_SEGMENT_ID   (2)
 
#define SSTVENC_ENCODER_FSK_SEGMENT_TAIL   (3)
 
#define SSTVENC_ENCODER_FSK_SEGMENT_DONE   (4)
 

Functions

static void sstvenc_encoder_new_phase (struct sstvenc_encoder *const enc, uint8_t phase)
 
static void sstvenc_encoder_begin_seq (struct sstvenc_encoder *const enc, const struct sstvenc_encoder_pulse *seq, sstvenc_encoder_callback *on_done)
 
static const struct sstvenc_encoder_pulsesstvenc_encoder_next_seq_pulse (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_vis (struct sstvenc_encoder *const enc)
 
static uint32_t sstvenc_encoder_vis_data_freq (struct sstvenc_encoder *const enc)
 
static uint32_t sstvenc_encoder_vis_parity_freq (struct sstvenc_encoder *const enc)
 
static const struct sstvenc_encoder_pulsesstvenc_encoder_next_vis_pulse (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_image (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_scanline (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_channel (struct sstvenc_encoder *const enc, uint8_t segment, uint8_t ch)
 
static void sstvenc_encoder_next_scan_seg (struct sstvenc_encoder *const enc, uint8_t next_segment)
 
static void sstvenc_encoder_on_initseq_done (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_fsk (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_on_finalseq_done (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_frontporch (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_gap01 (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_gap12 (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_gap23 (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_begin_backporch (struct sstvenc_encoder *const enc)
 
static const struct sstvenc_encoder_pulsesstvenc_encoder_next_channel_pulse (struct sstvenc_encoder *const enc, uint8_t ch)
 
static const struct sstvenc_encoder_pulsesstvenc_encoder_next_image_pulse (struct sstvenc_encoder *const enc)
 
static void sstvenc_encoder_fsk_load_next (struct sstvenc_encoder *const enc)
 
static const struct sstvenc_encoder_pulsesstvenc_encoder_next_fsk_pulse (struct sstvenc_encoder *const enc)
 
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_pulsesstvenc_encoder_next_pulse (struct sstvenc_encoder *const enc)
 

Variables

static const uint8_t sstvenc_encoder_fsk_preamble [] = {0x20, 0x2a}
 
static const uint8_t sstvenc_encoder_fsk_tail [] = {0x01}