https://bugs.freedesktop.org/show_bug.cgi?id=54251

             Bug #: 54251
           Summary: protocol-esound, protocol-simple: Rewind after
                    underrun can be too large
    Classification: Unclassified
           Product: PulseAudio
           Version: unspecified
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: core
        AssignedTo: [email protected]
        ReportedBy: [email protected]
         QAContact: [email protected]
                CC: [email protected]


Rewinding after an underrun should be done like this:

pa_sink_input_request_rewind(s->sink_input, (size_t)
(s->sink_input->thread_info.underrun_for == (uint64_t) -1 ? 0 :
s->sink_input->thread_info.underrun_for), FALSE, TRUE, FALSE);

(The example is from protocol-native.c.)

That ensures that the received data won't overwrite valid data in case the
underrun was so short that the sink still has data left from time before the
underrun started.

protocol-esound.c currently does this:

pa_sink_input_request_rewind(c->sink_input, 0, FALSE, TRUE, FALSE);

Giving zero as the rewind amount means that a full rewind will be done,
regardless of whether valid data might get overwritten. If valid data gets
overwritten, there will be a skip in the audio.

protocol-simple.c has the same bug.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA Contact for the bug.
You are the assignee for the bug.
_______________________________________________
pulseaudio-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-bugs

Reply via email to