yuzu/src/audio_core/opus/decoder_manager.h

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

39 lines
1.2 KiB
C++
Raw Normal View History

2023-08-31 14:09:15 +00:00
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
#pragma once
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
#include "audio_core/opus/hardware_opus.h"
#include "audio_core/opus/parameters.h"
#include "common/common_types.h"
#include "core/hle/service/audio/errors.h"
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
namespace Core {
class System;
}
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
namespace AudioCore::OpusDecoder {
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
class OpusDecoderManager {
public:
OpusDecoderManager(Core::System& system);
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
HardwareOpus& GetHardwareOpus() {
return hardware_opus;
}
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
Result GetWorkBufferSize(OpusParameters& params, u64& out_size);
Result GetWorkBufferSizeEx(OpusParametersEx& params, u64& out_size);
Result GetWorkBufferSizeExEx(OpusParametersEx& params, u64& out_size);
Result GetWorkBufferSizeForMultiStream(OpusMultiStreamParameters& params, u64& out_size);
Result GetWorkBufferSizeForMultiStreamEx(OpusMultiStreamParametersEx& params, u64& out_size);
Result GetWorkBufferSizeForMultiStreamExEx(OpusMultiStreamParametersEx& params, u64& out_size);
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
private:
Core::System& system;
HardwareOpus hardware_opus;
std::array<u64, MaxChannels> required_workbuffer_sizes{};
};
2023-11-04 18:25:40 +00:00
2023-08-31 14:09:15 +00:00
} // namespace AudioCore::OpusDecoder