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

📄 jdapistd.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000006  28ca              CMP      r0,#0xca
000008  d10b              BNE      |L4.34|
;;;41         /* First call: initialize master control, select active modules */
;;;42         jinit_master_decompress(cinfo);
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       jinit_master_decompress
;;;43         if (cinfo->buffered_image) {
000010  6c20              LDR      r0,[r4,#0x40]
000012  b118              CBZ      r0,|L4.28|
;;;44           /* No more work here; expecting jpeg_start_output next */
;;;45           cinfo->global_state = DSTATE_BUFIMAGE;
000014  20cf              MOVS     r0,#0xcf
;;;46           return TRUE;
000016  6160              STR      r0,[r4,#0x14]
000018  2001              MOVS     r0,#1
                  |L4.26|
;;;47         }
;;;48         cinfo->global_state = DSTATE_PRELOAD;
;;;49       }
;;;50       if (cinfo->global_state == DSTATE_PRELOAD) {
;;;51         /* If file has multiple scans, absorb them all into the coef buffer */
;;;52         if (cinfo->inputctl->has_multiple_scans) {
;;;53     #ifdef D_MULTISCAN_FILES_SUPPORTED
;;;54           while (1) {
;;;55     	int retcode;
;;;56     	/* Call progress monitor hook if present */
;;;57     	if (cinfo->progress != NULL)
;;;58     	  (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
;;;59     	/* Absorb some more input */
;;;60     	retcode = (*cinfo->inputctl->consume_input) (cinfo);
;;;61     	if (retcode == JPEG_SUSPENDED)
;;;62     	  return FALSE;
;;;63     	if (retcode == JPEG_REACHED_EOI)
;;;64     	  break;
;;;65     	/* Advance progress counter if appropriate */
;;;66     	if (cinfo->progress != NULL &&
;;;67     	    (retcode == JPEG_ROW_COMPLETED || retcode == JPEG_REACHED_SOS)) {
;;;68     	  if (++cinfo->progress->pass_counter >= cinfo->progress->pass_limit) {
;;;69     	    /* jdmaster underestimated number of scans; ratchet up one scan */
;;;70     	    cinfo->progress->pass_limit += (long) cinfo->total_iMCU_rows;
;;;71     	  }
;;;72     	}
;;;73           }
;;;74     #else
;;;75           ERREXIT(cinfo, JERR_NOT_COMPILED);
;;;76     #endif /* D_MULTISCAN_FILES_SUPPORTED */
;;;77         }
;;;78         cinfo->output_scan_number = cinfo->input_scan_number;
;;;79       } else if (cinfo->global_state != DSTATE_PRESCAN)
;;;80         ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
;;;81       /* Perform any dummy output passes, and set up for the final pass */
;;;82       return output_pass_setup(cinfo);
;;;83     }
00001a  bd10              POP      {r4,pc}
                  |L4.28|
00001c  20cb              MOVS     r0,#0xcb              ;48
00001e  6160              STR      r0,[r4,#0x14]         ;48
000020  e001              B        |L4.38|
                  |L4.34|
000022  28cb              CMP      r0,#0xcb              ;50
000024  d129              BNE      |L4.122|
                  |L4.38|
000026  f8d401b4          LDR      r0,[r4,#0x1b4]        ;52
00002a  6900              LDR      r0,[r0,#0x10]         ;52
00002c  b300              CBZ      r0,|L4.112|
                  |L4.46|
00002e  68a0              LDR      r0,[r4,#8]            ;57
000030  b110              CBZ      r0,|L4.56|
000032  6801              LDR      r1,[r0,#0]            ;58
000034  4620              MOV      r0,r4                 ;58
000036  4788              BLX      r1                    ;58
                  |L4.56|
000038  f8d401b4          LDR      r0,[r4,#0x1b4]        ;60
00003c  6801              LDR      r1,[r0,#0]            ;60
00003e  4620              MOV      r0,r4                 ;60
000040  4788              BLX      r1                    ;60
000042  2800              CMP      r0,#0                 ;61
000044  d0e9              BEQ      |L4.26|
000046  2802              CMP      r0,#2                 ;63
000048  d012              BEQ      |L4.112|
00004a  68a1              LDR      r1,[r4,#8]            ;66
00004c  2900              CMP      r1,#0                 ;66
00004e  d0ee              BEQ      |L4.46|
000050  2803              CMP      r0,#3                 ;67
000052  d001              BEQ      |L4.88|
000054  2801              CMP      r0,#1                 ;67
000056  d1ea              BNE      |L4.46|
                  |L4.88|
000058  6848              LDR      r0,[r1,#4]            ;68
00005a  1c40              ADDS     r0,r0,#1              ;68
00005c  6048              STR      r0,[r1,#4]            ;68
00005e  68a1              LDR      r1,[r4,#8]            ;68
000060  688a              LDR      r2,[r1,#8]            ;68
000062  4290              CMP      r0,r2                 ;68
000064  dbe3              BLT      |L4.46|
000066  f8d40140          LDR      r0,[r4,#0x140]        ;70
00006a  4410              ADD      r0,r0,r2              ;70
00006c  6088              STR      r0,[r1,#8]            ;70
00006e  e7de              B        |L4.46|
                  |L4.112|
000070  f8d40090          LDR      r0,[r4,#0x90]         ;78
000074  f8c40098          STR      r0,[r4,#0x98]         ;78
000078  e00b              B        |L4.146|
                  |L4.122|
00007a  28cc              CMP      r0,#0xcc              ;79
00007c  d009              BEQ      |L4.146|
00007e  6821              LDR      r1,[r4,#0]            ;80
000080  2014              MOVS     r0,#0x14              ;80
000082  6148              STR      r0,[r1,#0x14]         ;80
000084  6821              LDR      r1,[r4,#0]            ;80
000086  6960              LDR      r0,[r4,#0x14]         ;80
000088  6188              STR      r0,[r1,#0x18]         ;80
00008a  6820              LDR      r0,[r4,#0]            ;80
00008c  6801              LDR      r1,[r0,#0]            ;80
00008e  4620              MOV      r0,r4                 ;80
000090  4788              BLX      r1                    ;80
                  |L4.146|
000092  4620              MOV      r0,r4                 ;82
000094  e8bd4010          POP      {r4,lr}               ;82
000098  f7ffbffe          B.W      output_pass_setup
;;;84     
                          ENDP


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

                  jpeg_start_output PROC
;;;227    GLOBAL(boolean)
;;;228    jpeg_start_output (j_decompress_ptr cinfo, int scan_number)
000000  b570              PUSH     {r4-r6,lr}
;;;229    {
000002  4604              MOV      r4,r0
;;;230      if (cinfo->global_state != DSTATE_BUFIMAGE &&
000004  6940              LDR      r0,[r0,#0x14]
000006  460d              MOV      r5,r1                 ;229
000008  28cf              CMP      r0,#0xcf
00000a  d00b              BEQ      |L5.36|
;;;231          cinfo->global_state != DSTATE_PRESCAN)
00000c  28cc              CMP      r0,#0xcc
00000e  d009              BEQ      |L5.36|
;;;232        ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
000010  6821              LDR      r1,[r4,#0]
000012  2014              MOVS     r0,#0x14
000014  6148              STR      r0,[r1,#0x14]
000016  6821              LDR      r1,[r4,#0]
000018  6960              LDR      r0,[r4,#0x14]
00001a  6188              STR      r0,[r1,#0x18]
00001c  6820              LDR      r0,[r4,#0]
00001e  6801              LDR      r1,[r0,#0]
000020  4620              MOV      r0,r4
000022  4788              BLX      r1
                  |L5.36|
;;;233      /* Limit scan number to valid range */
;;;234      if (scan_number <= 0)
000024  2d00              CMP      r5,#0
000026  dc00              BGT      |L5.42|
;;;235        scan_number = 1;
000028  2501              MOVS     r5,#1
                  |L5.42|
;;;236      if (cinfo->inputctl->eoi_reached &&
00002a  f8d401b4          LDR      r0,[r4,#0x1b4]
00002e  6940              LDR      r0,[r0,#0x14]
000030  b120              CBZ      r0,|L5.60|
;;;237          scan_number > cinfo->input_scan_number)
000032  f8d40090          LDR      r0,[r4,#0x90]
000036  42a8              CMP      r0,r5
000038  da00              BGE      |L5.60|
;;;238        scan_number = cinfo->input_scan_number;
00003a  4605              MOV      r5,r0
                  |L5.60|
;;;239      cinfo->output_scan_number = scan_number;
;;;240      /* Perform any dummy output passes, and set up for the real pass */
;;;241      return output_pass_setup(cinfo);
00003c  4620              MOV      r0,r4
00003e  f8c45098          STR      r5,[r4,#0x98]
000042  e8bd4070          POP      {r4-r6,lr}
000046  f7ffbffe          B.W      output_pass_setup
;;;242    }
;;;243    
                          ENDP


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

                  output_pass_setup PROC
;;;94     LOCAL(boolean)
;;;95     output_pass_setup (j_decompress_ptr cinfo)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;96     {
000004  4604              MOV      r4,r0
;;;97       if (cinfo->global_state != DSTATE_PRESCAN) {
000006  6940              LDR      r0,[r0,#0x14]
;;;98         /* First call: do pass setup */
;;;99         (*cinfo->master->prepare_for_output_pass) (cinfo);
;;;100        cinfo->output_scanline = 0;
000008  2500              MOVS     r5,#0
00000a  28cc              CMP      r0,#0xcc              ;97
00000c  d036              BEQ      |L6.124|
00000e  f8d401a4          LDR      r0,[r4,#0x1a4]        ;99
000012  6801              LDR      r1,[r0,#0]            ;99
000014  4620              MOV      r0,r4                 ;99
000016  4788              BLX      r1                    ;99
;;;101        cinfo->global_state = DSTATE_PRESCAN;
000018  20cc              MOVS     r0,#0xcc
00001a  f8c4508c          STR      r5,[r4,#0x8c]
00001e  6160              STR      r0,[r4,#0x14]
000020  e02c              B        |L6.124|
                  |L6.34|
;;;102      }
;;;103      /* Loop over any required dummy passes */
;;;104      while (cinfo->master->is_dummy_pass) {
;;;105    #ifdef QUANT_2PASS_SUPPORTED
;;;106        /* Crank through the dummy pass */
;;;107        while (cinfo->output_scanline < cinfo->output_height) {
;;;108          JDIMENSION last_scanline;
;;;109          /* Call progress monitor hook if present */
;;;110          if (cinfo->progress != NULL) {
000022  68a0              LDR      r0,[r4,#8]
000024  b138              CBZ      r0,|L6.54|
;;;111    	cinfo->progress->pass_counter = (long) cinfo->output_scanline;
;;;112    	cinfo->progress->pass_limit = (long) cinfo->output_height;
000026  6041              STR      r1,[r0,#4]
000028  68a1              LDR      r1,[r4,#8]
00002a  6f60              LDR      r0,[r4,#0x74]
;;;113    	(*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
00002c  6088              STR      r0,[r1,#8]
00002e  68a0              LDR      r0,[r4,#8]
000030  6801              LDR      r1,[r0,#0]
000032  4620              MOV      r0,r4
000034  4788              BLX      r1
                  |L6.54|
;;;114          }
;;;115          /* Process some data */
;;;116          last_scanline = cinfo->output_scanline;
;;;117          (*cinfo->main->process_data) (cinfo, (JSAMPARRAY) NULL,
000036  f8d401a8          LDR      r0,[r4,#0x1a8]
00003a  2300              MOVS     r3,#0
00003c  6846              LDR      r6,[r0,#4]
00003e  f8d4708c          LDR      r7,[r4,#0x8c]
000042  f104028c          ADD      r2,r4,#0x8c
000046  4619              MOV      r1,r3
000048  4620              MOV      r0,r4
00004a  47b0              BLX      r6
;;;118    				    &cinfo->output_scanline, (JDIMENSION) 0);
;;;119          if (cinfo->output_scanline == last_scanline)
00004c  f8d4008c          LDR      r0,[r4,#0x8c]
000050  42b8              CMP      r0,r7
000052  d102              BNE      |L6.90|
;;;120    	return FALSE;		/* No progress made, must suspend */
000054  2000              MOVS     r0,#0
                  |L6.86|
;;;121        }
;;;122        /* Finish up dummy pass, and set up for another one */
;;;123        (*cinfo->master->finish_output_pass) (cinfo);
;;;124        (*cinfo->master->prepare_for_output_pass) (cinfo);
;;;125        cinfo->output_scanline = 0;
;;;126    #else
;;;127        ERREXIT(cinfo, JERR_NOT_COMPILED);
;;;128    #endif /* QUANT_2PASS_SUPPORTED */
;;;129      }
;;;130      /* Ready for application to drive output pass through
;;;131       * jpeg_read_scanlines or jpeg_read_raw_data.
;;;132       */
;;;133      cinfo->global_state = cinfo->raw_data_out ? DSTATE_RAW_OK : DSTATE_SCANNING;
;;;134      return TRUE;
;;;135    }
000056  e8bd81f0          POP      {r4-r8,pc}
                  |L6.90|
00005a  f8d4108c          LDR      r1,[r4,#0x8c]         ;107
00005e  6f60              LDR      r0,[r4,#0x74]         ;107
000060  4281              CMP      r1,r0                 ;107
000062  d3de              BCC      |L6.34|
000064  f8d401a4          LDR      r0,[r4,#0x1a4]        ;123
000068  6841              LDR      r1,[r0,#4]            ;123
00006a  4620              MOV      r0,r4                 ;123
00006c  4788              BLX      r1                    ;123
00006e  f8d401a4          LDR      r0,[r4,#0x1a4]        ;124
000072  6801              LDR      r1,[r0,#0]            ;124
000074  4620              MOV      r0,r4                 ;124
000076  4788              BLX      r1                    ;124
000078  f8c4508c          STR      r5,[r4,#0x8c]         ;125
                  |L6.124|
00007c  f8d401a4          LDR      r0,[r4,#0x1a4]        ;104
000080  6880              LDR      r0,[r0,#8]            ;104
000082  2800              CMP      r0,#0                 ;104
000084  d1e9              BNE      |L6.90|
000086  6c61              LDR      r1,[r4,#0x44]         ;133
000088  20ce              MOVS     r0,#0xce              ;133
00008a  b901              CBNZ     r1,|L6.142|
00008c  20cd              MOVS     r0,#0xcd              ;133
                  |L6.142|
00008e  6160              STR      r0,[r4,#0x14]         ;134
000090  2001              MOVS     r0,#1                 ;134
000092  e7e0              B        |L6.86|
;;;136    
                          ENDP

⌨️ 快捷键说明

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