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 */
109 stream->write_pos++;
110 stream->count_zeros = 0;
114 stream->count_zeros++;
116 stream->write_pos++;
117 if (stream->count_zeros == 2)
120 stream->write_pos++;
121 stream->count_zeros = 0;
127 stream->current_word = 0;
128 stream->bit_left = WORD_SIZE;
142 AVCEnc_Status BitstreamWriteBits(AVCEncBitstream *stream, int nBits, uint code)
145 int bit_left = stream->bit_left;
146 uint current_word = stream->current_word;
158 stream->current_word = (current_word << nBits) | code;
159 stream->bit_left -= nBits;
160 if (stream->bit_left == 0) /* prepare for the next word */
162 status = AVCBitstreamSaveWord(stream);
168 stream->current_word = (current_word << bit_left) | (code >> (nBits - bit_left));
172 stream->bit_left = 0;
174 status = AVCBitstreamSaveWord(stream); /* save current word */
176 stream->bit_left = WORD_SIZE - nBits;
178 stream->current_word = code; /* no extra masking for code, must be handled before saving */
194 AVCEnc_Status BitstreamWrite1Bit(AVCEncBitstream *stream, uint code)
197 uint current_word = stream->current_word;
203 stream->current_word = (current_word << 1) | code;
204 stream->bit_left--;
205 if (stream->bit_left == 0) /* prepare for the next word */
207 status = AVCBitstreamSaveWord(stream);
252 bool byte_aligned(AVCEncBitstream *stream)
254 if (stream->bit_left % 8)
262 AVCEnc_Status AVCBitstreamUseOverrunBuffer(AVCEncBitstream* stream, int numExtraBytes)
264 AVCEncObject *encvid = (AVCEncObject*)stream->encvid;
266 if (stream->overrunBuffer != NULL) // overrunBuffer is set
268 if (stream->bitstreamBuffer != stream->overrunBuffer) // not already used
270 if (stream->write_pos + numExtraBytes >= stream->oBSize)
272 stream->oBSize = stream->write_pos + numExtraBytes + 100;
273 stream->oBSize &= (~0x3); // make it multiple of 4
282 encvid->oBSize = stream->oBSize;
284 stream->oBSize, DEFAULT_ATTR);
286 stream->overrunBuffer = encvid->overrunBuffer;
287 if (stream->overrunBuffer == NULL)
294 memcpy(stream->overrunBuffer, stream->bitstreamBuffer, stream->write_pos);
295 stream->bitstreamBuffer = stream->overrunBuffer;
296 stream->buf_size = stream->oBSize;
300 stream->oBSize = stream->write_pos + numExtraBytes + 100;
301 stream->oBSize &= (~0x3); // make it multiple of 4
304 encvid->oBSize = stream->oBSize;
306 stream->oBSize, DEFAULT_ATTR);
315 memcpy(encvid->overrunBuffer, stream->overrunBuffer, stream->write_pos);
318 stream->overrunBuffer);
321 stream->overrunBuffer = encvid->overrunBuffer;
322 stream->bitstreamBuffer = stream->overrunBuffer;
323 stream->buf_size = stream->oBSize;