Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Belen Silvotti Barcelo
Obligatorio2Grupo51
Commits
a10aa62e
Commit
a10aa62e
authored
Sep 14, 2018
by
agustin
Browse files
djhjf
parent
8955ad19
Changes
2
Hide whitespace changes
Inline
Side-by-side
Evacliente/src/client.c
View file @
a10aa62e
...
...
@@ -135,9 +135,11 @@ int main(){
}
else
{
if
(
pausado
)
cout
<<
"2 - Reanudar Reproduccion"
<<
endl
;
else
else
{
cout
<<
"3 - Pausar"
<<
endl
;
cout
<<
"4 - Finalizar Reproduccion de Video"
<<
endl
;
cout
<<
"4 - Finalizar Reproduccion de Video"
<<
endl
;
}
}
cout
<<
"5 - Salir"
<<
endl
;
...
...
Evaservidor/src/server.c
View file @
a10aa62e
...
...
@@ -26,19 +26,23 @@ using namespace std;
#define FINALIZAR 4
#define SALIR 5
struct
parametros
{
//
int id_cliente;
int
id_cliente
;
Mat
frame
;
VideoCapture
cap
;
vector
<
uchar
>
encoded
;
sockaddr_in
addr_destinoudp
;
int
pTCPcliente
;
//recivo msj tcp
//
int *comunicacion;
int
*
comunicacion
;
int
socket_de_clienteUDP
;
//evido msj udp
};
void
*
streamVideo
(
void
*
);
void
*
controlVideo
(
void
*
);
pthread_mutex_t
pausa
=
PTHREAD_MUTEX_INITIALIZER
;
pthread_mutex_t
finalizar
=
PTHREAD_MUTEX_INITIALIZER
;
pthread_mutex_t
mutex
=
PTHREAD_MUTEX_INITIALIZER
;
int
main
(){
//Primer paso, definir variables
...
...
@@ -79,7 +83,7 @@ int main(){
vector
<
uchar
>
encoded
;
//vector para almacenar el frame codificado en jpeg
VideoCapture
cap
(
"/home/agustin/Descargas/video_prueba.mp4"
);
//Obtener el video desde archivo.
//Crea una nueva ventana con nombre servidor
namedWindow
(
"servidor"
,
CV_WINDOW_AUTOSIZE
);
//
namedWindow("servidor", CV_WINDOW_AUTOSIZE);
/*while(true){
cap >> frame;
...
...
@@ -88,6 +92,13 @@ int main(){
}*/
cout
<<
"llegue a hacer video"
<<
endl
;
int
id_cliente
=
1
;
int
array_com
[
20
]
=
{
INACTIVO
};
int
*
comunicacion
=
array_com
;
pthread_mutex_init
(
&
mutex
,
NULL
);
//Paso5, aceptar conexiones
while
(
1
)
{
socklen_t
longitud_cliente
=
sizeof
(
struct
sockaddr_in
);
...
...
@@ -132,11 +143,11 @@ int main(){
struct
parametros
*
p
=
new
parametros
;
//
p->id_cliente= id_cliente;
p
->
id_cliente
=
id_cliente
;
p
->
frame
=
frame
;
p
->
cap
=
cap
;
p
->
encoded
=
encoded
;
//
p->comunicacion=comunicacion;
p
->
comunicacion
=
comunicacion
;
p
->
addr_destinoudp
=
addr_destinoudp
;
p
->
pTCPcliente
=
pTCPcliente
;
p
->
socket_de_clienteUDP
=
socket_de_clienteUDP
;
...
...
@@ -148,6 +159,7 @@ int main(){
//primitiva CLOSE
close
(
pTCPcliente
);
}
//cvDestroyAllWindows();
close
(
fd
);
}
...
...
@@ -155,58 +167,87 @@ int main(){
void
*
controlVideo
(
void
*
pol
){
parametros
*
p
=
(
parametros
*
)
pol
;
//
pthread_mutex_init(&finalizar, NULL);
//
pthread_mutex_init(&pausa, NULL);
pthread_mutex_init
(
&
finalizar
,
NULL
);
pthread_mutex_init
(
&
pausa
,
NULL
);
pthread_t
hilo_stream
;
int
aux3
=
pthread_create
(
&
hilo_stream
,
NULL
,
streamVideo
,(
void
*
)
p
);
cout
<<
"Hizo el thread stream"
<<
endl
;
int
aux
=
1
;
char
*
data_menu
=
new
char
;
bool
primera
=
false
;
while
(
aux
!=
5
){
//primitiva RECEIVE
recv
(
p
->
pTCPcliente
,
(
void
*
)
data_menu
,
1
,
MSG_WAITALL
);
cout
<<
atoi
(
data_menu
)
<<
endl
;
//
cout << atoi(data_menu) << endl;
aux
=
atoi
(
data_menu
);
switch
(
aux
){
case
1
:
cout
<<
"Apretaron 1"
<<
endl
;
//pthread_mutex_unlock(&finalizar);
//cout<< "Apretaron 1"<< endl;
pthread_mutex_unlock
(
&
finalizar
);
//pthread_mutex_init(&finalizar, NULL);
break
;
case
2
:
cout
<<
"Apretaron 2"
<<
endl
;
//
pthread_mutex_unlock(&pausa);
pthread_mutex_unlock
(
&
pausa
);
break
;
case
3
:
//a= nombre[10];
cout
<<
"Apretaron 3"
<<
endl
;
//
pthread_mutex_lock(&pausa);
pthread_mutex_lock
(
&
pausa
);
break
;
case
4
:
cout
<<
"Apretaron 4"
<<
endl
;
//
pthread_mutex_lock(&finalizar);
pthread_mutex_lock
(
&
finalizar
);
break
;
case
5
:
cout
<<
"Apretaron 5"
<<
endl
;
pthread_cancel
(
hilo_stream
);
//problema number 3
goto
hola
;
break
;
}
//pthread_mutex_lock(&mutex);
//aux = p->comunicacion[p->id_cliente];
//pthread_mutex_unlock(&mutex);
pthread_mutex_lock
(
&
mutex
);
p
->
comunicacion
[
p
->
id_cliente
]
=
aux
;
cout
<<
"en control "
<<
aux
<<
endl
;
pthread_mutex_unlock
(
&
mutex
);
}
pthread_join
(
hilo_stream
,
NULL
);
//problema number 2
//pthread_join(hilo_stream, NULL);//problema number 2
hola:
return
0
;
}
//termina control
//stream
void
*
streamVideo
(
void
*
pol
){
bool
fin
=
false
;
parametros
*
p
=
(
parametros
*
)
pol
;
while
(
true
){
pthread_mutex_lock
(
&
mutex
);
int
estado
=
p
->
comunicacion
[
p
->
id_cliente
];
pthread_mutex_unlock
(
&
mutex
);
int
tamanio_frame
;
int
tamanio_video
=
sizeof
(
p
->
cap
);
cout
<<
"aca va a imprimir el tamanio del video"
<<
tamanio_video
<<
endl
;
while
(
!
fin
){
pthread_mutex_lock
(
&
pausa
);
pthread_mutex_unlock
(
&
pausa
);
p
->
cap
>>
p
->
frame
;
//obtener nuevo frame
imshow
(
"servidor"
,
p
->
frame
);
//muestra la imagen en la ventana servidor
if
(
p
->
frame
.
empty
()){
VideoCapture
capaux
(
"/home/agustin/Descargas/video_prueba.mp4"
);
p
->
cap
=
capaux
;
p
->
cap
>>
p
->
frame
;
pthread_mutex_lock
(
&
mutex
);
p
->
comunicacion
[
p
->
id_cliente
]
=
1
;
pthread_mutex_unlock
(
&
mutex
);
}
//imshow("servidor", p->frame); //muestra la imagen en la ventana servidor
waitKey
(
1000
/
30
);
//espera para ver las frames y que se reproduzca el video en el servidor
//convertir la imagen a texto para enviar
...
...
@@ -221,6 +262,22 @@ void *streamVideo(void* pol){
(
struct
sockaddr
*
)
&
p
->
addr_destinoudp
,
sizeof
(
p
->
addr_destinoudp
)
);
pthread_mutex_lock
(
&
mutex
);
estado
=
p
->
comunicacion
[
p
->
id_cliente
];
pthread_mutex_unlock
(
&
mutex
);
pthread_mutex_lock
(
&
finalizar
);
pthread_mutex_unlock
(
&
finalizar
);
if
(
estado
==
FINALIZAR
)
{
cout
<<
"voy a dormir"
<<
endl
;
pthread_mutex_lock
(
&
mutex
);
p
->
comunicacion
[
p
->
id_cliente
]
=
1
;
pthread_mutex_unlock
(
&
mutex
);
VideoCapture
capaux
(
"/home/agustin/Descargas/video_prueba.mp4"
);
p
->
cap
=
capaux
;
cout
<<
"voy a recurrir"
<<
endl
;
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment