Hi Team,

We have implemented a pulsemodule which listens on sink_input_new_hook and 
establishes connection with AudioManager and based on response from 
AudioManager, it sends PA_HOOK_OK or PA_HOOK_CANCEL.


And we trigger Stream event request-cork/request-uncork from the pulsemodule to 
the corresponding sink_input, so that it reaches corresponding client 
application stream.

This is working perfectly fine for play and pause use-cases.


But, we have also requirement to handle stop uses i,.e client application 
should be able to differentiate play/pause/stop events.


>From our current understanding, the only way to notify client applications is 
>through request-cork and request-uncork on stream events from server side.

On client side, those could be mapped like below.

  *   request-cork -> PAUSE
  *   request-uncork -> PLAY/RESUME
  *   ? -> STOP

Other possibilities we thought and also experimented to differentiate Stop from 
Pause are below:

  1.  Unlink the sinkinput from our pulsemodule side based on AudioManager 
policy decision.
     *   [Concern] - This might lead to ungraceful notification on client side.
     *   [Concern] - client application gets PA_STREAM_FAILED, which is 
difficult to differentiate whether it is stop or real stream failure at 
pulseaudio server side.
  2.  We could either add/append custom property in the stream properties about 
the state(stop) - So, that the client-application can read this custom property 
from the stream and act accordingly.
     *   [Concern] - Every client-application has to implement this specific 
handling in addition to cork/uncork handling.
     *   [Concern] - Still some sort of server-side trigger is required towards 
client so that, they could read this custom property of the stream.
  3.  As stream events are actually textual information, we tried to send 
'request-stop' for our use case. And this is transparently transmitted to 
applications as stream event.
     *   This works fine for client applications that uses pulseaudio api 
directly.
     *   [Concern] - This is problematic for applications that use GStreamer. 
because, we need to adapt GStreamer plugins for pulseaudio to handle this 
custom event 'request-stop'.

Please provide your inputs or suggestions on this matter.
Any help would be highly appreciated.

Thank you
Regards,
Arun

________________________________

This e-mail and any attachment(s) are intended only for the recipient(s) named 
above and others who have been specifically authorized to receive them. They 
may contain confidential information. If you are not the intended recipient, 
please do not read this email or its attachment(s). Furthermore, you are hereby 
notified that any dissemination, distribution or copying of this e-mail and any 
attachment(s) is strictly prohibited. If you have received this e-mail in 
error, please immediately notify the sender by replying to this e-mail and then 
delete this e-mail and any attachment(s) or copies thereof from your system. 
Thank you.
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to