diff options
Diffstat (limited to 'mcast/client/.svn/text-base/recv_tv.h.svn-base')
-rw-r--r-- | mcast/client/.svn/text-base/recv_tv.h.svn-base | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/mcast/client/.svn/text-base/recv_tv.h.svn-base b/mcast/client/.svn/text-base/recv_tv.h.svn-base new file mode 100644 index 0000000..9feb673 --- /dev/null +++ b/mcast/client/.svn/text-base/recv_tv.h.svn-base @@ -0,0 +1,96 @@ +/* + * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de + * + * See the COPYING file for copyright information and + * how to reach the author. + * + * modified by Reel Multimedia, http://www.reel-multimedia.com, info@reel-multimedia.com + * 01042010 DL: use a single thread for reading from network layer (uses less resources) + * + */ + +#ifndef __RECV_TV_H__ +#define __RECV_TV__H__ + +#define REP_TIME 1000000 +#define MAX_DROP_NUM 5 +#define RECV_MAX_PIDS 256 + +//typedef struct recv_info recv_info_t; + +typedef struct { + int pid; + int id; + int priority; +#if 1 + int re; +#endif +} dvb_pid_t; + +typedef struct pid_info +{ + struct list list; + UDPContext *s; + dvb_pid_t pid; + struct in6_addr mcg; + recv_info_t *recv; + pthread_t recv_ts_thread; + int run; + int dropped; + int cont_old; +} pid_info_t; + +struct recv_info +{ + struct list list; + recv_info_t *head; + pid_info_t slots; + int lastalloc; + pthread_t recv_ten_thread; + struct in6_addr mcg; + int ten_run; + + dvb_pid_t pids[RECV_MAX_PIDS]; + int pidsnum; + recv_sec_t sec; + struct dvb_frontend_parameters fe_parms; + + recv_festatus_t fe_status; + + int (*handle_ten) (tra_t *ten, void *context); + void *handle_ten_context; + + int (*handle_ts) (unsigned char *buffer, size_t len, void *context); + void *handle_ts_context; +}; + +// Internal Stuff +int recv_redirect (recv_info_t * r, struct in6_addr mcg); +int count_all_pids (recv_info_t * receivers); +int count_receivers(recv_info_t *receivers); + +// PID-Handling +DLL_SYMBOL int recv_pid_add (recv_info_t * r, dvb_pid_t *pid); +DLL_SYMBOL int recv_pid_del (recv_info_t * r, int pid); +DLL_SYMBOL int recv_pids (recv_info_t * r, dvb_pid_t *pids); +DLL_SYMBOL int recv_pids_get (recv_info_t *r, dvb_pid_t *pids); +DLL_SYMBOL int recv_show_all_pids (recv_info_t * receivers); +void recv_show_pids(recv_info_t *r); + +// Complete Tune +DLL_SYMBOL int recv_tune (recv_info_t * r, fe_type_t type, int satpos, recv_sec_t *sec, struct dvb_frontend_parameters *fe_parms, dvb_pid_t *pids); + +// Receiver Handling +DLL_SYMBOL recv_info_t *recv_add (void); +DLL_SYMBOL void recv_del (recv_info_t *r); +DLL_SYMBOL int recv_stop (recv_info_t * r); +DLL_SYMBOL int register_ts_handler (recv_info_t * r, int (*p)(unsigned char *, size_t, void *), void *c); + +// Module global functions +DLL_SYMBOL int recv_init(char *intf, int p); +DLL_SYMBOL int recv_exit(void); + + +int find_any_slot_by_mcg (recv_info_t * receivers, struct in6_addr *mcg); + +#endif |