-
[my-code/ivac.git] / dfb_api.c
1 /*
2  * dfb_api.c - api to dfb interface
3  */
4
5 /* std includes */
6 #include <stdio.h>
7 #include <string.h>
8 #include <unistd.h>
9
10 /* dfb includes */
11 #include <directfb.h>
12
13 #define MY_FONT_HEIGHT 18
14
15 /* global stuff */
16
17 /* well ... */
18 IDirectFB *dfb = NULL;
19
20 IDirectFBSurface *primary = NULL;
21 IDirectFBSurface *logo = NULL;
22 IDirectFBSurface *subsurface = NULL;
23 IDirectFBSurface *window = NULL;
24
25 IDirectFBImageProvider *image_provider = NULL;
26 IDirectFBVideoProvider *video_provider = NULL;
27
28 static int screen_width  = 0;
29 static int screen_height = 0;
30
31 char dfb_video_dev[]="/dev/video";
32 char text_top[]="Internet Video / Audio Conferencing";
33 char dfb_image[]="./images/ivac_logo.png";
34 char dfb_font[]="./fonts/decker.ttf";
35
36 /* small api */
37 int dfb_init(int *argc,char **argv) {
38  DirectFBInit(argc,&argv);
39  DirectFBCreate(&dfb);
40  dfb->SetCooperativeLevel(dfb,DFSCL_FULLSCREEN);
41  return 1;
42 }
43
44 int check_accel(void) {
45  DFBCardCapabilities caps;
46  dfb->GetCardCapabilities(dfb,&caps);
47  return (caps.acceleration_mask);
48 }
49
50 int create_primary_surface(void) {
51  DFBSurfaceDescription desc;
52  memset(&desc,0,sizeof(DFBSurfaceDescription));
53  desc.flags=DSDESC_CAPS;
54  desc.caps=DSCAPS_PRIMARY;
55  dfb->CreateSurface(dfb,&desc,&primary);
56  return 1;
57 }
58
59 int create_image_provider(IDirectFBSurface *surface) {
60  dfb->CreateImageProvider(dfb,dfb_image,&image_provider);
61  image_provider->RenderTo(image_provider,surface,NULL);
62  image_provider->Release(image_provider);
63  return 1;
64 }
65
66 int create_video_provider(IDirectFBSurface *surface) {
67  dfb->CreateVideoProvider(dfb,dfb_video_dev,&video_provider);
68  video_provider->PlayTo(video_provider,surface,NULL,NULL,NULL);
69  // video_provider->Release(video_provider);
70  return 1;
71 }
72
73 int release_surface(IDirectFBSurface *surface) {
74  surface->Release(surface);
75  return 1;
76 }
77
78 int release_dfb(void) {
79  dfb->Release(dfb);
80  return 1;
81 }
82
83
84 /* test api app */
85 int main (int argc, char **argv) {
86
87  dfb_init(&argc,argv);
88
89  check_accel();
90
91  create_primary_surface();
92
93  create_image_provider(primary);
94
95  sleep(5);
96
97  release_surface(primary);
98
99  return 1;
100 }