mirror of https://github.com/red-prig/fpPS4.git
sceAvPlayerAddSourceEx and sceAvPlayerCurrentTime (#65)
* Minor * sceAvPlayerAddSourceEx and sceAvPlayerCurrentTime * Minor * usec->msec * Minor * Squashed commit of the following: commitb3649ee064
Author: Pavel <68122101+red-prig@users.noreply.github.com> Date: Wed Jan 18 12:08:08 2023 +0300 test CI commit61f581ece8
Author: VocalFan <45863583+Mou-Ikkai@users.noreply.github.com> Date: Wed Jan 18 03:10:43 2023 -0500 Separate PR and Main builds (#64) * Update Checkout and Upload-Artifact to V3 * Step 1, separate PRs and Mains * Name: Main CI * Step 2: Parallel PR and Main builds. * Don't use v3 it doesn't work on my old server due to new versions of nodejs Co-authored-by: Pavel <68122101+red-prig@users.noreply.github.com> * Align + check for source type * test PR CI Co-authored-by: Pavel <68122101+red-prig@users.noreply.github.com>
This commit is contained in:
parent
b3649ee064
commit
a1414b035c
|
@ -2,10 +2,9 @@
|
|||
name: PR CI
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
branches:
|
||||
- '*'
|
||||
pull_request:
|
||||
branches:
|
||||
- '*'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
|
|
|
@ -48,6 +48,9 @@ type
|
|||
|
||||
SceAvPlayerEventCallback=procedure(p:Pointer;argEventId:Integer;argSourceId:Integer;argEventData:Pointer); SysV_ABI_CDecl;
|
||||
|
||||
SceAvPlayerUriType=Integer; // enum
|
||||
SceAvPlayerSourceType=Integer; // enum
|
||||
|
||||
SceAvPlayerMemAllocator=packed record
|
||||
objectPointer :Pointer;
|
||||
allocate :SceAvPlayerAllocate;
|
||||
|
@ -204,6 +207,20 @@ type
|
|||
|
||||
PSceAvPlayerPostInitData = Pointer;
|
||||
|
||||
SceAvPlayerUri=packed record
|
||||
name :PChar;
|
||||
length:DWord;
|
||||
_align:DWord;
|
||||
end;
|
||||
|
||||
SceAvPlayerSourceDetails=packed record
|
||||
uri :SceAvPlayerUri;
|
||||
reserved :array[0..63] of Byte;
|
||||
sourceType:SceAvPlayerSourceType;
|
||||
reserved2 :array[0..43] of Byte;
|
||||
end;
|
||||
PSceAvPlayerSourceDetails=^SceAvPlayerSourceDetails;
|
||||
|
||||
TMemChunk=packed record
|
||||
pData:Pointer;
|
||||
fSize:Ptruint;
|
||||
|
@ -282,6 +299,8 @@ var
|
|||
audioStream:PAVStream;
|
||||
p :Pointer;
|
||||
begin
|
||||
if source<>'' then
|
||||
Writeln('TODO: 1 instance can have multiple media sources');
|
||||
FreeMedia;
|
||||
source:=aSource;
|
||||
formatContext:=avformat_alloc_context;
|
||||
|
@ -646,7 +665,6 @@ var
|
|||
f :THandle;
|
||||
source :RawByteString;
|
||||
begin
|
||||
Writeln(SysLogPrefix,'sceAvPlayerAddSource:',argFilename);
|
||||
spin_lock(lock);
|
||||
// With file functions provided by client
|
||||
if (handle<>nil) and (handle^.fileReplacement.open<>nil) and (handle^.fileReplacement.close<>nil)
|
||||
|
@ -666,6 +684,7 @@ begin
|
|||
end;
|
||||
// Read data and write to dump directory
|
||||
// TODO: Should cache the file so it can be reused later
|
||||
Writeln('TODO: Should cache media file so it can be reused later: ',argFilename);
|
||||
CreateDir(DIRECTORY_AVPLAYER_DUMP);
|
||||
//
|
||||
source:=DIRECTORY_AVPLAYER_DUMP+'/'+ExtractFileName(argFilename);
|
||||
|
@ -712,10 +731,30 @@ end;
|
|||
function ps4_sceAvPlayerAddSource(handle:SceAvPlayerHandle;argFilename:PChar):Integer; SysV_ABI_CDecl;
|
||||
begin
|
||||
_sig_lock;
|
||||
Writeln(SysLogPrefix,'sceAvPlayerAddSource:',argFilename);
|
||||
Result:=_sceAvPlayerAddSource(handle,argFilename);
|
||||
_sig_unlock;
|
||||
end;
|
||||
|
||||
function ps4_sceAvPlayerAddSourceEx(handle:SceAvPlayerHandle;uriType:SceAvPlayerUriType;sourceDetails:PSceAvPlayerSourceDetails):Integer; SysV_ABI_CDecl;
|
||||
begin
|
||||
_sig_lock;
|
||||
if sourceDetails<>nil then
|
||||
begin
|
||||
Writeln(SysLogPrefix,'sceAvPlayerAddSourceEx:',sourceDetails^.uri.name);
|
||||
if sourceDetails^.sourceType=1 then
|
||||
Writeln('Source type: MP4')
|
||||
else
|
||||
Writeln('Source type: Unknown ',sourceDetails^.sourceType);
|
||||
Result:=_sceAvPlayerAddSource(handle,sourceDetails^.uri.name)
|
||||
end else
|
||||
begin
|
||||
Writeln(SysLogPrefix,'sceAvPlayerAddSourceEx:nil');
|
||||
Result:=-1;
|
||||
end;
|
||||
_sig_unlock;
|
||||
end;
|
||||
|
||||
function ps4_sceAvPlayerIsActive(handle:SceAvPlayerHandle): Boolean; SysV_ABI_CDecl;
|
||||
begin
|
||||
//Writeln(SysLogPrefix,'sceAvPlayerIsActive');
|
||||
|
@ -810,6 +849,14 @@ begin
|
|||
Result:=False;
|
||||
end;
|
||||
|
||||
function ps4_sceAvPlayerCurrentTime(handle:SceAvPlayerHandle):QWord; SysV_ABI_CDecl;
|
||||
begin
|
||||
if (handle=nil) or (not handle^.playerState.IsPlaying) then
|
||||
Result:=0
|
||||
else
|
||||
Result:=_usec2msec(handle^.playerState.lastVideoTimeStamp);
|
||||
end;
|
||||
|
||||
function _sceAvPlayerStop(handle:SceAvPlayerHandle):Integer;
|
||||
begin
|
||||
Result:=-1;
|
||||
|
@ -862,10 +909,12 @@ begin
|
|||
lib^.set_proc($A3D79646448BF8CE,@ps4_sceAvPlayerInitEx);
|
||||
lib^.set_proc($1C3D58295536EBF3,@ps4_sceAvPlayerPostInit);
|
||||
lib^.set_proc($28C7046BEAC7B08A,@ps4_sceAvPlayerAddSource);
|
||||
lib^.set_proc($C7CBAFB8538F6615,@ps4_sceAvPlayerAddSourceEx);
|
||||
lib^.set_proc($51B42861AC0EB1F6,@ps4_sceAvPlayerIsActive);
|
||||
lib^.set_proc($395B61B34C467E1A,@ps4_sceAvPlayerSetLooping);
|
||||
lib^.set_proc($5A7A7539572B6609,@ps4_sceAvPlayerGetAudioData);
|
||||
lib^.set_proc($25D92C42EF2935D4,@ps4_sceAvPlayerGetVideoDataEx);
|
||||
lib^.set_proc($C3033DF608C57F56,@ps4_sceAvPlayerCurrentTime);
|
||||
lib^.set_proc($642D7BC37BC1E4BA,@ps4_sceAvPlayerStop);
|
||||
lib^.set_proc($3642700F32A6225C,@ps4_sceAvPlayerClose);
|
||||
end;
|
||||
|
|
Loading…
Reference in New Issue