• Show log

    Commit

  • Hash : c5914295
    Author : Anthony Pesch
    Date : 2018-05-04T21:21:32

    alsa: avoid hardware parameters with an excessive number of periods.
    
    The previous code attempted to use set_buffer_size / set_period_size
    discretely, favoring the parameters which generated a buffer size that was
    exactly 2x the requested buffer size. This solution ultimately prioritizes
    only the buffer size, which comes at a large performance cost on some machines
    where this results in an excessive number of periods. In my case, for a 4096
    sample buffer, this configured the device to use 37 periods with a period size
    of 221 samples and a buffer size of 8192 samples. With 37 periods, the SDL
    Audio thread was consuming 25% of the CPU.
    
    This code has been refactored to use set_period_size and set_buffer_size
    together. set_period_size is called first to attempt to set the period to
    exactly match the requested buffer size, and set_buffer_size is called second
    to further refine the parameters to attempt to use only 2 periods. The
    fundamental change here is that the period size / count won't go to extreme
    values if the buffer size can't be exactly matched, the buffer size should
    instead just increase to the next closest multiple of the target period size
    that is supported. After changing this, for a 4096 sample buffer, the device
    is configured to use 3 periods with a period size of 4096 samples and a buffer
    size of 12288 samples. With only 3 periods, the SDL Audio thread doesn't even
    show up when profiling.
    
    Fixes Bugzilla #4156.
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/SDL.git
    Git SSH git@git.kmx.io:kc3-lang/SDL.git
    Public access ? public
    Description

    Fork of https://github.com/libsdl-org/SDL

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg_l thodg
    Tags