It looks like you are capturing frames Willem
Torsten Spindler wrote: >On Tue, 2007-04-12 at 08:53 +0100, Ilyes Gouta wrote: >... > > >>Could you unload the driver (rmmod), quit the application and try again (i.e >>insmod the driver again and execute >>LiveCam)? I'm aware of this issue in the driver, and I got the same behavior >>with my previous test application, >>v4l2dumper.c . >> >> > >I tried this, but no change. The only change I eventually got was that >the status line reports 'BisonCam @ X FPS', with X between 25 and 28. > >Thanks, >Torsten > > > > >>BR, >>Ilyes Gouta. >> >>Torsten Spindler wrote: >> >> >>>When I open LiveCam and select Capture, the application hangs. The >>>bottom status line read 'BisonCam @ 0 FPS'. >>> >>>Bye, >>>Torsten >>> >>> >>>On Sun, 2007-02-12 at 15:13 +0100, Ilyes Gouta wrote: >>> >>> >>>>Hi Fellow, >>>> >>>>I updated the m5602-ov9560-2 and livecam branches yesterday and I was >>>>wondering if you guys could give it a shot just to see if you can get >>>>something (using livecam, bayer stream only) from your sensors. >>>> >>>>Just to recall it a bit, you can check out your livecam from the >>>>following URL: >>>> >>>>https://livecam.svn.sourceforge.net/svnroot/livecam/trunk >>>> >>>>LiveCam has the ability to alter the pitch of the pictures on the fly. >>>>The option is available through Debug | Adjust Pitch, from the >>>>application's menu. >>>> >>>>Waiting for your reports. >>>> >>>>BR, >>>>Ilyes Gouta. >>>> >>>>------------------------------------------------------------------------- >>>>SF.Net email is sponsored by: The Future of Linux Business White Paper >>>>from Novell. From the desktop to the data center, Linux is going >>>>mainstream. Let it simplify your IT future. >>>>http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 >>>>_______________________________________________ >>>>M560x-driver-devel mailing list >>>>[email protected] >>>>https://lists.sourceforge.net/lists/listinfo/m560x-driver-devel >>>> >>>> >>> >>> >>plain text document attachment (v4l2dumper.c) >>/*************************************************************************** >> * Copyright (C) 2006 by Ilyes Gouta * >> * [EMAIL PROTECTED] * >> * * >> * This program is free software; you can redistribute it and/or modify * >> * it under the terms of the GNU General Public License as published by * >> * the Free Software Foundation; either version 2 of the License, or * >> * (at your option) any later version. * >> * * >> * This program is distributed in the hope that it will be useful, * >> * but WITHOUT ANY WARRANTY; without even the implied warranty of * >> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * >> * GNU General Public License for more details. * >> * * >> * You should have received a copy of the GNU General Public License * >> * along with this program; if not, write to the * >> * Free Software Foundation, Inc., * >> * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * >> ***************************************************************************/ >> >>#include <stdio.h> >>#include <stdlib.h> >>#include <string.h> >>#include <fcntl.h> >>#include <time.h> >> >>#include <sys/time.h> >>#include <sys/stat.h> >>#include <sys/ioctl.h> >>#include <sys/mman.h> >> >>#undef __STRICT_ANSI__ >>#include <linux/types.h> >>#include <linux/videodev2.h> >> >>#include <pthread.h> >> >>#define CAPTURE_BUFFERS 32 >> >>static int fd; >>static volatile int bCapture; >>static pthread_t hThread; >> >>static struct v4l2_buffer *pBuffers; >>static struct v4l2_format fmt; >>static unsigned char **pRawData; >> >>static char* pFNPrefix; >> >>void* WorkerThread(void* pData) >>{ >> struct v4l2_buffer buffer; >> struct timespec req, rem; >> char filename[256]; >> int count = 0; >> FILE *hFile; >> >> while (bCapture) >> { >> buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> if (ioctl(fd, VIDIOC_DQBUF, &buffer) >= 0) >> { >> sprintf(filename, "%s%d.raw", pFNPrefix, count); >> printf("dumping frame %d (buffer index: %d) in %s\n", count, >> buffer.index, filename); >> >> hFile = fopen(filename, "wb"); >> fwrite(pRawData[buffer.index], 1, fmt.fmt.pix.sizeimage, hFile); >> fclose(hFile); >> >> count++; >> if (!bCapture) break; >> >> buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> ioctl(fd, VIDIOC_QBUF, &buffer); >> } else { >> printf("VIDIOC_DQBUF failed.\n"); >> } >> >> /* wait for 30 ms */ >> req.tv_sec = 0; >> req.tv_nsec = 33000000; >> nanosleep(&req, &rem); >> } >> >> return NULL; >>} >> >>void initialize() >>{ >> fd = -1; >> pBuffers = (struct v4l2_buffer*)malloc(CAPTURE_BUFFERS * sizeof(struct >> v4l2_buffer)); >> pRawData = (unsigned char**)malloc(CAPTURE_BUFFERS * sizeof(unsigned >> char*)); >>} >> >>void finalize() >>{ >> if (pBuffers) free(pBuffers); >> if (pRawData) free(pRawData); >> >> pBuffers = NULL; >> pRawData = NULL; >>} >> >>int start(char* devname) >>{ >> struct v4l2_capability caps; >> struct v4l2_requestbuffers request; >> int i, type, result; >> >> fd = open(devname, O_RDWR); >> if (fd == -1) return 0; >> >> if (ioctl(fd, VIDIOC_QUERYCAP, &caps) == -1) { >> close(fd); fd = -1; >> return 0; >> } >> >> printf("device name: %s\n", (char*)caps.card); >> >> if (!(caps.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { >> close(fd); fd = -1; >> printf("device doesn't support V4L2.\n"); >> return 0; >> } >> >> fcntl(fd, F_SETFD, FD_CLOEXEC); >> >> fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> fmt.fmt.pix.width = 640; >> fmt.fmt.pix.height = 480; >> fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8; >> >> result = ioctl(fd, VIDIOC_TRY_FMT, &fmt); >> if (result < 0) { >> printf("VIDIOC_TRY_FMT failed.\n"); >> } >> >> printf("picture size: %d\n", fmt.fmt.pix.sizeimage); >> >> /* set the capture format */ >> if (ioctl(fd, VIDIOC_S_FMT, &fmt) == -1) { >> close(fd); fd = -1; >> printf("device doesn't support this capture format.\n"); >> return 0; >> } >> >> memset(&request, 0, sizeof(struct v4l2_requestbuffers)); >> >> request.count = CAPTURE_BUFFERS; >> request.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> request.memory = V4L2_MEMORY_MMAP; >> >> /* set the type of the capture */ >> if (ioctl(fd, VIDIOC_REQBUFS, &request) == -1) { >> close(fd); fd = -1; >> printf("VIDIOC_REQBUFS failed.\n"); >> return 0; >> } >> >> for (i = 0; i < CAPTURE_BUFFERS; i++) >> { >> memset(&pBuffers[i], 0, sizeof(struct v4l2_buffer)); >> >> pBuffers[i].index = i; >> pBuffers[i].type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> pBuffers[i].memory = V4L2_MEMORY_MMAP; >> >> if (ioctl(fd, VIDIOC_QUERYBUF, &pBuffers[i], 0)) { >> close(fd); fd = -1; >> printf("VIDIOC_QUERYBUF failed.\n"); >> return 0; >> } >> >> /* obtain a userspace pointer on the capture buffer */ >> void *pData = mmap(NULL, pBuffers[i].length, PROT_READ | PROT_WRITE, >> MAP_SHARED, fd, pBuffers[i].m.offset); >> if (pData == (void*)-1) { >> close(fd); fd = -1; >> printf("mmap failed. buffer length: %d, offset:0x%x\n", >> pBuffers[i].length, pBuffers[i].m.offset); >> return 0; >> } >> >> pRawData[i] = (unsigned char*)pData; >> } >> >> /* queue the buffers for capture*/ >> for (i = 0; i < CAPTURE_BUFFERS; i++) { >> ioctl(fd, VIDIOC_QBUF, &pBuffers[i]); >> } >> >> /* start the capture */ >> type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> if (ioctl(fd, VIDIOC_STREAMON, &type) == -1) { >> close(fd); fd = -1; >> printf("failed starting capture.\n"); >> return 0; >> } >> >> bCapture = 1; >> if (pthread_create(&hThread, NULL, WorkerThread, NULL)) { >> close(fd); fd = -1; >> return 0; >> } >> >> return 1; >>} >> >>void stop() >>{ >> if (fd == -1) return; >> >> bCapture = 0; >> >> /* stop the capture */ >> int type = V4L2_BUF_TYPE_VIDEO_CAPTURE; >> ioctl(fd, VIDIOC_STREAMOFF, &type); >> >> pthread_join(hThread, NULL); >> close(fd); fd = -1; >>} >> >>int main(int argc, char** argv) >>{ >> if (argc != 2) { >> printf("usage:\n\t$ v4l2dumper <filename prefix>\n"); >> return 0; >> } >> >> pFNPrefix = argv[1]; >> >> initialize(); >> >> if (start("/dev/video0")) { >> sleep(3); >> stop(); >> } >> >> finalize(); >> return 0; >>} >> >> > > >------------------------------------------------------------------------- >SF.Net email is sponsored by: The Future of Linux Business White Paper >from Novell. From the desktop to the data center, Linux is going >mainstream. Let it simplify your IT future. >http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 >_______________________________________________ >M560x-driver-devel mailing list >[email protected] >https://lists.sourceforge.net/lists/listinfo/m560x-driver-devel > > > > ------------------------------------------------------------------------- SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 _______________________________________________ M560x-driver-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/m560x-driver-devel
