⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdcolor.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000046  f1a80001          SUB      r0,r8,#1              ;179
00004a  f1b00800          SUBS     r8,r0,#0              ;179
00004e  dae0              BGE      |L5.18|
;;;190      }
;;;191    }
000050  e8bd83f0          POP      {r4-r9,pc}
;;;192    
                          ENDP


                          AREA ||i.start_pass_dcolor||, CODE, READONLY, ALIGN=1

                  start_pass_dcolor PROC
;;;292    METHODDEF(void)
;;;293    start_pass_dcolor (j_decompress_ptr cinfo)
000000  4770              BX       lr
;;;294    {
;;;295      GUI_USE_PARA(cinfo);
;;;296      /* no work needed */
;;;297    }
;;;298    
                          ENDP


                          AREA ||i.ycc_rgb_convert||, CODE, READONLY, ALIGN=2

                  ycc_rgb_convert PROC
;;;119    METHODDEF(void)
;;;120    ycc_rgb_convert (j_decompress_ptr cinfo,
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;121    		 JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;122    		 JSAMPARRAY output_buf, int num_rows)
;;;123    {
000004  4689              MOV      r9,r1
000006  4698              MOV      r8,r3
;;;124      my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
;;;125      register int y, cb, cr;
;;;126      register JSAMPROW outptr;
;;;127      register JSAMPROW inptr0, inptr1, inptr2;
;;;128      register JDIMENSION col;
;;;129      JDIMENSION num_cols = cinfo->output_width;
;;;130      /* copy these pointers into registers if possible */
;;;131      register JSAMPLE * range_limit = cinfo->sample_range_limit;
;;;132      register int * Crrtab = cconvert->Cr_r_tab;
000008  f8d011c8          LDR      r1,[r0,#0x1c8]
00000c  f8d0e144          LDR      lr,[r0,#0x144]
000010  6f03              LDR      r3,[r0,#0x70]
000012  b085              SUB      sp,sp,#0x14           ;123
000014  6888              LDR      r0,[r1,#8]            ;129
;;;133      register int * Cbbtab = cconvert->Cb_b_tab;
000016  9303              STR      r3,[sp,#0xc]
000018  e9d13c03          LDRD     r3,r12,[r1,#0xc]      ;132
;;;134      register INT32 * Crgtab = cconvert->Cr_g_tab;
;;;135      register INT32 * Cbgtab = cconvert->Cb_g_tab;
00001c  9002              STR      r0,[sp,#8]
00001e  6948              LDR      r0,[r1,#0x14]         ;133
;;;136      SHIFT_TEMPS
;;;137    
;;;138      while (--num_rows >= 0) {
000020  e9cd0300          STRD     r0,r3,[sp,#0]
000024  e034              B        |L7.144|
;;;139        inptr0 = input_buf[0][input_row];
;;;140        inptr1 = input_buf[1][input_row];
;;;141        inptr2 = input_buf[2][input_row];
000026  bf00              NOP      
                  |L7.40|
000028  e9d90300          LDRD     r0,r3,[r9,#0]         ;139
00002c  f850a022          LDR      r10,[r0,r2,LSL #2]    ;139
000030  f8530022          LDR      r0,[r3,r2,LSL #2]     ;140
000034  f8d91008          LDR      r1,[r9,#8]            ;140
;;;142        input_row++;
000038  9004              STR      r0,[sp,#0x10]
00003a  f851b022          LDR      r11,[r1,r2,LSL #2]    ;141
00003e  1c50              ADDS     r0,r2,#1
000040  4602              MOV      r2,r0
;;;143        outptr = *output_buf++;
000042  f8581b04          LDR      r1,[r8],#4
;;;144        for (col = 0; col < num_cols; col++) {
000046  2000              MOVS     r0,#0
000048  e01f              B        |L7.138|
;;;145          y  = GETJSAMPLE(inptr0[col]);
00004a  bf00              NOP      
                  |L7.76|
;;;146          cb = GETJSAMPLE(inptr1[col]);
;;;147          cr = GETJSAMPLE(inptr2[col]);
00004c  f81b5000          LDRB     r5,[r11,r0]
;;;148          /* Range-limiting is essential due to noise introduced by DCT losses. */
;;;149          outptr[RGB_RED] =   range_limit[y + Crrtab[cr]];
000050  9e02              LDR      r6,[sp,#8]
000052  f81a3000          LDRB     r3,[r10,r0]           ;145
000056  9c04              LDR      r4,[sp,#0x10]         ;146
000058  f8567025          LDR      r7,[r6,r5,LSL #2]
00005c  eb0e0603          ADD      r6,lr,r3
000060  5c24              LDRB     r4,[r4,r0]            ;146
000062  5dbf              LDRB     r7,[r7,r6]
000064  700f              STRB     r7,[r1,#0]
;;;150          outptr[RGB_GREEN] = range_limit[y +
000066  9f00              LDR      r7,[sp,#0]
000068  f85c5025          LDR      r5,[r12,r5,LSL #2]
00006c  f8577024          LDR      r7,[r7,r4,LSL #2]
000070  443d              ADD      r5,r5,r7
000072  eb034325          ADD      r3,r3,r5,ASR #16
000076  f81e3003          LDRB     r3,[lr,r3]
00007a  704b              STRB     r3,[r1,#1]
;;;151    			      ((int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr],
;;;152    						 SCALEBITS))];
;;;153          outptr[RGB_BLUE] =  range_limit[y + Cbbtab[cb]];
00007c  9b01              LDR      r3,[sp,#4]
00007e  f8533024          LDR      r3,[r3,r4,LSL #2]
000082  5d9b              LDRB     r3,[r3,r6]
000084  708b              STRB     r3,[r1,#2]
;;;154          outptr += RGB_PIXELSIZE;
000086  1cc9              ADDS     r1,r1,#3
000088  1c40              ADDS     r0,r0,#1              ;144
                  |L7.138|
00008a  9b03              LDR      r3,[sp,#0xc]          ;144
00008c  4298              CMP      r0,r3                 ;144
00008e  d3dd              BCC      |L7.76|
                  |L7.144|
000090  980e              LDR      r0,[sp,#0x38]         ;138
000092  1e40              SUBS     r0,r0,#1              ;138
000094  900e              STR      r0,[sp,#0x38]         ;138
000096  d5c7              BPL      |L7.40|
;;;155        }
;;;156      }
;;;157    }
000098  b005              ADD      sp,sp,#0x14
00009a  e8bd8ff0          POP      {r4-r11,pc}
;;;158    
                          ENDP


                          AREA ||i.ycck_cmyk_convert||, CODE, READONLY, ALIGN=2

                  ycck_cmyk_convert PROC
;;;244    METHODDEF(void)
;;;245    ycck_cmyk_convert (j_decompress_ptr cinfo,
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;246    		   JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;247    		   JSAMPARRAY output_buf, int num_rows)
;;;248    {
000004  468e              MOV      lr,r1
000006  4698              MOV      r8,r3
;;;249      my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
;;;250      register int y, cb, cr;
;;;251      register JSAMPROW outptr;
;;;252      register JSAMPROW inptr0, inptr1, inptr2, inptr3;
;;;253      register JDIMENSION col;
;;;254      JDIMENSION num_cols = cinfo->output_width;
;;;255      /* copy these pointers into registers if possible */
;;;256      register JSAMPLE * range_limit = cinfo->sample_range_limit;
;;;257      register int * Crrtab = cconvert->Cr_r_tab;
000008  f8d011c8          LDR      r1,[r0,#0x1c8]
00000c  f8d04144          LDR      r4,[r0,#0x144]
000010  6f03              LDR      r3,[r0,#0x70]
000012  b085              SUB      sp,sp,#0x14           ;248
000014  6888              LDR      r0,[r1,#8]            ;254
;;;258      register int * Cbbtab = cconvert->Cb_b_tab;
000016  9303              STR      r3,[sp,#0xc]
000018  e9d13703          LDRD     r3,r7,[r1,#0xc]       ;257
;;;259      register INT32 * Crgtab = cconvert->Cr_g_tab;
;;;260      register INT32 * Cbgtab = cconvert->Cb_g_tab;
00001c  9002              STR      r0,[sp,#8]
00001e  6948              LDR      r0,[r1,#0x14]         ;258
;;;261      SHIFT_TEMPS
;;;262    
;;;263      while (--num_rows >= 0) {
000020  e9cd0300          STRD     r0,r3,[sp,#0]
000024  e03f              B        |L8.166|
;;;264        inptr0 = input_buf[0][input_row];
;;;265        inptr1 = input_buf[1][input_row];
;;;266        inptr2 = input_buf[2][input_row];
000026  bf00              NOP      
                  |L8.40|
000028  e89e000b          LDM      lr,{r0,r1,r3}         ;264
00002c  f8509022          LDR      r9,[r0,r2,LSL #2]     ;264
000030  f8510022          LDR      r0,[r1,r2,LSL #2]     ;265
;;;267        inptr3 = input_buf[3][input_row];
000034  9004              STR      r0,[sp,#0x10]
000036  f8de100c          LDR      r1,[lr,#0xc]
00003a  f853b022          LDR      r11,[r3,r2,LSL #2]    ;266
00003e  f851a022          LDR      r10,[r1,r2,LSL #2]
;;;268        input_row++;
000042  1c50              ADDS     r0,r2,#1
000044  4602              MOV      r2,r0
;;;269        outptr = *output_buf++;
000046  f8581b04          LDR      r1,[r8],#4
;;;270        for (col = 0; col < num_cols; col++) {
00004a  2000              MOVS     r0,#0
00004c  e028              B        |L8.160|
;;;271          y  = GETJSAMPLE(inptr0[col]);
00004e  bf00              NOP      
                  |L8.80|
;;;272          cb = GETJSAMPLE(inptr1[col]);
000050  9d04              LDR      r5,[sp,#0x10]
;;;273          cr = GETJSAMPLE(inptr2[col]);
;;;274          /* Range-limiting is essential due to noise introduced by DCT losses. */
;;;275          outptr[0] = range_limit[MAXJSAMPLE - (y + Crrtab[cr])];	/* red */
000052  9e02              LDR      r6,[sp,#8]
000054  f815c000          LDRB     r12,[r5,r0]           ;272
000058  f81b5000          LDRB     r5,[r11,r0]           ;273
00005c  f8193000          LDRB     r3,[r9,r0]            ;271
000060  f8566025          LDR      r6,[r6,r5,LSL #2]
000064  441e              ADD      r6,r6,r3
000066  f1c606ff          RSB      r6,r6,#0xff
00006a  5da6              LDRB     r6,[r4,r6]
00006c  700e              STRB     r6,[r1,#0]
;;;276          outptr[1] = range_limit[MAXJSAMPLE - (y +			/* green */
00006e  9e00              LDR      r6,[sp,#0]
000070  f8575025          LDR      r5,[r7,r5,LSL #2]
000074  f856602c          LDR      r6,[r6,r12,LSL #2]
000078  4435              ADD      r5,r5,r6
00007a  eb034525          ADD      r5,r3,r5,ASR #16
00007e  f1c505ff          RSB      r5,r5,#0xff
000082  5d65              LDRB     r5,[r4,r5]
000084  704d              STRB     r5,[r1,#1]
;;;277    			      ((int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr],
;;;278    						 SCALEBITS)))];
;;;279          outptr[2] = range_limit[MAXJSAMPLE - (y + Cbbtab[cb])];	/* blue */
000086  9d01              LDR      r5,[sp,#4]
000088  f855502c          LDR      r5,[r5,r12,LSL #2]
00008c  442b              ADD      r3,r3,r5
00008e  f1c303ff          RSB      r3,r3,#0xff
000092  5ce3              LDRB     r3,[r4,r3]
000094  708b              STRB     r3,[r1,#2]
;;;280          /* K passes through unchanged */
;;;281          outptr[3] = inptr3[col];	/* don't need GETJSAMPLE here */
000096  f81a3000          LDRB     r3,[r10,r0]
00009a  70cb              STRB     r3,[r1,#3]
;;;282          outptr += 4;
00009c  1d09              ADDS     r1,r1,#4
00009e  1c40              ADDS     r0,r0,#1              ;270
                  |L8.160|
0000a0  9b03              LDR      r3,[sp,#0xc]          ;270
0000a2  4298              CMP      r0,r3                 ;270
0000a4  d3d4              BCC      |L8.80|
                  |L8.166|
0000a6  980e              LDR      r0,[sp,#0x38]         ;263
0000a8  1e40              SUBS     r0,r0,#1              ;263
0000aa  900e              STR      r0,[sp,#0x38]         ;263
0000ac  d5bc              BPL      |L8.40|
;;;283        }
;;;284      }
;;;285    }
0000ae  b005              ADD      sp,sp,#0x14
0000b0  e8bd8ff0          POP      {r4-r11,pc}
;;;286    
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -