Korea FreeBSD Users Group News, Internal, Projects, Home
Software, Support, Documentation

Re: [KFUG] 5.2R pcm audio



[ ³¯Â¥¼ø »öÀÎ ] [ ´ñ±Û¼ø »öÀÎ ] [ ÃÖ»óÀ§ »öÀÎ] [ °Ë»ö]

[ÀÌÀü ±Û] [´ÙÀ½ ±Û] [ÀÌÀü ´ñ±Û] [´ÙÀ½ ´ñ±Û]


On Fri, Jan 16, 2004 at 06:03:06PM +0900, To questions@xxxxxxxxxxxxxx wrote:
 > 
 > 두가지 문제중 후자는 해결된것 같습니다. 전자의 경우는 수정은 가능한데
 > 프로그램특성에 따라서 다른 영향을 미칠것 같아서 일단 그대로 두기로
 > 했습니다. pcm의 buffering이 너무 복잡해서 제대로 이해하지 못한관계로
 > 완벽한 해결책은 아니지만 적어도 xmms에서 곡을 변경하거나 할경우에
 > 더 이상 1초의 지연은 발생하지 않습니다.
 > 시간이 좀 더 나면 pcm code를 보면서 수정해야 겠지만 pf 유지가 더
 > 우선이라 장담은 못하겠습니다.
 > 
 > #cd /usr/src
 > #patch -p0 < /path/to/pcm.patch
 > 그리고 일반적인 커널빌드 절차를 밟으면 되겠습니다. 모듈로 사용하시
 > 는 분은 빌드 후 kldunload로 pcm module과 sound hardware module을
 > unload한 후 다시 로드하면 별도의 리부팅이 필요없습니다.
 > 
 > * 주의
 >  - 이 패치는 5.2R 전용입니다.(아마도 -CURRENT도 적용될겁니다.)
 >  - 이 패치는 많은 환경에서 시험되지 않았습니다. 저의 경우 xmms에서만
 >    시험했기 때문에 mplayer나 mpg123, aviplayer등에서의 동작은 
 >    아직 모릅니다.
 >  - 문제가 발생하면 이전버젼으로 돌아갈 수 있도록 반드시 파일을
 >    백업하고 patch하시기 바랍니다.
 > 
제가 너무 성급하게 patch를 보낸것 같습니다. 진짜 patch는 다음과
같습니다. 만일 이전 patch를 적용했다면 channel.c를 원상태로 돌리고
다음 patch를 적용하시기 바랍니다.
제가 언급한 두가지 문제 모두 해결되었습니다.
원인은 lock을 하지않은것과 DSP를 reset할때 buffering된 data를 clear
하지 않은데 있는것 같습니다. 시험해보시고 문제가 없다면 multimedia@
나 current@에 알리도록 하겠습니다.
DSP RESET시에 lock을 하지 않았는데 이제까지 동작한게 신기하군요.

#cd /usr/src
#patch -p0 < /path/to/pcm.patch2
저는 fix했다고 생각하지만 혹시 부작용이 생기면 메일주시기 바랍니다.
-- 
Pyun YongHyeon <http://www.kr.freebsd.org/~yongari>
--- sys/dev/sound/pcm/dsp.c.ORG	Tue Nov 11 14:38:28 2003
+++ sys/dev/sound/pcm/dsp.c	Fri Jan 16 20:21:27 2004
@@ -664,10 +664,18 @@
 
     	case SNDCTL_DSP_RESET:
 		DEB(printf("dsp reset\n"));
-		if (wrch)
+		if (wrch) {
+			CHN_LOCK(wrch);
 			chn_abort(wrch);
-		if (rdch)
+			chn_resetbuf(wrch);
+			CHN_UNLOCK(wrch);
+		}
+		if (rdch) {
+			CHN_LOCK(rdch);
 			chn_abort(rdch);
+			chn_resetbuf(rdch);
+			CHN_UNLOCK(rdch);
+		}
 		break;
 
     	case SNDCTL_DSP_SYNC:
_______________________________________________
한국 FreeBSD 사용자 그룹(KFUG) questions 메일링 리스트
questions at kr.FreeBSD.org
http://www.kr.FreeBSD.org/mailman/listinfo/questions

[ ³¯Â¥¼ø »öÀÎ ] [ ´ñ±Û¼ø »öÀÎ ] [ ÃÖ»óÀ§ »öÀÎ] [ °Ë»ö]

Copyright © 1998-2005 Korea FreeBSD Users Group.
All rights reserved. webmaster at kr.FreeBSD.org
$Date: 2004/01/24 16:06:53 $
Powered by FreeBSD