MCPcopy Create free account
hub / github.com/RPCSX/rpcsx / cellRecSetInfo

Function cellRecSetInfo

ps3fw/cellRec.cpp:1744–1862  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1742}
1743
1744error_code cellRecSetInfo(s32 setInfo, u64 value)
1745{
1746 cellRec.todo("cellRecSetInfo(setInfo=0x%x, value=0x%x)", setInfo, value);
1747
1748 auto& rec = g_fxo->get<rec_info>();
1749
1750 if (rec.state != rec_state::stopped)
1751 {
1752 return CELL_REC_ERROR_INVALID_STATE;
1753 }
1754
1755 switch (setInfo)
1756 {
1757 case CELL_REC_SETINFO_MOVIE_START_TIME_MSEC:
1758 {
1759 // TODO: check if this is actually identical to scene metadata
1760 rec.param.scene_metadata.start_time = value;
1761 cellRec.notice("cellRecSetInfo: changed movie start time to %d", value);
1762 break;
1763 }
1764 case CELL_REC_SETINFO_MOVIE_END_TIME_MSEC:
1765 {
1766 // TODO: check if this is actually identical to scene metadata
1767 rec.param.scene_metadata.end_time = value;
1768 cellRec.notice("cellRecSetInfo: changed movie end time to %d", value);
1769 break;
1770 }
1771 case CELL_REC_SETINFO_MOVIE_META:
1772 {
1773 if (!value)
1774 {
1775 return CELL_REC_ERROR_INVALID_VALUE;
1776 }
1777
1778 vm::ptr<CellRecMovieMetadata> movie_metadata = vm::cast(value);
1779
1780 if (!movie_metadata || !movie_metadata->gameTitle || !movie_metadata->movieTitle ||
1781 strnlen(movie_metadata->gameTitle.get_ptr(), CELL_REC_MOVIE_META_GAME_TITLE_LEN) >= CELL_REC_MOVIE_META_GAME_TITLE_LEN ||
1782 strnlen(movie_metadata->movieTitle.get_ptr(), CELL_REC_MOVIE_META_MOVIE_TITLE_LEN) >= CELL_REC_MOVIE_META_MOVIE_TITLE_LEN)
1783 {
1784 return CELL_REC_ERROR_INVALID_VALUE;
1785 }
1786
1787 if ((movie_metadata->description && strnlen(movie_metadata->description.get_ptr(), CELL_REC_MOVIE_META_DESCRIPTION_LEN) >= CELL_REC_MOVIE_META_DESCRIPTION_LEN) ||
1788 (movie_metadata->userdata && strnlen(movie_metadata->userdata.get_ptr(), CELL_REC_MOVIE_META_USERDATA_LEN) >= CELL_REC_MOVIE_META_USERDATA_LEN))
1789 {
1790 return CELL_REC_ERROR_INVALID_VALUE;
1791 }
1792
1793 rec.param.movie_metadata = {};
1794 rec.param.movie_metadata.game_title = std::string{movie_metadata->gameTitle.get_ptr()};
1795 rec.param.movie_metadata.movie_title = std::string{movie_metadata->movieTitle.get_ptr()};
1796
1797 if (movie_metadata->description)
1798 {
1799 rec.param.movie_metadata.description = std::string{movie_metadata->description.get_ptr()};
1800 }
1801

Callers

nothing calls this directly

Calls 4

castFunction · 0.50
get_ptrMethod · 0.45
to_stringMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected