Example #1
0
File: simple.go Project: kaey/pulse
// NewConn creates new connection to PulseAudio server.
func NewConn(s *Sample, appName string, streamName string, streamType int) (*Conn, error) {
	conn := new(Conn)

	cAppName := C.CString(appName)
	defer C.free(unsafe.Pointer(cAppName))

	cStreamName := C.CString(streamName)
	defer C.free(unsafe.Pointer(cStreamName))

	conn.simple = C.pa_simple_new(
		nil,
		cAppName,
		C.pa_stream_direction_t(streamType),
		nil,
		cStreamName,
		(*C.pa_sample_spec)(unsafe.Pointer(s)),
		nil,
		nil,
		&conn.err.no,
	)
	if conn.err.no != C.int(0) {
		return nil, conn.err
	}

	return conn, nil
}
Example #2
0
File: simple.go Project: shazow/mog
func NewStream(
	serverName, clientName string,
	dir StreamDirection,
	deviceName, streamName string,
	spec *SampleSpec,
	cmap *ChannelMap,
	battr *BufferAttr,
) (*Stream, error) {

	s := new(Stream)

	var server *C.char
	if serverName != "" {
		server = C.CString(serverName)
		defer C.free(unsafe.Pointer(server))
	}

	var dev *C.char
	if deviceName != "" {
		dev = C.CString(deviceName)
		defer C.free(unsafe.Pointer(dev))
	}

	name := C.CString(clientName)
	defer C.free(unsafe.Pointer(name))
	stream_name := C.CString(streamName)
	defer C.free(unsafe.Pointer(stream_name))

	var err C.int

	s.simple = C.pa_simple_new(
		server,
		name,
		C.pa_stream_direction_t(dir),
		dev,
		stream_name,
		spec.toC(),
		cmap.toC(),
		battr.toC(),
		&err,
	)

	if err == C.PA_OK {
		return s, nil
	}
	return s, errorFromCode(err)
}