[RFT] Major snd_hda rewrite

Alexander Motin mav at FreeBSD.org
Tue Jan 24 22:46:56 UTC 2012


On 01/25/12 00:33, Alexander Motin wrote:
> On 01/25/12 00:13, Mickaël Maillot wrote:
>> 2012/1/24 Alexander Motin <mav at freebsd.org <mailto:mav at freebsd.org>>
>> Here is it: http://people.freebsd.org/~__mav/hda.HBR.patch
>> <http://people.freebsd.org/~mav/hda.HBR.patch>
>> It should activate HBR mode if you try to play stream with AC3
>> format and 8 channels (>6Mbps).
>>
>> no change with the patch because when i SNDCTL_DSP_SETFMT to AFMT_AC3,
>> SNDCTL_DSP_CHANNELS always return 2 channels even if i
>> set SNDCTL_DSP_SPEED to 192000.
>> and i think it's why "if ((ch->fmt & AFMT_AC3) && (cchn == 8))" can't be
>> true.
>> i checked my /v/l/messages and saw PCMDIR_PLAY ....chan_count=0x01.
>
> Number of channels should be set to 8 by application when it expects bit
> rate above 6Mbps. Sample rate, as I've described, just give more fine
> control. Increasing sample rate does not automatically increase
> channels. They are orthogonal:
> Rate 48 96 192 48 96 192
> Channels 2 2 2 8 8 8
> ----------------------------------------------------------
> Mbps 1.5 3 6 12 24 49
>
> 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.

> --- hdaa.c (revision 230511)
> +++ hdaa.c (working copy)
> @@ -4979,6 +4979,8 @@
> }
> if (HDA_PARAM_SUPP_STREAM_FORMATS_AC3(fmtcap)) {
> ch->fmtlist[i++] = SND_FORMAT(AFMT_AC3, 2, 0);
> + if (channels >= 8)
> + ch->fmtlist[i++] = SND_FORMAT(AFMT_AC3, 8, 0);
> }
> ch->fmtlist[i] = 0;
> i = 0;
>
> But in your case I think it should be enough to just increase sample
> rate to 96 or 192KHz.

-- 
Alexander Motin


More information about the freebsd-multimedia mailing list