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

📄 jdcolor.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;330      case JCS_YCCK:
;;;331        if (cinfo->num_components != 4)
00003e  6a61              LDR      r1,[r4,#0x24]
000040  2904              CMP      r1,#4
000042  d009              BEQ      |L4.88|
000044  e002              B        |L4.76|
                  |L4.70|
;;;332          ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
;;;333        break;
;;;334    
;;;335      default:			/* JCS_UNKNOWN can be anything */
;;;336        if (cinfo->num_components < 1)
000046  6a61              LDR      r1,[r4,#0x24]
000048  2901              CMP      r1,#1
00004a  da05              BGE      |L4.88|
                  |L4.76|
;;;337          ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
00004c  6821              LDR      r1,[r4,#0]
00004e  6148              STR      r0,[r1,#0x14]
000050  6820              LDR      r0,[r4,#0]
000052  6801              LDR      r1,[r0,#0]
000054  4620              MOV      r0,r4
000056  4788              BLX      r1
                  |L4.88|
;;;338        break;
;;;339      }
;;;340    
;;;341      /* Set out_color_components and conversion method based on requested space.
;;;342       * Also clear the component_needed flags for any unused components,
;;;343       * so that earlier pipeline stages can avoid useless computation.
;;;344       */
;;;345    
;;;346      switch (cinfo->out_color_space) {
000058  f8940029          LDRB     r0,[r4,#0x29]
;;;347      case JCS_GRAYSCALE:
;;;348        cinfo->out_color_components = 1;
;;;349        if (cinfo->jpeg_color_space == JCS_GRAYSCALE ||
;;;350    	cinfo->jpeg_color_space == JCS_YCbCr) {
;;;351          cconvert->pub.color_convert = grayscale_convert;
;;;352          /* For color->grayscale conversion, only the Y (0) component is needed */
;;;353          for (ci = 1; ci < cinfo->num_components; ci++)
;;;354    	cinfo->comp_info[ci].component_needed = FALSE;
;;;355        } else
;;;356          ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
00005c  211b              MOVS     r1,#0x1b
00005e  2601              MOVS     r6,#1                 ;310
000060  2801              CMP      r0,#1                 ;346
000062  d00f              BEQ      |L4.132|
;;;357        break;
;;;358    
;;;359      case JCS_RGB:
;;;360        cinfo->out_color_components = RGB_PIXELSIZE;
;;;361        if (cinfo->jpeg_color_space == JCS_YCbCr) {
;;;362          cconvert->pub.color_convert = ycc_rgb_convert;
;;;363          build_ycc_rgb_table(cinfo);
;;;364        } else if (cinfo->jpeg_color_space == JCS_GRAYSCALE) {
;;;365          cconvert->pub.color_convert = gray_rgb_convert;
;;;366        } else if (cinfo->jpeg_color_space == JCS_RGB && RGB_PIXELSIZE == 3) {
;;;367          cconvert->pub.color_convert = null_convert;
000064  4a2a              LDR      r2,|L4.272|
000066  2802              CMP      r0,#2                 ;346
000068  d028              BEQ      |L4.188|
00006a  2804              CMP      r0,#4                 ;346
00006c  d13a              BNE      |L4.228|
;;;368        } else
;;;369          ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
;;;370        break;
;;;371    
;;;372      case JCS_CMYK:
;;;373        cinfo->out_color_components = 4;
;;;374        if (cinfo->jpeg_color_space == JCS_YCCK) {
00006e  67a0              STR      r0,[r4,#0x78]
000070  f8940028          LDRB     r0,[r4,#0x28]
000074  2805              CMP      r0,#5
000076  d131              BNE      |L4.220|
;;;375          cconvert->pub.color_convert = ycck_cmyk_convert;
000078  4826              LDR      r0,|L4.276|
                  |L4.122|
;;;376          build_ycc_rgb_table(cinfo);
00007a  6068              STR      r0,[r5,#4]
00007c  4620              MOV      r0,r4
00007e  f7fffffe          BL       build_ycc_rgb_table
000082  e03c              B        |L4.254|
                  |L4.132|
000084  67a6              STR      r6,[r4,#0x78]         ;349
000086  f8940028          LDRB     r0,[r4,#0x28]         ;349
00008a  2801              CMP      r0,#1                 ;349
00008c  d001              BEQ      |L4.146|
00008e  2803              CMP      r0,#3                 ;350
000090  d12f              BNE      |L4.242|
                  |L4.146|
000092  4821              LDR      r0,|L4.280|
000094  6068              STR      r0,[r5,#4]            ;353
000096  2001              MOVS     r0,#1                 ;353
000098  2200              MOVS     r2,#0                 ;354
00009a  2330              MOVS     r3,#0x30              ;354
00009c  e00a              B        |L4.180|
00009e  bf00              NOP                            ;354
                  |L4.160|
0000a0  ebc001c0          RSB      r1,r0,r0,LSL #3       ;354
0000a4  eb010141          ADD      r1,r1,r1,LSL #1       ;354
0000a8  f8d450d8          LDR      r5,[r4,#0xd8]         ;354
0000ac  eb030181          ADD      r1,r3,r1,LSL #2       ;354
0000b0  506a              STR      r2,[r5,r1]            ;354
0000b2  1c40              ADDS     r0,r0,#1              ;353
                  |L4.180|
0000b4  6a61              LDR      r1,[r4,#0x24]         ;353
0000b6  4281              CMP      r1,r0                 ;353
0000b8  dcf2              BGT      |L4.160|
0000ba  e020              B        |L4.254|
                  |L4.188|
0000bc  2003              MOVS     r0,#3                 ;360
0000be  67a0              STR      r0,[r4,#0x78]         ;361
0000c0  f8940028          LDRB     r0,[r4,#0x28]         ;361
0000c4  2803              CMP      r0,#3                 ;361
0000c6  d101              BNE      |L4.204|
0000c8  4814              LDR      r0,|L4.284|
0000ca  e7d6              B        |L4.122|
                  |L4.204|
0000cc  2801              CMP      r0,#1                 ;364
0000ce  d102              BNE      |L4.214|
0000d0  4813              LDR      r0,|L4.288|
0000d2  6068              STR      r0,[r5,#4]            ;365
0000d4  e013              B        |L4.254|
                  |L4.214|
0000d6  2802              CMP      r0,#2                 ;366
0000d8  d10b              BNE      |L4.242|
0000da  e001              B        |L4.224|
                  |L4.220|
;;;377        } else if (cinfo->jpeg_color_space == JCS_CMYK) {
0000dc  2804              CMP      r0,#4
0000de  d108              BNE      |L4.242|
                  |L4.224|
;;;378          cconvert->pub.color_convert = null_convert;
0000e0  606a              STR      r2,[r5,#4]
0000e2  e00c              B        |L4.254|
                  |L4.228|
;;;379        } else
;;;380          ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
;;;381        break;
;;;382    
;;;383      default:
;;;384        /* Permit null conversion to same output space */
;;;385        if (cinfo->out_color_space == cinfo->jpeg_color_space) {
0000e4  f8943028          LDRB     r3,[r4,#0x28]
0000e8  4298              CMP      r0,r3
0000ea  d102              BNE      |L4.242|
;;;386          cinfo->out_color_components = cinfo->num_components;
0000ec  6a60              LDR      r0,[r4,#0x24]
;;;387          cconvert->pub.color_convert = null_convert;
0000ee  67a0              STR      r0,[r4,#0x78]
0000f0  e7f6              B        |L4.224|
                  |L4.242|
;;;388        } else			/* unsupported non-null conversion */
;;;389          ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
0000f2  6820              LDR      r0,[r4,#0]
0000f4  6141              STR      r1,[r0,#0x14]
0000f6  6820              LDR      r0,[r4,#0]
0000f8  6801              LDR      r1,[r0,#0]
0000fa  4620              MOV      r0,r4
0000fc  4788              BLX      r1
                  |L4.254|
;;;390        break;
;;;391      }
;;;392    
;;;393      if (cinfo->quantize_colors)
0000fe  6d60              LDR      r0,[r4,#0x54]
000100  b108              CBZ      r0,|L4.262|
;;;394        cinfo->output_components = 1; /* single colormapped output component */
000102  67e6              STR      r6,[r4,#0x7c]
;;;395      else
;;;396        cinfo->output_components = cinfo->out_color_components;
;;;397    }
000104  bd70              POP      {r4-r6,pc}
                  |L4.262|
000106  6fa0              LDR      r0,[r4,#0x78]         ;396
000108  67e0              STR      r0,[r4,#0x7c]         ;396
00010a  bd70              POP      {r4-r6,pc}
                          ENDP

                  |L4.268|
                          DCD      start_pass_dcolor
                  |L4.272|
                          DCD      null_convert
                  |L4.276|
                          DCD      ycck_cmyk_convert
                  |L4.280|
                          DCD      grayscale_convert
                  |L4.284|
                          DCD      ycc_rgb_convert
                  |L4.288|
                          DCD      gray_rgb_convert

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

                  null_convert PROC
;;;168    METHODDEF(void)
;;;169    null_convert (j_decompress_ptr cinfo,
000000  e92d43f0          PUSH     {r4-r9,lr}
;;;170    	      JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;171    	      JSAMPARRAY output_buf, int num_rows)
;;;172    {
000004  4689              MOV      r9,r1
;;;173      register JSAMPROW inptr, outptr;
;;;174      register JDIMENSION count;
;;;175      register int num_components = cinfo->num_components;
000006  f8dd801c          LDR      r8,[sp,#0x1c]
;;;176      JDIMENSION num_cols = cinfo->output_width;
;;;177      int ci;
;;;178    
;;;179      while (--num_rows >= 0) {
00000a  f8d0e070          LDR      lr,[r0,#0x70]
00000e  6a46              LDR      r6,[r0,#0x24]
000010  e019              B        |L5.70|
                  |L5.18|
;;;180        for (ci = 0; ci < num_components; ci++) {
000012  2100              MOVS     r1,#0
000014  e013              B        |L5.62|
;;;181          inptr = input_buf[ci][input_row];
000016  bf00              NOP      
                  |L5.24|
000018  f8590021          LDR      r0,[r9,r1,LSL #2]
;;;182          outptr = output_buf[0] + ci;
;;;183          for (count = num_cols; count > 0; count--) {
00001c  681d              LDR      r5,[r3,#0]
00001e  f8504022          LDR      r4,[r0,r2,LSL #2]     ;181
000022  ea5f000e          MOVS     r0,lr
000026  440d              ADD      r5,r5,r1              ;182
000028  d008              BEQ      |L5.60|
;;;184    	*outptr = *inptr++;	/* needn't bother with GETJSAMPLE() here */
00002a  bf00              NOP      
                  |L5.44|
00002c  f8147b01          LDRB     r7,[r4],#1
;;;185    	outptr += num_components;
000030  eb050c06          ADD      r12,r5,r6
000034  702f              STRB     r7,[r5,#0]            ;184
000036  4665              MOV      r5,r12
000038  1e40              SUBS     r0,r0,#1              ;183
00003a  d1f7              BNE      |L5.44|
                  |L5.60|
00003c  1c49              ADDS     r1,r1,#1              ;180
                  |L5.62|
00003e  42b1              CMP      r1,r6                 ;180
000040  dbea              BLT      |L5.24|
;;;186          }
;;;187        }
;;;188        input_row++;
000042  1c52              ADDS     r2,r2,#1
;;;189        output_buf++;
000044  1d1b              ADDS     r3,r3,#4
                  |L5.70|

⌨️ 快捷键说明

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