removed citp/msex and logs. Compiles and starts (not tested). Qt5.

This commit is contained in:
snt 2024-04-16 16:45:26 +02:00
parent d2c3682c23
commit 4f283d9476
16 changed files with 167 additions and 426 deletions

View file

@ -1,27 +1,23 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(c) Santiago Noreña 2012-2013
Libre Media Server - An Open Source Media Server.
(c) Santiago Noreña 2012-2024 <lms@criptomart.net>
https://git.criptomart.net/libremediaserver
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Code: http://code.google.com/p/libremediaserver
*******************************************************************************
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************************
Lbre Media Server ChangeLog
ChangeLog
*******************************************************************************
V0.1.0 (not released yet)
+ Compiles on Ubuntu 22.04 Jammy
+ Better docs
+ Publish on internet again
+ Qt5
+ Removed logs
+ Removed MSEX
V 0.04-2

View file

@ -1,115 +1,44 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(c) Santiago Noreña 2012-2013
(c) Santiago Noreña 2012-2024 <lms@criptomart.net>
https://git.criptomart.net/libremediaserver
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Code: http://code.google.com/p/libremediaserver
*******************************************************************************
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************************
If you have troubles, or you are in another distro, you can try compiling from the source code.
Ubuntu 22.04 Jamm.
0. Requisites
tcl tk --> To compile Pure Data, not necesary to execute it without GUI (-gui option in command line)
build-essential
make
gcc
g++
libtiff-dev -> ola2jpg
libmagick++-dev -> In Debian Wheezy libmagick++5-dev; In Ubuntu Precise libmagick++4-dev
autoconf // Gem
automake // Gem
libtool
subversion
gmerlin
¿¿?? v4l2ucp
¿¿?? v4l-utils
ola-dev
1. Building pd
$./configure
$make
sudo apt-get install build-essential qmake-qt5 gcc g++ libtool qtbase5-dev libqt5webkit5-dev qtwebengine5-dev libqt5script5
libtiff-dev -> ola2jpg
v4l2ucp
v4l-utils
autoconf // Gem
automake // Gem
2. Install ola and ola-dev
Add the repository apt.openlighting.org
apt-get install ola ola-dev
apt install cpplint libcppunit-dev uuid-dev pkg-config libncurses5-dev libtool autoconf automake g++ libmicrohttpd-dev libprotobuf-dev libprotoc-dev zlib1g-dev bison flex make libftdi-dev libftdi1 libusb-1.0-0-dev liblo-dev libavahi-client-dev python3-protobuf libprotobuf* protobuf-*
OLA https://www.openlighting.org/ola/linuxinstall/#Git
wget https://github.com/OpenLightingProject/ola/releases/download/0.10.9/ola-0.10.9.tar.gz
tar xvf ola-0.10.9.tar.gz
cd ola-0.10.9/
autoreconf -i
./configure --disable-uart --disable-pathport --disable-renard --disable-sandnet --disable-uartdmx --disable-usbdmx --disable-stageprofi --disable-espnet --disable-ftdidmx --disable-gpio --disable-opendmx --disable-openpixelcontrol --disable-shownet --disable-spi --disable-karate --disable-milinst
3. Building pd externals
3. Pure data y externals
3.1 ola2pd
# Compile and install flext
svn co https://svn.grrrr.org/ext/trunk/flext flext
cd flext
./build.sh pd gcc
Edit the paths in file ./buildsys/cnfg-lnx-gcc.txt
./build sh pd gcc
sudo ./build.sh pd gcc install
cd ..
# Add enviroment path variables to .bashrc
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib" >> ~/.bashrc
echo "export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include" >> ~/.bashrc
echo "export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include" >> ~/.bashrc
# Build and install ola2pd
cd ola2pd
/path/to/flext/build.sh pd gcc
$ cp fileselector.pd_linux $HOME/pd-externals
3.2 Gem + pix2jpg
$ cd Gem
$ ./autogen.sh
$ ./configure --with-pd=/path/to/libremediaserver/src/pd-0.44-2/ --prefix=$HOME/pd-externals
comment the line 65 in the Makefile in /plugins/ImageMagick. It fails compiling.
$ make
$ make install
3.3 fileselector
$ cd fileselector
$ make
$ cp fileselector.pd_linux $HOME/pd-externals
4. LibreMediaserver
$ qmake libremediaserver.pro -r -spec linux-g++
$ make -w
Open the file libremediaserver.pro with QtCreator and compile it.
5. Install
or
$ cd src
$ qmake-qt4 libremediaserver.pro -r -spec linux-g++
$ make -w
5. Putting all together.
Make a directory. Copy in it:
- libremediaserver binary
- Folder scripts
- Folder puredata
- the tcl folder in the pd sources. This is only necessary to show the Pure Data GUI's. You don't need if you don't want the GUI's. Only it's good for debugging purpouses and developing, for normal use you can skip this step.
In the folder puredata copy:
- the pd executable
- Make a folder named externals and copy all the externals to it. All the externals compiled must be in ~HOME/pd-external.
There are externals from third party that we do not track the sources files and are a must in order to run libremediaserver. That externals can be retrieved compiled in the libremediaserver release packet in the downloads page in the web project. All are binaries from the packets of Debian distribution (counter, gate, split, prepend,...) from pd-zexy, pd-cyclone, pd-ogg. I'am actively developing and i am adding the sources of these externals to repository when they are necessary (Gem) or making my own fork to adapt when i need (fileselector, pix2image) or trying using alternatives in PD Vanilla. I want to keep only the minimun necessary in this chapter. Alternativaly i want to make a compilation script that would do the complete compilation process, including these externals, but it's not a prioriy at this moment.
..........
6. Configuration

View file

@ -1,83 +0,0 @@
************************************************** *****************************
Libre Media Server Un Média serveur open-source.
(C) 2012-2013 James Noren
************************************************** *****************************
Développement et support: libremediaserver@gmail.com
Page du projet: http://code.google.com/p/libremediaserver
************************************************** *****************************
Ce programme est un logiciel libre. Vous pouvez le redistribuer et / ou le modifier selon les termes de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation, soit la version 3 de la Licence, ou (à votre choix) toute version ultérieure.
Ce programme est distribué avec l'espoir qu'il puisse être utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la Licence Publique Générale GNU avec ce programme, sinon, écrivez à la Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
************************************************** *****************************
I. Conditions requises
LMS est développé et testé sur Debian Wheezy et dérivés.
Le logiciel nécessite une carte graphique OpenGL avec des pilotes Xorg et l'accélération matérielle correctement installés. Entrer "glxgears" dans un terminal devrait ouvrir une fenêtre avec trois roues dengrenage qui doivent tourner. Si ce nest pas le cas, consultez la documentation de votre distribution.
Pour résoudre les dépendances, vous devez avoir une connexion Internet sur l'ordinateur pendant le processus d'installation.
LMS communique avec Pure Data via le port TCP de 9195 à 9198. Open Lighting Architecture utilise le port 9090 de votre serveur web. Il est primordial que ces ports ne soient pas utilisés par d'autres applications.
Vous n'avez pas besoin de deux ordinateurs pour gérer LibreMediaServer, mais le CTIP / MSEX ne fonctionnera pas sur localhost.
Au moment où le programme commence, vous devez disposer d'une interface réseau active, après avoir démarré. Si vous voulez contrôler le media serveur à partir d'un autre ordinateur, vous devez configurer la carte réseau du système d'exploitation selon le protocole que vous utilisez. Pour artnet utiliser une adresse IP de type 2.x.x.x avec un masque de sous réseau 255.0.0.0.
II. Installation dOLA
Ouvrez un terminal en tant que root et éditez le fichier source.list
sudo gedit /etc/apt/sources.list
Ajoutez la ligne suivante :
Sous debian > deb http://apt.openlighting.org/debian/ wheezy main
Sous ubuntu > deb http://apt.openlighting.org/debian/ precise main
Enregistrez et fermez léditeur de texte.
Exécutez la commande « apt-get update » pour mettre à jour la liste des dépôts.
Installez le logiciel OLA avec la commande apt-get
apt-get install ola
Lancer OLA
/etc/init.d/olad start
III. Installation de libremediaserver.
Ouvrez un terminal en tant que root et allez dans le répertoire des scripts avec la commande
cd /répertoire racine/scripts
Exécutez le fichier dinstallation selon votre système dexploitation.
./Install_wheezy.sh
ou
./Install_precise.sh
Confirmez Oui lorsquil vous est demandé confirmation pour télécharger les fichiers et assurez-vous que vous êtes connecté à Internet. Ensuite, cliquez sur Non lorsque vous êtes invité à démarrer OLA daemon au démarrage du système.
Lancer libremediaserver
cd/repertoire LMS
puis
./libremediaserver
IV. Configuration
Cette étape n'est nécessaire quà la première exécution de LMS
a. Dans le menu fichier de lapplication, cliquez sur « setup OLA »
b. Cliquez sur le bouton "Ajouter un univers"
c. Spécifiez le numéro de lunivers concerné (ID) et donnez-lui un nom. Cochez dans la liste le ou les protocoles que vous souhaitez utilisez en vous assurant de faire attention au sens (input ou output) des données.
Si vous choisissez le protocole Artnet, entrez dans "Univers Id" le numéro de l'univers ArtNet pour lesquels vous souhaitez recevoir les signaux dmx. Lunivers et le subnet peuvent être ultérieurement modifiés dans le fichier ~ /. Ola / wave-artnet.conf. Lunivers par défaut est 0 et le subnet 0.
Vous pouvez vérifier que l'information dmx circule en cliquant sur l'univers dans le menu de gauche, puis sur longlet "DMX Monitor".
Une fois la configuration terminée, fermez la fenêtre du logiciel OLA.
d. Configurez la réception dmx du logiciel en cochant la case « Read DMX » et en spécifiant le numéro de lunivers dmx précédemment configuré dans OLA (OLA universe).
e. Dans le logiciel LMS, cliquez sur le menu Fichier puis « Changer le répertoire de média » et sélectionnez le répertoire où sont vos médias. Larborescence de ce dossier doit respecter un ordre particulier pour fonctionner. Référez-vous à la section correspondante dans le manuel dutilisation. Définissez ensuite l'adresse DMX de chaque couche selon le patch de la table via les boites de dialogue sous chaque couche.
Si vous utilisez le CITP / MSEX afin de générer les vignettes de vos couches, allez dans le menu CITP / MSEX et cliquez sur « créer des vignettes ». Les vignettes sont générées automatiquement.

View file

@ -1,54 +0,0 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(C) Santiago Noreña 2012-2013
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Code: http://code.google.com/p/libremediaserver
*******************************************************************************
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************************
LibreMediaServer es un programa para manejar visuales y audio en actuaciones escénicas, instalaciones, eventos, performances,etc, basado en Software Libre.
El control de LMS se realiza mediante el Open Lighting Arquitecture, por lo que podemos usar cualquier protocolo de iluminación abierto (ArtNet, PathPort, ShowNet, ACN,...) o dispositivo DMX-USB (Enttec Pro, Velleman, Anyuma,...).
El motor gráfico y de audio es Pure Data con Gem.
LibreMediaServer funciona en GNU/Linux. Está testeado en Debian Wheezy y Ubuntu Precise 12.04, y debería funcionar en más distribuciones basadas
en Debian.
*******************************************************************************
Características:
- 8 capas de video, imágenes o texto.
- 8 capas de audio.
- Playback avanzado.
- Cada capa puede ser mapeada mediante 4 puntos de Bèzier.
- Un montón de formatos de video: avi, mov, mpg, mp4, ogg.
- Reproducción de audio en formato ogg.
- Reproducción de imágenes en formato jpeg, tiff.
- Efectos de Video.
- Control de posición (en 16 bits), rotación en los 3 ejes, tamaño, y color por capa.
- Máscaras Croma/Luma, pasa-altos y/o pasabajos en RGB.
- Reproducción de textos a través ficheros de texto plan, 255 ficheros hasta 255 frases por fichero renderizando hasta 255 fuentes distintas TrueType.
*******************************************************************************
Para instalar LMS vea instalacion.txt
Para usar LMS vea manual.txt
*******************************************************************************

View file

@ -1,22 +0,0 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(C) Santiago Noreña 2012-2013
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Code: http://code.google.com/p/libremediaserver
*******************************************************************************
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************************
Sorry only in espanish at the moment manual_es.txt

View file

@ -1,26 +1,11 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(c) Santiago Noreña 2012-2013
(c) Santiago Noreña 2012-2024 <lms@criptomart.net>
https://git.criptomart.net/libremediaserver
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Code: http://code.google.com/p/libremediaserver
*******************************************************************************
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************************
Lee instalacion.txt para el proceso de instalación.
*******************************************************************************
Libre Media Server es un programa para ejecutar audio y/o video en espectáculos en directo: artes escénicas, conciertos, eventos, performances, instalaciones, etc. Es Software Libre y está desarrollado en y para sistemas operativos GNU/Linux Debian y derivados.
@ -73,7 +58,7 @@ J. IP Adress. Dirección IP de la interface que queremos usar para el CITP/MSEx.
K. Preview Master Check Box: Habilita/deshabilita la vista previa de la mezcla final.
L. Preview Layers: Habilita/deshabilita la vista previa por capa.
M. Contador de FPS. Indica la tasa actual de renderizado.
N. Pretend Rate. Intenta renderizar a esta tasa. Reduce la tasa si tu máquina no alcanza los 30 fps para tener una reproducción lineal sin cambios en la velocidad.
N. Pretend Rate. Intenta renderizar a esta tasa. Reduce la tasa si tu máquina no alcanza los 30 fps para tener una reproducción lineal sin cambios en la velocidad.
Menu File:
@ -415,7 +400,7 @@ Atención! Algunos de estos efectos y/o combinaciones de parámetros cascan Pure
*******************************************************************************
PureMediaServer Audio:
LibreMediaServer Audio:
1 - Volumen Coarse
2 - Pan

View file

@ -1,13 +1,13 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(c) Santiago Noreña 2012-2013
(c) Santiago Noreña 2012-2024
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Developing and support: lms@criptomart.net
Code: http://code.google.com/p/libremediaserver
Code: https://git.criptomart.net/libremediaserver
*******************************************************************************
@ -19,30 +19,22 @@ You should have received a copy of the GNU General Public License along with thi
*******************************************************************************
Pure Media Server is an Open Source project to manage visuals and audio in stage, perfomances, installations, events,,...,
Libre Media Server is an Open Source project to manage visuals and audio in stage, perfomances, installations, events,,...,
The control input is through Open Lighting Arquitecture, so we can use any open lighting protocolol (ArtNet, PathPort, ShowNet, ACN, SandNet,...) or DMX-USB device (Enttec USB DMX Pro, Velleman, Anyuma,..).
The graphic and audio engine are two Pure Data process running in the background. You will need a graphics card OpenGL capable and the driver for it correctly installed.
I'm developing and testing in Debian Wheezy and Ubuntu precise 12.04. It should compile and work in anothers Debian based distros.
Features:
- 8 video, pictures or text layers.
- 8 audio layers.
- Advanced playback (normal, back, ping.pong, entry point, exit point, speed, loop).
- Each layer can be mapped onto a surface with 4 point of Bèzier.
- A lot of formats: avi, mov, mpg, HD,...
- DMXUSB interfaces and IP protocolos (sACN, Pathport, ArtNet, ...).
- Mapping by layer and master.
- A lot of input formats: avi, mov, mpg, HD,...
- Some video effects.
- Position, Rotation, Size.
- Croma/Luma mask.
- Text through a text file, with 255 phrases.
Sorry, at the moment the doc is only in spanish:
Install guide : instalacion.txt
Users guide : manual.txt
- Render texts live from a file.
- Not enough? A crazy idea? you can customize the Pure Data patches and change or improve LibreMediaServer behaviour at your will.

View file

@ -81,12 +81,12 @@ struct CITP_PINF_PLoc
CITP_PINF_Header CITPPINFHeader; // The CITP PINF header. PINF ContentType is "PLoc".
uint16 ListeningTCPPort; // The port on which the peer is listening for
// incoming TCP connections. 0 if not listening.
ucs1 Type[]; // Can be "LightingConsole", "MediaServer",
ucs1 Type; // Can be "LightingConsole", "MediaServer",
// "Visualizer" or "OperationHub".
ucs1 Name[]; // The display name of the peer. Corresponds to the
ucs1 Name; // The display name of the peer. Corresponds to the
// PINF/PNam/Name field.
ucs1 State[]; // The display state of the peer. This can be any
// descriptive string presentable to the user such
ucs1 State; // The display state of the peer. This can be any
// descriptive string presentable to the user such
// as "Idle", "Running" etc.
};

View file

@ -2,7 +2,7 @@
/*
The MIT License
Copyright (c) 2012-2013 Santi Noreña libremediaserver@gmail.com
Copyright (c) 2012-2024 Santi Noreña lms@criptomart.net
Copyright (c) 2009 John Warwick

View file

@ -1,7 +1,7 @@
/*
Pure Media Server - A Media Server Sotfware for stage and performing
Libre Media Server - A FOSS Media Server Sotfware for stage and performing.
Copyright (C) 2012-2013 Santi Noreña libremediaserver@gmail.com
Copyright (C) 2012-2024 Santi Noreña <lms@criptomart.net>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -43,9 +43,9 @@ quint16 winsizey;
libreMediaServer::libreMediaServer(QStringList args, QWidget *parent)
: QMainWindow(parent),
m_startvideo(0),
m_pd_video(NULL),
m_gui(FALSE)
m_startvideo(0),
m_gui(false)
{
qDebug() << "********************************************************************************";
qDebug() << QDate::currentDate() << QTime::currentTime();
@ -105,7 +105,7 @@ libreMediaServer::libreMediaServer(QStringList args, QWidget *parent)
open_start();
m_olaInterface = new olaInterface();
Q_CHECK_PTR(m_olaInterface);
connect(m_olaInterface->m_msex->m_timer, SIGNAL(timeout()), this, SLOT(sendFrame()));
//connect(m_olaInterface->m_msex->m_timer, SIGNAL(timeout()), this, SLOT(sendFrame()));
connect(m_olaInterface, SIGNAL(sendDmx(int,int,int)), this, SLOT(receiveDMX(int,int,int)));
connect(m_olaInterface, SIGNAL(newFile(QString)), this, SLOT(newFile(QString)));
@ -262,7 +262,7 @@ void libreMediaServer::save(QFile *file)
QString errorstring = tr("Bytes Write to file %1").arg(error);
qDebug()<<"Saved file complete:"<< errorstring;
file->close();
delete buffer;
delete[] buffer;
}
///////////////////////////////////////////////////////////////////
@ -291,16 +291,16 @@ void libreMediaServer::olasetup()
void libreMediaServer::on_window_stateChanged(int state)
{
if ((state == 2)) {
if (state == 2) {
QString desc("101 0001;");
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
}
if ((state == 0)) {
if (state == 0) {
QString desc("101 0000;");
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
@ -311,7 +311,7 @@ void libreMediaServer::on_winpositionx_valueChanged()
{
int x = ui.winpositionx->value();
QString desc = tr("102 %1;").arg(x);
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
@ -321,7 +321,7 @@ void libreMediaServer::on_winpositiony_valueChanged()
{
int x = ui.winpositiony->value();
QString desc = tr("103 %1;").arg(x);
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
@ -331,7 +331,7 @@ void libreMediaServer::on_winsizex_valueChanged()
{
int x = ui.winsizex->value();
QString desc = tr("104 %1;").arg(x);
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
@ -341,7 +341,7 @@ void libreMediaServer::on_winsizey_valueChanged()
{
int x = ui.winsizey->value();
QString desc = tr("105 %1;").arg(x);
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
@ -351,7 +351,7 @@ void libreMediaServer::on_winsizey_valueChanged()
void libreMediaServer::on_fpsRate_valueChanged()
{
QString desc = tr("123 %1;").arg(ui.fpsRate->value());
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
@ -536,7 +536,7 @@ bool libreMediaServer::sendPacket(const char *buffer, int bufferLen)
void libreMediaServer::receiveDMX(int layer, int channel, int value)
{
QString buffer = tr("%1 %2 %3;").arg(layer).arg(channel).arg(value);
if (!sendPacket(buffer.toAscii().constData(), buffer.size()))
if (!sendPacket(buffer.toLatin1().constData(), buffer.size()))
{
errorsending();
}
@ -550,7 +550,7 @@ bool libreMediaServer::newFile(QString file)
qErrnoWarning("sendPacket:Socket not conected: ");
return false;
}
if (file.size() != m_write_video->write(file.toAscii().constData(), file.size()))
if (file.size() != m_write_video->write(file.toLatin1().constData(), file.size()))
{
qErrnoWarning("sendPacket:Can not write to socket: ");
return false;
@ -584,35 +584,35 @@ void libreMediaServer::sendFrame()
}
image = image.scaledToWidth(88);
image = image.convertToFormat(QImage::Format_RGB888);
m_olaInterface->m_msex->sendFrame(image);
//m_olaInterface->m_msex->sendFrame(image);
}
// Enable/Disable the GUI Master preview
void libreMediaServer::on_previewMaster_stateChanged (int state)
{
if ((state == 0)) {
m_olaInterface->m_msex->m_timer->stop();
if (state == 0) {
//m_olaInterface->m_msex->m_timer->stop();
}
if ((state == 2))
if (state == 2)
{
m_olaInterface->m_msex->m_timer->start();
//m_olaInterface->m_msex->m_timer->start();
}
}
// Enable/Disable the GUI Layers preview
void libreMediaServer::on_previewLayer_stateChanged (int state)
{
if ((state == 0)) {
if (state == 0) {
QString desc = tr("122 0;");
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}
}
if ((state == 2))
if (state == 2)
{
QString desc = tr("122 1;");
if (!sendPacket(desc.toAscii().constData(),desc.size()))
if (!sendPacket(desc.toLatin1().constData(),desc.size()))
{
errorsending();
}

View file

@ -1,6 +1,6 @@
/*
Libre Media Server - A Media Server Sotfware for stage and performing
Copyright (C) 2012-2013 Santiago Noreña libremediaserver@gmail.com
Copyright (C) 2012-2024 Santiago Noreña lms@criptomart.net
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -34,15 +34,15 @@
#include <QWebView>
#include <QUrl>
#include "msex.h"
#include "CITPDefines.h"
#include "MSEXDefines.h"
//#include "msex.h"
//#include "CITPDefines.h"
//#include "MSEXDefines.h"
#include "ui_libremediaserver.h"
#include "olainterface.h"
#include "settingsdialog.h"
#define VERSION "LibreMediaServer Version 0.05-1"
#define COPYRIGHT "(C) 2012-2013 Santi Norena libremediaserver@gmail.com"
#define VERSION "LibreMediaServer Version 0.1.0"
#define COPYRIGHT "(C) 2012-2024 Santi Norena lms@criptomart.net"
#define LICENSE "GPL 3 License. See LICENSE.txt and credits.txt for details"
class QMenu;

View file

@ -1,57 +1,32 @@
TEMPLATE = app
TARGET = libremediaserver
QT += network script webkit
CONFIG += debug
DESTDIR = ./debug
QT += network webkitwidgets widgets
HEADERS += libremediaserver.h \
citp-lib.h \
PacketCreator.h \
PeerInformationSocket.h \
msex.h \
CITPDefines.h \
MSEXDefines.h \
olainterface.h \
settingsdialog.h
olainterface.h \
settingsdialog.h
# citp-lib.h \
# PacketCreator.h \
# PeerInformationSocket.h \
# msex.h \
# CITPDefines.h \
# MSEXDefines.h \
SOURCES += main.cpp \
libremediaserver.cpp \
citp-lib.cpp \
PacketCreator.cpp \
PeerInformationSocket.cpp \
msex.cpp \
olainterface.cpp \
settingsdialog.cpp
FORMS += \
libremediaserver.ui \
settingsdialog.ui
#INCLUDEPATH += ./
LIBS += -L./debug
olainterface.cpp \
settingsdialog.cpp
# citp-lib.cpp \
# PacketCreator.cpp \
# PeerInformationSocket.cpp \
# msex.cpp \
FORMS += libremediaserver.ui \
settingsdialog.ui
LIBS += -lola -lolacommon
#win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../debug/release/ -lcitp
#else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../debug/debug/ -lcitp
#else:symbian: LIBS += -lcitp
#else:unix: LIBS += -L$$PWD/../debug/ -lcitp
#INCLUDEPATH += $$PWD/../debug
#DEPENDPATH += $$PWD/../debug
RESOURCES =
OTHER_FILES += \
../todo.txt \
../readme.txt \
../manual_es.txt \
../manual_en.txt \
../LICENSE.txt \
../leeme.txt \
../install.txt \
../instalacion.txt \
../credits.txt \
../compiling.txt \
../changelog.txt \
dmx.xlm
OTHER_FILES += ../todo.txt \
../readme.txt \
../manual_es.txt \
../LICENSE.txt \
../instalacion.txt \
../credits.txt \
../compiling.txt \
../changelog.txt \
dmx.xlm

View file

@ -1,6 +1,6 @@
/*
Libre Media Server - A Media Server Sotfware for stage and performing
Copyright (C) 2012-2013 Santiago Noreña libremediaserver@gmail.com
Copyright (C) 2012-2024 Santi Noreña <lms@criptomart.net>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -23,7 +23,7 @@
bool initMessageHandler = 0;
QFile outFile;
/*
void MessageHandler(QtMsgType type, const char *msg)
{
QString txt;
@ -68,9 +68,9 @@ void MessageHandler(QtMsgType type, const char *msg)
initMessageHandler = 1;
}
QTextStream ts(&outFile);
ts << txt << endl;
ts << txt << Qt::endl;
}
*/
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
@ -93,14 +93,14 @@ int main(int argc, char *argv[])
qDebug() << "Help for command line options:";
qDebug() << "-v show the version and exits";
qDebug() << "-gui show the Pure Data GUI's";
qDebug() << "-log write the debug information to a log file instead stderr";
//qDebug() << "-log write the debug information to a log file instead stderr";
qDebug() << "-h this help";
return 0;
}
if (args.contains("-log"))
/* if (args.contains("-log"))
{
qInstallMsgHandler(MessageHandler);
}
qInstallMessageHandler(MessageHandler);
}*/
if (!args.contains("-gui"))
{
for (int i=1; i<args.size();i++)

View file

@ -1,5 +1,5 @@
/* olainterface.cpp
Santi Noreña 2013
Santi Noreña 2013-2024 <lms@criptomart.net>
It includes two classes:
olaWorker is the threading class that reads raw DMX from ola daemon and save it into a buffer ordered in layers
olaInterface controls olaWorker and translates DMX values received from olaWorker into orders to RenderingManager and Source
@ -16,8 +16,8 @@ olaInterface::olaInterface()
// readDataFromXML(); // Read the dmx setting from dmx.xml
connect (worker, SIGNAL(dmx(int,int,int)), this, SLOT(dmx(int,int,int)), Qt::QueuedConnection); // The DMX values.
initMediaLibrary(); // Init the media library reading the files in m_pathmedia
m_msex = new msex(this); // Init the CITP/MSEx protocol
Q_CHECK_PTR(m_msex);
//m_msex = new msex(this); // Init the CITP/MSEx protocol
//Q_CHECK_PTR(m_msex);
// open();
}
@ -179,7 +179,7 @@ void olaInterface::requestNewFile(int layer, int type){
dir.setFilter(QDir::Files);
QFileInfoList filelist = dir.entryInfoList();
QFileInfo fileInfo = filelist.at(worker->m_dmx[layer][DMX_FILE]);
newfile.append(fileInfo.absoluteFilePath().toAscii());
newfile.append(fileInfo.absoluteFilePath().toLatin1());
newfile.append(";");
emit newFile(newfile);
newfile.clear();
@ -191,7 +191,7 @@ void olaInterface::requestNewFile(int layer, int type){
}
filelist = dir.entryInfoList();
fileInfo = filelist.at(worker->m_dmx[layer][DMX_FOLDER]);
newfile.append(fileInfo.absoluteFilePath().toAscii());
newfile.append(fileInfo.absoluteFilePath().toLatin1());
newfile.append(";");
emit newFile(newfile);
} else if (type == 3) {
@ -364,7 +364,7 @@ void olaWorker::olastop()
* has changed to save resources.
*/
// ToDo: It can be more efficient making the dmx buffer a DmxBuffer class instead a int array and compare with the new if there is changes at start. Also all access to the buffer it should be get/set. I should profile this
void olaWorker::NewDmx(unsigned int universe, const DmxBuffer &buffer,const string &error) {
void olaWorker::NewDmx(unsigned int universe, const DmxBuffer &buffer,const std::string &error) {
if (!error.empty()) {
qWarning() << tr("olaWorker:NewDmx|") << "error received " << QString::fromStdString(error);
return;
@ -405,7 +405,7 @@ bool olaWorker::CheckDataLoss() {
/*
* Control de errores en el registro de Universos en OLA
*/
void olaWorker::RegisterComplete(const string &error) {
void olaWorker::RegisterComplete(const std::string &error) {
if (!error.empty()) {
qWarning() << "olaWorker|" << "Register command failed" << QString::fromStdString(error);
}

View file

@ -1,5 +1,5 @@
/* olainterface.h
Santi Noreña 2013
Santi Noreña 2013-2024 <lms@criptomart.net>
It includes two classes:
olaWorker is the threading class that reads raw DMX from ola daemon
olaInterface controls olaWorker and translates DMX values received from olaWorker into orders to RenderingManager and Source
@ -31,9 +31,9 @@
#include <ola/OlaClientWrapper.h>
#include <ola/OlaCallbackClient.h>
#include "CITPDefines.h"
#include "MSEXDefines.h"
#include "msex.h"
//#include "CITPDefines.h"
//#include "MSEXDefines.h"
//#include "msex.h"
#include "QDir"
#include "libremediaserver.h"
@ -46,6 +46,31 @@ struct dmxSettings {
bool updated;
};
// Media Information for MELIn packages. v1.0
struct MediaInformation {
quint8 Number; // 0-based contiguous index of the media.
// uint32 SerialNumber; //MSEX 1.2
quint8 DMXRangeMin;// DMX range start value.
quint8 DMXRangeMax;// DMX range end value.
QString MediaName;// Media name.
quint64 MediaVersionTimestamp;// Media version in seconds since 1st January 1970.
quint16 MediaWidth; // Media width.
quint16 MediaHeight;// Media height.
quint32 MediaLength;// Media length (in frames).
quint8 MediaFPS;// Media resolution (in frames per second).
};
// Media Library for ELin packages v1.0
struct MediaLibrary {
quint8 m_Id; // Library id.
quint8 m_DMXRangeMin;// DMX range start value.
quint8 m_DMXRangeMax;// DMX range end value.
QString m_Name;// Library name.
// quint8 m_LibraryCount;// Number of sub libraries in the library. MSEX 1.2
quint8 m_ElementCount;// Number of elements in the library.
QList<MediaInformation> m_MediaInformation; // Pointer to the Medias Information List of this Library
};
class olaWorker : public QThread
{
Q_OBJECT
@ -71,9 +96,9 @@ protected:
private:
void NewDmx(unsigned int universe,const DmxBuffer &buffer,const string &error); // Callback from OlaCallbackCLient when there is new dmx info
void NewDmx(unsigned int universe,const DmxBuffer &buffer,const std::string &error); // Callback from OlaCallbackCLient when there is new dmx info
bool CheckDataLoss();
void RegisterComplete(const string &error); // Called after completing the register
void RegisterComplete(const std::string &error); // Called after completing the register
public slots:
void dmxConf(int layer, int address, int universe);
@ -89,7 +114,7 @@ signals:
void dmx(int layer, int channel, int value); // Signal when a channel has changed
};
class msex;
//class msex;
class olaInterface : public QObject
{
Q_OBJECT
@ -106,7 +131,7 @@ public:
inline QString getPath () {return m_pathmedia;} // Get the path to the medias folder tree.
msex *m_msex;
//msex *m_msex;
QList<MediaLibrary> *m_media; // Library to save the folders/media libraries and index each media file inside
// Created here but m_msex acces for reading in this library
protected:

View file

@ -1,17 +1,12 @@
*******************************************************************************
Libre Media Server - An Open source Media Server.
(c) Santiago Noreña 2012-2013
(c) Santiago Noreña 2012-2024 <lms@criptomart.net>
https://git.criptomart.net/libremediaserver
*******************************************************************************
Developing and support: libremediaserver@gmail.com
Code: http://code.google.com/p/libremediaserver
*******************************************************************************
v0.05 video:
v0.1.0 video:
Necesarios:
@ -20,10 +15,13 @@ Necesarios:
+ Mover fileselector a la parte C++
+ Crear base de datos al inicio en vez de leer ficheros del disco.
+ Cambiar archivo de configuracion a xml (importar de glmixer-dmx)
+ Ubuntu 22.04 jammy
+ Docs in english
Opcionales:
- Añadir shaders, cambiar objetos Gem por uniform glsl. Alpha, chroma, ...
- Añadir la configuración de la ventana al archivo de configuración xlm
- Documentación en inglés
- Incluir archivos pd en el ejecutable como recursos Qt
- Añadir opciones en el GUI para cambiar las preferencias
- Optimizar CITP/MSEx a la forma QT --> QDataStream
@ -42,7 +40,7 @@ Quizás:
- Scripts: script para formatear archivos de texto
- GUI: avisar cuando no se pueda leer un archivo de texto
v0.05 audio:
v0.2.0 audio:
- Audio: Theremin, sintetizadores.
- Audio: Música fractal mediante generadores de fx de las mesas