YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
PortAudioPlayerDeviceDriver Class Reference

portaudioPlayer: A device driver for an audio playback device wrapped by PortAudio library. More...

#include <portaudioPlayer/PortAudioPlayerDeviceDriver.h>

+ Inheritance diagram for PortAudioPlayerDeviceDriver:

Public Member Functions

 PortAudioPlayerDeviceDriver ()
 
 PortAudioPlayerDeviceDriver (const PortAudioPlayerDeviceDriver &)=delete
 
 PortAudioPlayerDeviceDriver (PortAudioPlayerDeviceDriver &&)=delete
 
PortAudioPlayerDeviceDriveroperator= (const PortAudioPlayerDeviceDriver &)=delete
 
PortAudioPlayerDeviceDriveroperator= (PortAudioPlayerDeviceDriver &&)=delete
 
 ~PortAudioPlayerDeviceDriver () override
 
bool open (yarp::os::Searchable &config) override
 Open the DeviceDriver.
 
bool close () override
 Close the DeviceDriver.
 
void waitUntilPlaybackStreamIsComplete () override
 
yarp::dev::ReturnValue setHWGain (double gain) override
 Sets the hardware gain of the playback device (if supported by the hardware)
 
yarp::dev::ReturnValue startPlayback () override
 Start the playback.
 
yarp::dev::ReturnValue stopPlayback () override
 Stop the playback.
 
bool interruptDeviceAndClose () override
 
void threadRelease () override
 Release method.
 
bool threadInit () override
 Initialization method.
 
void run () override
 Main body of the new thread.
 
- Public Member Functions inherited from yarp::dev::AudioPlayerDeviceBase
virtual yarp::dev::ReturnValue renderSound (const yarp::sig::Sound &sound) override
 Render a sound using a device (i.e.
 
virtual yarp::dev::ReturnValue isPlaying (bool &playback_enabled) override
 Check if the playback has been enabled (e.g.
 
virtual yarp::dev::ReturnValue getPlaybackAudioBufferMaxSize (yarp::sig::AudioBufferSize &size) override
 
virtual yarp::dev::ReturnValue getPlaybackAudioBufferCurrentSize (yarp::sig::AudioBufferSize &size) override
 
virtual yarp::dev::ReturnValue resetPlaybackAudioBuffer () override
 
virtual yarp::dev::ReturnValue setSWGain (double gain) override
 Sets a software gain for the played audio.
 
virtual ~AudioPlayerDeviceBase ()
 
- Public Member Functions inherited from yarp::dev::IAudioRender
virtual ~IAudioRender ()
 Destructor.
 
- Public Member Functions inherited from yarp::dev::DeviceDriver
 DeviceDriver ()
 
 DeviceDriver (const DeviceDriver &other)=delete
 
 DeviceDriver (DeviceDriver &&other) noexcept=delete
 
DeviceDriveroperator= (const DeviceDriver &other)=delete
 
DeviceDriveroperator= (DeviceDriver &&other) noexcept=delete
 
virtual ~DeviceDriver ()
 
virtual std::string id () const
 Return the id assigned to the PolyDriver.
 
virtual void setId (const std::string &id)
 Set the id for this device.
 
template<class T >
bool view (T *&x)
 Get an interface to the device driver.
 
virtual DeviceDrivergetImplementation ()
 Some drivers are bureaucrats, pointing at others.
 
- Public Member Functions inherited from yarp::os::Thread
 Thread ()
 Constructor.
 
virtual ~Thread ()
 Destructor.
 
virtual void onStop ()
 Call-back, called while halting the thread (before join).
 
bool start ()
 Start the new thread running.
 
bool stop ()
 Stop the thread.
 
virtual void beforeStart ()
 Called just before a new thread starts.
 
virtual void afterStart (bool success)
 Called just after a new thread starts (or fails to start), this is executed by the same thread that calls start().
 
bool isStopping ()
 Returns true if the thread is stopping (Thread::stop has been called).
 
bool isRunning ()
 Returns true if the thread is running (Thread::start has been called successfully and the thread has not stopped).
 
long int getKey ()
 Get a unique identifier for the thread.
 
int setPriority (int priority, int policy=-1)
 Set the priority and scheduling policy of the thread, if the OS supports that.
 
int getPriority ()
 Query the current priority of the thread, if the OS supports that.
 
int getPolicy ()
 Query the current scheduling policy of the thread, if the OS supports that.
 
bool join (double seconds=-1)
 The function returns when the thread execution has completed.
 
void setOptions (int stackSize=0)
 Set the stack size for the new thread.
 
- Public Member Functions inherited from PortAudioPlayerDeviceDriver_ParamsParser
 PortAudioPlayerDeviceDriver_ParamsParser ()
 
 ~PortAudioPlayerDeviceDriver_ParamsParser () override=default
 
bool parseParams (const yarp::os::Searchable &config) override
 Parse the DeviceDriver parameters.
 
std::string getDeviceClassName () const override
 Get the name of the DeviceDriver class.
 
std::string getDeviceName () const override
 Get the name of the device (i.e.
 
std::string getDocumentationOfDeviceParams () const override
 Get the documentation of the DeviceDriver's parameters.
 
std::vector< std::string > getListOfParams () const override
 Return a list of all params used by the device.
 
std::string getDocumentationOfPortAudioPlayerDeviceDriver () const
 
- Public Member Functions inherited from yarp::dev::IDeviceDriverParams
virtual ~IDeviceDriverParams ()
 

Protected Member Functions

void handleError ()
 
- Protected Member Functions inherited from yarp::dev::AudioPlayerDeviceBase
virtual bool immediateSound (const yarp::sig::Sound &sound)
 
virtual bool appendSound (const yarp::sig::Sound &sound)
 
bool configurePlayerAudioDevice (yarp::os::Searchable &config, std::string device_name)
 

Protected Attributes

void * m_system_resource
 
- Protected Attributes inherited from yarp::dev::AudioPlayerDeviceBase
bool m_enable_buffer_autoclear = false
 
bool m_playback_enabled = false
 
std::recursive_mutex m_mutex
 
yarp::dev::CircularAudioBuffer_16tm_outputBuffer = nullptr
 
AudioDeviceDriverSettings m_audioplayer_cfg
 
double m_sw_gain = 1.0
 
double m_hw_gain = 1.0
 
bool m_audiobase_debug = false
 
enum yarp::dev::AudioPlayerDeviceBase:: { ... }  m_renderMode = RENDER_APPEND
 

Additional Inherited Members

- Static Public Member Functions inherited from yarp::os::Thread
static int getCount ()
 Check how many threads are running.
 
static long int getKeyOfCaller ()
 Get a unique identifier for the calling thread.
 
static void yield ()
 Reschedule the execution of current thread, allowing other threads to run.
 
static void setDefaultStackSize (int stackSize)
 Set the default stack size for all threads created after this point.
 
- Public Attributes inherited from PortAudioPlayerDeviceDriver_ParamsParser
const std::string m_device_classname = {"PortAudioPlayerDeviceDriver"}
 
const std::string m_device_name = {"portaudioPlayer"}
 
bool m_parser_is_strict = false
 
const parser_version_type m_parser_version = {}
 
const std::string m_audio_device_id_defaultValue = {"-1"}
 
const std::string m_driver_frame_size_defaultValue = {"512"}
 
int m_audio_device_id = {-1}
 
size_t m_driver_frame_size = {512}
 
- Protected Types inherited from yarp::dev::AudioPlayerDeviceBase
enum  {
  RENDER_APPEND = 0 ,
  RENDER_IMMEDIATE = 1
}
 

Detailed Description

portaudioPlayer: A device driver for an audio playback device wrapped by PortAudio library.

Requires the PortAudio library (http://www.portaudio.com), at least v19. Only 16bits sample format is currently supported by this device. This device driver derives from AudioPlayerDeviceBase base class. Please check its documentation for additional details.

Parameters required by this device are shown in class: PortAudioPlayerDeviceDriver_ParamsParser and AudioPlayerDeviceBase

See Audio in YARP for additional documentation on YARP audio.

Definition at line 33 of file PortAudioPlayerDeviceDriver.h.

Constructor & Destructor Documentation

◆ PortAudioPlayerDeviceDriver() [1/3]

PortAudioPlayerDeviceDriver::PortAudioPlayerDeviceDriver ( )

Definition at line 169 of file PortAudioPlayerDeviceDriver.cpp.

◆ PortAudioPlayerDeviceDriver() [2/3]

PortAudioPlayerDeviceDriver::PortAudioPlayerDeviceDriver ( const PortAudioPlayerDeviceDriver )
delete

◆ PortAudioPlayerDeviceDriver() [3/3]

PortAudioPlayerDeviceDriver::PortAudioPlayerDeviceDriver ( PortAudioPlayerDeviceDriver &&  )
delete

◆ ~PortAudioPlayerDeviceDriver()

PortAudioPlayerDeviceDriver::~PortAudioPlayerDeviceDriver ( )
override

Definition at line 177 of file PortAudioPlayerDeviceDriver.cpp.

Member Function Documentation

◆ close()

bool PortAudioPlayerDeviceDriver::close ( )
overridevirtual

Close the DeviceDriver.

Returns
true/false on success/failure.

Reimplemented from yarp::dev::DeviceDriver.

Definition at line 281 of file PortAudioPlayerDeviceDriver.cpp.

◆ handleError()

void PortAudioPlayerDeviceDriver::handleError ( )
protected

Definition at line 268 of file PortAudioPlayerDeviceDriver.cpp.

◆ interruptDeviceAndClose()

bool PortAudioPlayerDeviceDriver::interruptDeviceAndClose ( )
overridevirtual

Implements yarp::dev::AudioPlayerDeviceBase.

Definition at line 182 of file PortAudioPlayerDeviceDriver.cpp.

◆ open()

bool PortAudioPlayerDeviceDriver::open ( yarp::os::Searchable config)
overridevirtual

Open the DeviceDriver.

Parameters
configis a list of parameters for the device. Which parameters are effective for your device can vary. See device invocation examples. If there is no example for your device, you can run the "yarpdev" program with the verbose flag set to probe what parameters the device is checking. If that fails too, you'll need to read the source code (please nag one of the yarp developers to add documentation for your device).
Returns
true/false upon success/failure

Reimplemented from yarp::dev::DeviceDriver.

Definition at line 256 of file PortAudioPlayerDeviceDriver.cpp.

◆ operator=() [1/2]

PortAudioPlayerDeviceDriver & PortAudioPlayerDeviceDriver::operator= ( const PortAudioPlayerDeviceDriver )
delete

◆ operator=() [2/2]

PortAudioPlayerDeviceDriver & PortAudioPlayerDeviceDriver::operator= ( PortAudioPlayerDeviceDriver &&  )
delete

◆ run()

void PortAudioPlayerDeviceDriver::run ( )
overridevirtual

Main body of the new thread.

Override this method to do what you want. After Thread::start is called, this method will start running in a separate thread. It is important that this method either keeps checking Thread::isStopping to see if it should stop, or you override the Thread::onStop method to interact with it in some way to shut the new thread down. There is no really reliable, portable way to stop a thread cleanly unless that thread cooperates.

Implements yarp::os::Thread.

Definition at line 139 of file PortAudioPlayerDeviceDriver.cpp.

◆ setHWGain()

ReturnValue PortAudioPlayerDeviceDriver::setHWGain ( double  gain)
overridevirtual

Sets the hardware gain of the playback device (if supported by the hardware)

Parameters
gainthe audio gain (1.0 is the default value)
Returns
a ReturnValue, convertible to true/false

Implements yarp::dev::IAudioRender.

Definition at line 302 of file PortAudioPlayerDeviceDriver.cpp.

◆ startPlayback()

ReturnValue PortAudioPlayerDeviceDriver::startPlayback ( )
overridevirtual

Start the playback.

Returns
a ReturnValue, convertible to true/false

Reimplemented from yarp::dev::AudioPlayerDeviceBase.

Definition at line 320 of file PortAudioPlayerDeviceDriver.cpp.

◆ stopPlayback()

ReturnValue PortAudioPlayerDeviceDriver::stopPlayback ( )
overridevirtual

Stop the playback.

Returns
a ReturnValue, convertible to true/false

Reimplemented from yarp::dev::AudioPlayerDeviceBase.

Definition at line 329 of file PortAudioPlayerDeviceDriver.cpp.

◆ threadInit()

bool PortAudioPlayerDeviceDriver::threadInit ( )
overridevirtual

Initialization method.

The thread executes this function when it starts and before "run". This is a good place to perform initialization tasks that need to be done by the thread itself (device drivers initialization, memory allocation etc). If the function returns false the thread quits and never calls "run". The return value of threadInit() is notified to the class and passed as a parameter to afterStart(). Note that afterStart() is called by the same thread that is executing the "start" method.

Reimplemented from yarp::os::Thread.

Definition at line 133 of file PortAudioPlayerDeviceDriver.cpp.

◆ threadRelease()

void PortAudioPlayerDeviceDriver::threadRelease ( )
overridevirtual

Release method.

The thread executes this function once when it exits, after the last "run". This is a good place to release resources that were initialized in threadInit() (release memory, and device driver resources).

Reimplemented from yarp::os::Thread.

Definition at line 129 of file PortAudioPlayerDeviceDriver.cpp.

◆ waitUntilPlaybackStreamIsComplete()

void PortAudioPlayerDeviceDriver::waitUntilPlaybackStreamIsComplete ( )
overridevirtual

Reimplemented from yarp::dev::AudioPlayerDeviceBase.

Definition at line 308 of file PortAudioPlayerDeviceDriver.cpp.

Member Data Documentation

◆ m_system_resource

void* PortAudioPlayerDeviceDriver::m_system_resource
protected

Definition at line 74 of file PortAudioPlayerDeviceDriver.h.


The documentation for this class was generated from the following files: