Advertisement
xerpi

Vita sysmem test

Nov 2nd, 2017
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.84 KB | None | 0 0
  1.     int ret;
  2.     SceUID rgba_buff_uid;
  3.     void *rgba_buff_addr = NULL;
  4.     unsigned int rgba_buff_size = ALIGN(VIDEO_FRAME_WIDTH * VIDEO_FRAME_HEIGHT * 4, 256 * 1024);
  5.  
  6.     tai_module_info_t SceSysmem_modinfo;
  7.     SceSysmem_modinfo.size = sizeof(SceSysmem_modinfo);
  8.     taiGetModuleInfoForKernel(KERNEL_PID, "SceSysmem", &SceSysmem_modinfo);
  9.  
  10.     SceSysmem_sub_A4CEC4_hook_uid = taiHookFunctionOffsetForKernel(KERNEL_PID,
  11.         &SceSysmem_sub_A4CEC4_ref, SceSysmem_modinfo.modid, 0,
  12.         0x00A4CEC4 - 0x00A40000, 1, SceSysmem_sub_A4CEC4_hook_func);
  13.  
  14.     SceSysmemForDriver_BC0A1D60_hook_uid = taiHookFunctionImportForKernel(KERNEL_PID,
  15.         &SceSysmemForDriver_BC0A1D60_hook_ref,
  16.         "SceAvcodec",
  17.         0x6F25E18A, /* SceSysmemForDriver */
  18.         0xBC0A1D60,
  19.         SceSysmemForDriver_BC0A1D60_hook_func);
  20.  
  21.     LOG("SceSysmemForDriver_BC0A1D60_hook_uid: 0x%08X\n", SceSysmemForDriver_BC0A1D60_hook_uid)
  22.  
  23.     rgba_buff_uid = ksceKernelAllocMemBlock("rgba_buff_uid", 0x40404006, rgba_buff_size, NULL);
  24.     if (rgba_buff_uid < 0)
  25.         LOG("Error allocating RGBA buffer: 0x%08X\n", rgba_buff_uid);
  26.  
  27.     if (rgba_buff_uid >= 0) {
  28.         ret = ksceKernelGetMemBlockBase(rgba_buff_uid, &rgba_buff_addr);
  29.         if (ret < 0)
  30.             LOG("Error getting RGBA buffer addr: 0x%08X\n", ret);
  31.     }
  32.  
  33.     extern int SceSysmemForDriver_BC0A1D60(int perm, void *base, unsigned int size);
  34.     extern int SceSysmemForKernel_61C2AA52(unsigned int type);
  35.  
  36.     /*ret = SceSysmemForKernel_61C2AA52(0x320D060);
  37.  
  38.     LOG("SceSysmemForKernel_61C2AA52: 0x%08X\n", ret);*/
  39.  
  40.     if (rgba_buff_addr) {
  41.         LOG("addr: %p\n", rgba_buff_addr);
  42.  
  43.         ret = SceSysmemForDriver_BC0A1D60(0x10, rgba_buff_addr, rgba_buff_size);
  44.         LOG("0x10 SceSysmemForDriver_BC0A1D60(): 0x%08X\n", ret);
  45.  
  46.         ret = SceSysmemForDriver_BC0A1D60(0x20, rgba_buff_addr, rgba_buff_size);
  47.         LOG("0x20 SceSysmemForDriver_BC0A1D60(): 0x%08X\n", ret);
  48.     }
  49.  
  50.     ksceKernelFreeMemBlock(rgba_buff_uid);
  51.  
  52.     if (SceSysmem_sub_A4CEC4_hook_uid > 0) {
  53.         taiHookReleaseForKernel(SceSysmem_sub_A4CEC4_hook_uid,
  54.             SceSysmem_sub_A4CEC4_ref);
  55.     }
  56.  
  57. #if 0
  58.     rgba_buff_uid = ksceKernelAllocMemBlock("rgba_buff_uid", 0x40404006, rgba_buff_size, NULL);
  59.     if (rgba_buff_uid < 0)
  60.         LOG("Error allocating RGBA buffer: 0x%08X\n", rgba_buff_uid);
  61.  
  62.     if (rgba_buff_uid >= 0) {
  63.         ret = ksceKernelGetMemBlockBase(rgba_buff_uid, &rgba_buff_addr);
  64.         if (ret < 0)
  65.             LOG("Error getting RGBA buffer addr: 0x%08X\n", ret);
  66.     }
  67.  
  68.     /*
  69.     *(unsigned int *)rgba_buff_addr = 0;
  70.     *(unsigned int *)jpegenc_buffer_addr = 0;*/
  71.  
  72.     LOG("addr: %p\n", rgba_buff_addr);
  73.     LOG("addr: %p\n", jpegenc_buffer_addr);
  74.  
  75.     if (rgba_buff_addr) {
  76.         rgba8888_fill(rgba_buff_addr, VIDEO_FRAME_WIDTH, VIDEO_FRAME_HEIGHT, 0xFF0000FF);
  77.  
  78.         ret = ksceJpegEncoderCsc(jpegenc_context, jpegenc_buffer_addr, rgba_buff_addr,
  79.                      VIDEO_FRAME_WIDTH, SCE_JPEGENC_PIXELFORMAT_ARGB8888);
  80.         LOG("ksceJpegEncoderCsc: 0x%08X\n", ret);
  81.     }
  82.  
  83.     ksceKernelFreeMemBlock(rgba_buff_uid);
  84. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement