pulse

package module
v0.0.0-...-5a380f2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2014 License: BSD-3-Clause Imports: 3 Imported by: 0

README

GoDoc

pulse

Pulseaudio pa.simple bindings for Go.

Documentation

Overview

Package pulse is a cgo client library for PulseAudio.

Example (Echo)
package main

import (
	"log"

	"github.com/kaey/pulse"
)

func main() {
	s := pulse.Sample{
		Format:   pulse.FormatS16le,
		Rate:     44100,
		Channels: 2,
	}

	r, err := pulse.NewReader(&s, "echo", "mic")
	if err != nil {
		log.Fatalln(err)
	}
	defer r.Close()
	defer r.Drain()

	rl, err := r.Latency()
	if err != nil {
		log.Fatalln(err)
	}

	w, err := pulse.NewWriter(&s, "echo", "play")
	if err != nil {
		log.Fatalln(err)
	}
	defer w.Close()
	defer w.Drain()

	wl, err := w.Latency()
	if err != nil {
		log.Fatalln(err)
	}

	log.Println("Reader latency", rl)
	log.Println("Writer latency", wl)

	buf := make([]byte, 2048)
	for {
		err := r.Read(buf)
		if err != nil {
			log.Fatalln(err)
		}

		err = w.Write(buf)
		if err != nil {
			log.Fatalln(err)
		}
	}
}
Output:

Example (Wav)
package main

import (
	"io"
	"log"
	"os"

	"github.com/kaey/pulse"
	"github.com/kaey/wav"
)

func main() {
	file, err := os.Open(os.Args[1])
	if err != nil {
		log.Fatalln(err)
	}
	defer file.Close()

	rd, err := wav.NewReader(file)
	if err != nil {
		log.Fatalln(err)
	}
	defer rd.Close()

	s := pulse.Sample{
		Format:   pulse.FormatS16le,
		Rate:     rd.SampleRate,
		Channels: rd.Channels,
	}

	w, err := pulse.NewWriter(&s, "player", file.Name())
	if err != nil {
		log.Fatalln(err)
	}
	defer w.Close()
	defer w.Drain()

	buf := make([]byte, 2048)
	for {
		n, err := rd.Read(buf)
		if err != nil && err != io.EOF {
			log.Fatalln(err)
		}
		if n == 0 {
			break
		}

		err = w.Write(buf[:n])
		if err != nil {
			log.Fatalln(err)
		}
	}
}
Output:

Index

Examples

Constants

View Source
const (
	FormatS16le = 0x3
	FormatS16be = 0x4
	FormatS32le = 0x7
	FormatS32be = 0x8
	FormatS24le = 0x9
	FormatS24be = 0xA
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Conn

type Conn struct {
	// contains filtered or unexported fields
}

Conn is a PulseAudio simple connection. Do not use this directly.

func NewConn

func NewConn(s *Sample, appName string, streamName string, streamType int) (*Conn, error)

NewConn creates new connection to PulseAudio server.

func (*Conn) Close

func (conn *Conn) Close()

Close closes connection to server.

func (*Conn) Drain

func (conn *Conn) Drain() error

Drain waits until all written data is played by the server.

func (*Conn) Flush

func (conn *Conn) Flush() error

Flush discards all data in the server buffer.

func (*Conn) Latency

func (conn *Conn) Latency() (uint64, error)

Latency gets connection latency in usec.

type Err

type Err struct {
	// contains filtered or unexported fields
}

Err is a type returned by all pulse functions.

func (Err) Error

func (err Err) Error() string

Error method calls pa_strerror to get descriptive error message.

type Reader

type Reader struct {
	*Conn
}

func NewReader

func NewReader(s *Sample, appName string, streamName string) (*Reader, error)

NewReader creates new connection to server.

func (*Reader) Read

func (r *Reader) Read(data []byte) error

Read reads data from server.

type Sample

type Sample struct {
	Format   int32
	Rate     uint32
	Channels uint8
}

Sample specifies sample type for stream.

type Writer

type Writer struct {
	*Conn
}

func NewWriter

func NewWriter(s *Sample, appName string, streamName string) (*Writer, error)

NewWriter creates new connection to server.

func (*Writer) Write

func (w *Writer) Write(data []byte) error

Write writes data to server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL