serviceWindowGenerationFromREC.cpp 2.12 KB
#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) {
    
	path_input = path_video;
	setSubLanguage(sublanguage);
	setPosition(position);
    setSize(size);
    setTransparency(transparency);
	setServiceType(_serviceType);
	setUserId(id);
    rec = new Recognize(path_input, id, rate);
    DPRINTF("Done!\n");
}

ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC(
            char* path_video, int sublanguage, int position, int size, int transparency,  char* id, int _serviceType) {
    
    path_input = path_video;
    setSubLanguage(sublanguage);
    setPosition(position);
    setSize(size);
    setTransparency(transparency);
    setServiceType(_serviceType);
   	setUserId(id);
    rec = new Recognize(path_input, id);
    DPRINTF("Done!\n");
}

ServiceWindowGenerationFromREC::~ServiceWindowGenerationFromREC() {
	delete rec;
	DDDPRINTF("Service REC finished!\n");
}

void ServiceWindowGenerationFromREC::initialize() {
	rec->addListener(this);
	
	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::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(2);
    }
    sincronizador->stop();
}