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

📄 jdsample.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
00009e  6aa8              LDR      r0,[r5,#0x28]
0000a0  2802              CMP      r0,#2
0000a2  d901              BLS      |L7.168|
;;;459    	upsample->methods[ci] = h2v1_fancy_upsample;
0000a4  4829              LDR      r0,|L7.332|
0000a6  e000              B        |L7.170|
                  |L7.168|
;;;460          else
;;;461    	upsample->methods[ci] = h2v1_upsample;
0000a8  4829              LDR      r0,|L7.336|
                  |L7.170|
0000aa  f8c8001c          STR      r0,[r8,#0x1c]         ;459
0000ae  e02e              B        |L7.270|
                  |L7.176|
;;;462        } else if (h_in_group * 2 == h_out_group &&
0000b0  ebb60f4c          CMP      r6,r12,LSL #1
0000b4  d111              BNE      |L7.218|
;;;463    	       v_in_group * 2 == v_out_group) {
0000b6  ebb70f40          CMP      r7,r0,LSL #1
0000ba  d10e              BNE      |L7.218|
;;;464          /* Special cases for 2h2v upsampling */
;;;465          if (do_fancy && compptr->downsampled_width > 2) {
0000bc  f1bb0f00          CMP      r11,#0
0000c0  d009              BEQ      |L7.214|
0000c2  6aa8              LDR      r0,[r5,#0x28]
0000c4  2802              CMP      r0,#2
0000c6  d906              BLS      |L7.214|
;;;466    	upsample->methods[ci] = h2v2_fancy_upsample;
0000c8  4822              LDR      r0,|L7.340|
;;;467    	upsample->pub.need_context_rows = TRUE;
0000ca  f8c8001c          STR      r0,[r8,#0x1c]
0000ce  2001              MOVS     r0,#1
0000d0  f8c90008          STR      r0,[r9,#8]
0000d4  e01b              B        |L7.270|
                  |L7.214|
;;;468          } else
;;;469    	upsample->methods[ci] = h2v2_upsample;
0000d6  4820              LDR      r0,|L7.344|
0000d8  e7e7              B        |L7.170|
                  |L7.218|
;;;470        } else if ((h_out_group % h_in_group) == 0 &&
0000da  fb96f1fc          SDIV     r1,r6,r12
0000de  fb0c6211          MLS      r2,r12,r1,r6
0000e2  b96a              CBNZ     r2,|L7.256|
;;;471    	       (v_out_group % v_in_group) == 0) {
0000e4  fb97f2f0          SDIV     r2,r7,r0
0000e8  fb007012          MLS      r0,r0,r2,r7
0000ec  b940              CBNZ     r0,|L7.256|
;;;472          /* Generic integral-factors upsampling method */
;;;473          upsample->methods[ci] = int_upsample;
0000ee  481b              LDR      r0,|L7.348|
;;;474          upsample->h_expand[ci] = (UINT8) (h_out_group / h_in_group);
0000f0  f8c8001c          STR      r0,[r8,#0x1c]
0000f4  eb09000a          ADD      r0,r9,r10
0000f8  f8001f44          STRB     r1,[r0,#0x44]!
;;;475          upsample->v_expand[ci] = (UINT8) (v_out_group / v_in_group);
0000fc  7102              STRB     r2,[r0,#4]
0000fe  e006              B        |L7.270|
                  |L7.256|
;;;476        } else
;;;477          ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
000100  6821              LDR      r1,[r4,#0]
000102  2026              MOVS     r0,#0x26
000104  6148              STR      r0,[r1,#0x14]
000106  6820              LDR      r0,[r4,#0]
000108  6801              LDR      r1,[r0,#0]
00010a  4620              MOV      r0,r4
00010c  4788              BLX      r1
                  |L7.270|
;;;478        if (need_buffer) {
;;;479          upsample->color_buf[ci] = (*cinfo->mem->alloc_sarray)
00010e  f8d41134          LDR      r1,[r4,#0x134]
000112  6f20              LDR      r0,[r4,#0x70]
000114  f7fffffe          BL       jround_up
000118  6861              LDR      r1,[r4,#4]
00011a  4602              MOV      r2,r0
00011c  688e              LDR      r6,[r1,#8]
00011e  f8d43138          LDR      r3,[r4,#0x138]
000122  2101              MOVS     r1,#1
000124  4620              MOV      r0,r4
000126  47b0              BLX      r6
000128  f8c8000c          STR      r0,[r8,#0xc]
                  |L7.300|
00012c  f10a0a01          ADD      r10,r10,#1            ;435
000130  3554              ADDS     r5,r5,#0x54           ;435
                  |L7.306|
000132  6a60              LDR      r0,[r4,#0x24]         ;434
000134  4550              CMP      r0,r10                ;434
000136  dc8c              BGT      |L7.82|
;;;480    	((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;481    	 (JDIMENSION) jround_up((long) cinfo->output_width,
;;;482    				(long) cinfo->max_h_samp_factor),
;;;483    	 (JDIMENSION) cinfo->max_v_samp_factor);
;;;484        }
;;;485      }
;;;486    }
000138  e8bd9ff0          POP      {r4-r12,pc}
                          ENDP

                  |L7.316|
                          DCD      start_pass_upsample
                  |L7.320|
                          DCD      sep_upsample
                  |L7.324|
                          DCD      noop_upsample
                  |L7.328|
                          DCD      fullsize_upsample
                  |L7.332|
                          DCD      h2v1_fancy_upsample
                  |L7.336|
                          DCD      h2v1_upsample
                  |L7.340|
                          DCD      h2v2_fancy_upsample
                  |L7.344|
                          DCD      h2v2_upsample
                  |L7.348|
                          DCD      int_upsample

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

                  noop_upsample PROC
;;;172    METHODDEF(void)
;;;173    noop_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000  2000              MOVS     r0,#0
;;;174    	       JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;175    {
;;;176      GUI_USE_PARA(cinfo);
;;;177      GUI_USE_PARA(compptr);
;;;178      GUI_USE_PARA(input_data);
;;;179      *output_data_ptr = NULL;	/* safety check */
;;;180    }
000002  6018              STR      r0,[r3,#0]
000004  4770              BX       lr
;;;181    
                          ENDP


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

                  sep_upsample PROC
;;;88     METHODDEF(void)
;;;89     sep_upsample (j_decompress_ptr cinfo,
000000  e92d4ff8          PUSH     {r3-r11,lr}
;;;90     	      JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
;;;91     	      JDIMENSION in_row_groups_avail,
;;;92     	      JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
;;;93     	      JDIMENSION out_rows_avail)
;;;94     {
000004  4606              MOV      r6,r0
;;;95       my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
;;;96       int ci;
;;;97       jpeg_component_info * compptr;
;;;98       JDIMENSION num_rows;
;;;99     
;;;100      GUI_USE_PARA(in_row_groups_avail);
;;;101      /* Fill the conversion buffer, if it's empty */
;;;102      if (upsample->next_row_out >= cinfo->max_v_samp_factor) {
000006  f8d041c4          LDR      r4,[r0,#0x1c4]
00000a  468b              MOV      r11,r1                ;94
00000c  6ae0              LDR      r0,[r4,#0x2c]
00000e  f8d61138          LDR      r1,[r6,#0x138]
000012  f8dda02c          LDR      r10,[sp,#0x2c]        ;95
000016  4691              MOV      r9,r2                 ;94
000018  4288              CMP      r0,r1
00001a  db1c              BLT      |L9.86|
;;;103        for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
00001c  2500              MOVS     r5,#0
00001e  f8d600d8          LDR      r0,[r6,#0xd8]
000022  e012              B        |L9.74|
                  |L9.36|
;;;104    	 ci++, compptr++) {
;;;105          /* Invoke per-component upsample method.  Notice we pass a POINTER
;;;106           * to color_buf[ci], so that fullsize_upsample can change it.
;;;107           */
;;;108          (*upsample->methods[ci]) (cinfo, compptr,
000024  eb040085          ADD      r0,r4,r5,LSL #2
000028  f8d91000          LDR      r1,[r9,#0]
00002c  6b42              LDR      r2,[r0,#0x34]
00002e  f100030c          ADD      r3,r0,#0xc
000032  4351              MULS     r1,r2,r1
000034  f85b2025          LDR      r2,[r11,r5,LSL #2]
000038  69c7              LDR      r7,[r0,#0x1c]
00003a  eb020281          ADD      r2,r2,r1,LSL #2
00003e  4641              MOV      r1,r8
000040  4630              MOV      r0,r6
000042  47b8              BLX      r7
000044  1c6d              ADDS     r5,r5,#1              ;104
000046  f1080054          ADD      r0,r8,#0x54           ;104
                  |L9.74|
00004a  4680              MOV      r8,r0                 ;103
00004c  6a70              LDR      r0,[r6,#0x24]         ;103
00004e  42a8              CMP      r0,r5                 ;103
000050  dce8              BGT      |L9.36|
;;;109    	input_buf[ci] + (*in_row_group_ctr * upsample->rowgroup_height[ci]),
;;;110    	upsample->color_buf + ci);
;;;111        }
;;;112        upsample->next_row_out = 0;
000052  2000              MOVS     r0,#0
000054  62e0              STR      r0,[r4,#0x2c]
                  |L9.86|
;;;113      }
;;;114    
;;;115      /* Color-convert and emit rows */
;;;116    
;;;117      /* How many we have in the buffer: */
;;;118      num_rows = (JDIMENSION) (cinfo->max_v_samp_factor - upsample->next_row_out);
000056  4602              MOV      r2,r0
;;;119      /* Not more than the distance to the end of the image.  Need this test
;;;120       * in case the image height is not a multiple of max_v_samp_factor:
;;;121       */
;;;122      if (num_rows > upsample->rows_to_go) 
000058  f8d61138          LDR      r1,[r6,#0x138]
00005c  6b20              LDR      r0,[r4,#0x30]
00005e  1a8d              SUBS     r5,r1,r2              ;118
000060  42a8              CMP      r0,r5
000062  d200              BCS      |L9.102|
;;;123        num_rows = upsample->rows_to_go;
000064  4605              MOV      r5,r0
                  |L9.102|
;;;124      /* And not more than what the client can accept: */
;;;125      out_rows_avail -= *out_row_ctr;
000066  f8da1000          LDR      r1,[r10,#0]
00006a  980c              LDR      r0,[sp,#0x30]
00006c  1a40              SUBS     r0,r0,r1
;;;126      if (num_rows > out_rows_avail)
00006e  4285              CMP      r5,r0
000070  d900              BLS      |L9.116|
;;;127        num_rows = out_rows_avail;
000072  4605              MOV      r5,r0
                  |L9.116|
;;;128    
;;;129      (*cinfo->cconvert->color_convert) (cinfo, upsample->color_buf,
000074  9500              STR      r5,[sp,#0]
000076  980a              LDR      r0,[sp,#0x28]
000078  eb000381          ADD      r3,r0,r1,LSL #2
00007c  f8d601c8          LDR      r0,[r6,#0x1c8]
000080  f104010c          ADD      r1,r4,#0xc
000084  6847              LDR      r7,[r0,#4]
000086  4630              MOV      r0,r6
000088  47b8              BLX      r7
;;;130    				     (JDIMENSION) upsample->next_row_out,
;;;131    				     output_buf + *out_row_ctr,
;;;132    				     (int) num_rows);
;;;133    
;;;134      /* Adjust counts */
;;;135      *out_row_ctr += num_rows;
00008a  f8da0000          LDR      r0,[r10,#0]
00008e  1941              ADDS     r1,r0,r5
;;;136      upsample->rows_to_go -= num_rows;
000090  f8ca1000          STR      r1,[r10,#0]
000094  6b20              LDR      r0,[r4,#0x30]
000096  1b40              SUBS     r0,r0,r5
;;;137      upsample->next_row_out += num_rows;
000098  6320              STR      r0,[r4,#0x30]
00009a  6ae0              LDR      r0,[r4,#0x2c]
00009c  4428              ADD      r0,r0,r5
;;;138      /* When the buffer is emptied, declare this input row group consumed */
;;;139      if (upsample->next_row_out >= cinfo->max_v_samp_factor)
00009e  62e0              STR      r0,[r4,#0x2c]
0000a0  f8d61138          LDR      r1,[r6,#0x138]
0000a4  4288              CMP      r0,r1
0000a6  db04              BLT      |L9.178|
;;;140        (*in_row_group_ctr)++;
0000a8  f8d90000          LDR      r0,[r9,#0]
0000ac  1c40              ADDS     r0,r0,#1
0000ae  f8c90000          STR      r0,[r9,#0]
                  |L9.178|
;;;141    }
0000b2  e8bd8ff8          POP      {r3-r11,pc}
;;;142    
                          ENDP


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

                  start_pass_upsample PROC
;;;68     METHODDEF(void)
;;;69     start_pass_upsample (j_decompress_ptr cinfo)
000000  f8d011c4          LDR      r1,[r0,#0x1c4]
;;;70     {
;;;71       my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
;;;72     
;;;73       /* Mark the conversion buffer empty */
;;;74       upsample->next_row_out = cinfo->max_v_samp_factor;
000004  f8d02138          LDR      r2,[r0,#0x138]
;;;75       /* Initialize total-height counter for detecting bottom of image */
;;;76       upsample->rows_to_go = cinfo->output_height;
000008  62ca              STR      r2,[r1,#0x2c]
00000a  6f40              LDR      r0,[r0,#0x74]
;;;77     }
00000c  6308              STR      r0,[r1,#0x30]
00000e  4770              BX       lr
;;;78     
                          ENDP

⌨️ 快捷键说明

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