Hi,
I've been trying to implement video support to a DirectFB wrapper I'm
writing.
However, I'm getting really odd behaviour, especially compared with
the example programs. I fail to so why my code won't work, but
df_window will with my Video4Linux (1 and 2) card.
Here's my code:
#include <directfb.h>
#include <unistd.h>
#include <stdio.h>
#include <math.h>
int frame_callback(void * ctx);
int main(int argc, char ** argv)
{
IDirectFB *dfb;
IDirectFBSurface *primary;
IDirectFBDisplayLayer *layer;
IDirectFBVideoProvider *vid;
DirectFBInit(&argc, &argv);
DirectFBCreate(&dfb);
dfb->SetCooperativeLevel(dfb, DFSCL_EXCLUSIVE);
dfb->GetDisplayLayer(dfb, DLID_PRIMARY, &layer);
layer->GetSurface(layer, &primary);
dfb->CreateVideoProvider(dfb, argv[1], &vid);
vid->PlayTo(vid, primary, NULL, frame_callback, primary);
sleep(150);
primary->Release(primary);
dfb->Release(dfb);
return 42;
}
int frame_callback(void * ctx)
{
IDirectFBSurface * surf = (IDirectFBSurface *)ctx;
surf->Flip(surf, 0, DSFLIP_ONSYNC);
}
Now, despite the perhaps bad quality of my code, this does play files
from disk. The odd thing comes when I try to play /dev/video0. When I
have Video4Linux2 disabled, I get an error noting that VIDIOCAPTURE
failed, and when I use Video4Linux2 I am told that there is a bad
file descriptor somewhere. However, df_window doesn't have any
problem with the video device, nor does dfbsee or df_video. So I hope
someone can point out where I'm being plain foolish. :)
cheers,
Roel
_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev