mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	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)
This commit is contained in:
		
							parent
							
								
									fdbb039427
								
							
						
					
					
						commit
						07355cf7cc
					
				@ -95,8 +95,18 @@ add_library(core STATIC
 | 
			
		||||
    hle/service/apm/apm.h
 | 
			
		||||
    hle/service/audio/audio.cpp
 | 
			
		||||
    hle/service/audio/audio.h
 | 
			
		||||
    hle/service/audio/audin_u.cpp
 | 
			
		||||
    hle/service/audio/audin_u.h
 | 
			
		||||
    hle/service/audio/audout_u.cpp
 | 
			
		||||
    hle/service/audio/audout_u.h
 | 
			
		||||
    hle/service/audio/audrec_u.cpp
 | 
			
		||||
    hle/service/audio/audrec_u.h
 | 
			
		||||
    hle/service/audio/audren_u.cpp
 | 
			
		||||
    hle/service/audio/audren_u.h
 | 
			
		||||
    hle/service/audio/audren_u.cpp
 | 
			
		||||
    hle/service/audio/audren_u.h
 | 
			
		||||
    hle/service/audio/codecctl.cpp
 | 
			
		||||
    hle/service/audio/codecctl.h
 | 
			
		||||
    hle/service/filesystem/filesystem.cpp
 | 
			
		||||
    hle/service/filesystem/filesystem.h
 | 
			
		||||
    hle/service/filesystem/fsp_srv.cpp
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										41
									
								
								src/core/hle/service/audio/audin_u.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/core/hle/service/audio/audin_u.cpp
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										23
									
								
								src/core/hle/service/audio/audin_u.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/core/hle/service/audio/audin_u.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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 {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										38
									
								
								src/core/hle/service/audio/audrec_u.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/core/hle/service/audio/audrec_u.cpp
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										23
									
								
								src/core/hle/service/audio/audrec_u.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/core/hle/service/audio/audrec_u.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										44
									
								
								src/core/hle/service/audio/audren_u.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/core/hle/service/audio/audren_u.cpp
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										23
									
								
								src/core/hle/service/audio/audren_u.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/core/hle/service/audio/audren_u.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										33
									
								
								src/core/hle/service/audio/codecctl.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/core/hle/service/audio/codecctl.cpp
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										23
									
								
								src/core/hle/service/audio/codecctl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/core/hle/service/audio/codecctl.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user