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