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

📄 img_mpeg2_vld_inter.h64

📁 dm642函数库
💻 H64
📖 第 1 页 / 共 2 页
字号:
*       accessed by this routine. If the layout is changed, the             *
*       corresponding changes have to be made in the assembly code too.     *
*                                                                           *
*       The routine sets the fault flag Mpeg2v.fault to 1 if an invalid     *
*       VLC code was encountered or the total run went beyond 63. In        *
*       theses cases the decoder has to resynchronize.                      *
*                                                                           *
*       The required lookup tables for this routine are provided in         *
*       IMGLIB and are linked in automatically when linking against         *
*       IMGLIB.                                                             *
*                                                                           *
*       Before calling the routine the bitstream varaibles in Mpeg2v        *
*       have to be initialized. If bsbuf is a circular buffer and bsptr     *
*       contains the number of bits in the buffer that already have         *
*       been consumed, then next_wptr, bptr, word1, word2, top0 and         *
*       top1 are initialized as follows:                                    *
*                                                                           *
*       1. nextwptr: bsptr may not be a multiple of 32, therefore obtain    *
*       the next lower multiple of 32.                                      *
*                                                                           *
*           next_wptr = (bsptr >> 5);                                       *
*                                                                           *
*       2. bptr: bptr is the bit pointer which points to the current        *
*       bit WITHIN the word pointed to by next_wptr.                        *
*                                                                           *
*           bptr = bsptr & 31;                                              *
*           bptr_cmpl = 32 - bptr;                                          *
*                                                                           *
*       3. word1 and word2: read next 3 words from the bitstream buffer     *
*       (word0 is a temporary variable). bsbuf_words is the size of the     *
*       bitstream buffer in words.                                          *
*                                                                           *
*           word0 = bsbuf[next_wptr];                                       *
*           next_wptr = (next_wptr + 1) & (bsbuf_words-1);                  *
*                                                                           *
*           word1 = bsbuf[next_wptr];                                       *
*           next_wptr = (next_wptr + 1) & (bsbuf_words-1);                  *
*                                                                           *
*           word2 = bsbuf[next_wptr];                                       *
*           next_wptr = (next_wptr + 1) & (bsbuf_words-1);                  *
*                                                                           *
*       4. top0 and top1: Shift words word0, word1, word2 by bptr to the    *
*       left so that the current bit becomes the MSB in word0. word0 can    *
*       simply be shifted by bptr; the then empty LSBs of word0 have to be  *
*       filled with the MSBs of word1. To do that the required MSBs are     *
*       brought into the position of empty LSBs of word0 by shifting word1  *
*       to the right by (32-bptr). The result is then copied into word0 by  *
*       an addition. Rather than overwriting word0, top0 is used to hold    *
*       the new bit aligned word. The same procedure is used to obtain      *
*       top1. top0 and top1 contain the next 64 bits of the bitstream.      *
*                                                                           *
*           s1 = word0 << bptr;                                             *
*           s2 = word1 >> bptr_cmpl;  /* unsigned right-shift */            *
*           top0 = s1 + s2;                                                 *
*                                                                           *
*           s3 = word1 << bptr;                                             *
*           s4 = word2 >> bptr_cmpl;  /* unsigned right-shift */            *
*           top1 = s3 + s4;                                                 *
*                                                                           *
*       Note that the routine returns the updated state of the bitstream    *
*       buffer variables, top0, top1, word1, word2, bptr and next_wptr. If  *
*       all other functions which access the bitstream in a decoder system  *
*       maintain the buffer variables in the same way, then the above       *
*       initialization procedure has to be performed only once at the       *
*       beginning.                                                          *
*                                                                           *
*                                                                           *
*   TECHNIQUES                                                              *
*       The instruction NORM is used to detect the number of leading zeros  *
*       or ones in a code word. This value together with additional bits    *
*       extracted from the codeword is then used as an index into look-up   *
*       tables to determine the length, run, level and sign. Escape code    *
*       sequences are directly extracted from the code word.                *
*                                                                           *
*   ASSUMPTIONS                                                             *
*       The bitstream must be stored in memory in 32-bit words which are    *
*       in little endian byte order.                                        *
*                                                                           *
*       Wptr is allowed to overrun once (to detect total run overrun), so   *
*       maximum overrun that can occur is 66 (Error mark). Therefore,       *
*       in memory 66+1 halfwords behind the weighting matrix should be      *
*       valid (e.g. peripherals). No memory is overwritten,                 *
*       only loads occurr.                                                  *
*                                                                           *
*       Note that the AMR register is set to zero on exit.                  *
*                                                                           *
*   NOTES                                                                   *
*       This code is little ENDIAN.                                         *
*       This code is interrupt-tolerant but not interruptible.              *
*                                                                           *
*   MEMORY NOTES                                                            *
*       No bank conflicts                                                   *
*                                                                           *
*   CYCLES                                                                  *
*       10 * (S - CB) + 37 * CB + 15 * NCB + 34                             *
*       where S:   Number of symbols in MB, CB: Number of coded blocks,     *
*             NCB: Number of not-coded blocks, and CB+NCB=6                 *
*                                                                           *
*   CODE SIZE                                                               *
*       1248 bytes                                                          *
*                                                                           *
*   MEMORY REQUIREMENTS                                                     *
*       1792 bytes for the lookup tables                                    *
*       (can be shared with mpeg2_vld_intra)                                *
*                                                                           *
*                                                                           *
* ------------------------------------------------------------------------- *
*             Copyright (c) 2003 Texas Instruments, Incorporated.           *
*                            All Rights Reserved.                           *
* ========================================================================= *

        .global _IMG_mpeg2_vld_inter

* ========================================================================= *
*   End of file:  img_mpeg2_vld_inter.h64                                   *
* ------------------------------------------------------------------------- *
*             Copyright (c) 2003 Texas Instruments, Incorporated.           *
*                            All Rights Reserved.                           *
* ========================================================================= *

⌨️ 快捷键说明

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