float hsStream::ReadLEFloat() { float value; Read4Bytes(&value); value = hsToLEFloat(value); return value; }
uint32_t hsStream::ReadBE32() { uint32_t value; Read4Bytes(&value); value = hsToBE32(value); return value; }
UT_Error IE_ImpGraphic_Win32Native::Read_BMP_Header(UT_ByteBuf* pBB) { /* Stepping Through the Header Data first all the File Info * Then the Image Info until reached the end of the image Header Size * Note some simple checks for data out of bounds are included */ /* File Info Starts Here */ m_iBytesRead = 0; m_iFileType = Read2Bytes(pBB,m_iBytesRead); if (m_iFileType != 0x4D42) return UT_IE_BOGUSDOCUMENT; m_iFileSize = Read4Bytes(pBB,m_iBytesRead); m_iXHotspot = Read2Bytes(pBB,m_iBytesRead); m_iYHotspot = Read2Bytes(pBB,m_iBytesRead); m_iOffset = Read4Bytes(pBB,m_iBytesRead); /* Image Info Starts Here */ m_iHeaderSize = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_IE_BOGUSDOCUMENT; /* More Header Info Needed */ m_bOldBMPFormat = (m_iHeaderSize <=12) ? true : false; m_iWidth = (m_bOldBMPFormat) ? static_cast<UT_sint32>(Read2Bytes(pBB,m_iBytesRead) ): static_cast<UT_sint32>(Read4Bytes(pBB,m_iBytesRead) ); m_iHeight = (m_bOldBMPFormat) ? static_cast<UT_sint32>(Read2Bytes(pBB,m_iBytesRead) ): static_cast<UT_sint32>(Read4Bytes(pBB,m_iBytesRead) ); if (m_bHeaderDone) return UT_IE_BOGUSDOCUMENT; /* More Header Info Needed */ m_iPlanes = Read2Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_IE_BOGUSDOCUMENT; /* More Header Info Needed */ if (m_iPlanes != 1) return UT_IE_BOGUSDOCUMENT; m_iBitsPerPlane = Read2Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; /* This rest of the header is read but not normally required */ m_iCompression = Read4Bytes(pBB,m_iBytesRead); if (m_iCompression != 0) return UT_IE_BOGUSDOCUMENT; if (m_bHeaderDone) return UT_OK; m_iImageSize = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iXResolution = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iYResolution = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iClrUsed = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iClrImportant = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iResolutionUnits = Read2Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iPadding = Read2Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iOrigin = Read2Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iHalfToning = Read2Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iHalfToningParam1 = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iHalfToningParam2 = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iClrEncoding = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; m_iIdentifier = Read4Bytes(pBB,m_iBytesRead); if (m_bHeaderDone) return UT_OK; /* Document Using non-standard HeaderSize Assume OK */ return UT_OK; }
espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int srate) {//=================================================================================== // Load a phoneme name translation table from espeak-data/mbrola int size; int ix; int *pw; FILE *f_in; char path[sizeof(path_home)+15]; mbrola_name[0] = 0; mbrola_delay = 0; mbr_name_prefix = 0; if(mbrola_voice == NULL) { samplerate = samplerate_native; SetParameter(espeakVOICETYPE,0,0); return(EE_OK); } sprintf(path,"%s/mbrola/%s",path_home,mbrola_voice); #ifdef PLATFORM_POSIX // if not found, then also look in // usr/share/mbrola/xx, /usr/share/mbrola/xx/xx, /usr/share/mbrola/voices/xx if(GetFileLength(path) <= 0) { sprintf(path,"/usr/share/mbrola/%s",mbrola_voice); } if(GetFileLength(path) <= 0) { sprintf(path,"/usr/share/mbrola/%s/%s",mbrola_voice,mbrola_voice); } if(GetFileLength(path) <= 0) { sprintf(path,"/usr/share/mbrola/voices/%s",mbrola_voice); } #endif #ifdef PLATFORM_WINDOWS if(load_MBR() == FALSE) // load mbrola.dll { fprintf(stderr, "Can't load mbrola.dll\n"); return(EE_INTERNAL_ERROR); } #endif if(init_MBR(path) != 0) // initialise the required mbrola voice return(EE_NOT_FOUND); setNoError_MBR(1); // don't stop on phoneme errors // read eSpeak's mbrola phoneme translation data, eg. en1_phtrans sprintf(path,"%s/mbrola_ph/%s",path_home,phtrans); size = GetFileLength(path); if((f_in = fopen(path,"rb")) == NULL) { close_MBR(); return(EE_NOT_FOUND); } if((mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab,size)) == NULL) { fclose(f_in); close_MBR(); return(EE_INTERNAL_ERROR); } mbrola_control = Read4Bytes(f_in); pw = (int *)mbrola_tab; for(ix=4; ix<size; ix+=4) { *pw++ = Read4Bytes(f_in); } size = fread(mbrola_tab,1,size,f_in); fclose(f_in); setVolumeRatio_MBR((float)(mbrola_control & 0xff) /16.0f); // srate = getFreq_MBR(); samplerate = srate; if(srate == 22050) SetParameter(espeakVOICETYPE,0,0); else SetParameter(espeakVOICETYPE,1,0); strcpy(mbrola_name,mbrola_voice); // mbrola_delay = 3800; // improve synchronization of events mbrola_delay = 1000; // improve synchronization of events return(EE_OK); } // end of LoadMbrolaTable
espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate) { // Load a phoneme name translation table from espeak-ng-data/mbrola int size; int ix; int *pw; FILE *f_in; char path[sizeof(path_home)+15]; mbrola_name[0] = 0; mbrola_delay = 0; mbr_name_prefix = 0; if (mbrola_voice == NULL) { samplerate = samplerate_native; SetParameter(espeakVOICETYPE, 0, 0); return ENS_OK; } if (!load_MBR()) return ENS_MBROLA_NOT_FOUND; sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice); #ifdef PLATFORM_POSIX // if not found, then also look in // usr/share/mbrola/xx, /usr/share/mbrola/xx/xx, /usr/share/mbrola/voices/xx if (GetFileLength(path) <= 0) { sprintf(path, "/usr/share/mbrola/%s", mbrola_voice); if (GetFileLength(path) <= 0) { sprintf(path, "/usr/share/mbrola/%s/%s", mbrola_voice, mbrola_voice); if (GetFileLength(path) <= 0) sprintf(path, "/usr/share/mbrola/voices/%s", mbrola_voice); } } close_MBR(); #endif if (init_MBR(path) != 0) // initialise the required mbrola voice return ENS_MBROLA_VOICE_NOT_FOUND; setNoError_MBR(1); // don't stop on phoneme errors // read eSpeak's mbrola phoneme translation data, eg. en1_phtrans sprintf(path, "%s/mbrola_ph/%s", path_home, phtrans); size = GetFileLength(path); if ((f_in = fopen(path, "rb")) == NULL) { int error = errno; close_MBR(); return error; } MBROLA_TAB *new_mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab, size); if (new_mbrola_tab == NULL) { fclose(f_in); close_MBR(); return ENOMEM; } mbrola_tab = new_mbrola_tab; mbrola_control = Read4Bytes(f_in); pw = (int *)mbrola_tab; for (ix = 4; ix < size; ix += 4) *pw++ = Read4Bytes(f_in); fclose(f_in); setVolumeRatio_MBR((float)(mbrola_control & 0xff) /16.0f); samplerate = *srate = getFreq_MBR(); if (*srate == 22050) SetParameter(espeakVOICETYPE, 0, 0); else SetParameter(espeakVOICETYPE, 1, 0); strcpy(mbrola_name, mbrola_voice); mbrola_delay = 1000; // improve synchronization of events return ENS_OK; }