blob: 4e70cc556a785073f52883e08281ec71436edf97 [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/stream_usage.h"
namespace media::audio {
std::optional<fuchsia::media::AudioRenderUsage> FidlRenderUsageFromRenderUsage(RenderUsage u) {
auto underlying = static_cast<std::underlying_type_t<RenderUsage>>(u);
if (underlying < fuchsia::media::RENDER_USAGE_COUNT) {
return {static_cast<fuchsia::media::AudioRenderUsage>(underlying)};
}
return {};
}
std::optional<fuchsia::media::AudioCaptureUsage> FidlCaptureUsageFromCaptureUsage(CaptureUsage u) {
auto underlying = static_cast<std::underlying_type_t<CaptureUsage>>(u);
if (underlying < fuchsia::media::CAPTURE_USAGE_COUNT) {
return {static_cast<fuchsia::media::AudioCaptureUsage>(underlying)};
}
return {};
}
StreamUsage StreamUsageFromFidlUsage(const fuchsia::media::Usage& usage) {
if (usage.is_render_usage()) {
return StreamUsage::WithRenderUsage(usage.render_usage());
} else if (usage.is_capture_usage()) {
return StreamUsage::WithCaptureUsage(usage.capture_usage());
} else {
return StreamUsage();
}
}
const char* RenderUsageToString(const RenderUsage& usage) {
switch (usage) {
#define EXPAND_RENDER_USAGE(U) \
case RenderUsage::U: \
return "RenderUsage::" #U;
EXPAND_EACH_RENDER_USAGE
#undef EXPAND_RENDER_USAGE
}
}
const char* CaptureUsageToString(const CaptureUsage& usage) {
switch (usage) {
#define EXPAND_CAPTURE_USAGE(U) \
case CaptureUsage::U: \
return "CaptureUsage::" #U;
EXPAND_EACH_CAPTURE_USAGE
#undef EXPAND_CAPTURE_USAGE
}
}
const char* StreamUsage::ToString() const {
if (is_render_usage()) {
return RenderUsageToString(render_usage());
} else if (is_capture_usage()) {
return CaptureUsageToString(capture_usage());
} else {
return "(empty usage)";
}
}
} // namespace media::audio