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
1 OpenContinuousRecorder
2 OpenGameMovieTrimmer

IContinuousRecorder

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

Cmd Name
1
2
10
11
12
13

IGameMovieTrimmer

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

Cmd Name
1 BeginTrim
2 EndTrim
10 GetNotTrimmingEvent
20 SetThumbnailRgba

IMovieMaker

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

Cmd Name
2 #CreateVideoProxy
10 #OpenOffscreenLayer
11 #CloseOffscreenLayer
20 #StartOffscreenRecording
21 #AbortOffscreenRecording
22 #RequestOffscreenRecordingFinishReady
23 #CompleteOffscreenRecordingFinish
24 #StartOffscreenRecordingEx
25 #CompleteOffscreenRecordingFinishEx0
30 #GetOffscreenLayerError
41 EncodeOffscreenLayerAudioSample
50 GetOffscreenLayerRecordingFinishReadyEvent
52 GetOffscreenLayerAudioEncodeReadyEvent

CreateVideoProxy

No input, returns an IHOSBinderDriver.

OpenOffscreenLayer

Takes an input u64, returns an output u32.

CloseOffscreenLayer

Takes an input u64, no output.

StartOffscreenRecording

Takes an input u64, no output.

AbortOffscreenRecording

Takes an input u64, no output.

RequestOffscreenRecordingFinishReady

Takes an input u64, no output.

StartOffscreenRecordingEx

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

CompleteOffscreenRecordingFinish

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

CompleteOffscreenRecordingFinishEx0

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

GetOffscreenLayerError

Takes an input u64, no output.

OffscreenRecordingParameter

This is a 0x80-byte struct.