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

요즘 lx800공제땜에 수고가 많으십니다...

몇일 동안 시간나는 동안 짬짬히 해보는데요..
생각보다 잘 안돼네요...

웹캠용 SDL어플리케이션인데요..(spcaview.c)
최현진님이 올려주신 걸로 다시 컴파일하고
이것저것 수정해서 초기화는 된거 같습니다.
Initializing SDL.
480x272x16
SDL initialized.

근데 웹캠에서 데이터를 받아와서 그 내용을
lcd에 뿌려주는 부분에서 사이즈와bpp를 변경하니까
--------------------------------------------------------------------
if (ioctl (fd, VIDIOCSYNC, &ff) < 0) {
   perror ("cvsync errn");
}
--------------------------------------------------------------------
void resize16 (unsigned char *dst,unsigned char *src, int Wd,int Hd,int Ws,int Hs)
{
        int rx,ry;
        int xscale,yscale;
        int x,y;
        Myrgb24 pixel;
        Myrgb16 *output =(Myrgb16*) dst ;
        Myrgb24 *input = (Myrgb24*) src ;

        xscale =  (Ws << 16)/Wd;
        yscale = (Hs << 16)/ Hd;

        for (y = 0; y < Hd; y++){
                for (x = 0; x < Wd; x++){
                 rx = x*xscale >> 16;
                 ry = y*yscale >> 16;
                 output->blue = input[ADDRESSE((int)rx,(int)ry,Ws)].blue >> 3;
                 output->green = input[ADDRESSE((int)rx,(int)ry,Ws)].green >> 2;
                 output->red = input[ADDRESSE((int)rx,(int)ry,Ws)].red >> 3;
                 output++ ;

                }
        }
}
--------------------------------------------------------------------
두 부분에서 에러가 납니다.
어느부분이 잘못된지 알수 있을까요?
그리고 사이즈와 bpp는 480X272X16보다 작으면
괜찮은가요?

고현철

2007.05.18 00:15:01
*.187.46.99

size는 작아야 할 듯 하고요.

위의 함수는 scale과 24bpp를 16bpp로 변환하는 함수인 듯 한데
정확히 어떤 에러인지 알 수 있을까요?

함수 상으로는 큰 문제는 없어보입니다만....

이태간

2007.05.18 02:18:14
*.163.45.91

사이즈를 320X240으로 하면 cvsync err는 안나오고요..
480X272로 하면은
cvsync err가 나오고 Invalid argument가 뜹니다.

그리고 printf문으로 이중 for문을 찍어봤는데요..
숫자가 증가하다가 y=188 x=253
Segmentation fault 에러가 납니다.

고현철

2007.05.18 02:25:20
*.187.46.99

처음것은 받아들이는 쪽이니 320x240이 정상일 듯 싶고요.

480x272는 display쪽이니, resize하지말고 320x240만 뿌려보시기 바랍니다.
segmentation fault의 경우는 영상데이터 버퍼의 크기를 확인해보셔야 할 듯 하네요.

아마도 입력이 꽤 작지 않나 생각이 듭니다.

resize16의 입력을 어떻게 주셨는지 잘 모르겠네요.
보통 이런 경우는 입력영상이 실제로는 작은데, 그 보다 크게 인자값을 준 경우입니다.

그래서 loop를 돌다가 메모리가 잡히지 않은 영역을 access해서 segmentation fault
가 나지 않나 싶네요...

이태간

2007.05.18 09:13:02
*.148.89.98

답변 감사합니다.

오늘도 회사가서 짬내서 해볼려고 합니다.

수고하세요...

이태간

2007.05.19 02:22:14
*.163.45.91

프로그램이 mmap을 사용 안할 경우는 lcd에 화면을 안 뿌려주고

jpg나avi로 저장하면 저장은 됩니다.

근데 mmap으로 하면은 에러가 발생합니다..

의심이 가는 부분을 적어봤는데요..

memset (&videombuf, 0, sizeof (videombuf));
struct video_mbuf videombuf;
videombuf size가 614416입니다.

unsigned char *pFramebuffer;
pFramebuffer =
(unsigned char *) mmap (0, videombuf.size,
PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);

unsigned char *tmp = NULL;
tmp = (unsigned char*)malloc (frame_size);
frame_size=240x320x3입니다.

memcpy (tmp, pFramebuffer + videombuf.offsets[vmmap.frame],
frame_size)<0);

이부분을 타면 에러가 발생하는데 어디가 잘못된지 알수 있을까요?

List of Articles
번호 제목 글쓴이 날짜sort 조회 수
5668 NAND flash 에서의 XIP ? [5] 유형목 2007-05-17 816
5667 [질문] CD롬을 제거하면 부팅이 안된다...?!!! 이런 경우 보신분 ... [6] 임장욱 2007-05-17 3145
5666 [완료]] SDL 폰트에 관한질문 [3] 문철민 2007-05-17 757
» [질문]SDL display부분에 대해서 질문요... [5] 이태간 2007-05-17 802
5664 (요청)터치칩 구할 수 있을까요? [1] 문진호 2007-05-18 2447
5663 [완료] 이솝 3차보드와 JTAGProbe 로 디버깅 하시는분~ [2] 이재명 2007-05-18 1016
5662 [완료] 이솝 3차보드의 메모리맵은 어떻게 되나요? [2] 이재명 2007-05-18 771
5661 [완료] 완전 초짜의 질문 GPIO는 어디서 뽑을지.. [3] 오주열 2007-05-18 2840
5660 염치없지만 PCB DATA 파일을 공개하실수 있나요 [2] 정인수 2007-05-18 3791
5659 [완료] 2440 시리얼통신.. [2] 김민철 2007-05-19 858
5658 [질문]LAN91x 커널 패닉(S3C2440/2.4.20 커널) [4] 김현기 2007-05-19 1185
5657 [완료] 윤덕배님~ H-JTAG 질문 하나 있는데요~ [2] 이재명 2007-05-19 1048
5656 [완료]아래 케이스공구건 어떻게 된건지요? [1] 최재혁 2007-05-19 714
5655 [완료] USB slave [2] 김증일 2007-05-19 2447
5654 [질문]lx vga driver 관련. [2] 류영렬 2007-05-19 2530
5653 [완료]makefile 질문입니다. [3] 서두원 2007-05-21 878
5652 [질문] 동영상 재생시 너무 느립니다. [4] 강덕하 2007-05-21 3080
5651 [질문]memset, mmap, memcpy에 대해서 질문 있습니다. [5] 이태간 2007-05-22 45348
5650 [완료] Slackware 11.0 어디서 구하나요... [2] 김영곤 2007-05-22 2510
5649 [완료] 제온 서버 사용 가능 여부 [2] 김유석 2007-05-22 869

사용자 로그인