mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 20:42:44 +02:00
* add capsa IAlbumAccessorSession * add documentation for capsa and change parameter order and names for image loading * add CapsLoadAlbumScreenShotImageOutput for caps:a * add remaining LoadAlbumScreenShot- calls * add more calls, add structs and add doc * fix query and use count instead of size for listing
174 lines
9.4 KiB
C
174 lines
9.4 KiB
C
/**
|
|
* @file capsu.h
|
|
* @brief Application Album (caps:u) service IPC wrapper.
|
|
* This is only usable with AlbumFiles associated with the current host Application.
|
|
* @author yellows8
|
|
* @copyright libnx Authors
|
|
*/
|
|
#pragma once
|
|
#include "../types.h"
|
|
#include "../sf/service.h"
|
|
#include "../services/caps.h"
|
|
#include "../services/acc.h"
|
|
|
|
/// Initialize caps:u. Only available on [5.0.0+].
|
|
Result capsuInitialize(void);
|
|
|
|
/// Exit caps:u.
|
|
void capsuExit(void);
|
|
|
|
/// Gets the Service for caps:u.
|
|
Service* capsuGetServiceSession(void);
|
|
|
|
/// Gets the Service for IAlbumAccessorApplicationSession, only initialized after \ref capsuOpenAlbumMovieStream was used (unaffected by using \ref capsuCloseAlbumMovieStream).
|
|
Service* capsuGetServiceSession_Accessor(void);
|
|
|
|
/**
|
|
* @brief Gets a listing of \ref CapsApplicationAlbumFileEntry.
|
|
* @note On [6.0.0+] this uses GetAlbumFileList1AafeAruidDeprecated, otherwise this uses GetAlbumFileList0AafeAruidDeprecated.
|
|
* @note This is an old version of \ref capsuGetAlbumFileList3.
|
|
* @param[out] entries Output array of \ref CapsApplicationAlbumFileEntry.
|
|
* @param[in] count Max size of the output array in entries.
|
|
* @param[in] type \ref CapsContentType
|
|
* @param[in] start_datetime Start \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[in] end_datetime End \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[out] total_entries Total output entries.
|
|
*/
|
|
Result capsuGetAlbumFileListDeprecated1(CapsApplicationAlbumFileEntry *entries, s32 count, CapsContentType type, const CapsAlbumFileDateTime *start_datetime, const CapsAlbumFileDateTime *end_datetime, s32 *total_entries);
|
|
|
|
/**
|
|
* @brief Gets a listing of \ref CapsApplicationAlbumFileEntry, where the AlbumFile has an UserId which matches the input one. See also \ref capssuSaveScreenShotWithUserIds.
|
|
* @note Only available on [6.0.0+].
|
|
* @note This is an old version of \ref capsuGetAlbumFileList4.
|
|
* @param[out] entries Output array of \ref CapsApplicationAlbumFileEntry.
|
|
* @param[in] count Max size of the output array in entries.
|
|
* @param[in] type \ref CapsContentType
|
|
* @param[in] start_datetime Start \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[in] end_datetime End \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[in] uid \ref AccountUid
|
|
* @param[out] total_entries Total output entries.
|
|
*/
|
|
Result capsuGetAlbumFileListDeprecated2(CapsApplicationAlbumFileEntry *entries, s32 count, CapsContentType type, const CapsAlbumFileDateTime *start_datetime, const CapsAlbumFileDateTime *end_datetime, AccountUid uid, s32 *total_entries);
|
|
|
|
/**
|
|
* @brief Gets a listing of \ref CapsApplicationAlbumEntry.
|
|
* @note Only available on [7.0.0+], on prior sysvers use \ref capsuGetAlbumFileListDeprecated1 instead.
|
|
* @param[out] entries Output array of \ref CapsApplicationAlbumEntry.
|
|
* @param[in] count Max size of the output array in entries.
|
|
* @param[in] type \ref CapsContentType
|
|
* @param[in] start_datetime Start \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[in] end_datetime End \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[out] total_entries Total output entries.
|
|
*/
|
|
Result capsuGetAlbumFileList3(CapsApplicationAlbumEntry *entries, s32 count, CapsContentType type, const CapsAlbumFileDateTime *start_datetime, const CapsAlbumFileDateTime *end_datetime, s32 *total_entries);
|
|
|
|
/**
|
|
* @brief Gets a listing of \ref CapsApplicationAlbumEntry, where the AlbumFile has an UserId which matches the input one. See also \ref capssuSaveScreenShotWithUserIds.
|
|
* @note Only available on [7.0.0+], on prior sysvers use \ref capsuGetAlbumFileListDeprecated2 instead.
|
|
* @param[out] entries Output array of \ref CapsApplicationAlbumEntry.
|
|
* @param[in] count Max size of the output array in entries.
|
|
* @param[in] type \ref CapsContentType
|
|
* @param[in] start_datetime Start \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[in] end_datetime End \ref CapsAlbumFileDateTime, when NULL the default is used.
|
|
* @param[in] uid \ref AccountUid
|
|
* @param[out] total_entries Total output entries.
|
|
*/
|
|
Result capsuGetAlbumFileList4(CapsApplicationAlbumEntry *entries, s32 count, CapsContentType type, const CapsAlbumFileDateTime *start_datetime, const CapsAlbumFileDateTime *end_datetime, AccountUid uid, s32 *total_entries);
|
|
|
|
/**
|
|
* @brief Deletes the specified AlbumFile.
|
|
* @param[in] type \ref CapsContentType, must match ::CapsContentType_ExtraMovie.
|
|
* @param[in] entry \ref CapsApplicationAlbumFileEntry
|
|
*/
|
|
Result capsuDeleteAlbumFile(CapsContentType type, const CapsApplicationAlbumFileEntry *entry);
|
|
|
|
/**
|
|
* @brief Gets the filesize for the entire specified AlbumFile.
|
|
* @param[in] entry \ref CapsApplicationAlbumFileEntry
|
|
* @param[out] size Output filesize.
|
|
*/
|
|
Result capsuGetAlbumFileSize(const CapsApplicationAlbumFileEntry *entry, u64 *size);
|
|
|
|
/**
|
|
* @brief Load the ScreenShotImage for the specified AlbumFile.
|
|
* @param[out] width Output image width. Optional, can be NULL.
|
|
* @param[out] height Output image height. Optional, can be NULL.
|
|
* @param[out] attr \ref CapsScreenShotAttributeForApplication
|
|
* @param[out] userdata Output buffer containing the UserData. Optional, can be NULL. This buffer is cleared to 0 using userdata_maxsize, prior to doing the memcpy.
|
|
* @param[in] userdata_maxsize Max size of the userdata buffer. Optional, can be 0.
|
|
* @param[out] userdata_size Userdata size field, clamped to max size sizeof(CapsApplicationData::userdata) when needed.
|
|
* @param[out] image RGBA8 image output buffer.
|
|
* @param[in] image_size Image buffer size, should be at least large enough for RGBA8 1280x720.
|
|
* @param[out] workbuf Work buffer, cleared to 0 by the cmd before it returns.
|
|
* @param[in] workbuf_size Work buffer size, must be at least the size of the JPEG within the AlbumFile.
|
|
* @param[in] entry \ref CapsApplicationAlbumFileEntry
|
|
* @param[in] option \ref CapsScreenShotDecodeOption
|
|
*/
|
|
Result capsuLoadAlbumScreenShotImage(s32 *width, s32 *height, CapsScreenShotAttributeForApplication *attr, void* userdata, size_t userdata_maxsize, u32 *userdata_size, void* image, size_t image_size, void* workbuf, size_t workbuf_size, const CapsApplicationAlbumFileEntry *entry, const CapsScreenShotDecodeOption *option);
|
|
|
|
/**
|
|
* @brief Load the ScreenShotThumbnailImage for the specified AlbumFile.
|
|
* @param[out] width Output image width. Optional, can be NULL.
|
|
* @param[out] height Output image height. Optional, can be NULL.
|
|
* @param[out] attr \ref CapsScreenShotAttributeForApplication
|
|
* @param[out] userdata Output buffer containing the UserData. Optional, can be NULL. This buffer is cleared to 0 using userdata_maxsize, prior to doing the memcpy.
|
|
* @param[in] userdata_maxsize Max size of the userdata buffer. Optional, can be 0.
|
|
* @param[out] userdata_size Userdata size field, clamped to max size sizeof(CapsApplicationData::userdata) when needed.
|
|
* @param[out] image RGBA8 image output buffer.
|
|
* @param[in] image_size Image buffer size, should be at least large enough for RGBA8 320x180.
|
|
* @param[out] workbuf Work buffer, cleared to 0 by the cmd before it returns.
|
|
* @param[in] workbuf_size Work buffer size, must be at least the size of the JPEG within the AlbumFile.
|
|
* @param[in] entry \ref CapsApplicationAlbumFileEntry
|
|
* @param[in] option \ref CapsScreenShotDecodeOption
|
|
*/
|
|
Result capsuLoadAlbumScreenShotThumbnailImage(s32 *width, s32 *height, CapsScreenShotAttributeForApplication *attr, void* userdata, size_t userdata_maxsize, u32 *userdata_size, void* image, size_t image_size, void* workbuf, size_t workbuf_size, const CapsApplicationAlbumFileEntry *entry, const CapsScreenShotDecodeOption *option);
|
|
|
|
/**
|
|
* @brief PrecheckToCreateContents. Official sw only uses this with ::CapsContentType_ExtraMovie.
|
|
* @param[in] type \ref CapsContentType
|
|
* @param[in] unk Unknown.
|
|
*/
|
|
Result capsuPrecheckToCreateContents(CapsContentType type, u64 unk);
|
|
|
|
/**
|
|
* @brief Opens an AlbumMovieStream.
|
|
* @note This opens IAlbumAccessorApplicationSession if not previously opened, it's closed during \ref capsuExit.
|
|
* @note Up to 4 streams can be open at the same time. Multiple streams can be open at the same time for the same \ref CapsApplicationAlbumFileEntry.
|
|
* @param[out] stream Stream handle.
|
|
* @param[in] entry \ref CapsApplicationAlbumFileEntry
|
|
*/
|
|
Result capsuOpenAlbumMovieStream(u64 *stream, const CapsApplicationAlbumFileEntry *entry);
|
|
|
|
/**
|
|
* @brief Closes an AlbumMovieStream.
|
|
* @param[in] stream Stream handle.
|
|
*/
|
|
Result capsuCloseAlbumMovieStream(u64 stream);
|
|
|
|
/**
|
|
* @brief Gets the data size of an AlbumMovieStream.
|
|
* @param[in] stream Stream handle.
|
|
* @param[out] size Size of the actual MP4, without the JPEG at the end.
|
|
*/
|
|
Result capsuGetAlbumMovieStreamSize(u64 stream, u64 *size);
|
|
|
|
/**
|
|
* @brief Reads data from an AlbumMovieStream.
|
|
* @note offset(+size) must not be negative. offset and size must be aligned to 0x40000-bytes.
|
|
* @note When offset(+size) goes beyond the size from \ref capsuGetAlbumMovieStreamSize, the regions of the buffer which goes beyond that are cleared to 0, and actual_size is still set to the input size.
|
|
* @param[in] stream Stream handle.
|
|
* @param[in] offset Offset.
|
|
* @param[out] Output data buffer.
|
|
* @param[in] size Data buffer size.
|
|
* @param[out] actual_size Actual read size.
|
|
*/
|
|
Result capsuReadAlbumMovieStream(u64 stream, s64 offset, void* buffer, size_t size, u64 *actual_size);
|
|
|
|
/**
|
|
* @brief Gets the BrokenReason for an AlbumMovieStream.
|
|
* @note Official sw doesn't use this.
|
|
* @param[in] stream Stream handle.
|
|
*/
|
|
Result capsuGetAlbumMovieStreamBrokenReason(u64 stream);
|
|
|