mirror of
https://github.com/red-prig/fpPS4.git
synced 2025-02-19 22:01:00 +00:00
+
This commit is contained in:
parent
b82b7c2da4
commit
0d064185f5
41
ajm_error.inc
Normal file
41
ajm_error.inc
Normal file
@ -0,0 +1,41 @@
|
||||
|
||||
const
|
||||
SCE_AJM_ERROR_UNKNOWN =-2137849855; // 0x80930001
|
||||
SCE_AJM_ERROR_INVALID_CONTEXT =-2137849854; // 0x80930002
|
||||
SCE_AJM_ERROR_INVALID_INSTANCE =-2137849853; // 0x80930003
|
||||
SCE_AJM_ERROR_INVALID_BATCH =-2137849852; // 0x80930004
|
||||
SCE_AJM_ERROR_INVALID_PARAMETER =-2137849851; // 0x80930005
|
||||
SCE_AJM_ERROR_OUT_OF_MEMORY =-2137849850; // 0x80930006
|
||||
SCE_AJM_ERROR_OUT_OF_RESOURCES =-2137849849; // 0x80930007
|
||||
SCE_AJM_ERROR_CODEC_NOT_SUPPORTED =-2137849848; // 0x80930008
|
||||
SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED =-2137849847; // 0x80930009
|
||||
SCE_AJM_ERROR_CODEC_NOT_REGISTERED =-2137849846; // 0x8093000A
|
||||
SCE_AJM_ERROR_WRONG_REVISION_FLAG =-2137849845; // 0x8093000B
|
||||
SCE_AJM_ERROR_FLAG_NOT_SUPPORTED =-2137849844; // 0x8093000C
|
||||
SCE_AJM_ERROR_BUSY =-2137849843; // 0x8093000D
|
||||
SCE_AJM_ERROR_BAD_PRIORITY =-2137849842; // 0x8093000E
|
||||
SCE_AJM_ERROR_IN_PROGRESS =-2137849841; // 0x8093000F
|
||||
SCE_AJM_ERROR_RETRY =-2137849840; // 0x80930010
|
||||
SCE_AJM_ERROR_MALFORMED_BATCH =-2137849839; // 0x80930011
|
||||
SCE_AJM_ERROR_JOB_CREATION =-2137849838; // 0x80930012
|
||||
SCE_AJM_ERROR_INVALID_OPCODE =-2137849837; // 0x80930013
|
||||
SCE_AJM_ERROR_PRIORITY_VIOLATION =-2137849836; // 0x80930014
|
||||
SCE_AJM_ERROR_BUFFER_TOO_BIG =-2137849835; // 0x80930015
|
||||
SCE_AJM_ERROR_INVALID_ADDRESS =-2137849834; // 0x80930016
|
||||
SCE_AJM_ERROR_CANCELLED =-2137849833; // 0x80930017
|
||||
|
||||
|
||||
SCE_AJM_RESULT_NOT_INITIALIZED =$00000001;
|
||||
SCE_AJM_RESULT_INVALID_DATA =$00000002;
|
||||
SCE_AJM_RESULT_INVALID_PARAMETER =$00000004;
|
||||
SCE_AJM_RESULT_PARTIAL_INPUT =$00000008;
|
||||
SCE_AJM_RESULT_NOT_ENOUGH_ROOM =$00000010;
|
||||
SCE_AJM_RESULT_STREAM_CHANGE =$00000020;
|
||||
SCE_AJM_RESULT_TOO_MANY_CHANNELS =$00000040;
|
||||
SCE_AJM_RESULT_UNSUPPORTED_FLAG =$00000080;
|
||||
SCE_AJM_RESULT_SIDEBAND_TRUNCATED =$00000100;
|
||||
SCE_AJM_RESULT_PRIORITY_PASSED =$00000200;
|
||||
SCE_AJM_RESULT_FATAL =$80000000;
|
||||
SCE_AJM_RESULT_CODEC_ERROR =$40000000;
|
||||
|
||||
|
@ -12,6 +12,7 @@ uses
|
||||
sys_types,
|
||||
sys_pthread,
|
||||
ps4libdoc,
|
||||
ps4_libSceAjm,
|
||||
ps4_libSceIme,
|
||||
ps4_libScePlayGo,
|
||||
ps4_libSceDiscMap,
|
||||
|
274
ps4_libsceajm.pas
Normal file
274
ps4_libsceajm.pas
Normal file
@ -0,0 +1,274 @@
|
||||
unit ps4_libSceAjm;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
ps4_program,
|
||||
ps4_handles,
|
||||
Classes,
|
||||
SysUtils;
|
||||
|
||||
implementation
|
||||
|
||||
{$I ajm_error.inc}
|
||||
|
||||
const
|
||||
SCE_AJM_CODEC_MP3_DEC =0;
|
||||
SCE_AJM_CODEC_AT9_DEC =1;
|
||||
SCE_AJM_CODEC_M4AAC_DEC=2;
|
||||
SCE_AJM_CODEC_CELP8_DEC=3;
|
||||
SCE_AJM_CODEC_CELP8_ENC=4;
|
||||
SCE_AJM_CODEC_CELP_DEC =12;
|
||||
SCE_AJM_CODEC_CELP_ENC =13;
|
||||
|
||||
var
|
||||
FAjmMap:TIntegerHandles;
|
||||
|
||||
type
|
||||
PSceAjmContextId=^SceAjmContextId;
|
||||
SceAjmContextId=Integer;
|
||||
SceAjmCodecType=Integer;
|
||||
|
||||
TAjmContext=class(TClassHandle)
|
||||
AJM_CODEC_MP3_DEC :Pointer;
|
||||
AJM_CODEC_AT9_DEC :Pointer;
|
||||
AJM_CODEC_M4AAC_DEC:Pointer;
|
||||
AJM_CODEC_CELP8_DEC:Pointer;
|
||||
AJM_CODEC_CELP8_ENC:Pointer;
|
||||
AJM_CODEC_CELP_DEC :Pointer;
|
||||
AJM_CODEC_CELP_ENC :Pointer;
|
||||
end;
|
||||
|
||||
|
||||
function ps4_sceAjmInitialize(iReserved:QWORD;pContext:PSceAjmContextId):Integer; SysV_ABI_CDecl;
|
||||
Var
|
||||
H:TAjmContext;
|
||||
begin
|
||||
if (pContext=nil) then Exit(SCE_AJM_ERROR_INVALID_PARAMETER);
|
||||
H:=TAjmContext.Create;
|
||||
pContext^:=-1;
|
||||
FAjmMap.New(H,pContext^);
|
||||
H.Release;
|
||||
Result:=0;
|
||||
end;
|
||||
|
||||
function ps4_sceAjmModuleRegister(uiContext:SceAjmContextId;uiCodec:SceAjmCodecType;iReserved:QWORD):Integer; SysV_ABI_CDecl;
|
||||
Var
|
||||
H:TAjmContext;
|
||||
begin
|
||||
Result:=0;
|
||||
|
||||
H:=TAjmContext(FAjmMap.Acqure(uiContext));
|
||||
if (H=nil) then Exit(SCE_AJM_ERROR_INVALID_CONTEXT);
|
||||
|
||||
Case uiCodec of
|
||||
SCE_AJM_CODEC_MP3_DEC :
|
||||
begin
|
||||
if (H.AJM_CODEC_MP3_DEC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_MP3_DEC:=Pointer(1);
|
||||
end;
|
||||
SCE_AJM_CODEC_AT9_DEC :
|
||||
begin
|
||||
if (H.AJM_CODEC_AT9_DEC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_AT9_DEC:=Pointer(1);
|
||||
end;
|
||||
SCE_AJM_CODEC_M4AAC_DEC:
|
||||
begin
|
||||
if (H.AJM_CODEC_M4AAC_DEC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_M4AAC_DEC:=Pointer(1);
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP8_DEC:
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP8_DEC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP8_DEC:=Pointer(1);
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP8_ENC:
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP8_ENC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP8_ENC:=Pointer(1);
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP_DEC :
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP_DEC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP_DEC:=Pointer(1);
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP_ENC :
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP_ENC<>nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_ALREADY_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP_ENC:=Pointer(1);
|
||||
end;
|
||||
else
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_INVALID_PARAMETER;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
Case uiCodec of
|
||||
SCE_AJM_CODEC_MP3_DEC :Writeln('SCE_AJM_CODEC_MP3_DEC ');
|
||||
SCE_AJM_CODEC_AT9_DEC :Writeln('SCE_AJM_CODEC_AT9_DEC ');
|
||||
SCE_AJM_CODEC_M4AAC_DEC:Writeln('SCE_AJM_CODEC_M4AAC_DEC');
|
||||
SCE_AJM_CODEC_CELP8_DEC:Writeln('SCE_AJM_CODEC_CELP8_DEC');
|
||||
SCE_AJM_CODEC_CELP8_ENC:Writeln('SCE_AJM_CODEC_CELP8_ENC');
|
||||
SCE_AJM_CODEC_CELP_DEC :Writeln('SCE_AJM_CODEC_CELP_DEC ');
|
||||
SCE_AJM_CODEC_CELP_ENC :Writeln('SCE_AJM_CODEC_CELP_ENC ');
|
||||
end;
|
||||
|
||||
H.Release;
|
||||
end;
|
||||
|
||||
function ps4_sceAjmModuleUnregister(uiContext:SceAjmContextId;uiCodec:SceAjmCodecType):Integer; SysV_ABI_CDecl;
|
||||
Var
|
||||
H:TAjmContext;
|
||||
begin
|
||||
Result:=0;
|
||||
|
||||
H:=TAjmContext(FAjmMap.Acqure(uiContext));
|
||||
if (H=nil) then Exit(SCE_AJM_ERROR_INVALID_CONTEXT);
|
||||
|
||||
Case uiCodec of
|
||||
SCE_AJM_CODEC_MP3_DEC :
|
||||
begin
|
||||
if (H.AJM_CODEC_MP3_DEC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_MP3_DEC:=nil;
|
||||
end;
|
||||
SCE_AJM_CODEC_AT9_DEC :
|
||||
begin
|
||||
if (H.AJM_CODEC_AT9_DEC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_AT9_DEC:=nil;
|
||||
end;
|
||||
SCE_AJM_CODEC_M4AAC_DEC:
|
||||
begin
|
||||
if (H.AJM_CODEC_M4AAC_DEC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_M4AAC_DEC:=nil;
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP8_DEC:
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP8_DEC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP8_DEC:=nil;
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP8_ENC:
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP8_ENC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP8_ENC:=nil;
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP_DEC :
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP_DEC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP_DEC:=nil;
|
||||
end;
|
||||
SCE_AJM_CODEC_CELP_ENC :
|
||||
begin
|
||||
if (H.AJM_CODEC_CELP_ENC=nil) then
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_CODEC_NOT_REGISTERED;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
H.AJM_CODEC_CELP_ENC:=nil;
|
||||
end;
|
||||
else
|
||||
begin
|
||||
Result:=SCE_AJM_ERROR_INVALID_PARAMETER;
|
||||
H.Release;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
H.Release;
|
||||
end;
|
||||
|
||||
function ps4_sceAjmFinalize(uiContext:SceAjmContextId):Integer; SysV_ABI_CDecl;
|
||||
begin
|
||||
Result:=0;
|
||||
if not FAjmMap.Delete(uiContext) then Result:=SCE_AJM_ERROR_INVALID_CONTEXT;
|
||||
end;
|
||||
|
||||
function Load_libSceAjm(Const name:RawByteString):TElf_node;
|
||||
var
|
||||
lib:PLIBRARY;
|
||||
begin
|
||||
Result:=TElf_node.Create;
|
||||
Result.pFileName:=name;
|
||||
|
||||
lib:=Result._add_lib('libSceAjm');
|
||||
lib^.set_proc($765FB87874B352EE,@ps4_sceAjmInitialize);
|
||||
lib^.set_proc($43777216EC069FAE,@ps4_sceAjmModuleRegister);
|
||||
lib^.set_proc($5A2EC3B652D5F8A2,@ps4_sceAjmModuleUnregister);
|
||||
lib^.set_proc($307BABEAA0AC52EB,@ps4_sceAjmFinalize);
|
||||
end;
|
||||
|
||||
initialization
|
||||
FAjmMap:=TIntegerHandles.Create;
|
||||
ps4_app.RegistredPreLoad('libSceAjm.prx',@Load_libSceAjm);
|
||||
|
||||
end.
|
||||
|
Loading…
x
Reference in New Issue
Block a user