기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

webcam 어플리케이션인 spcaview프로그램에서

이상한 부분이 있어서 물어볼려고 합니다.

struct video_mbuf videombuf;

memset(&videombuf, 0, sizeof(videombuf));
여기서 printf문으로 sizeof(videombuf)를 찍어봤더니
136이 나왔습니다.

videombuf.size = 614416;
unsigned char *pFramebuffer;

pFramebuffer = (unsigned char *) mmap (0,
                                                       videombuf.size,
                                    PROT_READ | PROT_WRITE,
                                    MAP_SHARED, fd, 0);
-------------------------------------------------------------------
여기까지가 웹캠에서 데이터를 읽어오는 부분을 셋팅한거 같습니다.

frame_size=240x320=76800;
tmp = (unsigned char*)malloc (frame_size);

memset(tmp, 0x00, frame_size);

memcpy (tmp,
        pFramebuffer +videombuf.offsets[vmmap.frame],
        frame_size);
--------------------------------------------------------------------
여기가 웹캠 데이터를 tmp에 저장하는 부분인 것 같습니다.

그리고 최종으로 나중에 refresh_screen함수를 호출합니다.

SDL_Surface *pscreen;
p=pscreen->pixels;
image_width=320;
image_height=240;
owidth=320;
oheight=240;
image_width*image_height*bpp=320x240x3;

refresh_screen ( tmp,
                       p,
                       format,
                       image_width,
                       image_height,
                       owidth,
                       oheight,
                       image_width*image_height*bpp,
                       autobright);

프로그램을 실행할때 memset,mmap,memcpy를 사용하지않고
직접적으로 read함수를 호출해서 사용하면 이미지와 영상은 저장됩니다.

제가 size값을 이리 저리 바꾸어도 않되는데요..
혹시 감이 가시는 부분이 있나요?
답변 부탁드립니다.

수고하세요...

고현철

2007.05.22 03:25:18
*.70.26.87

mmap을 이용해서 제어하시려면(즉, read하시려는 듯 한데)
실제 video buf의 데이터 영역을 읽어야 합니다.

structure로 읽으면 해당 영역을 접근 못하게 될 듯 한데요.
즉, 136 bytes mmap()되어 버려서, 실제 데이터에는 접근을 못할 듯 보여집니다....

코드 내용을 잘 모르니...허접한 답변만.....쩝...

이태간

2007.05.22 18:40:49
*.163.45.91

제가 videombuf.size로 mmap을 해주니까 세그멘테이션 에러가 나더라고요.

파일을 첨부하니까 한번 봐주세요....

수고하세요...

고현철

2007.05.22 22:42:19
*.70.26.87

videombuf.size 가 얼마되는지 모르겠네요.....

mmap은 아마도 v4l driver에서 구현이 되어 잇을텐데, 커널 메모리가 모자를 경우도
이런 케이스가 발생하고요. size에 알맞는...

코드 상으로는 큰 문제는 없어보입니다. device의 세팅이나, 커널상의 메모리 문제일지도
모르겠다는 생각은 드는데,

장비가 없으니....쩝......답하기가 난감하네요....

이태간

2007.05.22 23:45:01
*.163.45.91

답변 감사합니다.

videombuf.size가 614416입니다.

이걸 반으로 쪼개서 읽는것 같은데요..

암튼 아직 초보인 저에게 힘드네요...

고현철

2007.05.24 06:21:19
*.187.44.98

spcaview를 카메라 붙여서 함 돌려봐야겠네요.....--;
List of Articles
번호 제목 글쓴이 날짜 조회 수sort

사용자 로그인