32 std::size_t index = 0;
33 for (
const auto& channel_data : audio_data.
channel_data()) {
34 if (channel_data.channel_type() == ChannelType::RAW) {
41void AudioInfo::InsertChannelData(
const std::size_t index,
44 while (index >= signals_.size()) {
45 signals_.push_back(std::deque<double>());
48 const std::string& data = channel_data.
data();
49 for (std::size_t i = 0; i < data.length(); i += width) {
50 int16_t signal = ((int16_t(data[i + 1])) << 8) | (0x00ff & data[i]);
51 signals_[index].push_back(
static_cast<double>(signal));
53 std::size_t max_signal_length =
static_cast<std::size_t
>(
54 FLAGS_cache_signal_time * microphone_config.
sample_rate());
55 while (signals_[index].size() > max_signal_length) {
56 signals_[index].pop_front();
61 const int signal_length) {
62 std::vector<std::vector<double>> signals;
63 for (std::size_t i = 0; i < signals_.size(); ++i) {
64 int start_index =
static_cast<int>(signals_[i].size()) - signal_length;
65 start_index = std::max(0, start_index);
66 std::deque<double>::iterator iter = signals_[i].begin();
68 std::vector<double> signal(iter, signals_[i].end());
69 signals.push_back(signal);
std::vector< std::vector< double > > GetSignals(const int signal_length)
void Insert(const apollo::drivers::microphone::config::AudioData &)
optional MicrophoneConfig microphone_config
repeated ChannelData channel_data
optional int32 sample_width
optional float sample_rate