// 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 }
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) }