source: titan/titan/showiframe.h @ 23286

Last change on this file since 23286 was 23286, checked in by nit, 9 years ago

[titan] cleanup

File size: 1.5 KB
Line 
1#ifndef SHOWIFRAME_H
2#define SHOWIFRAME_H
3
4//flag 0: stop service
5//flag 1: not stop service
6int singlepicstart(const char *filename, int flag)
7{
8        int ret = 0;
9
10        if(status.aktservice->type != STILLPIC)
11        {
12                if(flag == 0)
13                {
14                        ret = servicestop(status.aktservice, 0, 1);
15                        if(ret == 1) return 1;
16                }
17        }
18
19        int fd = open(filename, O_RDONLY);
20        if(fd >= 0)
21        {
22                struct dvbdev* videonode = NULL;
23                struct stat s;
24                fstat(fd, &s);
25
26                if(status.aktservice->type != STILLPIC)
27                {
28                        if(status.aktservice->videodev != NULL)
29                        {
30                                videoclose(status.aktservice->videodev, -1);
31                                status.aktservice->videodev = NULL;
32                        }
33                        videonode = videoopen(0, 0);
34                        videoselectsource(videonode, VIDEO_SOURCE_MEMORY);
35
36                        videosetformat(videonode, VIDEO_FORMAT_16_9);
37                        videosetstreamtype(videonode, MPEGV);
38                        videoplay(videonode);
39                }       
40                else
41                        videonode = status.aktservice->videodev;
42
43                if(videonode != NULL)
44                {
45                        struct video_still_picture stillpic;
46                        char* iframe = NULL;
47
48                        iframe = malloc(s.st_size);
49                        if(iframe == NULL)
50                        {
51                                err("no mem");
52                                close(fd);
53                                return 1;
54                        }
55
56                        status.aktservice->type = STILLPIC;
57                        status.aktservice->videodev = videonode;
58
59                        TEMP_FAILURE_RETRY(read(fd, iframe, s.st_size));
60                        stillpic.iFrame = iframe;
61                        stillpic.size = s.st_size;
62
63                        videoclearbuffer(videonode);
64                        videostillpicture(videonode, &stillpic);
65
66                        free(iframe); iframe = NULL;
67                }
68                close(fd);
69        }
70        else
71        {
72                err("open %s\n", filename);
73                return 1;
74        }
75        return 0;
76}
77
78#endif
Note: See TracBrowser for help on using the repository browser.