serviceWindowGenerationFromCC.cpp 2.48 KB
#include "include/serviceWindowGenerationFromCC.h"

using namespace std;

ServiceWindowGenerationFromCC::ServiceWindowGenerationFromCC(
	char* path, int position, int size, int transparency, int _serviceType) {
    setPathInput(path);
    numero_legendas = 0;
    setPosition(position);
    setSize(size);
    setTransparency(transparency);
	setServiceType(_serviceType);
    //this->fisish = false;
    //initialize();
}

ServiceWindowGenerationFromCC::~ServiceWindowGenerationFromCC() {

}

void ServiceWindowGenerationFromCC::setPathInput(char* path) {
    this->path_input = path;
}

void ServiceWindowGenerationFromCC::notificaCC(unsigned char* cc, int64_t pts) {
    cout << "1-Chegou LEGENDA no ServiceFromCC\n" << endl;
    printf("Glosa: %s PTS: %lld\n", cc, pts);

    if (!strcmp((const char*) cc, "Homem supermercado falar nao vender.")) {
        printf("\nIGUAL\n");
        return;
    } else {
        //printf("\nDIFERENTE\n");
    }

    numero_legendas++;
    char op = this->getRunningOption();

    if (op == '3') {
        notificaSincronizadorSemTradutor(cc, pts);
    } else {
        adicionaPTS(pts);
        notificaTradutor(cc);
    }

}

void ServiceWindowGenerationFromCC::notificaSincronizadorSemTradutor(unsigned char * cc, int64_t pts) {
    char* pch = strtok((char*) cc, " ");
    while (pch != NULL) {
        string pch_string = (string) pch;
        sincronizador->recebeglosa(pch_string, pts);
        printf("%s\n", pch);
        pch = strtok(NULL, " ");
    }
}

void ServiceWindowGenerationFromCC::notificaTradutor(unsigned char* cc) {

    const char* constchar = (const char*) cc;
    char* cc_copy = new char[strlen(constchar)];
    strcpy(cc_copy, constchar);
    tradutor->traduz((unsigned char*) cc_copy);

}

void ServiceWindowGenerationFromCC::initialize() {

    inputfile = new InputFile(this->path_input);
    extratorCC = new ExtratorCC();
    monitor_pcr_base = new MonitorPCR();
    demux = new Demux(278, (DemuxListener*) extratorCC);
    inputfile->registraOuvinte(demux);
    extratorCC->registraOuvinte(this);

    inputfile->registraOuvinte(monitor_pcr_base);

    ServiceWindowGeneration::initialize();

    inputfile->initialize();
    this->Start();
}

void ServiceWindowGenerationFromCC::Run() {

    while (true) {

        if (inputfile->isFinished()) {

            this->finish = true;

            if (getRunningOption() == '3') {
                //printf("\n\n\nEncerrei\n\n\n");
                sincronizador->stop();

            }

        }
        sleep(5);
    }

}