OSS & ALSA - A História

Conheça a história por trás desses dois poderosos e descubra porque do Open Sound System não é incluído por padrão nas distribuições Linux.

[ Hits: 22.533 ]

Por: Perfil removido em 18/09/2011


O funeral



O módulo OSS no mais recente kernel Linux 3.0 tem 15 anos de obsolidade. Foi morto por uma razão (aparentemente) muito boa, no entanto parece que estamos recebendo um funeral muito longo. ALSA também tem emulação no OSS, e na verdade, existem duas versões redundantes do mesmo: um no kernel e outro implementado em nível de biblioteca. Ambos emulam apenas a API do OSS 3.8, que está totalmente morta.

No entanto, este não é o único OSS disponível, A 4Front continuou trabalhando no Open Sound System em todos os últimos anos, pois tornou-se uma solução para muitos problemas de som enfrentados no Linux, a demanda ainda é grande. Além do Linux, agora é o subsistema de som oficial para todas as variantes Unix (que não seja MacOS). No entanto, para muitos teimosos não é uma alternativa, as vantagens da OSS são amplamente ignoradas, veremos a seguir.

Obs.: Quero deixar claro que não tenho a intenção de tirar vantagem do OSS em cima do Alsa, o que está abaixo foi escrito por Hannu Savolainen, o criador original do Open Sound System, e é a mais pura verdade, não há como questionar, infelizmente (ou não).

As principais vantagens do OSS:
  1. É baseado no modelo de dispositivo conhecido Unix/POSIX/Linux.
  2. É totalmente documentado.
  3. A API é simples e compacta, o que torna muito fácil de usar para programadores.
  4. Praticamente todas as aplicações já suportam.
  5. Ele foi projetado para trabalhar em sistemas operacionais de propósito geral, tais como Linux e Unix. Não há necessidade de utilizar qualquer kernel especial com tempo real habilitado (eles podem ser usados, mas não é um requisito).
  6. Totalmente dinâmico (minor/major), permitindo um número ilimitado de dispositivos de áudio/MIDI/mixer.
  7. Nomeia novos dispositivos automaticamente.
  8. Possui um "virtual mixing" transparente, que torna possível, para qualquer número de aplicações, compartilhar o dispositivo de áudio. Isso também funciona para gravação e full duplex.
  9. Apoio poderoso a enumeração de dispositivos.

Agora fazemos uma pequena comparação com o Alsa:
  1. Não é totalmente documentado. Use o source, boa sorte :)
  2. A API não é compatível/similar com qualquer outra coisa (no passado, presente ou futuro).
  3. Abstração de dispositivos muito fina.
  4. A API é projetada para baixa latência o que torna muito desafiador para uso em aplicações normais que não têm quaisquer requisitos de latência.
  5. Requer bibliotecas redundantes de camadas, além do códigos no kernel (alsa-lib, Jack). Isso faz com que aumentem os requisitos de memória em sistemas embarcados.
  6. Tem um enorme número de funções (mais de 1500), mas a maioria das chamadas não foram usadas pelos os aplicativos.
  7. Grande número de funções da biblioteca são desnecessárias e isso só ajuda a aumentar o consumo de memória.
  8. Existem vários métodos de transferência (redundantes) para áudio (como é que o programador vai saber qual deve ser usado com hardware dado?)
  9. Alguns dispositivos utilizam canais intercalados (para estéreo e multich) enquanto outros não utilização intercalados (non-interleaved).
  10. Número de cartões, dispositivos e subdevices possível no sistema é limitada.
  11. Mecanismo de configuração nos arquivos são estranhos, requer diploma em programação LISP para compreender.
  12. Compartilhamento de dispositivos são baseados em recursos do dmix que ninguém entende (mas os peritos podem configurar corretamente).
  13. A API é baseada em callbacks que requer conhecimentos de programação profunda dos desenvolvedores. "Gotos" foram considerados prejudiciais por décadas, callbacks são ainda piores (na verdade eles são uma reencarnação da famosa declaração "come-from").

Então qual deve ser declarado como obsoleto? Como estamos falando de APIs, quem tem o direito de tomar a decisão são os desenvolvedores de aplicativos, eles têm a sua "liberdade de escolha".

Comentário de Hannu Savolainen:

Na verdade, não é bom colocar o OSS contra o ALSA desta forma, no entanto, eles estão na mesma há anos. Não pude resistir. Temos dado a eles mais de 3 anos de tempo (já se passa 8 anos hoje) para descobrir e corrigir os problemas acima, mas nada parece ter acontecido. E eu nem sequer mencionei MIDI ainda. Talvez eu deveria fazer isso abaixo...

Atenciosamente,
Hannu


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. A nova API
   3. O funeral
   4. Conclusão
Outros artigos deste autor

Adaptador Bluetooth no Slackware

Slapt-get 0.10.2s - Conceitos Básicos

Kernel 2.6.9 em 20 passos

Shell Script 1 - Básico

LVM completo e sem mistérios

Leitura recomendada

Software Livre: Redução de custos para as empresas e mais empregos

As brigas dos linuxers

Adaptação das empresas de TI aos trabalhadores da era digital

Aonde o Windows é frágil

Funtoo Linux: A necrópsia de um Pinguim

  
Comentários
[1] Comentário enviado por removido em 18/09/2011 - 11:59h

Na minha concepção de usuário, ambos são melhores que o maldito Pulseaudio, pode ser que no futuro e com novas implementações o Pulseaudio venha a mudar a minha opinião, mas no momento é ALSA ou OSS.

O Pulseaudio vem por padrão no Ubuntu e nas distros nele baseadas, até mesmo o LMDE que é Debian-based o Pulseaudio vinha como padrão, bastou removê-lo para acabar com a mudez no meu sistema.

Um excelente artigo, muito bem documentadoapeasr de não ter corrido os links, decerto eu o farei numa data posterior.

[]'s

[2] Comentário enviado por eldermarco em 18/09/2011 - 12:34h

Interessante! Eu não conhecia essa história! Realmente, uma aventura e tanto. O tal do pulseaudio costuma dar problemas para muitos usuários mesmo, como citou o @edps. Eu mesmo tive medo de que ele desse problemas no ArchLinux, mas parece que se comportou decentemente. =]

[3] Comentário enviado por levi linux em 18/09/2011 - 13:01h

Realmente um história interessante.
Excelente artigo!

[4] Comentário enviado por removido em 18/09/2011 - 13:19h

Só cuidado com uma coisa galera, OSS e Alsa são APIs de som, são elas que fazem a parte "pesada", o pulseaudio é um simples servidor de som.

Creio que esse diagrama vai clarear as coisas: http://goo.gl/UrMJQ
(Dê um zoom)

[5] Comentário enviado por PaeL em 18/09/2011 - 17:59h

'The Open Sound System is an alternative sound architecture for Unix-like and POSIX-compatible systems. OSS version 3 was the original sound system for Linux and is in the kernel but was superceded by ALSA in 2002 when OSS version 4 became proprietary software. OSSv4 became free software again in 2007 when 4Front Technologies released its source code and provided it under the GPL license.'

Pra bom entendedor meia palavra basta xD

[6] Comentário enviado por pinduvoz em 19/09/2011 - 03:21h

O termo usado, obsolidade, é palavra inexistente. Veja uma que existe:

http://www.dicio.com.br/obsolescencia/

No mais, gostei do artigo.

[7] Comentário enviado por removido em 19/09/2011 - 11:06h

@pinduvoz Realmente, ficou bem feio rsrsrs Agradeço a correção.

[8] Comentário enviado por valterrezendeeng em 19/09/2011 - 12:04h

Bom Artigo

Gostei muito da leitura, é sempre muito importante saber-mos como a história é ESCRITA.

Abraço e Parabens!!!!

[9] Comentário enviado por valterrezendeeng em 19/09/2011 - 12:05h

.

[10] Comentário enviado por FernandoBasso em 19/09/2011 - 13:53h

Muito legal saber um pouco sobre essa questão asla vs oss.

Eu uso arch linux com o pulseaudio e alsa-plugins. Não posso afirmar que tenha problemas, exceto pelo fato de que se estou assistindo algo com flash no browser, e eu abro o smplayer por exemplo, este fica sem som. O mesmo se dá caso eu esteja rodando algo em um player (totem, vlc, smplayer, etc) e então tento ver um vídeo no youtube, e o video fica sem som.



Parabéns pelo artigo.

[11] Comentário enviado por erik.costa em 21/09/2011 - 16:27h

Se eu botar pra rodar um filme em FULLHD a imagem fica engasgando .. será placa de vídeo???

Nãoooooo foi só mudar para OSS no player que resolveu :D


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts