mixer.h
2.4 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
115
116
117
118
/**
* \file Mixer.h
*
* \author Eduardo
* \date 17/01/2012
*/
/**
* edit: Wesnydy Ribeiro
* date: 16/10/2015
*/
#ifndef MIXER_H
#define MIXER_H
#include <string>
#include <iostream>
#include <sstream>
#include <fstream>
#include "logging.h"
//Secondary Video Position
#define TOP_LEFT 1
#define TOP_RIGHT 2
#define BOTTOM_RIGHT 3
#define BOTTOM_LEFT 4
//Secondary Video Size
#define SMALL 1
#define MEDIUM 2
#define LARGE 3
#define NUMTHREADS "8"
using namespace std;
using namespace util;
/** \brief Classe que implementa o mixador de vídeos.
*
* \headerfile mixer/src/include/mixer.h
*/
class Mixer {
public:
/** Construtor.
*
* \param mVideo Path do vídeo principal.
* \param sVideo Path do vídeo secundário.
* \param ssVideo Tamanho do vídeo secundario.
* \param psVideo Posição do vídeo secundário em relação ao vídeo principal.
* \param tsVideo Transparência do vídeo sencundário.
* \param id Identificação do cliente na base de dados.
* \param pathTemp Path onde serão armazenados os arquivos temporários.
* \param pathContents Path onde será armazenado o vídeo mixado.
*/
Mixer(string mVideo, string sVideo, int ssVideo, int psVideo, int tsVideo,
string id, string pathTemp, string pathContents);
/** Destrutor. */
~Mixer();
/** Inicializa o processo de mixagem.
*
* A mixagem é feita através de uma chamada do FFMPEG.
*/
void initialize();
private:
string pathMixedVideo;
string pathTempFiles;
string mainVideo;
string secondaryVideo;
string temporaryTextFile;
string transparency;
string userID;
string heigthStr;
string widthStr;
string positionStr;
double widthSVideo;
double heigthSVideo;
int positionSVideo;
int sizeSVideo;
int transpSVideo;
/** Realiza a mixagem dos vídeos.
*
* Chama o FFMPEG passando os parâmetros necessários
* para a mixagem dos vídeos.
*/
void mixVideos();
/** Define o tamanho do vídeo secundário.
*
* O tamanho do vídeo secundário depende do tamanho
* do vídeo principal e da opção de resolução selecionada.
*/
void setSVSize();
/** Define a posição do vídeo secundário.
*
* A posição do vídeo secundário depende da posição
* selecionada pelo usuário.
*/
void setSVPosition();
/** Seta o path dos arquivos.
*
* O path dos arquivos temporários e do vídeo mixado
* são setados através desse método.
*/
void setPathOfFiles();
};
#endif /* MIXER_H */