[XBMC] pas de son avec sortie passthrough

Applications multimedia / jeux
Musky
Daikyu
Messages : 96
Inscription : mer. 26 août 2009, 01:32
Localisation : Bourges

[XBMC] pas de son avec sortie passthrough

Message par Musky »

Bonjour,

Je ne crois pas que mon rpoblème soit relatif à Archlinux (plutôt à XBMC), mais je me permets de poster ce sujet ici, car quelqu'un verra peut-être un souci de configuration quelque part.

J'ai XBMC sur une base Archlinux, carte-mère Abit A8N et je n'arrive pas à avoir du son en passthrough sur le SPDIF.

Je précise tout de suite que la carte son en elle-même n'est pas en cause. J'arrive à tout faire fonctionner avec OSS, et la configuration sous ALSA marchait il y a encore quelques temps (je suppute que c'est la MAJ vers FRODO qui me fout tout en l'air, mais je ne peux l'affirmer)

Quelques infos :

Code : Tout sélectionner

     *-multimedia
          description: Multimedia audio controller
          product: CK804 AC'97 Audio Controller
          vendor: NVIDIA Corporation
          physical id: 10
          bus info: pci@0000:00:04.0
          version: a2
          width: 32 bits
          clock: 66MHz
          capabilities: pm bus_master cap_list
          configuration: driver=snd_intel8x0 latency=0 maxlatency=5 mingnt=2
la sortie de aplay -l

Code : Tout sélectionner

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CK804 [NVidia CK804], device 0: Intel ICH [NVidia CK804]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: CK804 [NVidia CK804], device 2: Intel ICH - IEC958 [NVidia CK804 - IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
et de aplay -L

Code : Tout sélectionner

# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
default:CARD=CK804
    NVidia CK804, NVidia CK804
    Default Audio Device
sysdefault:CARD=CK804
    NVidia CK804, NVidia CK804
    Default Audio Device
front:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804
    Front speakers
surround40:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804
    4.0 Surround output to Front and Rear speakers
surround41:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=CK804,DEV=0
    NVidia CK804, NVidia CK804 - IEC958
    IEC958 (S/PDIF) Digital Audio Output
L'HTPC est branché sur un ampli AV via SPDIF optique uniquement.

Sans configuration supplémentaire, je n'ai aucun son venant d'XBMC, quelque soit les réglages choisis pour le périphérique de sortie audio. Je n'ai qu'un seul choix pour le périphérique de passthrough, et il correspond bien aux infos données par aplay -L (NVidia CK804, NVidia CK804 - IEC958)

Pour simplifier, je nommerai SD tous les médias contenant du son encodé en mp3 ou autre 2.0, et HD tous les médias contenant du son AC3 ou DTS.

Avec un .asoundrc comme suit, j'ai du son pour les médias SD, mais rien en passthrough.

Code : Tout sélectionner

pcm.!default {
       type hw
       card 0
       device 2
}

ctl.!default {
type hw
card 0
}
Si, avec ce .asoundrc, je marque mon ampli comme non compatible Dolby / DTS, j'ai bien du son sur les contenus HD, mais répartis sur 2 canaux (normal, c'est XBMC qui le prends en charge dans ce cas).

Si j'ajoute cette ligne dans mon .asoundrc, je peux sortir du son en choisissant HDMI comme périphérique de sortie dans XBMC, mais le son des contenus HD est alors toujours en 2 canaux, et saccadé.

Code : Tout sélectionner

pcm.!hdmi {
       type hw
       card 0
       device 2
}
Si j'ajoute cette ligne, XBMC ne me trouve plus aucun périphérique disponible pour le passthrough.

Code : Tout sélectionner

pcm.!iec958 {
       type hw
       card 0
       device 2
}
Les infos données en débogage lors du lancement d'un media HD ne semblent pas indiquer d'erreur, mais il n'y a pas de son.

Éléments du xbmc.log relatifs à la detection des périphérique ALSA

Code : Tout sélectionner

20:04:00 T:3001182080  NOTICE: Found 1 Lists of Devices
20:04:00 T:3001182080  NOTICE: Enumerated ALSA devices:
20:04:00 T:3001182080  NOTICE:     Device 1
20:04:00 T:3001182080  NOTICE:         m_deviceName      : @
20:04:00 T:3001182080  NOTICE:         m_displayName     : Default (NVidia CK804 NVidia CK804)
20:04:00 T:3001182080  NOTICE:         m_displayNameExtra:
20:04:00 T:3001182080  NOTICE:         m_deviceType      : AE_DEVTYPE_PCM
20:04:00 T:3001182080  NOTICE:         m_channels        : FL,FR,BL,BR,FC,LFE,SL,SR
20:04:00 T:3001182080  NOTICE:         m_sampleRates     : 48000,96000
20:04:00 T:3001182080  NOTICE:         m_dataFormats     : AE_FMT_S16NE,AE_FMT_S16LE
20:04:00 T:3001182080  NOTICE:     Device 2
20:04:00 T:3001182080  NOTICE:         m_deviceName      : @:CARD=CK804,DEV=0
20:04:00 T:3001182080  NOTICE:         m_displayName     : NVidia CK804
20:04:00 T:3001182080  NOTICE:         m_displayNameExtra: NVidia CK804
20:04:00 T:3001182080  NOTICE:         m_deviceType      : AE_DEVTYPE_PCM
20:04:00 T:3001182080  NOTICE:         m_channels        : FL,FR,BL,BR,FC,LFE,SL,SR
20:04:00 T:3001182080  NOTICE:         m_sampleRates     : 48000,96000
20:04:00 T:3001182080  NOTICE:         m_dataFormats     : AE_FMT_S16NE,AE_FMT_S16LE
20:04:00 T:3001182080  NOTICE:     Device 3
20:04:00 T:3001182080  NOTICE:         m_deviceName      : iec958:CARD=CK804,DEV=0
20:04:00 T:3001182080  NOTICE:         m_displayName     : NVidia CK804
20:04:00 T:3001182080  NOTICE:         m_displayNameExtra: NVidia CK804 - IEC958 S/PDIF
20:04:00 T:3001182080  NOTICE:         m_deviceType      : AE_DEVTYPE_IEC958
20:04:00 T:3001182080  NOTICE:         m_channels        : FL,FR
20:04:00 T:3001182080  NOTICE:         m_sampleRates     : 48000
20:04:00 T:3001182080  NOTICE:         m_dataFormats     : AE_FMT_S16NE,AE_FMT_S16LE
Ouverture du fichier HD contenant des pistes DTS lorsque le passthtough est activé dans XBMC

Code : Tout sélectionner

21:21:31 T:2881465152  NOTICE: Opening audio stream: 1 source: 256
21:21:31 T:2881465152  NOTICE: Finding audio codec for: 86020
21:21:31 T:2881465152   DEBUG: FactoryCodec - Audio: passthrough - Opening
21:21:31 T:2881465152   DEBUG: FactoryCodec - Audio: passthrough - Opened
21:21:31 T:2881465152   DEBUG: CDVDPlayerAudio: Sample rate changed, checking for passthrough
21:21:31 T:2881465152   DEBUG: FactoryCodec - Audio: passthrough - Opening
21:21:31 T:2881465152   DEBUG: FactoryCodec - Audio: passthrough - Opened
21:21:31 T:2881465152  NOTICE: Creating audio thread
21:21:31 T:2712886080  NOTICE: running thread: video_thread
21:21:31 T:2712886080   DEBUG: CDVDPlayerVideo - CDVDMsg::GENERAL_SYNCHRONIZE
21:21:31 T:2667666240  NOTICE: Thread CDVDPlayerAudio start, auto delete: false
21:21:31 T:2881465152  NOTICE: Opening Subtitle stream: 3 source: 256
21:21:31 T:2881465152   DEBUG: FactoryCodec - Overlay: Text Subtitle Decoder - Opening
21:21:31 T:2881465152   DEBUG: FactoryCodec - Overlay: Text Subtitle Decoder - Opened
21:21:31 T:2881465152   DEBUG: ReadEditDecisionLists - Checking for edit decision lists (EDL) on local drive or remote share for: /home/joan/videos/anime/long-metrage/1001 pattes.1080p.mkv
21:21:31 T:2881465152   DEBUG: Process - Start position set to last stopped position: 1985000
21:21:31 T:2667666240  NOTICE: running thread: CDVDPlayerAudio::Process()
21:21:31 T:2881465152   DEBUG: SeekTime - seek ended up on time 1988236
21:21:31 T:2881465152   DEBUG: Process - starting demuxer from: 1985000
21:21:31 T:2881465152   DEBUG: CDVDPlayer::SetCaching - caching state 3
21:21:31 T:2712886080   DEBUG: CDVDPlayerVideo - CDVDMsg::GENERAL_RESYNC(1988236000.000000, 1)
21:21:31 T:2712886080    INFO: CDVDPlayerVideo - Stillframe left, switching to normal playback
21:21:31 T:2667666240   DEBUG: CDVDPlayerAudio - CDVDMsg::GENERAL_RESYNC(1988245000.000000, 0)
21:21:31 T:2667666240    INFO: CAEStreamInfo::SyncDTS - dts stream detected (6 channels, 48000Hz, 16bit BE, period: 512)
21:21:31 T:2667666240   DEBUG: CDVDPlayerAudio: Sample rate changed, checking for passthrough
21:21:31 T:2667666240   DEBUG: FactoryCodec - Audio: passthrough - Opening
21:21:31 T:2667666240   DEBUG: FactoryCodec - Audio: passthrough - Opened
21:21:31 T:2667666240  NOTICE: Creating audio stream (codec id: 86020, channels: 2, sample rate: 48000, pass-through)
21:21:31 T:2667666240    INFO: CSoftAE::MakeStream - AE_FMT_DTS, 48000, RAW,RAW
21:21:31 T:2712886080  NOTICE:  (VDPAU) screenWidth:0 vidWidth:1920 surfaceWidth:1920
21:21:31 T:2712886080  NOTICE:  (VDPAU) screenHeight:0 vidHeight:816 surfaceHeight:816
21:21:31 T:3001182080   DEBUG: CGUIInfoManager::SetCurrentMovie(/home/joan/videos/anime/long-metrage/1001 pattes.1080p.mkv)
21:21:31 T:2933902144    INFO: CAESinkALSA::Initialize - Attempting to open device "@"
21:21:31 T:2933902144    INFO: CAESinkALSA::Initialize - Opened device "front"
21:21:31 T:2933902144    INFO: CAESinkALSA::InitializeHW - Your hardware does not support AE_FMT_FLOAT, trying other formats
21:21:31 T:2933902144    INFO: CAESinkALSA::InitializeHW - Using data format AE_FMT_S16NE
21:21:31 T:2933902144   DEBUG: CAESinkALSA::InitializeHW - Request: periodSize 2400, bufferSize 9600
21:21:31 T:2933902144   DEBUG: CAESinkALSA::InitializeHW - Got: periodSize 2400, bufferSize 9600
21:21:31 T:2933902144   DEBUG: CAESinkALSA::InitializeHW - Setting timeout to 200 ms
21:21:31 T:2933902144   DEBUG: CSoftAE::Run - Sink was forgotten
21:21:31 T:2933902144   DEBUG: CSoftAE::Run - Sink restart flagged
21:21:31 T:2933902144    INFO: CSoftAE::InternalOpenSink - RAW passthrough enabled
21:21:31 T:2933902144    INFO: CSoftAE::InternalOpenSink - sink incompatible, re-starting
21:21:31 T:2933902144    INFO: CAESinkALSA::Initialize - Attempting to open device "iec958:CARD=CK804,DEV=0"
21:21:31 T:3001182080   DEBUG: GetMovieId (/home/joan/videos/anime/long-metrage/1001 pattes.1080p.mkv), query = select idMovie from movie where idFile=789
21:21:31 T:2933902144    INFO: CAESinkALSA::Initialize - Opened device "iec958:CARD=CK804,DEV=0,AES0=0x06,AES1=0x82,AES2=0x00,AES3=0x02"
21:21:31 T:2933902144   DEBUG: CAESinkALSA::InitializeHW - Request: periodSize 2400, bufferSize 9600
21:21:31 T:3001182080   DEBUG: CAnnouncementManager - Announcement: OnPlay from xbmc
21:21:31 T:3001182080   DEBUG: GOT ANNOUNCEMENT, type: 1, from xbmc, message OnPlay
21:21:31 T:2933902144   DEBUG: CAESinkALSA::InitializeHW - Got: periodSize 2400, bufferSize 9600
21:21:31 T:2933902144   DEBUG: CAESinkALSA::InitializeHW - Setting timeout to 200 ms
21:21:31 T:2933902144   DEBUG: CSoftAE::InternalOpenSink - ALSA Initialized:
21:21:31 T:2933902144   DEBUG:   Output Device : NVidia CK804
21:21:31 T:2933902144   DEBUG:   Sample Rate   : 48000
21:21:31 T:2933902144   DEBUG:   Sample Format : AE_FMT_S16NE
21:21:31 T:2933902144   DEBUG:   Channel Count : 2
21:21:31 T:2933902144   DEBUG:   Channel Layout: FL,FR
21:21:31 T:2933902144   DEBUG:   Frames        : 2400
21:21:31 T:2933902144   DEBUG:   Frame Samples : 4800
21:21:31 T:2933902144   DEBUG:   Frame Size    : 4
21:21:31 T:2933902144   DEBUG: CSoftAE::InternalOpenSink - Internal Buffer Size: 9600
Voilà, si quelque'un a une idée ou souhaite un complément d'information, qu'il n'hésite pas.
Répondre