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

📄 jdcoefct.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
                  |L3.306|
000132  f8da001c          LDR      r0,[r10,#0x1c]        ;160
000136  9905              LDR      r1,[sp,#0x14]         ;160
000138  4288              CMP      r0,r1                 ;160
00013a  f73faf73          BGT      |L3.36|
00013e  3594              ADDS     r5,r5,#0x94           ;160
000140  68a8              LDR      r0,[r5,#8]            ;212
000142  1c40              ADDS     r0,r0,#1              ;212
000144  60a8              STR      r0,[r5,#8]            ;213
000146  6828              LDR      r0,[r5,#0]            ;213
000148  1c40              ADDS     r0,r0,#1              ;213
00014a  6028              STR      r0,[r5,#0]            ;213
00014c  f8d510ac          LDR      r1,[r5,#0xac]         ;213
000150  3d94              SUBS     r5,r5,#0x94           ;213
000152  4288              CMP      r0,r1                 ;213
000154  d204              BCS      |L3.352|
000156  4628              MOV      r0,r5                 ;214
000158  f7fffffe          BL       start_iMCU_row
00015c  2003              MOVS     r0,#3                 ;215
00015e  e778              B        |L3.82|
                  |L3.352|
000160  f8d501b4          LDR      r0,[r5,#0x1b4]        ;218
000164  68c1              LDR      r1,[r0,#0xc]          ;218
000166  4628              MOV      r0,r5                 ;218
000168  4788              BLX      r1                    ;218
00016a  2004              MOVS     r0,#4                 ;219
00016c  e771              B        |L3.82|
;;;221    
                          ENDP


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

                  dummy_consume_data PROC
;;;227    METHODDEF(int)
;;;228    dummy_consume_data (j_decompress_ptr cinfo)
000000  2000              MOVS     r0,#0
;;;229    {
;;;230      GUI_USE_PARA(cinfo);
;;;231      return JPEG_SUSPENDED;	/* Always indicate nothing was done */
;;;232    }
000002  4770              BX       lr
;;;233    
                          ENDP


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

                  jinit_d_coef_controller PROC
;;;676    GLOBAL(void)
;;;677    jinit_d_coef_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
000000  e92d47fc          PUSH     {r2-r10,lr}
;;;678    {
000004  4680              MOV      r8,r0
;;;679      my_coef_ptr coef;
;;;680    
;;;681      coef = (my_coef_ptr)
000006  6840              LDR      r0,[r0,#4]
000008  460d              MOV      r5,r1                 ;678
00000a  2258              MOVS     r2,#0x58
00000c  6803              LDR      r3,[r0,#0]
00000e  2101              MOVS     r1,#1
000010  4640              MOV      r0,r8
000012  4798              BLX      r3
;;;682        (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;683    				SIZEOF(my_coef_controller));
;;;684      cinfo->coef = (struct jpeg_d_coef_controller *) coef;
;;;685      coef->pub.start_input_pass = start_input_pass;
000014  4924              LDR      r1,|L5.168|
000016  f8c801ac          STR      r0,[r8,#0x1ac]
;;;686      coef->pub.start_output_pass = start_output_pass;
00001a  6001              STR      r1,[r0,#0]
00001c  4923              LDR      r1,|L5.172|
00001e  4604              MOV      r4,r0                 ;681
;;;687    #ifdef BLOCK_SMOOTHING_SUPPORTED
;;;688      coef->coef_bits_latch = NULL;
;;;689    #endif
;;;690    
;;;691      /* Create the coefficient buffer. */
;;;692      if (need_full_buffer) {
000020  6081              STR      r1,[r0,#8]
000022  b33d              CBZ      r5,|L5.116|
;;;693    #ifdef D_MULTISCAN_FILES_SUPPORTED
;;;694        /* Allocate a full-image virtual array for each component, */
;;;695        /* padded to a multiple of samp_factor DCT blocks in each direction. */
;;;696        /* Note we ask for a pre-zeroed array. */
;;;697        int ci, access_rows;
;;;698        jpeg_component_info *compptr;
;;;699    
;;;700        for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
000024  2600              MOVS     r6,#0
000026  f8d850d8          LDR      r5,[r8,#0xd8]
00002a  e018              B        |L5.94|
                  |L5.44|
;;;701    	 ci++, compptr++) {
;;;702          access_rows = compptr->v_samp_factor;
00002c  68e9              LDR      r1,[r5,#0xc]
;;;703    #ifdef BLOCK_SMOOTHING_SUPPORTED
;;;704          /* If block smoothing could be used, need a bigger window */
;;;705          if (cinfo->progressive_mode)
;;;706    	access_rows *= 3;
;;;707    #endif
;;;708          coef->whole_image[ci] = (*cinfo->mem->request_virt_barray)
00002e  6a28              LDR      r0,[r5,#0x20]
000030  460f              MOV      r7,r1                 ;702
000032  f7fffffe          BL       jround_up
000036  4681              MOV      r9,r0
000038  68a9              LDR      r1,[r5,#8]
00003a  69e8              LDR      r0,[r5,#0x1c]
00003c  f7fffffe          BL       jround_up
000040  e9cd9700          STRD     r9,r7,[sp,#0]
000044  f8d81004          LDR      r1,[r8,#4]
000048  4603              MOV      r3,r0
00004a  2201              MOVS     r2,#1
00004c  694f              LDR      r7,[r1,#0x14]
00004e  4611              MOV      r1,r2
000050  4640              MOV      r0,r8
000052  47b8              BLX      r7
000054  eb040186          ADD      r1,r4,r6,LSL #2
000058  1c76              ADDS     r6,r6,#1              ;701
00005a  3554              ADDS     r5,r5,#0x54           ;701
00005c  6488              STR      r0,[r1,#0x48]         ;701
                  |L5.94|
00005e  f8d80024          LDR      r0,[r8,#0x24]         ;700
000062  42b0              CMP      r0,r6                 ;700
000064  dce2              BGT      |L5.44|
;;;709    	((j_common_ptr) cinfo, JPOOL_IMAGE, TRUE,
;;;710    	 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
;;;711    				(long) compptr->h_samp_factor),
;;;712    	 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
;;;713    				(long) compptr->v_samp_factor),
;;;714    	 (JDIMENSION) access_rows);
;;;715        }
;;;716        coef->pub.consume_data = consume_data;
000066  4812              LDR      r0,|L5.176|
;;;717        coef->pub.decompress_data = decompress_data;
000068  6060              STR      r0,[r4,#4]
00006a  4812              LDR      r0,|L5.180|
;;;718        coef->pub.coef_arrays = coef->whole_image; /* link to virtual arrays */
00006c  60e0              STR      r0,[r4,#0xc]
00006e  f1040048          ADD      r0,r4,#0x48
;;;719    #else
;;;720        ERREXIT(cinfo, JERR_NOT_COMPILED);
;;;721    #endif
;;;722      } else {
000072  e016              B        |L5.162|
                  |L5.116|
;;;723        /* We only need a single-MCU buffer. */
;;;724        JBLOCKROW buffer;
;;;725        int i;
;;;726    
;;;727        buffer = (JBLOCKROW)
000074  f8d80004          LDR      r0,[r8,#4]
000078  f44f62a0          MOV      r2,#0x500
00007c  6843              LDR      r3,[r0,#4]
00007e  2101              MOVS     r1,#1
000080  4640              MOV      r0,r8
000082  4798              BLX      r3
000084  4601              MOV      r1,r0
;;;728          (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;729    				  D_MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
;;;730        for (i = 0; i < D_MAX_BLOCKS_IN_MCU; i++) {
000086  2000              MOVS     r0,#0
                  |L5.136|
;;;731          coef->MCU_buffer[i] = buffer + i;
000088  eb0112c0          ADD      r2,r1,r0,LSL #7
00008c  eb040380          ADD      r3,r4,r0,LSL #2
000090  1c40              ADDS     r0,r0,#1              ;730
000092  621a              STR      r2,[r3,#0x20]         ;730
000094  280a              CMP      r0,#0xa               ;730
000096  dbf7              BLT      |L5.136|
;;;732        }
;;;733        coef->pub.consume_data = dummy_consume_data;
000098  4807              LDR      r0,|L5.184|
;;;734        coef->pub.decompress_data = decompress_onepass;
00009a  6060              STR      r0,[r4,#4]
00009c  4807              LDR      r0,|L5.188|
;;;735        coef->pub.coef_arrays = NULL; /* flag for no virtual arrays */
00009e  60e0              STR      r0,[r4,#0xc]
0000a0  2000              MOVS     r0,#0
                  |L5.162|
0000a2  6120              STR      r0,[r4,#0x10]         ;718
;;;736      }
;;;737    }
0000a4  e8bd87fc          POP      {r2-r10,pc}
                          ENDP

                  |L5.168|
                          DCD      start_input_pass
                  |L5.172|
                          DCD      start_output_pass
                  |L5.176|
                          DCD      consume_data
                  |L5.180|
                          DCD      decompress_data
                  |L5.184|
                          DCD      dummy_consume_data
                  |L5.188|
                          DCD      decompress_onepass

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

                  start_iMCU_row PROC
;;;78     LOCAL(void)
;;;79     start_iMCU_row (j_decompress_ptr cinfo)
000000  f8d02148          LDR      r2,[r0,#0x148]
;;;80     /* Reset within-iMCU-row counters for a new row (input side) */
;;;81     {
;;;82       my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
;;;83     
;;;84       /* In an interleaved scan, an MCU row is the same as an iMCU row.
;;;85        * In a noninterleaved scan, an iMCU row has v_samp_factor MCU rows.
;;;86        * But at the bottom of the image, process only what's left.
;;;87        */
;;;88       if (cinfo->comps_in_scan > 1) {
000004  f8d011ac          LDR      r1,[r0,#0x1ac]
000008  2a01              CMP      r2,#1
00000a  dd01              BLE      |L6.16|
;;;89         coef->MCU_rows_per_iMCU_row = 1;
00000c  2001              MOVS     r0,#1
00000e  e00b              B        |L6.40|
                  |L6.16|
;;;90       } else {
;;;91         if (cinfo->input_iMCU_row < (cinfo->total_iMCU_rows-1))
000010  f8d02140          LDR      r2,[r0,#0x140]
000014  f8d03094          LDR      r3,[r0,#0x94]
000018  1e52              SUBS     r2,r2,#1
;;;92           coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->v_samp_factor;
00001a  f8d0014c          LDR      r0,[r0,#0x14c]
00001e  4293              CMP      r3,r2                 ;91
000020  d201              BCS      |L6.38|
000022  68c0              LDR      r0,[r0,#0xc]
000024  e000              B        |L6.40|
                  |L6.38|
;;;93         else
;;;94           coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->last_row_height;
000026  6c80              LDR      r0,[r0,#0x48]
                  |L6.40|
;;;95       }
;;;96     
;;;97       coef->MCU_ctr = 0;
000028  61c8              STR      r0,[r1,#0x1c]
00002a  2000              MOVS     r0,#0
;;;98       coef->MCU_vert_offset = 0;
00002c  6148              STR      r0,[r1,#0x14]
;;;99     }
00002e  6188              STR      r0,[r1,#0x18]
000030  4770              BX       lr
;;;100    
                          ENDP


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

                  start_input_pass PROC
;;;106    METHODDEF(void)
;;;107    start_input_pass (j_decompress_ptr cinfo)
000000  2100              MOVS     r1,#0
;;;108    {
;;;109      cinfo->input_iMCU_row = 0;
;;;110      start_iMCU_row(cinfo);
000002  f8c01094          STR      r1,[r0,#0x94]
000006  f7ffbffe          B.W      start_iMCU_row
;;;111    }
;;;112    
                          ENDP


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

                  start_output_pass PROC
;;;118    METHODDEF(void)
;;;119    start_output_pass (j_decompress_ptr cinfo)
000000  2100              MOVS     r1,#0
;;;120    {
;;;121    #ifdef BLOCK_SMOOTHING_SUPPORTED
;;;122      my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
;;;123    
;;;124      /* If multipass, check to see whether to use block smoothing on this pass */
;;;125      if (coef->pub.coef_arrays != NULL) {
;;;126        if (cinfo->do_block_smoothing && smoothing_ok(cinfo))
;;;127          coef->pub.decompress_data = decompress_smooth_data;
;;;128        else
;;;129          coef->pub.decompress_data = decompress_data;
;;;130      }
;;;131    #endif
;;;132      cinfo->output_iMCU_row = 0;
;;;133    }
000002  f8c0109c          STR      r1,[r0,#0x9c]
000006  4770              BX       lr
;;;134    
                          ENDP

⌨️ 快捷键说明

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