Descrição

O qmmp é um player de audio de codigo aberto escrito em C++ usando a a biblioteca Qt. Tem suporte para Linux, FreeBSD e Microsoft Windows.A interface grafica do qmmp é baseada no Winamp

Características

  • Apresenta uma inteface grafica simples.
  • Pode usar skins de Winamp.
  • Suporta arquivos Ogg Vorbis, FLAC e MP3.
  • Busca automatica de capa do album.
  • Suporta ID3v2 melhorado pra imagens de album.
  • Surporte a ReplarGain.
  • Suporte a multiplos artistas por musica.
  • Apresenta bandeja de sistema.
  • Suporte a plugins.
  • Tradução para vários idiomas.
  • Funcionamento do QMMP

    A função OutputWrite

    A classe OutputWriter herda a classe Qthread, assim ela implementa a função run(), e nela roda uma thread disponibilizada pela biblioteca Qt.

    bool initialize() - prepara o objeto para ser usado, e preconfigura os parametros de audio, como o mapa de canais, returnando true para sucesso na inicialização e false para fracasso, caso algum erro ocorra manda uma mensagem atraves de qWarning().

    void pause() - pausa o que estiver tocando no programa, caso ja pausado, o audio volta a ser tocado. essa função utiliza um mutex para alterar a a a variavel q sinaliza a pausa (m_pause).

    void stop() - para a musica essa função estabelece o estado da variavel de parado (m_stop).

    void setMuted()- muta e restaura o volume essa função estabelece o estado da variavel de mutado (m_muted).

    void finish()- requere que o audio pare de tocar a variavel que estabelece o estado de terminado como verdadeiro.

    void seek()- faz uma busca no tempo passado por parametro, em milisegundos, caso o parametro reset seja true o buffer de saida sao limpos, caso contrario nada ocorre com os buffers

    void run() - funcionamento da thread

    ABSTRACTENGINE.CPP

    A abstractengine.cpp fornece a interface base do motor de áudio. O motor de áudio é composto pelos algoritmos responsáveis pelo carregamento, descompressão, modificação e reprodução do áudio nos auto-falantes.

    void loadPlugins() - carrega plugins no formato .dll ou .so, ambos bastante comuns em players de áudio para importar bibliotecas, por exemplo.

    As demais funções tratam dos algoritmos (na forma de objetos), aqui chamados de engines (1 engine = 1 algoritmo). Fazem coisas como criar, verificar quais existem, quais estão ativas, ativam engines e encontram plugins.

    É válido notar que no .h, funções do outputwriter.cpp como play, pause e stop estão definidas como virtual, que é usado para sobrepor funções da classe base em classes derivadas. Lá, todas estão sendo inicializadas com 0.

    QMMPAUDIOENGINE.CPP

    Essa classe é a principal no que se trata de funções relacionadas a áudio do QMMP. Tudo que foi utilizado na outputwriter.cpp e abstractengine.cpp se encontra aqui, de forma mais generalizada. As duas classes citadas anteriormente especificam as funções.

    A Função prepareForAnotherThread

    Prepara o objeto parea ser usado por uma nova thread para evitar warnings sobre o pai de outra thread