도와주세요!!
글 수 15,339
2007.01.16 19:48:23 (*.67.223.100)
6693
수고많으십니다.
다름이 아니오라 cmos 카메라에 대해 문의 드릴게 있는데요..
CD에 있는 드라이버 및 예제 소스를 테스트 하는 중에
정상적으로 작동하지 않아서 몇가지 여쭤 볼게 있습니다.
H/W 결함인지 S/W적인 결함이 알수가 없네요..
암튼 제가 여러가지 했던 작업과 궁금한 부분에 대해 질문 드리겠습니다.
원본 CD에 있는 드라이버 파일 및 소스 파일을 실행하게 되면
'jpeg image error' 란 에러가 발생합니다.
해당 소스의 capture_process() 함수에서..
----------------------------------------------------------------------------------------------------------------------------
if(( endmark[image_size/2 - 1] == 0xFFD9 ) || ( endmark[image_size/2 - 1] == 0xD9FF ) )
{
if( file_mode )
{
fp = fopen( filename, "w+" );
if( fp != NULL )
{
fwrite( g_buff, 1, image_size, fp );
fclose( fp );
exit(0);
}
}
else
{
send_tcp( view_ip, VIEW_PORT, (char *) g_buff, image_size );
}
}
else
{
printf( "jpeg image errorn" );
printf( "start mark %04Xn", endmark[0] );
printf( "end mark %04Xn", endmark[image_size/2 - 1] );
}
----------------------------------------------------------------------------------------------------------------------------
그렙한 raw 데이터 크기를 얻어오는 함수
image_size = ecs_get_jpeg_image_size( ecs_handle ); 를 통해서 얻어온
image_size의 크기는 7520 에서 7542 정도 나오고 (ECSM_320X240_YUV으로 설정 시..)
endmark[image_size/2 - 1]의 값을 출력 해보면 0xA884에서 0x9f7f 사이 값이
나옵니다. (대략..)
if문에 있는 endmark값이 0xFFD9나 0x09FF와 같아야 하는것은 한 프레임의
끝을 나타내기 때문인가요? 조건문 안의 FFD9나 09FF값을 충족하지 못하기 때문에 계속
jpeg image error만 실행 되네요..
그래서 첫번째 if문의 조건을 없애고 Jpeg 이미지를 만들어 봤습니다.
역시나 정상적인 이미지가 나오지 않더군요.
다시 YUV를 RGB로 바꾸어 설정한 후 BMP 포멧으로 만들어도 마찬가지 입니다.
정상적으로 한 프레임씩 그렙한 데이터가 아닌것으로 판단이 되기는 하지만
확실치않아 질문 드립니다.
컴파일 잘못인가 해서 컴파일 옵션에 -ljpeg 옵션과 램디스크에 jpeg 라이브러리를 구성한 후
그림파일을 살펴봐도 같은 현상이 나옵니다.
cmos 카메라를 연결하지 않고 insmod를 하면 count값이 0이 나오고 연결 후 엔 count 값이 1이
나오긴 하네요.
정확히 어느 부분이 잘못되었는지 조언 부탁드립니다.
---------------------------------- 추가부분입니다.
소스에 ecs api 부분이 있더군요.. 거기에 나와있는 api를 이용하여
리턴값들을 살펴보았는데요..
ecs_set_mode = 0
ecs_caputer =0
ecs_convert_jpeg =0
ecs_end_checks =1
등.. 이렇게 나옵니다. 설명데로라면 리턴값들은 정상이네요..
무엇이 잘못되었을까요..?
다름이 아니오라 cmos 카메라에 대해 문의 드릴게 있는데요..
CD에 있는 드라이버 및 예제 소스를 테스트 하는 중에
정상적으로 작동하지 않아서 몇가지 여쭤 볼게 있습니다.
H/W 결함인지 S/W적인 결함이 알수가 없네요..
암튼 제가 여러가지 했던 작업과 궁금한 부분에 대해 질문 드리겠습니다.
원본 CD에 있는 드라이버 파일 및 소스 파일을 실행하게 되면
'jpeg image error' 란 에러가 발생합니다.
해당 소스의 capture_process() 함수에서..
----------------------------------------------------------------------------------------------------------------------------
if(( endmark[image_size/2 - 1] == 0xFFD9 ) || ( endmark[image_size/2 - 1] == 0xD9FF ) )
{
if( file_mode )
{
fp = fopen( filename, "w+" );
if( fp != NULL )
{
fwrite( g_buff, 1, image_size, fp );
fclose( fp );
exit(0);
}
}
else
{
send_tcp( view_ip, VIEW_PORT, (char *) g_buff, image_size );
}
}
else
{
printf( "jpeg image errorn" );
printf( "start mark %04Xn", endmark[0] );
printf( "end mark %04Xn", endmark[image_size/2 - 1] );
}
----------------------------------------------------------------------------------------------------------------------------
그렙한 raw 데이터 크기를 얻어오는 함수
image_size = ecs_get_jpeg_image_size( ecs_handle ); 를 통해서 얻어온
image_size의 크기는 7520 에서 7542 정도 나오고 (ECSM_320X240_YUV으로 설정 시..)
endmark[image_size/2 - 1]의 값을 출력 해보면 0xA884에서 0x9f7f 사이 값이
나옵니다. (대략..)
if문에 있는 endmark값이 0xFFD9나 0x09FF와 같아야 하는것은 한 프레임의
끝을 나타내기 때문인가요? 조건문 안의 FFD9나 09FF값을 충족하지 못하기 때문에 계속
jpeg image error만 실행 되네요..
그래서 첫번째 if문의 조건을 없애고 Jpeg 이미지를 만들어 봤습니다.
역시나 정상적인 이미지가 나오지 않더군요.
다시 YUV를 RGB로 바꾸어 설정한 후 BMP 포멧으로 만들어도 마찬가지 입니다.
정상적으로 한 프레임씩 그렙한 데이터가 아닌것으로 판단이 되기는 하지만
확실치않아 질문 드립니다.
컴파일 잘못인가 해서 컴파일 옵션에 -ljpeg 옵션과 램디스크에 jpeg 라이브러리를 구성한 후
그림파일을 살펴봐도 같은 현상이 나옵니다.
cmos 카메라를 연결하지 않고 insmod를 하면 count값이 0이 나오고 연결 후 엔 count 값이 1이
나오긴 하네요.
정확히 어느 부분이 잘못되었는지 조언 부탁드립니다.
---------------------------------- 추가부분입니다.
소스에 ecs api 부분이 있더군요.. 거기에 나와있는 api를 이용하여
리턴값들을 살펴보았는데요..
ecs_set_mode = 0
ecs_caputer =0
ecs_convert_jpeg =0
ecs_end_checks =1
등.. 이렇게 나옵니다. 설명데로라면 리턴값들은 정상이네요..
무엇이 잘못되었을까요..?