blob: 4dbd791bf07b27a31bb62f1f7d87080cbbc318c8 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/media/audio/audio_core/testing/fake_stream.h"
#include <lib/syslog/cpp/macros.h>
namespace media::audio::testing {
FakeStream::FakeStream(const Format& format, size_t max_buffer_size, zx::clock clock)
: ReadableStream(format), audio_clock_(AudioClock::ClientFixed(std::move(clock))) {
buffer_size_ = max_buffer_size;
buffer_ = std::make_unique<uint8_t[]>(buffer_size_);
memset(buffer_.get(), 0, buffer_size_);
}
std::optional<ReadableStream::Buffer> FakeStream::ReadLock(Fixed frame, size_t frame_count) {
FX_CHECK(frame_count * format().bytes_per_frame() < buffer_size_);
return std::make_optional<ReadableStream::Buffer>(frame, Fixed(frame_count), buffer_.get(), true,
usage_mask_, gain_db_);
}
ReadableStream::TimelineFunctionSnapshot FakeStream::ref_time_to_frac_presentation_frame() const {
auto [timeline_function, generation] = timeline_function_->get();
return {
.timeline_function = timeline_function,
.generation = generation,
};
}
} // namespace media::audio::testing