>> Read No. 1449 article  
Philips WebCam 장비와 xawtv, webcam 프로그램 사용하기

등록 2001-07-13 17:12:00     조회 5
이름 lethean    

Philips WebCam 드라이버가 리눅스 커널 2.4.6에 기본으로 포함되어 있는데
여러가지 이유로 프로그램과 주고받는 스트림형식이 틀려져서 기존의
linux4video나 bttv를 지원하는 많은 프로그램들이 실행이 안됩니다.
 장치를 사용하기 위해서는 드라이버 개발자가 직접 만든 프로그램으로만
가능한데(camstream) 이 프로그램의 단점이 항상 창을 띄어놓아야 한다는 것과
(최소화 시켜도 안됩니다), CPU 리소스를 많이 먹는다는 점입니다.
 그래서 단순히 웹캠을 테스트하기 위해 xawtv와 같은 개발자가 만든 webcam
프로그램을 사용하기 위해 약간의 패치를 했습니다.
큰 건 없고 yuv420p 형식을 rgb24 형식으로 변환하는 함수를
추가해준 것 뿐입니다.
 현재 저희 연구실에서 잘 사용하고 있습니다... emoticon;
(필립스 베스타 프로인데... 정말 화질 괜찮군요...)
 다음은 패치 내용입니다.
  diff -uNr xawtv-3.55.orig/libng/color_yuv2rgb.c xawtv-3.55/libng/color_yuv2rgb.c
--- xawtv-3.55.orig/libng/color_yuv2rgb.c	Wed May 30 16:32:15 2001
+++ xawtv-3.55/libng/color_yuv2rgb.c	Fri Jul 13 14:56:02 2001
@@ -191,6 +191,40 @@
     }
 }
 
+static void
+yuv420p_to_rgb24(void *h, struct ng_video_buf *out, struct ng_video_buf *in)
+{
+    unsigned char *y,*u,*v, *_u, *_v;
+    unsigned char *dp,*d;
+    int i,j,gray;
+
+    dp = out->data;
+    y  = in->data;
+    u  = y + in->fmt.width * in->fmt.height;
+    v  = u + in->fmt.width * in->fmt.height / 4;
+
+    for (i = 0; i < in->fmt.height; i++) {
+	d = dp;
+	_u = u; _v = v;
+	for (j = 0; j < in->fmt.width; j+= 2) {
+	    gray   = GRAY(*y);
+	    *(d++) = RED(gray,*_v);
+	    *(d++) = GREEN(gray,*_v,*_u);
+	    *(d++) = BLUE(gray,*_u);
+	    y++;
+	    gray   = GRAY(*y);
+	    *(d++) = RED(gray,*_v);
+	    *(d++) = GREEN(gray,*_v,*_u);
+	    *(d++) = BLUE(gray,*_u);
+	    y++; _u++; _v++;
+	}
+	if (i % 2) {
+		u = _u; v = _v;
+	}
+	dp += out->fmt.bytesperline;
+    }
+}
+
 void
 ng_yuv422p_to_lut2(void *h, struct ng_video_buf *out, struct ng_video_buf *in)
 {
@@ -275,6 +309,12 @@
 	fini:           ng_conv_nop_fini,
 	frame:          yuv422p_to_rgb24,
 	fmtid_in:	VIDEO_YUV422P,
+	fmtid_out:	VIDEO_RGB24,
+    },{
+	init:           ng_conv_nop_init,
+	fini:           ng_conv_nop_fini,
+	frame:          yuv420p_to_rgb24,
+	fmtid_in:	VIDEO_YUV420P,
 	fmtid_out:	VIDEO_RGB24,
     },{
 	init:           ng_conv_nop_init,--Carpediem...emoticon
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.44 초 ] 작업시간: [ 0.1 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791045273
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.