## Record Channel

Record Channel — audio stream for recording

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    #include <channel-record.h>

    struct              SpiceRecordChannel;
    struct              SpiceRecordChannelClass;

    void                spice_record_send_data              (SpiceRecordChannel *channel,
                                                             gpointer data,
                                                             gsize bytes,
                                                             guint32 time);

## Object Hierarchy

      GObject
       +----SpiceChannel
             +----SpiceRecordChannel

## Properties

      "mute"                     gboolean              : Read / Write
      "nchannels"                guint                 : Read / Write
      "volume"                   gpointer              : Read / Write

## Signals

      "record-start"                                   : Run First
      "record-stop"                                    : Run First

## Description

SpiceRecordChannel class handles an audio recording stream. The audio stream should start when "record-start" is emitted and should be stopped when "record-stop" is received.

The audio is sent to the guest by calling `spice_record_send_data()` with the recorded PCM data.

Note: You may be interested to let the SpiceAudio class play and record audio channels for your application.

## Details

### struct SpiceRecordChannel

    struct SpiceRecordChannel;

The SpiceRecordChannel struct is opaque and should not be accessed directly.

### struct SpiceRecordChannelClass

    struct SpiceRecordChannelClass {
        SpiceChannelClass parent_class;

        /* signals */
        void (*record_start)(SpiceRecordChannel *channel,
                             gint format, gint channels, gint freq);
        void (*record_data)(SpiceRecordChannel *channel, gpointer *data, gint size);
        void (*record_stop)(SpiceRecordChannel *channel);
    };

Class structure for SpiceRecordChannel.

SpiceChannelClass `parent_class`; | Parent class.
`record_start` () | Signal class handler for the "record-start" signal.
`record_data` () | Unused (deprecated).
`record_stop` () | Signal class handler for the "record-stop" signal.

### spice_record_send_data ()

    void                spice_record_send_data              (SpiceRecordChannel *channel,
                                                             gpointer data,
                                                             gsize bytes,
                                                             guint32 time);

Send recorded PCM data to the guest.

`data` : | PCM data
`bytes` : | size of `data`
`time` : | stream timestamp

## Property Details

### The `"mute"` property

      "mute"                     gboolean              : Read / Write

Mute.

Default value: FALSE

### The `"nchannels"` property

      "nchannels"                guint                 : Read / Write

Number of Channels.

Allowed values: <= 255

Default value: 2

### The `"volume"` property

      "volume"                   gpointer              : Read / Write

## Signal Details

### The `"record-start"` signal

    void                user_function                      (SpiceRecordChannel *channel,
                                                            gint                format,
                                                            gint                channels,
                                                            gint                rate,
                                                            gpointer            user_data)      : Run First

Notify when the recording should start, and provide audio format characteristics.

`channel` : | the SpiceRecordChannel that emitted the signal
`format` : | a SPICE_AUDIO_FMT
`channels` : | number of channels
`rate` : | audio rate
`user_data` : | user data set when the signal handler was connected.

### The `"record-stop"` signal

    void                user_function                      (SpiceRecordChannel *channel,
                                                            gpointer            user_data)      : Run First

Notify when the recording should stop.

`channel` : | the SpiceRecordChannel that emitted the signal
`user_data` : | user data set when the signal handler was connected.

## See Also

SpiceChannel, and SpiceAudio