static void HalMessageCallback(const char *name, int value, void *user_data);
// Todo : following value may vary depends on targets
- static constexpr int default_frames = 6400;
- static constexpr int default_periods = 5;
- static constexpr int default_rate = 44100;
+ static constexpr int default_buffer_size = 16384;
+ static constexpr int default_periods = 4;
+ static constexpr int default_period_size = default_buffer_size / default_periods;
+ static constexpr int default_rate = 48000;
static constexpr int default_channels = 2;
void *m_h;
cout << "start to play dtmf+noise sounds ( " << res_path << " ) for 5 sec. " << endl;
- vector<char> buffer(65536);
+ vector<char> buffer(FramesToBytes(default_buffer_size));
+ cout << "allocated temporal buffer size " << buffer.size() << " bytes" << endl;
while (true) {
ret = hal_audio_pcm_avail(m_h, pcm_h, &avail_frames);
}
#ifdef USE_IFSTREAM
- fs.read(buffer.data(), FramesToBytes(avail_frames));
+ fs.read(buffer.data(), min(FramesToBytes(avail_frames), static_cast<uint32_t>(buffer.size())));
bytes_read = fs.gcount();
#else
- bytes_read = read(fd, buffer.data(), FramesToBytes(avail_frames));
+ bytes_read = read(fd, buffer.data(), min(FramesToBytes(avail_frames), static_cast<uint32_t>(buffer.size())));
#endif
cout << "avail frames : " << avail_frames << ", read_n : " << bytes_read << endl;
uint32_t AudioHalTest::GetDefaultFrames() const
{
- return BytesToFrames(default_frames);
+ return default_period_size;
}
void AudioHalTest::HalMessageCallback(const char *name, int value, void *user_data)
ASSERT_EQ(ret, AUDIO_RET_OK);
+ vector<char> buffer(FramesToBytes(default_period_size));
+ ret = hal_audio_pcm_write(m_h, pcm_h, buffer.data(), default_period_size);
+ EXPECT_EQ(ret, AUDIO_RET_OK);
+
ret = hal_audio_pcm_start(m_h, pcm_h);
EXPECT_EQ(ret, AUDIO_RET_OK);