diff src/gpf2/ccd/bitfun.h @ 1:864b8cc0cf63

src/gpf2: preened GPF goo from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 25 Sep 2016 23:38:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gpf2/ccd/bitfun.h	Sun Sep 25 23:38:58 2016 +0000
@@ -0,0 +1,68 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  
+|  Modul   : bitfun.h
++----------------------------------------------------------------------------- 
+|  Copyright 2002 Texas Instruments Berlin, AG 
+|                 All rights reserved. 
+| 
+|                 This file is confidential and a trade secret of Texas 
+|                 Instruments Berlin, AG 
+|                 The receipt of or possession of this file does not convey 
+|                 any rights to reproduce or disclose its contents or to 
+|                 manufacture, use, or sell anything it may describe, in 
+|                 whole, or in part, without the specific written consent of 
+|                 Texas Instruments Berlin, AG. 
++----------------------------------------------------------------------------- 
+|  Purpose :  Condat Coder Decoder
+|             Prototypes of the elementary bit manipulation functions
++----------------------------------------------------------------------------- 
+*/ 
+
+
+#ifndef __BITFUN
+#define __BITFUN
+
+
+#ifndef __BITFUN_C__
+
+EXTERN void   bf_writePadBits      (T_CCD_Globs *globs);
+EXTERN void   bf_writeVal          (ULONG value, ULONG bSize, T_CCD_Globs *globs);
+EXTERN ULONG  bf_getBits           (ULONG  len, T_CCD_Globs *globs);
+EXTERN void   bf_writeBitStr_PER   (USHORT len, T_CCD_Globs *globs);
+EXTERN void   bf_readBitStr_PER    (USHORT len, T_CCD_Globs *globs);
+EXTERN void   bf_writeBits         (ULONG  len, T_CCD_Globs *globs);
+EXTERN void   bf_readBits          (ULONG  len, T_CCD_Globs *globs);
+EXTERN void   bf_writeBitChunk     (ULONG  len, T_CCD_Globs *globs);
+EXTERN void   bf_readBitChunk      (ULONG  len, T_CCD_Globs *globs);
+EXTERN BOOL   bf_readBit           (T_CCD_Globs *globs);
+EXTERN void   bf_writeBit          (BOOL Bit, T_CCD_Globs *globs);
+EXTERN UBYTE  bf_decodeByteNumber  (const ULONG len, T_CCD_Globs *globs);
+EXTERN ULONG  bf_decodeShortNumber (const ULONG len, T_CCD_Globs *globs);
+EXTERN ULONG  bf_decodeLongNumber  (UBYTE len, T_CCD_Globs *globs);
+EXTERN void   bf_codeShortNumber   (UBYTE len, USHORT val, T_CCD_Globs *globs);
+EXTERN void   bf_codeByteNumber    (UBYTE len, UBYTE val, T_CCD_Globs *globs);
+EXTERN void   bf_codeLongNumber    (UBYTE len, ULONG val, T_CCD_Globs *globs);
+EXTERN void   bf_recodeShortNumber (USHORT pos, UBYTE len, USHORT val, T_CCD_Globs *globs);
+EXTERN void   bf_recodeByteNumber  (USHORT pos, UBYTE len, UBYTE  val, T_CCD_Globs *globs);
+EXTERN void   bf_recodeBit         (USHORT pos, UBYTE Bit, T_CCD_Globs *globs);
+EXTERN void   bf_rShift8Bit        (USHORT srcBitPos, USHORT bitLen, T_CCD_Globs *globs);
+
+#endif /* __BITFUN_C__ */
+
+/* a Macro for incrementing the position in the bitbuffer         */
+/* _bitpos, _bytepos and _byteoffs are recalculated               */
+
+#define bf_incBitpos(A, globs) globs->bitpos = (USHORT)(globs->bitpos+(A));\
+                        globs->bytepos = (USHORT)(globs->bitpos >> 3);\
+                        globs->byteoffs = (UBYTE)(globs->bitpos & 7)
+#define bf_setBitpos(A, globs) globs->bitpos = (USHORT)(A);\
+                        globs->bytepos = (USHORT)(globs->bitpos >> 3);\
+                        globs->byteoffs = (UBYTE)(globs->bitpos & 7)
+
+/*
+ * end of bitstream if we can not read almost 4 bits
+ */
+#define bf_endOfBitstream(globs) (globs->bitpos >= globs->maxBitpos)
+
+#endif