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

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
6368 flow control에 관해서 여쭤 보고자 합니다. 열심히 2015-06-17 113
6367 android uenvt에 내용을 추가 했는데요 맞는 방법인가요? [1] pedor11 2015-05-20 121
6366 input device에 할당된 버튼키를 제거하고 터미널에서 키보드로 대... [1] 김민욱 2017-05-25 122
6365 camera HAL시 퍼미션을 얻을 수 있는가요? [2] 조신 2015-11-18 147
6364 압력센서 신호처리 관련하여 문의드립니다. [3] kernel_study 2016-11-03 148
6363 [apt pkg server 관련] [2] 밥줘잉 2016-10-20 150
6362 nfs 서버 구축 질문 [4] 김민욱 2017-06-10 164
6361 ACPI Shutdown Signal이 들어갈때의 동작을 변경하고 싶습니다. +... [4] 겟페우스 2017-06-08 165
6360 SoM GPIO 제어 문의 [1] 단순최고 2021-01-25 168
6359 USB GPS를 재부팅 후에도 자동으로 동작하게 하려고 합니다. [3] 겟페우스 2017-06-03 172
6358 touch screen관련 여쭤봅니다. [1] 열심히 2015-07-25 173
6357 virtualbox에 안드로이드가 잘 안도네요 [1] 더미원 2017-03-20 180
6356 2440 보드의 address 신호와 소스상의 주소를 어떻게 이해 하고 있... [2] DavidKim 2015-07-29 181
6355 i.mx6q에서 libvpu.so 라이브러리를 사용하여 link시에 undefined ... [1] 이동희 2019-08-09 182
6354 udev 를 이용하여 /dev 사용권한을 변경할수 있나요? [1] pedor11 2015-11-18 185
6353 키이벤트 관련 질문드립니다. [3] 하하호호하하 2015-10-06 188
6352 Alto 4330 보드에서 sdcard의 리눅스 커널로 부팅하는 방법 [2] 포도씨 2016-11-18 192
6351 밑의 LCD 포팅 질문드렸었는데 추가 질문이 있습니다. [2] ImYeol 2015-08-13 193
6350 check_usb_vfs("/dev/bus/usb") 에러 [1] 생생맥주 2015-01-25 200
6349 smsc9220 질문 file [2] *김종원 2015-07-24 203

사용자 로그인