serviceWindowGenerationFromRec.h 3.59 KB
/**
 * \file serviceWindowGenerationFromRec.h
 */

#ifndef SERVICEWINDOWGENERATIONFROMREC_H
#define SERVICEWINDOWGENERATIONFROMREC_H

#include "recognize.h"
#include "recognizeListener.h"
#include "serviceWindowGeneration.h"

#define SERVICE_TYPE_REC 2
#define SERVICE_TYPE_REC_ONLY_AUDIO 5
#define SERVICE_TYPE_REC_UNMIXED 6

/** \brief Classe que implementa o serviço de Reconhecimento.
 *
 * \headerfile servico/src/include/serviceWindowGenerationFromRec.h
 */
class ServiceWindowGenerationFromRec : public ServiceWindowGeneration, public RecognizeListener, public ListenerTradutor, public ListenerRenderer, public Thread {

private:
	Recognize* rec;

	/** 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.
	 *
	 * \param pathVideo Path do vídeo de entrada.
	 * \param position Posição do vídeo de LIBRAS em relação ao vídeo original.
	 * \param size Tamanho do vídeo de LIBRAS.
	 * \param transparency Transparência do plano de fundo do vídeo.
	 * \param id Identificação do cliente.
	 * \param client Modo de execução.
	 * \param serviceType Tipo do serviço.
	 * \param rate  
	 */
	ServiceWindowGenerationFromRec(char* pathVideo, int position, int size,
		int transparency, char* id, char* client, int serviceType, char* rate);

	/** Construtor.
	 *
	 * \param pathVideo Path do vídeo de entrada.
	 * \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.
	 */
	ServiceWindowGenerationFromRec(char* pathVideo, int pos, int size,
		int transp, char* id, int mode, int serviceType);

	/** Destrutor */
	~ServiceWindowGenerationFromRec();

	/** Notifica novas sentenças reconhecidas.
	 *
	 * \param text A sentença reconhecida.
	 * \param pts A etiqueta de tempo da sentença.
	 */
	void notifyTextRecognized(unsigned char* text, 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 sentença.
	 *
	 * \param glosa A sentença traduzida.
	 * \exception ServiceException Se houver algum erro durante a execução.
	 */
	void notifyTranslation(char* glosa);

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

	/** Notifica o fim do reconhecimento.
	 *
	 * \param sentences_size O número de sentenças reconhecidas.
	 */
    void notifyEnd(int sentences_size);

    /** Inicia o serviço de reconhecimento.
     *
     * \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 /* SERVICEWINDOWGENERATIONFROMREC_H */