Re: call pa_stream_drain() for multiple streams

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 11, 2022 at 04:28:00AM +0800, su wrote:
> At first I would like to take this chance to express my gratitude to PulseAudio dev. team and those warm-hearted members at this community  :)
> 
> I have a minor question about calling pa_stream_drain()  for multiple streams at the same context. It seems I cannot issue this command 
> 
> for multiple streams at the same time : 
> 
> for ( int stream_index = 0 ; stream_index < 2 ; stream_index++)
> 
> {
> 
>     pa_operation* pa_op= pa_stream_drain( pa_stream *  audio_stream[ stream_index ]  ,
> 
>                 my_pa_stream_success_cb_t, NULL );
> 
> 
> 
> 
>     while (pa_operation_get_state(pa_op) != PA_OPERATION_DONE) {
> 
>     sleep(1);
> 
>     }
> 
> }   
> 
> How to wait for the done signal to pa_stream_drain() the next stream  efficiently  ?

I don't believe there is any problem with issuing drains for multiple
streams. As far as I know, you could issue them all at once then wait
for them all to finish.

You example code above has some typos, so I'm assuming it's not exactly
what you are running. Can you describe more specifically what is going
wrong with your code? How exactly is it not working?

One possible bug I can foresee is that pa_operation_get_state() could
also return _CANCELLED, so it would be more robust to do something like
the following:

while(pa_operation_get_state(pa_op) == PA_OPERATION_RUNNING) sleep(1);


--Sean




[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux