Changes

Jump to navigation Jump to search
Line 42: Line 42:  
| 17 || [4.0.0+] GetAlbumUsage16
 
| 17 || [4.0.0+] GetAlbumUsage16
 
|-
 
|-
| 18 || [6.0.0+]
+
| 18 || [6.0.0+] [[#GetAppletProgramIdTable]]
 +
|-
 +
| 19 || [11.0.0+] [[#GetAlbumFileName]]
 
|-
 
|-
 
| 100 || [5.0.0+] GetAlbumFileCountEx0
 
| 100 || [5.0.0+] GetAlbumFileCountEx0
 
|-
 
|-
 
| 101 || [5.0.0+] GetAlbumFileListEx0
 
| 101 || [5.0.0+] GetAlbumFileListEx0
 +
|-
 +
| 110 || [15.0.0+]
 +
|-
 +
| 120 || [17.0.0+]
 +
|-
 +
| 130 || [17.0.0+]
 +
|-
 +
| 140 || [17.0.0+]
 +
|-
 +
| 141 || [18.0.0+]
 +
|-
 +
| 150 || [17.0.0+]
 +
|-
 +
| 151 || [18.0.0+]
 +
|-
 +
| 160 || [18.0.0+]
 
|-
 
|-
 
| 202 || [1.0.0-2.3.0] SaveEditedScreenShot
 
| 202 || [1.0.0-2.3.0] SaveEditedScreenShot
Line 60: Line 78:  
| 1001 || [3.0.0+] LoadAlbumScreenShotThumbnailImageEx0
 
| 1001 || [3.0.0+] LoadAlbumScreenShotThumbnailImageEx0
 
|-
 
|-
| 1002 || [3.0.0+] LoadAlbumScreenShotImageEx1
+
| 1002 || [3.0.0+] [[#LoadAlbumScreenShotImageEx1]]
 
|-
 
|-
 
| 1003 || [4.0.0+] LoadAlbumScreenShotThumbnailImageEx1
 
| 1003 || [4.0.0+] LoadAlbumScreenShotThumbnailImageEx1
Line 80: Line 98:  
| 50000 || [6.0.0+] LoadMakerNoteInfoForDebug
 
| 50000 || [6.0.0+] LoadMakerNoteInfoForDebug
 
|-
 
|-
| 60002 || [4.0.0+] OpenAccessorSession
+
| 60002 || [4.0.0+] [[#OpenAccessorSession]]
 
|}
 
|}
   −
Cmd1002: Takes a total of 0x38-bytes of input, two type-0x5 input buffers, and returns 0x20-bytes of output. [4.0.0+] No longer returns output, and now takes the following buffers instead: type-0x16, type-0x46, and type-0x6.
+
== GetAppletProgramIdTable ==
 +
Takes a type-70 buffer and returns a bool. If the buffer is sufficient it writes two application ID's to the buffer (0x100000000001000 and 0x100000000001fff) and returns true. This is used by photoViewer to group all screenshots of applets.
 +
 
 +
== GetAlbumFileName ==
 +
Takes an input [[#AlbumFileId]] and a type-0x6 output buffer. Writes the filename of the corresponding file to the buffer.
 +
 
 +
== LoadAlbumScreenShotImageEx1 ==
 +
Takes a total of 0x38-bytes of input, two type-0x5 input buffers, and returns 0x20-bytes of output. [4.0.0+] No longer returns output, and now takes the following buffers instead: type-0x16, type-0x46, and type-0x6.
   −
Cmd60002: Takes a total of 8-bytes of input, a PID, and returns an [[#IAlbumAccessorSession]].
+
== OpenAccessorSession ==
 +
Takes a total of 8-bytes of input, a PID, and returns an [[#IAlbumAccessorSession]].
    
== IAlbumAccessorSession ==
 
== IAlbumAccessorSession ==
Line 111: Line 137:  
|-
 
|-
 
| 2008 || ReadFileAttributeFromAlbumMovieReadStream
 
| 2008 || ReadFileAttributeFromAlbumMovieReadStream
 +
|-
 +
| 5000 || [18.0.0+]
 
|}
 
|}
    
= caps:c =
 
= caps:c =
This is "nn::capsrv::sf::IAlbumControlService", previously "nn::capsrv::sf::ICaptureControllerService" with [1.0.0].
+
This is "nn::capsrv::sf::ICaptureControllerService".
 +
 
 +
[2.0.0+] This is "nn::capsrv::sf::IAlbumControlService".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 171: Line 201:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 2001 || OpenAlbumMovieReadStream
 +
|-
 +
| 2002 || CloseAlbumMovieReadStream
 
|-
 
|-
| 2001 || OpenAlbumMovieReadStream ||  
+
| 2003 || GetAlbumMovieReadStreamMovieDataSize
 
|-
 
|-
| 2002 || CloseAlbumMovieReadStream ||  
+
| 2004 || ReadMovieDataFromAlbumMovieReadStream
 
|-
 
|-
| 2003 || GetAlbumMovieReadStreamMovieDataSize ||  
+
| 2005 || GetAlbumMovieReadStreamBrokenReason
 
|-
 
|-
| 2004 || ReadMovieDataFromAlbumMovieReadStream ||  
+
| 2006 || GetAlbumMovieReadStreamImageDataSize
 
|-
 
|-
| 2005 || GetAlbumMovieReadStreamBrokenReason ||  
+
| 2007 || ReadImageDataFromAlbumMovieReadStream
 
|-
 
|-
| 2006 || GetAlbumMovieReadStreamImageDataSize ||  
+
| 2008 || ReadFileAttributeFromAlbumMovieReadStream
 
|-
 
|-
| 2007 || ReadImageDataFromAlbumMovieReadStream ||  
+
| 2345 || [18.0.0+]
 
|-
 
|-
| 2008 || ReadFileAttributeFromAlbumMovieReadStream ||  
+
| 2401 || OpenAlbumMovieWriteStream
 
|-
 
|-
| 2401 || OpenAlbumMovieWriteStream ||  
+
| 2402 || FinishAlbumMovieWriteStream
 
|-
 
|-
| 2402 || FinishAlbumMovieWriteStream ||  
+
| 2403 || CommitAlbumMovieWriteStream
 
|-
 
|-
| 2403 || CommitAlbumMovieWriteStream ||  
+
| 2404 || DiscardAlbumMovieWriteStream
 
|-
 
|-
| 2404 || DiscardAlbumMovieWriteStream ||  
+
| 2405 || DiscardAlbumMovieWriteStreamNoDelete
 
|-
 
|-
| 2405 || DiscardAlbumMovieWriteStreamNoDelete ||  
+
| 2406 || [7.0.0+] CommitAlbumMovieWriteStreamEx
 
|-
 
|-
| 2406 || [7.0.0+] CommitAlbumMovieWriteStreamEx ||  
+
| 2411 || StartAlbumMovieWriteStreamDataSection
 
|-
 
|-
| 2411 || StartAlbumMovieWriteStreamDataSection ||  
+
| 2412 || EndAlbumMovieWriteStreamDataSection
 
|-
 
|-
| 2412 || EndAlbumMovieWriteStreamDataSection ||  
+
| 2413 || StartAlbumMovieWriteStreamMetaSection
 
|-
 
|-
| 2413 || StartAlbumMovieWriteStreamMetaSection ||  
+
| 2414 || EndAlbumMovieWriteStreamMetaSection
 
|-
 
|-
| 2414 || EndAlbumMovieWriteStreamMetaSection ||  
+
| 2421 || ReadDataFromAlbumMovieWriteStream
 
|-
 
|-
| 2421 || ReadDataFromAlbumMovieWriteStream ||  
+
| 2422 || WriteDataToAlbumMovieWriteStream
 
|-
 
|-
| 2422 || WriteDataToAlbumMovieWriteStream ||  
+
| 2424 || WriteMetaToAlbumMovieWriteStream
 
|-
 
|-
| 2424 || WriteMetaToAlbumMovieWriteStream ||  
+
| 2431 || GetAlbumMovieWriteStreamBrokenReason
 
|-
 
|-
| 2431 || GetAlbumMovieWriteStreamBrokenReason ||  
+
| 2433 || GetAlbumMovieWriteStreamDataSize
 
|-
 
|-
| 2433 || GetAlbumMovieWriteStreamDataSize ||  
+
| 2434 || SetAlbumMovieWriteStreamDataSize
 
|-
 
|-
| 2434 || SetAlbumMovieWriteStreamDataSize ||  
+
| 5000 || [18.0.0+]
 
|}
 
|}
   Line 256: Line 290:  
|-
 
|-
 
| 143 || [7.0.0+] [[#GetAlbumFileList4AaeUidAruid]]
 
| 143 || [7.0.0+] [[#GetAlbumFileList4AaeUidAruid]]
 +
|-
 +
| 144 || [11.0.0+] GetAllAlbumFileList3AaeAruid
 +
|-
 +
| 145 || [17.0.0+]
 +
|-
 +
| 146 || [17.0.0+]
 +
|-
 +
| 147 || [17.0.0+]
 +
|-
 +
| 148 || [18.0.0+]
 
|-
 
|-
 
| 60002 || [[#OpenAccessorSessionForApplication]]
 
| 60002 || [[#OpenAccessorSessionForApplication]]
Line 456: Line 500:  
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || Unknown
+
| 0x0 || 0x8 || Size of the entry.
 
|-
 
|-
| 0x8 || 0x8 || titleID
+
| 0x8 || 0x8 || ApplicationId
 
|-
 
|-
 
| 0x10 || 0x8 || [[#AlbumFileDateTime]]
 
| 0x10 || 0x8 || [[#AlbumFileDateTime]]
 
|-
 
|-
| 0x18 || 0x1 || Unknown
+
| 0x18 || 0x1 || [[#AlbumStorage]]
 
|-
 
|-
| 0x19 || 0x1 || Unknown
+
| 0x19 || 0x1 || [[#ContentType]]
 
|-
 
|-
| 0x1A || 0x6 || Padding?
+
| 0x1A || 0x6 || Padding.
 
|}
 
|}
   Line 485: Line 529:  
| 0x10 || 0x8 || [[#AlbumFileDateTime]]
 
| 0x10 || 0x8 || [[#AlbumFileDateTime]]
 
|-
 
|-
| 0x18 || 0x1 || AlbumStorage.
+
| 0x18 || 0x1 || [[#AlbumStorage]]
 
|-
 
|-
| 0x19 || 0x1 || AlbumFileContents.
+
| 0x19 || 0x1 || [[#ContentType]]
 
|-
 
|-
 
| 0x1a || 0x5 || Padding.
 
| 0x1a || 0x5 || Padding.
Line 652: Line 696:  
== Videos ==
 
== Videos ==
 
[[4.0.0]] includes video playback etc support in Album via mp4. These include a JPEG thumbnail, which is used for video "validation". The EXIF is also much larger: the MakerNote is 0x498-bytes, with encrypted data starting at offset +0x8. This encryption uses AES-CTR with hardcoded key/ctr. MAC calculation works the same way as the [[3.0.0]]+ JPEG MAC calculation, except with a different movie_kek_source/movie_key_source.
 
[[4.0.0]] includes video playback etc support in Album via mp4. These include a JPEG thumbnail, which is used for video "validation". The EXIF is also much larger: the MakerNote is 0x498-bytes, with encrypted data starting at offset +0x8. This encryption uses AES-CTR with hardcoded key/ctr. MAC calculation works the same way as the [[3.0.0]]+ JPEG MAC calculation, except with a different movie_kek_source/movie_key_source.
 +
 +
Each 0x40000-byte chunk in the Movie data stream is validated with a SHA256 hash table, where hash_index=offset>>18. Whether an error is thrown on mismatch is controlled by [[System_Settings|system-setting]] "capsrv!enable_album_movie_filehash_verification".
    
Note: the Album process itself uses libstagefright for video playback.
 
Note: the Album process itself uses libstagefright for video playback.
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu