void loadTextureMemory(const char* fileName) { if (checkExt(fileName,".JPG")) { loadJpgMemory(); } }
// This fn lets the caller know if it is a image file, video or audio // file Z_FILE_TYPE ZUtilGetFileType(char *fullPath) { Z_FILE_TYPE fileType = Z_UNKNOWN_FILE; if (checkExt(fullPath, "jpg,raw")) { fileType = Z_JPEG_FILE; goto funcOut; } if (checkExt(fullPath, "bmp")) { fileType = Z_BMP_FILE; goto funcOut; } if (checkExt(fullPath, "gif")) { fileType = Z_GIF_FILE; goto funcOut; } if (checkExt(fullPath, "tif, tiff")) { fileType = Z_TIF_FILE; goto funcOut; } if (checkExt(fullPath, "png")) { fileType = Z_PNG_FILE; goto funcOut; } if (checkExt(fullPath, "flac")) { fileType = Z_FLAC_FILE; goto funcOut; } // Handle all audio formats... if (checkExt(fullPath, "lpcm,pcm")) { fileType = Z_LPCM_FILE; goto funcOut; } if (checkExt(fullPath, "wav")) { fileType = Z_WAV_FILE; goto funcOut; } if (checkExt(fullPath, "wma")) { fileType = Z_WMA_FILE; goto funcOut; } if (checkExt(fullPath, "mp2,mp3,m2a")) { fileType = Z_MP3_FILE; goto funcOut; } // Added by David; 2007-06-16; if (checkExt(fullPath, "m4a")) { fileType = Z_M4A_FILE; goto funcOut; } if (checkExt(fullPath, "aac")) { fileType = Z_AAC_FILE; goto funcOut; } if (checkExt(fullPath, "aif,aiff")) { fileType = Z_AIFF_FILE; goto funcOut; } if (checkExt(fullPath, "midi")) { fileType = Z_MIDI_FILE; goto funcOut; } if (checkExt(fullPath, "ra,ram")) { fileType = Z_RA_FILE; goto funcOut; } if (checkExt(fullPath, "ogg")) { fileType = Z_OGG_FILE; goto funcOut; } if (checkExt(fullPath, "pls,m3u,wpl")) { fileType = Z_AUDIO_PLAYLIST; goto funcOut; } // Handle Video files.. if (checkExt(fullPath, "avi")) { fileType = Z_AVI_FILE; goto funcOut; } if (checkExt(fullPath, "divx")) { fileType = Z_DIVX_FILE; goto funcOut; } if (checkExt(fullPath, "xvid")) { fileType = Z_XVID_FILE; goto funcOut; } if (checkExt(fullPath, "mpeg,vob,mpg,ts")) { // After querying the libav, this will be changed to exact format... fileType = Z_MPEG_FILE; goto funcOut; } if (checkExt(fullPath, "mp4")) { // After querying the libav, this will be changed to exact format... fileType = Z_MPEG4_FILE; goto funcOut; } if (checkExt(fullPath, "asf")) { // After querying the libav, this will be changed to exact format... fileType = Z_ASF_FILE; goto funcOut; } if (checkExt(fullPath, "mov,qt")) { // After querying the libav, this will be changed to exact format... fileType = Z_QT_FILE; goto funcOut; } if (checkExt(fullPath, "wmv")) { fileType = Z_WMV_FILE; goto funcOut; } if (checkExt(fullPath, "asx")) { fileType = Z_VIDEO_PLAYLIST; goto funcOut; } funcOut: return(fileType); }
extern int EiC_lexan(void) { int t=0, loop; char c=0, EiC_nextchar(); #ifdef ILOOKAHEAD token = &EiC_TokenArray[EiC_TokenP]; if(EiC_TokenR > 0) { EiC_TokenR--; EiC_TokenI++; EiC_TokenP=(EiC_TokenP+1)%MAX_TOKENS; return token->Tok; } #else if (STOKEN != NOTOKEN) { STOKEN = NOTOKEN; return token->Tok; } #endif loop = 1; state = 0; while (loop) { switch (state) { case 0: lex_lastpos = lex_curpos; c = EiC_nextchar(); state = (WHITE(c) ? 0 : (c == '\n' ? lex_lineno++, 0 : (c == '<' ? t = LT, 1 : (c == '>' ? t = GT, 2 : (c == '+' ? t = '+', 3 : (c == '-' ? t = '-', 4 : (c == '|' ? t = BOR, 5 : (c == '&' ? t = AND, 6 : (c == '\''? 7 : (c == '"' ? 8 : (c == '.' ? 9 : (c == '/' ? t = '/', c = EiC_nextchar(), 50 : (c == '%' ? t = '%', c = EiC_nextchar(), 50 : (c == '*' ? t = '*', c = EiC_nextchar(), 50 : (c == '=' ? t = ASS, c = EiC_nextchar(), 50 : (c == '!' ? t = NOT, c = EiC_nextchar(), 50 : (c == '^' ? t = XOR, c = EiC_nextchar(), 50 : //(c == '~' ? t = NOTB, c = EiC_nextchar(), 50 : //maks: ~ fail(RELOP, c)))))))))))))))))); break; case 1: /* get <, <= and << */ if ((c = EiC_nextchar()) == '<') t = LSHT; else state = 50; break; case 2: /* get >, >= and >> */ if ((c = EiC_nextchar()) == '>') t = RSHT; else state = 50; break; case 3: c = EiC_nextchar(); /* get +, += or ++ */ if (c == '+') t = INC, state = 60; else state = 50; break; case 4: c = EiC_nextchar(); /* get -, -= -- */ state = 60; if (c == '-') t = DEC; else if (c == '>') t = RARROW; else state = 50; break; case 5: c = EiC_nextchar(); /* get |, |= or || */ if (c == '|') t = LOR, state = 60; else state = 50; break; case 6: c = EiC_nextchar(); /* get &, &= or && */ if (c == '&') t = LAND, state = 60; else state = 50; break; case 7:token->Val.ival = charliteral(EiC_nextchar()); /* char_constants */ t = TOKEN_CHAR; if (EiC_nextchar() != '\'') EiC_error("Missing single quote '"); state = 60; break; case 8: EiC_stringliteral(); /* string literals */ token->Tok = STR; /*return STR;*/ loop = 0; break; case 9: c = EiC_nextchar(); t = '.'; if(DIGIT(c)) state = 22; else state = 60; retract(c); break; case 10: c = EiC_nextchar(); /* identifiers and keywords */ state = (LETTER(c) ? 11 : (c == '_' ? 11 : fail(ID, c))); break; case 11: c = EiC_nextchar(); state = (LETTER(c) ? 11 : (DIGIT(c) ? 11 : (c == '_' ? 11 : 12))); break; case 12: retract(c); success(ID); /*return (token->Tok);*/ loop = 0; break; case 20: c = EiC_nextchar(); /* integers and reals */ state = (c == '0' ? 30 : (DIGIT(c) ? 21 : fail(TOKEN_INT, c))); break; case 21: c = EiC_nextchar(); state = (DIGIT(c) ? 21 : (c == '.' ? 22 : (c == 'e' ? 23 : (c == 'E' ? 23 : 25)))); break; case 22: c = EiC_nextchar(); state = (DIGIT(c) ? 22 : (c == 'e' ? 23 : (c == 'E' ? 23 : 26))); break; case 23: c = EiC_nextchar(); state = (c == '+' ? 24 : (c == '-' ? 24 : (DIGIT(c) ? 24 : fail(TOKEN_FLOAT, c) /* ??? */ ))); break; case 24: c = EiC_nextchar(); state = (DIGIT(c) ? 24 : 26); break; case 25: checkExt(c); success(TOKEN_INT); /*return (token->Tok);*/ loop = 0; break; case 26: checkExt(c); success(TOKEN_FLOAT); /*return (token->Tok);*/ loop = 0; break; case 27: checkExt(c); success(HEX); /*return (token->Tok);*/ loop = 0; break; case 28: checkExt(c); success(OCTAL); /*return (token->Tok);*/ loop = 0; break; case 30: /* check for octal and hex numbers */ if ((c = EiC_nextchar()) == 'x' || c == 'X') { while (gethex((c = EiC_nextchar())) > -1); state = 27; break; } if (c != '.' && c != 'e' && c != 'E') { while (getoct(c) > -1) c = EiC_nextchar(); state = 28; break; } retract(c); state = 21; break; case 50: /* mix with equal's */ if (c == '=') switch (t) { case '+': t = ADDEQ; break; /* += */ case '-': t = SUBEQ; break; /* -= */ case '/': t = DIVEQ; break; /* /= */ case '*': t = MULEQ; break; /* *= */ case '%': t = MODEQ; break; /* %= */ case ASS: t = EQ; break; /* == */ case GT: t = GE; break; /* >= */ case LT: t = LE; break; /* <= */ case NOT: t = NE; break; /* != */ case RSHT:t = RSHTEQ; break; /* >>= */ case LSHT:t = LSHTEQ; break; /* <<= */ case AND: t = ANDEQ; break; /* &= */ case BOR: t = BOREQ; break; /* |= */ case XOR: t = XOREQ; break; /* ^= */ //case NOTB: t = NOTBEQ; break; /* maks ~= */ default: retract(c); } else if(c == '/' && t == '/') //maks { //C++ comment //Only for colorize //Comments are removed by preprocessor before parser do { c = EiC_nextchar(); } while(c && c != '\n'); retract(c); success(MISC); token->Tok = TOKEN_COMMENT; loop = 0; break; } else retract(c); state = 60; break; case 60: success(MISC); token->Tok = t; /*return (token->Tok);*/ loop = 0; break; case 100: token->Tok = EiC_nextchar(); /*return (token->Tok);*/ loop = 0; break; } } #ifdef ILOOKAHEAD if(EiC_TokenI<MAX_TOKENS) EiC_TokenI++; EiC_TokenP = (EiC_TokenP +1)%MAX_TOKENS; #endif return token->Tok; }
void *ConvertThread(void *ctxt) { int nIsDir = 0; ENCODE_AUDIO_TYPE eAudioType; for(;;) { if(ConvertTask.nItemCount == 0) { break; } /*get encode item from the global var.*/ if((ConvertTask.eItemStatus == ITEM_INIT) &&(ConvertTask.CurEncodeItem.objID) &&(ConvertTask.CurEncodeItem.ptrAudioFormat) &&(ConvertTask.CurEncodeItem.ptrFormatCfg) ) { ZLock(&(ConvertTask.TaskItemLock)); ConvertTask.eThreadStatus = THREAD_START; ConvertTask.eItemStatus = ITEM_ENCODING; /*get the track path throught check the loacal database.*/ initMetaTrack(&(ConvertTask.TrackMeta)); /* Updated by Ke tao 2008-12-12*/ ZDBRipFindTrackMetadata(ConvertTask.ptrDBHandle, ConvertTask.CurEncodeItem.objID, &(ConvertTask.TrackMeta)); if(!ZUtilIsFilePresent(ConvertTask.TrackMeta.path, &nIsDir) || nIsDir || !checkExt(ConvertTask.TrackMeta.path, "wav")) /*if the track path isn't exists, as the normal quit*/ { DeletePendingTask(ENCPENDING, &ConvertTask.CurEncodeItem); ConvertTask.eItemStatus = ITEM_ENCODED; ConvertTask.eThreadStatus = THREAD_FINISHED; freeMetaTrack(&(ConvertTask.TrackMeta)); ZUnlock(&(ConvertTask.TaskItemLock)); continue; } ZFREE(ConvertTask.DiscAudioSrcPath); ZFREE(ConvertTask.DiscEncodePath); ConvertTask.DiscAudioSrcPath = strdup(ConvertTask.TrackMeta.path); ConvertTask.DiscEncodePath = calloc(sizeof(char), (strlen(ConvertTask.DiscAudioSrcPath)+BUF_64_BITS)); freeMetaTrack(&(ConvertTask.TrackMeta)); ZUnlock(&(ConvertTask.TaskItemLock)); } else { sleep(1); continue; } /*convert audio file to the eAudioType type.*/ eAudioType = GetAudioType(ConvertTask.CurEncodeItem.ptrAudioFormat); ConvertTask.eThreadStatus = THREAD_RUNNING; if(ConvertAudio(eAudioType, &ConvertTask.CurEncodeItem, ConvertTask.DiscAudioSrcPath, ConvertTask.DiscEncodePath) == ZAPP_FAILED) { ZLock(&(ConvertTask.TaskItemLock)); DeletePendingTask(ENCPENDING, &(ConvertTask.CurEncodeItem)); ConvertTask.eItemStatus = ITEM_ENCODED; ConvertTask.eThreadStatus = THREAD_FINISHED; ZFREE(ConvertTask.DiscAudioSrcPath); ZFREE(ConvertTask.DiscEncodePath); ZUnlock(&(ConvertTask.TaskItemLock)); continue; } /*write ID3 tag according the database.*/ if((eAudioType == MP3_AUDIO)||(eAudioType == FLAC_AUDIO)) { initMetaTrack(&(ConvertTask.TrackMeta)); /* Updated by Ke Tao 2008-12-12 */ ZDBRipFindTrackMetadata(ConvertTask.ptrDBHandle, ConvertTask.CurEncodeItem.objID, &(ConvertTask.TrackMeta)); WriteID3Tag(ConvertTask.DiscEncodePath, &(ConvertTask.TrackMeta)); freeMetaTrack(&(ConvertTask.TrackMeta)); } /*set update task to the zriptask database's updatapending table.*/ ZLock(&(ConvertTask.TaskItemLock)); ZFREE(ConvertTask.UpdateItem.objID); ZFREE(ConvertTask.UpdateItem.ptrAudioFormat); ZFREE(ConvertTask.UpdateItem.ptrWavPath); ZFREE(ConvertTask.UpdateItem.ptrEncPath); ConvertTask.UpdateItem.objID = strdup(ConvertTask.CurEncodeItem.objID); ConvertTask.UpdateItem.ptrAudioFormat = strdup(ConvertTask.CurEncodeItem.ptrAudioFormat); ConvertTask.UpdateItem.ptrWavPath = strdup(ConvertTask.DiscAudioSrcPath); ConvertTask.UpdateItem.ptrEncPath = strdup(ConvertTask.DiscEncodePath); InsertPendingTask(UPDATEPENDING, &(ConvertTask.UpdateItem)); /*Delete task to the zriptask database's EncPending table.*/ DeletePendingTask(ENCPENDING, &ConvertTask.CurEncodeItem); ConvertTask.eItemStatus = ITEM_ENCODED; ConvertTask.eThreadStatus = THREAD_FINISHED; ZUnlock(&(ConvertTask.TaskItemLock)); } return NULL; }