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
00094 EXTERNRT int rtxDecBitsToSize (OSCTXT* pctxt, OSSIZE* pvalue, OSSIZE nbits);
00095
00111 EXTERNRT int rtxDecBitsToByte
00112 (OSCTXT* pctxt, OSUINT8* pvalue, OSUINT8 nbits);
00113
00129 EXTERNRT int rtxDecBitsToUInt16
00130 (OSCTXT* pctxt, OSUINT16* pvalue, OSUINT8 nbits);
00131
00144 EXTERNRT int rtxDecBitsToByteArray
00145 (OSCTXT* pctxt, OSOCTET* pbuffer, OSSIZE bufsiz, OSSIZE nbits);
00146
00162 EXTERNRT int rtxPeekBit (OSCTXT* pctxt, OSBOOL* pvalue);
00163
00174 EXTERNRT int rtxSkipBits (OSCTXT* pctxt, OSSIZE nbits);
00175
00176 #ifdef __cplusplus
00177 }
00178 #endif
00179
00180 #endif