- Log file and minor changes.
- PD Video uses noaudio option to avoid blocking the device
This commit is contained in:
parent
d7d9559e9f
commit
c2af0c91ab
12 changed files with 194 additions and 180 deletions
|
@ -1,37 +1,37 @@
|
||||||
#N canvas 352 90 904 417 10;
|
#N canvas 350 98 904 417 10;
|
||||||
#N canvas 391 105 477 527 audio_player 0;
|
#N canvas 389 113 497 527 audio_player 0;
|
||||||
#X msg 22 107 open \$1;
|
#X msg 22 33 open \$1;
|
||||||
#X msg 203 167 start;
|
#X msg 203 93 start;
|
||||||
#X msg 242 168 stop;
|
#X msg 242 94 stop;
|
||||||
#X obj 119 214 oggread~;
|
#X obj 119 140 oggread~;
|
||||||
#X msg 274 168 resume;
|
#X msg 274 94 resume;
|
||||||
#X obj 22 9 inlet;
|
#X obj 22 9 inlet;
|
||||||
#X obj 219 105 / 25;
|
#X obj 219 31 / 25;
|
||||||
#X obj 219 125 int;
|
#X obj 219 51 int;
|
||||||
#X obj 219 10 r \$0-c5;
|
#X obj 219 10 r \$0-c5;
|
||||||
#X obj 100 265 *~ 0;
|
#X obj 100 191 *~ 0;
|
||||||
#X obj 157 265 *~ 0;
|
#X obj 157 191 *~ 0;
|
||||||
#X obj 276 209 dbtorms;
|
#X obj 276 135 dbtorms;
|
||||||
#X obj 219 209 dbtorms;
|
#X obj 219 135 dbtorms;
|
||||||
#X obj 150 493 dac~;
|
#X obj 150 419 dac~;
|
||||||
#X obj 363 140 r \$0-c1;
|
#X obj 363 66 r \$0-c1;
|
||||||
#X obj 212 300 r \$0-c2;
|
#X obj 212 226 r \$0-c2;
|
||||||
#X text 361 123 Volumen;
|
#X text 361 49 Volumen;
|
||||||
#X text 224 284 Pan;
|
#X text 224 210 Pan;
|
||||||
#X obj 212 340 * 0.00392157;
|
#X obj 212 266 * 0.00392157;
|
||||||
#X obj 219 145 select 0 1 2;
|
#X obj 219 71 select 0 1 2;
|
||||||
#X msg 119 175 seek \$1;
|
#X msg 119 101 seek \$1;
|
||||||
#X obj 119 110 r \$0-c8;
|
#X obj 119 36 r \$0-c8;
|
||||||
#X obj 363 176 * 0.0015308;
|
#X obj 363 102 * 0.0015308;
|
||||||
#X obj 119 141 * 0.01;
|
#X obj 119 67 * 0.01;
|
||||||
#X obj 200 267 s \$0-position;
|
#X obj 200 193 s \$0-position;
|
||||||
#X obj 117 383 expr 1-$f1;
|
#X obj 117 309 expr 1-$f1;
|
||||||
#X obj 210 432 line~;
|
#X obj 210 358 line~;
|
||||||
#X msg 210 411 \$1 1;
|
#X msg 210 337 \$1 1;
|
||||||
#X obj 117 424 line~;
|
#X obj 117 350 line~;
|
||||||
#X msg 117 403 \$1 1;
|
#X msg 117 329 \$1 1;
|
||||||
#X obj 194 452 *~;
|
#X obj 194 378 *~;
|
||||||
#X obj 101 449 *~;
|
#X obj 101 375 *~;
|
||||||
#X connect 0 0 3 0;
|
#X connect 0 0 3 0;
|
||||||
#X connect 1 0 3 0;
|
#X connect 1 0 3 0;
|
||||||
#X connect 2 0 3 0;
|
#X connect 2 0 3 0;
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
#X obj 708 -67 s \$0-c14;
|
#X obj 708 -67 s \$0-c14;
|
||||||
#X obj 763 -67 s \$0-c15;
|
#X obj 763 -67 s \$0-c15;
|
||||||
#X obj 825 -67 s \$0-c16;
|
#X obj 825 -67 s \$0-c16;
|
||||||
#N canvas 122 209 412 197 selector 0;
|
#N canvas 678 268 412 197 selector 0;
|
||||||
#X obj 193 -66 outlet;
|
#X obj 193 -66 outlet;
|
||||||
#X text 99 -210 folder;
|
#X text 99 -210 folder;
|
||||||
#X obj 95 -193 r \$0-c3;
|
#X obj 95 -193 r \$0-c3;
|
||||||
|
@ -137,8 +137,6 @@
|
||||||
#X text 184 -336 c1 Vol c2 pan c3 folder c4 file c5 playback c6 Control
|
#X text 184 -336 c1 Vol c2 pan c3 folder c4 file c5 playback c6 Control
|
||||||
c7 Volumen fino 8 Entry point Coarse 9 Entry point fine;
|
c7 Volumen fino 8 Entry point Coarse 9 Entry point fine;
|
||||||
#X obj 5 -199 outlet;
|
#X obj 5 -199 outlet;
|
||||||
#X floatatom 66 -167 5 0 0 0 - - -;
|
|
||||||
#X symbolatom 189 -176 80 0 0 0 - - -;
|
|
||||||
#X connect 1 0 40 0;
|
#X connect 1 0 40 0;
|
||||||
#X connect 2 0 25 0;
|
#X connect 2 0 25 0;
|
||||||
#X connect 3 0 26 0;
|
#X connect 3 0 26 0;
|
||||||
|
@ -158,10 +156,8 @@ c7 Volumen fino 8 Entry point Coarse 9 Entry point fine;
|
||||||
#X connect 17 0 33 0;
|
#X connect 17 0 33 0;
|
||||||
#X connect 32 0 0 0;
|
#X connect 32 0 0 0;
|
||||||
#X connect 32 0 42 0;
|
#X connect 32 0 42 0;
|
||||||
#X connect 32 0 44 0;
|
|
||||||
#X connect 33 0 34 0;
|
#X connect 33 0 34 0;
|
||||||
#X connect 34 0 9 0;
|
#X connect 34 0 9 0;
|
||||||
#X connect 34 0 43 0;
|
|
||||||
#X connect 34 1 10 0;
|
#X connect 34 1 10 0;
|
||||||
#X connect 34 2 11 0;
|
#X connect 34 2 11 0;
|
||||||
#X connect 34 3 12 0;
|
#X connect 34 3 12 0;
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
libMagick++-6.Q16.so.1.0.0
|
|
|
@ -1 +0,0 @@
|
||||||
libMagick++-6.Q16.so.1.0.0
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
/usr/local/lib/libMagick++-6.Q16.so.1.0.0
|
|
Binary file not shown.
BIN
bin/lms.conf
BIN
bin/lms.conf
Binary file not shown.
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# make_thumbs v0.0.2
|
|
||||||
# Script que genera thumbnails de todas las películas en el directorio Media
|
|
||||||
# Copyright Santi Noreña 2012-2013
|
|
||||||
# GPL License
|
|
||||||
cd $0 ||{
|
|
||||||
echo "Can not change to directory." $0
|
|
||||||
exit $E_XCD;
|
|
||||||
}
|
|
||||||
for folder in $(find -maxdepth 1 -type d); do
|
|
||||||
rm $folder/thumbs/*
|
|
||||||
mkdir $folder/thumbs
|
|
||||||
done
|
|
||||||
for file in $(find . -maxdepth 2 -mindepth 2 -type f ); do
|
|
||||||
avconv -i $file -f image2 -frames:v 1 -s 64x46 -vcodec mjpeg $file.jpg
|
|
||||||
done
|
|
||||||
for folder in $(find -maxdepth 1 -type d); do
|
|
||||||
mv $folder/*.jpg $folder/thumbs
|
|
||||||
done
|
|
||||||
exit 0
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Pure Media Server - A Media Server Sotfware for stage and performing
|
Pure Media Server - A Media Server Sotfware for stage and performing
|
||||||
v0.01-2
|
v0.03-1
|
||||||
Copyright (C) 2012-2013 Santi Noreña libremediaserver@gmail.com
|
Copyright (C) 2012-2013 Santi Noreña libremediaserver@gmail.com
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -30,6 +30,8 @@
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QLocalServer>
|
#include <QLocalServer>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
// Esto habrá que cambiarlo para poder utilizar varias instancias
|
// Esto habrá que cambiarlo para poder utilizar varias instancias
|
||||||
#define PDPORTW 9195
|
#define PDPORTW 9195
|
||||||
|
@ -104,25 +106,31 @@ bool audioCheck;
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
libreMediaServer::libreMediaServer(QWidget *parent)
|
libreMediaServer::libreMediaServer(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent),
|
||||||
|
m_startvideo(0),
|
||||||
|
m_startaudio(0),
|
||||||
|
m_pd_video(NULL),
|
||||||
|
m_pd_audio(NULL),
|
||||||
|
m_pd_write_video(NULL),
|
||||||
|
m_pd_write_audio(NULL),
|
||||||
|
m_pd_read_audio(NULL),
|
||||||
|
m_tcpsocket_audio(NULL)
|
||||||
{
|
{
|
||||||
|
qDebug() << "******************************************************************************************************";
|
||||||
|
qDebug() << QDate::currentDate() << QTime::currentTime();
|
||||||
// Iniciamos el User Interface
|
// Iniciamos el User Interface
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
// Iniciamos los punteros NULL
|
// Unix Local Sockets
|
||||||
m_pd_write_video = NULL;
|
|
||||||
m_pd_video = NULL;
|
|
||||||
m_tcpsocket_audio = NULL;
|
|
||||||
m_pd_read_audio = NULL;
|
|
||||||
m_pd_write_audio = NULL;
|
|
||||||
m_pd_audio = NULL;
|
|
||||||
// Unix Local Sockets
|
|
||||||
QFile socket(SOCKET);
|
QFile socket(SOCKET);
|
||||||
socket.remove();
|
if (socket.exists())
|
||||||
|
{
|
||||||
|
socket.remove();
|
||||||
|
}
|
||||||
m_server_vid = new QLocalServer(this);
|
m_server_vid = new QLocalServer(this);
|
||||||
Q_CHECK_PTR(m_server_vid);
|
Q_CHECK_PTR(m_server_vid);
|
||||||
if (!m_server_vid->listen(SOCKET))
|
if (!m_server_vid->listen(SOCKET))
|
||||||
{
|
{
|
||||||
qErrnoWarning("Can not listen on unix local server");
|
qErrnoWarning("Init: Can not listen on unix local server");
|
||||||
}
|
}
|
||||||
connect(m_server_vid, SIGNAL(newConnection()),this, SLOT(newPeer()));
|
connect(m_server_vid, SIGNAL(newConnection()),this, SLOT(newPeer()));
|
||||||
// Start preview Timer
|
// Start preview Timer
|
||||||
|
@ -160,10 +168,6 @@ libreMediaServer::~libreMediaServer()
|
||||||
m_pd_write_video->abort();
|
m_pd_write_video->abort();
|
||||||
delete m_pd_write_video;
|
delete m_pd_write_video;
|
||||||
}
|
}
|
||||||
// if (m_read_vid->isOpen()) {
|
|
||||||
// m_read_vid->close();;
|
|
||||||
// delete m_read_vid;
|
|
||||||
// }
|
|
||||||
if (m_server_vid->isListening()) {
|
if (m_server_vid->isListening()) {
|
||||||
m_server_vid->close();
|
m_server_vid->close();
|
||||||
delete m_server_vid;
|
delete m_server_vid;
|
||||||
|
@ -172,13 +176,21 @@ libreMediaServer::~libreMediaServer()
|
||||||
{
|
{
|
||||||
disconnect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart()));
|
disconnect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart()));
|
||||||
m_pd_video->terminate();
|
m_pd_video->terminate();
|
||||||
delete m_pd_video;
|
if (m_pd_video->waitForFinished(30000))
|
||||||
|
{
|
||||||
|
delete m_pd_video;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_ola->close();
|
m_ola->close();
|
||||||
delete m_ola;
|
delete m_ola;
|
||||||
if (m_pd_audio != NULL)
|
if (m_pd_audio != NULL)
|
||||||
{
|
{
|
||||||
|
disconnect(m_pd_audio, SIGNAL(finished(int)), this, SLOT( pdrestart_audio()));
|
||||||
m_pd_audio->terminate();
|
m_pd_audio->terminate();
|
||||||
|
if (m_pd_audio->waitForFinished(30000))
|
||||||
|
{
|
||||||
|
delete m_pd_audio;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (m_pd_write_audio != NULL)
|
if (m_pd_write_audio != NULL)
|
||||||
{
|
{
|
||||||
|
@ -190,6 +202,10 @@ libreMediaServer::~libreMediaServer()
|
||||||
m_pd_read_audio->close();
|
m_pd_read_audio->close();
|
||||||
delete m_pd_read_audio;
|
delete m_pd_read_audio;
|
||||||
}
|
}
|
||||||
|
socket.remove();
|
||||||
|
qDebug() << "PD Video starts: " << m_startvideo << " PD Audio starts: " << m_startaudio;
|
||||||
|
qDebug() << "Date: " << QDate::currentDate() << "Time: "<< QTime::currentTime();
|
||||||
|
qDebug() << "******************************************************************************************************";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -836,17 +852,19 @@ void libreMediaServer::pdstart()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
qDebug()<<"Starting PD Video:" << ++m_startvideo;
|
||||||
// Creamos los sockets para la conexión a Pure Data
|
// Creamos los sockets para la conexión a Pure Data
|
||||||
m_pd_write_video = new QTcpSocket(this);
|
m_pd_write_video = new QTcpSocket(this);
|
||||||
Q_CHECK_PTR(m_pd_write_video);
|
Q_CHECK_PTR(m_pd_write_video);
|
||||||
connect(m_pd_write_video, SIGNAL(connected()),this, SLOT(newconexion()));
|
connect(m_pd_write_video, SIGNAL(connected()),this, SLOT(newconexion()));
|
||||||
// Arrancamos el proceso Pure Data
|
// Arrancamos el proceso Pure Data
|
||||||
m_pd_video->start("./pd -lib Gem -d 0 -stderr -nogui -nostdpath lms-video.pd");
|
m_pd_video->start("./pd -noaudio -lib Gem -stderr -nostdpath -path ./externals/ lms-video.pd");
|
||||||
if (m_pd_video->waitForStarted(3000)){
|
if (m_pd_video->waitForStarted(3000)){
|
||||||
ui.textEdit->appendPlainText("Video Engine started.");
|
ui.textEdit->appendPlainText("Video Engine started.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
qFatal("PD Video can not start") ;
|
||||||
ui.textEdit->appendPlainText("Video Engine can not start!");
|
ui.textEdit->appendPlainText("Video Engine can not start!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -856,78 +874,6 @@ void libreMediaServer::pdstart()
|
||||||
connect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart()));
|
connect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sacamos la salida de Pure Data en la terminal
|
|
||||||
|
|
||||||
void libreMediaServer::stdout() {
|
|
||||||
QByteArray out = m_pd_video->readAllStandardError();
|
|
||||||
if (out.size() < 7) {return;}
|
|
||||||
out.chop(1);
|
|
||||||
qDebug() << out;
|
|
||||||
if (out.indexOf("ola2pd: Can not read DMX!",0) != -1)
|
|
||||||
{
|
|
||||||
ui.textEdit->appendPlainText("Can not read DMX data.");
|
|
||||||
}
|
|
||||||
/* if (out.indexOf("watchdog",0) != -1)
|
|
||||||
{
|
|
||||||
ui.textEdit->appendPlainText("PD video watchdog detected.");
|
|
||||||
}*/
|
|
||||||
int j = out.indexOf("togui: ",0);
|
|
||||||
if ((j >= 0) && (out.size() > (j+7)))
|
|
||||||
{
|
|
||||||
int i = m_pathmedia.size() + 16;
|
|
||||||
out.remove(0,j);
|
|
||||||
switch (out.at(7)) {
|
|
||||||
case '0':
|
|
||||||
qDebug()<<"Loadbang Video";
|
|
||||||
ui.textEdit->appendPlainText("LoadBang Video received.");
|
|
||||||
newconexion();
|
|
||||||
break;
|
|
||||||
case '1':
|
|
||||||
out.remove(0, i);
|
|
||||||
out.prepend("Layer 1 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '2':
|
|
||||||
out.remove(0, i);
|
|
||||||
out.prepend("Layer 2 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '3':
|
|
||||||
out.remove(0,i);
|
|
||||||
out.prepend("Layer 3 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '4':
|
|
||||||
out.remove(0,i);
|
|
||||||
out.prepend("Layer 4 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '5':
|
|
||||||
out.remove(0,i);
|
|
||||||
out.prepend("Layer 5 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '6':
|
|
||||||
out.remove(0,i);
|
|
||||||
out.prepend("Layer 6 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '7':
|
|
||||||
out.remove(0,i);
|
|
||||||
out.prepend("Layer 7 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
case '8':
|
|
||||||
out.remove(0,i);
|
|
||||||
out.prepend("Layer 8 playing:");
|
|
||||||
ui.textEdit->appendPlainText(out);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
qDebug()<<"stdout:Invalid cooki received"<<out;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Restart the Pure Data process if crash. Connected with signal finished of QProcess
|
// Restart the Pure Data process if crash. Connected with signal finished of QProcess
|
||||||
|
|
||||||
void libreMediaServer::pdrestart()
|
void libreMediaServer::pdrestart()
|
||||||
|
@ -937,10 +883,10 @@ void libreMediaServer::pdrestart()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
save_finish();
|
save_finish();
|
||||||
qDebug()<<"Restarting PD";
|
|
||||||
ui.textEdit->appendPlainText("PD Video Restarting.");
|
ui.textEdit->appendPlainText("PD Video Restarting.");
|
||||||
disconnect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart()));
|
disconnect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart()));
|
||||||
pdstart();
|
pdstart();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// New conexion on TCP Server
|
// New conexion on TCP Server
|
||||||
|
@ -1418,6 +1364,7 @@ void libreMediaServer::pdstart_audio()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
qDebug()<<"Starting PD Audio:" << ++m_startaudio;
|
||||||
// Creamos los sockets para la conexión a Pure Data
|
// Creamos los sockets para la conexión a Pure Data
|
||||||
m_pd_write_audio = new QTcpSocket(this);
|
m_pd_write_audio = new QTcpSocket(this);
|
||||||
Q_CHECK_PTR(m_pd_write_audio);
|
Q_CHECK_PTR(m_pd_write_audio);
|
||||||
|
@ -1434,7 +1381,7 @@ void libreMediaServer::pdstart_audio()
|
||||||
qDebug()<<"error listening tcpServer";
|
qDebug()<<"error listening tcpServer";
|
||||||
}
|
}
|
||||||
// Arrancamos el proceso Pure Data
|
// Arrancamos el proceso Pure Data
|
||||||
m_pd_audio->start("./pd -channels 2 -audiodev 1 -stderr -nostdpath -nogui lms-audio.pd");
|
m_pd_audio->start("./pd -alsa -channels 2 -audiodev 1 -stderr -nostdpath -path ./externals/ lms-audio.pd");
|
||||||
if (m_pd_audio->waitForStarted(3000)){
|
if (m_pd_audio->waitForStarted(3000)){
|
||||||
ui.textEdit->appendPlainText("PD Audio started.");
|
ui.textEdit->appendPlainText("PD Audio started.");
|
||||||
}
|
}
|
||||||
|
@ -1447,27 +1394,12 @@ void libreMediaServer::pdstart_audio()
|
||||||
connect(m_pd_audio, SIGNAL(readyReadStandardError()), this, SLOT(stdout_audio()));
|
connect(m_pd_audio, SIGNAL(readyReadStandardError()), this, SLOT(stdout_audio()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sacamos la salida de Pure Data en la terminal
|
|
||||||
|
|
||||||
void libreMediaServer::stdout_audio() {
|
|
||||||
QString out = m_pd_audio->readAllStandardError();
|
|
||||||
out.chop(1);
|
|
||||||
if (!out.isEmpty())
|
|
||||||
{
|
|
||||||
qDebug() << out;
|
|
||||||
// ui.textEdit->appendPlainText(out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restart the Pure Data process if crash. Connected wit signal finished of QProcess
|
// Restart the Pure Data process if crash. Connected wit signal finished of QProcess
|
||||||
|
|
||||||
void libreMediaServer::pdrestart_audio()
|
void libreMediaServer::pdrestart_audio()
|
||||||
{
|
{
|
||||||
save_finish();
|
save_finish();
|
||||||
qDebug()<<"Restarting PD audio";
|
|
||||||
ui.textEdit->appendPlainText("PD audio Restarting...");
|
ui.textEdit->appendPlainText("PD audio Restarting...");
|
||||||
int state = m_pd_audio->state();
|
if (m_pd_audio->state())
|
||||||
if (state != 0)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1488,7 +1420,6 @@ void libreMediaServer::pdrestart_audio()
|
||||||
}
|
}
|
||||||
|
|
||||||
// New conexion on TCP Server
|
// New conexion on TCP Server
|
||||||
|
|
||||||
void libreMediaServer::newPeer_audio()
|
void libreMediaServer::newPeer_audio()
|
||||||
{
|
{
|
||||||
m_tcpsocket_audio = m_pd_read_audio->nextPendingConnection();
|
m_tcpsocket_audio = m_pd_read_audio->nextPendingConnection();
|
||||||
|
@ -1497,7 +1428,6 @@ void libreMediaServer::newPeer_audio()
|
||||||
}
|
}
|
||||||
|
|
||||||
// New message in a TCP socket stablished connection
|
// New message in a TCP socket stablished connection
|
||||||
|
|
||||||
void libreMediaServer::newmessage_audio()
|
void libreMediaServer::newmessage_audio()
|
||||||
{
|
{
|
||||||
if (m_tcpsocket_audio == NULL)
|
if (m_tcpsocket_audio == NULL)
|
||||||
|
@ -1581,7 +1511,6 @@ void libreMediaServer::newconexion_audio()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sends packets to Pure Data audio
|
// Sends packets to Pure Data audio
|
||||||
|
|
||||||
bool libreMediaServer::sendPacket_audio(const char *buffer, int bufferLen)
|
bool libreMediaServer::sendPacket_audio(const char *buffer, int bufferLen)
|
||||||
{
|
{
|
||||||
if (m_pd_write_audio == NULL) {
|
if (m_pd_write_audio == NULL) {
|
||||||
|
@ -1599,7 +1528,6 @@ bool libreMediaServer::sendPacket_audio(const char *buffer, int bufferLen)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function error sending packets to PD audio
|
// Function error sending packets to PD audio
|
||||||
|
|
||||||
void libreMediaServer::errorsending_audio() {
|
void libreMediaServer::errorsending_audio() {
|
||||||
if (ui.audio->checkState())
|
if (ui.audio->checkState())
|
||||||
{
|
{
|
||||||
|
@ -1612,6 +1540,7 @@ void libreMediaServer::errorsending_audio() {
|
||||||
// Previews
|
// Previews
|
||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// GUI
|
// GUI
|
||||||
void libreMediaServer::previewMaster()
|
void libreMediaServer::previewMaster()
|
||||||
{
|
{
|
||||||
|
@ -1675,3 +1604,91 @@ void libreMediaServer::sendFrame()
|
||||||
}
|
}
|
||||||
m_msex->n_timer->start();
|
m_msex->n_timer->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Terminal and Log
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Sacamos la salida de Pure Data Audio en la terminal
|
||||||
|
void libreMediaServer::stdout_audio() {
|
||||||
|
QString out = m_pd_audio->readAllStandardError();
|
||||||
|
out.chop(1);
|
||||||
|
if (!out.isEmpty())
|
||||||
|
{
|
||||||
|
qDebug() << "PD Audio: " << out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sacamos la salida de Pure Data Video en la terminal
|
||||||
|
void libreMediaServer::stdout() {
|
||||||
|
QByteArray out = m_pd_video->readAllStandardError();
|
||||||
|
if (out.size() < 7) {return;}
|
||||||
|
out.chop(1);
|
||||||
|
qDebug() << "PD Video: " << out;
|
||||||
|
if (out.indexOf("ola2pd: Can not read DMX!",0) != -1)
|
||||||
|
{
|
||||||
|
ui.textEdit->appendPlainText("Can not read DMX data.");
|
||||||
|
}
|
||||||
|
/* if (out.indexOf("watchdog",0) != -1)
|
||||||
|
{
|
||||||
|
ui.textEdit->appendPlainText("PD video watchdog detected.");
|
||||||
|
}*/
|
||||||
|
int j = out.indexOf("togui: ",0);
|
||||||
|
if ((j >= 0) && (out.size() > (j+7)))
|
||||||
|
{
|
||||||
|
int i = m_pathmedia.size() + 16;
|
||||||
|
out.remove(0,j);
|
||||||
|
switch (out.at(7)) {
|
||||||
|
case '0':
|
||||||
|
qDebug()<<"Loadbang Video";
|
||||||
|
ui.textEdit->appendPlainText("LoadBang Video received.");
|
||||||
|
newconexion();
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
out.remove(0, i);
|
||||||
|
out.prepend("Layer 1 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
out.remove(0, i);
|
||||||
|
out.prepend("Layer 2 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
out.remove(0,i);
|
||||||
|
out.prepend("Layer 3 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
out.remove(0,i);
|
||||||
|
out.prepend("Layer 4 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
out.remove(0,i);
|
||||||
|
out.prepend("Layer 5 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
out.remove(0,i);
|
||||||
|
out.prepend("Layer 6 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
out.remove(0,i);
|
||||||
|
out.prepend("Layer 7 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
case '8':
|
||||||
|
out.remove(0,i);
|
||||||
|
out.prepend("Layer 8 playing:");
|
||||||
|
ui.textEdit->appendPlainText(out);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
qDebug()<<"stdout:Invalid cookie received"<<out;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -50,18 +50,16 @@ protected:
|
||||||
|
|
||||||
// Video Sockets
|
// Video Sockets
|
||||||
QTcpSocket *m_pd_write_video;
|
QTcpSocket *m_pd_write_video;
|
||||||
// Unix Local Sockets
|
// Video Unix Local Sockets
|
||||||
// QLocalSocket *m_write_vid;
|
|
||||||
QLocalServer *m_server_vid;
|
QLocalServer *m_server_vid;
|
||||||
QLocalSocket *m_read_vid;
|
QLocalSocket *m_read_vid;
|
||||||
|
|
||||||
// Audio TCP Sockets
|
// Audio TCP Sockets
|
||||||
QTcpSocket *m_pd_write_audio;
|
QTcpSocket *m_pd_write_audio;
|
||||||
QTcpServer *m_pd_read_audio;
|
QTcpServer *m_pd_read_audio;
|
||||||
QTcpSocket *m_tcpsocket_audio;
|
QTcpSocket *m_tcpsocket_audio;
|
||||||
|
QTimer *m_preview; // Timer for the preview screen
|
||||||
QTimer *m_preview;
|
int m_startvideo; // Counter starts video engine. Debugging purpose
|
||||||
// void contextMenuEvent(QContextMenuEvent *event);
|
int m_startaudio; // Counter starts audio engine. Debugging purpose
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
@ -1098,7 +1098,7 @@
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="plainText">
|
<property name="plainText">
|
||||||
<string>LibreMediaServer 0.02-1
|
<string>LibreMediaServer 0.03-1
|
||||||
(C) 2012-2013 Santiago Noreña libremediaserver@gmail.com
|
(C) 2012-2013 Santiago Noreña libremediaserver@gmail.com
|
||||||
GPL 3 license. See LICENSE.txt and credits.txt for details
|
GPL 3 license. See LICENSE.txt and credits.txt for details
|
||||||
This program comes with ABSOLUTELY NO WARRANTY</string>
|
This program comes with ABSOLUTELY NO WARRANTY</string>
|
||||||
|
@ -1112,7 +1112,7 @@ This program comes with ABSOLUTELY NO WARRANTY</string>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>745</width>
|
<width>745</width>
|
||||||
<height>29</height>
|
<height>25</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
<widget class="QMenu" name="menuFile">
|
||||||
|
|
26
src/main.cpp
26
src/main.cpp
|
@ -19,10 +19,36 @@
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include "libremediaserver.h"
|
#include "libremediaserver.h"
|
||||||
|
|
||||||
|
void MessageHandler(QtMsgType type, const char *msg)
|
||||||
|
{
|
||||||
|
QString txt;
|
||||||
|
switch (type) {
|
||||||
|
case QtDebugMsg:
|
||||||
|
txt = QString("Debug: %1").arg(msg);
|
||||||
|
break;
|
||||||
|
case QtWarningMsg:
|
||||||
|
txt = QString("Warning: %1").arg(msg);
|
||||||
|
break;
|
||||||
|
case QtCriticalMsg:
|
||||||
|
txt = QString("Critical: %1").arg(msg);
|
||||||
|
break;
|
||||||
|
case QtFatalMsg:
|
||||||
|
txt = QString("Fatal: %1").arg(msg);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
QFile outFile("log.txt");
|
||||||
|
outFile.open(QIODevice::WriteOnly | QIODevice::Append);
|
||||||
|
QTextStream ts(&outFile);
|
||||||
|
ts << txt << endl;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
qInstallMsgHandler(MessageHandler);
|
||||||
libreMediaServer libreMediaServer;
|
libreMediaServer libreMediaServer;
|
||||||
libreMediaServer.show();
|
libreMediaServer.show();
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue