2024-07-10 16:20:19 +00:00
|
|
|
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
#include "avplayer.h"
|
2024-07-26 15:34:36 +00:00
|
|
|
|
|
|
|
#include "avplayer_impl.h"
|
2024-07-10 16:20:19 +00:00
|
|
|
#include "common/logging/log.h"
|
|
|
|
#include "core/libraries/error_codes.h"
|
2024-07-26 15:34:36 +00:00
|
|
|
#include "core/libraries/kernel/thread_management.h"
|
2024-07-10 16:20:19 +00:00
|
|
|
#include "core/libraries/libs.h"
|
|
|
|
|
|
|
|
namespace Libraries::AvPlayer {
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
using namespace Kernel;
|
|
|
|
|
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerAddSource(SceAvPlayerHandle handle, const char* filename) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "filename = {}", filename);
|
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->AddSource(filename);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerAddSourceEx(SceAvPlayerHandle handle, SceAvPlayerUriType uriType,
|
|
|
|
SceAvPlayerSourceDetails* sourceDetails) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
int PS4_SYSV_ABI sceAvPlayerChangeStream() {
|
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerClose(SceAvPlayerHandle handle) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr) {
|
2024-08-24 13:58:53 +00:00
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning ORBIS_AVPLAYER_ERROR_INVALID_PARAMS");
|
2024-07-26 15:34:36 +00:00
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
delete handle;
|
2024-08-24 13:58:53 +00:00
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning ORBIS_OK");
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
u64 PS4_SYSV_ABI sceAvPlayerCurrentTime(SceAvPlayerHandle handle) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->CurrentTime();
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerDisableStream(SceAvPlayerHandle handle, u32 stream_id) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerEnableStream(SceAvPlayerHandle handle, u32 stream_id) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "stream_id = {}", stream_id);
|
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->EnableStream(stream_id);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
bool PS4_SYSV_ABI sceAvPlayerGetAudioData(SceAvPlayerHandle handle, SceAvPlayerFrameInfo* p_info) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr || p_info == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->GetAudioData(*p_info);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerGetStreamInfo(SceAvPlayerHandle handle, u32 stream_id,
|
|
|
|
SceAvPlayerStreamInfo* p_info) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "stream_id = {}", stream_id);
|
|
|
|
if (handle == nullptr || p_info == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->GetStreamInfo(stream_id, *p_info);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
bool PS4_SYSV_ABI sceAvPlayerGetVideoData(SceAvPlayerHandle handle,
|
|
|
|
SceAvPlayerFrameInfo* video_info) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr || video_info == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->GetVideoData(*video_info);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
bool PS4_SYSV_ABI sceAvPlayerGetVideoDataEx(SceAvPlayerHandle handle,
|
|
|
|
SceAvPlayerFrameInfoEx* video_info) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr || video_info == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->GetVideoData(*video_info);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
SceAvPlayerHandle PS4_SYSV_ABI sceAvPlayerInit(SceAvPlayerInitData* data) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (data == nullptr) {
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (data->memory_replacement.allocate == nullptr ||
|
|
|
|
data->memory_replacement.allocate_texture == nullptr ||
|
|
|
|
data->memory_replacement.deallocate == nullptr ||
|
|
|
|
data->memory_replacement.deallocate_texture == nullptr) {
|
|
|
|
LOG_ERROR(Lib_AvPlayer, "All allocators are required for AVPlayer Initialisation.");
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
2024-08-14 18:30:44 +00:00
|
|
|
return new AvPlayer(*data);
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerInitEx(const SceAvPlayerInitDataEx* p_data,
|
|
|
|
SceAvPlayerHandle* p_player) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (p_data == nullptr || p_player == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (p_data->memory_replacement.allocate == nullptr ||
|
|
|
|
p_data->memory_replacement.allocate_texture == nullptr ||
|
|
|
|
p_data->memory_replacement.deallocate == nullptr ||
|
|
|
|
p_data->memory_replacement.deallocate_texture == nullptr) {
|
|
|
|
LOG_ERROR(Lib_AvPlayer, "All allocators are required for AVPlayer Initialisation.");
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
|
|
|
|
SceAvPlayerInitData data = {};
|
|
|
|
data.memory_replacement = p_data->memory_replacement;
|
|
|
|
data.file_replacement = p_data->file_replacement;
|
|
|
|
data.event_replacement = p_data->event_replacement;
|
|
|
|
data.default_language = p_data->default_language;
|
|
|
|
data.num_output_video_framebuffers = p_data->num_output_video_framebuffers;
|
|
|
|
data.auto_start = p_data->auto_start;
|
|
|
|
|
2024-08-14 18:30:44 +00:00
|
|
|
*p_player = new AvPlayer(data);
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
bool PS4_SYSV_ABI sceAvPlayerIsActive(SceAvPlayerHandle handle) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning ORBIS_AVPLAYER_ERROR_INVALID_PARAMS");
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->IsActive();
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-08-16 07:30:48 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerJumpToTime(SceAvPlayerHandle handle, uint64_t time) {
|
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called, time (msec) = {}", time);
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerPause(SceAvPlayerHandle handle) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerPostInit(SceAvPlayerHandle handle, SceAvPlayerPostInitData* data) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr || data == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->PostInit(*data);
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerPrintf(const char* format, ...) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerResume(SceAvPlayerHandle handle) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerSetAvSyncMode(SceAvPlayerHandle handle,
|
|
|
|
SceAvPlayerAvSyncMode sync_mode) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-08-12 16:01:02 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerSetLogCallback(SceAvPlayerLogCallback log_cb, void* user_data) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerSetLooping(SceAvPlayerHandle handle, bool loop_flag) {
|
2024-08-16 07:30:48 +00:00
|
|
|
LOG_TRACE(Lib_AvPlayer, "called, looping = {}", loop_flag);
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-08-15 18:59:59 +00:00
|
|
|
if (!handle->SetLooping(loop_flag)) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_OPERATION_FAILED;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerSetTrickSpeed(SceAvPlayerHandle handle, s32 trick_speed) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-07-10 16:20:19 +00:00
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerStart(SceAvPlayerHandle handle) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->Start();
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerStop(SceAvPlayerHandle handle) {
|
2024-08-14 18:30:44 +00:00
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
2024-07-26 15:34:36 +00:00
|
|
|
if (handle == nullptr) {
|
2024-08-24 13:58:53 +00:00
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning ORBIS_AVPLAYER_ERROR_INVALID_PARAMS");
|
2024-07-26 15:34:36 +00:00
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
2024-08-15 18:59:59 +00:00
|
|
|
const auto res = handle->Stop();
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-26 15:34:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerStreamCount(SceAvPlayerHandle handle) {
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "called");
|
|
|
|
if (handle == nullptr) {
|
|
|
|
return ORBIS_AVPLAYER_ERROR_INVALID_PARAMS;
|
|
|
|
}
|
|
|
|
const auto res = handle->GetStreamCount();
|
|
|
|
LOG_TRACE(Lib_AvPlayer, "returning {}", res);
|
|
|
|
return res;
|
2024-07-10 16:20:19 +00:00
|
|
|
}
|
|
|
|
|
2024-07-26 15:34:36 +00:00
|
|
|
s32 PS4_SYSV_ABI sceAvPlayerVprintf(const char* format, va_list args) {
|
2024-07-10 16:20:19 +00:00
|
|
|
LOG_ERROR(Lib_AvPlayer, "(STUBBED) called");
|
|
|
|
return ORBIS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
void RegisterlibSceAvPlayer(Core::Loader::SymbolsResolver* sym) {
|
|
|
|
LIB_FUNCTION("KMcEa+rHsIo", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerAddSource);
|
|
|
|
LIB_FUNCTION("x8uvuFOPZhU", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerAddSourceEx);
|
|
|
|
LIB_FUNCTION("buMCiJftcfw", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerChangeStream);
|
|
|
|
LIB_FUNCTION("NkJwDzKmIlw", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerClose);
|
|
|
|
LIB_FUNCTION("wwM99gjFf1Y", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerCurrentTime);
|
|
|
|
LIB_FUNCTION("BOVKAzRmuTQ", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerDisableStream);
|
|
|
|
LIB_FUNCTION("ODJK2sn9w4A", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerEnableStream);
|
|
|
|
LIB_FUNCTION("Wnp1OVcrZgk", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerGetAudioData);
|
|
|
|
LIB_FUNCTION("d8FcbzfAdQw", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerGetStreamInfo);
|
|
|
|
LIB_FUNCTION("o3+RWnHViSg", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerGetVideoData);
|
|
|
|
LIB_FUNCTION("JdksQu8pNdQ", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerGetVideoDataEx);
|
|
|
|
LIB_FUNCTION("aS66RI0gGgo", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerInit);
|
|
|
|
LIB_FUNCTION("o9eWRkSL+M4", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerInitEx);
|
|
|
|
LIB_FUNCTION("UbQoYawOsfY", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerIsActive);
|
|
|
|
LIB_FUNCTION("XC9wM+xULz8", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerJumpToTime);
|
|
|
|
LIB_FUNCTION("9y5v+fGN4Wk", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerPause);
|
|
|
|
LIB_FUNCTION("HD1YKVU26-M", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerPostInit);
|
|
|
|
LIB_FUNCTION("agig-iDRrTE", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerPrintf);
|
|
|
|
LIB_FUNCTION("w5moABNwnRY", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerResume);
|
|
|
|
LIB_FUNCTION("k-q+xOxdc3E", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerSetAvSyncMode);
|
|
|
|
LIB_FUNCTION("eBTreZ84JFY", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerSetLogCallback);
|
|
|
|
LIB_FUNCTION("OVths0xGfho", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerSetLooping);
|
|
|
|
LIB_FUNCTION("av8Z++94rs0", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerSetTrickSpeed);
|
|
|
|
LIB_FUNCTION("ET4Gr-Uu07s", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerStart);
|
|
|
|
LIB_FUNCTION("ZC17w3vB5Lo", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerStop);
|
|
|
|
LIB_FUNCTION("hdTyRzCXQeQ", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0,
|
|
|
|
sceAvPlayerStreamCount);
|
|
|
|
LIB_FUNCTION("yN7Jhuv8g24", "libSceAvPlayer", 1, "libSceAvPlayer", 1, 0, sceAvPlayerVprintf);
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace Libraries::AvPlayer
|