source: titan/plugins/gmediarender/gmediarender.h @ 32732

Last change on this file since 32732 was 32732, checked in by obi, 5 years ago

update gmediarenderer

File size: 5.8 KB
Line 
1#ifndef GMEDIARENDER_H
2#define GMEDIARENDER_H
3
4extern struct skin* skin;
5struct fb *fb = NULL;
6extern struct screensaver* screensaver;
7
8void gmediarendergetpic(struct skin* gmediarender, char* buf)
9{
10        char *tmpip = NULL, *pos = NULL, *pos1 = NULL, *path = NULL;
11        int port = 80;
12        printf("dlna download link: %s\n", buf);
13               
14        if(buf == NULL) return;
15
16        tmpip = string_replace("http://", "", buf, 0);
17
18        if(tmpip != NULL)
19        {
20                pos = strchr(tmpip, '/');
21                pos1 = strchr(tmpip, ':');
22        }
23        if(pos != NULL)
24        {
25                pos[0] = '\0';
26                path = pos + 1;
27        }
28        if(pos1 != NULL)
29        {
30                pos1[0] = '\0';
31                port = atoi(pos1 + 1);
32        }
33
34        if(cmpfilenameext(path, ".jpg") == 0)
35        {
36                unlink("/tmp/gmediarenderpic.jpg");
37/*
38                char* cmd = NULL;
39                cmd = ostrcat(cmd, "wget ", 1, 0);
40                cmd = ostrcat(cmd, buf, 1, 0);
41                cmd = ostrcat(cmd, " -O /tmp/gmediarenderpic.jpg", 1, 0);
42                printf("cmd: %s\n", cmd);
43                system(cmd);
44                free(cmd), cmd = NULL;
45*/
46                gethttp(tmpip, path, port, "/tmp/gmediarenderpic.jpg", NULL, 5000, NULL, 0);
47                changepic(gmediarender, "/tmp/gmediarenderpic.jpg");
48                gmediarender->picwidth = 1;
49                gmediarender->picheight = 1;
50                gmediarender->bgcol = 0;
51                gmediarender->picquality = getconfigint("mc_pp_picquality", NULL);
52                drawscreen(gmediarender, 0, 4);
53        }
54        if(cmpfilenameext(path, ".png") == 0)
55        {
56                unlink("/tmp/gmediarenderpic.png");
57/*
58                char* cmd = NULL;
59                cmd = ostrcat(cmd, "wget ", 1, 0);
60                cmd = ostrcat(cmd, buf, 1, 0);
61                cmd = ostrcat(cmd, " -O /tmp/gmediarenderpic.png", 1, 0);
62                printf("cmd: %s\n", cmd);
63                system(cmd);
64                free(cmd), cmd = NULL;
65*/
66                gethttp(tmpip, path, port, "/tmp/gmediarenderpic.png", NULL, 5000, NULL, 0);
67                changepic(gmediarender, "/tmp/gmediarenderpic.png");
68                gmediarender->picwidth = 1;
69                gmediarender->picheight = 1;
70                gmediarender->bgcol = 0;
71                gmediarender->picquality = getconfigint("mc_pp_picquality", NULL);
72                drawscreen(gmediarender, 0, 4);
73        }
74}
75
76void screengmediarender()
77{
78        int rcret = -1, ret = 0;
79        char* cmd = NULL, *buf = NULL, *tmpstr = NULL, *tmpstr1 = NULL;
80        int fifo = -1;
81        struct skin* gmediarender = getscreen("gmediarender");
82        struct skin* servername = getscreennode(gmediarender, "servername");
83        struct skin* connect = getscreennode(gmediarender, "connect");
84
85        ret = servicestop(status.aktservice, 1, 1);
86        if(ret == 1) return;
87
88        buf = malloc(MINMALLOC);
89        if(buf == NULL)
90        {
91                err("no mem");
92                return;
93        }
94
95        //create fifo
96        mkfifo("/tmp/gmediarender", 0666);
97
98        //open fifo
99        fifo = open("/tmp/gmediarender", O_RDONLY | O_NONBLOCK);
100
101        drawscreen(skin, 0, 0);
102        drawscreen(gmediarender, 0, 0);
103
104        tmpstr = ostrcat(status.boxtype, NULL, 0, 0);
105        struct inetwork* net = getinetworkbydevice("eth0");
106        if(net != NULL)
107        {
108                tmpstr = ostrcat(tmpstr, "-", 1, 0);
109                tmpstr = ostrcat(tmpstr, net->ip, 1, 0);
110        }
111
112        if(file_exist("/var/usr/local/share/titan/plugins/gmediarender/gmediarender.sh") == 1)
113                cmd = ostrcat(cmd, "/var/usr/local/share/titan/plugins/gmediarender/gmediarender.sh ", 1, 0);
114        else if(file_exist("/var/swap/usr/local/share/titan/plugins/gmediarender/gmediarender.sh") == 1)
115                cmd = ostrcat(cmd, "/var/swap/usr/local/share/titan/plugins/gmediarender/gmediarender.sh ", 1, 0);
116        else
117                cmd = ostrcat(cmd, "/mnt/swapextensions/usr/local/share/titan/plugins/gmediarender/gmediarender.sh ", 1, 0);
118       
119        cmd = ostrcat(cmd, tmpstr, 1, 0);
120        cmd = ostrcat(cmd, " &", 1, 0);
121
122        //start renderer
123        debug(10, "cmd: %s", cmd);
124        system(cmd);
125        free(cmd), cmd = NULL;
126
127        tmpstr1 = ostrcat(tmpstr1, _("DLNA Renderer Name"), 1, 0);
128        tmpstr1 = ostrcat(tmpstr1, ": ", 1, 0);
129        tmpstr1 = ostrcat(tmpstr1, tmpstr, 1, 0);
130        changetext(servername, tmpstr1);
131        free(tmpstr), tmpstr = NULL;
132
133        tmpstr = ostrcat(_("Wait for connect or press EXIT"), NULL, 0, 0);
134        changetext(connect, tmpstr);
135
136        drawscreen(gmediarender, 0, 0);
137
138//load screenserver
139        int count = 0, screensaver_delay = 0, saver = 0, rcwait = 1000;
140        if(getconfigint("screensaver", NULL) == 1)
141        {
142                screensaver_delay = getconfigint("screensaver_delay", NULL);
143                initscreensaver();
144        }
145//     
146        while(1)
147        {
148                rcret = waitrc(NULL, rcwait, 0);
149
150                if(fifo > -1)
151                {
152                        ret = read(fifo, buf, MINMALLOC);
153                        if(ret > 0)
154                        {
155                                changetext(connect, _("DLNA Control Client connected !"));
156                                buf[ret] = '\0';
157                                if(ostrcmp(buf, "clear.png") == 0) //clear screen
158                                {
159                                        count = 0;
160                                        rcwait = 1000;
161//                                      if(getconfigint("screensaver", NULL) == 1)
162//                                              drawscreen(skin, 0, 0);
163//                                      else
164                                                drawscreen(gmediarender, 0, 0);
165                                        printf("clear.png set count=%d set rcwait=%d\n", count, rcwait);
166                                }
167                                else if(ostrcmp(buf, "saver.png") == 0) //saver screen
168                                {
169                                        if(getconfigint("screensaver", NULL) == 1)
170                                        {
171                                                count = 1;
172                                                drawscreen(skin, 0, 0);
173                                        }
174                                        else
175                                        {
176//                                              count = 0;
177                                                changepic(gmediarender, "%pluginpath%/gmediarender/skin/background.jpg");
178                                                drawscreen(gmediarender, 0, 0);
179                                        }
180
181                                        printf("11saver.png set count=%d\n", count);
182                                }
183                                else
184                                {
185                                        count = 0;
186                                        rcwait = 1000;
187                                        drawscreen(skin, 0, 0);
188                                        gmediarendergetpic(gmediarender, buf);
189                                        printf("buf: %s set count=%d\n set rcwait=%d", buf, count, rcwait);
190                                }
191                        }
192//check screenserver
193
194                        if(getconfigint("screensaver", NULL) == 1)
195                        {
196                                if(count > 0 && screensaver != NULL)
197                                {
198                                        count++;
199                                        printf("count++ %d\n", count);
200                                }
201       
202                                if(count > screensaver_delay && screensaver != NULL)
203                                {
204                                        printf("showscreensaver %d\n", count);
205                                        showscreensaver();
206                                        rcwait = screensaver->speed;
207                                }
208                        }
209//////
210                }
211
212                if(rcret == getrcconfigint("rcexit", NULL)) break;
213                if(rcret == getrcconfigint("rcok", NULL)) break;
214        }
215
216        //stop renderer
217        system("killall -9 gmediarender");
218
219        //stop screenserver
220        deinitscreensaver();
221               
222        if(status.lastservice != NULL)
223                servicestart(status.lastservice->channel, NULL, NULL, 0);
224
225        free(buf); buf = NULL;
226        free(tmpstr), tmpstr = NULL;
227        free(tmpstr1), tmpstr1 = NULL;
228
229        //close fifo
230        close(fifo);
231        unlink("/tmp/gmediarender");
232        unlink("/tmp/gmediarenderpic.jpg");
233        unlink("/tmp/gmediarenderpic.png");
234}
235
236#endif
Note: See TracBrowser for help on using the repository browser.