[RFT] Major snd_hda rewrite

Mickaël Maillot mickael.maillot at gmail.com
Wed Jan 25 07:42:20 UTC 2012

2012/1/25 Alexander Motin <mav at freebsd.org>

>         What I've forgot is to allow 8ch format. :) Add the patch below.
>>        Hope
>>        sound(4) has no other limitations for it.
>>    Hmm. Looks like there is some limitation. You may grep kernel for
>>    AFMT_PASSTHROUGH and find two "XXX force ..." comments and code,
>>    including forcing 2 channels for AC3. Luckily for not part for
>>    frequency is commented out. Further we may try to comment or modify
>>    part about number of channels.
>> spotted and commented
>> so if my problem persist after settings 8 channels, i'll blame xbmc oss
>> part.
> Can't wait to know result. :)
> --
> Alexander Motin

ok so unfortunately it's does not work :(
first: with vchan disable, i cant set format to AFMT_AC3, ioctl always
return -1
in /v/l/messages:
Jan 25 08:09:18 htpc kernel: pcm4: chn_setformat(): Format change
0x00100400 failed, falling back to 0x00100008
so may be my change in sys/dev/sound/pcm/channel.c is not good ? i just
    /* XXX force stereo */
    if (format & AFMT_PASSTHROUGH)

next with vchan: i can set ac3 to 2 channels and 8 channels.
when i try to play DTS HDMA or TRUEHD, i set ac3, 8 channels, 192k
and no sound ! before i had: dtshdma: some part of sound (like all data
cant be send) and truehd: some crapy bipbip
now everything seems to be ok for the player, procstat -f write counter
grows up, but no sound from my receiver: no channel input, nothing showed,
like nothing is send to him.
no error in xbmc.log or in messages:
Jan 25 08:15:35 htpc kernel: pcm4: chn_start(): VCHAN PARENT starting!
(PCMDIR_PLAY/running) (ready=8192 force=1 i=1 j=0 intrtimeout=2 latency=2ms)
Jan 25 08:15:35 htpc kernel: hdac1: 24576Kbps of 92160Kbps bandwidth used
Jan 25 08:15:35 htpc kernel: pcm4: PCMDIR_PLAY: Stream setup fmt=02800400
(7.1) speed=192000
Jan 25 08:15:35 htpc kernel: pcm4: PCMDIR_PLAY: Stream setup nid=4:
fmt=0x1817, dfmt=0x0021, chan=0x0010, chan_count=0x07, stripe=1
Jan 25 08:15:35 htpc kernel: pcm4: chn_trigger() pcm4:play:dsp4.p0: calling
go=0x00000001 , prev=0xffffffff
Jan 25 08:15:35 htpc kernel: pcm4: chn_trigger() pcm4:virtual:dsp4.vp0:
calling go=0x00000001 , prev=0xffffffff

More information about the freebsd-current mailing list