📄 camif.txt
字号:
;;;689 *shift=4;
000c10 e3a00004 MOV r0,#4
000c14 e5870000 STR r0,[r7,#0]
000c18 ea000018 B |L1.3200|
;;;690 }
;;;691 else if(SrcSize>=8*DstSize) {
|L1.3100|
000c1c e1540185 CMP r4,r5,LSL #3
000c20 3a000004 BCC |L1.3128|
;;;692 *ratio=8;
000c24 e3a00008 MOV r0,#8
000c28 e5860000 STR r0,[r6,#0]
;;;693 *shift=3;
000c2c e3a00003 MOV r0,#3
000c30 e5870000 STR r0,[r7,#0]
000c34 ea000011 B |L1.3200|
;;;694 }
;;;695 else if(SrcSize>=4*DstSize) {
|L1.3128|
000c38 e1540105 CMP r4,r5,LSL #2
000c3c 3a000004 BCC |L1.3156|
;;;696 *ratio=4;
000c40 e3a00004 MOV r0,#4
000c44 e5860000 STR r0,[r6,#0]
;;;697 *shift=2;
000c48 e3a00002 MOV r0,#2
000c4c e5870000 STR r0,[r7,#0]
000c50 ea00000a B |L1.3200|
;;;698 }
;;;699 else if(SrcSize>=2*DstSize) {
|L1.3156|
000c54 e1540085 CMP r4,r5,LSL #1
000c58 3a000004 BCC |L1.3184|
;;;700 *ratio=2;
000c5c e3a00002 MOV r0,#2
000c60 e5860000 STR r0,[r6,#0]
;;;701 *shift=1;
000c64 e3a00001 MOV r0,#1
000c68 e5870000 STR r0,[r7,#0]
000c6c ea000003 B |L1.3200|
;;;702 }
;;;703 else {
;;;704 *ratio=1;
|L1.3184|
000c70 e3a00001 MOV r0,#1
000c74 e5860000 STR r0,[r6,#0]
;;;705 *shift=0;
000c78 e3a00000 MOV r0,#0
000c7c e5870000 STR r0,[r7,#0]
;;;706 }
;;;707 }
|L1.3200|
000c80 e8bd81f0 LDMFD sp!,{r4-r8,pc}
|L1.3204|
000c84 4f525245 DCB "ERRO"
000c88 6f203a52 DCB "R: o"
000c8c 6f207475 DCB "ut o"
000c90 68742066 DCB "f th"
000c94 72702065 DCB "e pr"
000c98 61637365 DCB "esca"
000c9c 2072656c DCB "ler "
000ca0 676e6172 DCB "rang"
000ca4 53203a65 DCB "e: S"
000ca8 69536372 DCB "rcSi"
000cac 442f657a DCB "ze/D"
000cb0 69537473 DCB "stSi"
000cb4 3d20657a DCB "ze ="
000cb8 28642520 DCB " %d("
000cbc 3436203c DCB "< 64"
000cc0 00000a29 DCB ")\n\0\0"
ENDP
CalculateBurstSize PROC
;;;631 void CalculateBurstSize(U32 hSize,U32 *mainBurstSize,U32 *remainedBurstSize)
;;;632 {
000cc4 e1a0cd00 MOV r12,r0,LSL #26
;;;633 U32 tmp;
;;;634 tmp=(hSize/4)%16;
000cc8 e1a03e2c MOV r3,r12,LSR #28
;;;635 switch(tmp) {
000ccc e3530000 CMP r3,#0
000cd0 0a000004 BEQ |L1.3304|
000cd4 e3530004 CMP r3,#4
000cd8 0a000007 BEQ |L1.3324|
000cdc e3530008 CMP r3,#8
000ce0 1a00000f BNE |L1.3364|
000ce4 ea000009 B |L1.3344|
;;;636 case 0:
;;;637 *mainBurstSize=16;
|L1.3304|
000ce8 e3a0c010 MOV r12,#0x10
000cec e581c000 STR r12,[r1,#0]
;;;638 *remainedBurstSize=16;
000cf0 e3a0c010 MOV r12,#0x10
000cf4 e582c000 STR r12,[r2,#0]
;;;639 break;
000cf8 ea000026 B |L1.3480|
;;;640 case 4:
;;;641 *mainBurstSize=16;
|L1.3324|
000cfc e3a0c010 MOV r12,#0x10
000d00 e581c000 STR r12,[r1,#0]
;;;642 *remainedBurstSize=4;
000d04 e3a0c004 MOV r12,#4
000d08 e582c000 STR r12,[r2,#0]
;;;643 break;
000d0c ea000021 B |L1.3480|
;;;644 case 8:
;;;645 *mainBurstSize=16;
|L1.3344|
000d10 e3a0c010 MOV r12,#0x10
000d14 e581c000 STR r12,[r1,#0]
;;;646 *remainedBurstSize=8;
000d18 e3a0c008 MOV r12,#8
000d1c e582c000 STR r12,[r2,#0]
;;;647 break;
000d20 ea00001c B |L1.3480|
;;;648 default:
;;;649 tmp=(hSize/4)%8;
|L1.3364|
000d24 e1a0cd80 MOV r12,r0,LSL #27
000d28 e1a03eac MOV r3,r12,LSR #29
;;;650 switch(tmp) {
000d2c e3530000 CMP r3,#0
000d30 0a000002 BEQ |L1.3392|
000d34 e3530004 CMP r3,#4
000d38 1a00000a BNE |L1.3432|
000d3c ea000004 B |L1.3412|
;;;651 case 0:
;;;652 *mainBurstSize=8;
|L1.3392|
000d40 e3a0c008 MOV r12,#8
000d44 e581c000 STR r12,[r1,#0]
;;;653 *remainedBurstSize=8;
000d48 e3a0c008 MOV r12,#8
000d4c e582c000 STR r12,[r2,#0]
;;;654 break;
000d50 ea00000f B |L1.3476|
;;;655 case 4:
;;;656 *mainBurstSize=8;
|L1.3412|
000d54 e3a0c008 MOV r12,#8
000d58 e581c000 STR r12,[r1,#0]
;;;657 *remainedBurstSize=4;
000d5c e3a0c004 MOV r12,#4
000d60 e582c000 STR r12,[r2,#0]
;;;658 default:
000d64 e1a00000 NOP
;;;659 *mainBurstSize=4;
|L1.3432|
000d68 e3a0c004 MOV r12,#4
000d6c e581c000 STR r12,[r1,#0]
;;;660 tmp=(hSize/4)%4;
000d70 e1a0ce00 MOV r12,r0,LSL #28
000d74 e1a03f2c MOV r3,r12,LSR #30
;;;661 *remainedBurstSize= (tmp) ? tmp: 4;
000d78 e3530000 CMP r3,#0
000d7c 0a000001 BEQ |L1.3464|
000d80 e1a0c003 MOV r12,r3
000d84 ea000000 B |L1.3468|
|L1.3464|
000d88 e3a0c004 MOV r12,#4
|L1.3468|
000d8c e582c000 STR r12,[r2,#0]
;;;662 break;
000d90 e1a00000 NOP
;;;663 }
;;;664 break;
|L1.3476|
000d94 e1a00000 NOP
;;;665 }
;;;666 }
|L1.3480|
000d98 e12fff1e BX lr
ENDP
CamInit PROC
;;;466 U32 WinHorOffset, U32 WinVerOffset, U32 CoFrameBuffer, U32 PrFrameBuffer)
;;;467 {
000d9c e92d4fff STMFD sp!,{r0-r11,lr}
000da0 e24dd04c SUB sp,sp,#0x4c
000da4 e1a04000 MOV r4,r0
000da8 e1a05001 MOV r5,r1
000dac e1a09002 MOV r9,r2
;;;468 U32 WinOfsEn;
;;;469 U32 divisor, multiplier;
;;;470 U32 MainBurstSizeY, RemainedBurstSizeY, MainBurstSizeC, RemainedBurstSizeC, MainBurstSizeRGB, RemainedBurstSizeRGB;
;;;471 U32 H_Shift, V_Shift, PreHorRatio, PreVerRatio, MainHorRatio, MainVerRatio;
;;;472 U32 SrcWidth, SrcHeight;
;;;473 U32 OrgSrcWidth, OrgSrcHeight;
;;;474 U32 ScaleUp_H_Co, ScaleUp_V_Co, ScaleUp_H_Pr, ScaleUp_V_Pr;
;;;475
;;;476 //constraint for size setting is checked here.........
;;;477
;;;478 //constant for calculating codec dma address
;;;479 if(camCodecOutput)
000db0 e51f0978 LDR r0,|L1.1088|
000db4 e5900000 LDR r0,[r0,#0] ; camCodecOutput
000db8 e3500000 CMP r0,#0
000dbc 0a000001 BEQ |L1.3528|
;;;480 divisor=2; //CCIR-422
000dc0 e3a08002 MOV r8,#2
000dc4 ea000000 B |L1.3532|
;;;481 else
;;;482 divisor=4; //CCIR-420
|L1.3528|
000dc8 e3a08004 MOV r8,#4
;;;483
;;;484 //constant for calculating preview dma address
;;;485 if(camPviewOutput)
|L1.3532|
000dcc e51f098c LDR r0,|L1.1096|
000dd0 e5900000 LDR r0,[r0,#0] ; camPviewOutput
000dd4 e3500000 CMP r0,#0
000dd8 0a000002 BEQ |L1.3560|
;;;486 multiplier=4;
000ddc e3a02004 MOV r2,#4
000de0 e58d2044 STR r2,[sp,#0x44]
000de4 ea000001 B |L1.3568|
;;;487 else
;;;488 multiplier=2;
|L1.3560|
000de8 e3a02002 MOV r2,#2
000dec e58d2044 STR r2,[sp,#0x44]
;;;489
;;;490 if(WinHorOffset==0 && WinVerOffset==0)
|L1.3568|
000df0 e59d0080 LDR r0,[sp,#0x80]
000df4 e59d1084 LDR r1,[sp,#0x84]
000df8 e1900001 ORRS r0,r0,r1
000dfc 1a000002 BNE |L1.3596|
;;;491 WinOfsEn=0;
000e00 e3a00000 MOV r0,#0
000e04 e58d0048 STR r0,[sp,#0x48]
000e08 ea000001 B |L1.3604|
;;;492 else
;;;493 WinOfsEn=1;
|L1.3596|
000e0c e3a00001 MOV r0,#1
000e10 e58d0048 STR r0,[sp,#0x48]
;;;494
;;;495 switch(CAMSIZE) {
|L1.3604|
000e14 e51f0934 LDR r0,|L1.1256|
000e18 e5900000 LDR r0,[r0,#0] ; CAMSIZE
000e1c e3500fa0 CMP r0,#0x280
000e20 0a000006 BEQ |L1.3648|
000e24 e3500fc8 CMP r0,#0x320
000e28 0a000007 BEQ |L1.3660|
000e2c e3500e48 CMP r0,#0x480
000e30 0a000008 BEQ |L1.3672|
000e34 e3500e64 CMP r0,#0x640
000e38 1a00000c BNE |L1.3696|
000e3c ea000008 B |L1.3684|
;;;496 case VGA_XSIZE:
;;;497 OrgSrcWidth=VGA_XSIZE;
|L1.3648|
000e40 e3a0afa0 MOV r10,#0x280
;;;498 OrgSrcHeight=VGA_YSIZE;
000e44 e3a0bf78 MOV r11,#0x1e0
;;;499 break;
000e48 ea00000b B |L1.3708|
;;;500 case SVGA_XSIZE:
;;;501 OrgSrcWidth=SVGA_XSIZE;
|L1.3660|
000e4c e3a0afc8 MOV r10,#0x320
;;;502 OrgSrcHeight=SVGA_YSIZE;
000e50 e3a0bf96 MOV r11,#0x258
;;;503 break;
000e54 ea000008 B |L1.3708|
;;;504 case MEGA1_XSIZE:
;;;505 OrgSrcWidth=MEGA1_XSIZE;
|L1.3672|
000e58 e3a0ae48 MOV r10,#0x480
;;;506 OrgSrcHeight=MEGA1_YSIZE;
000e5c e3a0bfd8 MOV r11,#0x360
;;;507 break;
000e60 ea000005 B |L1.3708|
;;;508 case MEGA2_XSIZE:
;;;509 OrgSrcWidth=MEGA2_XSIZE;
|L1.3684|
000e64 e3a0ae64 MOV r10,#0x640
;;;510 OrgSrcHeight=MEGA2_YSIZE;
000e68 e3a0be4b MOV r11,#0x4b0
;;;511 break;
000e6c ea000002 B |L1.3708|
;;;512 default:
;;;513 OrgSrcWidth=VGA_XSIZE;
|L1.3696|
000e70 e3a0afa0 MOV r10,#0x280
;;;514 OrgSrcHeight=VGA_YSIZE;
000e74 e3a0bf78 MOV r11,#0x1e0
;;;515 break;
000e78 e1a00000 NOP
;;;516 }
;;;517
;;;518
;;;519 SrcWidth=OrgSrcWidth-2*WinHorOffset;
|L1.3708|
000e7c e59d0080 LDR r0,[sp,#0x80]
000e80 e04a6080 SUB r6,r10,r0,LSL #1
;;;520 SrcHeight=OrgSrcHeight-2*WinVerOffset;
000e84 e59d1084 LDR r1,[sp,#0x84]
000e88 e04b7081 SUB r7,r11,r1,LSL #1
;;;521
;;;522 if(SrcWidth<=CoDstWidth) ScaleUp_H_Co=1;
000e8c e1560004 CMP r6,r4
000e90 8a000002 BHI |L1.3744|
000e94 e3a00001 MOV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -