0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef VIDTV_ENCODER_H
0013 #define VIDTV_ENCODER_H
0014
0015 #include <linux/types.h>
0016
0017 enum vidtv_encoder_id {
0018
0019 S302M,
0020 };
0021
0022 struct vidtv_access_unit {
0023 u32 num_samples;
0024 u64 pts;
0025 u64 dts;
0026 u32 nbytes;
0027 u32 offset;
0028 struct vidtv_access_unit *next;
0029 };
0030
0031
0032 enum musical_notes {
0033 NOTE_SILENT = 0,
0034
0035 NOTE_C_2 = 65,
0036 NOTE_CS_2 = 69,
0037 NOTE_D_2 = 73,
0038 NOTE_DS_2 = 78,
0039 NOTE_E_2 = 82,
0040 NOTE_F_2 = 87,
0041 NOTE_FS_2 = 93,
0042 NOTE_G_2 = 98,
0043 NOTE_GS_2 = 104,
0044 NOTE_A_2 = 110,
0045 NOTE_AS_2 = 117,
0046 NOTE_B_2 = 123,
0047 NOTE_C_3 = 131,
0048 NOTE_CS_3 = 139,
0049 NOTE_D_3 = 147,
0050 NOTE_DS_3 = 156,
0051 NOTE_E_3 = 165,
0052 NOTE_F_3 = 175,
0053 NOTE_FS_3 = 185,
0054 NOTE_G_3 = 196,
0055 NOTE_GS_3 = 208,
0056 NOTE_A_3 = 220,
0057 NOTE_AS_3 = 233,
0058 NOTE_B_3 = 247,
0059 NOTE_C_4 = 262,
0060 NOTE_CS_4 = 277,
0061 NOTE_D_4 = 294,
0062 NOTE_DS_4 = 311,
0063 NOTE_E_4 = 330,
0064 NOTE_F_4 = 349,
0065 NOTE_FS_4 = 370,
0066 NOTE_G_4 = 392,
0067 NOTE_GS_4 = 415,
0068 NOTE_A_4 = 440,
0069 NOTE_AS_4 = 466,
0070 NOTE_B_4 = 494,
0071 NOTE_C_5 = 523,
0072 NOTE_CS_5 = 554,
0073 NOTE_D_5 = 587,
0074 NOTE_DS_5 = 622,
0075 NOTE_E_5 = 659,
0076 NOTE_F_5 = 698,
0077 NOTE_FS_5 = 740,
0078 NOTE_G_5 = 784,
0079 NOTE_GS_5 = 831,
0080 NOTE_A_5 = 880,
0081 NOTE_AS_5 = 932,
0082 NOTE_B_5 = 988,
0083 NOTE_C_6 = 1047,
0084 NOTE_CS_6 = 1109,
0085 NOTE_D_6 = 1175,
0086 NOTE_DS_6 = 1245,
0087 NOTE_E_6 = 1319,
0088 NOTE_F_6 = 1397,
0089 NOTE_FS_6 = 1480,
0090 NOTE_G_6 = 1568,
0091 NOTE_GS_6 = 1661,
0092 NOTE_A_6 = 1760,
0093 NOTE_AS_6 = 1865,
0094 NOTE_B_6 = 1976,
0095 NOTE_C_7 = 2093
0096 };
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127 struct vidtv_encoder {
0128 enum vidtv_encoder_id id;
0129 char *name;
0130
0131 u8 *encoder_buf;
0132 u32 encoder_buf_sz;
0133 u32 encoder_buf_offset;
0134
0135 u64 sample_count;
0136
0137 struct vidtv_access_unit *access_units;
0138
0139 void *src_buf;
0140 u32 src_buf_sz;
0141 u32 src_buf_offset;
0142
0143 bool is_video_encoder;
0144 void *ctx;
0145
0146 __be16 stream_id;
0147
0148 __be16 es_pid;
0149
0150 void *(*encode)(struct vidtv_encoder *e);
0151
0152 u32 (*clear)(struct vidtv_encoder *e);
0153
0154 struct vidtv_encoder *sync;
0155
0156 u32 sampling_rate_hz;
0157
0158 void (*last_sample_cb)(u32 sample_no);
0159
0160 void (*destroy)(struct vidtv_encoder *e);
0161
0162 struct vidtv_encoder *next;
0163 };
0164
0165 #endif