📄 vlx_test.txt
字号:
0005b0 00000a78 DCB "x\n\0\0"
|L1.1460|
0005b4 20656854 DCB "The "
0005b8 74636970 DCB "pict"
0005bc 20657275 DCB "ure "
0005c0 74207369 DCB "is t"
0005c4 72206568 DCB "he r"
0005c8 6d496665 DCB "efIm"
0005cc 28656761 DCB "age("
0005d0 6465636d DCB "mced"
0005d4 72202620 DCB " & r"
0005d8 6e6f6365 DCB "econ"
0005dc 50202e29 DCB "). P"
0005e0 73736572 DCB "ress"
0005e4 796e6120 DCB " any"
0005e8 79656b20 DCB " key"
0005ec 00000a21 DCB "!\n\0\0"
|L1.1520|
0005f0 71746364 DCB "dctq"
0005f4 66656f43 DCB "Coef"
0005f8 64612066 DCB "f ad"
0005fc 203a7264 DCB "dr: "
000600 2c78255b DCB "[%x,"
000604 00000000 DCB "\0\0\0\0"
|L1.1544|
000608 666e6971 DCB "qinf"
00060c 2978256f DCB "o%x)"
000610 0000000a DCB "\n\0\0\0"
|L1.1556|
000614 e2888004 ADD r8,r8,#4
000618 eaffff8a B |L1.1096|
;;;190 *pt=0xffffffff;
|L1.1564|
00061c e3e00000 MVN r0,#0
000620 e5880000 STR r0,[r8,#0]
000624 eafffffa B |L1.1556|
;;;191 printf("pVlcData=[%x,%x)\n",pVlcData,(pVlcData+FIMV_MBLK_NUM*0x200/4));
|L1.1576|
000628 e2862bc6 ADD r2,r6,#0x31800
00062c e1a01006 MOV r1,r6
000630 e28f0f5d ADR r0,|L1.1964|
000634 ebfffffe BL printf
;;;192 #endif
;;;193
;;;194 if(dctq2VlcMode)
000638 e3590000 CMP r9,#0
00063c 0a000024 BEQ |L1.1748|
;;;195 {
;;;196 //DCTQ->direct->VLC
;;;197 printf("\n=== DCTQ->direct->VLC path test ===\n");
000640 e28f0f5e ADR r0,|L1.1984|
000644 ebfffffe BL printf
;;;198
;;;199 VlxInitIsr();
000648 ebfffffe BL VlxInitIsr
;;;200
;;;201 DctqInitIsr();
00064c ebfffffe BL DctqInitIsr
;;;202 #if VLX_GOB_OPERATION
;;;203 for(i=0;i<(imageHeight/16);i++)
;;;204 {
;;;205 VlcConfig4DctqGob(imageWidth,(U32)pVlcData,(imageWidth/16),
;;;206 ((i==0)? VLX_FRAME_START_MODE: 0));
;;;207
;;;208 DctqEngineGob(&currImage,&refImage,&dctqCoeff,pQInfo,(imageWidth/16),
;;;209 ((i==0)? DCTQ_FRAME_START_MODE : 0) |
;;;210 DCTQ_WITH_VLC_COEFF_WRITE);
;;;211 while(dctqDone==0 || vlxDone==0); // ?? ows
;;;212 printf("completed(DCTQ&VLC GOB=%d).\n",i);
;;;213 }
;;;214 #else
;;;215 VlcConfig4Dctq(imageWidth,(U32)pVlcData,(imageWidth/16)*(imageHeight/16),0);
000650 e1a00225 MOV r0,r5,LSR #4
000654 e1a01227 MOV r1,r7,LSR #4
000658 e0020091 MUL r2,r1,r0
00065c e3a03000 MOV r3,#0
000660 e1a01006 MOV r1,r6
000664 e1a00005 MOV r0,r5
000668 ebfffffe BL VlcConfig4Dctq
;;;216 //mtimer_start();
;;;217 DctqEngine(&currImage,&refImage,&dctqCoeff,pQInfo,DCTQ_WITH_VLC_COEFF_NOTWRITE);
00066c e3a03004 MOV r3,#4
000670 e58d3000 STR r3,[sp,#0]
000674 e59d3008 LDR r3,[sp,#8]
000678 e28d200c ADD r2,sp,#0xc
00067c e28d1028 ADD r1,sp,#0x28
000680 e28d0060 ADD r0,sp,#0x60
000684 ebfffffe BL DctqEngine
;;;218 printf("6= %08x\n",rVLX_OUT1);
000688 e51f0584 LDR r0,|L1.268|
00068c e590002c LDR r0,[r0,#0x2c]
000690 e1a01000 MOV r1,r0
000694 e28f0f53 ADR r0,|L1.2024|
000698 ebfffffe BL printf
;;;219
;;;220 //for debug
;;;221 //printf("Wait until DCT_Q_IQ_IDCT & VLC is completed... ");
;;;222 while(dctqDone==0 ){ printf("6= %08x\n",rVLX_OUT1);}
00069c e1a00000 NOP
|L1.1696|
0006a0 e51f0244 LDR r0,|L1.1124|
0006a4 e5900000 LDR r0,[r0,#0] ; dctqDone
0006a8 e3500000 CMP r0,#0
0006ac 1a000005 BNE |L1.1736|
0006b0 e51f05ac LDR r0,|L1.268|
0006b4 e590002c LDR r0,[r0,#0x2c]
0006b8 e1a01000 MOV r1,r0
0006bc e28f0f49 ADR r0,|L1.2024|
0006c0 ebfffffe BL printf
0006c4 eafffff5 B |L1.1696|
;;;223 ;
;;;224 printf("completed!\n");
|L1.1736|
0006c8 e28f0f49 ADR r0,|L1.2036|
0006cc ebfffffe BL printf
0006d0 ea000030 B |L1.1944|
;;;225 #endif
;;;226
;;;227 }
;;;228 else
;;;229 {
;;;230 //DCTQ->MEM->VLC
;;;231 printf("\n=== DCTQ->MEM->VLC path test ===\n");
|L1.1748|
0006d4 e28f0f49 ADR r0,|L1.2048|
0006d8 ebfffffe BL printf
;;;232
;;;233 DctqInitIsr();
0006dc ebfffffe BL DctqInitIsr
;;;234 VlxInitIsr();
0006e0 ebfffffe BL VlxInitIsr
;;;235 #if VLX_GOB_OPERATION
;;;236 for(i=0;i<(imageHeight/16);i++)
;;;237 {
;;;238 DctqEngineGob(&currImage,&prevImage,&dctqCoeff,pQInfo,(imageWidth/16),
;;;239 ((i==0)? DCTQ_FRAME_START_MODE: 0));
;;;240
;;;241 while(dctqDone==0);
;;;242 printf("completed(DCTQ,GOB=%d),",i);
;;;243
;;;244 VlcEngineGob(&dctqCoeff,pQInfo,(U32)pVlcData,(imageWidth/16),
;;;245 ((i==0)? VLX_FRAME_START_MODE : 0));
;;;246
;;;247 while(vlxDone==0);
;;;248 printf("completed(VLC,GOB=%d)!\n",i);
;;;249 }
;;;250 #else
;;;251 DctqEngine(&currImage,&refImage,&dctqCoeff,pQInfo,0);
0006e4 e3a03000 MOV r3,#0
0006e8 e58d3000 STR r3,[sp,#0]
0006ec e59d3008 LDR r3,[sp,#8]
0006f0 e28d200c ADD r2,sp,#0xc
0006f4 e28d1028 ADD r1,sp,#0x28
0006f8 e28d0060 ADD r0,sp,#0x60
0006fc ebfffffe BL DctqEngine
;;;252
;;;253 printf("1= %08x\n",rVLX_OUT1);
000700 e51f05fc LDR r0,|L1.268|
000704 e590002c LDR r0,[r0,#0x2c]
000708 e1a01000 MOV r1,r0
00070c e28f0f44 ADR r0,|L1.2084|
000710 ebfffffe BL printf
;;;254
;;;255 printf("Wait until DCT_Q_IQ_IDCT is completed... ");
000714 e28f0f45 ADR r0,|L1.2096|
000718 ebfffffe BL printf
;;;256 while(dctqDone==0);
00071c e1a00000 NOP
|L1.1824|
000720 e51f02c4 LDR r0,|L1.1124|
000724 e5900000 LDR r0,[r0,#0] ; dctqDone
000728 e3500000 CMP r0,#0
00072c 0afffffb BEQ |L1.1824|
;;;257 printf("completed!\n");
000730 e28f00bc ADR r0,|L1.2036|
000734 ebfffffe BL printf
;;;258
;;;259 printf("2= %08x\n",rVLX_OUT1);
000738 e51f0634 LDR r0,|L1.268|
00073c e590002c LDR r0,[r0,#0x2c]
000740 e1a01000 MOV r1,r0
000744 e28f0f44 ADR r0,|L1.2140|
000748 ebfffffe BL printf
;;;260
;;;261 VlcEngine(&dctqCoeff,pQInfo,(U32)pVlcData,0);
00074c e3a03000 MOV r3,#0
000750 e1a02006 MOV r2,r6
000754 e59d1008 LDR r1,[sp,#8]
000758 e28d000c ADD r0,sp,#0xc
00075c ebfffffe BL VlcEngine
;;;262
;;;263 printf("3= %08x\n",rVLX_OUT1);
000760 e51f065c LDR r0,|L1.268|
000764 e590002c LDR r0,[r0,#0x2c]
000768 e1a01000 MOV r1,r0
00076c e28f00f4 ADR r0,|L1.2152|
000770 ebfffffe BL printf
;;;264
;;;265 printf("Wait until Mem->VLC is completed... ");
000774 e28f00f8 ADR r0,|L1.2164|
000778 ebfffffe BL printf
;;;266 while(vlxDone==0);
00077c e1a00000 NOP
|L1.1920|
000780 e51f0678 LDR r0,|L1.272|
000784 e5900000 LDR r0,[r0,#0] ; vlxDone
000788 e3500000 CMP r0,#0
00078c 0afffffb BEQ |L1.1920|
;;;267 printf("completed!\n");
000790 e28f005c ADR r0,|L1.2036|
000794 ebfffffe BL printf
;;;268 #endif
;;;269 }
;;;270
;;;271
;;;272
;;;273
;;;274 printf("The picture is the recon image by DCTQ/IDCTQ. Press any key!\n");
|L1.1944|
000798 e28f00fc ADR r0,|L1.2204|
00079c ebfffffe BL printf
;;;275 getchar();
0007a0 ebfffffe BL getchar
;;;276
;;;277
;;;278
;;;279 #if 0
;;;280 //****************************************************************************
;;;281 // VLD -> IDCTQ test
;;;282 //****************************************************************************
;;;283
;;;284 printf("\n[VLD -> IDCTQ test]\n");
;;;285
;;;286 //refImage2 is used for DctqEngine() as mced_input_image and recon_output image.
;;;287 freeBufStartAddr=AllocImage420(&refImage2,freeBufStartAddr,imageWidth,imageHeight,
;;;288 IMAGE420_PADDED|IMAGE420_CLEAR);
;;;289 /* //for debug
;;;290 if(qinfoMode==QINFO_INTER_MODE)
;;;291 {
;;;292 CopyImage420(&refImage2,&prevImage);
;;;293 //if this image isn't copied, the result has to be almost same with the currImage.
;;;294 }
;;;295 */
;;;296
;;;297 printf("dctqCoeff2 addr: [%x,",freeBufStartAddr);
;;;298 freeBufStartAddr=AllocImage420(&dctqCoeff2,freeBufStartAddr,imageWidth,imageHeight,IMAGE420_DCTQ_COEFF|IMAGE420_CLEAR);
;;;299 printf("%x)\n",freeBufStartAddr);
;;;300
;;;301 DecodeVlcStream(&dctqCoeff2,pQInfo,(U32)pVlcData,0);
;;;302
;;;303
;;;304
;;;305 #if 1
;;;306 printf("\nCompare the dctqCoeff & the dctqCoeff2!!\n");
;;;307
;;;308 for(i=0;i<(FIMV_IMAGE_HEIGHT*FIMV_IMAGE_WIDTH/2);i++)
;;;309 {
;;;310 j=*((U16 *)dctqCoeff.frameStartAddr+i);
;;;311 k=*((U16 *)dctqCoeff2.frameStartAddr+i);
;;;312 if(j!=k && (k!=0xffff)) // (k==0xffff) means a skipped m-block.
;;;313 printf("Y: x,y=(%d,%d): dctq1:%x=%x, dctq2:%x=%x\n",
;;;314 i%FIMV_IMAGE_WIDTH,i/FIMV_IMAGE_WIDTH,
;;;315 dctqCoeff.frameStartAddr+i*2,j,dctqCoeff2.frameStartAddr+i*2,k);
;;;316 }
;;;317 for(i=0;i<(FIMV_IMAGE_HEIGHT*FIMV_IMAGE_WIDTH/4/2);i++)
;;;318 {
;;;319 j=*((U16 *)dctqCoeff.cbStartAddr+i);
;;;320 k=*((U16 *)dctqCoeff2.cbStartAddr+i);
;;;321 if(j!=k && (k!=0xffff))
;;;322 printf("Cb: x,y=(%d,%d): dctq1:%x=%x, dctq2:%x=%x\n",
;;;323 ((i)%(FIMV_IMAGE_WIDTH/2)),(i/(FIMV_IMAGE_WIDTH/2)),
;;;324 dctqCoeff.frameStartAddr+i*2,j,dctqCoeff2.frameStartAddr+i*2,k);
;;;325 }
;;;326 for(i=0;i<(FIMV_IMAGE_HEIGHT*FIMV_IMAGE_WIDTH/4/2);i++)
;;;327 {
;;;328 j=*((U16 *)dctqCoeff.crStartAddr+i);
;;;329 k=*((U16 *)dctqCoeff2.crStartAddr+i);
;;;330 if(j!=k && (k!=0xffff))
;;;331 printf("Cr: x,y=(%d,%d): dctq1:%x=%x, dctq2:%x=%x\n",
;;;332 ((i)%(FIMV_IMAGE_WIDTH/2)),(i/(FIMV_IMAGE_WIDTH/2)),
;;;333 dctqCoeff.frameStartAddr+i*2,j,dctqCoeff2.frameStartAddr+i*2,k);
;;;334 }
;;;335 printf("\n");
;;;336 #endif
;;;337
;;;338
;;;339
;;;340 DctqEngine((PIMAGE420)0,&refImage2,&dctqCoeff2,pQInfo,DCTQ_DECODE_ONLY_MODE);
;;;341
;;;342 printf("Wait until IQ_IDCT is completed.\n");
;;;343 while(dctqDone==0);
;;;344 printf("IQ_IDCT is completed!\n");
;;;345
;;;346 printf("This is the recon image by VLD& IDCTQ from DctqCoeff & reference image.\n");
;;;347 getchar();
;;;348 #endif
;;;349 }
0007a4 e28dd07c ADD sp,sp,#0x7c
0007a8 e8bd83f0 LDMFD sp!,{r4-r9,pc}
|L1.1964|
0007ac 636c5670 DCB "pVlc"
0007b0 61746144 DCB "Data"
0007b4 78255b3d DCB "=[%x"
0007b8 2978252c DCB ",%x)"
0007bc 0000000a DCB "\n\0\0\0"
|L1.1984|
0007c0 3d3d3d0a DCB "\n==="
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -