Re: [RFT] Major snd_hda rewrite

看板FB_current作者時間14年前 (2012/01/25 07:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串49/59 (看更多)
On 01/25/12 00:13, Micka螔 Maillot wrote: > 2012/1/24 Alexander Motin <mav@freebsd.org <mailto:mav@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. --- 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 _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
文章代碼(AID): #1F7pWk1O (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1F7pWk1O (FB_current)