📄 img_mpeg2_vld_inter.h64
字号:
* 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 + -