Browse Source

Return an espeak_ng_STATUS code in LoadSpectSeq.

master
Reece H. Dunn 9 years ago
parent
commit
ccb409c600

+ 2
- 0
src/include/espeak-ng/espeak_ng.h View File

ENS_MBROLA_VOICE_NOT_FOUND = 0x100008FF, ENS_MBROLA_VOICE_NOT_FOUND = 0x100008FF,
ENS_EVENT_BUFFER_FULL = 0x100009FF, ENS_EVENT_BUFFER_FULL = 0x100009FF,
ENS_NOT_SUPPORTED = 0x10000AFF, ENS_NOT_SUPPORTED = 0x10000AFF,
ENS_UNSUPPORTED_SPECT_FORMAT = 0x10000BFF,
ENS_NO_SPECT_FRAMES = 0x10000CFF,
} espeak_ng_STATUS; } espeak_ng_STATUS;


typedef enum { typedef enum {

+ 2
- 4
src/libespeak-ng/compiledata.c View File

} }


snprintf(filename, sizeof(filename), "%s/../phsource/%s", path_home, path); snprintf(filename, sizeof(filename), "%s/../phsource/%s", path_home, path);
LoadSpectSeq(spectseq, filename);

if (spectseq->frames == NULL) {
error("Bad vowel file, no frames: '%s'", path);
if (LoadSpectSeq(spectseq, filename) != ENS_OK) {
error("Bad vowel file: '%s'", path);
SpectSeqDestroy(spectseq); SpectSeqDestroy(spectseq);
return 0; return 0;
} }

+ 6
- 5
src/libespeak-ng/spect.c View File



#include "config.h" #include "config.h"


#include <errno.h>
#include <stdio.h> #include <stdio.h>
#if HAVE_STDINT_H #if HAVE_STDINT_H
#include <stdint.h> #include <stdint.h>
return (spect->frames[ix]->time - spect->frames[frame]->time) * 1000.0 + adjust; return (spect->frames[ix]->time - spect->frames[frame]->time) * 1000.0 + adjust;
} }


int LoadSpectSeq(SpectSeq *spect, const char *filename)
espeak_ng_STATUS LoadSpectSeq(SpectSeq *spect, const char *filename)
{ {
short n, temp; short n, temp;
int ix; int ix;
FILE *stream = fopen(filename, "rb"); FILE *stream = fopen(filename, "rb");
if (stream == NULL) { if (stream == NULL) {
fprintf(stderr, "Failed to open: '%s'", filename); fprintf(stderr, "Failed to open: '%s'", filename);
return 0;
return errno;
} }


fread(&id1, sizeof(uint32_t), 1, stream); fread(&id1, sizeof(uint32_t), 1, stream);
else { else {
fprintf(stderr, "Unsupported spectral file format.\n"); fprintf(stderr, "Unsupported spectral file format.\n");
fclose(stream); fclose(stream);
return 1;
return ENS_UNSUPPORTED_SPECT_FORMAT;
} }


fread(&name_len, sizeof(uint32_t), 1, stream); fread(&name_len, sizeof(uint32_t), 1, stream);


if (n == 0) { if (n == 0) {
fclose(stream); fclose(stream);
return 0;
return ENS_NO_SPECT_FRAMES;
} }


if (spect->frames != NULL) { if (spect->frames != NULL) {
spect->frames[ix]->length_adjust = spect->frames[ix]->length - GetFrameLength(spect, ix); spect->frames[ix]->length_adjust = spect->frames[ix]->length - GetFrameLength(spect, ix);
} }
fclose(stream); fclose(stream);
return 0;
return ENS_OK;
} }

+ 2
- 2
src/libespeak-ng/spect.h View File

/* /*
* Copyright (C) 2005 to 2007 by Jonathan Duddington * Copyright (C) 2005 to 2007 by Jonathan Duddington
* email: [email protected] * email: [email protected]
* Copyright (C) 2013-2015 Reece H. Dunn
* Copyright (C) 2013-2016 Reece H. Dunn
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by


SpectSeq *SpectSeqCreate(); SpectSeq *SpectSeqCreate();
void SpectSeqDestroy(SpectSeq *spect); void SpectSeqDestroy(SpectSeq *spect);
int LoadSpectSeq(SpectSeq *spect, const char *filename);
espeak_ng_STATUS LoadSpectSeq(SpectSeq *spect, const char *filename);


#ifdef __cplusplus #ifdef __cplusplus
} }

Loading…
Cancel
Save