📄 fimvlib.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; commandline [-errors .\err\fimvlib.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
AllocImage420 PROC
;;;33 U32 AllocImage420(PIMAGE420 pImage420,U32 freeBuf,U32 imageWidth,U32 imageHeight,U32 type)
;;;34 {
000000 e92d4030 STMFD sp!,{r4,r5,lr}
000004 e1a0c000 MOV r12,r0
000008 e59de00c LDR lr,[sp,#0xc]
;;;35 U32 i;
;;;36 pImage420->frameStartAddr=freeBuf;
00000c e58c1000 STR r1,[r12,#0]
;;;37
;;;38 switch(type&IMAGE420_MASK)
000010 e21e0003 ANDS r0,lr,#3
000014 0a000004 BEQ |L1.44|
000018 e3500001 CMP r0,#1
00001c 0a00001b BEQ |L1.144|
000020 e3500002 CMP r0,#2
000024 1a00002e BNE |L1.228|
000028 ea000021 B |L1.180|
;;;39 {
;;;40 case IMAGE420_PADDED:
;;;41 pImage420->yStartAddr=freeBuf+(imageWidth+32)*16+16;
|L1.44|
00002c e0810202 ADD r0,r1,r2,LSL #4
000030 e2800f84 ADD r0,r0,#0x210
000034 e58c0004 STR r0,[r12,#4]
;;;42 freeBuf+=(imageWidth+32)*(imageHeight+32);
000038 e2820020 ADD r0,r2,#0x20
00003c e2835020 ADD r5,r3,#0x20
000040 e0211095 MLA r1,r5,r0,r1
;;;43
;;;44 pImage420->cbStartAddr=freeBuf+(imageWidth+32)*16/4+16/2;
000044 e3a00f80 MOV r0,#0x200
000048 e0800202 ADD r0,r0,r2,LSL #4
00004c e0810120 ADD r0,r1,r0,LSR #2
000050 e2800008 ADD r0,r0,#8
000054 e58c0008 STR r0,[r12,#8]
;;;45 freeBuf+=(imageWidth+32)*(imageHeight+32)/4;
000058 e2820020 ADD r0,r2,#0x20
00005c e2835020 ADD r5,r3,#0x20
000060 e0000095 MUL r0,r5,r0
000064 e0811120 ADD r1,r1,r0,LSR #2
;;;46
;;;47 pImage420->crStartAddr=freeBuf+(imageWidth+32)*16/4+16/2;
000068 e3a00f80 MOV r0,#0x200
00006c e0800202 ADD r0,r0,r2,LSL #4
000070 e0810120 ADD r0,r1,r0,LSR #2
000074 e2800008 ADD r0,r0,#8
000078 e58c000c STR r0,[r12,#0xc]
;;;48 freeBuf+=(imageWidth+32)*(imageHeight+32)/4;
00007c e2820020 ADD r0,r2,#0x20
000080 e2835020 ADD r5,r3,#0x20
000084 e0000095 MUL r0,r5,r0
000088 e0811120 ADD r1,r1,r0,LSR #2
;;;49 break;
00008c ea000015 B |L1.232|
;;;50
;;;51 case IMAGE420_NO_PADDED:
;;;52 pImage420->yStartAddr=freeBuf;
|L1.144|
000090 e58c1004 STR r1,[r12,#4]
;;;53 freeBuf+=imageWidth*imageHeight;
000094 e0211293 MLA r1,r3,r2,r1
;;;54
;;;55 pImage420->cbStartAddr=freeBuf;
000098 e58c1008 STR r1,[r12,#8]
;;;56 freeBuf+=imageWidth*imageHeight/4;
00009c e0000293 MUL r0,r3,r2
0000a0 e0811120 ADD r1,r1,r0,LSR #2
;;;57
;;;58 pImage420->crStartAddr=freeBuf;
0000a4 e58c100c STR r1,[r12,#0xc]
;;;59 freeBuf+=imageWidth*imageHeight/4;
0000a8 e0000293 MUL r0,r3,r2
0000ac e0811120 ADD r1,r1,r0,LSR #2
;;;60 break;
0000b0 ea00000c B |L1.232|
;;;61
;;;62 case IMAGE420_DCTQ_COEFF:
;;;63 pImage420->yStartAddr=freeBuf;
|L1.180|
0000b4 e58c1004 STR r1,[r12,#4]
;;;64 freeBuf+=(imageWidth*2)*imageHeight;
0000b8 e1a00082 MOV r0,r2,LSL #1
0000bc e0211093 MLA r1,r3,r0,r1
;;;65
;;;66 pImage420->cbStartAddr=freeBuf;
0000c0 e58c1008 STR r1,[r12,#8]
;;;67 freeBuf+=(imageWidth*2)*imageHeight/4;
0000c4 e1a00082 MOV r0,r2,LSL #1
0000c8 e0000093 MUL r0,r3,r0
0000cc e0811120 ADD r1,r1,r0,LSR #2
;;;68
;;;69 pImage420->crStartAddr=freeBuf;
0000d0 e58c100c STR r1,[r12,#0xc]
;;;70 freeBuf+=(imageWidth*2)*imageHeight/4;
0000d4 e1a00082 MOV r0,r2,LSL #1
0000d8 e0000093 MUL r0,r3,r0
0000dc e0811120 ADD r1,r1,r0,LSR #2
;;;71 break;
0000e0 ea000000 B |L1.232|
;;;72
;;;73
;;;74 default:
;;;75 break;
|L1.228|
0000e4 e1a00000 NOP
;;;76 }
;;;77
;;;78 if(type&IMAGE420_CLEAR)
|L1.232|
0000e8 e31e0004 TST lr,#4
0000ec 0a000008 BEQ |L1.276|
;;;79 {
;;;80 for(i=pImage420->frameStartAddr;i<freeBuf;i++)
0000f0 e59c4000 LDR r4,[r12,#0]
|L1.244|
0000f4 e1540001 CMP r4,r1
0000f8 2a000005 BCS |L1.276|
0000fc ea000001 B |L1.264|
|L1.256|
000100 e2844001 ADD r4,r4,#1
000104 eafffffa B |L1.244|
;;;81 {
;;;82 *(U8 *)i=0xff; //for debug
|L1.264|
000108 e3a000ff MOV r0,#0xff
00010c e5c40000 STRB r0,[r4,#0]
;;;83 }
000110 eafffffa B |L1.256|
;;;84 }
;;;85
;;;86 pImage420->type=type&IMAGE420_MASK;
|L1.276|
000114 e20e0003 AND r0,lr,#3
000118 e58c0018 STR r0,[r12,#0x18]
;;;87 pImage420->imageWidth=imageWidth;
00011c e58c2010 STR r2,[r12,#0x10]
;;;88 pImage420->imageHeight=imageHeight;
000120 e58c3014 STR r3,[r12,#0x14]
;;;89
;;;90 return freeBuf;
000124 e1a00001 MOV r0,r1
;;;91 }
000128 e8bd8030 LDMFD sp!,{r4,r5,pc}
ENDP
CopyImage420 PROC
;;;96 void CopyImage420(PIMAGE420 pDstImage420,PIMAGE420 pSrcImage420)
;;;97 {
00012c e92d4ff0 STMFD sp!,{r4-r11,lr}
000130 e24dd01c SUB sp,sp,#0x1c
000134 e1a07000 MOV r7,r0
000138 e1a06001 MOV r6,r1
;;;98 U8 *pYSrcStart,*pYDstStart;
;;;99 U8 *pCbSrcStart,*pCbDstStart;
;;;100 U8 *pCrSrcStart,*pCrDstStart;
;;;101 U32 ySize,cbSize,crSize;
;;;102
;;;103 U32 imageWidth,imageHeight,i;
;;;104
;;;105
;;;106 imageWidth=pSrcImage420->imageWidth;
00013c e5965010 LDR r5,[r6,#0x10]
;;;107 imageHeight=pSrcImage420->imageHeight;
000140 e5968014 LDR r8,[r6,#0x14]
;;;108
;;;109 if(pSrcImage420->type!=pDstImage420->type || pSrcImage420->type==IMAGE420_DCTQ_COEFF)
000144 e5960018 LDR r0,[r6,#0x18]
000148 e5971018 LDR r1,[r7,#0x18]
00014c e1500001 CMP r0,r1
000150 1a000002 BNE |L1.352|
000154 e5960018 LDR r0,[r6,#0x18]
000158 e3500002 CMP r0,#2
00015c 1a000003 BNE |L1.368|
;;;110 {
;;;111 printf("ERROR:The type of two IMAGE420 picture has to be same.\n");
|L1.352|
000160 e28f0f74 ADR r0,|L1.824|
000164 ebfffffe BL printf
;;;112 return;
;;;113 }
;;;114
;;;115 switch(pSrcImage420->type)
;;;116 {
;;;117 case IMAGE420_PADDED:
;;;118 pYSrcStart=(U8 *)( pSrcImage420->yStartAddr-((imageWidth+32)*16+16) );
;;;119 pYDstStart=(U8 *)( pDstImage420->yStartAddr-((imageWidth+32)*16+16) );
;;;120 ySize=(imageWidth+32)*(imageHeight+32);
;;;121
;;;122 pCbSrcStart=(U8 *)( pSrcImage420->cbStartAddr-((imageWidth+32)*16/4+16/2) );
;;;123 pCbDstStart=(U8 *)( pDstImage420->cbStartAddr-((imageWidth+32)*16/4+16/2) );
;;;124 cbSize=(imageWidth+32)*(imageHeight+32)/4;
;;;125
;;;126 pCrSrcStart=(U8 *)( pSrcImage420->crStartAddr-((imageWidth+32)*16/4+16/2) );
;;;127 pCrDstStart=(U8 *)( pDstImage420->crStartAddr-((imageWidth+32)*16/4+16/2) );
;;;128 crSize=(imageWidth+32)*(imageHeight+32)/4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -