/*! ************************************************************************ * \brief * generates UVLC code and passes the codeword to the buffer ************************************************************************ */ void writeSE_UVLC(SyntaxElement *se, DataPartition *dp) { ue_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 * ue_v, writes an ue(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 ue_v (char *tracestring, int value, Bitstream *bitstream) { SyntaxElement symbol, *sym=&symbol; sym->value1 = value; sym->value2 = 0; assert (bitstream->streamBuffer != NULL); ue_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); }
/*! ************************************************************************ * \par Input: * Number in the code table * \par Output: * length and info ************************************************************************ */ void cbp_linfo_inter(int cbp, int dummy, int *len,int *info) { extern const unsigned char NCBP[2][48][2]; ue_linfo(NCBP[img->yuv_format?1:0][cbp][1], dummy, len, info); }
/*! ************************************************************************ * \par Input: * Number in the code table * \par Output: * lenght and info ************************************************************************ */ void cbp_linfo_inter(int cbp, int dummy, int *len,int *info) { extern const int NCBP[48][2]; ue_linfo(NCBP[cbp][1], dummy, len, info); }
/*! ************************************************************************ * \par Input: * Number in the code table * \par Output: * length and info ************************************************************************ */ void cbp_linfo_inter_normal(int cbp, int dummy, int *len,int *info) { ue_linfo(NCBP[1][cbp][1], dummy, len, info); }
/*! ************************************************************************ * \par Input: * Number in the code table * \par Output: * length and info ************************************************************************ */ void cbp_linfo_inter_other(int cbp, int dummy, int *len,int *info) { ue_linfo(NCBP[0][cbp][1], dummy, len, info); }