source: titan/titan/struct.h @ 41065

Last change on this file since 41065 was 41065, checked in by gost, 2 years ago

[titan] mipsel more then 4 dvr devices

File size: 44.6 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#include <termios.h>
65//#ifndef SH4
66#include <sys/stat.h>
67//#endif
68#include <openssl/aes.h>
69#include <openssl/dh.h>
70#include <openssl/rsa.h>
71#include <openssl/sha.h>
72#include <stdio.h>
73#include <unistd.h>
74#include <fcntl.h>
75#include <sys/ioctl.h>
76#include <stdint.h>
77#include <inttypes.h>
78#include <arpa/inet.h>
79#include <time.h>
80#include <linux/dvb/ca.h>
81#include <sys/types.h>
82
83#include <fcntl.h>
84#include <stdint.h>
85#include <stdio.h>
86#include <stdlib.h>
87#include <string.h>
88#include <sys/types.h>
89#include <sys/stat.h>
90#include <unistd.h>
91#include <time.h>
92
93#include <openssl/pem.h>
94#include <openssl/x509.h>
95#include <openssl/x509v3.h>
96#include <openssl/sha.h>
97#include <openssl/aes.h>
98
99//for freetype
100#include <ft2build.h>
101#include FT_FREETYPE_H
102#include FT_CACHE_H
103
104//for eplayer
105#ifdef EPLAYER3
106#include <common.h>
107//#ifndef BETA
108//#include <subtitle.h>
109//#endif
110#endif
111
112#ifdef EPLAYER4
113#include <gst/gst.h>
114#include <gst/pbutils/missing-plugins.h>
115#endif
116
117#ifdef DVDPLAYER
118#include <ddvdlib.h>
119#endif
120
121#define DRIVER "Sa 28. Okt 19:10:36 CEST 2017"
122#define OVERSION "1.87"
123#define PROGNAME "titan"
124#define COPYRIGHT "NIT"
125#define CRONTRIBUT "obi, gost"
126#define PLUGINVERSION 41059
127
128#define _(x) gettext(x)
129#define MINMALLOC 4096
130#define SCROLLBARWIDTH 15
131#define SCROLLBARBORDERSIZE 1
132#define FONTPOSYOFFSET -3
133#define FB "fb0"
134#define FB1 "fb1"
135#define SKINFB "skinfb"
136#define ACCELFB "accelfb"
137#define CONFIGFILE PROGNAME".cfg"
138#define KILLPROG "killall -9 "PROGNAME
139#define REBOOT "init 6"
140#define FILELISTDELMARK 255
141#define PLUGINDELMARK 254
142#define MAXDVBADAPTER 1
143#ifndef MIPSEL
144#define MAXFRONTENDDEV 4
145#else
146#define MAXFRONTENDDEV 8
147#endif
148#define MAXDEMUXDEVOPEN 10
149#define MAXAUDIODEV 4
150#define MAXVIDEODEV 4
151#ifndef MIPSEL
152#define MAXCIDEV 4
153#define MAXCADEV 4
154#else
155#define MAXCIDEV 8
156#define MAXCADEV 8
157#endif
158#ifndef MIPSEL
159#define MAXDVRDEV 4
160#define MAXDEMUXDEV 4
161#else
162#define MAXDVRDEV 8
163#define MAXDEMUXDEV 8
164#define MAXENCODERDEV 2
165#define DVB_API_VERSION 5
166#endif   
167#define MAXSCDEV 2
168#define RCTIMEOUT 999999
169#define RCTHREADSTANDBY 999998
170#define MAXSERVICETYPE 10
171#define CHANNELCACHEMAX 1000
172#define MEDIADBCACHEMAX 1000
173#define TRANSPONDERCACHEMAX 500
174#define MAXHTTPDCONN 20
175#define MAXHTMLLINE 300
176#define MAXRGUIDCONN 1
177#define LISTHASHSIZE 27
178#define MAXCASESSION 16
179#define MAXCASERVICE 20
180#define MAXLONGKEY 10
181#define MAXSAT 64
182#define MAXBGDOWNLOAD 10
183#ifdef MIPSEL
184#define EPGSCANLOG "/mnt/logs/epgscan.log"
185#else
186#define EPGSCANLOG "/tmp/epgscan.log"
187#endif
188#define MAXCHANNELHISTORY 6
189#define HILO(x) (x##_hi << 8 | x##_lo)
190#define HILO32(x) (x##_hi << 24 | x##_mh << 16 | x##_ml << 8 | x##_lo)
191#define SERIALDEV "/dev/ttyAS0"
192#define MAXTOKENS 256
193#define MAXSTACKTRACE 30
194#define MAXSTACKTRACEFUNC 20
195
196#define USBDEVICE_SUPER_MAGIC 0x9fa2
197#define EXT2_SUPER_MAGIC 0xEF53
198#define EXT3_SUPER_MAGIC 0xEF53
199#define SMB_SUPER_MAGIC 0x517B
200#define NFS_SUPER_MAGIC 0x6969
201#define MSDOS_SUPER_MAGIC 0x4d44
202
203#ifndef VIDEO_SOURCE_HDMI
204#define VIDEO_SOURCE_HDMI 2
205#endif
206#ifndef AUDIO_SOURCE_HDMI
207#define AUDIO_SOURCE_HDMI 2
208#endif
209
210//cacc cert check
211#define ROOT_CERT     "/mnt/swapextensions/etc/pem/root.pem"
212#define CUSTOMER_CERT "/mnt/swapextensions/etc/pem/customer.pem"
213#define DEVICE_CERT   "/mnt/swapextensions/etc/pem/device.pem"
214#define MAX_ELEMENTS    33
215#ifdef MIPSEL
216#define CA_SET_DESCR_DATA_DREAM _IOW('o', 137, struct ca_descr_data)
217#define CA_SET_DESCR_DATA _IOW('o', 10, struct ca_descr_data)
218#endif
219#ifdef SH4NEW
220#define CA_SET_DESCR_DATA _IOW('o', 137, struct ca_descr_data)
221#endif
222
223//Start Function Entry Point
224#define STARTFUNC
225
226//CA Defines
227#define T_SB 0x80               //sb (h<--m)
228#define T_RCV 0x81              //receive (h-->m)
229#define T_CREATE_T_C 0x82       //create transport connection (h-->m)
230#define T_C_T_C_REPLY 0x83      //ctc reply (h<--m)
231#define T_DELETE_T_C 0x84       //delete tc (h<->m)
232#define T_D_T_C_REPLY 0x85      //dtc reply (h<->m)
233#define T_REQUEST_T_C 0x86      //request transport connection (h<--m)
234#define T_NEW_T_C 0x87          //new tc - reply to t_request (h-->m)
235#define T_T_C_ERROR 0x77        //error creating tc (h-->m)
236#define T_DATA_LAST 0xA0        //convey data from higher (h<->m)
237#define T_DATA_MORE 0xA1        //convey data from higher (h<->m)
238
239//Alarm Signal used as timeout
240#define ALARMTIMEOUT 1
241#define ALARMSTARTTIME(x) if(ALARMTIMEOUT == 1) {alarm(x);}
242#define ALARMSTOPTIME if(ALARMTIMEOUT == 1) {alarm(0);}
243
244// VFD icons supported (more or less) on all boxes:
245typedef 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;
246
247#define OMIN(a,b) (a < b ? a : b)
248#define OMAX(a,b) (a > b ? a : b)
249
250#define bcdtoint(i) ((((i & 0xf0) >> 4) * 10) + (i & 0x0f))
251
252#define alpha_composite(composite, fg, alpha, ralpha, bg) { (composite) = ((fg)*(alpha) + (bg)*(ralpha)) >> 8; }
253
254enum {LEFT=20000, CENTER, RIGHT, TEXTCENTER, TEXTRIGHT};
255enum {TOP=20000, MIDDLE, BOTTOM, TEXTMIDDLE, TEXTBOTTOM};
256enum {BOTTOMLEFT, BOTTOMRIGHT, TOPLEFT, TOPRIGHT};
257enum {LEFTRIGHT=1, TOPBOTTOM, LEFTMIDDLE, TOPMIDDLE};
258enum {NO, YES, AUTONO, AUTOYES};
259enum {UNDEF=0, LISTBOX=1, TEXTBOX=2, CHOICEBOX=4, INPUTBOX=8, INPUTBOXNUM=16, FILELIST=32, PROGRESSBAR=64, MENU=128, MULTIPROGRESSBAR=256, GRID=512, GRIDBR=1024, PASSWORD=2048};
260enum {FRONTENDDEV, DEMUXDEV, VIDEODEV, AUDIODEV, CADEV, CIDEV, FRONTENDDEVDUMMY, DVRDEV, SCDEV, ENCODERDEV};
261enum {TV, RADIO};
262enum {RECDIRECT, RECTIMER, RECTIMESHIFT, RECSTREAM, RECPLAY, RECSTREAMENC};
263#ifdef DREAMBOX
264enum {MPEGV = 0, MPEG4V = 4, H264 = 1, VC1 = 10, H265 = 22};
265enum {AC3 = 0, MPEGA = 1, DTS = 2, LPCM = 6, AAC = 8, AACHE = 9, DTSHD = 16, DDP = 7};
266#else
267enum {AC3 = 0, MPEGA = 1, DTS = 2, LPCM = 6, AAC = 8, AACHE = 9, DTSHD = 16, DDP = 34};
268enum {MPEGV = 0, MPEG4V = 4, H264 = 1, VC1 = 10, H265 = 7};
269#endif
270enum {ALLCHANNEL, SATCHANNEL, PROVIDERCHANNEL, AZCHANNEL, BOUQUETCHANNEL, SATLIST, PROVIDERLIST, AZLIST, MAINBOUQUETLIST};
271enum {NOMODE, MVMODE, RMMODE, CPMODE, PROTECTMODE, EDITMODE};
272enum {NOTHING, CHANNEL, STILLPIC, RECORDDIRECT, RECORDTIMER, RECORDTIMESHIFT, RECORDSTREAM, TMPOTHER, RECORDPLAY, HDMIIN};
273enum {START, PAUSE, STOP};
274enum {DEACTIVE, ACTIVE, INPAUSE, ERROR};
275enum {FUNCTEXT, FUNCPIC, FUNCPROGRESS,FUNCPICOLED};
276enum {CASESSIONCREATE, CASESSIONBUSY, CASESSIONDEL, CASESSIONSTART, CASESSIONFINAL, CARESFIRSTENQUIRY, CARESCHANGE, CARESENQUIRY, CADATETIMESEND, CAMMIIDLE, CAMMIDISPLAYREPLAY, CAMMIFAKEOK};
277enum {feSatellite, feCable, feTerrestrial, feATSC};
278
279#ifdef BETA
280struct stacktrace
281{
282        int pos;
283        pthread_t thread;
284        void* func[MAXSTACKTRACEFUNC];
285};
286struct stacktrace stacktrace[MAXSTACKTRACE];
287#endif
288
289struct lastsubtitle
290{
291        uint64_t transponderid;
292        int serviceid;
293        int16_t subtitlepid;
294        int16_t subtitleid1;
295        int16_t subtitleid2;
296        struct lastsubtitle* next;
297};
298
299struct newsletter
300{
301        unsigned long nr;
302        char* date;
303        char* title;
304        char* text;
305        struct newsletter* next;
306};
307
308struct oldentry
309{
310        void* entry;
311        //0 = epg
312        int type;
313        time_t del;
314        struct oldentry* next;
315};
316
317struct unicable
318{
319        char* manufacturer;
320        char* product;
321        int scr1;
322        int scr2;
323        int scr3;
324        int scr4;
325        int scr5;
326        int scr6;
327        int scr7;
328        int scr8;
329        int lofl;
330        int lofh;
331        struct unicable* next;
332        struct unicable* prev;
333};
334
335struct id3tag
336{
337        int version;
338        char* title;
339        char* artist;
340        char* album;
341        char* year;
342        char* comment;
343        char* genrecode;
344        char* genretext;
345        char* poster;
346        int track;
347        int len;
348        int picturetype;
349        unsigned int picturepos;
350        unsigned int picturelen;
351};
352
353struct id3genre
354{
355        int code;
356        char text[30];
357};
358
359struct regex
360{
361        char* match1;
362        char* match2;
363        char* match3;
364        char* match4;
365        char* match5;
366        char* match6;
367        char* match7;
368        char* match8;
369        char* match9;
370        char* match10;
371};
372
373struct imdb
374{
375        char* title;
376        char* year;
377        char* rated;
378        char* released;
379        char* genre;
380        char* director;
381        char* writer;
382        char* actors;
383        char* plot;
384        char* poster;
385        char* runtime;
386        char* rating;
387        char* votes;
388        char* id;
389        char* thumb;
390};
391
392struct imdbapi
393{
394        char* title;
395        char* year;
396        char* rated;
397        char* released;
398        char* genre;
399        char* director;
400        char* writer;
401        char* actors;
402        char* plot;
403        char* poster;
404        char* runtime;
405        char* rating;
406        char* votes;
407        char* id;
408};
409
410struct tmdb
411{
412        char* title;
413        char* year;
414        char* rated;
415        char* released;
416        char* genre;
417        char* runtime;
418        char* plot;
419        char* postermid;
420        char* rating;
421        char* votes;
422        char* id;
423        char* backdrop;
424        char* imdbid;
425        char* orgname;
426        char* language;
427        char* type;
428        char* score;
429        char* cover;
430        char* thumb;
431        char* mvi;
432        struct tmdb* prev;
433        struct tmdb* next;
434};
435
436struct mediadbfilter
437{
438        struct mediadb* node;
439        int count;
440        struct mediadbfilter* prev;
441        struct mediadbfilter* next;
442};
443
444struct mediadbcategory
445{
446        int type;
447        char* name;
448        struct mediadbcategory* prev;
449        struct mediadbcategory* next;
450};
451
452struct mediadb
453{
454        char* id;
455        int type;
456        char* title;
457        int year;
458        char* released;
459        char* runtime;
460        char* genre;
461        char* director;
462        char* writer;
463        char* actors;
464        char* plot;
465        char* poster;
466        int rating;
467        int votes;
468        char* path;
469        char* file;
470        char* shortname;
471        char* fileinfo;
472        time_t timestamp;
473        //bit 31: manual change
474        int flag;
475        int backdropcount;
476        struct mediadb* prev;
477        struct mediadb* next;
478};
479
480struct mediadbcache
481{
482        char* path;
483        char* file;
484        struct mediadb* mediadbnode;
485        struct mediadbcache* next;
486};
487
488struct mostzap
489{
490        int serviceid;
491        uint64_t transponderid;
492        int count;
493        struct mostzap* prev;
494        struct mostzap* next;
495};
496
497struct menulist
498{
499        char* name;
500        char* text;
501        char* pic;
502        char* param;
503        char* param1;
504        char* param2;
505        char* param3;
506        int deaktiv;
507        int defaultentry;
508        struct menulist* next;
509};
510
511struct channelhistory
512{
513        struct channel* chnode;
514        char* channellist;
515};
516
517struct queue
518{
519        //0-99 for ca module
520        //101 for thumb thread
521        int type;
522        int flag;
523        int len;
524        void* data;
525        void* data1;
526        struct queue* prev;
527        struct queue* next;
528};
529
530struct casession
531{
532        int inuse;
533        int sessionnr;
534        int action;
535        int state;
536        int mmimanager;
537        int camanager;
538        int datetimemanager;
539        int appmanager;
540        int resmanager;
541        int ccmanager;
542#ifdef MIPSEL
543        int hostmanager;
544        int mmiappmanager;
545        int hostlacmanager;
546        int upgrademanager;
547#endif
548        char* mmititle;
549        char* mmisubtitle;
550        char* mmitext;
551        char* mmibottom;
552};
553
554struct caslot
555{
556        struct casession casession[MAXCASESSION];
557        int connid;
558        int poll;
559        int status;
560        int rlen;
561        unsigned char* rbuf;
562        char* name;
563        int fastrun;
564        char* caids;
565        // cacc
566        unsigned char lastKey[32];
567        uint8_t lastParity;
568//      unsigned char scrambled;
569        int scrambled;
570        void *private_data;
571        int ccmgr_ready;
572        // not in used currently
573        int inuse;
574        int sidblacklisted;
575};
576
577struct hdd
578{
579        char* device;
580        int partition;
581        unsigned long long size;
582        char* filesystem;
583        char* label;
584        char* uuid;
585        char* vendor;
586        char* model;
587        int removable;
588        int read;
589        int write;
590        int sleeptime;
591        int notchanged;
592        struct hdd* prev;
593        struct hdd* next;
594};
595
596struct scaninfo
597{
598        struct dvbdev* fenode;
599        struct transponder* tpnode;
600        struct skin* scanscreen;
601        struct skin* listbox;
602        int threadend;
603        int scantype;
604        int fetype;
605        int orbitalpos;
606        int timeout;
607        int onlyfree;
608        int networkscan;
609        int clear;
610        int blindscan;
611        char* satname;
612        int tpcount;
613        int tpmax;
614        int tpnew;
615        int tpdel;
616        int tvcount;
617        int newtvcount;
618        int radiocount;
619        int newradiocount;
620        int datacount;
621        int newdatacount;
622        int blindcount;
623        int newblindcount;
624        int changename;
625        int cleartransponder;
626        unsigned int blindmax;
627} scaninfo;
628
629struct screensaver
630{
631        int type;
632        int speed;
633        int newposx;
634        int newposy;
635        int flag;
636        struct skin* screen;
637        struct skin* screennode;
638        struct skin* filelist;
639        struct skin* aktnode;
640        struct pic* pic;
641        char* value;
642        char* path;
643};
644
645struct playlist
646{
647        char* file;
648        struct playlist* prev;
649        struct playlist* next;
650};
651
652struct mainplaylist
653{
654        char* name;
655        char* filename;
656        struct playlist* playlist;
657        struct mainplaylist* prev;
658        struct mainplaylist* next;
659};
660
661struct epgrecord
662{
663        time_t begin;
664        time_t end;
665        int posx;
666        int size;
667        struct epgrecord* prev;
668        struct epgrecord* next;
669};
670
671struct download
672{
673        char* host;
674        char* page;
675        int port;
676        char* filename;
677        char* auth;
678        int connfd;
679        int proz;
680        unsigned int maxkb;
681        unsigned int aktkb;
682        int ret;
683        int timeout;
684        int flag;
685};
686
687struct copyfile
688{
689        char* from;
690        char* to;
691        int proz;
692        int filecount;
693        int maxfilecount;
694        off64_t maxkb;
695        off64_t aktkb;
696        int stop;
697        int ret;
698        int flag;
699};
700
701struct epgscanlist
702{
703        int serviceid;
704        uint64_t transponderid;
705        time_t scantime;
706        struct epgscanlist* prev;
707        struct epgscanlist* next;
708        char* name;
709};
710
711struct rgba
712{
713        char r;
714        char g;
715        char b;
716        char a;
717};
718
719struct subclutentry
720{
721        unsigned char Y, Cr, Cb, T;
722        unsigned char valid;
723};
724
725struct subclut
726{
727        unsigned char clutid;
728        unsigned char clutversionnumber;
729        struct subclutentry entries2bit[4];
730        struct subclutentry entries4bit[16];
731        struct subclutentry entries8bit[256];
732        struct subclut *next;
733};
734
735struct subpagereg
736{
737        int regid;
738        int reghorizontaladdress;
739        int regverticaladdress;
740        int scaleposx, scaleposy;
741        struct subpagereg *next;
742};
743
744struct subregobj
745{
746        int objid;
747        int objtype;
748        int objproviderflag;
749        int objhorizontalpos;
750        int objverticalpos;
751        // not supported right now...
752        int foregroundpixel;
753        int backgroundpixel;
754        struct subregobj *next;
755};
756
757struct subreg
758{
759        int regid;
760        int versionnumber;
761        int height, width;
762        int scaleheight, scalewidth;
763        int depth;
764        unsigned char *buf;
765        struct rgba *palette;
766        int clutid;
767        int committed;
768        struct subregobj *objects;
769        struct subreg *next;
770};
771
772struct subpage
773{
774        int pageid;
775        time_t pagetimeout;
776        int pageversionnumber;
777        int state;
778        int pcssize;
779        struct subpagereg *pageregions;
780        struct subreg *regions;
781        struct subclut *cluts;
782        struct subpage *next;
783};
784
785struct bitstream
786{
787        unsigned char *data;
788        int size;
789        int avail;
790        int consumed;
791};
792
793//there are a copyrectimer function
794//if you change the struct you must change this funktion
795struct rectimer
796{
797        char* name;
798        char* timestamp;
799        time_t begin;
800        time_t end;
801        int repeate;
802        int afterevent;
803        char* pincode;
804        int disabled;
805        int justplay;
806        char* recpath;
807        int servicetype;
808        char* channellist;
809        int serviceid;
810        //0 = nothing
811        //1 = running
812        //2 = end
813        //3 = error
814        //4 = epgscan timer activ
815        //5 = epgscan timer not activ
816        int status;
817        char* errstr;
818        struct service* servicenode;
819        uint64_t transponderid;
820        struct rectimer *prev;
821        struct rectimer *next;
822};
823
824struct inetwork
825{
826        char* device;
827        char* ip;
828        char* netmask;
829        char* mac;
830        char* broadcast;
831        //0 = static
832        //1 = dhcp
833        //2 = off
834        int type;
835        int found;
836        //flag 1 = used in titan
837        int flag;
838        struct inetwork *prev;
839        struct inetwork *next;
840};
841
842struct rcmap
843{
844        char* name;
845        int key;
846        int newkey;
847        struct rcmap* next;
848};
849
850struct splitstr
851{
852        char* part;
853};
854
855struct channelcache
856{
857        int serviceid;
858        uint64_t transponderid;
859        struct channel* chnode;
860        struct channelcache* next;
861};
862
863struct transpondercache
864{
865        uint64_t transponderid;
866        struct transponder* tpnode;
867        struct transpondercache* next;
868};
869
870struct filelist
871{
872        int type;
873        int view;
874        off64_t size;
875        time_t date;
876};
877
878struct skin
879{
880        char* name;
881        unsigned int type;
882        uint8_t wrap;
883        uint8_t bordersize;
884        uint8_t scrollbar;
885        uint16_t halign;
886        uint16_t valign;
887        int16_t posx;
888        int16_t posy;
889        int16_t width;
890        int16_t height;
891        long bordercol;
892        long deaktivcol;
893        long shadowcol;
894        uint8_t shadowsize;
895        uint8_t shadowpos;
896        uint8_t fontsize;
897        uint8_t fontsize2;
898        long fontcol;
899        long fontcol2;
900        char* font;
901        int16_t zorder;
902        int16_t titlealign;
903        char* title;
904        char* text;
905        char* text2;
906        long bgcol;
907        long bgcol2;
908        long titlebgcol;
909        long titlebgcol2;
910        long progresscol;
911        char* selectpic;
912        char* pic;
913        int16_t picwidth;
914        int16_t picheight;
915        uint16_t hspace;
916        uint16_t vspace;
917        char* (*skinfunc)(struct skin*, void*, void*);
918        char* param1;
919        char* param2;
920        char* parent;
921        char* input;
922        char* mask;
923        uint16_t textposx;
924        uint16_t textposx2;
925        int16_t gradient;
926        int16_t titlegradient;
927        uint8_t transparent;
928        uint8_t hidden;
929        uint8_t funcrettype;
930        int8_t charspace;
931        int8_t bordertype;
932        int16_t borderradius;
933        uint16_t bgspace;
934        uint8_t picquality;
935
936        uint8_t titlesize;
937        struct filelist* filelist;
938        struct skin* parentpointer;
939        char* ret;
940        char* choiceboxvalue;
941        unsigned int linecount;
942        unsigned int pagecount;
943        unsigned int poscount;
944        unsigned int gridcol;
945        int aktpage;
946        int aktline;
947        uint8_t scrollbarbordersize;
948        uint8_t prozposx;
949        uint8_t prozposy;
950        uint8_t prozwidth;
951        uint8_t prozheight;
952        uint8_t picprozwidth;
953        uint8_t del;
954        uint8_t picprozheight;
955        int16_t scrollbarheight;
956        int16_t progresssize;
957        int16_t scrollbarwidth;
958        int16_t scrollbarpos;
959        int16_t rposx;
960        int16_t rposy;
961        int16_t rwidth;
962        int16_t rheight;
963        int16_t rpicwidth;
964        int16_t rpicheight;
965        int16_t iposx;
966        int16_t iposy;
967        int16_t iwidth;
968        int16_t iheight;
969        char* handle;
970        char* handle1;
971        struct epgrecord* epgrecord;
972        char* pluginhandle;
973        uint8_t locked;
974        uint8_t picmem;
975        //bit 0: 1 = node is drawed
976        //bit 1: 1 = node is changed
977        uint8_t flag;
978        int hash;
979        struct skin *select;
980        struct skin *child;
981        struct skin *prev;
982        struct skin *next;
983        struct skin *drawnext;
984        // usesavebg=0 disable
985        // usesavebg=1 save always
986        // usesavebg=2 save one times then free
987        // usesavebg=3 dummy for filelist
988        int usesavebg;
989        // savebg is saved date
990        char* savebg;
991        // fuer blinken
992        int nodestyle;
993};
994
995struct style
996{
997        char* name;
998        int16_t posx;
999        int16_t posy;
1000        int16_t width;
1001        int16_t height;
1002        int16_t picwidth;
1003        int16_t picheight;
1004        uint16_t textposx;
1005        uint16_t textposx2;
1006        uint16_t halign;
1007        uint16_t valign;
1008        uint16_t hspace;
1009        uint16_t vspace;
1010        uint16_t bgspace;
1011        int16_t borderradius;
1012        int16_t titlealign;
1013        int16_t zorder;
1014        int16_t gradient;
1015        int16_t titlegradient;
1016        uint8_t picquality;
1017        uint8_t hidden;
1018        uint8_t wrap;
1019        uint8_t scrollbar;
1020        uint8_t bordersize;
1021        int8_t bordertype;
1022        uint8_t shadowsize;
1023        uint8_t shadowpos;
1024        uint8_t fontsize;
1025        uint8_t fontsize2;
1026        int8_t charspace;
1027        uint8_t transparent;
1028        uint8_t prozposx;
1029        uint8_t prozposy;
1030        uint8_t prozwidth;
1031        uint8_t prozheight;
1032        uint8_t picprozwidth;
1033        uint8_t picprozheight;
1034        uint8_t funcrettype;
1035        uint8_t picmem;
1036        long bordercol;
1037        long deaktivcol;
1038        long progresscol;
1039        long shadowcol;
1040        long fontcol;
1041        long fontcol2;
1042        long titlebgcol;
1043        long titlebgcol2;
1044        long bgcol;
1045        long bgcol2;
1046        char* font;
1047        char* pic;
1048        char* param1;
1049        char* param2;
1050        char* input;
1051        char* mask;
1052        char* (*skinfunc)(struct skin*, void*, void*);
1053        struct style* next;
1054};
1055
1056struct epg
1057{
1058        int eventid;
1059        int version;
1060        time_t starttime;
1061        time_t endtime;
1062        char* title;
1063        char* subtitle;
1064        char* desc;
1065        int desclen;
1066        int desccomplen;
1067        int parentalrating;
1068        struct epg* prev;
1069        struct epg* next;
1070};
1071
1072struct shutdowntimer
1073{
1074        int active,type; //type: 0=DeepStandby, 1=Standby
1075        long long shutdown_time;
1076};
1077
1078struct dvbdev
1079{
1080        char* dev;
1081        int fd;
1082        uint8_t type;
1083        uint8_t adapter;
1084        uint8_t devnr;
1085        uint8_t felock;
1086        uint8_t deactive;
1087        uint8_t decoder;
1088        struct transponder* felasttransponder;
1089        struct transponder* feakttransponder;
1090        int feunicable;
1091        unsigned int feloffrequency;
1092        int feaktband;
1093        int feaktpolarization;
1094        fe_sec_voltage_t feaktvolt;
1095        fe_sec_tone_mode_t feakttone;
1096        int fedmxsource;
1097        char* feaktnr;
1098        char* feshortname;
1099        char* fehyprid;
1100        struct dvb_frontend_info* feinfo;
1101        struct caslot* caslot;
1102        struct dvbdev *next;
1103};
1104
1105//there are a copytransponder and createtransponder function
1106//if you change this struct you must change the function
1107struct transponder
1108{
1109        uint64_t id;
1110        uint8_t fetype;
1111        uint8_t polarization;
1112        uint8_t modulation;
1113        uint8_t fec;
1114        uint8_t pilot;
1115        uint8_t rolloff;
1116        uint8_t inversion;
1117        uint8_t system;
1118        uint8_t flag;
1119        // 0 = unknown
1120        // 1 = tunable
1121        // 2 = not tunable
1122        uint8_t tunablestatus;
1123        int orbitalpos;
1124        unsigned int frequency;
1125        unsigned int symbolrate;
1126        int encoding;
1127        time_t lastepg;
1128        struct transponder *next;
1129};
1130
1131struct provider
1132{
1133        int providerid;
1134        char* name;
1135        int flag;
1136        struct provider *prev;
1137        struct provider *next;
1138};
1139
1140struct subtitle
1141{
1142        char* name;
1143        int16_t subtype;
1144        int16_t pid;
1145        int16_t type;
1146        int16_t id1;
1147        int16_t id2;
1148        struct subtitle* next;
1149};
1150
1151struct esinfo
1152{
1153        int streamtype;
1154        int pid;
1155        struct esinfo* next;
1156};
1157
1158struct cadesc
1159{
1160        int pid;
1161        int len;
1162        int systemid;
1163        int reserved;
1164        int capid;
1165        char* privat;
1166        struct cadesc* next;
1167};
1168
1169struct pmt
1170{
1171        int programnumber;
1172        int versionnumber;
1173        int currentnextindicator;
1174};
1175
1176struct audiotrack
1177{
1178        char* name;
1179        uint8_t audiocodec;
1180        int16_t audiopid;
1181        int16_t rdspid;
1182        struct audiotrack* next;
1183};
1184
1185struct linkedchannel
1186{
1187        uint64_t transponderid;
1188        int serviceid;
1189        time_t starttime;
1190        time_t endtime;
1191        struct linkedchannel* next;
1192};
1193
1194//there are a createchannel function
1195//if you change this struct you must change the function
1196struct channel
1197{
1198        char* name;
1199        uint64_t transponderid;
1200        int providerid;
1201        int serviceid;
1202        int servicetype;
1203        uint8_t flag;
1204        uint8_t crypt;
1205        int8_t videocodec;
1206        int8_t audiocodec;
1207        int16_t videopid;
1208        int16_t audiopid;
1209        int16_t ac3audiopid;
1210        int16_t txtpid;
1211        int16_t pcrpid;
1212        int16_t pmtpid;
1213        int16_t aitpid;
1214        uint8_t protect;
1215        char* hbbtvurl;
1216        struct transponder *transponder;
1217        struct provider *provider;
1218        struct audiotrack *audiotrack;
1219        struct subtitle *subtitle;
1220        struct linkedchannel *linkedchannel;
1221        struct pmt *pmt;
1222        struct cadesc *cadesc;
1223        struct esinfo *esinfo;
1224        struct epg *epg;
1225        struct channel *prev;
1226        struct channel *next;
1227};
1228
1229struct sat
1230{
1231        char* name;
1232        int orbitalpos;
1233        int flag;
1234        int fetype;
1235        int scan;
1236        struct sat *prev;
1237        struct sat *next;
1238};
1239
1240struct service
1241{
1242        int type;
1243        char* channellist;
1244        struct dvbdev *fedev;
1245        struct dvbdev *dmxaudiodev;
1246        struct dvbdev *dmxvideodev;
1247        struct dvbdev *dmxpcrdev;
1248        struct dvbdev *dmxsubtitledev;
1249        struct dvbdev *audiodev;
1250        struct dvbdev *videodev;
1251        struct dvbdev *encoderdev;
1252        struct transponder *transponder;
1253        struct channel *channel;
1254        unsigned char *pmtbuf;
1255        int pmtlen;
1256        int recdmxstart;
1257        int recdstfd;
1258        int recsrcfd;
1259        time_t recendtime;
1260        char* rectimestamp;
1261        size_t reclastsync;
1262        off64_t rectotal;
1263        int reccount;
1264        int tssize;
1265        char* recname;
1266        unsigned long long lenpts;
1267        unsigned long long startpts;
1268        unsigned long long endpts;
1269        unsigned long long bitrate;
1270        off64_t endoffile;
1271        struct service *next;
1272};
1273
1274struct caservice
1275{
1276        struct service* service;
1277        struct channel* channel;
1278        int count;
1279        int camsockfd;
1280        struct caslot* caslot;
1281        int camanager;
1282        char* capmt;
1283        int capmtlen;
1284        int cmdpos;
1285};
1286
1287struct stimerthread
1288{
1289        int delay;
1290        int count;
1291        int notfirst;
1292        pthread_attr_t attr;
1293        pthread_t thread;
1294        int status;
1295        int aktion;
1296        //bit 0: 1 = stop allwas on titan end
1297        int flag;
1298        void* param1;
1299        void* param2;
1300        void* (*func)(struct stimerthread*, void*, void*);
1301        struct stimerthread* next;
1302};
1303
1304struct hddparm
1305{
1306        char* device;
1307        int read;
1308        int write;
1309        int sleeptime;
1310        int notchanged;
1311};
1312
1313struct marker
1314{
1315        off64_t pos;
1316        off64_t time;
1317        char* timetext;
1318        struct marker* prev;
1319        struct marker* next;
1320};
1321
1322struct status
1323{
1324        int longkeycode[MAXLONGKEY];
1325        //aktivate extra featers
1326        int expertmodus;
1327        //http user:passwd
1328        char* httpauth;
1329        //set to 1 if channellist or channelnr open
1330        int channelswitch;
1331        //deaktivates child protect if greater then akttime
1332        time_t protecttime;
1333        char* boxtype;
1334        char* realboxtype;
1335        pthread_t mainthread;
1336        //videosize from stream
1337        video_size_t videosize;
1338        time_t videosizevalid;
1339        //radius for rounded border
1340        int borderradius;
1341        int picbordersize;
1342        int titlelinesize;
1343        //0 border
1344        //1 fullbar
1345        int listboxselecttype;
1346        //0 camd.socket
1347        //1 pmt.tmp
1348        int pmtmode;
1349        //timer for del old epg entrys
1350        time_t deloldepg;
1351        //write epg periodic to medium
1352        time_t writeperiodicepg;
1353        //0 dektiv
1354        //1 only scan
1355        //2 only whitlist
1356        //3 scan and whitelist
1357        int epglistmode;
1358        // 1 manual
1359        // 2 from standby
1360        int startmode;
1361        jmp_buf longjumpbuf;
1362        pthread_mutex_t drawingmutex;
1363        pthread_mutex_t rectimermutex;
1364        pthread_mutex_t servicemutex;
1365        pthread_mutex_t epgmutex;
1366        pthread_mutex_t channelmutex;
1367        pthread_mutex_t timerthreadmutex;
1368        pthread_mutex_t audiotrackmutex;
1369        pthread_mutex_t subtitlemutex;
1370        pthread_mutex_t linkedchannelmutex;
1371        pthread_mutex_t dmxdevmutex;
1372        pthread_mutex_t rcmutex;
1373        pthread_mutex_t queuemutex;
1374        pthread_mutex_t clistmutex;
1375        pthread_mutex_t hddmutex;
1376        pthread_mutex_t tsseekmutex;
1377        pthread_mutex_t accelfbmutex;
1378        pthread_mutex_t mediadbmutex;
1379        pthread_mutex_t oldentrymutex;
1380        pthread_mutex_t newslettermutex;
1381        pthread_mutex_t tithekmutex;
1382        pthread_mutex_t inetworkmutex;
1383        pthread_mutex_t textboxmutex;
1384        pthread_mutex_t setaktresmutex;
1385        pthread_mutex_t waitrcmutex;
1386        // mutex for VFD handling
1387        pthread_mutex_t vfdmutex;
1388        // mutex for OLED handling
1389        pthread_mutex_t oledmutex;
1390                // mutex for cec handling
1391        pthread_mutex_t cecmutex;
1392        off64_t recsplitsize;
1393        char* gateway;
1394        char* dnsserver1;
1395        char* dnsserver2;
1396        int fasttextrender;
1397        // 1 release all menus
1398        int menurelease;
1399        int play;
1400        int pause;
1401        int playspeed;
1402        int slowspeed;
1403        int prefillbuffer;
1404        int playpic;
1405#ifdef EPLAYER4
1406        int prefillbuffercount;
1407        int bufferpercent;
1408        int cleaninfobar;
1409//      gint avgInRate;
1410//      gint avgOutRate;
1411//      gint64 bufferingLeft;
1412        gint64 pts;
1413#endif
1414        int random;
1415        int repeat;
1416        int epgdays;
1417        int spinnertime;
1418        int spinnerspeed;
1419        int hangtime;
1420        int timeupdatecount;
1421        int markmodus;
1422        // 1 from main prog
1423        // 2 from a thread
1424        int standby;
1425        char* tmp;
1426        // rc filedescriptor
1427        int fdrc;
1428        // rc filedescriptor for tuxtxt
1429        int fdrctxt;
1430        int writeconfig;
1431        int writeownconfig;
1432        int writercconfig;
1433        int writeskinconfig;
1434        int writechannel;
1435        int writetransponder;
1436        int writeprovider;
1437        int writemainbouquet;
1438        int writebouquet;
1439        int writemainplaylist;
1440        int writeplaylist;
1441        int writesat;
1442        int writerectimer;
1443        int writeepgscanlist;
1444        int writemostzap;
1445        int writemediadb;
1446        int writelastsubtitle;
1447        int writechannelslot;
1448        // 1 mute is aktiv
1449        int mute;
1450        // 1 spinner is aktiv
1451        int spinner;
1452        // 1 infobar is aktiv
1453        // 2 infobar is aktiv (with wait befor show)
1454        // 3 infobar is aktiv (no autohide)
1455        int infobar;
1456        // with infobar to display
1457        int infobarnr;
1458        // 0 is for mute screen
1459        struct skin *drawallways[1];
1460        char* drawallwaysbg[1];
1461        int usedirectfb;
1462        // count how long last rcwait (shows spinner if to long)
1463        time_t sec;
1464        // if set to a value != 0, rcwait returns this number
1465        int rckey;
1466        struct skin* skinerr;
1467        pthread_attr_t timerthreadattr;
1468        pthread_t timerthread;
1469        int timerthreadstatus;
1470        int timerthreadaktion;
1471        pthread_attr_t subthreadattr;
1472        pthread_t subthread;
1473        int subthreadstatus;
1474        int subthreadaktion;
1475        int subthreadpid;
1476        int subthreadid1;
1477        int subthreadid2;
1478        // epg thread pointer
1479        struct stimerthread* epgthread;
1480        // epgscanlist thread pointer
1481        struct stimerthread* epgscanlistthread;
1482        // httpd thread pointer
1483        struct stimerthread* httpthread;
1484        // rguid thread pointer
1485        struct stimerthread* rguithread;
1486        // mediadb thread pointer
1487        struct stimerthread* mediadbthread;
1488        // newsletter thread pointer
1489        struct stimerthread* newsletterthread;
1490        // thumb thread pointer
1491        struct stimerthread* thumbthread;
1492        // rectimer thread
1493        struct stimerthread* rectimerthread;
1494        // rguid sock filedescriptor for rguid
1495        int rguidfd;
1496        struct service* aktservice;
1497        struct service* lastservice;
1498        struct service* pipservice;
1499        struct channel* markedchannel;
1500        //if we are in a epg screen, this is the showen channel
1501        struct channel* epgchannel;
1502        char* configfile;
1503        // for bouquet channel numbering
1504        int bouquetnr[MAXSERVICETYPE];
1505        int servicetype;
1506        struct shutdowntimer *sd_timer;
1507        // akt pos in channel cache
1508        int channelcachepos;
1509        // aktivate/deaktivate auto updatevfd
1510        int updatevfd;
1511        // count for recording
1512        int recording;
1513        // count for streaming
1514        int streaming;
1515        // pvr allowed = 1, disable = 0
1516        int pvr;
1517        // timeshift running = 1, ending = 2
1518        int timeshift;
1519        // 0 = normal, 1 = permanent timeshift
1520        int timeshifttype;
1521        // position in timeshiftfile to seek
1522        off64_t timeshiftpos;
1523        // ask if timeshift is running and switch channel
1524        int asktimeshift;
1525        // ts playing running = 1
1526        int playing;
1527        // if set to a skin (screenpointer) only this screen has rc
1528        struct skin* rcowner;
1529        struct skin* rcstandby;
1530        // timerstuktur fuer autores
1531        struct stimerthread* restimer;
1532        // spindown USB/HDD
1533        struct hddparm hdd[3];
1534        struct stimerthread* addhddall;
1535        // save old rotor position
1536        int rotoroldorbitalpos;
1537        // security check
1538        int security;
1539        // set to 1 if tvpic size is changed
1540        int tvpic;
1541        // timestamp for rc action
1542        time_t lastrcaction;
1543        // show timeline in channellist for each channel
1544        int showchanneltimeline;
1545        // see player.h for details
1546        int playercan;
1547                //Code von infobar.h aktiv = 1
1548        int infobaraktiv;
1549        //Name der Datei die abgespielt wird
1550        char* playfile;
1551        //Code MC aktiv = 1
1552        int mcaktiv;
1553        //greater 0 aktivate screen animation
1554        int screenanim;
1555        int screenanimspeed;
1556        //for auto increase audio vol
1557        int volautochange;
1558        int volautochangevalue;
1559        //for powerofftimer
1560        time_t fixpowerofftime;
1561        //for write FB in File
1562        int write_png;
1563        int write_jpg;
1564        //holds oversize value for blitter
1565        int leftoffset;
1566        int rightoffset;
1567        int topoffset;
1568        int bottomoffset;
1569        //background picture for all screens
1570        char* bgpic;
1571        //time for next picmem timeout check
1572        time_t picmemtimeout;
1573        time_t defpicmemtimeout;
1574        //show not tunable channel hidden (0)) or deaktive (1) in channellist
1575        int channellistview;
1576        //for blockmove in channellist
1577        int moveblockcount;
1578        //name ob file who played from webig
1579        char* webplayfile;
1580        //status of mediadbthread
1581        int mediadbthreadstatus;
1582        //for save mediadb in scan
1583        time_t mediadbsavetime;
1584        //colors / pic for selection
1585        long markcol;
1586        long filelistselectcol;
1587        long listboxselectcol;
1588        char* selectpic;
1589        //check if cam can decrypt channel
1590        int checkcamdecrypt;
1591        //don't send privat part of cadescriptor in capmt
1592        int caskipprivat;
1593        //send all caids or only caids cam can
1594        int casendallcaids;
1595        //show hidden files in filelist
1596        int showhiddenfiles;
1597        //mediadb
1598        int mediadbfiles;
1599        //show infobar on program change
1600        int infobarprogram;
1601        //for auto increase audio vol (mute)
1602        int volmute;
1603        int secondzap;
1604        //pointer to marker for recordings
1605        struct marker* playmarker;
1606        int autosubtitle;
1607        //save timeshift start time
1608        time_t timeshiftstart;
1609        int crosscontrol;
1610        int autochangechannelname;
1611        //tuxtext is running
1612        int tuxtxt;
1613        //on some fat32 hdd it takes very long to get free size
1614        int showrecfreesize;
1615        int firstunicablewait;
1616        //path for imdbfolder
1617        char* imdbfolderpath;
1618        int virtualzap;
1619        int fontsizeadjust;
1620        //count for drawing screen
1621        unsigned int drawscreencount;
1622        int autoseek;
1623        //skip all rc input events older than this value in millisec
1624        int rcskipms;
1625        //Workaround da ansonsten DVR4 nicht funktioniert (Treiberproblem)
1626        int setdvr0;
1627#ifdef MIPSEL
1628        //cec mipsel
1629        int cec_fixedAddress;
1630        int hdmiFd;
1631        int webencode;
1632#endif
1633        //pip Einstellungen
1634        int pipzap;
1635        // guest
1636        int whilecount;
1637        int sleepcount;
1638        int stats;
1639        char* url;
1640        //externer plugin Aufruf
1641        char* extplugin;
1642        //node oled blinken
1643        int skinblink;
1644        //BCM accel interface
1645        int bcm;
1646        //Volume
1647        int volume;
1648        int screenshot;
1649        // cacc
1650        int certchecked;
1651        int certok;
1652        int liveslot;
1653        // dynamic default skin infobar
1654        int getepgaktstart;
1655        int getepgaktend;
1656        int getepgakttitle;
1657        int getepgakttimeremaining;
1658        int getepgnextstart;
1659        int getepgnextend;
1660        int getepgnexttitle;
1661        int getepgnexttimeremaining;
1662        // downmix switch in audio menu (audiotrack.h)
1663        int downmix;
1664        // channels for recording
1665        struct channel* recchnode[9];
1666        // frontdev filedescriptor
1667        int fdrc1;
1668        // Anzah VideoDevs
1669        int videodevs;
1670} status;
1671
1672struct fb
1673{
1674        int dev;
1675        char *name;
1676        int fd;
1677        unsigned char *fb;
1678        unsigned long *fblong;
1679        int width;
1680        int height;
1681        int pitch;
1682        unsigned long fixfbsize;
1683        unsigned long varfbsize;
1684        int colbytes;
1685        unsigned long data_phys;
1686        struct fb *next;
1687};
1688
1689struct rc
1690{
1691        int key;
1692        void (*rcfunc)(struct skin*, struct skin*, int screencalc, int filelistview, int flag);
1693        struct skin *screen;
1694        struct skin *screennode;
1695        struct skin *owner;
1696        struct rc *next;
1697};
1698
1699struct clist
1700{
1701        char *key;
1702        char *value;
1703        char *def;
1704        char *tmp;
1705        struct clist *next;
1706};
1707
1708struct bouquet
1709{
1710        int nr;
1711        int serviceid;
1712        uint64_t transponderid;
1713        struct channel *channel;
1714        struct bouquet *prev;
1715        struct bouquet *next;
1716};
1717
1718struct channelslot
1719{
1720        int slot;
1721        int serviceid;
1722        uint64_t transponderid;
1723        struct channelslot *next;
1724};
1725
1726struct mainbouquet
1727{
1728        char *name;
1729        int type;
1730        char *filename;
1731        struct bouquet *bouquet;
1732        struct mainbouquet *prev;
1733        struct mainbouquet *next;
1734};
1735
1736struct pic
1737{
1738        char* name;
1739        unsigned char* picbuf;
1740        // < 0 when picbuf is normal mem (hw jpg)
1741        int memfd;
1742        unsigned long width;
1743        unsigned long height;
1744        unsigned long rowbytes;
1745        int channels;
1746  int timeout;
1747  time_t lastaccess;
1748        int del;
1749        struct pic* next;
1750};
1751
1752struct font
1753{
1754        char *name;
1755        FT_Error error;
1756        FTC_Manager manager;
1757        FTC_SBitCache cache;
1758        FTC_ImageTypeRec desc;
1759        FT_Face face;
1760        FT_UInt prev_glyphindex;
1761        FT_Bool use_kerning;
1762        struct font *next;
1763};
1764
1765//structure for write fb to File
1766struct writeFBfile
1767{
1768        unsigned char* ActBuf;
1769        unsigned char* buf1;
1770        unsigned char* buf2;
1771} writeFBfile;
1772
1773struct eit
1774{
1775        u_char table_id                               /*:8*/;
1776        u_char section_length_hi                      :4;
1777        u_char                                        :3;
1778        u_char section_syntax_indicator               :1;
1779        u_char section_length_lo                      /*:8*/;
1780        u_char service_id_hi                          /*:8*/;
1781        u_char service_id_lo                          /*:8*/;
1782        u_char current_next_indicator                 :1;
1783        u_char version_number                         :5;
1784        u_char                                        :2;
1785        u_char section_number                         /*:8*/;
1786        u_char last_section_number                    /*:8*/;
1787        u_char transport_stream_id_hi                 /*:8*/;
1788        u_char transport_stream_id_lo                 /*:8*/;
1789        u_char original_network_id_hi                 /*:8*/;
1790        u_char original_network_id_lo                 /*:8*/;
1791        u_char segment_last_section_number            /*:8*/;
1792        u_char segment_last_table_id                  /*:8*/;
1793        u_char data[]; /* struct eitevent */
1794};
1795#define EITLEN sizeof(struct eit)
1796#define GETEITSECLEN(x) HILO(((struct eit*)(x))->section_length)
1797
1798struct eitevent
1799{
1800        u_char event_id_hi                            /*:8*/;
1801        u_char event_id_lo                            /*:8*/;
1802        u_char mjd_hi                                 /*:8*/;
1803        u_char mjd_lo                                 /*:8*/;
1804        u_char start_time_h                           /*:8*/;
1805        u_char start_time_m                           /*:8*/;
1806        u_char start_time_s                           /*:8*/;
1807        u_char duration_h                             /*:8*/;
1808        u_char duration_m                             /*:8*/;
1809        u_char duration_s                             /*:8*/;
1810        u_char descriptors_loop_length_hi             :4;
1811        u_char free_ca_mode                           :1;
1812        u_char running_status                         :3;
1813        u_char descriptors_loop_length_lo             /*:8*/;
1814        u_char data[];
1815};
1816#define EITEVENTLEN sizeof(struct eitevent)
1817#define GETEITDESCLEN(x) HILO(((struct eitevent *)x)->descriptors_loop_length)
1818
1819struct eitshortevent
1820{
1821        u_char descriptor_tag                         /*:8*/;
1822        u_char descriptor_length                      /*:8*/;
1823        u_char lang_code1                             /*:8*/;
1824        u_char lang_code2                             /*:8*/;
1825        u_char lang_code3                             /*:8*/;
1826        u_char event_name_length                      /*:8*/;
1827        u_char data[];
1828};
1829#define EITSHORTEVENTLEN sizeof(struct eitshortevent)
1830
1831struct eitlongevent
1832{
1833        u_char descriptor_tag                         /*:8*/;
1834        u_char descriptor_length                      /*:8*/;
1835        u_char last_descriptor_number                 :4;
1836        u_char descriptor_number                      :4;
1837        u_char lang_code1                             /*:8*/;
1838        u_char lang_code2                             /*:8*/;
1839        u_char lang_code3                             /*:8*/;
1840        u_char length_of_items                        /*:8*/;
1841        u_char data[]; /* struct eitlongeventitem */
1842};
1843#define EITLONGEVENTLEN sizeof(struct eitlongevent)
1844
1845struct eitlongeventitem
1846{
1847        u_char item_description_length               /*:8*/;
1848        u_char data[];
1849};
1850#define EITLONGEVENTITEMLEN sizeof(struct eitlongeventitem)
1851
1852struct eitlinkage
1853{
1854        u_char descriptor_tag                 /*:8*/;
1855        u_char descriptor_length              /*:8*/;
1856        u_char transport_stream_id_hi         /*:8*/;
1857        u_char transport_stream_id_lo         /*:8*/;
1858        u_char original_network_id_hi         /*:8*/;
1859        u_char original_network_id_lo         /*:8*/;
1860        u_char service_id_hi                  /*:8*/;
1861        u_char service_id_lo                  /*:8*/;
1862        u_char linkage_type                   /*:8*/;
1863};
1864#define EITLLINKAGELEN sizeof(struct eitlinkage)
1865
1866struct parentalrating
1867{
1868        u_char descriptor_tag                 /*:8*/;
1869        u_char descriptor_length              /*:8*/;
1870        u_char data[]; //struct parental_rating_item
1871};
1872#define PARENTALRATINGLEN sizeof(struct parentalrating)
1873
1874struct parentalratingitem
1875{ 
1876        u_char lang_code1                    /*:8*/;
1877        u_char lang_code2                    /*:8*/;
1878        u_char lang_code3                    /*:8*/;
1879        u_char rating                        /*:8*/;
1880};
1881#define PARENTALRATINGITEMLEN sizeof(struct parentalratingitem)
1882
1883struct rst //table id 0x71
1884{ 
1885        u_char table_id                     /*:8*/;
1886        u_char section_syntax_indicator         :1;
1887        u_char reserved_1                       :1;
1888        u_char reserved_2                       :2;
1889        u_int section_length                   :12;
1890};
1891#define RSTLEN sizeof(struct rst)
1892
1893struct rstitem
1894{ 
1895        u_char transponder_stream_id_hi     /*:8*/;
1896        u_char transponder_stream_id_lo     /*:8*/;
1897        u_char original_network_id_hi       /*:8*/;
1898        u_char original_network_id_lo       /*:8*/;
1899        u_char service_id_hi                /*:8*/;
1900        u_char service_id_lo                /*:8*/;
1901        u_char event_id_hi                  /*:8*/;
1902        u_char event_id_lo                  /*:8*/;
1903        u_char reserved_1                       :5;
1904        u_char running_status                   :3;
1905};
1906#define RSTITEMLEN sizeof(struct rstitem)
1907
1908struct mhwchannel
1909{
1910        u_char  network_id_hi;
1911        u_char  network_id_lo;
1912        u_char  transponder_id_hi;
1913        u_char  transponder_id_lo;
1914        u_char  channel_id_hi;
1915        u_char  channel_id_lo;
1916        u_char  name[16];
1917};
1918#define MHWCHANNELLEN sizeof(struct mhwchannel)
1919
1920struct mhwtitle
1921{
1922        u_char table_id                       :8;
1923        u_char section_length_hi              :4;
1924        u_char                                :2;
1925        u_char dummy                          :1;
1926        u_char section_syntax_indicator       :1;
1927        u_char section_length_lo              :8;
1928        u_char channel_id                     :8;
1929        u_char theme_id                       :8;
1930        u_char hours                                  :5;
1931        u_char day                            :3;
1932        u_char summary_available              :1;
1933        u_char                                      :1;
1934        u_char minutes                        :6;
1935        u_char                                :8;
1936        u_char                                :8;
1937        u_char duration_hi                    :8;
1938        u_char duration_lo                    :8;
1939        u_char title                          [23];
1940        u_char ppv_id_hi                      :8;
1941        u_char ppv_id_mh                      :8;
1942        u_char ppv_id_ml                      :8;
1943        u_char ppv_id_lo                      :8;
1944        u_char program_id_hi                  :8;
1945        u_char program_id_mh                  :8;
1946        u_char program_id_ml                  :8;
1947        u_char program_id_lo                  :8;
1948        u_char                                :8;
1949        u_char                                :8;
1950        u_char                                :8;
1951        u_char                                :8;
1952};
1953#define MHWTITLELEN sizeof(struct mhwtitle)
1954
1955struct mhwsummary
1956{
1957        u_char table_id                       :8;
1958        u_char section_length_hi              :4;
1959        u_char                                :2;
1960        u_char dummy                          :1;
1961        u_char section_syntax_indicator       :1;
1962        u_char section_length_lo              :8;
1963        u_char program_id_hi                  :8;
1964        u_char program_id_mh                  :8;
1965        u_char program_id_ml                  :8;
1966        u_char program_id_lo                  :8;
1967        u_char                                :8;
1968        u_char                                :8;
1969        u_char                                :8;
1970        u_char nb_replays                     :8;
1971};
1972#define MHWSUMMARYLEN sizeof(struct mhwsummary)
1973
1974struct mhw2channel
1975{
1976        u_char network_id_hi;
1977        u_char network_id_lo;
1978        u_char transponder_id_hi;
1979        u_char transponder_id_lo;
1980        u_char channel_id_hi;
1981        u_char channel_id_lo;
1982        u_char                                :8;
1983        u_char                                :8;
1984};
1985
1986struct extepgcache
1987{
1988        long id;
1989        struct epg* epgnode;
1990        struct extepgcache* next;
1991};
1992
1993struct extepgchannel
1994{
1995        long id;
1996        int serviceid;
1997        uint64_t transponderid;
1998        struct extepgchannel* next;
1999};
2000
2001struct extepgconfig
2002{
2003        uint64_t transponderid;
2004        int type;
2005        char* file;
2006        int channelpid;
2007        int titlepid[8];
2008        int summarypid[8];
2009        struct extepgconfig* next;
2010};
2011
2012struct blacklist
2013{
2014  char* file;
2015  struct splitstr* splitstr;
2016  int count;
2017};
2018
2019typedef struct sci_modes
2020{
2021        int emv2000;
2022        int dma;
2023        int man_act;
2024        int rw_mode;
2025} scimodes;
2026
2027typedef struct sci_parameters
2028{
2029        u_char T;
2030        unsigned long fs;
2031        unsigned long ETU;
2032        unsigned long WWT;
2033        unsigned long CWT;
2034        unsigned long BWT;
2035        unsigned long EGT;
2036        unsigned long clock_stop_polarity;
2037        u_char check;
2038        u_char P;
2039        u_char I;
2040        u_char U;
2041} sciparameters;
2042
2043struct update
2044{
2045        char* auth;
2046        char* type;
2047        char* skinname;
2048        char* filemask;
2049        char* filepath;
2050        int imgtype;
2051};
2052
2053#ifdef EPLAYER4
2054typedef enum { stUnknown, stPlainText, stSSA, stASS, stSRT, stVOB, stPGS } subtype_t;
2055typedef enum {atUnknown, atMPEG, atMP3, atAC3, atDTS, atAAC, atPCM, atOGG, atFLAC, atWMA} audiotype_t;
2056typedef struct _CustomData {
2057//typedef struct CustomData {
2058  GstElement *playbin2;   /* Our one and only element */
2059   
2060  gint n_video;          /* Number of embedded video streams */
2061  gint n_audio;          /* Number of embedded audio streams */
2062  gint n_text;           /* Number of embedded subtitle streams */
2063   
2064  gint current_video;    /* Currently playing video stream */
2065  gint current_audio;    /* Currently playing audio stream */
2066  gint current_text;     /* Currently playing subtitle stream */
2067
2068  gboolean is_live;
2069  GstElement *pipeline;
2070  GMainLoop *loop;
2071} CustomData;
2072
2073typedef enum {
2074        GST_PLAY_FLAG_VIDEO = (1 << 0),
2075        GST_PLAY_FLAG_AUDIO = (1 << 1),
2076        GST_PLAY_FLAG_TEXT = (1 << 2),
2077        GST_PLAY_FLAG_NATIVE_VIDEO = (1 << 3)
2078} GstPlayFlags;
2079#endif
2080
2081#ifdef MIPSEL
2082//fuer cec Mipsel
2083
2084#ifdef DREAMBOX
2085struct cec_message
2086{
2087        unsigned char address;
2088        unsigned char data[16];
2089        unsigned char length;
2090        unsigned char flag;
2091}__attribute__((packed));
2092struct cec_rx_message
2093{
2094        unsigned char address;
2095        unsigned char destination;
2096        unsigned char data[16];
2097        unsigned char length;
2098}__attribute__((packed));
2099
2100
2101#else
2102struct cec_message
2103{
2104unsigned char address;
2105unsigned char length;
2106unsigned char data[256];
2107}__attribute__((packed));
2108struct cec_rx_message
2109{
2110        unsigned char address;
2111        unsigned char destination;
2112        unsigned char data[16];
2113        unsigned char length;
2114}__attribute__((packed));
2115#endif
2116
2117unsigned char cec_physicalAddress[2];
2118unsigned char cec_logicalAddress;
2119unsigned char cec_deviceType;
2120
2121#endif
2122
2123// cacc
2124/* CI+ certificates */
2125
2126struct cert_ctx {
2127        X509_STORE *store;
2128
2129        /* Host */
2130        X509 *cust_cert;
2131        X509 *device_cert;
2132
2133        /* Module */
2134        X509 *ci_cust_cert;
2135        X509 *ci_device_cert;
2136};
2137
2138#ifdef MIPSEL
2139enum ca_descr_data_type {
2140        CA_DATA_IV,
2141        CA_DATA_KEY,
2142};
2143
2144enum ca_descr_parity {
2145        CA_PARITY_EVEN,
2146        CA_PARITY_ODD,
2147};
2148
2149struct ca_descr_data {
2150        unsigned int index;
2151        enum ca_descr_parity parity;
2152        enum ca_descr_data_type data_type;
2153        unsigned int length;
2154        unsigned char *data;
2155};
2156
2157#endif
2158
2159#ifdef SH4NEW
2160enum ca_descr_data_type {
2161        CA_DATA_IV,
2162        CA_DATA_KEY,
2163};
2164
2165enum ca_descr_parity {
2166        CA_PARITY_EVEN,
2167        CA_PARITY_ODD,
2168};
2169
2170struct ca_descr_data {
2171        unsigned int index;
2172        enum ca_descr_parity parity;
2173        enum ca_descr_data_type data_type;
2174        unsigned int length;
2175        unsigned char *data;
2176};
2177
2178#endif
2179
2180struct aes_xcbc_mac_ctx {
2181        uint8_t K[3][16];
2182        uint8_t IV[16];
2183        AES_KEY key;
2184        int buflen;
2185};
2186
2187uint32_t datatype_sizes[MAX_ELEMENTS] = {
2188        0, 50, 0, 0, 0, 8, 8, 0,
2189        0, 0, 0, 0, 32, 256, 256, 0,
2190        0, 256, 256, 32, 8, 8, 32, 32,
2191        0, 8, 2, 32, 1, 32, 1, 0,
2192        32
2193};
2194
2195struct element {
2196        uint8_t *data;
2197        uint32_t size;
2198        /* buffer valid */
2199        int valid;
2200};
2201
2202struct cc_ctrl_data {
2203        /* parent */
2204        struct caslot* slot;
2205
2206        /* ci+ credentials */
2207        struct element elements[MAX_ELEMENTS];
2208
2209        /* DHSK */
2210        uint8_t dhsk[256];
2211
2212        /* KS_host */
2213        uint8_t ks_host[32];
2214
2215        /* derived keys */
2216        uint8_t sek[16];
2217        uint8_t sak[16];
2218
2219        /* AKH checks - module performs 5 tries to get correct AKH */
2220        unsigned int akh_index;
2221
2222        /* authentication data */
2223        uint8_t dh_exp[256];
2224
2225        /* certificates */
2226        struct cert_ctx *cert_ctx;
2227
2228        /* private key of device-cert */
2229        RSA *rsa_device_key;
2230};
2231
2232#endif
Note: See TracBrowser for help on using the repository browser.