mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-04-29 23:41:19 -06:00
85 lines
2.5 KiB
C++
85 lines
2.5 KiB
C++
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "common/types.h"
|
|
|
|
namespace Core::Loader {
|
|
class SymbolsResolver;
|
|
}
|
|
|
|
namespace Libraries::JpegEnc {
|
|
|
|
enum OrbisJpegEncCreateParamAttributes : u32 { ORBIS_JPEG_ENC_ATTRIBUTE_NONE = 0 };
|
|
|
|
enum OrbisJpegEncEncodeParamPixelFormat : u16 {
|
|
ORBIS_JPEG_ENC_PIXEL_FORMAT_R8G8B8A8 = 0,
|
|
ORBIS_JPEG_ENC_PIXEL_FORMAT_B8G8R8A8 = 1,
|
|
ORBIS_JPEG_ENC_PIXEL_FORMAT_Y8U8Y8V8 = 10,
|
|
ORBIS_JPEG_ENC_PIXEL_FORMAT_Y8 = 11
|
|
};
|
|
|
|
enum OrbisJpengEncEncodeParamEncodeMode : u16 {
|
|
ORBIS_JPEG_ENC_ENCODE_MODE_NORMAL = 0,
|
|
ORBIS_JPEG_ENC_ENCODE_MODE_MJPEG = 1
|
|
};
|
|
|
|
enum OrbisJpengEncEncodeParamColorSpace : u16 {
|
|
ORBIS_JPEG_ENC_COLOR_SPACE_YCC = 1,
|
|
ORBIS_JPEG_ENC_COLOR_SPACE_GRAYSCALE = 2
|
|
};
|
|
|
|
enum OrbisJpengEncEncodeParamSamplingType : u8 {
|
|
ORBIS_JPEG_ENC_SAMPLING_TYPE_FULL = 0,
|
|
ORBIS_JPEG_ENC_SAMPLING_TYPE_422 = 1,
|
|
ORBIS_JPEG_ENC_SAMPLING_TYPE_420 = 2
|
|
};
|
|
|
|
struct OrbisJpegEncHandleInternal {
|
|
OrbisJpegEncHandleInternal* handle;
|
|
u32 handle_size;
|
|
};
|
|
static_assert(sizeof(OrbisJpegEncHandleInternal) == 0x10);
|
|
|
|
typedef OrbisJpegEncHandleInternal* OrbisJpegEncHandle;
|
|
|
|
struct OrbisJpegEncCreateParam {
|
|
u32 size;
|
|
OrbisJpegEncCreateParamAttributes attr;
|
|
};
|
|
static_assert(sizeof(OrbisJpegEncCreateParam) == 0x8);
|
|
|
|
struct OrbisJpegEncEncodeParam {
|
|
void* image;
|
|
void* jpeg;
|
|
u32 image_size;
|
|
u32 jpeg_size;
|
|
u32 image_width;
|
|
u32 image_height;
|
|
u32 image_pitch;
|
|
OrbisJpegEncEncodeParamPixelFormat pixel_format;
|
|
OrbisJpengEncEncodeParamEncodeMode encode_mode;
|
|
OrbisJpengEncEncodeParamColorSpace color_space;
|
|
OrbisJpengEncEncodeParamSamplingType sampling_type;
|
|
u8 compression_ratio;
|
|
s32 restart_interval;
|
|
};
|
|
static_assert(sizeof(OrbisJpegEncEncodeParam) == 0x30);
|
|
|
|
struct OrbisJpegEncOutputInfo {
|
|
u32 size;
|
|
u32 height;
|
|
};
|
|
static_assert(sizeof(OrbisJpegEncOutputInfo) == 0x8);
|
|
|
|
s32 PS4_SYSV_ABI sceJpegEncCreate(const OrbisJpegEncCreateParam* param, void* memory,
|
|
u32 memory_size, OrbisJpegEncHandle* handle);
|
|
s32 PS4_SYSV_ABI sceJpegEncDelete(OrbisJpegEncHandle handle);
|
|
s32 PS4_SYSV_ABI sceJpegEncEncode(OrbisJpegEncHandle handle, const OrbisJpegEncEncodeParam* param,
|
|
OrbisJpegEncOutputInfo* output_info);
|
|
s32 PS4_SYSV_ABI sceJpegEncQueryMemorySize(const OrbisJpegEncCreateParam* param);
|
|
|
|
void RegisterLib(Core::Loader::SymbolsResolver* sym);
|
|
} // namespace Libraries::JpegEnc
|