--- bitstream.h 2003/11/19 15:46:55 1.17.2.8 +++ bitstream.h 2006/04/14 07:24:47 1.23 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: bitstream.h,v 1.17.2.8 2003/11/19 15:46:55 syskin Exp $ + * $Id: bitstream.h,v 1.23 2006/04/14 07:24:47 Skal Exp $ * ****************************************************************************/ @@ -128,7 +128,6 @@ int BitstreamReadHeaders(Bitstream * bs, DECODER * dec, uint32_t * rounding, - uint32_t * reduced_resolution, uint32_t * quant, uint32_t * fcode_forward, uint32_t * fcode_backward, @@ -137,7 +136,8 @@ void BitstreamWriteVolHeader(Bitstream * const bs, - const MBParam * pParam); + const MBParam * pParam, + const FRAMEINFO * const frame); void BitstreamWriteVopHeader(Bitstream * const bs, const MBParam * pParam, @@ -146,8 +146,21 @@ unsigned int quant); void BitstreamWriteUserData(Bitstream * const bs, - uint8_t * data, - const int length); + const char *data, + const unsigned int length); + +void +BitstreamWriteEndOfSequence(Bitstream * const bs); + +void +BitstreamWriteGroupOfVopHeader(Bitstream * const bs, + const MBParam * pParam, + uint32_t is_closed_gov); + +void write_video_packet_header(Bitstream * const bs, + const MBParam * pParam, + const FRAMEINFO * const frame, + int mbnum); /* initialise bitstream structure */ @@ -180,8 +193,12 @@ #endif bs->bufb = tmp; - bs->buf = 0; bs->pos = bs->initpos = bitpos*8; + /* preserve the intervening bytes */ + if (bs->initpos > 0) + bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos)); + else + bs->buf = 0; bs->length = length; } @@ -207,7 +224,11 @@ #endif bs->bufb = tmp; - bs->buf = 0; + /* preserve the intervening bytes */ + if (bs->initpos > 0) + bs->buf = bs->bufa & (0xffffffff << (32 - bs->initpos)); + else + bs->buf = 0; bs->pos = bs->initpos; }