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 | } | ... | ... |