1. 26 1月, 2011 1 次提交
    • G
      pulseaudio: process 1/4 buffer max at once · 6315633b
      Gerd Hoffmann 提交于
      Limit the size of data pieces processed by the pulseaudio worker
      threads.  Never ever process more than 1/4 of the buffer at once.
      
      Background: The buffer area currently processed by the pulseaudio thread
      is blocked, i.e. the main thread (or iothread) can't fill in more data
      there.  The buffer processing time is roughly real-time due to the
      pa_simple_write() call blocking when the output queue to the pulse
      server is full.  Thus processing big chunks at once means blocking
      a large part of the buffer for a long time.  This brings high latency
      and can lead to dropouts.
      
      When processing the buffer in smaller chunks the rpos handling becomes a
      problem though.  The thread reads hw->rpos without knowing whenever
      qpa_run_out has already seen the last (small) chunk processed and
      updated rpos accordingly.  There is no point in reading hw->rpos though,
      pa->rpos can be used instead.  We just need to take care to initialize
      pa->rpos before kicking the thread.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      6315633b
  2. 25 1月, 2011 16 次提交
  3. 24 1月, 2011 21 次提交
  4. 23 1月, 2011 2 次提交