Why tsched disabled when I use module-alsa-sink with 'mmap=0 tsched=1' parameters?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>>>
>>> Dear developers,
>>>
>>>
>>> I have question something about selecting logic between timer-based
>>> and IRQ scheduling.
>>>
>>> When I tried to load 'module-alsa-sink' with 'mmap=0 tsched=1'
>>> parameters, tsched(timer-based scheduling) becomes disabled by below
>>> codes.
>>>
>>> It seems tsched is allowed only mmap supported ALSA devices. Why
>>> tsched disabled while use non-mmap driven ALSA?
>>
>>
>> Because rewinding is not available in non-mmap mode. That is, it's not
>> possible to rewrite previously written data in non-mmap mode. In
>> timer-based scheduling mode PulseAudio uses bigger buffer size, which
>> causes problems if rewinding isn't available.
>
>
> Sorry, rewinding is actually available in non-mmap mode. And, pulseaudio
can rewind even without tsched (i.e., tsched == 0 does not imply max_rewind
== 0). So the reasoning must be different. But I don't know the answer.

http://cgit.freedesktop.org/pulseaudio/pulseaudio/log/src/modules/alsa?qt=grep&q=tsched

set latency range only in tsched mode

don't enabled tsched on software ALSA devices

pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm) {
+    snd_pcm_info_t* info;
+    snd_pcm_info_alloca(&info);
+
+    pa_assert(pcm);
+
+    if (snd_pcm_info(pcm, info) < 0)
+        return FALSE;
+
+    return snd_pcm_info_get_card(info) >= 0;

This patch seem strange since only those io plugin (e.g. a52) fail the
test, most plugins pass the above test

alsa: don't make use of tsched related variables when tsched is disabled

+    if (u->use_tsched) {
+        *sleep_usec = pa_bytes_to_usec(left_to_play,
&u->sink->sample_spec);

-    if (*sleep_usec > process_usec)
-        *sleep_usec -= process_usec;
-    else
+        if (*sleep_usec > process_usec)
+            *sleep_usec -= process_usec;
+        else
+            *sleep_usec = 0;
+    } else

Does it mean it won't sleep for a period time but polling continuosly when
timer scheduling is disabled

It need sound card report accurate hwptr position when  hwbuf_unused can
set  to non zero values
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20150103/e5baf832/attachment.html>


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux