serviceWindowGenerationFromSRT.h 4.04 KB
/**
 * \file serviceWindowGenerationFromSRT.h
 */

#ifndef SERVICEWINDOWGENERATIONFROMSRT_H
#define SERVICEWINDOWGENERATIONFROMSRT_H

#include "listenerSRT.h"
#include "extratorFactory.h"
#include "serviceWindowGeneration.h"

#define SERVICE_TYPE_SRT 1
#define SERVICE_TYPE_SRT_ONLY 4

/** \brief Classe que implementa o serviço de extração de legendas.
 *
 * \headerfile servico/src/include/serviceWindowGenerationFromSRT.h
 */
class ServiceWindowGenerationFromSRT : public ServiceWindowGeneration, public ListenerSRT, public ListenerTradutor, public ListenerRenderer, public Thread {

private:
	ExtratorFactory* extrator_factory;
	ExtratorSRT* extratorSRT;

	char* path_srt;

    /** Adiciona a etiqueta de tempo.
     *
     * Cada sentença conterá sua respectiva de tempo.
     * \param pts A etiqueta de tempo.
     */
    void addPTS(int64_t pts);

    /** Seta o número de legendas. 
     *
     * \param A quantidade de legendas.
     * \exception ServiceException Se houver algum erro durante a execução.
     */
    void setSizeOfSubtitles(int sub_size);

    /** Define o path do vídeo de LIBRAS. */
    void setPathLibras();

    /** Define o path dos arquivos de saída.
     *
     * \exception RuntimeException Se houver algum erro durante a execução.
     */
    void setPathContents();

    /** Indica se o serviço está sendo executado.
     *
     * \return O status do serviço.
     */
    bool isRunning();
public:
    /** Construtor do serviço de vídeo com legendas.
     *
     * \param pathVideo Path do vídeo de entrada.
     * \param pathSRT Path do arquivo de legendas.
     * \param sublanguage Linguagem das legendas do arquivo.
     * \param pos Posição do vídeo de LIBRAS em relação ao vídeo original.
     * \param size Tamanho do vídeo de LIBRAS.
     * \param transp Transparência do plano de fundo do vídeo.
     * \param id Identificação do cliente.
     * \param mode Modo de execução.
     * \param serviceType Tipo do serviço.
     */
    ServiceWindowGenerationFromSRT(char* pathVideo, char* pathSRT, int sublanguage, int pos,
    	int size, int transp, char* id, int mode, int serviceType);

    /** Construtor do serviço de legendas.
     *
     * \param pathSRT Path do arquivo de legendas.
     * \param sublanguage Linguagem das legendas do arquivo.
     * \param transparency Transparência do plano de fundo do vídeo.
     * \param id Identificação do cliente.
     * \param mode Modo de execução.
     * \param serviceType Tipo do serviço.
     */
    ServiceWindowGenerationFromSRT(char* pathSRT, int sublanguage, int transparency, char* id, int mode, int serviceType);

    /** Destrutor */
    ~ServiceWindowGenerationFromSRT();

    /** Notifica novas legendas extraídas.
     *
     * \param subtitle A legenda extraída.
     * \param pts A etiqueta de tempo da legenda.
     */
	void notifySubtitle(unsigned char* subtitle, int64_t pts);

    /** Recebe a notificação do fim da renderização do vídeo */
    void notifyEndOfRenderization();

    /** Recebe a notificação do fim da tradução da legenda.
     *
     * \param glosa A legenda traduzida.
     */
    void notifyTranslation(char* glosas);

    /** Envia para a tradução a legenda obtida.
     *
     * \param text A legenda obtida.
     */
	void notifyTranslator(unsigned char* text);

    /** Envia a glosa para o renderizador.
     *
     * \param glosa A glosa obtida.
     * \exception ServiceException Se houver algum erro durante a execução.
     */
    void notifyRenderer(string glosa);

    /** Notifica o fim da extração de legendas.
     *
     * \param sub_size O número de legendas extraídas.
     */
    void notifyEnd(int sub_size);

    /** Inicia o serviço de extração de legendas.
     *
     * \exception ServiceException Se houver algum erro durante a execução.
     */
    void initialize();

    /** Indica o fim do processo do serviço.
    *
    * \return O status do processo.
    */
    bool isFinished();

    /** Este método é chamado quando a Thread for iniciada. */
    void Run();
};

#endif /* SERVICEWINDOWGENERATIONFROMSRT_H_ */