Capture services: Difference between revisions

No edit summary
(11 intermediate revisions by the same user not shown)
Line 270: Line 270:
== DeleteAlbumFileByAruid ==
== DeleteAlbumFileByAruid ==
Takes a PID, an input u8 [[#ContentType]], an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output.
Takes a PID, an input u8 [[#ContentType]], an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output.
The [[#ContentType]] must match 3.


== GetAlbumFileSizeByAruid ==
== GetAlbumFileSizeByAruid ==
Takes a PID, an input [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and returns an output u64.
Takes a PID, an input [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and returns an output u64.
This gets the filesize for the entire specified Album file.


== DeleteAlbumFileByAruidForDebug ==
== DeleteAlbumFileByAruidForDebug ==
Line 281: Line 285:
== LoadAlbumScreenShotImageByAruid ==
== LoadAlbumScreenShotImageByAruid ==
Takes a PID, a type-0x16 output buffer containing a [[#LoadAlbumScreenShotImageOutputForApplication]], a type-0x46 output buffer, a type-0x6 output buffer, an [[#ApplicationAlbumFileEntry]], a [[#ScreenShotDecodeOption]], and no output.
Takes a PID, a type-0x16 output buffer containing a [[#LoadAlbumScreenShotImageOutputForApplication]], a type-0x46 output buffer, a type-0x6 output buffer, an [[#ApplicationAlbumFileEntry]], a [[#ScreenShotDecodeOption]], and no output.
The type-0x46 buffer contains the RGBA8 image data. The type-0x6 buffer is a work buffer used for reading the entire AlbumFile, the buffer size must be at least the AlbumFile filesize (cleared before the cmd returns).


== LoadAlbumScreenShotThumbnailImageByAruid ==
== LoadAlbumScreenShotThumbnailImageByAruid ==
Takes a PID, a type-0x16 output buffer containing a [[#LoadAlbumScreenShotImageOutputForApplication]], a type-0x46 output buffer,  a type-0x6 output buffer, an [[#ApplicationAlbumFileEntry]], a [[#ScreenShotDecodeOption]], and no output.
Takes a PID, a type-0x16 output buffer containing a [[#LoadAlbumScreenShotImageOutputForApplication]], a type-0x46 output buffer,  a type-0x6 output buffer, an [[#ApplicationAlbumFileEntry]], a [[#ScreenShotDecodeOption]], and no output.
The type-0x46 buffer contains the RGBA8 image data. The type-0x6 buffer is a work buffer used for reading the entire AlbumFile, the buffer size must be at least the AlbumFile filesize (cleared before the cmd returns).


== PrecheckToCreateContentsByAruid ==
== PrecheckToCreateContentsByAruid ==
Line 315: Line 323:


This was added with [5.0.0+].
This was added with [5.0.0+].
This is opened prior to using [[#OpenAlbumMovieReadStream]], when it previously wasn't opened. Official sw only closes this session when closing caps:u, not when using [[#CloseAlbumMovieReadStream]].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 320: Line 330:
! Cmd || Name
! Cmd || Name
|-
|-
| 2001 || OpenAlbumMovieReadStream
| 2001 || [[#OpenAlbumMovieReadStream]]
|-
|-
| 2002 || CloseAlbumMovieReadStream
| 2002 || [[#CloseAlbumMovieReadStream]]
|-
|-
| 2003 || GetAlbumMovieReadStreamMovieDataSize
| 2003 || [[#GetAlbumMovieReadStreamMovieDataSize]]
|-
|-
| 2004 || ReadMovieDataFromAlbumMovieReadStream
| 2004 || [[#ReadMovieDataFromAlbumMovieReadStream]]
|-
|-
| 2005 || GetAlbumMovieReadStreamBrokenReason
| 2005 || [[#GetAlbumMovieReadStreamBrokenReason]]
|}
|}
=== OpenAlbumMovieReadStream ===
Takes a PID, an input [[#ApplicationAlbumFileEntry]], an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and returns an output u64 [[#AlbumMovieReadStreamHandle]].
Up to 4 streams can be open at the same time. Multiple streams can be open at the same time for the same [[#ApplicationAlbumFileEntry]].
=== CloseAlbumMovieReadStream ===
Takes an input u64 [[#AlbumMovieReadStreamHandle]], no output.
=== GetAlbumMovieReadStreamMovieDataSize ===
Takes an input u64 [[#AlbumMovieReadStreamHandle]], returns an output u64.
This gets the size of the actual MP4, without the JPEG at the end.
=== ReadMovieDataFromAlbumMovieReadStream ===
Takes a type-0x6 output buffer, an input u64 [[#AlbumMovieReadStreamHandle]], an input s64 offset, and returns an output u64 actual_size.
offset(+size) must not be negative. offset and size must be aligned to 0x40000-bytes. When offset(+size) goes beyond the size from [[#GetAlbumMovieReadStreamMovieDataSize]], the regions of the buffer which goes beyond that are cleared to 0, and actual_size is still set to the input size.
=== GetAlbumMovieReadStreamBrokenReason ===
Takes an input u64 [[#AlbumMovieReadStreamHandle]], no output.
Unused by official sw.


= ShimLibraryVersion =
= ShimLibraryVersion =
This is a version field. Official sw uses func <code>nn::capsrv::GetShimLibraryVersion()</code> to load this from a global var, which is then used with various commands (the input for those cmds must match value 1).
This is a version field. Official sw uses func <code>nn::capsrv::GetShimLibraryVersion()</code> to load this from a global var, which is then used with various commands (the input for those cmds must match value 1).


[7.0.0-8.1.0] This is value 1.
[7.0.0-9.0.0] This is value 1.


Controls which struct version to use for [[#ApplicationAlbumEntry]] / [[#AlbumFileEntry]]. However, the struct size for the newer version is used regardless on [7.0.0+] for the actual cmds.
Controls which struct version to use for [[#ApplicationAlbumEntry]] / [[#AlbumFileEntry]]. However, the struct size for the newer version is used regardless on [7.0.0+] for the actual cmds.
Line 363: Line 396:
!  Description
!  Description
|-
|-
| 0 || Unknown.
| 0 || Don't display the screenshot-taken Overlay-applet notification.
|-
| 1 || Unknown.
|-
| 2 || Unknown.
|-
|-
| 3 || Unknown.
| 1 || Display the screenshot-taken Overlay notification.
|}
|}


Line 520: Line 549:
! Offset || Size || Description
! Offset || Size || Description
|-
|-
| 0x0 || 0x8 || Width
| 0x0 || 0x8 || s64 Width. Official sw copies this to a s32 output field.
|-
|-
| 0x8 || 0x8 || Height
| 0x8 || 0x8 || s64 Height. Official sw copies this to a s32 output field.
|-
|-
| 0x10 || 0x40 || [[#ScreenShotAttributeForApplication]]
| 0x10 || 0x40 || [[#ScreenShotAttributeForApplication]]
Line 545: Line 574:
| 0x0 || 0x4 || Unknown.
| 0x0 || 0x4 || Unknown.
|-
|-
| 0x4 || 0x3C || Unused by official sw.
| 0x4 || 0x1 || Unknown.
|-
| 0x5 || 0x1 || Unknown.
|-
| 0x6 || 0x1 || Unknown.
|-
| 0x7 || 0x1 || Padding.
|-
| 0x8 || 0x4 || Unknown.
|-
| 0xC || 0x4 || Unknown.
|-
| 0x10 || 0x4 || Unknown.
|-
| 0x14 || 0x4 || Unknown.
|-
| 0x18 || 0x4 || Unknown.
|-
| 0x1C || 0x4 || Unknown.
|-
| 0x20 || 0x2 || Unknown.
|-
| 0x22 || 0x2 || Unknown.
|-
| 0x24 || 0x2 || Unknown.
|-
| 0x26 || 0x2 || Unknown.
|-
| 0x28 || 0x18 || Always zero.
|}
|}


This is "nn::capsrv::ScreenShotAttributeForApplication". This is a 0x40-byte struct.
This is "nn::capsrv::ScreenShotAttributeForApplication". This is a 0x40-byte struct.


Official sw only uses this in <code>nn::album</code> funcs which convert this to [[#AlbumFileAttribute]], with the output from [[#LoadAlbumScreenShotImageByAruid]]/[[#LoadAlbumScreenShotThumbnailImageByAruid]].
Official sw only uses this in <code>nn::album</code> funcs which convert this to [[#AlbumFileAttribute]], with the output from [[#LoadAlbumScreenShotImageByAruid]]/[[#LoadAlbumScreenShotThumbnailImageByAruid]] (only the first u32 is used).


= AlbumFileAttribute =
= AlbumFileAttribute =
Line 563: Line 620:


This is "nn::album::AlbumFileAttribute". This is a 0x10-byte struct. See also [[#ScreenShotAttributeForApplication]].
This is "nn::album::AlbumFileAttribute". This is a 0x10-byte struct. See also [[#ScreenShotAttributeForApplication]].
= AlbumMovieReadStreamHandle =
This is "nn::capsrv::AlbumMovieReadStreamHandle" / "nn::album::MovieStreamHandle".
This is an u64 stream handle.


= Notes =
= Notes =