FP Perception 0.1.2
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
fp_perception::AudioBuffer Class Reference

#include <audio_buffer.hpp>

Collaboration diagram for fp_perception::AudioBuffer:
Collaboration graph
[legend]

Public Member Functions

void append (const audio_data &data, int max_duration_seconds)
 
void append (const audio_data &data, int max_duration_seconds, const rclcpp::Time &end_time)
 
void waitForAudio (std::chrono::seconds timeout=std::chrono::seconds(5))
 
audio_data readLatest (int duration_seconds)
 
audio_data readWindow (const rclcpp::Time &start_time, int duration_seconds)
 
void waitForWindow (const rclcpp::Time &start_time, int duration_seconds, std::chrono::seconds timeout=std::chrono::seconds(30))
 
rclcpp::Time startTime () const
 
rclcpp::Time endTime () const
 

Static Public Attributes

static constexpr const char * kExpiredAudioSliceError
 

Private Member Functions

bool isInitializedLocked () const
 
rclcpp::Time currentEndTimeLocked () const
 
bool isExpiredLocked (const rclcpp::Time &start_time) const
 

Static Private Member Functions

static rclcpp::Duration framesToDuration (size_t frames, int sample_rate)
 
static size_t durationToFrames (const rclcpp::Duration &duration, int sample_rate)
 

Private Attributes

audio_data buffer_
 
std::mutex mutex_
 
std::condition_variable condition_variable_
 
uint64_t total_samples_ { 0 }
 
uint64_t total_frames_ { 0 }
 
int max_duration_seconds_ { 0 }
 
bool initialized_time_ { false }
 
rclcpp::Time buffer_start_time_ { 0, 0, RCL_ROS_TIME }
 
rclcpp::Time buffer_end_time_ { 0, 0, RCL_ROS_TIME }
 

Member Function Documentation

◆ append() [1/2]

void fp_perception::AudioBuffer::append ( const audio_data data,
int  max_duration_seconds 
)
inline

◆ append() [2/2]

void fp_perception::AudioBuffer::append ( const audio_data data,
int  max_duration_seconds,
const rclcpp::Time &  end_time 
)
inline

◆ currentEndTimeLocked()

rclcpp::Time fp_perception::AudioBuffer::currentEndTimeLocked ( ) const
inlineprivate

◆ durationToFrames()

static size_t fp_perception::AudioBuffer::durationToFrames ( const rclcpp::Duration &  duration,
int  sample_rate 
)
inlinestaticprivate

◆ endTime()

rclcpp::Time fp_perception::AudioBuffer::endTime ( ) const
inline

◆ framesToDuration()

static rclcpp::Duration fp_perception::AudioBuffer::framesToDuration ( size_t  frames,
int  sample_rate 
)
inlinestaticprivate

◆ isExpiredLocked()

bool fp_perception::AudioBuffer::isExpiredLocked ( const rclcpp::Time &  start_time) const
inlineprivate

◆ isInitializedLocked()

bool fp_perception::AudioBuffer::isInitializedLocked ( ) const
inlineprivate

◆ readLatest()

audio_data fp_perception::AudioBuffer::readLatest ( int  duration_seconds)
inline

◆ readWindow()

audio_data fp_perception::AudioBuffer::readWindow ( const rclcpp::Time &  start_time,
int  duration_seconds 
)
inline

◆ startTime()

rclcpp::Time fp_perception::AudioBuffer::startTime ( ) const
inline

◆ waitForAudio()

void fp_perception::AudioBuffer::waitForAudio ( std::chrono::seconds  timeout = std::chrono::seconds(5))
inline

◆ waitForWindow()

void fp_perception::AudioBuffer::waitForWindow ( const rclcpp::Time &  start_time,
int  duration_seconds,
std::chrono::seconds  timeout = std::chrono::seconds(30) 
)
inline

Member Data Documentation

◆ buffer_

audio_data fp_perception::AudioBuffer::buffer_
private

◆ buffer_end_time_

rclcpp::Time fp_perception::AudioBuffer::buffer_end_time_ { 0, 0, RCL_ROS_TIME }
private

◆ buffer_start_time_

rclcpp::Time fp_perception::AudioBuffer::buffer_start_time_ { 0, 0, RCL_ROS_TIME }
private

◆ condition_variable_

std::condition_variable fp_perception::AudioBuffer::condition_variable_
private

◆ initialized_time_

bool fp_perception::AudioBuffer::initialized_time_ { false }
private

◆ kExpiredAudioSliceError

constexpr const char* fp_perception::AudioBuffer::kExpiredAudioSliceError
staticconstexpr
Initial value:
= "error: requested audio slice is expired. for future "
"interactions, increase the audio retention window parameter."

◆ max_duration_seconds_

int fp_perception::AudioBuffer::max_duration_seconds_ { 0 }
private

◆ mutex_

std::mutex fp_perception::AudioBuffer::mutex_
mutableprivate

◆ total_frames_

uint64_t fp_perception::AudioBuffer::total_frames_ { 0 }
private

◆ total_samples_

uint64_t fp_perception::AudioBuffer::total_samples_ { 0 }
private

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