• MPlayer2: o Fork do Projeto MPlayer

    Você é usuário do MPlayer e está cansado de esperar pelo seu desenvolvimento "com passos de tartaruga"? Bem vindo ao clube! Parece que um dos principais desenvolvedores do projeto MPlayer resolveu de vez separar suas propostas de implementação para a árvore principal do projeto e criou um verdadeiro fork. A ideia do nome para o Fork veio da vontade de seus desenvolvedores de ainda poder ver suas inovações e melhorias sendo implementadas oficialmente no projeto-mãe: o MPlayer.

    Mas parece muito improvável que isso aconteça. Pelo menos nao em um futuro muito próximo, e os desenvolvedores do MPlayer2 terão a difícil missão de popularizar seu fork, a ponto de superar o projeto-mãe. E quando isso acontecer, quem vai querer voltar as suas raízes? Em se tratando de desenvolvimento de software livre, dificilmente vemos uma fusão de projetos, ao contrário dos inúmeros forks que nascem diariamente em todo o mundo.


    Melhorias do MPlayer2

    E a batalha do MPlayer2 em poder provar que merece seu lugar ao Sol será árdua. O fork propõe muitas melhorias em seu lançamento, mas também muitas alterações que poderão incomodar alguns usuários mais experientes e antigos do MPlayer. Vamos falar um pouco sobre essas diferenças entre os projetos concorrentes?

    Melhor manuseio das pausas

    Quem nunca ficou irritado ao tentar executar comandos no MPlayer quando o mesmo estava em modo pausa, fazendo com que o mesmo fosse desabilitado e o aplicativo continuasse a executar seu arquivo de entrada (áudio e/ou vídeo)? Pois no MPlayer2 seus problemas acabaram. Nele você pode executar quantos comandos quiser em modo pausa, que a mesma não será retirada. Enquanto estiver em modo pausa, você poderá tranquilamente executar comandos, ou mesmo efetuar alterações de configuração, sem que o modo pausa seja desabilitado.

    Suporte melhorado para o Matroska

    No MPlayer2 a manipulação geral de arquivos no formato Matroska foram melhoradas, incluindo o suporte para capítulos ordenados e edições. Por sinal, essa sempre foi uma das melhorias mais requisitadas pelos usuários do MPlayer, que sentiam necessidade de melhor interagir com arquivos Matroska. Enquanto outros players e editores continuavam avançando em seu suporte, o MPlayer parecia ignorar essa necessidade em suas funcionalidades.

    Suporte multi-threading fácil de usar

    Com o novo fork, ficou muito mais fácil compilar o MPlayer2 com suporte a FFmpeg-mt, a versão multi-threading do FFmpeg. com esse recurso habilitado o uso de threading se tornou automático sem a necessidade de efetuar nenhuma configuração manual. Com o recurso multi-threading habilitado por padrão, o usuário perceberá uma grande melhoria de performance ao executar seu MPlayer2 em máquinas com mais de um núcleo independente (multi-core).

    Suporte melhorado para VDPAU em cartões NVIDIA

    Com a remoção das limitações existentes nas funcionalidades do VDPAU, que preveniam a troca de mais de um frame por atualização de monitor, você poderá executar conteúdo com alto FPS, ou mesmo utilizar o recurso de fast forward em um singelo monitor de 60Hz sem que haja uma quebra sequer em sua execução.

    Outra melhoria está na adição do suporte a frame timing do VDPAU com a melhoria da performance do manuseio de buffer e o upload de texturas de subtitles mais inteligentes. Agora, ambas as funcionalidades VDPAU utilizam decode via hardware e apresentam uma performance melhorada de decodificação de video via software.

    Também foi adicionada lógica, em algumas situações, para a redução do jitter no recurso de frame timing, assim como a adição do manuseio de frames por correto de-interlace.


    Bugs e Afins

    Muitos foram os bugs corrigidos em comparação a versão MPlayer corrente, assim como várias melhorias de pequeno porte que foram implementadas, como o suporte a saída de nível de estúdio, ativação de padrão de modo de de-interlace, e diversas outras.

    Suporte melhorado para seek

    O suporte para seeks mais preciso também foi adicionado, permitindo que o usuário possa buscar qualquer frame existente em um video. Com isso, os seeks não mais estão limitados aos keyframes.

    Suporte para traduções baseadas no gettext

    Agora é oficial, e o fork MPlayer2 incorporou de forma útil o uso do recurso de gettext. No MPlayer original, esse suporte era praticamente inútil para as versões binárias do software, que vem embarcadas nas principais distribuições Linux do mercado. O motivo estava na compilação de apenas um idioma para o sistema, já que para os demais idiomas seria necessário um programa binário à parte para cada um, o que tornaria o processo inviável. Agora, com o MPlayer2, as traduções podem ser alteradas em tempo de execução com o uso do gettext.

    Não mais necessário o embarque do FFmpeg

    Para quem precisa compilar o MPlayer original com suporte a FFmpeg sabe que precisaria ter embarcado sua árvore completa no código. Esse revés sempre causou grandes dificuldades em sua manutenção, principalmente quando um dos software precisava ser atualizado, ou compilado para outra plataforma, mantendo todas as funcionalidades existentes.

    Mesmo sabendo da possibilidade de efetuar links para as bibliotecas compartilhadas do FFmpeg, ainda sim se fazia necessário o uso de algum código embarcado, além de símbolos internos do próprio FFMeg que não eram parte da API pública. Isso deixava propensos a quebras todos os binários com link efetuados de forma dinâmica, sempre quando as bibliotecas do FFmpeg eram atualizadas.

    No MPlayer2 você não mais depende de cópias embarcadas do FFmpeg, utilizando o mesmo apenas através de API pública. Esse novo processo facilita e muito a manutenção do conjunto, além de garantir a integridade de todos os binários com links dinâmicos ao projeto principal.


    Funcionalidades Retiradas

    Mas nem só de funcionalidades extras se apresenta o MPlayer2. Os desenvolvedores fizeram uma verdadeira faxina no projeto original, e retiraram muita coisa que eles consideraram "inúteis", ou mesmo que poderiam comprometer o desenvolvimento futuro deste fork. Vamos a elas.

    Cai o MEncoder

    Isso mesmo que você leu: o MEncoder foi sumariamente extirpado do projeto. De acordo com os desenvolvedores, a base de código do MEncoder estava "completamente podre" e por isso foi apagada. Mas eles também prometeram que uma solução diferente para substituir o falecido será adicionada no futuro. Tudo ao seu tempo, é claro.

    Mas não acho que os usuários mais antigos (e avançados) do MPlayer ficarão muito satisfeitos com essa ausência. E acredito que a retirada do MEncoder poderá ser ponto definitivo para a não-migração de muitos usuários do projeto-mãe.

    Cai a GUI interna

    Outro "apêndice" retirado cirurgicamente do MPlayer2 foi a GUI (conhecida como gmplayer). A ideia dos desenvolvedores é eliminar qualquer menção a uma GUI interna e focalizar os esforços e desenvolvimento em uma interface para implementações externas de GUI. Essa poderia ser considerada a mais amena das remoções quando o assunto é "revertério". A GUI interna do MPlayer sempre deixou muito a desejar, não somente em funcionalidades, como também no quesito estabilidade. Já vai tarde.


    Remoção de algumas bibliotecas binárias embarcadas

    Muitos binários de biblioteca foram arrancados do núcleo do MPLayer para a criação deste fork. As bibliotecas FFmpeg são as principais da lista. Como já havia sido explicado mais acima neste post, acabou-se a dependência do FFmpeg para uso e compilação do MPlayer2. Claro que sua retirada não é totalmente indolor. O processo não deixou quase nenhum vestígio negativo, mas alguns filtros de video que ainda dependem de código interno FFmpeg não estão mais disponíveis (vf_fspp, vf_mcdeint, vf_qp, vf_spp).

    A própria libmpeg2 também foi eliminada. Seu suporte foi removido completamente do fork deste projeto. Como substituição está presente a libavcodec, a decodificadora de mpeg2 que devera funcionar de acordo para a maioria dos usuários normais do MPlayer.

    O suporte aos drivers de vídeo VIDIX também foram removidos. O motivo estava na sua pouca manutenção, além dos problemas de funcionamento com as novas placas gráficas do mercado.

    A biblioteca embarcada tremor também foi removida, assim como as bibliotecas de leitura e navegação de DVD, a libdvdnav e libdvdread. Estas últimas tambpem não se encontram mais presentes no MPlayer2. Entrentanto, os interessados em recuperar suas funcionalidades poderão reintegrá-las na construção do fork em suas máquinas, adicionando seus arquivos à seus respectivos diretórios.

    Uso do libpass como padrão de renderização

    A primeira delas é a utilização do libpass para renderizar os subtitles. A escolha pelos desenvolvedores não foi à toa. a libpass possui uma melhor renderização de fonte e suporte a estilização. Mas claro que, por outro lado algumas opções de subtitle podem não funcionar como antes (ou mesmo não funcionarem mais).

    O filtro de video também precisa escrever os subtitles da libpass com os drivers de saída de video que não suportam de forma direta a renderização dos mesmos. E isso pode causar problemas em alguns casos raros como a utilização de videos com colorspaces não-usuais. Mas os desenvolvedores afirmam que, caso algum usuário encontre algum problema com sua execução, que utilize a opção "-noass", para ativar o uso do antigo método de renderização de subtitle.

    Demuxers do libavformat usados para mais formatos de arquivo

    Outras diferenças poderão assustar ainda mais os usuários antigos do MPlayer, como a escolha pelo padrão libavdemux para alguns formatos de arquivo. Os demuxers do libavformat foram escolhidos como padrão para alguns formatos de arquivos que utilizam versões internas de demuxer como padrão no MPlayer original. O maior destaque dessa alteração é para formatos de arquivo AVI.

    Essa modificação poderá causar algumas diferenças de comportamento já que os demuxers possuem algumas diferenças marcantes no conjunto de suas funcionalidades. Isso pode gerar tanto algumas melhorias, como alguns problemas.

    Agora é com você! Se está interessado em conhecer esse fork, e entender o que eus desenvolvedores queriam implementar no MPlayer original, a hora é agora. Vá até o site oficial deste projeto, baixe o MPlayer2, instale-o em sua máquina, e divirta-se.


    Links de Interesse:

    - Projeto MPlayer2