Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+103
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AvaState
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Fröbel, SLSE, 2017-07-24
|
||||
*/
|
||||
|
||||
#include "ava_state.h"
|
||||
#include "ava_session.h"
|
||||
#include "ava_control.h"
|
||||
#include "av_helper.h"
|
||||
#include "iava_comm.h"
|
||||
#include <QtGlobal>
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
|
||||
namespace AudioVideoManagement
|
||||
{
|
||||
|
||||
AvaState::AvaState(AvaSession *session)
|
||||
// : m_session(session)
|
||||
{
|
||||
Q_ASSERT(session);
|
||||
|
||||
connect(session, &AvaSession::sessionEstablished, this, &AvaState::onSessionEstablished);
|
||||
connect(session, &AvaSession::disconnected, this, &AvaState::onDisconnected);
|
||||
|
||||
IAvaComm *comm = session->control()->comm();
|
||||
connect(comm, &IAvaComm::streamStateReceived, this, &AvaState::onStreamStateReceived);
|
||||
connect(comm, &IAvaComm::sumChannelStateReceived, this, &AvaState::onSumChannelStateReceived);
|
||||
connect(comm, &IAvaComm::rtChoiceUnitStateReceived, this, &AvaState::onRtChoiceUnitStateReceived);
|
||||
connect(comm, &IAvaComm::rtVolumeUserReceived, this, &AvaState::onRtVolumeUserReceived);
|
||||
|
||||
if (session->isEstablished())
|
||||
onSessionEstablished();
|
||||
}
|
||||
|
||||
QStringList AvaState::currentLiveVideoStreams() const
|
||||
{
|
||||
QStringList streams;
|
||||
for (const QMap<QString, AvaStreamState> &map : qAsConst(m_videoState))
|
||||
{
|
||||
const QList<QString> streamNames = map.keys();
|
||||
for (const QString &streamName : streamNames)
|
||||
{
|
||||
std::pair<AvaStreamSource, QString> extracted = extractStreamSource(streamName);
|
||||
if (extracted.first == AvaStreamSource::Interface)
|
||||
streams.append(extracted.second);
|
||||
}
|
||||
}
|
||||
|
||||
return streams;
|
||||
}
|
||||
|
||||
QStringList AvaState::getRtProfile() const
|
||||
{
|
||||
const std::vector<std::string> selectedCircuits = m_rtState.selectedRadioCircuits();
|
||||
QStringList profile;
|
||||
profile.reserve(selectedCircuits.size());
|
||||
std::transform(selectedCircuits.begin(), selectedCircuits.end(), std::back_inserter(profile), &QString::fromStdString);
|
||||
return profile;
|
||||
}
|
||||
|
||||
void AvaState::onDisconnected()
|
||||
{
|
||||
m_videoState.clear();
|
||||
}
|
||||
|
||||
void AvaState::onSessionEstablished()
|
||||
{
|
||||
// possibly actively query the stream list...
|
||||
// m_session->control()->getStreamList(AvaStreamType::Video, AvaStreamSource::Interface);
|
||||
// m_session->control()->getStreamList(AvaStreamType::Video, AvaStreamSource::Server);
|
||||
// m_session->control()->getStreamList(AvaStreamType::Video, AvaStreamSource::Local);
|
||||
}
|
||||
|
||||
void AvaState::onStreamStateReceived(const QString &dialogId, const QString &streamName, AvaStreamState streamState)
|
||||
{
|
||||
// How can I tell whether it's a video or audio stream?
|
||||
if (streamState == AvaStreamState::NotPossible)
|
||||
m_videoState[dialogId].remove(streamName);
|
||||
else
|
||||
m_videoState[dialogId][streamName] = streamState;
|
||||
}
|
||||
|
||||
void AvaState::onSumChannelStateReceived(AvaSumChannel sumChannel)
|
||||
{
|
||||
m_rtState.setSumChannel(sumChannel);
|
||||
}
|
||||
|
||||
void AvaState::onRtChoiceUnitStateReceived(AvaRtPos pos, const QString &streamName, AvaRtButtonState buttonState)
|
||||
{
|
||||
m_rtState.setSelection(pos, streamName.toStdString(), buttonState);
|
||||
}
|
||||
|
||||
void AvaState::onRtVolumeUserReceived(const QString &streamName, AvaVolume volume)
|
||||
{
|
||||
m_rtState.setVolume(streamName.toStdString(), volume);
|
||||
}
|
||||
|
||||
} // namespace AudioVideoManagement
|
||||
Reference in new issue
Block a user