YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
PortAudioDeviceDriver.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: LGPL-2.1-or-later
4 */
5
6#ifndef PortAudioDeviceDriverh
7#define PortAudioDeviceDriverh
8
10#include <yarp/os/Thread.h>
11
14#include <portaudio.h>
15#include "PortAudioBuffer.h"
16
17#define DEFAULT_SAMPLE_RATE (44100)
18#define DEFAULT_NUM_CHANNELS (2)
19#define DEFAULT_DITHER_FLAG (0)
20#define DEFAULT_FRAMES_PER_BUFFER (512)
21//#define DEFAULT_FRAMES_PER_BUFFER (1024)
22
23
35
37 public yarp::os::Thread
38{
39 public:
42 PaStream* stream;
43 void threadRelease() override;
44 bool threadInit() override;
45 void run() override;
46
47 private:
48 PaError err;
49 void handleError();
50};
51
64{
65private:
66 PaStreamParameters inputParameters;
67 PaStreamParameters outputParameters;
68 PaStream* stream;
69 PaError err;
70 circularDataBuffers dataBuffers;
71 size_t numSamples;
72 size_t numBytes;
73 streamThread pThread;
74
76
77public:
79
80 virtual ~PortAudioDeviceDriver();
81
82 bool open(yarp::os::Searchable& config) override;
83
102
103 bool close() override;
104 bool getSound(yarp::sig::Sound& sound, size_t min_number_of_samples, size_t max_number_of_samples, double max_samples_timeout_s) override;
105 bool renderSound(const yarp::sig::Sound& sound) override;
106 bool startRecording() override;
107 bool stopRecording() override;
108 bool startPlayback() override;
109 bool stopPlayback() override;
110 bool isPlaying(bool& playback_enabled) override;
111 bool isRecording(bool& recording_enabled) override;
112
113 bool abortSound();
114 bool immediateSound(const yarp::sig::Sound& sound);
115 bool appendSound(const yarp::sig::Sound& sound);
116
119 bool resetPlaybackAudioBuffer() override;
120
123 bool resetRecordingAudioBuffer() override;
124
125 bool setHWGain(double gain) override;
126 bool setSWGain(double gain) override;
127
128protected:
135
138 void handleError();
139};
140
141#endif
portaudio deprecated: This device driver has been deprecated! Please use PortAudioPlayerDeviceDriver ...
bool getSound(yarp::sig::Sound &sound, size_t min_number_of_samples, size_t max_number_of_samples, double max_samples_timeout_s) override
Get a sound from a device.
bool startPlayback() override
Start the playback.
bool setSWGain(double gain) override
Sets a software gain for the grabbed audio.
bool open(yarp::os::Searchable &config) override
Open the DeviceDriver.
bool stopRecording() override
Stop the recording.
bool isPlaying(bool &playback_enabled) override
Check if the playback has been enabled (e.g.
PortAudioDeviceDriverSettings m_driverConfig
bool resetRecordingAudioBuffer() override
bool setHWGain(double gain) override
Sets the hardware gain of the grabbing device (if supported by the hardware)
bool startRecording() override
Start the recording.
bool resetPlaybackAudioBuffer() override
bool renderSound(const yarp::sig::Sound &sound) override
Render a sound using a device (i.e.
bool isRecording(bool &recording_enabled) override
Check if the recording has been enabled (e.g.
bool appendSound(const yarp::sig::Sound &sound)
bool getPlaybackAudioBufferMaxSize(yarp::sig::AudioBufferSize &size) override
enum PortAudioDeviceDriver::@90 renderMode
bool close() override
Close the DeviceDriver.
bool stopPlayback() override
Stop the playback.
bool getPlaybackAudioBufferCurrentSize(yarp::sig::AudioBufferSize &size) override
bool getRecordingAudioBufferMaxSize(yarp::sig::AudioBufferSize &size) override
bool immediateSound(const yarp::sig::Sound &sound)
bool getRecordingAudioBufferCurrentSize(yarp::sig::AudioBufferSize &size) override
void run() override
Main body of the new thread.
bool threadInit() override
Initialization method.
void threadRelease() override
Release method.
Interface implemented by deprecated device drivers.
Read a YARP-format sound block from a device.
Interface for rendering a YARP-format sound and controlling its reproduction ona device.
A base class for nested structures that can be searched.
Definition Searchable.h:31
An abstraction for a thread of execution.
Definition Thread.h:21
Class for storing sounds See Audio in YARP for additional documentation on YARP audio.
Definition Sound.h:25