Commit 7724541292051b57c62aad097466e0fcfbba2fee
1 parent
421fa204
Exists in
master
and in
1 other branch
Adaptado o padrão de desenvolvimento do componente servico
Showing
9 changed files
with
158 additions
and
175 deletions
Show diff stats
main.cpp
| ... | ... | @@ -177,7 +177,7 @@ void serviceREC(char* path_video, char* sublanguage, |
| 177 | 177 | hasFailed(); |
| 178 | 178 | return; |
| 179 | 179 | } |
| 180 | - while(service_rec->isRunning()){ | |
| 180 | + while(!service_rec->isFinished()){ | |
| 181 | 181 | sleep(2); |
| 182 | 182 | } |
| 183 | 183 | delete service_rec; |
| ... | ... | @@ -202,7 +202,7 @@ void serviceREC(char* path_video, char* sublanguage, |
| 202 | 202 | hasFailed(); |
| 203 | 203 | return; |
| 204 | 204 | } |
| 205 | - while(service_rec->isRunning()){ | |
| 205 | + while(!service_rec->isFinished()){ | |
| 206 | 206 | sleep(2); |
| 207 | 207 | } |
| 208 | 208 | delete service_rec; |
| ... | ... | @@ -225,7 +225,7 @@ void serviceSRT(char* path_in, char* path_srt, char* sublanguage, |
| 225 | 225 | hasFailed(); |
| 226 | 226 | return; |
| 227 | 227 | } |
| 228 | - while(service_srt->isRunning()){ | |
| 228 | + while(!service_srt->isFinished()){ | |
| 229 | 229 | sleep(5); |
| 230 | 230 | } |
| 231 | 231 | |
| ... | ... | @@ -246,7 +246,7 @@ void serviceText(char* path_text, char* transparency, char* id, char* client_typ |
| 246 | 246 | return; |
| 247 | 247 | } |
| 248 | 248 | |
| 249 | - while (service_text->isAlive()) { | |
| 249 | + while (!service_text->isFinished()) { | |
| 250 | 250 | usleep(100000); //100ms |
| 251 | 251 | } |
| 252 | 252 | delete service_text; |
| ... | ... | @@ -263,7 +263,7 @@ void serviceText(char* path_text, char* transparency, char* id, char* client_typ |
| 263 | 263 | return; |
| 264 | 264 | } |
| 265 | 265 | |
| 266 | - while (service_text->isAlive()) { | |
| 266 | + while (!service_text->isFinished()) { | |
| 267 | 267 | usleep(100000); //100ms |
| 268 | 268 | } |
| 269 | 269 | delete service_text; |
| ... | ... | @@ -273,7 +273,6 @@ void serviceText(char* path_text, char* transparency, char* id, char* client_typ |
| 273 | 273 | |
| 274 | 274 | void serviceOnlySRT(char* path_file, char* transparency, char* id){ |
| 275 | 275 | |
| 276 | - | |
| 277 | 276 | ServiceWindowGenerationFromSRT * service_srt; |
| 278 | 277 | service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, 5); |
| 279 | 278 | try{ |
| ... | ... | @@ -284,7 +283,7 @@ void serviceOnlySRT(char* path_file, char* transparency, char* id){ |
| 284 | 283 | return; |
| 285 | 284 | } |
| 286 | 285 | |
| 287 | - while (!service_srt->finished()) { | |
| 286 | + while (!service_srt->isFinished()) { | |
| 288 | 287 | usleep(100000); //100ms |
| 289 | 288 | } |
| 290 | 289 | delete service_srt; |
| ... | ... | @@ -309,7 +308,7 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate |
| 309 | 308 | hasFailed(); |
| 310 | 309 | return; |
| 311 | 310 | } |
| 312 | - while(service_rec->isRunning()){ | |
| 311 | + while(!service_rec->isFinished()){ | |
| 313 | 312 | sleep(2); |
| 314 | 313 | } |
| 315 | 314 | delete service_rec; |
| ... | ... | @@ -333,7 +332,7 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id){ |
| 333 | 332 | hasFailed(); |
| 334 | 333 | return; |
| 335 | 334 | } |
| 336 | - while(service_rec->isRunning()){ | |
| 335 | + while(!service_rec->isFinished()){ | |
| 337 | 336 | sleep(2); |
| 338 | 337 | } |
| 339 | 338 | delete service_rec; |
| ... | ... | @@ -357,12 +356,12 @@ void hasInvalid(){ |
| 357 | 356 | //Help do programa, explicando todos os parâmetros existentes... |
| 358 | 357 | void help() { |
| 359 | 358 | cout <<"\n##################################################################################\n" |
| 360 | - <<"# SERVICE_TYPE: 1 - means Closed Caption - doesn't use INPUT_SRT #\n" | |
| 361 | - <<"# 2 - means With Subtitles (SRT) - requires INPUT_SRT #\n" | |
| 362 | - <<"# 3 - means Recognize - requires INPUT_VIDEO #\n" | |
| 359 | + <<"# SERVICE_TYPE: 1 - means Closed Caption - doesn't use INPUT_SRT #\n" | |
| 360 | + <<"# 2 - means With Subtitles (SRT) - requires INPUT_SRT #\n" | |
| 361 | + <<"# 3 - means Recognize - requires INPUT_VIDEO #\n" | |
| 363 | 362 | <<"# 4 - means Text - requires INPUT_FILE_TEXT #\n" |
| 364 | - <<"# 5 - means Subtitles ONLY (SRT) - requires INPUT_SRT #\n" | |
| 365 | - <<"# 6 - means Audio - requires INPUT_AUDIO #\n" | |
| 363 | + <<"# 5 - means Subtitles ONLY (SRT) - requires INPUT_SRT #\n" | |
| 364 | + <<"# 6 - means Audio - requires INPUT_AUDIO #\n" | |
| 366 | 365 | <<"####################################################################################\n\n" |
| 367 | 366 | /*<<"# INPUT_VIDEO: Path of the video file #\n" |
| 368 | 367 | <<"#----------------------------------------------------------------------------------#\n" | ... | ... |
servico/src/include/serviceWindowGeneration.h
| ... | ... | @@ -57,12 +57,10 @@ protected: |
| 57 | 57 | char* path_audio; |
| 58 | 58 | char* path_libras; |
| 59 | 59 | char* client_type; |
| 60 | - | |
| 61 | - bool running; | |
| 62 | - | |
| 63 | - bool finish; | |
| 64 | 60 | char* user_id; |
| 65 | 61 | |
| 62 | + bool running; | |
| 63 | + | |
| 66 | 64 | int size, position, transparency, sublanguage, serviceType, numero_legendas, legendas_enviadas; |
| 67 | 65 | |
| 68 | 66 | void setSize(int); |
| ... | ... | @@ -82,12 +80,12 @@ public: |
| 82 | 80 | |
| 83 | 81 | ServiceWindowGeneration(); |
| 84 | 82 | ~ServiceWindowGeneration(); |
| 83 | + | |
| 85 | 84 | virtual void notifyTranslation(vector<string>* glosas); |
| 86 | 85 | virtual void notifyEndOfSynchronization(); |
| 87 | 86 | //virtual void notifyPCRBase(uint64_t pcr_base); |
| 87 | + | |
| 88 | 88 | void initialize(); |
| 89 | - TradutorPortGlosa * getTradutor(); | |
| 90 | - void adicionaPTS(int64_t pts); | |
| 91 | 89 | bool isRunning(); |
| 92 | 90 | |
| 93 | 91 | char* getPathLibras(); |
| ... | ... | @@ -95,8 +93,11 @@ public: |
| 95 | 93 | char* getClientType(); |
| 96 | 94 | char* getPathInput(); |
| 97 | 95 | string getPathAPI(); |
| 96 | + TradutorPortGlosa * getTradutor(); | |
| 97 | + | |
| 98 | 98 | void setPathLibras(); |
| 99 | 99 | void setSizeOfSubtitles(int sub_size); |
| 100 | + void adicionaPTS(int64_t pts); | |
| 100 | 101 | }; |
| 101 | 102 | |
| 102 | 103 | #endif /* SERVICEWINDOWGENERATION_H */ | ... | ... |
servico/src/include/serviceWindowGenerationFromREC.h
| ... | ... | @@ -16,25 +16,21 @@ class ServiceWindowGenerationFromREC : public ServiceWindowGeneration, public Re |
| 16 | 16 | |
| 17 | 17 | private: |
| 18 | 18 | Recognize *rec; |
| 19 | + bool finish; | |
| 19 | 20 | |
| 20 | 21 | public: |
| 21 | 22 | |
| 22 | 23 | ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType, char* rate); |
| 23 | - | |
| 24 | 24 | ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType); |
| 25 | - | |
| 26 | 25 | ~ServiceWindowGenerationFromREC(); |
| 27 | - void initialize(); | |
| 28 | - | |
| 26 | + | |
| 29 | 27 | virtual void notifyTextRecognized(unsigned char* text, int64_t pts); |
| 30 | 28 | virtual void notifyEnd(int sentences_size); |
| 31 | - | |
| 32 | - | |
| 33 | 29 | void notifyTranslator(unsigned char *text); |
| 34 | - void notifySynchWithoutTranslator(unsigned char *text, int64_t pts); | |
| 35 | - | |
| 30 | + | |
| 31 | + void initialize(); | |
| 32 | + bool isFinished(); | |
| 36 | 33 | void Run(); |
| 37 | - | |
| 38 | 34 | }; |
| 39 | 35 | |
| 40 | 36 | #endif /* SERVICEWINDOWGENERATIONFROMREC_H */ | ... | ... |
servico/src/include/serviceWindowGenerationFromSRT.h
| ... | ... | @@ -21,33 +21,27 @@ private: |
| 21 | 21 | pthread_mutex_t *mutex_serviceSRT; |
| 22 | 22 | ExtratorSRT * extratorSRT; |
| 23 | 23 | char* path_srt; |
| 24 | - bool finish_srt; | |
| 24 | + bool finish; | |
| 25 | 25 | |
| 26 | 26 | public: |
| 27 | 27 | |
| 28 | 28 | /* Construtor 1 - legenda e vídeo */ |
| 29 | - ServiceWindowGenerationFromSRT( | |
| 30 | - char* path_video, char* path_srt, int sublanguage, | |
| 29 | + ServiceWindowGenerationFromSRT(char* path_video, char* path_srt, int sublanguage, | |
| 31 | 30 | int position, int size, int transparency, char* id, int _serviceType); |
| 32 | - | |
| 33 | 31 | /* Construtor 2 - só legenda */ |
| 34 | 32 | ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, int _serviceType); |
| 35 | - | |
| 36 | - /* Destrutor */ | |
| 37 | 33 | ~ServiceWindowGenerationFromSRT(); |
| 38 | 34 | |
| 39 | 35 | virtual void notifySubtitle(unsigned char* subtitle, int64_t pts); |
| 40 | 36 | virtual void notifyEnd(int sub_size); |
| 41 | - | |
| 42 | - void notificaTradutor(unsigned char *legenda); | |
| 43 | - | |
| 44 | - bool finished(); | |
| 37 | + void notifyTranslator(unsigned char* subtitle); | |
| 45 | 38 | |
| 46 | - void notificaSincronizadorSemTradutor(unsigned char *legenda, int64_t pts); | |
| 47 | 39 | void initialize(); |
| 48 | - void setPathSRT(char* path_srt); | |
| 40 | + bool isFinished(); | |
| 49 | 41 | void Run(); |
| 50 | 42 | |
| 43 | + void setPathSRT(char* path_srt); | |
| 44 | + | |
| 51 | 45 | }; |
| 52 | 46 | |
| 53 | 47 | #endif /* SERVICEWINDOWGENERATIONFROMSRT_H */ | ... | ... |
servico/src/include/serviceWindowGenerationFromText.h
| ... | ... | @@ -12,17 +12,19 @@ |
| 12 | 12 | class ServiceWindowGenerationFromText : public ServiceWindowGeneration, public ListenerTXT, public Thread { |
| 13 | 13 | |
| 14 | 14 | private: |
| 15 | - ExtratorTXT * extratorTXT; | |
| 16 | - bool alive; | |
| 15 | + ExtratorTXT * extratorTXT; | |
| 16 | + bool finish; | |
| 17 | 17 | |
| 18 | 18 | public: |
| 19 | 19 | ServiceWindowGenerationFromText (char* _path_file, char* _video_path_file, |
| 20 | 20 | int _transp, int _serviceType, char* _client_type); |
| 21 | 21 | ~ServiceWindowGenerationFromText (); |
| 22 | + | |
| 22 | 23 | void notifyLine(unsigned char* line); |
| 23 | 24 | void notifyEnd(int line_size); |
| 25 | + | |
| 24 | 26 | void initialize(); |
| 25 | - bool isAlive(); | |
| 27 | + bool isFinished(); | |
| 26 | 28 | void Run(); |
| 27 | 29 | }; |
| 28 | 30 | ... | ... |
servico/src/serviceWindowGeneration.cpp
| ... | ... | @@ -20,57 +20,13 @@ ServiceWindowGeneration::~ServiceWindowGeneration() { |
| 20 | 20 | if (mixer) delete mixer; |
| 21 | 21 | if (tradutor) delete tradutor; |
| 22 | 22 | if (sincronizador) delete sincronizador; |
| 23 | - | |
| 24 | 23 | DDDPRINTF("Service finalized!\n"); |
| 25 | - | |
| 26 | -} | |
| 27 | - | |
| 28 | -void ServiceWindowGeneration::adicionaPTS(int64_t pts) { | |
| 29 | - vetor_pts->push_back(pts); | |
| 30 | -} | |
| 31 | - | |
| 32 | -/* Checado pela subclasse para saber quando o sincronizador terminar. */ | |
| 33 | -bool ServiceWindowGeneration::isRunning() { | |
| 34 | - return this->running; | |
| 35 | -} | |
| 36 | - | |
| 37 | -/* Quando o sincronizador termina, ele invoca esse método para avisar! */ | |
| 38 | -void ServiceWindowGeneration::notifyEndOfSynchronization() { | |
| 39 | - if (serviceType == SERVICE_TYPE_REC || serviceType == SERVICE_TYPE_SRT) { | |
| 40 | - mixer = new Mixer(); | |
| 41 | - mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id); | |
| 42 | - createThumbnail(); | |
| 43 | - }else | |
| 44 | - transcodeVideoToMp4(); | |
| 45 | - this->running = false; | |
| 46 | - | |
| 47 | -} | |
| 48 | - | |
| 49 | -void ServiceWindowGeneration::setSizeOfSubtitles(int sub_size) { | |
| 50 | - numero_legendas = sub_size; | |
| 51 | - if (legendas_enviadas >= numero_legendas) { | |
| 52 | - sincronizador->stop(); | |
| 53 | - } | |
| 54 | -} | |
| 55 | - | |
| 56 | -void ServiceWindowGeneration::setPathLibras() { | |
| 57 | - char* final_path = new char[MAX_SIZE_PATH]; | |
| 58 | - strcpy(final_path, "vlibras_user/vlibras-api/uploads/"); | |
| 59 | - strcat(final_path, this->user_id); | |
| 60 | - strcat(final_path, "/libras.ts"); | |
| 61 | - | |
| 62 | - this->path_libras = final_path; | |
| 63 | - //DDPRINTF("Path TS File: %s\n", this->path_libras); | |
| 64 | 24 | } |
| 65 | 25 | |
| 66 | 26 | char* ServiceWindowGeneration::getPathLibras() { |
| 67 | 27 | return path_libras; |
| 68 | 28 | } |
| 69 | 29 | |
| 70 | -void ServiceWindowGeneration::setPathInput(char* _path_input) { | |
| 71 | - this->path_input = _path_input; | |
| 72 | -} | |
| 73 | - | |
| 74 | 30 | char* ServiceWindowGeneration::getPathInput() { |
| 75 | 31 | return path_input; |
| 76 | 32 | } |
| ... | ... | @@ -79,10 +35,6 @@ string ServiceWindowGeneration::getPathAPI() { |
| 79 | 35 | return PATH_API; |
| 80 | 36 | } |
| 81 | 37 | |
| 82 | -void ServiceWindowGeneration::setUserId(char* _userId) { | |
| 83 | - this->user_id = _userId; | |
| 84 | -} | |
| 85 | - | |
| 86 | 38 | char* ServiceWindowGeneration::getClientType(){ |
| 87 | 39 | return client_type; |
| 88 | 40 | } |
| ... | ... | @@ -91,14 +43,26 @@ char* ServiceWindowGeneration::getUserId() { |
| 91 | 43 | return user_id; |
| 92 | 44 | } |
| 93 | 45 | |
| 94 | -void ServiceWindowGeneration::setServiceType(int type) { | |
| 95 | - serviceType = type; | |
| 46 | +void ServiceWindowGeneration::setPathInput(char* _path_input) { | |
| 47 | + this->path_input = _path_input; | |
| 96 | 48 | } |
| 97 | 49 | |
| 98 | 50 | void ServiceWindowGeneration::setClientType(char* client_type) { |
| 99 | 51 | this->client_type = client_type; |
| 100 | 52 | } |
| 101 | 53 | |
| 54 | +void ServiceWindowGeneration::setUserId(char* _userId) { | |
| 55 | + this->user_id = _userId; | |
| 56 | +} | |
| 57 | + | |
| 58 | +void ServiceWindowGeneration::setServiceType(int type) { | |
| 59 | + serviceType = type; | |
| 60 | +} | |
| 61 | + | |
| 62 | +void ServiceWindowGeneration::setSubLanguage(int sublang){ | |
| 63 | + this->sublanguage = sublang; | |
| 64 | +} | |
| 65 | + | |
| 102 | 66 | void ServiceWindowGeneration::setSize(int size){ |
| 103 | 67 | this->size = size; |
| 104 | 68 | } |
| ... | ... | @@ -111,15 +75,47 @@ void ServiceWindowGeneration::setTransparency(int transparency){ |
| 111 | 75 | this->transparency = transparency; |
| 112 | 76 | } |
| 113 | 77 | |
| 114 | -void ServiceWindowGeneration::setSubLanguage(int sublang){ | |
| 115 | - this->sublanguage = sublang; | |
| 78 | +void ServiceWindowGeneration::setPathLibras() { | |
| 79 | + char* final_path = new char[MAX_SIZE_PATH]; | |
| 80 | + strcpy(final_path, "vlibras_user/vlibras-api/uploads/"); | |
| 81 | + strcat(final_path, this->user_id); | |
| 82 | + strcat(final_path, "/libras.ts"); | |
| 83 | + | |
| 84 | + this->path_libras = final_path; | |
| 85 | + //DDPRINTF("Path TS File: %s\n", this->path_libras); | |
| 86 | +} | |
| 87 | + | |
| 88 | +void ServiceWindowGeneration::setSizeOfSubtitles(int sub_size) { | |
| 89 | + numero_legendas = sub_size; | |
| 90 | + if (legendas_enviadas >= numero_legendas) | |
| 91 | + sincronizador->stop(); | |
| 92 | +} | |
| 93 | + | |
| 94 | +void ServiceWindowGeneration::adicionaPTS(int64_t pts) { | |
| 95 | + vetor_pts->push_back(pts); | |
| 96 | +} | |
| 97 | + | |
| 98 | +/* Checado pela subclasse para saber quando o sincronizador terminar. */ | |
| 99 | +bool ServiceWindowGeneration::isRunning() { | |
| 100 | + return this->running; | |
| 101 | +} | |
| 102 | + | |
| 103 | +/* Quando o sincronizador termina, ele invoca esse método para avisar! */ | |
| 104 | +void ServiceWindowGeneration::notifyEndOfSynchronization() { | |
| 105 | + if (serviceType == SERVICE_TYPE_REC || serviceType == SERVICE_TYPE_SRT) { | |
| 106 | + mixer = new Mixer(); | |
| 107 | + mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id); | |
| 108 | + createThumbnail(); | |
| 109 | + }else{ | |
| 110 | + transcodeVideoToMp4(); | |
| 111 | + } | |
| 112 | + this->running = false; | |
| 116 | 113 | } |
| 117 | 114 | |
| 118 | 115 | void ServiceWindowGeneration::initialize() { |
| 119 | 116 | |
| 120 | 117 | setPathLibras(); |
| 121 | 118 | |
| 122 | - this->finish = false; | |
| 123 | 119 | if (this->sublanguage == 1) { |
| 124 | 120 | tradutor->addListener(this); |
| 125 | 121 | } | ... | ... |
servico/src/serviceWindowGenerationFromREC.cpp
| ... | ... | @@ -11,6 +11,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 11 | 11 | setServiceType(serviceType); |
| 12 | 12 | setUserId(id); |
| 13 | 13 | rec = new Recognize(path_video, id, rate); |
| 14 | + finish = false; | |
| 14 | 15 | DPRINTF("Done!\n"); |
| 15 | 16 | } |
| 16 | 17 | |
| ... | ... | @@ -25,6 +26,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 25 | 26 | setServiceType(serviceType); |
| 26 | 27 | setUserId(id); |
| 27 | 28 | rec = new Recognize(path_video, id); |
| 29 | + finish = false; | |
| 28 | 30 | DPRINTF("Done!\n"); |
| 29 | 31 | } |
| 30 | 32 | |
| ... | ... | @@ -33,6 +35,24 @@ ServiceWindowGenerationFromREC::~ServiceWindowGenerationFromREC() { |
| 33 | 35 | DDDPRINTF("Service REC finished!\n"); |
| 34 | 36 | } |
| 35 | 37 | |
| 38 | +void ServiceWindowGenerationFromREC::notifyTranslator(unsigned char *text) { | |
| 39 | + tradutor->traduz(text); | |
| 40 | +} | |
| 41 | + | |
| 42 | +void ServiceWindowGenerationFromREC::notifyTextRecognized(unsigned char* text, int64_t pts) { | |
| 43 | + adicionaPTS(pts); | |
| 44 | + notifyTranslator(text); | |
| 45 | +} | |
| 46 | + | |
| 47 | +bool ServiceWindowGenerationFromREC::isFinished(){ | |
| 48 | + return finish; | |
| 49 | +} | |
| 50 | + | |
| 51 | +void ServiceWindowGenerationFromREC::notifyEnd(int sentences_size) { | |
| 52 | + DDPRINTF("Service REC recebeu: %d sentenças.\n", sentences_size); | |
| 53 | + setSizeOfSubtitles(sentences_size); | |
| 54 | +} | |
| 55 | + | |
| 36 | 56 | void ServiceWindowGenerationFromREC::initialize() { |
| 37 | 57 | |
| 38 | 58 | rec->addListener(this); |
| ... | ... | @@ -67,23 +87,10 @@ void ServiceWindowGenerationFromREC::initialize() { |
| 67 | 87 | this->Start(); |
| 68 | 88 | } |
| 69 | 89 | |
| 70 | -void ServiceWindowGenerationFromREC::notifyTextRecognized(unsigned char* text, int64_t pts) { | |
| 71 | - adicionaPTS(pts); | |
| 72 | - notifyTranslator(text); | |
| 73 | -} | |
| 74 | - | |
| 75 | -void ServiceWindowGenerationFromREC::notifyTranslator(unsigned char *text) { | |
| 76 | - tradutor->traduz(text); | |
| 77 | -} | |
| 78 | - | |
| 79 | -void ServiceWindowGenerationFromREC::notifyEnd(int sentences_size) { | |
| 80 | - DDPRINTF("Service REC recebeu: %d sentenças.\n", sentences_size); | |
| 81 | - setSizeOfSubtitles(sentences_size); | |
| 82 | -} | |
| 83 | - | |
| 84 | 90 | void ServiceWindowGenerationFromREC::Run() { |
| 85 | 91 | |
| 86 | - while (!rec->isFinished()) { | |
| 87 | - sleep(200000); | |
| 92 | + while (isRunning()) { | |
| 93 | + usleep(200000); | |
| 88 | 94 | } |
| 95 | + finish = true; | |
| 89 | 96 | } | ... | ... |
servico/src/serviceWindowGenerationFromSRT.cpp
| ... | ... | @@ -12,7 +12,7 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT( |
| 12 | 12 | setSubLanguage(sublanguage); |
| 13 | 13 | setServiceType(serviceType); |
| 14 | 14 | setUserId(id); |
| 15 | - this->finish = false; | |
| 15 | + finish = false; | |
| 16 | 16 | DPRINTF("Done!\n"); |
| 17 | 17 | } |
| 18 | 18 | |
| ... | ... | @@ -22,7 +22,7 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_srt, i |
| 22 | 22 | setTransparency(transparency); |
| 23 | 23 | setServiceType(serviceType); |
| 24 | 24 | setUserId(id); |
| 25 | - finish_srt = false; | |
| 25 | + finish = false; | |
| 26 | 26 | DPRINTF("Done!\n"); |
| 27 | 27 | } |
| 28 | 28 | |
| ... | ... | @@ -32,29 +32,31 @@ ServiceWindowGenerationFromSRT::~ServiceWindowGenerationFromSRT() { |
| 32 | 32 | DDDPRINTF("Service SRT finalized!\n"); |
| 33 | 33 | } |
| 34 | 34 | |
| 35 | -void ServiceWindowGenerationFromSRT::setPathSRT(char* path_srt) { | |
| 36 | - this->path_srt = path_srt; | |
| 37 | -} | |
| 35 | +void ServiceWindowGenerationFromSRT::notifyTranslator(unsigned char* subtitle) { | |
| 38 | 36 | |
| 39 | -void ServiceWindowGenerationFromSRT::notifyEnd(int sub_size) { | |
| 40 | - DDPRINTF("Service SRT recebeu: %d legendas.\n", sub_size); | |
| 41 | - setSizeOfSubtitles(sub_size); | |
| 37 | + const char* constchar = (const char*) subtitle; | |
| 38 | + char* legenda_copy = new char[strlen(constchar)+1]; | |
| 39 | + strcpy(legenda_copy, constchar); | |
| 40 | + tradutor->traduz((unsigned char*) legenda_copy); | |
| 41 | + free(legenda_copy); | |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | - | |
| 45 | -void ServiceWindowGenerationFromSRT::notifySubtitle(unsigned char *legenda, int64_t pts){ | |
| 44 | +void ServiceWindowGenerationFromSRT::notifySubtitle(unsigned char *subtitle, int64_t pts){ | |
| 46 | 45 | adicionaPTS(pts); |
| 47 | - notificaTradutor(legenda); | |
| 48 | - | |
| 46 | + notifyTranslator(subtitle); | |
| 49 | 47 | } |
| 50 | 48 | |
| 51 | -void ServiceWindowGenerationFromSRT::notificaTradutor(unsigned char* legenda) { | |
| 49 | +bool ServiceWindowGenerationFromSRT::isFinished(){ | |
| 50 | + return finish; | |
| 51 | +} | |
| 52 | 52 | |
| 53 | - const char* constchar = (const char*) legenda; | |
| 54 | - char* legenda_copy = new char[strlen(constchar)+1]; | |
| 55 | - strcpy(legenda_copy, constchar); | |
| 56 | - tradutor->traduz((unsigned char*) legenda_copy); | |
| 57 | - free(legenda_copy); | |
| 53 | +void ServiceWindowGenerationFromSRT::notifyEnd(int sub_size) { | |
| 54 | + DDPRINTF("Service SRT recebeu: %d legendas.\n", sub_size); | |
| 55 | + setSizeOfSubtitles(sub_size); | |
| 56 | +} | |
| 57 | + | |
| 58 | +void ServiceWindowGenerationFromSRT::setPathSRT(char* path_srt) { | |
| 59 | + this->path_srt = path_srt; | |
| 58 | 60 | } |
| 59 | 61 | |
| 60 | 62 | void ServiceWindowGenerationFromSRT::initialize() { |
| ... | ... | @@ -62,29 +64,23 @@ void ServiceWindowGenerationFromSRT::initialize() { |
| 62 | 64 | DDPRINTF("Service SRT Initialize.\n"); |
| 63 | 65 | |
| 64 | 66 | if(serviceType == 2){ |
| 65 | - | |
| 66 | - /* | |
| 67 | - Este serviço utiliza o arquivo de vídeo (em formato TS) do usuário para | |
| 68 | - capturar as informações referente ao relógio (PCR) para calcular as | |
| 69 | - etiquetas de apresentação (PTS) dos sinais em Libras. | |
| 70 | - */ | |
| 67 | + /*Este serviço utiliza o arquivo de vídeo (em formato TS) do usuário para | |
| 68 | + capturar as informações referente ao relógio (PCR) para calcular as | |
| 69 | + etiquetas de apresentação (PTS) dos sinais em Libras.*/ | |
| 71 | 70 | |
| 72 | 71 | inputfile = new InputFile(this->path_input); |
| 73 | 72 | extratorSRT = new ExtratorSRT(); |
| 73 | + monitor_pcr_base = new MonitorPCR(); | |
| 74 | 74 | |
| 75 | - monitor_pcr_base = new MonitorPCR(); | |
| 76 | - | |
| 77 | - /* [Temporário]: como o monitor do PCR não estava encontrando a extensão do | |
| 78 | - vídeo, este está sendo analisado e infomado no trecho de código a seguir. | |
| 79 | - */ | |
| 80 | - if (strstr(path_input, "ts") != NULL) { | |
| 81 | - char* format_video = new char[3]; | |
| 82 | - strcpy(format_video, "ts"); | |
| 83 | - monitor_pcr_base->setFormatVideo(format_video); | |
| 84 | - } | |
| 75 | + /* [Temporário]: como o monitor do PCR não estava encontrando a extensão do | |
| 76 | + vídeo, este está sendo analisado e infomado no trecho de código a seguir.*/ | |
| 77 | + if (strstr(path_input, "ts") != NULL) { | |
| 78 | + char* format_video = new char[3]; | |
| 79 | + strcpy(format_video, "ts"); | |
| 80 | + monitor_pcr_base->setFormatVideo(format_video); | |
| 81 | + } | |
| 85 | 82 | |
| 86 | 83 | monitor_pcr_base->addListenerPCRBase(extratorSRT); |
| 87 | - | |
| 88 | 84 | inputfile->addListener(monitor_pcr_base); |
| 89 | 85 | extratorSRT->addListener(this); |
| 90 | 86 | extratorSRT->setFilePath((char*) path_srt); |
| ... | ... | @@ -102,13 +98,9 @@ void ServiceWindowGenerationFromSRT::initialize() { |
| 102 | 98 | this->Start(); |
| 103 | 99 | |
| 104 | 100 | } else{ |
| 105 | - | |
| 106 | - /** | |
| 107 | - Este serviço utiliza apenas o arquivo de legendas (SRT) como entrada, | |
| 108 | - portanto, não é preciso monitorar as informações do PCR a partir do | |
| 109 | - objeto InputFile(). | |
| 110 | - */ | |
| 111 | - | |
| 101 | + /*Este serviço utiliza apenas o arquivo de legendas (SRT) como entrada, | |
| 102 | + portanto, não é preciso monitorar as informações do PCR a partir do | |
| 103 | + objeto InputFile().*/ | |
| 112 | 104 | extratorSRT = new ExtratorSRT(); |
| 113 | 105 | monitor_pcr_base = new MonitorPCR(); |
| 114 | 106 | monitor_pcr_base->addListenerPCRBase(extratorSRT); |
| ... | ... | @@ -128,13 +120,9 @@ void ServiceWindowGenerationFromSRT::initialize() { |
| 128 | 120 | |
| 129 | 121 | } |
| 130 | 122 | |
| 131 | -bool ServiceWindowGenerationFromSRT::finished() { | |
| 132 | - return finish_srt; | |
| 133 | -} | |
| 134 | - | |
| 135 | 123 | void ServiceWindowGenerationFromSRT::Run() { |
| 136 | 124 | while (isRunning()) { |
| 137 | 125 | usleep(200000); //200ms |
| 138 | 126 | } |
| 139 | - finish_srt = true; | |
| 127 | + finish = true; | |
| 140 | 128 | } | ... | ... |
servico/src/serviceWindowGenerationFromText.cpp
| ... | ... | @@ -8,7 +8,7 @@ ServiceWindowGenerationFromText::ServiceWindowGenerationFromText ( |
| 8 | 8 | setUserId(username); |
| 9 | 9 | setTransparency(transp); |
| 10 | 10 | setServiceType(serviceType); |
| 11 | - alive = true; | |
| 11 | + finish = false; | |
| 12 | 12 | DPRINTF("Done!\n"); |
| 13 | 13 | } |
| 14 | 14 | |
| ... | ... | @@ -17,6 +17,19 @@ ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() { |
| 17 | 17 | DDDPRINTF("Service Text finished!\n"); |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | +void ServiceWindowGenerationFromText::notifyLine(unsigned char* line) { | |
| 21 | + tradutor->traduz(line); | |
| 22 | +} | |
| 23 | + | |
| 24 | +void ServiceWindowGenerationFromText::notifyEnd(int line_size) { | |
| 25 | + DDPRINTF("Service TXT recebeu: %d linhas.\n", line_size); | |
| 26 | + setSizeOfSubtitles(line_size); | |
| 27 | +} | |
| 28 | + | |
| 29 | +bool ServiceWindowGenerationFromText::isFinished() { | |
| 30 | + return finish; | |
| 31 | +} | |
| 32 | + | |
| 20 | 33 | void ServiceWindowGenerationFromText::initialize() { |
| 21 | 34 | DDPRINTF("Service Text Initialize.\n"); |
| 22 | 35 | |
| ... | ... | @@ -34,22 +47,9 @@ void ServiceWindowGenerationFromText::initialize() { |
| 34 | 47 | this->Start(); |
| 35 | 48 | } |
| 36 | 49 | |
| 37 | -void ServiceWindowGenerationFromText::notifyEnd(int line_size) { | |
| 38 | - DDPRINTF("Service TXT recebeu: %d linhas.\n", line_size); | |
| 39 | - setSizeOfSubtitles(line_size); | |
| 40 | -} | |
| 41 | - | |
| 42 | -void ServiceWindowGenerationFromText::notifyLine(unsigned char* line) { | |
| 43 | - tradutor->traduz(line); | |
| 44 | -} | |
| 45 | - | |
| 46 | -bool ServiceWindowGenerationFromText::isAlive() { | |
| 47 | - return alive; | |
| 48 | -} | |
| 49 | - | |
| 50 | 50 | void ServiceWindowGenerationFromText::Run() { |
| 51 | 51 | while (isRunning()) { |
| 52 | 52 | usleep(200000); //200ms |
| 53 | 53 | } |
| 54 | - alive = false; | |
| 54 | + finish = true; | |
| 55 | 55 | } | ... | ... |