Alsa 가 OSS를 완전히 대체 하지 못하는 걸까요

penguinpow의 이미지

mplayer 에서 자꾸 소리가 끊겨서
OSS 로 바꾸었더니 부드럽게 날 나오더군요

alsa의 문제점이 무엇일까요

bigpooh의 이미지

penguinpow wrote:
mplayer 에서 자꾸 소리가 끊겨서
OSS 로 바꾸었더니 부드럽게 날 나오더군요

alsa의 문제점이 무엇일까요

ALSA 로 끊겨서 커널을 재컴파일 해서 OSS 로 바꾼뒤 잘 나온다는거죠?
어떤 사운드 카드인가요? 희안하네요.

지리즈의 이미지

엄밀히 말하면 커널쪽에서는 OSS를 서서히 폐지시키고, alsa를 밀려고 하지만,
아직도 여전히 많은 어플리케이션들이 ALSA를 OSS만큼 지원해 주지 못하고 있습니다.

실제로 ALSA 자체의 문제보다는 ALSA지원문제라고 봐야할 것 같습니다.

There is no spoon. Neo from the Matrix 1999.

penguinpow의 이미지

Alsa를 지원하기위해 어플 작성할때
OSS보다 특별히 힘 들다거나 부족한 부분이 있나요?
만약 그렇다면
Alsa쪽에서 그런 걸 좀 보완하면 좋지 안을까 하는 생각이 드네요

penguinpow의 이미지

bigpooh wrote:
penguinpow wrote:
mplayer 에서 자꾸 소리가 끊겨서
OSS 로 바꾸었더니 부드럽게 날 나오더군요

alsa의 문제점이 무엇일까요

ALSA 로 끊겨서 커널을 재컴파일 해서 OSS 로 바꾼뒤 잘 나온다는거죠?
어떤 사운드 카드인가요? 희안하네요.

재컴파일을 한게 아니라
Mplayer configuration에서 OSS를 골랐죠 alsa대신에
그리고 사운드 카드는 Shuttle 베어본에 들어있는 사운드 카드거든요
Realtek으로도 잡히는 RS300 칩셋쓰는 보드죠

오만한 리눅서의 이미지

penguinpow wrote:
재컴파일을 한게 아니라
Mplayer configuration에서 OSS를 골랐죠 alsa대신에
그리고 사운드 카드는 Shuttle 베어본에 들어있는 사운드 카드거든요
Realtek으로도 잡히는 RS300 칩셋쓰는 보드죠

요즘은 OSS 드라이버 안 만들죠.

저 OSS도 ALSA드라이버의 래퍼(wrapper)입니다.

즉 원래는 ALSA드라이버인데, legacy 서포트 차원에서
OSS 인터페이스를 제공하고 있는 거에염.

생각에는
1. 모듈 설정(modprobe.conf 등)이 잘못되어 있다.
2. alsa 라이브러리 설치에 문제가 있다.
3. 드라이버에 문제가 있다.
4. mplayer컴파일에 문제가 있다.
중에 하나가 원인라고....봄.

그리고, OSS는 완전히 대체는 불가하고 생각이 드는게,
흐야므야 개발이 중지된 수많은 유용한 소프트웨어들 중에
아직도 OSS만을 지원하는 것들이 많기 때문..

하지만, 이것이 ALSA가 문제가 있다던가
아니면, OSS가 ALSA보다 좋은 점이 있다는 것을 의미하는 것은 절대 아님...

:evil: :lol:

sangwoo의 이미지

OSS의 API가 시대에 뒤떨어진다거나, ALSA의 그것이 훨씬 더 낫다거나 하는 문제도 아닙니다. 다만, 리눅스에서의 OSS 인터페이스 구현이 그다지 좋은 편이 아니었기 때문에 리눅스에서는 ALSA로 옮겨갔을 뿐이지요. 저는 아직도 포터블한 프로그램을 원한다면 OSS가 더 맞는 답일수도 있다는 생각을 하고 있습니다. :twisted:

물론 데스크탑 공개 운영체제의 주류는 아무래도 리눅스이기 때문에 요즘은 ALSA만을 지원하는 프로그램들도 좀 많더군요. 리눅스에서 ALSA의 wrapper로 OSS를 제공하는 것과 마찬가지로, 다른 플랫폼에서는 OSS의 wrapper로 ALSA의 API를 제공하는 SALSA라는 것도 있습니다.

----
Let's shut up and code.

지리즈의 이미지

OSS는 GPL이 아니라서 ALSA로 이전한 것으로 알고 있습니다.

2000년도 이전에는 리눅스에서 사운드를 들으려면, 몇몇 사운드카드들은
OSS가 거의 유일한 대안이었고, 이 또한 유료이기 때문에,
유료로 정식으로 구매한 리눅스배포본에서나 사용할 수 있거나,
아니면, 별도로 4Front Technolgies사에 유료서비스를 받아야만 했습니다.

OSS는 여전히 여러 운영체제를 위한 표준 인터페이스를 유상으로 제공하고 있으며,
더 나은 퀄리티를 원한다면, 유상서비스를 받는 것도 좋은 선택이라 할 수 있습니다.

ps.
거의 몇년만에 홈페이지에 들어가 보았는데, 예전 그대로이내요...

There is no spoon. Neo from the Matrix 1999.

랜덤여신의 이미지

제 경우에는 일부 파일들만 mplayer 에서 alsa 로 실행시켰을 경우 끊기곤 했습니다. oss 로 하면 괜찮고요.
하지만 mplayer 가 아닌 다른 플레이어들은 mplayer+alsa 에서 끊기던 파일들을 잘 읽어주었습니다.
이것으로 볼 때 alsa 의 문제가 아닌 mplayer 의 문제 같습니다.
하지만 제 경우에는 문제를 일으키는 파일들이 극소수였기 때문에, mplayer+alsa 를 써도 별로 문제가 없더군요. 가끔 끊기는 파일을 발견했을 때만 다른 플레이어로 읽거나 mplayer+oss 로 임시 전환하면 되니까...

저는 alsa 가 dmix 를 지원하기 때문에 씁니다. 제 사운드카드가 하드웨어 믹싱을 지원하지 않기 때문에, oss 로 하면 두 개 이상의 소리를 재생하지 못합니다. 그러나 alsa 는 dmix 를 이용한 소프트웨어 믹싱을 지원해서 두 개 이상의 소리를 재생할 수 있습니다.

bigpooh의 이미지

분명 ALSA 가 대세고, 훨씬 많은 기능을 제공합니다.
deprecated 된 커널의 OSS 드라이버나 상용의 OSS가 어느 정도의 기능을 제공하는지 모르겠지만 현재 ALSA 가 제공하는 수준의 기능들을 지원한다고 생각하지는 않습니다.

지금 지원하는 PCM-plugin 만 해도
http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html

보통 dmix 정도는 사용하겠지만 그 외에도 쓸만한 것들이 많습니다.

sangwoo의 이미지

지리즈 wrote:
OSS는 GPL이 아니라서 ALSA로 이전한 것으로 알고 있습니다.

2000년도 이전에는 리눅스에서 사운드를 들으려면, 몇몇 사운드카드들은
OSS가 거의 유일한 대안이었고, 이 또한 유료이기 때문에,
유료로 정식으로 구매한 리눅스배포본에서나 사용할 수 있거나,
아니면, 별도로 4Front Technolgies사에 유료서비스를 받아야만 했습니다.

OSS는 여전히 여러 운영체제를 위한 표준 인터페이스를 유상으로 제공하고 있으며,
더 나은 퀄리티를 원한다면, 유상서비스를 받는 것도 좋은 선택이라 할 수 있습니다.

ps.
거의 몇년만에 홈페이지에 들어가 보았는데, 예전 그대로이내요...

OSS를 이야기 할 때 헷갈릴 수 있는 점이 있는데, OSS라는 것은 4Front사의 유상 드라이버를 이야기하기도 하고, 4Front 사에서 발표한 사운드 시스템의 API를 이야기하기도 한다는 점입니다. 물론 API는 공개되어 있기 때문에, 만일 누군가가 이 API를 일정수준 이상 구현한다면 OSS를 염두에 두고 만든 프로그램은 호환성있게 작동하게 되는 것이지요. API 문서는 여기에 있습니다. http://www.4front-tech.com/pguide/oss.pdf

다만, 리눅스에서의 GPL'd OSS구현 (OSS/Free라고 하는군요.)은 그다지 만족스럽지 않았고, 그래서 ALSA로 넘어갔던 것으로 기억하고 있습니다. FreeBSD같은 경우는 역시 독립적으로 OSS를 구현해서 잘 사용하고 있지요.

마치 이건 리눅스에서 devfs -> udav로 넘어간 것과도 비슷하게 볼 수 있을 것 같습니다. 리눅스에서 devfs의 구현이 만족스럽지 않았을 뿐이지, devfs 자체가 개념에 문제가 있거나 낡은 체계는 아니라는 것입니다.

----
Let's shut up and code.

지리즈의 이미지

sangwoo wrote:
다만, 리눅스에서의 GPL'd OSS구현 (OSS/Free라고 하는군요.)은 그다지 만족스럽지 않았고, 그래서 ALSA로 넘어갔던 것으로 기억하고 있습니다. FreeBSD같은 경우는 역시 독립적으로 OSS를 구현해서 잘 사용하고 있지요.

그렇군요. 하지만, 유상서비스를 받는 OSS는 리눅스에서도 매우 훌륭합니다.
물론 별도의 데몬이 돌아가야 하지만...

전 ESD를 보면 OSS 생각이 납니다...

There is no spoon. Neo from the Matrix 1999.

feanor의 이미지

ALSA는 Linux-only API여서 여러 유닉스(BSD 등)에서 지원하는 OSS를 대체하기는 어려울 것 같습니다만.

--feanor

sangwoo의 이미지

그렇지만 아무래도 데스크탑 유닉스의 주류는 Linux이기 때문에 ALSA가 큰 영향력을 가지고 있다는 것은 무시할 수 없다고 생각합니다. 위에서 말씀드린 SALSA도 그런 흐름 중의 하나라고 생각됩니다.
옛날에 OSS/Free가 좀 더 잘 구현되어서, ALSA의 필요성 자체가 대두되지 않았다면 좀더 포터블한 유닉스 세상에 살 수 있었을지도 모르지만.. 어쨌든 두고봐야 알겠지요. :-)

----
Let's shut up and code.

nulluser의 이미지

랜덤여신 wrote:
제 경우에는 일부 파일들만 mplayer 에서 alsa 로 실행시켰을 경우 끊기곤 했습니다. oss 로 하면 괜찮고요.
하지만 mplayer 가 아닌 다른 플레이어들은 mplayer+alsa 에서 끊기던 파일들을 잘 읽어주었습니다.
이것으로 볼 때 alsa 의 문제가 아닌 mplayer 의 문제 같습니다.
하지만 제 경우에는 문제를 일으키는 파일들이 극소수였기 때문에, mplayer+alsa 를 써도 별로 문제가 없더군요. 가끔 끊기는 파일을 발견했을 때만 다른 플레이어로 읽거나 mplayer+oss 로 임시 전환하면 되니까...

저는 alsa 가 dmix 를 지원하기 때문에 씁니다. 제 사운드카드가 하드웨어 믹싱을 지원하지 않기 때문에, oss 로 하면 두 개 이상의 소리를 재생하지 못합니다. 그러나 alsa 는 dmix 를 이용한 소프트웨어 믹싱을 지원해서 두 개 이상의 소리를 재생할 수 있습니다.


alsa로 재생했을때 소리가 끊기는 문제는 mplayer -ao alsa:device=dmix와 같이 .asoundrc에서 설정한 device로 재생하면 문제없습니다.
제 mplayer.conf와 mplayerplug-in.conf에는ao = alsa:device=duplex # asoundrc에 dmix이름을 pcm.duplex로 설정했기 때문에 duplex입니다.라고 돼 있네요.
랜덤여신의 이미지

nulluser wrote:
alsa로 재생했을때 소리가 끊기는 문제는 mplayer -ao alsa:device=dmix와 같이 .asoundrc에서 설정한 device로 재생하면 문제없습니다.
제 mplayer.conf와 mplayerplug-in.conf에는ao = alsa:device=duplex # asoundrc에 dmix이름을 pcm.duplex로 설정했기 때문에 duplex입니다.라고 돼 있네요.

오... 고맙습니다! "ao=alsa:device=dmix" 로 설정하니 안 끊기고 잘 되네요! :-)
(최근에 alsa 에서 dmix 가 기본으로 활성화돼서, asoundrc 없이 사용하고 있습니다)
nulluser의 이미지

그렇군요!
1.0.9rc2 부터 dmix는 설정할 필요없이 사용가능하네요.
생각없이 그냥 커널만 올렸더니 모르고 있었습니다.
이제부턴 저도 간단히 device=dmix로 해야겠네요. :-D

bigpooh의 이미지

nulluser wrote:
그렇군요!
1.0.9rc2 부터 dmix는 설정할 필요없이 사용가능하네요.
생각없이 그냥 커널만 올렸더니 모르고 있었습니다.
이제부턴 저도 간단히 device=dmix로 해야겠네요. :-D

/usr/share/alsa/alsa.conf 에 있는 설정이 바뀐걸로 알고 있습니다.
굳이 device 지정을 안해도 대부분의 사운드카드는 dmix plugin 이 default 장치에 적용되어 있을겁니다.
(그런데 몇몇 사카에서는 문제가 있는거 같더군요.)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.