Mercurial > pt1.oyama
comparison src/recpt1.h @ 124:9c7bc6c0327e
Add DLNA server function test. (from uShare project)
author | naoyan@johnstown.minaminoshima.org |
---|---|
date | Wed, 29 Sep 2010 23:18:55 +0900 |
parents | recpt1/recpt1.h@aeba1988234f |
children | e413158cae13 |
comparison
equal
deleted
inserted
replaced
123:215a51fa3df3 | 124:9c7bc6c0327e |
---|---|
1 /* -*- tab-width: 4; indent-tabs-mode: nil -*- */ | |
2 #ifndef _RECPT1_H_ | |
3 #define _RECPT1_H_ | |
4 #include <sys/types.h> | |
5 #include <netdb.h> | |
6 #include <arpa/inet.h> | |
7 #include <netinet/in.h> | |
8 #include "decoder.h" | |
9 #include "tssplitter_lite.h" | |
10 | |
11 #define HAVE_LIBARIB25 1 | |
12 #define NUM_BSDEV 8 | |
13 #define NUM_ISDB_T_DEV 8 | |
14 #define CHTYPE_SATELLITE 0 /* satellite digital */ | |
15 #define CHTYPE_GROUND 1 /* terrestrial digital */ | |
16 #define MAX_QUEUE 8192 | |
17 #define MAX_READ_SIZE (188 * 87) /* 188*87=16356 splitterが188アライメントを期待しているのでこの数字とする*/ | |
18 #define WRITE_SIZE (1024 * 1024 * 2) | |
19 #define TRUE 1 | |
20 #define FALSE 0 | |
21 #define STREAM_MAX (16) | |
22 | |
23 | |
24 /* type definitions */ | |
25 typedef int boolean; | |
26 | |
27 typedef struct _BUFSZ { | |
28 int size; | |
29 u_char buffer[MAX_READ_SIZE]; | |
30 } BUFSZ; | |
31 | |
32 typedef struct _QUEUE_T { | |
33 unsigned int in; // 次に入れるインデックス | |
34 unsigned int out; // 次に出すインデックス | |
35 unsigned int size; // キューのサイズ | |
36 unsigned int num_avail; // 満タンになると 0 になる | |
37 unsigned int num_used; // 空っぽになると 0 になる | |
38 pthread_mutex_t mutex; | |
39 pthread_cond_t cond_avail; // データが満タンのときに待つための cond | |
40 pthread_cond_t cond_used; // データが空のときに待つための cond | |
41 BUFSZ *buffer[1]; // バッファポインタ | |
42 } QUEUE_T; | |
43 | |
44 typedef struct _STREAM_QUEUE_T { | |
45 unsigned int in; // 次に入れるインデックス | |
46 unsigned int out; // 次に出すインデックス | |
47 unsigned int size; // キューのサイズ | |
48 unsigned int num_avail; // 満タンになると 0 になる | |
49 unsigned int num_used; // 空っぽになると 0 になる | |
50 pthread_mutex_t mutex; | |
51 pthread_cond_t cond_avail; // データが満タンのときに待つための cond | |
52 pthread_cond_t cond_used; // データが空のときに待つための cond | |
53 ARIB_STD_B25_BUFFER *buffer[1]; // バッファポインタ | |
54 } STREAM_QUEUE_T; | |
55 | |
56 typedef struct _ISDB_T_FREQ_CONV_TABLE { | |
57 int set_freq; // 実際にioctl()を行う値 | |
58 int type; // チャンネルタイプ | |
59 int add_freq; // 追加する周波数(BS/CSの場合はスロット番号) | |
60 char *parm_freq; // パラメータで受ける値 | |
61 } ISDB_T_FREQ_CONV_TABLE; | |
62 | |
63 typedef struct sock_data { | |
64 int sfd; /* socket fd */ | |
65 struct sockaddr_in addr; | |
66 } sock_data; | |
67 | |
68 typedef struct _session { | |
69 int id; | |
70 int is_valid; | |
71 QUEUE_T *p_queue; | |
72 } session; | |
73 | |
74 typedef struct _streamer { | |
75 pthread_mutex_t mutex; //open、close、(recpt1からの)write | |
76 int stream_nr; | |
77 session *stream_session[STREAM_MAX]; //NULL止めの配列 | |
78 } streamer; | |
79 | |
80 typedef struct thread_data { | |
81 QUEUE_T *queue; | |
82 QUEUE_T *stream_queue; | |
83 decoder *decoder; | |
84 decoder_options *dopt; | |
85 int ch; | |
86 int lnb; /* LNB voltage */ | |
87 int tfd; /* tuner fd */ | |
88 int wfd; /* output file fd */ | |
89 ISDB_T_FREQ_CONV_TABLE *table; | |
90 sock_data *sock_data; | |
91 pthread_t signal_thread; | |
92 int recsec; | |
93 time_t start_time; | |
94 boolean indefinite; | |
95 int msqid; | |
96 splitter *splitter; | |
97 streamer *streamer; | |
98 } thread_data; | |
99 | |
100 QUEUE_T *create_queue(size_t size); | |
101 BUFSZ * dequeue(QUEUE_T *p_queue); | |
102 void destroy_queue(QUEUE_T *p_queue); | |
103 | |
104 #endif |