[pulseaudio-discuss] Why does a VOIP sink input's current latency become "0" after moving to a new sink? I saw endless "rewind" in log
Alejandro Gonzalez
x0092071 at ti.com
Mon Jun 6 16:39:52 PDT 2011
Hi Amanda,
I'm just a beginner in PA but if you still need this information, here
it is:
On Sun, 2011-06-05 at 07:52 -0500, Lin, Mengdong wrote:
> I have two questions:
> 2. Who can trigger the "Requesting rewind due to rewrite"? The sink or the application?
> I traced code and found it was triggered by a "SINK_INPUT_MESSAGE_SEEK" message, and so the sink input keep seeking forward. But I'm lost in function " pstream_memblock_callback" that posts the message? Who can call "pstream_memblock_callback" and when?
>
> static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t offset, pa_seek_mode_t seek, const pa_memchunk *chunk, void *userdata) {
>
> if (chunk->memblock) {
> if (seek != PA_SEEK_RELATIVE || offset != 0)
> pa_asyncmsgq_post(ps->sink_input->sink->asyncmsgq, PA_MSGOBJECT(ps->sink_input), SINK_INPUT_MESSAGE_SEEK, PA_UINT_TO_PTR(seek), offset, chunk, NULL);
> ...
>
This functions are used as function pointers on the pstream.c, here is
where they are initialized on the stream:
./src/pulsecore/protocol-native.c @ pa_native_protocol_connect
pa_pstream_set_recieve_memblock_callback(c->pstream,
pstream_memblock_callback, c);
You can find the calls to this function at:
./src/pulsecore/pstream.c
static int do_read(pa_pstream *p)
they appear as:
p->recieve_memblock_callback(
there are 2 cases where this function is called, on my case I hit the
first condition:
(p->read.index > PA_PSTREAM_DESCRIPTOR_SIZE) {
/* Frame payload available */
but you can find the other case a few lines below.
Regards,
Alejandro.
> Thanks
> Amanda
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
More information about the pulseaudio-discuss
mailing list