Hi,

On Fri, 2012-07-27 at 09:45 +0300, Tanu Kaskinen wrote:
> Fully agree with this.

Great!

> Is this a widely used convention in the Vala world? To me the "default"
> parameters that however can't be used as real default parameters seem
> strange and confusing. The programmer should read the full documentation
> for the function anyway, so the benefit for these hints seem
> questionable to me.

That logic seems reasonable to me. Now, AFAICT this problem only affects
the constructor, all the other methods only have "real" default
parameters. The only solution besides simply removing these "unreal"
default parameters is adding default values for the parameters in
between (dir, stream_name, ss).

I've attached a new version of the bindings which does precisely that. I
chose PLAYBACK for the stream direction and a CD-like sample format (the
only difference is that it uses native endian-ness) as I think that
these should be the most common values.

This effect is that you can now simply create a new connection by using
"new Simple()" and immediately start playback using an int16[] array.
This specific sample format should also avoid any re-sampling inside PA.

What do you think?

Best regards

Alexander Kurtz
/***
  This file is part of PulseAudio.

  Copyright 2012 Alexander Kurtz <[email protected]>

  PulseAudio is free software; you can redistribute it and/or modify
  it under the terms of the GNU Lesser General Public License as published
  by the Free Software Foundation; either version 2.1 of the License,
  or (at your option) any later version.

  PulseAudio is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License
  along with PulseAudio; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  USA.
***/

namespace PulseAudio {
	[Compact]
	[CCode (cheader_filename="pulse/simple.h", cname="pa_simple", cprefix="pa_simple_")]
	class Simple {
		public Simple(string? server = null, string? name = null, Stream.Direction dir = Stream.Direction.PLAYBACK, string? dev = null, string stream_name = "", SampleSpec ss = SampleSpec(){ format = SampleFormat.S16NE, rate = 44100, channels = 2 }, ChannelMap? map = null, Stream.BufferAttr? attr = null, out int error = null);
		public int write(void* data, size_t bytes, out int error = null);
		public int drain(out int error = null);
		public int read(void* data, size_t bytes, out int error = null);
		public usec get_latency(out int error = null);
		public int flush(out int error = null);
	}
}
libpulse

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to