From 4eeb9359f380ba016a464b50ce6d4df10c698b25 Mon Sep 17 00:00:00 2001 From: Wesnydy Ribeiro Date: Wed, 4 Mar 2015 09:58:59 -0300 Subject: [PATCH] Adaptado o padrão de desenvolvimento dos componentes input, synchronizer e tradutor --- Makefile | 4 +--- extratorSRT/src/extratorSRT.cpp | 10 ++++------ extratorSRT/src/include/extratorSRT.h | 15 +++++++-------- extratorSRT/src/include/subtitle.h | 4 ++-- extratorTXT/src/extratorTXT.cpp | 14 ++++++-------- extratorTXT/src/include/extratorTXT.h | 4 ++-- extratorTXT/src/include/listenerTXT.h | 2 +- input/src/include/inputFile.h | 23 ++++++++++++----------- input/src/include/listenerInput.h | 19 +++++++++++++++++++ input/src/include/ouvinteInput.h | 23 ----------------------- input/src/inputFile.cpp | 34 +++++++++++++++------------------- input/src/ouvinteInput.cpp | 14 -------------- mixer/src/Mixer.cpp | 4 ---- mixer/src/include/Mixer.h | 7 ++----- monitorPCR/src/include/monitor_pcr.h | 14 +++++++++----- monitorPCR/src/monitor_pcr.cpp | 7 +------ recognize/src/include/recognize.h | 34 +++++++++++++++++++++++++++++++--- recognize/src/recognize.cpp | 48 ++++-------------------------------------------- servico/src/include/serviceWindowGeneration.h | 18 ++++++++++++------ servico/src/include/serviceWindowGenerationFromText.h | 2 +- servico/src/serviceWindowGeneration.cpp | 25 +++++-------------------- servico/src/serviceWindowGenerationFromREC.cpp | 4 +--- servico/src/serviceWindowGenerationFromSRT.cpp | 3 +-- servico/src/serviceWindowGenerationFromText.cpp | 4 ++-- synchronizer/src/include/listenerSynchronizer.h | 14 ++++++++++++++ synchronizer/src/include/ouvinteSynchronizer.h | 20 -------------------- synchronizer/src/include/synchronizer.h | 54 +++++++++++++++++++++++++++++++++++++----------------- synchronizer/src/ouvinteSynchronizer.cpp | 7 ------- synchronizer/src/synchronizer.cpp | 56 +++++++++++++++----------------------------------------- tradutor/src/include/listenerTradutor.h | 26 ++++++++++++++++++++++++++ tradutor/src/include/ouvinteTradutor.h | 27 --------------------------- tradutor/src/include/pyTradutor.h | 23 ++++++++++++----------- tradutor/src/include/tradutorPortGlosa.h | 41 +++++++++++++++++++++-------------------- tradutor/src/ouvinteTradutor.cpp | 18 ------------------ tradutor/src/tradutorPortGlosa.cpp | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------- util/src/include/logger.h | 1 - util/src/logger.cpp | 2 -- 37 files changed, 338 insertions(+), 443 deletions(-) create mode 100644 input/src/include/listenerInput.h delete mode 100644 input/src/include/ouvinteInput.h delete mode 100644 input/src/ouvinteInput.cpp create mode 100644 synchronizer/src/include/listenerSynchronizer.h delete mode 100644 synchronizer/src/include/ouvinteSynchronizer.h delete mode 100644 synchronizer/src/ouvinteSynchronizer.cpp create mode 100644 tradutor/src/include/listenerTradutor.h delete mode 100644 tradutor/src/include/ouvinteTradutor.h delete mode 100644 tradutor/src/ouvinteTradutor.cpp diff --git a/Makefile b/Makefile index 608d768..da5a40d 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ logger.o tradutorObjs = \ pyTradutor.o \ tradutorPortGlosa.o \ -ouvinteTradutor.o +#ouvinteTradutor.o extratorSRTObjs = \ extratorSRT.o \ @@ -37,7 +37,6 @@ monitor_pcr.o inputObjs = \ inputFile.o \ inputException.o \ -ouvinteInput.o servicoObjs = \ serviceWindowGeneration.o \ @@ -48,7 +47,6 @@ serviceException.o synchronizerObjs = \ synchronizer.o \ -ouvinteSynchronizer.o mixerObjs = \ Mixer.o diff --git a/extratorSRT/src/extratorSRT.cpp b/extratorSRT/src/extratorSRT.cpp index f2a7be8..4ca4490 100644 --- a/extratorSRT/src/extratorSRT.cpp +++ b/extratorSRT/src/extratorSRT.cpp @@ -1,8 +1,6 @@ - #include "extratorSRT.h" -using namespace std; ExtratorSRT::ExtratorSRT(){ listeners = new list(); @@ -30,8 +28,8 @@ void ExtratorSRT::initialize(){ file_io = new lavidlib::FileIO(file->getPath(), FileIO::MODE_READ); }catch(Exception ex){ finish = true; - Util::Logger::Instance()->writeLog((char*) "[ERRO: extratorSRT.cpp] Arquivo de texto não encontrado."); - throw ExtratorSrtException("Falha ao abrir o arquivo de texto! Verifique se o mesmo existe.\n"); + Util::Logger::Instance()->writeLog((char*) "[ERRO: extratorSRT.cpp] Arquivo de legenda não encontrado."); + throw ExtratorSrtException("Falha ao abrir o arquivo de legenda! Verifique se o mesmo existe.\n"); } this->Start(); @@ -93,13 +91,13 @@ void ExtratorSRT::Run(){ Subtitle* ExtratorSRT::next() { if (seek_pos >= file_io->getSize()) - throw ExtratorSrtException("[ERRO: reader_srt.cpp] Esse arquivo já foi lido."); + throw ExtratorSrtException("[ERRO: extratorSRT.cpp] Esse arquivo já foi lido."); file_io->seek(seek_pos); try{ bff_reader = new BufferedReader(file_io); }catch(Exception &ex){ - throw ExtratorSrtException("[ERRO: reader_srt.cpp] O BufferedReader não foi inicializado."); + throw ExtratorSrtException("[ERRO: extratorSRT.cpp] O BufferedReader não foi inicializado."); } Subtitle* sub = new Subtitle(); diff --git a/extratorSRT/src/include/extratorSRT.h b/extratorSRT/src/include/extratorSRT.h index 5f6092e..2c13351 100644 --- a/extratorSRT/src/include/extratorSRT.h +++ b/extratorSRT/src/include/extratorSRT.h @@ -8,10 +8,6 @@ #ifndef EXTRATORSRT_H #define EXTRATORSRT_H -//#define MAX_LINE 1024 -#define SIZE_CSCAPE 1 -#define TARGET_TIME "-->" - #include #include #include @@ -30,6 +26,10 @@ #include "listenerMonitorPCRBase.h" #include "extratorSRT_exception.h" +#define SIZE_CSCAPE 1 +#define TARGET_TIME "-->" +//#define MAX_LINE 1024 + using namespace jthread; using namespace std; using namespace sndesc; @@ -51,7 +51,6 @@ public: void initialize(); void Run(); - /* @Override: reader.h */ Subtitle* next(); void notifyPCRBase(uint64_t pcrbase); @@ -59,12 +58,12 @@ public: private: list *listeners; - char* filepath; + char *filepath; bool finish; - File* file; + File *file; FileIO *file_io; BufferedReader *bff_reader; - Subtitle * subtitle; + Subtitle *subtitle; uint64_t pcr_base; int64_t seek_pos; diff --git a/extratorSRT/src/include/subtitle.h b/extratorSRT/src/include/subtitle.h index cb72c96..9fb48f8 100644 --- a/extratorSRT/src/include/subtitle.h +++ b/extratorSRT/src/include/subtitle.h @@ -13,12 +13,12 @@ #ifndef SUBTITLE_H #define SUBTITLE_H - #define MAX_FIELD 64 - #include #include #include + #define MAX_FIELD 64 + namespace sndesc { class Subtitle { diff --git a/extratorTXT/src/extratorTXT.cpp b/extratorTXT/src/extratorTXT.cpp index fb5f217..f212b1e 100644 --- a/extratorTXT/src/extratorTXT.cpp +++ b/extratorTXT/src/extratorTXT.cpp @@ -11,8 +11,6 @@ #include "extratorTXT.h" -using namespace std; - ExtratorTXT::ExtratorTXT(){ listeners = new list(); finish = false; @@ -25,7 +23,7 @@ ExtratorTXT::~ExtratorTXT(){ delete file; delete file_io; delete bff_reader; - DDDPRINTF("Extractor Text finalized!\n"); + DDDPRINTF("Extractor TXT finalized!\n"); } void ExtratorTXT::initialize(){ @@ -45,16 +43,16 @@ void ExtratorTXT::addListener(ListenerTXT* listener){ listeners->push_back(listener); } -void ExtratorTXT::notifyListeners(unsigned char* subtitle) { +void ExtratorTXT::notifyListeners(unsigned char* line) { for(list::iterator it = listeners->begin(); it != listeners->end(); it++){ - (*it)->notificaTradutor(subtitle); + (*it)->notifyLine(line); } } -void ExtratorTXT::notifyEndExtraction(int sub_size) { - DDPRINTF("Extrator Text concluiu a extração: %d linhas.\n", sub_size); +void ExtratorTXT::notifyEndExtraction(int line_size) { + DDPRINTF("ExtratorTXT concluiu a extração: %d linhas.\n", line_size); for(list::iterator it = listeners->begin(); it != listeners->end(); it++){ - (*it)->notifyEnd(sub_size); + (*it)->notifyEnd(line_size); } } diff --git a/extratorTXT/src/include/extratorTXT.h b/extratorTXT/src/include/extratorTXT.h index ac9c99d..cad49b7 100644 --- a/extratorTXT/src/include/extratorTXT.h +++ b/extratorTXT/src/include/extratorTXT.h @@ -34,8 +34,8 @@ public: ~ExtratorTXT(); void addListener(ListenerTXT* listener); - void notifyListeners(unsigned char* subtitle); - void notifyEndExtraction(int sub_size); + void notifyListeners(unsigned char* line); + void notifyEndExtraction(int line_size); void setFilePath(char* path); bool isFinished(); diff --git a/extratorTXT/src/include/listenerTXT.h b/extratorTXT/src/include/listenerTXT.h index 850095f..af7cba7 100644 --- a/extratorTXT/src/include/listenerTXT.h +++ b/extratorTXT/src/include/listenerTXT.h @@ -17,7 +17,7 @@ class ListenerTXT { public: - virtual void notificaTradutor(unsigned char* line) = 0; + virtual void notifyLine(unsigned char* line) = 0; virtual void notifyEnd(int line_size) = 0; }; diff --git a/input/src/include/inputFile.h b/input/src/include/inputFile.h index 9d0c8bb..32353b4 100644 --- a/input/src/include/inputFile.h +++ b/input/src/include/inputFile.h @@ -8,36 +8,37 @@ #ifndef INPUTFILE_H #define INPUTFILE_H +#include +#include +#include #include #include #include "logger.h" -#include "ouvinteInput.h" +#include "listenerInput.h" #include "inputException.h" #include "dprintf.h" +#define MAX_SIZE_PACKET 188 using namespace std; class InputFile { -public: - static const int MAX_SIZE_PACKET = 188; - bool finished; - +public: InputFile(char* path); ~InputFile(); void initialize(); - void registraOuvinte(OuvinteInput *ouvinte); - void removeOuvinte(OuvinteInput *ouvinte); - void notificaOuvintes(unsigned char * pacote); + void addListener(ListenerInput* listener); + void removeListener(ListenerInput* listener); + void notifyListeners(unsigned char* pack); bool isFinished(); //void notificaQuantidadeGlosas(int quantidade); private: - - char * path; - list *ouvintes; + list *listeners; + char *path; + bool finish; }; diff --git a/input/src/include/listenerInput.h b/input/src/include/listenerInput.h new file mode 100644 index 0000000..5fb0670 --- /dev/null +++ b/input/src/include/listenerInput.h @@ -0,0 +1,19 @@ +/* + * File: ouvinteInput.h + * Author: derzu + * + * Created on 8 de Fevereiro de 2010, 18:19 + */ + +#ifndef _LISTENERINPUT_H +#define _LISTENERINPUT_H + +class ListenerInput { +public: + virtual void notifyInput(unsigned char *pack)=0; + //virtual void finalizouInput()=0; + +}; + +#endif /* _LISTENERINPUT_H */ + diff --git a/input/src/include/ouvinteInput.h b/input/src/include/ouvinteInput.h deleted file mode 100644 index 2244898..0000000 --- a/input/src/include/ouvinteInput.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * File: ouvinteInput.h - * Author: derzu - * - * Created on 8 de Fevereiro de 2010, 18:19 - */ - -#ifndef _OUVINTEINPUT_H -#define _OUVINTEINPUT_H - -class OuvinteInput { -public: - OuvinteInput(); - virtual ~OuvinteInput(); - virtual void chegouInput(unsigned char *pacote)=0; - //virtual void finalizouInput()=0; - -private: - -}; - -#endif /* _OUVINTEINPUT_H */ - diff --git a/input/src/inputFile.cpp b/input/src/inputFile.cpp index 02c8de1..46896f2 100644 --- a/input/src/inputFile.cpp +++ b/input/src/inputFile.cpp @@ -1,20 +1,16 @@ -#include -#include -#include #include "inputFile.h" -#include "ouvinteInput.h" InputFile::InputFile(char* path) { this->path = path; - this->ouvintes = new list(); - finished = false; + this->listeners = new list(); + finish = false; DPRINTF("Done!\n"); } InputFile::~InputFile(){ - ouvintes->clear(); - delete ouvintes; + listeners->clear(); + delete listeners; DDDPRINTF("Input finalized!\n"); } @@ -28,36 +24,36 @@ void InputFile::initialize(){ while (!filein.eof()) { filein.read(buffer, MAX_SIZE_PACKET); unsigned char* packet = (unsigned char*) buffer; - notificaOuvintes(packet); + notifyListeners(packet); } printf("\n"); filein.close(); //finished = true; } else { - finished = true; + finish = true; Util::Logger::Instance()->writeLog((char*) "[ERRO: inputFile.cpp] Arquivo de vídeo não encontrado."); throw InputException("Falha ao abrir o arquivo de vídeo! Verifique se o mesmo existe."); } } - finished = true; + finish = true; } bool InputFile::isFinished(){ - return this->finished; + return this->finish; } -void InputFile::registraOuvinte(OuvinteInput* ouvinte){ - this->ouvintes->push_back(ouvinte); +void InputFile::addListener(ListenerInput* listener){ + this->listeners->push_back(listener); } -void InputFile::removeOuvinte(OuvinteInput* ouvinte) { - this->ouvintes->remove(ouvinte); +void InputFile::removeListener(ListenerInput* listener) { + this->listeners->remove(listener); } -void InputFile::notificaOuvintes(unsigned char* pacote){ - for(list::iterator it = this->ouvintes->begin(); it != this->ouvintes->end(); it++){ - (*it)->chegouInput(pacote); +void InputFile::notifyListeners(unsigned char* pack){ + for(list::iterator it = this->listeners->begin(); it != this->listeners->end(); it++){ + (*it)->notifyInput(pack); } } diff --git a/input/src/ouvinteInput.cpp b/input/src/ouvinteInput.cpp deleted file mode 100644 index 4ae4d6e..0000000 --- a/input/src/ouvinteInput.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * File: ouvinteInput.cpp - * Author: derzu - * - * Created on 8 de Fevereiro de 2010, 18:19 - */ - -#include "ouvinteInput.h" - -OuvinteInput::OuvinteInput() { -} - -OuvinteInput::~OuvinteInput() { -} diff --git a/mixer/src/Mixer.cpp b/mixer/src/Mixer.cpp index 692f7ce..74e574f 100644 --- a/mixer/src/Mixer.cpp +++ b/mixer/src/Mixer.cpp @@ -4,11 +4,7 @@ * * Created on 17 de Janeiro de 2012, 15:28 */ - #include "Mixer.h" -#define PATH_API "vlibras_user/vlibras-api/videos/" - -using namespace std; /* Construtores e destrutores...*/ Mixer::Mixer() { diff --git a/mixer/src/include/Mixer.h b/mixer/src/include/Mixer.h index b9a3a29..930892b 100644 --- a/mixer/src/include/Mixer.h +++ b/mixer/src/include/Mixer.h @@ -5,13 +5,9 @@ * Created on 17 de Janeiro de 2012, 15:28 */ - - - #ifndef MIXER_H #define MIXER_H - #include "string.h" #include #include @@ -30,7 +26,6 @@ using namespace std; #define TOP_RIGHT 2 #define BOTTOM_RIGHT 3 #define BOTTOM_LEFT 4 - //SL Video Size #define SMALL 1 #define MEDIUM 2 @@ -40,7 +35,9 @@ using namespace std; #define MEDIUM_HEIGHT 432 //0,4*1080 #define LARGE_HEIGHT 540 //0.5*1080 +#define PATH_API "vlibras_user/vlibras-api/videos/" +using namespace std; class Mixer { public: diff --git a/monitorPCR/src/include/monitor_pcr.h b/monitorPCR/src/include/monitor_pcr.h index c08ed83..8cf85d0 100644 --- a/monitorPCR/src/include/monitor_pcr.h +++ b/monitorPCR/src/include/monitor_pcr.h @@ -8,20 +8,24 @@ #ifndef MONITOR_PCR_H #define MONITOR_PCR_H +#include +#include +#include #include -#include "ouvinteInput.h" -#include "listenerMonitorPCRBase.h" #include +#include "listenerInput.h" +#include "listenerMonitorPCRBase.h" #include "dprintf.h" +#define PCRBASE_PADRAO 1000000 using namespace std; -class MonitorPCR: public OuvinteInput { +class MonitorPCR: public ListenerInput { public: - char* extvideo; + char* extvideo; MonitorPCR(); ~MonitorPCR(); @@ -29,7 +33,7 @@ class MonitorPCR: public OuvinteInput { void addListenerPCRBase(ListenerMonitorPCRBase * listener); void notifyListenersWithPCRBase(uint64_t pcrbase); uint64_t getPCRBase(); - void chegouInput(unsigned char* packet); + void notifyInput(unsigned char* packet); /** * Informa para o monitor o formato do vídeo que está sendo manipulado. diff --git a/monitorPCR/src/monitor_pcr.cpp b/monitorPCR/src/monitor_pcr.cpp index fe7c2ec..e05cd3f 100644 --- a/monitorPCR/src/monitor_pcr.cpp +++ b/monitorPCR/src/monitor_pcr.cpp @@ -1,9 +1,4 @@ -#include -#include -#include #include "monitor_pcr.h" -#define PCRBASE_PADRAO 1000000 -using namespace std; MonitorPCR::MonitorPCR(){ pcr_base = 0; @@ -29,7 +24,7 @@ void MonitorPCR::setFormatVideo(char* format) { } -void MonitorPCR::chegouInput(unsigned char* packet) { +void MonitorPCR::notifyInput(unsigned char* packet) { if (!find) { // verifica se o PCRBase já foi encontrado *extvideo = tolower(*extvideo); diff --git a/recognize/src/include/recognize.h b/recognize/src/include/recognize.h index b614438..f4b8352 100644 --- a/recognize/src/include/recognize.h +++ b/recognize/src/include/recognize.h @@ -4,18 +4,46 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include "dprintf.h" #include "logger.h" - #include "listenerMonitorPCRBase.h" #include "recognizeListener.h" #include "recognizeException.h" +#define FREQUENCY_PATTERN 22050 +#define INPUT_PATTERN 1 /* 1 = Raw file, 2 = Mic */ +#define BLOCS_PATTERN 10 +#define SIZE_BUFFER 256 +#define CONFIDENCE_RATE 0.45 + +#define PATH_API_UPLOADS "vlibras_user/vlibras-api/uploads/" +#define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav" +#define PATH_AUDIO_PARTS "/audio/parts/" +#define FILENAME_RECOGNIZED_OUT "/audio/recognized.out" +#define FILENAME_AUDIOLIST "/audio/audiolist" +#define FILENAME_FILTEROUT "/audio/filter" +#define FILENAME_CONFIDENCEOUT "/audio/confidence" + +#define FIND_CONFIDENCE "\"cmscore1:\"" +#define FIND_SENTENCE "\"sentence1:\"" + +#define FILENAME_AUDIOPART "audio00" +#define AUDIO_SILENT "" + +#define PROGRAM "ffmpeg" // ffmpeg +#define PTS_PATTERN 1000 using namespace jthread; using namespace std; - class Recognize: public Thread, public ListenerMonitorPCRBase { public: @@ -56,7 +84,7 @@ private: char* pathVideo; string id; float confidenceRate; - bool finished; + bool finish; vector scores; vector pts; diff --git a/recognize/src/recognize.cpp b/recognize/src/recognize.cpp index 56553c7..140ff06 100644 --- a/recognize/src/recognize.cpp +++ b/recognize/src/recognize.cpp @@ -1,45 +1,5 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - #include -#define FREQUENCY_PATTERN 22050 -#define INPUT_PATTERN 1 /* 1 = Raw file, 2 = Mic */ -#define BLOCS_PATTERN 10 -#define SIZE_BUFFER 256 -#define CONFIDENCE_RATE 0.45 - -#define PATH_API_UPLOADS "vlibras_user/vlibras-api/uploads/" -#define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav" -#define PATH_AUDIO_PARTS "/audio/parts/" -#define FILENAME_RECOGNIZED_OUT "/audio/recognized.out" -#define FILENAME_AUDIOLIST "/audio/audiolist" -#define FILENAME_FILTEROUT "/audio/filter" -#define FILENAME_CONFIDENCEOUT "/audio/confidence" - -#define FIND_CONFIDENCE "\"cmscore1:\"" -#define FIND_SENTENCE "\"sentence1:\"" - -#define FILENAME_AUDIOPART "audio00" -#define AUDIO_SILENT "" - -#define PROGRAM "ffmpeg" // ffmpeg -#define PTS_PATTERN 1000 - -using namespace std; - - Recognize::Recognize(char* _pathVideo, char* _id) { listeners = new list(); @@ -102,7 +62,7 @@ void Recognize::initialize() { ifstream file(pathVideo, ifstream::binary); if(!file.is_open()){ - finished = true; + finish = true; Util::Logger::Instance()->writeLog((char*) "[ERRO: recognize.cpp] Arquivo não encontrado."); throw RecognizeException("Falha ao abrir o arquivo! Verifique se o mesmo existe."); } @@ -111,7 +71,7 @@ void Recognize::initialize() { void Recognize::Run(){ - finished = false; + finish = false; createDir(); extractAudioFromVideo(); breakVideoParts(getTimeMediaSec()); @@ -120,7 +80,7 @@ void Recognize::Run(){ filterOutputJulius(); //cleanFiles(); - finished = true; + finish = true; notifyEndExtraction(count_lines); } @@ -429,7 +389,7 @@ void Recognize::addListener(RecognizeListener* listener) { bool Recognize::isFinished() { - return finished; + return finish; } diff --git a/servico/src/include/serviceWindowGeneration.h b/servico/src/include/serviceWindowGeneration.h index 1ebc06e..0a9a0c7 100644 --- a/servico/src/include/serviceWindowGeneration.h +++ b/servico/src/include/serviceWindowGeneration.h @@ -5,13 +5,13 @@ #include #include #include "dprintf.h" -#include "ouvinteTradutor.h" +#include "listenerTradutor.h" #include "tradutorPortGlosa.h" #include #include //#include "httpstreamer.h" #include "synchronizer.h" -#include "ouvinteSynchronizer.h" +#include "listenerSynchronizer.h" #include "Mixer.h" #include #include "listenerMonitorPCRBase.h" @@ -23,6 +23,13 @@ #include "serviceException.h" #include +#define VIDEO_POSE_NEUTRA "poseneutra" +#define BASEDIR "vlibras_user/dicionario_libras/" +#define BASEDIRTRANSP "vlibras_user/dicionarioTransp_libras/" +#define EXTENSAO_DICIONARIO ".ts" +#define PATH_API "vlibras_user/vlibras-api/videos/" +#define MAX_SIZE_PATH 256 + /*#define SERVICE_TYPE_CC 1 /* Closed Caption */ #define SERVICE_TYPE_SRT 2 /* Subtitle SRT */ #define SERVICE_TYPE_REC 3 /* Reconhecimento de Voz */ @@ -34,7 +41,7 @@ using namespace Tradutor; using namespace Util; using namespace std; -class ServiceWindowGeneration : public OuvinteTradutor, public OuvinteSynchronizer{ +class ServiceWindowGeneration : public ListenerTradutor, public ListenerSynchronizer{ protected: @@ -76,9 +83,8 @@ public: ServiceWindowGeneration(); ~ServiceWindowGeneration(); - //virtual void notificaGlosaTraduzida( vector * glosas); - virtual void codifica(vector * glosas); - virtual void finalizouSincronizacao(); + virtual void notifyTranslation(vector* glosas); + virtual void notifyEndOfSynchronization(); //virtual void notifyPCRBase(uint64_t pcr_base); void initialize(); TradutorPortGlosa * getTradutor(); diff --git a/servico/src/include/serviceWindowGenerationFromText.h b/servico/src/include/serviceWindowGenerationFromText.h index ee7d2eb..38735b8 100644 --- a/servico/src/include/serviceWindowGenerationFromText.h +++ b/servico/src/include/serviceWindowGenerationFromText.h @@ -19,7 +19,7 @@ public: ServiceWindowGenerationFromText (char* _path_file, char* _video_path_file, int _transp, int _serviceType, char* _client_type); ~ServiceWindowGenerationFromText (); - void notificaTradutor(unsigned char* legenda); + void notifyLine(unsigned char* line); void notifyEnd(int line_size); void initialize(); bool isAlive(); diff --git a/servico/src/serviceWindowGeneration.cpp b/servico/src/serviceWindowGeneration.cpp index 7d50406..cb269b4 100644 --- a/servico/src/serviceWindowGeneration.cpp +++ b/servico/src/serviceWindowGeneration.cpp @@ -1,14 +1,6 @@ #include "serviceWindowGeneration.h" -#define VIDEO_POSE_NEUTRA "poseneutra" -#define BASEDIR "vlibras_user/dicionario_libras/" -#define BASEDIRTRANSP "vlibras_user/dicionarioTransp_libras/" -#define EXTENSAO_DICIONARIO ".ts" -#define PATH_API "vlibras_user/vlibras-api/videos/" -#define MAX_SIZE_PATH 256 - - ServiceWindowGeneration::ServiceWindowGeneration() { if (getRunningOption() != '3') { tradutor = new TradutorPortGlosa(); @@ -45,7 +37,7 @@ bool ServiceWindowGeneration::isRunning() { } /* Quando o sincronizador termina, ele invoca esse método para avisar! */ -void ServiceWindowGeneration::finalizouSincronizacao() { +void ServiceWindowGeneration::notifyEndOfSynchronization() { if (getRunningOption() != '2' && serviceType == SERVICE_TYPE_REC || serviceType == SERVICE_TYPE_SRT) { mixer = new Mixer(); mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id); @@ -141,7 +133,7 @@ void ServiceWindowGeneration::initialize() { this->finish = false; if (getRunningOption() != '3' && this->sublanguage == 1) { - tradutor->registraOuvinte(this); + tradutor->addListener(this); } // o path do arquivo só poderá conter um "."(ponto), esse identifica a extensão. @@ -165,7 +157,7 @@ void ServiceWindowGeneration::initialize() { //printf("O ServiceWGeneration montou o seguinte path para o vídeo de Libras: %s\n", path_libras); } else { - tradutor->registraOuvinte(this); + tradutor->addListener(this); } if(this->transparency == 0) { //pega dicionario com BackGround opaco @@ -194,13 +186,12 @@ void ServiceWindowGeneration::initialize() { } } - sincronizador->registraOuvinte(this); + sincronizador->addListener(this); sincronizador->Start(); } /* Método utilizado pelo Tradutor para notificar o texto traduzido. */ -void ServiceWindowGeneration::codifica(vector * glosas) { - +void ServiceWindowGeneration::notifyTranslation(vector * glosas) { if (serviceType != SERVICE_TYPE_TEXT) { for (int i = 0; i < glosas->size(); i++) { std::locale loc; @@ -237,9 +228,7 @@ void ServiceWindowGeneration::codifica(vector * glosas) { } void ServiceWindowGeneration::transcodeVideoToWebm() { - //printf("[INFO]: A transcodificação para .webm está ativada!\n"); - string command = "ffmpeg -i "; command.append(path_libras) .append(" -vcodec libvpx -acodec libvorbis ") @@ -251,11 +240,9 @@ void ServiceWindowGeneration::transcodeVideoToWebm() { } void ServiceWindowGeneration::transcodeVideoToMp4() { - if (serviceType == SERVICE_TYPE_TEXT && strcmp(client_type, (char*)"WEB") == 0) transcodeVideoToWebm(); else{ - //printf("[INFO]: A transcodificação para .mp4 está ativada!\n"); string command = "ffmpeg -i "; command.append(path_libras) @@ -268,12 +255,10 @@ void ServiceWindowGeneration::transcodeVideoToMp4() { //.append(" -strict experimental -vcodec mjpeg -r 30 -pix_fmt yuvj422p ") //.append(" -strict experimental -vcodec mpeg2video -r 30 ") - } } void ServiceWindowGeneration::createThumbnail(){ - string command = "ffmpeg -ss 10 -i "; command.append(PATH_API).append(user_id).append(".mp4") .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ") diff --git a/servico/src/serviceWindowGenerationFromREC.cpp b/servico/src/serviceWindowGenerationFromREC.cpp index 00cbafa..04c2b56 100644 --- a/servico/src/serviceWindowGenerationFromREC.cpp +++ b/servico/src/serviceWindowGenerationFromREC.cpp @@ -1,7 +1,5 @@ #include "serviceWindowGenerationFromREC.h" -using namespace std; - ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( char* path_video, int sublanguage, int position, int size, int transparency, char* id, int serviceType, char* rate) { @@ -51,7 +49,7 @@ void ServiceWindowGenerationFromREC::initialize() { } monitor_pcr_base->addListenerPCRBase(rec); - inputfile->registraOuvinte(monitor_pcr_base); + inputfile->addListener(monitor_pcr_base); try{ inputfile->initialize(); } catch(InputException ex){ diff --git a/servico/src/serviceWindowGenerationFromSRT.cpp b/servico/src/serviceWindowGenerationFromSRT.cpp index fbd6215..2244efa 100644 --- a/servico/src/serviceWindowGenerationFromSRT.cpp +++ b/servico/src/serviceWindowGenerationFromSRT.cpp @@ -1,6 +1,5 @@ #include "serviceWindowGenerationFromSRT.h" -using namespace std; //Construtor Service 2 ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT( @@ -103,7 +102,7 @@ void ServiceWindowGenerationFromSRT::initialize() { monitor_pcr_base->addListenerPCRBase(extratorSRT); - inputfile->registraOuvinte(monitor_pcr_base); + inputfile->addListener(monitor_pcr_base); extratorSRT->addListener(this); extratorSRT->setFilePath((char*) path_srt); diff --git a/servico/src/serviceWindowGenerationFromText.cpp b/servico/src/serviceWindowGenerationFromText.cpp index d527eeb..07e957f 100644 --- a/servico/src/serviceWindowGenerationFromText.cpp +++ b/servico/src/serviceWindowGenerationFromText.cpp @@ -35,11 +35,11 @@ void ServiceWindowGenerationFromText::initialize() { } void ServiceWindowGenerationFromText::notifyEnd(int line_size) { - DDPRINTF("Service SRT recebeu: %d linhas.\n", line_size); + DDPRINTF("Service TXT recebeu: %d linhas.\n", line_size); setSizeOfSubtitles(line_size); } -void ServiceWindowGenerationFromText::notificaTradutor(unsigned char* line) { +void ServiceWindowGenerationFromText::notifyLine(unsigned char* line) { tradutor->traduz(line); } diff --git a/synchronizer/src/include/listenerSynchronizer.h b/synchronizer/src/include/listenerSynchronizer.h new file mode 100644 index 0000000..b547b23 --- /dev/null +++ b/synchronizer/src/include/listenerSynchronizer.h @@ -0,0 +1,14 @@ +#ifndef _LISTENER_SYNCHRONIZER_H +#define _LISTENER_SYNCHRONIZER_H + +#include +#include + +using namespace std; + +class ListenerSynchronizer { +public: + virtual void notifyEndOfSynchronization() = 0; +}; + +#endif \ No newline at end of file diff --git a/synchronizer/src/include/ouvinteSynchronizer.h b/synchronizer/src/include/ouvinteSynchronizer.h deleted file mode 100644 index 85014ff..0000000 --- a/synchronizer/src/include/ouvinteSynchronizer.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _OUVINTE_SYNCHRONIZER_H -#define _OUVINTE_SYNCHRONIZER_H - -#include -#include - -using namespace std; - -class OuvinteSynchronizer { -public: - OuvinteSynchronizer(); - virtual ~OuvinteSynchronizer(); - - // inclusão do parâmetro "long int pts" - virtual void finalizouSincronizacao() = 0; -private: - -}; - -#endif \ No newline at end of file diff --git a/synchronizer/src/include/synchronizer.h b/synchronizer/src/include/synchronizer.h index abf4900..2e0ffe0 100644 --- a/synchronizer/src/include/synchronizer.h +++ b/synchronizer/src/include/synchronizer.h @@ -1,52 +1,71 @@ #ifndef SYNCHRONIZER_H #define SYNCHRONIZER_H -#include "jthread.h" #include #include #include #include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include "dprintf.h" #include "jmutex.h" -#include -#include "ouvinteSynchronizer.h" +#include "jthread.h" +#include "listenerSynchronizer.h" #include "listenerMonitorPCRBase.h" +//#include "httpstreamer.h" -#include -#include +#define VIDEO_PADRAO "vlibras_user/dicionario_libras/poseneutra.ts" +#define VIDEOTRANSP_PADRAO "vlibras_user/dicionarioTransp_libras/poseneutra.ts" + +//DICIONARIO 30 fps +#define PCRPID 256 +#define PESPID 256 + +//DICIONARIO 45 fps +//#define PCRPID 4097 +//#define PESPID 4113 using namespace jthread; using namespace std; class Synchronizer : public jthread::Thread, public ListenerMonitorPCRBase { + private: bool hastext; int taxa; int filefd; vector *videos; int devicetv; + uint64_t pcrBaseGeral; uint64_t ultimoPCRBase; uint64_t ultimoPCRBaseMod; + int64_t pcr_inicial; int mediaDiferencaPCR; int contagemPCR; + ofstream escreveAux; char* extensao; char* baseDir; - int64_t pcr_inicial; + int64_t tempo_poseneutra; vector *vector_pts; int flagPrimeiroArquivo; - list * ouvintes; - char* path_libras; + + list * listeners; Mutex* mutex_sync; + Mutex* mutexi; + char* path_libras; int transparency; int count_tasks; @@ -57,13 +76,14 @@ public: Synchronizer(); Synchronizer(/*int64_t pcr_inicial, */char*baseDir, char* extensao, char* path_libras, int transparency); virtual ~Synchronizer(); + virtual void notifyPCRBase(uint64_t pcr_base); void setPCRBase(uint64_t pcr_base); - //em fase de teste - void soletraGlosa(string glosa, int64_t pts); void Run(); void stop(); + + void soletraGlosa(string glosa, int64_t pts);//em fase de teste void recebeglosa(char * video, int tam, int64_t pts); void recebeglosa(string glosa, int64_t pts); char * getproximoarquivo(); @@ -98,9 +118,9 @@ public: void escrevePacote(char *pacote); int escrevePacote(int * descritor, char *pacote, int size); - virtual void registraOuvinte(OuvinteSynchronizer * ouvinte); - virtual void removeOuvinte(OuvinteSynchronizer * ouvinte); - virtual void notificaOuvintes(); + virtual void addListener(ListenerSynchronizer* listener); + virtual void removeListener(ListenerSynchronizer* listener); + virtual void notifyListeners(); }; diff --git a/synchronizer/src/ouvinteSynchronizer.cpp b/synchronizer/src/ouvinteSynchronizer.cpp deleted file mode 100644 index d3b1c81..0000000 --- a/synchronizer/src/ouvinteSynchronizer.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "ouvinteSynchronizer.h" - -OuvinteSynchronizer::OuvinteSynchronizer() { -} - -OuvinteSynchronizer::~OuvinteSynchronizer() { -} diff --git a/synchronizer/src/synchronizer.cpp b/synchronizer/src/synchronizer.cpp index 35c620c..de447ba 100644 --- a/synchronizer/src/synchronizer.cpp +++ b/synchronizer/src/synchronizer.cpp @@ -1,22 +1,4 @@ -#include -#include -#include "dprintf.h" #include "synchronizer.h" -//#include "httpstreamer.h" -#include "jmutex.h" -#define VIDEO_PADRAO "vlibras_user/dicionario_libras/poseneutra.ts" -#define VIDEOTRANSP_PADRAO "vlibras_user/dicionarioTransp_libras/poseneutra.ts" - -//DICIONARIO 45 fps -//#define PCRPID 4097 -//#define PESPID 4113 - - -//DICIONARIO 30 fps -#define PCRPID 256 -#define PESPID 256 - -Mutex* mutexi = new Mutex(); Synchronizer::Synchronizer() { baseDir = (char*) "vlibras_user/dicionario_libras/"; @@ -24,6 +6,7 @@ Synchronizer::Synchronizer() { filefd = 0; videos = new vector (); vector_pts = new vector (); + this->mutexi = new Mutex(); this->baseDir = new char[strlen(baseDir) + 1]; strcpy(this->baseDir, baseDir); @@ -31,7 +14,7 @@ Synchronizer::Synchronizer() { this->extensao = new char[strlen(extensao) + 1]; strcpy(this->extensao, extensao); flagPrimeiroArquivo = 1; - ouvintes = new list(); + listeners = new list(); this->path_libras = path_libras; DPRINTF("Done!\n") } @@ -50,7 +33,6 @@ Synchronizer::Synchronizer(/*int64_t pcr_inicial, */char* baseDir, char* extensa //cout << "\n\nTransparencia: " << this->transparency << "\n"; - this->baseDir = new char[strlen(baseDir) + 1]; strcpy(this->baseDir, baseDir); @@ -67,22 +49,22 @@ Synchronizer::Synchronizer(/*int64_t pcr_inicial, */char* baseDir, char* extensa contagemPCR = 0; vector_pts = new vector (); flagPrimeiroArquivo = 1; - ouvintes = new list(); + listeners = new list(); this->path_libras = new char[strlen(path_libras) + 1]; strcpy(this->path_libras, path_libras); //cout << "-> path libras sync: " << path_libras << endl; this->mutex_sync = new Mutex(); + this->mutexi = new Mutex(); DPRINTF("Done!\n") - } Synchronizer::~Synchronizer() { free(videos); - ouvintes->clear(); - delete ouvintes; + listeners->clear(); + delete listeners; if (escreveAux.is_open()) escreveAux.close(); - DDDPRINTF("Synchronized finalized!\n"); + DDDPRINTF("Synchronizer finalized!\n"); } @@ -108,12 +90,10 @@ string toLower(string strr) { return ret; } - void Synchronizer::setPCRBase(uint64_t pcr_base){ this->pcr_inicial = pcr_base; } - char* converteString(string palavra) { const char* aux = new char[palavra.size()]; @@ -123,9 +103,6 @@ char* converteString(string palavra) { return aux2; } - - - /* Método utilizado pelos serviços (Services Generation) para informar que este processo pode ser finalizado após a demanda atual, isto é, depois que terminar de gerar os vídeos que estão na fila. @@ -226,7 +203,6 @@ char * Synchronizer::getproximoarquivo() { } - void Synchronizer::analisaPCR(unsigned char *pacote) { // preciso ter o PID de PCR if ((getPid(pacote) != PCRPID) || (!contemAF(pacote)) @@ -272,8 +248,6 @@ void Synchronizer::analisaPCR(unsigned char *pacote) { } void Synchronizer::analisaPTSDTS(unsigned char *pacote) { - - int inicioPESData = 4; if (contemAF(pacote)) inicioPESData += getTamanhoAF(pacote) + 1; @@ -488,17 +462,17 @@ void Synchronizer::recebeglosa(string glosa, int64_t pts) { } -void Synchronizer::registraOuvinte(OuvinteSynchronizer * ouvinte) { - ouvintes->push_back(ouvinte); +void Synchronizer::addListener(ListenerSynchronizer* listener) { + listeners->push_back(listener); } -void Synchronizer::removeOuvinte(OuvinteSynchronizer * ouvinte) { - ouvintes->remove(ouvinte); +void Synchronizer::removeListener(ListenerSynchronizer* listener) { + listeners->remove(listener); } -void Synchronizer::notificaOuvintes() { - for (list::iterator i = ouvintes->begin(); i != ouvintes->end(); i++) { - (*i)->finalizouSincronizacao(); +void Synchronizer::notifyListeners() { + for (list::iterator i = listeners->begin(); i != listeners->end(); i++) { + (*i)->notifyEndOfSynchronization(); } } @@ -592,7 +566,7 @@ void Synchronizer::Run() { //fsync(desc_out); close(filefd); close(desc_out); - notificaOuvintes(); + notifyListeners(); } diff --git a/tradutor/src/include/listenerTradutor.h b/tradutor/src/include/listenerTradutor.h new file mode 100644 index 0000000..d834106 --- /dev/null +++ b/tradutor/src/include/listenerTradutor.h @@ -0,0 +1,26 @@ +/* + * File: ouvinteTradutor.h + * Author: derzu + * + * Created on 2 de Fevereiro de 2010, 15:48 + */ +#ifndef _LISTENERTRADUTOR_H +#define _LISTENERTRADUTOR_H + +#include +#include + +namespace Tradutor { + + class ListenerTradutor { + public: + //OuvinteTradutor(); + //virtual ~OuvinteTradutor(); + + // Metodo que vai ser chamado quando chegar a traducao + virtual void notifyTranslation(std::vector * glosas) = 0; + }; + +} + +#endif /* _LISTENERTRADUTOR_H */ diff --git a/tradutor/src/include/ouvinteTradutor.h b/tradutor/src/include/ouvinteTradutor.h deleted file mode 100644 index 6545353..0000000 --- a/tradutor/src/include/ouvinteTradutor.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * File: ouvinteTradutor.h - * Author: derzu - * - * Created on 2 de Fevereiro de 2010, 15:48 - */ - -#ifndef _OUVINTETRADUTOR_H -#define _OUVINTETRADUTOR_H - -#include -#include - -namespace Tradutor { - - class OuvinteTradutor { - public: - OuvinteTradutor(); - virtual ~OuvinteTradutor(); - - // Metodo que vai ser chamado quando chegar a traducao - virtual void codifica(std::vector * glosas)=0; - }; - -} - -#endif /* _OUVINTETRADUTOR_H */ diff --git a/tradutor/src/include/pyTradutor.h b/tradutor/src/include/pyTradutor.h index f31ef7d..bc06ba5 100644 --- a/tradutor/src/include/pyTradutor.h +++ b/tradutor/src/include/pyTradutor.h @@ -11,18 +11,19 @@ #define _PYTRADUTOR_H namespace Tradutor { + class PyTradutor{ - public: - PyTradutor(); - ~PyTradutor(); - char * convertStringToGlosa(const char * input); - PyObject * pName; - PyObject * pModule; - PyObject * pDict; - PyObject * pFunc; - PyObject * pArgs; - PyObject * pResult; - bool isRunning; + public: + PyTradutor(); + ~PyTradutor(); + char * convertStringToGlosa(const char * input); + PyObject * pName; + PyObject * pModule; + PyObject * pDict; + PyObject * pFunc; + PyObject * pArgs; + PyObject * pResult; + bool isRunning; }; } diff --git a/tradutor/src/include/tradutorPortGlosa.h b/tradutor/src/include/tradutorPortGlosa.h index ded5d59..379ed66 100644 --- a/tradutor/src/include/tradutorPortGlosa.h +++ b/tradutor/src/include/tradutorPortGlosa.h @@ -12,44 +12,45 @@ * @date 21/10/2009 * */ - #include #include #include -#include "ouvinteTradutor.h" +#include "listenerTradutor.h" #include "pyTradutor.h" -#include "ouvinteInput.h" +#include "listenerInput.h" #include "dprintf.h" #ifndef _GERADOR_GLOSA_H_ #define _GERADOR_GLOSA_H_ +using namespace std; + namespace Tradutor { - class TradutorPortGlosa : public OuvinteInput{ + class TradutorPortGlosa : public ListenerInput{ public: - TradutorPortGlosa(); - virtual ~TradutorPortGlosa(); - std::vector * portuguesToGlosaVector(const char * input); - std::vector * portuguesToGlosaVectorSplit(char * pGlosa); + TradutorPortGlosa(); + virtual ~TradutorPortGlosa(); + std::vector * portuguesToGlosaVector(const char * input); + std::vector * portuguesToGlosaVectorSplit(char * pGlosa); - // Adiciona - void registraOuvinte(OuvinteTradutor * ouvinte); - // Remove - void removeOuvinte(OuvinteTradutor * ouvinte); + // Adiciona + void addListener(ListenerTradutor * listener); + // Remove + void removeListener(ListenerTradutor * listener); - void traduz(unsigned char * texto); - virtual void chegouInput(unsigned char * texto); - //virtual void notificaCC(unsigned char * cc, int64_t pts); + void traduz(unsigned char * texto); + virtual void notifyInput(unsigned char * texto); + //virtual void notificaCC(unsigned char * cc, int64_t pts); private: - void notificaOuvintes(std::vector * traducao); + void notifyListeners(std::vector * traducao); - std::list * ouvintes; - PyTradutor * pyTradutor; - // Mutex para evitar mutiplas chamadas de notificadores - pthread_mutex_t *mutex; + std::list * listeners; + PyTradutor * pyTradutor; + // Mutex para evitar mutiplas chamadas de notificadores + pthread_mutex_t *mutex; }; } diff --git a/tradutor/src/ouvinteTradutor.cpp b/tradutor/src/ouvinteTradutor.cpp deleted file mode 100644 index 8e7b669..0000000 --- a/tradutor/src/ouvinteTradutor.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File: ouvinteTradutor.cpp - * Author: derzu - * - * Created on 2 de Fevereiro de 2010, 15:48 - */ - -#include "ouvinteTradutor.h" - -namespace Tradutor { - - OuvinteTradutor::OuvinteTradutor() { - } - - OuvinteTradutor::~OuvinteTradutor() { - } - -} diff --git a/tradutor/src/tradutorPortGlosa.cpp b/tradutor/src/tradutorPortGlosa.cpp index ecb8252..ce11535 100644 --- a/tradutor/src/tradutorPortGlosa.cpp +++ b/tradutor/src/tradutorPortGlosa.cpp @@ -12,27 +12,21 @@ * @date 21/10/2009 * */ - #include "tradutorPortGlosa.h" -using namespace std; - - namespace Tradutor { TradutorPortGlosa::TradutorPortGlosa() { - ouvintes = new list(); - pyTradutor = new PyTradutor(); - + listeners = new list(); + pyTradutor = new PyTradutor(); // Inicia o mutex mutex = (pthread_mutex_t *) malloc( sizeof(pthread_mutex_t) ); pthread_mutex_init(mutex, NULL); DPRINTF("Done!\n") - } TradutorPortGlosa::~TradutorPortGlosa() { - delete ouvintes; + delete listeners; delete pyTradutor; if (mutex) { int ret = pthread_mutex_destroy(mutex); @@ -44,93 +38,93 @@ namespace Tradutor { } - void TradutorPortGlosa::registraOuvinte(OuvinteTradutor * ouvinte) { - ouvintes->push_back(ouvinte); - } + void TradutorPortGlosa::addListener(ListenerTradutor* listener) { + listeners->push_back(listener); + } - void TradutorPortGlosa::removeOuvinte(OuvinteTradutor * ouvinte) { - ouvintes->remove(ouvinte); - } + void TradutorPortGlosa::removeListener(ListenerTradutor* listener) { + listeners->remove(listener); + } - void TradutorPortGlosa::notificaOuvintes(vector * traducao) { - for (list::iterator i=ouvintes->begin() ; i!= ouvintes->end() ; i++){ - (*i)->codifica(traducao); - } - } + void TradutorPortGlosa::notifyListeners(vector * traducao) { + for (list::iterator i = listeners->begin() ; i != listeners->end() ; i++){ + (*i)->notifyTranslation(traducao); + } + } - /* - // Implemento o metodo da classe que estou ouvindo, classe ExtratorCC - void TradutorPortGlosa::notificaCC(unsigned char * cc, int64_t pts) { - // Mutex para evitar bug multiplas chamadas dos notificadores - pthread_mutex_lock(mutex); - traduz(cc); - pthread_mutex_unlock(mutex); - }*/ - - // Implemento o metodo da classe que estou ouvindo, classe ExtratorCC - void TradutorPortGlosa::chegouInput(unsigned char * texto) { - // Mutex para evitar bug multiplas chamadas dos notificadores - pthread_mutex_lock(mutex); - traduz(texto); - pthread_mutex_unlock(mutex); - } - - void TradutorPortGlosa::traduz(unsigned char * texto) { - vector * vGlosa = portuguesToGlosaVector((const char *)texto); - if (vGlosa->size() > 0) - notificaOuvintes(vGlosa); - free(vGlosa); - } + /* + // Implemento o metodo da classe que estou ouvindo, classe ExtratorCC + void TradutorPortGlosa::notificaCC(unsigned char * cc, int64_t pts) { + // Mutex para evitar bug multiplas chamadas dos notificadores + pthread_mutex_lock(mutex); + traduz(cc); + pthread_mutex_unlock(mutex); + }*/ + + // Implemento o metodo da classe que estou ouvindo. + void TradutorPortGlosa::notifyInput(unsigned char * texto) { + // Mutex para evitar bug multiplas chamadas dos notificadores + pthread_mutex_lock(mutex); + traduz(texto); + pthread_mutex_unlock(mutex); + } + + void TradutorPortGlosa::traduz(unsigned char * texto) { + vector * vGlosa = portuguesToGlosaVector((const char *)texto); + if (vGlosa->size() > 0) + notifyListeners(vGlosa); + free(vGlosa); + } - /** - * Traduz um texto (char * input) para um vetor de tokens contendo a - * traducao para glosa - * - * @param input texto de entrada - * @return vetor de string contendo os tokens em glosa traduzidos. - **/ - vector * TradutorPortGlosa::portuguesToGlosaVector(const char * input) { - char * sGlosa; - vector * vGlosa; + /** + * Traduz um texto (char * input) para um vetor de tokens contendo a + * traducao para glosa + * + * @param input texto de entrada + * @return vetor de string contendo os tokens em glosa traduzidos. + **/ + vector * TradutorPortGlosa::portuguesToGlosaVector(const char * input) { + char * sGlosa; + vector * vGlosa; - // Faz a tradução de portugues para glosa - sGlosa = pyTradutor->convertStringToGlosa(input); + // Faz a tradução de portugues para glosa + sGlosa = pyTradutor->convertStringToGlosa(input); - // Cria vetor de string contendo os tokens da glosa já traduzidos - vGlosa = portuguesToGlosaVectorSplit(sGlosa); - - return vGlosa; - } + // Cria vetor de string contendo os tokens da glosa já traduzidos + vGlosa = portuguesToGlosaVectorSplit(sGlosa); + return vGlosa; + } - /** - * Faz split de uma string (char * sGlosa) para um vector contendo os - * tokens da glosa - * - * @param sGlosa string de glosa - * @return vetor de string contendo os tokens em glosa. - **/ - vector * TradutorPortGlosa::portuguesToGlosaVectorSplit(char * sGlosa) { + /** + * Faz split de uma string (char * sGlosa) para um vector contendo os + * tokens da glosa + * + * @param sGlosa string de glosa + * @return vetor de string contendo os tokens em glosa. + **/ + vector * TradutorPortGlosa::portuguesToGlosaVectorSplit(char * sGlosa) { - //printf("[INFO] Glosa: %s\n", sGlosa); + //printf("[INFO] Glosa: %s\n", sGlosa); - vector * vGlosa = new vector(); - string str(reinterpret_cast(sGlosa)); + vector * vGlosa = new vector(); + string str(reinterpret_cast(sGlosa)); - int cutAt; - while((cutAt = str.find_first_of(" ")) != str.npos){ - if(cutAt > 0) { - vGlosa->push_back(str.substr(0,cutAt)); - } - str = str.substr(cutAt+1); - } - if(str.length() > 0) { - vGlosa->push_back(str); + int cutAt; + while((cutAt = str.find_first_of(" ")) != str.npos){ + if(cutAt > 0){ + vGlosa->push_back(str.substr(0,cutAt)); } + str = str.substr(cutAt+1); + } - return vGlosa; + if(str.length() > 0) { + vGlosa->push_back(str); } + + return vGlosa; + } } diff --git a/util/src/include/logger.h b/util/src/include/logger.h index 8767dba..78a8483 100644 --- a/util/src/include/logger.h +++ b/util/src/include/logger.h @@ -25,7 +25,6 @@ using namespace std; - namespace Util { class Logger { diff --git a/util/src/logger.cpp b/util/src/logger.cpp index ae805fb..f934f73 100644 --- a/util/src/logger.cpp +++ b/util/src/logger.cpp @@ -11,8 +11,6 @@ #include "logger.h" -using namespace std; - namespace Util { Logger* Logger::m_pInstance = NULL; -- libgit2 0.21.2