summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar st4rk2018-01-21 19:03:36 -0800
committerGravatar bunnei2018-01-21 22:03:36 -0500
commit07355cf7cc114d27c34d2b61a35f929a6db3f8fb (patch)
tree35381b658ed1f3014813aecd7c58ac289de41032 /src/core
parentMerge pull request #131 from lioncash/enum (diff)
downloadyuzu-07355cf7cc114d27c34d2b61a35f929a6db3f8fb.tar.gz
yuzu-07355cf7cc114d27c34d2b61a35f929a6db3f8fb.tar.xz
yuzu-07355cf7cc114d27c34d2b61a35f929a6db3f8fb.zip
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')
-rw-r--r--src/core/CMakeLists.txt10
-rw-r--r--src/core/hle/service/audio/audin_u.cpp41
-rw-r--r--src/core/hle/service/audio/audin_u.h23
-rw-r--r--src/core/hle/service/audio/audio.cpp8
-rw-r--r--src/core/hle/service/audio/audout_u.cpp43
-rw-r--r--src/core/hle/service/audio/audout_u.h5
-rw-r--r--src/core/hle/service/audio/audrec_u.cpp38
-rw-r--r--src/core/hle/service/audio/audrec_u.h23
-rw-r--r--src/core/hle/service/audio/audren_u.cpp44
-rw-r--r--src/core/hle/service/audio/audren_u.h23
-rw-r--r--src/core/hle/service/audio/codecctl.cpp33
-rw-r--r--src/core/hle/service/audio/codecctl.h23
12 files changed, 309 insertions, 5 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 38fef5525..bef0d7a1e 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -95,8 +95,18 @@ add_library(core STATIC
95 hle/service/apm/apm.h 95 hle/service/apm/apm.h
96 hle/service/audio/audio.cpp 96 hle/service/audio/audio.cpp
97 hle/service/audio/audio.h 97 hle/service/audio/audio.h
98 hle/service/audio/audin_u.cpp
99 hle/service/audio/audin_u.h
98 hle/service/audio/audout_u.cpp 100 hle/service/audio/audout_u.cpp
99 hle/service/audio/audout_u.h 101 hle/service/audio/audout_u.h
102 hle/service/audio/audrec_u.cpp
103 hle/service/audio/audrec_u.h
104 hle/service/audio/audren_u.cpp
105 hle/service/audio/audren_u.h
106 hle/service/audio/audren_u.cpp
107 hle/service/audio/audren_u.h
108 hle/service/audio/codecctl.cpp
109 hle/service/audio/codecctl.h
100 hle/service/filesystem/filesystem.cpp 110 hle/service/filesystem/filesystem.cpp
101 hle/service/filesystem/filesystem.h 111 hle/service/filesystem/filesystem.h
102 hle/service/filesystem/fsp_srv.cpp 112 hle/service/filesystem/fsp_srv.cpp
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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "common/logging/log.h"
6#include "core/hle/ipc_helpers.h"
7#include "core/hle/kernel/hle_ipc.h"
8#include "core/hle/service/audio/audin_u.h"
9
10namespace Service {
11namespace Audio {
12
13class IAudioIn final : public ServiceFramework<IAudioIn> {
14public:
15 IAudioIn() : ServiceFramework("IAudioIn") {
16 static const FunctionInfo functions[] = {
17 {0x0, nullptr, "GetAudioInState"},
18 {0x1, nullptr, "StartAudioIn"},
19 {0x2, nullptr, "StopAudioIn"},
20 {0x3, nullptr, "AppendAudioInBuffer_1"},
21 {0x4, nullptr, "RegisterBufferEvent"},
22 {0x5, nullptr, "GetReleasedAudioInBuffer_1"},
23 {0x6, nullptr, "ContainsAudioInBuffer"},
24 {0x7, nullptr, "AppendAudioInBuffer_2"},
25 {0x8, nullptr, "GetReleasedAudioInBuffer_2"},
26 };
27 RegisterHandlers(functions);
28 }
29 ~IAudioIn() = default;
30};
31
32AudInU::AudInU() : ServiceFramework("audin:u") {
33 static const FunctionInfo functions[] = {
34 {0x00000000, nullptr, "ListAudioIns"},
35 {0x00000001, nullptr, "OpenAudioIn"},
36 };
37 RegisterHandlers(functions);
38}
39
40} // namespace Audio
41} // 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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/service.h"
8
9namespace Kernel {
10class HLERequestContext;
11}
12
13namespace Service {
14namespace Audio {
15
16class AudInU final : public ServiceFramework<AudInU> {
17public:
18 explicit AudInU();
19 ~AudInU() = default;
20};
21
22} // namespace Audio
23} // 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 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include "core/hle/service/audio/audin_u.h"
5#include "core/hle/service/audio/audio.h" 6#include "core/hle/service/audio/audio.h"
6#include "core/hle/service/audio/audout_u.h" 7#include "core/hle/service/audio/audout_u.h"
8#include "core/hle/service/audio/audrec_u.h"
9#include "core/hle/service/audio/audren_u.h"
10#include "core/hle/service/audio/codecctl.h"
7 11
8namespace Service { 12namespace Service {
9namespace Audio { 13namespace Audio {
10 14
11void InstallInterfaces(SM::ServiceManager& service_manager) { 15void InstallInterfaces(SM::ServiceManager& service_manager) {
12 std::make_shared<AudOutU>()->InstallAsService(service_manager); 16 std::make_shared<AudOutU>()->InstallAsService(service_manager);
17 std::make_shared<AudInU>()->InstallAsService(service_manager);
18 std::make_shared<AudRecU>()->InstallAsService(service_manager);
19 std::make_shared<AudRenU>()->InstallAsService(service_manager);
20 std::make_shared<CodecCtl>()->InstallAsService(service_manager);
13} 21}
14 22
15} // namespace Audio 23} // 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 @@
4 4
5#include "common/logging/log.h" 5#include "common/logging/log.h"
6#include "core/hle/ipc_helpers.h" 6#include "core/hle/ipc_helpers.h"
7#include "core/hle/kernel/hle_ipc.h"
7#include "core/hle/service/audio/audout_u.h" 8#include "core/hle/service/audio/audout_u.h"
8 9
9namespace Service { 10namespace Service {
10namespace Audio { 11namespace Audio {
11 12
13class IAudioOut final : public ServiceFramework<IAudioOut> {
14public:
15 IAudioOut() : ServiceFramework("IAudioOut") {
16 static const FunctionInfo functions[] = {
17 {0x0, nullptr, "GetAudioOutState"},
18 {0x1, nullptr, "StartAudioOut"},
19 {0x2, nullptr, "StopAudioOut"},
20 {0x3, nullptr, "AppendAudioOutBuffer_1"},
21 {0x4, nullptr, "RegisterBufferEvent"},
22 {0x5, nullptr, "GetReleasedAudioOutBuffer_1"},
23 {0x6, nullptr, "ContainsAudioOutBuffer"},
24 {0x7, nullptr, "AppendAudioOutBuffer_2"},
25 {0x8, nullptr, "GetReleasedAudioOutBuffer_2"},
26 };
27 RegisterHandlers(functions);
28 }
29 ~IAudioOut() = default;
30};
31
12void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) { 32void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) {
13 LOG_WARNING(Service, "(STUBBED) called"); 33 LOG_WARNING(Service, "(STUBBED) called");
14 IPC::RequestBuilder rb{ctx, 2}; 34 IPC::RequestParser rp{ctx};
35
36 auto& buffer = ctx.BufferDescriptorB()[0];
37 const std::string audio_interface = "AudioInterface";
38
39 Memory::WriteBlock(buffer.Address(), &audio_interface[0], audio_interface.size());
40
41 IPC::RequestBuilder rb = rp.MakeBuilder(3, 0, 0, 0);
42
15 rb.Push(RESULT_SUCCESS); 43 rb.Push(RESULT_SUCCESS);
44 // TODO(st4rk): we're currently returning only one audio interface
45 // (stringlist size)
46 // however, it's highly possible to have more than one interface (despite that
47 // libtransistor
48 // requires only one).
49 rb.Push<u32>(1);
16} 50}
17 51
18AudOutU::AudOutU() : ServiceFramework("audout:u") { 52AudOutU::AudOutU() : ServiceFramework("audout:u") {
19 static const FunctionInfo functions[] = { 53 static const FunctionInfo functions[] = {{0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"},
20 {0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, 54 {0x00000001, nullptr, "OpenAudioOut"},
21 }; 55 {0x00000002, nullptr, "Unknown2"},
56 {0x00000003, nullptr, "Unknown3"}};
22 RegisterHandlers(functions); 57 RegisterHandlers(functions);
23} 58}
24 59
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 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "core/hle/kernel/hle_ipc.h"
8#include "core/hle/service/service.h" 7#include "core/hle/service/service.h"
9 8
9namespace Kernel {
10class HLERequestContext;
11}
12
10namespace Service { 13namespace Service {
11namespace Audio { 14namespace Audio {
12 15
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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "common/logging/log.h"
6#include "core/hle/ipc_helpers.h"
7#include "core/hle/kernel/hle_ipc.h"
8#include "core/hle/service/audio/audrec_u.h"
9
10namespace Service {
11namespace Audio {
12
13class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> {
14public:
15 IFinalOutputRecorder() : ServiceFramework("IFinalOutputRecorder") {
16 static const FunctionInfo functions[] = {
17 {0x0, nullptr, "GetFinalOutputRecorderState"},
18 {0x1, nullptr, "StartFinalOutputRecorder"},
19 {0x2, nullptr, "StopFinalOutputRecorder"},
20 {0x3, nullptr, "AppendFinalOutputRecorderBuffer"},
21 {0x4, nullptr, "RegisterBufferEvent"},
22 {0x5, nullptr, "GetReleasedFinalOutputRecorderBuffer"},
23 {0x6, nullptr, "ContainsFinalOutputRecorderBuffer"},
24 };
25 RegisterHandlers(functions);
26 }
27 ~IFinalOutputRecorder() = default;
28};
29
30AudRecU::AudRecU() : ServiceFramework("audrec:u") {
31 static const FunctionInfo functions[] = {
32 {0x00000000, nullptr, "OpenFinalOutputRecorder"},
33 };
34 RegisterHandlers(functions);
35}
36
37} // namespace Audio
38} // 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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/service.h"
8
9namespace Kernel {
10class HLERequestContext;
11}
12
13namespace Service {
14namespace Audio {
15
16class AudRecU final : public ServiceFramework<AudRecU> {
17public:
18 explicit AudRecU();
19 ~AudRecU() = default;
20};
21
22} // namespace Audio
23} // 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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "common/logging/log.h"
6#include "core/hle/ipc_helpers.h"
7#include "core/hle/kernel/hle_ipc.h"
8#include "core/hle/service/audio/audren_u.h"
9
10namespace Service {
11namespace Audio {
12
13class IAudioRenderer final : public ServiceFramework<IAudioRenderer> {
14public:
15 IAudioRenderer() : ServiceFramework("IAudioRenderer") {
16 static const FunctionInfo functions[] = {
17 {0x0, nullptr, "GetAudioRendererSampleRate"},
18 {0x1, nullptr, "GetAudioRendererSampleCount"},
19 {0x2, nullptr, "GetAudioRendererMixBufferCount"},
20 {0x3, nullptr, "GetAudioRendererState"},
21 {0x4, nullptr, "RequestUpdateAudioRenderer"},
22 {0x5, nullptr, "StartAudioRenderer"},
23 {0x6, nullptr, "StopAudioRenderer"},
24 {0x7, nullptr, "QuerySystemEvent"},
25 {0x8, nullptr, "SetAudioRendererRenderingTimeLimit"},
26 {0x9, nullptr, "GetAudioRendererRenderingTimeLimit"},
27 };
28 RegisterHandlers(functions);
29 }
30 ~IAudioRenderer() = default;
31};
32
33AudRenU::AudRenU() : ServiceFramework("audren:u") {
34 static const FunctionInfo functions[] = {
35 {0x00000000, nullptr, "OpenAudioRenderer"},
36 {0x00000001, nullptr, "GetAudioRendererWorkBufferSize"},
37 {0x00000002, nullptr, "GetAudioRenderersProcessMasterVolume"},
38 {0x00000003, nullptr, "SetAudioRenderersProcessMasterVolume"},
39 };
40 RegisterHandlers(functions);
41}
42
43} // namespace Audio
44} // 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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/service.h"
8
9namespace Kernel {
10class HLERequestContext;
11}
12
13namespace Service {
14namespace Audio {
15
16class AudRenU final : public ServiceFramework<AudRenU> {
17public:
18 explicit AudRenU();
19 ~AudRenU() = default;
20};
21
22} // namespace Audio
23} // 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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "common/logging/log.h"
6#include "core/hle/ipc_helpers.h"
7#include "core/hle/kernel/hle_ipc.h"
8#include "core/hle/service/audio/codecctl.h"
9
10namespace Service {
11namespace Audio {
12
13CodecCtl::CodecCtl() : ServiceFramework("codecctl") {
14 static const FunctionInfo functions[] = {
15 {0x00000000, nullptr, "InitializeCodecController"},
16 {0x00000001, nullptr, "FinalizeCodecController"},
17 {0x00000002, nullptr, "SleepCodecController"},
18 {0x00000003, nullptr, "WakeCodecController"},
19 {0x00000004, nullptr, "SetCodecVolume"},
20 {0x00000005, nullptr, "GetCodecVolumeMax"},
21 {0x00000006, nullptr, "GetCodecVolumeMin"},
22 {0x00000007, nullptr, "SetCodecActiveTarget"},
23 {0x00000008, nullptr, "Unknown"},
24 {0x00000009, nullptr, "BindCodecHeadphoneMicJackInterrupt"},
25 {0x0000000A, nullptr, "IsCodecHeadphoneMicJackInserted"},
26 {0x0000000B, nullptr, "ClearCodecHeadphoneMicJackInterrupt"},
27 {0x0000000C, nullptr, "IsCodecDeviceRequested"},
28 };
29 RegisterHandlers(functions);
30}
31
32} // namespace Audio
33} // 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 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/service.h"
8
9namespace Kernel {
10class HLERequestContext;
11}
12
13namespace Service {
14namespace Audio {
15
16class CodecCtl final : public ServiceFramework<CodecCtl> {
17public:
18 explicit CodecCtl();
19 ~CodecCtl() = default;
20};
21
22} // namespace Audio
23} // namespace Service