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

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 조회 수

NAND flash 에서의 XIP ? [5]

[질문] CD롬을 제거하면 부팅이 안된다...?!!! 이런 경우 보신분 ... [6]

[완료]] SDL 폰트에 관한질문 [3]

[질문]SDL display부분에 대해서 질문요... [5]

(요청)터치칩 구할 수 있을까요? [1]

[완료] 이솝 3차보드와 JTAGProbe 로 디버깅 하시는분~ [2]

[완료] 이솝 3차보드의 메모리맵은 어떻게 되나요? [2]

[완료] 완전 초짜의 질문 GPIO는 어디서 뽑을지.. [3]

염치없지만 PCB DATA 파일을 공개하실수 있나요 [2]

[완료] 2440 시리얼통신.. [2]

[질문]LAN91x 커널 패닉(S3C2440/2.4.20 커널) [4]

[완료] 윤덕배님~ H-JTAG 질문 하나 있는데요~ [2]

[완료]아래 케이스공구건 어떻게 된건지요? [1]

[완료] USB slave [2]

[질문]lx vga driver 관련. [2]

[완료]makefile 질문입니다. [3]

[질문] 동영상 재생시 너무 느립니다. [4]

[질문]memset, mmap, memcpy에 대해서 질문 있습니다. [5]

[완료] Slackware 11.0 어디서 구하나요... [2]

[완료] 제온 서버 사용 가능 여부 [2]

사용자 로그인