- Added option -gui in comamd line to show the Pure Data GUI's

- Bugfix in initiatializinng the text subpatch
This commit is contained in:
Santi Noreña 2013-03-01 21:06:35 +01:00
parent d1c4295692
commit b877185c0d
8 changed files with 97 additions and 50 deletions

View file

@ -244,7 +244,7 @@ En los modos auto el inicio y fin de loop no son aplicables, se reproduce la pel
25-49: Video 25-49: Video
50-75: Imagenes 50-75: Imagenes
75-99: Texto 75-99: Texto
9 Modos de Reproduccion (Sólo aplicable si canal 5 < 245)/Text File: 9 Modos de Reproduccion (Sólo aplicable si canal 5 < 245):
00-24 Normal loop 00-24 Normal loop
25-49 Back loop 25-49 Back loop
50-74 Ping-pong loop 50-74 Ping-pong loop
@ -253,7 +253,7 @@ En los modos auto el inicio y fin de loop no son aplicables, se reproduce la pel
125-149 Ping-Pong una vez 125-149 Ping-Pong una vez
150-174 Stop/pause 150-174 Stop/pause
175-200 Continue/Play 175-200 Continue/Play
10 Inicio loop (0 principio peli- 255 final) (0) 10 Inicio loop (0 principio peli- 255 final)/Text File (0)
11 Final Loop (0 principio peli - 255 final) (255) 11 Final Loop (0 principio peli - 255 final) (255)
12 Rotate X (0) 12 Rotate X (0)
13 Rotate Y (0) 13 Rotate Y (0)

View file

@ -1759,7 +1759,7 @@ f f f f f f f f f;
#X connect 111 0 108 0; #X connect 111 0 108 0;
#X connect 113 0 102 0; #X connect 113 0 102 0;
#X restore 579 -65 pd video_render; #X restore 579 -65 pd video_render;
#N canvas 66 90 951 649 texto 0; #N canvas 48 90 951 649 texto 0;
#X obj 421 -381 gemhead; #X obj 421 -381 gemhead;
#X msg 252 -31 font \$1; #X msg 252 -31 font \$1;
#X obj 421 -307 rotateXYZ; #X obj 421 -307 rotateXYZ;
@ -1816,21 +1816,22 @@ f f f f f f f f f;
#X obj 659 -115 - 128; #X obj 659 -115 - 128;
#X obj 659 -78 * 0.125; #X obj 659 -78 * 0.125;
#X obj 776 -29 pack f f 1; #X obj 776 -29 pack f f 1;
#X obj 980 -203 loadbang; #X obj 856 18 coll;
#X obj 856 8 coll;
#C restore; #C restore;
#X obj 856 34 prepend text; #X obj 856 44 prepend text;
#X msg 932 -70 read \$1; #X msg 932 -74 read \$1;
#X obj 932 -100 fileselector; #X obj 932 -100 fileselector;
#X msg 980 -181 type 257; #X msg 1017 -157 type 257;
#X msg 1057 -182 file \$1; #X msg 1128 -160 file \$1;
#X obj 1057 -205 r \$0-c9; #X obj 932 -219 r path;
#X obj 921 -202 r path; #X msg 932 -155 set \$1;
#X msg 921 -180 set \$1; #X obj 1196 -120 b;
#X obj 1149 -143 b;
#X text 857 -68 Texto; #X text 857 -68 Texto;
#X obj 856 -20 float; #X obj 969 -48 b;
#X obj 946 -48 b; #X obj 1128 -189 float 0;
#X obj 1019 -199 t b b;
#X obj 856 -10 float 0;
#X obj 1128 -222 r \$0-c10;
#X connect 0 0 4 0; #X connect 0 0 4 0;
#X connect 1 0 3 0; #X connect 1 0 3 0;
#X connect 2 0 5 0; #X connect 2 0 5 0;
@ -1846,7 +1847,7 @@ f f f f f f f f f;
#X connect 11 0 8 1; #X connect 11 0 8 1;
#X connect 12 0 11 0; #X connect 12 0 11 0;
#X connect 12 1 10 0; #X connect 12 1 10 0;
#X connect 23 0 68 0; #X connect 23 0 69 0;
#X connect 24 0 36 0; #X connect 24 0 36 0;
#X connect 25 0 37 0; #X connect 25 0 37 0;
#X connect 26 0 38 0; #X connect 26 0 38 0;
@ -1880,21 +1881,24 @@ f f f f f f f f f;
#X connect 53 0 54 0; #X connect 53 0 54 0;
#X connect 54 0 6 3; #X connect 54 0 6 3;
#X connect 55 0 51 2; #X connect 55 0 51 2;
#X connect 56 0 61 0; #X connect 56 0 57 0;
#X connect 57 0 58 0; #X connect 57 0 3 0;
#X connect 58 0 3 0; #X connect 58 0 56 0;
#X connect 59 0 57 0; #X connect 58 0 66 0;
#X connect 59 0 69 0; #X connect 59 0 58 0;
#X connect 60 0 59 0; #X connect 60 0 59 0;
#X connect 61 0 60 0; #X connect 61 0 59 0;
#X connect 62 0 60 0; #X connect 61 0 64 0;
#X connect 62 0 66 0; #X connect 62 0 63 0;
#X connect 63 0 62 0; #X connect 62 0 68 0;
#X connect 64 0 65 0; #X connect 63 0 59 0;
#X connect 65 0 60 0; #X connect 64 0 59 0;
#X connect 66 0 60 0; #X connect 66 0 69 0;
#X connect 68 0 57 0; #X connect 67 0 61 0;
#X connect 69 0 68 0; #X connect 68 0 60 0;
#X connect 68 1 67 0;
#X connect 69 0 56 0;
#X connect 70 0 67 0;
#X restore 742 -97 pd texto; #X restore 742 -97 pd texto;
#X obj 450 350 t b; #X obj 450 350 t b;
#X obj 397 349 t b; #X obj 397 349 t b;

View file

@ -1,4 +1,4 @@
#N canvas 572 196 611 318 10; #N canvas 570 206 611 318 10;
#N canvas 315 169 952 599 dmx 0; #N canvas 315 169 952 599 dmx 0;
#X obj -7 437 list split; #X obj -7 437 list split;
#X obj 99 444 list split; #X obj 99 444 list split;
@ -600,7 +600,7 @@
#X connect 16 0 13 0; #X connect 16 0 13 0;
#X connect 16 1 3 0; #X connect 16 1 3 0;
#X restore -396 -379 pd layer_2; #X restore -396 -379 pd layer_2;
#N canvas 382 150 450 300 layer_1 0; #N canvas 380 160 450 300 layer_1 0;
#X obj -253 -28 layer; #X obj -253 -28 layer;
#X msg -124 -32 1; #X msg -124 -32 1;
#X msg -177 -33 0; #X msg -177 -33 0;

View file

@ -93,7 +93,7 @@ bool audioCheck;
libreMediaServer::libreMediaServer(QWidget *parent) libreMediaServer::libreMediaServer(QStringList args, QWidget *parent)
: QMainWindow(parent), : QMainWindow(parent),
m_startvideo(0), m_startvideo(0),
m_startaudio(0), m_startaudio(0),
@ -102,10 +102,17 @@ libreMediaServer::libreMediaServer(QWidget *parent)
m_pd_write_video(NULL), m_pd_write_video(NULL),
m_pd_write_audio(NULL), m_pd_write_audio(NULL),
m_pd_read_audio(NULL), m_pd_read_audio(NULL),
m_tcpsocket_audio(NULL) m_tcpsocket_audio(NULL),
m_gui(FALSE)
{ {
qDebug() << "******************************************************************************************************"; qDebug() << "******************************************************************************************************";
qDebug() << QDate::currentDate() << QTime::currentTime(); qDebug() << QDate::currentDate() << QTime::currentTime();
qDebug() << "Parsing the command line";
if (args.contains("-gui"))
{
qDebug()<< "libremediaserver Constructor option GUI detected";
m_gui = true;
}
// Iniciamos el User Interface // Iniciamos el User Interface
ui.setupUi(this); ui.setupUi(this);
// Unix Local Sockets // Unix Local Sockets
@ -844,7 +851,11 @@ void libreMediaServer::pdstart()
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 -noaudio -lib Gem -stderr -nostdpath -path ./externals/ ./patches/lms-video.pd"); QString arguments;
arguments.append("./pd -noaudio -lib Gem -stderr -nostdpath -path ./externals/ -open ./patches/lms-video.pd ");
if (!m_gui)
arguments.append("-nogui");
m_pd_video->start(arguments);
if (m_pd_video->waitForStarted(3000)){ if (m_pd_video->waitForStarted(3000)){
ui.textEdit->appendPlainText("Video Engine started."); ui.textEdit->appendPlainText("Video Engine started.");
} }
@ -869,7 +880,7 @@ void libreMediaServer::pdrestart()
} }
save_finish(); save_finish();
qDebug()<<"**************************************************************************"; qDebug()<<"**************************************************************************";
qDebug()<<"Starting PD Video:" << ++m_startvideo; qDebug()<<"PD Video Restarts:" << ++m_startvideo;
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();
@ -1363,7 +1374,11 @@ 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 -alsa -channels 2 -audiodev 1 -stderr -nostdpath -path ./externals/ ./patches/lms-audio.pd"); QString arguments;
arguments.append("./pd -alsa -channels 2 -audiodev 1 -stderr -nostdpath -path ./externals/ ./patches/lms-audio.pd ");
if (!m_gui)
arguments.append("-nogui");
m_pd_audio->start(arguments);
if (m_pd_audio->waitForStarted(3000)){ if (m_pd_audio->waitForStarted(3000)){
ui.textEdit->appendPlainText("PD Audio started."); ui.textEdit->appendPlainText("PD Audio started.");
} }

View file

@ -47,7 +47,7 @@ class libreMediaServer : public QMainWindow
public: public:
libreMediaServer (QWidget *parent = 0); libreMediaServer (QStringList args, QWidget *parent = 0);
virtual ~libreMediaServer(); virtual ~libreMediaServer();
Ui::LibreMediaServer ui; Ui::LibreMediaServer ui;
@ -72,6 +72,7 @@ protected:
QTimer *m_preview; // Timer for the preview screen QTimer *m_preview; // Timer for the preview screen
int m_startvideo; // Counter starts video engine. Debugging purpose int m_startvideo; // Counter starts video engine. Debugging purpose
int m_startaudio; // Counter starts audio engine. Debugging purpose int m_startaudio; // Counter starts audio engine. Debugging purpose
bool m_gui;
private: private:

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by Qt Creator 2.5.0, 2013-03-01T18:09:52. --> <!-- Written by Qt Creator 2.5.0, 2013-03-01T20:59:13. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>ProjectExplorer.Project.ActiveTarget</variable> <variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -213,7 +213,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value> <value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">-gui</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">libremediaserver.pro</value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">libremediaserver.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value> <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value> <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>

View file

@ -19,6 +19,8 @@
#include <QApplication> #include <QApplication>
#include "libremediaserver.h" #include "libremediaserver.h"
#define VERSION "0.03-1";
// Handler for pipe the stderr to a log file // Handler for pipe the stderr to a log file
bool initMessageHandler = 0; bool initMessageHandler = 0;
@ -73,8 +75,27 @@ void MessageHandler(QtMsgType type, const char *msg)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication app(argc, argv); QApplication app(argc, argv);
QStringList args = app.arguments();
if (args.size() > 1)
{
if (args.contains("-v") > 0)
{
qDebug() << "LibreMediaServer Version" << VERSION;
app.exit();
return 0;
}
if (args.contains("-h") > 0)
{
qDebug() << "LibreMediaServer Version" << VERSION;
qDebug() << "Help";
qDebug() << "-v Show the version and exits";
qDebug() << "-gui show the Pure Data GUI's.";
app.exit();
return 0;
}
}
qInstallMsgHandler(MessageHandler); qInstallMsgHandler(MessageHandler);
libreMediaServer libreMediaServer; libreMediaServer libreMediaServer(args);
libreMediaServer.show(); libreMediaServer.show();
return app.exec(); return app.exec();
} }

View file

@ -21,11 +21,11 @@ You should have received a copy of the GNU General Public License along with thi
v 0.03: v 0.03:
+ Pure Data: Carpetas para imágenes + Pure Data: Carpetas para imágenes
+ Text: Diferentes ficheros de texto + Text: Diferentes ficheros de texto
+ GUI: Configuración para anular los previews y salvar tiempo de proceso
Próximas versiones: Próximas versiones:
- Pure Data Video: Modularidad, sumar ventanas por instancias de PMS-video. - Pure Data Video: Modularidad, sumar ventanas por instancias de LMS.
--> NO SE PUEDE POR USAR LOS MISMOS PUERTOS. --> NO SE PUEDE POR USAR LOS MISMOS PUERTOS.
--> Opción de arranque? --> Opción de arranque?
--> Blending entre proyectores.Mirar ejemplo Gem multiprojection. --> Blending entre proyectores.Mirar ejemplo Gem multiprojection.
@ -33,7 +33,6 @@ Próximas versiones:
- Pure Data Video: Cambiar alpha por glgs. - Pure Data Video: Cambiar alpha por glgs.
--> Mirar ejemplos en doc de Gem. --> Mirar ejemplos en doc de Gem.
--> Mirar requerimientos de tarjetas gráficas --> Mirar requerimientos de tarjetas gráficas
- GUI: Configuración para anular los previews y salvar tiempo de proceso
- Conectividad: CITP/MSEx 1.1. Thumbs y previews de imágenes - Conectividad: CITP/MSEx 1.1. Thumbs y previews de imágenes
--> Esperar a 1.2 en MagicQ? --> Esperar a 1.2 en MagicQ?
- Pure Data: sincronismo de audio con videos - Pure Data: sincronismo de audio con videos
@ -42,7 +41,6 @@ Próximas versiones:
--> La opción de pdp2gem parece la más factible. Gem no soporta en absoluto el audio, habría que crear un backend para manejarlo y es una movida. ¿Hacerlo sólo en una capa? --> La opción de pdp2gem parece la más factible. Gem no soporta en absoluto el audio, habría que crear un backend para manejarlo y es una movida. ¿Hacerlo sólo en una capa?
--> hay que adaptar todo el patch a pdp_player e incluir los externals de pdp y pdp2gem. Adaptar sólo el método auto en esta capa, sin la velocidad ni los modos --> hay que adaptar todo el patch a pdp_player e incluir los externals de pdp y pdp2gem. Adaptar sólo el método auto en esta capa, sin la velocidad ni los modos
- Documentación en inglés - Documentación en inglés
- Medidor de CPU en el GUI
- Incluir archivos en el ejecutable como recursos Qt - Incluir archivos en el ejecutable como recursos Qt
--> Podrá leer Pure Data los .pd_linux? --> Podrá leer Pure Data los .pd_linux?
--> Los externals empiezan a pesar demasiado y sería un ejecutable demasiado grande: Incluir sólo los patches. --> Los externals empiezan a pesar demasiado y sería un ejecutable demasiado grande: Incluir sólo los patches.
@ -66,15 +64,23 @@ Próximas versiones:
----------------- -----------------
Para considerar: Para considerar/investigar:
- Necesidad de 16 bits en size, rotation, entry-end points, puntos de bezier? - Necesidad de 16 bits en size, rotation, entry-end points, puntos de bezier?
- Más puntos de Bezier? - Más puntos de Bezier?
- Hacer external con reproductor de pix_film --> Merece la pena codificarlo en C una vez hecho en PD? Ahorrará consumo de CPU? - Hacer external con reproductor de pix_film
- GUI: PD Watchdog reinicia --> Puede que sea mejor que se reproduzca más lento a forzar un reinicio? --> Merece la pena codificarlo en C una vez hecho en PD? Ahorrará consumo de CPU?
- GUI: PD Watchdog reinicia
--> Puede que sea mejor que se reproduzca más lento a forzar un reinicio?
--> Ahora estoy trabajando sin watchdog y no noto la diferencia.
- Medidor de CPU en el GUI
--> Mejor usar cualquier tipo de medidor externo. Lo ideal sería mostrar los fps a los que está trabajando Gem, pero no parece posible en este momento.
----------------- -----------------
Descartados: Descartados:
- Separar textos en otra personalidad --> No posible, al iniciar un nuevo proceso inicia una nueva ventana- Malo para textos, bueno para varios proyectores y blending!. Investigar soft edge. - Separar textos en otra personalidad
--> No posible, al iniciar un nuevo proceso inicia una nueva ventana- Malo para textos, bueno para varios proyectores y blending