nuevos modos de reproducción: Play Folder, Play Folder Loop, Play Folder
Random.
This commit is contained in:
parent
cd0105c9f9
commit
f67ad9b1e1
7 changed files with 83 additions and 4 deletions
|
|
@ -70,6 +70,14 @@ void libreMediaServerAudio::loadMedia(int layer, int folder, int file)
|
|||
#endif
|
||||
m_mae.printFormatInfo(layer);
|
||||
}
|
||||
if (m_currentStatus[layer] == Status::PlayingFolder \
|
||||
|| (m_currentStatus[layer] == Status::PlayingFolderLoop)\
|
||||
|| (m_currentStatus[layer] == Status::PlayingFolderRandom)) {
|
||||
m_played.append(file);
|
||||
} else if (m_currentStatus[layer] == Status::PlayingOnce \
|
||||
|| m_currentStatus[layer] == Status::PlayingLoop) {
|
||||
m_played.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
|
||||
|
|
@ -102,6 +110,12 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
|
|||
s = Status::Paused;
|
||||
else if (aux == 3)
|
||||
s = Status::PlayingLoop;
|
||||
else if (aux == 4)
|
||||
s = Status::PlayingFolder;
|
||||
else if (aux == 5)
|
||||
s = Status::PlayingFolderLoop;
|
||||
else if (aux == 6)
|
||||
s = Status::PlayingFolderRandom;
|
||||
m_mae.playbackChanged(layer, s);
|
||||
m_currentStatus[layer] = s;
|
||||
qInfo() << "Layer" << layer << StatusStr[s];
|
||||
|
|
@ -131,10 +145,58 @@ void libreMediaServerAudio::refreshUi() {
|
|||
}
|
||||
if (m_updateUi[i][3] >= 0 \
|
||||
|| m_currentStatus[i] == Status::PlayingOnce\
|
||||
|| m_currentStatus[i] == Status::PlayingLoop) {
|
||||
|| m_currentStatus[i] == Status::PlayingLoop\
|
||||
|| m_currentStatus[i] == Status::PlayingFolder\
|
||||
|| m_currentStatus[i] == Status::PlayingFolderLoop
|
||||
|| m_currentStatus[i] == Status::PlayingFolderRandom) {
|
||||
m_lmsUi->m_aw->cursorChanged(i, m_mae.getCursor(i));
|
||||
m_updateUi[i][3] = -1;
|
||||
}
|
||||
if (m_mae.getAtEnd(i)) {
|
||||
if (m_played.isEmpty())
|
||||
m_played.append(m_ola->getValue(i, DMX_FILE));
|
||||
if (m_currentStatus[i] == Status::PlayingOnce) {
|
||||
m_currentStatus[i] = Status::Stopped;
|
||||
}
|
||||
if (m_currentStatus[i] == Status::PlayingFolder) {
|
||||
uint last = m_played.last();
|
||||
int folder = m_ola->getValue(i, DMX_FOLDER);
|
||||
last++;
|
||||
if (last < m_mediaLibrary->getMediaFolderCount(folder)) {
|
||||
this->loadMedia(i, folder, last);
|
||||
m_mae.playbackChanged(i, Status::PlayingFolder);
|
||||
}
|
||||
else {
|
||||
m_currentStatus[i] = Status::Stopped;
|
||||
m_lmsUi->m_aw->playbackChanged(i, Status::Stopped);
|
||||
}
|
||||
}
|
||||
if (m_currentStatus[i] == Status::PlayingFolderLoop) {
|
||||
uint last = m_played.last();
|
||||
int folder = m_ola->getValue(i, DMX_FOLDER);
|
||||
last++;
|
||||
if (last >= m_mediaLibrary->getMediaFolderCount(folder)) {
|
||||
this->loadMedia(i, folder, 0);
|
||||
m_mae.playbackChanged(i, Status::PlayingFolderLoop);
|
||||
} else {
|
||||
this->loadMedia(i, folder, last);
|
||||
m_mae.playbackChanged(i, Status::PlayingFolder);
|
||||
}
|
||||
}
|
||||
if (m_currentStatus[i] == Status::PlayingFolderRandom) {
|
||||
int last = -1;
|
||||
int folder = m_ola->getValue(i, DMX_FOLDER);
|
||||
if (uint(abs(m_played.size())) >= m_mediaLibrary->getMediaFolderCount(folder))
|
||||
m_played.clear();
|
||||
while (last == -1) {
|
||||
last = rand() % m_mediaLibrary->getMediaFolderCount(folder);
|
||||
if (m_played.contains(last))
|
||||
last = -1;
|
||||
}
|
||||
this->loadMedia(i, folder, last);
|
||||
m_mae.playbackChanged(i, Status::PlayingFolderRandom);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue