diff --git a/main.cpp b/main.cpp index 871b83c..fdf4290 100644 --- a/main.cpp +++ b/main.cpp @@ -11,7 +11,6 @@ * * Edit on 03 de Fevereiro de 2014 */ - #include "serviceWindowGenerationFromSRT.h" #include "serviceWindowGenerationFromREC.h" #include "serviceWindowGenerationFromText.h" @@ -21,10 +20,6 @@ #include #include -#define BLOQUEANTE 1 -#define NAO_BLOQUEANTE 2 -#define BOTH 3 - using namespace std; void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type); @@ -37,6 +32,7 @@ void serviceText(char* service, char* path_text, char* transparency, char* id, c void help(); void serviceHelp(int service); +void setStatusOfReady(char* ready); void fail(string msg); void hasFailed(); void hasInvalid(); @@ -52,15 +48,6 @@ int main(int argc, char* argv[]) { gettimeofday(&tv1, NULL); t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00; - /*try{ - PropertyHandler* reader = new PropertyHandler(); - service-type = reader->getAttributeValue("SERVICE-TYPE"); - }catch(RuntimeException &ex){ - return; // escrever log aki - }*/ - - //Util::Logger::Instance()->writeInfoLog("/home/wesnydy/.vlibras-conf/service/log-vbox", "VBox OK!"); - printf("\n################## VLIBRAS : LAVID ##################\n\n"); if(argc >= 2) { @@ -75,23 +62,25 @@ int main(int argc, char* argv[]) { hasInvalid(); break; } - if(argc == 9) + if(argc == 9){ + setStatusOfReady("0"); serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], "user"); - else + setStatusOfReady("1"); + }else serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); break; case 2: - printf("[INFO] Serviço em manutenção!!!\n"); - exit(0); if(argc < 8){ serviceHelp(2); hasInvalid(); break; } - if(argc == 8) + if(argc == 8){ + setStatusOfReady("0"); serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], "user"); - else + setStatusOfReady("1"); + }else serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]); break; case 3: @@ -100,9 +89,11 @@ int main(int argc, char* argv[]) { hasInvalid(); break; } - if(argc == 5) + if(argc == 5){ + setStatusOfReady("0"); serviceText(argv[1], argv[2], argv[3], argv[4], "user"); - else + setStatusOfReady("1"); + }else serviceText(argv[1], argv[2], argv[3], argv[4], argv[5]); break; case 4: @@ -111,9 +102,11 @@ int main(int argc, char* argv[]) { hasInvalid(); break; } - if(argc == 5 ) + if(argc == 5 ){ + setStatusOfReady("0"); serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], "user"); - else + setStatusOfReady("1"); + }else serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], argv[5]); break; case 5: @@ -124,9 +117,11 @@ int main(int argc, char* argv[]) { hasInvalid(); break; } - if (argc == 5) + if (argc == 5){ + setStatusOfReady("0"); serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], "user"); - else + setStatusOfReady("1"); + }else serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], argv[5]); break; default: @@ -154,6 +149,13 @@ int main(int argc, char* argv[]) { } +void setStatusOfReady(char* ready){ + char* status = new char[256]; + strcpy(status, "READY="); + strcat(status,ready); + Util::Logger::Instance()->writeInfoLog("/home/wesnydy/.vlibras-conf/service/log-vbox", status); +} + void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type){ diff --git a/recognize/src/include/recognize.h b/recognize/src/include/recognize.h index 75b81a2..7ff03ff 100644 --- a/recognize/src/include/recognize.h +++ b/recognize/src/include/recognize.h @@ -23,7 +23,9 @@ #define SIZE_BUFFER 256 #define CONFIDENCE_RATE 0.10 +#define WEB_USER 1 #define PATH_API_UPLOADS "vlibras_user/vlibras-api/uploads/" +#define PATH_VBOX_CONTENTS "vlibras_user/.vlibras-conf/contents/" #define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav" #define PATH_AUDIO_PARTS "/audio/parts/" #define FILENAME_RECOGNIZED_OUT "/audio/recognized.out" @@ -47,7 +49,7 @@ class Recognize: public Thread { public: - Recognize(char* _pathVideo, char* id); + Recognize(char* _pathVideo, char* id, int client_type); Recognize(char* _pathVideo, char* id, char* rate); Recognize(char* _pathVideo, int _inputType, char* id); ~Recognize(); @@ -76,6 +78,7 @@ public: private: + char* path_contents; char* pathVideo; string id; float confidenceRate; diff --git a/recognize/src/recognize.cpp b/recognize/src/recognize.cpp index 0e9acf5..857724c 100644 --- a/recognize/src/recognize.cpp +++ b/recognize/src/recognize.cpp @@ -1,6 +1,6 @@ #include -Recognize::Recognize(char* _pathVideo, char* _id) { +Recognize::Recognize(char* _pathVideo, char* _id, int client_type) { listeners = new list(); pathVideo = _pathVideo; @@ -11,6 +11,12 @@ Recognize::Recognize(char* _pathVideo, char* _id) { ss << _id; ss >> id; confidenceRate=CONFIDENCE_RATE; + if(client_type == WEB_USER){ + path_contents = (char*) PATH_API_UPLOADS; + }else{ + path_contents = (char*) PATH_VBOX_CONTENTS; + } + DPRINTF("Done!\n"); } @@ -103,26 +109,22 @@ char* Recognize::extractAudioFromVideo() { //command.append(strFreq).append(" -ac 1 -f wav ").append(PATH_AUDIO_ORIGIN).append(" &"); command.append(strFreq). append(" -ac 1 -f wav "). - append(PATH_API_UPLOADS). - append(id). - append(PATH_AUDIO_ORIGIN). - - append(" -v quiet"); + append(path_contents).append(id). + append(PATH_AUDIO_ORIGIN).append(" -v quiet"); /*string tmp = "echo "; tmp.append(PATH_AUDIO_ORIGIN).append(" >> ").append(FILENAME_AUDIOLIST); system(tmp.c_str());*/ - system(command.c_str()); - } int Recognize::getTimeMediaSec() { string command = PROGRAM; - command.append(" -i ").append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_ORIGIN); - command.append(" 2>&1 | grep Duration >> outfile"); + + command.append(" -i ").append(path_contents).append(id).append(PATH_AUDIO_ORIGIN) + .append(" 2>&1 | grep Duration >> outfile"); system(command.c_str()); ifstream in("outfile"); @@ -183,7 +185,9 @@ void Recognize::breakVideoParts(int timeTotal) { pts.push_back(convert_pts(ss_str)); command = "sox "; - command.append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_ORIGIN).append(" ").append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_PARTS); + command.append(path_contents).append(id).append(PATH_AUDIO_ORIGIN).append(" ") + .append(path_contents).append(id).append(PATH_AUDIO_PARTS); + sprintf(tmp, "%i", count++); filename.append(tmp).append(".wav"); command.append(filename).append(" trim ").append(ss_str).append(" ").append(t_str); @@ -191,7 +195,10 @@ void Recognize::breakVideoParts(int timeTotal) { system(command.c_str()); string apcomm = "echo "; - apcomm.append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_PARTS).append(filename).append(" >> ").append(PATH_API_UPLOADS).append(id).append(FILENAME_AUDIOLIST); + + apcomm.append(path_contents).append(id).append(PATH_AUDIO_PARTS).append(filename).append(" >> ") + .append(path_contents).append(id).append(FILENAME_AUDIOLIST); + system(apcomm.c_str()); filename = FILENAME_AUDIOPART; @@ -208,19 +215,18 @@ void Recognize::executeJuliusEngine() { char cfreq[10]; command = "julius -C vlibras_user/vlibras-core/recognize/src/julius.jconf -input "; - if (inputType == 1) { + + if (inputType == 1) type = "rawfile"; - command.append(type).append(" -filelist ").append(PATH_API_UPLOADS).append(id).append(FILENAME_AUDIOLIST); - } else { - type = "mic"; - } + else + type = "mic"; + + command.append(type).append(" -filelist ").append(path_contents).append(id).append(FILENAME_AUDIOLIST); sprintf(cfreq, "%i", frequency); command.append(" -smpFreq "). append(cfreq). - append(" -nolog >> "). - append(PATH_API_UPLOADS).append(id). - append(FILENAME_RECOGNIZED_OUT); - + append(" -nolog >> "); + command.append(path_contents).append(id).append(FILENAME_RECOGNIZED_OUT); //Command of execute Julius //printf("\n\nCommand for executeJuliusEngine: %s\n", command.c_str()); system(command.c_str()); @@ -230,14 +236,13 @@ void Recognize::executeJuliusEngine() { void Recognize::generateConfidence() { string command = "cat "; - command.append(PATH_API_UPLOADS).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). - append(FIND_CONFIDENCE).append(" >> ").append(PATH_API_UPLOADS).append(id).append(FILENAME_CONFIDENCEOUT); - + command.append(path_contents).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). + append(FIND_CONFIDENCE).append(" >> ").append(path_contents).append(id).append(FILENAME_CONFIDENCEOUT); system(command.c_str()); //printf("\n\n---> command: %s\n\n", command.c_str()); string path; - path.append(PATH_API_UPLOADS).append(id).append(FILENAME_CONFIDENCEOUT); + path.append(path_contents).append(id).append(FILENAME_CONFIDENCEOUT); ifstream in(path.c_str()); if (!in) { @@ -307,16 +312,15 @@ void Recognize::filterOutputJulius() { sentences = new std::list(); string command = "cat "; - command.append(PATH_API_UPLOADS).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep -e "). - append(FIND_SENTENCE).append(" -e \"").append(AUDIO_SILENT).append("\"").append(" >> ").append(PATH_API_UPLOADS).append(id).append(FILENAME_FILTEROUT); - + command.append(path_contents).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep -e "). + append(FIND_SENTENCE).append(" -e \"").append(AUDIO_SILENT).append("\"").append(" >> ").append(path_contents).append(id).append(FILENAME_FILTEROUT); system(command.c_str()); //printf("\n\n---> command: %s\n\n", command.c_str()); count_lines = 0; string path; - path.append(PATH_API_UPLOADS).append(id).append(FILENAME_FILTEROUT); + path.append(path_contents).append(id).append(FILENAME_FILTEROUT); ifstream in(path.c_str()); string strFilter; @@ -398,15 +402,16 @@ bool Recognize::isFinished() { void Recognize::cleanFiles() { string command = "rm -r "; - command.append(PATH_API_UPLOADS).append(id).append("/audio"); + command.append(path_contents).append(id).append("/audio"); system(command.c_str()); } void Recognize::createDir(){ string command = "mkdir "; - command.append(PATH_API_UPLOADS).append(id).append("/audio").append(" && mkdir "). - append(PATH_API_UPLOADS).append(id).append("/audio/parts").append(" && mkdir "). - append(PATH_API_UPLOADS).append(id).append("/audio/origin"); + command.append(path_contents).append(id) + .append(" && mkdir ").append(path_contents).append(id).append("/audio") + .append(" && mkdir ").append(path_contents).append(id).append("/audio/parts") + .append(" && mkdir ").append(path_contents).append(id).append("/audio/origin"); system(command.c_str()); } diff --git a/servico/src/serviceWindowGenerationFromREC.cpp b/servico/src/serviceWindowGenerationFromREC.cpp index 6299569..52412f7 100644 --- a/servico/src/serviceWindowGenerationFromREC.cpp +++ b/servico/src/serviceWindowGenerationFromREC.cpp @@ -16,7 +16,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( } ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( - char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int _serviceType) { + char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int serviceType) { setPathInput(path_video); setSubLanguage(sublanguage); @@ -26,7 +26,11 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( setServiceType(serviceType); setClientType(client_type); setUserId(id); - rec = new Recognize(path_video, id); + if(strcmp(client_type, "web") == 0) + rec = new Recognize(path_video, id, 1);// parametro 1 indica que é um cliente web + else + rec = new Recognize(path_video, id, 0);// parametro 0 indica que é um cliente diferente, ex: cloud + finish = false; DPRINTF("Done!\n"); } -- libgit2 0.21.2