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

📄 jdapimin.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:

                  jpeg_finish_decompress PROC
;;;368    GLOBAL(boolean)
;;;369    jpeg_finish_decompress (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;370    {
000002  4604              MOV      r4,r0
;;;371      if ((cinfo->global_state == DSTATE_SCANNING ||
000004  6940              LDR      r0,[r0,#0x14]
;;;372           cinfo->global_state == DSTATE_RAW_OK) && ! cinfo->buffered_image) {
;;;373        /* Terminate final pass of non-buffered mode */
;;;374        if (cinfo->output_scanline < cinfo->output_height)
;;;375          ERREXIT(cinfo, JERR_TOO_LITTLE_DATA);
;;;376        (*cinfo->master->finish_output_pass) (cinfo);
;;;377        cinfo->global_state = DSTATE_STOPPING;
000006  25d2              MOVS     r5,#0xd2
000008  28cd              CMP      r0,#0xcd              ;371
00000a  d001              BEQ      |L6.16|
00000c  28ce              CMP      r0,#0xce              ;372
00000e  d113              BNE      |L6.56|
                  |L6.16|
000010  6c21              LDR      r1,[r4,#0x40]         ;372
000012  b989              CBNZ     r1,|L6.56|
000014  6f61              LDR      r1,[r4,#0x74]         ;374
000016  f8d4008c          LDR      r0,[r4,#0x8c]         ;374
00001a  4288              CMP      r0,r1                 ;374
00001c  d206              BCS      |L6.44|
00001e  6821              LDR      r1,[r4,#0]            ;375
000020  2043              MOVS     r0,#0x43              ;375
000022  6148              STR      r0,[r1,#0x14]         ;375
000024  6820              LDR      r0,[r4,#0]            ;375
000026  6801              LDR      r1,[r0,#0]            ;375
000028  4620              MOV      r0,r4                 ;375
00002a  4788              BLX      r1                    ;375
                  |L6.44|
00002c  f8d401a4          LDR      r0,[r4,#0x1a4]        ;376
000030  6841              LDR      r1,[r0,#4]            ;376
000032  4620              MOV      r0,r4                 ;376
000034  4788              BLX      r1                    ;376
000036  e001              B        |L6.60|
                  |L6.56|
;;;378      } else if (cinfo->global_state == DSTATE_BUFIMAGE) {
000038  28cf              CMP      r0,#0xcf
00003a  d101              BNE      |L6.64|
                  |L6.60|
;;;379        /* Finishing after a buffered-image operation */
;;;380        cinfo->global_state = DSTATE_STOPPING;
00003c  6165              STR      r5,[r4,#0x14]
00003e  e011              B        |L6.100|
                  |L6.64|
;;;381      } else if (cinfo->global_state != DSTATE_STOPPING) {
000040  28d2              CMP      r0,#0xd2
000042  d00f              BEQ      |L6.100|
;;;382        /* STOPPING = repeat call after a suspension, anything else is error */
;;;383        ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
000044  6821              LDR      r1,[r4,#0]
000046  2014              MOVS     r0,#0x14
000048  6148              STR      r0,[r1,#0x14]
00004a  6821              LDR      r1,[r4,#0]
00004c  6960              LDR      r0,[r4,#0x14]
00004e  6188              STR      r0,[r1,#0x18]
000050  6820              LDR      r0,[r4,#0]
000052  6801              LDR      r1,[r0,#0]
000054  4620              MOV      r0,r4
000056  4788              BLX      r1
000058  e004              B        |L6.100|
                  |L6.90|
;;;384      }
;;;385      /* Read until EOI */
;;;386      while (! cinfo->inputctl->eoi_reached) {
;;;387        if ((*cinfo->inputctl->consume_input) (cinfo) == JPEG_SUSPENDED)
00005a  6801              LDR      r1,[r0,#0]
00005c  4620              MOV      r0,r4
00005e  4788              BLX      r1
000060  2800              CMP      r0,#0
000062  d00c              BEQ      |L6.126|
                  |L6.100|
000064  f8d401b4          LDR      r0,[r4,#0x1b4]        ;386
000068  6941              LDR      r1,[r0,#0x14]         ;386
00006a  2900              CMP      r1,#0                 ;386
00006c  d0f5              BEQ      |L6.90|
;;;388          return FALSE;		/* Suspend, come back later */
;;;389      }
;;;390      /* Do final cleanup */
;;;391      (*cinfo->src->term_source) (cinfo);
00006e  69a0              LDR      r0,[r4,#0x18]
000070  6981              LDR      r1,[r0,#0x18]
000072  4620              MOV      r0,r4
000074  4788              BLX      r1
;;;392      /* We can use jpeg_abort to release memory and reset global_state */
;;;393      jpeg_abort((j_common_ptr) cinfo);
000076  4620              MOV      r0,r4
000078  f7fffffe          BL       jpeg_abort
;;;394      return TRUE;
00007c  2001              MOVS     r0,#1
                  |L6.126|
;;;395    }
00007e  bd70              POP      {r4-r6,pc}
                          ENDP


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

                  jpeg_has_multiple_scans PROC
;;;348    GLOBAL(boolean)
;;;349    jpeg_has_multiple_scans (j_decompress_ptr cinfo)
000000  b510              PUSH     {r4,lr}
;;;350    {
000002  4604              MOV      r4,r0
;;;351      /* Only valid after jpeg_read_header completes */
;;;352      if (cinfo->global_state < DSTATE_READY ||
000004  6940              LDR      r0,[r0,#0x14]
000006  38ca              SUBS     r0,r0,#0xca
000008  2809              CMP      r0,#9
00000a  d309              BCC      |L7.32|
;;;353          cinfo->global_state > DSTATE_STOPPING)
;;;354        ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
00000c  6821              LDR      r1,[r4,#0]
00000e  2014              MOVS     r0,#0x14
000010  6148              STR      r0,[r1,#0x14]
000012  6821              LDR      r1,[r4,#0]
000014  6960              LDR      r0,[r4,#0x14]
000016  6188              STR      r0,[r1,#0x18]
000018  6820              LDR      r0,[r4,#0]
00001a  6801              LDR      r1,[r0,#0]
00001c  4620              MOV      r0,r4
00001e  4788              BLX      r1
                  |L7.32|
;;;355      return cinfo->inputctl->has_multiple_scans;
000020  f8d401b4          LDR      r0,[r4,#0x1b4]
000024  6900              LDR      r0,[r0,#0x10]
;;;356    }
000026  bd10              POP      {r4,pc}
;;;357    
                          ENDP


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

                  jpeg_input_complete PROC
;;;333    GLOBAL(boolean)
;;;334    jpeg_input_complete (j_decompress_ptr cinfo)
000000  b510              PUSH     {r4,lr}
;;;335    {
000002  4604              MOV      r4,r0
;;;336      /* Check for valid jpeg object */
;;;337      if (cinfo->global_state < DSTATE_START ||
000004  6940              LDR      r0,[r0,#0x14]
000006  38c8              SUBS     r0,r0,#0xc8
000008  280b              CMP      r0,#0xb
00000a  d309              BCC      |L8.32|
;;;338          cinfo->global_state > DSTATE_STOPPING)
;;;339        ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
00000c  6821              LDR      r1,[r4,#0]
00000e  2014              MOVS     r0,#0x14
000010  6148              STR      r0,[r1,#0x14]
000012  6821              LDR      r1,[r4,#0]
000014  6960              LDR      r0,[r4,#0x14]
000016  6188              STR      r0,[r1,#0x18]
000018  6820              LDR      r0,[r4,#0]
00001a  6801              LDR      r1,[r0,#0]
00001c  4620              MOV      r0,r4
00001e  4788              BLX      r1
                  |L8.32|
;;;340      return cinfo->inputctl->eoi_reached;
000020  f8d401b4          LDR      r0,[r4,#0x1b4]
000024  6940              LDR      r0,[r0,#0x14]
;;;341    }
000026  bd10              POP      {r4,pc}
;;;342    
                          ENDP


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

                  jpeg_read_header PROC
;;;240    GLOBAL(int)
;;;241    jpeg_read_header (j_decompress_ptr cinfo, boolean require_image)
000000  b570              PUSH     {r4-r6,lr}
;;;242    {
000002  4604              MOV      r4,r0
;;;243      int retcode;
;;;244    
;;;245      if (cinfo->global_state != DSTATE_START &&
000004  6940              LDR      r0,[r0,#0x14]
000006  460d              MOV      r5,r1                 ;242
000008  28c8              CMP      r0,#0xc8
00000a  d00b              BEQ      |L9.36|
;;;246          cinfo->global_state != DSTATE_INHEADER)
00000c  28c9              CMP      r0,#0xc9
00000e  d009              BEQ      |L9.36|
;;;247        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
                  |L9.36|
;;;248    
;;;249      retcode = jpeg_consume_input(cinfo);
000024  4620              MOV      r0,r4
000026  f7fffffe          BL       jpeg_consume_input
00002a  0006              MOVS     r6,r0
;;;250    
;;;251      switch (retcode) {
00002c  d00e              BEQ      |L9.76|
00002e  2801              CMP      r0,#1
000030  d00c              BEQ      |L9.76|
000032  2802              CMP      r0,#2
000034  d10a              BNE      |L9.76|
;;;252      case JPEG_REACHED_SOS:
;;;253        retcode = JPEG_HEADER_OK;
;;;254        break;
;;;255      case JPEG_REACHED_EOI:
;;;256        if (require_image)		/* Complain if application wanted an image */
000036  b135              CBZ      r5,|L9.70|
;;;257          ERREXIT(cinfo, JERR_NO_IMAGE);
000038  6821              LDR      r1,[r4,#0]
00003a  2033              MOVS     r0,#0x33
00003c  6148              STR      r0,[r1,#0x14]
00003e  6820              LDR      r0,[r4,#0]
000040  6801              LDR      r1,[r0,#0]
000042  4620              MOV      r0,r4
000044  4788              BLX      r1
                  |L9.70|
;;;258        /* Reset to start state; it would be safer to require the application to
;;;259         * call jpeg_abort, but we can't change it now for compatibility reasons.
;;;260         * A side effect is to free any temporary memory (there shouldn't be any).
;;;261         */
;;;262        jpeg_abort((j_common_ptr) cinfo); /* sets state = DSTATE_START */
000046  4620              MOV      r0,r4
000048  f7fffffe          BL       jpeg_abort
                  |L9.76|
;;;263        retcode = JPEG_HEADER_TABLES_ONLY;
;;;264        break;
;;;265      case JPEG_SUSPENDED:
;;;266        /* no work */
;;;267        break;
;;;268      }
;;;269    
;;;270      return retcode;
00004c  4630              MOV      r0,r6
;;;271    }
00004e  bd70              POP      {r4-r6,pc}
;;;272    
                          ENDP

⌨️ 快捷键说明

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