Difference between revisions of "GRC services"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 90: Line 90:
 
| 2 || [[#CreateVideoProxy]]
 
| 2 || [[#CreateVideoProxy]]
 
|-
 
|-
| 9 || [7.0.0+] SetAlbumShimLibraryVersion
+
| 9 || [7.0.0+] [[#SetAlbumShimLibraryVersion]]
 
|-
 
|-
 
| 10 || [[#OpenOffscreenLayer]]
 
| 10 || [[#OpenOffscreenLayer]]
Line 108: Line 108:
 
| 25 || [[#CompleteOffscreenRecordingFinishEx0]]
 
| 25 || [[#CompleteOffscreenRecordingFinishEx0]]
 
|-
 
|-
| 26 || [7.0.0+] CompleteOffscreenRecordingFinishEx1
+
| 26 || [7.0.0+] [[#CompleteOffscreenRecordingFinishEx1]]
 
|-
 
|-
 
| 30 || [[#GetOffscreenLayerError]]
 
| 30 || [[#GetOffscreenLayerError]]
Line 121: Line 121:
 
== CreateVideoProxy ==
 
== CreateVideoProxy ==
 
No input, returns an [[#IHOSBinderDriver]].
 
No input, returns an [[#IHOSBinderDriver]].
 +
 +
== SetAlbumShimLibraryVersion ==
 +
Takes a total of 8-bytes of input, no output.
  
 
== OpenOffscreenLayer ==
 
== OpenOffscreenLayer ==
Line 149: Line 152:
 
== CompleteOffscreenRecordingFinishEx0 ==
 
== CompleteOffscreenRecordingFinishEx0 ==
 
Takes an input u64 '''LayerHandle''' and 2 type-0x5 input buffers, no output.
 
Takes an input u64 '''LayerHandle''' and 2 type-0x5 input buffers, no output.
 +
 +
== CompleteOffscreenRecordingFinishEx1 ==
 +
Takes a total of 0x10-bytes of input and two type-0x5 input buffers, returns a total of 0x20-bytes of output.
  
 
== EncodeOffscreenLayerAudioSample ==
 
== EncodeOffscreenLayerAudioSample ==

Revision as of 19:03, 13 February 2019

GRC (Game Recording) uses libstagefright and the NvMMLite TVMR library for writing recorded video to MP4s.

Error reporting is done using the new /dev/nverpt-ctrl ioctls.

grc:c

This is "nn::grcsrv::IGrcService".

Cmd Name Notes
1 OpenContinuousRecorder Takes a total of 0x48-bytes of input and a handle, returns an #IContinuousRecorder.
2 OpenGameMovieTrimmer Takes a total of 0x8-bytes of input and a handle, returns an #IGameMovieTrimmer.
3 Takes a total of 0x8-bytes of input and a handle, returns an #IUnknown.
101 Takes a total of 0x10-bytes of input, returns an #IMovieMaker.

IContinuousRecorder

This is "nn::grcsrv::IContinuousRecorder".

Cmd Name
1
2
10
11
12
13
14

IGameMovieTrimmer

This is "nn::grcsrv::IGameMovieTrimmer".

Cmd Name
1 BeginTrim
2 EndTrim
10 GetNotTrimmingEvent
20 SetThumbnailRgba

grc:d

This is "nn::grcsrv::IRemoteVideoTransfer".

Added with 6.0.0.

Cmd Name Notes
1 No input/output.
2 Takes a total of 4-bytes of input and a type-0x6 output buffer, returns a total of 0x10-bytes of output.

IUnknown

Cmd Name Notes
201 Takes a total of 0x8-bytes of input, returns a total of 0x8-bytes of output.
202 Takes a total of 0x8-bytes of input, no output.

IMovieMaker

This is "nn::grcsrv::IMovieMaker".

Cmd Name
2 #CreateVideoProxy
9 [7.0.0+] #SetAlbumShimLibraryVersion
10 #OpenOffscreenLayer
11 #CloseOffscreenLayer
20 #StartOffscreenRecording
21 #AbortOffscreenRecording
22 #RequestOffscreenRecordingFinishReady
23 #CompleteOffscreenRecordingFinish
24 #StartOffscreenRecordingEx
25 #CompleteOffscreenRecordingFinishEx0
26 [7.0.0+] #CompleteOffscreenRecordingFinishEx1
30 #GetOffscreenLayerError
41 #EncodeOffscreenLayerAudioSample
50 #GetOffscreenLayerRecordingFinishReadyEvent
52 #GetOffscreenLayerAudioEncodeReadyEvent

CreateVideoProxy

No input, returns an #IHOSBinderDriver.

SetAlbumShimLibraryVersion

Takes a total of 8-bytes of input, no output.

OpenOffscreenLayer

Takes an input u64 LayerHandle, returns an output u32.

CloseOffscreenLayer

Takes an input u64 LayerHandle, no output.

StartOffscreenRecording

Takes an input u64, no output.

Seems to be unused by official user processes, #StartOffscreenRecordingEx is used instead.

AbortOffscreenRecording

Takes an input u64 LayerHandle, no output.

RequestOffscreenRecordingFinishReady

Takes an input u64 LayerHandle, no output.

StartOffscreenRecordingEx

Takes an input u64 LayerHandle and an #OffscreenRecordingParameter, no output.

CompleteOffscreenRecordingFinish

Takes an input u64 and a type-0x5 input buffer, no output.

Seems to be unused by official user processes, #CompleteOffscreenRecordingFinishEx0 is used instead.

CompleteOffscreenRecordingFinishEx0

Takes an input u64 LayerHandle and 2 type-0x5 input buffers, no output.

CompleteOffscreenRecordingFinishEx1

Takes a total of 0x10-bytes of input and two type-0x5 input buffers, returns a total of 0x20-bytes of output.

EncodeOffscreenLayerAudioSample

Takes an input u64 LayerHandle and a type-0x5 input buffer, returns an output u64.

GetOffscreenLayerError

Takes an input u64 LayerHandle, no output.

GetOffscreenLayerRecordingFinishReadyEvent

Takes an input u64 LayerHandle, returns an output event handle with autoclear disabled.

GetOffscreenLayerAudioEncodeReadyEvent

Takes an input u64 LayerHandle, returns an output event handle with autoclear disabled.

OffscreenRecordingParameter

This is a 0x80-byte struct.

IHOSBinderDriver

This is the same interface as NV IHOSBinderDriver.