mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-15 08:56:34 -05:00
No description
If the virtual sink is moved to a new master right after it has been created, then the virtual sink input's memblockq can be rewound to a negative read index. The data written prior to the move starts from index zero, so after the rewind there's a bit of silence. If the memblockq doesn't have a silence memchunk set, then pa_memblockq_peek() will return zero in such case, and the returned memchunk's memblock pointer will be NULL. That scenario wasn't taken into account in the implementation of sink_input_pop_cb. Setting a silence memchunk for the memblockq solves this problem, because pa_memblock_peek() will now return a valid memblock if the read index happens to point to a hole in the memblockq. I believe this isn't the best possible solution, though. It doesn't really make sense to rewind the sink input's memblockq beyond index 0 in the first place, because now when the stream starts to play to the new master sink, there's some unnecessary silence before the actual data starts. This is a small problem, though, and I don't grok the rewinding system well enough to know how to fix this issue properly. I went through all files that call pa_memblockq_peek() to see if there are more similar bugs. play-memblockq.c was the only one that looked to me like it might be broken in the same way. I didn't try reproducing the bug with play-memblockq.c, though, so I just added a FIXME comment there. |
||
|---|---|---|
| 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