#include "serviceWindowGenerationFromREC.h" using namespace std; ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( char* path_video, int sublanguage, int position, int size, int transparency, char* id, int serviceType, char* rate) { setPathInput(path_video); setSubLanguage(sublanguage); setPosition(position); setSize(size); setTransparency(transparency); setServiceType(serviceType); setUserId(id); rec = new Recognize(path_video, id, rate); DPRINTF("Done!\n"); } ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( char* path_video, int sublanguage, int position, int size, int transparency, char* id, int serviceType) { setPathInput(path_video); setSubLanguage(sublanguage); setPosition(position); setSize(size); setTransparency(transparency); setServiceType(serviceType); setUserId(id); rec = new Recognize(path_video, id); DPRINTF("Done!\n"); } ServiceWindowGenerationFromREC::~ServiceWindowGenerationFromREC() { delete rec; DDDPRINTF("Service REC finished!\n"); } void ServiceWindowGenerationFromREC::initialize() { rec->addListener(this); if (serviceType == 6){ rec->hasAudio(); } else { inputfile = new InputFile(this->path_input); monitor_pcr_base = new MonitorPCR(); if (strstr(this->path_input, "ts") != NULL) { char* format_video = new char[3]; strcpy(format_video, "ts"); monitor_pcr_base->setFormatVideo(format_video); } monitor_pcr_base->addListenerPCRBase(rec); inputfile->registraOuvinte(monitor_pcr_base); try{ inputfile->initialize(); } catch(InputException ex){ throw ServiceException(ex.getMessage()); } } ServiceWindowGeneration::initialize(); try{ rec->initialize(); } catch(RecognizeException ex){ throw ServiceException(ex.getMessage()); } this->Start(); } void ServiceWindowGenerationFromREC::notifyTextRecognized(unsigned char* text, int64_t pts) { if (getRunningOption() == '3') { notifySynchWithoutTranslator(text, pts); } else { adicionaPTS(pts); notifyTranslator(text); } } void ServiceWindowGenerationFromREC::notifyTranslator(unsigned char *text) { tradutor->traduz(text); } void ServiceWindowGenerationFromREC::notifyEnd(int sentences_size) { DDPRINTF("Service REC recebeu: %d sentenças.\n", sentences_size); setSizeOfSubtitles(sentences_size); } void ServiceWindowGenerationFromREC::notifySynchWithoutTranslator(unsigned char *text, int64_t pts) { char* pch = strtok((char*) text, " "); while (pch != NULL) { string pch_string = (string) pch; sincronizador->recebeglosa(pch_string, pts); pch = strtok(NULL, " "); } free(pch); } void ServiceWindowGenerationFromREC::Run() { while (!rec->isFinished()) { sleep(200000); } }