Line 30: |
Line 30: |
| | 11 || [2.0.0+] GetAlbumEntryFromApplicationAlbumEntry | | | 11 || [2.0.0+] GetAlbumEntryFromApplicationAlbumEntry |
| |- | | |- |
− | | 12 || [3.0.0+] | + | | 12 || [3.0.0+] LoadAlbumScreenShotImageEx |
| |- | | |- |
− | | 13 || [3.0.0+] | + | | 13 || [3.0.0+] LoadAlbumScreenShotThumbnailImageEx |
| |- | | |- |
− | | 14 || [3.0.0+] | + | | 14 || [3.0.0+] LoadAlbumScreenShotImageEx0 |
| |- | | |- |
− | | 15 || [4.0.0+] | + | | 15 || [4.0.0+] GetAlbumUsage3 |
| |- | | |- |
− | | 16 || [4.0.0+] | + | | 16 || [4.0.0+] GetAlbumMountResult |
| |- | | |- |
− | | 17 || [4.0.0+] | + | | 17 || [4.0.0+] GetAlbumUsage16 |
| |- | | |- |
| | 18 || [6.0.0+] | | | 18 || [6.0.0+] |
| + | |- |
| + | | 100 || [5.0.0+] GetAlbumFileCountEx0 |
| + | |- |
| + | | 101 || [5.0.0+] GetAlbumFileListEx0 |
| |- | | |- |
| | 202 || [1.0.0-2.3.0] SaveEditedScreenShot | | | 202 || [1.0.0-2.3.0] SaveEditedScreenShot |
| |- | | |- |
− | | 301 || GetLastThumbnail | + | | 301 || GetLastOverlayScreenShotThumbnail |
| |- | | |- |
− | | 302 || [4.0.0+] | + | | 302 || [4.0.0+] GetLastOverlayMovieThumbnail |
| |- | | |- |
| | 401 || GetAutoSavingStorage | | | 401 || GetAutoSavingStorage |
Line 54: |
Line 58: |
| | 501 || GetRequiredStorageSpaceSizeToCopyAll | | | 501 || GetRequiredStorageSpaceSizeToCopyAll |
| |- | | |- |
− | | 1001 || [3.0.0+] | + | | 1001 || [3.0.0+] LoadAlbumScreenShotThumbnailImageEx0 |
| |- | | |- |
− | | 1002 || [3.0.0+] | + | | 1002 || [3.0.0+] LoadAlbumScreenShotImageEx1 |
| |- | | |- |
− | | 1003 || [4.0.0+] | + | | 1003 || [4.0.0+] LoadAlbumScreenShotThumbnailImageEx1 |
| |- | | |- |
| | 8001 || ForceAlbumUnmounted | | | 8001 || ForceAlbumUnmounted |
Line 68: |
Line 72: |
| | 8012 || GetAlbumCache | | | 8012 || GetAlbumCache |
| |- | | |- |
− | | 8013 || [4.0.0+] | + | | 8013 || [4.0.0+] GetAlbumCacheEx |
| |- | | |- |
− | | 8021 || GetAlbumEntryFromApplicationAlbumEntryAruid | + | | 8021 || [2.0.0+] GetAlbumEntryFromApplicationAlbumEntryAruid |
| |- | | |- |
| | 10011 || SetInternalErrorConversionEnabled | | | 10011 || SetInternalErrorConversionEnabled |
| |- | | |- |
− | | 50000 || [6.0.0+] | + | | 50000 || [6.0.0+] LoadMakerNoteInfoForDebug |
| |- | | |- |
− | | 60002 || [4.0.0+] | + | | 60002 || [4.0.0+] OpenAccessorSession |
| |} | | |} |
| | | |
Line 92: |
Line 96: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 2001 || | + | | 2001 || OpenAlbumMovieReadStream |
| |- | | |- |
− | | 2002 || | + | | 2002 || CloseAlbumMovieReadStream |
| |- | | |- |
− | | 2003 || | + | | 2003 || GetAlbumMovieReadStreamMovieDataSize |
| |- | | |- |
− | | 2004 || | + | | 2004 || ReadMovieDataFromAlbumMovieReadStream |
| |- | | |- |
− | | 2005 || | + | | 2005 || GetAlbumMovieReadStreamBrokenReason |
| |- | | |- |
− | | 2006 || | + | | 2006 || GetAlbumMovieReadStreamImageDataSize |
| |- | | |- |
− | | 2007 || | + | | 2007 || ReadImageDataFromAlbumMovieReadStream |
| |- | | |- |
− | | 2008 || | + | | 2008 || ReadFileAttributeFromAlbumMovieReadStream |
| |} | | |} |
| | | |
| = caps:c = | | = caps:c = |
− | This is "nn::capsrv::sf::IAlbumControlService". | + | This is "nn::capsrv::sf::IAlbumControlService", previously "nn::capsrv::sf::ICaptureControllerService" with [1.0.0]. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 116: |
Line 120: |
| ! Cmd || Name || Notes | | ! Cmd || Name || Notes |
| |- | | |- |
− | | 33 || [7.0.0+] || Takes a total of 0x10-bytes of input, no output.
| + | | [1.0.0] 1 || CaptureRawImage || |
| |- | | |- |
− | | 2001 || || | + | | [1.0.0] 2 || CaptureRawImageWithTimeout || |
| |- | | |- |
− | | 2002 || || | + | | 33 || [7.0.0+] || |
| |- | | |- |
− | | 2011 || || | + | | [1.0.0] 1001 || RequestTakingScreenShot || |
| |- | | |- |
− | | 2012 || || | + | | [1.0.0] 1002 || RequestTakingScreenShotWithTimeout || |
| |- | | |- |
− | | 2013 || || | + | | [1.0.0] 1011 || NotifyTakingScreenShotRefused || |
| |- | | |- |
− | | 2014 || || | + | | 2001 || NotifyAlbumStorageIsAvailable || |
| |- | | |- |
− | | 2101 || || Takes an input u8 and u64, returns a 0x18-byte struct. | + | | 2002 || NotifyAlbumStorageIsUnavailable || |
| |- | | |- |
− | | 2102 || || | + | | 2011 || [2.0.0+] RegisterAppletResourceUserId || |
| |- | | |- |
− | | [?-3.0.2] 2201 || || | + | | 2012 || [2.0.0+] UnregisterAppletResourceUserId || |
| |- | | |- |
− | | 2202 || [4.0.0+] || | + | | 2013 || [2.0.0+] GetApplicationIdFromAruid || |
| |- | | |- |
− | | 2301 || || | + | | 2014 || [2.0.0+] CheckApplicationIdRegistered || |
| |- | | |- |
− | | 2302 || [4.0.0+] || | + | | 2101 || [2.0.0+] GenerateCurrentAlbumFileId || Takes an input u8 and u64, returns a 0x18-byte struct. |
| |- | | |- |
− | | 60001 || [4.0.0+] || Takes a total of 8-bytes of input and a PID, returns an [[#IAlbumControlSession]]. | + | | 2102 || [2.0.0+] GenerateApplicationAlbumEnrty || |
| + | |- |
| + | | [2.0.0-3.0.2] 2201 || SaveAlbumScreenShotFile || |
| + | |- |
| + | | 2202 || [4.0.0+] SaveAlbumScreenShotFileEx || |
| + | |- |
| + | | 2301 || [2.0.0+] SetOverlayScreenShotThumbnailData || |
| + | |- |
| + | | 2302 || [4.0.0+] SetOverlayMovieThumbnailData || |
| + | |- |
| + | | 60001 || [4.0.0+] OpenControlSession || Takes a total of 8-bytes of input and a PID, returns an [[#IAlbumControlSession]]. |
| |} | | |} |
| + | |
| + | === Cmd33 === |
| + | Takes an input u64 [[#ShimLibraryVersion]], an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and a PID, no output. |
| + | |
| + | This is used by [[Applet_Manager_services|caps:su]] SetShimLibraryVersion. |
| | | |
| == IAlbumControlSession == | | == IAlbumControlSession == |
Line 154: |
Line 173: |
| ! Cmd || Name || Notes | | ! Cmd || Name || Notes |
| |- | | |- |
− | | 2001 || || | + | | 2001 || OpenAlbumMovieReadStream || |
| |- | | |- |
− | | 2002 || || | + | | 2002 || CloseAlbumMovieReadStream || |
| |- | | |- |
− | | 2003 || || | + | | 2003 || GetAlbumMovieReadStreamMovieDataSize || |
| |- | | |- |
− | | 2004 || || | + | | 2004 || ReadMovieDataFromAlbumMovieReadStream || |
| |- | | |- |
− | | 2005 || || | + | | 2005 || GetAlbumMovieReadStreamBrokenReason || |
| |- | | |- |
− | | 2006 || || | + | | 2006 || GetAlbumMovieReadStreamImageDataSize || |
| |- | | |- |
− | | 2007 || || | + | | 2007 || ReadImageDataFromAlbumMovieReadStream || |
| |- | | |- |
− | | 2008 || || | + | | 2008 || ReadFileAttributeFromAlbumMovieReadStream || |
| |- | | |- |
− | | 2401 || || | + | | 2401 || OpenAlbumMovieWriteStream || |
| |- | | |- |
− | | 2402 || || | + | | 2402 || FinishAlbumMovieWriteStream || |
| |- | | |- |
− | | 2403 || || | + | | 2403 || CommitAlbumMovieWriteStream || |
| |- | | |- |
− | | 2404 || || | + | | 2404 || DiscardAlbumMovieWriteStream || |
| |- | | |- |
− | | 2405 || || | + | | 2405 || DiscardAlbumMovieWriteStreamNoDelete || |
| |- | | |- |
| | 2406 || [7.0.0+] || | | | 2406 || [7.0.0+] || |
| |- | | |- |
− | | 2411 || || | + | | 2411 || StartAlbumMovieWriteStreamDataSection || |
| |- | | |- |
− | | 2412 || || | + | | 2412 || EndAlbumMovieWriteStreamDataSection || |
| |- | | |- |
− | | 2413 || || | + | | 2413 || StartAlbumMovieWriteStreamMetaSection || |
| |- | | |- |
− | | 2414 || || | + | | 2414 || EndAlbumMovieWriteStreamMetaSection || |
| |- | | |- |
− | | 2421 || || | + | | 2421 || ReadDataFromAlbumMovieWriteStream || |
| |- | | |- |
− | | 2422 || || | + | | 2422 || WriteDataToAlbumMovieWriteStream || |
| |- | | |- |
− | | 2424 || || | + | | 2424 || WriteMetaToAlbumMovieWriteStream || |
| |- | | |- |
− | | 2431 || || | + | | 2431 || GetAlbumMovieWriteStreamBrokenReason || |
| |- | | |- |
− | | 2433 || || | + | | 2433 || GetAlbumMovieWriteStreamDataSize || |
| |- | | |- |
− | | 2434 || || | + | | 2434 || SetAlbumMovieWriteStreamDataSize || |
| |} | | |} |
| | | |
| = caps:u = | | = caps:u = |
| This is "nn::capsrv::sf::IAlbumApplicationService". | | This is "nn::capsrv::sf::IAlbumApplicationService". |
| + | |
| + | This was added with [5.0.0+]. |
| + | |
| + | Official sw via the <code>nn::album</code> wrappers uses start_DateTime = YYYY-MM-DD 1970-01-01 with the rest set to all-zero, end_DateTime is the same except year = 3000. With [[#GetAlbumFileList0AafeAruidDeprecated]], start_PosixTime = UTC 1999-12-31 00:00 (0x386BF200), and end_PosixTime = UTC 2100-01-01 00:00 (0xF4865700). |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 212: |
Line 235: |
| | 32 || [7.0.0+] [[#SetShimLibraryVersion]] | | | 32 || [7.0.0+] [[#SetShimLibraryVersion]] |
| |- | | |- |
− | | 102 || GetAlbumFileList0AafeAruidDeprecated | + | | 102 || [[#GetAlbumFileList0AafeAruidDeprecated]] |
| |- | | |- |
− | | 103 || DeleteAlbumFileByAruid | + | | 103 || [[#DeleteAlbumFileByAruid]] |
| |- | | |- |
− | | 104 || GetAlbumFileSizeByAruid | + | | 104 || [[#GetAlbumFileSizeByAruid]] |
| |- | | |- |
− | | 105 || DeleteAlbumFileByAruidForDebug | + | | 105 || [[#DeleteAlbumFileByAruidForDebug]] |
| |- | | |- |
− | | 110 || LoadAlbumScreenShotImageByAruid | + | | 110 || [[#LoadAlbumScreenShotImageByAruid]] |
| |- | | |- |
− | | 120 || LoadAlbumScreenShotThumbnailImageByAruid | + | | 120 || [[#LoadAlbumScreenShotThumbnailImageByAruid]] |
| |- | | |- |
− | | 130 || PrecheckToCreateContentsByAruid | + | | 130 || [[#PrecheckToCreateContentsByAruid]] |
| |- | | |- |
− | | 140 || [6.0.0+] GetAlbumFileList1AafeAruidDeprecated | + | | 140 || [6.0.0+] [[#GetAlbumFileList1AafeAruidDeprecated]] |
| |- | | |- |
− | | 141 || [6.0.0+] GetAlbumFileList2AafeUidAruidDeprecated | + | | 141 || [6.0.0+] [[#GetAlbumFileList2AafeUidAruidDeprecated]] |
| |- | | |- |
− | | 142 || [7.0.0+] GetAlbumFileList3AaeAruid | + | | 142 || [7.0.0+] [[#GetAlbumFileList3AaeAruid]] |
| |- | | |- |
− | | 143 || [7.0.0+] GetAlbumFileList4AaeUidAruid | + | | 143 || [7.0.0+] [[#GetAlbumFileList4AaeUidAruid]] |
| |- | | |- |
− | | 60002 || OpenAccessorSessionForApplication | + | | 60002 || [[#OpenAccessorSessionForApplication]] |
| |} | | |} |
| | | |
| == SetShimLibraryVersion == | | == SetShimLibraryVersion == |
− | Takes a total of 0x10-bytes of input and a PID, no output. | + | Takes an input u64 [[#ShimLibraryVersion]], an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and a PID, no output. |
| + | |
| + | == GetAlbumFileList0AafeAruidDeprecated == |
| + | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#ContentType]], two s64s, and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries. |
| + | |
| + | The two s64s are the start/end PosixTime. |
| + | |
| + | == DeleteAlbumFileByAruid == |
| + | Takes a PID, an input u8 [[#ContentType]], an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output. |
| + | |
| + | The [[#ContentType]] must match 3. |
| + | |
| + | == GetAlbumFileSizeByAruid == |
| + | 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 == |
| + | Takes a PID, an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output. |
| + | |
| + | The cached value loaded from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned. |
| + | |
| + | == 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. |
| + | |
| + | 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 == |
| + | 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 == |
| + | Takes a PID, an input u8 [[#ContentType]], an u64, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output. |
| + | |
| + | == GetAlbumFileList1AafeAruidDeprecated == |
| + | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#ContentType]], two [[#AlbumFileDateTime]], and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries. |
| + | |
| + | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. |
| + | |
| + | == GetAlbumFileList2AafeUidAruidDeprecated == |
| + | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#ContentType]], two [[#AlbumFileDateTime]], an u128 userID, and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries. |
| + | |
| + | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. |
| + | |
| + | == GetAlbumFileList3AaeAruid == |
| + | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumEntry]], a PID, an u8 [[#ContentType]], two [[#AlbumFileDateTime]], and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries. |
| + | |
| + | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. |
| + | |
| + | == GetAlbumFileList4AaeUidAruid == |
| + | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumEntry]], a PID, an u8 [[#ContentType]], two [[#AlbumFileDateTime]], an u128 userID, and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries. |
| + | |
| + | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. |
| + | |
| + | == OpenAccessorSessionForApplication == |
| + | Takes a PID, an input [[#ApplicationAlbumFileEntry]], an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and returns an output [[#IAlbumAccessorApplicationSession]]. |
| | | |
| == IAlbumAccessorApplicationSession == | | == IAlbumAccessorApplicationSession == |
| This is "nn::capsrv::sf::IAlbumAccessorApplicationSession". | | This is "nn::capsrv::sf::IAlbumAccessorApplicationSession". |
| + | |
| + | 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 247: |
Line 330: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 2001 || OpenAlbumMovieReadStream | + | | 2001 || [[#OpenAlbumMovieReadStream]] |
| + | |- |
| + | | 2002 || [[#CloseAlbumMovieReadStream]] |
| + | |- |
| + | | 2003 || [[#GetAlbumMovieReadStreamMovieDataSize]] |
| + | |- |
| + | | 2004 || [[#ReadMovieDataFromAlbumMovieReadStream]] |
| + | |- |
| + | | 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 = |
| + | 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-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. |
| + | |
| + | = Enums = |
| + | |
| + | === AlbumImageOrientation === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 || Unknown. |
| + | |- |
| + | | 1 || Unknown. |
| + | |- |
| + | | 2 || Unknown. |
| + | |- |
| + | | 3 || Unknown. |
| + | |} |
| + | |
| + | This is "nn::album::ImageOrientation". |
| + | |
| + | === AlbumReportOption === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 || Don't display the screenshot-taken Overlay-applet notification. |
| + | |- |
| + | | 1 || Display the screenshot-taken Overlay notification. |
| + | |} |
| + | |
| + | This is "nn::album::AlbumReportOption". |
| + | |
| + | === ContentType === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 || Screenshot. Album screenshots. |
| + | |- |
| + | | 1 || Movie. Album videos. |
| + | |- |
| + | | 3 || ExtraMovie. Videos recorded by the current Application title via [[GRC_services#IMovieMaker|GRC MovieMaker]]. |
| + | |} |
| + | |
| + | = AlbumFileDateTime = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x2 || Year |
| + | |- |
| + | | 0x2 || 0x1 || Month |
| + | |- |
| + | | 0x3 || 0x1 || Day |
| + | |- |
| + | | 0x4 || 0x1 || Hour |
| + | |- |
| + | | 0x5 || 0x1 || Minute |
| + | |- |
| + | | 0x6 || 0x1 || Second |
| + | |- |
| + | | 0x7 || 0x1 || Unique ID for when there's multiple Album files with the same timestamp. |
| + | |} |
| + | |
| + | This is "nn::capsrv::AlbumFileDateTime". This is a 0x8-byte struct. |
| + | |
| + | This corresponds to each field in the Album entry filename, prior to the "-": <code>YYYYMMDDHHMMSSII</code>. |
| + | |
| + | = AlbumEntry = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || Unknown |
| + | |- |
| + | | 0x8 || 0x8 || titleID |
| + | |- |
| + | | 0x10 || 0x8 || [[#AlbumFileDateTime]] |
| + | |- |
| + | | 0x18 || 0x1 || Unknown |
| + | |- |
| + | | 0x19 || 0x1 || Unknown |
| + | |- |
| + | | 0x1A || 0x6 || Padding? |
| + | |} |
| + | |
| + | This is "nn::capsrv::AlbumEntry". This is a 0x20-byte struct. |
| + | |
| + | = AlbumFileEntry = |
| + | This is "nn::album::AlbumFileEntry". This is identical to [[#ApplicationAlbumEntry]]. On older versions where official sw used to use cmds which use [[#ApplicationAlbumFileEntry]], this struct matches [[#ApplicationAlbumFileEntry]]. |
| + | |
| + | = ApplicationAlbumEntry = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || Unknown. |
| + | |- |
| + | | 0x8 || 0x8 || Unknown. |
| + | |- |
| + | | 0x10 || 0x8 || [[#AlbumFileDateTime]] |
| + | |- |
| + | | 0x18 || 0x8 || Unknown. |
| + | |} |
| + | |
| + | This is "nn::capsrv::ApplicationAlbumEntry". This is a 0x20-byte struct. On older versions where [[#ShimLibraryVersion]] is 0, this has a different format. |
| + | |
| + | With the output from [[Applet_Manager_services#caps:su|caps:su]] sdk-nso only uses this for the [[Internet_Browser|Share-applet]] (when the output is used at all), with everything else it's used as an [[#AlbumFileEntry]]. In those cases with the <code>nn::album</code> wrapper funcs, it's "converted" by just copying the struct (arrays are "converted" by just returning a ptr to the input array). |
| + | |
| + | = ApplicationAlbumFileEntry = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x20 || [[#ApplicationAlbumEntry]] |
| + | |- |
| + | | 0x20 || 0x8 || [[#AlbumFileDateTime]] |
| + | |- |
| + | | 0x28 || 0x8 || Unknown. |
| + | |} |
| + | |
| + | This is "nn::capsrv::ApplicationAlbumFileEntry". This is a 0x30-byte struct. |
| + | |
| + | On newer versions where official sw uses [[#ApplicationAlbumEntry]], [[#ApplicationAlbumEntry]] is converted to ApplicationAlbumFileEntry when using cmds which need it with: |
| + | * First 0x20-bytes are the same. |
| + | * u64 ApplicationAlbumFileEntry+0x20 = [[#ApplicationAlbumEntry]]+0x10. |
| + | * Last 8-bytes = 0. |
| + | |
| + | = ScreenShotAttribute = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x4 || Always set to 0 by official sw. |
| + | |- |
| + | | 0x4 || 0x4 || [[#AlbumImageOrientation]] |
| + | |- |
| + | | 0x8 || 0x4 || Always set to 0 by official sw. |
| + | |- |
| + | | 0xC || 0x4 || Always set to 1 by official sw. |
| + | |- |
| + | | 0x10 || 0x30 || Always set to 0 by official sw. |
| + | |} |
| + | |
| + | This is "nn::capsrv::detail::ScreenShotAttributeEx0" / "nn::capsrv::ScreenShotAttribute". This is a 0x40-byte struct. |
| + | |
| + | = ApplicationData = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x400 || UserData |
| + | |- |
| + | | 0x400 || 0x4 || UserData size. |
| + | |} |
| + | |
| + | This is "nn::capsrv::ApplicationData". This is a 0x404-byte struct. |
| + | |
| + | = UserIdList = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x80 || u128 userIDs |
| + | |- |
| + | | 0x80 || 0x1 || Total userIDs. |
| + | |- |
| + | | 0x81 || 0x7 || Padding. |
| + | |} |
| + | |
| + | This is "nn::capsrv::UserIdList". This is a 0x88-byte struct. |
| + | |
| + | = LoadAlbumScreenShotImageOutputForApplication = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || s64 Width. Official sw copies this to a s32 output field. |
| + | |- |
| + | | 0x8 || 0x8 || s64 Height. Official sw copies this to a s32 output field. |
| + | |- |
| + | | 0x10 || 0x40 || [[#ScreenShotAttributeForApplication]] |
| + | |- |
| + | | 0x50 || 0x404 || [[#ApplicationData]] |
| + | |- |
| + | | 0x454 || 0xAC || Unused |
| + | |} |
| + | |
| + | This is "nn::capsrv::sf::LoadAlbumScreenShotImageOutputForApplication". This is a 0x500-byte struct. |
| + | |
| + | = ScreenShotDecodeOption = |
| + | This is "nn::capsrv::ScreenShotDecodeOption". This is a 0x20-byte struct. |
| + | |
| + | Official sw sets this to all-zero with the input for [[#LoadAlbumScreenShotImageByAruid]]/[[#LoadAlbumScreenShotThumbnailImageByAruid]]. |
| + | |
| + | = ScreenShotAttributeForApplication = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x4 || Unknown. |
| + | |- |
| + | | 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. |
| |- | | |- |
− | | 2002 || CloseAlbumMovieReadStream | + | | 0x28 || 0x18 || Always zero. |
| + | |} |
| + | |
| + | 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]] (only the first u32 is used). |
| + | |
| + | = AlbumFileAttribute = |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 2003 || GetAlbumMovieReadStreamMovieDataSize | + | ! Offset || Size || Description |
| |- | | |- |
− | | 2004 || ReadMovieDataFromAlbumMovieReadStream | + | | 0x0 || 0x8 || The <code>nn::album</code> funcs referenced by [[#ScreenShotAttributeForApplication]] set this to: <code>ScreenShotAttributeForApplication.first_u32 == 2</code>. |
| |- | | |- |
− | | 2005 || GetAlbumMovieReadStreamBrokenReason | + | | 0x8 || 0x8 || Set to zero by official sw. |
| |} | | |} |
| + | |
| + | 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 = |