forked from fsphil/hacktv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hacktv.h
84 lines (69 loc) · 2.54 KB
/
hacktv.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* hacktv - Analogue video transmitter for the HackRF */
/*=======================================================================*/
/* Copyright 2017 Philip Heron <phil@sanslogic.co.uk> */
/* */
/* This program is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation, either version 3 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef _HACKTV_H
#define _HACKTV_H
#include <stdint.h>
#include "video.h"
/* Return codes */
#define HACKTV_OK 0
#define HACKTV_ERROR -1
#define HACKTV_OUT_OF_MEMORY -2
/* Integer types */
#define HACKTV_INT16_COMPLEX 0
#define HACKTV_INT16_REAL 1
/* File output types */
#define HACKTV_UINT8 0
#define HACKTV_INT8 1
#define HACKTV_INT16 2
#define HACKTV_INT32 3
#define HACKTV_FLOAT 4 /* 32-bit float */
/* Standard audio sample rate */
#define HACKTV_AUDIO_SAMPLE_RATE 32000
/* AV source function prototypes */
typedef uint32_t *(*hacktv_av_read_video_t)(void *private, float *ratio);
typedef int16_t *(*hacktv_av_read_audio_t)(void *private, size_t *samples);
typedef int (*hacktv_av_close_t)(void *private);
/* RF output function prototypes */
typedef int (*hacktv_rf_write_t)(void *private, int16_t *iq_data, size_t samples);
typedef int (*hacktv_rf_close_t)(void *private);
/* Program state */
typedef struct {
/* Configuration */
char *output_type;
char *output;
char *mode;
int samplerate;
float gamma;
int repeat;
int verbose;
char *teletext;
char *wss;
int videocrypt;
int syster;
int filter;
uint64_t frequency;
int amp;
int gain;
int file_type;
/* Video encoder state */
vid_t vid;
/* RF sink interface */
void *rf_private;
hacktv_rf_write_t rf_write;
hacktv_rf_close_t rf_close;
} hacktv_t;
#endif