[mythtv-users] mythfrontend is always hungry for ALSA Hardware audio buffer

Igor Cicimov icicimov at gmail.com
Fri Nov 9 01:40:47 UTC 2012


On Fri, Nov 9, 2012 at 12:29 PM, Igor Cicimov <icicimov at gmail.com> wrote:

>
> On Fri, Nov 9, 2012 at 9:26 AM, Josu Lazkano <josu.lazkano at gmail.com>wrote:
>
>> 2012/11/8 Jean-Yves Avenard <jyavenard at gmail.com>:
>> > On 9 November 2012 07:24, Andrey Zhunev <a-j at a-j.ru> wrote:
>> >> Hello All,
>> >>
>> >>
>> >> I just noticed that mythfrontend is asking to allocate a larger buffer
>> for alsa:
>> >> So I increased the value of /proc/asound/card0/pcm0p/sub0/prealloc to
>> >> '1024' - even more than requested. Strangely, mythfrontend asked for
>> more:
>> >>
>> >>
>> >> 2012-11-09 00:10:18.681551 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:139 (TryOpenDevice) - ALSA: OpenDevice default
>> >> 2012-11-09 00:10:18.683052 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:678 (SetParameters) - ALSA:
>> SetParameters(format=10, channels=2, rate=48000, buffer_time=500000,
>> period_time=4)
>> >> 2012-11-09 00:10:18.683407 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:736 (SetParameters) - ALSA: Buffer size range
>> from 2048 to 16384
>> >> 2012-11-09 00:10:18.683421 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:739 (SetParameters) - ALSA: Period size range
>> from 1024 to 1024
>> >> 2012-11-09 00:10:18.683483 E [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:783 (SetParameters) - ALSA: Requested 500000us
>> got 341333 buffer time
>> >> 2012-11-09 00:10:18.683615 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:224 (IncPreallocBufferSize) - ALSA: Hardware
>> audio buffer cur: 1024 need: 1536 max allowed: 32768
>> >> 2012-11-09 00:10:18.683648 E [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:242 (IncPreallocBufferSize) - ALSA: Try to
>> manually increase audio buffer with: echo 1536 | sudo tee
>> /proc/asound/card0/pcm0p/sub0/prealloc
>> >> 2012-11-09 00:10:18.683666 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:791 (SetParameters) - ALSA: Buffer time = 341333
>> us
>> >> 2012-11-09 00:10:18.683677 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:797 (SetParameters) - ALSA: Period time = 16
>> periods
>> >> 2012-11-09 00:10:18.683823 I [3892/3892] CoreContext
>> audio/audiooutputalsa.cpp:806 (SetParameters) - ALSA: Buffer size = 16384 |
>> Period size = 1024
>> >
>> > The way it works is this:
>> >
>> > We ask ALSA to allocate an audio buffer of a certain length. It
>> > allocates some, and return how much it allocated.
>> > If there's more than 10% difference between what was asked and what we
>> > got, we display a message.
>> > The hardware buffer sized suggested is calculated according to how
>> > much the hardware buffer size currently is, and how much we got.
>> >
>> > So, say the HW buffer size is 128kB. We asked for 500ms buffer, and we
>> > got 341ms instead. So myth assumes that we only got 341ms because the
>> > HW buffer size was set to 128kB and that should it be higher, we would
>> > have gotten more.
>> > so we need: 500 * 128 / 341 = 187kB, we round it to the next 64kB
>> > block, it will display that you need to increase the HW buffer to
>> > 192kB...
>> >
>> > This works and is accurate for 99.9% of the ALSA setup in my experience.
>> >
>> > Now you're the 2nd person to report the problem above. No matter what
>> > you ask ALSA, regardless of the HW memory buffer size, you always get
>> > the same maximum value, is 341333us.
>> > That throws off myth and the message displayed is incorrect.
>> >
>> > I would just ignore that message, it is not displayed unless you
>> > increase the verbosity (it used to be displayed all the time)
>> >
>> > JY
>> > _______________________________________________
>> > mythtv-users mailing list
>> > mythtv-users at mythtv.org
>> > http://www.mythtv.org/mailman/listinfo/mythtv-users
>>
>> Hello, I have same problem. I add this on the sudoer configuration file:
>>
>> myuser ALL=(ALL) NOPASSWD:/usr/bin/tee
>> /proc/asound/card0/pcm3p/sub0/prealloc
>>
>> Now I can allocate the buffer size as mythfrontend user.
>>
>> But it doesnt change nothing:
>>
>> 1. I check the initial buffer size:
>>
>> $ cat /proc/asound/card0/pcm3p/sub0/prealloc
>> 64
>>
>> 2. Change the buffer size:
>>
>> $ echo 192 | sudo tee /proc/asound/card0/pcm3p/sub0/prealloc
>> 192
>>
>> 3. Check the buffer size:
>>
>> $ cat /proc/asound/card0/pcm3p/sub0/prealloc
>> 64
>>
>> As you can see, it does not change the buffer size. I am doing something
>> wrong?
>>
>> Thanks and best regards.
>>
>> --
>> Josu Lazkano
>> _______________________________________________
>> mythtv-users mailing list
>> mythtv-users at mythtv.org
>> http://www.mythtv.org/mailman/listinfo/mythtv-users
>>
>
> I use to put "buffer_size 4096" in my .asoundrc file for the digital
> device I want to set specific buffer size.
>

Sorry, forgot to mention using dmix plugin that is
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mythtv.org/pipermail/mythtv-users/attachments/20121109/9ac1606e/attachment.html>


More information about the mythtv-users mailing list