Lines Matching defs:stream

45 AVCEnc_Status BitstreamEncInit(AVCEncBitstream *stream, uint8 *buffer, int buf_size,
48 if (stream == NULL || buffer == NULL || buf_size <= 0)
53 stream->bitstreamBuffer = buffer;
55 stream->buf_size = buf_size;
57 stream->write_pos = 0;
59 stream->count_zeros = 0;
61 stream->current_word = 0;
63 stream->bit_left = WORD_SIZE;
65 stream->overrunBuffer = overrunBuffer;
67 stream->oBSize = oBSize;
82 AVCEnc_Status AVCBitstreamSaveWord(AVCEncBitstream *stream)
89 num_bits = WORD_SIZE - stream->bit_left; /* must be multiple of 8 !!*/
91 if (stream->buf_size - stream->write_pos <= (num_bits >> 3) + 2) /* 2 more bytes for possible EPBS */
93 if (AVCENC_SUCCESS != AVCBitstreamUseOverrunBuffer(stream, (num_bits >> 3) + 2))
100 write_pnt = stream->bitstreamBuffer + stream->write_pos;
101 current_word = stream->current_word;
102 while (num_bits) /* no need to check stream->buf_size and stream->write_pos, taken care already */
106 if (stream->count_zeros == 2)
111 stream->write_pos++;
112 stream->count_zeros = 0;
118 stream->write_pos++;
119 stream->count_zeros = 0;
123 stream->count_zeros++;
125 stream->write_pos++;
130 stream->current_word = 0;
131 stream->bit_left = WORD_SIZE;
145 AVCEnc_Status BitstreamWriteBits(AVCEncBitstream *stream, int nBits, uint code)
148 int bit_left = stream->bit_left;
149 uint current_word = stream->current_word;
161 stream->current_word = (current_word << nBits) | code;
162 stream->bit_left -= nBits;
163 if (stream->bit_left == 0) /* prepare for the next word */
165 status = AVCBitstreamSaveWord(stream);
171 stream->current_word = (current_word << bit_left) | (code >> (nBits - bit_left));
175 stream->bit_left = 0;
177 status = AVCBitstreamSaveWord(stream); /* save current word */
179 stream->bit_left = WORD_SIZE - nBits;
181 stream->current_word = code; /* no extra masking for code, must be handled before saving */
197 AVCEnc_Status BitstreamWrite1Bit(AVCEncBitstream *stream, uint code)
200 uint current_word = stream->current_word;
206 stream->current_word = (current_word << 1) | code;
207 stream->bit_left--;
208 if (stream->bit_left == 0) /* prepare for the next word */
210 status = AVCBitstreamSaveWord(stream);
255 bool byte_aligned(AVCEncBitstream *stream)
257 if (stream->bit_left % 8)
265 AVCEnc_Status AVCBitstreamUseOverrunBuffer(AVCEncBitstream* stream, int numExtraBytes)
267 AVCEncObject *encvid = (AVCEncObject*)stream->encvid;
269 if (stream->overrunBuffer != NULL) // overrunBuffer is set
271 if (stream->bitstreamBuffer != stream->overrunBuffer) // not already used
273 if (stream->write_pos + numExtraBytes >= stream->oBSize)
275 stream->oBSize = stream->write_pos + numExtraBytes + 100;
276 stream->oBSize &= (~0x3); // make it multiple of 4
285 encvid->oBSize = stream->oBSize;
287 stream->oBSize, DEFAULT_ATTR);
289 stream->overrunBuffer = encvid->overrunBuffer;
290 if (stream->overrunBuffer == NULL)
297 memcpy(stream->overrunBuffer, stream->bitstreamBuffer, stream->write_pos);
298 stream->bitstreamBuffer = stream->overrunBuffer;
299 stream->buf_size = stream->oBSize;
303 stream->oBSize = stream->write_pos + numExtraBytes + 100;
304 stream->oBSize &= (~0x3); // make it multiple of 4
307 encvid->oBSize = stream->oBSize;
309 stream->oBSize, DEFAULT_ATTR);
318 memcpy(encvid->overrunBuffer, stream->overrunBuffer, stream->write_pos);
321 stream->overrunBuffer);
324 stream->overrunBuffer = encvid->overrunBuffer;
325 stream->bitstreamBuffer = stream->overrunBuffer;
326 stream->buf_size = stream->oBSize;