Changes

Jump to navigation Jump to search
332 bytes added ,  21:36, 21 October 2019
no edit summary
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 1 || OpenContinuousRecorder || Takes a total of 0x28-bytes of input and a handle, returns an [[#IContinuousRecorderOpenContinuousRecorder]].
|-
| 2 || OpenGameMovieTrimmer || Takes an input u64 and a handle, returns an [[#IGameMovieTrimmerOpenGameMovieTrimmer]].
|-
| 3 || [5.0.0+] || Takes a total of 0x8-bytes of input and a handle, returns an [[#IOffscreenRecorderOpenOffscreenRecorder]].
|-
| 101 || [5.0.0+] || Takes a total of 0x10-bytes of input, returns an [[#IMovieMakerCreateMovieMaker]].
|-
| 9903 || [5.0.0+] || Takes 8-bytes of input, no output.[[#SetOffscreenRecordingMarker]]
|}
== OpenContinuousRecorder ==Takes a total of 0x28-bytes of input and a handle, returns an [[#IContinuousRecorder]]. [5.0.0+] OpenContinuousRecorder now Now takes an additional 0x20-bytes of input. == OpenGameMovieTrimmer ==Takes an input u64 and a handle, returns an [[#IGameMovieTrimmer]]. == OpenOffscreenRecorder ==Takes a total of 0x8-bytes of input and a handle, returns an [[#IOffscreenRecorder]]. == CreateMovieMaker ==Takes a total of 0x10-bytes of input, returns an [[#IMovieMaker]]. == SetOffscreenRecordingMarker ==Takes 8-bytes of input, no output. Affects the behavior of [[#CompleteOffscreenRecordingFinish]], [[#CompleteOffscreenRecordingFinishEx0]] and [[#CompleteOffscreenRecordingFinishEx1]], forcing them to stop at different stages.
== IContinuousRecorder ==
This is "nn::grcsrv::IRemoteVideoTransfer".
Added This was added with [[6.0.0]].
The max sessions for this service is 4, and there's it uses 2 IPC handler threads.
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 1 || || No input/output.[[#Initialize]]
|-
| 2 || || Takes an input u32 (must be value 0-1) and a type-0x6 output buffer, returns a total of 0x10-bytes of output.[[#Transfer]]
|}
== Cmd1 Initialize ==No input/output. 
Begins video stream. This must not be used more than once, even from a different service session: otherwise the sysmodule will assert.
== Cmd2 Transfer ==Retrieves stream data, from the video recording being done of the currently running game title. Takes an u32 "'''stream" ''' (0: video, 1: audio)and a type-0x6 output buffer, returns u32 (2 u32s '''num_frames?), u32 ''' and '''data_size, ''' and an u64 ('''start_timestamp?)'''. Retrieves stream data from the continuous recorder in use. Video stream writes H.264 NAL units to the output buffer (try <code>ffplay -f h264</code>). Audio stream is PCM16, 2 channels, and sample-rate = 48000Hz. Official code uses buffer size 0x32000 for video, 0x1000 for audio, and multiple threads to read out both streams at the same time.
This will block until data is available. This will hang if there is no game title running which has video capture enabled.
= OffscreenRecordingParameter =
This is "nn::grcsrv::OffscreenRecordingParameter".
 
This is a 0x80-byte struct. "nn::grc::OffscreenRecordingParameter" and "nn::album::MovieMakerMovieParameter" are identical to this.
 
{| class="wikitable" border="1"
|-
| 0x3C || 0x44 || ? || 0
|}
 
This is "nn::grcsrv::OffscreenRecordingParameter". This is a 0x80-byte struct. "nn::grc::OffscreenRecordingParameter" and "nn::album::MovieMakerMovieParameter" are identical to this.
The above default values are initialized by the official user-process via sdk-nso funcs "nn::album::MovieMakerMovieParameter::GetDefaultValue()" / "nn::album::MovieMakerMovieParameter::MovieMakerMovieParameter()" (both funcs are identical).
= GameMovieId =
This is "nn::grcsrv::GameMovieId".
 
This is a 0x40-byte struct.
 
{| class="wikitable" border="1"
|-
| 0x18 || 0x28 || Unused, always zero.
|}
 
This is "nn::grcsrv::GameMovieId". This is a 0x40-byte struct.
= IHOSBinderDriver =

Navigation menu