Advertisement
Guest User

sceMpegBaseCscVme PSP

a guest
Sep 29th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. int sceMpegBaseCscVme(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceInt32 width, SceMpegYCrCbBuffer *pYCrCbBuffer)
  2. {
  3.     uint uVar1;
  4.     int ret;
  5.     uint uVar2;
  6.     uint uVar3;
  7.     uint width1;
  8.     int in_k1;
  9.    
  10.     uVar1 = in_k1 << 0xb;
  11.     if (-1 < (int)(((uint)&pYCrCbBuffer->iFrameHeight | (uint)pYCrCbBuffer) & uVar1)) {
  12.         ret = pYCrCbBuffer->iFrameBufferWidth16;
  13.         uVar3 = pYCrCbBuffer->iFrameBufferHeight16 * ret * 0x80;
  14.         uVar2 = uVar3 >> 2;
  15.         width1 = width;
  16.         if (width == 0) {
  17.             width1 = DAT_000006e8;
  18.         }
  19.         if (width1 < (uint)(ret << 4)) {
  20.             return -0x7ffffe02;
  21.         }
  22.         width1 = width1 * ret * 4;
  23.         if ((((((-1 < (int)(uVar1 & ((uint)((int)pYCrCbBuffer->pYBuffer + uVar3) |
  24.                                      (uint)pYCrCbBuffer->pYBuffer | uVar3))) &&
  25.                (-1 < (int)(uVar1 & ((uint)((int)pYCrCbBuffer->pYBuffer2 + uVar3) |
  26.                                     (uint)pYCrCbBuffer->pYBuffer2 | uVar3)))) &&
  27.               (-1 < (int)(((int)pYCrCbBuffer->pCrBuffer + uVar2 | (uint)pYCrCbBuffer->pCrBuffer) &
  28.                          uVar1))) &&
  29.              ((-1 < (int)(((int)pYCrCbBuffer->pCbBuffer + uVar2 | (uint)pYCrCbBuffer->pCbBuffer) &
  30.                          uVar1) &&
  31.               (-1 < (int)(((int)pYCrCbBuffer->pCrBuffer2 + uVar2 | (uint)pYCrCbBuffer->pCrBuffer2) &
  32.                          uVar1))))) &&
  33.             ((-1 < (int)(((int)pYCrCbBuffer->pCbBuffer2 + uVar2 | (uint)pYCrCbBuffer->pCbBuffer2) &
  34.                         uVar1) &&
  35.              (-1 < (int)(uVar1 & ((uint)((int)pRGBbuffer + width1) | (uint)pRGBbuffer | width1))))))
  36.            && ((pRGBbuffer2 == (ScePVoid)0x0 ||
  37.                (-1 < (int)(uVar1 & ((uint)((int)pRGBbuffer2 + width1) | (uint)pRGBbuffer2 | width1))
  38.                )))) {
  39.             ret = trigger_dmacplus_memcpy4((int)DAT_000006e6,width,0);
  40.             if (ret == 0) {
  41.                 ret = trigger_dmacplus_memcpy3(pRGBbuffer,pRGBbuffer2,pYCrCbBuffer);
  42.             }
  43.             sceKernelUnlockMutex(g_SceMpegBaseCSC_mutex,1);
  44.             return ret;
  45.         }
  46.     }
  47.     return -0x7fffffdd;
  48. }
  49.  
  50.  
  51. void trigger_dmacplus_memcpy4(int param_1,int param_2,int param_3)
  52. {
  53.     uint ret;
  54.    
  55.     if (param_2 == 0) {
  56.         param_2 = DAT_000006e8;
  57.     }
  58.     if (param_3 == 0) {
  59.         param_3 = 0x6d0;
  60.     }
  61.     sceKernelLockMutex(g_SceMpegBaseCSC_mutex,1,0);
  62.     while (ret = sceDmacplus_driver_0xB269EAC9_memcpy4(param_1,param_2,param_3), ret == 0x80000021)
  63.     {
  64.         sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync();
  65.     }
  66.     return;
  67. }
  68.  
  69.  
  70. int trigger_dmacplus_memcpy3(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceMpegYCrCbBuffer *pYCrCbBuffer)
  71. {
  72.     int iVar1;
  73.     int iVar2;
  74.     uint ret;
  75.    
  76.     iVar1 = sceKernelPollEventFlag(g_SceMpegBaseCSC_evflag,3,1,0);
  77.     iVar2 = -0x7fffffff;
  78.     if (-1 < iVar1) {
  79.         do {
  80.             ret = sceDmacplus_driver_0x9C492B9B(pRGBbuffer, pRGBbuffer2, pYCrCbBuffer);
  81.             if ((ret != 0) && (ret != 0x80000021)) {
  82.                 return ret;
  83.             }
  84.             iVar2 = sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync();
  85.         } while (ret != 0);
  86.     }
  87.     return iVar2;
  88. }
  89.  
  90.  
  91.  
  92.  
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement