Commit 23dddcacb96326a92a256dd0181bbd08d3040941
1 parent
b5cf8f1c
Exists in
master
and in
1 other branch
Atualização (VLibras-Box)
Showing
16 changed files
with
500 additions
and
289 deletions
Show diff stats
Makefile
main.cpp
| ... | ... | @@ -16,22 +16,27 @@ |
| 16 | 16 | #include "serviceWindowGenerationFromREC.h" |
| 17 | 17 | #include "serviceWindowGenerationFromText.h" |
| 18 | 18 | #include "serviceException.h" |
| 19 | +#include "property.h" | |
| 19 | 20 | |
| 20 | 21 | #include <sys/time.h> |
| 21 | 22 | #include <stdlib.h> |
| 22 | 23 | |
| 24 | +#define BLOQUEANTE 1 | |
| 25 | +#define NAO_BLOQUEANTE 2 | |
| 26 | +#define BOTH 3 | |
| 27 | + | |
| 23 | 28 | using namespace std; |
| 24 | 29 | |
| 25 | -void serviceCC(); | |
| 26 | -void serviceSRT(char* path_in, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* username); | |
| 27 | -void serviceOnlySRT(char* path_file, char* transparency, char* username); | |
| 28 | -void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username, char* rate); | |
| 29 | -void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username); | |
| 30 | -void serviceOnlyAudio(char* path_audio, char* transparency, char* username, char* rate); | |
| 31 | -void serviceOnlyAudio(char* path_audio, char* transparency, char* username); | |
| 32 | -void serviceText(char* path_text, char* transparency, char* username, char* client_type); | |
| 30 | +void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type); | |
| 31 | +void serviceOnlySRT(char* service, char* path_file, char* transparency, char* username, char* client_type); | |
| 32 | +//void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username, char* rate); | |
| 33 | +void serviceREC(char* service, char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type); | |
| 34 | +//void serviceOnlyAudio(char* path_audio, char* transparency, char* username, char* rate); | |
| 35 | +void serviceOnlyAudio(char* service, char* path_audio, char* transparency, char* id, char* client_type); | |
| 36 | +void serviceText(char* service, char* path_text, char* transparency, char* id, char* client_type); | |
| 33 | 37 | |
| 34 | 38 | void help(); |
| 39 | +void serviceHelp(int service); | |
| 35 | 40 | void fail(string msg); |
| 36 | 41 | void hasFailed(); |
| 37 | 42 | void hasInvalid(); |
| ... | ... | @@ -47,74 +52,98 @@ int main(int argc, char* argv[]) { |
| 47 | 52 | gettimeofday(&tv1, NULL); |
| 48 | 53 | t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00; |
| 49 | 54 | |
| 55 | + /*try{ | |
| 56 | + PropertyHandler* reader = new PropertyHandler(); | |
| 57 | + service-type = reader->getAttributeValue("SERVICE-TYPE"); | |
| 58 | + }catch(RuntimeException &ex){ | |
| 59 | + return; // escrever log aki | |
| 60 | + }*/ | |
| 50 | 61 | |
| 51 | - printf("\n################## VLIBRAS : LAVID ##################\n\n"); | |
| 52 | - DDPRINTF("Service Type: %s\n", argv[1]); | |
| 62 | + //Util::Logger::Instance()->writeInfoLog("/home/wesnydy/.vlibras-conf/service/log-vbox", "VBox OK!"); | |
| 53 | 63 | |
| 54 | - switch((int) atoi(argv[1])){ | |
| 55 | - case 1: | |
| 56 | - serviceCC(); | |
| 57 | - hasInvalid(); | |
| 58 | - break; | |
| 59 | - case 2: | |
| 60 | - if(argc <= 8){ | |
| 61 | - cout << "\nParametros inválidos. Tente novamente.\nService Type SRT: ./vlibras 2 INPUT_VIDEO INPUT_SRT LANGUAGE{1=Portuguese, 2=Glosa} POSITION{1=Top Left, 2=Top Right, 3=Bottom Right, 4=Bottom Left} SIZE{1=Small, 2=Medium, 3=Large} TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl; | |
| 62 | - help(); | |
| 63 | - hasInvalid(); | |
| 64 | + printf("\n################## VLIBRAS : LAVID ##################\n\n"); | |
| 65 | + | |
| 66 | + if(argc >= 2) { | |
| 67 | + | |
| 68 | + DDPRINTF("Service Type: %s\n", argv[1]); | |
| 69 | + | |
| 70 | + switch((int) atoi(argv[1])){ | |
| 71 | + | |
| 72 | + case 1: | |
| 73 | + //printf("[INFO] Serviço em manutenção!!!\n"); | |
| 74 | + //exit(0); | |
| 75 | + if(argc < 9){ | |
| 76 | + serviceHelp(1); | |
| 77 | + hasInvalid(); | |
| 78 | + break; | |
| 79 | + } | |
| 80 | + if(argc == 9) | |
| 81 | + serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], "user"); | |
| 82 | + else | |
| 83 | + serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); | |
| 84 | + | |
| 64 | 85 | break; |
| 65 | - } | |
| 66 | - serviceSRT(argv[2], argv[3], argv[4], argv[5], | |
| 67 | - argv[6], argv[7], argv[8]); | |
| 68 | - break; | |
| 69 | - case 3: | |
| 70 | - if(argc <= 7){ | |
| 71 | - cout << "\nParametros inválidos. Tente novamente.\nService Type REC: ./vlibras 3 INPUT_VIDEO LANGUAGE{1=Portuguese, 2=Glosa} POSITION{1=Top Left, 2=Top Right, 3=Bottom Right, 4=Bottom Left} SIZE{1=Small, 2=Medium, 3=Large} TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl; | |
| 72 | - help(); | |
| 73 | - hasInvalid(); | |
| 86 | + case 2: | |
| 87 | + printf("[INFO] Serviço em manutenção!!!\n"); | |
| 88 | + exit(0); | |
| 89 | + if(argc < 7){ | |
| 90 | + serviceHelp(2); | |
| 91 | + hasInvalid(); | |
| 92 | + break; | |
| 93 | + } | |
| 94 | + if(argc == 7) | |
| 95 | + serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], "user"); | |
| 96 | + else | |
| 97 | + serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]); | |
| 74 | 98 | break; |
| 75 | - } | |
| 76 | - if (argc == 8) | |
| 77 | - serviceREC(argv[2], argv[3], argv[4], argv[5], | |
| 78 | - argv[6], argv[7]); | |
| 79 | - else | |
| 80 | - serviceREC(argv[2], argv[3], argv[4], argv[5], | |
| 81 | - argv[6], argv[7], argv[8]); | |
| 82 | - break; | |
| 83 | - case 4: | |
| 84 | - if(argc <= 5){ | |
| 85 | - cout << "\nParametros inválidos. Tente novamente.\nService Type Text: ./vlibras 4 INPUT_TEXT_FILE TRANSPARENCY{0=Opaque, 1=Transparent} ID CLIENT_TYPE{Desktop, Web}" << endl; | |
| 86 | - help(); | |
| 87 | - hasInvalid(); | |
| 88 | - break; | |
| 89 | - } | |
| 90 | - serviceText(argv[2], argv[3], argv[4], argv[5]); | |
| 91 | - break; | |
| 92 | - case 5: | |
| 93 | - if(argc <= 4){ | |
| 94 | - cout << "\nParametros inválidos. Tente novamente.\nService Type SRT Only: ./vlibras 5 INPUT_SRT TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl; | |
| 95 | - help(); | |
| 96 | - hasInvalid(); | |
| 99 | + case 3: | |
| 100 | + //printf("[INFO] Serviço em manutenção!!!\n"); | |
| 101 | + //exit(0); | |
| 102 | + if(argc < 5){ | |
| 103 | + serviceHelp(3); | |
| 104 | + hasInvalid(); | |
| 105 | + break; | |
| 106 | + } | |
| 107 | + if(argc == 5){ | |
| 108 | + serviceText(argv[1], argv[2], argv[3], argv[4], "user"); | |
| 109 | + } | |
| 110 | + serviceText(argv[1], argv[2], argv[3], argv[4], argv[5]); | |
| 111 | + break; | |
| 112 | + case 4: | |
| 113 | + printf("[INFO] Serviço em manutenção!!!\n"); | |
| 114 | + exit(0); | |
| 115 | + if(argc < 5){ | |
| 116 | + serviceHelp(4); | |
| 117 | + hasInvalid(); | |
| 118 | + break; | |
| 119 | + } | |
| 120 | + if(argc == 5 ) | |
| 121 | + serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], "user"); | |
| 122 | + else | |
| 123 | + serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], argv[5]); | |
| 124 | + break; | |
| 125 | + case 5: | |
| 126 | + printf("[INFO] Serviço em manutenção!!!\n"); | |
| 127 | + exit(0); | |
| 128 | + if(argc < 5){ | |
| 129 | + serviceHelp(5); | |
| 130 | + hasInvalid(); | |
| 131 | + break; | |
| 132 | + } | |
| 133 | + if (argc == 5) | |
| 134 | + serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], "user"); | |
| 135 | + else | |
| 136 | + serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], argv[5]); | |
| 97 | 137 | break; |
| 98 | - } | |
| 99 | - serviceOnlySRT(argv[2], argv[3], argv[4]); | |
| 100 | - break; | |
| 101 | - case 6: | |
| 102 | - if(argc <= 4){ | |
| 103 | - cout << "\nParametros inválidos. Tente novamente.\nService Type REC: ./vlibras 6 INPUT_AUDIO TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl; | |
| 104 | - help(); | |
| 105 | - hasInvalid(); | |
| 138 | + default: | |
| 139 | + cout << "\nServiço inválido. Tente novamente." << endl; | |
| 140 | + help(); | |
| 141 | + hasInvalid(); | |
| 106 | 142 | break; |
| 107 | - } | |
| 108 | - if (argc == 6) | |
| 109 | - serviceOnlyAudio(argv[2], argv[3], argv[4], argv[5]); | |
| 110 | - else | |
| 111 | - serviceOnlyAudio(argv[2], argv[3], argv[4]); | |
| 112 | - break; | |
| 113 | - default: | |
| 114 | - cout << "\nServiço inválido. Tente novamente." << endl; | |
| 115 | - help(); | |
| 116 | - hasInvalid(); | |
| 117 | - break; | |
| 143 | + } | |
| 144 | + }else{ | |
| 145 | + help(); | |
| 146 | + hasInvalid(); | |
| 118 | 147 | } |
| 119 | 148 | |
| 120 | 149 | if(isFailed) |
| ... | ... | @@ -131,69 +160,33 @@ int main(int argc, char* argv[]) { |
| 131 | 160 | |
| 132 | 161 | } |
| 133 | 162 | |
| 134 | -void serviceCC(){ | |
| 135 | - | |
| 136 | - cout << "\n--> Serviço não disponível.\n" << endl; | |
| 137 | - /** | |
| 138 | - cout << "\nSERVICE CLOSED CAPTION\n" << endl; | |
| 139 | - filename = createFileToResponse((char*)argv[6]); // FIXME: [6] é transparency | |
| 140 | - | |
| 141 | - char* input_file = argv[2]; | |
| 142 | - int position = (int) atoi(argv[4]); | |
| 143 | - int size = (int) atoi(argv[5]); | |
| 144 | - int transparency = (int) atoi(argv[6]); | |
| 163 | +void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, | |
| 164 | + char* size, char* transparency, char* id, char* client_type){ | |
| 145 | 165 | |
| 146 | - ServiceWindowGenerationFromCC *service; | |
| 147 | - service = new ServiceWindowGenerationFromCC( | |
| 148 | - input_file,position,size, transparency, 1); | |
| 149 | - | |
| 150 | - service->initialize(); | |
| 151 | - | |
| 152 | - while(service->isRunning()){ | |
| 153 | - sleep(5); | |
| 154 | - } | |
| 155 | - | |
| 156 | - char* id = (char*) argv[7]; | |
| 157 | - updateRequestStatus(filename.c_str(), id, "true"); | |
| 158 | - **/ | |
| 159 | -} | |
| 160 | - | |
| 161 | -void serviceREC(char* path_video, char* sublanguage, | |
| 162 | - char* position, char* size, char* transparency, char* id, char* rate){ | |
| 163 | - | |
| 164 | - ServiceWindowGenerationFromREC * service_rec; | |
| 165 | - service_rec = new ServiceWindowGenerationFromREC( | |
| 166 | - path_video, | |
| 167 | - (int) atoi(sublanguage), | |
| 168 | - (int) atoi(position), | |
| 169 | - (int) atoi(size), | |
| 170 | - (int) atoi(transparency), | |
| 171 | - id, 3, rate); | |
| 166 | + ServiceWindowGenerationFromSRT * service_srt; | |
| 167 | + service_srt = new ServiceWindowGenerationFromSRT(path_video, path_srt, (int) atoi(sublanguage), | |
| 168 | + (int) atoi(position), (int) atoi(size), (int) atoi(transparency), id, client_type, (int) atoi(service)); | |
| 172 | 169 | |
| 173 | 170 | try{ |
| 174 | - service_rec->initialize(); | |
| 171 | + service_srt->initialize(); | |
| 175 | 172 | }catch(ServiceException ex){ |
| 176 | 173 | fail(ex.getMessage()); |
| 177 | 174 | hasFailed(); |
| 178 | 175 | return; |
| 179 | - } | |
| 180 | - while(!service_rec->isFinished()){ | |
| 181 | - sleep(2); | |
| 176 | + } | |
| 177 | + while(!service_srt->isFinished()){ | |
| 178 | + sleep(5); | |
| 182 | 179 | } |
| 183 | - delete service_rec; | |
| 180 | + | |
| 181 | + delete service_srt; | |
| 184 | 182 | } |
| 185 | 183 | |
| 186 | -void serviceREC(char* path_video, char* sublanguage, | |
| 187 | - char* position, char* size, char* transparency, char* id){ | |
| 184 | +void serviceREC(char* service, char* path_video, char* sublanguage, char* position, char* size, | |
| 185 | + char* transparency, char* id, char* client_type){ | |
| 188 | 186 | |
| 189 | 187 | ServiceWindowGenerationFromREC * service_rec; |
| 190 | - service_rec = new ServiceWindowGenerationFromREC( | |
| 191 | - path_video, | |
| 192 | - (int) atoi(sublanguage), | |
| 193 | - (int) atoi(position), | |
| 194 | - (int) atoi(size), | |
| 195 | - (int) atoi(transparency), | |
| 196 | - id, 3); | |
| 188 | + service_rec = new ServiceWindowGenerationFromREC(path_video, (int) atoi(sublanguage), | |
| 189 | + (int) atoi(position), (int) atoi(size), (int) atoi(transparency), id, client_type, (int) atoi(service)); | |
| 197 | 190 | |
| 198 | 191 | try{ |
| 199 | 192 | service_rec->initialize(); |
| ... | ... | @@ -208,73 +201,29 @@ void serviceREC(char* path_video, char* sublanguage, |
| 208 | 201 | delete service_rec; |
| 209 | 202 | } |
| 210 | 203 | |
| 211 | -void serviceSRT(char* path_in, char* path_srt, char* sublanguage, | |
| 212 | - char* position, char* size, char* transparency, char* id){ | |
| 204 | +void serviceText(char* service, char* path_text, char* transparency, char* id, char* client_type){ | |
| 213 | 205 | |
| 214 | - | |
| 215 | - ServiceWindowGenerationFromSRT * service_srt; | |
| 216 | - service_srt = new ServiceWindowGenerationFromSRT( | |
| 217 | - path_in, path_srt, (int) atoi(sublanguage), | |
| 218 | - (int) atoi(position), (int) atoi(size), | |
| 219 | - (int) atoi(transparency), id, 2); | |
| 220 | - | |
| 221 | - try{ | |
| 222 | - service_srt->initialize(); | |
| 223 | - }catch(ServiceException ex){ | |
| 224 | - fail(ex.getMessage()); | |
| 225 | - hasFailed(); | |
| 226 | - return; | |
| 227 | - } | |
| 228 | - while(!service_srt->isFinished()){ | |
| 229 | - sleep(5); | |
| 230 | - } | |
| 231 | - | |
| 232 | - delete service_srt; | |
| 233 | - | |
| 234 | -} | |
| 206 | + ServiceWindowGenerationFromText *service_text; | |
| 207 | + service_text = new ServiceWindowGenerationFromText(path_text, id, (int) atoi(transparency), (int) atoi(service), client_type); | |
| 235 | 208 | |
| 236 | -void serviceText(char* path_text, char* transparency, char* id, char* client_type){ | |
| 237 | - | |
| 238 | - if (strcmp(client_type, (char*)"WEB") == 0) { | |
| 239 | - ServiceWindowGenerationFromText *service_text; | |
| 240 | - service_text = new ServiceWindowGenerationFromText(path_text, id, (int) atoi(transparency), 4, client_type); | |
| 241 | - try{ | |
| 242 | - service_text->initialize(); | |
| 243 | - }catch(ServiceException ex){ | |
| 244 | - fail(ex.getMessage()); | |
| 245 | - hasFailed(); | |
| 246 | - return; | |
| 247 | - } | |
| 248 | - | |
| 249 | - while (!service_text->isFinished()) { | |
| 250 | - usleep(100000); //100ms | |
| 251 | - } | |
| 252 | - delete service_text; | |
| 253 | - | |
| 254 | - } else { | |
| 255 | - | |
| 256 | - ServiceWindowGenerationFromText *service_text; | |
| 257 | - service_text = new ServiceWindowGenerationFromText(path_text, id, (int) atoi(transparency), 4, (char*)"IOS"); | |
| 258 | - try{ | |
| 259 | - service_text->initialize(); | |
| 260 | - }catch(ServiceException ex){ | |
| 261 | - fail(ex.getMessage()); | |
| 262 | - hasFailed(); | |
| 263 | - return; | |
| 264 | - } | |
| 209 | + try{ | |
| 210 | + service_text->initialize(); | |
| 211 | + }catch(ServiceException ex){ | |
| 212 | + fail(ex.getMessage()); | |
| 213 | + hasFailed(); | |
| 214 | + return; | |
| 215 | + } | |
| 265 | 216 | |
| 266 | - while (!service_text->isFinished()) { | |
| 267 | - usleep(100000); //100ms | |
| 268 | - } | |
| 269 | - delete service_text; | |
| 270 | - } | |
| 271 | - | |
| 217 | + while (!service_text->isFinished()) { | |
| 218 | + usleep(100000); //100ms | |
| 219 | + } | |
| 220 | + delete service_text; | |
| 272 | 221 | } |
| 273 | 222 | |
| 274 | -void serviceOnlySRT(char* path_file, char* transparency, char* id){ | |
| 223 | +void serviceOnlySRT(char* service, char* path_file, char* transparency, char* id, char* client_type){ | |
| 275 | 224 | |
| 276 | 225 | ServiceWindowGenerationFromSRT * service_srt; |
| 277 | - service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, 5); | |
| 226 | + service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, client_type, (int) atoi(service)); | |
| 278 | 227 | try{ |
| 279 | 228 | service_srt->initialize(); |
| 280 | 229 | }catch(ServiceException ex){ |
| ... | ... | @@ -290,16 +239,35 @@ void serviceOnlySRT(char* path_file, char* transparency, char* id){ |
| 290 | 239 | |
| 291 | 240 | } |
| 292 | 241 | |
| 293 | -void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate){ | |
| 242 | +void serviceOnlyAudio(char* service, char* path_audio, char* transparency, char* id, char* client_type){ | |
| 243 | + | |
| 244 | + ServiceWindowGenerationFromREC * service_rec; | |
| 245 | + service_rec = new ServiceWindowGenerationFromREC(path_audio, 0, 0, 0, (int) atoi(transparency), id, client_type, (int) atoi(service)); | |
| 246 | + | |
| 247 | + try{ | |
| 248 | + service_rec->initialize(); | |
| 249 | + }catch(ServiceException ex){ | |
| 250 | + fail(ex.getMessage()); | |
| 251 | + hasFailed(); | |
| 252 | + return; | |
| 253 | + } | |
| 254 | + while(!service_rec->isFinished()){ | |
| 255 | + sleep(2); | |
| 256 | + } | |
| 257 | + delete service_rec; | |
| 258 | +} | |
| 259 | + | |
| 260 | +/*void serviceREC(char* path_video, char* sublanguage, | |
| 261 | + char* position, char* size, char* transparency, char* id, char* rate){ | |
| 294 | 262 | |
| 295 | 263 | ServiceWindowGenerationFromREC * service_rec; |
| 296 | 264 | service_rec = new ServiceWindowGenerationFromREC( |
| 297 | - path_audio, | |
| 298 | - 0, | |
| 299 | - 0, | |
| 300 | - 0, | |
| 265 | + path_video, | |
| 266 | + (int) atoi(sublanguage), | |
| 267 | + (int) atoi(position), | |
| 268 | + (int) atoi(size), | |
| 301 | 269 | (int) atoi(transparency), |
| 302 | - id, 6, rate); | |
| 270 | + id, 2, rate); | |
| 303 | 271 | |
| 304 | 272 | try{ |
| 305 | 273 | service_rec->initialize(); |
| ... | ... | @@ -312,9 +280,9 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate |
| 312 | 280 | sleep(2); |
| 313 | 281 | } |
| 314 | 282 | delete service_rec; |
| 315 | -} | |
| 283 | +}*/ | |
| 316 | 284 | |
| 317 | -void serviceOnlyAudio(char* path_audio, char* transparency, char* id){ | |
| 285 | +/*void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate){ | |
| 318 | 286 | |
| 319 | 287 | ServiceWindowGenerationFromREC * service_rec; |
| 320 | 288 | service_rec = new ServiceWindowGenerationFromREC( |
| ... | ... | @@ -323,7 +291,7 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id){ |
| 323 | 291 | 0, |
| 324 | 292 | 0, |
| 325 | 293 | (int) atoi(transparency), |
| 326 | - id, 6); | |
| 294 | + id, 5, rate); | |
| 327 | 295 | |
| 328 | 296 | try{ |
| 329 | 297 | service_rec->initialize(); |
| ... | ... | @@ -336,7 +304,7 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id){ |
| 336 | 304 | sleep(2); |
| 337 | 305 | } |
| 338 | 306 | delete service_rec; |
| 339 | -} | |
| 307 | +}*/ | |
| 340 | 308 | |
| 341 | 309 | void fail(string msg){ |
| 342 | 310 | printf("\n"); |
| ... | ... | @@ -352,45 +320,65 @@ void hasInvalid(){ |
| 352 | 320 | isInvalid = true; |
| 353 | 321 | } |
| 354 | 322 | |
| 323 | +void serviceHelp(int service){ | |
| 324 | + cout << "\nParâmetros inválidos! Tente novamente.\n"; | |
| 325 | + switch(service){ | |
| 326 | + case 1: | |
| 327 | + cout << "\nService Type: Video with Subtitles\n" | |
| 328 | + << "./vlibras INPUT_VIDEO INPUT_SRT LANGUAGE(1: Portuguese, 2:Glosa) POSITION(1: Top_Left, 2: Top_Right, 3: Bottom_Right, 4: Bottom_Left) " | |
| 329 | + << "SIZE(1: Small, 2: Medium, 3: Large) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | |
| 330 | + break; | |
| 331 | + case 2: | |
| 332 | + cout << "\nService Type: Video Recognize\n" | |
| 333 | + << "./vlibras INPUT_VIDEO LANGUAGE(1: Portuguese, 2:Glosa) POSITION(1: Top_Left, 2: Top_Right, 3: Bottom_Right, 4: Bottom_Left) " | |
| 334 | + << "SIZE(1: Small, 2: Medium, 3: Large) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | |
| 335 | + break; | |
| 336 | + case 3: | |
| 337 | + cout << "\nService Type: Text\n" | |
| 338 | + << "./vlibras INPUT_TEXT_FILE TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | |
| 339 | + break; | |
| 340 | + case 4: | |
| 341 | + cout << "\nService Type: Subtitles only\n" | |
| 342 | + << "./vlibras INPUT_SRT TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | |
| 343 | + break; | |
| 344 | + case 5: | |
| 345 | + cout << "\nService Type: Audio Recognize\n" | |
| 346 | + << "./vlibras INPUT_AUDIO TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | |
| 347 | + break; | |
| 348 | + } | |
| 349 | +} | |
| 355 | 350 | |
| 356 | 351 | //Help do programa, explicando todos os parâmetros existentes... |
| 357 | 352 | void help() { |
| 358 | - cout <<"\n##################################################################################\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" | |
| 362 | - <<"# 4 - means Text - requires INPUT_FILE_TEXT #\n" | |
| 363 | - <<"# 5 - means Subtitles ONLY (SRT) - requires INPUT_SRT #\n" | |
| 364 | - <<"# 6 - means Audio - requires INPUT_AUDIO #\n" | |
| 365 | - <<"####################################################################################\n\n" | |
| 366 | - /*<<"# INPUT_VIDEO: Path of the video file #\n" | |
| 367 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 368 | - <<"# INPUT_SRT: Path of the SRT file (only for SERVICE_TYPE = 2) #\n" | |
| 369 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 370 | - <<"# INPUT_FILE_TEXT: Path of the text file (doesn't use INPUT_VIDEO and INPUT_SRT) #\n" | |
| 371 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 372 | - <<"# INPUT_AUDIO: Path of the audio file" #\n | |
| 373 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 374 | - <<"# LANGUAGE: 1 - means Portuguese #\n" | |
| 375 | - <<"# 2 - means Glosa #\n" | |
| 376 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 377 | - <<"# POSITION: 1 - means TOP_LEFT #\n" | |
| 378 | - <<"# 2 - means TOP_RIGHT #\n" | |
| 379 | - <<"# 3 - means BOTTOM_RIGHT #\n" | |
| 380 | - <<"# 4 - means BOTTOM_LEFT #\n" | |
| 381 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 382 | - <<"# SIZE: 1 - means SMALL #\n" | |
| 383 | - <<"# 2 - means MEDIUM #\n" | |
| 384 | - <<"# 3 - means LARGE #\n" | |
| 385 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 386 | - <<"# TRANSPARENCY: 0 - means that the Background is Opaque #\n" | |
| 387 | - <<"# 1 - means that the Background is Transparent #\n" | |
| 388 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 389 | - <<"# CLIENT TYPE: DESKTOP #\n" | |
| 390 | - <<"# WEB #\n" | |
| 391 | - <<"#----------------------------------------------------------------------------------#\n" | |
| 392 | - <<"# ID: relative to the unique ID on the Database #\n" | |
| 393 | - <<"####################################################################################\n"*/; | |
| 394 | - | |
| 395 | -} | |
| 396 | 353 | |
| 354 | + cout << endl | |
| 355 | + << "Usage Summary: vlibras [SERVICE] [INPUT] ... [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | |
| 356 | + << "\nSERVICE:\n" | |
| 357 | + << "1 Video with Subtitles (SRT) - requires INPUT_VIDEO and INPUT_SRT\n" | |
| 358 | + << "2 Video Recognize - requires INPUT_VIDEO\n" | |
| 359 | + << "3 Text - requires INPUT_TEXT_FILE\n" | |
| 360 | + << "4 Subtitles only (SRT) - requires INPUT_SRT\n" | |
| 361 | + << "5 Audio Recognize - requires INPUT_AUDIO\n" | |
| 362 | + << "\nSERVICES PARAMETERS:\n" | |
| 363 | + << "Video with subtitles:\n" | |
| 364 | + << " [INPUT_VIDEO] [INPUT_SRT] [LANGUAGE] [POSITION] [SIZE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | |
| 365 | + << "Video Recognize:\n" | |
| 366 | + << " [INPUT_VIDEO] [LANGUAGE] [POSITION] [SIZE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | |
| 367 | + << "Text:\n" | |
| 368 | + << " [INPUT_TEXT_FILE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | |
| 369 | + << "Subtitles only:\n" | |
| 370 | + << " [INPUT_SRT] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | |
| 371 | + << "Audio Recognize\n" | |
| 372 | + << " [INPUT_AUDIO] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | |
| 373 | + << "\nPARAMETERS:\n" | |
| 374 | + << "INPUT_VIDEO Path of the video file\n" | |
| 375 | + << "INPUT_SRT Path of the subtitle file\n" | |
| 376 | + << "INPUT_TEXT_FILE Path of the text file\n" | |
| 377 | + << "INPUT_AUDIO Path of the audio file\n" | |
| 378 | + << "LANGUAGE 1 - means Portuguese, 2 - means Glosa\n" | |
| 379 | + << "POSITION 1 - means Top_Left, 2 - means Top_Right, 3 - means Bottom_Right, 4 - means Bottom_Left\n" | |
| 380 | + << "SIZE 1 - means Small, 2 - means Medium, 3 - means Large\n" | |
| 381 | + << "TRANSPARENCY 0 - means that the background is opaque , 1 - means that the background is transparent\n" | |
| 382 | + << "ID Relative to the unique ID on the Database\n" | |
| 383 | + << "CLIENT_TYPE web - necessary only for web clients, others clients can ignore this parameter\n"; | |
| 384 | +} | |
| 397 | 385 | \ No newline at end of file | ... | ... |
mixer/src/Mixer.cpp
| ... | ... | @@ -24,10 +24,11 @@ Mixer::~Mixer() { |
| 24 | 24 | |
| 25 | 25 | /*Faz a chamada ffmpeg no terminal.*/ |
| 26 | 26 | |
| 27 | -void Mixer::initialize(string mainVideo, string slVideo, int positionSecondaryVideo, int sizeSecondaryVideo, int transparency, char* _id){ | |
| 27 | +void Mixer::initialize(string mainVideo, string slVideo, int positionSecondaryVideo, int sizeSecondaryVideo, int transparency, char* _id, char* client_type){ | |
| 28 | 28 | |
| 29 | 29 | DDPRINTF("[AGUARDE] Mixando...\n") |
| 30 | 30 | |
| 31 | + client = client_type; | |
| 31 | 32 | stringstream ss; |
| 32 | 33 | ss << _id; |
| 33 | 34 | ss >> user_id; |
| ... | ... | @@ -42,7 +43,6 @@ void Mixer::initialize(string mainVideo, string slVideo, int positionSecondaryVi |
| 42 | 43 | this->setTransparency(transparency); |
| 43 | 44 | this->setPathFinal(); |
| 44 | 45 | this->mixVideos(); |
| 45 | - | |
| 46 | 46 | } |
| 47 | 47 | |
| 48 | 48 | void Mixer::mixVideos () { |
| ... | ... | @@ -146,8 +146,24 @@ void Mixer::mixVideos () { |
| 146 | 146 | } |
| 147 | 147 | |
| 148 | 148 | void Mixer::setPathFinal(){ |
| 149 | - pathFinal = PATH_API; | |
| 150 | - pathFinal.append(user_id).append(".mp4"); | |
| 149 | + | |
| 150 | + char* final_path = new char[256]; | |
| 151 | + | |
| 152 | + if(strcmp(client, (char*)WEB_USER) == 0){ | |
| 153 | + pathFinal = PATH_API; | |
| 154 | + pathFinal.append(user_id).append(".mp4"); | |
| 155 | + }else{ | |
| 156 | + try{ | |
| 157 | + PropertyHandler* reader = new PropertyHandler("vlibras_user/.vlibras-conf/configuration/params-vbox.conf"); | |
| 158 | + strcpy(final_path, reader->getAttributeValue("STORAGE")); | |
| 159 | + stringstream ss; | |
| 160 | + ss << final_path; | |
| 161 | + ss >> pathFinal; | |
| 162 | + pathFinal.append("/").append(user_id).append(".mp4"); | |
| 163 | + }catch(RuntimeException &ex){ | |
| 164 | + printf("%s\n", ex.getMessage().c_str()); | |
| 165 | + } | |
| 166 | + } | |
| 151 | 167 | } |
| 152 | 168 | |
| 153 | 169 | /*Ajusta o FPS do vídeo principal para 45 se preciso...*/ |
| ... | ... | @@ -314,11 +330,16 @@ void Mixer::setMainVideo(string mainVideo){ |
| 314 | 330 | } |
| 315 | 331 | //ajeitar isso depois |
| 316 | 332 | string nameOfMainVideo = mainVideo.substr(0, dotPosition); |
| 317 | - this->temporaryTextFile = "vlibras_user/vlibras-api/uploads/"; | |
| 318 | - temporaryTextFile.append(this->user_id).append("/tamanho.txt"); | |
| 319 | - | |
| 333 | + char* final_path = new char[256]; | |
| 334 | + | |
| 335 | + if(strcmp(client, (char*)WEB_USER) == 0){ | |
| 336 | + this->temporaryTextFile = "vlibras_user/vlibras-api/uploads/"; | |
| 337 | + temporaryTextFile.append(this->user_id).append("/tamanho.txt"); | |
| 338 | + }else{ | |
| 339 | + this->temporaryTextFile = "vlibras_user/.vlibras-conf/contents/"; | |
| 340 | + temporaryTextFile.append("tamanho.txt"); | |
| 341 | + } | |
| 320 | 342 | //printf("##########temporaryTextFile: %s\n", temporaryTextFile.c_str()); |
| 321 | - | |
| 322 | 343 | } |
| 323 | 344 | string Mixer::getMainVideo(){ |
| 324 | 345 | return this->mainVideo; | ... | ... |
mixer/src/include/Mixer.h
| ... | ... | @@ -17,9 +17,10 @@ |
| 17 | 17 | #include <string> |
| 18 | 18 | #include <fstream> |
| 19 | 19 | #include "dprintf.h" |
| 20 | +#include "property.h" | |
| 20 | 21 | |
| 21 | 22 | using namespace std; |
| 22 | - | |
| 23 | +using namespace sndesc; | |
| 23 | 24 | |
| 24 | 25 | //SL Video Position |
| 25 | 26 | #define TOP_LEFT 1 |
| ... | ... | @@ -35,9 +36,12 @@ using namespace std; |
| 35 | 36 | #define MEDIUM_HEIGHT 432 //0,4*1080 |
| 36 | 37 | #define LARGE_HEIGHT 540 //0.5*1080 |
| 37 | 38 | |
| 39 | +#define MAX_SIZE_PATH 256 | |
| 40 | +#define WEB_USER "web" | |
| 38 | 41 | #define PATH_API "vlibras_user/vlibras-api/videos/" |
| 39 | 42 | |
| 40 | 43 | using namespace std; |
| 44 | +using namespace sndesc; | |
| 41 | 45 | |
| 42 | 46 | class Mixer { |
| 43 | 47 | public: |
| ... | ... | @@ -62,7 +66,7 @@ public: |
| 62 | 66 | int getTransparency(); |
| 63 | 67 | void setNumThreads(string); |
| 64 | 68 | string getNumThreads(); |
| 65 | - void initialize(string mainVideo, string slVideo, int, int, int, char*); | |
| 69 | + void initialize(string mainVideo, string slVideo, int, int, int, char*, char*); | |
| 66 | 70 | void setPathFinal(); |
| 67 | 71 | |
| 68 | 72 | private: |
| ... | ... | @@ -78,11 +82,12 @@ private: |
| 78 | 82 | void convertSecondaryVideoFPS(double); |
| 79 | 83 | |
| 80 | 84 | string mainVideo, secondaryVideo, temporaryTextFile, numThreads, pathFinal, user_id; |
| 85 | + char* client; | |
| 81 | 86 | int positionSecondaryVideo; |
| 82 | 87 | double widthSecondaryVideo, heightSecondaryVideo; |
| 83 | 88 | int transparency; |
| 84 | 89 | |
| 85 | - | |
| 90 | + PropertyHandler* reader; | |
| 86 | 91 | |
| 87 | 92 | }; |
| 88 | 93 | ... | ... |
servico/src/include/serviceWindowGeneration.h
| ... | ... | @@ -11,7 +11,8 @@ |
| 11 | 11 | #include <limits.h> |
| 12 | 12 | #include "dprintf.h" |
| 13 | 13 | #include "Mixer.h" |
| 14 | -#include "inputFile.h" | |
| 14 | +//#include "inputFile.h" | |
| 15 | +#include "property.h" | |
| 15 | 16 | #include "listenerTradutor.h" |
| 16 | 17 | #include "tradutorPortGlosa.h" |
| 17 | 18 | //#include "httpstreamer.h" |
| ... | ... | @@ -20,23 +21,25 @@ |
| 20 | 21 | #include "serviceException.h" |
| 21 | 22 | #include <lavidlib/base/RuntimeException.h> |
| 22 | 23 | |
| 24 | +#define WEB_USER "web" | |
| 23 | 25 | #define VIDEO_POSE_NEUTRA "poseneutra" |
| 24 | 26 | #define BASEDIR "vlibras_user/dicionario_libras/" |
| 25 | 27 | #define BASEDIRTRANSP "vlibras_user/dicionarioTransp_libras/" |
| 26 | 28 | #define EXTENSAO_DICIONARIO ".ts" |
| 29 | +#define PATH_CONTENTS "vlibras_user/.vlibras-conf/contents/" | |
| 27 | 30 | #define PATH_API "vlibras_user/vlibras-api/videos/" |
| 28 | 31 | #define MAX_SIZE_PATH 256 |
| 29 | 32 | |
| 30 | -/*#define SERVICE_TYPE_CC 1 /* Closed Caption */ | |
| 31 | -#define SERVICE_TYPE_SRT 2 /* Subtitle SRT */ | |
| 32 | -#define SERVICE_TYPE_REC 3 /* Reconhecimento de Voz */ | |
| 33 | -#define SERVICE_TYPE_TEXT 4 /* Texto */ | |
| 34 | -#define SERVICE_TYPE_SRT_ONLY 5 /* Subtitle SRT ONLY */ | |
| 35 | -#define SERVICE_TYPE_REC_ONLY_AUDIO 6 /* Subtitle AUDIO ONLY */ | |
| 33 | +#define SERVICE_TYPE_SRT 1 /* Subtitle SRT */ | |
| 34 | +#define SERVICE_TYPE_REC 2 /* Reconhecimento de Voz */ | |
| 35 | +#define SERVICE_TYPE_TEXT 3 /* Texto */ | |
| 36 | +#define SERVICE_TYPE_SRT_ONLY 4 /* Subtitle SRT ONLY */ | |
| 37 | +#define SERVICE_TYPE_REC_ONLY_AUDIO 5 /* Subtitle AUDIO ONLY */ | |
| 36 | 38 | |
| 37 | 39 | using namespace Tradutor; |
| 38 | -using namespace Util; | |
| 40 | +//using namespace Util; | |
| 39 | 41 | using namespace std; |
| 42 | +using namespace sndesc; | |
| 40 | 43 | |
| 41 | 44 | class ServiceWindowGeneration : public ListenerTradutor, public ListenerSynchronizer{ |
| 42 | 45 | |
| ... | ... | @@ -45,8 +48,9 @@ protected: |
| 45 | 48 | TradutorPortGlosa * tradutor; |
| 46 | 49 | //HttpStreamer *sincronizador; |
| 47 | 50 | Synchronizer * sincronizador; |
| 48 | - InputFile * inputfile; | |
| 51 | + //InputFile * inputfile; | |
| 49 | 52 | Mixer * mixer; |
| 53 | + PropertyHandler* reader; | |
| 50 | 54 | |
| 51 | 55 | vector<int64_t> * vetor_pts; |
| 52 | 56 | ... | ... |
servico/src/include/serviceWindowGenerationFromREC.h
| ... | ... | @@ -20,7 +20,7 @@ private: |
| 20 | 20 | public: |
| 21 | 21 | |
| 22 | 22 | ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType, char* rate); |
| 23 | - ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType); | |
| 23 | + ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int _serviceType); | |
| 24 | 24 | ~ServiceWindowGenerationFromREC(); |
| 25 | 25 | |
| 26 | 26 | virtual void notifyTextRecognized(unsigned char* text, int64_t pts); | ... | ... |
servico/src/include/serviceWindowGenerationFromSRT.h
| ... | ... | @@ -29,9 +29,9 @@ public: |
| 29 | 29 | |
| 30 | 30 | /* Construtor 1 - legenda e vídeo */ |
| 31 | 31 | ServiceWindowGenerationFromSRT(char* path_video, char* path_srt, int sublanguage, |
| 32 | - int position, int size, int transparency, char* id, int _serviceType); | |
| 32 | + int position, int size, int transparency, char* id, char* client_type, int _serviceType); | |
| 33 | 33 | /* Construtor 2 - só legenda */ |
| 34 | - ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, int _serviceType); | |
| 34 | + ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, char* client_type, int _serviceType); | |
| 35 | 35 | ~ServiceWindowGenerationFromSRT(); |
| 36 | 36 | |
| 37 | 37 | virtual void notifySubtitle(unsigned char* subtitle, int64_t pts); | ... | ... |
servico/src/include/serviceWindowGenerationFromText.h
| ... | ... | @@ -17,8 +17,7 @@ private: |
| 17 | 17 | bool finish; |
| 18 | 18 | |
| 19 | 19 | public: |
| 20 | - ServiceWindowGenerationFromText (char* _path_file, char* _video_path_file, | |
| 21 | - int _transp, int _serviceType, char* _client_type); | |
| 20 | + ServiceWindowGenerationFromText (char* _path_file, char* user_id, int _transp, int _serviceType, char* _client_type); | |
| 22 | 21 | ~ServiceWindowGenerationFromText (); |
| 23 | 22 | |
| 24 | 23 | void notifyLine(unsigned char* line); | ... | ... |
servico/src/serviceWindowGeneration.cpp
| ... | ... | @@ -4,6 +4,9 @@ |
| 4 | 4 | ServiceWindowGeneration::ServiceWindowGeneration() { |
| 5 | 5 | tradutor = new TradutorPortGlosa(); |
| 6 | 6 | vetor_pts = new vector<int64_t >(); |
| 7 | + try{ | |
| 8 | + reader = new PropertyHandler("vlibras_user/.vlibras-conf/configuration/params-vbox.conf"); | |
| 9 | + }catch(RuntimeException &ex){printf("%s\n", ex.getMessage().c_str());} | |
| 7 | 10 | numero_legendas = INT_MAX; |
| 8 | 11 | legendas_enviadas = 0; |
| 9 | 12 | this->running = true; |
| ... | ... | @@ -14,7 +17,6 @@ ServiceWindowGeneration::ServiceWindowGeneration() { |
| 14 | 17 | ServiceWindowGeneration::~ServiceWindowGeneration() { |
| 15 | 18 | free(vetor_pts); |
| 16 | 19 | free(path_libras); |
| 17 | - if (inputfile) delete inputfile; | |
| 18 | 20 | if (mixer) delete mixer; |
| 19 | 21 | if (tradutor) delete tradutor; |
| 20 | 22 | if (sincronizador) delete sincronizador; |
| ... | ... | @@ -74,11 +76,18 @@ void ServiceWindowGeneration::setTransparency(int transparency){ |
| 74 | 76 | } |
| 75 | 77 | |
| 76 | 78 | void ServiceWindowGeneration::setPathLibras() { |
| 79 | + | |
| 77 | 80 | char* final_path = new char[MAX_SIZE_PATH]; |
| 78 | - strcpy(final_path, "vlibras_user/vlibras-api/uploads/"); | |
| 79 | - strcat(final_path, this->user_id); | |
| 80 | - strcat(final_path, "/libras.ts"); | |
| 81 | 81 | |
| 82 | + if(strcmp(client_type, (char*)WEB_USER) == 0){ | |
| 83 | + strcpy(final_path, "vlibras_user/vlibras-api/uploads/"); | |
| 84 | + strcat(final_path, this->user_id); | |
| 85 | + strcat(final_path, "/libras.ts"); | |
| 86 | + }else{ | |
| 87 | + strcpy(final_path, PATH_CONTENTS); | |
| 88 | + strcat(final_path, "libras.ts"); | |
| 89 | + } | |
| 90 | + | |
| 82 | 91 | this->path_libras = final_path; |
| 83 | 92 | //DDPRINTF("Path TS File: %s\n", this->path_libras); |
| 84 | 93 | } |
| ... | ... | @@ -102,7 +111,7 @@ bool ServiceWindowGeneration::isRunning() { |
| 102 | 111 | void ServiceWindowGeneration::notifyEndOfSynchronization() { |
| 103 | 112 | if (serviceType == SERVICE_TYPE_REC || serviceType == SERVICE_TYPE_SRT) { |
| 104 | 113 | mixer = new Mixer(); |
| 105 | - mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id); | |
| 114 | + mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id, this->client_type); | |
| 106 | 115 | createThumbnail(); |
| 107 | 116 | }else{ |
| 108 | 117 | transcodeVideoToMp4(); |
| ... | ... | @@ -112,8 +121,12 @@ void ServiceWindowGeneration::notifyEndOfSynchronization() { |
| 112 | 121 | |
| 113 | 122 | void ServiceWindowGeneration::initialize() { |
| 114 | 123 | |
| 124 | + cout << "entrei" << endl; | |
| 125 | + | |
| 115 | 126 | setPathLibras(); |
| 116 | 127 | |
| 128 | + cout << "passei" << endl; | |
| 129 | + | |
| 117 | 130 | if (this->sublanguage == 1) { |
| 118 | 131 | tradutor->addListener(this); |
| 119 | 132 | } |
| ... | ... | @@ -204,7 +217,7 @@ void ServiceWindowGeneration::transcodeVideoToWebm() { |
| 204 | 217 | string command = "ffmpeg -i "; |
| 205 | 218 | command.append(path_libras) |
| 206 | 219 | .append(" -vcodec libvpx -acodec libvorbis ") |
| 207 | - .append(" -v quiet ") | |
| 220 | + //.append(" -v quiet ") | |
| 208 | 221 | .append(PATH_API) |
| 209 | 222 | .append(getUserId()) |
| 210 | 223 | .append(".webm"); |
| ... | ... | @@ -213,32 +226,60 @@ void ServiceWindowGeneration::transcodeVideoToWebm() { |
| 213 | 226 | } |
| 214 | 227 | |
| 215 | 228 | void ServiceWindowGeneration::transcodeVideoToMp4() { |
| 216 | - if (serviceType == SERVICE_TYPE_TEXT && strcmp(client_type, (char*)"WEB") == 0) | |
| 217 | - transcodeVideoToWebm(); | |
| 218 | - else{ | |
| 229 | + //if (serviceType == SERVICE_TYPE_TEXT && strcmp(client_type, (char*)"WEB") == 0) | |
| 230 | + // transcodeVideoToWebm(); | |
| 231 | + //else{ | |
| 219 | 232 | //printf("[INFO]: A transcodificação para .mp4 está ativada!\n"); |
| 220 | 233 | DDDPRINTF("[AGUARDE] Transcodificando o vídeo de Libras...\n"); |
| 221 | 234 | string command = "ffmpeg -i "; |
| 222 | 235 | command.append(path_libras) |
| 223 | - .append(" -qscale 0 -strict experimental -vcodec libx264 -preset fast -r 30 ") | |
| 224 | - .append(" -v quiet ") | |
| 225 | - .append(PATH_API) | |
| 226 | - .append(getUserId()) | |
| 227 | - .append(".mp4"); | |
| 236 | + .append(" -qscale 0 -strict experimental -vcodec libx264 -preset fast -r 30 "); | |
| 237 | + //.append(" -v quiet "); | |
| 238 | + | |
| 239 | + if(strcmp(client_type, (char*)WEB_USER) == 0){ | |
| 240 | + command.append(PATH_API).append(getUserId()); | |
| 241 | + | |
| 242 | + }else{ | |
| 243 | + try{ | |
| 244 | + char* vPath = new char[256]; | |
| 245 | + vPath = reader->getAttributeValue("STORAGE"); | |
| 246 | + command.append(vPath).append("/").append(getUserId()); | |
| 247 | + }catch(RuntimeException &ex){ | |
| 248 | + printf("%s\n", ex.getMessage().c_str()); | |
| 249 | + } | |
| 250 | + } | |
| 251 | + | |
| 252 | + command.append(".mp4"); | |
| 228 | 253 | //printf("[INFO]: Transcodification command -> %s\n", command.c_str()); |
| 229 | 254 | system(command.c_str()); |
| 230 | 255 | |
| 231 | 256 | //.append(" -strict experimental -vcodec mjpeg -r 30 -pix_fmt yuvj422p ") |
| 232 | 257 | //.append(" -strict experimental -vcodec mpeg2video -r 30 ") |
| 233 | - } | |
| 258 | + //} | |
| 234 | 259 | } |
| 235 | 260 | |
| 236 | 261 | void ServiceWindowGeneration::createThumbnail(){ |
| 237 | 262 | string command = "ffmpeg -ss 10 -i "; |
| 238 | - command.append(PATH_API).append(user_id).append(".mp4") | |
| 239 | - .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ") | |
| 240 | - .append(" -v quiet ") | |
| 241 | - .append(PATH_API).append(user_id).append(".png"); | |
| 263 | + //command.append(PATH_API).append(user_id).append(".mp4") | |
| 264 | + //.append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 "); | |
| 265 | + //.append(" -v quiet "); | |
| 266 | + | |
| 267 | + if(strcmp(client_type, (char*)WEB_USER) == 0){ | |
| 268 | + command.append(PATH_API).append(user_id).append(".mp4") | |
| 269 | + .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ") | |
| 270 | + .append(PATH_API).append(getUserId()); | |
| 271 | + }else{ | |
| 272 | + try{ | |
| 273 | + char* pPath = new char[256]; | |
| 274 | + pPath = reader->getAttributeValue("STORAGE"); | |
| 275 | + command.append(pPath).append("/").append(getUserId()); | |
| 276 | + }catch(RuntimeException &ex){ | |
| 277 | + printf("%s\n", ex.getMessage().c_str()); | |
| 278 | + } | |
| 279 | + | |
| 280 | + command.append(PATH_CONTENTS).append(user_id).append(".mp4") | |
| 281 | + .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 "); | |
| 282 | + } | |
| 283 | + command.append(".png"); | |
| 242 | 284 | system(command.c_str()); |
| 243 | -} | |
| 244 | - | |
| 285 | +} | |
| 245 | 286 | \ No newline at end of file | ... | ... |
servico/src/serviceWindowGenerationFromREC.cpp
| ... | ... | @@ -16,7 +16,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 19 | - char* path_video, int sublanguage, int position, int size, int transparency, char* id, int serviceType) { | |
| 19 | + char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int _serviceType) { | |
| 20 | 20 | |
| 21 | 21 | setPathInput(path_video); |
| 22 | 22 | setSubLanguage(sublanguage); |
| ... | ... | @@ -24,6 +24,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 24 | 24 | setSize(size); |
| 25 | 25 | setTransparency(transparency); |
| 26 | 26 | setServiceType(serviceType); |
| 27 | + setClientType(client_type); | |
| 27 | 28 | setUserId(id); |
| 28 | 29 | rec = new Recognize(path_video, id); |
| 29 | 30 | finish = false; | ... | ... |
servico/src/serviceWindowGenerationFromSRT.cpp
| 1 | 1 | #include "serviceWindowGenerationFromSRT.h" |
| 2 | 2 | |
| 3 | 3 | |
| 4 | -//Construtor Service 2 | |
| 5 | -ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT( | |
| 6 | - char* path_video, char* path_srt, int sublanguage, int position, int size, int transparency, char* id, int serviceType) { | |
| 4 | +//Construtor Service 1 | |
| 5 | +ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_video, char* path_srt, int sublanguage, | |
| 6 | + int position, int size, int transparency, char* id, char* client_type, int serviceType) { | |
| 7 | + | |
| 8 | + // cout << "video: " << path_video << endl; | |
| 9 | + // cout << "srt: " << path_srt << endl; | |
| 10 | + // cout << "language: " << sublanguage << endl; | |
| 11 | + // cout << "position: " << position << endl; | |
| 12 | + // cout << "size: " << size << endl; | |
| 13 | + // cout << "transparency: " << transparency << endl; | |
| 14 | + // cout << "id: " << id << endl; | |
| 15 | + // cout << "serviceType: " << serviceType << endl; | |
| 16 | + //cout << "client_type: " << client_type << endl; | |
| 17 | + | |
| 7 | 18 | extrator_factory = new ExtratorFactory(); |
| 8 | 19 | setPathInput(path_video); |
| 9 | 20 | setPathSRT(path_srt); |
| 21 | + setClientType(client_type); | |
| 10 | 22 | setPosition(position); |
| 11 | 23 | setSize(size); |
| 12 | 24 | setTransparency(transparency); |
| ... | ... | @@ -17,10 +29,11 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT( |
| 17 | 29 | DPRINTF("Done!\n"); |
| 18 | 30 | } |
| 19 | 31 | |
| 20 | -//Construtor Service 5 | |
| 21 | -ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, int serviceType){ | |
| 32 | +//Construtor Service 4 | |
| 33 | +ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, char* client_type, int _serviceType) { | |
| 22 | 34 | extrator_factory = new ExtratorFactory(); |
| 23 | 35 | setPathInput(path_srt); |
| 36 | + setClientType(client_type); | |
| 24 | 37 | setTransparency(transparency); |
| 25 | 38 | setServiceType(serviceType); |
| 26 | 39 | setUserId(id); |
| ... | ... | @@ -67,11 +80,11 @@ void ServiceWindowGenerationFromSRT::initialize() { |
| 67 | 80 | |
| 68 | 81 | //codigo abaixo sera arrumado apos a aplicação do factory pattern |
| 69 | 82 | |
| 70 | - if(serviceType == 2){ | |
| 83 | + if(serviceType == 1){ | |
| 71 | 84 | |
| 72 | 85 | extratorSRT = (ExtratorSRT*)extrator_factory->getExtrator(SRT); |
| 73 | 86 | extratorSRT->addListener(this); |
| 74 | - extratorSRT->setFilePath((char*) path_srt); | |
| 87 | + extratorSRT->setFilePath(path_srt); | |
| 75 | 88 | |
| 76 | 89 | ServiceWindowGeneration::initialize(); |
| 77 | 90 | |
| ... | ... | @@ -88,7 +101,7 @@ void ServiceWindowGenerationFromSRT::initialize() { |
| 88 | 101 | objeto InputFile().*/ |
| 89 | 102 | extratorSRT = (ExtratorSRT*)extrator_factory->getExtrator(SRT); |
| 90 | 103 | extratorSRT->addListener(this); |
| 91 | - extratorSRT->setFilePath((char*) path_input); | |
| 104 | + extratorSRT->setFilePath(path_input); | |
| 92 | 105 | |
| 93 | 106 | ServiceWindowGeneration::initialize(); |
| 94 | 107 | ... | ... |
servico/src/serviceWindowGenerationFromText.cpp
| ... | ... | @@ -10,7 +10,6 @@ ServiceWindowGenerationFromText::ServiceWindowGenerationFromText ( |
| 10 | 10 | setTransparency(transp); |
| 11 | 11 | setServiceType(serviceType); |
| 12 | 12 | finish = false; |
| 13 | - DPRINTF("Done!\n"); | |
| 14 | 13 | } |
| 15 | 14 | |
| 16 | 15 | ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() { | ... | ... |
util/src/include/logger.h
| ... | ... | @@ -17,6 +17,7 @@ |
| 17 | 17 | #include <stddef.h> |
| 18 | 18 | #include <iostream> |
| 19 | 19 | #include <ctime> |
| 20 | +#include "property.h" | |
| 20 | 21 | //#include <lavidlib/utils/Logger.h> |
| 21 | 22 | |
| 22 | 23 | |
| ... | ... | @@ -31,7 +32,9 @@ namespace Util { |
| 31 | 32 | public: |
| 32 | 33 | static Logger* Instance(); |
| 33 | 34 | void openLogFile(); |
| 34 | - void writeLog(char* exception); | |
| 35 | + void openInfoLogFile(char* filepath); | |
| 36 | + void writeLog(char* log); | |
| 37 | + void writeInfoLog(char* filepath ,char* infoLog); | |
| 35 | 38 | void closeLogFile(); |
| 36 | 39 | char* getTime(); |
| 37 | 40 | ... | ... |
| ... | ... | @@ -0,0 +1,48 @@ |
| 1 | +/*************************************************************************** | |
| 2 | + * Universidade Federal da Paraíba * | |
| 3 | + * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital * | |
| 4 | + * * | |
| 5 | + * Centro de Informática - UFPB - Campus I * | |
| 6 | + * João Pessoa - PB - Brasil * | |
| 7 | + * * | |
| 8 | + * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) * | |
| 9 | + * Date: Qui Nov 28 14:05:39 BRT 2013 * | |
| 10 | + * * | |
| 11 | + **************************************************************************/ | |
| 12 | + | |
| 13 | + #ifndef PROPERTY_H | |
| 14 | + #define PROPERTY_H | |
| 15 | + | |
| 16 | + #include "logger.h" | |
| 17 | + #include <stdio.h> | |
| 18 | + #include <stdlib.h> | |
| 19 | + #include <string> | |
| 20 | + #include <string.h> | |
| 21 | + #include <lavidlib/io/BufferedReader.h> | |
| 22 | + #include <lavidlib/io/FileIO.h> | |
| 23 | + #include <lavidlib/io/IOException.h> | |
| 24 | + #include <lavidlib/io/EOFException.h> | |
| 25 | + #include <lavidlib/base/RuntimeException.h> | |
| 26 | + | |
| 27 | + #define EXTENSION ".conf" | |
| 28 | + | |
| 29 | + using namespace std; | |
| 30 | + using namespace lavidlib; | |
| 31 | + | |
| 32 | + namespace sndesc { | |
| 33 | + | |
| 34 | + class PropertyHandler { | |
| 35 | + public: | |
| 36 | + PropertyHandler(string filename); | |
| 37 | + virtual ~PropertyHandler(); | |
| 38 | + char* getAttributeValue(string attr); | |
| 39 | + | |
| 40 | + private: | |
| 41 | + BufferedReader* rbuffer; | |
| 42 | + FileIO* file_property; | |
| 43 | + int checkFileExtension(string &filename); | |
| 44 | + | |
| 45 | + }; | |
| 46 | + } | |
| 47 | + | |
| 48 | + #endif /* PROPERTY_H */ | |
| 0 | 49 | \ No newline at end of file | ... | ... |
util/src/logger.cpp
| ... | ... | @@ -30,6 +30,9 @@ namespace Util { |
| 30 | 30 | file.open("vlibras_user/vlibras-core/log/log", ios_base::app); |
| 31 | 31 | } |
| 32 | 32 | |
| 33 | + void Logger::openInfoLogFile(char* filepath){ | |
| 34 | + file.open(filepath , ios_base::trunc); | |
| 35 | + } | |
| 33 | 36 | |
| 34 | 37 | void Logger::closeLogFile(){ |
| 35 | 38 | file.close(); |
| ... | ... | @@ -46,6 +49,12 @@ namespace Util { |
| 46 | 49 | file << getTime(); |
| 47 | 50 | file << exception << "\n\n\r"; |
| 48 | 51 | this->closeLogFile(); |
| 49 | - } | |
| 50 | - | |
| 52 | + } | |
| 53 | + | |
| 54 | + void Logger::writeInfoLog(char* filepath ,char* infoLog){ | |
| 55 | + this->openInfoLogFile(filepath); | |
| 56 | + file << getTime(); | |
| 57 | + file << infoLog << "\n\r"; | |
| 58 | + this->closeLogFile(); | |
| 59 | + } | |
| 51 | 60 | } | ... | ... |
| ... | ... | @@ -0,0 +1,79 @@ |
| 1 | +/*************************************************************************** | |
| 2 | + * Universidade Federal da Paraíba * | |
| 3 | + * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital * | |
| 4 | + * * | |
| 5 | + * Centro de Informática - UFPB - Campus I * | |
| 6 | + * João Pessoa - PB - Brasil * | |
| 7 | + * * | |
| 8 | + * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) * | |
| 9 | + * Date: Qui Nov 28 14:06:10 BRT 2013 * | |
| 10 | + * * | |
| 11 | + **************************************************************************/ | |
| 12 | + | |
| 13 | + #include "property.h" | |
| 14 | + | |
| 15 | + using namespace std; | |
| 16 | + | |
| 17 | + namespace sndesc { | |
| 18 | + | |
| 19 | + PropertyHandler::PropertyHandler(string filename) { | |
| 20 | + | |
| 21 | + try { | |
| 22 | + if (checkFileExtension(filename) != 1) | |
| 23 | + throw new RuntimeException("Format file not is recognized!"); | |
| 24 | + file_property = new FileIO(filename, FileIO::MODE_READ); | |
| 25 | + } catch (IOException &ex) { | |
| 26 | + printf("[FAILED] Can't open file %s\n%s\n", filename.c_str(), | |
| 27 | + ex.getMessage().c_str()); | |
| 28 | + } | |
| 29 | + } | |
| 30 | + | |
| 31 | + PropertyHandler::~PropertyHandler() { | |
| 32 | + if (rbuffer) | |
| 33 | + delete rbuffer; | |
| 34 | + if (file_property) | |
| 35 | + delete file_property; | |
| 36 | + } | |
| 37 | + | |
| 38 | + char* PropertyHandler::getAttributeValue(string attr) { | |
| 39 | + | |
| 40 | + char* value1; | |
| 41 | + char* value2; | |
| 42 | + | |
| 43 | + rbuffer = new BufferedReader(file_property); | |
| 44 | + string fline; | |
| 45 | + try { | |
| 46 | + int target_pos = -1, begin = 0; | |
| 47 | + string attr_t, value_t; | |
| 48 | + while((fline = rbuffer->readLine()).size() > 0) { | |
| 49 | + target_pos = fline.find("="); | |
| 50 | + if (target_pos < 2) | |
| 51 | + throw new RuntimeException("The assignment symbol was not found."); | |
| 52 | + | |
| 53 | + attr_t = fline.substr(begin, target_pos); | |
| 54 | + begin = target_pos+1; | |
| 55 | + value_t = fline.substr(begin, fline.size()); | |
| 56 | + | |
| 57 | + if (attr.compare(attr_t) == 0) { | |
| 58 | + file_property->seek(0); | |
| 59 | + value1 = new char[value_t.length() + 1]; | |
| 60 | + strcpy(value1, value_t.c_str()); | |
| 61 | + return value1; | |
| 62 | + } | |
| 63 | + target_pos = -1; | |
| 64 | + begin = 0; | |
| 65 | + } | |
| 66 | + } catch (lavidlib::EOFException &ex) { | |
| 67 | + printf("[INFO] File is completed.\n%s\n", ex.getMessage().c_str()); | |
| 68 | + } | |
| 69 | + file_property->seek(0); | |
| 70 | + strcpy(value2, fline.c_str()); | |
| 71 | + return value2; | |
| 72 | + } | |
| 73 | + | |
| 74 | + int PropertyHandler::checkFileExtension(string &filename) { | |
| 75 | + | |
| 76 | + return (filename.find(EXTENSION) > 0 && | |
| 77 | + (filename.size() == (filename.find(EXTENSION) + strlen(EXTENSION)))) ? 1 : -1; | |
| 78 | + } | |
| 79 | + } | |
| 0 | 80 | \ No newline at end of file | ... | ... |