/*! ************************************************************************ * \brief * generates UVLC code and passes the codeword to the buffer ************************************************************************ */ void writeSE_SVLC(SyntaxElement *se, DataPartition *dp) { se_linfo (se->value1,se->value2,&(se->len),&(se->inf)); symbol2uvlc(se); writeUVLC2buffer(se, dp->bitstream); if(se->type != SE_HEADER) dp->bitstream->write_flag = 1; #if TRACE if(dp->bitstream->trace_enabled) trace2out (se); #endif }
/*! ************************************************************************************* * \brief * se_v, writes an se(v) syntax element, returns the length in bits * * \param tracestring * the string for the trace file * \param value * the value to be coded * \param bitstream * the target bitstream the value should be coded into * * \return * Number of bits used by the coded syntax element * * \ note * This function writes always the bit buffer for the progressive scan flag, and * should not be used (or should be modified appropriately) for the interlace crap * When used in the context of the Parameter Sets, this is obviously not a * problem. * ************************************************************************************* */ int se_v (char *tracestring, int value, Bitstream *bitstream) { SyntaxElement symbol, *sym=&symbol; sym->value1 = value; sym->value2 = 0; assert (bitstream->streamBuffer != NULL); se_linfo(sym->value1,sym->value2,&(sym->len),&(sym->inf)); symbol2uvlc(sym); writeUVLC2buffer (sym, bitstream); #if TRACE strncpy(sym->tracestring,tracestring,TRACESTRING_SIZE); trace2out (sym); #endif return (sym->len); }