- Images and Texts working

This commit is contained in:
Santi Noreña 2013-07-04 22:07:50 +02:00
parent 8da55d2b1a
commit f67bfb43c8
8 changed files with 396 additions and 825 deletions

View file

@ -88,11 +88,6 @@ libreMediaServer::libreMediaServer(QStringList args, QWidget *parent)
qErrnoWarning("libremediaserver::constructor: Can not listen on unix local server");
}
connect(m_server_vid, SIGNAL(newConnection()),this, SLOT(newPeer()));
// Start preview Timer
// m_preview = new QTimer(this);
// Q_CHECK_PTR(m_preview);
// m_preview->start(500);
// connect(m_preview, SIGNAL(timeout()) ,this, SLOT(previewMaster()));
// Iniciamos olad
m_ola = new QProcess(this);
Q_CHECK_PTR(m_ola);
@ -109,7 +104,7 @@ libreMediaServer::libreMediaServer(QStringList args, QWidget *parent)
m_olaInterface = new olaInterface();
Q_CHECK_PTR(m_olaInterface);
connect(m_olaInterface->m_msex->m_timer, SIGNAL(timeout()), this, SLOT(sendFrame()));
connect(m_olaInterface, SIGNAL(sendDmx(int,int,int)), this, SLOT(sendPacket(int,int,int)));
connect(m_olaInterface, SIGNAL(sendDmx(int,int,int)), this, SLOT(receiveDMX(int,int,int)));
connect(m_olaInterface, SIGNAL(newFile(QString)), this, SLOT(newFile(QString)));
}
@ -159,7 +154,6 @@ void libreMediaServer::save_finish()
{
QFile file(CONF_FILE);
save(&file);
}
///////////////////////////////////////////////////////////////////
@ -177,6 +171,7 @@ void libreMediaServer::openFile()
QFile file(fileNames.at(0));
open(&file);
}
// Save configuration File
void libreMediaServer::saveFile()
{
@ -188,6 +183,7 @@ void libreMediaServer::saveFile()
QFile file(fileNames.at(0));
save(&file);
}
// Change Media path
void libreMediaServer::ChangeMediaPath()
{
@ -336,88 +332,6 @@ void libreMediaServer::on_winsizey_valueChanged()
}
}
// DMX address configuration
void libreMediaServer::on_layer1Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer1Add_valueChanged()
{
}
void libreMediaServer::on_layer2Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer2Add_valueChanged()
{
}
void libreMediaServer::on_layer3Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer3Add_valueChanged()
{
}
void libreMediaServer::on_layer4Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer4Add_valueChanged()
{
}
void libreMediaServer::on_layer5Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer5Add_valueChanged()
{
}
void libreMediaServer::on_layer6Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer6Add_valueChanged()
{
}
void libreMediaServer::on_layer7Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer7Add_valueChanged()
{
}
void libreMediaServer::on_layer8Check_stateChanged (int state)
{
}
void libreMediaServer::on_layer8Add_valueChanged()
{
}
// Change the Frame Rate
void libreMediaServer::on_fpsRate_valueChanged()
{
@ -604,7 +518,7 @@ bool libreMediaServer::sendPacket(const char *buffer, int bufferLen)
}
// Send DMX Channel to Pure Data
void libreMediaServer::sendPacket(int layer, int channel, int value)
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()))
@ -720,5 +634,5 @@ void libreMediaServer::stdout() {
}
return;
}
qDebug() << "PD Video: " << out;
qDebug() << "PD debug| " << out;
}

View file

@ -92,7 +92,7 @@ public slots:
void sendFrame();
bool sendPacket(const char *buffer, int bufferLen);
void sendPacket(int layer, int channel, int value);
void receiveDMX(int layer, int channel, int value);
bool newFile(QString file);
private slots:
@ -108,22 +108,6 @@ private slots:
void on_winpositiony_valueChanged();
void on_winsizex_valueChanged();
void on_winsizey_valueChanged();
void on_layer1Add_valueChanged();
void on_layer1Check_stateChanged (int state);
void on_layer2Add_valueChanged();
void on_layer2Check_stateChanged (int state);
void on_layer3Add_valueChanged();
void on_layer3Check_stateChanged (int state);
void on_layer4Add_valueChanged();
void on_layer4Check_stateChanged (int state);
void on_layer5Add_valueChanged();
void on_layer5Check_stateChanged (int state);
void on_layer6Add_valueChanged();
void on_layer6Check_stateChanged (int state);
void on_layer7Add_valueChanged();
void on_layer7Check_stateChanged (int state);
void on_layer8Add_valueChanged();
void on_layer8Check_stateChanged (int state);
void on_fpsRate_valueChanged();
void pdrestart();
void stdout();

View file

@ -7,8 +7,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>745</width>
<height>636</height>
<width>753</width>
<height>457</height>
</rect>
</property>
<property name="windowTitle">
@ -58,37 +58,11 @@
<attribute name="title">
<string>Video</string>
</attribute>
<widget class="QSpinBox" name="layer5Add">
<property name="geometry">
<rect>
<x>330</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QCheckBox" name="layer6Check">
<property name="geometry">
<rect>
<x>410</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 6</string>
</property>
</widget>
<widget class="QSpinBox" name="winsizex">
<property name="geometry">
<rect>
<x>10</x>
<y>290</y>
<y>80</y>
<width>55</width>
<height>27</height>
</rect>
@ -104,7 +78,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>320</y>
<y>110</y>
<width>101</width>
<height>17</height>
</rect>
@ -113,24 +87,11 @@
<string>Window Size</string>
</property>
</widget>
<widget class="QSpinBox" name="layer6Add">
<property name="geometry">
<rect>
<x>410</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QCheckBox" name="window">
<property name="geometry">
<rect>
<x>20</x>
<y>260</y>
<x>10</x>
<y>200</y>
<width>87</width>
<height>23</height>
</rect>
@ -139,76 +100,11 @@
<string>Window</string>
</property>
</widget>
<widget class="QSpinBox" name="layer7Add">
<property name="geometry">
<rect>
<x>490</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QSpinBox" name="layer3Add">
<property name="geometry">
<rect>
<x>170</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QCheckBox" name="layer8Check">
<property name="geometry">
<rect>
<x>570</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 8</string>
</property>
</widget>
<widget class="QSpinBox" name="layer2Add">
<property name="geometry">
<rect>
<x>90</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QCheckBox" name="layer4Check">
<property name="geometry">
<rect>
<x>250</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 4</string>
</property>
</widget>
<widget class="QLabel" name="winposLabel">
<property name="geometry">
<rect>
<x>10</x>
<y>370</y>
<y>160</y>
<width>121</width>
<height>20</height>
</rect>
@ -217,50 +113,11 @@
<string>Window Position</string>
</property>
</widget>
<widget class="QCheckBox" name="layer1Check">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 1</string>
</property>
</widget>
<widget class="QSpinBox" name="layer1Add">
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QSpinBox" name="layer8Add">
<property name="geometry">
<rect>
<x>570</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QSpinBox" name="winpositiony">
<property name="geometry">
<rect>
<x>70</x>
<y>340</y>
<y>130</y>
<width>55</width>
<height>27</height>
</rect>
@ -269,24 +126,11 @@
<number>5000</number>
</property>
</widget>
<widget class="QCheckBox" name="layer7Check">
<property name="geometry">
<rect>
<x>490</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 7</string>
</property>
</widget>
<widget class="QSpinBox" name="winsizey">
<property name="geometry">
<rect>
<x>70</x>
<y>290</y>
<y>80</y>
<width>55</width>
<height>27</height>
</rect>
@ -295,37 +139,11 @@
<number>5000</number>
</property>
</widget>
<widget class="QCheckBox" name="layer5Check">
<property name="geometry">
<rect>
<x>330</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 5</string>
</property>
</widget>
<widget class="QCheckBox" name="layer3Check">
<property name="geometry">
<rect>
<x>170</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 3</string>
</property>
</widget>
<widget class="QSpinBox" name="winpositionx">
<property name="geometry">
<rect>
<x>10</x>
<y>340</y>
<y>130</y>
<width>55</width>
<height>27</height>
</rect>
@ -334,32 +152,6 @@
<number>5000</number>
</property>
</widget>
<widget class="QSpinBox" name="layer4Add">
<property name="geometry">
<rect>
<x>250</x>
<y>100</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="maximum">
<number>512</number>
</property>
</widget>
<widget class="QCheckBox" name="layer2Check">
<property name="geometry">
<rect>
<x>90</x>
<y>70</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Layer 2</string>
</property>
</widget>
<widget class="QLabel" name="layer1Preview">
<property name="geometry">
<rect>
@ -516,9 +308,9 @@
<property name="geometry">
<rect>
<x>140</x>
<y>150</y>
<width>320</width>
<height>210</height>
<y>80</y>
<width>160</width>
<height>105</height>
</rect>
</property>
<property name="frameShape">
@ -532,10 +324,13 @@
</property>
</widget>
<widget class="QCheckBox" name="previewLayer">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>480</x>
<y>240</y>
<x>310</x>
<y>80</y>
<width>131</width>
<height>26</height>
</rect>
@ -544,14 +339,17 @@
<string>Preview Layers</string>
</property>
<property name="checked">
<bool>true</bool>
<bool>false</bool>
</property>
</widget>
<widget class="QCheckBox" name="previewMaster">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>480</x>
<y>270</y>
<x>310</x>
<y>110</y>
<width>141</width>
<height>26</height>
</rect>
@ -560,7 +358,7 @@
<string>Preview Master</string>
</property>
<property name="checked">
<bool>true</bool>
<bool>false</bool>
</property>
<property name="autoRepeat">
<bool>false</bool>
@ -569,8 +367,8 @@
<widget class="QLCDNumber" name="fpsCounter">
<property name="geometry">
<rect>
<x>483</x>
<y>322</y>
<x>493</x>
<y>92</y>
<width>61</width>
<height>41</height>
</rect>
@ -582,8 +380,8 @@
<widget class="QLabel" name="fpsLabel">
<property name="geometry">
<rect>
<x>480</x>
<y>370</y>
<x>490</x>
<y>140</y>
<width>161</width>
<height>21</height>
</rect>
@ -595,8 +393,8 @@
<widget class="QSpinBox" name="fpsRate">
<property name="geometry">
<rect>
<x>560</x>
<y>320</y>
<x>570</x>
<y>90</y>
<width>59</width>
<height>41</height>
</rect>
@ -615,43 +413,6 @@
<number>30</number>
</property>
</widget>
<zorder>layer7Check</zorder>
<zorder>layer5Check</zorder>
<zorder>layer3Check</zorder>
<zorder>layer2Check</zorder>
<zorder>layer5Add</zorder>
<zorder>layer6Check</zorder>
<zorder>winsizex</zorder>
<zorder>winsizeLabel</zorder>
<zorder>layer6Add</zorder>
<zorder>window</zorder>
<zorder>layer7Add</zorder>
<zorder>layer3Add</zorder>
<zorder>layer8Check</zorder>
<zorder>layer2Add</zorder>
<zorder>layer4Check</zorder>
<zorder>winposLabel</zorder>
<zorder>layer1Check</zorder>
<zorder>layer1Add</zorder>
<zorder>layer8Add</zorder>
<zorder>winpositiony</zorder>
<zorder>winsizey</zorder>
<zorder>winpositionx</zorder>
<zorder>layer4Add</zorder>
<zorder>layer1Preview</zorder>
<zorder>layer2Preview</zorder>
<zorder>layer3Preview</zorder>
<zorder>layer4Preview</zorder>
<zorder>layer5Preview</zorder>
<zorder>layer6Preview</zorder>
<zorder>layer7Preview</zorder>
<zorder>layer8Preview</zorder>
<zorder>masterPreview</zorder>
<zorder>previewLayer</zorder>
<zorder>previewMaster</zorder>
<zorder>fpsCounter</zorder>
<zorder>fpsLabel</zorder>
<zorder>fpsRate</zorder>
</widget>
</widget>
<widget class="QPlainTextEdit" name="textEdit">
@ -678,7 +439,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>745</width>
<width>753</width>
<height>29</height>
</rect>
</property>

View file

@ -56,10 +56,8 @@ void olaInterface::readDataFromXML() {
QMessageBox::critical(NULL,"Load XML File Problem",
"Couldn't open dmx.xml to load settings for olaInterface",
QMessageBox::Ok);
return;
}
QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
int counter = 0;
//Parse the XML until we reach end of it
@ -121,9 +119,9 @@ void olaInterface::dmx(int layer, int channel, int value)
// This qDebug slows all the program. Uncomment only for debugging purpouse and comment again in normal use
// qDebug() << tr("olaInterface|") << "newdmx layer" << layer << "channel" << channel << "value" << value;
switch(channel){
case DMX_FOLDER:// Folder
case DMX_FILE:// File
requestNewFile(layer, 1);
case DMX_FOLDER:// Folder / Text File
case DMX_FILE:// File / Font File
requestNewFile(layer, (worker->m_dmx[layer][DMX_SOURCETYPE] / 25));
break;
case DMX_SOURCETYPE:// Source type
if(value < 25)
@ -131,12 +129,10 @@ void olaInterface::dmx(int layer, int channel, int value)
requestNewFile(layer, 0);
} else if (value > 24 && value < 50) { // Create a video source
requestNewFile(layer, 1);
} else if (value > 49 && value < 75){ // Create a Picture
} else if (value > 49 && value < 75){ // Render a text
requestNewFile(layer, 2);
} else if (value > 74 && value < 100) { // Text
} else if (value > 74 && value < 100) { // Live Cam
requestNewFile(layer, 3);
} else if (value > 99 && value < 125) { // Cam
requestNewFile(layer, 4);
}
break;
default:
@ -149,30 +145,67 @@ void olaInterface::dmx(int layer, int channel, int value)
void olaInterface::requestNewFile(int layer, int type){
int cooki = layer + 201;
QString newfile = tr("%1 %2 ").arg(cooki).arg(type);
newfile.append("open ");
// Select one mediafile from the media library
int folder = worker->m_dmx[layer][DMX_FOLDER];
int file = worker->m_dmx[layer][DMX_FILE];
if (folder < m_media->size()) {
if (file < m_media->at(folder).m_MediaInformation.size()) {
newfile.append(m_media->at(folder).m_MediaInformation.at(file).MediaName);
if (type == 1) {
newfile.append("open ");
// Select one mediafile from the media library
if (folder < m_media->size()) {
if (file < m_media->at(folder).m_MediaInformation.size()) {
newfile.append(m_media->at(folder).m_MediaInformation.at(file).MediaName);
newfile.append(";");
emit newFile(newfile);
} else {
qDebug() << tr("olaInterface|") << "Requested file is greater than files in library";
return;
}
} else {
qDebug() << tr("olaInterface|") << "Requested file is greater than files in library";
qDebug() << tr("olaInterface|") << "Requested folder is greater than media libraries";
return;
}
} else {
qDebug() << tr("olaInterface|") << "Requested folder is greater than media libraries";
return;
} else if (type == 2) {
newfile.append("fuente font ");
QDir dir;
if (!dir.cd(m_pathmedia)) {
qWarning() << "olaInterface::initMediaLibrary| Can not cd to the path: " << m_pathmedia;
return;
}
if (!dir.cd("font")) {
qWarning() << "olaInterface::initMediaLibrary| Can not cd to the media folder: " << m_pathmedia;
return;
}
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(";");
emit newFile(newfile);
newfile.clear();
newfile = tr("%1 %2 ").arg(cooki).arg(type);
newfile.append("text read ");
dir.cdUp();
if (!dir.cd("text")){
qWarning() << "olaInterface::initMediaLibrary| Can not cd to text folder: " << m_pathmedia;
}
filelist = dir.entryInfoList();
fileInfo = filelist.at(worker->m_dmx[layer][DMX_FOLDER]);
newfile.append(fileInfo.absoluteFilePath().toAscii());
newfile.append(";");
emit newFile(newfile);
} else if (type == 3) {
}
newfile.append(";");
emit newFile(newfile);
}
// Initializes the media library and the media information from the path to media in m_pathmedia
void olaInterface::initMediaLibrary() {
QDir dir;
if (!dir.cd(m_pathmedia)) {
qWarning() << "olaInterface::initMediaLibrary| Can not cd to the path to media: " << m_pathmedia;
qWarning() << "olaInterface::initMediaLibrary| Can not cd to the path: " << m_pathmedia;
return;
}
if (!dir.cd("media")) {
qWarning() << "olaInterface::initMediaLibrary| Can not cd to the media folder: " << m_pathmedia;
return;
}
m_media = new QList<MediaLibrary>;
@ -212,8 +245,10 @@ QList<MediaInformation> olaInterface::getMediaInformation(QDir dir)
if (!dir.mkdir("thumbs"))
{
qWarning() << tr("olaInterface|") << "Can not create thumbs folder in " << dir.path();
}
} else {
folder = true;
dir.cd("thumbs");
}
}
for (int i = 0; i < filelist.size(); ++i) {
fileInfo = filelist.at(i);
@ -295,6 +330,7 @@ olaWorker::~olaWorker() {
void olaWorker::olastart() {
// set up ola connection
m_client = new OlaCallbackClientWrapper;
Q_CHECK_PTR(m_client);
if (!m_client->Setup()) {qErrnoWarning("olaInterface::open: m_client.Setup:");}
m_clientpointer = m_client->GetClient();
m_clientpointer->SetDmxCallback(ola::NewCallback(this, &olaWorker::NewDmx));
@ -379,30 +415,8 @@ void olaWorker::RegisterComplete(const string &error) {
* - Change the DMX address of each layer
* - Change the universe to bind in ola
* - Write and read different xml configuration files for different setups
* - Open the olad web setup page in localhost:9090 or patch directly from xml configuration file
* - Start and stop the dmx reading
void GLMixer::on_actionOLASetup_triggered(){
QWebView *view = new QWebView();
view->load(QUrl("http://localhost:9090/ola.html"));
view->show();
}
// Changing the path to the media folder tree
void UserPreferencesDialog::on_ChangeMediaPath_clicked(){
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::Directory);
QStringList fileNames;
if (!dialog.exec())
return;
fileNames = dialog.selectedFiles();
QString file = fileNames.at(0);
MediaPath->setText(file);
QString desc = tr("Media Path Changed to: %1").arg(file);
qDebug() << desc;
}
void savesetttingtoxml{
// Habrá que salvar las settings en algún sitio
}