Besides that, did you try to set up the video device? I.e. VIDIOCSCHAN,
VIDIOCSPICT, VIDIOCSWIN?
VIDIOCSCHAN,
VIDIOCSPICT, VIDIOCSWIN work fine but VIDIOCGFBUF doesn't work.Do you know how VIDIOCGFBUF works?
This is my code :
void InitCamera(void)
{
struct video_picture pict;
struct video_channel vc;
struct video_window vw;
struct video_buffer vb;
if (ioctl(fdv, VIDIOCGPICT, &pict) < 0)
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGPICT error");
}
else
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGPICT %i", pict.palette);
}
pict.palette = VIDEO_PALETTE_YUV420P;
if (ioctl(fdv, VIDIOCSPICT, &pict) < 0)
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCSPICT error");
}
else
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCSPICT %i", pict.palette);
}
vc.channel = 0;
if (ioctl(fdv, VIDIOCGCHAN, &vc) < 0)
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGCHAN error");
}
else
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGCHAN ok (is camera = %i)", (vc.type & VIDEO_TYPE_CAMERA) != 0);
}
if (ioctl(fdv, VIDIOCGWIN, &vw) < 0)
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGWIN error");
}
else
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGWIN x=%i y=%i w=%i h=%i", vw.x, vw.y, vw.width, vw.height);
}
if (ioctl(fdv, VIDIOCSWIN, &vw) < 0)
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCSWIN error");
}
else
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCSWIN x=%i y=%i w=%i h=%i", vw.x, vw.y, vw.width, vw.height);
}
//vb.base = malloc(vw.width * vw.height * 2);
memset(&vb,0,sizeof(vb));
vb.width = vw.width;
vb.height = vw.height;
vb.base = malloc (vb.width * vb.height * 4);
vb.bytesperline = vb.width;
if (ioctl(fdv, VIDIOCGFBUF, &vb) < 0)
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGFBUF error");
}
else
{
__android_log_print(ANDROID_LOG_VERBOSE, TAG, "VIDIOCGFBUF ptr=%x bytesperline=%i size=%ix%i", vb.base, vb.bytesperline, vb.width, vb.height);
}
}
This is the output :
V/LowLevelActivity(11367): VIDIOCGPICT 8
V/LowLevelActivity(11367): VIDIOCSPICT 15
V/LowLevelActivity(11367): VIDIOCGCHAN ok (is camera = 1)
V/LowLevelActivity(11367): VIDIOCGWIN x=0 y=0 w=320 h=240
V/LowLevelActivity(11367): VIDIOCSWIN x=0 y=0 w=320 h=240
V/LowLevelActivity(11367): VIDIOCGFBUF error