[pulseaudio-discuss] sink-input.c: pa_sink_input_new vs PA_CORE_HOOK_SINK_INPUT_FIXATE
lennart at poettering.net
Fri Jun 13 11:17:47 PDT 2008
On Fri, 13.06.08 09:31, Nick Thompson (rextanka at comcast.net) wrote:
> My pulg-in is a little different to the ones provided in that it does
> not directly create sink-inputs and so I don't call _put myself.
Yes, it's just one that hooks into touting and stuff, so this is very
> What I see in the plugin is that my handler for
> PA_CORE_HOOK_SINK_INPUT_PUT gets called immediately after the file
> ceases streaming. Which is not as expected.
Ceases streaming? are you sure? that makes no sense. The call that
triggers the hook is pa_sink_input_put().
Modules implementing a sink input should be doing this:
si = pa_sink_input_new(...);
si->pop = ...;
si->process_rewind = ...;
So the code first allocates the sink input, than fills all kind of
fields, and the final _put() call makes it available to the PA core.
The _new() calls the _NEW and _FIXATE hooks. the _put() calls the _PUT hook.
> Is my plug expected to call _put? I thought I would monitor the
No. _put() is supposed to be called by the same code that calls
pa_sink_input_new() first. i.e. not you.
> using PA_CORE_HOOK_SINK_INPUT_CHANGED, but it seems the only calls
> there are for notifying the stream is corked/uncorked.
Uh? There is no such hook. You probably mean
PA_CORE_HOOK_SINK_INPUT_STATE_CHANGED? That hook is indeed called
whenever corked/uncorked state changes.
> I'll keep looking at this, but any pointers appreciated.
Hmm, are you aware that _PUT gets the sink input itself as parameter,
while _NEW and _FIXATE get the pa_sink_input_new_data structure?
If you allow me to have a peek on your code I could probably help you
Lennart Poettering Red Hat, Inc.
lennart [at] poettering [dot] net ICQ# 11060553
http://0pointer.net/lennart/ GnuPG 0x1A015CC4
More information about the pulseaudio-discuss