source: titan/titan/struct.h @ 20233

Last change on this file since 20233 was 20233, checked in by nit, 8 years ago

[titan] first step auto subtitle start

File size: 34.3 KB
Line 
1/*****************************************************/
2/* this file is part of the tiTan / tiTanNIT Project */
3/* and allowed only for use with this.               */
4/*                                                   */
5/* copyright by NIT                                  */
6/*****************************************************/
7
8#ifndef STRUCT_H
9#define STRUCT_H
10
11#define _GNU_SOURCE
12
13#ifdef SIMULATE
14#include <mcheck.h>
15#endif
16
17#include <stdio.h>
18#include <stdlib.h>
19#include <stdint.h>
20#include <string.h>
21#include <libgen.h>
22#include <fcntl.h>
23#include <ctype.h>
24#include <linux/fb.h>
25#include <sys/ioctl.h>
26#include <sys/mman.h>
27#include <png.h>
28#include <jpeglib.h>
29#include <libintl.h>
30#include <locale.h>
31#include <math.h>
32#include <linux/input.h>
33#include <sys/wait.h>
34#include <time.h>
35#include <dirent.h>
36#include <fnmatch.h>
37#include <dlfcn.h>
38#include <pthread.h>
39#include <linux/dvb/frontend.h>
40#include <linux/dvb/dmx.h>
41#include <linux/dvb/audio.h>
42#include <linux/dvb/video.h>
43#include <sys/vfs.h>
44#include <inttypes.h>
45#include <sys/socket.h>
46#include <sys/un.h>
47#include <unistd.h>
48#include <zlib.h>
49#include <net/if.h>
50#include <netinet/in.h>
51#include <arpa/inet.h>
52#include <netdb.h>
53#include <errno.h>
54#include <linux/dvb/version.h>
55#include <setjmp.h>
56#include <sys/mount.h>
57#include <execinfo.h>
58#include <ifaddrs.h>
59#include <linux/dvb/ca.h>
60#include <poll.h>
61#include <sys/utsname.h>
62#include <regex.h>
63#include <mntent.h>
64
65#define IPKG_LIB
66#include "libipkg/config.h"
67#include "libipkg/libipkg.h"
68#include "libipkg/args.h"
69#include "libipkg/ipkg_cmd.h"
70
71//for freetype
72#include <ft2build.h>
73#include FT_FREETYPE_H
74#include FT_CACHE_H
75
76//for eplayer
77#ifdef EPLAYER3
78#include <common.h>
79#include <subtitle.h>
80#endif
81
82#ifdef EPLAYER4
83#include <gst/gst.h>
84#include <gst/pbutils/missing-plugins.h>
85#endif
86
87#ifdef DVDPLAYER
88#include <ddvdlib.h>
89#endif
90
91#define OVERSION "1.25"
92#define PROGNAME "titan"
93#define COPYRIGHT "NIT"
94#define CRONTRIBUT "obi, black, dvboxer, oxygen, gost"
95#define PLUGINVERSION 0
96
97#define _(x) gettext(x)
98#define MINMALLOC 4096
99#define SCROLLBARWIDTH 15
100#define SCROLLBARBORDERSIZE 1
101#define FONTPOSYOFFSET -3
102#define FB "fb0"
103#define FB1 "fb1"
104#define SKINFB "skinfb"
105#define ACCELFB "accelfb"
106#define CONFIGFILE PROGNAME".cfg"
107#define KILLPROG "killall -9 "PROGNAME
108#define REBOOT "init 6"
109#define FILELISTDELMARK 255
110#define PLUGINDELMARK 254
111#define MAXDVBADAPTER 2
112#define MAXFRONTENDDEV 4
113#define MAXDEMUXDEV 4
114#define MAXDEMUXDEVOPEN 10
115#define MAXAUDIODEV 4
116#define MAXVIDEODEV 4
117#define MAXCIDEV 4
118#define MAXCADEV 4
119#define MAXDVRDEV 4
120#define RCTIMEOUT 999999
121#define RCTHREADSTANDBY 999998
122#define MAXSERVICETYPE 10
123#define CHANNELCACHEMAX 1000
124#define MEDIADBCACHEMAX 1000
125#define TRANSPONDERCACHEMAX 500
126#define MAXHTTPDCONN 20
127#define MAXHTMLLINE 300
128#define MAXRGUIDCONN 1
129#define LISTHASHSIZE 27
130#define MAXCASESSION 16
131#define MAXCASERVICE 20
132#define MAXLONGKEY 10
133#define MAXSAT 64
134#define EPGSCANLOG "/tmp/epgscan.log"
135#define MAXCHANNELHISTORY 6
136#define HILO(x) (x##_hi << 8 | x##_lo)
137#define HILO32(x) (x##_hi << 24 | x##_mh << 16 | x##_ml << 8 | x##_lo)
138#define HTTPAUTH "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0="
139
140#define USBDEVICE_SUPER_MAGIC 0x9fa2
141#define EXT2_SUPER_MAGIC 0xEF53
142#define EXT3_SUPER_MAGIC 0xEF53
143#define SMB_SUPER_MAGIC 0x517B
144#define NFS_SUPER_MAGIC 0x6969
145#define MSDOS_SUPER_MAGIC 0x4d44
146
147//CA Defines
148#define T_SB 0x80               //sb (h<--m)
149#define T_RCV 0x81              //receive (h-->m)
150#define T_CREATE_T_C 0x82       //create transport connection (h-->m)
151#define T_C_T_C_REPLY 0x83      //ctc reply (h<--m)
152#define T_DELETE_T_C 0x84       //delete tc (h<->m)
153#define T_D_T_C_REPLY 0x85      //dtc reply (h<->m)
154#define T_REQUEST_T_C 0x86      //request transport connection (h<--m)
155#define T_NEW_T_C 0x87          //new tc - reply to t_request (h-->m)
156#define T_T_C_ERROR 0x77        //error creating tc (h-->m)
157#define T_DATA_LAST 0xA0        //convey data from higher (h<->m)
158#define T_DATA_MORE 0xA1        //convey data from higher (h<->m)
159
160// VFD icons supported (more or less) on all boxes:
161typedef enum { VFD_USB = 0x10, VFD_HD, VFD_HDD, VFD_LOCK, VFD_BT, VFD_MP3, VFD_MUSIC, VFD_DD, VFD_MAIL, VFD_MUTE, VFD_PLAY, VFD_PAUSE, VFD_FF, VFD_FR, VFD_REC, VFD_CLOCK } vfdicons;
162
163#define OMIN(a,b) (a < b ? a : b)
164#define OMAX(a,b) (a > b ? a : b)
165
166#define bcdtoint(i) ((((i & 0xf0) >> 4) * 10) + (i & 0x0f))
167
168#define alpha_composite(composite, fg, alpha, bg) { \
169unsigned short temp = ((unsigned short)(fg)*(unsigned short)(alpha) +   \
170(unsigned short)(bg)*(unsigned short)(255 - (unsigned short)(alpha)) +  \
171(unsigned short)128);  \
172(composite) = (unsigned char)((temp + (temp >> 8)) >> 8); }
173
174enum {LEFT=20000, CENTER, RIGHT, TEXTCENTER, TEXTRIGHT};
175enum {TOP=20000, MIDDLE, BOTTOM, TEXTMIDDLE, TEXTBOTTOM};
176enum {BOTTOMLEFT, BOTTOMRIGHT, TOPLEFT, TOPRIGHT};
177enum {LEFTRIGHT=1, TOPBOTTOM, LEFTMIDDLE, TOPMIDDLE};
178enum {NO, YES, AUTONO, AUTOYES};
179enum {UNDEF=0, LISTBOX=1, TEXTBOX=2, CHOICEBOX=4, INPUTBOX=8, INPUTBOXNUM=16, FILELIST=32, PROGRESSBAR=64, MENU=128, MULTIPROGRESSBAR=256, GRID=512, GRIDBR=1024};
180enum {FRONTENDDEV, DEMUXDEV, VIDEODEV, AUDIODEV, CADEV, CIDEV, FRONTENDDEVDUMMY, DVRDEV};
181enum {TV, RADIO};
182enum {RECDIRECT, RECTIMER, RECTIMESHIFT, RECSTREAM, RECPLAY};
183enum {AC3 = 0, MPEGA = 1, DTS = 2, LPCM = 6, AAC = 8, AACHE = 9};
184enum {MPEGV = 0, MPEG4V = 4, H264 = 1, VC1 = 10};
185enum {ALLCHANNEL, SATCHANNEL, PROVIDERCHANNEL, AZCHANNEL, BOUQUETCHANNEL, SATLIST, PROVIDERLIST, AZLIST, MAINBOUQUETLIST};
186enum {NOMODE, MVMODE, RMMODE, CPMODE, PROTECTMODE, EDITMODE};
187enum {NOTHING, CHANNEL, STILLPIC, RECORDDIRECT, RECORDTIMER, RECORDTIMESHIFT, RECORDSTREAM, TMPOTHER, RECORDPLAY};
188enum {START, PAUSE, STOP};
189enum {DEACTIVE, ACTIVE, INPAUSE, ERROR};
190enum {FUNCTEXT, FUNCPIC, FUNCPROGRESS};
191enum {CASESSIONCREATE, CASESSIONBUSY, CASESSIONDEL, CASESSIONSTART, CASESSIONFINAL, CARESFIRSTENQUIRY, CARESCHANGE, CARESENQUIRY, CADATETIMESEND, CAMMIIDLE, CAMMIDISPLAYREPLAY, CAMMIFAKEOK};
192
193struct lastsubtitle
194{
195        uint64_t transponderid;
196        int serviceid;
197        int16_t subtitlepid;
198        struct lastsubtitle* next;
199};
200
201struct newsletter
202{
203        unsigned long nr;
204        char* date;
205        char* title;
206        char* text;
207        struct newsletter* next;
208};
209
210struct oldentry
211{
212        void* entry;
213        //0 = epg
214        int type;
215        time_t del;
216        struct oldentry* next;
217};
218
219struct unicable
220{
221        char* manufacturer;
222        char* product;
223        int scr1;
224        int scr2;
225        int scr3;
226        int scr4;
227        int scr5;
228        int scr6;
229        int scr7;
230        int scr8;
231        int lofl;
232        int lofh;
233        struct unicable* next;
234        struct unicable* prev;
235};
236
237struct id3tag
238{
239        int version;
240        char* title;
241        char* artist;
242        char* album;
243        char* year;
244        char* comment;
245        char* genrecode;
246        char* genretext;
247        char* poster;
248        int track;
249        int len;
250        int picturetype;
251        unsigned int picturepos;
252        unsigned int picturelen;
253};
254
255struct id3genre
256{
257        int code;
258        char text[30];
259};
260
261struct regex
262{
263        char* match1;
264        char* match2;
265        char* match3;
266        char* match4;
267        char* match5;
268        char* match6;
269        char* match7;
270        char* match8;
271        char* match9;
272        char* match10;
273};
274
275struct imdb
276{
277        char* title;
278        char* year;
279        char* rated;
280        char* released;
281        char* genre;
282        char* director;
283        char* writer;
284        char* actors;
285        char* plot;
286        char* poster;
287        char* runtime;
288        char* rating;
289        char* votes;
290        char* id;
291        char* thumb;
292};
293
294struct imdbapi
295{
296        char* title;
297        char* year;
298        char* rated;
299        char* released;
300        char* genre;
301        char* director;
302        char* writer;
303        char* actors;
304        char* plot;
305        char* poster;
306        char* runtime;
307        char* rating;
308        char* votes;
309        char* id;
310};
311
312struct tmdb
313{
314        char* title;
315        char* year;
316        char* rated;
317        char* released;
318        char* genre;
319        char* runtime;
320        char* plot;
321        char* postermid;
322        char* rating;
323        char* votes;
324        char* id;
325        char* backdrop;
326        char* imdbid;
327        char* orgname;
328        char* language;
329        char* type;
330        char* score;
331        char* cover;
332        char* thumb;
333        char* mvi;
334        struct tmdb* prev;
335        struct tmdb* next;
336};
337
338struct mediadbfilter
339{
340        struct mediadb* node;
341        int count;
342        struct mediadbfilter* prev;
343        struct mediadbfilter* next;
344};
345
346struct mediadbcategory
347{
348        int type;
349        char* name;
350        struct mediadbcategory* prev;
351        struct mediadbcategory* next;
352};
353
354struct mediadb
355{
356        char* id;
357        int type;
358        char* title;
359        int year;
360        char* released;
361        char* runtime;
362        char* genre;
363        char* director;
364        char* writer;
365        char* actors;
366        char* plot;
367        char* poster;
368        int rating;
369        int votes;
370        char* path;
371        char* file;
372        char* shortname;
373        char* fileinfo;
374        time_t timestamp;
375        //bit 31: manual change
376        int flag;
377        int backdropcount;
378        struct mediadb* prev;
379        struct mediadb* next;
380};
381
382struct mediadbcache
383{
384        char* path;
385        char* file;
386        struct mediadb* mediadbnode;
387        struct mediadbcache* next;
388};
389
390struct mostzap
391{
392        int serviceid;
393        uint64_t transponderid;
394        int count;
395        struct mostzap* prev;
396        struct mostzap* next;
397};
398
399struct menulist
400{
401        char* name;
402        char* text;
403        char* pic;
404        char* param;
405        char* param1;
406        int deaktiv;
407        int defaultentry;
408        struct menulist* next;
409};
410
411struct channelhistory
412{
413        struct channel* chnode;
414        char* channellist;
415};
416
417struct queue
418{
419        //0-99 for ca module
420        //101 for thumb thread
421        int type;
422        int flag;
423        int len;
424        void* data;
425        void* data1;
426        struct queue* prev;
427        struct queue* next;
428};
429
430struct casession
431{
432        int inuse;
433        int sessionnr;
434        int action;
435        int state;
436        int mmimanager;
437        int camanager;
438        int datetimemanager;
439        int appmanager;
440        int resmanager;
441        char* mmititle;
442        char* mmisubtitle;
443        char* mmitext;
444        char* mmibottom;
445};
446
447struct caslot
448{
449        struct casession casession[MAXCASESSION];
450        int connid;
451        int poll;
452        int status;
453        int rlen;
454        unsigned char* rbuf;
455        char* name;
456        int fastrun;
457        char* caids;
458};
459
460struct hdd
461{
462        char* device;
463        int partition;
464        unsigned long size;
465        char* filesystem;
466        char* label;
467        char* uuid;
468        char* vendor;
469        char* model;
470        int removable;
471        int read;
472        int write;
473        int sleeptime;
474        int notchanged;
475        struct hdd* prev;
476        struct hdd* next;
477};
478
479struct scaninfo
480{
481        struct dvbdev* fenode;
482        struct transponder* tpnode;
483        struct skin* scanscreen;
484        struct skin* listbox;
485        int threadend;
486        int scantype;
487        int fetype;
488        int orbitalpos;
489        int timeout;
490        int onlyfree;
491        int networkscan;
492        int clear;
493        int blindscan;
494        char* satname;
495        int tpcount;
496        int tpmax;
497        int tpnew;
498        int tvcount;
499        int newtvcount;
500        int radiocount;
501        int newradiocount;
502        int datacount;
503        int newdatacount;
504        int blindcount;
505        int newblindcount;
506        unsigned int blindmax;
507} scaninfo;
508
509struct screensaver
510{
511        int type;
512        int speed;
513        int newposx;
514        int newposy;
515        int flag;
516        struct skin* screen;
517        struct skin* screennode;
518        struct skin* filelist;
519        struct skin* aktnode;
520        struct pic* pic;
521        char* value;
522        char* path;
523};
524
525struct playlist
526{
527        char* file;
528        struct playlist* prev;
529        struct playlist* next;
530};
531
532struct mainplaylist
533{
534        char* name;
535        char* filename;
536        struct playlist* playlist;
537        struct mainplaylist* prev;
538        struct mainplaylist* next;
539};
540
541struct epgrecord
542{
543        time_t begin;
544        time_t end;
545        int posx;
546        int size;
547        struct epgrecord* prev;
548        struct epgrecord* next;
549};
550
551struct download
552{
553        char* host;
554        char* page;
555        int port;
556        char* filename;
557        char* auth;
558        int connfd;
559        int proz;
560        unsigned int maxkb;
561        unsigned int aktkb;
562        int ret;
563        int timeout;
564};
565
566struct epgscanlist
567{
568        int serviceid;
569        uint64_t transponderid;
570        time_t scantime;
571        struct epgscanlist* prev;
572        struct epgscanlist* next;
573};
574
575struct rgba
576{
577        char r;
578        char g;
579        char b;
580        char a;
581};
582
583struct subclutentry
584{
585        unsigned char Y, Cr, Cb, T;
586        unsigned char valid;
587};
588
589struct subclut
590{
591        unsigned char clutid;
592        unsigned char clutversionnumber;
593        struct subclutentry entries2bit[4];
594        struct subclutentry entries4bit[16];
595        struct subclutentry entries8bit[256];
596        struct subclut *next;
597};
598
599struct subpagereg
600{
601        int regid;
602        int reghorizontaladdress;
603        int regverticaladdress;
604        int scaleposx, scaleposy;
605        struct subpagereg *next;
606};
607
608struct subregobj
609{
610        int objid;
611        int objtype;
612        int objproviderflag;
613        int objhorizontalpos;
614        int objverticalpos;
615        // not supported right now...
616        int foregroundpixel;
617        int backgroundpixel;
618        struct subregobj *next;
619};
620
621struct subreg
622{
623        int regid;
624        int versionnumber;
625        int height, width;
626        int scaleheight, scalewidth;
627        int depth;
628        unsigned char *buf;
629        struct rgba *palette;
630        int clutid;
631        int committed;
632        struct subregobj *objects;
633        struct subreg *next;
634};
635
636struct subpage
637{
638        int pageid;
639        time_t pagetimeout;
640        int pageversionnumber;
641        int state;
642        int pcssize;
643        struct subpagereg *pageregions;
644        struct subreg *regions;
645        struct subclut *cluts;
646        struct subpage *next;
647};
648
649struct bitstream
650{
651        unsigned char *data;
652        int size;
653        int avail;
654        int consumed;
655};
656
657//there are a copyrectimer function
658//if you change the struct you must change this funktion
659struct rectimer
660{
661        char* name;
662        char* timestamp;
663        time_t begin;
664        time_t end;
665        int repeate;
666        int afterevent;
667        char* pincode;
668        int disabled;
669        int justplay;
670        char* recpath;
671        int servicetype;
672        char* channellist;
673        int serviceid;
674        //0 = nothing
675        //1 = running
676        //2 = end
677        //3 = error
678        //4 = epgscan timer activ
679        //5 = epgscan timer not activ
680        int status;
681        char* errstr;
682        struct service* servicenode;
683        uint64_t transponderid;
684        struct rectimer *prev;
685        struct rectimer *next;
686};
687
688struct inetwork
689{
690        char* device;
691        char* ip;
692        char* netmask;
693        char* mac;
694        char* broadcast;
695        //0 = static
696        //1 = dhcp
697        //2 = off
698        int type;
699        int found;
700        //flag 1 = used in titan
701        int flag;
702        struct inetwork *prev;
703        struct inetwork *next;
704};
705
706struct rcmap
707{
708        char* name;
709        int key;
710        int newkey;
711        struct rcmap* next;
712};
713
714struct splitstr
715{
716        char* part;
717};
718
719struct channelcache
720{
721        int serviceid;
722        uint64_t transponderid;
723        struct channel* chnode;
724        struct channelcache* next;
725};
726
727struct transpondercache
728{
729        uint64_t transponderid;
730        struct transponder* tpnode;
731        struct transpondercache* next;
732};
733
734struct filelist
735{
736        int type;
737        int view;
738        off64_t size;
739        time_t date;
740};
741
742struct skin
743{
744        char* name;
745        unsigned int type;
746        uint8_t wrap;
747        uint8_t bordersize;
748        uint8_t scrollbar;
749        uint16_t halign;
750        uint16_t valign;
751        int16_t posx;
752        int16_t posy;
753        int16_t width;
754        int16_t height;
755        long bordercol;
756        long deaktivcol;
757        long shadowcol;
758        uint8_t shadowsize;
759        uint8_t shadowpos;
760        uint8_t fontsize;
761        uint8_t fontsize2;
762        long fontcol;
763        long fontcol2;
764        char* font;
765        int16_t zorder;
766        int16_t titlealign;
767        char* title;
768        char* text;
769        char* text2;
770        long bgcol;
771        long bgcol2;
772        long titlebgcol;
773        long titlebgcol2;
774        long progresscol;
775        char* selectpic;
776        char* pic;
777        int16_t picwidth;
778        int16_t picheight;
779        uint16_t hspace;
780        uint16_t vspace;
781        char* (*skinfunc)(struct skin*, void*, void*);
782        char* param1;
783        char* param2;
784        char* parent;
785        char* input;
786        char* mask;
787        uint16_t textposx;
788        uint16_t textposx2;
789        int16_t gradient;
790        int16_t titlegradient;
791        uint8_t transparent;
792        uint8_t hidden;
793        uint8_t funcrettype;
794        int8_t charspace;
795        int8_t bordertype;
796        int16_t borderradius;
797        uint16_t bgspace;
798        uint8_t picquality;
799
800        uint8_t titlesize;
801        struct filelist* filelist;
802        struct skin* parentpointer;
803        char* ret;
804        char* choiceboxvalue;
805        unsigned int linecount;
806        unsigned int pagecount;
807        unsigned int poscount;
808        unsigned int gridcol;
809        int aktpage;
810        int aktline;
811        uint8_t scrollbarbordersize;
812        uint8_t prozposx;
813        uint8_t prozposy;
814        uint8_t prozwidth;
815        uint8_t prozheight;
816        uint8_t picprozwidth;
817        uint8_t del;
818        uint8_t picprozheight;
819        int16_t scrollbarheight;
820        int16_t progresssize;
821        int16_t scrollbarwidth;
822        int16_t scrollbarpos;
823        int16_t rposx;
824        int16_t rposy;
825        int16_t rwidth;
826        int16_t rheight;
827        int16_t rpicwidth;
828        int16_t rpicheight;
829        int16_t iposx;
830        int16_t iposy;
831        int16_t iwidth;
832        int16_t iheight;
833        char* handle;
834        char* handle1;
835        struct epgrecord* epgrecord;
836        char* pluginhandle;
837        uint8_t locked;
838        //bit 0: 1 = node is drawed
839        uint8_t flag;
840        struct skin *select;
841        struct skin *child;
842        struct skin *prev;
843        struct skin *next;
844};
845
846struct epg
847{
848        int eventid;
849        int version;
850        time_t starttime;
851        time_t endtime;
852        char* title;
853        char* subtitle;
854        char* desc;
855        int desclen;
856        int desccomplen;
857        int parentalrating;
858        struct epg* prev;
859        struct epg* next;
860};
861
862struct shutdowntimer
863{
864        int active,type; //type: 0=DeepStandby, 1=Standby
865        long long shutdown_time;
866};
867
868struct dvbdev
869{
870        char* dev;
871        int fd;
872        uint8_t type;
873        uint8_t adapter;
874        uint8_t devnr;
875        uint8_t felock;
876        struct transponder* felasttransponder;
877        struct transponder* feakttransponder;
878        int feunicable;
879        unsigned int feloffrequency;
880        int feaktband;
881        int feaktpolarization;
882        fe_sec_voltage_t feaktvolt;
883        fe_sec_tone_mode_t feakttone;
884        int fedmxsource;
885        char* feaktnr;
886        char* feshortname;
887        struct dvb_frontend_info* feinfo;
888        struct caslot* caslot;
889        struct dvbdev *next;
890};
891
892//there are a copytransponder and createtransponder function
893//if you change this struct you must change the function
894struct transponder
895{
896        uint64_t id;
897        uint8_t fetype;
898        uint8_t polarization;
899        uint8_t modulation;
900        uint8_t fec;
901        uint8_t pilot;
902        uint8_t rolloff;
903        uint8_t inversion;
904        uint8_t system;
905        uint8_t flag;
906        // 0 = unknown
907        // 1 = tunable
908        // 2 = not tunable
909        uint8_t tunablestatus;
910        int orbitalpos;
911        unsigned int frequency;
912        unsigned int symbolrate;
913        int encoding;
914        time_t lastepg;
915        struct transponder *next;
916};
917
918struct provider
919{
920        int providerid;
921        char* name;
922        int flag;
923        struct provider *prev;
924        struct provider *next;
925};
926
927struct subtitle
928{
929        char* name;
930        int16_t pid;
931        int16_t type;
932        int16_t id1;
933        int16_t id2;
934        struct subtitle* next;
935};
936
937struct esinfo
938{
939        int streamtype;
940        int pid;
941        struct esinfo* next;
942};
943
944struct cadesc
945{
946        int pid;
947        int len;
948        int systemid;
949        int reserved;
950        int capid;
951        char* privat;
952        struct cadesc* next;
953};
954
955struct pmt
956{
957        int programnumber;
958        int versionnumber;
959        int currentnextindicator;
960};
961
962struct audiotrack
963{
964        char* name;
965        uint8_t audiocodec;
966        int16_t audiopid;
967        struct audiotrack* next;
968};
969
970struct linkedchannel
971{
972        uint64_t transponderid;
973        int serviceid;
974        struct linkedchannel* next;
975};
976
977//there are a createchannel function
978//if you change this struct you must change the function
979struct channel
980{
981        char* name;
982        uint64_t transponderid;
983        int providerid;
984        int serviceid;
985        int servicetype;
986        uint8_t flag;
987        uint8_t crypt;
988        int8_t videocodec;
989        int8_t audiocodec;
990        int16_t videopid;
991        int16_t audiopid;
992        int16_t ac3audiopid;
993        int16_t txtpid;
994        int16_t pcrpid;
995        int16_t pmtpid;
996        int16_t aitpid;
997        uint8_t protect;
998        char* hbbtvurl;
999        struct transponder *transponder;
1000        struct provider *provider;
1001        struct audiotrack *audiotrack;
1002        struct subtitle *subtitle;
1003        struct linkedchannel *linkedchannel;
1004        struct pmt *pmt;
1005        struct cadesc *cadesc;
1006        struct esinfo *esinfo;
1007        struct epg *epg;
1008        struct channel *prev;
1009        struct channel *next;
1010};
1011
1012struct sat
1013{
1014        char* name;
1015        int orbitalpos;
1016        int flag;
1017        int fetype;
1018        int scan;
1019        struct sat *prev;
1020        struct sat *next;
1021};
1022
1023struct service
1024{
1025        int type;
1026        char* channellist;
1027        struct dvbdev *fedev;
1028        struct dvbdev *dmxaudiodev;
1029        struct dvbdev *dmxvideodev;
1030        struct dvbdev *dmxpcrdev;
1031        struct dvbdev *dmxsubtitledev;
1032        struct dvbdev *audiodev;
1033        struct dvbdev *videodev;
1034        struct transponder *transponder;
1035        struct channel *channel;
1036        unsigned char *pmtbuf;
1037        int pmtlen;
1038        int recdmxstart;
1039        int recdstfd;
1040        int recsrcfd;
1041        time_t recendtime;
1042        char* rectimestamp;
1043        size_t reclastsync;
1044        off64_t rectotal;
1045        int reccount;
1046        int tssize;
1047        char* recname;
1048        struct service *next;
1049};
1050
1051struct caservice
1052{
1053        struct service* service;
1054        struct channel* channel;
1055        int count;
1056        int camsockfd;
1057        struct caslot* caslot;
1058        int camanager;
1059        char* capmt;
1060        int capmtlen;
1061        int cmdpos;
1062};
1063
1064struct stimerthread
1065{
1066        int delay;
1067        int count;
1068        int notfirst;
1069        pthread_attr_t attr;
1070        pthread_t thread;
1071        int status;
1072        int aktion;
1073        //bit 0: 1 = stop allwas on titan end
1074        int flag;
1075        void* param1;
1076        void* param2;
1077        void* (*func)(struct stimerthread*, void*, void*);
1078        struct stimerthread* next;
1079};
1080
1081struct hddparm
1082{
1083        char* device;
1084        int read;
1085        int write;
1086        int sleeptime;
1087        int notchanged;
1088};
1089
1090struct marker
1091{
1092        off64_t pos;
1093        off64_t time;
1094        char* timetext;
1095        struct marker* prev;
1096        struct marker* next;
1097};
1098
1099struct status
1100{
1101        int longkeycode[MAXLONGKEY];
1102        //aktivate extra featers
1103        int expertmodus;
1104        //http user:passwd
1105        char* httpauth;
1106        //set to 1 if channellist or channelnr open
1107        int channelswitch;
1108        //deaktivates child protect if greater then akttime
1109        time_t protecttime;
1110        char* boxtype;
1111        pthread_t mainthread;
1112        //videosize from stream
1113        video_size_t videosize;
1114        time_t videosizevalid;
1115        //radius for rounded border
1116        int borderradius;
1117        int picbordersize;
1118        int titlelinesize;
1119        //0 border
1120        //1 fullbar
1121        int listboxselecttype;
1122        //0 camd.socket
1123        //1 pmt.tmp
1124        int pmtmode;
1125        //timer for del old epg entrys
1126        time_t deloldepg;
1127        //write epg periodic to medium
1128        time_t writeperiodicepg;
1129        //0 dektiv
1130        //1 only scan
1131        //2 only whitlist
1132        //3 scan and whitelist
1133        int epglistmode;
1134        // 1 manual
1135        // 2 from standby
1136        int startmode;
1137        jmp_buf longjumpbuf;
1138        pthread_mutex_t drawingmutex;
1139        pthread_mutex_t rectimermutex;
1140        pthread_mutex_t servicemutex;
1141        pthread_mutex_t epgmutex;
1142        pthread_mutex_t channelmutex;
1143        pthread_mutex_t timerthreadmutex;
1144        pthread_mutex_t audiotrackmutex;
1145        pthread_mutex_t subtitlemutex;
1146        pthread_mutex_t linkedchannelmutex;
1147        pthread_mutex_t dmxdevmutex;
1148        pthread_mutex_t rcmutex;
1149        pthread_mutex_t queuemutex;
1150        pthread_mutex_t clistmutex;
1151        pthread_mutex_t hddmutex;
1152        pthread_mutex_t tsseekmutex;
1153        pthread_mutex_t accelfbmutex;
1154        pthread_mutex_t mediadbmutex;
1155        pthread_mutex_t oldentrymutex;
1156        pthread_mutex_t newslettermutex;
1157        pthread_mutex_t tithekmutex;
1158        // mutex for VFD handling
1159        pthread_mutex_t vfdmutex;
1160        off64_t recsplitsize;
1161        char* gateway;
1162        char* dnsserver1;
1163        char* dnsserver2;
1164        int fasttextrender;
1165        // 1 release all menus
1166        int menurelease;
1167        int play;
1168        int pause;
1169        int playspeed;
1170        int slowspeed;
1171        int random;
1172        int repeat;
1173        int epgdays;
1174        int spinnertime;
1175        int spinnerspeed;
1176        int hangtime;
1177        int timeupdatecount;
1178        int markmodus;
1179        // 1 from main prog
1180        // 2 from a thread
1181        int standby;
1182        char* tmp;
1183        // rc filedescriptor
1184        int fdrc;
1185        // rc filedescriptor for tuxtxt
1186        int fdrctxt;
1187        int writeconfig;
1188        int writeownconfig;
1189        int writercconfig;
1190        int writeskinconfig;
1191        int writechannel;
1192        int writetransponder;
1193        int writeprovider;
1194        int writemainbouquet;
1195        int writebouquet;
1196        int writemainplaylist;
1197        int writeplaylist;
1198        int writesat;
1199        int writerectimer;
1200        int writeepgscanlist;
1201        int writemostzap;
1202        int writemediadb;
1203        int writelastsubtitle;
1204        // 1 mute is aktiv
1205        int mute;
1206        // 1 spinner is aktiv
1207        int spinner;
1208        // 1 infobar is aktiv
1209        // 2 infobar is aktiv (with wait befor show)
1210        // 3 infobar is aktiv (no autohide)
1211        int infobar;
1212        // with infobar to display
1213        int infobarnr;
1214        // 0 is for mute screen
1215        struct skin *drawallways[1];
1216        char* drawallwaysbg[1];
1217        int usedirectfb;
1218        // count how long last rcwait (shows spinner if to long)
1219        time_t sec;
1220        // if set to a value != 0, rcwait returns this number
1221        int rckey;
1222        struct skin* skinerr;
1223        pthread_attr_t timerthreadattr;
1224        pthread_t timerthread;
1225        int timerthreadstatus;
1226        int timerthreadaktion;
1227        pthread_attr_t subthreadattr;
1228        pthread_t subthread;
1229        int subthreadstatus;
1230        int subthreadaktion;
1231        int subthreadpid;
1232        // epg thread pointer
1233        struct stimerthread* epgthread;
1234        // epgscanlist thread pointer
1235        struct stimerthread* epgscanlistthread;
1236        // httpd thread pointer
1237        struct stimerthread* httpthread;
1238        // rguid thread pointer
1239        struct stimerthread* rguithread;
1240        // mediadb thread pointer
1241        struct stimerthread* mediadbthread;
1242        // newsletter thread pointer
1243        struct stimerthread* newsletterthread;
1244        // thumb thread pointer
1245        struct stimerthread* thumbthread;
1246        // rectimer thread
1247        struct stimerthread* rectimerthread;
1248        // rguid sock filedescriptor for rguid
1249        int rguidfd;
1250        struct service* aktservice;
1251        struct service* lastservice;
1252        struct channel* markedchannel;
1253        //if we are in a epg screen, this is the showen channel
1254        struct channel* epgchannel;
1255        char* configfile;
1256        // for bouquet channel numbering
1257        int bouquetnr[MAXSERVICETYPE];
1258        int servicetype;
1259        struct shutdowntimer *sd_timer;
1260        // akt pos in channel cache
1261        int channelcachepos;
1262        // aktivate/deaktivate auto updatevfd
1263        int updatevfd;
1264        // count for recording
1265        int recording;
1266        // count for streaming
1267        int streaming;
1268        // timeshift running = 1
1269        int timeshift;
1270        // ts playing running = 1
1271        int playing;
1272        // timeshift seeking <> 0
1273        int timeshiftseek;
1274        // if set to a skin (screenpointer) only this screen has rc
1275        struct skin* rcowner;
1276        // timerstuktur fuer autores
1277        struct stimerthread* restimer;
1278        // spindown USB/HDD
1279        struct hddparm hdd[3];
1280        struct stimerthread* addhddall;
1281        // save old rotor position
1282        int rotoroldorbitalpos;
1283        // security check
1284        int security;
1285        // set to 1 if tvpic size is changed
1286        int tvpic;
1287        // timestamp for rc action
1288        time_t lastrcaction;
1289        // show timeline in channellist for each channel
1290        int showchanneltimeline;
1291        // see player.h for details
1292        int playercan;
1293                //Code von infobar.h aktiv = 1
1294        int infobaraktiv;
1295        //Name der Datei die abgespielt wird
1296        char* playfile;
1297        //Code MC aktiv = 1
1298        int mcaktiv;
1299        //greater 0 aktivate screen animation
1300        int screenanim;
1301        int screenanimspeed;
1302        //for auto increase audio vol
1303        int volautochange;
1304        int volautochangevalue;
1305        //for powerofftimer
1306        time_t fixpowerofftime;
1307        //for write FB in File
1308        int write_png;
1309        int write_jpg;
1310        //holds oversize value for blitter
1311        int leftoffset;
1312        int rightoffset;
1313        int topoffset;
1314        int bottomoffset;
1315        //background picture for all screens
1316        char* bgpic;
1317        //time for next picmem timeout check
1318        time_t picmemtimeout;
1319        //show not tunable channel hidden (0)) or deaktive (1) in channellist
1320        int channellistview;
1321        //for blockmove in channellist
1322        int moveblockcount;
1323        //name ob file who played from webig
1324        char* webplayfile;
1325        //status of mediadbthread
1326        int mediadbthreadstatus;
1327        //for save mediadb in scan
1328        time_t mediadbsavetime;
1329        //colors / pic for selection
1330        long markcol;
1331        long filelistselectcol;
1332        long listboxselectcol;
1333        char* selectpic;
1334        //check if cam can decrypt channel
1335        int checkcamdecrypt;
1336        //don't send privat part of cadescriptor in capmt
1337        int caskipprivat;
1338        //send all caids or only caids cam can
1339        int casendallcaids;
1340        //show hidden files in filelist
1341        int showhiddenfiles;
1342        //mediadb
1343        int mediadbfiles;
1344        //show infobar on program change
1345        int infobarprogram;
1346        //for auto increase audio vol (mute)
1347        int volmute;
1348        int secondzap;
1349        //pointer to marker for recordings
1350        struct marker* playmarker;
1351        int autosubtitle;
1352} status;
1353
1354struct fb
1355{
1356        int dev;
1357        char *name;
1358        int fd;
1359        unsigned char *fb;
1360        unsigned long *fblong;
1361        int width;
1362        int height;
1363        int pitch;
1364        unsigned long fixfbsize;
1365        unsigned long varfbsize;
1366        int colbytes;
1367        struct fb *next;
1368};
1369
1370struct rc
1371{
1372        int key;
1373        void (*rcfunc)(struct skin*, struct skin*, int screencalc, int filelistview, int flag);
1374        struct skin *screen;
1375        struct skin *screennode;
1376        struct skin *owner;
1377        struct rc *next;
1378};
1379
1380struct clist
1381{
1382        char *key;
1383        char *value;
1384        char *def;
1385        char *tmp;
1386        struct clist *next;
1387};
1388
1389struct bouquet
1390{
1391        int nr;
1392        int serviceid;
1393        uint64_t transponderid;
1394        struct channel *channel;
1395        struct bouquet *prev;
1396        struct bouquet *next;
1397};
1398
1399struct mainbouquet
1400{
1401        char *name;
1402        int type;
1403        char *filename;
1404        struct bouquet *bouquet;
1405        struct mainbouquet *prev;
1406        struct mainbouquet *next;
1407};
1408
1409struct pic
1410{
1411        char* name;
1412        unsigned char* picbuf;
1413        // < 0 when picbuf is normal mem (hw jpg)
1414        int memfd;
1415        unsigned long width;
1416        unsigned long height;
1417        unsigned long rowbytes;
1418        int channels;
1419  int timeout;
1420  time_t lastaccess;
1421        int del;
1422        struct pic* next;
1423};
1424
1425struct font
1426{
1427        char *name;
1428        FT_Error error;
1429        FTC_Manager manager;
1430        FTC_SBitCache cache;
1431        FTC_ImageTypeRec desc;
1432        FT_Face face;
1433        FT_UInt prev_glyphindex;
1434        FT_Bool use_kerning;
1435        struct font *next;
1436};
1437
1438//structure for write fb to File
1439struct writeFBfile
1440{
1441        unsigned char* ActBuf;
1442        unsigned char* buf1;
1443        unsigned char* buf2;
1444} writeFBfile;
1445
1446struct eit
1447{
1448        u_char table_id                               /*:8*/;
1449        u_char section_length_hi                      :4;
1450        u_char                                        :3;
1451        u_char section_syntax_indicator               :1;
1452        u_char section_length_lo                      /*:8*/;
1453        u_char service_id_hi                          /*:8*/;
1454        u_char service_id_lo                          /*:8*/;
1455        u_char current_next_indicator                 :1;
1456        u_char version_number                         :5;
1457        u_char                                        :2;
1458        u_char section_number                         /*:8*/;
1459        u_char last_section_number                    /*:8*/;
1460        u_char transport_stream_id_hi                 /*:8*/;
1461        u_char transport_stream_id_lo                 /*:8*/;
1462        u_char original_network_id_hi                 /*:8*/;
1463        u_char original_network_id_lo                 /*:8*/;
1464        u_char segment_last_section_number            /*:8*/;
1465        u_char segment_last_table_id                  /*:8*/;
1466        u_char data[]; /* struct eitevent */
1467};
1468#define EITLEN sizeof(struct eit)
1469#define GETEITSECLEN(x) HILO(((struct eit*)(x))->section_length)
1470
1471struct eitevent
1472{
1473        u_char event_id_hi                            /*:8*/;
1474        u_char event_id_lo                            /*:8*/;
1475        u_char mjd_hi                                 /*:8*/;
1476        u_char mjd_lo                                 /*:8*/;
1477        u_char start_time_h                           /*:8*/;
1478        u_char start_time_m                           /*:8*/;
1479        u_char start_time_s                           /*:8*/;
1480        u_char duration_h                             /*:8*/;
1481        u_char duration_m                             /*:8*/;
1482        u_char duration_s                             /*:8*/;
1483        u_char descriptors_loop_length_hi             :4;
1484        u_char free_ca_mode                           :1;
1485        u_char running_status                         :3;
1486        u_char descriptors_loop_length_lo             /*:8*/;
1487        u_char data[];
1488};
1489#define EITEVENTLEN sizeof(struct eitevent)
1490#define GETEITDESCLEN(x) HILO(((struct eitevent *)x)->descriptors_loop_length)
1491
1492struct eitshortevent
1493{
1494        u_char descriptor_tag                         /*:8*/;
1495        u_char descriptor_length                      /*:8*/;
1496        u_char lang_code1                             /*:8*/;
1497        u_char lang_code2                             /*:8*/;
1498        u_char lang_code3                             /*:8*/;
1499        u_char event_name_length                      /*:8*/;
1500        u_char data[];
1501};
1502#define EITSHORTEVENTLEN sizeof(struct eitshortevent)
1503
1504struct eitlongevent
1505{
1506        u_char descriptor_tag                         /*:8*/;
1507        u_char descriptor_length                      /*:8*/;
1508        u_char last_descriptor_number                 :4;
1509        u_char descriptor_number                      :4;
1510        u_char lang_code1                             /*:8*/;
1511        u_char lang_code2                             /*:8*/;
1512        u_char lang_code3                             /*:8*/;
1513        u_char length_of_items                        /*:8*/;
1514        u_char data[]; /* struct eitlongeventitem */
1515};
1516#define EITLONGEVENTLEN sizeof(struct eitlongevent)
1517
1518struct eitlongeventitem
1519{
1520        u_char item_description_length               /*:8*/;
1521        u_char data[];
1522};
1523#define EITLONGEVENTITEMLEN sizeof(struct eitlongeventitem)
1524
1525struct eitlinkage
1526{
1527        u_char descriptor_tag                 /*:8*/;
1528        u_char descriptor_length              /*:8*/;
1529        u_char transport_stream_id_hi         /*:8*/;
1530        u_char transport_stream_id_lo         /*:8*/;
1531        u_char original_network_id_hi         /*:8*/;
1532        u_char original_network_id_lo         /*:8*/;
1533        u_char service_id_hi                  /*:8*/;
1534        u_char service_id_lo                  /*:8*/;
1535        u_char linkage_type                   /*:8*/;
1536};
1537#define EITLLINKAGELEN sizeof(struct eitlinkage)
1538
1539struct parentalrating
1540{
1541        u_char descriptor_tag                 /*:8*/;
1542        u_char descriptor_length              /*:8*/;
1543        u_char data[]; //struct parental_rating_item
1544};
1545#define PARENTALRATINGLEN sizeof(struct parentalrating)
1546
1547struct parentalratingitem
1548{ 
1549        u_char lang_code1                    /*:8*/;
1550        u_char lang_code2                    /*:8*/;
1551        u_char lang_code3                    /*:8*/;
1552        u_char rating                        /*:8*/;
1553};
1554#define PARENTALRATINGITEMLEN sizeof(struct parentalratingitem)
1555
1556struct rst //table id 0x71
1557{ 
1558        u_char table_id                     /*:8*/;
1559        u_char section_syntax_indicator         :1;
1560        u_char reserved_1                       :1;
1561        u_char reserved_2                       :2;
1562        u_int section_length                   :12;
1563};
1564#define RSTLEN sizeof(struct rst)
1565
1566struct rstitem
1567{ 
1568        u_char transponder_stream_id_hi     /*:8*/;
1569        u_char transponder_stream_id_lo     /*:8*/;
1570        u_char original_network_id_hi       /*:8*/;
1571        u_char original_network_id_lo       /*:8*/;
1572        u_char service_id_hi                /*:8*/;
1573        u_char service_id_lo                /*:8*/;
1574        u_char event_id_hi                  /*:8*/;
1575        u_char event_id_lo                  /*:8*/;
1576        u_char reserved_1                       :5;
1577        u_char running_status                   :3;
1578};
1579#define RSTITEMLEN sizeof(struct rstitem)
1580
1581struct mhwchannel
1582{
1583        u_char  network_id_hi;
1584        u_char  network_id_lo;
1585        u_char  transponder_id_hi;
1586        u_char  transponder_id_lo;
1587        u_char  channel_id_hi;
1588        u_char  channel_id_lo;
1589        u_char  name[16];
1590};
1591#define MHWCHANNELLEN sizeof(struct mhwchannel)
1592
1593struct mhwtitle
1594{
1595        u_char table_id                       :8;
1596        u_char section_length_hi              :4;
1597        u_char                                :2;
1598        u_char dummy                          :1;
1599        u_char section_syntax_indicator       :1;
1600        u_char section_length_lo              :8;
1601        u_char channel_id                     :8;
1602        u_char theme_id                       :8;
1603        u_char hours                                  :5;
1604        u_char day                            :3;
1605        u_char summary_available              :1;
1606        u_char                                      :1;
1607        u_char minutes                        :6;
1608        u_char                                :8;
1609        u_char                                :8;
1610        u_char duration_hi                    :8;
1611        u_char duration_lo                    :8;
1612        u_char title                          [23];
1613        u_char ppv_id_hi                      :8;
1614        u_char ppv_id_mh                      :8;
1615        u_char ppv_id_ml                      :8;
1616        u_char ppv_id_lo                      :8;
1617        u_char program_id_hi                  :8;
1618        u_char program_id_mh                  :8;
1619        u_char program_id_ml                  :8;
1620        u_char program_id_lo                  :8;
1621        u_char                                :8;
1622        u_char                                :8;
1623        u_char                                :8;
1624        u_char                                :8;
1625};
1626#define MHWTITLELEN sizeof(struct mhwtitle)
1627
1628struct mhwsummary
1629{
1630        u_char table_id                       :8;
1631        u_char section_length_hi              :4;
1632        u_char                                :2;
1633        u_char dummy                          :1;
1634        u_char section_syntax_indicator       :1;
1635        u_char section_length_lo              :8;
1636        u_char program_id_hi                  :8;
1637        u_char program_id_mh                  :8;
1638        u_char program_id_ml                  :8;
1639        u_char program_id_lo                  :8;
1640        u_char                                :8;
1641        u_char                                :8;
1642        u_char                                :8;
1643        u_char nb_replays                     :8;
1644};
1645#define MHWSUMMARYLEN sizeof(struct mhwsummary)
1646
1647struct mhw2channel
1648{
1649        u_char network_id_hi;
1650        u_char network_id_lo;
1651        u_char transponder_id_hi;
1652        u_char transponder_id_lo;
1653        u_char channel_id_hi;
1654        u_char channel_id_lo;
1655        u_char                                :8;
1656        u_char                                :8;
1657};
1658
1659struct extepgcache
1660{
1661        long id;
1662        struct epg* epgnode;
1663        struct extepgcache* next;
1664};
1665
1666struct extepgchannel
1667{
1668        long id;
1669        int serviceid;
1670        uint64_t transponderid;
1671        struct extepgchannel* next;
1672};
1673
1674struct extepgconfig
1675{
1676        uint64_t transponderid;
1677        int type;
1678        char* file;
1679        int channelpid;
1680        int titlepid[8];
1681        int summarypid[8];
1682        struct extepgconfig* next;
1683};
1684
1685struct blacklist
1686{
1687  char* file;
1688  struct splitstr* splitstr;
1689  int count;
1690};
1691
1692#endif
Note: See TracBrowser for help on using the repository browser.