// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "audio_core/opus/decoder_manager.h" #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" namespace Service::Audio { class IHardwareOpusDecoder; using AudioCore::OpusDecoder::OpusMultiStreamParameters; using AudioCore::OpusDecoder::OpusMultiStreamParametersEx; using AudioCore::OpusDecoder::OpusParameters; using AudioCore::OpusDecoder::OpusParametersEx; class IHardwareOpusDecoderManager final : public ServiceFramework { public: explicit IHardwareOpusDecoderManager(Core::System& system_); ~IHardwareOpusDecoderManager() override; private: Result OpenHardwareOpusDecoder(Out> out_decoder, OpusParameters params, u32 tmem_size, InCopyHandle tmem_handle); Result GetWorkBufferSize(Out out_size, OpusParameters params); Result OpenHardwareOpusDecoderForMultiStream( Out> out_decoder, InLargeData params, u32 tmem_size, InCopyHandle tmem_handle); Result GetWorkBufferSizeForMultiStream( Out out_size, InLargeData params); Result OpenHardwareOpusDecoderEx(Out> out_decoder, OpusParametersEx params, u32 tmem_size, InCopyHandle tmem_handle); Result GetWorkBufferSizeEx(Out out_size, OpusParametersEx params); Result OpenHardwareOpusDecoderForMultiStreamEx( Out> out_decoder, InLargeData params, u32 tmem_size, InCopyHandle tmem_handle); Result GetWorkBufferSizeForMultiStreamEx( Out out_size, InLargeData params); Result GetWorkBufferSizeExEx(Out out_size, OpusParametersEx params); Result GetWorkBufferSizeForMultiStreamExEx( Out out_size, InLargeData params); Core::System& system; AudioCore::OpusDecoder::OpusDecoderManager impl; }; } // namespace Service::Audio