[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.17.2.3, Fri Apr 4 22:13:35 2003 UTC revision 1.24, Sun Sep 3 08:46:56 2006 UTC
# Line 3  Line 3 
3   *  XVID MPEG-4 VIDEO CODEC   *  XVID MPEG-4 VIDEO CODEC
4   *  - Bitstream reader/writer inlined functions and constants-   *  - Bitstream reader/writer inlined functions and constants-
5   *   *
6   *  Copyright (C) 2001-2003 - Peter Ross <pross@xvid.org>   *  Copyright (C) 2001-2003 Peter Ross <pross@xvid.org>
7   *   *
8   *  This file is part of XviD, a free MPEG-4 video encoder/decoder   *  This program is free software ; you can redistribute it and/or modify
9   *   *  it under the terms of the GNU General Public License as published by
  *  XviD is free software; you can redistribute it and/or modify it  
  *  under the terms of the GNU General Public License as published by  
10   *  the Free Software Foundation; either version 2 of the License, or   *  the Free Software Foundation; either version 2 of the License, or
11   *  (at your option) any later version.   *  (at your option) any later version.
12   *   *
# Line 60  Line 58 
58    
59  #define VIDOBJLAY_TYPE_SIMPLE                   1  #define VIDOBJLAY_TYPE_SIMPLE                   1
60  /*#define VIDOBJLAY_TYPE_SIMPLE_SCALABLE    2 */  /*#define VIDOBJLAY_TYPE_SIMPLE_SCALABLE    2 */
61  #define VIDOBJLAY_TYPE_CORE                             3  /*#define VIDOBJLAY_TYPE_CORE                           3 */
62  #define VIDOBJLAY_TYPE_MAIN                             4  /*#define VIDOBJLAY_TYPE_MAIN                           4 */
63  /*#define VIDOBJLAY_TYPE_NBIT                           5 */  /*#define VIDOBJLAY_TYPE_NBIT                           5 */
64  /*#define VIDOBJLAY_TYPE_ANIM_TEXT                      6 */  /*#define VIDOBJLAY_TYPE_ANIM_TEXT                      6 */
65  /*#define VIDOBJLAY_TYPE_ANIM_MESH                      7 */  /*#define VIDOBJLAY_TYPE_ANIM_MESH                      7 */
# Line 69  Line 67 
67  /*#define VIDOBJLAY_TYPE_STILL_SCALABLE         9 */  /*#define VIDOBJLAY_TYPE_STILL_SCALABLE         9 */
68  #define VIDOBJLAY_TYPE_ART_SIMPLE               10  #define VIDOBJLAY_TYPE_ART_SIMPLE               10
69  /*#define VIDOBJLAY_TYPE_CORE_SCALABLE          11 */  /*#define VIDOBJLAY_TYPE_CORE_SCALABLE          11 */
70  #define VIDOBJLAY_TYPE_ACE                              12  /*#define VIDOBJLAY_TYPE_ACE                            12 */
71  /*#define VIDOBJLAY_TYPE_SIMPLE_FBA                     13 */  /*#define VIDOBJLAY_TYPE_ADVANCED_SCALABLE_TEXTURE 13 */
72    /*#define VIDOBJLAY_TYPE_SIMPLE_FBA                     14 */
73    /*#define VIDEOJLAY_TYPE_SIMPLE_STUDIO    15*/
74    /*#define VIDEOJLAY_TYPE_CORE_STUDIO      16*/
75  #define VIDOBJLAY_TYPE_ASP              17  #define VIDOBJLAY_TYPE_ASP              17
76    /*#define VIDOBJLAY_TYPE_FGS              18*/
77    
78    
79  /*#define VIDOBJLAY_AR_SQUARE           1 */  /*#define VIDOBJLAY_AR_SQUARE           1 */
# Line 126  Line 128 
128  int BitstreamReadHeaders(Bitstream * bs,  int BitstreamReadHeaders(Bitstream * bs,
129                                                   DECODER * dec,                                                   DECODER * dec,
130                                                   uint32_t * rounding,                                                   uint32_t * rounding,
                                                  uint32_t * reduced_resolution,  
131                                                   uint32_t * quant,                                                   uint32_t * quant,
132                                                   uint32_t * fcode_forward,                                                   uint32_t * fcode_forward,
133                                                   uint32_t * fcode_backward,                                                   uint32_t * fcode_backward,
# Line 135  Line 136 
136    
137    
138  void BitstreamWriteVolHeader(Bitstream * const bs,  void BitstreamWriteVolHeader(Bitstream * const bs,
139                                                           const MBParam * pParam);                                                           const MBParam * pParam,
140                                                             const FRAMEINFO * const frame);
141    
142  void BitstreamWriteVopHeader(Bitstream * const bs,  void BitstreamWriteVopHeader(Bitstream * const bs,
143                                                           const MBParam * pParam,                                                           const MBParam * pParam,
144                                                           const FRAMEINFO * const frame,                                                           const FRAMEINFO * const frame,
145                                                           int vop_coded);                                                           int vop_coded,
146                                                             unsigned int quant);
147    
148  void BitstreamWriteUserData(Bitstream * const bs,  void BitstreamWriteUserData(Bitstream * const bs,
149                                                          uint8_t * data,                                                          const char *data,
150                                                          const int length);                                                          const unsigned int length);
151    
152    void
153    BitstreamWriteEndOfSequence(Bitstream * const bs);
154    
155    void
156    BitstreamWriteGroupOfVopHeader(Bitstream * const bs,
157                                   const MBParam * pParam,
158                                   uint32_t is_closed_gov);
159    
160    void write_video_packet_header(Bitstream * const bs,
161                                   const MBParam * pParam,
162                                   const FRAMEINFO * const frame,
163                                   int mbnum);
164    
165    /*****************************************************************************
166     * Bitstream
167     ****************************************************************************/
168    
169    /* Input buffer should be readable as full chunks of 8bytes, including
170    the end of the buffer. Padding might be appropriate. If only chunks
171    of 4bytes are applicable, define XVID_SAFE_BS_TAIL. Note that this will
172    slow decoding, so consider this as a last-resort solution */
173    /* #define XVID_SAFE_BS_TAIL */
174    
175  /* initialise bitstream structure */  /* initialise bitstream structure */
176    
# Line 177  Line 203 
203  #endif  #endif
204          bs->bufb = tmp;          bs->bufb = tmp;
205    
         bs->buf = 0;  
206          bs->pos = bs->initpos = bitpos*8;          bs->pos = bs->initpos = bitpos*8;
207            /* preserve the intervening bytes */
208            if (bs->initpos > 0)
209                    bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos));
210            else
211                    bs->buf = 0;
212          bs->length = length;          bs->length = length;
213  }  }
214    
# Line 204  Line 234 
234  #endif  #endif
235          bs->bufb = tmp;          bs->bufb = tmp;
236    
237            /* preserve the intervening bytes */
238            if (bs->initpos > 0)
239                    bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos));
240            else
241          bs->buf = 0;          bs->buf = 0;
242          bs->pos = bs->initpos;          bs->pos = bs->initpos;
243  }  }
# Line 239  Line 273 
273                  uint32_t tmp;                  uint32_t tmp;
274    
275                  bs->bufa = bs->bufb;                  bs->bufa = bs->bufb;
276    #if defined(XVID_SAFE_BS_TAIL)
277                    if (bs->tail<(bs->start+((bs->length+3)>>2)))
278    #endif
279                    {
280                  tmp = *((uint32_t *) bs->tail + 2);                  tmp = *((uint32_t *) bs->tail + 2);
281  #ifndef ARCH_IS_BIG_ENDIAN  #ifndef ARCH_IS_BIG_ENDIAN
282                  BSWAP(tmp);                  BSWAP(tmp);
283  #endif  #endif
284                  bs->bufb = tmp;                  bs->bufb = tmp;
285                  bs->tail++;                  bs->tail++;
286                    }
287    #if defined(XVID_SAFE_BS_TAIL)
288                    else {
289                            bs->bufb = 0;
290                    }
291    #endif
292                  bs->pos -= 32;                  bs->pos -= 32;
293          }          }
294  }  }

Legend:
Removed from v.1.17.2.3  
changed lines
  Added in v.1.24

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