source: svn/newcon3bcm2_21bu/dst/dlib/src/si/DLIB_BitOp.c @ 76

Last change on this file since 76 was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 37.6 KB
Line 
1/**
2        @file
3                DLIB_BitOp.c
4
5        @brief
6                PHOENIX HAL library
7
8        bitbuf/memchain/huffman
9
10        Copyright 2006~2010 Digital STREAM Technology, Inc.
11        All Rights Reserved
12*/
13
14
15#include "DHL_OSAL.h"
16#include "DHL_DBG.h"
17
18#include "DLIB_BitOp.h"
19////#include <string.h>
20
21/*
22        ¸ðµç Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏÁö´Â ¾ÊÀ¸¸ç, compile timeÀ» ÁÙÀ̱â À§ÇØ
23        °¢ ¸ðµâÀº ÇÊ¿äÇÑ ¸¸Å­ÀÇ Çì´õ¸¦ ¼±¾ðÇϵµ·Ï ÇÔ.
24*/
25
26
27
28/*
29        DHL µð¹ö±× ¸ðµâ À̸§ Á¤ÀÇ ·ê Âü°í:
30
31        DHL ¸ðµâµéÀº ¸ðµÎ * ·Î ½ÃÀÛ.
32        API´Â ´ë¹®ÀÚ, Platform ¹× ±âŸ´Â ¼Ò¹®ÀÚ »ç¿ë.
33
34        µðÆúÆ® ·¹º§Àº 0À¸·Î ¼³Á¤ÇÑ´Ù. (0: ¿¡·¯ ¸Þ½ÃÁö¸¸ Ãâ·Â)
35       
36       
37*/
38
39//DHL_MODULE("!Bit", 0);
40
41
42
43#if COMMENT
44____Config____(){}
45#endif
46
47/*
48        ÀÌ ¸ðµâ ³»ºÎ¿¡¼­ »ç¿ëµÇ´Â °¢Á¾ configuration Á¤ÀÇ.
49*/
50
51
52/* #define SUPPORT_FAST_SWITCHING_OPTIMIZATION 1 */
53/* #define FUNC_MONITOR_TIMER_ID TIMER_ID_FUNC_MONITOR */
54
55
56
57#if COMMENT
58____Types____(){}
59#endif
60
61/*
62        ÀÌ ¸ðµâ ³»ºÎ¿¡¼­ »ç¿ëµÇ´Â structure ¹× enumerations.
63*/
64
65
66
67#if COMMENT
68____Variables____(){}
69#endif
70
71/*
72        global·Î Àû¿ëµÇ´Â variable Á¤ÀÇ.
73        °¢ function º°·Î Ư¼öÇÑ ¿ëµµÀÇ variableÀº °¢ functionX block ¿¡¼­ Á¤ÀÇ °¡´É.
74*/
75
76
77
78#if COMMENT
79____BitOp____(){}
80#endif
81
82static const UINT32 bitMaskTable[] = {
83        0x00000000,0x00000001,0x00000003,0x00000007,0x0000000F,0x0000001F,0x0000003F,0x0000007F,
84        0x000000FF,0x000001FF,0x000003FF,0x000007FF,0x00000FFF,0x00001FFF,0x00003FFF,0x00007FFF,
85        0x0000FFFF,0x0001FFFF,0x0003FFFF,0x0007FFFF,0x000FFFFF,0x001FFFFF,0x003FFFFF,0x007FFFFF,
86        0x00FFFFFF,0x01FFFFFF,0x03FFFFFF,0x07FFFFFF,0x0FFFFFFF,0x1FFFFFFF,0x3FFFFFFF,0x7FFFFFFF,
87        0xFFFFFFFF
88};
89
90static const UINT8 shiftTable1[] = {8,1,2,3,4,5,6,7};
91static const UINT8 shiftTable2[] = {0,7,6,5,4,3,2,1};
92
93
94DHL_RESULT bitBufferCreate (bitBufferPtr_t *instance, UINT8 *buffer, UINT32 bufSize)
95{
96        bitBufferPtr_t  bitBufferPtr;
97       
98
99        /* create bitBuffer structure */
100        bitBufferPtr = (bitBufferPtr_t)DHL_OS_Malloc(sizeof(bitBuffer_t));
101        if (bitBufferPtr == NULL) {
102                return (DHL_FAIL_OUT_OF_MEMORY);
103        }
104
105        /* Initialize */
106        bitBufferPtr->buffer = buffer;
107        bitBufferPtr->bufSize = bufSize;
108        bitBufferPtr->bitOffset = 0;
109        bitBufferPtr->overrunError = FALSE;
110
111        /* pass instance to user */
112        *instance = bitBufferPtr;
113
114        return DHL_OK;
115}
116
117
118DHL_RESULT bitBufferDestroy (bitBufferPtr_t instance)
119{
120        if (instance == NULL)
121                return DHL_FAIL_NULL_POINTER;
122       
123        DHL_OS_Free((void**)&instance); 
124
125        return DHL_OK;
126}
127
128
129UINT32 bitBufferGetBits (bitBufferPtr_t instance, UINT8 numberOfBits)
130{
131                UINT32                  returnBits = 0;
132                UINT8                   bitIndex;
133                UINT8                   newBitIndexDiv8,newBitIndexMod8;
134                UINT8                   readByteCount;
135                UINT8                   *p;
136                UINT8                   i;
137       
138       
139                DHL_ASSERT((numberOfBits <= 32), "numberOfBits > 32");
140       
141                if (numberOfBits > (8*instance->bufSize - instance->bitOffset)) {
142                        /* avoid too many overrun error message.. */
143                        if (instance->overrunError == FALSE) {
144                                DHL_OS_Printf("bitBuffer Overrun! \n",numberOfBits);
145                                DHL_OS_Printf(" required bits %d, bitOffset %u:%d\n", 
146                                        numberOfBits, instance->bitOffset/8, instance->bitOffset%8);
147                        }
148                        instance->overrunError = TRUE;
149                        instance->bitOffset = 8*instance->bufSize;
150                        returnBits = 0;
151                        goto GetBitsReturn;
152                }
153       
154                bitIndex = instance->bitOffset & 0x07;
155                newBitIndexDiv8 = (bitIndex+numberOfBits) >> 3;
156                newBitIndexMod8 = (bitIndex+numberOfBits) & 0x07;
157                readByteCount = newBitIndexDiv8 + (newBitIndexMod8 ? 1:0);
158       
159                p = instance->buffer + (instance->bitOffset >> 3);
160               
161                /* copy first byte */
162                returnBits = *p++;
163                if (readByteCount < 2) {
164                        /* shift bits right */
165                        returnBits = returnBits >> shiftTable2[newBitIndexMod8];
166                }
167                else { /* more bytes */
168                        for (i=0; i < readByteCount-2; i++) {
169                                /* just copying 'middle' bytes */
170                                returnBits = (returnBits << 8) | *p++;
171                        }               
172                        /* copy last byte */
173                        returnBits = (returnBits << shiftTable1[newBitIndexMod8]) | ((*p) >> shiftTable2[newBitIndexMod8]);
174                }
175       
176                returnBits &= bitMaskTable[numberOfBits];
177                instance->bitOffset += numberOfBits;
178       
179        GetBitsReturn:
180                return (returnBits);
181
182}
183
184
185void bitBufferSkipBits (bitBufferPtr_t instance, UINT16 numberOfBits)
186{
187        instance->bitOffset += numberOfBits;
188        if (8*instance->bufSize < instance->bitOffset) {
189                instance->overrunError = TRUE;
190        }
191}
192
193
194UINT8* bitBufferGetBytePointer (bitBufferPtr_t instance)
195{
196        return (instance->buffer + (instance->bitOffset >> 3));
197}
198
199
200BOOLEAN bitBufferCheckError (bitBufferPtr_t instance)
201{
202        return (instance->overrunError);
203}
204
205
206void bitBufferInitialize(bitBufferPtr_t instance, UINT8 *buffer, UINT32 bufSize)
207{
208        /* Initialize */
209        instance->buffer = buffer;
210        instance->bufSize = bufSize;
211        instance->bitOffset = 0;
212        instance->overrunError = 0;
213}
214
215
216
217#if COMMENT
218____Memchain____(){}
219#endif
220
221
222#define MEMCHAIN_MAGIC          0x45CBA9D1
223
224typedef struct memElement {
225        void*                   userData;
226        struct memElement       *next;
227} memElement_t, *memElementPtr_t;
228               
229typedef struct memChainHead {
230        UINT32          magic;
231        UINT32          memLimit;
232        myMalloc_f              Malloc;
233        myFree_f                Free;
234        UINT32          totalElements;
235        UINT32          totalBytes;
236        UINT32          totalUserBytes;
237        memElementPtr_t element;
238} memChainHead_t, *memChainHeadPtr_t;
239
240
241static void *memChainMalloc(unsigned size, const char *_file, unsigned _line)
242{
243#if DHL_OS_USE_HEAP_DEBUG
244                return DHL_OS_DbgMalloc(size, _file, _line);
245#else
246                return DHL_OS_Malloc(size);
247#endif
248}
249
250
251static void memChainFree(void *p, const char *_file, unsigned _line)
252{
253                // in fact, p is (void **) type.
254                // but for myFree_f, we use (void *).
255#if DHL_OS_USE_HEAP_DEBUG
256                DHL_OS_DbgFree(p, _file, _line);
257#else
258                DHL_OS_Free(p);
259#endif
260}
261
262
263#undef memChainCreate
264
265DHL_RESULT memChainCreateDbg (memId_t *memId, memChainSetupPtr_t setupPtr, const char *_file, unsigned _line)
266{
267        myMalloc_f                      Malloc;
268        memChainHeadPtr_t               memChainHeadPtr;
269        DHL_RESULT                      err = DHL_OK;
270
271
272/*      OS_DbgPrintf("memChainCreate()\n"); */
273
274        DHL_ASSERT((memId != NULL), "memChainCreate():param error");
275        DHL_ASSERT((setupPtr != NULL), "memChainCreate():param error");
276        if ((memId == NULL) || setupPtr == NULL) {
277                err = DHL_FAIL_INVALID_PARAM;
278                goto memChainCreateEnd;
279        }
280
281        if (setupPtr->Malloc == NULL) {
282            Malloc = memChainMalloc;
283        }
284        else {
285                Malloc = setupPtr->Malloc;
286        }
287        memChainHeadPtr = (memChainHeadPtr_t)Malloc(sizeof(memChainHead_t), _file, _line);
288        if (memChainHeadPtr == NULL) {
289                err = DHL_FAIL_OUT_OF_MEMORY;
290                goto memChainCreateEnd;
291        }
292        memset(memChainHeadPtr,0x00,sizeof(memChainHead_t));
293
294        /* initialize */
295        memChainHeadPtr->memLimit = setupPtr->memLimit;
296        memChainHeadPtr->Malloc = Malloc;
297        if (setupPtr->Free == NULL) {
298                memChainHeadPtr->Free = memChainFree;
299        }
300        else {
301                memChainHeadPtr->Free = setupPtr->Free;
302        }
303        memChainHeadPtr->magic = MEMCHAIN_MAGIC;
304        memChainHeadPtr->totalElements = 0;
305        memChainHeadPtr->totalBytes = sizeof(memChainHead_t);
306        memChainHeadPtr->totalUserBytes = 0;
307        memChainHeadPtr->element = NULL;
308
309        /* set instance */
310        *memId = memChainHeadPtr;
311
312memChainCreateEnd:
313        return (err);
314}
315
316DHL_RESULT memChainCreate (memId_t *memId, memChainSetupPtr_t setupPtr)
317{
318        return memChainCreateDbg (memId, setupPtr, NULL, 0);
319}
320
321
322#undef memChainDestroy
323
324DHL_RESULT memChainDestroyDbg (memId_t memId, const char *_file, unsigned _line)
325{
326        memChainHeadPtr_t               memChainHeadPtr = (memChainHeadPtr_t)memId;
327        memElementPtr_t         currElem, prevElem;
328
329
330/*
331        OS_DbgPrintf("memChainDestroy(%d)\n", instance);
332        OS_DbgPrintf("totalElements=%d\n", memChainHeadPtr->totalElements);
333*/
334        DHL_ASSERT((memChainHeadPtr->magic == MEMCHAIN_MAGIC), "Not valid memChain.\n");
335        memChainHeadPtr->magic = 0;
336
337        /* free the memElements */
338        currElem = memChainHeadPtr->element;
339        while (currElem != NULL) {
340                prevElem = currElem;
341                currElem = currElem->next;
342/*
343                OS_DbgPrintf("free:0x%08X\n",(INT32)prevElem);
344*/
345                memChainHeadPtr->Free(&prevElem, _file, _line);
346        }
347
348        /* lastly, free the memChainHead */
349        memChainHeadPtr->Free(&memChainHeadPtr, _file, _line);
350/*      OS_DbgPrintf("free:0x%08X\n",memChainHeadPtr); */
351
352        return DHL_OK;         
353}
354
355
356DHL_RESULT memChainDestroy (memId_t memId)
357{
358        return memChainDestroyDbg (memId, NULL, 0);
359}
360
361
362#undef memChainAlloc
363
364void* memChainAllocDbg (memId_t memId, UINT32 size, const char *_file, unsigned _line)
365{
366        memChainHeadPtr_t               memChainHeadPtr = (memChainHeadPtr_t)memId;
367        memElementPtr_t         memElementPtr;
368        UINT32                  allocSize;
369        void                            *rptr, *p;
370
371
372        DHL_ASSERT((memChainHeadPtr->magic == MEMCHAIN_MAGIC), "Not valid memChain.\n");
373
374/*
375        OS_DbgPrintf("memChainAlloc(%d), size:%d\n",instance,size);
376*/
377        /* check the memLimit (memLimit = 0 means no limit) */
378        if (memChainHeadPtr->memLimit > 0) {
379                if (memChainHeadPtr->totalUserBytes + size > memChainHeadPtr->memLimit) {
380                        DHL_OS_Printf("memLimit exceeded.  totalUserBytes=%d\n", memChainHeadPtr->totalUserBytes);
381                        rptr = NULL;
382                        goto memChainAllocEnd;
383                }
384        }
385
386        /* allocate the memory - add 8 bytes to guarantee 64-bit alignment of user data */
387        allocSize = sizeof(memElement_t) + size + 8;
388
389        memElementPtr = (memElementPtr_t)memChainHeadPtr->Malloc(allocSize, _file, _line);
390        if (memElementPtr == NULL) {
391                rptr = NULL;
392                goto memChainAllocEnd;
393        }
394        memset(memElementPtr,0x00,allocSize);
395
396        p = (void *)(((UINT8 *)(memElementPtr) + sizeof(memElement_t)));
397
398        /* align on 64-bit boundary */
399        memElementPtr->userData = (void *)((UINT32)(((UINT8 *)p)+8) & ((UINT32)(~0) << 3)); /*!PRM typecase UINT32*/
400        rptr = memElementPtr->userData;
401
402        /* insert element in list */
403        memElementPtr->next = memChainHeadPtr->element;
404        memChainHeadPtr->element = memElementPtr;
405
406        /* update tracking statistics */
407        memChainHeadPtr->totalElements++;
408        memChainHeadPtr->totalBytes += allocSize;
409        memChainHeadPtr->totalUserBytes += size;
410
411/*
412        OS_DbgPrintf("\ttotalElements:%d,",memChainHeadPtr->totalElements);
413        OS_DbgPrintf("totalBytes:%d,",memChainHeadPtr->totalBytes);
414        OS_DbgPrintf("totalUserBytes:%d\n",memChainHeadPtr->totalUserBytes);
415        OS_DbgPrintf("memElementPtr:0x%08X\n", (INT32)memElementPtr);
416        OS_DbgPrintf("rptr:0x%08X\n",(INT32)rptr);
417*/
418
419memChainAllocEnd:
420        return (rptr);
421}
422
423
424void *memChainAlloc (memId_t memId, UINT32 size)
425{
426        return memChainAllocDbg (memId, size, NULL, 0);
427}
428
429
430DHL_RESULT memChainStatus (memId_t memId, memChainStatus_t *pStatus)
431{
432        memChainHeadPtr_t               memChainHeadPtr = (memChainHeadPtr_t)memId;
433       
434        if (memChainHeadPtr==NULL || memChainHeadPtr->magic!=MEMCHAIN_MAGIC) {
435                return DHL_FAIL_INVALID_HANDLE;
436        }
437        if (pStatus==NULL) {
438                return DHL_FAIL_INVALID_PARAM;
439        }
440       
441        pStatus->memLimit = memChainHeadPtr->memLimit;
442        pStatus->totalElements = memChainHeadPtr->totalElements;
443        pStatus->totalBytes = memChainHeadPtr->totalBytes;
444        pStatus->totalUserBytes = memChainHeadPtr->totalUserBytes;
445
446        return DHL_OK;
447}
448
449
450
451#if COMMENT
452____Huffman____(){}
453#endif
454
455/* Huffman Special Characters */
456#define STRING_TERMINATE        0x00
457#define ORDER_1_ESCAPE          0x1B
458
459/* Table element syntax */
460#define LEAF_FLAG_MASK          0x80
461#define LEAF_CHAR_MASK          0x7F
462
463/* Huffman Program Title Decode Table C.5 */
464static const UINT8 ProgramTitleDecodeTableC5 [] = {
465
466        0x01, 0x00, 0x01, 0x3A, 0x01, 0x3C, 0x01, 0x3E, 0x01, 0x40, 0x01, 0x42, 
467        0x01, 0x44, 0x01, 0x46, 0x01, 0x48, 0x01, 0x4A, 0x01, 0x4C, 0x01, 0x4E, 
468        0x01, 0x50, 0x01, 0x52, 0x01, 0x54, 0x01, 0x56, 0x01, 0x58, 0x01, 0x5A, 
469        0x01, 0x5C, 0x01, 0x5E, 0x01, 0x60, 0x01, 0x62, 0x01, 0x64, 0x01, 0x66, 
470        0x01, 0x68, 0x01, 0x6A, 0x01, 0x6C, 0x01, 0x6E, 0x01, 0x70, 0x01, 0x72, 
471        0x01, 0x74, 0x01, 0x76, 0x01, 0x78, 0x01, 0xCE, 0x01, 0xD2, 0x01, 0xD4, 
472        0x01, 0xD6, 0x01, 0xD8, 0x01, 0xDA, 0x01, 0xDC, 0x01, 0xE6, 0x01, 0xE8, 
473        0x01, 0xEA, 0x01, 0xF0, 0x01, 0xF2, 0x01, 0xF4, 0x02, 0x06, 0x02, 0x12, 
474        0x02, 0x14, 0x02, 0x1C, 0x02, 0x28, 0x02, 0x30, 0x02, 0x34, 0x02, 0x36, 
475        0x02, 0x38, 0x02, 0x3A, 0x02, 0x3C, 0x02, 0x3E, 0x02, 0x46, 0x02, 0x48, 
476        0x02, 0x4A, 0x02, 0x4C, 0x02, 0x4E, 0x02, 0x50, 0x02, 0x52, 0x02, 0x54, 
477        0x02, 0x7E, 0x02, 0x92, 0x02, 0xAC, 0x02, 0xBA, 0x02, 0xD2, 0x02, 0xE4, 
478        0x02, 0xFA, 0x03, 0x06, 0x03, 0x1E, 0x03, 0x26, 0x03, 0x32, 0x03, 0x3E, 
479        0x03, 0x52, 0x03, 0x64, 0x03, 0x7A, 0x03, 0x94, 0x03, 0x98, 0x03, 0xA4, 
480        0x03, 0xC8, 0x03, 0xDE, 0x03, 0xE6, 0x03, 0xF4, 0x04, 0x04, 0x04, 0x06, 
481        0x04, 0x0C, 0x04, 0x10, 0x04, 0x12, 0x04, 0x14, 0x04, 0x16, 0x04, 0x18, 
482        0x04, 0x1A, 0x04, 0x1C, 0x04, 0x52, 0x04, 0x6A, 0x04, 0x8E, 0x04, 0xAE, 
483        0x04, 0xEE, 0x05, 0x06, 0x05, 0x28, 0x05, 0x44, 0x05, 0x72, 0x05, 0x76, 
484        0x05, 0x90, 0x05, 0xBE, 0x05, 0xD6, 0x06, 0x0A, 0x06, 0x44, 0x06, 0x64, 
485        0x06, 0x66, 0x06, 0x9A, 0x06, 0xD0, 0x06, 0xFC, 0x07, 0x22, 0x07, 0x2C, 
486        0x07, 0x46, 0x07, 0x54, 0x07, 0x7C, 0x07, 0x8A, 0x07, 0x8C, 0x07, 0x8E, 
487        0x07, 0x90, 0x07, 0x92, 0x1B, 0x1C, 0xB4, 0xA4, 0xB2, 0xB7, 0xDA, 0x01, 
488        0xD1, 0x02, 0x03, 0x9B, 0x04, 0xD5, 0xD9, 0x05, 0xCB, 0xD6, 0x06, 0xCF, 
489        0x07, 0x08, 0xCA, 0x09, 0xC9, 0xC5, 0xC6, 0x0A, 0xD2, 0xC4, 0xC7, 0xCC, 
490        0xD0, 0xC8, 0xD7, 0xCE, 0x0B, 0xC1, 0x0C, 0xC2, 0xCD, 0xC3, 0x0D, 0x0E, 
491        0x0F, 0x10, 0xD3, 0x11, 0xD4, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 
492        0x19, 0x1A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
493        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
494        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
495        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
496        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
497        0x9B, 0x9B, 0x9B, 0x9B, 0x29, 0x2A, 0xD8, 0xE5, 0xB9, 0x01, 0xA7, 0xB1, 
498        0xEC, 0xD1, 0x02, 0xAD, 0xB2, 0xDA, 0xE3, 0xB3, 0x03, 0xE4, 0xE6, 0x04, 
499        0x9B, 0xE2, 0x05, 0x06, 0x07, 0x08, 0x09, 0xD5, 0x0A, 0xD6, 0x0B, 0xD9, 
500        0x0C, 0xA6, 0xE9, 0xCB, 0xC5, 0xCF, 0x0D, 0x0E, 0xCA, 0xC9, 0x0F, 0xC7, 
501        0x10, 0x11, 0xE1, 0x12, 0x13, 0xC6, 0xD2, 0xC8, 0xCE, 0xC1, 0xC4, 0xD0, 
502        0xCC, 0x14, 0x15, 0xEF, 0xC2, 0xD7, 0x16, 0xCD, 0x17, 0xF4, 0xD4, 0x18, 
503        0x19, 0x1A, 0xC3, 0xD3, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 
504        0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x01, 0x80, 0xA0, 0x9B, 0x9B, 0x9B, 
505        0x9B, 0x9B, 0xB1, 0x9B, 0x9B, 0x9B, 0x9B, 0xA0, 0x04, 0xF3, 0xE4, 0xB9, 
506        0x01, 0xF4, 0xA0, 0x9B, 0x02, 0x03, 0x9B, 0x9B, 0x9B, 0x9B, 0x01, 0x02, 
507        0x9B, 0xC1, 0xC8, 0xD3, 0x9B, 0x9B, 0x9B, 0xA0, 0x07, 0x08, 0xB1, 0xD2, 
508        0xD3, 0xD4, 0xD5, 0xAD, 0xCD, 0xC1, 0x01, 0x02, 0x03, 0xA0, 0x04, 0x9B, 
509        0x05, 0x06, 0xA0, 0x05, 0xC9, 0xD7, 0xD3, 0x01, 0x02, 0x9B, 0xAE, 0x80, 
510        0x03, 0x04, 0x9B, 0x9B, 0x02, 0x03, 0xAD, 0x9B, 0x01, 0x80, 0xA0, 0xB0, 
511        0x04, 0x05, 0x80, 0x9B, 0xB1, 0xB2, 0xA0, 0xB0, 0xB9, 0x01, 0x02, 0x03, 
512        0x02, 0x03, 0xB1, 0xBA, 0x01, 0xB0, 0x9B, 0x80, 0x80, 0x01, 0xB0, 0x9B, 
513        0x9B, 0xB8, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xB0, 0x9B, 0xA0, 0x02, 0x03, 
514        0xB1, 0xB3, 0xB9, 0xB0, 0x01, 0x9B, 0x9B, 0xA0, 0x9B, 0x9B, 0x9B, 0x9B, 
515        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x80, 0x9B, 0x9B, 0x13, 0x14, 0xAA, 0xAD, 
516        0xAE, 0xF6, 0xE7, 0xF4, 0xE2, 0xE9, 0x01, 0x02, 0xC2, 0xF0, 0x9B, 0xF3, 
517        0xE3, 0xE6, 0xF7, 0x03, 0xF5, 0x04, 0x05, 0x06, 0xF2, 0x07, 0x08, 0x09, 
518        0x0A, 0x0B, 0x0C, 0xE4, 0xA0, 0x0D, 0xEC, 0xEE, 0x0E, 0xED, 0x0F, 0x10, 
519        0x11, 0x12, 0x08, 0x09, 0xC1, 0xD3, 0x9B, 0x01, 0xC3, 0x02, 0xE9, 0xEC, 
520        0x03, 0xF2, 0xF5, 0x04, 0xEF, 0xE1, 0x05, 0xE5, 0x06, 0x07, 0x0B, 0x0C, 
521        0xC1, 0xF9, 0x01, 0xC2, 0xCF, 0xE5, 0xF5, 0x9B, 0xE9, 0x02, 0xA0, 0x03, 
522        0x04, 0x05, 0xF2, 0x06, 0xEC, 0x07, 0xE1, 0x08, 0x09, 0xE8, 0x0A, 0xEF, 
523        0x05, 0x06, 0xF9, 0x9B, 0x01, 0xF5, 0x02, 0xF2, 0xE9, 0xE5, 0xEF, 0x03, 
524        0xE1, 0x04, 0x0A, 0x0B, 0xF1, 0xF5, 0xF3, 0x01, 0xED, 0xF9, 0xC3, 0x02, 
525        0xEC, 0xEE, 0xE4, 0xF8, 0x03, 0x9B, 0xF6, 0x04, 0x05, 0xE1, 0x06, 0x07, 
526        0x08, 0x09, 0x07, 0x08, 0xA0, 0x9B, 0xCC, 0x01, 0xE5, 0x02, 0xEC, 0xF5, 
527        0xEF, 0x03, 0xE9, 0xF2, 0x04, 0x05, 0xE1, 0x06, 0x09, 0x0A, 0xAE, 0xEC, 
528        0xF9, 0xC1, 0xE8, 0x01, 0x9B, 0x02, 0x03, 0x04, 0xE1, 0xF5, 0xE9, 0x05, 
529        0xE5, 0x06, 0xF2, 0xEF, 0x07, 0x08, 0xEF, 0x05, 0x80, 0x9B, 0xF5, 0x01, 
530        0x02, 0xE9, 0xE1, 0x03, 0xE5, 0x04, 0xEE, 0x0B, 0xBA, 0xD4, 0xAE, 0xF2, 
531        0xE3, 0x01, 0xA0, 0x02, 0x80, 0x9B, 0xED, 0x03, 0xC9, 0xF3, 0xF4, 0x04, 
532        0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x02, 0x03, 0x9B, 0xF5, 0x01, 0xE1, 
533        0xEF, 0xE5, 0x05, 0xE9, 0xE1, 0xEF, 0xF5, 0xEE, 0x9B, 0xE5, 0x01, 0x02, 
534        0x03, 0x04, 0x04, 0x05, 0xA0, 0x9B, 0x01, 0xF5, 0x02, 0xE5, 0xEF, 0x03, 
535        0xE1, 0xE9, 0x08, 0x09, 0xAA, 0xD4, 0x01, 0x9B, 0xE3, 0x02, 0xF2, 0x03, 
536        0xE5, 0x04, 0xF5, 0xF9, 0xE9, 0x05, 0xEF, 0x06, 0x07, 0xE1, 0xE5, 0x08, 
537        0xCE, 0xA0, 0xC6, 0xF5, 0x01, 0x02, 0x9B, 0xC2, 0x03, 0xE1, 0x04, 0xEF, 
538        0x05, 0xE9, 0x06, 0x07, 0x09, 0x0A, 0xE4, 0xF3, 0xE6, 0xF6, 0xF7, 0xF0, 
539        0xF2, 0x01, 0xEC, 0x02, 0x03, 0xA0, 0x9B, 0x04, 0x05, 0xF5, 0x06, 0x07, 
540        0xEE, 0x08, 0x0B, 0x0C, 0xA0, 0xF3, 0xF9, 0xAE, 0xD2, 0xC7, 0x01, 0x9B, 
541        0x02, 0xF5, 0x03, 0x04, 0x05, 0xE9, 0xEC, 0x06, 0xE5, 0x07, 0xEF, 0x08, 
542        0xE1, 0x09, 0xF2, 0x0A, 0x01, 0xF5, 0x9B, 0xD6, 0x04, 0x05, 0xE8, 0x9B, 
543        0x01, 0xF5, 0x02, 0xE1, 0xE9, 0xEF, 0x03, 0xE5, 0x10, 0x11, 0xAA, 0xEC, 
544        0xF1, 0xAE, 0xA0, 0xF7, 0xED, 0xEE, 0x01, 0x02, 0x9B, 0xEB, 0x03, 0x04, 
545        0x05, 0x06, 0xE3, 0x07, 0xEF, 0x08, 0xE9, 0xF5, 0x09, 0xE1, 0xE5, 0xF0, 
546        0xE8, 0x0A, 0x0B, 0x0C, 0x0D, 0xF4, 0x0E, 0x0F, 0xE8, 0x0A, 0xAD, 0xCE, 
547        0x9B, 0x01, 0xD6, 0x02, 0xF5, 0xF7, 0x03, 0x04, 0xE1, 0xE5, 0xE9, 0x05, 
548        0xF2, 0x06, 0xEF, 0x07, 0x08, 0x09, 0xEE, 0x03, 0xEC, 0xAE, 0x01, 0x9B, 
549        0x02, 0xF0, 0x06, 0xE9, 0xA0, 0xC3, 0xEF, 0x9B, 0xE5, 0x01, 0x80, 0x02, 
550        0x03, 0xE1, 0x04, 0x05, 0x06, 0x07, 0xC6, 0xD7, 0x01, 0x9B, 0xF2, 0x02, 
551        0x03, 0xE8, 0xE5, 0xE1, 0x04, 0xE9, 0xEF, 0x05, 0x9B, 0x9B, 0x02, 0xEF, 
552        0xE1, 0x9B, 0x01, 0xE5, 0x01, 0xEF, 0x9B, 0xE1, 0x9B, 0x9B, 0x9B, 0x9B, 
553        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x19, 0x1A, 0x9B, 0xBA, 
554        0xE5, 0xEA, 0xF8, 0x01, 0x02, 0xE6, 0xA7, 0x03, 0xFA, 0xE8, 0x04, 0xF7, 
555        0x05, 0xF5, 0xE2, 0x06, 0xEB, 0x07, 0xF0, 0x08, 0x80, 0xF6, 0xE7, 0x09, 
556        0xE4, 0x0A, 0xA0, 0xE9, 0x0B, 0xE3, 0xF9, 0x0C, 0x0D, 0xED, 0x0E, 0x0F, 
557        0xF3, 0x10, 0x11, 0xEC, 0x12, 0xF4, 0xF2, 0x13, 0xEE, 0x14, 0x15, 0x16, 
558        0x17, 0x18, 0x0A, 0x0B, 0xF3, 0x9B, 0xF5, 0xE2, 0x01, 0x80, 0xA0, 0x02, 
559        0xE5, 0xF2, 0xE9, 0x03, 0xEC, 0x04, 0xF9, 0x05, 0xEF, 0x06, 0xE1, 0x07, 
560        0x08, 0x09, 0x10, 0x11, 0xC3, 0xCC, 0xC7, 0x9B, 0xE3, 0x01, 0x80, 0xEC, 
561        0xF9, 0x02, 0xF3, 0x03, 0xF5, 0x04, 0x05, 0xF2, 0x06, 0xE9, 0xA0, 0x07, 
562        0x08, 0xEF, 0xF4, 0x09, 0x0A, 0xE1, 0x0B, 0xE8, 0xEB, 0xE5, 0x0C, 0x0D, 
563        0x0E, 0x0F, 0x0E, 0x0F, 0xAE, 0xF5, 0xF7, 0x01, 0xEC, 0x02, 0xE4, 0xE7, 
564        0xF2, 0x03, 0x9B, 0xEF, 0x04, 0xF6, 0x05, 0x06, 0xF9, 0xF3, 0x07, 0xE9, 
565        0xE1, 0x08, 0x09, 0x80, 0x0A, 0x0B, 0xE5, 0x0C, 0x0D, 0xA0, 0x1E, 0x1F, 
566        0x9B, 0xA1, 0xAD, 0xE8, 0xEA, 0xF1, 0xF5, 0xFA, 0x01, 0x02, 0x03, 0x04, 
567        0xBA, 0xF8, 0xA7, 0xE2, 0xE9, 0x05, 0x06, 0x07, 0xE6, 0xED, 0xE7, 0xEB, 
568        0x08, 0x09, 0xF6, 0xF0, 0x0A, 0xEF, 0x0B, 0xE3, 0x0C, 0x0D, 0x0E, 0xF9, 
569        0x0F, 0xE4, 0xEC, 0x10, 0xE5, 0x11, 0xF4, 0xF7, 0x12, 0x13, 0xE1, 0x14, 
570        0x15, 0x16, 0xEE, 0xF3, 0x17, 0x80, 0x18, 0x19, 0xF2, 0x1A, 0x1B, 0xA0, 
571        0x1C, 0x1D, 0xA0, 0x0B, 0xF5, 0x9B, 0x01, 0xEC, 0xF3, 0xF2, 0x80, 0xE1, 
572        0x02, 0x03, 0xF4, 0xE9, 0xEF, 0xE6, 0x04, 0x05, 0x06, 0x07, 0xE5, 0x08, 
573        0x09, 0x0A, 0x0F, 0x10, 0xBA, 0xF9, 0xA7, 0xF4, 0x9B, 0x01, 0xE7, 0xEC, 
574        0x02, 0xEE, 0x03, 0xEF, 0xF5, 0x04, 0xF2, 0x05, 0x06, 0xE9, 0x07, 0xF3, 
575        0xE1, 0x08, 0x09, 0x0A, 0x0B, 0xE5, 0x80, 0x0C, 0xE8, 0xA0, 0x0D, 0x0E, 
576        0xE5, 0x0D, 0xE2, 0xF5, 0xF7, 0x9B, 0xEC, 0x01, 0xF9, 0xEE, 0x02, 0x03, 
577        0x04, 0xF2, 0x05, 0x80, 0x06, 0xA0, 0xE1, 0xEF, 0x07, 0xF4, 0xE9, 0x08, 
578        0x09, 0x0A, 0x0B, 0x0C, 0x15, 0x16, 0xA1, 0xF8, 0xE9, 0xEB, 0x01, 0x80, 
579        0x9B, 0xFA, 0xE2, 0x02, 0x03, 0x04, 0xA0, 0xF0, 0x05, 0x06, 0x07, 0xE1, 
580        0x08, 0xE6, 0xF2, 0xED, 0xF6, 0x09, 0xE4, 0x0A, 0xEF, 0xF4, 0xEC, 0xF3, 
581        0xE7, 0xE5, 0x0B, 0xE3, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 
582        0xEE, 0x14, 0xEF, 0x01, 0x9B, 0xE1, 0x0B, 0x0C, 0xD4, 0xEF, 0xE6, 0xEC, 
583        0xF7, 0xE1, 0x01, 0xBA, 0x02, 0x9B, 0xF9, 0x03, 0x04, 0x05, 0xF3, 0x06, 
584        0x07, 0x08, 0xE9, 0xA0, 0x09, 0x80, 0xE5, 0x0A, 0x15, 0x16, 0xA7, 0xBA, 
585        0xE3, 0xF7, 0xF2, 0xAD, 0xE2, 0x01, 0x02, 0x9B, 0xE6, 0x03, 0xED, 0xF6, 
586        0x04, 0xEB, 0x05, 0xF4, 0x06, 0x07, 0x08, 0xF3, 0x09, 0xF5, 0x0A, 0xEF, 
587        0x0B, 0x0C, 0x80, 0xF9, 0xE1, 0x0D, 0xE4, 0xE9, 0xA0, 0x0E, 0x0F, 0xEC, 
588        0xE5, 0x10, 0x11, 0x12, 0x13, 0x14, 0x0A, 0x0B, 0xF9, 0x9B, 0xF5, 0xF3, 
589        0x01, 0x02, 0xE2, 0xED, 0x80, 0x03, 0xF0, 0xEF, 0x04, 0xA0, 0x05, 0xE9, 
590        0x06, 0xE1, 0x07, 0x08, 0x09, 0xE5, 0x18, 0x19, 0xE2, 0xEA, 0xF2, 0xE8, 
591        0xEC, 0xED, 0xFA, 0x9B, 0x01, 0xF5, 0x02, 0x03, 0xF6, 0x04, 0xBA, 0xE6, 
592        0x05, 0x06, 0xEB, 0xEF, 0x07, 0xA7, 0xF9, 0x08, 0x09, 0x0A, 0x0B, 0xE3, 
593        0x0C, 0xEE, 0xE1, 0x0D, 0xF3, 0x0E, 0xE9, 0x0F, 0x10, 0xF4, 0x80, 0xE4, 
594        0xE5, 0x11, 0x12, 0xE7, 0xA0, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1B, 0x1C, 
595        0xAE, 0xFA, 0xBF, 0x01, 0xA7, 0x9B, 0x02, 0xE9, 0xF8, 0xF9, 0x03, 0xE5, 
596        0xE8, 0x04, 0xE1, 0xEB, 0x05, 0xE2, 0x06, 0x07, 0xE3, 0x08, 0xE7, 0xF4, 
597        0x09, 0x80, 0xF6, 0xF0, 0x0A, 0xE4, 0x0B, 0xF3, 0xF7, 0x0C, 0x0D, 0xEF, 
598        0xEC, 0xA0, 0x0E, 0x0F, 0xED, 0xE6, 0x10, 0xF5, 0x11, 0x12, 0x13, 0x14, 
599        0x15, 0xF2, 0x16, 0xEE, 0x17, 0x18, 0x19, 0x1A, 0x0E, 0x0F, 0xED, 0xA7, 
600        0x9B, 0xE4, 0x01, 0xF9, 0xF3, 0xF2, 0xF4, 0x02, 0xE8, 0x03, 0xEC, 0xF0, 
601        0x04, 0xE1, 0xE9, 0x05, 0x06, 0x80, 0xA0, 0x07, 0x08, 0x09, 0x0A, 0xE5, 
602        0xEF, 0x0B, 0x0C, 0x0D, 0x9B, 0xF5, 0x18, 0x19, 0xBA, 0xAC, 0xF6, 0x9B, 
603        0xF0, 0xE2, 0x01, 0xE6, 0x02, 0xA7, 0xAE, 0xE7, 0x03, 0xE3, 0xF5, 0x04, 
604        0xED, 0x05, 0x06, 0x07, 0xEB, 0x08, 0x09, 0xEE, 0xF2, 0x0A, 0xE4, 0x0B, 
605        0xF9, 0xEC, 0x0C, 0x0D, 0xF4, 0x80, 0x0E, 0xEF, 0xF3, 0xA0, 0xE1, 0x0F, 
606        0xE9, 0x10, 0x11, 0xE5, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x19, 0x1A, 
607        0xA7, 0xAC, 0xBF, 0xC3, 0xC8, 0xE4, 0xE6, 0xED, 0xF2, 0xAE, 0xEC, 0xEE, 
608        0xF9, 0x01, 0x02, 0x03, 0x04, 0xBA, 0x05, 0x9B, 0xF5, 0x06, 0x07, 0x08, 
609        0x09, 0xEB, 0xF0, 0x0A, 0x0B, 0x0C, 0xE1, 0xE3, 0x0D, 0xE8, 0x0E, 0x0F, 
610        0xEF, 0x10, 0x11, 0xF3, 0x12, 0xE9, 0x13, 0xE5, 0x14, 0x15, 0xF4, 0x16, 
611        0x17, 0xA0, 0x18, 0x80, 0x14, 0x15, 0xBA, 0xBF, 0xE4, 0xF7, 0x9B, 0xA7, 
612        0x01, 0xEE, 0x02, 0x03, 0x04, 0xE3, 0xE2, 0xED, 0x05, 0xF9, 0x06, 0xF4, 
613        0x07, 0xEC, 0x08, 0xF5, 0xF2, 0x09, 0xE1, 0xF3, 0x0A, 0xEF, 0x0B, 0x0C, 
614        0x0D, 0xE9, 0x80, 0xE5, 0x0E, 0xA0, 0x0F, 0xE8, 0x10, 0x11, 0x12, 0x13, 
615        0x11, 0x12, 0xEB, 0xFA, 0x80, 0xE6, 0x9B, 0x01, 0xA0, 0x02, 0x03, 0xE9, 
616        0xE1, 0x04, 0xE4, 0xF0, 0xED, 0xE2, 0xE3, 0xE7, 0xEC, 0x05, 0xE5, 0x06, 
617        0x07, 0x08, 0x09, 0xF4, 0x0A, 0x0B, 0x0C, 0xF3, 0xEE, 0x0D, 0x0E, 0xF2, 
618        0x0F, 0x10, 0x04, 0xE5, 0xF3, 0xEF, 0x9B, 0x01, 0xE1, 0x02, 0x03, 0xE9, 
619        0x0B, 0x0C, 0xA7, 0xE2, 0xEC, 0xE3, 0xF2, 0x01, 0x9B, 0x02, 0x03, 0x04, 
620        0xE9, 0xEF, 0xEE, 0xE5, 0xE1, 0x80, 0x05, 0xA0, 0x06, 0x07, 0x08, 0x09, 
621        0xF3, 0x0A, 0x05, 0x06, 0x9B, 0xA0, 0xE1, 0xE5, 0xE9, 0x01, 0x80, 0xF0, 
622        0x02, 0xF4, 0x03, 0x04, 0xA0, 0x13, 0xE3, 0xAD, 0xE4, 0xE9, 0xEE, 0xEF, 
623        0xF0, 0xF4, 0xF6, 0xA1, 0xE1, 0xED, 0x01, 0xE2, 0x02, 0x03, 0x04, 0xA7, 
624        0x05, 0x06, 0xF7, 0x07, 0x9B, 0xEC, 0x08, 0xE5, 0x09, 0x0A, 0x0B, 0x0C, 
625        0x0D, 0x0E, 0xF3, 0x0F, 0x10, 0x11, 0x80, 0x12, 0x05, 0x06, 0xE5, 0xFA, 
626        0xA0, 0xF9, 0x9B, 0x01, 0x80, 0xE9, 0x02, 0xE1, 0x03, 0x04, 0x9B, 0x9B, 
627        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B
628};
629
630
631/* Huffman Program Description Decode Table C.7 */
632static const UINT8 ProgramDescriptionDecodeTableC7 [] = {
633
634        0x01, 0x00, 0x01, 0x2C, 0x01, 0x2E, 0x01, 0x30, 0x01, 0x32, 0x01, 0x34, 
635        0x01, 0x36, 0x01, 0x38, 0x01, 0x3A, 0x01, 0x3C, 0x01, 0x3E, 0x01, 0x40, 
636        0x01, 0x42, 0x01, 0x44, 0x01, 0x46, 0x01, 0x48, 0x01, 0x4A, 0x01, 0x4C, 
637        0x01, 0x4E, 0x01, 0x50, 0x01, 0x52, 0x01, 0x54, 0x01, 0x56, 0x01, 0x58, 
638        0x01, 0x5A, 0x01, 0x5C, 0x01, 0x5E, 0x01, 0x60, 0x01, 0x62, 0x01, 0x64, 
639        0x01, 0x66, 0x01, 0x68, 0x01, 0x6A, 0x01, 0xDE, 0x01, 0xE0, 0x01, 0xEA, 
640        0x01, 0xEC, 0x01, 0xEE, 0x01, 0xF0, 0x01, 0xF2, 0x01, 0xF8, 0x01, 0xFA, 
641        0x01, 0xFC, 0x01, 0xFE, 0x02, 0x00, 0x02, 0x04, 0x02, 0x16, 0x02, 0x20, 
642        0x02, 0x22, 0x02, 0x2C, 0x02, 0x32, 0x02, 0x38, 0x02, 0x3C, 0x02, 0x40, 
643        0x02, 0x44, 0x02, 0x46, 0x02, 0x4A, 0x02, 0x4C, 0x02, 0x54, 0x02, 0x56, 
644        0x02, 0x58, 0x02, 0x5A, 0x02, 0x5C, 0x02, 0x5E, 0x02, 0x60, 0x02, 0x62, 
645        0x02, 0x76, 0x02, 0x84, 0x02, 0x94, 0x02, 0xA2, 0x02, 0xB2, 0x02, 0xBA, 
646        0x02, 0xC8, 0x02, 0xD2, 0x02, 0xDE, 0x02, 0xEA, 0x02, 0xF2, 0x02, 0xFC, 
647        0x03, 0x08, 0x03, 0x10, 0x03, 0x1A, 0x03, 0x28, 0x03, 0x2A, 0x03, 0x34, 
648        0x03, 0x4A, 0x03, 0x5A, 0x03, 0x5E, 0x03, 0x64, 0x03, 0x6E, 0x03, 0x70, 
649        0x03, 0x72, 0x03, 0x74, 0x03, 0x76, 0x03, 0x78, 0x03, 0x7A, 0x03, 0x7C, 
650        0x03, 0x7E, 0x03, 0x80, 0x03, 0xB4, 0x03, 0xCE, 0x03, 0xF0, 0x04, 0x1A, 
651        0x04, 0x58, 0x04, 0x6E, 0x04, 0x8E, 0x04, 0xAC, 0x04, 0xD8, 0x04, 0xE0, 
652        0x04, 0xF4, 0x05, 0x24, 0x05, 0x40, 0x05, 0x76, 0x05, 0xAE, 0x05, 0xCE, 
653        0x05, 0xD0, 0x06, 0x06, 0x06, 0x34, 0x06, 0x60, 0x06, 0x86, 0x06, 0x92, 
654        0x06, 0xAA, 0x06, 0xB8, 0x06, 0xDC, 0x06, 0xEC, 0x06, 0xEE, 0x06, 0xF0, 
655        0x06, 0xF2, 0x06, 0xF4, 0x14, 0x15, 0x9B, 0xD6, 0xC9, 0xCF, 0xD7, 0xC7, 
656        0x01, 0xA2, 0xCE, 0xCB, 0x02, 0x03, 0xC5, 0xCC, 0xC6, 0xC8, 0x04, 0xC4, 
657        0x05, 0xC2, 0x06, 0xC3, 0xD2, 0x07, 0xD3, 0x08, 0xCA, 0xD4, 0x09, 0xCD, 
658        0xD0, 0x0A, 0xC1, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 
659        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
660        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
661        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
662        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
663        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
664        0x9B, 0x9B, 0x38, 0x39, 0xAD, 0xAF, 0xB7, 0xDA, 0xA8, 0xB3, 0xB5, 0x01, 
665        0x02, 0x9B, 0xB4, 0xF1, 0xA2, 0xD5, 0xD6, 0xD9, 0x03, 0x04, 0x05, 0xCF, 
666        0x06, 0xC9, 0xF9, 0xEA, 0xEB, 0xF5, 0xF6, 0x07, 0x08, 0x09, 0xB2, 0xC5, 
667        0xC6, 0xB1, 0x0A, 0xEE, 0xCB, 0x0B, 0xD4, 0x0C, 0xC4, 0xC8, 0xD2, 0x0D, 
668        0x0E, 0x0F, 0xC7, 0xCA, 0xCE, 0xD0, 0xD7, 0x10, 0xC2, 0x11, 0xCC, 0xEC, 
669        0xE5, 0xE7, 0x12, 0xCD, 0x13, 0x14, 0xC3, 0x15, 0x16, 0x17, 0xED, 0x18, 
670        0x19, 0xF2, 0x1A, 0xD3, 0x1B, 0x1C, 0xE4, 0x1D, 0xC1, 0xE3, 0x1E, 0xE9, 
671        0xF0, 0xE2, 0xF7, 0x1F, 0xF3, 0xE6, 0x20, 0x21, 0x22, 0xE8, 0xEF, 0x23, 
672        0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0xF4, 0x2B, 0x2C, 0x2D, 0x2E, 
673        0x2F, 0xE1, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x9B, 0x9B, 
674        0x03, 0x04, 0x80, 0xAE, 0xC8, 0xD4, 0x01, 0x02, 0x9B, 0xA0, 0x9B, 0x9B, 
675        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x02, 0xF3, 0xA0, 0xF4, 0x9B, 0x01, 
676        0x9B, 0x9B, 0xAC, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x01, 0xA0, 0x9B, 0xA2, 
677        0x07, 0x08, 0xE2, 0xE4, 0xE5, 0xE6, 0xA0, 0xF2, 0xE1, 0x01, 0x02, 0xF3, 
678        0xE3, 0x03, 0x04, 0x05, 0x9B, 0x06, 0x04, 0x80, 0xCA, 0xD3, 0xA2, 0x01, 
679        0x9B, 0x02, 0x03, 0xA0, 0x9B, 0xA0, 0x03, 0x04, 0x9B, 0xB7, 0xF4, 0xA0, 
680        0xB0, 0xF3, 0x01, 0x02, 0xB9, 0x02, 0xB8, 0x9B, 0xA0, 0x01, 0xAE, 0x02, 
681        0xB6, 0x9B, 0x01, 0xA0, 0xA0, 0x01, 0x9B, 0xB0, 0xAE, 0x01, 0x9B, 0xA0, 
682        0xAE, 0x01, 0xA0, 0x9B, 0x9B, 0x9B, 0x9B, 0x01, 0xAC, 0xAE, 0x9B, 0x9B, 
683        0x02, 0x03, 0x9B, 0xA0, 0xB5, 0xB6, 0xB8, 0x01, 0x9B, 0xA0, 0x9B, 0xA0, 
684        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xA0, 0x9B, 0x9B, 0x08, 0x09, 
685        0xE6, 0xF5, 0xF3, 0xF4, 0x9B, 0xE4, 0x01, 0xED, 0x02, 0x03, 0x04, 0xF2, 
686        0x05, 0x06, 0xEC, 0xEE, 0x07, 0xA0, 0x05, 0x06, 0x9B, 0xEC, 0xF5, 0x01, 
687        0x02, 0xE1, 0xEF, 0xE5, 0xE9, 0xF2, 0x03, 0x04, 0x06, 0x07, 0x9B, 0xE9, 
688        0xF9, 0xF2, 0xF5, 0x01, 0x02, 0x03, 0xEC, 0xEF, 0xE1, 0x04, 0xE8, 0x05, 
689        0x05, 0x06, 0xF9, 0xF2, 0xF5, 0x9B, 0xE5, 0xEF, 0x01, 0x02, 0xE9, 0xE1, 
690        0x03, 0x04, 0x06, 0x07, 0xE1, 0xE9, 0xEE, 0xF6, 0xE4, 0xEC, 0xF3, 0x01, 
691        0x02, 0xF2, 0x03, 0x04, 0x9B, 0x05, 0x02, 0x03, 0xE5, 0xEC, 0x9B, 0xEF, 
692        0x01, 0xF2, 0x05, 0x06, 0xF5, 0xEF, 0x9B, 0xEC, 0xE9, 0x01, 0xE1, 0xF2, 
693        0x02, 0xE5, 0x03, 0x04, 0x03, 0x04, 0x9B, 0xE5, 0xE9, 0xF5, 0xE1, 0x01, 
694        0xEF, 0x02, 0x04, 0x05, 0xA0, 0xC9, 0xF3, 0x9B, 0xAE, 0xF2, 0x01, 0x02, 
695        0x03, 0xEE, 0xEF, 0x05, 0x9B, 0xAE, 0xE9, 0xE5, 0x01, 0xF5, 0x02, 0xE1, 
696        0x03, 0x04, 0xE5, 0x03, 0xE1, 0xE9, 0xF2, 0x9B, 0x01, 0x02, 0x03, 0x04, 
697        0x9B, 0xE9, 0xF5, 0x01, 0xE5, 0x02, 0xEF, 0xE1, 0xE1, 0x05, 0x9B, 0xE3, 
698        0xEF, 0x01, 0xF5, 0xE5, 0x02, 0x03, 0xE9, 0x04, 0xE5, 0x03, 0x9B, 0xE9, 
699        0x01, 0xE1, 0xEF, 0x02, 0x03, 0x04, 0xA7, 0xEE, 0xEC, 0xF2, 0xF3, 0x01, 
700        0x9B, 0x02, 0xE1, 0x06, 0x9B, 0xE8, 0xE9, 0x01, 0xF2, 0xEC, 0x02, 0xEF, 
701        0x03, 0xE5, 0x04, 0x05, 0x9B, 0x9B, 0x03, 0x04, 0x9B, 0xAE, 0x01, 0xE9, 
702        0x02, 0xE1, 0xE5, 0xEF, 0x09, 0x0A, 0xF6, 0xF9, 0x01, 0xAE, 0xE3, 0xE9, 
703        0xF5, 0x9B, 0xE5, 0xEF, 0x02, 0x03, 0xE1, 0x04, 0xE8, 0x05, 0x06, 0xF4, 
704        0x07, 0x08, 0xE8, 0x07, 0xE5, 0xF7, 0xD6, 0xE1, 0x9B, 0xE9, 0xF2, 0x01, 
705        0x02, 0x03, 0x04, 0xEF, 0x05, 0x06, 0xAE, 0x01, 0x9B, 0xEE, 0xE9, 0x02, 
706        0xE5, 0x9B, 0xA0, 0x01, 0x03, 0x04, 0x9B, 0xE8, 0xE5, 0xE1, 0xEF, 0x01, 
707        0xE9, 0x02, 0x9B, 0x9B, 0x9B, 0xEF, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 
708        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x18, 0x19, 0xE8, 0xEF, 
709        0xF8, 0x9B, 0xA7, 0xF7, 0xFA, 0x01, 0x02, 0x03, 0x04, 0xE5, 0xAE, 0x05, 
710        0xE6, 0xE2, 0x06, 0xF6, 0xEB, 0xF5, 0xE9, 0x07, 0xF0, 0xF9, 0xE7, 0x08, 
711        0x09, 0xE4, 0x0A, 0xE3, 0x0B, 0xED, 0x0C, 0xF3, 0x0D, 0x0E, 0x0F, 0xEC, 
712        0x10, 0xF4, 0x11, 0x12, 0xF2, 0xA0, 0x13, 0x14, 0x15, 0xEE, 0x16, 0x17, 
713        0x0B, 0x0C, 0xE4, 0xF3, 0x9B, 0xAE, 0xE2, 0x01, 0x02, 0x03, 0xEC, 0xA0, 
714        0x04, 0xE9, 0xF2, 0xF5, 0x05, 0xF9, 0xE1, 0x06, 0xEF, 0x07, 0xE5, 0x08, 
715        0x09, 0x0A, 0x0F, 0x10, 0xF1, 0xAE, 0xC4, 0xF9, 0xAC, 0x01, 0xE3, 0x02, 
716        0x9B, 0xF2, 0x03, 0x04, 0xA0, 0xEC, 0xF5, 0x05, 0x06, 0xE9, 0x07, 0xEB, 
717        0x08, 0xF4, 0x09, 0xE5, 0x0A, 0xEF, 0xE1, 0xE8, 0x0B, 0x0C, 0x0D, 0x0E, 
718        0x13, 0x14, 0xA7, 0xBB, 0xE6, 0xED, 0xF7, 0xE7, 0xF6, 0x01, 0x02, 0x9B, 
719        0xEE, 0x03, 0x04, 0xEC, 0x05, 0xF5, 0x06, 0xAC, 0xE4, 0xF9, 0xF2, 0x07, 
720        0x08, 0x09, 0xAE, 0x0A, 0xEF, 0x0B, 0xE1, 0xF3, 0x0C, 0xE9, 0x0D, 0x0E, 
721        0x0F, 0x10, 0xE5, 0x11, 0x12, 0xA0, 0x1D, 0x1E, 0xA9, 0xE8, 0xF5, 0x9B, 
722        0x01, 0xAD, 0xBB, 0xEB, 0xFA, 0x02, 0xA7, 0xE6, 0xE2, 0xE7, 0x03, 0x04, 
723        0x05, 0x06, 0xE9, 0xF8, 0x07, 0xAC, 0xEF, 0xF0, 0x08, 0xED, 0xF6, 0xF9, 
724        0x09, 0xF7, 0x0A, 0x0B, 0xAE, 0x0C, 0xE3, 0x0D, 0xE5, 0xF4, 0x0E, 0x0F, 
725        0xE4, 0x10, 0xEC, 0x11, 0xE1, 0x12, 0x13, 0x14, 0x15, 0x16, 0xEE, 0xF3, 
726        0x17, 0x18, 0xF2, 0xA0, 0x19, 0x1A, 0x1B, 0x1C, 0x09, 0x0A, 0xAE, 0x9B, 
727        0xEC, 0x01, 0xF5, 0x02, 0xF4, 0xE6, 0x03, 0xE1, 0xE5, 0xE9, 0x04, 0xF2, 
728        0xEF, 0x05, 0x06, 0x07, 0xA0, 0x08, 0x0E, 0x0F, 0xAD, 0xE7, 0x9B, 0xA7, 
729        0xF9, 0x01, 0xEC, 0x02, 0xAC, 0xF2, 0x03, 0xAE, 0xF3, 0xF5, 0x04, 0x05, 
730        0xEF, 0x06, 0x07, 0xE9, 0xE1, 0x08, 0x09, 0xE8, 0x0A, 0x0B, 0xE5, 0x0C, 
731        0xA0, 0x0D, 0x0D, 0x0E, 0xA7, 0xAC, 0xF3, 0xAD, 0x01, 0x02, 0x9B, 0xF9, 
732        0xF5, 0xAE, 0x03, 0xEE, 0x04, 0xF2, 0x05, 0x06, 0xF4, 0x07, 0x08, 0x09, 
733        0xEF, 0xE1, 0xA0, 0x0A, 0xE9, 0x0B, 0x0C, 0xE5, 0x14, 0x15, 0xAC, 0xE2, 
734        0xF8, 0x9B, 0xAE, 0xFA, 0x01, 0xEB, 0x02, 0xA0, 0x03, 0x04, 0xF0, 0x05, 
735        0x06, 0xE6, 0xF6, 0x07, 0xE4, 0xED, 0xE7, 0x08, 0xE1, 0xEF, 0xF2, 0x09, 
736        0x0A, 0x0B, 0xEC, 0x0C, 0xE5, 0xE3, 0x0D, 0xF4, 0x0E, 0xF3, 0x0F, 0x10, 
737        0x11, 0xEE, 0x12, 0x13, 0x03, 0xEF, 0x9B, 0xE1, 0xE5, 0xF5, 0x01, 0x02, 
738        0x08, 0x09, 0xEC, 0xF9, 0xA7, 0xEE, 0x01, 0xAC, 0x9B, 0xAE, 0x02, 0x03, 
739        0x04, 0xF3, 0x05, 0xE9, 0x06, 0xA0, 0x07, 0xE5, 0x16, 0x17, 0xA7, 0xAD, 
740        0xEE, 0xE3, 0xEB, 0xF2, 0x9B, 0xE2, 0x01, 0x02, 0xF5, 0x03, 0xF4, 0xAC, 
741        0x04, 0x05, 0xE6, 0xED, 0xF6, 0x06, 0xAE, 0xF0, 0x07, 0x08, 0xF3, 0x09, 
742        0x0A, 0xE4, 0x0B, 0x0C, 0xF9, 0x0D, 0xEF, 0x0E, 0xE1, 0x0F, 0x10, 0xE9, 
743        0xEC, 0x11, 0xA0, 0xE5, 0x12, 0x13, 0x14, 0x15, 0x0C, 0x0D, 0xA7, 0xBB, 
744        0x9B, 0x01, 0xF9, 0xAE, 0xE2, 0x02, 0xED, 0xF3, 0x03, 0xF5, 0xEF, 0xF0, 
745        0x04, 0x05, 0xE9, 0x06, 0x07, 0x08, 0x09, 0xA0, 0xE1, 0xE5, 0x0A, 0x0B, 
746        0x19, 0x1A, 0xAD, 0xBB, 0xE2, 0xEA, 0xED, 0xF2, 0xFA, 0xE6, 0xEC, 0x01, 
747        0x02, 0x03, 0x9B, 0xF5, 0x04, 0xA7, 0xF6, 0xF9, 0x05, 0x06, 0xEB, 0xEF, 
748        0x07, 0x08, 0x09, 0x0A, 0xAC, 0x0B, 0x0C, 0xE3, 0xAE, 0x0D, 0xEE, 0xE9, 
749        0x0E, 0xE1, 0x0F, 0xF3, 0x10, 0x11, 0xF4, 0x12, 0xE7, 0xE5, 0x13, 0x14, 
750        0xE4, 0x15, 0x16, 0x17, 0xA0, 0x18, 0x1A, 0x1B, 0xC2, 0x9B, 0xAD, 0xAC, 
751        0xF8, 0x01, 0xAE, 0x02, 0x03, 0xE5, 0xE7, 0xE8, 0xF9, 0xE9, 0xEB, 0x04, 
752        0xE3, 0xE1, 0x05, 0xF6, 0x06, 0xE4, 0x07, 0xE2, 0xF0, 0x08, 0x09, 0xF3, 
753        0xF4, 0xF7, 0xEF, 0x0A, 0x0B, 0x0C, 0x0D, 0xEC, 0x0E, 0x0F, 0x10, 0xF5, 
754        0xED, 0x11, 0xE6, 0xA0, 0x12, 0xF2, 0x13, 0x14, 0x15, 0xEE, 0x16, 0x17, 
755        0x18, 0x19, 0x0E, 0x0F, 0xAD, 0xED, 0xF9, 0x9B, 0xAE, 0x01, 0xF3, 0x02, 
756        0x03, 0xF5, 0xF4, 0xF0, 0x04, 0xEF, 0x05, 0xE9, 0x06, 0xE8, 0xA0, 0xE1, 
757        0xEC, 0x07, 0xF2, 0x08, 0xE5, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x9B, 0xF5, 
758        0x19, 0x1A, 0xA9, 0xBB, 0xF6, 0xE6, 0x01, 0x9B, 0xAD, 0xE2, 0xF0, 0x02, 
759        0xA7, 0x03, 0x04, 0x05, 0xF5, 0xE3, 0xAC, 0xE7, 0xF2, 0x06, 0xEB, 0x07, 
760        0xEC, 0xED, 0xEE, 0xF9, 0x08, 0xAE, 0x09, 0x0A, 0xE4, 0x0B, 0x0C, 0xF4, 
761        0x0D, 0xF3, 0x0E, 0x0F, 0x10, 0xE1, 0xEF, 0x11, 0xE9, 0x12, 0x13, 0xE5, 
762        0x14, 0xA0, 0x15, 0x16, 0x17, 0x18, 0xA0, 0x16, 0xA2, 0xA7, 0xE2, 0xEB, 
763        0xED, 0xEE, 0x9B, 0xF7, 0x01, 0x02, 0x03, 0xBB, 0xF9, 0xF0, 0x04, 0x05, 
764        0xEC, 0x06, 0x07, 0x08, 0xF5, 0xE1, 0x09, 0xAC, 0xE3, 0x0A, 0xE8, 0x0B, 
765        0xE9, 0x0C, 0xEF, 0xF3, 0xAE, 0x0D, 0x0E, 0xE5, 0x0F, 0x10, 0x11, 0xF4, 
766        0x12, 0x13, 0x14, 0x15, 0x14, 0x15, 0xBB, 0xE2, 0xAD, 0xED, 0x01, 0x9B, 
767        0xA7, 0xE3, 0xAC, 0xEC, 0xEE, 0x02, 0xF7, 0x03, 0x04, 0xF9, 0x05, 0x06, 
768        0x07, 0x08, 0xF4, 0xAE, 0xF5, 0x09, 0x0A, 0xF2, 0xE1, 0xF3, 0x0B, 0x0C, 
769        0x0D, 0xE9, 0x0E, 0x0F, 0xEF, 0xE5, 0x10, 0xA0, 0xE8, 0x11, 0x12, 0x13, 
770        0x11, 0x12, 0xEF, 0xF6, 0x9B, 0xEB, 0xF9, 0x01, 0xA0, 0xE2, 0x02, 0xE1, 
771        0x03, 0xED, 0x04, 0xE3, 0xE9, 0x05, 0xE4, 0xE5, 0xE7, 0x06, 0xEC, 0xF0, 
772        0x07, 0x08, 0x09, 0x0A, 0x0B, 0xF3, 0x0C, 0xF4, 0xEE, 0x0D, 0xF2, 0x0E, 
773        0x0F, 0x10, 0x05, 0xE5, 0xF3, 0xF9, 0x9B, 0x01, 0xEF, 0x02, 0x03, 0xE1, 
774        0x04, 0xE9, 0x0A, 0x0B, 0xAE, 0x9B, 0xEC, 0xED, 0x01, 0x02, 0xF3, 0xEE, 
775        0xF2, 0x03, 0xE5, 0x04, 0xE8, 0xA0, 0xE1, 0x05, 0xEF, 0x06, 0x07, 0x08, 
776        0xE9, 0x09, 0x05, 0x06, 0xA0, 0xAC, 0xAD, 0xF4, 0xE9, 0x01, 0x02, 0xE1, 
777        0xE5, 0x03, 0x9B, 0x04, 0x11, 0xA0, 0xBF, 0xE1, 0xE2, 0xE6, 0xED, 0xE4, 
778        0xE9, 0xF7, 0xA7, 0x01, 0x02, 0xBB, 0x03, 0x04, 0xEC, 0x05, 0x9B, 0xEE, 
779        0x06, 0xEF, 0x07, 0xAC, 0xE5, 0xF3, 0x08, 0x09, 0x0A, 0xAE, 0x0B, 0x0C, 
780        0x0D, 0x0E, 0x0F, 0x10, 0x06, 0x07, 0xA0, 0xAE, 0xE1, 0xE5, 0xEC, 0xFA, 
781        0x9B, 0xEF, 0xE9, 0x01, 0x02, 0x03, 0x04, 0x05, 0x9B, 0x9B, 0x9B, 0x9B, 
782        0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B
783};
784
785DHL_RESULT DecodeHuffmanString (UINT8 *compressedStr, UINT32 length,
786                                                compress_type_k type, char *text, UINT32 textlen)
787{
788        bitBuffer_t                             tBits;
789        bitBufferPtr_t                  bits = &tBits;
790        const UINT8             *DecodeTable;
791        UINT32          textindex;
792        UINT32          bitsremaining;
793        UINT8                   hbit;
794        UINT8                   decodedchar;
795        BOOLEAN         firstOrderEsc;
796        BOOLEAN         charDecoded;
797        UINT16          tableoffset;
798        UINT16          treerootoffset;
799        UINT8                   child_word_offset_or_char_leaf;
800        DHL_RESULT              err = DHL_OK;
801       
802        DHL_ASSERT(((type == cm_Huffman_C4C5) || (type == cm_Huffman_C6C7)), "DecodeHuffmanString()\n");
803
804        bitBufferInitialize(bits,compressedStr,length);
805       
806        /* Select the Huffman Decode Table C.5 or C.7 */
807        if (type == cm_Huffman_C4C5) {
808                DecodeTable = ProgramTitleDecodeTableC5;
809        }
810        else {
811                DecodeTable = ProgramDescriptionDecodeTableC7;
812        }
813
814        textindex = 0;
815        bitsremaining = 8 * length;
816
817        decodedchar = STRING_TERMINATE; /* initial value */
818        firstOrderEsc = FALSE;
819    if (0) {
820        DHL_ASSERT(!((int) DecodeTable) & 1, "alignment assumption is broken");
821        tableoffset = ((UINT16 *)DecodeTable)[decodedchar];
822    }
823    else {
824        tableoffset = DecodeTable[decodedchar*2+0] << 8 |
825            DecodeTable[decodedchar*2+1];
826    }
827
828        while (bitsremaining && (textlen > 1)) {        /* space for EOS char */
829
830                /* any character which follows a character from the set (127-255) is uncompressed */
831                /* any character which follows a first-order escape character is uncompressed */
832                if (decodedchar > 127 || firstOrderEsc == TRUE) {
833                        /* uncompressed */
834                        decodedchar = bitBufferGetBits(bits,8);
835                        bitsremaining -= 8;
836                        firstOrderEsc = FALSE;
837                }
838                else {
839            if (0) {
840                DHL_ASSERT(!((int) DecodeTable) & 1, "alignment assumption is broken");
841                /* compressed */
842                treerootoffset = tableoffset = ((UINT16 *)DecodeTable)[decodedchar];
843            }
844            else {
845                treerootoffset = tableoffset =
846                    DecodeTable[decodedchar*2+0] << 8 |
847                    DecodeTable[decodedchar*2+1];
848            }
849
850                        /* decode a character */
851                        charDecoded = FALSE;
852                        while (charDecoded == FALSE && bitsremaining) {
853
854                                /* Get a bit */
855                                hbit = bitBufferGetBits(bits,1);
856                                bitsremaining--;
857
858                                if (hbit) {
859                                        /* right child word offset or char leaf */
860                                        child_word_offset_or_char_leaf = DecodeTable[tableoffset+1];
861                                }
862                                else {
863                                        /* left child word offset or char leaf */
864                                        child_word_offset_or_char_leaf = DecodeTable[tableoffset];
865                                }
866
867                                /* child node or leaf character? */
868                                if (child_word_offset_or_char_leaf & LEAF_FLAG_MASK) {
869                                        /* leaf character */
870                                        decodedchar = child_word_offset_or_char_leaf & LEAF_CHAR_MASK;
871                                        charDecoded = TRUE;
872                                }
873                                else {
874                                        /* child node */
875                                        tableoffset = treerootoffset + (2 * child_word_offset_or_char_leaf);
876                                }
877                        }
878
879                        /* check for first-order escape character */
880                        if (decodedchar == ORDER_1_ESCAPE) {
881                                firstOrderEsc = TRUE;
882                        }
883                }
884
885                /* first-order escape character is a control character only */
886                if (firstOrderEsc == FALSE) {
887                        text[textindex++] = decodedchar;
888                        textlen--;
889                }
890        }
891
892        /* terminate the string with ASCII Null */
893        text[textindex] = STRING_TERMINATE;
894 
895        return (err);
896}
897
898
899#if COMMENT
900____Debug____(){}
901#endif
902
903
904
905#if COMMENT
906____Symbol____(){}
907#endif
908
909
910#if DHL_REGISTER_DEUBG_SYMBOLS
911
912static DHL_SymbolTable _XxxxSymbols[] =
913{
914        /* however, if you want typing short-cut, it is good usage.
915        DHL_FNC_SYM_ENTRY2("epg_start", App_EpgUpdateStart),
916        DHL_FNC_SYM_ENTRY2("epg_stop", App_EpgUpdateCancel),
917        DHL_FNC_SYM_ENTRY2("epg_list", Dmc_EpgPrintAllTables),
918        DHL_FNC_SYM_ENTRY2("epg_delete", App_EpgDeleteAll),
919
920        DHL_VAR_SYM_ENTRY(g_XX_TestMode),
921        */
922        0,
923};
924
925#endif  /* DHL_REGISTER_DEUBG_SYMBOLS */
926
927
928
929#if COMMENT
930____Init____(){}
931#endif
932
933
934
935
936/* end of file */
937
938
Note: See TracBrowser for help on using the repository browser.