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

📄 jdcolor.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdcolor.o --depend=.\Obj\jdcolor.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\JPEG\jdcolor.c]
                          THUMB

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

                  build_ycc_rgb_table PROC
;;;69     LOCAL(void)
;;;70     build_ycc_rgb_table (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;71     {
000002  4605              MOV      r5,r0
;;;72       my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
;;;73       int i;
;;;74       INT32 x;
;;;75       SHIFT_TEMPS
;;;76     
;;;77       cconvert->Cr_r_tab = (int *)
000004  f8d041c8          LDR      r4,[r0,#0x1c8]
000008  6840              LDR      r0,[r0,#4]
00000a  f44f6680          MOV      r6,#0x400
00000e  6803              LDR      r3,[r0,#0]
000010  4632              MOV      r2,r6
000012  2101              MOVS     r1,#1
000014  4628              MOV      r0,r5
000016  4798              BLX      r3
;;;78         (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;79     				(MAXJSAMPLE+1) * SIZEOF(int));
;;;80       cconvert->Cb_b_tab = (int *)
000018  60a0              STR      r0,[r4,#8]
00001a  6868              LDR      r0,[r5,#4]
00001c  4632              MOV      r2,r6
00001e  6803              LDR      r3,[r0,#0]
000020  2101              MOVS     r1,#1
000022  4628              MOV      r0,r5
000024  4798              BLX      r3
;;;81         (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;82     				(MAXJSAMPLE+1) * SIZEOF(int));
;;;83       cconvert->Cr_g_tab = (INT32 *)
000026  60e0              STR      r0,[r4,#0xc]
000028  6868              LDR      r0,[r5,#4]
00002a  4632              MOV      r2,r6
00002c  6803              LDR      r3,[r0,#0]
00002e  2101              MOVS     r1,#1
000030  4628              MOV      r0,r5
000032  4798              BLX      r3
;;;84         (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;85     				(MAXJSAMPLE+1) * SIZEOF(INT32));
;;;86       cconvert->Cb_g_tab = (INT32 *)
000034  6120              STR      r0,[r4,#0x10]
000036  6868              LDR      r0,[r5,#4]
000038  4632              MOV      r2,r6
00003a  6803              LDR      r3,[r0,#0]
00003c  2101              MOVS     r1,#1
00003e  4628              MOV      r0,r5
000040  4798              BLX      r3
;;;87         (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;88     				(MAXJSAMPLE+1) * SIZEOF(INT32));
;;;89     
;;;90       for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
000042  6160              STR      r0,[r4,#0x14]
000044  2000              MOVS     r0,#0
000046  f06f017f          MVN      r1,#0x7f
;;;91         /* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
;;;92         /* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
;;;93         /* Cr=>R value is nearest int to 1.40200 * x */
;;;94         cconvert->Cr_r_tab[i] = (int)
;;;95     		    RIGHT_SHIFT(FIX(1.40200) * x + ONE_HALF, SCALEBITS);
;;;96         /* Cb=>B value is nearest int to 1.77200 * x */
;;;97         cconvert->Cb_b_tab[i] = (int)
00004a  0176              LSLS     r6,r6,#5
                  |L1.76|
00004c  4a11              LDR      r2,|L1.148|
00004e  68a3              LDR      r3,[r4,#8]            ;94
000050  434a              MULS     r2,r1,r2              ;94
000052  f5024200          ADD      r2,r2,#0x8000         ;94
000056  1412              ASRS     r2,r2,#16             ;94
000058  f8432020          STR      r2,[r3,r0,LSL #2]     ;94
00005c  f24e25d1          MOV      r5,#0xe2d1
000060  fb01f205          MUL      r2,r1,r5
000064  eb060242          ADD      r2,r6,r2,LSL #1
000068  68e3              LDR      r3,[r4,#0xc]
00006a  1412              ASRS     r2,r2,#16
00006c  f8432020          STR      r2,[r3,r0,LSL #2]
;;;98     		    RIGHT_SHIFT(FIX(1.77200) * x + ONE_HALF, SCALEBITS);
;;;99         /* Cr=>G value is scaled-up -0.71414 * x */
;;;100        cconvert->Cr_g_tab[i] = (- FIX(0.71414)) * x;
000070  4d09              LDR      r5,|L1.152|
000072  6922              LDR      r2,[r4,#0x10]
000074  434d              MULS     r5,r1,r5
;;;101        /* Cb=>G value is scaled-up -0.34414 * x */
;;;102        /* We also add in ONE_HALF so that need not do it in inner loop */
;;;103        cconvert->Cb_g_tab[i] = (- FIX(0.34414)) * x + ONE_HALF;
000076  4b09              LDR      r3,|L1.156|
000078  f8425020          STR      r5,[r2,r0,LSL #2]     ;100
00007c  434b              MULS     r3,r1,r3
00007e  eb060243          ADD      r2,r6,r3,LSL #1
000082  4605              MOV      r5,r0
000084  6963              LDR      r3,[r4,#0x14]
000086  1c40              ADDS     r0,r0,#1              ;90
000088  1c49              ADDS     r1,r1,#1              ;90
00008a  f8432025          STR      r2,[r3,r5,LSL #2]
00008e  28ff              CMP      r0,#0xff              ;90
000090  dddc              BLE      |L1.76|
;;;104      }
;;;105    }
000092  bd70              POP      {r4-r6,pc}
;;;106    
                          ENDP

                  |L1.148|
                          DCD      0x000166e9
                  |L1.152|
                          DCD      0xffff492e
                  |L1.156|
                          DCD      0xffffd3f3

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

                  gray_rgb_convert PROC
;;;216    METHODDEF(void)
;;;217    gray_rgb_convert (j_decompress_ptr cinfo,
000000  b5f0              PUSH     {r4-r7,lr}
;;;218    		  JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;219    		  JSAMPARRAY output_buf, int num_rows)
;;;220    {
;;;221      register JSAMPROW inptr, outptr;
;;;222      register JDIMENSION col;
;;;223      JDIMENSION num_cols = cinfo->output_width;
000002  9e05              LDR      r6,[sp,#0x14]
;;;224    
;;;225      while (--num_rows >= 0) {
000004  f8d0c070          LDR      r12,[r0,#0x70]
000008  e00f              B        |L2.42|
                  |L2.10|
;;;226        inptr = input_buf[0][input_row++];
00000a  4615              MOV      r5,r2
00000c  680c              LDR      r4,[r1,#0]
00000e  1c52              ADDS     r2,r2,#1
;;;227        outptr = *output_buf++;
000010  cb01              LDM      r3!,{r0}
000012  f8547025          LDR      r7,[r4,r5,LSL #2]     ;226
;;;228        for (col = 0; col < num_cols; col++) {
000016  2400              MOVS     r4,#0
000018  e005              B        |L2.38|
                  |L2.26|
;;;229          /* We can dispense with GETJSAMPLE() here */
;;;230          outptr[RGB_RED] = outptr[RGB_GREEN] = outptr[RGB_BLUE] = inptr[col];
00001a  5d3d              LDRB     r5,[r7,r4]
00001c  7085              STRB     r5,[r0,#2]
00001e  7045              STRB     r5,[r0,#1]
000020  f8005b03          STRB     r5,[r0],#3
000024  1c64              ADDS     r4,r4,#1              ;228
                  |L2.38|
000026  4564              CMP      r4,r12                ;228
000028  d3f7              BCC      |L2.26|
                  |L2.42|
00002a  1e76              SUBS     r6,r6,#1              ;225
00002c  d5ed              BPL      |L2.10|
;;;231          outptr += RGB_PIXELSIZE;
;;;232        }
;;;233      }
;;;234    }
00002e  bdf0              POP      {r4-r7,pc}
;;;235    
                          ENDP


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

                  grayscale_convert PROC
;;;200    METHODDEF(void)
;;;201    grayscale_convert (j_decompress_ptr cinfo,
000000  b57c              PUSH     {r2-r6,lr}
;;;202    		   JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;203    		   JSAMPARRAY output_buf, int num_rows)
;;;204    {
000002  460d              MOV      r5,r1
000004  461c              MOV      r4,r3
000006  4611              MOV      r1,r2
;;;205      jcopy_sample_rows(input_buf[0], (int) input_row, output_buf, 0,
000008  6f03              LDR      r3,[r0,#0x70]
00000a  9a06              LDR      r2,[sp,#0x18]
00000c  e9cd2300          STRD     r2,r3,[sp,#0]
000010  2300              MOVS     r3,#0
000012  4622              MOV      r2,r4
000014  6828              LDR      r0,[r5,#0]
000016  f7fffffe          BL       jcopy_sample_rows
;;;206    		    num_rows, cinfo->output_width);
;;;207    }
00001a  bd7c              POP      {r2-r6,pc}
;;;208    
                          ENDP


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

                  jinit_color_deconverter PROC
;;;304    GLOBAL(void)
;;;305    jinit_color_deconverter (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;306    {
000002  4604              MOV      r4,r0
;;;307      my_cconvert_ptr cconvert;
;;;308      int ci;
;;;309    
;;;310      cconvert = (my_cconvert_ptr)
000004  6840              LDR      r0,[r0,#4]
000006  2218              MOVS     r2,#0x18
000008  6803              LDR      r3,[r0,#0]
00000a  2101              MOVS     r1,#1
00000c  4620              MOV      r0,r4
00000e  4798              BLX      r3
;;;311        (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;312    				SIZEOF(my_color_deconverter));
;;;313      cinfo->cconvert = (struct jpeg_color_deconverter *) cconvert;
;;;314      cconvert->pub.start_pass = start_pass_dcolor;
000010  493e              LDR      r1,|L4.268|
000012  f8c401c8          STR      r0,[r4,#0x1c8]
;;;315    
;;;316      /* Make sure num_components agrees with jpeg_color_space */
;;;317      switch (cinfo->jpeg_color_space) {
000016  6001              STR      r1,[r0,#0]
000018  4605              MOV      r5,r0                 ;310
00001a  f8941028          LDRB     r1,[r4,#0x28]
;;;318      case JCS_GRAYSCALE:
;;;319        if (cinfo->num_components != 1)
;;;320          ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
00001e  200a              MOVS     r0,#0xa
000020  2906              CMP      r1,#6                 ;317
000022  d210              BCS      |L4.70|
000024  e8dff001          TBB      [pc,r1]               ;317
000028  0f030707          DCB      0x0f,0x03,0x07,0x07
00002c  0b0b              DCB      0x0b,0x0b
00002e  6a61              LDR      r1,[r4,#0x24]         ;319
000030  2901              CMP      r1,#1                 ;319
000032  d011              BEQ      |L4.88|
000034  e00a              B        |L4.76|
;;;321        break;
;;;322    
;;;323      case JCS_RGB:
;;;324      case JCS_YCbCr:
;;;325        if (cinfo->num_components != 3)
000036  6a61              LDR      r1,[r4,#0x24]
000038  2903              CMP      r1,#3
00003a  d00d              BEQ      |L4.88|
00003c  e006              B        |L4.76|
;;;326          ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
;;;327        break;
;;;328    
;;;329      case JCS_CMYK:

⌨️ 快捷键说明

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