mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-04 10:32:15 +02:00
fix movie write and add comments
This commit is contained in:
parent
8a8cd49af2
commit
d4105fb0ab
@ -200,11 +200,6 @@ typedef struct {
|
|||||||
u64 unk_x8; ///< Unknown
|
u64 unk_x8; ///< Unknown
|
||||||
} CapsAlbumCache;
|
} CapsAlbumCache;
|
||||||
|
|
||||||
/// AlbumCommitOutput
|
|
||||||
typedef struct {
|
|
||||||
u64 unk[4]; ///< Unknown. Official sw sets this to 0.
|
|
||||||
} CapsAlbumCommitOutput;
|
|
||||||
|
|
||||||
/// Gets the ShimLibraryVersion.
|
/// Gets the ShimLibraryVersion.
|
||||||
u64 capsGetShimLibraryVersion(void);
|
u64 capsGetShimLibraryVersion(void);
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ Result capscGetAlbumMovieStreamSize(u64 stream, u64 *size);
|
|||||||
/**
|
/**
|
||||||
* @brief Reads data from an AlbumMovieReadStream.
|
* @brief Reads data from an AlbumMovieReadStream.
|
||||||
* @note offset(+size) must not be negative. offset and size must be aligned to 0x40000-bytes.
|
* @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 capsaGetAlbumMovieStreamSize, the regions of the buffer which goes beyond that are cleared to 0, and actual_size is still set to the input size.
|
* @note When offset(+size) goes beyond the size from \ref capscGetAlbumMovieStreamSize, the regions of the buffer which goes beyond that are cleared to 0, and actual_size is still set to the input size.
|
||||||
* @note Only available on [4.0.0+].
|
* @note Only available on [4.0.0+].
|
||||||
* @param[in] stream Stream handle.
|
* @param[in] stream Stream handle.
|
||||||
* @param[in] offset Offset.
|
* @param[in] offset Offset.
|
||||||
@ -180,7 +180,7 @@ Result capscGetAlbumMovieReadStreamImageDataSize(u64 stream, u64 *size);
|
|||||||
* @note Only available on [4.0.0+].
|
* @note Only available on [4.0.0+].
|
||||||
* @param[in] stream Stream handle.
|
* @param[in] stream Stream handle.
|
||||||
* @param[in] offset Offset.
|
* @param[in] offset Offset.
|
||||||
* @param[out] Output data buffer.
|
* @param[out] buffer Output data buffer.
|
||||||
* @param[in] size Data buffer size.
|
* @param[in] size Data buffer size.
|
||||||
* @param[out] actual_size Actual read size.
|
* @param[out] actual_size Actual read size.
|
||||||
*/
|
*/
|
||||||
@ -203,18 +203,125 @@ Result capscReadFileAttributeFromAlbumMovieReadStream(u64 stream, CapsScreenShot
|
|||||||
* @param[in] entry \ref CapsAlbumFileId
|
* @param[in] entry \ref CapsAlbumFileId
|
||||||
*/
|
*/
|
||||||
Result capscOpenAlbumMovieWriteStream(u64 *stream, const CapsAlbumFileId *file_id);
|
Result capscOpenAlbumMovieWriteStream(u64 *stream, const CapsAlbumFileId *file_id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Finish write to AlbumMovieWriteStream.
|
||||||
|
* @note Writes copies file from save to destination storage and deletes the temporary file.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscFinishAlbumMovieWriteStream(u64 stream);
|
Result capscFinishAlbumMovieWriteStream(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Closes a finished AlbumMovieWriteStream.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscCommitAlbumMovieWriteStream(u64 stream);
|
Result capscCommitAlbumMovieWriteStream(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Closes an AlbumMovieWriteStream in any state.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscDiscardAlbumMovieWriteStream(u64 stream);
|
Result capscDiscardAlbumMovieWriteStream(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Closes an AlbumMovieWriteStream in any state without deleting the temporary file.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscDiscardAlbumMovieWriteStreamNoDelete(u64 stream);
|
Result capscDiscardAlbumMovieWriteStreamNoDelete(u64 stream);
|
||||||
Result capscCommitAlbumMovieWriteStreamEx(u64 stream, CapsAlbumCommitOutput *out);
|
|
||||||
|
/**
|
||||||
|
* @brief Closes a finished AlbumMovieWriteStream.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
* @param[out] entry \ref CapsAlbumEntry
|
||||||
|
*/
|
||||||
|
Result capscCommitAlbumMovieWriteStreamEx(u64 stream, CapsAlbumEntry *entry);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Start AlbumMovieWriteStream data section.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscStartAlbumMovieWriteStreamDataSection(u64 stream);
|
Result capscStartAlbumMovieWriteStreamDataSection(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief End AlbumMovieWriteStream data section.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscEndAlbumMovieWriteStreamDataSection(u64 stream);
|
Result capscEndAlbumMovieWriteStreamDataSection(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Start AlbumMovieWriteStream meta section.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscStartAlbumMovieWriteStreamMetaSection(u64 stream);
|
Result capscStartAlbumMovieWriteStreamMetaSection(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief End AlbumMovieWriteStream meta section.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscEndAlbumMovieWriteStreamMetaSection(u64 stream);
|
Result capscEndAlbumMovieWriteStreamMetaSection(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Reads data from an AlbumMovieWriteStream.
|
||||||
|
* @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 capscGetAlbumMovieStreamSize, the regions of the buffer which goes beyond that are cleared to 0, and actual_size is still set to the input size.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
* @param[in] offset Offset.
|
||||||
|
* @param[out] buffer Output data buffer.
|
||||||
|
* @param[in] size Data buffer size.
|
||||||
|
* @param[out] actual_size Actual read size.
|
||||||
|
*/
|
||||||
Result capscReadDataFromAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size, u64 *actual_size);
|
Result capscReadDataFromAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size, u64 *actual_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Write data to an AlbumMovieWriteStream.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
* @param[in] offset Offset.
|
||||||
|
* @param[out] buffer Input data buffer.
|
||||||
|
* @param[in] size Data buffer size.
|
||||||
|
*/
|
||||||
Result capscWriteDataToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size);
|
Result capscWriteDataToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Write meta data to an AlbumMovieWriteStream.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
* @param[in] offset Offset.
|
||||||
|
* @param[out] buffer Input data buffer.
|
||||||
|
* @param[in] size Data buffer size.
|
||||||
|
*/
|
||||||
Result capscWriteMetaToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size);
|
Result capscWriteMetaToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the BrokenReason for an AlbumMovieWriteStream.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
*/
|
||||||
Result capscGetAlbumMovieWriteStreamBrokenReason(u64 stream);
|
Result capscGetAlbumMovieWriteStreamBrokenReason(u64 stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the data size of an AlbumMovieWriteStream.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
* @param[out] size Size of the data section.
|
||||||
|
*/
|
||||||
Result capscGetAlbumMovieWriteStreamDataSize(u64 stream, u64 *size);
|
Result capscGetAlbumMovieWriteStreamDataSize(u64 stream, u64 *size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets the data size of an AlbumMovieWriteStream.
|
||||||
|
* @note Must not be bigger than 2GiB.
|
||||||
|
* @note Only available on [4.0.0+].
|
||||||
|
* @param[in] stream Stream handle.
|
||||||
|
* @param[out] size Size of the data section.
|
||||||
|
*/
|
||||||
Result capscSetAlbumMovieWriteStreamDataSize(u64 stream, u64 size);
|
Result capscSetAlbumMovieWriteStreamDataSize(u64 stream, u64 size);
|
||||||
|
@ -179,7 +179,7 @@ static Result _capscControlReadDataFromAlbumMovieStream(u32 cmd_id, u64 stream,
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result _capscControlCmdInU8NoOut(u32 cmd_id, u8 inval) {
|
static Result _capscControlCmdInU64NoOut(u32 cmd_id, u64 inval) {
|
||||||
if (hosversionBefore(4,0,0))
|
if (hosversionBefore(4,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
if (!serviceIsActive(&g_capscControl))
|
if (!serviceIsActive(&g_capscControl))
|
||||||
@ -197,7 +197,7 @@ Result capscOpenAlbumMovieReadStream(u64 *stream, const CapsAlbumFileId *file_id
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result capscCloseAlbumMovieStream(u64 stream) {
|
Result capscCloseAlbumMovieStream(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2002, stream);
|
return _capscControlCmdInU64NoOut(2002, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscGetAlbumMovieStreamSize(u64 stream, u64 *size) {
|
Result capscGetAlbumMovieStreamSize(u64 stream, u64 *size) {
|
||||||
@ -213,7 +213,7 @@ Result capscReadMovieDataFromAlbumMovieReadStream(u64 stream, u64 offset, void*
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result capscGetAlbumMovieReadStreamBrokenReason(u64 stream) {
|
Result capscGetAlbumMovieReadStreamBrokenReason(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2005, stream);
|
return _capscControlCmdInU64NoOut(2005, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscGetAlbumMovieReadStreamImageDataSize(u64 stream, u64 *size) {
|
Result capscGetAlbumMovieReadStreamImageDataSize(u64 stream, u64 *size) {
|
||||||
@ -252,45 +252,43 @@ Result capscOpenAlbumMovieWriteStream(u64 *stream, const CapsAlbumFileId *file_i
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result capscFinishAlbumMovieWriteStream(u64 stream) {
|
Result capscFinishAlbumMovieWriteStream(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2402, stream);
|
return _capscControlCmdInU64NoOut(2402, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscCommitAlbumMovieWriteStream(u64 stream) {
|
Result capscCommitAlbumMovieWriteStream(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2403, stream);
|
return _capscControlCmdInU64NoOut(2403, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscDiscardAlbumMovieWriteStream(u64 stream) {
|
Result capscDiscardAlbumMovieWriteStream(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2404, stream);
|
return _capscControlCmdInU64NoOut(2404, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscDiscardAlbumMovieWriteStreamNoDelete(u64 stream) {
|
Result capscDiscardAlbumMovieWriteStreamNoDelete(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2405, stream);
|
return _capscControlCmdInU64NoOut(2405, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscCommitAlbumMovieWriteStreamEx(u64 stream, CapsAlbumCommitOutput *out) {
|
Result capscCommitAlbumMovieWriteStreamEx(u64 stream, CapsAlbumEntry *entry) {
|
||||||
if (hosversionBefore(4,0,0))
|
if (hosversionBefore(4,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
|
|
||||||
if (!serviceIsActive(&g_capscControl))
|
if (!serviceIsActive(&g_capscControl))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
|
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
|
||||||
|
return serviceDispatchInOut(&g_capscControl, 2406, stream, *entry);
|
||||||
return serviceDispatchInOut(&g_capscControl, 2406, stream, *out);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscStartAlbumMovieWriteStreamDataSection(u64 stream) {
|
Result capscStartAlbumMovieWriteStreamDataSection(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2411, stream);
|
return _capscControlCmdInU64NoOut(2411, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscEndAlbumMovieWriteStreamDataSection(u64 stream) {
|
Result capscEndAlbumMovieWriteStreamDataSection(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2412, stream);
|
return _capscControlCmdInU64NoOut(2412, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscStartAlbumMovieWriteStreamMetaSection(u64 stream) {
|
Result capscStartAlbumMovieWriteStreamMetaSection(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2413, stream);
|
return _capscControlCmdInU64NoOut(2413, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscEndAlbumMovieWriteStreamMetaSection(u64 stream) {
|
Result capscEndAlbumMovieWriteStreamMetaSection(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2414, stream);
|
return _capscControlCmdInU64NoOut(2414, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscReadDataFromAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size, u64 *actual_size) {
|
Result capscReadDataFromAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size, u64 *actual_size) {
|
||||||
@ -321,7 +319,7 @@ Result capscWriteMetaToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffe
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result capscGetAlbumMovieWriteStreamBrokenReason(u64 stream) {
|
Result capscGetAlbumMovieWriteStreamBrokenReason(u64 stream) {
|
||||||
return _capscControlCmdInU8NoOut(2431, stream);
|
return _capscControlCmdInU64NoOut(2431, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscGetAlbumMovieWriteStreamDataSize(u64 stream, u64 *size) {
|
Result capscGetAlbumMovieWriteStreamDataSize(u64 stream, u64 *size) {
|
||||||
|
Loading…
Reference in New Issue
Block a user