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

📄 jdpostct.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000060  6838              LDR      r0,[r7,#0]
000062  4428              ADD      r0,r0,r5
;;;238    
;;;239      /* Advance if we filled the strip. */
;;;240      post->next_row += num_rows;
000064  6038              STR      r0,[r7,#0]
000066  69a0              LDR      r0,[r4,#0x18]
000068  4428              ADD      r0,r0,r5
;;;241      if (post->next_row >= post->strip_height) {
00006a  61a0              STR      r0,[r4,#0x18]
00006c  6921              LDR      r1,[r4,#0x10]
00006e  4288              CMP      r0,r1
000070  d304              BCC      |L3.124|
;;;242        post->starting_row += post->strip_height;
000072  6960              LDR      r0,[r4,#0x14]
;;;243        post->next_row = 0;
000074  2200              MOVS     r2,#0
000076  4408              ADD      r0,r0,r1              ;242
000078  e9c40205          STRD     r0,r2,[r4,#0x14]
                  |L3.124|
;;;244      }
;;;245    }
00007c  e8bd83f8          POP      {r3-r9,pc}
;;;246    
                          ENDP


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

                  post_process_prepass PROC
;;;157    METHODDEF(void)
;;;158    post_process_prepass (j_decompress_ptr cinfo,
000000  e92d4ffe          PUSH     {r1-r11,lr}
;;;159    		      JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
;;;160    		      JDIMENSION in_row_groups_avail,
;;;161    		      JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
;;;162    		      JDIMENSION out_rows_avail)
;;;163    {
;;;164      my_post_ptr post = (my_post_ptr) cinfo->post;
;;;165      JDIMENSION old_next_row, num_rows;
;;;166    
;;;167      GUI_USE_PARA(out_rows_avail);
;;;168      GUI_USE_PARA(output_buf);
;;;169      /* Reposition virtual buffer if at start of strip. */
;;;170      if (post->next_row == 0) {
000004  f8d041b0          LDR      r4,[r0,#0x1b0]
000008  4605              MOV      r5,r0                 ;163
00000a  f8dd8034          LDR      r8,[sp,#0x34]         ;164
00000e  69a0              LDR      r0,[r4,#0x18]
000010  4689              MOV      r9,r1                 ;163
000012  4692              MOV      r10,r2                ;163
000014  469b              MOV      r11,r3                ;163
000016  b948              CBNZ     r0,|L4.44|
;;;171        post->buffer = (*cinfo->mem->access_virt_sarray)
000018  2301              MOVS     r3,#1
00001a  9300              STR      r3,[sp,#0]
00001c  6868              LDR      r0,[r5,#4]
00001e  e9d43204          LDRD     r3,r2,[r4,#0x10]
000022  69c6              LDR      r6,[r0,#0x1c]
000024  68a1              LDR      r1,[r4,#8]
000026  4628              MOV      r0,r5
000028  47b0              BLX      r6
00002a  60e0              STR      r0,[r4,#0xc]
                  |L4.44|
;;;172    	((j_common_ptr) cinfo, post->whole_image,
;;;173    	 post->starting_row, post->strip_height, TRUE);
;;;174      }
;;;175    
;;;176      /* Upsample some data (up to a strip height's worth). */
;;;177      old_next_row = post->next_row;
;;;178      (*cinfo->upsample->upsample) (cinfo,
00002c  e9d41303          LDRD     r1,r3,[r4,#0xc]
000030  f1040218          ADD      r2,r4,#0x18
000034  69a6              LDR      r6,[r4,#0x18]
000036  e88d000e          STM      sp,{r1-r3}
00003a  f8d501c4          LDR      r0,[r5,#0x1c4]
00003e  465b              MOV      r3,r11
000040  6847              LDR      r7,[r0,#4]
000042  4652              MOV      r2,r10
000044  4649              MOV      r1,r9
000046  4628              MOV      r0,r5
000048  47b8              BLX      r7
;;;179    		input_buf, in_row_group_ctr, in_row_groups_avail,
;;;180    		post->buffer, &post->next_row, post->strip_height);
;;;181    
;;;182      /* Allow quantizer to scan new data.  No data is emitted, */
;;;183      /* but we advance out_row_ctr so outer loop can tell when we're done. */
;;;184      if (post->next_row > old_next_row) {
00004a  69a0              LDR      r0,[r4,#0x18]
00004c  42b0              CMP      r0,r6
00004e  d90f              BLS      |L4.112|
;;;185        num_rows = post->next_row - old_next_row;
000050  1b87              SUBS     r7,r0,r6
;;;186        (*cinfo->cquantize->color_quantize) (cinfo, post->buffer + old_next_row,
000052  68e0              LDR      r0,[r4,#0xc]
000054  463b              MOV      r3,r7
000056  eb000186          ADD      r1,r0,r6,LSL #2
00005a  f8d501cc          LDR      r0,[r5,#0x1cc]
00005e  2200              MOVS     r2,#0
000060  6846              LDR      r6,[r0,#4]
000062  4628              MOV      r0,r5
000064  47b0              BLX      r6
;;;187    					 (JSAMPARRAY) NULL, (int) num_rows);
;;;188        *out_row_ctr += num_rows;
000066  f8d80000          LDR      r0,[r8,#0]
00006a  19c1              ADDS     r1,r0,r7
00006c  f8c81000          STR      r1,[r8,#0]
                  |L4.112|
;;;189      }
;;;190    
;;;191      /* Advance if we filled the strip. */
;;;192      if (post->next_row >= post->strip_height) {
000070  69a1              LDR      r1,[r4,#0x18]
000072  6920              LDR      r0,[r4,#0x10]
000074  4281              CMP      r1,r0
000076  d304              BCC      |L4.130|
;;;193        post->starting_row += post->strip_height;
000078  6961              LDR      r1,[r4,#0x14]
;;;194        post->next_row = 0;
00007a  2200              MOVS     r2,#0
00007c  4408              ADD      r0,r0,r1              ;193
00007e  e9c40205          STRD     r0,r2,[r4,#0x14]
                  |L4.130|
;;;195      }
;;;196    }
000082  e8bd8ffe          POP      {r1-r11,pc}
;;;197    
                          ENDP


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

                  start_pass_dpost PROC
;;;72     METHODDEF(void)
;;;73     start_pass_dpost (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)
000000  b538              PUSH     {r3-r5,lr}
;;;74     {
;;;75       my_post_ptr post = (my_post_ptr) cinfo->post;
;;;76     
;;;77       switch (pass_mode) {
000002  f8d041b0          LDR      r4,[r0,#0x1b0]
000006  b171              CBZ      r1,|L5.38|
;;;78       case JBUF_PASS_THRU:
;;;79         if (cinfo->quantize_colors) {
;;;80           /* Single-pass processing with color quantization. */
;;;81           post->pub.post_process_data = post_process_1pass;
;;;82           /* We could be doing buffered-image output before starting a 2-pass
;;;83            * color quantization; in that case, jinit_d_post_controller did not
;;;84            * allocate a strip buffer.  Use the virtual-array buffer as workspace.
;;;85            */
;;;86           if (post->buffer == NULL) {
;;;87     	post->buffer = (*cinfo->mem->access_virt_sarray)
;;;88     	  ((j_common_ptr) cinfo, post->whole_image,
;;;89     	   (JDIMENSION) 0, post->strip_height, TRUE);
;;;90           }
;;;91         } else {
;;;92           /* For single-pass processing without color quantization,
;;;93            * I have no work to do; just call the upsampler directly.
;;;94            */
;;;95           post->pub.post_process_data = cinfo->upsample->upsample;
;;;96         }
;;;97         break;
;;;98     #ifdef QUANT_2PASS_SUPPORTED
;;;99       case JBUF_SAVE_AND_PASS:
;;;100        /* First pass of 2-pass quantization */
;;;101        if (post->whole_image == NULL)
;;;102          ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
000008  2204              MOVS     r2,#4
00000a  2902              CMP      r1,#2                 ;77
00000c  d01f              BEQ      |L5.78|
00000e  2903              CMP      r1,#3                 ;77
000010  d126              BNE      |L5.96|
000012  68a1              LDR      r1,[r4,#8]            ;101
000014  b921              CBNZ     r1,|L5.32|
000016  6801              LDR      r1,[r0,#0]
000018  614a              STR      r2,[r1,#0x14]
00001a  6801              LDR      r1,[r0,#0]
00001c  6809              LDR      r1,[r1,#0]
00001e  4788              BLX      r1
                  |L5.32|
;;;103        post->pub.post_process_data = post_process_prepass;
000020  4814              LDR      r0,|L5.116|
                  |L5.34|
000022  6060              STR      r0,[r4,#4]            ;95
000024  e021              B        |L5.106|
                  |L5.38|
000026  6d41              LDR      r1,[r0,#0x54]         ;79
000028  b169              CBZ      r1,|L5.70|
00002a  4913              LDR      r1,|L5.120|
00002c  6061              STR      r1,[r4,#4]            ;86
00002e  68e1              LDR      r1,[r4,#0xc]          ;86
000030  b9d9              CBNZ     r1,|L5.106|
000032  2301              MOVS     r3,#1                 ;87
000034  9300              STR      r3,[sp,#0]            ;87
000036  6842              LDR      r2,[r0,#4]            ;87
000038  6923              LDR      r3,[r4,#0x10]         ;87
00003a  69d5              LDR      r5,[r2,#0x1c]         ;87
00003c  68a1              LDR      r1,[r4,#8]            ;87
00003e  2200              MOVS     r2,#0                 ;87
000040  47a8              BLX      r5                    ;87
000042  60e0              STR      r0,[r4,#0xc]          ;87
000044  e011              B        |L5.106|
                  |L5.70|
000046  f8d001c4          LDR      r0,[r0,#0x1c4]        ;95
00004a  6840              LDR      r0,[r0,#4]            ;95
00004c  e7e9              B        |L5.34|
                  |L5.78|
;;;104        break;
;;;105      case JBUF_CRANK_DEST:
;;;106        /* Second pass of 2-pass quantization */
;;;107        if (post->whole_image == NULL)
00004e  68a1              LDR      r1,[r4,#8]
000050  b921              CBNZ     r1,|L5.92|
;;;108          ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
000052  6801              LDR      r1,[r0,#0]
000054  614a              STR      r2,[r1,#0x14]
000056  6801              LDR      r1,[r0,#0]
000058  6809              LDR      r1,[r1,#0]
00005a  4788              BLX      r1
                  |L5.92|
;;;109        post->pub.post_process_data = post_process_2pass;
00005c  4807              LDR      r0,|L5.124|
;;;110        break;
00005e  e7e0              B        |L5.34|
                  |L5.96|
;;;111    #endif /* QUANT_2PASS_SUPPORTED */
;;;112      default:
;;;113        ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
000060  6801              LDR      r1,[r0,#0]
000062  614a              STR      r2,[r1,#0x14]
000064  6801              LDR      r1,[r0,#0]
000066  6809              LDR      r1,[r1,#0]
000068  4788              BLX      r1
                  |L5.106|
;;;114        break;
;;;115      }
;;;116      post->starting_row = post->next_row = 0;
00006a  2000              MOVS     r0,#0
00006c  61a0              STR      r0,[r4,#0x18]
;;;117    }
00006e  6160              STR      r0,[r4,#0x14]
000070  bd38              POP      {r3-r5,pc}
;;;118    
                          ENDP

000072  0000              DCW      0x0000
                  |L5.116|
                          DCD      post_process_prepass
                  |L5.120|
                          DCD      post_process_1pass
                  |L5.124|
                          DCD      post_process_2pass

⌨️ 快捷键说明

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