mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-16 08:56:40 -05:00
No description
It's possible that the memblockq of a sink input is rewound to a negative read
index if the sink input is moved between sinks shortly after its creation. When
this happens, pa_memblockq_peek() returns a memchunk whose 'memblock' field is
NULL and whose 'length' field indicates the length of the gap caused by the
negative read index. This will trigger an assert in play-memblockq.c.
If the memblockq had a silence memchunk, pa_memblockq_peek() would return
silence for the duration of the gap and the assert would be avoided. However,
this approach would prevent the sink input from being drained and is thus not
possible. Instead, we handle the aforementioned situation by dropping the gap
indicated by the 'length' field of the memchunk and by peeking the actual data
that comes after the gap.
This scenario seems to be quite rare in everyday use, but it causes a severe
bug in the handheld world. The assert can be triggered e.g. by loading two null
sinks, playing a sample from the cache to one of them and then moving the
created sink input between the two sinks. The rewinds done by the null sinks
seem to be quite long (I don't know if this is normal behaviour or something
fishy in module-null-sink).
See also:
|
||
|---|---|---|
| doxygen | ||
| m4 | ||
| man | ||
| po | ||
| src | ||
| vala | ||
| .gitignore | ||
| .mailmap | ||
| autogen.sh | ||
| bootstrap.sh | ||
| configure.ac | ||
| git-version-gen | ||
| GPL | ||
| LGPL | ||
| libpulse-browse.pc.in | ||
| libpulse-mainloop-glib.pc.in | ||
| libpulse-simple.pc.in | ||
| libpulse.pc.in | ||
| LICENSE | ||
| Makefile.am | ||
| orc.mak | ||
| PROTOCOL | ||
| pulseaudio-text.svg | ||
| pulseaudio.svg | ||
| README | ||
| todo | ||
PULSEAUDIO SOUND SERVER WEB SITE: http://pulseaudio.org/ GIT: git://git.0pointer.de/pulseaudio.git GITWEB: http://git.0pointer.de/?p=pulseaudio.git;a=summary MAILING LIST: https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss GIT COMMITS MAILING LIST: https://tango.0pointer.de/mailman/listinfo/pulseaudio-commits TRAC TICKET CHANGES MAILING LIST: https://tango.0pointer.de/mailman/listinfo/pulseaudio-tickets IRC: #pulseaudio on irc.freenode.org CIA: http://cia.navi.cx/stats/project/polypaudio FRESHMEAT: http://freshmeat.net/projects/pulseaudio/ OHLOH: http://www.ohloh.net/projects/4038 AUTHORS: Several