Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int ret;
- SceUID rgba_buff_uid;
- void *rgba_buff_addr = NULL;
- unsigned int rgba_buff_size = ALIGN(VIDEO_FRAME_WIDTH * VIDEO_FRAME_HEIGHT * 4, 256 * 1024);
- tai_module_info_t SceSysmem_modinfo;
- SceSysmem_modinfo.size = sizeof(SceSysmem_modinfo);
- taiGetModuleInfoForKernel(KERNEL_PID, "SceSysmem", &SceSysmem_modinfo);
- SceSysmem_sub_A4CEC4_hook_uid = taiHookFunctionOffsetForKernel(KERNEL_PID,
- &SceSysmem_sub_A4CEC4_ref, SceSysmem_modinfo.modid, 0,
- 0x00A4CEC4 - 0x00A40000, 1, SceSysmem_sub_A4CEC4_hook_func);
- SceSysmemForDriver_BC0A1D60_hook_uid = taiHookFunctionImportForKernel(KERNEL_PID,
- &SceSysmemForDriver_BC0A1D60_hook_ref,
- "SceAvcodec",
- 0x6F25E18A, /* SceSysmemForDriver */
- 0xBC0A1D60,
- SceSysmemForDriver_BC0A1D60_hook_func);
- LOG("SceSysmemForDriver_BC0A1D60_hook_uid: 0x%08X\n", SceSysmemForDriver_BC0A1D60_hook_uid)
- rgba_buff_uid = ksceKernelAllocMemBlock("rgba_buff_uid", 0x40404006, rgba_buff_size, NULL);
- if (rgba_buff_uid < 0)
- LOG("Error allocating RGBA buffer: 0x%08X\n", rgba_buff_uid);
- if (rgba_buff_uid >= 0) {
- ret = ksceKernelGetMemBlockBase(rgba_buff_uid, &rgba_buff_addr);
- if (ret < 0)
- LOG("Error getting RGBA buffer addr: 0x%08X\n", ret);
- }
- extern int SceSysmemForDriver_BC0A1D60(int perm, void *base, unsigned int size);
- extern int SceSysmemForKernel_61C2AA52(unsigned int type);
- /*ret = SceSysmemForKernel_61C2AA52(0x320D060);
- LOG("SceSysmemForKernel_61C2AA52: 0x%08X\n", ret);*/
- if (rgba_buff_addr) {
- LOG("addr: %p\n", rgba_buff_addr);
- ret = SceSysmemForDriver_BC0A1D60(0x10, rgba_buff_addr, rgba_buff_size);
- LOG("0x10 SceSysmemForDriver_BC0A1D60(): 0x%08X\n", ret);
- ret = SceSysmemForDriver_BC0A1D60(0x20, rgba_buff_addr, rgba_buff_size);
- LOG("0x20 SceSysmemForDriver_BC0A1D60(): 0x%08X\n", ret);
- }
- ksceKernelFreeMemBlock(rgba_buff_uid);
- if (SceSysmem_sub_A4CEC4_hook_uid > 0) {
- taiHookReleaseForKernel(SceSysmem_sub_A4CEC4_hook_uid,
- SceSysmem_sub_A4CEC4_ref);
- }
- #if 0
- rgba_buff_uid = ksceKernelAllocMemBlock("rgba_buff_uid", 0x40404006, rgba_buff_size, NULL);
- if (rgba_buff_uid < 0)
- LOG("Error allocating RGBA buffer: 0x%08X\n", rgba_buff_uid);
- if (rgba_buff_uid >= 0) {
- ret = ksceKernelGetMemBlockBase(rgba_buff_uid, &rgba_buff_addr);
- if (ret < 0)
- LOG("Error getting RGBA buffer addr: 0x%08X\n", ret);
- }
- /*
- *(unsigned int *)rgba_buff_addr = 0;
- *(unsigned int *)jpegenc_buffer_addr = 0;*/
- LOG("addr: %p\n", rgba_buff_addr);
- LOG("addr: %p\n", jpegenc_buffer_addr);
- if (rgba_buff_addr) {
- rgba8888_fill(rgba_buff_addr, VIDEO_FRAME_WIDTH, VIDEO_FRAME_HEIGHT, 0xFF0000FF);
- ret = ksceJpegEncoderCsc(jpegenc_context, jpegenc_buffer_addr, rgba_buff_addr,
- VIDEO_FRAME_WIDTH, SCE_JPEGENC_PIXELFORMAT_ARGB8888);
- LOG("ksceJpegEncoderCsc: 0x%08X\n", ret);
- }
- ksceKernelFreeMemBlock(rgba_buff_uid);
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement