summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/talkfile.cpp
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2007-12-14 19:26:54 +0000
committerDominik Wenger <domonoky@googlemail.com>2007-12-14 19:26:54 +0000
commit815504b44919ac73923359e12aa29fb409cefda2 (patch)
tree1247110323388df365c80da86063d75b5a438eb3 /rbutil/rbutilqt/talkfile.cpp
parented047d9db1dcee92afb8fe6bacb5d90ccb39481e (diff)
downloadrockbox-815504b44919ac73923359e12aa29fb409cefda2.tar.gz
rockbox-815504b44919ac73923359e12aa29fb409cefda2.zip
rbutil: added builtin rbspeex encoder. Reworked encoder configuration.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15925 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/talkfile.cpp')
-rw-r--r--rbutil/rbutilqt/talkfile.cpp66
1 files changed, 26 insertions, 40 deletions
diff --git a/rbutil/rbutilqt/talkfile.cpp b/rbutil/rbutilqt/talkfile.cpp
index e13647deb2..141af0b5ec 100644
--- a/rbutil/rbutilqt/talkfile.cpp
+++ b/rbutil/rbutilqt/talkfile.cpp
@@ -24,21 +24,6 @@ TalkFileCreator::TalkFileCreator(QObject* parent): QObject(parent)
24 24
25} 25}
26 26
27
28bool TalkFileCreator::initEncoder()
29{
30 QFileInfo enc(m_EncExec);
31 if(enc.exists())
32 {
33 return true;
34 }
35 else
36 {
37 return false;
38 }
39}
40
41
42bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) 27bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
43{ 28{
44 m_abort = false; 29 m_abort = false;
@@ -60,12 +45,18 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
60 m_logger->addItem("Init of TTS engine failed",LOGERROR); 45 m_logger->addItem("Init of TTS engine failed",LOGERROR);
61 return false; 46 return false;
62 } 47 }
63 if(!initEncoder()) 48
49 // Encoder
50 m_enc = getEncoder(userSettings->value("encoder").toString());
51 m_enc->setUserCfg(userSettings);
52
53 if(!m_enc->start())
64 { 54 {
65 m_logger->addItem("Init of encoder failed",LOGERROR); 55 m_logger->addItem("Init of Encoder engine failed",LOGERROR);
66 m_tts->stop(); 56 m_tts->stop();
67 return false; 57 return false;
68 } 58 }
59
69 QApplication::processEvents(); 60 QApplication::processEvents();
70 61
71 connect(logger,SIGNAL(aborted()),this,SLOT(abort())); 62 connect(logger,SIGNAL(aborted()),this,SLOT(abort()));
@@ -88,13 +79,16 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
88 QString toSpeak; 79 QString toSpeak;
89 QString filename; 80 QString filename;
90 QString wavfilename; 81 QString wavfilename;
91 82
92 //! skip dotdot and .talk files 83 QString path = fileInf.filePath();
93 if(fileInf.fileName() == ".." || fileInf.suffix() == "talk") 84 qDebug() << path;
85
86 if( path.endsWith("..") || path.endsWith(".talk") )
94 { 87 {
95 it.next(); 88 it.next();
96 continue; 89 continue;
97 } 90 }
91
98 //! if it is a dir 92 //! if it is a dir
99 if(fileInf.isDir()) 93 if(fileInf.isDir())
100 { 94 {
@@ -103,9 +97,14 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
103 { 97 {
104 it.next(); 98 it.next();
105 continue; 99 continue;
106 } 100 }
107 toSpeak = fileInf.absoluteDir().dirName(); 101 int index1 = path.lastIndexOf("/");
108 filename = fileInf.absolutePath() + "/_dirname.talk"; 102 int index2 = path.lastIndexOf("/",index1-1);
103
104 toSpeak = path.mid(index2+1,(index1-index2)-1);
105
106 filename = path.left(index1) + "/_dirname.talk";
107 qDebug() << "toSpeak: " << toSpeak << "filename: " << filename;
109 } 108 }
110 else // if it is a file 109 else // if it is a file
111 { 110 {
@@ -137,15 +136,17 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
137 m_logger->addItem("Voicing of " + toSpeak + " failed",LOGERROR); 136 m_logger->addItem("Voicing of " + toSpeak + " failed",LOGERROR);
138 m_logger->abort(); 137 m_logger->abort();
139 m_tts->stop(); 138 m_tts->stop();
139 m_enc->stop();
140 return false; 140 return false;
141 } 141 }
142 } 142 }
143 m_logger->addItem("Encoding of " + toSpeak,LOGINFO); 143 m_logger->addItem("Encoding of " + toSpeak,LOGINFO);
144 if(!encode(wavfilename,filename)) 144 if(!m_enc->encode(wavfilename,filename))
145 { 145 {
146 m_logger->addItem("Encoding of " + wavfilename + " failed",LOGERROR); 146 m_logger->addItem("Encoding of " + wavfilename + " failed",LOGERROR);
147 m_logger->abort(); 147 m_logger->abort();
148 m_tts->stop(); 148 m_tts->stop();
149 m_enc->stop();
149 return false; 150 return false;
150 } 151 }
151 } 152 }
@@ -182,21 +183,6 @@ void TalkFileCreator::abort()
182 m_abort = true; 183 m_abort = true;
183} 184}
184 185
185bool TalkFileCreator::encode(QString input,QString output)
186{
187 qDebug() << "encoding..";
188 QString execstring = m_curEncTemplate;
189
190 execstring.replace("%exe",m_EncExec);
191 execstring.replace("%options",m_EncOpts);
192 execstring.replace("%input",input);
193 execstring.replace("%output",output);
194 qDebug() << execstring;
195 QProcess::execute(execstring);
196 return true;
197
198}
199
200bool TTSSapi::start() 186bool TTSSapi::start()
201{ 187{
202 QFileInfo tts(m_TTSexec); 188 QFileInfo tts(m_TTSexec);
@@ -257,7 +243,7 @@ bool TTSExes::voice(QString text,QString wavfile)
257 execstring.replace("%options",m_TTSOpts); 243 execstring.replace("%options",m_TTSOpts);
258 execstring.replace("%wavfile",wavfile); 244 execstring.replace("%wavfile",wavfile);
259 execstring.replace("%text",text); 245 execstring.replace("%text",text);
260 qDebug() << "voicing" << execstring; 246 //qDebug() << "voicing" << execstring;
261 QProcess::execute(execstring); 247 QProcess::execute(execstring);
262 return true; 248 return true;
263 249