48 #define TAG_BASE_SHIFT 7 49 #define LONG_LENGTH_BASE_SHIFT 8 52 #define SMALL_TAG_MASK 0x1F 53 #define LARGE_TAG_MASK 0x7F 54 #define LAST_TAG_OCTET_MASK 0x80 55 #define LONG_LENGTH_TEST_MASK 0x80 56 #define LONG_LENGTH_MASK 0x7F 58 #define INT_OBJ_CHOICE_COMPS 2 60 unsigned char *fpa1_outputBufferStart = NULL;
61 unsigned long fpa1_outputBufferOffset = 0;
62 unsigned char *fpa1_currentBufferStart = NULL;
63 unsigned long fpa1_currentBufferLength = 0;
64 unsigned long fpa1_currentBufferOffset = 0;
66 int fpa1_GenericDataCount = 0;
67 int fpa1_GroupActionCount = 0;
68 int fpa1_GroupParamCount = 0;
71 static int readingTagNotLength = TRUE;
72 static int intObjChoiceCompArr[ INT_OBJ_CHOICE_COMPS + 1 ] =
73 { INT_OBJ_CHOICE_COMPS + 1,
96 while (listPtr != NULL)
98 if (listPtr->children != NULL)
106 listPtr->nextTagPosition,
110 if (unknownPtr != NULL)
112 printf(
"ERROR: tag %d has unrecognized items\n", listPtr->tag );
114 start1Ptr = unknownPtr;
116 while (unknownPtr != NULL)
118 printf(
" unkTag %d posn %d\n",
120 unknownPtr->tagPosition );
122 unknownPtr = unknownPtr->next;
128 fpa1_rdfTestList( listPtr->children );
130 listPtr = listPtr->next;
144 int tag, vpa1_filePosTag, tagClass;
155 if (readingTagNotLength == FALSE)
157 printf(
"ERROR: reading tag when should be reading length.\n" );
163 tagClass = tag >> CLASS_SHIFT;
164 tag &= SMALL_TAG_MASK;
166 if (tag == SMALL_TAG_MASK)
176 tag = (tag << TAG_BASE_SHIFT) | (vpa1_filePosTag & LARGE_TAG_MASK);
179 if ((vpa1_filePosTag & LAST_TAG_OCTET_MASK) == 0)
191 tag += tagClass * 1000;
194 readingTagNotLength = FALSE;
206 vpa1_filePos lengthCount;
216 if (readingTagNotLength == TRUE)
218 printf(
"ERROR: reading length when should be reading tag.\n" );
224 if ((length & LONG_LENGTH_TEST_MASK) != 0)
229 lengthCount = length & LONG_LENGTH_MASK;
234 while (lengthCount > 0)
243 readingTagNotLength = TRUE;
255 return fpa1_currentBufferOffset;
265 if (fpa1_currentBufferOffset < fpa1_currentBufferLength)
267 return fpa1_currentBufferStart[fpa1_currentBufferOffset++];
286 intValue = ((content > 127) ? (~0xFF | content) : content);
289 while (intLength-- > 0)
321 if (readingTagNotLength == TRUE)
341 vpa1_filePos nextTagPosn = -1;
343 int oldReadTag = readingTagNotLength;
345 if (readingTagNotLength == TRUE)
357 fpa1_currentBufferOffset += length;
365 readingTagNotLength = oldReadTag;
378 readingTagNotLength = TRUE;
384 else if (fpa1_currentBufferLength < (
unsigned long)newPosition)
386 fpa1_currentBufferOffset = fpa1_currentBufferLength;
391 fpa1_currentBufferOffset = newPosition;
405 if (pos < (
long)fpa1_currentBufferLength)
407 retval = fpa1_currentBufferStart[pos];
427 intValue = ((content > 127) ? (~0xFF | content) : content);
431 while (intLength > 0)
466 fpa1_currentBufferStart = asndata;
467 fpa1_currentBufferLength = len;
468 fpa1_currentBufferOffset = 0;
470 fpa1_GenericDataCount = 0;
471 fpa1_GroupActionCount = 0;
472 fpa1_GroupParamCount = 0;
Contains functions/globals used to read MHEG-5 ASN.1 scripts.
fpa1_syntaxList * fpa1_parseScriptASN(unsigned char *asndata, unsigned long len)
Top level entry point to the ASN.1 script to fpa1_syntaxList converter. This function takes the origi...
int fpa1_rdfGetInteger(vpa1_filePos intLength)
Contains functions/structure used to do MHEG-5 ASN.1 syntax parsing.
Typedefs, macros used by all of parser. These may be duplicated elsewhere.
int fpa1_rdfGetNextByte(void)
void fpa1_rdfMoveToContents(void)
Typedefs for script reading functions.
Contains macros for MHEG-5 ASN.1 tags and structures.
vpa1_filePos fpa1_rdfGetNextTagPosn(void)
syntax item block manager Contains functions to create a mini memory manager for allocating syntax li...
int fpa1_delList(fpa1_syntaxList *firstComp)
vpa1_filePos fpa1_rdfGetContentLength(void)
int fpa1_rdfGetByteAbsolute(vpa1_filePos pos)
Contains memory management functions.
int fpa1_rdfGetBooleanAbsolute(vpa1_filePos pos)
int fpa1_rdfGetIntegerAbsolute(vpa1_filePos pos, int intLength)
vpa1_filePos fpa1_rdfGetCurrentFilePosition(void)
int fpa1_rdfSetNewFilePosition(vpa1_filePos newPosition)
fpa1_syntaxList * fpa1_choiceParse(int *)
fpa1_syntaxList * fpa1_synGetUnknowns(vpa1_filePos, vpa1_filePos, fpa1_syntaxList *)