|
发表于 2014-2-23 21:22:04
|
显示全部楼层
- int __fastcall H264EncEncode(struct_a1 *a1)
- {
- struct_v1 *v1; // ST5C_4@14
- __int16 v2; // ST4A_2@14
- struct_v3 *v3; // ST5C_4@15
- int v4; // r1@29
- int v5; // r2@44
- char *v6; // r3@44
- char *v7; // r2@45
- struct_v1 *v8; // ST5C_4@54
- int v9; // r1@68
- int v10; // r2@83
- char *v11; // r3@83
- char *v12; // r2@84
- signed __int16 v14; // [sp+2Ch] [bp-48h]@2
- int v15; // [sp+30h] [bp-44h]@10
- unsigned int v17; // [sp+40h] [bp-34h]@36
- int v18; // [sp+40h] [bp-34h]@37
- unsigned int v19; // [sp+40h] [bp-34h]@75
- int v20; // [sp+40h] [bp-34h]@76
- signed int i; // [sp+44h] [bp-30h]@15
- signed int j; // [sp+44h] [bp-30h]@20
- signed int k; // [sp+44h] [bp-30h]@54
- signed int l; // [sp+44h] [bp-30h]@59
- struct_v25 *v25; // [sp+54h] [bp-20h]@1
- int v26; // [sp+58h] [bp-1Ch]@1
- v25 = a1->pstruct_v250;
- v26 = *(_DWORD *)a1->pstruct_v14;
- MACC_REGS_BASE->dword0 = 11;
- if ( v25 )
- {
- pthread_mutex_lock((pthread_mutex_t *)&mutex_lock);
- if ( (unsigned int)v25->byte98A <= 0x7C && v25->dword12C <= 0x600000u )
- {
- pthread_mutex_unlock((pthread_mutex_t *)&mutex_lock);
- if ( !a1->pfunc20(0, &v25->gap134[4]) )
- {
- if ( v25->dword14C )
- {
- v25->dword68 = 0;
- v25->dwordB4 = 18;
- }
- v25->dword22E0 = 0;
- v15 = v25->dword22E0;
- if ( v15 == 1 )
- {
- *(_BYTE *)(v26 + 4) |= 0x20u;
- v1 = a1->pstruct_v14;
- v1->pfuncC(a1->pstruct_v14, 2, v25);
- v1->pfuncC(v1, 8, (struct_v25 *)&v25->gap134[4]);
- v1->pfuncC(v1, 3, (struct_v25 *)&v25->gap134[4]);
- v1->pfuncC(v1, 5, (struct_v25 *)&v25->gap134[4]);
- v2 = v1->pfunc10((int)v1);
- }
- else if ( v15 == 2 )
- {
- *(_BYTE *)(v26 + 4) |= 0x20u;
- v3 = (struct_v3 *)a1->pstruct_v14;
- v3->pfuncC((int)a1->pstruct_v14, 8, (struct_v25 *)&v25->gap134[4]);
- v3->pfuncC((int)v3, 2, v25);
- v3->pfuncC((int)v3, 3, (struct_v25 *)&v25->gap134[4]);
- v3->pfuncC((int)v3, 5, (struct_v25 *)&v25->gap134[4]);
- for ( i = 0; v25->wordB8 > i; ++i )
- {
- if ( !v25->gap15C[i + 28] )
- {
- v25->byte17E = i;
- break;
- }
- }
- for ( j = 0; v25->wordBA > j; ++j )
- {
- if ( !v25->gap17F[j] )
- {
- v25->byte185 = j;
- break;
- }
- }
- MACC_REGS_BASE->dwordB88 = 8 * v25->dword130;
- MACC_REGS_BASE->dwordB80 = v25->dword124;
- MACC_REGS_BASE->dwordB84 = v25->dword128;
- MACC_REGS_BASE->dwordB8C = 8 * (v25->dword130 - v25->dword12C + 0x800000);
- MACC_REGS_BASE->dwordBA0 = *(_DWORD *)&v25->gap0[4 * (v25->byte17D + 52)];
- MACC_REGS_BASE->dwordBA4 = *(&v25->dword4 + v25->byte17D + 56);
- MACC_REGS_BASE->dwordBB0 = *(_DWORD *)&v25->gap0[4 * (v25->byte17E + 52)];
- MACC_REGS_BASE->dwordBB4 = *(&v25->dword4 + v25->byte17E + 56);
- MACC_REGS_BASE->dwordBB8 = *(&v25->dword4 + v25->byte184 + 66);
- MACC_REGS_BASE->dwordBBC = *(&v25->dword4 + v25->byte185 + 66);
- if ( v25->dwordB4 == 18 )
- v25->byte1CEA = 2;
- else
- v25->byte1CEA = LOBYTE(v25->dwordB4);
- if ( v25->dwordB4 == 18 )
- {
- v4 = v25->dword1D00;
- if ( v4 < *(_DWORD *)((char *)&loc_1CF8 + (_DWORD)v25) )
- v4 = *(_DWORD *)((char *)&loc_1CF8 + (_DWORD)v25);
- v25->dword1D00 = v4;
- *(_DWORD *)((char *)&loc_1CFC + (_DWORD)v25) = *(_DWORD *)((char *)&loc_1CF8 + (_DWORD)v25);
- }
- getPoc(v25);
- rcInitPic(v25);
- if ( v25->word64 )
- {
- BYTE3(v25->dword4) |= 0x80u;
- MACC_REGS_BASE->dwordB04 = v25->dword4;
- v25->dword990 = InitSPS(a1);
- v25->dword994 = InitPPS(a1);
- v25->word64 = 0;
- }
- MACC_REGS_BASE->dwordB14 |= 0xFu;
- StartSlice(a1);
- if ( a1->pfunc24(0, 0) )
- return -2;
- g_ve_status = MACC_REGS_BASE->dwordB1C;
- MACC_REGS_BASE->dwordB1C = g_ve_status;
- v25->dword24 = MACC_REGS_BASE->dwordB50;
- v25->dword28 = MACC_REGS_BASE->dwordB54;
- v25->dword2C = MACC_REGS_BASE->dwordB58;
- v25->dword30 = MACC_REGS_BASE->dwordB5C;
- v17 = MACC_REGS_BASE->dwordB90 >> 3;
- if ( v25->dword130 > v17 )
复制代码 |
|