[cvs] / xvidcore / src / bitstream / bitstream.h Repository:
ViewVC logotype

Diff of /xvidcore/src/bitstream/bitstream.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.22.2.1, Mon Jul 10 15:05:30 2006 UTC revision 1.26, Tue Dec 28 19:19:43 2010 UTC
# Line 137  Line 137 
137    
138  void BitstreamWriteVolHeader(Bitstream * const bs,  void BitstreamWriteVolHeader(Bitstream * const bs,
139                                                           const MBParam * pParam,                                                           const MBParam * pParam,
140                                                           const FRAMEINFO * const frame);                                                           const FRAMEINFO * const frame,
141                                                             const int num_slices);
142    
143  void BitstreamWriteVopHeader(Bitstream * const bs,  void BitstreamWriteVopHeader(Bitstream * const bs,
144                                                           const MBParam * pParam,                                                           const MBParam * pParam,
# Line 162  Line 163 
163                                 const FRAMEINFO * const frame,                                 const FRAMEINFO * const frame,
164                                 int mbnum);                                 int mbnum);
165    
166    /*****************************************************************************
167     * Bitstream
168     ****************************************************************************/
169    
170    /* Input buffer should be readable as full chunks of 8bytes, including
171    the end of the buffer. Padding might be appropriate. If only chunks
172    of 4bytes are applicable, define XVID_SAFE_BS_TAIL. Note that this will
173    slow decoding, so consider this as a last-resort solution */
174    /* #define XVID_SAFE_BS_TAIL */
175    
176  /* initialise bitstream structure */  /* initialise bitstream structure */
177    
178  static void __inline  static void __inline
# Line 193  Line 204 
204  #endif  #endif
205          bs->bufb = tmp;          bs->bufb = tmp;
206    
207            bs->pos = bs->initpos = (uint32_t) bitpos*8;
208          /* preserve the intervening bytes */          /* preserve the intervening bytes */
209          if (bs->initpos > 0)          if (bs->initpos > 0)
210                  bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos));                  bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos));
211          else          else
212                  bs->buf = 0;                  bs->buf = 0;
   
         bs->pos = bs->initpos = bitpos*8;  
213          bs->length = length;          bs->length = length;
214  }  }
215    
# Line 230  Line 240 
240                  bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos));                  bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos));
241          else          else
242                  bs->buf = 0;                  bs->buf = 0;
   
243          bs->pos = bs->initpos;          bs->pos = bs->initpos;
244  }  }
245    
# Line 265  Line 274 
274                  uint32_t tmp;                  uint32_t tmp;
275    
276                  bs->bufa = bs->bufb;                  bs->bufa = bs->bufb;
277    #if defined(XVID_SAFE_BS_TAIL)
278                    if (bs->tail<(bs->start+((bs->length+3)>>2)))
279    #endif
280                    {
281                  tmp = *((uint32_t *) bs->tail + 2);                  tmp = *((uint32_t *) bs->tail + 2);
282  #ifndef ARCH_IS_BIG_ENDIAN  #ifndef ARCH_IS_BIG_ENDIAN
283                  BSWAP(tmp);                  BSWAP(tmp);
284  #endif  #endif
285                  bs->bufb = tmp;                  bs->bufb = tmp;
286                  bs->tail++;                  bs->tail++;
287                    }
288    #if defined(XVID_SAFE_BS_TAIL)
289                    else {
290                            bs->bufb = 0;
291                    }
292    #endif
293                  bs->pos -= 32;                  bs->pos -= 32;
294          }          }
295  }  }

Legend:
Removed from v.1.22.2.1  
changed lines
  Added in v.1.26

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4