source: titan/titan/struct.h @ 37726

Last change on this file since 37726 was 37726, checked in by obi, 4 years ago

c* next step

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