diff --git a/manual_es.txt b/manual_es.txt index 6df2013..f186e6b 100644 --- a/manual_es.txt +++ b/manual_es.txt @@ -244,7 +244,7 @@ En los modos auto el inicio y fin de loop no son aplicables, se reproduce la pel 25-49: Video 50-75: Imagenes 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 25-49 Back 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 150-174 Stop/pause 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) 12 Rotate X (0) 13 Rotate Y (0) diff --git a/patches/layer.pd b/patches/layer.pd index e8c5288..6206704 100644 --- a/patches/layer.pd +++ b/patches/layer.pd @@ -1759,7 +1759,7 @@ f f f f f f f f f; #X connect 111 0 108 0; #X connect 113 0 102 0; #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 msg 252 -31 font \$1; #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 -78 * 0.125; #X obj 776 -29 pack f f 1; -#X obj 980 -203 loadbang; -#X obj 856 8 coll; +#X obj 856 18 coll; #C restore; -#X obj 856 34 prepend text; -#X msg 932 -70 read \$1; +#X obj 856 44 prepend text; +#X msg 932 -74 read \$1; #X obj 932 -100 fileselector; -#X msg 980 -181 type 257; -#X msg 1057 -182 file \$1; -#X obj 1057 -205 r \$0-c9; -#X obj 921 -202 r path; -#X msg 921 -180 set \$1; -#X obj 1149 -143 b; +#X msg 1017 -157 type 257; +#X msg 1128 -160 file \$1; +#X obj 932 -219 r path; +#X msg 932 -155 set \$1; +#X obj 1196 -120 b; #X text 857 -68 Texto; -#X obj 856 -20 float; -#X obj 946 -48 b; +#X obj 969 -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 1 0 3 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 12 0 11 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 25 0 37 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 54 0 6 3; #X connect 55 0 51 2; -#X connect 56 0 61 0; -#X connect 57 0 58 0; -#X connect 58 0 3 0; -#X connect 59 0 57 0; -#X connect 59 0 69 0; +#X connect 56 0 57 0; +#X connect 57 0 3 0; +#X connect 58 0 56 0; +#X connect 58 0 66 0; +#X connect 59 0 58 0; #X connect 60 0 59 0; -#X connect 61 0 60 0; -#X connect 62 0 60 0; -#X connect 62 0 66 0; -#X connect 63 0 62 0; -#X connect 64 0 65 0; -#X connect 65 0 60 0; -#X connect 66 0 60 0; -#X connect 68 0 57 0; -#X connect 69 0 68 0; +#X connect 61 0 59 0; +#X connect 61 0 64 0; +#X connect 62 0 63 0; +#X connect 62 0 68 0; +#X connect 63 0 59 0; +#X connect 64 0 59 0; +#X connect 66 0 69 0; +#X connect 67 0 61 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 obj 450 350 t b; #X obj 397 349 t b; diff --git a/patches/lms-video.pd b/patches/lms-video.pd index dd65eb5..37cc864 100644 --- a/patches/lms-video.pd +++ b/patches/lms-video.pd @@ -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; #X obj -7 437 list split; #X obj 99 444 list split; @@ -600,7 +600,7 @@ #X connect 16 0 13 0; #X connect 16 1 3 0; #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 msg -124 -32 1; #X msg -177 -33 0; diff --git a/src/libremediaserver.cpp b/src/libremediaserver.cpp index 7f4c12f..19b8f3a 100644 --- a/src/libremediaserver.cpp +++ b/src/libremediaserver.cpp @@ -93,7 +93,7 @@ bool audioCheck; -libreMediaServer::libreMediaServer(QWidget *parent) +libreMediaServer::libreMediaServer(QStringList args, QWidget *parent) : QMainWindow(parent), m_startvideo(0), m_startaudio(0), @@ -102,10 +102,17 @@ libreMediaServer::libreMediaServer(QWidget *parent) m_pd_write_video(NULL), m_pd_write_audio(NULL), m_pd_read_audio(NULL), - m_tcpsocket_audio(NULL) + m_tcpsocket_audio(NULL), + m_gui(FALSE) { qDebug() << "******************************************************************************************************"; 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 ui.setupUi(this); // Unix Local Sockets @@ -844,7 +851,11 @@ void libreMediaServer::pdstart() Q_CHECK_PTR(m_pd_write_video); connect(m_pd_write_video, SIGNAL(connected()),this, SLOT(newconexion())); // 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)){ ui.textEdit->appendPlainText("Video Engine started."); } @@ -869,7 +880,7 @@ void libreMediaServer::pdrestart() } save_finish(); qDebug()<<"**************************************************************************"; - qDebug()<<"Starting PD Video:" << ++m_startvideo; + qDebug()<<"PD Video Restarts:" << ++m_startvideo; ui.textEdit->appendPlainText("PD Video Restarting."); disconnect(m_pd_video, SIGNAL(finished(int)), this, SLOT(pdrestart())); pdstart(); @@ -1363,7 +1374,11 @@ void libreMediaServer::pdstart_audio() qDebug()<<"error listening tcpServer"; } // 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)){ ui.textEdit->appendPlainText("PD Audio started."); } diff --git a/src/libremediaserver.h b/src/libremediaserver.h index 668f328..b93125f 100644 --- a/src/libremediaserver.h +++ b/src/libremediaserver.h @@ -47,7 +47,7 @@ class libreMediaServer : public QMainWindow public: - libreMediaServer (QWidget *parent = 0); + libreMediaServer (QStringList args, QWidget *parent = 0); virtual ~libreMediaServer(); Ui::LibreMediaServer ui; @@ -72,6 +72,7 @@ protected: QTimer *m_preview; // Timer for the preview screen int m_startvideo; // Counter starts video engine. Debugging purpose int m_startaudio; // Counter starts audio engine. Debugging purpose + bool m_gui; private: @@ -85,7 +86,7 @@ private: void save_finish(); void open(QFile *file); void save(QFile *file); -// void MessageHandler(QtMsgType type, const char *msg); +// void MessageHandler(QtMsgType type, const char *msg); public slots: diff --git a/src/libremediaserver.pro.user b/src/libremediaserver.pro.user index 4df8f3a..b5d6857 100644 --- a/src/libremediaserver.pro.user +++ b/src/libremediaserver.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget @@ -213,7 +213,7 @@ Qt4ProjectManager.Qt4RunConfiguration 2 - + -gui libremediaserver.pro false false diff --git a/src/main.cpp b/src/main.cpp index adc23b8..1e95a92 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,8 @@ #include #include "libremediaserver.h" +#define VERSION "0.03-1"; + // Handler for pipe the stderr to a log file bool initMessageHandler = 0; @@ -73,8 +75,27 @@ void MessageHandler(QtMsgType type, const char *msg) int main(int argc, char *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); - libreMediaServer libreMediaServer; + libreMediaServer libreMediaServer(args); libreMediaServer.show(); return app.exec(); } diff --git a/todo.txt b/todo.txt index bbb91d7..948c4ca 100644 --- a/todo.txt +++ b/todo.txt @@ -21,11 +21,11 @@ You should have received a copy of the GNU General Public License along with thi v 0.03: + Pure Data: Carpetas para imágenes + Text: Diferentes ficheros de texto - ++ GUI: Configuración para anular los previews y salvar tiempo de proceso 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. --> Opción de arranque? --> Blending entre proyectores.Mirar ejemplo Gem multiprojection. @@ -33,7 +33,6 @@ Próximas versiones: - Pure Data Video: Cambiar alpha por glgs. --> Mirar ejemplos en doc de Gem. --> 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 --> Esperar a 1.2 en MagicQ? - 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? --> 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 -- Medidor de CPU en el GUI - Incluir archivos en el ejecutable como recursos Qt --> 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. @@ -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? - 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? -- GUI: PD Watchdog reinicia --> Puede que sea mejor que se reproduzca más lento a forzar un reinicio? +- Hacer external con reproductor de pix_film + --> 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: -- 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 + +