[PATCH] pacat: make pacat respond to cork/uncork events

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

 



'Twas brillig, and Lu Guanqun at 23/08/11 07:18 did gyre and gimble:
> Pacat remembers the number of cork requests, and then cork/uncork the stream
> accordingly.
> 
> With this change, it makes below test script work correctly:
> 
> 	pacat -p --property=media.role="music" <long-sound> &
> 	sleep 2
> 	pacat -p --property=media.role="phone" <short-sound>
> 	wait



Interesting, this is likely good as a test bed/example.

That said, I'm not sure we should be sending the operations every time.

Perhaps we should only send a cork req when the count moves form 0->1
and an uncork when the count moves from 1->0?

We may at some point have to change the semantics at the server side to
deal with the start_corked issue, and thus this is likely more robust in
those circumstances.

Col


> Signed-off-by: Lu Guanqun <guanqun.lu at intel.com>
> ---
>  src/utils/pacat.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/src/utils/pacat.c b/src/utils/pacat.c
> index f687402..2568db5 100644
> --- a/src/utils/pacat.c
> +++ b/src/utils/pacat.c
> @@ -91,6 +91,8 @@ static int32_t latency_msec = 0, process_time_msec = 0;
>  static pa_bool_t raw = TRUE;
>  static int file_format = -1;
>  
> +static int cork_requests = 0;
> +
>  /* A shortcut for terminating the application */
>  static void quit(int ret) {
>      pa_assert(mainloop_api);
> @@ -408,6 +410,15 @@ static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *p
>  
>      t = pa_proplist_to_string_sep(pl, ", ");
>      pa_log("Got event '%s', properties '%s'", name, t);
> +
> +    if (pa_streq(name, PA_STREAM_EVENT_REQUEST_CORK)) {
> +        cork_requests++;
> +        pa_operation_unref(pa_stream_cork(s, !!cork_requests, NULL, NULL));
> +    } else if (pa_streq(name, PA_STREAM_EVENT_REQUEST_UNCORK)) {
> +        cork_requests--;
> +        pa_operation_unref(pa_stream_cork(s, !!cork_requests, NULL, NULL));
> +    }
> +
>      pa_xfree(t);
>  }


-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mageia Contributor [http://www.mageia.org/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]


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

  Powered by Linux