source: titan/titan/struct.h

Last change on this file was 45441, checked in by obi, 3 weeks ago

schubs

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