X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=dfb_api.c;h=6f28b59a900716d8ba68c40e30cf6a637e0aeda8;hb=4999f6c736e3cddb3163a6a706aabcaad83cc4f9;hp=3488f8b252b1504a6ec807b7c0c53dcb747c90ff;hpb=ea7d57d7343d2314625585118c790b9f92adb1bb;p=my-code%2Fivac.git diff --git a/dfb_api.c b/dfb_api.c index 3488f8b..6f28b59 100644 --- a/dfb_api.c +++ b/dfb_api.c @@ -10,6 +10,8 @@ /* dfb includes */ #include +#include "dfb_api.h" + #define MY_FONT_HEIGHT 18 /* global stuff */ @@ -33,7 +35,11 @@ char text_top[]="Internet Video / Audio Conferencing"; char dfb_image[]="./images/ivac_logo.png"; char dfb_font[]="./fonts/decker.ttf"; -/* small api - directfb usage kinda sux: foo->bar(foo,...) wtf?!?!?! */ +/* variable definitions */ +// struct user_info { + + +/* functions */ int dfb_init(int *argc,char **argv) { DirectFBInit(argc,&argv); @@ -82,16 +88,21 @@ int create_logo_surface(void) { image_provider->Release(image_provider); return 1; } - + int create_video_surface(void) { + float q; DFBSurfaceDescription desc; DFBVideoProviderCapabilities caps; dfb->CreateVideoProvider(dfb,dfb_video_dev,&video_provider); video_provider->GetSurfaceDescription(video_provider,&desc); + q=(((float)screen_height/desc.height>=(float)screen_width/desc.width)? + (float)screen_height/desc.height:(float)screen_width/desc.width); + desc.width=(int)(screen_width/q); + desc.height=(int)(screen_height/q); video_provider->GetCapabilities(video_provider,&caps); printf("video capabilities: %x\n",caps); dfb->CreateSurface(dfb,&desc,&video); - video_provider->PlayTo(video_provider,video,NULL,NULL,NULL); + video_provider->PlayTo(video_provider,video,NULL,video_callback,NULL); video_provider->Release(video_provider); return 1; } @@ -127,7 +138,9 @@ int blit_logo(void) { int blit_video(void) { int x,y; get_surface_size(video,&x,&y); - blit_surface(video,((screen_width-x)/2),((screen_height-y)/2)); + printf("size of logo width/height: %d/%d\n",x,y); + // blit_surface(video,((screen_width-x)/2),((screen_height-y)/2)); + blit_surface(video,0,0); return 1; } @@ -136,6 +149,12 @@ int flip_it(void) { return 1; } +DVFrameCallback video_callback(void) { + puts("callback flip"); + flip_it; + return DFENUM_OK; +} + /* test api app */ int main (int argc, char **argv) { @@ -153,8 +172,11 @@ int main (int argc, char **argv) { clear_screen(primary); + puts("main: blit video"); + // blit_video(); blit_logo(); + // puts("main: flip"); flip_it(); sleep(10);