00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028 #ifndef _RTXBITDECODE_H_
00029 #define _RTXBITDECODE_H_
00030
00031 #include "rtxsrc/rtxContext.h"
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037 #define DEC_BIT(pctxt,pvalue) \
00038 (((pctxt)->buffer.byteIndex >= (pctxt)->buffer.size) ? \
00039 rtxDecBit (pctxt, pvalue) \
00040 : \
00041 (*(pvalue) = (pctxt)->buffer.data[(pctxt)->buffer.byteIndex], \
00042 --(pctxt)->buffer.bitOffset == 0 ? \
00043 ((pctxt)->buffer.bitOffset = 8, (pctxt)->buffer.byteIndex++) \
00044 : \
00045 (*(pvalue) >>= (pctxt)->buffer.bitOffset), \
00046 *(pvalue) &= 1, \
00047 0))
00048
00049 EXTERNRT int rtxMoveBitCursor (OSCTXT* pctxt, int bitOffset);
00050
00066 EXTERNRT int rtxDecBit (OSCTXT* pctxt, OSBOOL* pvalue);
00067
00080 EXTERNRT int rtxDecBits (OSCTXT* pctxt, OSUINT32* pvalue, OSSIZE nbits);
00081
00097 EXTERNRT int rtxDecBitsToByte
00098 (OSCTXT* pctxt, OSUINT8* pvalue, OSUINT8 nbits);
00099
00115 EXTERNRT int rtxDecBitsToUInt16
00116 (OSCTXT* pctxt, OSUINT16* pvalue, OSUINT8 nbits);
00117
00130 EXTERNRT int rtxDecBitsToByteArray
00131 (OSCTXT* pctxt, OSOCTET* pbuffer, OSSIZE bufsiz, OSSIZE nbits);
00132
00148 EXTERNRT int rtxPeekBit (OSCTXT* pctxt, OSBOOL* pvalue);
00149
00160 EXTERNRT int rtxSkipBits (OSCTXT* pctxt, OSSIZE nbits);
00161
00162 #ifdef __cplusplus
00163 }
00164 #endif
00165
00166 #endif