diff options
| author | st4rk <zeromythos@ufrn.edu.br> | 2018-01-21 19:03:36 -0800 | 
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2018-01-21 22:03:36 -0500 | 
| commit | 07355cf7cc114d27c34d2b61a35f929a6db3f8fb (patch) | |
| tree | 35381b658ed1f3014813aecd7c58ac289de41032 /src/core/hle/service | |
| parent | fdbb039427b077ef92532f07e4b4e730457a1057 (diff) | |
Added stubs for audio services. (#116)
* stubs for audout:u, audin:u, audrec:u, audren:u, codecctl and decoding tables with nullptr for future implementations
* fixing the changes requested (remove private, explicit)
Diffstat (limited to 'src/core/hle/service')
| -rw-r--r-- | src/core/hle/service/audio/audin_u.cpp | 41 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audin_u.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audio.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audout_u.cpp | 43 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audout_u.h | 5 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audrec_u.cpp | 38 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audrec_u.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.cpp | 44 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/audio/codecctl.cpp | 33 | ||||
| -rw-r--r-- | src/core/hle/service/audio/codecctl.h | 23 | 
11 files changed, 299 insertions, 5 deletions
| diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp new file mode 100644 index 000000000..ee749fddd --- /dev/null +++ b/src/core/hle/service/audio/audin_u.cpp @@ -0,0 +1,41 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/logging/log.h" +#include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/hle_ipc.h" +#include "core/hle/service/audio/audin_u.h" + +namespace Service { +namespace Audio { + +class IAudioIn final : public ServiceFramework<IAudioIn> { +public: +    IAudioIn() : ServiceFramework("IAudioIn") { +        static const FunctionInfo functions[] = { +            {0x0, nullptr, "GetAudioInState"}, +            {0x1, nullptr, "StartAudioIn"}, +            {0x2, nullptr, "StopAudioIn"}, +            {0x3, nullptr, "AppendAudioInBuffer_1"}, +            {0x4, nullptr, "RegisterBufferEvent"}, +            {0x5, nullptr, "GetReleasedAudioInBuffer_1"}, +            {0x6, nullptr, "ContainsAudioInBuffer"}, +            {0x7, nullptr, "AppendAudioInBuffer_2"}, +            {0x8, nullptr, "GetReleasedAudioInBuffer_2"}, +        }; +        RegisterHandlers(functions); +    } +    ~IAudioIn() = default; +}; + +AudInU::AudInU() : ServiceFramework("audin:u") { +    static const FunctionInfo functions[] = { +        {0x00000000, nullptr, "ListAudioIns"}, +        {0x00000001, nullptr, "OpenAudioIn"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/audin_u.h b/src/core/hle/service/audio/audin_u.h new file mode 100644 index 000000000..2b8576756 --- /dev/null +++ b/src/core/hle/service/audio/audin_u.h @@ -0,0 +1,23 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/service.h" + +namespace Kernel { +class HLERequestContext; +} + +namespace Service { +namespace Audio { + +class AudInU final : public ServiceFramework<AudInU> { +public: +    explicit AudInU(); +    ~AudInU() = default; +}; + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/audio.cpp b/src/core/hle/service/audio/audio.cpp index 2b4c6c5d0..3f7fb44eb 100644 --- a/src/core/hle/service/audio/audio.cpp +++ b/src/core/hle/service/audio/audio.cpp @@ -2,14 +2,22 @@  // Licensed under GPLv2 or any later version  // Refer to the license.txt file included. +#include "core/hle/service/audio/audin_u.h"  #include "core/hle/service/audio/audio.h"  #include "core/hle/service/audio/audout_u.h" +#include "core/hle/service/audio/audrec_u.h" +#include "core/hle/service/audio/audren_u.h" +#include "core/hle/service/audio/codecctl.h"  namespace Service {  namespace Audio {  void InstallInterfaces(SM::ServiceManager& service_manager) {      std::make_shared<AudOutU>()->InstallAsService(service_manager); +    std::make_shared<AudInU>()->InstallAsService(service_manager); +    std::make_shared<AudRecU>()->InstallAsService(service_manager); +    std::make_shared<AudRenU>()->InstallAsService(service_manager); +    std::make_shared<CodecCtl>()->InstallAsService(service_manager);  }  } // namespace Audio diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index c028262c6..8ecfef413 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp @@ -4,21 +4,56 @@  #include "common/logging/log.h"  #include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/hle_ipc.h"  #include "core/hle/service/audio/audout_u.h"  namespace Service {  namespace Audio { +class IAudioOut final : public ServiceFramework<IAudioOut> { +public: +    IAudioOut() : ServiceFramework("IAudioOut") { +        static const FunctionInfo functions[] = { +            {0x0, nullptr, "GetAudioOutState"}, +            {0x1, nullptr, "StartAudioOut"}, +            {0x2, nullptr, "StopAudioOut"}, +            {0x3, nullptr, "AppendAudioOutBuffer_1"}, +            {0x4, nullptr, "RegisterBufferEvent"}, +            {0x5, nullptr, "GetReleasedAudioOutBuffer_1"}, +            {0x6, nullptr, "ContainsAudioOutBuffer"}, +            {0x7, nullptr, "AppendAudioOutBuffer_2"}, +            {0x8, nullptr, "GetReleasedAudioOutBuffer_2"}, +        }; +        RegisterHandlers(functions); +    } +    ~IAudioOut() = default; +}; +  void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) {      LOG_WARNING(Service, "(STUBBED) called"); -    IPC::RequestBuilder rb{ctx, 2}; +    IPC::RequestParser rp{ctx}; + +    auto& buffer = ctx.BufferDescriptorB()[0]; +    const std::string audio_interface = "AudioInterface"; + +    Memory::WriteBlock(buffer.Address(), &audio_interface[0], audio_interface.size()); + +    IPC::RequestBuilder rb = rp.MakeBuilder(3, 0, 0, 0); +      rb.Push(RESULT_SUCCESS); +    // TODO(st4rk): we're currently returning only one audio interface +    // (stringlist size) +    // however, it's highly possible to have more than one interface (despite that +    // libtransistor +    // requires only one). +    rb.Push<u32>(1);  }  AudOutU::AudOutU() : ServiceFramework("audout:u") { -    static const FunctionInfo functions[] = { -        {0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, -    }; +    static const FunctionInfo functions[] = {{0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, +                                             {0x00000001, nullptr, "OpenAudioOut"}, +                                             {0x00000002, nullptr, "Unknown2"}, +                                             {0x00000003, nullptr, "Unknown3"}};      RegisterHandlers(functions);  } diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h index 42680af94..17529245b 100644 --- a/src/core/hle/service/audio/audout_u.h +++ b/src/core/hle/service/audio/audout_u.h @@ -4,9 +4,12 @@  #pragma once -#include "core/hle/kernel/hle_ipc.h"  #include "core/hle/service/service.h" +namespace Kernel { +class HLERequestContext; +} +  namespace Service {  namespace Audio { diff --git a/src/core/hle/service/audio/audrec_u.cpp b/src/core/hle/service/audio/audrec_u.cpp new file mode 100644 index 000000000..f2626ec70 --- /dev/null +++ b/src/core/hle/service/audio/audrec_u.cpp @@ -0,0 +1,38 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/logging/log.h" +#include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/hle_ipc.h" +#include "core/hle/service/audio/audrec_u.h" + +namespace Service { +namespace Audio { + +class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> { +public: +    IFinalOutputRecorder() : ServiceFramework("IFinalOutputRecorder") { +        static const FunctionInfo functions[] = { +            {0x0, nullptr, "GetFinalOutputRecorderState"}, +            {0x1, nullptr, "StartFinalOutputRecorder"}, +            {0x2, nullptr, "StopFinalOutputRecorder"}, +            {0x3, nullptr, "AppendFinalOutputRecorderBuffer"}, +            {0x4, nullptr, "RegisterBufferEvent"}, +            {0x5, nullptr, "GetReleasedFinalOutputRecorderBuffer"}, +            {0x6, nullptr, "ContainsFinalOutputRecorderBuffer"}, +        }; +        RegisterHandlers(functions); +    } +    ~IFinalOutputRecorder() = default; +}; + +AudRecU::AudRecU() : ServiceFramework("audrec:u") { +    static const FunctionInfo functions[] = { +        {0x00000000, nullptr, "OpenFinalOutputRecorder"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/audrec_u.h b/src/core/hle/service/audio/audrec_u.h new file mode 100644 index 000000000..c31e412c1 --- /dev/null +++ b/src/core/hle/service/audio/audrec_u.h @@ -0,0 +1,23 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/service.h" + +namespace Kernel { +class HLERequestContext; +} + +namespace Service { +namespace Audio { + +class AudRecU final : public ServiceFramework<AudRecU> { +public: +    explicit AudRecU(); +    ~AudRecU() = default; +}; + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp new file mode 100644 index 000000000..4bafdfac3 --- /dev/null +++ b/src/core/hle/service/audio/audren_u.cpp @@ -0,0 +1,44 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/logging/log.h" +#include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/hle_ipc.h" +#include "core/hle/service/audio/audren_u.h" + +namespace Service { +namespace Audio { + +class IAudioRenderer final : public ServiceFramework<IAudioRenderer> { +public: +    IAudioRenderer() : ServiceFramework("IAudioRenderer") { +        static const FunctionInfo functions[] = { +            {0x0, nullptr, "GetAudioRendererSampleRate"}, +            {0x1, nullptr, "GetAudioRendererSampleCount"}, +            {0x2, nullptr, "GetAudioRendererMixBufferCount"}, +            {0x3, nullptr, "GetAudioRendererState"}, +            {0x4, nullptr, "RequestUpdateAudioRenderer"}, +            {0x5, nullptr, "StartAudioRenderer"}, +            {0x6, nullptr, "StopAudioRenderer"}, +            {0x7, nullptr, "QuerySystemEvent"}, +            {0x8, nullptr, "SetAudioRendererRenderingTimeLimit"}, +            {0x9, nullptr, "GetAudioRendererRenderingTimeLimit"}, +        }; +        RegisterHandlers(functions); +    } +    ~IAudioRenderer() = default; +}; + +AudRenU::AudRenU() : ServiceFramework("audren:u") { +    static const FunctionInfo functions[] = { +        {0x00000000, nullptr, "OpenAudioRenderer"}, +        {0x00000001, nullptr, "GetAudioRendererWorkBufferSize"}, +        {0x00000002, nullptr, "GetAudioRenderersProcessMasterVolume"}, +        {0x00000003, nullptr, "SetAudioRenderersProcessMasterVolume"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/audren_u.h b/src/core/hle/service/audio/audren_u.h new file mode 100644 index 000000000..1d9264c72 --- /dev/null +++ b/src/core/hle/service/audio/audren_u.h @@ -0,0 +1,23 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/service.h" + +namespace Kernel { +class HLERequestContext; +} + +namespace Service { +namespace Audio { + +class AudRenU final : public ServiceFramework<AudRenU> { +public: +    explicit AudRenU(); +    ~AudRenU() = default; +}; + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/codecctl.cpp b/src/core/hle/service/audio/codecctl.cpp new file mode 100644 index 000000000..d2a7f4cd0 --- /dev/null +++ b/src/core/hle/service/audio/codecctl.cpp @@ -0,0 +1,33 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/logging/log.h" +#include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/hle_ipc.h" +#include "core/hle/service/audio/codecctl.h" + +namespace Service { +namespace Audio { + +CodecCtl::CodecCtl() : ServiceFramework("codecctl") { +    static const FunctionInfo functions[] = { +        {0x00000000, nullptr, "InitializeCodecController"}, +        {0x00000001, nullptr, "FinalizeCodecController"}, +        {0x00000002, nullptr, "SleepCodecController"}, +        {0x00000003, nullptr, "WakeCodecController"}, +        {0x00000004, nullptr, "SetCodecVolume"}, +        {0x00000005, nullptr, "GetCodecVolumeMax"}, +        {0x00000006, nullptr, "GetCodecVolumeMin"}, +        {0x00000007, nullptr, "SetCodecActiveTarget"}, +        {0x00000008, nullptr, "Unknown"}, +        {0x00000009, nullptr, "BindCodecHeadphoneMicJackInterrupt"}, +        {0x0000000A, nullptr, "IsCodecHeadphoneMicJackInserted"}, +        {0x0000000B, nullptr, "ClearCodecHeadphoneMicJackInterrupt"}, +        {0x0000000C, nullptr, "IsCodecDeviceRequested"}, +    }; +    RegisterHandlers(functions); +} + +} // namespace Audio +} // namespace Service diff --git a/src/core/hle/service/audio/codecctl.h b/src/core/hle/service/audio/codecctl.h new file mode 100644 index 000000000..1121ab0b1 --- /dev/null +++ b/src/core/hle/service/audio/codecctl.h @@ -0,0 +1,23 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/service.h" + +namespace Kernel { +class HLERequestContext; +} + +namespace Service { +namespace Audio { + +class CodecCtl final : public ServiceFramework<CodecCtl> { +public: +    explicit CodecCtl(); +    ~CodecCtl() = default; +}; + +} // namespace Audio +} // namespace Service | 
