📄 camif.txt
字号:
000c00 e3a00002 MOV r0,#2
000c04 e5860000 STR r0,[r6,#0]
;;;688 *shift=1;
000c08 e3a00001 MOV r0,#1
000c0c e5870000 STR r0,[r7,#0]
000c10 ea000003 B |L1.3108|
;;;689 }
;;;690 else {
;;;691 *ratio=1;
|L1.3092|
000c14 e3a00001 MOV r0,#1
000c18 e5860000 STR r0,[r6,#0]
;;;692 *shift=0;
000c1c e3a00000 MOV r0,#0
000c20 e5870000 STR r0,[r7,#0]
;;;693 }
;;;694 }
|L1.3108|
000c24 e8bd81f0 LDMFD sp!,{r4-r8,pc}
|L1.3112|
000c28 4f525245 DCB "ERRO"
000c2c 6f203a52 DCB "R: o"
000c30 6f207475 DCB "ut o"
000c34 68742066 DCB "f th"
000c38 72702065 DCB "e pr"
000c3c 61637365 DCB "esca"
000c40 2072656c DCB "ler "
000c44 676e6172 DCB "rang"
000c48 53203a65 DCB "e: S"
000c4c 69536372 DCB "rcSi"
000c50 442f657a DCB "ze/D"
000c54 69537473 DCB "stSi"
000c58 3d20657a DCB "ze ="
000c5c 28642520 DCB " %d("
000c60 3436203c DCB "< 64"
000c64 00000a29 DCB ")\n\0\0"
ENDP
CalculateBurstSize PROC
;;;618 void CalculateBurstSize(U32 hSize,U32 *mainBurstSize,U32 *remainedBurstSize)
;;;619 {
000c68 e1a0cd00 MOV r12,r0,LSL #26
;;;620 U32 tmp;
;;;621 tmp=(hSize/4)%16;
000c6c e1a03e2c MOV r3,r12,LSR #28
;;;622 switch(tmp) {
000c70 e3530000 CMP r3,#0
000c74 0a000004 BEQ |L1.3212|
000c78 e3530004 CMP r3,#4
000c7c 0a000007 BEQ |L1.3232|
000c80 e3530008 CMP r3,#8
000c84 1a00000f BNE |L1.3272|
000c88 ea000009 B |L1.3252|
;;;623 case 0:
;;;624 *mainBurstSize=16;
|L1.3212|
000c8c e3a0c010 MOV r12,#0x10
000c90 e581c000 STR r12,[r1,#0]
;;;625 *remainedBurstSize=16;
000c94 e3a0c010 MOV r12,#0x10
000c98 e582c000 STR r12,[r2,#0]
;;;626 break;
000c9c ea000026 B |L1.3388|
;;;627 case 4:
;;;628 *mainBurstSize=16;
|L1.3232|
000ca0 e3a0c010 MOV r12,#0x10
000ca4 e581c000 STR r12,[r1,#0]
;;;629 *remainedBurstSize=4;
000ca8 e3a0c004 MOV r12,#4
000cac e582c000 STR r12,[r2,#0]
;;;630 break;
000cb0 ea000021 B |L1.3388|
;;;631 case 8:
;;;632 *mainBurstSize=16;
|L1.3252|
000cb4 e3a0c010 MOV r12,#0x10
000cb8 e581c000 STR r12,[r1,#0]
;;;633 *remainedBurstSize=8;
000cbc e3a0c008 MOV r12,#8
000cc0 e582c000 STR r12,[r2,#0]
;;;634 break;
000cc4 ea00001c B |L1.3388|
;;;635 default:
;;;636 tmp=(hSize/4)%8;
|L1.3272|
000cc8 e1a0cd80 MOV r12,r0,LSL #27
000ccc e1a03eac MOV r3,r12,LSR #29
;;;637 switch(tmp) {
000cd0 e3530000 CMP r3,#0
000cd4 0a000002 BEQ |L1.3300|
000cd8 e3530004 CMP r3,#4
000cdc 1a00000a BNE |L1.3340|
000ce0 ea000004 B |L1.3320|
;;;638 case 0:
;;;639 *mainBurstSize=8;
|L1.3300|
000ce4 e3a0c008 MOV r12,#8
000ce8 e581c000 STR r12,[r1,#0]
;;;640 *remainedBurstSize=8;
000cec e3a0c008 MOV r12,#8
000cf0 e582c000 STR r12,[r2,#0]
;;;641 break;
000cf4 ea00000f B |L1.3384|
;;;642 case 4:
;;;643 *mainBurstSize=8;
|L1.3320|
000cf8 e3a0c008 MOV r12,#8
000cfc e581c000 STR r12,[r1,#0]
;;;644 *remainedBurstSize=4;
000d00 e3a0c004 MOV r12,#4
000d04 e582c000 STR r12,[r2,#0]
;;;645 default:
000d08 e1a00000 NOP
;;;646 *mainBurstSize=4;
|L1.3340|
000d0c e3a0c004 MOV r12,#4
000d10 e581c000 STR r12,[r1,#0]
;;;647 tmp=(hSize/4)%4;
000d14 e1a0ce00 MOV r12,r0,LSL #28
000d18 e1a03f2c MOV r3,r12,LSR #30
;;;648 *remainedBurstSize= (tmp) ? tmp: 4;
000d1c e3530000 CMP r3,#0
000d20 0a000001 BEQ |L1.3372|
000d24 e1a0c003 MOV r12,r3
000d28 ea000000 B |L1.3376|
|L1.3372|
000d2c e3a0c004 MOV r12,#4
|L1.3376|
000d30 e582c000 STR r12,[r2,#0]
;;;649 break;
000d34 e1a00000 NOP
;;;650 }
;;;651 break;
|L1.3384|
000d38 e1a00000 NOP
;;;652 }
;;;653 }
|L1.3388|
000d3c e12fff1e BX lr
ENDP
CamInit PROC
;;;458 U32 WinHorOffset, U32 WinVerOffset, U32 CoFrameBuffer, U32 PrFrameBuffer)
;;;459 {
000d40 e92d4fff STMFD sp!,{r0-r11,lr}
000d44 e24dd04c SUB sp,sp,#0x4c
000d48 e1a04000 MOV r4,r0
000d4c e1a05001 MOV r5,r1
000d50 e1a09002 MOV r9,r2
;;;460 U32 WinOfsEn;
;;;461 U32 divisor, multiplier;
;;;462 U32 MainBurstSizeY, RemainedBurstSizeY, MainBurstSizeC, RemainedBurstSizeC, MainBurstSizeRGB, RemainedBurstSizeRGB;
;;;463 U32 H_Shift, V_Shift, PreHorRatio, PreVerRatio, MainHorRatio, MainVerRatio;
;;;464 U32 SrcWidth, SrcHeight;
;;;465 U32 OrgSrcWidth, OrgSrcHeight;
;;;466 U32 ScaleUp_H_Co, ScaleUp_V_Co, ScaleUp_H_Pr, ScaleUp_V_Pr;
;;;467
;;;468 //constraint for size setting is checked here.........
;;;469
;;;470 //constant for calculating codec dma address
;;;471 if(camCodecOutput)
000d54 e51f0964 LDR r0,|L1.1016|
000d58 e5900000 LDR r0,[r0,#0] ; camCodecOutput
000d5c e3500000 CMP r0,#0
000d60 0a000001 BEQ |L1.3436|
;;;472 divisor=2; //CCIR-422
000d64 e3a08002 MOV r8,#2
000d68 ea000000 B |L1.3440|
;;;473 else
;;;474 divisor=4; //CCIR-420
|L1.3436|
000d6c e3a08004 MOV r8,#4
;;;475
;;;476 //constant for calculating preview dma address
;;;477 if(camPviewOutput)
|L1.3440|
000d70 e51f0978 LDR r0,|L1.1024|
000d74 e5900000 LDR r0,[r0,#0] ; camPviewOutput
000d78 e3500000 CMP r0,#0
000d7c 0a000002 BEQ |L1.3468|
;;;478 multiplier=4;
000d80 e3a02004 MOV r2,#4
000d84 e58d2044 STR r2,[sp,#0x44]
000d88 ea000001 B |L1.3476|
;;;479 else
;;;480 multiplier=2;
|L1.3468|
000d8c e3a02002 MOV r2,#2
000d90 e58d2044 STR r2,[sp,#0x44]
;;;481
;;;482 if(WinHorOffset==0 && WinVerOffset==0)
|L1.3476|
000d94 e59d0080 LDR r0,[sp,#0x80]
000d98 e59d1084 LDR r1,[sp,#0x84]
000d9c e1900001 ORRS r0,r0,r1
000da0 1a000002 BNE |L1.3504|
;;;483 WinOfsEn=0;
000da4 e3a00000 MOV r0,#0
000da8 e58d0048 STR r0,[sp,#0x48]
000dac ea000001 B |L1.3512|
;;;484 else
;;;485 WinOfsEn=1;
|L1.3504|
000db0 e3a00001 MOV r0,#1
000db4 e58d0048 STR r0,[sp,#0x48]
;;;486
;;;487 switch(CAMSIZE) {
|L1.3512|
000db8 e51f0934 LDR r0,|L1.1164|
000dbc e5900000 LDR r0,[r0,#0] ; CAMSIZE
000dc0 e3500fa0 CMP r0,#0x280
000dc4 0a000004 BEQ |L1.3548|
000dc8 e3500e48 CMP r0,#0x480
000dcc 0a000005 BEQ |L1.3560|
000dd0 e3500e7d CMP r0,#0x7d0
000dd4 1a000009 BNE |L1.3584|
000dd8 ea000005 B |L1.3572|
;;;488 case VGA_XSIZE:
;;;489 OrgSrcWidth=VGA_XSIZE;
|L1.3548|
000ddc e3a0afa0 MOV r10,#0x280
;;;490 OrgSrcHeight=VGA_YSIZE;
000de0 e3a0bf78 MOV r11,#0x1e0
;;;491 break;
000de4 ea000008 B |L1.3596|
;;;492 case MEGA1_XSIZE:
;;;493 OrgSrcWidth=MEGA1_XSIZE;
|L1.3560|
000de8 e3a0ae48 MOV r10,#0x480
;;;494 OrgSrcHeight=MEGA1_YSIZE;
000dec e3a0bfd8 MOV r11,#0x360
;;;495 break;
000df0 ea000005 B |L1.3596|
;;;496 case MEGA2_XSIZE:
;;;497 OrgSrcWidth=MEGA2_XSIZE;
|L1.3572|
000df4 e3a0ae7d MOV r10,#0x7d0
;;;498 OrgSrcHeight=MEGA2_YSIZE;
000df8 e3a0bfd8 MOV r11,#0x360
;;;499 break;
000dfc ea000002 B |L1.3596|
;;;500 default:
;;;501 OrgSrcWidth=VGA_XSIZE;
|L1.3584|
000e00 e3a0afa0 MOV r10,#0x280
;;;502 OrgSrcHeight=VGA_YSIZE;
000e04 e3a0bf78 MOV r11,#0x1e0
;;;503 break;
000e08 e1a00000 NOP
;;;504 }
;;;505
;;;506
;;;507 SrcWidth=OrgSrcWidth-2*WinHorOffset;
|L1.3596|
000e0c e59d0080 LDR r0,[sp,#0x80]
000e10 e04a6080 SUB r6,r10,r0,LSL #1
;;;508 SrcHeight=OrgSrcHeight-2*WinVerOffset;
000e14 e59d1084 LDR r1,[sp,#0x84]
000e18 e04b7081 SUB r7,r11,r1,LSL #1
;;;509
;;;510 if(SrcWidth<=CoDstWidth) ScaleUp_H_Co=1;
000e1c e1560004 CMP r6,r4
000e20 8a000002 BHI |L1.3632|
000e24 e3a00001 MOV r0,#1
000e28 e58d0010 STR r0,[sp,#0x10]
000e2c ea000001 B |L1.3640|
;;;511 else ScaleUp_H_Co=0;
|L1.3632|
000e30 e3a00000 MOV r0,#0
000e34 e58d0010 STR r0,[sp,#0x10]
;;;512
;;;513 if(SrcHeight<=CoDstHeight) ScaleUp_V_Co=1;
|L1.3640|
000e38 e1570005 CMP r7,r5
000e3c 8a000002 BHI |L1.3660|
000e40 e3a01001 MOV r1,#1
000e44 e58d100c STR r1,[sp,#0xc]
000e48 ea000001 B |L1.3668|
;;;514 else ScaleUp_V_Co=0;
|L1.3660|
000e4c e3a01000 MOV r1,#0
000e50 e58d100c STR r1,[sp,#0xc]
;;;515
;;;516 if(SrcWidth<=PrDstWidth) ScaleUp_H_Pr=1;
|L1.3668|
000e54 e1560009 CMP r6,r9
000e58 8a000002 BHI |L1.3688|
000e5c e3a01001 MOV r1,#1
000e60 e58d1008 STR r1,[sp,#8]
000e64 ea000001 B |L1.3696|
;;;517 else ScaleUp_H_Pr=0;
|L1.3688|
000e68 e3a01000 MOV r1,#0
000e6c e58d1008 STR r1,[sp,#8]
;;;518
;;;519 if(SrcHeight<=PrDstHeight) ScaleUp_V_Pr=1;
|L1.3696|
000e70 e59d3058 LDR r3,[sp,#0x58]
000e74 e1570003 CMP r7,r3
000e78 8a000002 BHI |L1.3720|
000e7c e3a01001 MOV r1,#1
000e80 e58d1004 STR r1,[sp,#4]
000e84 ea000001 B |L1.3728|
;;;520 else ScaleUp_V_Pr=0;
|L1.3720|
000e88 e3a01000 MOV r1,#0
000e8c e58d1004 STR r1,[sp,#4]
;;;521
;;;522 rCISRCFMT=(CAM_ITU601<<31)|(0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -