renderer.h
2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/**
* \file renderer.h
*
* \author Wesnydy Lima Ribeiro <wesnydy@lavid.ufpb.br>
* \date 2015
*/
#ifndef RENDERER_H
#define RENDERER_H
#include <list>
#include <queue>
#include <sstream>
#include <stdint.h>
#include <unistd.h>
#include "string.h"
#include "jthread.h"
#include "logging.h"
#include "listenerRenderer.h"
#include <lavidlib/net/InetAddress.h>
#include <lavidlib/net/StreamSocket.h>
#include <lavidlib/net/SocketException.h>
#include <lavidlib/base/RuntimeException.h>
#include <lavidlib/net/UnknownHostException.h>
#define HOST "0.0.0.0"
#define PORT 5555
#define OK_FLAG "OK"
#define END_FLAG "FINALIZE"
#define BADSENTENCE "SENTENCACOMBAIXAQUALIDADE"
#define BADTEXT "ESCOLHER TEXTO CERTO"
#define PATH_RENDERER "vlibras_user/unityVideo/"
#define PATH_SCREENS "vlibras_user/.config/unity3d/LAViD/VLibrasVideoMaker/"
using namespace jthread;
using namespace lavidlib;
using namespace std;
using namespace util;
/** \brief Classe que implementa o Renderizador.
*
* \headerfile renderer/src/include/renderer.h
*/
class Renderer : public Thread {
public:
/** Construtor.
*
* \param path_contents Abstração do path do vídeo de saída.
* \param id Identificação do usuário.
*/
Renderer(char* path_Contents, char* id);
/** Destrutor. */
~Renderer();
/** Inicia os processos do renderizador.
*
* Inicia o servidor do Unity Player,
* faz a conexão do Core com o Player
* e da inicio ao envio das glosas para
* a geração do vídeo de LIBRAS.
*/
void initialize();
/** Adiciona ouvintes do renderer.
*
* \param listener O ouvinte a ser registrado.
*/
void addListener(ListenerRenderer* listener);
/** Recebe a glosa q será enviada para o player.
*
* \param glosa A glosa que será enviada.
* \param pts A etiqueta de tempo da glosa.
*/
void receiveGlosa(string glosa, int64_t pts);
private:
char* userID;
char* pathOutVideo;
StreamSocket* cSocket;
queue <string> glosaQueue;
list<ListenerRenderer*>* listeners;
/** Executa o script que inicia o servidor do Player. */
void executeServerScript();
/** Faz a conexão do Core com o Player. */
void connectToUnityPlayer();
/** Envia as glosas para o Player. */
void exportGlosa();
/** Renderiza o vídeo de LIBRAS. */
void renderVideo();
/** Aguarda o Player capturar as screenshots. */
void waitScreenShots();
/** Notifica o fim da renderização. */
void notifyListeners();
/** Deleta os arquivos temporários */
void cleanFiles();
/** Chamado quando a Thread é iniciada. */
void Run();
};
#endif /* RENDERER_H */