summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/iridium/Makefile1
-rw-r--r--www/iridium/files/audio_manager_openbsd.cc6
-rw-r--r--www/iridium/files/sndio_input.cc17
-rw-r--r--www/iridium/files/sndio_input.h1
-rw-r--r--www/iridium/files/sndio_output.cc16
5 files changed, 18 insertions, 23 deletions
diff --git a/www/iridium/Makefile b/www/iridium/Makefile
index 05c0a11e339e..5588f0f4f82b 100644
--- a/www/iridium/Makefile
+++ b/www/iridium/Makefile
@@ -60,6 +60,7 @@ RUN_DEPENDS= xdg-open:devel/xdg-utils \
noto-lite>0:x11-fonts/noto-lite
ONLY_FOR_ARCHS= amd64 i386
+
USES= bison desktop-file-utils jpeg ninja perl5 pkgconfig \
python:2.7,build shebangfix tar:xz
USE_GL= gl
diff --git a/www/iridium/files/audio_manager_openbsd.cc b/www/iridium/files/audio_manager_openbsd.cc
index ee293b9d3791..1b021dd0833a 100644
--- a/www/iridium/files/audio_manager_openbsd.cc
+++ b/www/iridium/files/audio_manager_openbsd.cc
@@ -73,7 +73,7 @@ AudioParameters AudioManagerOpenBSD::GetInputStreamParameters(
return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
- kDefaultSampleRate, buffer_size);
+ kDefaultSampleRate, 16, buffer_size);
}
AudioManagerOpenBSD::AudioManagerOpenBSD(std::unique_ptr<AudioThread> audio_thread,
@@ -130,8 +130,10 @@ AudioParameters AudioManagerOpenBSD::GetPreferredOutputStreamParameters(
ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
int sample_rate = kDefaultSampleRate;
int buffer_size = kDefaultOutputBufferSize;
+ int bits_per_sample = 16;
if (input_params.IsValid()) {
sample_rate = input_params.sample_rate();
+ bits_per_sample = input_params.bits_per_sample();
channel_layout = input_params.channel_layout();
buffer_size = std::min(buffer_size, input_params.frames_per_buffer());
}
@@ -142,7 +144,7 @@ AudioParameters AudioManagerOpenBSD::GetPreferredOutputStreamParameters(
return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
- sample_rate, buffer_size);
+ sample_rate, bits_per_sample, buffer_size);
}
AudioInputStream* AudioManagerOpenBSD::MakeInputStream(
diff --git a/www/iridium/files/sndio_input.cc b/www/iridium/files/sndio_input.cc
index 4a00d8ac1083..3cf19a8a2d6d 100644
--- a/www/iridium/files/sndio_input.cc
+++ b/www/iridium/files/sndio_input.cc
@@ -15,13 +15,11 @@
namespace media {
-static const SampleFormat kSampleFormat = kSampleFormatS16;
-
void sndio_in_onmove(void *arg, int delta) {
NOTIMPLEMENTED();
SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
- self->hw_delay_ = delta - self->params_.GetBytesPerFrame(kSampleFormat);
+ self->hw_delay_ = delta - self->params_.GetBytesPerFrame();
}
void *sndio_in_threadstart(void *arg) {
@@ -38,7 +36,9 @@ SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* audio_manager,
: audio_manager_(audio_manager),
device_name_(device_name),
params_(params),
- bytes_per_buffer_(params.GetBytesPerBuffer(kSampleFormat)),
+ bytes_per_buffer_(params.frames_per_buffer() *
+ (params.channels() * params.bits_per_sample()) /
+ 8),
buffer_duration_(base::TimeDelta::FromMicroseconds(
params.frames_per_buffer() * base::Time::kMicrosecondsPerSecond /
static_cast<float>(params.sample_rate()))),
@@ -66,7 +66,7 @@ bool SndioAudioInputStream::Open() {
sio_initpar(&par);
par.rate = params_.sample_rate();
par.pchan = params_.channels();
- par.bits = SampleFormatToBytesPerChannel(kSampleFormat);
+ par.bits = params_.bits_per_sample();
par.bps = par.bits / 8;
par.sig = sig = par.bits != 8 ? 1 : 0;
par.le = SIO_LE_NATIVE;
@@ -88,7 +88,7 @@ bool SndioAudioInputStream::Open() {
if (par.rate != (unsigned int)params_.sample_rate() ||
par.pchan != (unsigned int)params_.channels() ||
- par.bits != (unsigned int)SampleFormatToBytesPerChannel(kSampleFormat) ||
+ par.bits != (unsigned int)params_.bits_per_sample() ||
par.sig != (unsigned int)sig ||
(par.bps > 1 && par.le != SIO_LE_NATIVE) ||
(par.bits != par.bps * 8)) {
@@ -162,9 +162,4 @@ bool SndioAudioInputStream::IsMuted() {
return false;
}
-void SndioAudioInputStream::SetOutputDeviceForAec(
- const std::string& output_device_id) {
-// Not supported. Do nothing.
-}
-
} // namespace media
diff --git a/www/iridium/files/sndio_input.h b/www/iridium/files/sndio_input.h
index 2f3fca97a3a3..b354f66fd55a 100644
--- a/www/iridium/files/sndio_input.h
+++ b/www/iridium/files/sndio_input.h
@@ -59,7 +59,6 @@ class SndioAudioInputStream : public AgcAudioStream<AudioInputStream> {
void SetVolume(double volume) override;
double GetVolume() override;
bool IsMuted() override;
- void SetOutputDeviceForAec(const std::string& output_device_id) override;
// C-linkage call-backs are friends to access private data
friend void sndio_in_onmove(void *arg, int delta);
diff --git a/www/iridium/files/sndio_output.cc b/www/iridium/files/sndio_output.cc
index e9053d34b8aa..27c6c1db285a 100644
--- a/www/iridium/files/sndio_output.cc
+++ b/www/iridium/files/sndio_output.cc
@@ -11,8 +11,6 @@
namespace media {
-static const SampleFormat kSampleFormat = kSampleFormatS16;
-
void sndio_onmove(void *arg, int delta) {
SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
@@ -37,7 +35,7 @@ SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params,
: manager(manager),
params(params),
audio_bus(AudioBus::Create(params)),
- bytes_per_frame(params.GetBytesPerFrame(kSampleFormat)),
+ bytes_per_frame(params.GetBytesPerFrame()),
state(kClosed),
mutex(PTHREAD_MUTEX_INITIALIZER) {
}
@@ -59,7 +57,7 @@ bool SndioAudioOutputStream::Open() {
sio_initpar(&par);
par.rate = params.sample_rate();
par.pchan = params.channels();
- par.bits = SampleFormatToBitsPerChannel(kSampleFormat);
+ par.bits = params.bits_per_sample();
par.bps = par.bits / 8;
par.sig = sig = par.bits != 8 ? 1 : 0;
par.le = SIO_LE_NATIVE;
@@ -76,7 +74,7 @@ bool SndioAudioOutputStream::Open() {
}
if (par.rate != (unsigned int)params.sample_rate() ||
par.pchan != (unsigned int)params.channels() ||
- par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) ||
+ par.bits != (unsigned int)params.bits_per_sample() ||
par.sig != (unsigned int)sig ||
(par.bps > 1 && par.le != SIO_LE_NATIVE) ||
(par.bits != par.bps * 8)) {
@@ -86,7 +84,7 @@ bool SndioAudioOutputStream::Open() {
state = kStopped;
volpending = 0;
vol = 0;
- buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)];
+ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame()];
sio_onmove(hdl, sndio_onmove, this);
sio_onvol(hdl, sndio_onvol, this);
return true;
@@ -155,16 +153,16 @@ void SndioAudioOutputStream::RealTimeThread(void) {
// Get data to play
const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, params.sample_rate() * 1000);
count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get());
- audio_bus->ToInterleaved(count, SampleFormatToBytesPerChannel(kSampleFormat), buffer);
+ audio_bus->ToInterleaved(count, params.bits_per_sample() / 8, buffer);
if (count == 0) {
// We have to submit something to the device
count = audio_bus->frames();
- memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat));
+ memset(buffer, 0, count * params.GetBytesPerFrame());
LOG(WARNING) << "No data to play, running empty cycle.";
}
// Submit data to the device
- avail = count * params.GetBytesPerFrame(kSampleFormat);
+ avail = count * params.GetBytesPerFrame();
count = sio_write(hdl, buffer, avail);
if (count == 0) {
LOG(WARNING) << "Audio device disconnected.";