Mahlzeit!
Ein paar Dinge zu meinem Projekt:
Geplant ist ein HTPC, der Medien abspielen kann und zum Zocken von Unterhaltungsspielen wie Supertuxkart, Performous, Frets on Fire und so was taugt, kurz: So 'ne Art linuxbasierte "Playbox Wii". Wegen der schnellen Bootzeit habe ich mich für die neueste Ubuntu 11.04 entschieden und dieses in der Minimal-Konfiguration mit XBMC-Live und 64bit installiert. Und weil das ganze ein paar Jahre ohne Hardware-Wechsel laufen soll, kam für mich nur 'ne AMD-GPU in Frage. Derzeit zwar mit proprietärem Treiber, aber wenn die HD3200 in ein paar Jahren aus der Catalyst-Unterstützung rausfliegt, werden die freien Treiber einen guten Ersatz darstellen.
Da Pulseaudio speziell bei Spielen immer wieder für Probleme mit der Soundausgabe sorgt (oder meinetwegen auch: andere Programme immer wieder nicht richtig mit Pulseaudio zusammenarbeiten wollen) und auch die CPU-Belastung durch Pulseaudio höher ist als bei anderen Sound-Dämonen oder ALSAs dmix, würde ich gerne auf Pulseaudio verzichten. Mein Onboard-Audio-Device wird mit den Treibern snd-hda-intel | snd-hda-codec-hdmi |snd-hda-codec-realtek angetrieben und ist - wenn man lspci glauben darf - ein "ATI Technologies Inc SBx00 Azalia (Intel HDA)" bzw. "ATI Technologies Inc RS780 Azalia controller". Meine Sound-Devices aus Kernel-Sicht:
# aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: SB [HDA ATI SB], Gerät 0: ALC889A Analog [ALC889A Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: SB [HDA ATI SB], Gerät 1: ALC889A Digital [ALC889A Digital]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: HDMI [HDA ATI HDMI], Gerät 3: HDMI 0 [HDMI 0]
Sub-Geräte: 0/1
Sub-Gerät #0: subdevice #0
Alles anzeigen
Der HDTV, mit dem das Ganze betrieben wird, ist ein "Grundig Vision 6" 26-Zöller(, weil das zu der Zeit, als ich einen neuen Fernseher gebraucht habe, das stromsparendste Gerät auf dem Markt war - oder zumindest das stromparendste, das ich finden konnte. ). Er ist über HDMI an den Computer angeschlossen. (Laut Anleitung kann er 1366x786 maximal darstellen. Über HDMI wird aber maximal 1280x720 angeboten da stimmen wohl die EDID-Daten des Fernsehers nicht. Aber das nur nebenbei.) Besonderheit: Der Fernseher lässt kein benutzerdefiniertes Audiorouting zu, d.h. für jeden Video-Eingang gibt es passende Audio-Eingänge. Intern wird nur die jeweils zum Video-Eingang passende Audio-Schnittstelle verstärkt, jeder andere Audio-Eingang wird kurzerhand stumm geschalten. Es ist also manuell unmöglich, den HDMI-Video-Eingang mit dem analogen PC-Audio-Eingang zu koppeln. Prinzipiell hätte ich nichts dagegen, den VGA-Eingang zu benutzen und ein nicht ganz so brilliantes Bild in Kauf zu nehmen, dummerweise schafft es der Fernseher beim Einsatz vom Catalyst-Treiber einfach nicht, das Bild zentriert und ausgefüllt darzustellen - egal, was für eine Auflösung gewählt wird.
Zum eigentlichen Problem: Ich bin gerade dabei, mir ein eigenes Soundsetup mittels .asoundrc zusammen zu stellen, und stolpere hier und da über Sonderbarkeiten von XBMC, die mir gerade keine Ruhe mehr lassen. Deshalb zum Einstieg mal ein paar Fragen:
Ubuntu verlässt sich beim Sound inzwischen komplett auf Pulseaudio, es ist also Out-Of-The-Box keinerlei Userspace-ALSA-Konfiguration aka ~/.asoundrc oder /etc/asound.conf vorhanden. In der Systemeinstellung von XBMC findet sich im Audio-Reiter trotz allem eine Vielzahl an Einstellungsmöglichkeiten. Als da wären:
* Audio-Ausgabe: Analog | HDMI | Optisch/Coaxial
* Audio-Ausgabegerät: Standards | iec958 | hdmi | HDA ATI SB Standards | HDA ATI SB iec958 | HDA ATI HDMI Standards | HDA ATI HDMI hdmi | Benutzerdefiniert
* Digitales Ausgabegerät für Passthrough: iec958 | hdmi | HDA ATI SB iec958 | HDA ATI HDMI hdmi | Benutzerdefiniert
Zunächst mal kapiere ich nicht, warum ein Unterschied zwischen "Audio-Ausgabe" und "Audio-Ausgabegerät" gemacht wird. Was steckt denn da dahinter?
Nächstes Ding: So lange ich keine .asoundrc bzw. asound.conf habe, kann ich dort einstellen, was ich will: Es kommt schlicht kein Ton - zumindest über HDMI. Ton KÄME bei "Standards" über Analog (klar: erste Soundkarte, erstes Device), aber mein Fernseher sperrt - wie oben beschrieben - bei HDMI den analogen Eingang. Sobald ich eine .asoundrc bzw. asound.conf mit den Zeilen
erstelle, erwacht der Ton in XBMC zum Leben. Zunächst die Oberfläche - und wenn ich in "Audio-Ausgabe" bzw. "Audio-Ausgabegerät" "Standards" angebe, kommen sogar Musik und Video über HDMI. Daraus schließe ich einfach mal, dass XBMC wohl aus (mindestens) zwei Komponenten besteht, die jede Ihre eigene Soundausgabe haben. Erstmal nich sonderlich schlimm. Komisch finde ich nur, dass bei DVDs alles richtig gemacht wird: Ton und Bild in der richtigen Geschwindigkeit (zumindest bei nun schon zwei DVDs, die ich getestet habe). Dagegen werden Filme von der Festplatte (z.B. ein AVI mit 22050Hz-Ton) nicht wirklich richtig abgespielt. Es scheint vielmehr so, als würde der Ton auf 48kHz hochgepitcht und der Film dazu angepasst: Alles läuft (mindestens) in doppelter Geschwindigkeit - und dabei habe ich bei den Video-Einstellungen doch extra angegeben, dass sich die Ton-Synchronisierung nach dem Video zu richten hat (System -> Video -> Wiedergabe -> A/V-Sync-Methode: Video-Takt (Audio-Anpassen)).
Dass ich meine .asoundrc bzw. asound.conf noch um eine Upmix-Funktion erweitern muss: Geschenkt! Schließlich werden auch ogg- und mp3-Musikdateien zu schnell abgespielt. Aber warum geht das bei Video von Festplatte schief und bei Videos von DVD nicht?
Drittens habe ich ein Problem mit diversen Filmen, die nicht abgespielt werden (Dateiendung "MPG"). Ich habe irgendwo aufgeschnappt, dass "unbekannte" Codecs nur über ein Workaround abspielbar sind, weil sämtliche Codecs ins Binary reingecoded wurden. Also irgendein externes Abspielprogramm - damit wären es dann wohl mit Oberfläche und sonstigem Video-Abspieler die 3. Medien-Abspielkomponente. Aber egal: Wie heißt das Workaround, dass es zu installieren gilt: xine, mplayer oder vlc? Oder noch was anderes?
Liebe Grüße! Und danke für jede Hilfe!
Mitsch