[DEV] WORK on a port for BOOST
This commit is contained in:
@@ -9,14 +9,18 @@
|
||||
#include <river/io/NodeAirTAudio.h>
|
||||
#include <river/debug.h>
|
||||
|
||||
#include <memory>
|
||||
#if __cplusplus >= 201103L
|
||||
#include <memory>
|
||||
#else
|
||||
#include <etk/memory.h>
|
||||
#endif
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "io::NodeAirTAudio"
|
||||
|
||||
static std::string asString(const std::chrono::system_clock::time_point& tp) {
|
||||
static std::string asString(const std11::chrono::system_clock::time_point& tp) {
|
||||
// convert to system time:
|
||||
std::time_t t = std::chrono::system_clock::to_time_t(tp);
|
||||
std::time_t t = std11::chrono::system_clock::to_time_t(tp);
|
||||
// convert in human string
|
||||
std::string ts = std::ctime(&t);
|
||||
// remove \n
|
||||
@@ -25,8 +29,8 @@ static std::string asString(const std::chrono::system_clock::time_point& tp) {
|
||||
}
|
||||
|
||||
namespace std {
|
||||
static std::ostream& operator <<(std::ostream& _os, const std::chrono::system_clock::time_point& _obj) {
|
||||
std::chrono::microseconds us = std::chrono::duration_cast<std::chrono::microseconds>(_obj.time_since_epoch());
|
||||
static std::ostream& operator <<(std::ostream& _os, const std11::chrono::system_clock::time_point& _obj) {
|
||||
std11::chrono::microseconds us = std11::chrono::duration_cast<std11::chrono::microseconds>(_obj.time_since_epoch());
|
||||
_os << us.count();
|
||||
return _os;
|
||||
}
|
||||
@@ -34,12 +38,12 @@ namespace std {
|
||||
|
||||
|
||||
int32_t river::io::NodeAirTAudio::duplexCallback(const void* _inputBuffer,
|
||||
const std::chrono::system_clock::time_point& _timeInput,
|
||||
const std11::chrono::system_clock::time_point& _timeInput,
|
||||
void* _outputBuffer,
|
||||
const std::chrono::system_clock::time_point& _timeOutput,
|
||||
const std11::chrono::system_clock::time_point& _timeOutput,
|
||||
uint32_t _nbChunk,
|
||||
const std::vector<airtaudio::status>& _status) {
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
std11::unique_lock<std11::mutex> lock(m_mutex);
|
||||
// TODO : Manage status ...
|
||||
if (_inputBuffer != nullptr) {
|
||||
RIVER_VERBOSE("data Input size request :" << _nbChunk << " [BEGIN] status=" << _status << " nbIO=" << m_list.size());
|
||||
@@ -53,10 +57,10 @@ int32_t river::io::NodeAirTAudio::duplexCallback(const void* _inputBuffer,
|
||||
}
|
||||
|
||||
int32_t river::io::NodeAirTAudio::recordCallback(const void* _inputBuffer,
|
||||
const std::chrono::system_clock::time_point& _timeInput,
|
||||
const std11::chrono::system_clock::time_point& _timeInput,
|
||||
uint32_t _nbChunk,
|
||||
const std::vector<airtaudio::status>& _status) {
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
std11::unique_lock<std11::mutex> lock(m_mutex);
|
||||
// TODO : Manage status ...
|
||||
RIVER_VERBOSE("data Input size request :" << _nbChunk << " [BEGIN] status=" << _status << " nbIO=" << m_list.size());
|
||||
newInput(_inputBuffer, _nbChunk, _timeInput);
|
||||
@@ -64,10 +68,10 @@ int32_t river::io::NodeAirTAudio::recordCallback(const void* _inputBuffer,
|
||||
}
|
||||
|
||||
int32_t river::io::NodeAirTAudio::playbackCallback(void* _outputBuffer,
|
||||
const std::chrono::system_clock::time_point& _timeOutput,
|
||||
const std11::chrono::system_clock::time_point& _timeOutput,
|
||||
uint32_t _nbChunk,
|
||||
const std::vector<airtaudio::status>& _status) {
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
std11::unique_lock<std11::mutex> lock(m_mutex);
|
||||
// TODO : Manage status ...
|
||||
RIVER_VERBOSE("data Output size request :" << _nbChunk << " [BEGIN] status=" << _status << " nbIO=" << m_list.size());
|
||||
newOutput(_outputBuffer, _nbChunk, _timeOutput);
|
||||
@@ -76,11 +80,11 @@ int32_t river::io::NodeAirTAudio::playbackCallback(void* _outputBuffer,
|
||||
|
||||
|
||||
|
||||
std::shared_ptr<river::io::NodeAirTAudio> river::io::NodeAirTAudio::create(const std::string& _name, const std::shared_ptr<const ejson::Object>& _config) {
|
||||
return std::shared_ptr<river::io::NodeAirTAudio>(new river::io::NodeAirTAudio(_name, _config));
|
||||
std11::shared_ptr<river::io::NodeAirTAudio> river::io::NodeAirTAudio::create(const std::string& _name, const std11::shared_ptr<const ejson::Object>& _config) {
|
||||
return std11::shared_ptr<river::io::NodeAirTAudio>(new river::io::NodeAirTAudio(_name, _config));
|
||||
}
|
||||
|
||||
river::io::NodeAirTAudio::NodeAirTAudio(const std::string& _name, const std::shared_ptr<const ejson::Object>& _config) :
|
||||
river::io::NodeAirTAudio::NodeAirTAudio(const std::string& _name, const std11::shared_ptr<const ejson::Object>& _config) :
|
||||
Node(_name, _config) {
|
||||
drain::IOFormatInterface interfaceFormat = getInterfaceFormat();
|
||||
drain::IOFormatInterface hardwareFormat = getHarwareFormat();
|
||||
@@ -93,7 +97,7 @@ river::io::NodeAirTAudio::NodeAirTAudio(const std::string& _name, const std::sha
|
||||
*/
|
||||
enum airtaudio::type typeInterface = airtaudio::type_undefined;
|
||||
std::string streamName = "default";
|
||||
const std::shared_ptr<const ejson::Object> tmpObject = m_config->getObject("map-on");
|
||||
const std11::shared_ptr<const ejson::Object> tmpObject = m_config->getObject("map-on");
|
||||
if (tmpObject == nullptr) {
|
||||
RIVER_WARNING("missing node : 'map-on' ==> auto map : 'auto:default'");
|
||||
} else {
|
||||
@@ -214,22 +218,30 @@ river::io::NodeAirTAudio::NodeAirTAudio(const std::string& _name, const std::sha
|
||||
if (m_isInput == true) {
|
||||
err = m_adac.openStream(nullptr, ¶ms,
|
||||
hardwareFormat.getFormat(), hardwareFormat.getFrequency(), &m_rtaudioFrameSize,
|
||||
std::bind(&river::io::NodeAirTAudio::recordCallback,
|
||||
this,
|
||||
std::placeholders::_1,
|
||||
std::placeholders::_2,
|
||||
std::placeholders::_5,
|
||||
std::placeholders::_6)
|
||||
std11::bind(&river::io::NodeAirTAudio::recordCallback,
|
||||
this,
|
||||
#if __cplusplus >= 201103L
|
||||
std::placeholders::_1,
|
||||
std::placeholders::_2,
|
||||
std::placeholders::_5,
|
||||
std::placeholders::_6)
|
||||
#else
|
||||
_1, _2, _5, _6)
|
||||
#endif
|
||||
);
|
||||
} else {
|
||||
err = m_adac.openStream(¶ms, nullptr,
|
||||
hardwareFormat.getFormat(), hardwareFormat.getFrequency(), &m_rtaudioFrameSize,
|
||||
std::bind(&river::io::NodeAirTAudio::playbackCallback,
|
||||
this,
|
||||
std::placeholders::_3,
|
||||
std::placeholders::_4,
|
||||
std::placeholders::_5,
|
||||
std::placeholders::_6)
|
||||
std11::bind(&river::io::NodeAirTAudio::playbackCallback,
|
||||
this,
|
||||
#if __cplusplus >= 201103L
|
||||
std::placeholders::_3,
|
||||
std::placeholders::_4,
|
||||
std::placeholders::_5,
|
||||
std::placeholders::_6)
|
||||
#else
|
||||
_3, _4, _5, _6)
|
||||
#endif
|
||||
);
|
||||
}
|
||||
if (err != airtaudio::error_none) {
|
||||
@@ -239,7 +251,7 @@ river::io::NodeAirTAudio::NodeAirTAudio(const std::string& _name, const std::sha
|
||||
}
|
||||
|
||||
river::io::NodeAirTAudio::~NodeAirTAudio() {
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
std11::unique_lock<std11::mutex> lock(m_mutex);
|
||||
RIVER_INFO("close input stream");
|
||||
if (m_adac.isStreamOpen() ) {
|
||||
m_adac.closeStream();
|
||||
@@ -247,7 +259,7 @@ river::io::NodeAirTAudio::~NodeAirTAudio() {
|
||||
};
|
||||
|
||||
void river::io::NodeAirTAudio::start() {
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
std11::unique_lock<std11::mutex> lock(m_mutex);
|
||||
RIVER_INFO("Start stream : '" << m_name << "' mode=" << (m_isInput?"input":"output") );
|
||||
enum airtaudio::error err = m_adac.startStream();
|
||||
if (err != airtaudio::error_none) {
|
||||
@@ -256,7 +268,7 @@ void river::io::NodeAirTAudio::start() {
|
||||
}
|
||||
|
||||
void river::io::NodeAirTAudio::stop() {
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
std11::unique_lock<std11::mutex> lock(m_mutex);
|
||||
RIVER_INFO("Stop stream : '" << m_name << "' mode=" << (m_isInput?"input":"output") );
|
||||
enum airtaudio::error err = m_adac.stopStream();
|
||||
if (err != airtaudio::error_none) {
|
||||
|
Reference in New Issue
Block a user