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

Reply via email to