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

📄 jdmerge.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000020  6fa8              LDR      r0,[r5,#0x78]
000022  4342              MULS     r2,r0,r2
;;;385    
;;;386      if (cinfo->max_v_samp_factor == 2) {
000024  62a2              STR      r2,[r4,#0x28]
000026  f8d50138          LDR      r0,[r5,#0x138]
00002a  2802              CMP      r0,#2
00002c  d10a              BNE      |L4.68|
;;;387        upsample->pub.upsample = merged_2v_upsample;
00002e  480b              LDR      r0,|L4.92|
;;;388        upsample->upmethod = h2v2_merged_upsample;
000030  6060              STR      r0,[r4,#4]
000032  480b              LDR      r0,|L4.96|
;;;389        /* Allocate a spare row buffer */
;;;390        upsample->spare_row = (JSAMPROW)
000034  60e0              STR      r0,[r4,#0xc]
000036  6868              LDR      r0,[r5,#4]
000038  2101              MOVS     r1,#1
00003a  6843              LDR      r3,[r0,#4]
00003c  4628              MOV      r0,r5
00003e  4798              BLX      r3
000040  6220              STR      r0,[r4,#0x20]
000042  e004              B        |L4.78|
                  |L4.68|
;;;391          (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;392    		(size_t) (upsample->out_row_width * SIZEOF(JSAMPLE)));
;;;393      } else {
;;;394        upsample->pub.upsample = merged_1v_upsample;
000044  4807              LDR      r0,|L4.100|
;;;395        upsample->upmethod = h2v1_merged_upsample;
000046  6060              STR      r0,[r4,#4]
000048  4807              LDR      r0,|L4.104|
;;;396        /* No spare row needed */
;;;397        upsample->spare_row = NULL;
00004a  6221              STR      r1,[r4,#0x20]
00004c  60e0              STR      r0,[r4,#0xc]
                  |L4.78|
;;;398      }
;;;399    
;;;400      build_ycc_rgb_table(cinfo);
00004e  4628              MOV      r0,r5
000050  e8bd4070          POP      {r4-r6,lr}
000054  f7ffbffe          B.W      build_ycc_rgb_table
;;;401    }
;;;402    
                          ENDP

                  |L4.88|
                          DCD      start_pass_merged_upsample
                  |L4.92|
                          DCD      merged_2v_upsample
                  |L4.96|
                          DCD      h2v2_merged_upsample
                  |L4.100|
                          DCD      merged_1v_upsample
                  |L4.104|
                          DCD      h2v1_merged_upsample

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

                  merged_1v_upsample PROC
;;;193    METHODDEF(void)
;;;194    merged_1v_upsample (j_decompress_ptr cinfo,
000000  b570              PUSH     {r4-r6,lr}
;;;195    		    JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
;;;196    		    JDIMENSION in_row_groups_avail,
;;;197    		    JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
;;;198    		    JDIMENSION out_rows_avail)
;;;199    /* 1:1 vertical sampling case: much easier, never need a spare row. */
;;;200    {
000002  4614              MOV      r4,r2
;;;201      my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
000004  e9dd2504          LDRD     r2,r5,[sp,#0x10]
;;;202    
;;;203      GUI_USE_PARA(out_rows_avail);
;;;204      GUI_USE_PARA(in_row_groups_avail);
;;;205      /* Just do the upsampling. */
;;;206      (*upsample->upmethod) (cinfo, input_buf, *in_row_group_ctr,
000008  f8d061c4          LDR      r6,[r0,#0x1c4]
00000c  682b              LDR      r3,[r5,#0]
00000e  68f6              LDR      r6,[r6,#0xc]
000010  eb020383          ADD      r3,r2,r3,LSL #2
000014  6822              LDR      r2,[r4,#0]
000016  47b0              BLX      r6
;;;207    			 output_buf + *out_row_ctr);
;;;208      /* Adjust counts */
;;;209      (*out_row_ctr)++;
000018  6828              LDR      r0,[r5,#0]
00001a  1c40              ADDS     r0,r0,#1
;;;210      (*in_row_group_ctr)++;
00001c  6028              STR      r0,[r5,#0]
00001e  6820              LDR      r0,[r4,#0]
000020  1c40              ADDS     r0,r0,#1
;;;211    }
000022  6020              STR      r0,[r4,#0]
000024  bd70              POP      {r4-r6,pc}
;;;212    
                          ENDP


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

                  merged_2v_upsample PROC
;;;143    METHODDEF(void)
;;;144    merged_2v_upsample (j_decompress_ptr cinfo,
000000  e92d41ff          PUSH     {r0-r8,lr}
;;;145    		    JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
;;;146    		    JDIMENSION in_row_groups_avail,
;;;147    		    JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
;;;148    		    JDIMENSION out_rows_avail)
;;;149    /* 2:1 vertical sampling case: may need a spare row. */
;;;150    {
;;;151      my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
;;;152      JSAMPROW work_ptrs[2];
;;;153      JDIMENSION num_rows;		/* number of rows returned to caller */
;;;154    
;;;155      GUI_USE_PARA(in_row_groups_avail);
;;;156      if (upsample->spare_full) {
000004  f8d041c4          LDR      r4,[r0,#0x1c4]
000008  4690              MOV      r8,r2                 ;150
00000a  e9dd760a          LDRD     r7,r6,[sp,#0x28]      ;151
00000e  9a0c              LDR      r2,[sp,#0x30]         ;151
000010  6a63              LDR      r3,[r4,#0x24]
000012  b183              CBZ      r3,|L6.54|
;;;157        /* If we have a spare row saved from a previous cycle, just return it. */
;;;158        jcopy_sample_rows(& upsample->spare_row, 0, output_buf + *out_row_ctr, 0,
000014  6aa3              LDR      r3,[r4,#0x28]
000016  2201              MOVS     r2,#1
000018  e9cd2300          STRD     r2,r3,[sp,#0]
00001c  6830              LDR      r0,[r6,#0]
00001e  2300              MOVS     r3,#0
000020  eb070280          ADD      r2,r7,r0,LSL #2
000024  4619              MOV      r1,r3
000026  f1040020          ADD      r0,r4,#0x20
00002a  f7fffffe          BL       jcopy_sample_rows
;;;159    		      1, upsample->out_row_width);
;;;160        num_rows = 1;
00002e  2501              MOVS     r5,#1
;;;161        upsample->spare_full = FALSE;
000030  2000              MOVS     r0,#0
000032  6260              STR      r0,[r4,#0x24]
000034  e01d              B        |L6.114|
                  |L6.54|
;;;162      } else {
;;;163        /* Figure number of rows to return to caller. */
;;;164        num_rows = 2;
;;;165        /* Not more than the distance to the end of the image. */
;;;166        if (num_rows > upsample->rows_to_go)
000036  6ae3              LDR      r3,[r4,#0x2c]
000038  2502              MOVS     r5,#2                 ;164
00003a  2b02              CMP      r3,#2
00003c  d200              BCS      |L6.64|
;;;167          num_rows = upsample->rows_to_go;
00003e  461d              MOV      r5,r3
                  |L6.64|
;;;168        /* And not more than what the client can accept: */
;;;169        out_rows_avail -= *out_row_ctr;
000040  6833              LDR      r3,[r6,#0]
000042  1ad2              SUBS     r2,r2,r3
;;;170        if (num_rows > out_rows_avail)
000044  4295              CMP      r5,r2
000046  d900              BLS      |L6.74|
;;;171          num_rows = out_rows_avail;
000048  4615              MOV      r5,r2
                  |L6.74|
;;;172        /* Create output pointer array for upsampler. */
;;;173        work_ptrs[0] = output_buf[*out_row_ctr];
00004a  f8572023          LDR      r2,[r7,r3,LSL #2]
;;;174        if (num_rows > 1) {
00004e  9202              STR      r2,[sp,#8]
000050  2d01              CMP      r5,#1
000052  d905              BLS      |L6.96|
;;;175          work_ptrs[1] = output_buf[*out_row_ctr + 1];
000054  6832              LDR      r2,[r6,#0]
000056  eb070282          ADD      r2,r7,r2,LSL #2
00005a  6852              LDR      r2,[r2,#4]
00005c  9203              STR      r2,[sp,#0xc]
00005e  e003              B        |L6.104|
                  |L6.96|
;;;176        } else {
;;;177          work_ptrs[1] = upsample->spare_row;
000060  6a23              LDR      r3,[r4,#0x20]
;;;178          upsample->spare_full = TRUE;
000062  2201              MOVS     r2,#1
000064  9303              STR      r3,[sp,#0xc]
000066  6262              STR      r2,[r4,#0x24]
                  |L6.104|
;;;179        }
;;;180        /* Now do the upsampling. */
;;;181        (*upsample->upmethod) (cinfo, input_buf, *in_row_group_ctr, work_ptrs);
000068  68e7              LDR      r7,[r4,#0xc]
00006a  f8d82000          LDR      r2,[r8,#0]
00006e  ab02              ADD      r3,sp,#8
000070  47b8              BLX      r7
                  |L6.114|
;;;182      }
;;;183    
;;;184      /* Adjust counts */
;;;185      *out_row_ctr += num_rows;
000072  6830              LDR      r0,[r6,#0]
000074  4428              ADD      r0,r0,r5
;;;186      upsample->rows_to_go -= num_rows;
000076  6030              STR      r0,[r6,#0]
000078  6ae0              LDR      r0,[r4,#0x2c]
00007a  1b40              SUBS     r0,r0,r5
;;;187      /* When the buffer is emptied, declare this input row group consumed */
;;;188      if (! upsample->spare_full)
00007c  62e0              STR      r0,[r4,#0x2c]
00007e  6a60              LDR      r0,[r4,#0x24]
000080  2800              CMP      r0,#0
000082  d104              BNE      |L6.142|
;;;189        (*in_row_group_ctr)++;
000084  f8d80000          LDR      r0,[r8,#0]
000088  1c40              ADDS     r0,r0,#1
00008a  f8c80000          STR      r0,[r8,#0]
                  |L6.142|
;;;190    }
00008e  e8bd81ff          POP      {r0-r8,pc}
;;;191    
                          ENDP


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

                  start_pass_merged_upsample PROC
;;;125    METHODDEF(void)
;;;126    start_pass_merged_upsample (j_decompress_ptr cinfo)
000000  f8d011c4          LDR      r1,[r0,#0x1c4]
;;;127    {
;;;128      my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
;;;129    
;;;130      /* Mark the spare buffer empty */
;;;131      upsample->spare_full = FALSE;
000004  2200              MOVS     r2,#0
;;;132      /* Initialize total-height counter for detecting bottom of image */
;;;133      upsample->rows_to_go = cinfo->output_height;
000006  624a              STR      r2,[r1,#0x24]
000008  6f40              LDR      r0,[r0,#0x74]
;;;134    }
00000a  62c8              STR      r0,[r1,#0x2c]
00000c  4770              BX       lr
;;;135    
                          ENDP

⌨️ 快捷键说明

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