VIS code as part of ModeSpec

dev
Oona Räisänen 2016-01-11 10:54:25 +02:00
rodzic 23844cded4
commit fa566dc568
2 zmienionych plików z 44 dodań i 58 usunięć

Wyświetl plik

@ -5,25 +5,6 @@
* SSTV mode specifications
* ========================
*
* name Full human-readable mode identifier
* short_name Abbreviation to be used in filenames
* num_lines Total number of scanlines
* header_lines Number of scanlines excluded from the aspect ratio
* aspect_ratio Image aspect ratio
* scan_pixels Pixel samples per scanline and channel
* t_sync Duration of horizontal sync pulse
* t_porch Duration of sync porch
* t_sep Duration of channel separator + channel porch
* t_scan Duration of visible part of a channel scan (or Y scan if
* chroma subsampling is used)
* t_period Time from the beginning of a sync pulse to the beginning
* of the next one
* sync_type Positioning of sync pulse (SYNC_SIMPLE, SYNC_SCOTTIE, SYNC_PD)
* subsampling Chroma subsampling and channel order for YUV
* color_enc Color format (COLOR_GBR, COLOR_RGB, COLOR_YUV, COLOR_MONO)
* vis_parity Parity mode in VIS (PARITY_EVEN, PARITY_ODD)
*
*
* All timings are in seconds.
*
* Sources:
@ -43,87 +24,90 @@
ModeSpec getModeSpec(SSTVMode mode) {
// {"Name", pixels, lines, header, aspect, t_sync, t_porc, t_sep,
// t_scan, t_period, family, color, vis_list, parity }
std::map<SSTVMode, ModeSpec> spec = {
{MODE_M1, {"Martin M1", 320, 256, 16, 4.0/3.0, 4.862e-3, 0.572e-3, 0.572e-3,
146.432e-3, 446.446e-3, MODE_MARTIN, COLOR_GBR, PARITY_EVEN } },
146.432e-3, 446.446e-3, MODE_MARTIN, COLOR_GBR, 0x2C, PARITY_EVEN } },
{MODE_M2, {"Martin M2", 160, 256, 16, 4.0/3.0, 4.862e-3, 0.572e-3, 0.572e-3,
73.216e-3, 226.7980e-3, MODE_MARTIN, COLOR_GBR, PARITY_EVEN } },
73.216e-3, 226.7980e-3, MODE_MARTIN, COLOR_GBR, 0x28, PARITY_EVEN } },
{MODE_M3, {"Martin M3", 320, 128, 8, 4.0/3.0, 4.862e-3, 0.572e-3, 0.572e-3,
73.216e-3, 446.446e-3, MODE_MARTIN, COLOR_GBR, PARITY_EVEN } },
73.216e-3, 446.446e-3, MODE_MARTIN, COLOR_GBR, 0x24, PARITY_EVEN } },
{MODE_M4, {"Martin M4", 160, 128, 8, 4.0/3.0, 4.862e-3, 0.572e-3, 0.572e-3,
73.216e-3, 226.7986e-3, MODE_MARTIN, COLOR_GBR, PARITY_EVEN } },
73.216e-3, 226.7986e-3, MODE_MARTIN, COLOR_GBR, 0x20, PARITY_EVEN } },
{MODE_S1, {"Scottie S1", 320, 256, 16, 4.0/3.0, 9e-3, 1.5e-3, 1.5e-3,
138.24e-3, 428.22e-3, MODE_SCOTTIE, COLOR_GBR, PARITY_EVEN } },
138.24e-3, 428.22e-3, MODE_SCOTTIE, COLOR_GBR, 0x3C, PARITY_EVEN } },
{MODE_S2, {"Scottie S2", 160, 256, 16, 4.0/3.0, 9e-3, 1.5e-3, 1.5e-3,
88.064e-3, 277.692e-3, MODE_SCOTTIE, COLOR_GBR, PARITY_EVEN } },
88.064e-3, 277.692e-3, MODE_SCOTTIE, COLOR_GBR, 0x38, PARITY_EVEN } },
{MODE_SDX, {"Scottie DX", 320, 256, 16, 4.0/3.0, 9e-3, 1.5e-3, 1.5e-3,
345.6e-3, 1050.3e-3, MODE_SCOTTIE, COLOR_GBR, PARITY_EVEN } },
345.6e-3, 1050.3e-3, MODE_SCOTTIE, COLOR_GBR, 0x4C, PARITY_EVEN } },
{MODE_R72, {"Robot 72", 320, 240, 0, 4.0/3.0, 9e-3, 3e-3, 6e-3,
138e-3, 300e-3, MODE_ROBOT, COLOR_YUV, PARITY_EVEN } },
138e-3, 300e-3, MODE_ROBOT, COLOR_YUV, 0x0C, PARITY_EVEN } },
{MODE_R36, {"Robot 36", 320, 240, 0, 4.0/3.0, 9e-3, 1.5e-3, 4.5e-3,
90e-3, 150e-3, MODE_ROBOT, COLOR_YUV, PARITY_EVEN } },
{MODE_R36, {"Robot 36", 320, 240, 0, 4.0/3.0, 11e-3, 0e-3, 4.5e-3,
90e-3, 150e-3, MODE_ROBOT, COLOR_YUV, 0x08, PARITY_EVEN } },
{MODE_R24, {"Robot 24", 160, 120, 0, 4.0/3.0, 9e-3, 0, 3e-3,
93e-3, 200e-3, MODE_ROBOT, COLOR_YUV, PARITY_EVEN } },
93e-3, 200e-3, MODE_ROBOT, COLOR_YUV, 0x04, PARITY_EVEN } },
{MODE_R36BW, {"Robot 36 B/W", 320, 240, 0, 4.0/3.0, 12e-3, 0, 0,
138e-3, 150e-3, MODE_ROBOTBW, COLOR_MONO, PARITY_EVEN } },
{MODE_R36BW, {"Robot 36 B/W", 320, 240, 0, 4.0/3.0, 10e-3, 0, 0,
140e-3, 150e-3, MODE_ROBOTBW, COLOR_MONO, 0x0E, PARITY_EVEN } },
{MODE_R24BW, {"Robot 24 B/W", 320, 240, 0, 4.0/3.0, 12e-3, 0, 0,
93e-3, 105e-3, MODE_ROBOTBW, COLOR_MONO, PARITY_EVEN } },
93e-3, 105e-3, MODE_ROBOTBW, COLOR_MONO, 0x0A, PARITY_EVEN } },
{MODE_R12BW, {"Robot 12 B/W", 160, 120, 0, 4.0/3.0, 9e-3, 0, 0,
93e-3, 100e-3, MODE_ROBOTBW, COLOR_MONO, PARITY_ODD } },
{MODE_R12BW, {"Robot 12 B/W", 160, 120, 0, 4.0/3.0, 8.5e-3, 0, 0,
93e-3, 100e-3, MODE_ROBOTBW, COLOR_MONO, 0x06, PARITY_ODD } },
{MODE_R8BW, {"Robot 8 B/W", 160, 120, 0, 4.0/3.0, 10e-3, 0, 0,
59e-3, 67e-3, MODE_ROBOTBW, COLOR_MONO, PARITY_EVEN } },
{MODE_R8BW, {"Robot 8 B/W", 160, 120, 0, 4.0/3.0, 8.5e-3, 0, 0,
59e-3, 67e-3, MODE_ROBOTBW, COLOR_MONO, 0x02, PARITY_EVEN } },
{MODE_W260, {"Wraase SC-2 60", 256, 256, 16, 4.0/3.0, 5.5225e-3, 0.5e-3, 0,
78.3e-3, 240.833878e-3, MODE_WRAASE2, COLOR_RGB, PARITY_EVEN } },
78.3e-3, 240.833878e-3, MODE_WRAASE2, COLOR_RGB, 0x3B, PARITY_EVEN } },
{MODE_W2120, {"Wraase SC-2 120", 320, 256, 16, 4.0/3.0, 5.5225e-3, 0.5e-3, 0,
156.5025e-3, 475.52e-3, MODE_WRAASE2, COLOR_RGB, PARITY_EVEN } },
156.5025e-3, 475.52e-3, MODE_WRAASE2, COLOR_RGB, 0x3F, PARITY_EVEN } },
{MODE_W2180, {"Wraase SC-2 180", 512, 256, 16, 4.0/3.0, 5.5225e-3, 0.5e-3, 0,
235e-3, 711.0437e-3, MODE_WRAASE2, COLOR_RGB, PARITY_EVEN } },
235e-3, 711.0437e-3, MODE_WRAASE2, COLOR_RGB, 0x37, PARITY_EVEN } },
{MODE_PD50, {"PD-50", 320, 256, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
91.52e-3, 388.1586e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
91.52e-3, 388.1586e-3, MODE_PD, COLOR_YUV, 0x5D, PARITY_EVEN } },
{MODE_PD90, {"PD-90", 320, 256, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
170.340e-3, 703.04e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
170.240e-3, 351.52062e-3, MODE_PD, COLOR_YUV, 0x63, PARITY_EVEN } },
{MODE_PD120, {"PD-120", 320, 496, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
121.6e-3, 508.48e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
121.6e-3, 508.48e-3, MODE_PD, COLOR_YUV, 0x5F, PARITY_EVEN } },
{MODE_PD160, {"PD-160", 512, 400, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
195.584e-3, 804.416e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
195.584e-3, 804.416e-3, MODE_PD, COLOR_YUV, 0x62, PARITY_EVEN } },
{MODE_PD180, {"PD-180", 640, 496, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
183.04e-3, 754.24e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
183.04e-3, 754.24e-3, MODE_PD, COLOR_YUV, 0x60, PARITY_EVEN } },
{MODE_PD240, {"PD-240", 640, 496, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
244.48e-3, 1000e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
244.48e-3, 1000e-3, MODE_PD, COLOR_YUV, 0x61, PARITY_EVEN } },
{MODE_PD290, {"PD-290", 800, 616, 16, 4.0/3.0, 20e-3, 2.08e-3, 0,
228.8e-3, 937.28e-3, MODE_PD, COLOR_YUV, PARITY_EVEN } },
228.8e-3, 937.28e-3, MODE_PD, COLOR_YUV, 0x5E, PARITY_EVEN } },
{MODE_P3, {"Pasokon P3", 320, 496, 16, 4.0/3.0, 5.208e-3, 1.042e-3, 1.042e-3,
133.333e-3, 409.3747e-3, MODE_PASOKON, COLOR_RGB, PARITY_EVEN } },
133.333e-3, 409.3747e-3, MODE_PASOKON, COLOR_RGB, 0x71, PARITY_EVEN } },
{MODE_P5, {"Pasokon P5", 640, 496, 16, 4.0/3.0, 7.813e-3, 1.563e-3, 1.563e-3,
200e-3, 614.065e-3, MODE_PASOKON, COLOR_RGB, PARITY_EVEN } },
200e-3, 614.065e-3, MODE_PASOKON, COLOR_RGB, 0x72, PARITY_EVEN } },
{MODE_P7, {"Pasokon P7", 640, 496, 16, 4.0/3.0, 10.417e-3, 2.083e-3, 2.083e-3,
266.666e-3, 818.747e-3, MODE_PASOKON, COLOR_RGB, PARITY_EVEN } },
266.666e-3, 818.747e-3, MODE_PASOKON, COLOR_RGB, 0x73, PARITY_EVEN } },
{MODE_UNKNOWN,
{} }

Wyświetl plik

@ -39,18 +39,20 @@ struct ModeSpec {
double t_period;
ModeFamily family;
eColorEnc color_enc;
uint16_t vis;
eVISParity vis_parity;
ModeSpec() {};
ModeSpec(std::string name, uint16_t scan_pixels, uint16_t num_lines, uint16_t header_lines,
double aspect_ratio, double t_sync, double t_porch, double t_sep, double t_scan,
double t_period, ModeFamily family, eColorEnc color_enc, eVISParity vis_parity)
:
name(name), scan_pixels(scan_pixels), num_lines(num_lines), header_lines(header_lines),
aspect_ratio(aspect_ratio), t_sync(t_sync), t_porch(t_porch), t_sep(t_sep),
t_scan(t_scan), t_period(t_period), family(family), color_enc(color_enc),
vis_parity(vis_parity)
ModeSpec(
std::string nm, uint16_t sp, uint16_t nl, uint16_t hl,
double ar, double t_sy, double t_po, double t_se, double t_sc,
double t_pe, ModeFamily fa, eColorEnc ce, uint16_t vi, eVISParity vp
) :
name(nm), scan_pixels(sp), num_lines(nl), header_lines(hl),
aspect_ratio(ar), t_sync(t_sy), t_porch(t_po), t_sep(t_se),
t_scan(t_sc), t_period(t_pe), family(fa), color_enc(ce), vis(vi),
vis_parity(vp)
{};
};